<?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>167952</bug_id>
          
          <creation_ts>2017-02-07 13:09:09 -0800</creation_ts>
          <short_desc>WebGPU prototype</short_desc>
          <delta_ts>2022-09-28 07:15:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGPU</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></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>169219</dependson>
    
    <dependson>169365</dependson>
    
    <dependson>169366</dependson>
    
    <dependson>169367</dependson>
    
    <dependson>169368</dependson>
    
    <dependson>169370</dependson>
    
    <dependson>169371</dependson>
    
    <dependson>169372</dependson>
    
    <dependson>169375</dependson>
    
    <dependson>169376</dependson>
    
    <dependson>169377</dependson>
    
    <dependson>169378</dependson>
    
    <dependson>169379</dependson>
    
    <dependson>169380</dependson>
    
    <dependson>169381</dependson>
    
    <dependson>169451</dependson>
    
    <dependson>169535</dependson>
    
    <dependson>169539</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>chi187</cc>
    
    <cc>commit-queue</cc>
    
    <cc>daxpedda</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>i.kakeru</cc>
    
    <cc>jonlee</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mike</cc>
    
    <cc>msaboff</cc>
    
    <cc>rtfss1</cc>
    
    <cc>saam</cc>
    
    <cc>y.kikura</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1274122</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-02-07 13:09:09 -0800</bug_when>
    <thetext>A prototype for a new GPU API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274123</commentid>
    <comment_count>1</comment_count>
      <attachid>300839</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-02-07 13:14:28 -0800</bug_when>
    <thetext>Created attachment 300839
Prototype

Here is a WIP patch. It definitely can&apos;t be landed in the current form.

- it doesn&apos;t yet match the API proposal
- it doesn&apos;t separate WebGPU from the Metal API. i.e. there should be a GPU* interface with GPU*Metal implementations
- it does no validation
- it doesn&apos;t have a compile time or runtime guard

It&apos;s here just to experiment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274804</commentid>
    <comment_count>2</comment_count>
    <who name="">rtfss1</who>
    <bug_when>2017-02-09 04:25:11 -0800</bug_when>
    <thetext>Hi,
interesting Webkit that current patch uses metal shaders.
For me this might be even a good shader language to use in WebGPU, but then will be time for requesting Apple to open source Metal shader compiler stack like Microsoft has done recently with current HLSL shader compiler that translates to his new intermediate format DXIL.. the new Microsoft compiler uses LLVM/Clang stack and seems Apple Metal shader compiler too.. 
So briefly here (may be not the current best place to ask), with Khronos LLVM IR&lt;-&gt;SPIR-V translator and DXIL open source only modern shader language compiler not open source is Metal and would make sense to open source it for WebGPU implementations on other OSes and even make easier porting modern macos/IOS games using Metal to other OSes..
Makes sense?
thanks..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276979</commentid>
    <comment_count>3</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-02-14 16:08:26 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; So briefly here (may be not the current best place to ask)

@rtfss1, the best place to pose technical questions is in the WebGPU GitHub repo: https://github.com/gpuweb/gpuweb</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285997</commentid>
    <comment_count>4</comment_count>
      <attachid>304103</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-03-10 17:09:57 -0800</bug_when>
    <thetext>Created attachment 304103
Frontend patch that should build when WEBGPU not defined

No review yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285998</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-10 17:12:31 -0800</bug_when>
    <thetext>Attachment 304103 did not pass style-queue:


ERROR: Source/WebCore/html/canvas/WebGPURenderingContext.cpp:39:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/html/canvas/WebGPURenderingContext.cpp:43:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/html/canvas/WebGPURenderingContext.cpp:90:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/html/canvas/WebGPURenderingContext.cpp:122:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/canvas/WebGPURenderCommandEncoder.h:51:  The parameter name &quot;buffer&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/html/canvas/WebGPURenderCommandEncoder.h:51:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/html/canvas/WebGPURenderCommandEncoder.h:52:  The parameter name &quot;buffer&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/html/canvas/WebGPURenderCommandEncoder.h:52:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/html/canvas/WebGPURenderCommandEncoder.h:53:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
ERROR: Source/WebCore/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Source/WebCore/PAL/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
ERROR: Source/WebCore/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Source/WebKit/mac/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
ERROR: Source/WebCore/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Source/WebKit2/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
ERROR: Source/WebCore/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
ERROR: Source/WebCore/html/canvas/WebGPUCommandBuffer.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/html/canvas/WebGPUTextureDescriptor.cpp:61:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/canvas/WebGPURenderPipelineState.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/html/canvas/WebGPURenderPassDescriptor.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/html/canvas/WebGPURenderPassDescriptor.cpp:34:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/html/canvas/WebGPURenderPassDescriptor.cpp:46:  Wrong number of spaces before statement. (expected: 4)  [whitespace/indent] [4]
ERROR: Source/WebCore/html/canvas/WebGPURenderPassDescriptor.cpp:76:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/html/canvas/WebGPUCommandBuffer.h:51:  The parameter name &quot;descriptor&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/html/canvas/WebGPUObject.h:48:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/html/canvas/WebGPURenderPipelineDescriptor.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/html/canvas/WebGPURenderPipelineDescriptor.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/html/canvas/WebGPURenderPipelineDescriptor.cpp:65:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/canvas/WebGPURenderPipelineDescriptor.cpp:112:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/html/canvas/WebGPUDepthStencilDescriptor.cpp:61:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/canvas/WebGPURenderCommandEncoder.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/html/canvas/WebGPURenderCommandEncoder.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/html/canvas/WebGPURenderCommandEncoder.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/html/canvas/WebGPURenderCommandEncoder.cpp:74:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/html/canvas/WebGPURenderCommandEncoder.cpp:82:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/html/canvas/WebGPURenderCommandEncoder.cpp:90:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/html/canvas/WebGPUDepthStencilState.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 35 in 72 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>1286023</commentid>
    <comment_count>6</comment_count>
      <attachid>304108</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-03-10 18:03:09 -0800</bug_when>
    <thetext>Created attachment 304108
Frontend patch that should build when WEBGPU not defined</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286028</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-10 18:05:11 -0800</bug_when>
    <thetext>Attachment 304108 did not pass style-queue:


ERROR: Source/WebCore/html/canvas/WebGPURenderingContext.cpp:90:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/html/canvas/WebGPURenderCommandEncoder.h:51:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/html/canvas/WebGPURenderCommandEncoder.h:52:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/html/canvas/WebGPURenderCommandEncoder.h:53:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
ERROR: Source/WebCore/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Source/WebCore/PAL/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
ERROR: Source/WebCore/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Source/WebKit/mac/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
ERROR: Source/WebCore/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Source/WebKit2/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
ERROR: Source/WebCore/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
ERROR: Source/WebCore/html/canvas/WebGPURenderCommandEncoder.cpp:74:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/html/canvas/WebGPURenderCommandEncoder.cpp:82:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/html/canvas/WebGPURenderCommandEncoder.cpp:90:  Omit int when using unsigned  [runtime/unsigned] [1]
Total errors found: 12 in 72 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>1286061</commentid>
    <comment_count>8</comment_count>
      <attachid>304121</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-03-10 20:38:14 -0800</bug_when>
    <thetext>Created attachment 304121
1. Frontend patch that should build when WEBGPU not defined</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286062</commentid>
    <comment_count>9</comment_count>
      <attachid>304122</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-03-10 20:39:01 -0800</bug_when>
    <thetext>Created attachment 304122
2. Adjust Front-End classes to build with platform stubs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286089</commentid>
    <comment_count>10</comment_count>
      <attachid>304136</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-03-10 22:35:47 -0800</bug_when>
    <thetext>Created attachment 304136
2. Adjust Front-End classes to build with platform stubs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286090</commentid>
    <comment_count>11</comment_count>
      <attachid>304137</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-03-10 22:38:47 -0800</bug_when>
    <thetext>Created attachment 304137
Complete patch (1+2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286091</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-10 22:42:21 -0800</bug_when>
    <thetext>Attachment 304137 did not pass style-queue:


ERROR: Source/WebCore/html/canvas/WebGPURenderCommandEncoder.h:45:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/html/canvas/WebGPURenderCommandEncoder.h:46:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/html/canvas/WebGPURenderCommandEncoder.h:47:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/html/canvas/WebGPURenderCommandEncoder.h:65:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/html/canvas/WebGPURenderCommandEncoder.h:66:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/html/canvas/WebGPURenderCommandEncoder.h:67:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/ChangeLog:36:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/ChangeLog:37:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/ChangeLog:38:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/ChangeLog:39:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/ChangeLog:40:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/ChangeLog:41:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/ChangeLog:42:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/ChangeLog:43:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/ChangeLog:44:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/ChangeLog:45:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/ChangeLog:46:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/ChangeLog:47:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/ChangeLog:48:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/ChangeLog:49:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/ChangeLog:50:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/ChangeLog:51:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/ChangeLog:52:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/ChangeLog:53:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/ChangeLog:54:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/ChangeLog:55:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/ChangeLog:56:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/html/canvas/WebGPURenderCommandEncoder.cpp:76:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/html/canvas/WebGPURenderCommandEncoder.cpp:84:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/html/canvas/WebGPURenderCommandEncoder.cpp:92:  Omit int when using unsigned  [runtime/unsigned] [1]
Total errors found: 30 in 75 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>1286839</commentid>
    <comment_count>13</comment_count>
      <attachid>304137</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-03-11 14:48:22 -0800</bug_when>
    <thetext>Comment on attachment 304137
Complete patch (1+2)

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        * Configurations/FeatureDefines.xcconfig: For EWS, turn of WebGPU in WebCore. This
&gt; +        should not be checked in.

Removing this since you&apos;ve undone the change.

&gt; Source/WebCore/ChangeLog:15
&gt; +        * WebCore.xcodeproj/project.pbxproj: Add WebGPU files.

I&apos;m going to add them to PlatformMac.cmake too.

&gt; Source/WebCore/html/canvas/WebGPUCommandBuffer.cpp:31
&gt; +/***

I&apos;ll replace these with /* FIXME: WebGPU - not implemented yet.

&gt; Source/WebCore/html/canvas/WebGPUCommandBuffer.cpp:52
&gt; +    LOG(WebGPU, &quot;-- WebGPUCommandBuffer::WebGPUCommandBuffer() NEW&quot;);

I also cleaned these up  (my mistake originally)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286840</commentid>
    <comment_count>14</comment_count>
      <attachid>304179</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-03-11 15:04:42 -0800</bug_when>
    <thetext>Created attachment 304179
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286841</commentid>
    <comment_count>15</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-03-11 15:10:26 -0800</bug_when>
    <thetext>Committed r213762: &lt;http://trac.webkit.org/changeset/213762&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287010</commentid>
    <comment_count>16</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-03-12 20:10:08 -0700</bug_when>
    <thetext>Front end checked in, but back end still needs to be done. Reopening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287066</commentid>
    <comment_count>17</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-03-13 00:12:33 -0700</bug_when>
    <thetext>*** Bug 169376 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287068</commentid>
    <comment_count>18</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-03-13 00:12:36 -0700</bug_when>
    <thetext>*** Bug 169377 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287070</commentid>
    <comment_count>19</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-03-13 00:12:39 -0700</bug_when>
    <thetext>*** Bug 169378 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287072</commentid>
    <comment_count>20</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-03-13 00:12:42 -0700</bug_when>
    <thetext>*** Bug 169379 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287074</commentid>
    <comment_count>21</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-03-13 00:12:44 -0700</bug_when>
    <thetext>*** Bug 169380 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287076</commentid>
    <comment_count>22</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-03-13 00:12:50 -0700</bug_when>
    <thetext>*** Bug 169381 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300839</attachid>
            <date>2017-02-07 13:14:28 -0800</date>
            <delta_ts>2017-02-07 18:49:01 -0800</delta_ts>
            <desc>Prototype</desc>
            <filename>webgpu.patch</filename>
            <type>text/plain</type>
            <size>704063</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWct
cnVubmVyL3Rlc3RzLmpzLm9yaWcgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3Vy
Y2VzL2RlYnVnLXJ1bm5lci90ZXN0cy5qcy5vcmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwLi42ZjFjODE1YjJhMgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL3Rlc3RzLmpzLm9yaWcKQEAg
LTAsMCArMSwzMzMgQEAKK1V0aWxpdGllcy5leHRlbmRPYmplY3QoU3RyaW5ncy50ZXh0LCB7Cisg
ICAgc2FtcGxlczogIlNhbXBsZXMiLAorICAgIGNvbXBsZXhpdHk6ICJUaW1lIENvbXBsZXhpdHki
LAorICAgIGZyYW1lUmF0ZTogIkZQUyIsCisgICAgY29uZmlkZW5jZUludGVydmFsOiAiOTUlIENv
bmZpZGVuY2UgSW50ZXJ2YWwiLAorICAgIG1lcmdlZFJhd0NvbXBsZXhpdHk6ICJSYXcgQ29tcGxl
eGl0eSIsCisgICAgZ3JhcGg6ICJHcmFwaCIKK30pOworCisKK1V0aWxpdGllcy5leHRlbmRPYmpl
Y3QoSGVhZGVycywgeworICAgIGRldGFpbHM6IFsKKyAgICAgICAgeworICAgICAgICAgICAgdGl0
bGU6IFN0cmluZ3MudGV4dC5ncmFwaAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAg
ICB0aXRsZTogU3RyaW5ncy50ZXh0LmNvbmZpZGVuY2VJbnRlcnZhbCwKKyAgICAgICAgICAgIGNo
aWxkcmVuOgorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgdGV4dDogZnVuY3Rpb24oZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGRhdGFbU3RyaW5ncy5qc29uLmNvbXBsZXhpdHldW1N0cmluZ3MuanNvbi5ib290c3RyYXBd
LmNvbmZpZGVuY2VMb3cudG9GaXhlZCgyKTsKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAicmlnaHQgcGFkLWxlZnQgcGFkLXJpZ2h0IgorICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB0
ZXh0OiBmdW5jdGlvbihkYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIiAt
ICIgKyBkYXRhW1N0cmluZ3MuanNvbi5jb21wbGV4aXR5XVtTdHJpbmdzLmpzb24uYm9vdHN0cmFw
XS5jb25maWRlbmNlSGlnaC50b0ZpeGVkKDIpOworICAgICAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICJsZWZ0IgorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB0ZXh0OiBmdW5jdGlvbihkYXRh
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYm9vdHN0cmFwID0gZGF0YVtTdHJpbmdz
Lmpzb24uY29tcGxleGl0eV1bU3RyaW5ncy5qc29uLmJvb3RzdHJhcF07CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gKDEwMCAqIChib290c3RyYXAuY29uZmlkZW5jZUxvdyAvIGJvb3Rz
dHJhcC5tZWRpYW4gLSAxKSkudG9GaXhlZCgyKSArICIlIjsKKyAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAibGVmdCBwYWQtbGVmdCBzbWFsbCIK
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgdGV4dDogZnVuY3Rpb24oZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJv
b3RzdHJhcCA9IGRhdGFbU3RyaW5ncy5qc29uLmNvbXBsZXhpdHldW1N0cmluZ3MuanNvbi5ib290
c3RyYXBdOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICIrIiArICgxMDAgKiAoYm9v
dHN0cmFwLmNvbmZpZGVuY2VIaWdoIC8gYm9vdHN0cmFwLm1lZGlhbiAtIDEpKS50b0ZpeGVkKDIp
ICsgIiUiOworICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICBjbGFz
c05hbWU6ICJsZWZ0IHBhZC1sZWZ0IHNtYWxsIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdGl0bGU6IFN0cmluZ3Mu
dGV4dC5jb21wbGV4aXR5LAorICAgICAgICAgICAgY2hpbGRyZW46CisgICAgICAgICAgICBbCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB0ZXh0OiBmdW5jdGlvbihkYXRh
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YVtTdHJpbmdzLmpzb24uY29u
dHJvbGxlcl1bU3RyaW5ncy5qc29uLm1lYXN1cmVtZW50cy5hdmVyYWdlXS50b0ZpeGVkKDIpOwor
ICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICJh
dmVyYWdlIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICB0ZXh0OiBmdW5jdGlvbihkYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICLCsSAiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGFbU3RyaW5ncy5qc29uLmNvbnRyb2xsZXJdW1N0cmluZ3Mu
anNvbi5tZWFzdXJlbWVudHMucGVyY2VudF0udG9GaXhlZCgyKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiJSIKKyAgICAgICAgICAgICAgICAgICAgICAgIF0uam9pbigiIik7CisgICAg
ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogZnVuY3Rp
b24oZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNsYXNzTmFtZSA9ICJzdGRl
diI7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhW1N0cmluZ3MuanNvbi5jb250
cm9sbGVyXVtTdHJpbmdzLmpzb24ubWVhc3VyZW1lbnRzLnBlcmNlbnRdID49IDEwKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZSArPSAiIG5vaXN5LXJlc3VsdHMiOworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsYXNzTmFtZTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAg
ICAgeworICAgICAgICAgICAgdGl0bGU6IFN0cmluZ3MudGV4dC5mcmFtZVJhdGUsCisgICAgICAg
ICAgICBjaGlsZHJlbjoKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHRleHQ6IGZ1bmN0aW9uKGRhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBkYXRhW1N0cmluZ3MuanNvbi5mcmFtZUxlbmd0aF1bU3RyaW5ncy5qc29uLm1l
YXN1cmVtZW50cy5hdmVyYWdlXS50b0ZpeGVkKDIpOworICAgICAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IGZ1bmN0aW9uKGRhdGEsIG9wdGlvbnMpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjbGFzc05hbWUgPSAiYXZlcmFnZSI7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoZGF0YVtTdHJpbmdzLmpzb24uZnJhbWVM
ZW5ndGhdW1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMuYXZlcmFnZV0gLSBvcHRpb25zWyJmcmFt
ZS1yYXRlIl0pID49IDIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lICs9
ICIgbm9pc3ktcmVzdWx0cyI7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xhc3NO
YW1lOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHRleHQ6IGZ1bmN0aW9uKGRhdGEpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBmcmFtZVJhdGVEYXRhID0gZGF0YVtTdHJpbmdzLmpz
b24uZnJhbWVMZW5ndGhdOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiwrEgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmcmFtZVJhdGVEYXRhW1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMucGVyY2VudF0udG9GaXhl
ZCgyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJSIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIF0uam9pbigiIik7CisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgICAgIGNsYXNzTmFtZTogZnVuY3Rpb24oZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIGNsYXNzTmFtZSA9ICJzdGRldiI7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChkYXRhW1N0cmluZ3MuanNvbi5mcmFtZUxlbmd0aF1bU3RyaW5ncy5qc29uLm1lYXN1cmVtZW50
cy5wZXJjZW50XSA+PSAxMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWUg
Kz0gIiBub2lzeS1yZXN1bHRzIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGFz
c05hbWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHRpdGxlOiBTdHJpbmdz
LnRleHQubWVyZ2VkUmF3Q29tcGxleGl0eSwKKyAgICAgICAgICAgIGNoaWxkcmVuOgorICAgICAg
ICAgICAgWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdGV4dDogZnVu
Y3Rpb24oZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFbU3RyaW5n
cy5qc29uLmNvbXBsZXhpdHldW1N0cmluZ3MuanNvbi5jb21wbGV4aXR5XS50b0ZpeGVkKDIpOwor
ICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICJh
dmVyYWdlIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICB0ZXh0OiBmdW5jdGlvbihkYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICLCsSAiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGFbU3RyaW5ncy5qc29uLmNvbXBsZXhpdHldW1N0cmluZ3Mu
anNvbi5tZWFzdXJlbWVudHMuc3RkZXZdLnRvRml4ZWQoMiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIm1zIgorICAgICAgICAgICAgICAgICAgICAgICAgXS5qb2luKCIiKTsKKyAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAic3RkZXYi
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXQorfSkK
KworLy8vLy8vLy8vLy8KKy8vIFN1aXRlcworCitTdWl0ZXMucHVzaChuZXcgU3VpdGUoIkhUTUwg
c3VpdGUiLAorICAgIFsKKyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFy
dGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTEyJnBhcnRpY2xl
SGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIsCisgICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5n
IGNpcmNsZXMiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogImJvdW5j
aW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0bWw/cGFydGljbGVXaWR0aD00MCZw
YXJ0aWNsZUhlaWdodD00MCZzaGFwZT1yZWN0JmNsaXA9c3RhciIsCisgICAgICAgICAgICBuYW1l
OiAiQ1NTIGJvdW5jaW5nIGNsaXBwZWQgcmVjdHMiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0
bWw/cGFydGljbGVXaWR0aD01MCZwYXJ0aWNsZUhlaWdodD01MCZzaGFwZT1jaXJjbGUmZmlsbD1n
cmFkaWVudCIsCisgICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5nIGdyYWRpZW50IGNpcmNs
ZXMiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBh
cnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0bWw/cGFydGljbGVXaWR0aD04MCZwYXJ0aWNs
ZUhlaWdodD04MCZzaGFwZT1jaXJjbGUmYmxlbmQiLAorICAgICAgICAgICAgbmFtZTogIkNTUyBi
b3VuY2luZyBibGVuZCBjaXJjbGVzIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAg
ICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNoYXBlcy5odG1sP3BhcnRp
Y2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmc2hhcGU9Y2lyY2xlJmZpbHRlciIsCisgICAg
ICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5nIGZpbHRlciBjaXJjbGVzIgorICAgICAgICB9LAor
ICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmct
Y3NzLWltYWdlcy5odG1sP3BhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VT
cmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAgICAgICAgICBuYW1lOiAiQ1NTIGJv
dW5jaW5nIFNWRyBpbWFnZXMiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVy
bDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmh0bWw/cGFydGljbGVX
aWR0aD04MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcu
cG5nIiwKKyAgICAgICAgICAgIG5hbWU6ICJDU1MgYm91bmNpbmcgUE5HIGltYWdlcyIKKyAgICAg
ICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAidGV4dC9sYXllcmluZy10ZXh0Lmh0
bWwiLAorICAgICAgICAgICAgbmFtZTogIkNTUyBsYXllcmluZyB0ZXh0IgorICAgICAgICB9LAor
ICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJ0ZXh0L3RleHQtYm94ZXMuaHRtbD9wYXJ0aWNs
ZVdpZHRoPTI4MCZwYXJ0aWNsZUhlaWdodD0xODAiLAorICAgICAgICAgICAgbmFtZTogIkNTUyB0
ZXh0IGJveGVzIgorICAgICAgICB9LAorICAgIF0KKykpOworCitTdWl0ZXMucHVzaChuZXcgU3Vp
dGUoIkNhbnZhcyBzdWl0ZSIsCisgICAgWworICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJi
b3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sP3BhcnRpY2xlV2lk
dGg9MTImcGFydGljbGVIZWlnaHQ9MTImc2hhcGU9Y2lyY2xlIiwKKyAgICAgICAgICAgIG5hbWU6
ICJjYW52YXMgYm91bmNpbmcgY2lyY2xlcyIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRt
bD9wYXJ0aWNsZVdpZHRoPTQwJnBhcnRpY2xlSGVpZ2h0PTQwJnNoYXBlPXJlY3QmY2xpcD1zdGFy
IiwKKyAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcgY2xpcHBlZCByZWN0cyIKKyAg
ICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVz
L2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVp
Z2h0PTUwJnNoYXBlPWNpcmNsZSZmaWxsPWdyYWRpZW50IiwKKyAgICAgICAgICAgIG5hbWU6ICJj
YW52YXMgYm91bmNpbmcgZ3JhZGllbnQgY2lyY2xlcyIKKyAgICAgICAgfSwKKyAgICAgICAgewor
ICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFn
ZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jl
c291cmNlcy95aW4teWFuZy5zdmciLAorICAgICAgICAgICAgbmFtZTogImNhbnZhcyBib3VuY2lu
ZyBTVkcgaW1hZ2VzIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJi
b3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5odG1sP3BhcnRpY2xlV2lk
dGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnBu
ZyIsCisgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIFBORyBpbWFnZXMiCisgICAg
ICAgIH0sCisgICAgXQorKSk7CisKK1N1aXRlcy5wdXNoKG5ldyBTdWl0ZSgiU1ZHIHN1aXRlIiwK
KyAgICBbCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9i
b3VuY2luZy1zdmctc2hhcGVzLmh0bWw/cGFydGljbGVXaWR0aD0xMiZwYXJ0aWNsZUhlaWdodD0x
MiZzaGFwZT1jaXJjbGUiLAorICAgICAgICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBjaXJjbGVz
IiwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFy
dGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTQwJnBhcnRpY2xl
SGVpZ2h0PTQwJnNoYXBlPXJlY3QmY2xpcD1zdGFyIiwKKyAgICAgICAgICAgIG5hbWU6ICJTVkcg
Ym91bmNpbmcgY2xpcHBlZCByZWN0cyIsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWw/cGFy
dGljbGVXaWR0aD01MCZwYXJ0aWNsZUhlaWdodD01MCZzaGFwZT1jaXJjbGUmZmlsbD1ncmFkaWVu
dCIsCisgICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIGdyYWRpZW50IGNpcmNsZXMiCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xl
cy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWw/cGFydGljbGVXaWR0aD04MCZwYXJ0aWNsZUhlaWdo
dD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcuc3ZnIiwKKyAgICAgICAgICAgIG5h
bWU6ICJTVkcgYm91bmNpbmcgU1ZHIGltYWdlcyIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAg
ICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRt
bD9wYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNl
cy95aW4teWFuZy5wbmciLAorICAgICAgICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBQTkcgaW1h
Z2VzIgorICAgICAgICB9LAorICAgIF0KKykpOworCitTdWl0ZXMucHVzaChuZXcgU3VpdGUoIkJh
c2ljIGNhbnZhcyBwYXRoIHN1aXRlIiwKKyAgICBbCisgICAgICAgIHsKKyAgICAgICAgICAgIHVy
bDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9bGluZSZsaW5lQ2Fw
PWJ1dHQiLAorICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBsaW5lIHNlZ21lbnRzLCBidXR0IGNh
cHMiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogInNpbXBsZS9zaW1w
bGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9bGluZSZsaW5lQ2FwPXJvdW5kIiwKKyAgICAg
ICAgICAgIG5hbWU6ICJDYW52YXMgbGluZSBzZWdtZW50cywgcm91bmQgY2FwcyIKKyAgICAgICAg
fSwKKyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0
aHMuaHRtbD9wYXRoVHlwZT1saW5lJmxpbmVDYXA9c3F1YXJlIiwKKyAgICAgICAgICAgIG5hbWU6
ICJDYW52YXMgbGluZSBzZWdtZW50cywgc3F1YXJlIGNhcHMiCisgICAgICAgIH0sCisgICAgICAg
IHsKKyAgICAgICAgICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0
aFR5cGU9bGluZVBhdGgmbGluZUpvaW49YmV2ZWwiLAorICAgICAgICAgICAgbmFtZTogIkNhbnZh
cyBsaW5lIHBhdGgsIGJldmVsIGpvaW4iCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9bGluZVBh
dGgmbGluZUpvaW49cm91bmQiLAorICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBsaW5lIHBhdGgs
IHJvdW5kIGpvaW4iCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogInNp
bXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9bGluZVBhdGgmbGluZUpvaW49
bWl0ZXIiLAorICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBsaW5lIHBhdGgsIG1pdGVyIGpvaW4i
CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogInNpbXBsZS9zaW1wbGUt
Y2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9bGluZVBhdGgmbGluZURhc2g9MSIsCisgICAgICAg
ICAgICBuYW1lOiAiQ2FudmFzIGxpbmUgcGF0aCB3aXRoIGRhc2ggcGF0dGVybiIKKyAgICAgICAg
fSwKKyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0
aHMuaHRtbD9wYXRoVHlwZT1xdWFkcmF0aWMiLAorICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBx
dWFkcmF0aWMgc2VnbWVudHMiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVy
bDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9cXVhZHJhdGljUGF0
aCIsCisgICAgICAgICAgICBuYW1lOiAiQ2FudmFzIHF1YWRyYXRpYyBwYXRoIgorICAgICAgICB9
LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRo
cy5odG1sP3BhdGhUeXBlPWJlemllciIsCisgICAgICAgICAgICBuYW1lOiAiQ2FudmFzIGJlemll
ciBzZWdtZW50cyIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAic2lt
cGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbD9wYXRoVHlwZT1iZXppZXJQYXRoIiwKKyAgICAg
ICAgICAgIG5hbWU6ICJDYW52YXMgYmV6aWVyIHBhdGgiCisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/JnBhdGhU
eXBlPWFyY1RvIiwKKyAgICAgICAgICAgIG5hbWU6ICJDYW52YXMgYXJjVG8gc2VnbWVudHMiCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2Fu
dmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9YXJjIiwKKyAgICAgICAgICAgIG5hbWU6ICJDYW52YXMg
YXJjIHNlZ21lbnRzIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJz
aW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1sP3BhdGhUeXBlPXJlY3QiLAorICAgICAgICAg
ICAgbmFtZTogIkNhbnZhcyByZWN0cyIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAg
ICAgdXJsOiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbD9wYXRoVHlwZT1saW5lRmls
bCIsCisgICAgICAgICAgICBuYW1lOiAiQ2FudmFzIGxpbmUgcGF0aCwgZmlsbCIKKyAgICAgICAg
fSwKKyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0
aHMuaHRtbD9wYXRoVHlwZT1xdWFkcmF0aWNGaWxsIiwKKyAgICAgICAgICAgIG5hbWU6ICJDYW52
YXMgcXVhZHJhdGljIHBhdGgsIGZpbGwiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9YmV6aWVy
RmlsbCIsCisgICAgICAgICAgICBuYW1lOiAiQ2FudmFzIGJlemllciBwYXRoLCBmaWxsIgorICAg
ICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZh
cy1wYXRocy5odG1sPyZwYXRoVHlwZT1hcmNUb0ZpbGwiLAorICAgICAgICAgICAgbmFtZTogIkNh
bnZhcyBhcmNUbyBzZWdtZW50cywgZmlsbCIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgICAgdXJsOiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbD9wYXRoVHlwZT1hcmNG
aWxsIiwKKyAgICAgICAgICAgIG5hbWU6ICJDYW52YXMgYXJjIHNlZ21lbnRzLCBmaWxsIgorICAg
ICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZh
cy1wYXRocy5odG1sP3BhdGhUeXBlPXJlY3RGaWxsIiwKKyAgICAgICAgICAgIG5hbWU6ICJDYW52
YXMgcmVjdHMsIGZpbGwiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDog
InNpbXBsZS90aWxlZC1jYW52YXMtaW1hZ2UuaHRtbCIsCisgICAgICAgICAgICBuYW1lOiAiQ2Fu
dmFzIHB1dC9nZXQgaW1hZ2UgZGF0YSIKKyAgICAgICAgfSwKKyAgICBdCispKTsKKworU3VpdGVz
LnB1c2gobmV3IFN1aXRlKCJNaXNjZWxsYW5lb3VzIFRlc3RzIiwKKyAgICBbCisgICAgICAgIHsK
KyAgICAgICAgICAgIHVybDogIm1pc2MvY29tcG9zaXRpbmctdHJhbnNmb3Jtcy5odG1sP3BhcnRp
Y2xlV2lkdGg9NTAmcGFydGljbGVIZWlnaHQ9NTAmZmlsdGVycz15ZXMmaW1hZ2VTcmM9Li4vcmVz
b3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAgICAgICAgICBuYW1lOiAiQ29tcG9zaXRlZCBUcmFu
c2Zvcm1zIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJtaXNjL2Nh
bnZhcy1lbGVjdHJvbnMuaHRtbCIsCisgICAgICAgICAgICBuYW1lOiAiQ2FudmFzIGVsZWN0cm9u
cyIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAibWlzYy9jYW52YXMt
c3RhcnMuaHRtbCIsCisgICAgICAgICAgICBuYW1lOiAiQ2FudmFzIHN0YXJzIgorICAgICAgICB9
LAorICAgIF0KKykpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzLzNkL3Jlc291cmNlcy93ZWIzZC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy8zZC9yZXNvdXJjZXMvd2ViM2QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjZiYWI5Y2MwZDkwCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzLzNkL3Jlc291cmNlcy93ZWIzZC5qcwpAQCAtMCwwICsxLDEzNiBA
QAorKGZ1bmN0aW9uKCkgeworCitXZWIzRFN0YWdlID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNz
KFN0YWdlLAorICAgIGZ1bmN0aW9uKGVsZW1lbnQsIG9wdGlvbnMpCisgICAgeworICAgICAgICBT
dGFnZS5jYWxsKHRoaXMpOworICAgIH0sCisgICAgeworCisgICAgICAgIGluaXRpYWxpemU6IGZ1
bmN0aW9uKGJlbmNobWFyaywgb3B0aW9ucykKKyAgICAgICAgeworICAgICAgICAgICAgU3RhZ2Uu
cHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLCBiZW5jaG1hcmssIG9wdGlvbnMpOworCisg
ICAgICAgICAgICB0aGlzLl9udW1UcmlhbmdsZXMgPSAwOworICAgICAgICAgICAgdGhpcy5fdzNk
ID0gdGhpcy5lbGVtZW50LmdldENvbnRleHQoIndlYjNkIik7CisgICAgICAgICAgICB2YXIgdzNk
ID0gdGhpcy5fdzNkOworCisgICAgICAgICAgICB2YXIgbGlicmFyeSA9IHczZC5jcmVhdGVMaWJy
YXJ5KHRoaXMuX2xvYWRTaGFkZXJGcm9tU2NyaXB0KCJsaWJyYXJ5IikpOworICAgICAgICAgICAg
dmFyIHZlcnRleEZ1bmN0aW9uID0gbGlicmFyeS5mdW5jdGlvbldpdGhOYW1lKCJ2ZXJ0ZXhfbWFp
biIpOworICAgICAgICAgICAgdmFyIGZyYWdtZW50RnVuY3Rpb24gPSBsaWJyYXJ5LmZ1bmN0aW9u
V2l0aE5hbWUoImZyYWdtZW50X21haW4iKTsKKworICAgICAgICAgICAgaWYgKCF2ZXJ0ZXhGdW5j
dGlvbiB8fCAhZnJhZ21lbnRGdW5jdGlvbikgeworICAgICAgICAgICAgICAgIGNvbnNvbGUubG9n
KCJDb21waWxlIGZhaWxlZCIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdGhpcy5fdmVydGV4RGF0YSA9IG5ldyBGbG9hdDMyQXJyYXkoWwor
ICAgICAgICAgICAgICAgIC8vIHggeSB6IDEgciBnIGIgMQorICAgICAgICAgICAgICAgIDAsIDAu
MSwgMCwgMSwgMSwgMCwgMCwgMSwKKyAgICAgICAgICAgICAgICAtMC4xLCAtMC4xLCAwLCAxLCAw
LCAxLCAwLCAxLAorICAgICAgICAgICAgICAgIDAuMSwgLTAuMSwgMCwgMSwgMCwgMCwgMSwgMQor
ICAgICAgICAgICAgXSk7CisgICAgICAgICAgICB0aGlzLl92ZXJ0ZXhCdWZmZXIgPSB3M2QuY3Jl
YXRlQnVmZmVyKHRoaXMuX3ZlcnRleERhdGEpOworCisgICAgICAgICAgICB0aGlzLl9yZXNldCgp
OworCisgICAgICAgICAgICB2YXIgcGlwZWxpbmVEZXNjcmlwdG9yID0gbmV3IFdlYjNEUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yKCk7CisgICAgICAgICAgICBwaXBlbGluZURlc2NyaXB0b3IudmVy
dGV4RnVuY3Rpb24gPSB2ZXJ0ZXhGdW5jdGlvbjsKKyAgICAgICAgICAgIHBpcGVsaW5lRGVzY3Jp
cHRvci5mcmFnbWVudEZ1bmN0aW9uID0gZnJhZ21lbnRGdW5jdGlvbjsKKyAgICAgICAgICAgIHBp
cGVsaW5lRGVzY3JpcHRvci5jb2xvckF0dGFjaG1lbnRzWzBdLnBpeGVsRm9ybWF0ID0gdzNkLlBp
eGVsRm9ybWF0QkdSQThVbm9ybTsKKworICAgICAgICAgICAgdGhpcy5fcGlwZWxpbmVTdGF0ZSA9
IHczZC5jcmVhdGVSZW5kZXJQaXBlbGluZVN0YXRlKHBpcGVsaW5lRGVzY3JpcHRvcik7CisKKyAg
ICAgICAgICAgIHRoaXMuX2NvbW1hbmRRdWV1ZSA9IHczZC5jcmVhdGVDb21tYW5kUXVldWUoKTsK
KworICAgICAgICAgICAgdGhpcy5fcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSBuZXcgV2ViM0RSZW5k
ZXJQYXNzRGVzY3JpcHRvcigpOworICAgICAgICAgICAgdGhpcy5fcmVuZGVyUGFzc0Rlc2NyaXB0
b3IuY29sb3JBdHRhY2htZW50c1swXS5sb2FkQWN0aW9uID0gdzNkLkxvYWRBY3Rpb25DbGVhcjsK
KyAgICAgICAgICAgIHRoaXMuX3JlbmRlclBhc3NEZXNjcmlwdG9yLmNvbG9yQXR0YWNobWVudHNb
MF0uc3RvcmVBY3Rpb24gPSB3M2QuU3RvcmVBY3Rpb25TdG9yZTsKKyAgICAgICAgICAgIHRoaXMu
X3JlbmRlclBhc3NEZXNjcmlwdG9yLmNvbG9yQXR0YWNobWVudHNbMF0uY2xlYXJDb2xvciA9IFsx
LjAsIDEuMCwgMS4wLCAxLjBdOworICAgICAgICB9LAorCisgICAgICAgIF9sb2FkU2hhZGVyRnJv
bVNjcmlwdDogZnVuY3Rpb24oaWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBzY3JpcHRF
bGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOworICAgICAgICAgICAgcmV0dXJu
IHNjcmlwdEVsZW1lbnQudGV4dDsKKyAgICAgICAgfSwKKworICAgICAgICBfcmVzZXQ6IGZ1bmN0
aW9uKCkKKyAgICAgICAgeworICAgICAgICAgIGlmICghdGhpcy5fbnVtVHJpYW5nbGVzKQorICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgdGhpcy5fdW5pZm9ybURhdGEgPSBuZXcgRmxv
YXQzMkFycmF5KHRoaXMuX251bVRyaWFuZ2xlcyAqIDY0KTsKKyAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHRoaXMuX251bVRyaWFuZ2xlczsgKytpKSB7CisgICAgICAgICAgICAgIHRoaXMu
X3VuaWZvcm1EYXRhW2kgKiA2NCArIDBdID0gU3RhZ2UucmFuZG9tKDAuMiwgMC40KTsKKyAgICAg
ICAgICAgICAgdGhpcy5fdW5pZm9ybURhdGFbaSAqIDY0ICsgMV0gPSAwOworICAgICAgICAgICAg
ICB0aGlzLl91bmlmb3JtRGF0YVtpICogNjQgKyAyXSA9IFN0YWdlLnJhbmRvbSgtMC45LCAwLjkp
OworICAgICAgICAgICAgICB0aGlzLl91bmlmb3JtRGF0YVtpICogNjQgKyAzXSA9IFN0YWdlLnJh
bmRvbSgtMC45LCAwLjkpOworICAgICAgICAgICAgICB0aGlzLl91bmlmb3JtRGF0YVtpICogNjQg
KyA0XSA9IFN0YWdlLnJhbmRvbSgwLjUsIDIpOworICAgICAgICAgICAgICB0aGlzLl91bmlmb3Jt
RGF0YVtpICogNjQgKyA1XSA9IFN0YWdlLnJhbmRvbSgwLCAxMCk7CisgICAgICAgICAgfQorICAg
ICAgICAgIHRoaXMuX3VuaWZvcm1CdWZmZXIgPSB0aGlzLl93M2QuY3JlYXRlQnVmZmVyKHRoaXMu
X3VuaWZvcm1EYXRhKTsKKyAgICAgICAgfSwKKworICAgICAgICB0dW5lOiBmdW5jdGlvbihjb3Vu
dCkKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5fbnVtVHJpYW5nbGVzICs9IGNvdW50ICog
MTA7CisgICAgICAgICAgICB0aGlzLl9udW1UcmlhbmdsZXMgPSBNYXRoLm1heCh0aGlzLl9udW1U
cmlhbmdsZXMsIDApOworCisgICAgICAgICAgICB0aGlzLl9yZXNldCgpOworICAgICAgICB9LAor
CisgICAgICAgIGFuaW1hdGU6IGZ1bmN0aW9uKHRpbWVEZWx0YSkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKCF0aGlzLl9udW1UcmlhbmdsZXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgICAgICB2YXIgdzNkID0gdGhpcy5fdzNkOworCisgICAgICAgICAgICB2YXIgY29t
bWFuZEJ1ZmZlciA9IHRoaXMuX2NvbW1hbmRRdWV1ZS5jcmVhdGVDb21tYW5kQnVmZmVyKCk7CisK
KyAgICAgICAgICAgIHZhciBkcmF3YWJsZSA9IHczZC5uZXh0RHJhd2FibGUoKTsKKworICAgICAg
ICAgICAgdGhpcy5fcmVuZGVyUGFzc0Rlc2NyaXB0b3IuY29sb3JBdHRhY2htZW50c1swXS50ZXh0
dXJlID0gZHJhd2FibGUudGV4dHVyZTsKKworICAgICAgICAgICAgaWYgKCF0aGlzLl9zdGFydFRp
bWUpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9zdGFydFRpbWUgPSBEYXRlLm5vdygpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgdmFyIGVsYXBzZWQgPSAoRGF0ZS5ub3coKSAtIHRoaXMu
X3N0YXJ0VGltZSkgLyAxMDAwOworCisgICAgICAgICAgICB2YXIgdW5pZm9ybUJ1ZmZlclZpZXcg
PSBuZXcgRmxvYXQzMkFycmF5KHRoaXMuX3VuaWZvcm1CdWZmZXIuY29udGVudHMpOworICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9udW1UcmlhbmdsZXM7ICsraSkgeworICAg
ICAgICAgICAgICAgIHVuaWZvcm1CdWZmZXJWaWV3W2kgKiA2NCArIDFdID0gZWxhcHNlZDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIGNvbW1hbmRFbmNvZGVyID0gY29tbWFuZEJ1
ZmZlci5jcmVhdGVSZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yKHRoaXMuX3JlbmRl
clBhc3NEZXNjcmlwdG9yKTsKKyAgICAgICAgICAgIGNvbW1hbmRFbmNvZGVyLnNldFJlbmRlclBp
cGVsaW5lU3RhdGUodGhpcy5fcGlwZWxpbmVTdGF0ZSk7CisKKyAgICAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgdGhpcy5fbnVtVHJpYW5nbGVzOyArK2kpIHsKKyAgICAgICAgICAgICAgICBj
b21tYW5kRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXIodGhpcy5fdmVydGV4QnVmZmVyLCAwLCAwKTsK
KyAgICAgICAgICAgICAgICBjb21tYW5kRW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXIodGhpcy5fdW5p
Zm9ybUJ1ZmZlciwgMjU2ICogaSwgMSk7CisgICAgICAgICAgICAgICAgY29tbWFuZEVuY29kZXIu
ZHJhd1ByaW1pdGl2ZXModzNkLlByaW1pdGl2ZVR5cGVUcmlhbmdsZSwgMCwgMyk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGNvbW1hbmRFbmNvZGVyLmVuZEVuY29kaW5nKCk7CisgICAg
ICAgICAgICBjb21tYW5kQnVmZmVyLnByZXNlbnREcmF3YWJsZShkcmF3YWJsZSk7CisgICAgICAg
ICAgICBjb21tYW5kQnVmZmVyLmNvbW1pdCgpOworCisgICAgICAgIH0sCisKKyAgICAgICAgY29t
cGxleGl0eTogZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5f
bnVtVHJpYW5nbGVzIC8gMTA7CisgICAgICAgIH0KKyAgICB9CispOworCitXZWIzREJlbmNobWFy
ayA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCZW5jaG1hcmssCisgICAgZnVuY3Rpb24ob3B0
aW9ucykKKyAgICB7CisgICAgICAgIEJlbmNobWFyay5jYWxsKHRoaXMsIG5ldyBXZWIzRFN0YWdl
KCksIG9wdGlvbnMpOworICAgIH0KKyk7CisKK3dpbmRvdy5iZW5jaG1hcmtDbGFzcyA9IFdlYjNE
QmVuY2htYXJrOworCit9KSgpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzLzNkL3dlYjNkLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvM2Qvd2ViM2QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
NGE3Mjg0ZmYyNzYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvM2Qvd2ViM2QuaHRtbApAQCAtMCwwICsxLDY4IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9zdGFnZS5j
c3MiPgorPC9oZWFkPgorPGJvZHk+CisgICAgPHNjcmlwdCBpZD0ibGlicmFyeSIgdHlwZT0ieC1z
aGFkZXIveC1tZXRhbCI+CisgICAgdXNpbmcgbmFtZXNwYWNlIG1ldGFsOworCisgICAgc3RydWN0
IFZlcnRleAorICAgIHsKKyAgICAgICAgZmxvYXQ0IHBvc2l0aW9uIFtbcG9zaXRpb25dXTsKKyAg
ICAgICAgZmxvYXQ0IGNvbG9yOworICAgIH07CisKKyAgICBzdHJ1Y3QgVW5pZm9ybXMKKyAgICB7
CisgICAgICAgIGZsb2F0IHNjYWxlOworICAgICAgICBmbG9hdCB0aW1lOworICAgICAgICBmbG9h
dCBvZmZzZXRYOworICAgICAgICBmbG9hdCBvZmZzZXRZOworICAgICAgICBmbG9hdCBzY2FsYXI7
CisgICAgICAgIGZsb2F0IHNjYWxhck9mZnNldDsKKyAgICB9IF9fYXR0cmlidXRlX18gKChhbGln
bmVkICgyNTYpKSk7CisKKyAgICB2ZXJ0ZXggVmVydGV4IHZlcnRleF9tYWluKGRldmljZSBWZXJ0
ZXggKnZlcnRpY2VzIFtbYnVmZmVyKDApXV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdGFudCBVbmlmb3JtcyAqdW5pZm9ybXMgW1sgYnVmZmVyKDEpIF1dLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludCB2aWQgW1t2ZXJ0ZXhfaWRdXSkKKyAgICB7CisgICAg
ICAgIGZsb2F0IGludHZhbDsKKyAgICAgICAgZmxvYXQgZmFkZSA9IG1vZGYodW5pZm9ybXMtPnNj
YWxhck9mZnNldCArIHVuaWZvcm1zLT50aW1lICogdW5pZm9ybXMtPnNjYWxhciAvIDEwLCBpbnR2
YWwpOworICAgICAgICBpZiAoZmFkZSA8IDAuNSkgeworICAgICAgICAgICAgZmFkZSA9IGZhZGUg
KiAyOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZmFkZSA9ICgxIC0gZmFkZSkgKiAy
OworICAgICAgICB9CisKKyAgICAgICAgVmVydGV4IHZlcnRleF9vdXQ7CisgICAgICAgIGZsb2F0
IHhwb3MgPSB2ZXJ0aWNlc1t2aWRdLnBvc2l0aW9uLnggKiB1bmlmb3Jtcy0+c2NhbGU7CisgICAg
ICAgIGZsb2F0IHlwb3MgPSB2ZXJ0aWNlc1t2aWRdLnBvc2l0aW9uLnkgKiB1bmlmb3Jtcy0+c2Nh
bGU7CisKKyAgICAgICAgZmxvYXQgYW5nbGUgPSAzLjE0MTU5ICogMiAqIGZhZGU7CisgICAgICAg
IGZsb2F0IHhyb3QgPSB4cG9zICogY29zKGFuZ2xlKSAtIHlwb3MgKiBzaW4oYW5nbGUpOworICAg
ICAgICBmbG9hdCB5cm90ID0geHBvcyAqIHNpbihhbmdsZSkgKyB5cG9zICogY29zKGFuZ2xlKTsK
KworICAgICAgICB4cG9zID0geHJvdCArIHVuaWZvcm1zLT5vZmZzZXRYOworICAgICAgICB5cG9z
ID0geXJvdCArIHVuaWZvcm1zLT5vZmZzZXRZOworICAgIAorICAgICAgICB2ZXJ0ZXhfb3V0LnBv
c2l0aW9uID0gZmxvYXQ0KHhwb3MsIHlwb3MsIDAsIDEpOworICAgICAgICB2ZXJ0ZXhfb3V0LmNv
bG9yID0gdmVydGljZXNbdmlkXS5jb2xvciArIGZsb2F0NChmYWRlLCAxIC0gZmFkZSwgMCwgMSk7
CisgICAgICAgIHJldHVybiB2ZXJ0ZXhfb3V0OworICAgIH0KKworICAgIGZyYWdtZW50IGZsb2F0
NCBmcmFnbWVudF9tYWluKFZlcnRleCBpblZlcnRleCBbW3N0YWdlX2luXV0pCisgICAgeworICAg
ICAgICByZXR1cm4gaW5WZXJ0ZXguY29sb3I7CisgICAgfQorICAgIDwvc2NyaXB0PgorICAgIDxj
YW52YXMgaWQ9InN0YWdlIj48L2NhbnZhcz4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3N0cmluZ3MuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9zdGF0aXN0aWNzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL21hdGguanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFp
bi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWIzZC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0Zjdk
MWRhMjIzYS4uNWQ3ODFhOGNhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtNiwyMCAr
NiwxMCBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE1pY2hhZWwgU2Fib2ZmLgogCi0gICAgICAg
IFdlIG9mdGVuIHdhbnQgdG8gYmFzZWxpbmUgY29tcGlsZSBQcm9ncmFtQ29kZSBvbmNlIHdlIGhp
dCBhIGxvb3AgaW4gdGhlIExMSW50LgotICAgICAgICBIb3dldmVyLCBzb21lIHByb2dyYW1zIGV4
ZWN1dGUgYSBub24tdHJpdmlhbCBhbW91bnQgb2YgY29kZSBiZWZvcmUgdGhlIGxvb3AuCi0gICAg
ICAgIFRoaXMgY29kZSBjYW4gbmV2ZXIgYmUgZXhlY3V0ZWQgYWdhaW4gYmVjYXVzZSBQcm9ncmFt
Q29kZUJsb2NrcyBuZXZlciBydW4gbW9yZQotICAgICAgICB0aGFuIG9uY2UuIFdlJ3JlIHdhc3Rp
bmcgdGltZSBhbmQgbWVtb3J5IGJ5IGNvbXBpbGluZyBjb2RlIHRoYXQgaXMgdW5yZWFjaGFibGUK
LSAgICAgICAgZnJvbSB0aGUgT1NSIGVudHJ5IGRlc3RpbmF0aW9uLiBUaGlzIHBhdGNoIGZpeGVz
IHRoaXMgYnkgb25seSBjb21waWxpbmcgY29kZQotICAgICAgICB0aGF0IGlzIHJlYWNoYWJsZSBm
cm9tIHRoZSBPU1IgZW50cnkgZGVzdGluYXRpb24uCi0KLSAgICAgICAgVGhpcyBpcyBhIHNwZWVk
dXAgb24gS3Jha2VuL2FpLWFzdGFyIGZvciBkZXZpY2VzIHdpdGggbGltaXRlZCBDUFVzIChJJ3Zl
IGJlZW4KLSAgICAgICAgdGVzdGluZyBvbiBkZXZpY2VzIHdpdGggMiBDUFVzKS4gT24gYWktYXN0
YXIsIHdlIHdlcmUgc3BlbmRpbmcgNTAtMTAwbXMgY29tcGlsaW5nCi0gICAgICAgIGEgaHVnZSBQ
cm9ncmFtQ29kZUJsb2NrIGluIHRoZSBiYXNlbGluZSBKSVQgd2hlcmUgdGhlIG1ham9yaXR5IG9m
IHRoZSBjb2RlCi0gICAgICAgIHdvdWxkIG5ldmVyIGV4ZWN1dGUuIElmIHRoaXMgY29tcGlsYXRp
b24gd2FzIGtpY2tlZCBvZmYgb24gdGhlIG1haW4gdGhyZWFkLAotICAgICAgICB0aGVuIHdlJ2Qg
YmUgc3RhbGxlZCBmb3IgYSBsb25nIHRpbWUuIElmIGl0IHdlcmUgc3RhcnRlZCBvbiB0aGUgYmFz
ZWxpbmUgSklUcwotICAgICAgICBiYWNrZ3JvdW5kIGNvbXBpbGF0aW9uIHRocmVhZCwgd2UnZCBz
dGlsbCB3YXN0ZSA1MC0xMDBtcyBpbiB0aGF0IHRocmVhZCwgY2F1c2luZwotICAgICAgICBhbGwg
b3RoZXIgYmFzZWxpbmUgY29tcGlsYXRpb25zIHRvIGhhcHBlbiBvbiB0aGUgbWFpbiB0aHJlYWQu
CisgICAgICAgIEN1cnJlbnRseSwgd2UgaGF2ZSBubyB3YXkgdG8gdGVsbCBhbiBBcnJheUJ1ZmZl
ciB0aGF0IGl0IGRvZXMgbm90IG93biB0aGUgY29udGVudHMgb2YgYSBwYXNzZWRCdWZmZXIuCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWxsb3dzIHVzIHRvIGdpdmUgdGhlIEFycmF5QnVmZmVyIGEgU2hh
cmVkVGFzayB0aGF0IHRlbGxzIGl0IHdoYXQgdG8gZG8gd2l0aCB0aGUgcG9pbnRlcgorICAgICAg
ICB1cG9uIGRlc3RydWN0aW9uLiBNb3N0IGxpa2VseSwgdGhpcyB3aWxsIGJlIGRlY3JlbWVudGlu
ZyB0aGUgcmVmZXJlbmNlIGNvdW50IG9uIGFub3RoZXIgb2JqZWN0IGJ1dAorICAgICAgICB0aGUg
dXNlciBtYXkgZG8gYW55dGhpbmcgdGhlaXIgaGVhcnQgZGVzaXJlcy4KIAogICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKICAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4
ZWN1dGVQcm9ncmFtKToKQEAgLTY1NzYsNyArNjU2Niw3IEBACiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjYyOTUKICAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzI5NzYyMDE3PgogCi0gICAgICAgIFJldmlld2VkIGJ5IE1hcmsgTGFtLgorICAgICAgICBS
ZXZpZXdlZCBieSBGaWxpcCBQaXpsby4KIAogICAgICAgICBSZW5hbWUgdGhlIGNyZWF0ZSogZnVu
Y3Rpb25zLCBhbmQgcGFzcyBWTSBhcm91bmQsIGFzIHN1Z2dlc3RlZCBmb3IKICAgICAgICAgTGlu
a0Vycm9yIGluICMxNjU4MDUuCkBAIC0xMTI5OCw3ICsxMTI4OCw3IEBACiAgICAgICAgIFtKU0Nd
IHJlcG9ydCB1bmV4cGVjdGVkIHRva2VuIHdoZW4gImFzeW5jIiBpcyBmb2xsb3dlZCBieSBpZGVu
dGlmaWVyIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY1MDkxCiAKLSAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBMYW0uCisgICAgICAgIFJldmlld2Vk
IGJ5IFNhYW0gQmFyYXRpLgogCiAgICAgICAgIFJlcG9ydCBhIFN5bnRheEVycm9yLCBpbiBvcmRl
ciB0byByZXBvcnQgY29ycmVjdCBlcnJvciBpbiBjb250ZXh0cwogICAgICAgICBhbiBhc3luYyBB
cnJvd0Z1bmN0aW9uIGNhbm5vdCBvY2N1ci4gQWxzbyBjb3JyZWN0cyBlcnJvcnMgaW4gY29tbWVu
dApAQCAtMTEzMTMsNyArMTEzMDMsOSBAQAogICAgICAgICBBZGQgV2FzbSBpNjQgdG8gaTMyIGNv
bnZlcnNpb24uCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjUzNzgKIAotICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXpsby4KKyAgICAgICAgUnVu
IHBlcmwgdmVyc2lvbiBzdGFtcCB1dGlsaXR5LgorICAgICAgICAKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKIAogICAgICAgICBJdCB0dXJucyBvdXQgdGhlIHdyYXAgb3BlcmF0aW9uIGlzIGp1
c3QgQjMncyBUcnVuYy4KIApAQCAtMTE0NzAsNiArMTE0NjIsMTcgQEAKICAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzI5NDY3MDk4PgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgTGFtLgorICAg
ICAgICAKKyAgICAgICAgU29tZSB0aW1lIGFnbyBJIGFja25vd2xlZGdlZCB0aGF0IExJQ00gcmVx
dWlyZWQgbG9vcHMgdG8gbWVldCBjZXJ0YWluIHJlcXVpcmVtZW50cyB0aGF0CisgICAgICAgIG1h
eSBnZXQgYnJva2VuIGJ5IHRoZSB0aW1lIHdlIGRvIExJQ00sIGxpa2UgdGhhdCB0aGUgdGVybWlu
YWwgb2YgdGhlIHByZS1oZWFkZXIgaXMgRXhpdE9LLgorICAgICAgICBJdCB1c2VkIHRvIGJlIHRo
YXQgd2UganVzdCBpZ25vcmVkIHRoYXQgcmVxdWlyZW1lbnQgYW5kIHdvdWxkIGhvaXN0IGFueXdh
eSwgYnV0IHNpbmNlCisgICAgICAgIHIxODkxMjYgd2UndmUgc3RvcHBlZCBob2lzdGluZyBvdXQg
b2YgbG9vcHMgdGhhdCBkb24ndCBoYXZlIEV4aXRPSy4gIFdlIGFsc28gYWRkZWQgdGVzdHMKKyAg
ICAgICAgZm9yIHRoZSBjYXNlIHRoYXQgdGhlIHByZS1oZWFkZXIgZG9lc24ndCBleGlzdCBvciBp
cyBpbnZhbGlkLgorCisgICAgICAgIEl0IHR1cm5zIG91dCB0aGF0IHRoaXMgcGF0Y2ggZGlkbid0
IGdvIGZhciBlbm91Z2g6IGV2ZW4gdGhvdWdoIGl0IG1hZGUgTElDTSBhdm9pZCBsb29wcworICAg
ICAgICB0aGF0IGhhZCBhbiBpbnZhbGlkIHByZS1oZWFkZXIsIHRoZSBwYXJ0IHRoYXQgdXBkYXRl
ZCB0aGUgQUkgc3RhdGUgaW4gbmVzdGVkIGxvb3BzIHN0aWxsCisgICAgICAgIGFzc3VtZWQgdGhh
dCB0aGVzZSBsb29wcyBoYWQgdmFsaWQgcHJlLWhlYWRlcnMuICBXZSB3b3VsZCBjcmFzaCBpbiBu
dWxsIGRlcmVmZXJlbmNlIGluCisgICAgICAgIHRoYXQgbG9vcCBpZiBhIG5lc3RlZCBsb29wIGhh
ZCBhbiBpbnZhbGlkIHByZS1oZWFkZXIuCiAKICAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgogICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpoYW5kbGVDb25zb2xlQXNzZXJ0KToKQEAgLTEzMDIwLDcgKzEzMDIzLDIy
IEBACiAgICAgICAgIEZpeCBleGNlcHRpb24gc2NvcGUgdmVyaWZpY2F0aW9uIGZhaWx1cmVzIGlu
IHJ1bnRpbWUvV2VhayogZmlsZXMuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjUwOTYKIAotICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJl
bi4KKyAgICAgICAgQmVmb3JlIHRoaXMgY2hhbmdlLCBib3RoIC9cdy91aSBhbmQgL1xXL3VpIFJl
Z0V4cCdzIHdvdWxkIG1hdGNoIHRoZSBjaGFyYWN0ZXJzCisgICAgICAgIGssIEssIHMsIFMsIFx1
MDE3ZiAoTGF0aW4gU21hbGwgTGV0dGVyIExvbmcgUykgYW5kIFx1MjEyYSAoS2VsdmluIFNpZ24p
LgorICAgICAgICBUaGlzIHdhcyBkdWUgdG8gaG93IHRoZSBFUzYgc3RhbmRhcmQgZGVmaW5lZCBt
YXRjaGluZyBvZiBjaGFyYWN0ZXIgY2xhc3NlcworICAgICAgICBzcGVjaWZpY2FsbHkgdGhhdCB0
aGUgYWJzdHJhY3Qgb3BlcmF0aW9uICJDYW5vbmljYWxpemUoKSIgaXMgY2FsbGVkIGZvciB0aGUK
KyAgICAgICAgY2hhcmFjdGVyIHRvIGJlIG1hdGNoZWQgQU5EIGZvciB0aGUgY2hhcmFjdGVycyBp
biB0aGUgY2hhcmFjdGVyIGNsYXNzIHdlIGFyZQorICAgICAgICBtYXRjaGluZyBhZ2FpbnN0LiAg
VGhpcyBjaGFuZ2UgaXMgdG8gbWFrZSBcVyBhbHdheXMgYmUgdGhlIGludmVyc2Ugb2YgXHcuCisg
ICAgICAgIEl0IGlzIHN0aWxsIHRoZSBjYXNlIHRoYXQgdGhlIGNoYXJhY3RlcnMgdGhhdCBtYXRj
aCBhZ2FpbnN0IFx3IGNoYW5nZXMKKyAgICAgICAgZGVwZW5kaW5nIG9uIGEgcmVndWxhciBleHBy
ZXNzaW9uJ3MgZmxhZ3MuCisKKyAgICAgICAgVGhlIG9ubHkgcmVhbCBjaGFuZ2VzIG9jY3VyIGZv
ciByZWd1bGFyIGV4cHJlc3Npb25zIHdpdGggYm90aCB0aGUgdW5pY29kZSBhbmQKKyAgICAgICAg
aWdub3JlIGNhc2UgZmxhZ3Mgc2V0LiAgVXBkYXRlZCB0aGUgY2hhcmFjdGVyIGNsYXNzIGdlbmVy
YXRvciB0byBtYWtlIAorICAgICAgICBub253b3JkVW5pY29kZUlnbm9yZUNhc2VDaGFyIG5vdCBp
bmNsdWRlIGssIEssIHMsIFMsIFx1MDE3ZiBhbmQgXHUyMTJhLgorICAgICAgICBDaGFuZ2VkIEJ5
dGVjb2RlUGF0dGVybi53b3JkY2hhckNoYXJhY3RlckNsYXNzIHRvIHVzZSB0aGUgY29ycmVjdAor
ICAgICAgICB3b3JkIGNoYXJhY3RlciBjbGFzcyBmb3IgdGhlIGZsYWdzLiAgU2ltcGxmaWVkIGNo
YXJhY3RlciBjbGFzcyBzZXQgdXAgaW4KKyAgICAgICAgaW4gdGhlIHBhdHRlcm4gdG8gdXNlIG1f
cGF0dGVybi53b3JkVW5pY29kZUlnbm9yZUNhc2VDaGFyQ2hhcmFjdGVyQ2xhc3MgYW5kCisgICAg
ICAgIGludmVydCBhcyBhcHByb3ByaWF0ZSB3aGVuIHVuaWNvZGUgYW5kIGlnbm9yZSBjYXNlIGFy
ZSBib3RoIHNldC4KIAogICAgICAgICAqIHJ1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcDoK
ICAgICAgICAgKEpTQzo6Y29uc3RydWN0V2Vha01hcCk6CkBAIC0yMjA4MSw3ICsyMjA5OSw3IEBA
CiAgICAgICAgIEpTRnVuY3Rpb246OnB1dCgpIHNob3VsZCBub3QgYWxsb3cgY2FjaGluZyBvZiBs
YXppbHkgcmVpZmllZCBwcm9wZXJ0aWVzLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MDgxCiAKLSAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkg
R2FyZW4uCisyMDE2LTA1LTIwICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAg
ICAgICAgIEl0IGlzIGluY29ycmVjdCBmb3IgSlNGdW5jdGlvbjo6cHV0KCkgdG8gcmV0dXJuIFB1
dFByb3BlcnR5U2xvdHMgdGhhdCBpbmRpY2F0ZXMKICAgICAgICAgdGhhdCBpdHMgbGF6aWx5IHJl
aWZpZWQgcHJvcGVydGllcyAoZS5nLiAuY2FsbGVyLCBhbmQgLmFyZ3VtZW50cykgYXJlIGNhY2hl
YWJsZS4KQEAgLTIyMjI4LDcgKzIyMjQ2LDExIEBACiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQwMDcKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4
ODUzNzc1PgogCi0gICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxvLgorICAgICAgICAqIGJ5
dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZtKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpzZXRWTSk6IERlbGV0ZWQuCisgICAgICAgIC0gTm90IHVzZWQs
IGFuZCBzdWdnZXN0cyB0aGF0IGl0IGNhbiBiZSBjaGFuZ2VkIGR1cmluZyB0aGUgbGlmZXRpbWUg
b2YgdGhlCisgICAgICAgICAgQ29kZUJsb2NrICh3aGljaCBzaG91bGQgbm90IGJlKS4KIAogICAg
ICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CiAgICAgICAg
IChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXQpOgpAQCAtMjIzNTYs
NyArMjIzNzgsNyBAQAogICAgICAgICBIZWFwVGltZXIgc2hvdWxkIG5vdCBoYXJkY29kZSBhbGwg
b2YgaXRzIHN1YmNsYXNzZXMgYW5kIFVTRShDRikgc2hvdWxkbid0IGJlIGEgYml6YXJyZSBzcGVj
aWFsIGNhc2UKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2Mzk0NwogCi0gICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorICAgICAgICBS
ZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCiAKICAgICAgICAgSSB3YW50IHRvIGludHJvZHVj
ZSBhbm90aGVyIEhlYXBUaW1lci4gUHJpb3IgdG8gdGhpcyBjaGFuZ2UsIHRoYXQgd291bGQgaGF2
ZSBtZWFudCB3cml0aW5nCiAgICAgICAgIGV4YWN0IGNvcGllcyBvZiB0aGF0IHRpbWVyJ3MgbG9n
aWMgZm9yIGVhY2ggcGxhdGZvcm0gdGhhdCBoYXMgYSBIZWFwVGltZXIgKENGLCBHTElCLCBhbmQK
QEAgLTIyODc2LDcgKzIyODk4LDcgQEAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MzkxOAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjg4MzQwOTU+
CiAKLSAgICAgICAgUmV2aWV3ZWQgYnkgTWljaGFlbCBTYWJvZmYuCisgICAgICAgIFJldmlld2Vk
IGJ5IEdlb2ZmcmV5IEdhcmVuLgogCiAgICAgICAgIFdoZW4gSlNPTlBhcnNlIGlzIGNhbGxlZCB3
aXRoIGEgbnVsbCBTdHJpbmcsIGl0IGNhbGxzIFN0cmluZzo6aXM4Yml0LCB3aGljaCBkZXJlZmVy
ZW5jZXMgYSBudWxsIHBvaW50ZXIuCiAgICAgICAgIFRoaXMgaXMgaGFwcGVuaW5nIHdpdGggbmV3
IHdvcmsgaW4gdGhlIEZldGNoIEFQSSwgYnV0IGNhbGxlcnMgb2YgSlNPTlBhcnNlIHNob3VsZCBu
b3QgaGF2ZSB0byBjaGVjawpAQCAtMjM3NjIsNyArMjM3ODQsMTEgQEAKICAgICAgICAgY3JlYXRl
X2hhc2hfdGFibGU6IGFsbG93IGVtcHR5IHRhYmxlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNzAxCiAKLSAgICAgICAgUmV2aWV3ZWQgYnkgS2Vp
dGggTWlsbGVyLgorICAgICAgICBUaGlzIHBhdGNoIGFwcGxpZXMgdGhlIGZvbGxvd2luZyBmaXg6
CisgICAgICAgIAorICAgICAgICAxLiBBbGxvY2F0ZSBzcGFjZSBpbiB0aGUgVk1FbnRyeUZyYW1l
IGZvciB0aGUgY2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlci4KKyAgICAgICAgICAgVGhpcyBlbnN1
cmVzIHRoYXQgZWFjaCBWTSBlbnRyeSBzZXNzaW9uIGhhcyBpdHMgb3duIGJ1ZmZlciB0byB1c2Us
IGFuZCB3aWxsCisgICAgICAgICAgIG5vdCBjb3JydXB0IHRoZSBvbmUgZnJvbSB0aGUgcHJldmlv
dXMgVk0gZW50cnkgc2Vzc2lvbi4KIAogICAgICAgICAqIGNyZWF0ZV9oYXNoX3RhYmxlOgogCkBA
IC0yNDQ4NCw3ICsyNDUxMCwxNSBAQAogICAgICAgICBbRE9NSklUXSBVc2UgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIGZvciBvcGVyYXRpb25zIHVzZWQgZm9yIERPTUpJVCBzbG93IGNhbGxzCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM1ODYKIAotICAg
ICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRTb3VyY2UuanM6CisgICAgICAgIChJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUuZXZh
bHVhdGUpOgorICAgICAgICAoSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlLl9ldmFsdWF0ZU9uKToK
KyAgICAgICAgKEluamVjdGVkU2NyaXB0LnByb3RvdHlwZS5ldmFsdWF0ZU9uQ2FsbEZyYW1lKToK
KyAgICAgICAgVW5pZnkgdGhlIGNvZGUgdG8gdXNlIHRoZSBwYXNzZWQgaW4gZXZhbHVhdGUgZnVu
Y3Rpb24gYW5kIG9iamVjdC4KKyAgICAgICAgV2hlbiBldmFsdWF0aW5nIG9uIGEgY2FsbCBmcmFt
ZSB0aGUgZXZhbHVhdGUgZnVuY3Rpb24gZW5kcyB1cCBiZWluZworICAgICAgICBEZWJ1Z2dlckNh
bGxGcmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24uIFdoZW4gZXZhbHVhdGluZyBnbG9i
YWxseQorICAgICAgICB0aGlzIGVuZHMgdXAgYmVpbmcgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OmV2
YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uLgorICAgICAgICBJbiBib3RoIGNhc2VzICJvYmplY3Qi
IGlzIHRoZSBwcmVmZXJyZWQgdGhpcyBvYmplY3QgdG8gdXNlLgogCiAgICAgICAgIEMgZnVuY3Rp
b25zIGNhbGxlZCBmcm9tIHRoZSBET01KSVQgc2xvdyBwYXRoIGNhbGxzIHNob3VsZCB1c2UgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyLgogICAgICAgICBUaGlzIGZpeGVzIHRoZSBkZWJ1ZyBhc3NlcnRp
b24gY2F1c2VkIGluIHIyMDc0MjcuCkBAIC0yNDkwOCw3ICsyNDk0Miw3IEBACiAgICAgICAgIEFp
cjo6SVJDIG5lZWRzIHRvIHBsYWNlIGFsbCBUbXBzIG9uIHNvbWUgd29ya2xpc3QsIGV2ZW4gaWYg
dGhleSBoYXZlIG5vIGludGVyZmVyZW5jZSBlZGdlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNTA5CiAKLSAgICAgICAgUmV2aWV3ZWQgYnkgTWFy
ayBMYW0uCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KIAogICAgICAgICBU
aGUgd29ya2xpc3QgYnVpbGRpbmcgZnVuY3Rpb24gaW4gSVJDIHNraXBzIHRlbXBvcmFyaWVzIHRo
YXQgaGF2ZSBubyBkZWdyZWUuIFRoaXMgZG9lc24ndCBhcHBlYXIKICAgICAgICAgdG8gYmUgbmVj
ZXNzYXJ5LiBUaGlzIGhhcyBiZWVuIHRoZXJlIHNpbmNlIHRoZSBvcmlnaW5hbCBJUkMgY29tbWl0
LiBJdCBoYXNuJ3QgY2F1c2VkIGJ1Z3MgYmVjYXVzZQpAQCAtMjYwMDcsNyArMjYwNDEsNyBAQAog
ICAgICAgICBDaGFuZ2UgQXJyYXlQcm90b3R5cGUuY3BwJ3MgcHV0TGVuZ3RoKCkgYW5kIHNldExl
bmd0aCgpIHRvIHRha2UgYSBWTSYgc28gdGhhdCB3ZSBjYW4gdXNlIHZtLnByb3BlcnR5TmFtZXMu
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNjAK
IAotICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKyAgICAgICAgUmV2aWV3ZWQgYnkg
Q2hyaXMgRHVtZXouCiAKICAgICAgICAgSW4gYWxsIGNhc2VzIHdoZXJlIHdlIGNhbGwgdGhlc2Us
IHdlIGFscmVhZHkgaGF2ZSB0aGUgVk0mIGFueXdheS4KIApAQCAtMjYzMDEsNyArMjYzMzUsMjQg
QEAKICAgICAgICAgSGFzT3duUHJvcGVydHlDYWNoZSBmbGF0dGVuaW5nIGRpY3Rpb25hcmllcyBp
cyBjYXVzaW5nIGluc2FuZSBtZW1vcnkgdXNhZ2Ugd2l0aCB0aGUgdUJsb2NrIFNhZmFyaSBleHRl
bnNpb24KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MzA5MQogCi0gICAgICAgIFJldmlld2VkIGJ5IE1hcmsgTGFtLgorICAgICAgICAqIGJ1aWx0aW5z
L1N0cmluZ1Byb3RvdHlwZS5qczoKKyAgICAgICAgKHJlcGVhdENoYXJhY3RlcnNTbG93UGF0aCk6
CisgICAgICAgIChwYWRTdGFydCk6CisgICAgICAgIChwYWRFbmQpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpTdHJpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6cmVwZWF0U3RyaW5nUGF0dGVybik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnBhZFN0cmlu
Zyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1BhZEVuZCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1BhZFN0YXJ0KTogRGVsZXRlZC4KKwor
MjAxNi0wNC0yOCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFR3ZWFrIGF1dG8gYXR0YWNoIGluaXRpYWxpemF0aW9uIG9uIHNv
bWUgcGxhdGZvcm1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTcxNTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIxMjIyMDQ1PgogCiAgICAgICAg
IEknbSBpbnZlc3RpZ2F0aW5nIGEgcmVhbCBmaXggZm9yIHRoaXMgaW46CiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMwOTIKQEAgLTI4NzQxLDcgKzI4
NzkyLDcgQEAKIAogICAgICAgICBNaXNzaW5nIGluY2x1ZGUgZnJvbSBteSBwcmV2aW91cyBwYXRj
aC4KIAotICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorMjAxNi0wNC0yMCAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgKiBoZWFwL01hcmtlZEJs
b2NrLmg6CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNv
cmUueGNjb25maWcgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29u
ZmlnCmluZGV4IGQ1YmYyOTg1NmUwLi5jMDY4MjIyOWVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnCkBAIC03MSw3ICs3MSw3IEBAIE9USEVS
X0xERkxBR1NfQkFTRSA9IC1sc3FsaXRlMyAtbG9iamMgLWxBTkdMRTsKIE9USEVSX0xERkxBR1Nf
QkFTRV9pb3MgPSAkKE9USEVSX0xERkxBR1NfQkFTRSkgLWZyYW1ld29yayBDRk5ldHdvcmsgLWZy
YW1ld29yayBDb3JlR3JhcGhpY3MgLWZyYW1ld29yayBDb3JlVGV4dCAtZnJhbWV3b3JrIEZvdW5k
YXRpb24gLWZyYW1ld29yayBJbWFnZUlPIC1mcmFtZXdvcmsgTW9iaWxlQ29yZVNlcnZpY2VzIC1m
cmFtZXdvcmsgT3BlbkdMRVMgLWxNb2JpbGVHZXN0YWx0ICQoV0tfSU9TX0JJTkNPTVBBVF9MREZM
QUdTKTsKIE9USEVSX0xERkxBR1NfUExBVEZPUk1bc2RrPWlwaG9uZW9zKl0gPSAkKE9USEVSX0xE
RkxBR1NfQkFTRV9pb3MpIC1mcmFtZXdvcmsgSU9TdXJmYWNlIC1mcmFtZXdvcmsgR3JhcGhpY3NT
ZXJ2aWNlczsKIE9USEVSX0xERkxBR1NfUExBVEZPUk1bc2RrPWlwaG9uZXNpbXVsYXRvcipdID0g
JChPVEhFUl9MREZMQUdTX0JBU0VfaW9zKTsKLU9USEVSX0xERkxBR1NfUExBVEZPUk1bc2RrPW1h
Y29zeCpdID0gJChPVEhFUl9MREZMQUdTX0JBU0UpIC1zdWJfbGlicmFyeSBsaWJvYmpjIC11bWJy
ZWxsYSBXZWJLaXQgLWFsbG93YWJsZV9jbGllbnQgV2ViQ29yZVRlc3RTdXBwb3J0IC1hbGxvd2Fi
bGVfY2xpZW50IFdlYktpdDIgLWFsbG93YWJsZV9jbGllbnQgV2ViS2l0TGVnYWN5IC1mcmFtZXdv
cmsgQXBwbGljYXRpb25TZXJ2aWNlcyAtZnJhbWV3b3JrIEF1ZGlvVW5pdCAtZnJhbWV3b3JrIENh
cmJvbiAtZnJhbWV3b3JrIENvY29hIC1mcmFtZXdvcmsgQ29yZUF1ZGlvIC1mcmFtZXdvcmsgRGF0
YURldGVjdG9yc0NvcmUgLWZyYW1ld29yayBJT1N1cmZhY2UgLWZyYW1ld29yayBPcGVuR0wgLWZy
YW1ld29yayBTeXN0ZW1Db25maWd1cmF0aW9uOworT1RIRVJfTERGTEFHU19QTEFURk9STVtzZGs9
bWFjb3N4Kl0gPSAkKE9USEVSX0xERkxBR1NfQkFTRSkgLXN1Yl9saWJyYXJ5IGxpYm9iamMgLXVt
YnJlbGxhIFdlYktpdCAtYWxsb3dhYmxlX2NsaWVudCBXZWJDb3JlVGVzdFN1cHBvcnQgLWFsbG93
YWJsZV9jbGllbnQgV2ViS2l0MiAtYWxsb3dhYmxlX2NsaWVudCBXZWJLaXRMZWdhY3kgLWZyYW1l
d29yayBBcHBsaWNhdGlvblNlcnZpY2VzIC1mcmFtZXdvcmsgQXVkaW9Vbml0IC1mcmFtZXdvcmsg
Q2FyYm9uIC1mcmFtZXdvcmsgQ29jb2EgLWZyYW1ld29yayBDb3JlQXVkaW8gLWZyYW1ld29yayBE
YXRhRGV0ZWN0b3JzQ29yZSAtZnJhbWV3b3JrIElPU3VyZmFjZSAtZnJhbWV3b3JrIE9wZW5HTCAt
ZnJhbWV3b3JrIE1ldGFsIC1mcmFtZXdvcmsgU3lzdGVtQ29uZmlndXJhdGlvbjsKIAogU0VDVE9S
REVSX0ZMQUdTID0gJChTRUNUT1JERVJfRkxBR1NfJChDT05GSUdVUkFUSU9OKSk7CiBTRUNUT1JE
RVJfRkxBR1NfUHJvZHVjdGlvbltzZGs9aXBob25lb3MqXSA9IC1XbCwtb3JkZXJfZmlsZSwkKFNE
S1JPT1QpL0FwcGxlSW50ZXJuYWwvT3JkZXJGaWxlcy9XZWJDb3JlLm9yZGVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNzk3ZGU3OGY3YTQuLjIwZTgxOWI3OWViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTU0Nyw2ICs1NDcsMjUgQEAgSlNfQklORElOR19J
RExTID0gXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24u
aWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3Qu
aWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdQVUJ1ZmZlci5pZGwgXAor
ICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24uaWRsIFwKKyAgICAkKFdl
YkNvcmUpL2h0bWwvY2FudmFzL1dlYkdQVUxpYnJhcnkuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0
bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRRdWV1ZS5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9j
YW52YXMvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwgXAorCSQoV2ViQ29yZSkvaHRtbC9jYW52YXMv
V2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9j
YW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwv
Y2FudmFzL1dlYkdQVURyYXdhYmxlLmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9X
ZWJHUFVSZW5kZXJpbmdDb250ZXh0LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9X
ZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9jYW52
YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmlkbCBcCisg
ICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3IuaWRsIFwKKwkkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvci5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVy
UGlwZWxpbmVTdGF0ZS5pZGwgXAorCSQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwv
Y2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmlkbCBcCisJ
JChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwgXAor
ICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZS5pZGwgXAorICAgICQoV2Vi
Q29yZSkvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsIFwKICAgICAkKFdl
YkNvcmUpL2h0bWwvdHJhY2svQXVkaW9UcmFjay5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC90
cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9EYXRh
Q3VlLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZmMyNGZiMTA4YjAuLmQ4Yzg2MDNiYzdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yODQsOCArMjg0
LDggQEAKIAkJMDdCNzExNkYxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I3MTE2
QzFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1hbmFnZXIuaCAqLzsgfTsKIAkJMDdD
MDQ2QzMxRTQyNTA4QjAwNzIwMUU3IC8qIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCODc1NzFFNDBE
Q0ZEMDA3MUMwRUMgLyogQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmNwcCAqLzsgfTsKIAkJMDdD
MDQ2QzQxRTQyNTA4QjAwNzIwMUU3IC8qIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczQjg3NTgxRTQwRENG
RDAwNzFDMEVDIC8qIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTA3QzA0NkM3MUU0MjUxNTUwMDcyMDFF
NyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDMDQ2QzUxRTQyNTEyRjAwNzIwMUU3
IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAgKi87IH07Ci0JCTA3QzA0
NkM4MUU0MjUxNTUwMDcyMDFFNyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2Eu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzA0NkM2
MUU0MjUxMkYwMDcyMDFFNyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCAq
LzsgfTsKKwkJMDdDMDQ2QzcxRTQyNTE1NTAwNzIwMUU3IC8qIChudWxsKSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgfTsKKwkJMDdDMDQ2QzgxRTQyNTE1NTAwNzIwMUU3IC8q
IChudWxsKSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgfTsKIAkJMDdDMDQ2
Q0IxRTQyNjQxMzAwNzIwMUU3IC8qIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0I4NzU2MUU0MERDRTUwMDcx
QzBFQyAvKiBBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdDMUMwRTIxQkZCNjAwMTAwQkQyMjU2IC8qIE1l
ZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDMUMwRTAxQkZCNjAwMTAwQkQyMjU2IC8qIE1lZGlhVHJh
Y2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oICovOyB9OwogCQkwN0MxQzBFNTFCRkI2MEVEMDBCRDIy
NTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0MxQzBFNDFCRkI2MEVEMDBC
RDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzMjcsNiArMTMy
NywxNyBAQAogCQkzMTA3OENDQTE4ODBBQUNFMDA4MDk5REMgLyogSlNPRVNUZXh0dXJlSGFsZkZs
b2F0TGluZWFyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMTA3OENDNjE4ODBBQUFBMDA4MDk5REMgLyogSlNPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFy
LmggKi87IH07CiAJCTMxMEQ3MTk1MUIzMzVDOUQwMDlDN0I3MyAvKiBUaGVtZUNvY29hLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwRDcxOTMxQjMz
NUM5RDAwOUM3QjczIC8qIFRoZW1lQ29jb2EubW0gKi87IH07CiAJCTMxMEQ3MTk2MUIzMzVDOUUw
MDlDN0I3MyAvKiBUaGVtZUNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMTBENzE5NDFCMzM1QzlEMDA5QzdCNzMgLyogVGhlbWVDb2NvYS5oICov
OyB9OworCQkzMTE3REY3RDFDMTY0QzFEMDA0N0I0QkUgLyogV2ViR1BVRGVwdGhTdGVuY2lsRGVz
Y3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzExN0RGN0IxQzE2NEMwQTAwNDdCNEJFIC8qIFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3Iu
aCAqLzsgfTsKKwkJMzExN0RGN0UxQzE2NEMyMDAwNDdCNEJFIC8qIFdlYkdQVURlcHRoU3RlbmNp
bERlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzExN0RGN0ExQzE2NEMwQTAwNDdCNEJFIC8qIFdlYkdQVURlcHRoU3RlbmNpbERlc2Ny
aXB0b3IuY3BwICovOyB9OworCQkzMTE3REY4MTFDMTY0RDAwMDA0N0I0QkUgLyogTWV0YWxEZXB0
aFN0ZW5jaWxTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzExN0RGN0YxQzE2NENDRTAwNDdCNEJFIC8qIE1ldGFsRGVwdGhTdGVuY2lsU3RhdGUu
aCAqLzsgfTsKKwkJMzExN0RGODIxQzE2NEQwMzAwNDdCNEJFIC8qIE1ldGFsRGVwdGhTdGVuY2ls
U3RhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MTE3REY4MDFDMTY0Q0NFMDA0N0I0QkUgLyogTWV0YWxEZXB0aFN0ZW5jaWxTdGF0ZS5tbSAqLzsg
fTsKKwkJMzExN0RGODUxQzE2NEUxQTAwNDdCNEJFIC8qIE1ldGFsRGVwdGhTdGVuY2lsRGVzY3Jp
cHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEx
N0RGODMxQzE2NEUxMzAwNDdCNEJFIC8qIE1ldGFsRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oICov
OyB9OworCQkzMTE3REY4RTFDMTY1RkJEMDA0N0I0QkUgLyogV2ViR1BVRGVwdGhTdGVuY2lsU3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEx
N0RGODcxQzE2NTIwMDAwNDdCNEJFIC8qIFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcCAqLzsg
fTsKKwkJMzExN0RGOEYxQzE2NUZDMzAwNDdCNEJFIC8qIFdlYkdQVURlcHRoU3RlbmNpbFN0YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTE3REY4
ODFDMTY1MjAwMDA0N0I0QkUgLyogV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaCAqLzsgfTsKKwkJ
MzExN0RGOTAxQzE2NjAwNzAwNDdCNEJFIC8qIEpTV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTE3
REY4QTFDMTY1MkE5MDA0N0I0QkUgLyogSlNXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNw
cCAqLzsgfTsKKwkJMzExN0RGOTExQzE2NjAwRDAwNDdCNEJFIC8qIEpTV2ViR1BVRGVwdGhTdGVu
Y2lsRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzExN0RGOEIxQzE2NTJBOTAwNDdCNEJFIC8qIEpTV2ViR1BVRGVwdGhTdGVuY2lsRGVz
Y3JpcHRvci5oICovOyB9OworCQkzMTE3REY5MjFDMTY2MDBEMDA0N0I0QkUgLyogSlNXZWJHUFVE
ZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMTE3REY4QzFDMTY1MkE5MDA0N0I0QkUgLyogSlNXZWJHUFVEZXB0aFN0ZW5j
aWxTdGF0ZS5jcHAgKi87IH07CisJCTMxMTdERjkzMUMxNjYwMEQwMDQ3QjRCRSAvKiBKU1dlYkdQ
VURlcHRoU3RlbmNpbFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMTE3REY4RDFDMTY1MkE5MDA0N0I0QkUgLyogSlNXZWJHUFVEZXB0aFN0ZW5j
aWxTdGF0ZS5oICovOyB9OwogCQkzMTFDMDhCRDE4RUI3Q0FGMDBCNjU2MTUgLyogbWVkaWFDb250
cm9sc0FwcGxlLmNzcyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RDMURENDExN0NDMkM0ODAwOENCNTVEIC8qIG1lZGlhQ29udHJvbHNBcHBsZS5jc3Mg
Ki87IH07CiAJCTMxMUMwOEJFMThFQjdDQUYwMEI2NTYxNSAvKiBtZWRpYUNvbnRyb2xzQXBwbGUu
anMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTY1
NjBFMTdDQTZFNzYwMDUyNkJBNyAvKiBtZWRpYUNvbnRyb2xzQXBwbGUuanMgKi87IH07CiAJCTMx
MUMwOEJGMThFQjdDQUYwMEI2NTYxNSAvKiBtZWRpYUNvbnRyb2xzaU9TLmNzcyBpbiBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQUY0NUQxODY5MDk0RTAw
M0MxNzE3IC8qIG1lZGlhQ29udHJvbHNpT1MuY3NzICovOyB9OwpAQCAtMTM0MCw2ICsxMzUxLDEw
IEBACiAJCTMxMkMwQzQxMTQ2REM2Q0MwMDE2QzkxMSAvKiBOb3RpZmljYXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzM0Y3MDRGMEZCNDlDQTIw
MDhFMTJBNiAvKiBOb3RpZmljYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkzMTMxM0Y2NTE0NDNCMzVGMDA2RTJBOTAgLyogRmlsdGVyRWZm
ZWN0UmVuZGVyZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzEzMTNGNjMxNDQzQjM1RTAwNkUyQTkwIC8qIEZpbHRlckVmZmVjdFJlbmRlcmVyLmNw
cCAqLzsgfTsKIAkJMzEzMTNGNjYxNDQzQjM1RjAwNkUyQTkwIC8qIEZpbHRlckVmZmVjdFJlbmRl
cmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTMx
M0Y2NDE0NDNCMzVFMDA2RTJBOTAgLyogRmlsdGVyRWZmZWN0UmVuZGVyZXIuaCAqLzsgfTsKKwkJ
MzEzMkY4RTMxQzg1MzBBMTAwODNERkI0IC8qIFdlYkdQVUVudW1zLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMzJGOEUxMUM4NTMwQTEwMDgzREZC
NCAvKiBXZWJHUFVFbnVtcy5jcHAgKi87IH07CisJCTMxMzJGOEU0MUM4NTMwQTEwMDgzREZCNCAv
KiBXZWJHUFVFbnVtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzEzMkY4RTIxQzg1MzBBMTAwODNERkI0IC8qIFdlYkdQVUVudW1zLmggKi87IH07CisJ
CTMxM0U0RkE4MUQ2RTUxMEEwMDQ5QjQ4RSAvKiBNZXRhbERlcHRoU3RlbmNpbERlc2NyaXB0b3Iu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTE3REY4
NDFDMTY0RTEzMDA0N0I0QkUgLyogTWV0YWxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLm1tICovOyB9
OworCQkzMTNFNEZBOTFENkU1MTI2MDA0OUI0OEUgLyogTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVu
dERlc2NyaXB0b3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMUQ1MTM1RjFDODkxQjExMDBCN0JGNDAgLyogTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVu
dERlc2NyaXB0b3IubW0gKi87IH07CiAJCTMxNDAzNzlCMTI0QkVBN0YwMEFGNDBFNCAvKiBXZWJD
b3JlTW90aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzE0MDM3OTcxMjRCRUE3RjAwQUY0MEU0IC8qIFdlYkNvcmVNb3Rpb25NYW5hZ2Vy
LmggKi87IH07CiAJCTMxNDAzNzlDMTI0QkVBN0YwMEFGNDBFNCAvKiBXZWJDb3JlTW90aW9uTWFu
YWdlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
NDAzNzk4MTI0QkVBN0YwMEFGNDBFNCAvKiBXZWJDb3JlTW90aW9uTWFuYWdlci5tbSAqLzsgfTsK
IAkJMzE0MDM3OUQxMjRCRUE3RjAwQUY0MEU0IC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50SU9T
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTQwMzc5
OTEyNEJFQTdGMDBBRjQwRTQgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnRJT1MuaCAqLzsgfTsK
QEAgLTEzNjcsNiArMTM4MiwxNSBAQAogCQkzMTZGRTExOTBFNkUxREE3MDBCRjYwODggLyogS2V5
ZnJhbWVBbmltYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzE2RkUxMEYwRTZFMURBNzAwQkY2MDg4IC8qIEtleWZyYW1lQW5pbWF0aW9uLmNw
cCAqLzsgfTsKIAkJMzE2RkUxMUEwRTZFMURBNzAwQkY2MDg4IC8qIEtleWZyYW1lQW5pbWF0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZGRTEx
MDBFNkUxREE3MDBCRjYwODggLyogS2V5ZnJhbWVBbmltYXRpb24uaCAqLzsgfTsKIAkJMzE3NDFB
QUQxNjYzNjYwOTAwOEE1QjdFIC8qIFNpbXVsYXRlZENsaWNrT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE3NDFBQUIxNjYzNUU0NTAwOEE1
QjdFIC8qIFNpbXVsYXRlZENsaWNrT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTMxNzVCMDgzMUJFQzEyOUEwMDZFQTBBRCAvKiBXZWJH
UFVMYXllci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMxNzVCMDgxMUJFQzEyOUEwMDZFQTBBRCAvKiBXZWJHUFVMYXllci5tbSAqLzsgfTsKKwkJMzE3
NUIwODQxQkVDMTI5QjAwNkVBMEFEIC8qIFdlYkdQVUxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTc1QjA4MjFCRUMxMjlBMDA2RUEwQUQgLyog
V2ViR1BVTGF5ZXIuaCAqLzsgfTsKKwkJMzE3NUIwODcxQkVDMTU5RDAwNkVBMEFEIC8qIE1ldGFs
RGV2aWNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzE3NUIwODUxQkVDMTU5RDAwNkVBMEFEIC8qIE1ldGFsRGV2aWNlLm1tICovOyB9OworCQkzMTc1
QjA4ODFCRUMxNTlEMDA2RUEwQUQgLyogTWV0YWxEZXZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNzVCMDg2MUJFQzE1OUQwMDZFQTBBRCAvKiBN
ZXRhbERldmljZS5oICovOyB9OworCQkzMTc1QjA4RDFCRUQ1ODk2MDA2RUEwQUQgLyogV2ViR1BV
UmVuZGVyaW5nQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMTc1QjA4QjFCRUQ1ODk2MDA2RUEwQUQgLyogV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dC5jcHAgKi87IH07CisJCTMxNzVCMDhFMUJFRDU4OTYwMDZFQTBBRCAvKiBXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMTc1QjA4QzFCRUQ1ODk2MDA2RUEwQUQgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5o
ICovOyB9OworCQkzMTc1QjA5MTFCRUQ5MUI5MDA2RUEwQUQgLyogSlNXZWJHUFVSZW5kZXJpbmdD
b250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMxNzVCMDhGMUJFRDkxQjkwMDZFQTBBRCAvKiBKU1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3Bw
ICovOyB9OworCQkzMTc1QjA5MjFCRUQ5MUI5MDA2RUEwQUQgLyogSlNXZWJHUFVSZW5kZXJpbmdD
b250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MTc1QjA5MDFCRUQ5MUI5MDA2RUEwQUQgLyogSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmggKi87
IH07CisJCTMxNzVCMDk0MUJGMTBCNDQwMDZFQTBBRCAvKiBKU1dlYkdQVVJlbmRlcmluZ0NvbnRl
eHRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzE3NUIwOTMxQkYxMEI0NDAwNkVBMEFEIC8qIEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHAgKi87IH07CiAJCTMxODg5MTYxMUFCN0VFQTEwMEVBNjI3QiAvKiBtaXNzaW5nSW1h
Z2VAM3gucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREY0MTk5OTFBQjBEQTE0MDA0RTY0RTEgLyogbWlzc2luZ0ltYWdlQDN4LnBuZyAqLzsgfTsK
IAkJMzE5NTVBODYxNjBEMTk5MDAwODU4MDI1IC8qIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRThEOEJB
MTYwQkM5NEIwMDRDRThGNSAvKiBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAgKi87IH07CiAJ
CTMxOTU1QTg4MTYwRDE5OTIwMDg1ODAyNSAvKiBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFFOEQ4QkIxNjBC
Qzk0QzAwNENFOEY1IC8qIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzODQsNiArMTQwOCwxMiBAQAog
CQkzMUIzMTNEQjFCNjk4NzE2MDBGMkFBQkMgLyogTlNVUkxDb25uZWN0aW9uU1BJLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUIzMTNEQTFCNjk4NzE2
MDBGMkFBQkMgLyogTlNVUkxDb25uZWN0aW9uU1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzFCMzEzREQxQjY5ODdEQjAwRjJBQUJDIC8qIE5T
VVJMUmVxdWVzdFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzFCMzEzREMxQjY5ODdEQjAwRjJBQUJDIC8qIE5TVVJMUmVxdWVzdFNQSS5oICovOyB9
OwogCQkzMUIzMTNERjFCNjk4OEM1MDBGMkFBQkMgLyogTlNCdXR0b25DZWxsU1BJLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUIzMTNERTFCNjk4OEM1
MDBGMkFBQkMgLyogTlNCdXR0b25DZWxsU1BJLmggKi87IH07CisJCTMxQjVBRUU4MUJGQTgzQzIw
MEIzNERERiAvKiBXZWJHUFVMaWJyYXJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxQjVBRUU2MUJGQTgzQzIwMEIzNERERiAvKiBXZWJHUFVMaWJy
YXJ5LmNwcCAqLzsgfTsKKwkJMzFCNUFFRTkxQkZBODNDMjAwQjM0RERGIC8qIFdlYkdQVUxpYnJh
cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQjVB
RUU3MUJGQTgzQzIwMEIzNERERiAvKiBXZWJHUFVMaWJyYXJ5LmggKi87IH07CisJCTMxQjVBRUVD
MUJGQTg2ODcwMEIzNERERiAvKiBXZWJHUFVPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFCNUFFRUExQkZBODY4NzAwQjM0RERGIC8qIFdl
YkdQVU9iamVjdC5jcHAgKi87IH07CisJCTMxQjVBRUVEMUJGQTg2ODcwMEIzNERERiAvKiBXZWJH
UFVPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMxQjVBRUVCMUJGQTg2ODcwMEIzNERERiAvKiBXZWJHUFVPYmplY3QuaCAqLzsgfTsKKwkJMzFC
NUFFRjAxQkZBQUM1RDAwQjM0RERGIC8qIEpTV2ViR1BVTGlicmFyeS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUI1QUVFRTFCRkFBQzVEMDBCMzRE
REYgLyogSlNXZWJHUFVMaWJyYXJ5LmNwcCAqLzsgfTsKKwkJMzFCNUFFRjExQkZBQUM1RDAwQjM0
RERGIC8qIEpTV2ViR1BVTGlicmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzFCNUFFRUYxQkZBQUM1RDAwQjM0RERGIC8qIEpTV2ViR1BVTGlicmFy
eS5oICovOyB9OwogCQkzMUJDNzQyRDFBQUZGNDVDMDA2QjQzNDAgLyogQ1NTQW5pbWF0aW9uVHJp
Z2dlclNjcm9sbFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxQkM3NDJCMUFBRkY0NUMwMDZCNDM0MCAvKiBDU1NBbmltYXRpb25UcmlnZ2Vy
U2Nyb2xsVmFsdWUuY3BwICovOyB9OwogCQkzMUJDNzQyRTFBQUZGNDVDMDA2QjQzNDAgLyogQ1NT
QW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMUJDNzQyQzFBQUZGNDVDMDA2QjQzNDAgLyogQ1NTQW5pbWF0
aW9uVHJpZ2dlclNjcm9sbFZhbHVlLmggKi87IH07CiAJCTMxQzBGRjIxMEU0Q0VCNkUwMDdENkZF
NSAvKiBXZWJLaXRBbmltYXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMUMwRkYxQjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5p
bWF0aW9uRXZlbnQuY3BwICovOyB9OwpAQCAtMTM5NCw2ICsxNDI0LDIzIEBACiAJCTMxQzBGRjNF
MEU0Q0VGQUMwMDdENkZFNSAvKiBKU1dlYktpdEFuaW1hdGlvbkV2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUMwRkYzQTBFNENFRkFDMDA3RDZG
RTUgLyogSlNXZWJLaXRBbmltYXRpb25FdmVudC5oICovOyB9OwogCQkzMUMwRkYzRjBFNENFRkFD
MDA3RDZGRTUgLyogSlNXZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFDMEZGM0IwRTRDRUZBQzAwN0Q2RkU1IC8q
IEpTV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcCAqLzsgfTsKIAkJMzFDMEZGNDAwRTRDRUZBQzAw
N0Q2RkU1IC8qIEpTV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUMwRkYzQzBFNENFRkFDMDA3RDZGRTUgLyogSlNX
ZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCAqLzsgfTsKKwkJMzFDNjM0MDAxQzk2MThBMjAwODI3MzJB
IC8qIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQzYzM0ZFMUM5NjExQzQwMDgyNzMyQSAvKiBXZWJHUFVU
ZXh0dXJlRGVzY3JpcHRvci5jcHAgKi87IH07CisJCTMxQzYzNDAxMUM5NjE4QjUwMDgyNzMyQSAv
KiBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzFDNjMzRkYxQzk2MTFDNDAwODI3MzJBIC8qIFdlYkdQVVRleHR1
cmVEZXNjcmlwdG9yLmggKi87IH07CisJCTMxQzYzNDA0MUM5NjFCMjYwMDgyNzMyQSAvKiBNZXRh
bFRleHR1cmVEZXNjcmlwdG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzFDNjM0MDMxQzk2MTlBRTAwODI3MzJBIC8qIE1ldGFsVGV4dHVyZURlc2Ny
aXB0b3IubW0gKi87IH07CisJCTMxQzYzNDA1MUM5NjFCMkEwMDgyNzMyQSAvKiBNZXRhbFRleHR1
cmVEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMUM2MzQwMjFDOTYxOUFFMDA4MjczMkEgLyogTWV0YWxUZXh0dXJlRGVzY3JpcHRvci5o
ICovOyB9OworCQkzMUM2MzQwODFDOTYxRDM4MDA4MjczMkEgLyogSlNXZWJHUFVUZXh0dXJlRGVz
Y3JpcHRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMUM2MzQwNjFDOTYxRDAxMDA4MjczMkEgLyogSlNXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5j
cHAgKi87IH07CisJCTMxQzYzNDA5MUM5NjFENDAwMDgyNzMyQSAvKiBKU1dlYkdQVVRleHR1cmVE
ZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMUM2MzQwNzFDOTYxRDAxMDA4MjczMkEgLyogSlNXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5o
ICovOyB9OworCQkzMUQ1MTM1RDFDODkwREI1MDBCN0JGNDAgLyogV2ViR1BVUmVuZGVyUGFzc0F0
dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMxRDUxMzVCMUM4OTBEQjQwMEI3QkY0MCAvKiBXZWJHUFVSZW5kZXJQYXNz
QXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovOyB9OworCQkzMUQ1MTM1RTFDODkwREI1MDBCN0JG
NDAgLyogV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUQ1MTM1QzFDODkwREI1MDBCN0JG
NDAgLyogV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmggKi87IH07CisJCTMx
RDUxMzY0MUM4QTE3ODkwMEI3QkY0MCAvKiBKU1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMUQ1MTM2MjFDOEExNzg5MDBCN0JGNDAgLyogSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVu
dERlc2NyaXB0b3IuY3BwICovOyB9OworCQkzMUQ1MTM2NTFDOEExNzg5MDBCN0JGNDAgLyogSlNX
ZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRDUxMzYzMUM4QTE3ODkwMEI3QkY0MCAvKiBK
U1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oICovOyB9OworCQkzMUQ1MTM2
NzFDOEE1NTczMDBCN0JGNDAgLyogSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0
b3JDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzFENTEzNjYxQzhBNTU3MzAwQjdCRjQwIC8qIEpTV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yQ3VzdG9tLmNwcCAqLzsgfTsKKwkJMzFENTEzNkIxQzhBNjMzMTAwQjdCRjQw
IC8qIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRDUxMzY4MUM4QTYzMzEw
MEI3QkY0MCAvKiBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAg
Ki87IH07CisJCTMxRDUxMzZDMUM4QTYzMzEwMEI3QkY0MCAvKiBXZWJHUFVSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzFENTEzNjkxQzhBNjMzMTAwQjdCRjQwIC8qIFdlYkdQVVJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi87IH07CisJCTMxRDUxMzcwMUM4QTY0MEMw
MEI3QkY0MCAvKiBNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUQ1MTM2RTFDOEE2
NDBDMDBCN0JGNDAgLyogTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5o
ICovOyB9OworCQkzMUQ1MTM3MTFDOEE2NDBDMDBCN0JGNDAgLyogTWV0YWxSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMxRDUxMzZGMUM4QTY0MEMwMEI3QkY0MCAvKiBNZXRhbFJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLm1tICovOyB9OworCQkzMUQ1MTM3NjFDOEE2RjU3
MDBCN0JGNDAgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUQ1MTM3
NDFDOEE2RjU3MDBCN0JGNDAgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvci5jcHAgKi87IH07CisJCTMxRDUxMzc3MUM4QTZGNTcwMEI3QkY0MCAvKiBKU1dlYkdQ
VVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUQ1MTM3NTFDOEE2RjU3MDBCN0JGNDAgLyog
SlNXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oICovOyB9OwogCQkz
MUQ1OTFCMzE2Njk3QTZDMDBFNkJGMDIgLyogUGx1Z0luQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUQ1OTFCMTE2Njk3QTZDMDBFNkJGMDIg
LyogUGx1Z0luQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMzFEQ0QyOUQxQUI0RkJERTAwNzJFODE3IC8qIEFuaW1hdGlvblRyaWdnZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRENEMjlD
MUFCNEZCREUwMDcyRTgxNyAvKiBBbmltYXRpb25UcmlnZ2VyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzFEQ0RGNDMxREExQzQ1NDAwRUE1Qjkz
IC8qIEV4dGVuZGVkQ29sb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzFEQ0RGNDExREExQzQ1NDAwRUE1QjkzIC8qIEV4dGVuZGVkQ29sb3IuY3Bw
ICovOyB9OwpAQCAtMTQwMSw2ICsxNDQ4LDgwIEBACiAJCTMxREVBNDU1MUIzOUY0RDkwMEY3NzE3
OCAvKiBXZWJTeXN0ZW1CYWNrZHJvcExheWVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzFERUE0NTMxQjM5RjREOTAwRjc3MTc4IC8qIFdlYlN5c3Rl
bUJhY2tkcm9wTGF5ZXIubW0gKi87IH07CiAJCTMxREVBNDU2MUIzOUY0RDkwMEY3NzE3OCAvKiBX
ZWJTeXN0ZW1CYWNrZHJvcExheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMURFQTQ1NDFCMzlGNEQ5MDBGNzcxNzggLyogV2ViU3lzdGVtQmFja2Ry
b3BMYXllci5oICovOyB9OwogCQkzMURGNjM1NzFBRjE4N0REMDA3OEZEOTEgLyogTlNDb2xvclNQ
SS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFERjYz
NTYxQUYxODdERDAwNzhGRDkxIC8qIE5TQ29sb3JTUEkuaCAqLzsgfTsKKwkJMzFFODJFMjgxQkZC
RUI3MDAwQ0VFODAxIC8qIE1ldGFsTGlicmFyeS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRTgyRTI2MUJGQkVCNzAwMENFRTgwMSAvKiBNZXRhbExp
YnJhcnkubW0gKi87IH07CisJCTMxRTgyRTI5MUJGQkVCNzAwMENFRTgwMSAvKiBNZXRhbExpYnJh
cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRTgy
RTI3MUJGQkVCNzAwMENFRTgwMSAvKiBNZXRhbExpYnJhcnkuaCAqLzsgfTsKKwkJMzFFODJFMkQx
QkZEM0Y5MzAwQ0VFODAxIC8qIFdlYkdQVUZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRTgyRTJCMUJGRDNGOTIwMENFRTgwMSAvKiBX
ZWJHUFVGdW5jdGlvbi5jcHAgKi87IH07CisJCTMxRTgyRTJFMUJGRDNGOTMwMENFRTgwMSAvKiBX
ZWJHUFVGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzFFODJFMkMxQkZEM0Y5MjAwQ0VFODAxIC8qIFdlYkdQVUZ1bmN0aW9uLmggKi87IH07
CisJCTMxRTgyRTMxMUJGRDQwRUEwMENFRTgwMSAvKiBNZXRhbEZ1bmN0aW9uLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFFODJFMkYxQkZENDBFQTAw
Q0VFODAxIC8qIE1ldGFsRnVuY3Rpb24ubW0gKi87IH07CisJCTMxRTgyRTMyMUJGRDQwRUEwMENF
RTgwMSAvKiBNZXRhbEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMUU4MkUzMDFCRkQ0MEVBMDBDRUU4MDEgLyogTWV0YWxGdW5jdGlvbi5o
ICovOyB9OworCQkzMUU4MkUzOTFCRkQ0RkREMDBDRUU4MDEgLyogSlNXZWJHUFVGdW5jdGlvbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUU4MkUz
NzFCRkQ0RkREMDBDRUU4MDEgLyogSlNXZWJHUFVGdW5jdGlvbi5jcHAgKi87IH07CisJCTMxRTgy
RTNBMUJGRDRGREQwMENFRTgwMSAvKiBKU1dlYkdQVUZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUU4MkUzODFCRkQ0RkREMDBDRUU4MDEg
LyogSlNXZWJHUFVGdW5jdGlvbi5oICovOyB9OworCQkzMUU4MkU2MzFDMDRGNTc1MDBDRUU4MDEg
LyogV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRTgyRTYxMUMwNEY1NzQwMENFRTgwMSAvKiBX
ZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwICovOyB9OworCQkzMUU4MkU2NDFDMDRG
NTc1MDBDRUU4MDEgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUU4MkU2MjFDMDRGNTc0MDBD
RUU4MDEgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi87IH07CisJCTMxRTgy
RTY3MUMwNEZBQUYwMENFRTgwMSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUU4MkU2
NTFDMDRGQUFGMDBDRUU4MDEgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3Bw
ICovOyB9OworCQkzMUU4MkU2ODFDMDRGQUFGMDBDRUU4MDEgLyogSlNXZWJHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxRTgyRTY2MUMwNEZBQUYwMENFRTgwMSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvci5oICovOyB9OworCQkzMUU4MkU2QjFDMDUwRjFCMDBDRUU4MDEgLyogTWV0YWxS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzMUU4MkU2OTFDMDUwRjFCMDBDRUU4MDEgLyogTWV0YWxSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IubW0gKi87IH07CisJCTMxRTgyRTZDMUMwNTBGMUIwMENFRTgwMSAv
KiBNZXRhbFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFFODJFNkExQzA1MEYxQjAwQ0VFODAxIC8qIE1ldGFs
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi87IH07CisJCTMxRTgyRTcwMUMwNTMwQzgwMENF
RTgwMSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFFODJFNkUx
QzA1MzBDODAwQ0VFODAxIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvci5jcHAgKi87IH07CisJCTMxRTgyRTcxMUMwNTMwQzkwMENFRTgwMSAvKiBXZWJHUFVS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRTgyRTZGMUMwNTMwQzgwMENFRTgwMSAv
KiBXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLzsgfTsK
KwkJMzFFODJFNzQxQzA1MzU4MjAwQ0VFODAxIC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMxRTgyRTcyMUMwNTM1ODIwMENFRTgwMSAvKiBKU1dlYkdQVVJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi87IH07CisJCTMxRTgyRTc1
MUMwNTM1ODIwMENFRTgwMSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzFFODJFNzMxQzA1MzU4MjAwQ0VFODAxIC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi87IH07CisJCTMxRTgyRTc4MUMwNTNEQjEwMENFRTgw
MSAvKiBNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRTgyRTc2MUMwNTNE
QjEwMENFRTgwMSAvKiBNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ci5tbSAqLzsgfTsKKwkJMzFFODJFNzkxQzA1M0RCMjAwQ0VFODAxIC8qIE1ldGFsUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUU4MkU3NzFDMDUzREIxMDBDRUU4MDEgLyogTWV0YWxS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLzsgfTsKKwkJMzFFODJF
N0QxQzA2NDY4QjAwQ0VFODAxIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFFODJFN0IxQzA2NDY4
QjAwQ0VFODAxIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwICovOyB9OworCQkzMUU4
MkU3RTFDMDY0NjhDMDBDRUU4MDEgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFFODJFN0MxQzA2NDY4
QjAwQ0VFODAxIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaCAqLzsgfTsKKwkJMzFFODJF
ODExQzA2NDdFOTAwQ0VFODAxIC8qIE1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRTgyRTdGMUMwNjQ3RTkw
MENFRTgwMSAvKiBNZXRhbFJlbmRlclBpcGVsaW5lU3RhdGUubW0gKi87IH07CisJCTMxRTgyRTgy
MUMwNjQ3RTkwMENFRTgwMSAvKiBNZXRhbFJlbmRlclBpcGVsaW5lU3RhdGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRTgyRTgwMUMwNjQ3RTkwMENF
RTgwMSAvKiBNZXRhbFJlbmRlclBpcGVsaW5lU3RhdGUuaCAqLzsgfTsKKwkJMzFFODJFODUxQzA2
NEMwMzAwQ0VFODAxIC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUU4MkU4MzFDMDY0QzAzMDBD
RUU4MDEgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcCAqLzsgfTsKKwkJMzFFODJF
ODYxQzA2NEMwMzAwQ0VFODAxIC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFFODJFODQxQzA2NEMw
MzAwQ0VFODAxIC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oICovOyB9OworCQkzMUU4
MkU4OTFDMDY2OUU4MDBDRUU4MDEgLyogV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFFODJFODcxQzA2
NjlFODAwQ0VFODAxIC8qIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcCAqLzsgfTsKKwkJ
MzFFODJFOEExQzA2NjlFODAwQ0VFODAxIC8qIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUU4MkU4ODFD
MDY2OUU4MDBDRUU4MDEgLyogV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLzsgfTsKKwkJ
MzFFODJFOEQxQzA2NjlGRTAwQ0VFODAxIC8qIE1ldGFsUmVuZGVyUGFzc0Rlc2NyaXB0b3IubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUU4MkU4QjFD
MDY2OUZFMDBDRUU4MDEgLyogTWV0YWxSZW5kZXJQYXNzRGVzY3JpcHRvci5tbSAqLzsgfTsKKwkJ
MzFFODJFOEUxQzA2NjlGRTAwQ0VFODAxIC8qIE1ldGFsUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRTgyRThDMUMw
NjY5RkUwMENFRTgwMSAvKiBNZXRhbFJlbmRlclBhc3NEZXNjcmlwdG9yLmggKi87IH07CisJCTMx
RTgyRTk0MUMwNjZDQjgwMENFRTgwMSAvKiBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMUU4MkU5MjFDMDY2Q0I4MDBDRUU4MDEgLyogV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IuY3BwICovOyB9OworCQkzMUU4MkU5NTFDMDY2Q0I4MDBDRUU4MDEg
LyogV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRTgyRTkzMUMwNjZDQjgwMENF
RTgwMSAvKiBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oICovOyB9
OworCQkzMUU4MkU5ODFDMDY3MDFFMDBDRUU4MDEgLyogTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxRTgyRTk2MUMwNjcwMUUwMENFRTgwMSAvKiBNZXRhbFJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yLm1tICovOyB9OworCQkzMUU4MkU5OTFDMDY3MDFFMDBDRUU4
MDEgLyogTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFFODJFOTcxQzA2NzAxRTAw
Q0VFODAxIC8qIE1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLzsg
fTsKKwkJMzFFODJFOUUxQzA2NzVFMzAwQ0VFODAxIC8qIEpTV2ViR1BVUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzFFODJFOUExQzA2NzVFMzAwQ0VFODAxIC8qIEpTV2ViR1BVUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovOyB9OworCQkzMUU4MkU5RjFDMDY3
NUUzMDBDRUU4MDEgLyogSlNXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFFODJF
OUIxQzA2NzVFMzAwQ0VFODAxIC8qIEpTV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IuaCAqLzsgfTsKKwkJMzFFODJFQTAxQzA2NzVFMzAwQ0VFODAxIC8qIEpTV2ViR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzFFODJFOUMxQzA2NzVFMzAwQ0VFODAxIC8qIEpTV2ViR1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3IuY3BwICovOyB9OworCQkzMUU4MkVBMTFDMDY3NUUzMDBDRUU4MDEgLyog
SlNXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzFFODJFOUQxQzA2NzVFMzAwQ0VFODAxIC8qIEpTV2ViR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLzsgfTsKKwkJMzFFODJFQTQxQzA3QjVBODAwQ0VFODAx
IC8qIFdlYkdQVVRleHR1cmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzFFODJFQTIxQzA3QjVBNzAwQ0VFODAxIC8qIFdlYkdQVVRleHR1cmUuY3Bw
ICovOyB9OworCQkzMUU4MkVBNTFDMDdCNUE4MDBDRUU4MDEgLyogV2ViR1BVVGV4dHVyZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFFODJFQTMxQzA3
QjVBODAwQ0VFODAxIC8qIFdlYkdQVVRleHR1cmUuaCAqLzsgfTsKKwkJMzFFODJFQTkxQzA3QjhC
NzAwQ0VFODAxIC8qIEpTV2ViR1BVVGV4dHVyZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUU4MkVBNzFDMDdCOEI3MDBDRUU4MDEgLyogSlNXZWJH
UFVUZXh0dXJlLmNwcCAqLzsgfTsKKwkJMzFFODJFQUExQzA3QjhCNzAwQ0VFODAxIC8qIEpTV2Vi
R1BVVGV4dHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzFFODJFQTgxQzA3QjhCNzAwQ0VFODAxIC8qIEpTV2ViR1BVVGV4dHVyZS5oICovOyB9Owor
CQkzMUU4MkVBRDFDMDdCQTY2MDBDRUU4MDEgLyogTWV0YWxUZXh0dXJlLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFFODJFQUIxQzA3QkE2NjAwQ0VF
ODAxIC8qIE1ldGFsVGV4dHVyZS5tbSAqLzsgfTsKKwkJMzFFODJFQUUxQzA3QkE2NjAwQ0VFODAx
IC8qIE1ldGFsVGV4dHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzFFODJFQUMxQzA3QkE2NjAwQ0VFODAxIC8qIE1ldGFsVGV4dHVyZS5oICovOyB9
OworCQkzMUU4MkVCMTFDMDdEOENDMDBDRUU4MDEgLyogTWV0YWxDb21tYW5kUXVldWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRTgyRUFGMUMwN0Q4
Q0IwMENFRTgwMSAvKiBNZXRhbENvbW1hbmRRdWV1ZS5oICovOyB9OworCQkzMUU4MkVCMjFDMDdE
OENDMDBDRUU4MDEgLyogTWV0YWxDb21tYW5kUXVldWUubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUU4MkVCMDFDMDdEOENCMDBDRUU4MDEgLyogTWV0
YWxDb21tYW5kUXVldWUubW0gKi87IH07CisJCTMxRTgyRUI2MUMwN0Q4RTcwMENFRTgwMSAvKiBX
ZWJHUFVDb21tYW5kUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzFFODJFQjMxQzA3RDhFNzAwQ0VFODAxIC8qIFdlYkdQVUNvbW1hbmRRdWV1
ZS5jcHAgKi87IH07CisJCTMxRTgyRUI3MUMwN0Q4RTcwMENFRTgwMSAvKiBXZWJHUFVDb21tYW5k
UXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
RTgyRUI0MUMwN0Q4RTcwMENFRTgwMSAvKiBXZWJHUFVDb21tYW5kUXVldWUuaCAqLzsgfTsKKwkJ
MzFFODJFQkIxQzA3REQyNzAwQ0VFODAxIC8qIEpTV2ViR1BVQ29tbWFuZFF1ZXVlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRTgyRUI5MUMwN0RE
MjcwMENFRTgwMSAvKiBKU1dlYkdQVUNvbW1hbmRRdWV1ZS5jcHAgKi87IH07CisJCTMxRTgyRUJD
MUMwN0REMjcwMENFRTgwMSAvKiBKU1dlYkdQVUNvbW1hbmRRdWV1ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFFODJFQkExQzA3REQyNzAwQ0VFODAx
IC8qIEpTV2ViR1BVQ29tbWFuZFF1ZXVlLmggKi87IH07CisJCTMxRTgyRUMwMUMwOTBFRTgwMENF
RTgwMSAvKiBXZWJHUFVDb21tYW5kQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRTgyRUJEMUMwOTBFRTgwMENFRTgwMSAvKiBXZWJHUFVD
b21tYW5kQnVmZmVyLmNwcCAqLzsgfTsKKwkJMzFFODJFQzExQzA5MEVFODAwQ0VFODAxIC8qIFdl
YkdQVUNvbW1hbmRCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxRTgyRUJFMUMwOTBFRTgwMENFRTgwMSAvKiBXZWJHUFVDb21tYW5kQnVmZmVy
LmggKi87IH07CisJCTMxRTgyRUM1MUMwOTBGMEYwMENFRTgwMSAvKiBNZXRhbENvbW1hbmRCdWZm
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRTgy
RUMzMUMwOTBGMEYwMENFRTgwMSAvKiBNZXRhbENvbW1hbmRCdWZmZXIuaCAqLzsgfTsKKwkJMzFF
ODJFQzYxQzA5MEYwRjAwQ0VFODAxIC8qIE1ldGFsQ29tbWFuZEJ1ZmZlci5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRTgyRUM0MUMwOTBGMEYwMENF
RTgwMSAvKiBNZXRhbENvbW1hbmRCdWZmZXIubW0gKi87IH07CisJCTMxRTgyRUM5MUMwOTE2NTEw
MENFRTgwMSAvKiBKU1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFFODJFQzcxQzA5MTY1MTAwQ0VFODAxIC8qIEpT
V2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgKi87IH07CisJCTMxRTgyRUNBMUMwOTE2NTEwMENFRTgw
MSAvKiBKU1dlYkdQVUNvbW1hbmRCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxRTgyRUM4MUMwOTE2NTEwMENFRTgwMSAvKiBKU1dlYkdQVUNv
bW1hbmRCdWZmZXIuaCAqLzsgfTsKKwkJMzFFODJFQ0UxQzA5MjYyMjAwQ0VFODAxIC8qIFdlYkdQ
VVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMxRTgyRUNCMUMwOTI2MjIwMENFRTgwMSAvKiBXZWJHUFVSZW5kZXJD
b21tYW5kRW5jb2Rlci5jcHAgKi87IH07CisJCTMxRTgyRUNGMUMwOTI2MjIwMENFRTgwMSAvKiBX
ZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzFFODJFQ0MxQzA5MjYyMjAwQ0VFODAxIC8qIFdlYkdQVVJlbmRl
ckNvbW1hbmRFbmNvZGVyLmggKi87IH07CisJCTMxRTgyRUQzMUMwOTJCNUQwMENFRTgwMSAvKiBK
U1dlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRTgyRUQxMUMwOTJCNUQwMENFRTgwMSAvKiBKU1dlYkdQ
VVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcCAqLzsgfTsKKwkJMzFFODJFRDQxQzA5MkI1RDAwQ0VF
ODAxIC8qIEpTV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRTgyRUQyMUMwOTJCNUQwMENFRTgwMSAvKiBK
U1dlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmggKi87IH07CisJCTMxRTgyRUQ3MUMwOTMxM0Uw
MENFRTgwMSAvKiBNZXRhbFJlbmRlckNvbW1hbmRFbmNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUU4MkVENTFDMDkzMTNFMDBDRUU4MDEgLyog
TWV0YWxSZW5kZXJDb21tYW5kRW5jb2Rlci5oICovOyB9OworCQkzMUU4MkVEODFDMDkzMTNFMDBD
RUU4MDEgLyogTWV0YWxSZW5kZXJDb21tYW5kRW5jb2Rlci5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRTgyRUQ2MUMwOTMxM0UwMENFRTgwMSAvKiBN
ZXRhbFJlbmRlckNvbW1hbmRFbmNvZGVyLm1tICovOyB9OworCQkzMUU4MkVEQzFDMEQwNEYwMDBD
RUU4MDEgLyogV2ViR1BVRHJhd2FibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzFFODJFRDkxQzBEMDRGMDAwQ0VFODAxIC8qIFdlYkdQVURyYXdh
YmxlLmNwcCAqLzsgfTsKKwkJMzFFODJFREQxQzBEMDRGMDAwQ0VFODAxIC8qIFdlYkdQVURyYXdh
YmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUU4
MkVEQTFDMEQwNEYwMDBDRUU4MDEgLyogV2ViR1BVRHJhd2FibGUuaCAqLzsgfTsKKwkJMzFFODJF
RTExQzBEMEUwODAwQ0VFODAxIC8qIE1ldGFsRHJhd2FibGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRTgyRURGMUMwRDBFMDgwMENFRTgwMSAvKiBN
ZXRhbERyYXdhYmxlLmggKi87IH07CisJCTMxRTgyRUUyMUMwRDBFMDgwMENFRTgwMSAvKiBNZXRh
bERyYXdhYmxlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzFFODJFRTAxQzBEMEUwODAwQ0VFODAxIC8qIE1ldGFsRHJhd2FibGUubW0gKi87IH07CisJ
CTMxRTgyRUU0MUMwRDI0MDAwMENFRTgwMSAvKiBKU1dlYkdQVURyYXdhYmxlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRTgyRUUzMUMwRDI0MDAw
MENFRTgwMSAvKiBKU1dlYkdQVURyYXdhYmxlLmNwcCAqLzsgfTsKKwkJMzFFODJFRTYxQzBEMjQy
MjAwQ0VFODAxIC8qIEpTV2ViR1BVRHJhd2FibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRTgyRUU1MUMwRDI0MjIwMENFRTgwMSAvKiBKU1dlYkdQ
VURyYXdhYmxlLmggKi87IH07CisJCTMxRTgyRUVBMUMwRjc5MEYwMENFRTgwMSAvKiBXZWJHUFVC
dWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzFFODJFRTcxQzBGNzkwRTAwQ0VFODAxIC8qIFdlYkdQVUJ1ZmZlci5jcHAgKi87IH07CisJCTMx
RTgyRUVCMUMwRjc5MEYwMENFRTgwMSAvKiBXZWJHUFVCdWZmZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRTgyRUU4MUMwRjc5MEYwMENFRTgwMSAv
KiBXZWJHUFVCdWZmZXIuaCAqLzsgfTsKKwkJMzFFODJFRUYxQzBGNzkzMzAwQ0VFODAxIC8qIE1l
dGFsQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMUU4MkVFRDFDMEY3OTMzMDBDRUU4MDEgLyogTWV0YWxCdWZmZXIuaCAqLzsgfTsKKwkJMzFF
ODJFRjAxQzBGNzkzMzAwQ0VFODAxIC8qIE1ldGFsQnVmZmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFFODJFRUUxQzBGNzkzMzAwQ0VFODAxIC8q
IE1ldGFsQnVmZmVyLm1tICovOyB9OworCQkzMUU4MkVGMzFDMEY4MEY4MDBDRUU4MDEgLyogSlNX
ZWJHUFVCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzFFODJFRjExQzBGODBGODAwQ0VFODAxIC8qIEpTV2ViR1BVQnVmZmVyLmNwcCAqLzsg
fTsKKwkJMzFFODJFRjQxQzBGODBGODAwQ0VFODAxIC8qIEpTV2ViR1BVQnVmZmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUU4MkVGMjFDMEY4MEY4
MDBDRUU4MDEgLyogSlNXZWJHUFVCdWZmZXIuaCAqLzsgfTsKIAkJMzFFQUY5N0UxMjE0MzVBNDAw
RTdDMUJGIC8qIERldmljZU1vdGlvbkNsaWVudElPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFFQUY5N0MxMjE0MzVBNDAwRTdDMUJGIC8qIERldmlj
ZU1vdGlvbkNsaWVudElPUy5oICovOyB9OwogCQkzMUVBRjk3RjEyMTQzNUE0MDBFN0MxQkYgLyog
RGV2aWNlTW90aW9uQ2xpZW50SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzFFQUY5N0QxMjE0MzVBNDAwRTdDMUJGIC8qIERldmljZU1vdGlvbkNs
aWVudElPUy5tbSAqLzsgfTsKIAkJMzFFQzFFMjgxNEZGNjBFRTAwQzk0NjYyIC8qIEpTTm90aWZp
Y2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxRUMxRTI2MTRGRjYwRUUwMEM5NDY2MiAvKiBKU05vdGlmaWNh
dGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAgKi87IH07CkBAIC04NTUyLDYgKzg2NzMsMjAgQEAK
IAkJMzEwNzhDQzYxODgwQUFBQTAwODA5OURDIC8qIEpTT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVh
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU09FU1RleHR1cmVIYWxmRmxv
YXRMaW5lYXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEwRDcxOTMxQjMzNUM5
RDAwOUM3QjczIC8qIFRoZW1lQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBUaGVtZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
MTBENzE5NDFCMzM1QzlEMDA5QzdCNzMgLyogVGhlbWVDb2NvYS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUaGVtZUNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTMxMTdERjdBMUMxNjRDMEEwMDQ3QjRCRSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlw
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVURlcHRo
U3RlbmNpbERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTE3
REY3QjFDMTY0QzBBMDA0N0I0QkUgLyogV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlw
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMTdERjdDMUMxNjRDMEEwMDQ3
QjRCRSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzExN0RGN0YxQzE2NENDRTAwNDdCNEJFIC8qIE1ldGFsRGVwdGhTdGVu
Y2lsU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0YWxEZXB0aFN0
ZW5jaWxTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTE3REY4MDFDMTY0
Q0NFMDA0N0I0QkUgLyogTWV0YWxEZXB0aFN0ZW5jaWxTdGF0ZS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1ldGFsRGVwdGhTdGVuY2lsU3RhdGUubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMTdERjgzMUMxNjRFMTMwMDQ3QjRCRSAvKiBNZXRh
bERlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWV0YWxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMxMTdERjg0MUMxNjRFMTMwMDQ3QjRCRSAvKiBNZXRhbERlcHRoU3RlbmNpbERlc2Ny
aXB0b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZXRhbERl
cHRoU3RlbmNpbERlc2NyaXB0b3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMx
MTdERjg3MUMxNjUyMDAwMDQ3QjRCRSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMTdERjg4MUMxNjUyMDAwMDQ3
QjRCRSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzMTE3REY4OTFDMTY1MjAwMDA0N0I0QkUgLyogV2ViR1BVRGVwdGhTdGVuY2ls
U3RhdGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVURlcHRoU3RlbmNpbFN0YXRl
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzExN0RGOEExQzE2NTJBOTAwNDdC
NEJFIC8qIEpTV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTE3REY4QjFDMTY1MkE5MDA0N0I0QkUg
LyogSlNXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkzMTE3REY4QzFDMTY1MkE5MDA0N0I0QkUgLyogSlNXZWJHUFVE
ZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzExN0RGOEQxQzE2NTJBOTAwNDdCNEJFIC8qIEpTV2ViR1BVRGVwdGhTdGVuY2lsU3Rh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHUFVEZXB0aFN0ZW5j
aWxTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTFDMDhCQzE4RTM1RDY4
MDBCNjU2MTUgLyogQ29udHJvbFN0YXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb250cm9sU3RhdGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMjg4
RTZFMEUzMDA1RDYwMDM2MTlBRSAvKiBDU1NLZXlmcmFtZVJ1bGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTS2V5ZnJhbWVSdWxlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzEyODhFNkYwRTMwMDVENjAwMzYxOUFFIC8qIENTU0tleWZyYW1l
UnVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NLZXlmcmFtZVJ1bGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg1NjEsMTAgKzg2OTYsMTUgQEAKIAkJ
MzEyOENBNkExNDczMzE2MzAwNzRDNzJBIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm90aWZpY2F0aW9uQ29udHJvbGxlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTMxM0Y2MzE0NDNCMzVFMDA2RTJBOTAgLyog
RmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzMTMxM0Y2NDE0NDNCMzVFMDA2RTJBOTAgLyogRmlsdGVyRWZmZWN0UmVuZGVyZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsdGVyRWZmZWN0UmVuZGVyZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEzMkY4REYxQzg1MzAxRDAwODNERkI0IC8q
IFdlYkdQVUVudW1zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVFbnVtcy5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMzJGOEUxMUM4NTMwQTEwMDgzREZCNCAv
KiBXZWJHUFVFbnVtcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJHUFVFbnVtcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMzJGOEUyMUM4
NTMwQTEwMDgzREZCNCAvKiBXZWJHUFVFbnVtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJHUFVFbnVtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTMy
RjhFNTFDODYyQjA3MDA4M0RGQjQgLyogTWV0YWxFbnVtcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXRh
bEVudW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNDAzNzk3MTI0QkVBN0Yw
MEFGNDBFNCAvKiBXZWJDb3JlTW90aW9uTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJDb3JlTW90aW9uTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzMTQwMzc5ODEyNEJFQTdGMDBBRjQwRTQgLyogV2ViQ29yZU1vdGlvbk1hbmFnZXIu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlTW90aW9u
TWFuYWdlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE0MDM3OTkxMjRCRUE3
RjAwQUY0MEU0IC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50SU9TLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERldmljZU9yaWVudGF0aW9uQ2xpZW50SU9TLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNDAzNzlBMTI0QkVBN0YwMEFGNDBFNCAvKiBEZXZpY2VP
cmllbnRhdGlvbkNsaWVudElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IERldmljZU9yaWVudGF0aW9uQ2xpZW50SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzMTQ0RjQ1NDFCRjZDODVBMDBEREFDMkIgLyogV2ViR1BVTGlicmFyeS5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVTGlicmFyeS5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMxNDZGRTY1MTg0NDIwODcwMDFBOTM3QyAvKiBPRVNUZXh0dXJlRmxv
YXRMaW5lYXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT0VTVGV4
dHVyZUZsb2F0TGluZWFyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE0NkZF
NjYxODQ0MjA4NzAwMUE5MzdDIC8qIE9FU1RleHR1cmVGbG9hdExpbmVhci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBPRVNUZXh0dXJlRmxvYXRMaW5lYXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE0NkZFNjcxODQ0MjA4NzAwMUE5MzdDIC8qIE9FU1RleHR1
cmVGbG9hdExpbmVhci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gT0VTVGV4dHVyZUZsb2F0
TGluZWFyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg1OTEsNiArODczMSwx
NiBAQAogCQkzMTZGRTEwRjBFNkUxREE3MDBCRjYwODggLyogS2V5ZnJhbWVBbmltYXRpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gS2V5ZnJhbWVBbmltYXRpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTZGRTExMDBFNkUxREE3MDBCRjYw
ODggLyogS2V5ZnJhbWVBbmltYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gS2V5ZnJhbWVBbmltYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE3
NDFBQUIxNjYzNUU0NTAwOEE1QjdFIC8qIFNpbXVsYXRlZENsaWNrT3B0aW9ucy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTaW11bGF0ZWRDbGlja09wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzE3NUIwODExQkVDMTI5QTAwNkVBMEFEIC8qIFdlYkdQVUxheWVyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViR1BVTGF5ZXIubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNzVCMDgyMUJFQzEyOUEwMDZFQTBBRCAvKiBXZWJHUFVM
YXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVMYXllci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTc1QjA4NTFCRUMxNTlEMDA2RUEwQUQgLyog
TWV0YWxEZXZpY2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IGxpbmVFbmRp
bmcgPSAwOyBwYXRoID0gTWV0YWxEZXZpY2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhj
TGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9Owor
CQkzMTc1QjA4NjFCRUMxNTlEMDA2RUEwQUQgLyogTWV0YWxEZXZpY2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IE1ldGFsRGV2aWNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhj
b2RlLmxhbmcub2JqY3BwOyB9OworCQkzMTc1QjA4OTFCRUQ1N0U2MDA2RUEwQUQgLyogV2ViR1BV
UmVuZGVyaW5nQ29udGV4dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVy
aW5nQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNzVCMDhCMUJF
RDU4OTYwMDZFQTBBRCAvKiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTc1QjA4QzFCRUQ1ODk2MDA2RUEwQUQgLyogV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJHUFVSZW5kZXJpbmdDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMx
NzVCMDhGMUJFRDkxQjkwMDZFQTBBRCAvKiBKU1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHUFVSZW5kZXJpbmdDb250
ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE3NUIwOTAxQkVEOTFCOTAw
NkVBMEFEIC8qIEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzE3NUIwOTMxQkYxMEI0NDAwNkVBMEFEIC8qIEpTV2ViR1BVUmVuZGVy
aW5nQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1dlYkdQVVJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzMTg5RTZEQjE2QjIxMDM1MDAzODZFQTMgLyogcGx1Z0lucy5jc3MgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LmNzczsgcGF0aCA9IHBsdWdJbnMuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzMTk4NDdGRTFBMUQ4MTY3MDBBMTMzMTggLyogQW5pbWF0aW9uRXZlbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQW5pbWF0aW9uRXZlbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTk4NDdGRjFBMUQ4MTY3MDBBMTMzMTggLyog
QW5pbWF0aW9uRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQW5pbWF0
aW9uRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg2MDksNiArODc1OSwx
MiBAQAogCQkzMUIzMTNEQTFCNjk4NzE2MDBGMkFBQkMgLyogTlNVUkxDb25uZWN0aW9uU1BJLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TVVJMQ29ubmVjdGlvblNQSS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUIzMTNEQzFCNjk4N0RCMDBGMkFBQkMgLyog
TlNVUkxSZXF1ZXN0U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TVVJM
UmVxdWVzdFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUIzMTNERTFCNjk4
OEM1MDBGMkFBQkMgLyogTlNCdXR0b25DZWxsU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE5TQnV0dG9uQ2VsbFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzMUI1QUVFNjFCRkE4M0MyMDBCMzREREYgLyogV2ViR1BVTGlicmFyeS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVMaWJyYXJ5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFCNUFFRTcxQkZBODNDMjAwQjM0RERGIC8qIFdlYkdQVUxp
YnJhcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVTGlicmFyeS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUI1QUVFQTFCRkE4Njg3MDBCMzREREYg
LyogV2ViR1BVT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkdQVU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQjVBRUVC
MUJGQTg2ODcwMEIzNERERiAvKiBXZWJHUFVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViR1BVT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTMxQjVBRUVFMUJGQUFDNUQwMEIzNERERiAvKiBKU1dlYkdQVUxpYnJhcnkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHUFVMaWJyYXJ5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFCNUFFRUYxQkZBQUM1RDAwQjM0RERGIC8qIEpTV2Vi
R1BVTGlicmFyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdQVUxp
YnJhcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFCQzc0MkIxQUFGRjQ1QzAw
NkI0MzQwIC8qIENTU0FuaW1hdGlvblRyaWdnZXJTY3JvbGxWYWx1ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NBbmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUJDNzQyQzFBQUZGNDVDMDA2QjQz
NDAgLyogQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENTU0FuaW1hdGlvblRyaWdnZXJTY3JvbGxWYWx1ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzMUMwRkYxQjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0
QW5pbWF0aW9uRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
ODYyMSw2ICs4Nzc3LDI4IEBACiAJCTMxQzBGRjNBMEU0Q0VGQUMwMDdENkZFNSAvKiBKU1dlYktp
dEFuaW1hdGlvbkV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2Vi
S2l0QW5pbWF0aW9uRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFDMEZG
M0IwRTRDRUZBQzAwN0Q2RkU1IC8qIEpTV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFDMEZGM0MwRTRDRUZBQzAwN0Q2RkU1
IC8qIEpTV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTV2ViS2l0VHJhbnNpdGlvbkV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMxQzYzM0ZEMUM5NjBFRTEwMDgyNzMyQSAvKiBXZWJHUFVUZXh0dXJlRGVzY3JpcHRv
ci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUM2MzNGRTFDOTYxMUM0MDA4MjczMkEg
LyogV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzMUM2MzNGRjFDOTYxMUM0MDA4MjczMkEgLyogV2ViR1BVVGV4dHVyZURl
c2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVVGV4dHVy
ZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFDNjM0MDIxQzk2
MTlBRTAwODI3MzJBIC8qIE1ldGFsVGV4dHVyZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWV0YWxUZXh0dXJlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkzMUM2MzQwMzFDOTYxOUFFMDA4MjczMkEgLyogTWV0YWxUZXh0dXJl
RGVzY3JpcHRvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1l
dGFsVGV4dHVyZURlc2NyaXB0b3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMx
QzYzNDA2MUM5NjFEMDEwMDgyNzMyQSAvKiBKU1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR1BVVGV4dHVyZURlc2Ny
aXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUM2MzQwNzFDOTYxRDAx
MDA4MjczMkEgLyogSlNXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTMxRDUxMzVBMUM4OTBEMzUwMEI3QkY0MCAvKiBXZWJHUFVSZW5k
ZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdl
YkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTMxRDUxMzVCMUM4OTBEQjQwMEI3QkY0MCAvKiBXZWJHUFVSZW5kZXJQYXNz
QXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFENTEzNUMxQzg5MERCNTAwQjdCRjQwIC8qIFdlYkdQVVJl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFENTEzNUYxQzg5MUIxMTAwQjdCRjQwIC8qIE1ldGFsUmVu
ZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxRDUxMzYxMUM4OTFCMkEwMEI3QkY0MCAvKiBN
ZXRhbFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXRh
bFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzMUQ1MTM2MjFDOEExNzg5MDBCN0JGNDAgLyogSlNXZWJHUFVSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkzMUQ1MTM2MzFDOEExNzg5MDBCN0JGNDAgLyogSlNXZWJHUFVS
ZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFENTEzNjYxQzhBNTU3MzAwQjdCRjQwIC8qIEpTV2Vi
R1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFENTEzNjgx
QzhBNjMzMTAwQjdCRjQwIC8qIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMzFENTEzNjkxQzhBNjMzMTAwQjdCRjQwIC8qIFdlYkdQVVJlbmRlclBhc3NEZXB0
aEF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTMxRDUxMzZBMUM4QTYzMzEwMEI3QkY0MCAvKiBXZWJHUFVSZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzMUQ1MTM2RTFDOEE2NDBDMDBCN0JGNDAgLyogTWV0YWxS
ZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxRDUxMzZGMUM4QTY0MEMwMEI3QkY0MCAv
KiBNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2ht
ZW50RGVzY3JpcHRvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFENTEzNzQx
QzhBNkY1NzAwQjdCRjQwIC8qIEpTV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2Ny
aXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHUFVS
ZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTMxRDUxMzc1MUM4QTZGNTcwMEI3QkY0MCAvKiBKU1dlYkdQVVJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFENTkxQjExNjY5N0E2QzAwRTZCRjAyIC8qIFBs
dWdJbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbHVnSW5DbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFEQ0QyOUMxQUI0RkJERTAwNzJF
ODE3IC8qIEFuaW1hdGlvblRyaWdnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQW5pbWF0aW9uVHJpZ2dlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMURD
REY0MTFEQTFDNDU0MDBFQTVCOTMgLyogRXh0ZW5kZWRDb2xvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHRlbmRlZENvbG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTg2MjgsNiArODgwNiw5MiBAQAogCQkzMURFQTQ1MzFCMzlGNEQ5MDBG
NzcxNzggLyogV2ViU3lzdGVtQmFja2Ryb3BMYXllci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFdlYlN5c3RlbUJhY2tkcm9wTGF5ZXIubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTMxREVBNDU0MUIzOUY0RDkwMEY3NzE3OCAvKiBXZWJTeXN0ZW1C
YWNrZHJvcExheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlN5c3Rl
bUJhY2tkcm9wTGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFERjYzNTYx
QUYxODdERDAwNzhGRDkxIC8qIE5TQ29sb3JTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTlNDb2xvclNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUU4
MkUyNjFCRkJFQjcwMDBDRUU4MDEgLyogTWV0YWxMaWJyYXJ5Lm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWV0YWxMaWJyYXJ5Lm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzMUU4MkUyNzFCRkJFQjcwMDBDRUU4MDEgLyogTWV0YWxMaWJyYXJ5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGFsTGlicmFyeS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzMUU4MkUyQTFCRkQzRjYxMDBDRUU4MDEgLyogV2ViR1BV
RnVuY3Rpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVUZ1bmN0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMzFFODJFMkIxQkZEM0Y5MjAwQ0VFODAxIC8qIFdlYkdQVUZ1bmN0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUZ1bmN0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFFODJFMkMxQkZEM0Y5MjAwQ0VFODAx
IC8qIFdlYkdQVUZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkdQVUZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxRTgyRTJGMUJG
RDQwRUEwMENFRTgwMSAvKiBNZXRhbEZ1bmN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTWV0YWxGdW5jdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMzFFODJFMzAxQkZENDBFQTAwQ0VFODAxIC8qIE1ldGFsRnVuY3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0YWxGdW5jdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkzMUU4MkUzNzFCRkQ0RkREMDBDRUU4MDEgLyogSlNXZWJHUFVG
dW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdQ
VUZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFFODJFMzgxQkZE
NEZERDAwQ0VFODAxIC8qIEpTV2ViR1BVRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNXZWJHUFVGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzMUU4MkU2MDFDMDRGMjg4MDBDRUU4MDEgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUU4MkU2MTFDMDRGNTc0MDBDRUU4MDEgLyogV2Vi
R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxRTgyRTYyMUMwNEY1NzQwMENFRTgwMSAvKiBXZWJHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTMxRTgyRTY1MUMwNEZBQUYwMENFRTgwMSAvKiBKU1dlYkdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTMxRTgyRTY2MUMwNEZBQUYwMENFRTgwMSAvKiBKU1dlYkdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzMUU4MkU2OTFDMDUwRjFCMDBDRUU4MDEgLyogTWV0YWxSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZXRhbFJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFF
ODJFNkExQzA1MEYxQjAwQ0VFODAxIC8qIE1ldGFsUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGFsUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxRTgyRTZEMUMwNTJGQjkw
MENFRTgwMSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3Iu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxRTgyRTZFMUMwNTMwQzgwMENFRTgw
MSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzFFODJFNkYxQzA1MzBDODAwQ0VFODAxIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFFODJFNzIxQzA1MzU4MjAwQ0VFODAxIC8qIEpTV2ViR1BV
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFFODJF
NzMxQzA1MzU4MjAwQ0VFODAxIC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR1BV
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTMxRTgyRTc2MUMwNTNEQjEwMENFRTgwMSAvKiBNZXRhbFJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IE1ldGFsUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUU4MkU3NzFDMDUzREIx
MDBDRUU4MDEgLyogTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0YWxSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MzFFODJFN0ExQzA2NDYxNTAwQ0VFODAxIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzMUU4MkU3QjFDMDY0NjhCMDBDRUU4MDEgLyogV2ViR1BVUmVuZGVyUGlwZWxp
bmVTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVS
ZW5kZXJQaXBlbGluZVN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFF
ODJFN0MxQzA2NDY4QjAwQ0VFODAxIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUU4MkU3RjFDMDY0N0U5MDBDRUU4MDEg
LyogTWV0YWxSZW5kZXJQaXBlbGluZVN0YXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gTWV0YWxSZW5kZXJQaXBlbGluZVN0YXRlLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkzMUU4MkU4MDFDMDY0N0U5MDBDRUU4MDEgLyogTWV0YWxSZW5kZXJQ
aXBlbGluZVN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGFsUmVu
ZGVyUGlwZWxpbmVTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUU4MkU4
MzFDMDY0QzAzMDBDRUU4MDEgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVT
dGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxRTgyRTg0MUMwNjRDMDMw
MENFRTgwMSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxRTgyRTg3MUMwNjY5RTgwMENFRTgwMSAvKiBXZWJHUFVS
ZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTMxRTgyRTg4MUMwNjY5RTgwMENFRTgwMSAvKiBXZWJHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVSZW5kZXJQ
YXNzRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUU4MkU4QjFD
MDY2OUZFMDBDRUU4MDEgLyogTWV0YWxSZW5kZXJQYXNzRGVzY3JpcHRvci5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1ldGFsUmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxRTgyRThDMUMwNjY5RkUwMENFRTgw
MSAvKiBNZXRhbFJlbmRlclBhc3NEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1ldGFsUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMzFFODJFOEYxQzA2NkExMjAwQ0VFODAxIC8qIFdlYkdQVVJlbmRlclBhc3NE
ZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxRTgyRTkxMUMwNjZD
QTQwMENFRTgwMSAvKiBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUU4MkU5MjFDMDY2Q0I4MDBDRUU4MDEgLyog
V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUU4MkU5MzFD
MDY2Q0I4MDBDRUU4MDEgLyogV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MzFFODJFOTYxQzA2NzAxRTAwQ0VFODAxIC8qIE1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBN
ZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkzMUU4MkU5NzFDMDY3MDFFMDBDRUU4MDEgLyogTWV0YWxSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxRTgyRTlBMUMwNjc1RTMwMENFRTgwMSAvKiBKU1dl
YkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUU4MkU5QjFD
MDY3NUUzMDBDRUU4MDEgLyogSlNXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdQVVJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTMxRTgyRTlDMUMwNjc1RTMwMENFRTgwMSAvKiBKU1dlYkdQVVJlbmRlclBhc3NEZXNjcmlw
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR1BVUmVu
ZGVyUGFzc0Rlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUU4
MkU5RDFDMDY3NUUzMDBDRUU4MDEgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdQVVJlbmRlclBhc3NEZXNjcmlw
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxRTgyRUEyMUMwN0I1QTcwMENF
RTgwMSAvKiBXZWJHUFVUZXh0dXJlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkdQVVRleHR1cmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkz
MUU4MkVBMzFDMDdCNUE4MDBDRUU4MDEgLyogV2ViR1BVVGV4dHVyZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVUZXh0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTMxRTgyRUE2MUMwN0I1QkMwMENFRTgwMSAvKiBXZWJHUFVUZXh0dXJlLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJHUFVUZXh0dXJlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFF
ODJFQTcxQzA3QjhCNzAwQ0VFODAxIC8qIEpTV2ViR1BVVGV4dHVyZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdQVVRleHR1cmUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkzMUU4MkVBODFDMDdCOEI3MDBDRUU4MDEgLyogSlNXZWJHUFVU
ZXh0dXJlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR1BVVGV4dHVy
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUU4MkVBQjFDMDdCQTY2MDBDRUU4
MDEgLyogTWV0YWxUZXh0dXJlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gTWV0YWxUZXh0dXJlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUU4
MkVBQzFDMDdCQTY2MDBDRUU4MDEgLyogTWV0YWxUZXh0dXJlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1ldGFsVGV4dHVyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzMUU4MkVBRjFDMDdEOENCMDBDRUU4MDEgLyogTWV0YWxDb21tYW5kUXVldWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0YWxDb21tYW5kUXVldWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFFODJFQjAxQzA3RDhDQjAwQ0VFODAxIC8qIE1ldGFs
Q29tbWFuZFF1ZXVlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
TWV0YWxDb21tYW5kUXVldWUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxRTgy
RUIzMUMwN0Q4RTcwMENFRTgwMSAvKiBXZWJHUFVDb21tYW5kUXVldWUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVQ29tbWFuZFF1ZXVlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFFODJFQjQxQzA3RDhFNzAwQ0VFODAxIC8qIFdlYkdQ
VUNvbW1hbmRRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVD
b21tYW5kUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFFODJFQjUxQzA3
RDhFNzAwQ0VFODAxIC8qIFdlYkdQVUNvbW1hbmRRdWV1ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gV2ViR1BVQ29tbWFuZFF1ZXVlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzFFODJFQjkxQzA3REQyNzAwQ0VFODAxIC8qIEpTV2ViR1BVQ29tbWFuZFF1ZXVlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR1BVQ29tbWFuZFF1ZXVl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFFODJFQkExQzA3REQyNzAwQ0VF
ODAxIC8qIEpTV2ViR1BVQ29tbWFuZFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTV2ViR1BVQ29tbWFuZFF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTMxRTgyRUJEMUMwOTBFRTgwMENFRTgwMSAvKiBXZWJHUFVDb21tYW5kQnVmZmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUNvbW1hbmRCdWZmZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUU4MkVCRTFDMDkwRUU4MDBDRUU4
MDEgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJHUFVDb21tYW5kQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTMxRTgyRUJGMUMwOTBFRTgwMENFRTgwMSAvKiBXZWJHUFVDb21tYW5kQnVmZmVyLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVDb21tYW5kQnVmZmVyLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMzFFODJFQzMxQzA5MEYwRjAwQ0VFODAxIC8qIE1ldGFsQ29tbWFu
ZEJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXRhbENvbW1hbmRC
dWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFFODJFQzQxQzA5MEYwRjAw
Q0VFODAxIC8qIE1ldGFsQ29tbWFuZEJ1ZmZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IE1ldGFsQ29tbWFuZEJ1ZmZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMzFFODJFQzcxQzA5MTY1MTAwQ0VFODAxIC8qIEpTV2ViR1BVQ29tbWFuZEJ1
ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdQVUNv
bW1hbmRCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUU4MkVDODFD
MDkxNjUxMDBDRUU4MDEgLyogSlNXZWJHUFVDb21tYW5kQnVmZmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR1BVQ29tbWFuZEJ1ZmZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkzMUU4MkVDQjFDMDkyNjIyMDBDRUU4MDEgLyogV2ViR1BVUmVuZGVy
Q29tbWFuZEVuY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzMUU4MkVDQzFDMDkyNjIyMDBDRUU4MDEgLyogV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29k
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVuZGVyQ29tbWFu
ZEVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFFODJFQ0QxQzA5MjYy
MjAwQ0VFODAxIC8qIFdlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTMxRTgyRUQxMUMwOTJCNUQwMENFRTgwMSAvKiBKU1dlYkdQVVJlbmRl
ckNvbW1hbmRFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzMUU4MkVEMjFDMDkyQjVEMDBDRUU4MDEgLyogSlNXZWJHUFVSZW5kZXJDb21tYW5k
RW5jb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdQVVJlbmRl
ckNvbW1hbmRFbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxRTgyRUQ1
MUMwOTMxM0UwMENFRTgwMSAvKiBNZXRhbFJlbmRlckNvbW1hbmRFbmNvZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFFODJFRDYxQzA5MzEzRTAwQ0VFODAxIC8qIE1l
dGFsUmVuZGVyQ29tbWFuZEVuY29kZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBNZXRhbFJlbmRlckNvbW1hbmRFbmNvZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzMUU4MkVEOTFDMEQwNEYwMDBDRUU4MDEgLyogV2ViR1BVRHJhd2FibGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVRHJhd2FibGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUU4MkVEQTFDMEQwNEYwMDBDRUU4
MDEgLyogV2ViR1BVRHJhd2FibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViR1BVRHJhd2FibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFFODJFREIx
QzBEMDRGMDAwQ0VFODAxIC8qIFdlYkdQVURyYXdhYmxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJHUFVEcmF3YWJsZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMx
RTgyRURGMUMwRDBFMDgwMENFRTgwMSAvKiBNZXRhbERyYXdhYmxlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGFsRHJhd2FibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMzFFODJFRTAxQzBEMEUwODAwQ0VFODAxIC8qIE1ldGFsRHJhd2FibGUubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZXRhbERyYXdhYmxlLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUU4MkVFMzFDMEQyNDAwMDBDRUU4MDEgLyog
SlNXZWJHUFVEcmF3YWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1dlYkdQVURyYXdhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFF
ODJFRTUxQzBEMjQyMjAwQ0VFODAxIC8qIEpTV2ViR1BVRHJhd2FibGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHUFVEcmF3YWJsZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzMUU4MkVFNzFDMEY3OTBFMDBDRUU4MDEgLyogV2ViR1BVQnVmZmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBX
ZWJHUFVCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lm
aWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKKwkJMzFFODJFRTgxQzBGNzkw
RjAwQ0VFODAxIC8qIFdlYkdQVUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJHUFVCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFFODJF
RTkxQzBGNzkwRjAwQ0VFODAxIC8qIFdlYkdQVUJ1ZmZlci5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gV2ViR1BVQnVmZmVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFF
ODJFRUQxQzBGNzkzMzAwQ0VFODAxIC8qIE1ldGFsQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1ldGFsQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTMxRTgyRUVFMUMwRjc5MzMwMENFRTgwMSAvKiBNZXRhbEJ1ZmZlci5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1ldGFsQnVmZmVyLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkzMUU4MkVGMTFDMEY4MEY4MDBDRUU4MDEgLyogSlNXZWJHUFVC
dWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHUFVC
dWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUU4MkVGMjFDMEY4MEY4
MDBDRUU4MDEgLyogSlNXZWJHUFVCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNXZWJHUFVCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFF
OEQ4QkExNjBCQzk0QjAwNENFOEY1IC8qIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNuYXBzaG90dGVkUGx1Z0lu
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFFOEQ4QkIxNjBCQzk0QzAwNENF
OEY1IC8qIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbmRlclNuYXBzaG90dGVkUGx1Z0luLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTMxRUFGOTdDMTIxNDM1QTQwMEU3QzFCRiAvKiBEZXZpY2VNb3Rpb25DbGllbnRJ
T1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlTW90aW9uQ2xpZW50
SU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDk1OSw3ICsxMTIyMyw3IEBA
CiAJCTkzMDVCMjRDMDk4RjFCNkIwMEMyODg1NSAvKiBUaW1lci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
MzA3MDU5MDA5RTBDNzU4MDBCMTdGRTQgLyogRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVl
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNzA1QzcwOUUwQzk1RjAwQjE3
RkU0IC8qIERlcHJlY2F0ZWRDU1NPTUNvdW50ZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IERlcHJlY2F0ZWRDU1NPTUNvdW50ZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk5MzA3MDYxMzA5RTBDQTgyMDBCMTdGRTQgLyogRGVyaXZlZFNvdXJjZXMubWFrZSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5tYWtl
OyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gRGVyaXZlZFNvdXJjZXMubWFrZTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdXNlc1RhYnMgPSAxOyB9OworCQk5MzA3MDYxMzA5RTBDQTgyMDBCMTdG
RTQgLyogRGVyaXZlZFNvdXJjZXMubWFrZSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBl
eHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5tYWtlOyBmaWxlRW5jb2RpbmcgPSA0OyBsaW5l
RW5kaW5nID0gMDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzLm1ha2U7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHVzZXNUYWJzID0gMTsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0g
eGNvZGUubGFuZy5zaW1wbGVDb2xvcmluZzsgfTsKIAkJOTMwN0YxRDUwQUYyRDU5MDAwREJBMzFB
IC8qIEhpdFRlc3RSZXN1bHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEhpdFRlc3RSZXN1bHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzA3
RjFENjBBRjJENTkwMDBEQkEzMUEgLyogSGl0VGVzdFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5MzA4NDEzMzFDRERCMTU1MDBCMDk1OEMgLyogSlNET01Db252ZXJ0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NQ29udmVydC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTQ0MDYsNyArMTQ2NzAsNyBAQAogCQlFMUM2NTcxRTE4MTZFNTAz
MDAyNTZDREQgLyogQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJl
Y2F0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFDNjU3MjQxODE2RTY5RDAw
MjU2Q0REIC8qIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMUM2NTcyNjE4MTZGOUZFMDAyNTZDREQgLyogQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRTFDNkNGQzIxNzQ2RDI5MzAwN0I4N0ExIC8qIERPTVdpbmRvd0NvbnN0
cnVjdG9ycy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gRE9NV2luZG93Q29uc3RydWN0b3JzLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTFDNkNGQzIxNzQ2RDI5MzAwN0I4N0ExIC8qIERPTVdpbmRvd0Nv
bnN0cnVjdG9ycy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IERPTVdpbmRvd0NvbnN0cnVjdG9y
cy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRl
bnRpZmllciA9ICI8bm9uZT4iOyB9OwogCQlFMUM4QkU1QzBFOEJEMTVBMDA2NENCN0QgLyogSlNX
b3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXb3JrZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUM5NEFGNzE5MTMwM0YwMDBENUE4
OTMgLyogQmxvYlBhcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmxvYlBh
cnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFDQTVDQkIwRThDRENBRjAwRThF
RjkwIC8qIEpTV29ya2VyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTV29ya2VyQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE1NDAwLDggKzE1NjY0LDYgQEAKIAkJCQk1Q0REODMzQzFFNDMyNEJCMDA2MjFFOTIgLyogUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmggKi8sCiAJCQkJMDc3MDdDQjExRTIwNjQ5QzAwMDA1
QkY3IC8qIEF1ZGlvQ2FwdHVyZVNvdXJjZVByb3ZpZGVyT2JqQy5oICovLAogCQkJCTA3NzA3Q0FG
MUUyMDVFQzQwMDAwNUJGNyAvKiBBdWRpb1NvdXJjZU9ic2VydmVyT2JqQy5oICovLAotCQkJCTA3
QzA0NkM1MUU0MjUxMkYwMDcyMDFFNyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29j
b2EuY3BwICovLAotCQkJCTA3QzA0NkM2MUU0MjUxMkYwMDcyMDFFNyAvKiBBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCAqLywKIAkJCQkwNzAzNjNEODE4MUExQ0RDMDBDMDc0QTUg
LyogQVZBdWRpb0NhcHR1cmVTb3VyY2UuaCAqLywKIAkJCQkwNzAzNjNEOTE4MUExQ0RDMDBDMDc0
QTUgLyogQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0gKi8sCiAJCQkJMDcwMzYzREExODFBMUNEQzAw
QzA3NEE1IC8qIEFWQ2FwdHVyZURldmljZU1hbmFnZXIuaCAqLywKQEAgLTE3MjA4LDYgKzE3NDcw
LDY4IEBACiAJCQkJNzdBMTdBNzQxMkYyODY0MjAwNEUwMkY2IC8qIFdlYkdMVmVydGV4QXJyYXlP
YmplY3RPRVMuY3BwICovLAogCQkJCTc3QTE3QTc1MTJGMjg2NDIwMDRFMDJGNiAvKiBXZWJHTFZl
cnRleEFycmF5T2JqZWN0T0VTLmggKi8sCiAJCQkJNzdBMTdBNzYxMkYyODY0MjAwNEUwMkY2IC8q
IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaWRsICovLAorCQkJCTMxRTgyRUU3MUMwRjc5MEUw
MENFRTgwMSAvKiBXZWJHUFVCdWZmZXIuY3BwICovLAorCQkJCTMxRTgyRUU4MUMwRjc5MEYwMENF
RTgwMSAvKiBXZWJHUFVCdWZmZXIuaCAqLywKKwkJCQkzMUU4MkVFOTFDMEY3OTBGMDBDRUU4MDEg
LyogV2ViR1BVQnVmZmVyLmlkbCAqLywKKwkJCQkzMUU4MkVCRDFDMDkwRUU4MDBDRUU4MDEgLyog
V2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgKi8sCisJCQkJMzFFODJFQkUxQzA5MEVFODAwQ0VFODAx
IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuaCAqLywKKwkJCQkzMUU4MkVCRjFDMDkwRUU4MDBDRUU4
MDEgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwgKi8sCisJCQkJMzFFODJFQjMxQzA3RDhFNzAw
Q0VFODAxIC8qIFdlYkdQVUNvbW1hbmRRdWV1ZS5jcHAgKi8sCisJCQkJMzFFODJFQjQxQzA3RDhF
NzAwQ0VFODAxIC8qIFdlYkdQVUNvbW1hbmRRdWV1ZS5oICovLAorCQkJCTMxRTgyRUI1MUMwN0Q4
RTcwMENFRTgwMSAvKiBXZWJHUFVDb21tYW5kUXVldWUuaWRsICovLAorCQkJCTMxMTdERjdBMUMx
NjRDMEEwMDQ3QjRCRSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcCAqLywKKwkJ
CQkzMTE3REY3QjFDMTY0QzBBMDA0N0I0QkUgLyogV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRv
ci5oICovLAorCQkJCTMxMTdERjdDMUMxNjRDMEEwMDQ3QjRCRSAvKiBXZWJHUFVEZXB0aFN0ZW5j
aWxEZXNjcmlwdG9yLmlkbCAqLywKKwkJCQkzMTE3REY4NzFDMTY1MjAwMDA0N0I0QkUgLyogV2Vi
R1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwICovLAorCQkJCTMxMTdERjg4MUMxNjUyMDAwMDQ3QjRC
RSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oICovLAorCQkJCTMxMTdERjg5MUMxNjUyMDAw
MDQ3QjRCRSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5pZGwgKi8sCisJCQkJMzFFODJFRDkx
QzBEMDRGMDAwQ0VFODAxIC8qIFdlYkdQVURyYXdhYmxlLmNwcCAqLywKKwkJCQkzMUU4MkVEQTFD
MEQwNEYwMDBDRUU4MDEgLyogV2ViR1BVRHJhd2FibGUuaCAqLywKKwkJCQkzMUU4MkVEQjFDMEQw
NEYwMDBDRUU4MDEgLyogV2ViR1BVRHJhd2FibGUuaWRsICovLAorCQkJCTMxRTgyRTJCMUJGRDNG
OTIwMENFRTgwMSAvKiBXZWJHUFVGdW5jdGlvbi5jcHAgKi8sCisJCQkJMzFFODJFMkMxQkZEM0Y5
MjAwQ0VFODAxIC8qIFdlYkdQVUZ1bmN0aW9uLmggKi8sCisJCQkJMzFFODJFMkExQkZEM0Y2MTAw
Q0VFODAxIC8qIFdlYkdQVUZ1bmN0aW9uLmlkbCAqLywKKwkJCQkzMUI1QUVFNjFCRkE4M0MyMDBC
MzREREYgLyogV2ViR1BVTGlicmFyeS5jcHAgKi8sCisJCQkJMzFCNUFFRTcxQkZBODNDMjAwQjM0
RERGIC8qIFdlYkdQVUxpYnJhcnkuaCAqLywKKwkJCQkzMTQ0RjQ1NDFCRjZDODVBMDBEREFDMkIg
LyogV2ViR1BVTGlicmFyeS5pZGwgKi8sCisJCQkJMzFCNUFFRUExQkZBODY4NzAwQjM0RERGIC8q
IFdlYkdQVU9iamVjdC5jcHAgKi8sCisJCQkJMzFCNUFFRUIxQkZBODY4NzAwQjM0RERGIC8qIFdl
YkdQVU9iamVjdC5oICovLAorCQkJCTMxRTgyRUNCMUMwOTI2MjIwMENFRTgwMSAvKiBXZWJHUFVS
ZW5kZXJDb21tYW5kRW5jb2Rlci5jcHAgKi8sCisJCQkJMzFFODJFQ0MxQzA5MjYyMjAwQ0VFODAx
IC8qIFdlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmggKi8sCisJCQkJMzFFODJFQ0QxQzA5MjYy
MjAwQ0VFODAxIC8qIFdlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmlkbCAqLywKKwkJCQkzMTc1
QjA4QjFCRUQ1ODk2MDA2RUEwQUQgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAgKi8sCisJ
CQkJMzE3NUIwOEMxQkVENTg5NjAwNkVBMEFEIC8qIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCAq
LywKKwkJCQkzMTc1QjA4OTFCRUQ1N0U2MDA2RUEwQUQgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4
dC5pZGwgKi8sCisJCQkJMzFENTEzNUExQzg5MEQzNTAwQjdCRjQwIC8qIFdlYkdQVVJlbmRlclBh
c3NBdHRhY2htZW50RGVzY3JpcHRvci5pZGwgKi8sCisJCQkJMzFENTEzNUIxQzg5MERCNDAwQjdC
RjQwIC8qIFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8sCisJCQkJ
MzFENTEzNUMxQzg5MERCNTAwQjdCRjQwIC8qIFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvci5oICovLAorCQkJCTMxRTgyRTkyMUMwNjZDQjgwMENFRTgwMSAvKiBXZWJHUFVSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzFFODJFOTMxQzA2
NkNCODAwQ0VFODAxIC8qIFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
LmggKi8sCisJCQkJMzFFODJFOTExQzA2NkNBNDAwQ0VFODAxIC8qIFdlYkdQVVJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmlkbCAqLywKKwkJCQkzMUU4MkU4NzFDMDY2OUU4MDBD
RUU4MDEgLyogV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwICovLAorCQkJCTMxRTgyRTg4
MUMwNjY5RTgwMENFRTgwMSAvKiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oICovLAorCQkJ
CTMxRTgyRThGMUMwNjZBMTIwMENFRTgwMSAvKiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5p
ZGwgKi8sCisJCQkJMzFENTEzNjgxQzhBNjMzMTAwQjdCRjQwIC8qIFdlYkdQVVJlbmRlclBhc3NE
ZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLywKKwkJCQkzMUQ1MTM2OTFDOEE2MzMxMDBC
N0JGNDAgLyogV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLywK
KwkJCQkzMUQ1MTM2QTFDOEE2MzMxMDBCN0JGNDAgLyogV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0
YWNobWVudERlc2NyaXB0b3IuaWRsICovLAorCQkJCTMxRTgyRTZFMUMwNTMwQzgwMENFRTgwMSAv
KiBXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovLAor
CQkJCTMxRTgyRTZGMUMwNTMwQzgwMENFRTgwMSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IuaCAqLywKKwkJCQkzMUU4MkU2RDFDMDUyRkI5MDBDRUU4MDEg
LyogV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmlkbCAqLywK
KwkJCQkzMUU4MkU2MTFDMDRGNTc0MDBDRUU4MDEgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yLmNwcCAqLywKKwkJCQkzMUU4MkU2MjFDMDRGNTc0MDBDRUU4MDEgLyogV2ViR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8sCisJCQkJMzFFODJFNjAxQzA0RjI4ODAwQ0VFODAx
IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwgKi8sCisJCQkJMzFFODJFN0Ix
QzA2NDY4QjAwQ0VFODAxIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwICovLAorCQkJ
CTMxRTgyRTdDMUMwNjQ2OEIwMENFRTgwMSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmgg
Ki8sCisJCQkJMzFFODJFN0ExQzA2NDYxNTAwQ0VFODAxIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5l
U3RhdGUuaWRsICovLAorCQkJCTMxQzYzM0ZEMUM5NjBFRTEwMDgyNzMyQSAvKiBXZWJHUFVUZXh0
dXJlRGVzY3JpcHRvci5pZGwgKi8sCisJCQkJMzFDNjMzRkUxQzk2MTFDNDAwODI3MzJBIC8qIFdl
YkdQVVRleHR1cmVEZXNjcmlwdG9yLmNwcCAqLywKKwkJCQkzMUM2MzNGRjFDOTYxMUM0MDA4Mjcz
MkEgLyogV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaCAqLywKKwkJCQkzMUU4MkVBMjFDMDdCNUE3
MDBDRUU4MDEgLyogV2ViR1BVVGV4dHVyZS5jcHAgKi8sCisJCQkJMzFFODJFQTMxQzA3QjVBODAw
Q0VFODAxIC8qIFdlYkdQVVRleHR1cmUuaCAqLywKKwkJCQkzMUU4MkVBNjFDMDdCNUJDMDBDRUU4
MDEgLyogV2ViR1BVVGV4dHVyZS5pZGwgKi8sCisJCQkJMzEzMkY4REYxQzg1MzAxRDAwODNERkI0
IC8qIFdlYkdQVUVudW1zLmlkbCAqLywKKwkJCQkzMTMyRjhFMTFDODUzMEExMDA4M0RGQjQgLyog
V2ViR1BVRW51bXMuY3BwICovLAorCQkJCTMxMzJGOEUyMUM4NTMwQTEwMDgzREZCNCAvKiBXZWJH
UFVFbnVtcy5oICovLAogCQkJKTsKIAkJCXBhdGggPSBjYW52YXM7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtMjAxMzUsNiArMjA0NTksNDQgQEAKIAkJQTgzQjc5MDgwQ0NBRkYyQjAw
MEIwODI1IC8qIEhUTUwgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAorCQkJCTMxQzYzNDA2MUM5NjFEMDEwMDgyNzMyQSAvKiBKU1dlYkdQVVRleHR1cmVEZXNjcmlw
dG9yLmNwcCAqLywKKwkJCQkzMUM2MzQwNzFDOTYxRDAxMDA4MjczMkEgLyogSlNXZWJHUFVUZXh0
dXJlRGVzY3JpcHRvci5oICovLAorCQkJCTMxRDUxMzc0MUM4QTZGNTcwMEI3QkY0MCAvKiBKU1dl
YkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLywKKwkJCQkzMUQ1
MTM3NTFDOEE2RjU3MDBCN0JGNDAgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvci5oICovLAorCQkJCTMxRDUxMzYyMUM4QTE3ODkwMEI3QkY0MCAvKiBKU1dlYkdQ
VVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzFENTEzNjMxQzhB
MTc4OTAwQjdCRjQwIC8qIEpTV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgg
Ki8sCisJCQkJMzFFODJFRjExQzBGODBGODAwQ0VFODAxIC8qIEpTV2ViR1BVQnVmZmVyLmNwcCAq
LywKKwkJCQkzMUU4MkVGMjFDMEY4MEY4MDBDRUU4MDEgLyogSlNXZWJHUFVCdWZmZXIuaCAqLywK
KwkJCQkzMUU4MkVEMTFDMDkyQjVEMDBDRUU4MDEgLyogSlNXZWJHUFVSZW5kZXJDb21tYW5kRW5j
b2Rlci5jcHAgKi8sCisJCQkJMzFFODJFRDIxQzA5MkI1RDAwQ0VFODAxIC8qIEpTV2ViR1BVUmVu
ZGVyQ29tbWFuZEVuY29kZXIuaCAqLywKKwkJCQkzMUU4MkVDNzFDMDkxNjUxMDBDRUU4MDEgLyog
SlNXZWJHUFVDb21tYW5kQnVmZmVyLmNwcCAqLywKKwkJCQkzMUU4MkVDODFDMDkxNjUxMDBDRUU4
MDEgLyogSlNXZWJHUFVDb21tYW5kQnVmZmVyLmggKi8sCisJCQkJMzFFODJFQjkxQzA3REQyNzAw
Q0VFODAxIC8qIEpTV2ViR1BVQ29tbWFuZFF1ZXVlLmNwcCAqLywKKwkJCQkzMUU4MkVCQTFDMDdE
RDI3MDBDRUU4MDEgLyogSlNXZWJHUFVDb21tYW5kUXVldWUuaCAqLywKKwkJCQkzMUU4MkVBNzFD
MDdCOEI3MDBDRUU4MDEgLyogSlNXZWJHUFVUZXh0dXJlLmNwcCAqLywKKwkJCQkzMUU4MkVBODFD
MDdCOEI3MDBDRUU4MDEgLyogSlNXZWJHUFVUZXh0dXJlLmggKi8sCisJCQkJMzFFODJFOUExQzA2
NzVFMzAwQ0VFODAxIC8qIEpTV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IuY3BwICovLAorCQkJCTMxRTgyRTlCMUMwNjc1RTMwMENFRTgwMSAvKiBKU1dlYkdQVVJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8sCisJCQkJMzFFODJFOUMxQzA2NzVF
MzAwQ0VFODAxIC8qIEpTV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwICovLAorCQkJCTMx
RTgyRTlEMUMwNjc1RTMwMENFRTgwMSAvKiBKU1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgg
Ki8sCisJCQkJMzFFODJFODMxQzA2NEMwMzAwQ0VFODAxIC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxp
bmVTdGF0ZS5jcHAgKi8sCisJCQkJMzFFODJFODQxQzA2NEMwMzAwQ0VFODAxIC8qIEpTV2ViR1BV
UmVuZGVyUGlwZWxpbmVTdGF0ZS5oICovLAorCQkJCTMxRTgyRTcyMUMwNTM1ODIwMENFRTgwMSAv
KiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8s
CisJCQkJMzFFODJFNzMxQzA1MzU4MjAwQ0VFODAxIC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8sCisJCQkJMzFFODJFNjUxQzA0RkFBRjAwQ0VF
ODAxIC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCAqLywKKwkJCQkzMUU4
MkU2NjFDMDRGQUFGMDBDRUU4MDEgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iu
aCAqLywKKwkJCQkzMUU4MkUzNzFCRkQ0RkREMDBDRUU4MDEgLyogSlNXZWJHUFVGdW5jdGlvbi5j
cHAgKi8sCisJCQkJMzFFODJFMzgxQkZENEZERDAwQ0VFODAxIC8qIEpTV2ViR1BVRnVuY3Rpb24u
aCAqLywKKwkJCQkzMUI1QUVFRTFCRkFBQzVEMDBCMzREREYgLyogSlNXZWJHUFVMaWJyYXJ5LmNw
cCAqLywKKwkJCQkzMUI1QUVFRjFCRkFBQzVEMDBCMzREREYgLyogSlNXZWJHUFVMaWJyYXJ5Lmgg
Ki8sCisJCQkJMzE3NUIwOEYxQkVEOTFCOTAwNkVBMEFEIC8qIEpTV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dC5jcHAgKi8sCisJCQkJMzE3NUIwOTAxQkVEOTFCOTAwNkVBMEFEIC8qIEpTV2ViR1BVUmVu
ZGVyaW5nQ29udGV4dC5oICovLAorCQkJCTMxRTgyRUUzMUMwRDI0MDAwMENFRTgwMSAvKiBKU1dl
YkdQVURyYXdhYmxlLmNwcCAqLywKKwkJCQkzMUU4MkVFNTFDMEQyNDIyMDBDRUU4MDEgLyogSlNX
ZWJHUFVEcmF3YWJsZS5oICovLAorCQkJCTMxMTdERjhBMUMxNjUyQTkwMDQ3QjRCRSAvKiBKU1dl
YkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwICovLAorCQkJCTMxMTdERjhCMUMxNjUyQTkw
MDQ3QjRCRSAvKiBKU1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCAqLywKKwkJCQkzMTE3
REY4QzFDMTY1MkE5MDA0N0I0QkUgLyogSlNXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgKi8s
CisJCQkJMzExN0RGOEQxQzE2NTJBOTAwNDdCNEJFIC8qIEpTV2ViR1BVRGVwdGhTdGVuY2lsU3Rh
dGUuaCAqLywKIAkJCQkzMUE3OTVDNDE4ODhCQUQxMDAzODJGOTAgLyogSlNBTkdMRUluc3RhbmNl
ZEFycmF5cy5jcHAgKi8sCiAJCQkJMzFBNzk1QzUxODg4QkFEMTAwMzgyRjkwIC8qIEpTQU5HTEVJ
bnN0YW5jZWRBcnJheXMuaCAqLywKIAkJCQlCRThFRjAzRTE3MUM4RkY5MDA5QjQ4QzMgLyogSlNB
dWRpb1RyYWNrLmNwcCAqLywKQEAgLTIyMjMyLDEwICsyMjU5NCw1MSBAQAogCQkJCUFEOUZGNkUw
MTkwODM5MUQwMDNCNjFFMCAvKiBJT1N1cmZhY2VQb29sQ29jb2EubW0gKi8sCiAJCQkJNTI2NzI0
RjIxQ0IyRkRGNjAwNzU5NzREIC8qIFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EuaCAqLywK
IAkJCQk1MjY3MjRGMTFDQjJGREY2MDA3NTk3NEQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25D
b2NvYS5tbSAqLywKKwkJCQkzMUU4MkVFRDFDMEY3OTMzMDBDRUU4MDEgLyogTWV0YWxCdWZmZXIu
aCAqLywKKwkJCQkzMUU4MkVFRTFDMEY3OTMzMDBDRUU4MDEgLyogTWV0YWxCdWZmZXIubW0gKi8s
CisJCQkJMzFFODJFQzMxQzA5MEYwRjAwQ0VFODAxIC8qIE1ldGFsQ29tbWFuZEJ1ZmZlci5oICov
LAorCQkJCTMxRTgyRUM0MUMwOTBGMEYwMENFRTgwMSAvKiBNZXRhbENvbW1hbmRCdWZmZXIubW0g
Ki8sCisJCQkJMzFFODJFQUYxQzA3RDhDQjAwQ0VFODAxIC8qIE1ldGFsQ29tbWFuZFF1ZXVlLmgg
Ki8sCisJCQkJMzFFODJFQjAxQzA3RDhDQjAwQ0VFODAxIC8qIE1ldGFsQ29tbWFuZFF1ZXVlLm1t
ICovLAorCQkJCTMxMTdERjgzMUMxNjRFMTMwMDQ3QjRCRSAvKiBNZXRhbERlcHRoU3RlbmNpbERl
c2NyaXB0b3IuaCAqLywKKwkJCQkzMTE3REY4NDFDMTY0RTEzMDA0N0I0QkUgLyogTWV0YWxEZXB0
aFN0ZW5jaWxEZXNjcmlwdG9yLm1tICovLAorCQkJCTMxMTdERjdGMUMxNjRDQ0UwMDQ3QjRCRSAv
KiBNZXRhbERlcHRoU3RlbmNpbFN0YXRlLmggKi8sCisJCQkJMzExN0RGODAxQzE2NENDRTAwNDdC
NEJFIC8qIE1ldGFsRGVwdGhTdGVuY2lsU3RhdGUubW0gKi8sCisJCQkJMzE3NUIwODYxQkVDMTU5
RDAwNkVBMEFEIC8qIE1ldGFsRGV2aWNlLmggKi8sCisJCQkJMzE3NUIwODUxQkVDMTU5RDAwNkVB
MEFEIC8qIE1ldGFsRGV2aWNlLm1tICovLAorCQkJCTMxRTgyRURGMUMwRDBFMDgwMENFRTgwMSAv
KiBNZXRhbERyYXdhYmxlLmggKi8sCisJCQkJMzFFODJFRTAxQzBEMEUwODAwQ0VFODAxIC8qIE1l
dGFsRHJhd2FibGUubW0gKi8sCisJCQkJMzEzMkY4RTUxQzg2MkIwNzAwODNERkI0IC8qIE1ldGFs
RW51bXMuaCAqLywKKwkJCQkzMUU4MkUzMDFCRkQ0MEVBMDBDRUU4MDEgLyogTWV0YWxGdW5jdGlv
bi5oICovLAorCQkJCTMxRTgyRTJGMUJGRDQwRUEwMENFRTgwMSAvKiBNZXRhbEZ1bmN0aW9uLm1t
ICovLAorCQkJCTMxRTgyRTI3MUJGQkVCNzAwMENFRTgwMSAvKiBNZXRhbExpYnJhcnkuaCAqLywK
KwkJCQkzMUU4MkUyNjFCRkJFQjcwMDBDRUU4MDEgLyogTWV0YWxMaWJyYXJ5Lm1tICovLAorCQkJ
CTMxRTgyRUQ1MUMwOTMxM0UwMENFRTgwMSAvKiBNZXRhbFJlbmRlckNvbW1hbmRFbmNvZGVyLmgg
Ki8sCisJCQkJMzFFODJFRDYxQzA5MzEzRTAwQ0VFODAxIC8qIE1ldGFsUmVuZGVyQ29tbWFuZEVu
Y29kZXIubW0gKi8sCisJCQkJMzFENTEzNjExQzg5MUIyQTAwQjdCRjQwIC8qIE1ldGFsUmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8sCisJCQkJMzFENTEzNUYxQzg5MUIxMTAwQjdC
RjQwIC8qIE1ldGFsUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLm1tICovLAorCQkJCTMx
RTgyRTk3MUMwNjcwMUUwMENFRTgwMSAvKiBNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmggKi8sCisJCQkJMzFFODJFOTYxQzA2NzAxRTAwQ0VFODAxIC8qIE1ldGFsUmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IubW0gKi8sCisJCQkJMzFENTEzNkUxQzhB
NjQwQzAwQjdCRjQwIC8qIE1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3Iu
aCAqLywKKwkJCQkzMUQ1MTM2RjFDOEE2NDBDMDBCN0JGNDAgLyogTWV0YWxSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvci5tbSAqLywKKwkJCQkzMUU4MkU4QzFDMDY2OUZFMDBDRUU4
MDEgLyogTWV0YWxSZW5kZXJQYXNzRGVzY3JpcHRvci5oICovLAorCQkJCTMxRTgyRThCMUMwNjY5
RkUwMENFRTgwMSAvKiBNZXRhbFJlbmRlclBhc3NEZXNjcmlwdG9yLm1tICovLAorCQkJCTMxRTgy
RTc3MUMwNTNEQjEwMENFRTgwMSAvKiBNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvci5oICovLAorCQkJCTMxRTgyRTc2MUMwNTNEQjEwMENFRTgwMSAvKiBNZXRhbFJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5tbSAqLywKKwkJCQkzMUU4MkU2
QTFDMDUwRjFCMDBDRUU4MDEgLyogTWV0YWxSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLywK
KwkJCQkzMUU4MkU2OTFDMDUwRjFCMDBDRUU4MDEgLyogTWV0YWxSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IubW0gKi8sCisJCQkJMzFFODJFODAxQzA2NDdFOTAwQ0VFODAxIC8qIE1ldGFsUmVuZGVy
UGlwZWxpbmVTdGF0ZS5oICovLAorCQkJCTMxRTgyRTdGMUMwNjQ3RTkwMENFRTgwMSAvKiBNZXRh
bFJlbmRlclBpcGVsaW5lU3RhdGUubW0gKi8sCisJCQkJMzFFODJFQUMxQzA3QkE2NjAwQ0VFODAx
IC8qIE1ldGFsVGV4dHVyZS5oICovLAorCQkJCTMxRTgyRUFCMUMwN0JBNjYwMENFRTgwMSAvKiBN
ZXRhbFRleHR1cmUubW0gKi8sCisJCQkJMzFDNjM0MDIxQzk2MTlBRTAwODI3MzJBIC8qIE1ldGFs
VGV4dHVyZURlc2NyaXB0b3IuaCAqLywKKwkJCQkzMUM2MzQwMzFDOTYxOUFFMDA4MjczMkEgLyog
TWV0YWxUZXh0dXJlRGVzY3JpcHRvci5tbSAqLywKIAkJCQkyRDNFRjQ0NDE5MTc5MTVDMDAwMzQx
ODQgLyogV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLmggKi8sCiAJCQkJMkQzRUY0
NDUxOTE3OTE1QzAwMDM0MTg0IC8qIFdlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5t
bSAqLywKIAkJCQkyRDNFRjQ0NjE5MTc5MTVDMDAwMzQxODQgLyogV2ViQ29yZUNBTGF5ZXJFeHRy
YXMuaCAqLywKIAkJCQkyRDNFRjQ0NzE5MTc5MTVDMDAwMzQxODQgLyogV2ViQ29yZUNBTGF5ZXJF
eHRyYXMubW0gKi8sCisJCQkJMzE3NUIwODIxQkVDMTI5QTAwNkVBMEFEIC8qIFdlYkdQVUxheWVy
LmggKi8sCisJCQkJMzE3NUIwODExQkVDMTI5QTAwNkVBMEFEIC8qIFdlYkdQVUxheWVyLm1tICov
LAogCQkJKTsKIAkJCXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC0yMjQwNCw2ICsyMjgwNyw3IEBACiAJCQkJNDE4QzM5NUQxQzhGMEFBQjAwNTFDOEEzIC8qIEpT
UmVhZGFibGVTdHJlYW1Tb3VyY2VDdXN0b20uY3BwICovLAogCQkJCTUxRDBDNTE1MERBQTkwQjcw
MDNCMzgzMSAvKiBKU1N0b3JhZ2VDdXN0b20uY3BwICovLAogCQkJCTU3QTlDODhEMURBNzBCRjgw
MEJDNzMwNSAvKiBKU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAgKi8sCisJCQkJMzFENTEzNjYxQzhB
NTU3MzAwQjdCRjQwIC8qIEpTV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yQ3Vz
dG9tLmNwcCAqLywKIAkJCQkwN0UxMTZCMDE0ODlDOUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tD
dXN0b20uY3BwICovLAogCQkJCTdDNzNGQjE3MTkxRUY4MDgwMDdERTA2MSAvKiBKU1VzZXJNZXNz
YWdlSGFuZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwICovLAogCQkJCUJFNkRGNzA4MTcxQ0EyQzUw
MERENTJCOCAvKiBKU1ZpZGVvVHJhY2tDdXN0b20uY3BwICovLApAQCAtMjI0MTMsNiArMjI4MTcs
NyBAQAogCQkJCUUxODI1OEFCMEVGM0NENzAwMDkzMzI0MiAvKiBKU1dvcmtlckdsb2JhbFNjb3Bl
Q3VzdG9tLmNwcCAqLywKIAkJCQlCQzM0OEJCRDBEQjdGNTMxMDA0QUJBQjkgLyogSlNYTUxIdHRw
UmVxdWVzdEN1c3RvbS5jcHAgKi8sCiAJCQkJQkNFRkUxRTQwRENBNUYzMzAwNzM5MjE5IC8qIEpT
WFNMVFByb2Nlc3NvckN1c3RvbS5jcHAgKi8sCisJCQkJMzE3NUIwOTMxQkYxMEI0NDAwNkVBMEFE
IC8qIEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgKi8sCiAJCQkpOwogCQkJbmFt
ZSA9IEN1c3RvbTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNTA5OSw2ICsyNTUw
NCw3IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQkzMUI1QUVFRDFCRkE4Njg3MDBCMzRE
REYgLyogV2ViR1BVT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDgyMjMxMzFFMzg2RTI0
MDA2NkZDNzkgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUUx
QjFEMTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTI5QTgxMjJFMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxs
LmggaW4gSGVhZGVycyAqLywKQEAgLTI1MTA4LDYgKzI1NTE0LDcgQEAKIAkJCQkyOUE4MTIyQzBG
QkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTI5QTgxMjQzMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJveC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMjlBODEyNDIwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlM
aXN0Qm94T3B0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTE3REY5MzFDMTY2MDBEMDA0N0I0
QkUgLyogSlNXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdC
MEFCQ0YxMDMyMjQyMjAwRkJEQzMzIC8qIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwN0IwMTEzRjEwMzIyNDIyMDBGQkRDMzMgLyogQWNjZXNzaWJpbGl0
eU1lZGlhQ29udHJvbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTc2Q0REMkYzMTEwM0RBNjYwMDY4
MDUyMSAvKiBBY2Nlc3NpYmlsaXR5TWVudUxpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMjUxMTcs
NiArMjU1MjQsNyBAQAogCQkJCTI5QTgxMjM2MEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmls
aXR5T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNDA5Qzk4NTExNkQwREREMDA3MTk3QkQg
LyogQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQky
OUE4MTIzOTBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMzFFODJFQTUxQzA3QjVBODAwQ0VFODAxIC8qIFdlYkdQVVRleHR1
cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQzRGNkVCMTEwOEY5QTUwMDk5RDBEQiAvKiBBY2Nl
c3NpYmlsaXR5U2Nyb2xsYmFyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTQ4OUZDNzEyQzAwRjAz
MDBEODNGMEYgLyogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA3MDlGQzRFMTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI1MTI1LDYgKzI1NTMzLDcgQEAKIAkJCQlBQUMwOENGMzE1Rjk0MUZEMDBG
MUUxODggLyogQWNjZXNzaWJpbGl0eVNWR1Jvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgx
MjJCMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5VGFibGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTI5QTgxMjMyMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5VGFibGVDZWxs
LmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTE3REY4MTFDMTY0RDAwMDA0N0I0QkUgLyogTWV0YWxE
ZXB0aFN0ZW5jaWxTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyNDEwRkJCOUMxRDAw
NTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MjlBODEyM0YwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRh
aW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMzEwRkJCOUMxRDAwNTEwMjkzIC8qIEFj
Y2Vzc2liaWxpdHlUYWJsZVJvdy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTQwNSw2ICsyNTgxNCw3
IEBACiAJCQkJN0M5M0YzNEExQUE2QkE1RTAwQTk4QkFCIC8qIENvbXBpbGVkQ29udGVudEV4dGVu
c2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdDMjM2MTExMDk3RUU3NzAwRUY5RjcyIC8qIENv
bXBsZXhUZXh0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRCQTUwOTAxQkNGQkQ5
NTAwRTM0RUY3IC8qIENvbXBvc2VkVHJlZUFuY2VzdG9ySXRlcmF0b3IuaCBpbiBIZWFkZXJzICov
LAorCQkJCTMxRDUxMzY1MUM4QTE3ODkwMEI3QkY0MCAvKiBKU1dlYkdQVVJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0RkExODUxQkNBNkI1QTAw
OTFCNkVGIC8qIENvbXBvc2VkVHJlZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTZG
RTExNjBFNkUxREE3MDBCRjYwODggLyogQ29tcG9zaXRlQW5pbWF0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5MzMwOURERDA5OUU2NDkyMDA1NkU1ODEgLyogQ29tcG9zaXRlRWRpdENvbW1hbmQu
aCBpbiBIZWFkZXJzICovLApAQCAtMjU0NzAsNiArMjU4ODAsNyBAQAogCQkJCTJENDgxRjAyMTQ2
QjVDNTUwMEFBNzgzNCAvKiBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTFDNDE2MTIwRjY1NjJGRDAwOTJEMkZCIC8qIENyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFBQkU2N0IxRDA1ODBEQjAwNkQ4NjJEIC8qIENyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFDNjM0MDExQzk2
MThCNTAwODI3MzJBIC8qIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMUM0MTVEQTBGNjU1RDZGMDA5MkQyRkIgLyogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1
bHRDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE2OTgwM0QxMTMzNTQyRDAwODk0MTE1IC8q
IENSdW50aW1lT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzVDQTI4QjEzMDM2NUY4MDBF
OTlBRDkgLyogQ3J5cHRvLmggaW4gSGVhZGVycyAqLywKQEAgLTI1NTA1LDYgKzI1OTE2LDcgQEAK
IAkJCQlFMTlBQzNGNTE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMTU3QThFNTE4MTczQTNBMDA5RjgyMUQgLyogQ3J5cHRvS2V5
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTI1Rjg0RTE4MjQyODlEMDBEODRDRDkgLyogQ3J5cHRv
S2V5QUVTLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMUU4MkU4MjFDMDY0N0U5MDBDRUU4MDEgLyog
TWV0YWxSZW5kZXJQaXBlbGluZVN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTI1Rjg1RTE4
MkMyREY2MDBEODRDRDkgLyogQ3J5cHRvS2V5RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEy
NUY4NjQxODJDMzAzQTAwRDg0Q0Q5IC8qIENyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMUMyNjZERjE4MzE5RjMxMDAzRjhCMzMgLyogQ3J5cHRvS2V5RGF0
YVJTQUNvbXBvbmVudHMuaCBpbiBIZWFkZXJzICovLApAQCAtMjU1NDIsNiArMjU5NTQsNyBAQAog
CQkJCUJDNjRCNERBMENCNDI5OEEwMDVGMkI2MiAvKiBDU1NGb250RmFjZVNyY1ZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4MzUyMEM3RTFBNzFCRkNDMDA2QkQyQUEgLyogQ1NTRm9udEZhbWls
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE2RTlGQzQxM0MxN0QxRDAwNDZBN0Y4IC8qIENTU0Zv
bnRGZWF0dXJlVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxRDUxMzZDMUM4QTYzMzEwMEI3
QkY0MCAvKiBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM2NEI0REMwQ0I0Mjk4QTAwNUYyQjYyIC8qIENTU0ZvbnRTZWxlY3Rv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZDRUQwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0Zv
bnRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzIxREYyRUExRDlFNEU5OTAwRjVCMjRDIC8q
IENTU0ZvbnRWYXJpYXRpb25WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTU5MSw2ICsyNjAw
NCw3IEBACiAJCQkJQkM3RDhGRjQxQkQxQTQ3OTAwRkZFNTQwIC8qIENTU1JldmVydFZhbHVlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkQwRDBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUnVsZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZDRjIwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1J1bGVM
aXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQkzMUU4MkVCNzFDMDdEOEU3MDBDRUU4MDEgLyogV2Vi
R1BVQ29tbWFuZFF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzFGNTFBMTBEMjYyRkEwMDBF
Q0UwRDUgLyogQ1NTU2VnbWVudGVkRm9udEZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU3
MzUyMEExOTlDNzcwMDdGQjhDNSAvKiBDU1NTZWxlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTRDMTc4OUIwRUU2OTAzODAwODI0RDY5IC8qIENTU1NlbGVjdG9yTGlzdC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNTY1NCw2ICsyNjA2OCw3IEBACiAJCQkJNDUzRUI2MzcxNTlDNTcwNDAwMDAxQkI3
IC8qIERhdGVUaW1lRm9ybWF0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RCODEyNTFGMTJE
MDAzRUYyNjkgLyogRGF0ZVRpbWVJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIz
REJBMTI1MUYxMkQwMDNFRjI2OSAvKiBEYXRlVGltZUxvY2FsSW5wdXRUeXBlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkzMUU4MkUyRTFCRkQzRjkzMDBDRUU4MDEgLyogV2ViR1BVRnVuY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNkExMkJFMUEwMDkyMzcwMEM2REU3MiAvKiBEZWJ1Z1BhZ2VP
dmVybGF5cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDVGRUE1RDAxNTZEREU4QzAwNjU0MTAxIC8q
IERlY2ltYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QzIyOEExMTFENTcyMkUwMEQ1QTdEMyAv
KiBEZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTI1Njg4LDYg
KzI2MTAzLDcgQEAKIAkJCQk1OUE4RjFENjExQTY5NTEzMDAxQUMzNEEgLyogRGV2aWNlT3JpZW50
YXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1OTBFMUI0OTExRTRFRjRCMDA2
OUY3ODQgLyogRGV2aWNlT3JpZW50YXRpb25EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk1OUE4
NUVBNDExOUQ2OEVDMDBERUYxRUYgLyogRGV2aWNlT3JpZW50YXRpb25FdmVudC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMzFFODJFQ0ExQzA5MTY1MTAwQ0VFODAxIC8qIEpTV2ViR1BVQ29tbWFuZEJ1
ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY3NzI1RkQxQTVCM0FEOTAwM0MyNEREIC8qIERG
QS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEOUY1NjYxQUEwRjczQzAwREE0NUZGIC8qIERGQUJ5
dGVjb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0Q5RjU2NzFBQTBGNzQyMDBEQTQ1RkYgLyog
REZBQnl0ZWNvZGVDb21waWxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTY5NSw4ICsyNjExMSwx
MCBAQAogCQkJCTI2QTgwNzg1MUIxOEY5NzcwMEUyMTlCRSAvKiBERkFDb21iaW5lci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMjZBNTE3RkUxQUI5MjIzODAwNjMzNURGIC8qIERGQU1pbmltaXplci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMjY3NzI1RkYxQTVCM0FEOTAwM0MyNEREIC8qIERGQU5vZGUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTMxRTgyRUM1MUMwOTBGMEYwMENFRTgwMSAvKiBNZXRhbENv
bW1hbmRCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMTlBMjY4MUExM0U3MDAwMDhENjUw
RSAvKiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZGQ0I2
MTgxQTcwODIwRTAwQzVBMjFFIC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMzFFODJFN0UxQzA2NDY4QzAwQ0VFODAxIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5l
U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNzJEQjMxMUE2NzgwQTgwMEM2OTdDNSAvKiBE
aWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFQ0FERkM3
MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0VDQURGQzkxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjU3MTMsNiArMjYxMzEsNyBAQAogCQkJCTQ5QUYyRDY5MTQ0MzVEMDUw
MDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTJE
MjlFQ0M2MTkyRUNDODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTJEMjlFQ0NBMTkyRjFGMUQwMDk4NEI3OCAvKiBEaXNwbGF5UmVm
cmVzaE1vbml0b3JJT1MuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxRTgyRTZDMUMwNTBGMUIwMENF
RTgwMSAvKiBNZXRhbFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkRFNzAwMjMxOTJGRTgyQTAwQjA5NzVDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkQyOUVDQzgxOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENTI0ODFCMThFMjAw
RUQwMDA4QTA3RCAvKiBEaXNwbGF5U2xlZXBEaXNhYmxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
NTc0Myw2ICsyNjE2Miw3IEBACiAJCQkJN0FBQkEyNUExNEJDNjEzMzAwQUE5QTExIC8qIERPTUVk
aXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxQkRGMjUxNTZDMThDNzAwMUMxMjQzIC8qIERP
TUVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUQ2MDlCRDExNDVCMDcxMDBDODY4NEUgLyog
RE9NRm9ybURhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxRTgyRUNGMUMwOTI2MjIwMENFRTgw
MSAvKiBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgx
ODVGM0IwOTc2NTc2NjAwNTgyNkQ5IC8qIERPTUltcGxlbWVudGF0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFM0M5OUEwOTFEQzNENDFDMDA3OTRBRDMgLyogRE9NSklUQ2hlY2tET00uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUzMTUwRUE3MURBNzIxOTMwMDE5NDAxMiAvKiBET01KSVRIZWxwZXJz
LmggaW4gSGVhZGVycyAqLywKQEAgLTI1NzY2LDkgKzI2MTg2LDExIEBACiAJCQkJQkM1QTg2ODUw
QzMzNjc2MDAwRUVBNjQ5IC8qIERPTVNlbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU0
NDI3NEIxMUE1N0U3QTAwNjNBNzQ5IC8qIERPTVN0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDNjQ2NDBBMTFEN0YzMDQwMDY0NTVCMCAvKiBET01TdHJpbmdNYXAuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTMxRTgyRTk1MUMwNjZDQjgwMENFRTgwMSAvKiBXZWJHUFVSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTg4NjA0QjQwRjJF
NjU0QTAwMEI2NDQzIC8qIERPTVRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNUZENjlFMDEy
ODQ1RDQzMDBCMkJFQjMgLyogRE9NVGltZVN0YW1wLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NkZD
MkIwQzEyMzcwREEwMDA2QTk5MUEgLyogRE9NVG9rZW5MaXN0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQkzMUQ1MTM1RTFDODkwREI1MDBCN0JGNDAgLyogV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnRE
ZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTM3REZEQjEyREJBRkI4MDBBNkIyMzMg
LyogRE9NVVJMLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDlERTE4MjE3QUFENkE0MDBFQTM4NkQg
LyogRE9NVVJMTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTE1RkNDOUZFMUI0REY4
NUUwMEU3MjMyNiAvKiBET01VUkxNZWRpYVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTgz
NCw2ICsyNjI1Niw3IEBACiAJCQkJOTlFNDVBMTcxOEEwNjNCRTAwMjZEODhGIC8qIEV2ZW50TG9v
cElucHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUNDMEI1MTE4QkU5ODQ5MDA2Q0VCQ0MgLyog
RXZlbnRMb29wSW5wdXREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0ZFN0NBODFE
QTlGMUI2MDAzNzIzN0MgLyogRXZlbnRNb2RpZmllckluaXQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTMxRDUxMzc3MUM4QTZGNTcwMEI3QkY0MCAvKiBKU1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4ODVDNDA4QjdFM0QxMDBF
NzA3QzQgLyogRXZlbnROYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUI3MTRFMjExQzkxMTY2
OTAwQUMwRTkyIC8qIEV2ZW50UGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEY2NzU2MUIxMjg4
QjE3QjAwNDdBQ0EzIC8qIEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovLApAQCAtMjU4ODMsNiAr
MjYzMDYsNyBAQAogCQkJCTJFREYzNjlGMTIyQzk0QzgwMDJGN0Q0RSAvKiBGaWxlRXhjZXB0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzUxRDRCMTFERjkxNkI0MDA4MDEwQ0QgLyogRmlsZUhh
bmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4OEE5MDUxNzU1M0NENzAwMEM3NEY5IC8qIEZp
bGVJY29uTG9hZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMUU4MkU3MTFDMDUzMEM5MDBDRUU4
MDEgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGNTVCM0RCRTEyNTFGMTJEMDAzRUYyNjkgLyogRmlsZUlucHV0VHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2RDZDODYxMjJCOEEzRDAwMUZEMUY3IC8qIEZpbGVM
aXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0Njg5RjFBRjEyNjdCQUUxMDBFOEQzODAgLyogRmls
ZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTI1OTQyLDYgKzI2MzY2LDcgQEAKIAkJCQkw
ODVCOTJCQjBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWlsZGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODEzNkQzODA5NzNBOEU3MDBENzQ0NjMgLyogRm9ybURhdGFMaXN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3RUU2ODQ2NzEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURhdGFTdHJlYW1D
Rk5ldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFFODJFQjExQzA3RDhDQzAwQ0VFODAxIC8qIE1l
dGFsQ29tbWFuZFF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY0RTBDRTkyMzRFMDA3
RUYzQ0QgLyogRm9ybURhdGFTdHJlYW1NYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCNTBCMURF
MTdDRDRDMEYwMDg3RjYzQyAvKiBGb3JtTmFtZWRJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQk2
NTZEMzczQTBBREJBNURFMDBBNDU1NEQgLyogRm9ybVN0YXRlLmggaW4gSGVhZGVycyAqLywKQEAg
LTI2MTIyLDYgKzI2NTQ3LDcgQEAKIAkJCQlBOENGRjdBMzBBMTU2OTc4MDAwQTQyMzQgLyogSFRN
TFF1b3RlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThEMjIzRkUxNkI1MkU0RTAwMTU3
Mjg4IC8qIEhUTUxSZXNvdXJjZVByZWxvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg3MURD
MjUwQTE1MjA1NzAwQjEyQTY4IC8qIEhUTUxTY3JpcHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
KwkJCQkzMTE3REY4NTFDMTY0RTFBMDA0N0I0QkUgLyogTWV0YWxEZXB0aFN0ZW5jaWxEZXNjcmlw
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdCMzg3NTEyMjg4M0U5MDBCODFGRjggLyogSFRN
TFNjcmlwdFJ1bm5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3QjM4NzYxMjI4ODNFOTAwQjgx
RkY4IC8qIEhUTUxTY3JpcHRSdW5uZXJIb3N0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODEzNjlE
ODA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTFNlbGVjdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApA
QCAtMjYxNzEsOSArMjY1OTcsMTEgQEAKIAkJCQlDNTg1QTY2MzExRDRGQUM1MDA0QzNFNEIgLyog
SURCQmluZGluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3QjI1QUExQ0M4MkIy
QTAwNjFDMDExIC8qIElEQkNvbm5lY3Rpb25Qcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE4
NUZDQjkxQkI0Q0JGODAwMTI4OThGIC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVudC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMzFENTEzNzAxQzhBNjQwQzAwQjdCRjQwIC8qIE1ldGFsUmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNkQ3RDcyMUJC
NUYwQkQwMEFGN0M3NyAvKiBJREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTE5OEY3QzExQkM0ODU2NzAwRTJDQzVGIC8qIElEQkNvbm5lY3Rpb25Ub1Nl
cnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE2RDdENzAxQkI1RjBCRDAwQUY3Qzc3IC8qIElE
QkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMUU4MkVF
QjFDMEY3OTBGMDBDRUU4MDEgLyogV2ViR1BVQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MTg1RkM3QjFCQjRDNEU4MDAxMjg5OEYgLyogSURCQ3Vyc29yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QzNEOEVFQjFFMEIxNUE3MDAyM0IwODQgLyogSURCQ3Vyc29yRGlyZWN0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTcxMzhGQzFCRjNBREY0MDAwRDVGMDEgLyogSURCQ3Vyc29ySW5mby5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNjIwMiw2ICsyNjYzMCw3IEBACiAJCQkJNTE4NUZDQTAxQkI0
QzRFODAwMTI4OThGIC8qIElEQk9iamVjdFN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTYw
NzEyRjFCRDgzMDc4MDBEQkM0RjIgLyogSURCT2JqZWN0U3RvcmVJbmZvLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MTg1RkNBNDFCQjRDNEU4MDAxMjg5OEYgLyogSURCT3BlbkRCUmVxdWVzdC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMzFDNjM0MDkxQzk2MUQ0MDAwODI3MzJBIC8qIEpTV2ViR1BVVGV4
dHVyZURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxODVGQ0E3MUJCNEM0RTgwMDEy
ODk4RiAvKiBJREJSZWNvcmRJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTg1RkNB
OTFCQjRDNEU4MDAxMjg5OEYgLyogSURCUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0
MTI5OTkxQzY5NzY5MDAwNTlFNzE0IC8qIElEQlJlcXVlc3RDb21wbGV0aW9uRXZlbnQuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjYyMzIsNiArMjY2NjEsNyBAQAogCQkJCTJEMjUzOTYzMThDRTdGNjIw
MDI3MDIyMiAvKiBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTEwMTkyRDYxOEI2QjlCNzAwN0ZDN0ExIC8qIEltYWdlQ29udHJvbHNSb290RWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwMTkyRDIxOEI2QjlBQjAwN0ZDN0ExIC8qIEltYWdl
Q29udHJvbHNSb290RWxlbWVudE1hYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFFODJFOUYxQzA2
NzVFMzAwQ0VFODAxIC8qIEpTV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Nzk3OTFBMEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFn
ZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1NUI4N0VEMUNBQUYwQUIwMDM0OTQyNSAvKiBJ
bWFnZURlY29kZXJDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcyMDVBQjYxMjM5MjkxMDAwQjE3
MzgwIC8qIEltYWdlRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjYyNzAsNiArMjY3MDAs
NyBAQAogCQkJCUE4Q0ZGNUUzMEExNTVBMDUwMDBBNDIzNCAvKiBJbmxpbmVGbG93Qm94LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQ0U3ODkxNjExMjBENjA4MDA2MEVDRTUgLyogSW5saW5lSXRlcmF0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBNEMzQTc3MEIyQjE2NzkwMDIzMzRBMiAvKiBJbmxp
bmVTdHlsZVNoZWV0T3duZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxNzVCMDkyMUJFRDkxQjkw
MDZFQTBBRCAvKiBKU1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDRUE0ODVBMDk3RDkzMDIwMDk0QzlFNCAvKiBJbmxpbmVUZXh0Qm94LmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQzAxMDcwMTE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MTBBNThFNTFCQUE0MEIxMDBDMTkyODIgLyogSW5Qcm9jZXNz
SURCU2VydmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI2Mjg5LDYgKzI2NzIwLDcgQEAKIAkJCQk0
QTlDQzgyMTE2QkY5QkI0MDBFQzY0NUEgLyogSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJN0FCMEIxQzExMjExQTYyMjAwQTc2OTQwIC8qIEluc3BlY3RvckRhdGFi
YXNlQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjA2MjE0MEY1RjE5MjYwMEEwN0VBQyAv
KiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMUU4MkUz
QTFCRkQ0RkREMDBDRUU4MDEgLyogSlNXZWJHUFVGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJN0EyNDU4N0MxMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGM0Q0QzQ3OTEyRTA3NjYzMDAzREExNTAgLyogSW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E3NEVDQkIxMDE4MzlBNjAwQkY5MzlF
IC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjQwOSw2
ICsyNjg0MSw3IEBACiAJCQkJMTRDRjdCMzQwOUY2RUNENzAwRUIzNjY1IC8qIEpTQ1NTUnVsZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ3MjZGRUYxNkRBMTFGNTAwM0E0RTZEIC8qIEpTQ1NTUnVs
ZUN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThEMDVGQTgwQTIzQjMwMTAwNUU3MjAzIC8q
IEpTQ1NTUnVsZUxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxNzVCMDg4MUJFQzE1OUQwMDZF
QTBBRCAvKiBNZXRhbERldmljZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyMDExQjcwQTAwMzEz
MzAwODMwM0Y5IC8qIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QUQ3MjZGRUQxNkRBMTE3MTAwM0E0RTZEIC8qIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0NkMyMDcwQzBERENBMTAwMjBDRkMzIC8qIEpTQ1NTU3R5
bGVSdWxlLmggaW4gSGVhZGVycyAqLywKQEAgLTI2NzI1LDYgKzI3MTU4LDcgQEAKIAkJCQkwNzk2
OURBQzE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENEYXRhQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDc5NjlEQUUxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDRGF0YUNoYW5uZWxFdmVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDc5NjlEQjAxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDRFRN
RlNlbmRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFFODJFQUExQzA3QjhCNzAwQ0VFODAxIC8q
IEpTV2ViR1BVVGV4dHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc5NjlEQjIxN0QxNDE1MTAw
N0ZGODQyIC8qIEpTUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDc5NjlEQjYxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDSWNlQ2FuZGlkYXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwNzk2OURCODE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENJY2VDYW5kaWRhdGVF
dmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzAwOCw2ICsyNzQ0Miw3IEBACiAJCQkJN0M0Qzk2
RTMxQUQ0NEFCRjAwMzY1QTUwIC8qIExhdW5jaFNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyOTE3QjU2MjE0NzM0OTZDMDA1MkM5RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMjkxN0I1NjMxNDczNDk2QzAwNTJDOUQwIC8qIExheWVyRmx1c2hT
Y2hlZHVsZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxNzVCMDg0MUJFQzEyOUIwMDZF
QTBBRCAvKiBXZWJHUFVMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ5MTZGRjcxOTVERjZB
MDAwNUFCMzQ5IC8qIExheWVyRmx1c2hUaHJvdHRsZVN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1ODAzNzE2NDFBNjZGMUQzMDBCQUY1MTkgLyogTGF5ZXJGcmFnbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0FBM0E2QTAxOTRCNTlCNjAwMUNCRDI0IC8qIExheWVyUG9vbC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNzA4Niw2ICsyNzUyMSw3IEBACiAJCQkJRkFCRTcyRjUxMDU5QzFFQjAwRDk5
OUREIC8qIE1hdGhNTEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0QTI4QUFDMTJERkI4
QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEJDRjgzRjcxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEZyYWN0aW9uRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMzFFODJFQkMxQzA3REQyNzAwQ0VFODAxIC8qIEpTV2ViR1BVQ29tbWFu
ZFF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQUJFNzJGOTEwNTlDMUVCMDBEOTk5REQgLyog
TWF0aE1MTWF0aEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0QTI4QUFGMTJERkI4QkYw
MEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkE2NTRBNkMxMTA4
QUJFRDAwMjYxNkYxIC8qIE1hdGhNTE9wZXJhdG9yRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNzE0NCw2ICsyNzU4MCw3IEBACiAJCQkJQ0Q1MjA5RTQxQjBCRDgzODAwNzcxODRFIC8qIE1l
ZGlhUGxheWVyRW51bXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3NkYwRDBFMTJCODE5MjcwMEMy
NkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCURGOUFGRDcyMTNGQzMxRDgwMDE1RkVCNyAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTMyRjhFNDFDODUzMEExMDA4M0RGQjQg
LyogV2ViR1BVRW51bXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzhCNUEzMTgwNDYzNDcwMDE2
RTY4NSAvKiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTE1MDUyNEY0MUI3MTJGRjYwMDY5NkFBOSAvKiBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDYxM0U2MENENjgxQTkw
MEZBREE3NSAvKiBNZWRpYVBsYXllclByaXZhdGVRVEtpdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
NzE1Nyw2ICsyNzU5NCw3IEBACiAJCQkJRDNBOTRBM0IxMjJEQUJBQzAwQTM3QkJDIC8qIE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUQzQUExMEY0MTIzQTk4QUEw
MDkyMTUyQiAvKiBNZWRpYVF1ZXJ5TWF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTQ5M0I2
QzExRDc0QjQxMjAwODhFNzgwIC8qIE1lZGlhUXVlcnlQYXJzZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTMxRTgyRUUxMUMwRDBFMDgwMENFRTgwMSAvKiBNZXRhbERyYXdhYmxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDOTA4NDNEMDFCMThFNDdEMDBCNjg1NjQgLyogTWVkaWFSZW1vdGVDb250cm9s
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q4QUNBOEYxRDIzOTcxOTAwRUNDNTlFIC8qIE1lZGlh
UmVtb3RlU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEOEFDQThCMUQyMzk0NjQwMEVD
QzU5RSAvKiBNZWRpYVJlbW90ZVNQSS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzE3NSw2ICsyNzYx
Myw3IEBACiAJCQkJQ0Q2NDFFQjMxODE4RjVFRDAwRUU0QzQxIC8qIE1lZGlhU291cmNlUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDOEI1QTcxODA0NzRGNzAwMTZFNjg1IC8qIE1lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEREMxRTdBMThBOTUy
RjMwMDI3QTlENCAvKiBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTMxRTgyRTI5MUJGQkVCNzAwMENFRTgwMSAvKiBNZXRhbExpYnJhcnkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNENjFGRTY4MTc5NEFBREIwMDQxMDFFQiAvKiBNZWRpYVNvdXJjZVJlZ2lzdHJ5
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDkxNTE3RDE0RDFDMDA0MjBBQTEgLyogTWVkaWFT
dHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTRDMTdEMTcwOTYwMDQyMEFBMSAvKiBN
ZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTI3Mjk0
LDggKzI3NzMzLDEwIEBACiAJCQkJMUE5MjdGRDIxNDE2QTE1QjAwM0E4M0M4IC8qIG5wYXBpLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTIxOUIzQjBEQ0E4N0FCMDA0MEUzQTAgLyogbnBmdW5jdGlv
bnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOTI3RkQzMTQxNkExNUIwMDNBODNDOCAvKiBucHJ1
bnRpbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxRTgyRUExMUMwNjc1RTMwMENFRTgwMSAvKiBK
U1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUQw
RjBEN0UyQjgyMDA3QzM5ODMgLyogbnBydW50aW1lX2ltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBNTY5RDEwMEQ3RTJCODIwMDdDMzk4MyAvKiBucHJ1bnRpbWVfaW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTMxRTgyRTg2MUMwNjRDMDMwMENFRTgwMSAvKiBKU1dlYkdQVVJlbmRlclBp
cGVsaW5lU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDExMEQ3RTJCODIwMDdDMzk4
MyAvKiBucHJ1bnRpbWVfcHJpdi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5MjdGRDQxNDE2QTE1
QjAwM0E4M0M4IC8qIG5wdHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENzdBQzI5MUJGMkI5
ODYwMDcyNDcwQSAvKiBOU0FjY2Vzc2liaWxpdHlTUEkuaCBpbiBIZWFkZXJzICovLApAQCAtMjcz
MTMsNiArMjc3NTQsNyBAQAogCQkJCTkzRjFFMUVDMUE0MEZEREMwMDM0OEQxMyAvKiBOU1BvcG92
ZXJTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNTAwRjMyMTNGREUzQkUwMDk5RUMyNCAvKiBO
U1Njcm9sbGVySW1wRGV0YWlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQwRUE4QUIxQjg2N0U0
NDAwQ0U1NTgxIC8qIE5TU2Nyb2xsaW5nSW5wdXRGaWx0ZXJTUEkuaCBpbiBIZWFkZXJzICovLAor
CQkJCTMxMTdERjhGMUMxNjVGQzMwMDQ3QjRCRSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkRDQjgzNzkxOUY5OUJCQTAwQTdGQkU0IC8qIE5TU2hhcmlu
Z1NlcnZpY2VQaWNrZXJTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQ0I4MzdBMTlGOTlCQkEw
MEE3RkJFNCAvKiBOU1NoYXJpbmdTZXJ2aWNlU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzND
N0E3NTFDMEZCQzQ0MDAzNEZCOTcgLyogTlNTcGVsbENoZWNrZXJTUEkuaCBpbiBIZWFkZXJzICov
LApAQCAtMjczNzcsNiArMjc4MTksNyBAQAogCQkJCTkzNzdBQkEwMTVERUZFRUYwMDMxRkQwNCAv
KiBQYWdpbmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODg1MDY3RjExREEwNDVCMDAxODJC
OTggLyogUGFpbnRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODg1MDY4MDExREEwNDVCMDAx
ODJCOTggLyogUGFpbnRQaGFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzExN0RGOTExQzE2NjAw
RDAwNDdCNEJFIC8qIEpTV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTgwRTZDRkIwQTE5ODlDQTAwN0ZCOEM1IC8qIFBhaXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZEMzE2MEEzMTJCMDI2RjcwMEMxQTM1OSAvKiBQYW5uZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZEMzE2MDFBMTJCMDI2NzYwMEMxQTM1OSAvKiBQYW5uZXJOb2RlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTI3NDMwLDYgKzI3ODczLDcgQEAKIAkJCQk0OTlCM0VERDEyOERCNTAyMDBFNzI2
QzIgLyogUGxhdGZvcm1DQUFuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1RTIwMDYx
OEU3NzFGQzAwM0VDM0U1IC8qIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYxMzE2M0UxNkVEMENDODAwMzVDQzA0IC8qIFBsYXRmb3JtQ0FGaWx0ZXJzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkzMUU4MkU5OTFDMDY3MDFFMDBDRUU4MDEgLyogTWV0YWxSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk5
QjNFQzUxMjhDQ0M0NzAwRTcyNkMyIC8qIFBsYXRmb3JtQ0FMYXllci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDkzRTVFMDkxMkQ2NDIwNTAwMDIwMDgxIC8qIFBsYXRmb3JtQ0FMYXllckNsaWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ3MEJBMTMxODA3NERERjAwMDE5MDhBIC8qIFBsYXRmb3Jt
Q0FMYXllckNvY29hLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NDczLDYgKzI3OTE3LDcgQEAKIAkJ
CQkzRkY4MTNBNzFEQkE4NjQwMDA5QkYwMDEgLyogUG9pbnRlckxvY2tDb250cm9sbGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NDczMEQ5MjEyNDhGMEIzMDBEM0E5QzkgLyogUG9pbnRMaWdodFNv
dXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcwNTk5NzgxMDdEOTc1MjAwQTUwQTdDIC8qIFBv
bGljeUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMUU4MkU2NDFDMDRGNTc1MDBDRUU4
MDEgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5NzA1OTk3QTEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkQ0NUE5NTcxNzVENDE0QzAwQzIxRUM4IC8qIFBvbHlnb25TaGFwZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTE3NEUyMEExMEExRjQ0RjAwRjk1RTZGIC8qIFBvcFN0YXRlRXZlbnQu
aCBpbiBIZWFkZXJzICovLApAQCAtMjc1MjUsMTIgKzI3OTcwLDE0IEBACiAJCQkJQTg0RDgyN0Mx
MUQzMzNFRDAwOTcyOTkwIC8qIFJhd0RhdGFEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDE2RTZGRTgxQkJEMTJERjAwMEE2MDQzIC8qIFJlYWRhYmxlQnl0ZVN0cmVhbUludGVy
bmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTZFNkZFOTFCQkQxMkU1MDAwQTYw
NDMgLyogUmVhZGFibGVTdHJlYW1CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFFODJF
QUUxQzA3QkE2NjAwQ0VFODAxIC8qIE1ldGFsVGV4dHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDE2RTZGRTgxQkJEMTJERjAwMEEzRjY0IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRp
bnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDNDMTJCMDI2NzYwMEMxQTM1OSAvKiBSZWFs
dGltZUFuYWx5c2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTEwM0FBRDFFMzk3OTEwMDA3NjlG
MDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
QTRGNjU3MTFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNEE0RjY1NzIxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBMEZGQUEyMUFBRjVFQTIwMDYy
ODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkz
MUU4MkU3OTFDMDUzREIyMDBDRUU4MDEgLyogTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBMEZGQUE2MUFBRjVFRjYwMDYy
ODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0QTRGNjU3NDFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0MxQzBFNTFCRkI2MEVEMDBCRDIyNTYgLyogUmVhbHRp
bWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLywKQEAgLTI3
NTQwLDYgKzI3OTg3LDcgQEAKIAkJCQk5ODMxQUU0QTE1NDIyNUM5MDBGRTI2NDQgLyogUmVmZXJy
ZXJQb2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQUI0MTgyMTNFMzU2RTgwMEQ4QUFGMyAv
KiBSZWdpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTZDRERFOEQwMTc3MEJCMjIwMDE2RTA3MiAv
KiBSZWdpb25PdmVyc2V0U3RhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxNzVCMDhFMUJFRDU4
OTYwMDZFQTBBRCAvKiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyNkI5OTk4RjE4MDNBRTcyMDBEMDExMjEgLyogUmVnaXN0ZXJBbGxvY2F0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg1MDMxQjRDMEE0NEVGQzcwMEY5OTJFMCAvKiBSZWdpc3RlcmVkRXZlbnRM
aXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGQzM2MDYxOENBNjFDMjAwMjZFNTZGIC8q
IFJlbW90ZUNvbW1hbmRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzU0NywxMSArMjc5
OTUsMTMgQEAKIAkJCQk5MzMwOUUwMTA5OUU2NDkyMDA1NkU1ODEgLyogUmVtb3ZlQ1NTUHJvcGVy
dHlDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMDZDMEQ4RjBDRkQxMTQ2MDA2NUY0M0Yg
LyogUmVtb3ZlRm9ybWF0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMDUwOTlF
NjQ5MjAwNTZFNTgxIC8qIFJlbW92ZU5vZGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQkz
MUU4MkU3NTFDMDUzNTgyMDBDRUU4MDEgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTA3MDk5RTY0OTIw
MDU2RTU4MSAvKiBSZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjU5RUQyM0IxODI3MjY3OTAwNkQ1NjRDIC8qIFJlbmRlckFuY2VzdG9ySXRl
cmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRDQ5NENEMUE4NkVCMUQwMDBBODdFQyAvKiBS
ZW5kZXJBdHRhY2htZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VBNDg2MDA5N0Q5MzAyMDA5
NEM5RTQgLyogUmVuZGVyQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTBENzY4MTdEOEVF
NzEwMDVFMjYyNiAvKiBSZW5kZXJCbG9ja0Zsb3cuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxRTgy
RTY4MUMwNEZBQUYwMENFRTgwMSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQTQ4NjIwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJv
eC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5NkRCNDMwRjNBODgwRTAwNTczQ0IzIC8qIFJlbmRl
ckJveE1vZGVsT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VCMTc5QzE0MzM3OUY1MDA1
MkVBRTkgLyogUmVuZGVyQm94UmVnaW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzYzNSw2
ICsyODA4NSw3IEBACiAJCQkJNDU4RkU0MEExNTg5REYwQjAwNTYwOUU2IC8qIFJlbmRlclNlYXJj
aEZpZWxkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjExQTU0RjBGMzkyMzMxMDBDMzc4ODQgLyog
UmVuZGVyU2VsZWN0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUIyNDdBNkQwQUZENjM4
MzAwM0ZBNUZEIC8qIFJlbmRlclNsaWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFCNUFFRjEx
QkZBQUM1RDAwQjM0RERGIC8qIEpTV2ViR1BVTGlicmFyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MzE5NTVBODgxNjBEMTk5MjAwODU4MDI1IC8qIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzhDOEZBRTBERENEMzFCMDBCNTkyRjQgLyogUmVuZGVyU3R5bGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNjY4MEU4MUNCNzEwMEIyNTk2NSAvKiBSZW5kZXJT
dHlsZUNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzg0Miw3ICsyODI5Myw3IEBACiAJ
CQkJMUFBQURERTQxNERDOEM4RjAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVOb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkVBM0U4MDE5MUIzMTY5MDAwRjFCNTUgLyogU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5MUE5OUQxNjI5RDcw
MDAwMjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmggaW4gSGVhZGVycyAqLywK
LQkJCQkwN0MwNDZDODFFNDI1MTU1MDA3MjAxRTcgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbUNvY29hLmggaW4gSGVhZGVycyAqLywKKwkJCQkwN0MwNDZDODFFNDI1MTU1MDA3MjAxRTcg
LyogKG51bGwpIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCODg5MEExNjdEMkZBMTAwMTBDREE1IC8q
IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QUFGRThEMDE5
Q0I4NjcyMDAwRjU2RDggLyogU2Nyb2xsTGF0Y2hpbmdTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRjQ3ODc1NTQxOTk4M0FGRjAwMjRBMjg3IC8qIFNjcm9sbFNuYXBBbmltYXRvclN0YXRlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI3ODYyLDYgKzI4MzEzLDcgQEAKIAkJCQkxQUY3QUZDODFBNDhB
OEJDMDBDOEU0RTcgLyogU2VjdXJpdHlPcmlnaW5Qb2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk3NEQyREE1MTQ2QTUzNUQwMEQ1MUY4QiAvKiBTZWN1cml0eVBvbGljeS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkQ1QkM0MjcxNkY4ODJFRTAwNzA0OEQwIC8qIFNlY3VyaXR5UG9saWN5VmlvbGF0
aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxRTgyRUY0MUMwRjgwRjgwMENFRTgwMSAv
KiBKU1dlYkdQVUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlDQzBCNUUxOEJFOTg0QTAw
NkNFQkNDIC8qIFNlZ21lbnRlZElucHV0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJD
M0RBMkYwRDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkVBODA3QzkwRjcxNEEwMzAwNTI0MTk5IC8qIFNlbGVjdGlvblJlY3QuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjc4OTMsNiArMjgzNDUsNyBAQAogCQkJCUZENDVBOTRGMTc1RDNGM0UwMEMy
MUVDOCAvKiBTaGFwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ0NUE5NUIxNzVENDFFRTAwQzIx
RUM4IC8qIFNoYXBlSW50ZXJ2YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENDVBOTUyMTc1RDNG
M0UwMEMyMUVDOCAvKiBTaGFwZU91dHNpZGVJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTE3
REY3RDFDMTY0QzFEMDA0N0I0QkUgLyogV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkQxQUYxNTAxNjU2RjE1MTAwQzZENEY3IC8qIFNoYXBlVmFsdWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBNEE5NTRFMEI0RURDQ0IwMDJEOEMzQyAvKiBTaGFyZWRC
dWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QjFGMDJGMTNCMDI1RDIwMEY1MTAzRiAvKiBT
aGFyZWRCdWZmZXJDaHVua1JlYWRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzkzOSw2ICsyODM5
Miw3IEBACiAJCQkJQjhEQkRCNEUxMzBCMEY4QTAwRjVDREIxIC8qIFNwZWxsaW5nQ29ycmVjdGlv
bkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ1MTI1MDIzMTVEQ0UzN0QwMDJGODRFMiAv
KiBTcGluQnV0dG9uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMTIwOTlFNjQ5
MjAwNTZFNTgxIC8qIFNwbGl0RWxlbWVudENvbW1hbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTMx
QjVBRUU5MUJGQTgzQzIwMEIzNERERiAvKiBXZWJHUFVMaWJyYXJ5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk5MzMwOUUxNDA5OUU2NDkyMDA1NkU1ODEgLyogU3BsaXRUZXh0Tm9kZUNvbW1hbmQuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzMzA5RTE2MDk5RTY0OTIwMDU2RTU4MSAvKiBTcGxpdFRleHRO
b2RlQ29udGFpbmluZ0VsZW1lbnRDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDczMEQ5
MzEyNDhGMEIzMDBEM0E5QzkgLyogU3BvdExpZ2h0U291cmNlLmggaW4gSGVhZGVycyAqLywKQEAg
LTI3OTY0LDYgKzI4NDE4LDcgQEAKIAkJCQlGRUUxODExNDE2QzMxOUU4MDAwODQ4NDkgLyogU1FM
VHJhbnNhY3Rpb25CYWNrZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNkE1MjE1MDVGMDgx
MDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTdCQzZBNTcxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCBp
biBIZWFkZXJzICovLAorCQkJCTMxRTgyRTMyMUJGRDQwRUEwMENFRTgwMSAvKiBNZXRhbEZ1bmN0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNkE1ODE1MDVGMDgxMDAxQjc0QUMgLyogU1FM
VHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzQ1QzlENDFF
M0ZDQkRGMDBBQUI1NTggLyogSlNET01CaW5kaW5nU2VjdXJpdHkuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZFMzZGRDE4MTZDNzgyNjUwMEY4ODdDMSAvKiBTUUxUcmFuc2FjdGlvblN0YXRlLmggaW4g
SGVhZGVycyAqLywKQEAgLTI4MTAyLDEyICsyODU1NywxNCBAQAogCQkJCUIyMjI3OUI0MEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI4QzZBMjgw
RDAwQzQ0ODAwMzM0QUE0IC8qIFNWR0RvY3VtZW50RXh0ZW5zaW9ucy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjIyMjc5QjcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0VsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTMxRTgyRUREMUMwRDA0RjAwMENFRTgwMSAvKiBXZWJHUFVEcmF3YWJsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNjU2NTgxRkUwOUQxNTA4RDAwMEU2MUQ3IC8qIFNWR0VsZW1lbnRG
YWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODFBQThEQTExMTEyMzdFMDAyQUIwNkUgLyog
U1ZHRWxlbWVudFJhcmVEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNTYyREI2MTE3RDNDRDY2
MDAxMEFGOTYgLyogU1ZHRWxlbWVudFR5cGVIZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MjIyNzlDMDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRWxsaXBzZUVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyMjI3OUMyMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdFeGNlcHRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyMjI3OUM1MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMUU4MkU4QTFDMDY2OUU4MDBD
RUU4MDEgLyogV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyMjI3OUM4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUJsZW5kRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjIyMjc5Q0IwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlDRTBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjgzMzEs
NiArMjg3ODgsNyBAQAogCQkJCTk3QkM4NEI0MTIzNzExODAwMDBDNjE2MSAvKiBUZXh0RG9jdW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM4NDg0MTIzNkZEOTMwMDBDNjE2MSAvKiBUZXh0
RG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTQ3MEQwMDZDMUQwMEVG
NkYyNiAvKiBUZXh0RW5jb2RpbmcuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxRTgyRUMxMUMwOTBF
RTgwMENFRTgwMSAvKiBXZWJHUFVDb21tYW5kQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
MTA1REE2NDBGM0FBNkI4MDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIyQzNEQTQ5MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0RW5jb2RpbmdSZWdp
c3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzQTE0MzAwQjdEMTg4NjAwQTUzRkZEIC8qIFRl
eHRFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODQ5Niw2ICsyODk1NCw3IEBACiAJCQkJQTE0
ODMyQjYxODdGNjMxRjAwREE2M0E2IC8qIFdBS1Njcm9sbFZpZXcuaCBpbiBIZWFkZXJzICovLAog
CQkJCUExNDgzMkI4MTg3RjYzODYwMERBNjNBNiAvKiBXQUtWaWV3LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTg3NEFERjE5MDg1RTkxMDBCMDMxNzEgLyogV0FLVmlld0ludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkzMUU4MkVENzFDMDkzMTNFMDBDRUU4MDEgLyogTWV0YWxSZW5kZXJDb21t
YW5kRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE0ODMyQkIxODdGNjQzMjAwREE2M0E2
IC8qIFdBS1dpbmRvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ3RjI5OTIxM0Q0QzBDQjAwQUQ5
NTM1IC8qIFdhdmVTaGFwZXJEU1BLZXJuZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEN0YyOTk0
MTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
ODU1Myw2ICsyOTAxMiw3IEBACiAJCQkJOTNGNkYxRUUxMjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdM
Q29udGV4dEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwMUQzQ0Y4MzE0QkQwQTMwMDBGRTk5
NzAgLyogV2ViR0xDb250ZXh0R3JvdXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTAxRDNDRjg1MTRC
RDBBMzAwMEZFOTk3MCAvKiBXZWJHTENvbnRleHRPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTMxRTgyRThFMUMwNjY5RkUwMENFRTgwMSAvKiBNZXRhbFJlbmRlclBhc3NEZXNjcmlwdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMEVFMERGNjE0NEY4MjU1MDBGODBCMEQgLyogV2ViR0xEZWJ1
Z1JlbmRlcmVySW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTBFRTBERjgxNDRGODI1NTAwRjgw
QjBEIC8qIFdlYkdMRGVidWdTaGFkZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RTNGQUU4RjE0
NzMzRkRCMDBFNDIzMDcgLyogV2ViR0xEZXB0aFRleHR1cmUuaCBpbiBIZWFkZXJzICovLApAQCAt
Mjg2MjUsMTIgKzI5MDg1LDE0IEBACiAJCQkJNTJCMEQ0QzAxQzU3RkQ2NjAwNzdDRTUzIC8qIFdl
YlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDgy
MDMwQTEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJM0Y0MkIzMUQxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFDNjM0MDUxQzk2
MUIyQTAwODI3MzJBIC8qIE1ldGFsVGV4dHVyZURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNEODIwMzBDMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5k
b3dDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjEzMUU1OTFDNEYxNTM1MDAzM0Y4
MDIgLyogV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkz
RkJDNEFGNDE4OTg4MTU2MDA0NkVFMzggLyogV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyQjBENEMyMUM1N0ZGOTEwMDc3Q0U1MyAvKiBXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyRDVBMUE3
MUM1NzQ4OUQwMERFMzRBMyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTJENUExQTgxQzU3NDhBMzAwREUzNEEzIC8qIFdlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkzMUU4MkVFRjFDMEY3OTMzMDBD
RUU4MDEgLyogTWV0YWxCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUYxMjE3MUY2MTZBOENG
MEIwMDAwNTNDQSAvKiBXZWJWVFRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1RDIxQTgw
MzEzRUNFNURGMDBCQjcwNjQgLyogV2ViVlRUUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MTBCNjk4MDE0MEMxNzQwMDBCQzFDMjYgLyogV2ViVlRUVG9rZW4uaCBpbiBIZWFkZXJzICovLApA
QCAtMjg2NDMsNiArMjkxMDUsNyBAQAogCQkJCTdBRTMzNUYyMUFDQjA5RTIwMEU0MDFFRiAvKiBX
aGVlbEV2ZW50VGVzdFRyaWdnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzODBGNDc0MDlBMTFB
QjQwMDFGREIzNCAvKiBXaWRnZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTFEQ0IxMTY0QzM5
QTgwMEQ0OUJDMSAvKiBXaWR0aENhY2hlLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMUU4MkVFNjFD
MEQyNDIyMDBDRUU4MDEgLyogSlNXZWJHUFVEcmF3YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTM5QjAyRUYwRUEyREJDNDAwQzU0NTcwIC8qIFdpZHRoSXRlcmF0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMTVFRDVDMUI3RUM3QzUwMEVEREZFQiAvKiBXaWxsQ2hhbmdlRGF0YS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM4MjQzRTkwRDBDRkQ3NTAwNDYwQzhGIC8qIFdpbmRvd0ZlYXR1cmVz
LmggaW4gSGVhZGVycyAqLywKQEAgLTI4NjYwLDYgKzI5MTIzLDcgQEAKIAkJCQlBNTJBNjg2MjFE
QkIwRjYzMDA4MzM3M0YgLyogV29ya2VyQ29uc29sZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNTU2MzlEMTFDNkYwOUUzMDA4MDZEOEUgLyogV29ya2VyQ29uc29sZUNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTUyQTY4NjYxREJENEI1RDAwODMzNzNGIC8qIFdvcmtlckRlYnVnZ2Vy
QWdlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxRTgyRUQ0MUMwOTJCNUQwMENFRTgwMSAvKiBK
U1dlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0UyNjQz
MTE0NzQ4OTkxMDA1QTg1ODggLyogV29ya2VyRXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkU0MzQ2NDkwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTg1RkNCNDFCQjRDNEU4MDAxMjg5OEYgLyogV29ya2VyR2xvYmFsU2Nv
cGVJbmRleGVkRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjkwNzAsMTIgKzI5NTM0LDE0
IEBACiAJCQkJMzdGNTdBQkIxQTUwNzI3MzAwODc2Rjk4IC8qIEFjY2Vzc2liaWxpdHlBUklBR3Jp
ZFJvdy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOTE0RTMwNzFDQUI1QTQ0MDA0OTk2NkYgLyog
QWNjZXNzaWJpbGl0eUF0dGFjaG1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdGNTdBQkMx
QTUwNzI3NzAwODc2Rjk4IC8qIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMzEzRTRGQTgxRDZFNTEwQTAwNDlCNDhFIC8qIE1ldGFsRGVwdGhTdGVuY2ls
RGVzY3JpcHRvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY1MkE4RkQ3MUQwQThEMEUwMDczQ0Y0
MiAvKiBBY2Nlc3NpYmlsaXR5TGFiZWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdGNTdBQkQx
QTUwNzI3QTAwODc2Rjk4IC8qIEFjY2Vzc2liaWxpdHlMaXN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTM3RjU3QUJFMUE1MDcyN0UwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzN0Y1N0FCRjFBNTA3MjgxMDA4NzZGOTggLyogQWNjZXNzaWJp
bGl0eUxpc3RCb3hPcHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdGNTdBQkMxQTUwNzI4
NDAwODc2Rjk4IC8qIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTM3RjU3QUMwMUE1MDcyODQwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5TWVkaWFDb250
cm9scy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMTNFNEZBOTFENkU1MTI2MDA0OUI0OEUgLyog
TWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk3NkNERDJGMjExMDNEQTY2MDA2ODA1MjEgLyogQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTc2Q0REMkY2MTEwM0RBNjYwMDY4MDUyMSAvKiBBY2Nlc3NpYmls
aXR5TWVudUxpc3RPcHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzZDREQyRjQxMTAzREE2
NjAwNjgwNTIxIC8qIEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMjkxNzIsNiArMjk2MzgsNyBAQAogCQkJCUJFODhFMEQ4MTcxNUQyQTIwMDY1OEQ5OCAv
KiBBdWRpb1RyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMERCMTcxNUQyQTIwMDY1
OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREUzQTg1NzE3
RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJMzExN0RGODIxQzE2NEQwMzAwNDdCNEJFIC8qIE1ldGFsRGVwdGhTdGVuY2lsU3Rh
dGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDU0QTc2MjE4MEY5RjcwMDBCMDc2QzkgLyogQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RkQzMTYwOEExMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdFRTY4NDVGMTJEMjZFMzgwMEU3OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNGLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMjkzNzAsMTIgKzI5ODM3LDE0IEBACiAJCQkJRTEyNUY4NDUx
ODI0MjVDOTAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobUFFU19DQkNNYWMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTFGRTEzN0ExODREMjFCQjAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobUFF
U19LVy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUZFMTM3RTE4NEQyNzAyMDA4OTJGMTMgLyog
Q3J5cHRvQWxnb3JpdGhtQUVTX0tXTWFjLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxMTdERjdF
MUMxNjRDMjAwMDQ3QjRCRSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUUxMjVGODMxMTgyMkYxMUIwMEQ4NENEOSAvKiBDcnlwdG9BbGdvcml0
aG1ITUFDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMjVGODM4MTgyMkYxRUIwMEQ4NENEOSAv
KiBDcnlwdG9BbGdvcml0aG1ITUFDTWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxRkY4RjZD
MTgwREI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlFMUJCODRBRDE4MjJDQTc0MDA1MjUwNDMgLyogQ3J5cHRvQWxnb3JpdGhtUmVn
aXN0cnlNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFGRTEzNkExODNGRTFBQjAwODkyRjEz
IC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxRkUx
MzcwMTgzRkVDRjAwMDg5MkYxMyAvKiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkzMUU4MkVDRTFDMDkyNjIyMDBDRUU4MDEgLyogV2ViR1BVUmVuZGVy
Q29tbWFuZEVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEyMzNGMEMxODVBM0UzQjAw
OERGQUY1IC8qIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTEyMzNGMTAxODVBNDEzMDAwOERGQUY1IC8qIENyeXB0b0FsZ29yaXRobVJTQUVT
X1BLQ1MxX3YxXzVNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCRDMzMTkxODJEOERERDAw
QzA1RDlGIC8qIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMjk0NDEsNiArMjk5MTAsNyBAQAogCQkJCUE4MEU2Q0ZDMEExOTg5Q0EwMDdGQjhD
NSAvKiBDU1NNZWRpYVJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE0QkUzQTMxQjMwRjZE
MTAwMTQxOTgyIC8qIENTU05hbWVkSW1hZ2VWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
NEU4Mzk1MjFERkIyQTEyMDA3QkM2QTcgLyogQ1NTTmFtZXNwYWNlUnVsZS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkzMUI1QUVGMDFCRkFBQzVEMDBCMzREREYgLyogSlNXZWJHUFVMaWJyYXJ5LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU2Q0Y1MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQYWdl
UnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NDZEMzcyRDFENkNCMjk0MDA3NzA4NEYgLyog
Q1NTUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk0OUM3NzAwMUQ2RTFEOTgwMEMwREU0
RiAvKiBDU1NQYXJzZXJGYXN0UGF0aHMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTQ3Miw2ICsy
OTk0Miw3IEBACiAJCQkJQThFQTgwMDgwQTE5NTE2RTAwQThFRjVGIC8qIENTU1N0eWxlU2hlZXQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTRERTVDOTExRDgzMDExRDAwMTY0RjJBIC8qIENTU1N1
cHBvcnRzUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZENjc3NzM5MTk1Q0FGQkEwMDcy
RTBEMyAvKiBDU1NTdXBwb3J0c1J1bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzExN0RGOTIx
QzE2NjAwRDAwNDdCNEJFIC8qIEpTV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkM4MEM5ODcwQ0QyOTRFRTAwQTBCN0IzIC8qIENTU1RpbWluZ0Z1bmN0aW9u
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTQ2RDM3MzkxRDZDREZDMDAwNzcwODRGIC8q
IENTU1Rva2VuaXplci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NDZEMzczQjFENkNERkMwMDA3
NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0y
OTQ4NywxMSArMjk5NTgsMTMgQEAKIAkJCQk5NDQ0Q0JEOTFEODg0ODNBMDA3M0EwNzQgLyogQ1NT
VmFyaWFibGVQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTQ0NENCRTkxRDg4NjFDQTAw
NzNBMDc0IC8qIENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTExQUYxNTExMUI5QTFBMzAwODA1MTAzIC8qIEN1cnNvci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkzMUQ1MTM1RDFDODkwREI1MDBCN0JGNDAgLyogV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2NTU0MTUyMTQ4OUIyMzMwMDBE
RkM1RCAvKiBDdXJzb3JJT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGMTlBMjYwODI0NUU1
OTAwMUU5QUJDIC8qIEN1cnNvck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTlCNTZDOUFBMUM4
OTMyOUEwMEM0NTZERiAvKiBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5QkQ0RTkxQTFDNDYyQ0ZDMDA1MDY1QkMgLyogQ3VzdG9tRWxlbWVudFJlZ2lz
dHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTYyQ0QzMjU5MTE1N0U1N0MwMDYzQjBBNyAvKiBD
dXN0b21FdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUU4MkU2QjFDMDUwRjFCMDBDRUU4
MDEgLyogTWV0YWxSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk5N0JDNkEyMDE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTdCQzZBMjMxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQXV0aG9yaXplci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5N0JDNkEyNzE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VD
b250ZXh0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk1MDYsNiArMjk5NzksNyBAQAogCQkJCUJD
NjQ2NDFEMTFEN0Y0MTYwMDY0NTVCMCAvKiBEYXRhc2V0RE9NU3RyaW5nTWFwLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE3ODQ5NDFCMEI1RkU1MDcwMDFFMjM3QSAvKiBEYXRhVHJhbnNmZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGMTlBRkYwODI0NUU1OTAwMUU5QUJDIC8qIERhdGFUcmFu
c2Zlck1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTMxRTgyRURDMUMwRDA0RjAwMENFRTgwMSAv
KiBXZWJHUFVEcmF3YWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNEEwMDc4NTFCODIwRUQz
MDAyQzVBNkUgLyogRGF0YVVSTERlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU3MzJC
MEExMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUY1NUIzREI1MTI1MUYxMkQwMDNFRjI2OSAvKiBEYXRlSW5wdXRUeXBlLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMjk1ODUsOSArMzAwNTksMTYgQEAKIAkJCQkxQThGNkJDMjBEQjU1Q0RDMDAx
REI3OTQgLyogRE9NQXBwbGljYXRpb25DYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzhE
MDdCRTE0NUEwRjZDMDA5NjkwOEQgLyogRE9NQ29yZUV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlGRDY3NzczODE5NUNBRjNEMDA3MkUwRDMgLyogRE9NQ1NTTmFtZXNwYWNlLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTMxRTgyRTg1MUMwNjRDMDMwMENFRTgwMSAvKiBKU1dlYkdQVVJl
bmRlclBpcGVsaW5lU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFFODJFMzkxQkZENEZE
RDAwQ0VFODAxIC8qIEpTV2ViR1BVRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFC
NUFFRTgxQkZBODNDMjAwQjM0RERGIC8qIFdlYkdQVUxpYnJhcnkuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMzFFODJFNjcxQzA0RkFBRjAwQ0VFODAxIC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBQUJBMjU5MTRCQzYxMzMwMEFBOUEx
MSAvKiBET01FZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxQkRGMjQxNTZDMTg4MzAw
MUMxMjQzIC8qIERPTUVycm9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFRDYwOUJDMTE0NUIw
NzEwMEM4Njg0RSAvKiBET01Gb3JtRGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUU4MkU5
NDFDMDY2Q0I4MDBDRUU4MDEgLyogV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzE3NUIwOTExQkVEOTFCOTAwNkVBMEFEIC8q
IEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMTE3REY5
MDFDMTY2MDA3MDA0N0I0QkUgLyogSlNXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE4MTg1RjNFMDk3NjU3NjYwMDU4MjZEOSAvKiBET01JbXBsZW1l
bnRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzk4RkMyNDFEQzMyQTIwMDAzQzQ2ODQg
LyogRE9NSklUSGVscGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOUM2RTRFMzBENzQ1RTA1
MDA2NDQyRTkgLyogRE9NTWltZVR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTYwMiw2ICsz
MDA4Myw3IEBACiAJCQkJQzU1NjEwRjExMUE3MDRFQjAwQjgyRDI3IC8qIERPTVN0cmluZ0xpc3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTg4NjA0QjMwRjJFNjU0QTAwMEI2NDQzIC8qIERPTVRp
bWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc2RkMyQjBCMTIzNzBEQTAwMDZBOTkxQSAvKiBE
T01Ub2tlbkxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFFODJFMkQxQkZEM0Y5MzAwQ0VF
ODAxIC8qIFdlYkdQVUZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFMzdERkRBMTJE
QkFGQjgwMEE2QjIzMyAvKiBET01VUkwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q5REUxODEx
N0FBRDZBNDAwRUEzODZEIC8qIERPTVVSTE1lZGlhU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE1RkNDOUZDMUI0REY3RjIwMEU3MjMyNiAvKiBET01VUkxNZWRpYVN0cmVhbS5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTI5NzQ4LDYgKzMwMjMwLDcgQEAKIAkJCQk3QzQ1QzlEMDFFM0VGREZC
MDBBQUI1NTggLyogSlNET01XcmFwcGVyQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJD
M0RBNjcwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnRDYXNjYWRlRm9udHMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0M0RURENzQxQTdCNjA3ODAwMTk4QzREIC8qIEZvbnRDb2NvYS5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCTMxRTgyRTc4MUMwNTNEQjEwMENFRTgwMSAvKiBNZXRhbFJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIyQUZG
QzdEMEQwMEE1QzEwMDMwMDc0RCAvKiBGb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTM3QUNDRjY5MERBNDE0RTcwMDg5RTYwMiAvKiBGb250RGVzY3JpcHRpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM2NjI2MTAxQzZFN0NBNjAwQUI1MjdDIC8qIEZvbnRG
YWNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk3NjMsNiArMzAyNDYsNyBAQAogCQkJCTdDRTZD
QkZEMTg3RjM5NDkwMEQ0NkJGNSAvKiBGb3JtYXRDb252ZXJ0ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRjUwNjY0RjcxNTdGNTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxNEM3NjZGMENFOTIzQTEwMDdFRjNDRCAvKiBGb3JtRGF0YS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkzMUU4MkU3MDFDMDUzMEM4MDBDRUU4MDEgLyogV2ViR1BVUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTA4NUI5MkJBMEVGREU3M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTgxMzZEMzkwOTczQThFNzAwRDc0NDYzIC8qIEZvcm1EYXRhTGlzdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3RUU2ODQ2NjEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURh
dGFTdHJlYW1DRk5ldC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5ODM2LDYgKzMwMzIwLDcgQEAK
IAkJCQlCQzk3RTIzQjEwOTE0NDk1MDAxMEQzNjEgLyogSFRNTEFsbENvbGxlY3Rpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQThDRkY3QTQwQTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxBbmNob3JF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NzFENDVFMEExMjdDQkMwMEIxMkE2OCAv
KiBIVE1MQXBwbGV0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUU4MkVCQjFDMDdE
RDI3MDBDRUU4MDEgLyogSlNXZWJHUFVDb21tYW5kUXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThFQTdEMkYwQTE5Mzg1NTAwQThFRjVGIC8qIEhUTUxBcmVhRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3QzVGMjhGQjFBODI3RDg0MDBDMEYzMUYgLyogSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0NDYxM0ExMENENjMzMTAwMEZBREE3NSAv
KiBIVE1MQXVkaW9FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk4OTIsNiArMzAzNzcs
NyBAQAogCQkJCUE4RUE3Q0FDMEExOTJCOUMwMEE4RUY1RiAvKiBIVE1MTWFycXVlZUVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ0NjEzQTQwQ0Q2MzMxMDAwRkFEQTc1IC8qIEhUTUxN
ZWRpYUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzk2OEIyRTgxQjFFNzc4MTAwRUYx
RjgxIC8qIEhUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMzFFODJFQTQxQzA3QjVBODAwQ0VFODAxIC8qIFdlYkdQVVRleHR1cmUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMDc3OUJGMEQxODQ1MzE2ODAwMEI2QUU3IC8qIEhUTUxNZWRpYUVsZW1lbnRN
ZWRpYVN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEVBNzlGODBBMTkxNkRGMDBBOEVG
NUYgLyogSFRNTE1lbnVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJCRThFMkM5MTJB
NThBMDEwMEZBRDU1MCAvKiBIVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0yOTkxNCw2ICszMDQwMCw3IEBACiAJCQkJQkNDMEU4NzUxQkZFNzBFOTAwOEY3RjUwIC8q
IEhUTUxQaWN0dXJlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODcxRDQ1NzBBMTI3
Q0JDMDBCMTJBNjggLyogSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDQxNTI5MkYwRTFBRThBMDAwQzRBMkQwIC8qIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMzFENTEzNjQxQzhBMTc4OTAwQjdCRjQwIC8qIEpTV2ViR1BVUmVu
ZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4RUE3
Q0FEMEExOTJCOUMwMEE4RUY1RiAvKiBIVE1MUHJlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5NzdCMzg3MjEyMjg4M0U5MDBCODFGRjggLyogSFRNTFByZWxvYWRTY2FubmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE0M0JGNTk4MTE0OTI5MEEwMEM2NDNDQSAvKiBIVE1MUHJvZ3Jl
c3NFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk5MzksMTAgKzMwNDI2LDEyIEBACiAJ
CQkJQTg3MURCMjYwQTE1MEJENjAwQjEyQTY4IC8qIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUQ2NjgxN0ZBMTY2RkU2RDcwMEZBMDdCNCAvKiBIVE1MVGVt
cGxhdGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MTM2OUQ3MDk3Mzc0RjYwMEQ3
NDQ2MyAvKiBIVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxMTdE
RjhFMUMxNjVGQkQwMDQ3QjRCRSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5QkM2QzIxQzEzQ0NDOTdCMDA4RTAzMzcgLyogSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODMwNTE5OTUxQkIwRjExMDAwRjM3
NzJFIC8qIEhUTUxUaW1lRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODcxREMyOTBB
MTUyMDU3MDBCMTJBNjggLyogSFRNTFRpdGxlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5NzdCMzg3NzEyMjg4M0U5MDBCODFGRjggLyogSFRNTFRva2VuaXplci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkzMUU4MkVBRDFDMDdCQTY2MDBDRUU4MDEgLyogTWV0YWxUZXh0dXJlLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMDcwNzU2OEIxNDIyNjJENjAwNDE0MTYxIC8qIEhUTUxUcmFja0Vs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3QjM3MjUxMjI4NzIxNzAwQjgxRkY4IC8q
IEhUTUxUcmVlQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEVBNzlGMzBBMTkxNkRG
MDBBOEVGNUYgLyogSFRNTFVMaXN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwMTM4
LDYgKzMwNjI3LDcgQEAKIAkJCQlCRTZERjcxMTE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1Ry
YWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFOEVGMDQ0MTcxQzhGRjkwMDlCNDhD
MyAvKiBKU0F1ZGlvVHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFNkRGNzEzMTcx
Q0EyREEwMERENTJCOCAvKiBKU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTMxRTgyRUMwMUMwOTBFRTgwMENFRTgwMSAvKiBXZWJHUFVDb21tYW5kQnVmZmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTc2RkI5RkY4MTlBNzNFM0EwMDQyMDU2MiAvKiBKU0F1dG9j
b21wbGV0ZUVycm9yRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxMjRFRkYwQzI2NDQ3
QTAwOUUyMzQ5IC8qIEpTQmFyUHJvcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzk0NjM0NjEw
N0E5MzRCMDA4NTcxOTMgLyogSlNCZWZvcmVMb2FkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0zMDE1Niw2ICszMDY0Niw3IEBACiAJCQkJOTNGOUI3QTAwQkE2MDMyNjAwODU0MDY0IC8qIEpT
Q0RBVEFTZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEQTE1RUExMTJCMDNFRTEwMDNB
NTgzQSAvKiBKU0NoYW5uZWxNZXJnZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEQTE1
RUEzMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMzFFODJFRTIxQzBEMEUwODAwQ0VFODAxIC8qIE1ldGFsRHJhd2FibGUubW0g
aW4gU291cmNlcyAqLywKIAkJCQk2NURGMzFGMzA5RDFDQzYwMDAwQkUzMjUgLyogSlNDaGFyYWN0
ZXJEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQzA2NTg3MEYzQ0UyQTcwMENEMkQ4NyAv
KiBKU0NsaWVudFJlY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNDMDY1ODkwRjNDRTJBNzAw
Q0QyRDg3IC8qIEpTQ2xpZW50UmVjdExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDE4OSw2
ICszMDY4MCw3IEBACiAJCQkJQkM0NkMyMDIwQzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTUGFnZVJ1
bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRDRjdCMzMwOUY2RUNENzAwRUIzNjY1IC8qIEpT
Q1NTUnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzQ2QzFFRTBDMEREQkRGMDAyMENGQzMg
LyogSlNDU1NSdWxlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxRTgyRTYzMUMwNEY1
NzUwMENFRTgwMSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQThEMDVGQTcwQTIzQjMwMTAwNUU3MjAzIC8qIEpTQ1NTUnVsZUxpc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5MjI2MkYxMDMyMTA4NDAwNkU3RDVEIC8qIEpTQ1NTUnVs
ZUxpc3RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyMDExQjYwQTAwMzEzMzAwODMw
M0Y5IC8qIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwMjM3
LDYgKzMwNzI5LDcgQEAKIAkJCQk2NURGMzFGNzA5RDFDQzYwMDAwQkUzMjUgLyogSlNET01JbXBs
ZW1lbnRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTM4Rjg1NzFEMjUzRjA4MDAxQ0I2
MUUgLyogSlNET01JdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOUQyNDgwNjBENzU3
RTdEMDBGREY5NTkgLyogSlNET01NaW1lVHlwZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUU4
MkUzMTFCRkQ0MEVBMDBDRUU4MDEgLyogTWV0YWxGdW5jdGlvbi5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUE5RDI0ODA4MEQ3NTdFN0QwMEZERjk1OSAvKiBKU0RPTU1pbWVUeXBlQXJyYXkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTJDQ0E5RTIxNUUzRjYyQzAwNTNDNzdGIC8qIEpTRE9NTmFtZWRG
bG93Q29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUNFNTNERjBBOEQxODgxMDAy
Mjk0N0QgLyogSlNET01QYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDM5NCw2ICszMDg4
Nyw3IEBACiAJCQkJRDZGNzk2MEQxNjZGRkVDRTAwNzZERDE4IC8qIEpTSFRNTFRlbXBsYXRlRWxl
bWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBFN0U5RTBBMUE4M0UzMDA3RkI4
QzUgLyogSlNIVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgzRTM1
OUEzMUJCMTAzMUQwMDJDRUI5OCAvKiBKU0hUTUxUaW1lRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkzMUU4MkVCMjFDMDdEOENDMDBDRUU4MDEgLyogTWV0YWxDb21tYW5kUXVldWUubW0g
aW4gU291cmNlcyAqLywKIAkJCQlBODBFN0IxMzBBMTlENjA2MDA3RkI4QzUgLyogSlNIVE1MVGl0
bGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3MDc1NkQzMTQyMzlBNEUwMDQxNDE2
MSAvKiBKU0hUTUxUcmFja0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4NUIyMTAw
QTFCMjU4NzAwRDhDODdDIC8qIEpTSFRNTFVMaXN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTMwNDk2LDYgKzMwOTkwLDcgQEAKIAkJCQk5MDAxNzg4MDEyRTAzNzA3MDA2NDg0NjIgLyog
SlNPRVNTdGFuZGFyZERlcml2YXRpdmVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZFQkYwRTc2
MTJBOTg2ODgwMERCMTcwOSAvKiBKU09FU1RleHR1cmVGbG9hdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkzMTQ2RkU3NDE4NDQyMzcwMDAxQTkzN0MgLyogSlNPRVNUZXh0dXJlRmxvYXRMaW5lYXIu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFFODJFRUExQzBGNzkwRjAwQ0VFODAxIC8qIFdlYkdQ
VUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMzFDNEU1MjE2RTAyQjA4MDAyRjc5NTcg
LyogSlNPRVNUZXh0dXJlSGFsZkZsb2F0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxMDc4Q0M5
MTg4MEFBQzkwMDgwOTlEQyAvKiBKU09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNzdBMTdBQTYxMkYyOEIyQTAwNEUwMkY2IC8qIEpTT0VTVmVydGV4QXJy
YXlPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDYyOSw2ICszMTEyNCw3IEBACiAJCQkJ
QjJGQTNENkMwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNENkUwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVD
b21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNENzAw
QUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTMxRTgyRTdEMUMwNjQ2OEIwMENFRTgwMSAvKiBXZWJHUFVSZW5kZXJQaXBlbGlu
ZVN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE5QkZGNjRFMTFDMEYyQUMwMEI4QzA0RCAv
KiBKU1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIy
RkEzRDcyMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkZBM0Q3NDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDY0MSw2ICsz
MTEzNyw3IEBACiAJCQkJQjJGQTNEODAwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVGdW5jUkVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNEODIwQUI3NUE2RjAwMEU1QUM0IC8q
IEpTU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEz
RDg0MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0ZFSW1hZ2VFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTMxRTgyRUQzMUMwOTJCNUQwMENFRTgwMSAvKiBKU1dlYkdQVVJlbmRlckNvbW1h
bmRFbmNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzRDg2MEFCNzVBNkYwMDBFNUFD
NCAvKiBKU1NWR0ZFTWVyZ2VFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzRDg4
MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk4NDIyNDE4MzEwN0U3N0Y0MDA3NjZBODcgLyogSlNTVkdGRU1vcnBob2xvZ3lF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzA3MDMsNiArMzEyMDAsNyBAQAogCQkJCUIy
RkEzRERFMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdNb3ZldG9SZWwuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjJGQTNERTAwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0dGVybkVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODU0MkE3OTYwQUU1Qzk0MjAwREY1OERGIC8q
IEpTU1ZHUG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFFODJFODExQzA2NDdFOTAwQ0VF
ODAxIC8qIE1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIy
RkEzREUyMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BvaW50TGlzdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCMkZBM0RFNTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQb2x5Z29uRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkZBM0RFNzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQ
b2x5bGluZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDczNiw2ICszMTIzNCw3IEBA
CiAJCQkJODQ4NTIyN0QxMTkwMTYyQzAwNkVEQzdGIC8qIEpTU1ZHVktlcm5FbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTcxRENCNzAxMTU2ODE5NzYwMDg2MjI3MSAvKiBKU1NWR1pvb21B
bmRQYW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNFMTgwQUI3NUE2RjAwMEU1QUM0IC8q
IEpTU1ZHWm9vbUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxRTgyRUI2MUMwN0Q4RTcw
MENFRTgwMSAvKiBXZWJHUFVDb21tYW5kUXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVE
RjMyMDMwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTVGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
Mzg4NjlFQzFDRTgxRUEzMDBEMTZBOUUgLyogSlNUZXh0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTVDRTVEOUFCMURCODlBMDMwMENFN0E4RCAvKiBKU1RleHREZWNvZGVyLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMzA3NDUsNiArMzEyNDQsNyBAQAogCQkJCTA3MDc1Njk0MTQyMjY2OEQw
MDQxNDE2MSAvKiBKU1RleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzA3NTZERDE0
MjM5QjRFMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MDdFMTE3MDcxNDg5RUJFQjAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTMxRTgyRUQ4MUMwOTMxM0UwMENFRTgwMSAvKiBNZXRhbFJlbmRlckNv
bW1hbmRFbmNvZGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwNzU2REYxNDIzOUI0RTAwNDE0
MTYxIC8qIEpTVGV4dFRyYWNrQ3VlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwN0UxMTZC
MTE0ODlDOUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMDdCNUEyREIxNDY0MzIwQTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdC5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTMwNzgyLDYgKzMxMjgyLDcgQEAKIAkJCQk0OUM3Qjk5MzEwNDJEMkQz
MDAwOUQ0NDcgLyogSlNXZWJHTEJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RUEzMEY2
OTE2REZGRTc1MDAyNTdEMEIgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdFQTMwRjY5MTdFRkZFNzUwMDI1N0QwQiAvKiBKU1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVQVlJUQy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMTc1QjA4NzFCRUMxNTlE
MDA2RUEwQUQgLyogTWV0YWxEZXZpY2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk2RTNGQUQzODE0
NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk2RUU4QTc3MjEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRB
dHRyaWJ1dGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMkNCRjdCMTQwRjFENTgwMDM4NzlC
RSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzA5NTMsNiAr
MzE0NTQsNyBAQAogCQkJCTA3OEUwOEZFMTdEMTRDRUUwMDQyMEFBMSAvKiBNZWRpYUNvbnN0cmFp
bnRzSW1wbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTcyNTNBQTEzNTRCQkJDMDAzNjBGMkEg
LyogTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREVCQ0NERDUx
NjY0NkVCMjAwQTQ1MkUxIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkzMUU4MkU3NDFDMDUzNTgyMDBDRUU4MDEgLyogSlNXZWJHUFVSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Qy
N0Y2RTcxNDU3NzBEMzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxRjNDM0JFQTEzNUNBRjNDMDBCOEMxQUMgLyogTWVkaWFDb250cm9scy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0MTU3QUY4MTEyRjFGQjA0MDBBOEM2RjUgLyogTWVkaWFDb250cm9s
c0FwcGxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzEwODMsNiArMzE1ODUsNyBAQAogCQkJCUUx
MjcxOUNBMEVFRUMyMTMwMEY2MTIxMyAvKiBOYXZpZ2F0b3JCYXNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTJEOUJGNzQyMURCRkRDMjcwMDdBN0Q5OSAvKiBOYXZpZ2F0b3JFTUUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTFBNEJCMTAxOTU0RDYyNzAwRkE1QzJFIC8qIE5hdmlnYXRvckdhbWVw
YWQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzE3NUIwOEQxQkVENTg5NjAwNkVBMEFEIC8qIFdl
YkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTcxMTQ2MDMxNEVG
MDA5QTAwNjc0RkQ5IC8qIE5hdmlnYXRvckdlb2xvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTVFQTcyNUQ1MUFDQUJENTcwMEVBRDE3QiAvKiBOYXZpZ2F0b3JNZWRpYURldmljZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTk2RTU5REUxREYwMTI4NTAwNjYxMkI5IC8qIE5hdmlnYXRv
cldlYkRyaXZlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxMTIzLDYgKzMxNjI2LDcgQEAKIAkJ
CQlBMzFDNEU0RDE2RTAyQUE2MDAyRjc5NTcgLyogT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkzMTA3OENDNzE4ODBBQUI1MDA4MDk5REMgLyogT0VTVGV4dHVyZUhh
bGZGbG9hdExpbmVhci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3N0ExN0E3MTEyRjI4MTgyMDA0
RTAyRjYgLyogT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFF
ODJFQTAxQzA2NzVFMzAwQ0VFODAxIC8qIEpTV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkRBM0U5NTkxMzRBNDlFRjAwOEQ0QjVBIC8qIE9mZmxpbmVB
dWRpb0NvbXBsZXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREE5MzI1RDE2NzAz
QjJBMDA4OTgyREMgLyogT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGREEzRTk1QjEzNEE0OUVGMDA4RDRCNUEgLyogT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzExNTAsNiArMzE2NTQsNyBAQAogCQkJCUYzODIwODk0
MTQ3RDM1RjkwMDEwQkMwNiAvKiBQYWdlUnVudGltZUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE1RjM2RDNBMThGNzU4NzIwMDU0QzAyNCAvKiBQYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzcxRTY1Q0UxMzY2MUVFRDAwQkVFREIwIC8qIFBhZ2VTZXJp
YWxpemVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxRTgyRTI4MUJGQkVCNzAwMENFRTgwMSAv
KiBNZXRhbExpYnJhcnkubW0gaW4gU291cmNlcyAqLywKIAkJCQlFMTI4NEFFQTEwNDQ3REVFMDBF
QUVCNTIgLyogUGFnZVRyYW5zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUUx
RUNDMjBDOTFDOTA0MDBEQzI1NUIgLyogUGFnZVVSTFJlY29yZC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGRDMxNjBBMjEyQjAyNkY3MDBDMUEzNTkgLyogUGFubmVyLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMzEyMTEsNiArMzE3MTYsNyBAQAogCQkJCUJDOTREMTA4MEMyNzRGODgwMDZCQzYxNyAv
KiBQbGF0Zm9ybVNjcmVlbk1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI5MzQ5NDBCMTZDMDJD
MEEwMDkwMTMxOCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyOTM0OTQwQTE2QzAyQzA3MDA5MDEzMTggLyogUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNWb2ljZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUU4MkVBOTFDMDdCOEI3MDBD
RUU4MDEgLyogSlNXZWJHUFVUZXh0dXJlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI5N0JFM0RB
MTZDMDQzRDgwMDMzMTZCRCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUFBMTJERjQ5MTc0M0RGODMwMDREQUZERiAvKiBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjk3QkUzRDgxNkMwM0NDRTAwMzMx
NkJEIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0gaW4gU291cmNlcyAqLywKQEAg
LTMxMjUyLDYgKzMxNzU4LDcgQEAKIAkJCQk1QTU3NEYyODEzMURCOTZEMDA0NzFCODggLyogUXVv
dGVzRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0Y5MjU0NDBGN0VGNUI4MDA3RTM3Qzkg
LyogUmFkaW9CdXR0b25Hcm91cHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjU1QjNEQ0IxMjUx
RjEyRDAwM0VGMjY5IC8qIFJhZGlvSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMx
RTgyRTg5MUMwNjY5RTgwMENFRTgwMSAvKiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCNjU4RkZBNTE1MjJFRkFBMDBERDU1OTUgLyogUmFkaW9Ob2Rl
TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0YxOUFCOTA4MjQ1RTU5MDAxRTlBQkMgLyog
UmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjU1QjNEQ0QxMjUxRjEyRDAwM0VGMjY5IC8q
IFJhbmdlSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzEyNzUsNiArMzE3ODIsNyBA
QAogCQkJCTkzMzA5RTA0MDk5RTY0OTIwMDU2RTU4MSAvKiBSZW1vdmVOb2RlQ29tbWFuZC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUwNjA5OUU2NDkyMDA1NkU1ODEgLyogUmVtb3ZlTm9k
ZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NENDk0
Q0MxQTg2RUIxRDAwMEE4N0VDIC8qIFJlbmRlckF0dGFjaG1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMzE3NUIwODMxQkVDMTI5QTAwNkVBMEFEIC8qIFdlYkdQVUxheWVyLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkNFQTQ4NUYwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJsb2NrLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDMTBENzY3MTdEOEVFNkUwMDVFMjYyNiAvKiBSZW5kZXJCbG9j
a0Zsb3cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ4NTIwOTdEOTMwMjAwOTRDOUU0IC8q
IFJlbmRlckJsb2NrTGluZUxheW91dC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxMjg5LDYgKzMx
Nzk3LDcgQEAKIAkJCQlFNDNBMDIzRDE3RUIzNzEzMDA0Q0REMjUgLyogUmVuZGVyRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjVCN0E1NDEwRjY1RDdBMDAzNzYzMDIgLyogUmVuZGVy
RW1iZWRkZWRPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThFQTczQzMwQTE5MDBFMzAw
QThFRjVGIC8qIFJlbmRlckZpZWxkc2V0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxMzJGOEUz
MUM4NTMwQTEwMDgzREZCNCAvKiBXZWJHUFVFbnVtcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
NjZDNzczMDBBQjYwM0ZEMDAyMzhDQzQgLyogUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTNDODI5OEQxM0Q4RDkyNzAwREUyREVCIC8qIFJlbmRlckZsZXhp
YmxlQm94LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4MzY0MUU0MzI1QTAwMDYyMUU5MiAv
KiBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTM4
Miw2ICszMTg5MSw3IEBACiAJCQkJRTQ2MTgwMkIxQzhBMDZEOTAwMjZDMDJDIC8qIFJlbmRlclRy
ZWVVcGRhdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0NDYxNDUxMENENjhBMzUwMEZBREE3
NSAvKiBSZW5kZXJWaWRlby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VBNDg2NzA5N0Q5MzAy
MDA5NEM5RTQgLyogUmVuZGVyVmlldy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUQ1MTM2NzFD
OEE1NTczMDBCN0JGNDAgLyogSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3JD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkUyMDUwN0QxOEE0NThCRjAwODA2NDdFIC8q
IFJlbmRlclZUVEN1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODcxREZFNTBBMTUzNzZCMDBC
MTJBNjggLyogUmVuZGVyV2lkZ2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4OUNDQzUyMEY0
NEU5ODEwMEI1REExMCAvKiBSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTMxNDAxLDYgKzMxOTExLDcgQEAKIAkJCQk3RUU2ODQ2QzEyRDI2RTM4MDBFNzk0
MTUgLyogUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNkZBRTRD
QzE4NTJFM0E1MDA0QzhDNDYgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNkMxNUNGNjE4NTdFMTVEMDBGMTVDMDMgLyogUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkzMUU4MkVGMzFDMEY4MEY4MDBDRUU4MDEgLyogSlNXZWJHUFVC
dWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCQTAwMzExNkZCOTJBQzAwQkE3QTM1IC8q
IFJlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFNDI4Q0U1MTNF
MzQwN0YwMDNCNjYxQyAvKiBSZXNvdXJjZUhhbmRsZUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTUxNEM3NjUxMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZU1hYy5tbSBpbiBTb3Vy
Y2VzICovLApAQCAtMzE0MjQsNiArMzE5MzUsNyBAQAogCQkJCUE1MDcxRThCMUM1NkZCMzEwMDk5
NTFCRSAvKiBSZXNvdXJjZVVzYWdlRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBREJBRDZF
RTFCQ0REOTU1MDAzODEzMjUgLyogUmVzb3VyY2VVc2FnZU92ZXJsYXkuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQURGRTJCNTUxQkQ1RjYxMjAwREFCNDU3IC8qIFJlc291cmNlVXNhZ2VPdmVybGF5
Q29jb2EubW0gaW4gU291cmNlcyAqLywKKwkJCQkzMUM2MzQwODFDOTYxRDM4MDA4MjczMkEgLyog
SlNXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTA3MUU4
NjFDNTZEMERGMDA5OTUxQkUgLyogUmVzb3VyY2VVc2FnZVRocmVhZC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBNTA3MUU4OTFDNTZENEZFMDA5OTUxQkUgLyogUmVzb3VyY2VVc2FnZVRocmVhZENv
Y29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwQTQxMkIwMjZGNzAwQzFBMzU5IC8qIFJl
dmVyYi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxNDY0LDYgKzMxOTc2LDcgQEAKIAkJCQkxQTU2
OUQyNDBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9yb290LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQ2NUE4RTc5MUM4QTI0Q0UwMEU3RDNFNCAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3Mu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzUyMjI5RDFFMURBRTQ3MDAyQ0I4RjcgLyogUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUQ1MTM3NjFDOEE2RjU3
MDBCN0JGNDAgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDREQ3MDg5NjE4MzU5RjZGMDAyQjNEQzYgLyogU2FtcGxl
TWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RTkxMUNBMEVGODZENDcwMDlEMENBRiAvKiBT
Y2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1REZFOEY1NjBE
MTY0NzdCMDA3NkU5MzcgLyogU2NoZWR1bGVkQWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MzE2NjMsMTIgKzMyMTc2LDE0IEBACiAJCQkJQkM1RUI3NEQwRTgxRTA2NzAwQjI1OTY1IC8qIFN0
eWxlTXVsdGlDb2xEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0REFDRTZDMUQxMkUxMTYw
MDc1OTgwRiAvKiBTdHlsZVBlbmRpbmdSZXNvdXJjZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTgwRTZERkIwQTE5OTA2NzAwN0ZCOEM1IC8qIFN0eWxlUHJvcGVydGllcy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkzMUU4MkU4RDFDMDY2OUZFMDBDRUU4MDEgLyogTWV0YWxSZW5kZXJQYXNzRGVz
Y3JpcHRvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUUxQjI1MTA2MTUyQTBCQUYwMDY5Qjc3OSAv
KiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgzQzA1QTVB
MUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDMjI3MkUzMEU4MkVFOUIwMEU3Rjk3NSAvKiBTdHlsZVJhcmVJ
bmhlcml0ZWREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMjI3MkJDMEU4MkVBQUUwMEU3
Rjk3NSAvKiBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUU0NjE4MDJGMUM4REQ0RDIwMDI2QzAyQyAvKiBTdHlsZVJlbGF0aW9ucy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlFNEQ1OEVCNDE3QjREQkRDMDBDQkRDQTggLyogU3R5bGVSZXNvbHZlRm9yRG9j
dW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFENTEzNzExQzhBNjQwQzAwQjdCRjQwIC8q
IE1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IubW0gaW4gU291cmNlcyAq
LywKIAkJCQlFMTM5ODY2MzE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFNEJCRUQ0QzE0RkNEQkExMDAzRjBCOTggLyogU3R5bGVSdWxlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUU0OTQ2RUFFMTU2RTY0REQwMEQzMjk3RiAvKiBTdHlsZVJ1
bGVJbXBvcnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTczNiw2ICszMjI1MSw3IEBACiAJCQkJ
QjIyMjc5QjMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0RvY3VtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyOEM2QTI3MEQwMEM0NDgwMDMzNEFBNCAvKiBTVkdEb2N1bWVudEV4dGVuc2lvbnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5QjYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0Vs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzE3NUIwOTQxQkYxMEI0NDAwNkVBMEFEIC8q
IEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
ODMzQzg1MjBBMkNGNTI4MDBENTc2NjQgLyogU1ZHRWxlbWVudEZhY3RvcnkuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjIyMjc5QkYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0VsbGlwc2VFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3OEQwN0NBMTQ1QTEwMTYwMDk2OTA4RCAvKiBTVkdF
eGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTc0OSw2ICszMjI2NSw3IEBACiAJCQkJ
QjIyMjc5RDMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlENjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUQ5MEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMzFFODJFOUUxQzA2NzVFMzAwQ0VFODAxIC8qIEpTV2ViR1BVUmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDM1OEU4ODUx
MzYwQTMzQjAwRTQ3NDhDIC8qIFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQjIyMjc5REMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFRmxvb2RFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OURGMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUZ1
bmNBRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxNzYxLDYgKzMyMjc4LDcgQEAKIAkJ
CQlCMjIyNzlGMTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVMaWdodEVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjIyMjc5RjMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFTWVyZ2VFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUY2MEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFENTEzNkIxQzhB
NjMzMTAwQjdCRjQwIC8qIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9y
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0MjI0MTkzMTA3RTc4QTcwMDc2NkE4NyAvKiBTVkdG
RU1vcnBob2xvZ3lFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUY5MEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdGRU9mZnNldEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QjIyMjc5RkMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0zMTgzOCw2ICszMjM1Niw3IEBACiAJCQkJQjIyMjdBQTgwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR1N0b3BFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDMzlD
Mzc2MUREQkI5MEQwMEZFRkIyOSAvKiBTVkdTdHJpbmdMaXN0VmFsdWVzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUIyMjI3QUI3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMzFFODJFQzkxQzA5MTY1MTAwQ0VFODAxIC8qIEpTV2ViR1BV
Q29tbWFuZEJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0FCQTBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHU1ZHRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0FCRDBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHU3dpdGNoRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCMjIyN0FDMDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3ltYm9sRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTMxODQ1LDYgKzMyMzY0LDcgQEAKIAkJCQlCMjIyN0FDNzBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIy
MjI3QUNBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUZXh0RWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCMjIyN0FDRDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVGV4dFBhdGhFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTMxRTgyRTk4MUMwNjcwMUUwMENFRTgwMSAvKiBNZXRhbFJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QjIyMjdBRDAwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBRDMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RpdGxl
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQ0NERjVCRDE5OTAzMzI0MDBCQ0VCQUQg
LyogU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxODc5LDEw
ICszMjM5OSwxMiBAQAogCQkJCTBGNTREQ0U1MTg4MTA1MUQwMDNFRURCQiAvKiBUZXh0QXV0b1Np
emluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzJDMDBDNDEyOTYxMUYxMDA1Qzk1NzUgLyog
VGV4dEJvdW5kYXJpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJBRkZDOTcwRDAwQTVERjAw
MzAwNzREIC8qIFRleHRCb3VuZGFyaWVzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMzFDNjM0MDQx
Qzk2MUIyNjAwODI3MzJBIC8qIE1ldGFsVGV4dHVyZURlc2NyaXB0b3IubW0gaW4gU291cmNlcyAq
LywKIAkJCQlBN0RCRjhERDEyNzY5MTlDMDA2QjYwMDggLyogVGV4dENoZWNraW5nSGVscGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUIyQzNEQTM5MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29k
ZWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJDM0RBM0IwRDAwNkMxRDAwRUY2RjI2IC8qIFRl
eHRDb2RlY0lDVS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkMzREEzRDBEMDA2QzFEMDBFRjZG
MjYgLyogVGV4dENvZGVjTGF0aW4xLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxQjVBRUVDMUJG
QTg2ODcwMEIzNERERiAvKiBXZWJHUFVPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJB
RkZDOTkwRDAwQTVERjAwMzAwNzREIC8qIFRleHRDb2RlY01hYy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1N0VGNUU2MjFEMjBEMjg3MDAxNzFFNjAgLyogVGV4dENvZGVjUmVwbGFjZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjJDM0RBM0YwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRDb2Rl
Y1VzZXJEZWZpbmVkLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzIwNzQsNiArMzI1OTYsNyBAQAog
CQkJCTZFNDdFNjYwMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEFueS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQUZGQzQ1MzFENUU4MUM0MDAyNjdBNjYgLyogV2ViR0xCbGFja2xpc3QubW0gaW4g
U291cmNlcyAqLywKIAkJCQk0OUM3QjlDODEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xCdWZmZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFFODJFQzYxQzA5MEYwRjAwQ0VFODAxIC8qIE1ldGFs
Q29tbWFuZEJ1ZmZlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdFNjZFMjMzMTZENkVCNkMwMEY3
RTdGRiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdFNjZFMjMzMTdFNkVCNkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkUzRkFFOEUxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzIwODcsNiArMzI2
MTAsNyBAQAogCQkJCTZFQkYwRTU0MTJBODkyOTgwMERCMTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUM3QjlDRTEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xG
cmFtZWJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUZGQkY0MDExQzkzRUUzMDA2QTcx
MTggLyogV2ViR0xMYXllci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTMxRTgyRUYwMUMwRjc5MzMw
MENFRTgwMSAvKiBNZXRhbEJ1ZmZlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzRjFENUJBMTJE
NTMyQzQwMDgzMkJFQyAvKiBXZWJHTExvc2VDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTQ5QzdCOUQ0MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTE9iamVjdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0OUM3QjlENjEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xQcm9ncmFtLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMzIxMDMsNyArMzI2MjcsNyBAQAogCQkJCTQ5QzdCOUU1MTA0MkQzMkYw
MDA5RDQ0NyAvKiBXZWJHTFRleHR1cmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkY5OTVBMjMx
QTcwNzhCMTAwQTczNUY0IC8qIFdlYkdMVHJhbnNmb3JtRmVlZGJhY2suY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEMzRjFGNUExMEM4ODcxMjAwRDcyQ0UxIC8qIFdlYkdMVW5pZm9ybUxvY2F0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTA3QzA0NkM3MUU0MjUxNTUwMDcyMDFFNyAvKiBBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDdD
MDQ2QzcxRTQyNTE1NTAwNzIwMUU3IC8qIChudWxsKSBpbiBTb3VyY2VzICovLAogCQkJCTZGOTk1
QTI1MUE3MDc4QjEwMEE3MzVGNCAvKiBXZWJHTFZlcnRleEFycmF5T2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTZGMjIyQjc2MUFCNTJEOEEwMDk0NjUxQSAvKiBXZWJHTFZlcnRleEFycmF5
T2JqZWN0QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3N0ExN0E3NzEyRjI4NjQyMDA0RTAy
RjYgLyogV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMy
MTEyLDYgKzMyNjM2LDcgQEAKIAkJCQlGNDgyMjMxMDFFMzg2OUI4MDA2NkZDNzkgLyogV2ViSXRl
bVByb3ZpZGVyUGFzdGVib2FyZC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxQzBGRjIxMEU0Q0VC
NkUwMDdENkZFNSAvKiBXZWJLaXRBbmltYXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0OTgzOTE1ODBGMUU3NzY5MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTMxQzYzNDAwMUM5NjE4QTIwMDgyNzMyQSAvKiBXZWJHUFVUZXh0dXJlRGVz
Y3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4QUE2MUNGRjE0NEQ1OTVCMDBGMzczNTAg
LyogV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzRkZGRjlBODE1
OUQ5QTU1MDAyMEJCRDUgLyogV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBMTQxNEI1MTNBMEYwNTAwMDE5OTk2QyAvKiBXZWJLaXRGb250RmFtaWx5TmFtZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMjE2Nyw2ICszMjY5Miw3IEBACiAJCQkJQkM4MjQzRTgw
RDBDRkQ3NTAwNDYwQzhGIC8qIFdpbmRvd0ZlYXR1cmVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdFOTlBRjUxMEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE0ODMyQkQxODdGNjRCNDAwREE2M0E2IC8qIFdLQ29u
dGVudE9ic2VydmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxRTgyRUU0MUMwRDI0MDAw
MENFRTgwMSAvKiBKU1dlYkdQVURyYXdhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNDgz
MkMwMTg3RjY1NjYwMERBNjNBNiAvKiBXS0dyYXBoaWNzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTE0ODMyQzIxODdGNjVDNzAwREE2M0E2IC8qIFdLVXRpbGl0aWVzLmMgaW4gU291cmNlcyAqLywK
IAkJCQlBMTQ4MzJDNTE4N0Y2NjgzMDBEQTYzQTYgLyogV0tWaWV3Lm1tIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCmlu
ZGV4IGE3OGIwMTg0NDM3Li44ZThiOTU1MDhmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTQxLDYgKzQxLDggQEAKICNpZiBFTkFC
TEUoV0VCR0wpCiAjaW5jbHVkZSAiSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCiAjZW5k
aWYKKyNpbmNsdWRlICJKU1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKKwogCiAjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKICNpbmNsdWRlICJKU1RvdWNoLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCmluZGV4
IDE3MmMwZDk5NzkxLi5mYTMyMzMzZDhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKQEAgLTM3LDYgKzM3
LDggQEAKICNpbmNsdWRlICJKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKICNlbmRpZgog
CisjaW5jbHVkZSAiSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCisKIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY0LDYgKzY2LDkgQEAgSlNWYWx1ZSBK
U0hUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgfQog
I2VuZGlmCiAKKyAgICBpZiAoSFRNTENhbnZhc0VsZW1lbnQ6OmlzV2ViR1BVVHlwZShjb250ZXh0
SWQpKQorICAgICAgICByZXR1cm4gdG9KUzxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8V2ViR1BV
UmVuZGVyaW5nQ29udGV4dD4+PihzdGF0ZSwgKmdsb2JhbE9iamVjdCgpLCBzdGF0aWNfY2FzdDxX
ZWJHUFVSZW5kZXJpbmdDb250ZXh0Kj4od3JhcHBlZCgpLmdldENvbnRleHRXZWJHUFUoY29udGV4
dElkKSkpOworCiAgICAgcmV0dXJuIGpzTnVsbCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRv
ckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdQVVJlbmRlclBh
c3NBdHRhY2htZW50RGVzY3JpcHRvckN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLjdkMjgwNjk4ZTEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3JD
dXN0b20uY3BwCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJKU1dlYkdQ
VVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIgorCisjaW5jbHVkZSAiSlNET01CaW5k
aW5nLmgiCisjaW5jbHVkZSAiSlNXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvci5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
SlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8V2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yPiYmIG9iamVjdCkKK3sKKyAgICBpZiAob2JqZWN0LT5pc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IoKSkKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8V2ViR1BVUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShvYmplY3Qp
KTsKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3I+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShvYmplY3QpKTsKK30KKworSlNWYWx1ZSB0
b0pTKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdl
YkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciYgb2JqZWN0KQoreworICAgIHJldHVy
biB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIG9iamVjdCk7Cit9CisKKy8vCisvLworLy8KKy8v
SlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKKy8vewor
Ly8gICAgSlNPYmplY3QqIHdyYXBwZXIgPSBnZXRDYWNoZWRXcmFwcGVyKGdsb2JhbE9iamVjdC0+
d29ybGQoKSwgZGVzY3JpcHRvcik7CisvLworLy8gICAgaWYgKHdyYXBwZXIpCisvLyAgICAgICAg
cmV0dXJuIHdyYXBwZXI7CisvLworLy8gICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9i
YWxPYmplY3QsIFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLCBXVEZN
b3ZlKGRlc2NyaXB0b3IpKTsKKy8vfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dlYkdQVVJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMTZiNWNhNmY1MjMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdQVVJlbmRlcmluZ0Nv
bnRleHRDdXN0b20uY3BwCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJK
U1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6dmlzaXRB
ZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgdmlzaXRvci5h
ZGRPcGFxdWVSb290KCZ3cmFwcGVkKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IGFmZjkyOTc3NDlh
Li4wZmM3NmU4NzMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHAKQEAgLTU1LDYgKzU1LDggQEAKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmgiCiAjZW5kaWYKIAorI2luY2x1ZGUgIldlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMTgyLDYg
KzE4NCw5IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIEhUTUxDYW52YXNFbGVtZW50OjpnZXRD
b250ZXh0KGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICBpZiAoSFRNTENhbnZhc0VsZW1lbnQ6Omlz
MmRUeXBlKHR5cGUpKQogICAgICAgICByZXR1cm4gZ2V0Q29udGV4dDJkKHR5cGUpOwogCisgICAg
aWYgKEhUTUxDYW52YXNFbGVtZW50Ojppc1dlYkdQVVR5cGUodHlwZSkpCisgICAgICAgIHJldHVy
biBnZXRDb250ZXh0V2ViR1BVKHR5cGUpOworCiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIGlmIChI
VE1MQ2FudmFzRWxlbWVudDo6aXMzZFR5cGUodHlwZSkpCiAgICAgICAgIHJldHVybiBnZXRDb250
ZXh0V2ViR0wodHlwZSk7CkBAIC0yMzcsNyArMjQyLDcgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dCogSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQyZChjb25zdCBTdHJpbmcmIHR5cGUpCiBz
dGF0aWMgYm9vbCByZXF1aXJlc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JXZWJHTCgpCiB7CiAj
aWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCi0gICAgcmV0dXJuIGZhbHNlOworEyAg
ICByZXR1cm4gZmFsc2U7CiAjZWxzZQogICAgIHJldHVybiB0cnVlOwogI2VuZGlmCkBAIC0yODks
NiArMjk0LDMwIEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIEhUTUxDYW52YXNFbGVtZW50Ojpn
ZXRDb250ZXh0V2ViR0woY29uc3QgU3RyaW5nJiB0eXBlLCBXCiB9CiAjZW5kaWYKIAorYm9vbCBI
VE1MQ2FudmFzRWxlbWVudDo6aXNXZWJHUFVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKK3sKKyAg
ICByZXR1cm4gdHlwZSA9PSAid2ViZ3B1IjsKK30KKworQ2FudmFzUmVuZGVyaW5nQ29udGV4dCog
SFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHRXZWJHUFUoY29uc3QgU3RyaW5nJiB0eXBlKQor
eworICAgIEFTU0VSVChIVE1MQ2FudmFzRWxlbWVudDo6aXNXZWJHUFVUeXBlKHR5cGUpKTsKKwor
ICAgIGlmIChtX2NvbnRleHQgJiYgIW1fY29udGV4dC0+aXNNZXRhbCgpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIGlmICghbV9jb250ZXh0KSB7CisgICAgICAgIG1fY29udGV4dCA9
IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZSgqdGhpcyk7CisgICAgICAgIGlmIChtX2Nv
bnRleHQpIHsKKyAgICAgICAgICAgIC8vIE5lZWQgdG8gbWFrZSBzdXJlIGEgUmVuZGVyTGF5ZXIg
YW5kIGNvbXBvc2l0aW5nIGxheWVyIGdldCBjcmVhdGVkIGZvciB0aGUgQ2FudmFzCisgICAgICAg
ICAgICBpbnZhbGlkYXRlU3R5bGVBbmRMYXllckNvbXBvc2l0aW9uKCk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOworfQorCisKIHZvaWQgSFRNTENhbnZh
c0VsZW1lbnQ6OmRpZERyYXcoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIGNsZWFyQ29w
aWVkSW1hZ2UoKTsKQEAgLTM0Nyw2ICszNzYsMTAgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6
cmVzZXQoKQogCiAgICAgc2V0U3VyZmFjZVNpemUobmV3U2l6ZSk7CiAKKyAgICAvLyBGSVhNRTog
V2ViR1BVIG5lZWRzIHNvbWV0aGluZyBoZXJlIHRvby4KKyAgICBpZiAoaXNNZXRhbCgpICYmIG9s
ZFNpemUgIT0gc2l6ZSgpKQorICAgICAgICBzdGF0aWNfY2FzdDxXZWJHUFVSZW5kZXJpbmdDb250
ZXh0Kj4obV9jb250ZXh0LmdldCgpKS0+cmVzaGFwZSh3aWR0aCgpLCBoZWlnaHQoKSk7CisKICNp
ZiBFTkFCTEUoV0VCR0wpCiAgICAgaWYgKGlzM0QoKSAmJiBvbGRTaXplICE9IHNpemUoKSkKICAg
ICAgICAgc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSo+KG1fY29udGV4dC5n
ZXQoKSktPnJlc2hhcGUod2lkdGgoKSwgaGVpZ2h0KCkpOwpAQCAtNDE1LDEyICs0NDgsMjAgQEAg
dm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBMYXlvdXRSZWN0JiByKQogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKGlzTWV0YWwo
KSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8V2ViR1BVUmVuZGVyaW5nQ29udGV4dCo+KG1fY29udGV4
dC5nZXQoKSktPm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKwogI2lmIEVOQUJMRShXRUJHTCkgICAg
CiAgICAgaWYgKGlzM0QoKSkKICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSo+KG1fY29udGV4dC5nZXQoKSktPm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKICNlbmRp
ZgogfQogCitib29sIEhUTUxDYW52YXNFbGVtZW50Ojppc01ldGFsKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9jb250ZXh0ICYmIG1fY29udGV4dC0+aXNNZXRhbCgpOworfQorCiAjaWYgRU5BQkxF
KFdFQkdMKQogYm9vbCBIVE1MQ2FudmFzRWxlbWVudDo6aXMzRCgpIGNvbnN0CiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKaW5kZXggM2I3OTExNGRhMTkuLjcxYzk0OTg5
YzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCkBAIC05Nyw2ICs5
Nyw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpczNkVHlwZShjb25zdCBTdHJpbmcmKTsK
ICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBnZXRDb250ZXh0V2ViR0woY29uc3QgU3RyaW5n
JiwgV2ViR0xDb250ZXh0QXR0cmlidXRlcyYmID0geyB9KTsKICNlbmRpZgorICAgIHN0YXRpYyBi
b29sIGlzV2ViR1BVVHlwZShjb25zdCBTdHJpbmcmKTsKKyAgICBDYW52YXNSZW5kZXJpbmdDb250
ZXh0KiBnZXRDb250ZXh0V2ViR1BVKGNvbnN0IFN0cmluZyYpOwogCiAgICAgc3RhdGljIFN0cmlu
ZyB0b0VuY29kaW5nTWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgRXhjZXB0aW9uT3I8U3RyaW5nPiB0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpOwpAQCAtMTY3LDYgKzE2OSw3IEBA
IHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIGJvb2wgaXMzRCgpIGNvbnN0OwogI2Vu
ZGlmCisgICAgYm9vbCBpc01ldGFsKCkgY29uc3Q7CiAKICAgICBIYXNoU2V0PENhbnZhc09ic2Vy
dmVyKj4gbV9vYnNlcnZlcnM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ+IG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQuaAppbmRleCA3NTkwODBmNTMxZC4uODgyNTk4YTAyNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0LmgKQEAgLTU0LDYgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1dlYkdM
MSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzV2ViR0wyKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzM2QoKSBjb25zdCB7IHJldHVybiBp
c1dlYkdMMSgpIHx8IGlzV2ViR0wyKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNZXRhbCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQWNjZWxlcmF0ZWQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvQ2FudmFzKCkge30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVC
dWZmZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wMTE4ODdi
Yzg5NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VUJ1ZmZlci5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYkdQ
VUJ1ZmZlci5oIgorCisjaW5jbHVkZSAiTWV0YWxCdWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHUFVS
ZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXZWJHUFVCdWZmZXI+IFdlYkdQVUJ1ZmZlcjo6Y3Jl
YXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIEFycmF5QnVmZmVyVmlldyogZGF0
YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVCdWZmZXIoY29udGV4dCwgZGF0
YSkpOworfQorCitXZWJHUFVCdWZmZXI6OldlYkdQVUJ1ZmZlcihXZWJHUFVSZW5kZXJpbmdDb250
ZXh0KiBjb250ZXh0LCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEpCisgICAgOiBXZWJHUFVPYmplY3Qo
Y29udGV4dCkKK3sKKyAgICBtX2J1ZmZlciA9IGNvbnRleHQtPmRldmljZSgpLT5jcmVhdGVCdWZm
ZXJGcm9tRGF0YShkYXRhKTsKK30KKworV2ViR1BVQnVmZmVyOjp+V2ViR1BVQnVmZmVyKCkKK3sK
K30KKwordW5zaWduZWQgbG9uZyBXZWJHUFVCdWZmZXI6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAg
aWYgKCFtX2J1ZmZlcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gbV9idWZmZXIt
Pmxlbmd0aCgpOworfQorCitSZWZQdHI8QXJyYXlCdWZmZXI+IFdlYkdQVUJ1ZmZlcjo6Y29udGVu
dHMoKSBjb25zdAoreworICAgIGlmICghbV9idWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgcmV0dXJuIG1fYnVmZmVyLT5jb250ZW50cygpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQnVmZmVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVlYzk3MjUxNjQzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQnVmZmVyLmgKQEAg
LTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0LmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgTWV0YWxCdWZmZXI7CisKK2NsYXNzIFdlYkdQVUJ1ZmZlciA6
IHB1YmxpYyBXZWJHUFVPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVUJ1ZmZl
cigpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVQnVmZmVyPiBjcmVhdGUoV2ViR1BVUmVuZGVyaW5n
Q29udGV4dCosIEFycmF5QnVmZmVyVmlldyopOworCisgICAgdW5zaWduZWQgbG9uZyBsZW5ndGgo
KSBjb25zdDsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGNvbnRlbnRzKCkgY29uc3Q7CisKKyAg
ICBNZXRhbEJ1ZmZlciogYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KKworcHJp
dmF0ZToKKyAgICBXZWJHUFVCdWZmZXIoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIEFycmF5QnVm
ZmVyVmlldyopOworICAgIFJlZlB0cjxNZXRhbEJ1ZmZlcj4gbV9idWZmZXI7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVUJ1ZmZlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVC
dWZmZXIuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zNzkyZWFk
N2VjYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VUJ1ZmZlci5pZGwKQEAgLTAsMCArMSwzMSBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCitpbnRl
cmZhY2UgV2ViR1BVQnVmZmVyIHsKKworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBs
b25nIGxlbmd0aDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgQXJyYXlCdWZmZXJWaWV3IGNvbnRl
bnRzOworCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
Q29tbWFuZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21t
YW5kQnVmZmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjU1
ZmQxZWY5ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHUFVDb21tYW5kQnVmZmVyLmNwcApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5j
bHVkZSAiV2ViR1BVQ29tbWFuZEJ1ZmZlci5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2lu
Y2x1ZGUgIk1ldGFsQ29tbWFuZEJ1ZmZlci5oIgorI2luY2x1ZGUgIk1ldGFsQ29tbWFuZFF1ZXVl
LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29tbWFuZFF1ZXVlLmgiCisjaW5jbHVkZSAiV2ViR1BVRHJh
d2FibGUuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAi
V2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNz
RGVzY3JpcHRvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXZWJHUFVDb21tYW5k
QnVmZmVyPiBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4
dCogY29udGV4dCwgV2ViR1BVQ29tbWFuZFF1ZXVlKiBxdWV1ZSkKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJHUFVDb21tYW5kQnVmZmVyKGNvbnRleHQsIHF1ZXVlKSk7Cit9CisKK1dl
YkdQVUNvbW1hbmRCdWZmZXI6OldlYkdQVUNvbW1hbmRCdWZmZXIoV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dCogY29udGV4dCwgV2ViR1BVQ29tbWFuZFF1ZXVlKiBxdWV1ZSkKKyAgICA6IFdlYkdQVU9i
amVjdChjb250ZXh0KQoreworICAgIExPRyhXZWJHUFUsICItLSBXZWJHUFVDb21tYW5kQnVmZmVy
OjpXZWJHUFVDb21tYW5kQnVmZmVyKCkgTkVXIik7CisgICAgbV9jb21tYW5kQnVmZmVyID0gcXVl
dWUtPmNvbW1hbmRRdWV1ZSgpLT5jcmVhdGVDb21tYW5kQnVmZmVyKCk7Cit9CisKK1dlYkdQVUNv
bW1hbmRCdWZmZXI6On5XZWJHUFVDb21tYW5kQnVmZmVyKCkKK3sKKyAgICBMT0coV2ViR1BVLCAi
LS0gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6fldlYkdQVUNvbW1hbmRCdWZmZXIoKSBERUxFVEUiKTsK
K30KKwordm9pZCBXZWJHUFVDb21tYW5kQnVmZmVyOjpjb21taXQoKQoreworICAgIExPRyhXZWJH
UFUsICItLSBXZWJHUFVDb21tYW5kQnVmZmVyOjpjb21taXQoKSIpOworICAgIGlmICghbV9jb21t
YW5kQnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICByZXR1cm4gbV9jb21tYW5kQnVmZmVy
LT5jb21taXQoKTsKK30KKwordm9pZCBXZWJHUFVDb21tYW5kQnVmZmVyOjpwcmVzZW50RHJhd2Fi
bGUoV2ViR1BVRHJhd2FibGUmIGRyYXdhYmxlKQoreworICAgIExPRyhXZWJHUFUsICItLSBXZWJH
UFVDb21tYW5kQnVmZmVyOjpwcmVzZW50RHJhd2FibGUoKSIpOworICAgIGlmICghbV9jb21tYW5k
QnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICByZXR1cm4gbV9jb21tYW5kQnVmZmVyLT5w
cmVzZW50RHJhd2FibGUoZHJhd2FibGUuZHJhd2FibGUoKSk7Cit9CisKK1JlZlB0cjxXZWJHUFVS
ZW5kZXJDb21tYW5kRW5jb2Rlcj4gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlUmVuZGVyQ29t
bWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcihXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikKK3sKKyAgICBSZWZQdHI8V2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI+IGNvbW1h
bmRFbmNvZGVyID0gV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI6OmNyZWF0ZSh0aGlzLT5jb250
ZXh0KCksIHRoaXMsICZkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4gY29tbWFuZEVuY29kZXI7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi44ZTI0Yzk1ODM3NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRCdWZmZXIuaApAQCAtMCwwICsxLDU5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJXZWJHUFVPYmplY3QuaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZXRhbENvbW1hbmRCdWZmZXI7CitjbGFzcyBX
ZWJHUFVDb21tYW5kUXVldWU7CitjbGFzcyBXZWJHUFVEcmF3YWJsZTsKK2NsYXNzIFdlYkdQVUZ1
bmN0aW9uOworY2xhc3MgV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI7CitjbGFzcyBXZWJHUFVS
ZW5kZXJQYXNzRGVzY3JpcHRvcjsKKworY2xhc3MgV2ViR1BVQ29tbWFuZEJ1ZmZlciA6IHB1Ymxp
YyBXZWJHUFVPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVUNvbW1hbmRCdWZm
ZXIoKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IGNyZWF0ZShXZWJHUFVS
ZW5kZXJpbmdDb250ZXh0KiwgV2ViR1BVQ29tbWFuZFF1ZXVlKik7CisKKyAgICB2b2lkIGNvbW1p
dCgpOworICAgIHZvaWQgcHJlc2VudERyYXdhYmxlKFdlYkdQVURyYXdhYmxlJik7CisKKyAgICBS
ZWZQdHI8V2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI+IGNyZWF0ZVJlbmRlckNvbW1hbmRFbmNv
ZGVyV2l0aERlc2NyaXB0b3IoV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
OworCisgICAgTWV0YWxDb21tYW5kQnVmZmVyKiBjb21tYW5kQnVmZmVyKCkgeyByZXR1cm4gbV9j
b21tYW5kQnVmZmVyLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgV2ViR1BVQ29tbWFuZEJ1ZmZl
cihXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgV2ViR1BVQ29tbWFuZFF1ZXVlKik7CisgICAgUmVm
UHRyPE1ldGFsQ29tbWFuZEJ1ZmZlcj4gbV9jb21tYW5kQnVmZmVyOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHUFVDb21tYW5kQnVmZmVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VUNvbW1hbmRCdWZmZXIuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li43M2FmZWFmYjFmOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVUNvbW1hbmRCdWZmZXIuaWRsCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorKi8KKworaW50ZXJmYWNlIFdlYkdQVUNvbW1hbmRCdWZmZXIgeworCisgICAgV2ViR1BV
UmVuZGVyQ29tbWFuZEVuY29kZXIgY3JlYXRlUmVuZGVyQ29tbWFuZEVuY29kZXJXaXRoRGVzY3Jp
cHRvcihXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKKyAgICB2b2lkIGNv
bW1pdCgpOworICAgIHZvaWQgcHJlc2VudERyYXdhYmxlKFdlYkdQVURyYXdhYmxlIGRyYXdhYmxl
KTsKKworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUNv
bW1hbmRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5k
UXVldWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lOGIzNTNj
Y2M0NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VUNvbW1hbmRRdWV1ZS5jcHAKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUg
IldlYkdQVUNvbW1hbmRRdWV1ZS5oIgorCisjaW5jbHVkZSAiTWV0YWxDb21tYW5kUXVldWUuaCIK
KyNpbmNsdWRlICJXZWJHUFVDb21tYW5kQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVy
aW5nQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXZWJHUFVDb21tYW5k
UXVldWU+IFdlYkdQVUNvbW1hbmRRdWV1ZTo6Y3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQq
IGNvbnRleHQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQ29tbWFuZFF1ZXVl
KGNvbnRleHQpKTsKK30KKworV2ViR1BVQ29tbWFuZFF1ZXVlOjpXZWJHUFVDb21tYW5kUXVldWUo
V2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKKyAgICA6IFdlYkdQVU9iamVjdChjb250
ZXh0KQoreworICAgIG1fY29tbWFuZFF1ZXVlID0gY29udGV4dC0+ZGV2aWNlKCktPmNyZWF0ZUNv
bW1hbmRRdWV1ZSgpOworfQorCitXZWJHUFVDb21tYW5kUXVldWU6On5XZWJHUFVDb21tYW5kUXVl
dWUoKQoreworfQorCitTdHJpbmcgV2ViR1BVQ29tbWFuZFF1ZXVlOjpsYWJlbCgpIGNvbnN0Cit7
CisgICAgaWYgKCFtX2NvbW1hbmRRdWV1ZSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CisKKyAgICByZXR1cm4gbV9jb21tYW5kUXVldWUtPmxhYmVsKCk7Cit9CisKK3ZvaWQgV2ViR1BV
Q29tbWFuZFF1ZXVlOjpzZXRMYWJlbChjb25zdCBTdHJpbmcmIGxhYmVsKQoreworICAgIGlmICgh
bV9jb21tYW5kUXVldWUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29tbWFuZFF1ZXVlLT5z
ZXRMYWJlbChsYWJlbCk7Cit9CisKK1JlZlB0cjxXZWJHUFVDb21tYW5kQnVmZmVyPiBXZWJHUFVD
b21tYW5kUXVldWU6OmNyZWF0ZUNvbW1hbmRCdWZmZXIoKQoreworICAgIFJlZlB0cjxXZWJHUFVD
b21tYW5kQnVmZmVyPiBidWZmZXIgPSBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUodGhpcy0+
Y29udGV4dCgpLCB0aGlzKTsKKyAgICByZXR1cm4gYnVmZmVyOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VUNvbW1hbmRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQ29tbWFu
ZFF1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjMxMjg4MzFj
MTFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
Q29tbWFuZFF1ZXVlLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViR1BVT2Jq
ZWN0LmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgTWV0YWxDb21tYW5kUXVldWU7CitjbGFzcyBXZWJHUFVDb21tYW5kQnVmZmVyOwor
CitjbGFzcyBXZWJHUFVDb21tYW5kUXVldWUgOiBwdWJsaWMgV2ViR1BVT2JqZWN0IHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5XZWJHUFVDb21tYW5kUXVldWUoKTsKKyAgICBzdGF0aWMgUmVmPFdl
YkdQVUNvbW1hbmRRdWV1ZT4gY3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqKTsKKworICAg
IFN0cmluZyBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgU3RyaW5nJik7
CisKKyAgICBSZWZQdHI8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gY3JlYXRlQ29tbWFuZEJ1ZmZlcigp
OworCisgICAgTWV0YWxDb21tYW5kUXVldWUqIGNvbW1hbmRRdWV1ZSgpIHsgcmV0dXJuIG1fY29t
bWFuZFF1ZXVlLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgV2ViR1BVQ29tbWFuZFF1ZXVlKFdl
YkdQVVJlbmRlcmluZ0NvbnRleHQqKTsKKworICAgIFJlZlB0cjxNZXRhbENvbW1hbmRRdWV1ZT4g
bV9jb21tYW5kUXVldWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRRdWV1ZS5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kUXVldWUuaWRsCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45ZGZhOWRiOGIwZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRRdWV1ZS5pZGwK
QEAgLTAsMCArMSwzMSBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0
OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCitpbnRlcmZhY2UgV2ViR1BV
Q29tbWFuZFF1ZXVlIHsKKworICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7CisKKyAgICBX
ZWJHUFVDb21tYW5kQnVmZmVyPyBjcmVhdGVDb21tYW5kQnVmZmVyKCk7Cit9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxEZXNj
cmlwdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNjIwODAz
M2NiODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcApAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaW5jbHVkZSAiV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oIgorCisjaW5jbHVkZSAi
TWV0YWxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyaW5n
Q29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXZWJHUFVEZXB0aFN0ZW5j
aWxEZXNjcmlwdG9yPiBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpjcmVhdGUoKQorewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IoKSk7
Cit9CisKK1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3I6OldlYkdQVURlcHRoU3RlbmNpbERl
c2NyaXB0b3IoKQorICAgIDogV2ViR1BVT2JqZWN0KCkKK3sKKyAgICBtX2RlcHRoU3RlbmNpbERl
c2NyaXB0b3IgPSBNZXRhbERlcHRoU3RlbmNpbERlc2NyaXB0b3I6OmNyZWF0ZSgpOworfQorCitX
ZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjp+V2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRv
cigpCit7Cit9CisKK1N0cmluZyBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpsYWJlbCgp
IGNvbnN0Cit7CisgICAgaWYgKCFtX2RlcHRoU3RlbmNpbERlc2NyaXB0b3IpCisgICAgICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOworCisgICAgcmV0dXJuIG1fZGVwdGhTdGVuY2lsRGVzY3JpcHRv
ci0+bGFiZWwoKTsKK30KKwordm9pZCBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpzZXRM
YWJlbChjb25zdCBTdHJpbmcmIGxhYmVsKQoreworICAgICAgaWYgKCFtX2RlcHRoU3RlbmNpbERl
c2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZGVwdGhTdGVuY2lsRGVzY3JpcHRv
ci0+c2V0TGFiZWwobGFiZWwpOworfQorCitib29sIFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0
b3I6OmRlcHRoV3JpdGVFbmFibGVkKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZGVwdGhTdGVuY2ls
RGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1fZGVwdGhT
dGVuY2lsRGVzY3JpcHRvci0+ZGVwdGhXcml0ZUVuYWJsZWQoKTsKK30KKwordm9pZCBXZWJHUFVE
ZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpzZXREZXB0aFdyaXRlRW5hYmxlZChib29sIG5ld0RlcHRo
V3JpdGVFbmFibGVkKQoreworICAgIGlmICghbV9kZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2RlcHRoU3RlbmNpbERlc2NyaXB0b3ItPnNldERlcHRoV3Jp
dGVFbmFibGVkKG5ld0RlcHRoV3JpdGVFbmFibGVkKTsKK30KKworYXV0byBXZWJHUFVEZXB0aFN0
ZW5jaWxEZXNjcmlwdG9yOjpkZXB0aENvbXBhcmVGdW5jdGlvbigpIGNvbnN0IC0+IFdlYkdQVUNv
bXBhcmVGdW5jdGlvbgoreworICAgIHJldHVybiBtX2RlcHRoQ29tcGFyZUZ1bmN0aW9uOworfQor
Cit2b2lkIFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3I6OnNldERlcHRoQ29tcGFyZUZ1bmN0
aW9uKENvbXBhcmVGdW5jdGlvbiBuZXdEZXB0aENvbXBhcmVGdW5jdGlvbikKK3sKKyAgICBtX2Rl
cHRoQ29tcGFyZUZ1bmN0aW9uID0gbmV3RGVwdGhDb21wYXJlRnVuY3Rpb247CisgICAgbV9kZXB0
aFN0ZW5jaWxEZXNjcmlwdG9yLT5zZXREZXB0aENvbXBhcmVGdW5jdGlvbih0b01ldGFsQ29tcGFy
ZUZ1bmN0aW9uKG1fZGVwdGhDb21wYXJlRnVuY3Rpb24pKTsKKworLy8gICAgaWYgKE9wdGlvbmFs
PFdlYkdQVUNvbXBhcmVGdW5jdGlvbj4gY29tcGFyZUZ1bmN0aW9uID0gdG9XZWJHUFVDb21wYXJl
RnVuY3Rpb24obmV3RGVwdGhDb21wYXJlRnVuY3Rpb24pKSB7CisvLyAgICAgICAgbV9kZXB0aENv
bXBhcmVGdW5jdGlvbiA9IGNvbXBhcmVGdW5jdGlvbi52YWx1ZSgpOworLy8gICAgICAgIG1fZGVw
dGhTdGVuY2lsRGVzY3JpcHRvci0+c2V0RGVwdGhDb21wYXJlRnVuY3Rpb24odG9NZXRhbENvbXBh
cmVGdW5jdGlvbihtX2RlcHRoQ29tcGFyZUZ1bmN0aW9uKSk7CisvLyAgICB9Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi41ZmJmY2JhNzEzYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaApAQCAt
MCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJHUFVFbnVtcy5oIgorI2luY2x1ZGUgIldl
YkdQVU9iamVjdC5oIgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIE1ldGFsRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjsKKworY2xhc3MgV2Vi
R1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvciA6IHB1YmxpYyBXZWJHUFVPYmplY3QgeworcHVibGlj
OgorICAgIHZpcnR1YWwgfldlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IoKTsKKyAgICBzdGF0
aWMgUmVmPFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3I+IGNyZWF0ZSgpOworCisgICAgU3Ry
aW5nIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKTsKKwor
ICAgIGJvb2wgZGVwdGhXcml0ZUVuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldERlcHRoV3Jp
dGVFbmFibGVkKGJvb2wpOworCisgICAgdXNpbmcgQ29tcGFyZUZ1bmN0aW9uID0gV2ViR1BVQ29t
cGFyZUZ1bmN0aW9uOworICAgIENvbXBhcmVGdW5jdGlvbiBkZXB0aENvbXBhcmVGdW5jdGlvbigp
IGNvbnN0OworICAgIHZvaWQgc2V0RGVwdGhDb21wYXJlRnVuY3Rpb24oQ29tcGFyZUZ1bmN0aW9u
KTsKKworICAgIE1ldGFsRGVwdGhTdGVuY2lsRGVzY3JpcHRvciogZGVwdGhTdGVuY2lsRGVzY3Jp
cHRvcigpIHsgcmV0dXJuIG1fZGVwdGhTdGVuY2lsRGVzY3JpcHRvci5nZXQoKTsgfQorCitwcml2
YXRlOgorICAgIFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IoKTsKKworICAgIFdlYkdQVUNv
bXBhcmVGdW5jdGlvbiBtX2RlcHRoQ29tcGFyZUZ1bmN0aW9uOworICAgIFJlZlB0cjxNZXRhbERl
cHRoU3RlbmNpbERlc2NyaXB0b3I+IG1fZGVwdGhTdGVuY2lsRGVzY3JpcHRvcjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmlkbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYWY1MzdhYzc4MzMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9y
LmlkbApAQCAtMCwwICsxLDQ3IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFy
ZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK2VudW0gV2ViR1BV
Q29tcGFyZUZ1bmN0aW9uIHsKKyJuZXZlciIsCisibGVzcyIsCisiZXF1YWwiLAorImxlc3NlcXVh
bCIsCisiZ3JlYXRlciIsCisibm90ZXF1YWwiLAorImdyZWF0ZXJlcXVhbCIsCisiYWx3YXlzIgor
fTsKKworWyBDb25zdHJ1Y3RvciBdCitpbnRlcmZhY2UgV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3Jp
cHRvciB7CisKKyAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOworCisgICAgYXR0cmlidXRl
IFdlYkdQVUNvbXBhcmVGdW5jdGlvbiBkZXB0aENvbXBhcmVGdW5jdGlvbjsKKyAgICBhdHRyaWJ1
dGUgYm9vbGVhbiBkZXB0aFdyaXRlRW5hYmxlZDsKKworLy8gICAgYXR0cmlidXRlIFdlYkdQVVN0
ZW5jaWxEZXNjcmlwdG9yIGJhY2tGYWNlU3RlbmNpbDsKKy8vICAgIGF0dHJpYnV0ZSBXZWJHUFVT
dGVuY2lsRGVzY3JpcHRvciBmcm9udEZhY2VTdGVuY2lsOworfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzgwM2RlODcxZDkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0
ZS5jcHAKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYkdQVURlcHRo
U3RlbmNpbFN0YXRlLmgiCisKKyNpbmNsdWRlICJNZXRhbERlcHRoU3RlbmNpbFN0YXRlLmgiCisj
aW5jbHVkZSAiV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVURlcHRo
U3RlbmNpbERlc2NyaXB0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8V2ViR1BV
RGVwdGhTdGVuY2lsU3RhdGU+IFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlOjpjcmVhdGUoV2ViR1BV
UmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvciog
ZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVEZXB0aFN0ZW5j
aWxTdGF0ZShjb250ZXh0LCBkZXNjcmlwdG9yKSk7Cit9CisKK1dlYkdQVURlcHRoU3RlbmNpbFN0
YXRlOjpXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250
ZXh0LCBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorICAgIDogV2Vi
R1BVT2JqZWN0KGNvbnRleHQpCit7CisgICAgaWYgKCFjb250ZXh0IHx8ICFkZXNjcmlwdG9yKQor
ICAgICAgICByZXR1cm47CisgICAgbV9kZXB0aFN0ZW5jaWxTdGF0ZSA9IE1ldGFsRGVwdGhTdGVu
Y2lsU3RhdGU6OmNyZWF0ZShjb250ZXh0LT5kZXZpY2UoKS5nZXQoKSwgZGVzY3JpcHRvci0+ZGVw
dGhTdGVuY2lsRGVzY3JpcHRvcigpKTsKK30KKworV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGU6On5X
ZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZSgpCit7Cit9CisKK1N0cmluZyBXZWJHUFVEZXB0aFN0ZW5j
aWxTdGF0ZTo6bGFiZWwoKSBjb25zdAoreworICAgIGlmICghbV9kZXB0aFN0ZW5jaWxTdGF0ZSkK
KyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4gbV9kZXB0aFN0ZW5j
aWxTdGF0ZS0+bGFiZWwoKTsKK30KKwordm9pZCBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZTo6c2V0
TGFiZWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKK3sKKyAgICBpZiAoIW1fZGVwdGhTdGVuY2lsU3Rh
dGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZGVwdGhTdGVuY2lsU3RhdGUtPnNldExhYmVs
KGxhYmVsKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOWQ4ZDQ4ZTJjYzcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5o
CkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIldlYkdQVU9iamVjdC5oIgorCisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1ldGFs
RGVwdGhTdGVuY2lsU3RhdGU7CitjbGFzcyBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOwor
CitjbGFzcyBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZSA6IHB1YmxpYyBXZWJHUFVPYmplY3Qgewor
cHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVURlcHRoU3RlbmNpbFN0YXRlKCk7CisgICAgc3Rh
dGljIFJlZjxXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZT4gY3JlYXRlKFdlYkdQVVJlbmRlcmluZ0Nv
bnRleHQqLCBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKik7CisKKyAgICBTdHJpbmcgbGFi
ZWwoKSBjb25zdDsKKyAgICB2b2lkIHNldExhYmVsKGNvbnN0IFN0cmluZyYpOworCisgICAgTWV0
YWxEZXB0aFN0ZW5jaWxTdGF0ZSogZGVwdGhTdGVuY2lsU3RhdGUoKSB7IHJldHVybiBtX2RlcHRo
U3RlbmNpbFN0YXRlLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgV2ViR1BVRGVwdGhTdGVuY2ls
U3RhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0
b3IqKTsKKworICAgIFJlZlB0cjxNZXRhbERlcHRoU3RlbmNpbFN0YXRlPiBtX2RlcHRoU3RlbmNp
bFN0YXRlOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaWRsIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lZWNhNjdkY2YwNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNp
bFN0YXRlLmlkbApAQCAtMCwwICsxLDMwIEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK2ludGVy
ZmFjZSBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZSB7CisKK2F0dHJpYnV0ZSBET01TdHJpbmcgbGFi
ZWw7CisKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVE
cmF3YWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEcmF3YWJsZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmNmMzdlNTIzNzAxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRHJhd2Fi
bGUuY3BwCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXZWJHUFVEcmF3
YWJsZS5oIgorCisjaW5jbHVkZSAiTWV0YWxEcmF3YWJsZS5oIgorI2luY2x1ZGUgIk1ldGFsVGV4
dHVyZS5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJX
ZWJHUFVUZXh0dXJlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFdlYkdQVURyYXdh
YmxlPiBXZWJHUFVEcmF3YWJsZTo6Y3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRl
eHQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVRHJhd2FibGUoY29udGV4dCkp
OworfQorCitXZWJHUFVEcmF3YWJsZTo6V2ViR1BVRHJhd2FibGUoV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dCogY29udGV4dCkKKyAgICA6IFdlYkdQVU9iamVjdChjb250ZXh0KQoreworICAgIG1fZHJh
d2FibGUgPSBjb250ZXh0LT5kZXZpY2UoKS0+Z2V0RnJhbWVidWZmZXIoKTsKKyAgICBpZiAoIW1f
ZHJhd2FibGUpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxNZXRhbFRleHR1cmU+IGRy
YXdhYmxlVGV4dHVyZSA9IE1ldGFsVGV4dHVyZTo6Y3JlYXRlRnJvbUV4aXN0aW5nVGV4dHVyZSht
X2RyYXdhYmxlLT50ZXh0dXJlKCkpOworICAgIG1fdGV4dHVyZSA9IFdlYkdQVVRleHR1cmU6OmNy
ZWF0ZUZyb21EcmF3YWJsZVRleHR1cmUoY29udGV4dCwgZHJhd2FibGVUZXh0dXJlKTsKK30KKwor
V2ViR1BVRHJhd2FibGU6On5XZWJHUFVEcmF3YWJsZSgpCit7Cit9CisKK1dlYkdQVVRleHR1cmUq
IFdlYkdQVURyYXdhYmxlOjp0ZXh0dXJlKCkKK3sKKyAgICBpZiAoIW1fdGV4dHVyZSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gbV90ZXh0dXJlLmdldCgpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVURyYXdhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVEcmF3YWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45ODE0
ZjEwYzU1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdQVURyYXdhYmxlLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViR1BVT2Jq
ZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWV0YWxEcmF3YWJsZTsKK2Ns
YXNzIFdlYkdQVVRleHR1cmU7CisKK2NsYXNzIFdlYkdQVURyYXdhYmxlIDogcHVibGljIFdlYkdQ
VU9iamVjdCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViR1BVRHJhd2FibGUoKTsKKyAgICBz
dGF0aWMgUmVmPFdlYkdQVURyYXdhYmxlPiBjcmVhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCop
OworCisgICAgV2ViR1BVVGV4dHVyZSogdGV4dHVyZSgpOworCisgICAgTWV0YWxEcmF3YWJsZSog
ZHJhd2FibGUoKSB7IHJldHVybiBtX2RyYXdhYmxlLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAg
V2ViR1BVRHJhd2FibGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCopOworICAgIFJlZlB0cjxNZXRh
bERyYXdhYmxlPiBtX2RyYXdhYmxlOworICAgIFJlZlB0cjxXZWJHUFVUZXh0dXJlPiBtX3RleHR1
cmU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURyYXdhYmxlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVURyYXdhYmxlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uNmQ2MTc5ZDc2MTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHUFVEcmF3YWJsZS5pZGwKQEAgLTAsMCArMSwzMCBAQAorLyoKKyog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisqLworCitpbnRlcmZhY2UgV2ViR1BVRHJhd2FibGUgeworCisgICAgcmVhZG9u
bHkgYXR0cmlidXRlIFdlYkdQVVRleHR1cmUgdGV4dHVyZTsgLy8gRklYTUU6IE9ubHkgdGhlIGZy
YW1lYnVmZmVyIHNob3VsZCBoYXZlIHRoaXMuCisKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVFbnVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHUFVFbnVtcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjA3MDQ5NDViZWQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR1BVRW51bXMuY3BwCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5j
bHVkZSAiV2ViR1BVRW51bXMuaCIKKworI2luY2x1ZGUgIk1ldGFsRW51bXMuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitzdGQ6Om9wdGlvbmFsPFdlYkdQVUNvbXBhcmVGdW5jdGlvbj4gdG9X
ZWJHUFVDb21wYXJlRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGlmIChlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAibmV2ZXIiKSkKKyAgICAgICAgcmV0dXJu
IFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6TmV2ZXI7CisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKG5hbWUsICJsZXNzIikpCisgICAgICAgIHJldHVybiBXZWJHUFVDb21wYXJl
RnVuY3Rpb246Okxlc3M7CisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5h
bWUsICJlcXVhbCIpKQorICAgICAgICByZXR1cm4gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpFcXVh
bDsKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgImxlc3NlcXVh
bCIpKQorICAgICAgICByZXR1cm4gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpMZXNzZXF1YWw7Cisg
ICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJncmVhdGVyIikpCisg
ICAgICAgIHJldHVybiBXZWJHUFVDb21wYXJlRnVuY3Rpb246OkdyZWF0ZXI7CisgICAgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJub3RlcXVhbCIpKQorICAgICAgICBy
ZXR1cm4gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpOb3RlcXVhbDsKKyAgICBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgImdyZWF0ZXJlcXVhbCIpKQorICAgICAgICByZXR1
cm4gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpHcmVhdGVyZXF1YWw7CisgICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJhbHdheXMiKSkKKyAgICAgICAgcmV0dXJuIFdl
YkdQVUNvbXBhcmVGdW5jdGlvbjo6QWx3YXlzOworCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKworU3RyaW5nIHdlYjNEQ29tcGFyZUZ1bmN0
aW9uTmFtZShjb25zdCBXZWJHUFVDb21wYXJlRnVuY3Rpb24gdmFsdWUpCit7CisgICAgaWYgKHZh
bHVlID09IFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6TmV2ZXIpCisgICAgICAgIHJldHVybiBBU0NJ
SUxpdGVyYWwoIm5ldmVyIik7CisgICAgaWYgKHZhbHVlID09IFdlYkdQVUNvbXBhcmVGdW5jdGlv
bjo6TGVzcykKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgibGVzcyIpOworICAgIGlmICh2
YWx1ZSA9PSBXZWJHUFVDb21wYXJlRnVuY3Rpb246OkVxdWFsKQorICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJlcXVhbCIpOworICAgIGlmICh2YWx1ZSA9PSBXZWJHUFVDb21wYXJlRnVuY3Rp
b246Okxlc3NlcXVhbCkKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgibGVzc2VxdWFsIik7
CisgICAgaWYgKHZhbHVlID09IFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6R3JlYXRlcikKKyAgICAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiZ3JlYXRlciIpOworICAgIGlmICh2YWx1ZSA9PSBXZWJH
UFVDb21wYXJlRnVuY3Rpb246Ok5vdGVxdWFsKQorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCJub3RlcXVhbCIpOworICAgIGlmICh2YWx1ZSA9PSBXZWJHUFVDb21wYXJlRnVuY3Rpb246Okdy
ZWF0ZXJlcXVhbCkKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiZ3JlYXRlcmVxdWFsIik7
CisgICAgaWYgKHZhbHVlID09IFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6QWx3YXlzKQorICAgICAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsKCJhbHdheXMiKTsKKyAgICAKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKworTWV0YWxDb21wYXJlRnVu
Y3Rpb24gdG9NZXRhbENvbXBhcmVGdW5jdGlvbihjb25zdCBXZWJHUFVDb21wYXJlRnVuY3Rpb24g
dmFsdWUpCit7CisgICAgaWYgKHZhbHVlID09IFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6TmV2ZXIp
CisgICAgICAgIHJldHVybiBNZXRhbENvbXBhcmVGdW5jdGlvbjo6TmV2ZXI7CisgICAgaWYgKHZh
bHVlID09IFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6TGVzcykKKyAgICAgICAgcmV0dXJuIE1ldGFs
Q29tcGFyZUZ1bmN0aW9uOjpMZXNzOworICAgIGlmICh2YWx1ZSA9PSBXZWJHUFVDb21wYXJlRnVu
Y3Rpb246OkVxdWFsKQorICAgICAgICByZXR1cm4gTWV0YWxDb21wYXJlRnVuY3Rpb246OkVxdWFs
OworICAgIGlmICh2YWx1ZSA9PSBXZWJHUFVDb21wYXJlRnVuY3Rpb246Okxlc3NlcXVhbCkKKyAg
ICAgICAgcmV0dXJuIE1ldGFsQ29tcGFyZUZ1bmN0aW9uOjpMZXNzRXF1YWw7CisgICAgaWYgKHZh
bHVlID09IFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6R3JlYXRlcikKKyAgICAgICAgcmV0dXJuIE1l
dGFsQ29tcGFyZUZ1bmN0aW9uOjpHcmVhdGVyOworICAgIGlmICh2YWx1ZSA9PSBXZWJHUFVDb21w
YXJlRnVuY3Rpb246Ok5vdGVxdWFsKQorICAgICAgICByZXR1cm4gTWV0YWxDb21wYXJlRnVuY3Rp
b246Ok5vdEVxdWFsOworICAgIGlmICh2YWx1ZSA9PSBXZWJHUFVDb21wYXJlRnVuY3Rpb246Okdy
ZWF0ZXJlcXVhbCkKKyAgICAgICAgcmV0dXJuIE1ldGFsQ29tcGFyZUZ1bmN0aW9uOjpHcmVhdGVy
RXF1YWw7CisgICAgaWYgKHZhbHVlID09IFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6QWx3YXlzKQor
ICAgICAgICByZXR1cm4gTWV0YWxDb21wYXJlRnVuY3Rpb246OkFsd2F5czsKKyAgICAKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gTWV0YWxDb21wYXJlRnVuY3Rpb246Ok5l
dmVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUVudW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHUFVFbnVtcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li42NDQ3NjIwMWY1OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVUVudW1zLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09w
dGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworZW51bSBjbGFzcyBXZWJHUFVDb21wYXJlRnVuY3Rpb24geworICAgIE5ldmVy
LAorICAgIExlc3MsCisgICAgRXF1YWwsCisgICAgTGVzc2VxdWFsLAorICAgIEdyZWF0ZXIsCisg
ICAgTm90ZXF1YWwsCisgICAgR3JlYXRlcmVxdWFsLAorICAgIEFsd2F5cworfTsKKworc3RkOjpv
cHRpb25hbDxXZWJHUFVDb21wYXJlRnVuY3Rpb24+IHRvV2ViR1BVQ29tcGFyZUZ1bmN0aW9uKGNv
bnN0IFN0cmluZyYpOworU3RyaW5nIHdlYjNEQ29tcGFyZUZ1bmN0aW9uTmFtZShjb25zdCBXZWJH
UFVDb21wYXJlRnVuY3Rpb24pOworCitlbnVtIGNsYXNzIE1ldGFsQ29tcGFyZUZ1bmN0aW9uOwor
TWV0YWxDb21wYXJlRnVuY3Rpb24gdG9NZXRhbENvbXBhcmVGdW5jdGlvbihjb25zdCBXZWJHUFVD
b21wYXJlRnVuY3Rpb24pOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUVudW1zLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVUVudW1zLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uMDgyNjcyOTljMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVFbnVtcy5pZGwKQEAgLTAsMCArMSwxOTkgQEAKKy8qCisq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorKi8KKworZW51bSBXZWJHUFVQaXhlbEZvcm1hdCB7CisiQkdSQThVbm9ybSIK
K307CisKK2VudW0gV2ViR1BVTG9hZEFjdGlvbiB7CisiZG9udGNhcmUiLAorImxvYWQiLAorImNs
ZWFyIgorfTsKKworZW51bSBXZWJHUFVTdG9yZUFjdGlvbiB7CisiZG9udGNhcmUiLAorInN0b3Jl
IiwKKyJtdWx0aXNhbXBsZXJlc29sdmUiCit9OworCitlbnVtIFdlYkdQVVByaW1pdGl2ZVR5cGUg
eworInBvaW50IiwKKyJsaW5lIiwKKyJsaW5lc3RyaXAiLAorInRyaWFuZ2xlIiwKKyJ0cmlhbmds
ZXN0cmlwIgorfTsKKworZW51bSBXZWJHUFVGdW5jdGlvblR5cGUgeworImZyYWdtZW50IiwKKyJ2
ZXJ0ZXgiCit9OworCitlbnVtIFdlYkdQVVN0ZW5jaWxPcGVyYXRpb24geworImtlZXAiLAorInpl
cm8iLAorInJlcGxhY2UiLAorImluY3JlbWVudGNsYW1wIiwKKyJkZWNyZW1lbnRjbGFtcCIsCisi
aW52ZXJ0IiwKKyJpbmNyZW1lbnR3cmFwIiwKKyJkZWNyZW1lbnR3cmFwIgorfTsKKworZW51bSBX
ZWJHUFVTdGF0dXMgeworIm5vdGVucXVldWVkIiwKKyJlbnF1ZXVlZCIsCisiY29tbWl0dGVkIiwK
KyJzY2hlZHVsZWQiLAorImNvbXBsZXRlZCIsCisiZXJyb3IiCit9OworCitlbnVtIFdlYkdQVVNh
bXBsZXJBZGRyZXNzTW9kZSB7CisiY2xhbXB0b2VkZ2UiLAorIm1pcnJvcmNsYW1wdG9lZGdlIiwK
KyJyZXBlYXQiLAorIm1pcnJvcnJlcGVhdCIsCisiY2xhbXB0b3plcm8iCit9OworCitlbnVtIFdl
YkdQVVNhbXBsZXJNaW5NYWdGaWx0ZXIgeworIm5lYXJlc3QiLAorImxpbmVhciIKK307CisKK2Vu
dW0gV2ViR1BVU2FtcGxlck1pcEZpbHRlciB7Cisibm90bWlwbWFwcGVkIiwKKyJuZWFyZXN0IiwK
KyJsaW5lYXIiCit9OworCitlbnVtIFdlYkdQVUN1bGxNb2RlIHsKKyJub25lIiwKKyJmcm9udCIs
CisiYmFjayIKK307CisKK2VudW0gV2ViR1BVSW5kZXhUeXBlIHsKKyJ1aW50MTYiLAorInVpbnQz
MiIKK307CisKK2VudW0gV2ViR1BVVmlzaWJpbGl0eVJlc3VsdE1vZGUgeworImRpc2FibGVkIiwK
KyJib29sZWFuIiwKKyJjb3VudGluZyIKK307CisKK2VudW0gV2ViR1BVV2luZGluZyB7CisiY2xv
Y2t3aXNlIiwKKyJjb3VudGVyY2xvY2t3aXNlIgorfTsKKworZW51bSBXZWJHUFVEZXB0aENsaXBN
b2RlIHsKKyJjbGlwIiwKKyJjbGFtcCIKK307CisKK2VudW0gV2ViR1BVVHJpYW5nbGVGaWxsTW9k
ZSB7CisiZmlsbCIsCisibGluZXMiCit9OworCitlbnVtIFdlYkdQVUNQVUNhY2hlTW9kZSB7Cisi
ZGVmYXVsdGNhY2hlIiwKKyJ3cml0ZWNvbWJpbmVkIgorfTsKKworZW51bSBXZWJHUFVTdG9yYWdl
TW9kZSB7Cisic2hhcmVkIiwKKyJtYW5hZ2VkIiwKKyJwcml2YXRlIgorfTsKKworZW51bSBXZWJH
UFVSZXNvdXJjZU9wdGlvbnMgeworImNwdWNhY2hlbW9kZWRlZmF1bHRjYWNoZSIsCisiY3B1Y2Fj
aGVtb2Rld3JpdGVjb21iaW5lZCIsCisic3RvcmFnZW1vZGVzaGFyZWQiLAorInN0b3JhZ2Vtb2Rl
bWFuYWdlZCIsCisic3RvcmFnZW1vZGVwcml2YXRlIiwKKyJvcHRpb25jcHVjYWNoZW1vZGVkZWZh
dWx0Y2FjaGUiLAorIm9wdGlvbmNwdWNhY2hlbW9kZXdyaXRlY29tYmluZWQiCit9OworCitlbnVt
IFdlYkdQVVRleHR1cmVVc2FnZSB7CisidW5rbm93biIsCisic2hhZGVycmVhZCIsCisic2hhZGVy
d3JpdGUiLAorInJlbmRlcnRhcmdldCIsCisicGl4ZWxmb3JtYXR2aWV3IgorfTsKKworZW51bSBX
ZWJHUFVCbGVuZE9wZXJhdGlvbiB7CisiYWRkIiwKKyJzdWJ0cmFjdCIsCisicmV2ZXJzZXN1YnRy
YWN0IiwKKyJtaW4iLAorIm1heCIKK307CisKK2VudW0gV2ViR1BVQmxlbmRGYWN0b3IgeworInpl
cm8iLAorIm9uZSIsCisic291cmNlY29sb3IiLAorIm9uZW1pbnVzc291cmNlY29sb3IiLAorInNv
dXJjZWFscGhhIiwKKyJvbmVtaW51c3NvdXJjZWFscGhhIiwKKyJkZXN0aW5hdGlvbmNvbG9yIiwK
KyJvbmVtaW51c2Rlc3RpbmF0aW9uY29sb3IiLAorImRlc3RpbmF0aW9uYWxwaGEiLAorIm9uZW1p
bnVzZGVzdGluYXRpb25hbHBoYSIsCisic291cmNlYWxwaGFzYXR1cmF0ZWQiLAorImJsZW5kY29s
b3IiLAorIm9uZW1pbnVzYmxlbmRjb2xvciIsCisiYmxlbmRhbHBoYSIsCisib25lbWludXNibGVu
ZGFscGhhIgorfTsKKworZW51bSBXZWJHUFVDb2xvcldyaXRlTWFzayB7Cisibm9uZSIsCisicmVk
IiwKKyJncmVlbiIsCisiYmx1ZSIsCisiYWxwaGEiLAorImFsbCIKK307CisKK2VudW0gV2ViR1BV
TXVsdGlzYW1wbGVEZXB0aFJlc29sdmVGaWx0ZXIgeworInNhbXBsZTAiLAorIm1pbiIsCisibWF4
IgorfTsKKworZW51bSBXZWJHUFVGZWF0dXJlU2V0IHsKKyJsZXZlbDEiLAorImxldmVsMiIKK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVGdW5jdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVGdW5jdGlvbi5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjM3YTk0ZGVmYjY0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24uY3BwCkBA
IC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXZWJHUFVGdW5jdGlvbi5oIgor
CisjaW5jbHVkZSAiTWV0YWxGdW5jdGlvbi5oIgorI2luY2x1ZGUgIk1ldGFsTGlicmFyeS5oIgor
I2luY2x1ZGUgIldlYkdQVUxpYnJhcnkuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250
ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFdlYkdQVUZ1bmN0aW9uPiBXZWJH
UFVGdW5jdGlvbjo6Y3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIFdlYkdQ
VUxpYnJhcnkqIGxpYnJhcnksIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJHUFVGdW5jdGlvbihjb250ZXh0LCBsaWJyYXJ5LCBuYW1lKSk7Cit9CisK
K1dlYkdQVUZ1bmN0aW9uOjpXZWJHUFVGdW5jdGlvbihXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBj
b250ZXh0LCBXZWJHUFVMaWJyYXJ5KiBsaWJyYXJ5LCBjb25zdCBTdHJpbmcmIG5hbWUpCisgICAg
OiBXZWJHUFVPYmplY3QoY29udGV4dCkKK3sKKyAgICBtX2Z1bmN0aW9uID0gbGlicmFyeS0+bGli
cmFyeSgpLT5mdW5jdGlvbldpdGhOYW1lKG5hbWUpOworfQorCitXZWJHUFVGdW5jdGlvbjo6fldl
YkdQVUZ1bmN0aW9uKCkKK3sKK30KKworU3RyaW5nIFdlYkdQVUZ1bmN0aW9uOjpuYW1lKCkgY29u
c3QKK3sKKyAgICBpZiAoIW1fZnVuY3Rpb24pCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygp
OworCisgICAgcmV0dXJuIG1fZnVuY3Rpb24tPm5hbWUoKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVG
dW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOGZlYTEwMWQ2NjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVGdW5jdGlvbi5o
CkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIldlYkdQVU9iamVjdC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1ldGFsRnVuY3Rpb247CitjbGFzcyBXZWJHUFVMaWJy
YXJ5OworCitjbGFzcyBXZWJHUFVGdW5jdGlvbiA6IHB1YmxpYyBXZWJHUFVPYmplY3QgeworcHVi
bGljOgorICAgIHZpcnR1YWwgfldlYkdQVUZ1bmN0aW9uKCk7CisgICAgc3RhdGljIFJlZjxXZWJH
UFVGdW5jdGlvbj4gY3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBXZWJHUFVMaWJyYXJ5
KiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKworICAgIFN0cmluZyBuYW1lKCkgY29uc3Q7CisKKyAg
ICBNZXRhbEZ1bmN0aW9uKiBmdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb24uZ2V0
KCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWJHUFVGdW5jdGlvbihXZWJHUFVSZW5kZXJpbmdDb250
ZXh0KiwgV2ViR1BVTGlicmFyeSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICBSZWZQdHI8
TWV0YWxGdW5jdGlvbj4gbV9mdW5jdGlvbjsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUZ1bmN0
aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUZ1bmN0aW9uLmlkbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uY2I1MTdiN2JmZDYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVGdW5jdGlvbi5p
ZGwKQEAgLTAsMCArMSwzMCBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUg
bWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCitpbnRlcmZhY2UgV2Vi
R1BVRnVuY3Rpb24geworCityZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7CisKK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVMaWJyYXJ5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUxpYnJhcnkuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43YTU2OTE1OWUyZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUxpYnJhcnkuY3BwCkBAIC0w
LDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXZWJHUFVMaWJyYXJ5LmgiCisKKyNp
bmNsdWRlICJNZXRhbExpYnJhcnkuaCIKKyNpbmNsdWRlICJXZWJHUFVGdW5jdGlvbi5oIgorI2lu
Y2x1ZGUgIldlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitSZWY8V2ViR1BVTGlicmFyeT4gV2ViR1BVTGlicmFyeTo6Y3JlYXRlKFdlYkdQVVJlbmRlcmlu
Z0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSkKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVMaWJyYXJ5KGNvbnRleHQsIHNvdXJjZUNvZGUpKTsKK30K
KworV2ViR1BVTGlicmFyeTo6V2ViR1BVTGlicmFyeShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUpCisgICAgOiBXZWJHUFVPYmplY3QoY29u
dGV4dCkKKyAgICAsIG1fc291cmNlQ29kZShzb3VyY2VDb2RlKQoreworICAgIG1fbGlicmFyeSA9
IGNvbnRleHQtPmRldmljZSgpLT5jcmVhdGVMaWJyYXJ5KHNvdXJjZUNvZGUpOworfQorCitXZWJH
UFVMaWJyYXJ5Ojp+V2ViR1BVTGlicmFyeSgpCit7Cit9CisKK1N0cmluZyBXZWJHUFVMaWJyYXJ5
OjpsYWJlbCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2xpYnJhcnkpCisgICAgICAgIHJldHVybiBl
bXB0eVN0cmluZygpOworCisgICAgcmV0dXJuIG1fbGlicmFyeS0+bGFiZWwoKTsKK30KKwordm9p
ZCBXZWJHUFVMaWJyYXJ5OjpzZXRMYWJlbChjb25zdCBTdHJpbmcmIGxhYmVsKQoreworICAgIGlm
ICghbV9saWJyYXJ5KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xpYnJhcnktPnNldExhYmVs
KGxhYmVsKTsKK30KKworVmVjdG9yPFN0cmluZz4gV2ViR1BVTGlicmFyeTo6ZnVuY3Rpb25OYW1l
cygpCit7CisgICAgaWYgKCFtX2xpYnJhcnkpCisgICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5n
PigpOworCisgICAgcmV0dXJuIG1fbGlicmFyeS0+ZnVuY3Rpb25OYW1lcygpOworfQorCitSZWZQ
dHI8V2ViR1BVRnVuY3Rpb24+IFdlYkdQVUxpYnJhcnk6OmZ1bmN0aW9uV2l0aE5hbWUoY29uc3Qg
U3RyaW5nJiBuYW1lKQoreworICAgIGlmICghbV9saWJyYXJ5KQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIFJlZlB0cjxXZWJHUFVGdW5jdGlvbj4gZnVuY3Rpb24gPSBXZWJHUFVGdW5j
dGlvbjo6Y3JlYXRlKHRoaXMtPmNvbnRleHQoKSwgdGhpcywgbmFtZSk7CisgICAgaWYgKCFmdW5j
dGlvbi0+ZnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGZ1
bmN0aW9uOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUxpYnJhcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVUxpYnJhcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uOTNjNThkZDc3MDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHUFVMaWJyYXJ5LmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiV2ViR1BVT2JqZWN0LmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgTWV0YWxMaWJyYXJ5OworY2xhc3MgV2ViR1BVRnVuY3Rpb247
CisKK2NsYXNzIFdlYkdQVUxpYnJhcnkgOiBwdWJsaWMgV2ViR1BVT2JqZWN0IHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5XZWJHUFVMaWJyYXJ5KCk7CisgICAgc3RhdGljIFJlZjxXZWJHUFVMaWJy
YXJ5PiBjcmVhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIGNvbnN0IFN0cmluZyYgc291cmNl
Q29kZSk7CisKKyAgICBTdHJpbmcgc291cmNlQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNl
Q29kZTsgfQorICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgc2V0TGFiZWwoY29u
c3QgU3RyaW5nJik7CisKKyAgICBWZWN0b3I8U3RyaW5nPiBmdW5jdGlvbk5hbWVzKCk7CisKKyAg
ICBSZWZQdHI8V2ViR1BVRnVuY3Rpb24+IGZ1bmN0aW9uV2l0aE5hbWUoY29uc3QgU3RyaW5nJik7
CisKKyAgICBNZXRhbExpYnJhcnkqIGxpYnJhcnkoKSB7IHJldHVybiBtX2xpYnJhcnkuZ2V0KCk7
IH0KKworcHJpdmF0ZToKKyAgICBXZWJHUFVMaWJyYXJ5KFdlYkdQVVJlbmRlcmluZ0NvbnRleHQq
LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUpOworCisgICAgU3RyaW5nIG1fc291cmNlQ29kZTsK
KyAgICBSZWZQdHI8TWV0YWxMaWJyYXJ5PiBtX2xpYnJhcnk7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VUxpYnJhcnkuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVTGlicmFyeS5p
ZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjliOWNkZjQ4MjUzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVTGlicmFy
eS5pZGwKQEAgLTAsMCArMSwzNCBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBh
cmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCitpbnRlcmZhY2Ug
V2ViR1BVTGlicmFyeSB7CisKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNvdXJj
ZUNvZGU7CisgICAgYXR0cmlidXRlIERPTVN0cmluZyBsYWJlbDsKKyAgICByZWFkb25seSBhdHRy
aWJ1dGUgc2VxdWVuY2U8RE9NU3RyaW5nPiBmdW5jdGlvbk5hbWVzOworCisgICAgV2ViR1BVRnVu
Y3Rpb24/IGZ1bmN0aW9uV2l0aE5hbWUoRE9NU3RyaW5nIG5hbWUpOworCit9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVU9iamVjdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjcxZDA5MzM0MDVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVT2JqZWN0LmNwcApAQCAtMCwwICsxLDQ4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0LmgiCisKKyNpbmNsdWRlICJXZWJHUFVS
ZW5kZXJpbmdDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2ViR1BVT2JqZWN0
OjpXZWJHUFVPYmplY3QoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKKyAgICA6IG1f
Y29udGV4dChjb250ZXh0KQoreworfQorCitXZWJHUFVPYmplY3Q6On5XZWJHUFVPYmplY3QoKQor
eworfQorCit2b2lkIFdlYkdQVU9iamVjdDo6ZGVsZXRlT2JqZWN0KE1ldGFsRGV2aWNlKikKK3sK
KyAgICBtX2RlbGV0ZWQgPSB0cnVlOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHUFVPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVU9iamVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4y
N2UyMjgyYmY0YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVU9iamVjdC5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1ldGFsRGV2
aWNlLmgiCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ7CisKK2NsYXNzIFdlYkdQVU9iamVj
dCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVU9iamVjdD4geworcHVibGljOgorICAgIHZpcnR1
YWwgfldlYkdQVU9iamVjdCgpOworCisgICAgdm9pZCBkZWxldGVPYmplY3QoTWV0YWxEZXZpY2Uq
KTsKKyAgICBib29sIGlzRGVsZXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsZXRlZDsgfQorCisg
ICAgV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dC5n
ZXQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgV2ViR1BVT2JqZWN0KFdlYkdQVVJlbmRlcmluZ0Nv
bnRleHQqIGNvbnRleHQgPSBudWxscHRyKTsKKworICAgIGJvb2wgaGFzQ29udGV4dCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGV4dDsgfQorCitwcml2YXRlOgorICAgIFJlZlB0cjxXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0PiBtX2NvbnRleHQ7CisgICAgYm9vbCBtX2RlbGV0ZWQgeyBmYWxzZSB9Owor
fTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jZDEyNGE3MzUzMwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlckNvbW1hbmRF
bmNvZGVyLmNwcApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYkdQ
VVJlbmRlckNvbW1hbmRFbmNvZGVyLmgiCisKKyNpbmNsdWRlICJNZXRhbFJlbmRlckNvbW1hbmRF
bmNvZGVyLmgiCisjaW5jbHVkZSAiTWV0YWxDb21tYW5kQnVmZmVyLmgiCisjaW5jbHVkZSAiTWV0
YWxSZW5kZXJQYXNzRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRCdWZmZXIu
aCIKKyNpbmNsdWRlICJXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oIgorI2luY2x1ZGUgIldlYkdQ
VVJlbmRlcmluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRv
ci5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaCIKKyNpbmNsdWRlICJX
ZWJHUFVCdWZmZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8V2ViR1BVUmVuZGVy
Q29tbWFuZEVuY29kZXI+IFdlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyOjpjcmVhdGUoV2ViR1BV
UmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgV2ViR1BVQ29tbWFuZEJ1ZmZlciogYnVmZmVyLCBX
ZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlcihjb250ZXh0LCBidWZmZXIsIGRl
c2NyaXB0b3IpKTsKK30KKworV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI6OldlYkdQVVJlbmRl
ckNvbW1hbmRFbmNvZGVyKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIFdlYkdQVUNv
bW1hbmRCdWZmZXIqIGJ1ZmZlciwgV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IqIGRlc2NyaXB0
b3IpCisgICAgOiBXZWJHUFVPYmplY3QoY29udGV4dCkKK3sKKyAgICBtX3JlbmRlckNvbW1hbmRF
bmNvZGVyID0gYnVmZmVyLT5jb21tYW5kQnVmZmVyKCktPmNyZWF0ZVJlbmRlckNvbW1hbmRFbmNv
ZGVyKGRlc2NyaXB0b3ItPnJlbmRlclBhc3NEZXNjcmlwdG9yKCkpOworfQorCitXZWJHUFVSZW5k
ZXJDb21tYW5kRW5jb2Rlcjo6fldlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyKCkKK3sKK30KKwor
dm9pZCBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0UmVuZGVyUGlwZWxpbmVTdGF0ZShX
ZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlJiBwaXBlbGluZVN0YXRlKQoreworICAgIGlmICghbV9y
ZW5kZXJDb21tYW5kRW5jb2RlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9yZW5kZXJDb21t
YW5kRW5jb2Rlci0+c2V0UmVuZGVyUGlwZWxpbmVTdGF0ZShwaXBlbGluZVN0YXRlLnJlbmRlclBp
cGVsaW5lU3RhdGUoKSk7Cit9CisKK3ZvaWQgV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI6OnNl
dERlcHRoU3RlbmNpbFN0YXRlKFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlJiBkZXB0aFN0ZW5jaWxT
dGF0ZSkKK3sKKyAgICBpZiAoIW1fcmVuZGVyQ29tbWFuZEVuY29kZXIpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fcmVuZGVyQ29tbWFuZEVuY29kZXItPnNldERlcHRoU3RlbmNpbFN0YXRlKGRl
cHRoU3RlbmNpbFN0YXRlLmRlcHRoU3RlbmNpbFN0YXRlKCkpOworfQorCit2b2lkIFdlYkdQVVJl
bmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWZXJ0ZXhCdWZmZXIoV2ViR1BVQnVmZmVyJiBidWZmZXIs
IHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBpbmRleCkKK3sKKyAgICBpZiAoIW1f
cmVuZGVyQ29tbWFuZEVuY29kZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVuZGVyQ29t
bWFuZEVuY29kZXItPnNldFZlcnRleEJ1ZmZlcihidWZmZXIuYnVmZmVyKCksIG9mZnNldCwgaW5k
ZXgpOworfQorCit2b2lkIFdlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudEJ1
ZmZlcihXZWJHUFVCdWZmZXImIGJ1ZmZlciwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQg
aW50IGluZGV4KQoreworICAgIGlmICghbV9yZW5kZXJDb21tYW5kRW5jb2RlcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9yZW5kZXJDb21tYW5kRW5jb2Rlci0+c2V0RnJhZ21lbnRCdWZmZXIo
YnVmZmVyLmJ1ZmZlcigpLCBvZmZzZXQsIGluZGV4KTsKK30KKwordm9pZCBXZWJHUFVSZW5kZXJD
b21tYW5kRW5jb2Rlcjo6ZHJhd1ByaW1pdGl2ZXModW5zaWduZWQgaW50IHR5cGUsIHVuc2lnbmVk
IGludCBzdGFydCwgdW5zaWduZWQgaW50IGNvdW50KQoreworICAgIGlmICghbV9yZW5kZXJDb21t
YW5kRW5jb2RlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9yZW5kZXJDb21tYW5kRW5jb2Rl
ci0+ZHJhd1ByaW1pdGl2ZXModHlwZSwgc3RhcnQsIGNvdW50KTsKK30KKwordm9pZCBXZWJHUFVS
ZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZW5kRW5jb2RpbmcoKQoreworICAgIGlmICghbV9yZW5kZXJD
b21tYW5kRW5jb2RlcikKKyAgICAgICAgcmV0dXJuOworICAgIHJldHVybiBtX3JlbmRlckNvbW1h
bmRFbmNvZGVyLT5lbmRFbmNvZGluZygpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlckNvbW1h
bmRFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJDb21t
YW5kRW5jb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hZWE0
ZmYwMWRmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiV2ViR1BVT2JqZWN0LmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgTWV0YWxSZW5kZXJDb21tYW5kRW5jb2RlcjsKK2NsYXNzIFdl
YkdQVUNvbW1hbmRCdWZmZXI7CitjbGFzcyBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZTsKK2NsYXNz
IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOworY2xhc3MgV2ViR1BVRnVuY3Rpb247CitjbGFz
cyBXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlOworY2xhc3MgV2ViR1BVQnVmZmVyOworCitjbGFz
cyBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2RlciA6IHB1YmxpYyBXZWJHUFVPYmplY3QgeworcHVi
bGljOgorICAgIHZpcnR1YWwgfldlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyKCk7CisgICAgc3Rh
dGljIFJlZjxXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlcj4gY3JlYXRlKFdlYkdQVVJlbmRlcmlu
Z0NvbnRleHQqLCBXZWJHUFVDb21tYW5kQnVmZmVyKiwgV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3IqKTsKKworICAgIHZvaWQgc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZShXZWJHUFVSZW5kZXJQaXBl
bGluZVN0YXRlJik7CisgICAgdm9pZCBzZXREZXB0aFN0ZW5jaWxTdGF0ZShXZWJHUFVEZXB0aFN0
ZW5jaWxTdGF0ZSYpOworICAgIHZvaWQgc2V0VmVydGV4QnVmZmVyKFdlYkdQVUJ1ZmZlciYgYnVm
ZmVyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgaW5kZXgpOworICAgIHZvaWQg
c2V0RnJhZ21lbnRCdWZmZXIoV2ViR1BVQnVmZmVyJiBidWZmZXIsIHVuc2lnbmVkIGludCBvZmZz
ZXQsIHVuc2lnbmVkIGludCBpbmRleCk7CisgICAgdm9pZCBkcmF3UHJpbWl0aXZlcyh1bnNpZ25l
ZCBpbnQgdHlwZSwgdW5zaWduZWQgaW50IHN0YXJ0LCB1bnNpZ25lZCBpbnQgY291bnQpOworICAg
IHZvaWQgZW5kRW5jb2RpbmcoKTsKKworICAgIE1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXIqIHJl
bmRlckNvbW1hbmRFbmNvZGVyKCkgeyByZXR1cm4gbV9yZW5kZXJDb21tYW5kRW5jb2Rlci5nZXQo
KTsgfQorCitwcml2YXRlOgorICAgIFdlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyKFdlYkdQVVJl
bmRlcmluZ0NvbnRleHQqLCBXZWJHUFVDb21tYW5kQnVmZmVyKiwgV2ViR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3IqKTsKKyAgICBSZWZQdHI8TWV0YWxSZW5kZXJDb21tYW5kRW5jb2Rlcj4gbV9yZW5k
ZXJDb21tYW5kRW5jb2RlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29k
ZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyQ29tbWFuZEVu
Y29kZXIuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43MjMwNGQx
Y2RlZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VVJlbmRlckNvbW1hbmRFbmNvZGVyLmlkbApAQCAtMCwwICsxLDM2IEBACisvKgorKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyovCisKK2ludGVyZmFjZSBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2RlciB7CisKKyAgICB2
b2lkIHNldFJlbmRlclBpcGVsaW5lU3RhdGUoV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZSBwaXBl
bGluZVN0YXRlKTsKKyAgICB2b2lkIHNldERlcHRoU3RlbmNpbFN0YXRlKFdlYkdQVURlcHRoU3Rl
bmNpbFN0YXRlIGRlcHRoU3RlbmNpbFN0YXRlKTsKKyAgICB2b2lkIHNldFZlcnRleEJ1ZmZlcihX
ZWJHUFVCdWZmZXIgYnVmZmVyLCB1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBp
bmRleCk7CisgICAgdm9pZCBzZXRGcmFnbWVudEJ1ZmZlcihXZWJHUFVCdWZmZXIgYnVmZmVyLCB1
bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgdm9pZCBkcmF3
UHJpbWl0aXZlcyh1bnNpZ25lZCBsb25nIHR5cGUsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2ln
bmVkIGxvbmcgY291bnQpOworCisgICAgdm9pZCBlbmRFbmNvZGluZygpOworCit9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLjhmNmVkM2FiNTM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcApA
QCAtMCwwICsxLDk2IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6
CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIgor
CisjaW5jbHVkZSAiTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCIKKyNpbmNs
dWRlICJNZXRhbFRleHR1cmUuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0Lmgi
CisjaW5jbHVkZSAiV2ViR1BVVGV4dHVyZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dl
YkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6V2ViR1BVUmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIE1ldGFsUmVu
ZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorICAgIDogV2ViR1BVT2Jq
ZWN0KGNvbnRleHQpCisgICAgLCBtX3JlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcihkZXNj
cmlwdG9yKQoreworfQorCitXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6On5X
ZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoKQoreworfQorCit1bnNpZ25lZCBs
b25nIFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6bG9hZEFjdGlvbigpIGNv
bnN0Cit7CisgICAgaWYgKCFtX3JlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcikKKyAgICAg
ICAgcmV0dXJuIDA7IC8vIEZJWE1FOiBwcm9iYWJseSBhIHJlYWwgdmFsdWUgZm9yIHVua25vd24K
KworICAgIHJldHVybiBtX3JlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci0+bG9hZEFjdGlv
bigpOworfQorCit2b2lkIFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0
TG9hZEFjdGlvbih1bnNpZ25lZCBsb25nIG5ld0xvYWRBY3Rpb24pCit7CisgICAgaWYgKCFtX3Jl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9y
ZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3ItPnNldExvYWRBY3Rpb24obmV3TG9hZEFjdGlv
bik7Cit9CisKK3Vuc2lnbmVkIGxvbmcgV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yOjpzdG9yZUFjdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIDA7IC8vIEZJWE1FOiBwcm9iYWJseSBhIHJl
YWwgdmFsdWUgZm9yIHVua25vd24KKworICAgIHJldHVybiBtX3JlbmRlclBhc3NBdHRhY2htZW50
RGVzY3JpcHRvci0+c3RvcmVBY3Rpb24oKTsKK30KKwordm9pZCBXZWJHUFVSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3I6OnNldFN0b3JlQWN0aW9uKHVuc2lnbmVkIGxvbmcgbmV3U3RvcmVB
Y3Rpb24pCit7CisgICAgaWYgKCFtX3JlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9yZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3ItPnNl
dFN0b3JlQWN0aW9uKG5ld1N0b3JlQWN0aW9uKTsKK30KKworUmVmUHRyPFdlYkdQVVRleHR1cmU+
IFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6dGV4dHVyZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fdGV4dHVyZTsKK30KKwordm9pZCBXZWJHUFVSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3I6OnNldFRleHR1cmUoUmVmUHRyPFdlYkdQVVRleHR1cmU+IG5ld1RleHR1
cmUpCit7CisgICAgaWYgKCFuZXdUZXh0dXJlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAg
bV90ZXh0dXJlID0gbmV3VGV4dHVyZTsKKyAgICAKKyAgICBpZiAobV9yZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3IpCisgICAgICAgIG1fcmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
LT5zZXRUZXh0dXJlKG5ld1RleHR1cmUtPnRleHR1cmUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzM0M2NjY2JmZGIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3IuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJHUFVPYmplY3Qu
aCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBNZXRhbFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjsKK2NsYXNzIFdlYkdQVVRl
eHR1cmU7CisKK2NsYXNzIFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1
YmxpYyBXZWJHUFVPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVVJlbmRlclBh
c3NBdHRhY2htZW50RGVzY3JpcHRvcigpOworCisgICAgdW5zaWduZWQgbG9uZyBsb2FkQWN0aW9u
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRMb2FkQWN0aW9uKHVuc2lnbmVkIGxvbmcpOworCisgICAg
dW5zaWduZWQgbG9uZyBzdG9yZUFjdGlvbigpIGNvbnN0OworICAgIHZvaWQgc2V0U3RvcmVBY3Rp
b24odW5zaWduZWQgbG9uZyk7CisKKyAgICBSZWZQdHI8V2ViR1BVVGV4dHVyZT4gdGV4dHVyZSgp
IGNvbnN0OworICAgIHZvaWQgc2V0VGV4dHVyZShSZWZQdHI8V2ViR1BVVGV4dHVyZT4pOworCisg
ICAgTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IqIHJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yLmdldCgpOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworcHJvdGVjdGVkOgorCisgICAgV2Vi
R1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQq
LCBNZXRhbFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciopOworCisKK3ByaXZhdGU6CisK
KyAgICBSZWZQdHI8TWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I+IG1fcmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOworICAgIFJlZlB0cjxXZWJHUFVUZXh0dXJlPiBtX3Rl
eHR1cmU7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0F0
dGFjaG1lbnREZXNjcmlwdG9yLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uZTc3ODFmZDkxYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaWRsCkBAIC0wLDAg
KzEsNDAgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworWworQ3VzdG9tVG9KU09iamVjdAorXQor
aW50ZXJmYWNlIFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7CisKKyAgICBh
dHRyaWJ1dGUgV2ViR1BVVGV4dHVyZT8gdGV4dHVyZTsKKyAgICAvL2F0dHJpYnV0ZSB1bnNpZ25l
ZCBsb25nIGxldmVsOworICAgIC8vYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgc2xpY2U7CisgICAg
Ly9hdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBkZXB0aFBsYW5lOworCisgICAgYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgbG9hZEFjdGlvbjsgLy8gc2hvdWxkIGJlIFdlYkdQVUxvYWRBY3Rpb24KKyAg
ICBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBzdG9yZUFjdGlvbjsgLy8gc2hvdWxkIGJlIFdlYkdQ
VVN0b3JlQWN0aW9uCisKKworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjFiYjBj
ZjI4OTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKQEAgLTAsMCArMSw3NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmgiCisKKyNpbmNsdWRlICJNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiTWV0YWxUZXh0dXJlLmgiCisjaW5jbHVkZSAiV2ViR1BV
UmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVVRleHR1cmUuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitSZWY8V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3I+IFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpjcmVhdGUo
V2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcihjb250ZXh0LCBkZXNj
cmlwdG9yKSk7Cit9CisKK1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
OjpXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcihXZWJHUFVSZW5kZXJp
bmdDb250ZXh0KiBjb250ZXh0LCBNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yKiBkZXNjcmlwdG9yKQorICAgIDogV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yKGNvbnRleHQsIGRlc2NyaXB0b3IpCit7Cit9CisKK1dlYkdQVVJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yOjp+V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IoKQoreworfQorCitNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
KiBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6cmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IoKSBjb25zdAoreworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKj4ocmVuZGVyUGFzc0F0
dGFjaG1lbnREZXNjcmlwdG9yKCkpOworfQorCitWZWN0b3I8ZmxvYXQ+IFdlYkdQVVJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpjbGVhckNvbG9yKCkgY29uc3QKK3sKKyAgICBN
ZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNjcmlwdG9yID0gcmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKTsKKyAgICBpZiAoIWRlc2NyaXB0b3Ip
IHsKKyAgICAgICAgVmVjdG9yPGZsb2F0PiBibGFjayA9IHsgMC4wLCAwLjAsIDAuMCwgMS4wIH07
CisgICAgICAgIHJldHVybiBibGFjazsKKyAgICB9CisgICAgcmV0dXJuIGRlc2NyaXB0b3ItPmNs
ZWFyQ29sb3IoKTsKK30KKwordm9pZCBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvcjo6c2V0Q2xlYXJDb2xvcihjb25zdCBWZWN0b3I8ZmxvYXQ+JiBuZXdDbGVhckNvbG9y
KQoreworICAgIE1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIGRlc2Ny
aXB0b3IgPSByZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpOworICAgIGlmICgh
ZGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgZGVzY3JpcHRvci0+c2V0Q2xlYXJD
b2xvcihuZXdDbGVhckNvbG9yKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uZmYxNDAxNTBjMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvci5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIldlYkdQVU9iamVjdC5o
IgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIgorCisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1l
dGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I7CisKK2NsYXNzIFdlYkdQVVJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yIDogcHVibGljIFdlYkdQVVJlbmRlclBh
c3NBdHRhY2htZW50RGVzY3JpcHRvciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViR1BVUmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQ
VVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBjcmVhdGUoV2ViR1BVUmVuZGVy
aW5nQ29udGV4dCosIE1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqKTsK
KworICAgIFZlY3RvcjxmbG9hdD4gY2xlYXJDb2xvcigpIGNvbnN0OworICAgIHZvaWQgc2V0Q2xl
YXJDb2xvcihjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CisKKyAgICBNZXRhbFJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yKiByZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cigpIGNvbnN0OworCisgICAgYm9vbCBpc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKK3ByaXZhdGU6CisgICAgV2ViR1BVUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIE1l
dGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqKTsKKworfTsKKyAgICAKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaWRsIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42ZDM1
MTIyMjg1NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmlkbApAQCAtMCwwICsxLDMw
IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK2ludGVyZmFjZSBXZWJHUFVSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvciA6IFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3Jp
cHRvciB7CisKKyAgICBhdHRyaWJ1dGUgc2VxdWVuY2U8ZmxvYXQ+IGNsZWFyQ29sb3I7CisKK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjM4YzdjODRjNDk1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0
YWNobWVudERlc2NyaXB0b3IuY3BwCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNs
dWRlICJXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIgorCisjaW5j
bHVkZSAiTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIgorI2luY2x1
ZGUgIk1ldGFsVGV4dHVyZS5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCIK
KyNpbmNsdWRlICJXZWJHUFVUZXh0dXJlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVm
PFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yPiBXZWJHUFVSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6Y3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRl
eHQqIGNvbnRleHQsIE1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqIGRl
c2NyaXB0b3IpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVUmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3IoY29udGV4dCwgZGVzY3JpcHRvcikpOworfQorCitXZWJH
UFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6V2ViR1BVUmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3IoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwg
TWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogZGVzY3JpcHRvcikKKyAg
ICA6IFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcihjb250ZXh0LCBkZXNjcmlw
dG9yKQoreworfQorCitXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6
fldlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKCkKK3sKK30KKworZG91
YmxlIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjpjbGVhckRlcHRo
KCkgY29uc3QKK3sKKyAgICBNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9y
KiBkZXNjcmlwdG9yID0gcmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoKTsKKyAg
ICBpZiAoIWRlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGRlc2Ny
aXB0b3ItPmNsZWFyRGVwdGgoKTsKK30KKwordm9pZCBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvcjo6c2V0Q2xlYXJEZXB0aChkb3VibGUgbmV3Q2xlYXJEZXB0aCkKK3sK
KyAgICBNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNjcmlwdG9y
ID0gcmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoKTsKKyAgICBpZiAoIWRlc2Ny
aXB0b3IpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBkZXNjcmlwdG9yLT5zZXRDbGVhckRl
cHRoKG5ld0NsZWFyRGVwdGgpOworfQorCitNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnRE
ZXNjcmlwdG9yKiBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6cmVu
ZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoKSBjb25zdAoreworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKj4ocmVu
ZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45YTYyNzg3MDkzZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0
dGFjaG1lbnREZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2Vi
R1BVT2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWV0YWxSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvcjsKKworY2xhc3MgV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0
YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvcigpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVUmVuZGVyUGFzc0RlcHRo
QXR0YWNobWVudERlc2NyaXB0b3I+IGNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgTWV0
YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciopOworCisgICAgZG91YmxlIGNs
ZWFyRGVwdGgoKSBjb25zdDsKKyAgICB2b2lkIHNldENsZWFyRGVwdGgoZG91YmxlKTsKKworICAg
IE1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqIHJlbmRlclBhc3NEZXB0
aEF0dGFjaG1lbnREZXNjcmlwdG9yKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgV2ViR1BVUmVu
ZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCos
IE1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqKTsKKworfTsKKyAgICAK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaWRsIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVu
dERlc2NyaXB0b3IuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5k
MDBkMGU5OGQ5NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmlkbApAQCAtMCwwICsx
LDMwIEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK2ludGVyZmFjZSBXZWJHUFVSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciA6IFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvciB7CisKKyAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBjbGVhckRlcHRo
OworCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVu
ZGVyUGFzc0Rlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi4wYjcyZTMzY2U0YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcApAQCAtMCwwICsxLDgxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKKwor
I2luY2x1ZGUgIk1ldGFsUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJNZXRhbFJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiTWV0YWxSZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRl
cmluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFdlYkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yPiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjo6Y3JlYXRlKCkKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcigpKTsKK30K
KworV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I6OldlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9y
KCkKKzogV2ViR1BVT2JqZWN0KCkKK3sKKyAgICBtX3JlbmRlclBhc3NEZXNjcmlwdG9yID0gTWV0
YWxSZW5kZXJQYXNzRGVzY3JpcHRvcjo6Y3JlYXRlKCk7Cit9CisKK1dlYkdQVVJlbmRlclBhc3NE
ZXNjcmlwdG9yOjp+V2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IoKQoreworfQorCitSZWZQdHI8
V2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I+IFdlYkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yOjpkZXB0aEF0dGFjaG1lbnQoKQoreworICAgIGlmICghbV9yZW5kZXJQYXNz
RGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIW1fZGVwdGhB
dHRhY2htZW50RGVzY3JpcHRvcikgeworICAgICAgICBSZWZQdHI8TWV0YWxSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvcj4gcGxhdGZvcm1EZXB0aEF0dGFjaG1lbnQgPSBtX3JlbmRl
clBhc3NEZXNjcmlwdG9yLT5kZXB0aEF0dGFjaG1lbnQoKTsKKyAgICAgICAgbV9kZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yID0gV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0
b3I6OmNyZWF0ZSh0aGlzLT5jb250ZXh0KCksIHBsYXRmb3JtRGVwdGhBdHRhY2htZW50LmdldCgp
KTsKKyAgICB9CisgICAgcmV0dXJuIG1fZGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjsKK30KKwor
VmVjdG9yPFJlZlB0cjxXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4+
IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOjpjb2xvckF0dGFjaG1lbnRzKCkKK3sKKyAgICBp
ZiAoIW1fcmVuZGVyUGFzc0Rlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiBWZWN0b3I8UmVmUHRy
PFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4oKTsKKworICAgIGlm
ICghbV9jb2xvckF0dGFjaG1lbnREZXNjcmlwdG9ycy5zaXplKCkpIHsKKyAgICAgICAgVmVjdG9y
PFJlZlB0cjxNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4gcGxhdGZv
cm1Db2xvckF0dGFjaG1lbnRzID0gbV9yZW5kZXJQYXNzRGVzY3JpcHRvci0+Y29sb3JBdHRhY2ht
ZW50cygpOworICAgICAgICBmb3IgKGF1dG8mIGF0dGFjaG1lbnQgOiBwbGF0Zm9ybUNvbG9yQXR0
YWNobWVudHMpIHsKKyAgICAgICAgICAgIG1fY29sb3JBdHRhY2htZW50RGVzY3JpcHRvcnMuYXBw
ZW5kKFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpjcmVhdGUodGhp
cy0+Y29udGV4dCgpLCBhdHRhY2htZW50LmdldCgpKSk7CisgICAgICAgIH0KKyAgICB9CisgICAg
cmV0dXJuIG1fY29sb3JBdHRhY2htZW50RGVzY3JpcHRvcnM7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VVJlbmRlclBhc3NEZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLjIzOTI1NWYxNjhjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaApAQCAtMCwwICsxLDU4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJXZWJHUFVPYmplY3QuaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZXRhbFJlbmRlclBhc3NEZXNjcmlwdG9y
OworY2xhc3MgV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I7CitjbGFz
cyBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjsKKworY2xhc3MgV2Vi
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IgOiBwdWJsaWMgV2ViR1BVT2JqZWN0IHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcigpOworICAgIHN0YXRpYyBS
ZWY8V2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I+IGNyZWF0ZSgpOworCisgICAgUmVmUHRyPFdl
YkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yPiBkZXB0aEF0dGFjaG1lbnQo
KTsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yPj4gY29sb3JBdHRhY2htZW50cygpOworCisgICAgTWV0YWxSZW5kZXJQYXNzRGVzY3Jp
cHRvciogcmVuZGVyUGFzc0Rlc2NyaXB0b3IoKSB7IHJldHVybiBtX3JlbmRlclBhc3NEZXNjcmlw
dG9yLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Io
KTsKKworICAgIFZlY3RvcjxSZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3I+PiBtX2NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JzOworICAgIFJlZlB0cjxXZWJH
UFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcj4gbV9kZXB0aEF0dGFjaG1lbnRE
ZXNjcmlwdG9yOworCisgICAgUmVmUHRyPE1ldGFsUmVuZGVyUGFzc0Rlc2NyaXB0b3I+IG1fcmVu
ZGVyUGFzc0Rlc2NyaXB0b3I7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNz
RGVzY3JpcHRvci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZk
YzgyNWNkZmY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaWRsCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorKi8KKworWyBDb25zdHJ1Y3RvciBdCitpbnRlcmZhY2UgV2ViR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3IgeworCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHNlcXVlbmNlPFdlYkdQVVJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBjb2xvckF0dGFjaG1lbnRzOworICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3Jp
cHRvciBkZXB0aEF0dGFjaG1lbnQ7CisgICAgLy9yZWFkb25seSBhdHRyaWJ1dGUgV2ViR1BVUmVu
ZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciBzdGVuY2lsQXR0YWNobWVudDsKKwor
ICAgIC8vIHJlbmRlclRhcmdldEFycmF5TGVuZ3RoCisgICAgLy8gdmlzaWJpbGl0eVJlc3VsdEJ1
ZmZlcgorCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBlOGZhODRh
NDY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcApAQCAtMCwwICsxLDY3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yLmgiCisKKyNpbmNsdWRlICJNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlcmluZ0NvbnRleHQu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8V2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yPiBXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3I6OmNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBNZXRh
bFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IoY29udGV4dCwgZGVzY3JpcHRvcikpOworfQorCitXZWJHUFVSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OldlYkdQVVJlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvcihXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBN
ZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogZGVzY3JpcHRvcikK
KyAgICA6IFdlYkdQVU9iamVjdChjb250ZXh0KQorICAgICwgbV9yZW5kZXJQaXBlbGluZUNvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IoZGVzY3JpcHRvcikKK3sKK30KKworV2ViR1BVUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjp+V2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yKCkKK3sKK30KKwordW5zaWduZWQgbG9uZyBXZWJHUFVSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnBpeGVsRm9ybWF0KCkgY29uc3QK
K3sKKyAgICBpZiAoIW1fcmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKQor
ICAgICAgICByZXR1cm4gMDsgLy8gRklYTUU6IHByb2JhYmx5IGEgcmVhbCB2YWx1ZSBmb3IgdW5r
bm93bgorCisgICAgcmV0dXJuIG1fcmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yLT5waXhlbEZvcm1hdCgpOworfQorCit2b2lkIFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcjo6c2V0UGl4ZWxGb3JtYXQodW5zaWduZWQgbG9uZyBuZXdQaXhl
bEZvcm1hdCkKK3sKKyAgICBpZiAoIW1fcmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3JlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvci0+c2V0UGl4ZWxGb3JtYXQobmV3UGl4ZWxGb3JtYXQpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
LjdjMDIxOWFmM2MyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgKQEAgLTAs
MCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3I7CisKK2NsYXNzIFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvciA6IHB1YmxpYyBXZWJHUFVPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQ
VVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpOworICAgIHN0YXRpYyBS
ZWY8V2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBjcmVhdGUo
V2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIE1ldGFsUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yKik7CisKKyAgICB1bnNpZ25lZCBsb25nIHBpeGVsRm9ybWF0KCkgY29uc3Q7
CisgICAgdm9pZCBzZXRQaXhlbEZvcm1hdCh1bnNpZ25lZCBsb25nKTsKKworICAgIE1ldGFsUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiByZW5kZXJQaXBlbGluZUNvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IoKSB7IHJldHVybiBtX3JlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvci5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFdlYkdQVVJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcihXZWJHUFVSZW5kZXJpbmdDb250ZXh0Kiwg
TWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqKTsKKworICAgIFJl
ZlB0cjxNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gbV9yZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I7Cit9OworICAgIAorfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaWRsIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNzli
NDU0ZTg0MGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaWRsCkBAIC0wLDAg
KzEsMzggQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworaW50ZXJmYWNlIFdlYkdQVVJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciB7CisKKyAgICBhdHRyaWJ1dGUgdW5zaWdu
ZWQgbG9uZyBwaXhlbEZvcm1hdDsgLy8gc2hvdWxkIGJlIE1UTFBpeGVsRm9ybWF0CisKKy8vICAg
IGF0dHJpYnV0ZSBib29sIGJsZW5kaW5nRW5hYmxlZDsKKy8vICAgIGF0dHJpYnV0ZSBNVExCbGVu
ZEZhY3RvciBzb3VyY2VSR0JCbGVuZEZhY3RvcjsKKy8vICAgIGF0dHJpYnV0ZSBNVExCbGVuZEZh
Y3RvciBkZXN0aW5hdGlvblJHQkJsZW5kRmFjdG9yOworLy8gICAgYXR0cmlidXRlIE1UTEJsZW5k
T3BlcmF0aW9uIHJnYkJsZW5kT3BlcmF0aW9uOworLy8gICAgYXR0cmlidXRlIE1UTEJsZW5kRmFj
dG9yIHNvdXJjZUFscGhhQmxlbmRGYWN0b3I7CisvLyAgICBhdHRyaWJ1dGUgTVRMQmxlbmRGYWN0
b3IgZGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9yOworLy8gICAgYXR0cmlidXRlIE1UTEJsZW5k
T3BlcmF0aW9uIGFscGhhQmxlbmRPcGVyYXRpb247CisvLyAgICBhdHRyaWJ1dGUgTVRMQ29sb3JX
cml0ZU1hc2sgd3JpdGVNYXNrOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mNzMwMTNlMzllMwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvci5jcHAKQEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXZWJH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKKworI2luY2x1ZGUgIk1ldGFsRnVuY3Rpb24u
aCIKKyNpbmNsdWRlICJNZXRhbFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgorI2luY2x1ZGUg
Ik1ldGFsUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisjaW5jbHVk
ZSAiV2ViR1BVRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0Lmgi
CisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcj4gV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpjcmVhdGUoKQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpKTsK
K30KKworV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpXZWJHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IoKQorICAgIDogV2ViR1BVT2JqZWN0KCkKK3sKKyAgICBtX3JlbmRlclBpcGVs
aW5lRGVzY3JpcHRvciA9IE1ldGFsUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpjcmVhdGUoKTsK
K30KKworV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp+V2ViR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yKCkKK3sKK30KKworU3RyaW5nIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcjo6bGFiZWwoKSBjb25zdAoreworICAgIGlmICghbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgcmV0dXJuIG1fcmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yLT5sYWJlbCgpOworfQorCit2b2lkIFdlYkdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcjo6c2V0TGFiZWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKK3sKKyAgICAgIGlm
ICghbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
cmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLT5zZXRMYWJlbChsYWJlbCk7Cit9CisKK1JlZlB0cjxX
ZWJHUFVGdW5jdGlvbj4gV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp2ZXJ0ZXhGdW5j
dGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdmVydGV4RnVuY3Rpb247Cit9CisKK3ZvaWQg
V2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRWZXJ0ZXhGdW5jdGlvbihSZWZQdHI8
V2ViR1BVRnVuY3Rpb24+IG5ld1ZlcnRleEZ1bmN0aW9uKQoreworICAgIGlmICghbmV3VmVydGV4
RnVuY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1fdmVydGV4RnVuY3Rpb24gPSBuZXdW
ZXJ0ZXhGdW5jdGlvbjsKKworICAgIGlmIChtX3JlbmRlclBpcGVsaW5lRGVzY3JpcHRvcikKKyAg
ICAgICAgbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3ItPnNldFZlcnRleEZ1bmN0aW9uKG5ld1Zl
cnRleEZ1bmN0aW9uLT5mdW5jdGlvbigpKTsKK30KKworUmVmUHRyPFdlYkdQVUZ1bmN0aW9uPiBX
ZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmZyYWdtZW50RnVuY3Rpb24oKSBjb25zdAor
eworICAgIHJldHVybiBtX2ZyYWdtZW50RnVuY3Rpb247Cit9CisKK3ZvaWQgV2ViR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRGcmFnbWVudEZ1bmN0aW9uKFJlZlB0cjxXZWJHUFVGdW5j
dGlvbj4gbmV3RnJhZ21lbnRGdW5jdGlvbikKK3sKKyAgICBpZiAoIW5ld0ZyYWdtZW50RnVuY3Rp
b24pCisgICAgICAgIHJldHVybjsKKworICAgIG1fZnJhZ21lbnRGdW5jdGlvbiA9IG5ld0ZyYWdt
ZW50RnVuY3Rpb247CisKKyAgICBpZiAobV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpCisgICAg
ICAgIG1fcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLT5zZXRGcmFnbWVudEZ1bmN0aW9uKG5ld0Zy
YWdtZW50RnVuY3Rpb24tPmZ1bmN0aW9uKCkpOworfQorCitWZWN0b3I8UmVmUHRyPFdlYkdQVVJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4+IFdlYkdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcjo6Y29sb3JBdHRhY2htZW50cygpCit7CisgICAgaWYgKCFtX3JlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxSZWZQdHI8V2ViR1BVUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4oKTsKKworICAgIGlmICghbV9j
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9ycy5zaXplKCkpIHsKKyAgICAgICAgVmVjdG9yPFJlZlB0
cjxNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4+IHBsYXRmb3Jt
Q29sb3JBdHRhY2htZW50cyA9IG1fcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLT5jb2xvckF0dGFj
aG1lbnRzKCk7CisgICAgICAgIGZvciAoYXV0byYgYXR0YWNobWVudCA6IHBsYXRmb3JtQ29sb3JB
dHRhY2htZW50cykgeworICAgICAgICAgICAgbV9jb2xvckF0dGFjaG1lbnREZXNjcmlwdG9ycy5h
cHBlbmQoV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpjcmVh
dGUodGhpcy0+Y29udGV4dCgpLCBhdHRhY2htZW50LmdldCgpKSk7CisgICAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIG1fY29sb3JBdHRhY2htZW50RGVzY3JpcHRvcnM7Cit9CisKK3Vuc2lnbmVk
IGxvbmcgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpkZXB0aEF0dGFjaG1lbnRQaXhl
bEZvcm1hdCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRlclBpcGVsaW5lRGVzY3JpcHRvcikK
KyAgICAgICAgcmV0dXJuIDA7IC8vIEZJWE1FOiBwcm9iYWJseSBhIHJlYWwgdmFsdWUgZm9yIHVu
a25vd24KKworICAgIHJldHVybiBtX3JlbmRlclBpcGVsaW5lRGVzY3JpcHRvci0+ZGVwdGhBdHRh
Y2htZW50UGl4ZWxGb3JtYXQoKTsKKworfQorCit2b2lkIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcjo6c2V0RGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQodW5zaWduZWQgbG9uZyBuZXdQ
aXhlbEZvcm1hdCkKK3sKKyAgICBpZiAoIW1fcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX3JlbmRlclBpcGVsaW5lRGVzY3JpcHRvci0+c2V0RGVwdGhB
dHRhY2htZW50UGl4ZWxGb3JtYXQobmV3UGl4ZWxGb3JtYXQpOworfQorCit2b2lkIFdlYkdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6cmVzZXQoKQoreworICAgIG1fdmVydGV4RnVuY3Rpb24g
PSBudWxscHRyOworICAgIG1fZnJhZ21lbnRGdW5jdGlvbiA9IG51bGxwdHI7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzlmMDNlYTU2M2EKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iu
aApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJHUFVPYmplY3QuaCIKKworI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZXRh
bFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKK2NsYXNzIFdlYkdQVUZ1bmN0aW9uOworY2xhc3Mg
V2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOworCitjbGFzcyBX
ZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgOiBwdWJsaWMgV2ViR1BVT2JqZWN0IHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoKTsKKyAg
ICBzdGF0aWMgUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gY3JlYXRlKCk7CisK
KyAgICBTdHJpbmcgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkIHNldExhYmVsKGNvbnN0IFN0cmlu
ZyYpOworCisgICAgUmVmUHRyPFdlYkdQVUZ1bmN0aW9uPiB2ZXJ0ZXhGdW5jdGlvbigpIGNvbnN0
OworICAgIHZvaWQgc2V0VmVydGV4RnVuY3Rpb24oUmVmUHRyPFdlYkdQVUZ1bmN0aW9uPik7CisK
KyAgICBSZWZQdHI8V2ViR1BVRnVuY3Rpb24+IGZyYWdtZW50RnVuY3Rpb24oKSBjb25zdDsKKyAg
ICB2b2lkIHNldEZyYWdtZW50RnVuY3Rpb24oUmVmUHRyPFdlYkdQVUZ1bmN0aW9uPik7CisKKyAg
ICBWZWN0b3I8UmVmUHRyPFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcj4+IGNvbG9yQXR0YWNobWVudHMoKTsKKworICAgIHVuc2lnbmVkIGxvbmcgZGVwdGhBdHRh
Y2htZW50UGl4ZWxGb3JtYXQoKSBjb25zdDsKKyAgICB2b2lkIHNldERlcHRoQXR0YWNobWVudFBp
eGVsRm9ybWF0KHVuc2lnbmVkIGxvbmcpOworCisgICAgdm9pZCByZXNldCgpOworCisgICAgTWV0
YWxSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpIHsg
cmV0dXJuIG1fcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmdldCgpOyB9CisKK3ByaXZhdGU6Cisg
ICAgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCk7CisKKyAgICBSZWZQdHI8V2ViR1BV
RnVuY3Rpb24+IG1fdmVydGV4RnVuY3Rpb247CisgICAgUmVmUHRyPFdlYkdQVUZ1bmN0aW9uPiBt
X2ZyYWdtZW50RnVuY3Rpb247CisKKyAgICBWZWN0b3I8UmVmUHRyPFdlYkdQVVJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4+IG1fY29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cnM7CisKKyAgICBSZWZQdHI8TWV0YWxSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IG1fcmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uOTUxOWUzNjI1MzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsCkBAIC0wLDAgKzEsNDggQEAK
Ky8qCisqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorKi8KKworWyBDb25zdHJ1Y3RvciBdCitpbnRlcmZhY2UgV2ViR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIHsKKworICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbGFi
ZWw7CisKKyAgICBhdHRyaWJ1dGUgV2ViR1BVRnVuY3Rpb24/IHZlcnRleEZ1bmN0aW9uOworLy8g
YXR0cmlidXRlIFdlYkdQVVZlcnRleERlc2NyaXB0b3IgdmVydGV4RGVzY3JpcHRvcjsKKworICAg
IGF0dHJpYnV0ZSBXZWJHUFVGdW5jdGlvbj8gZnJhZ21lbnRGdW5jdGlvbjsKKworLy8gYXR0cmli
dXRlIHVuc2lnbmVkIGludCBzYW1wbGVDb3VudDsKKy8vIGF0dHJpYnV0ZSBib29sIGFscGhhVG9D
b3ZlcmFnZUVuYWJsZWQ7CisvLyBhdHRyaWJ1dGUgYm9vbCBhbHBoYVRvT25lRW5hYmxlZDsKKy8v
IGF0dHJpYnV0ZSBib29sIHJhc3Rlcml6YXRpb25FbmFibGVkOworCisgICAgcmVhZG9ubHkgYXR0
cmlidXRlIHNlcXVlbmNlPFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcj4gY29sb3JBdHRhY2htZW50czsKKworICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGRl
cHRoQXR0YWNobWVudFBpeGVsRm9ybWF0OworLy8gYXR0cmlidXRlIHVuc2lnbmVkIGludCBzdGVu
Y2lsQXR0YWNobWVudFBpeGVsRm9ybWF0OworCisgICAgdm9pZCByZXNldCgpOworCit9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVT
dGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGlu
ZVN0YXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzk4ZjFi
YjQzMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oIgorCisjaW5jbHVkZSAiTWV0YWxS
ZW5kZXJQaXBlbGluZVN0YXRlLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5o
IgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1JlZjxXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlPiBXZWJHUFVSZW5k
ZXJQaXBlbGluZVN0YXRlOjpjcmVhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwg
V2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUoY29udGV4dCwgZGVzY3Jp
cHRvcikpOworfQorCitXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlOjpXZWJHUFVSZW5kZXJQaXBl
bGluZVN0YXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIFdlYkdQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvcikKKyAgICA6IFdlYkdQVU9iamVjdChjb250ZXh0
KQoreworICAgIGlmICghY29udGV4dCB8fCAhZGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fcmVuZGVyUGlwZWxpbmVTdGF0ZSA9IE1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZTo6Y3Jl
YXRlKGNvbnRleHQtPmRldmljZSgpLmdldCgpLCBkZXNjcmlwdG9yLT5yZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IoKSk7Cit9CisKK1dlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGU6On5XZWJHUFVSZW5k
ZXJQaXBlbGluZVN0YXRlKCkKK3sKK30KKworU3RyaW5nIFdlYkdQVVJlbmRlclBpcGVsaW5lU3Rh
dGU6OmxhYmVsKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyUGlwZWxpbmVTdGF0ZSkKKyAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4gbV9yZW5kZXJQaXBlbGlu
ZVN0YXRlLT5sYWJlbCgpOworfQorCit2b2lkIFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGU6OnNl
dExhYmVsKGNvbnN0IFN0cmluZyYgbGFiZWwpCit7CisgICAgaWYgKCFtX3JlbmRlclBpcGVsaW5l
U3RhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVuZGVyUGlwZWxpbmVTdGF0ZS0+c2V0
TGFiZWwobGFiZWwpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZmZkMWYxNjNmNGIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBl
bGluZVN0YXRlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0
LmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgTWV0YWxSZW5kZXJQaXBlbGluZVN0YXRlOworY2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yOworCitjbGFzcyBXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlIDogcHVibGlj
IFdlYkdQVU9iamVjdCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViR1BVUmVuZGVyUGlwZWxp
bmVTdGF0ZSgpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZT4gY3Jl
YXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IqKTsKKworICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgc2V0TGFiZWwoY29u
c3QgU3RyaW5nJik7CisKKyAgICBNZXRhbFJlbmRlclBpcGVsaW5lU3RhdGUqIHJlbmRlclBpcGVs
aW5lU3RhdGUoKSB7IHJldHVybiBtX3JlbmRlclBpcGVsaW5lU3RhdGUuZ2V0KCk7IH0KKworcHJp
dmF0ZToKKyAgICBXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRl
eHQqLCBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqKTsKKworICAgIFJlZlB0cjxNZXRh
bFJlbmRlclBpcGVsaW5lU3RhdGU+IG1fcmVuZGVyUGlwZWxpbmVTdGF0ZTsKK307CisgICAgCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLjViYWE0YTgzZmViCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5pZGwKQEAg
LTAsMCArMSwzMCBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0Ogor
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCitpbnRlcmZhY2UgV2ViR1BVUmVu
ZGVyUGlwZWxpbmVTdGF0ZSB7CisKK2F0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7CisKK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlcmluZ0NvbnRl
eHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zNThhY2FmYTlj
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJl
bmRlcmluZ0NvbnRleHQuY3BwCkBAIC0wLDAgKzEsMjAyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVk
ZSAiV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNp
bmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJNZXRhbERldmljZS5oIgorI2luY2x1ZGUg
IldlYkdQVUJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRRdWV1ZS5oIgorI2luY2x1
ZGUgIldlYkdQVUxpYnJhcnkuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRv
ci5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgorI2luY2x1
ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaCIKKyNpbmNsdWRlICJXZWJHUFVEZXB0aFN0
ZW5jaWxEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaCIK
KyNpbmNsdWRlICJXZWJHUFVEcmF3YWJsZS5oIgorI2luY2x1ZGUgIldlYkdQVVRleHR1cmVEZXNj
cmlwdG9yLmgiCisjaW5jbHVkZSAiV2ViR1BVVGV4dHVyZS5oIgorCisjaW5jbHVkZSA8cnVudGlt
ZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSW5saW5lcy5oPgorI2luY2x1
ZGUgPHJ1bnRpbWUvVHlwZWRBcnJheUlubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQz
MkFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK25h
bWVzcGFjZSB7CisKK2ludCBjbGFtcChpbnQgdmFsdWUsIGludCBtaW4sIGludCBtYXgpCit7Cisg
ICAgaWYgKHZhbHVlIDwgbWluKQorICAgICAgICB2YWx1ZSA9IG1pbjsKKyAgICBpZiAodmFsdWUg
PiBtYXgpCisgICAgICAgIHZhbHVlID0gbWF4OworICAgIHJldHVybiB2YWx1ZTsKK30KKworfQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBjb25zdCBpbnQga01heFRleHR1cmVTaXpl
ID0gNDA5NjsKKworCitzdGQ6OnVuaXF1ZV9wdHI8V2ViR1BVUmVuZGVyaW5nQ29udGV4dD4gV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMpCit7
CisgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gY2FudmFzLmRvY3VtZW50KCk7CisgICAgRnJhbWUq
IGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworLy8gICAgTWV0YWxEZXZpY2U6OkF0dHJpYnV0ZXMgYXR0cmlidXRlcyA9
IGF0dHJzID8gYXR0cnMtPmF0dHJpYnV0ZXMoKSA6IEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1
dGVzKCk7CisgICAgTWV0YWxEZXZpY2U6OkF0dHJpYnV0ZXMgYXR0cmlidXRlczsKKworICAgIGF0
dHJpYnV0ZXMuYW50aWFsaWFzID0gZmFsc2U7CisKKy8vICAgICAgICBpZiAocGFnZSkKKy8vICAg
ICAgICAgICAgYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvID0gcGFnZS0+ZGV2aWNlU2NhbGVG
YWN0b3IoKTsKKworICAgIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cgPSBkb2N1bWVudC52aWV3KCkt
PnJvb3QoKS0+aG9zdFdpbmRvdygpOworICAgIFJlZlB0cjxNZXRhbERldmljZT4gZGV2aWNlKE1l
dGFsRGV2aWNlOjpjcmVhdGUoYXR0cmlidXRlcywgaG9zdFdpbmRvdykpOworCisgICAgaWYgKCFk
ZXZpY2UpIHsgLy8gfHwgIWNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKSB7CisgICAgICAg
IC8vIGNhbnZhcy0+ZGlzcGF0Y2hFdmVudChXZWJHTENvbnRleHRFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS53ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yRXZlbnQsIGZhbHNlLCB0cnVlLCAiQ291
bGQgbm90IGNyZWF0ZSBhIFdlYkdMIGNvbnRleHQuIikpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViR1BVUmVuZGVyaW5nQ29udGV4dD4g
cmVuZGVyaW5nQ29udGV4dCA9IG51bGxwdHI7CisgICAgcmVuZGVyaW5nQ29udGV4dCA9IHN0ZDo6
dW5pcXVlX3B0cjxXZWJHUFVSZW5kZXJpbmdDb250ZXh0PihuZXcgV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dChjYW52YXMsIGRldmljZSkpOworICAgIHJlbmRlcmluZ0NvbnRleHQtPnN1c3BlbmRJZk5l
ZWRlZCgpOworCisgICAgcmV0dXJuIHJlbmRlcmluZ0NvbnRleHQ7Cit9CisKK1dlYkdQVVJlbmRl
cmluZ0NvbnRleHQ6OldlYkdQVVJlbmRlcmluZ0NvbnRleHQoSFRNTENhbnZhc0VsZW1lbnQmIGNh
bnZhcywgUGFzc1JlZlB0cjxNZXRhbERldmljZT4gZGV2aWNlKQorICAgIDogQ2FudmFzUmVuZGVy
aW5nQ29udGV4dChjYW52YXMpCisgICAgLCBBY3RpdmVET01PYmplY3QoJmNhbnZhcy5kb2N1bWVu
dCgpKQorICAgICwgbV9kZXZpY2UoZGV2aWNlKQorICAgIC8vICwgbV9hdHRyaWJ1dGVzKGF0dHJp
YnV0ZXMpCit7CisgICAgaW5pdGlhbGl6ZU5ld0NvbnRleHQoKTsKK30KKwordm9pZCBXZWJHUFVS
ZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplTmV3Q29udGV4dCgpCit7CisgICAgLy8gRklYTUU6
IE1heWJlIHdlIHNob3VsZCByZXNldCBhIGJ1bmNoIG9mIHN0dWZmIGhlcmUuCisKKyAgICBJbnRT
aXplIGNhbnZhc1NpemUgPSBjbGFtcGVkQ2FudmFzU2l6ZSgpOworICAgIG1fZGV2aWNlLT5yZXNo
YXBlKGNhbnZhc1NpemUud2lkdGgoKSwgY2FudmFzU2l6ZS5oZWlnaHQoKSk7Cit9CisKK0ludFNp
emUgV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6Y2xhbXBlZENhbnZhc1NpemUoKSBjb25zdAorewor
ICAgIHJldHVybiBJbnRTaXplKGNsYW1wKGNhbnZhcygpLndpZHRoKCksIDEsIGtNYXhUZXh0dXJl
U2l6ZSksCisgICAgICAgICAgICAgICAgICAgY2xhbXAoY2FudmFzKCkuaGVpZ2h0KCksIDEsIGtN
YXhUZXh0dXJlU2l6ZSkpOworfQorCitib29sIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ6Omhhc1Bl
bmRpbmdBY3Rpdml0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFdl
YkdQVVJlbmRlcmluZ0NvbnRleHQ6OnN0b3AoKQoreworfQorCitjb25zdCBjaGFyKiBXZWJHUFVS
ZW5kZXJpbmdDb250ZXh0OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gIldlYkdQVVJlbmRlcmluZ0NvbnRleHQiOworfQorCitib29sIFdlYkdQVVJlbmRlcmluZ0Nv
bnRleHQ6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAoreworICAgIHJl
dHVybiBmYWxzZTsKK30KKworUGxhdGZvcm1MYXllciogV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6
cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGV2aWNlLT5wbGF0Zm9ybUxh
eWVyKCk7Cit9CisKK3ZvaWQgV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6bWFya0xheWVyQ29tcG9z
aXRlZCgpCit7CisgICAgbV9kZXZpY2UtPm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKK30KKwordm9p
ZCBXZWJHUFVSZW5kZXJpbmdDb250ZXh0OjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkK
K3sKKyAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byByZXNldCBzdHVmZiBoZXJlPworICAgIG1f
ZGV2aWNlLT5yZXNoYXBlKHdpZHRoLCBoZWlnaHQpOworfQorCitSZWZQdHI8V2ViR1BVTGlicmFy
eT4gV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlTGlicmFyeShjb25zdCBTdHJpbmcgc291
cmNlQ29kZSkKK3sKKyAgICBSZWZQdHI8V2ViR1BVTGlicmFyeT4gbGlicmFyeSA9IFdlYkdQVUxp
YnJhcnk6OmNyZWF0ZSh0aGlzLCBzb3VyY2VDb2RlKTsKKyAgICByZXR1cm4gbGlicmFyeTsKK30K
KworUmVmUHRyPFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGU+IFdlYkdQVVJlbmRlcmluZ0NvbnRl
eHQ6OmNyZWF0ZVJlbmRlclBpcGVsaW5lU3RhdGUoV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKQoreworICAgIFJlZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRl
PiBzdGF0ZSA9IFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGU6OmNyZWF0ZSh0aGlzLCAmZGVzY3Jp
cHRvcik7CisgICAgcmV0dXJuIHN0YXRlOworfQorCitSZWZQdHI8V2ViR1BVRGVwdGhTdGVuY2ls
U3RhdGU+IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZURlcHRoU3RlbmNpbFN0YXRlKFdl
YkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgUmVmUHRyPFdl
YkdQVURlcHRoU3RlbmNpbFN0YXRlPiBzdGF0ZSA9IFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlOjpj
cmVhdGUodGhpcywgJmRlc2NyaXB0b3IpOworICAgIHJldHVybiBzdGF0ZTsKK30KKworUmVmUHRy
PFdlYkdQVUNvbW1hbmRRdWV1ZT4gV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlQ29tbWFu
ZFF1ZXVlKCkKK3sKKyAgICBSZWZQdHI8V2ViR1BVQ29tbWFuZFF1ZXVlPiBxdWV1ZSA9IFdlYkdQ
VUNvbW1hbmRRdWV1ZTo6Y3JlYXRlKHRoaXMpOworICAgIHJldHVybiBxdWV1ZTsKK30KKworUmVm
UHRyPFdlYkdQVURyYXdhYmxlPiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0OjpuZXh0RHJhd2FibGUo
KQoreworICAgIFJlZlB0cjxXZWJHUFVEcmF3YWJsZT4gZHJhd2FibGUgPSBXZWJHUFVEcmF3YWJs
ZTo6Y3JlYXRlKHRoaXMpOworICAgIHJldHVybiBkcmF3YWJsZTsKK30KKworUmVmUHRyPFdlYkdQ
VUJ1ZmZlcj4gV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlQnVmZmVyKEFycmF5QnVmZmVy
VmlldyYgZGF0YSkKK3sKKyAgICBSZWZQdHI8V2ViR1BVQnVmZmVyPiBidWZmZXIgPSBXZWJHUFVC
dWZmZXI6OmNyZWF0ZSh0aGlzLCAmZGF0YSk7CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworUmVm
UHRyPFdlYkdQVVRleHR1cmU+IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVRleHR1cmUo
V2ViR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgUmVmUHRyPFdlYkdQ
VVRleHR1cmU+IHRleHR1cmUgPSBXZWJHUFVUZXh0dXJlOjpjcmVhdGUodGhpcywgJmRlc2NyaXB0
b3IpOworICAgIHJldHVybiB0ZXh0dXJlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlcmluZ0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlcmluZ0NvbnRl
eHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMWZhODU3ZGI1NGUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5k
ZXJpbmdDb250ZXh0LmgKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFjdGl2ZURP
TU9iamVjdC5oIgorI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJNZXRhbERldmljZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJHUFVDb21tYW5kUXVldWU7CitjbGFzcyBXZWJH
UFVMaWJyYXJ5OworY2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOworY2xhc3Mg
V2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZTsKK2NsYXNzIFdlYkdQVURlcHRoU3RlbmNpbERlc2Ny
aXB0b3I7CitjbGFzcyBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZTsKK2NsYXNzIFdlYkdQVVJlbmRl
clBhc3NEZXNjcmlwdG9yOworY2xhc3MgV2ViR1BVRHJhd2FibGU7CitjbGFzcyBXZWJHUFVCdWZm
ZXI7CitjbGFzcyBXZWJHUFVUZXh0dXJlOworY2xhc3MgV2ViR1BVVGV4dHVyZURlc2NyaXB0b3I7
CisKK2NsYXNzIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQgOiBwdWJsaWMgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxXZWJHUFVSZW5kZXJpbmdDb250ZXh0PiBjcmVhdGUoSFRNTENhbnZhc0Vs
ZW1lbnQmKTsKKy8vICAgIHZpcnR1YWwgfldlYkdQVVJlbmRlcmluZ0NvbnRleHQoKTsKKworICAg
IGJvb2wgaXNNZXRhbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIGJv
b2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAg
IHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpOworCisgICAgdm9pZCBtYXJrTGF5
ZXJDb21wb3NpdGVkKCk7CisKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29u
c3Qgb3ZlcnJpZGU7CisKKyAgICBSZWZQdHI8TWV0YWxEZXZpY2U+IGRldmljZSgpIHsgcmV0dXJu
IG1fZGV2aWNlOyB9CisKKyAgICAvLyBXZWJHUFUgZW50cnkgcG9pbnRzCisKKyAgICBSZWZQdHI8
V2ViR1BVTGlicmFyeT4gY3JlYXRlTGlicmFyeShjb25zdCBTdHJpbmcpOworCisgICAgUmVmUHRy
PFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGU+IGNyZWF0ZVJlbmRlclBpcGVsaW5lU3RhdGUoV2Vi
R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJik7CisKKyAgICBSZWZQdHI8V2ViR1BVRGVwdGhT
dGVuY2lsU3RhdGU+IGNyZWF0ZURlcHRoU3RlbmNpbFN0YXRlKFdlYkdQVURlcHRoU3RlbmNpbERl
c2NyaXB0b3ImKTsKKworICAgIFJlZlB0cjxXZWJHUFVDb21tYW5kUXVldWU+IGNyZWF0ZUNvbW1h
bmRRdWV1ZSgpOworCisgICAgUmVmUHRyPFdlYkdQVURyYXdhYmxlPiBuZXh0RHJhd2FibGUoKTsK
KworICAgIFJlZlB0cjxXZWJHUFVCdWZmZXI+IGNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlclZpZXcm
IGRhdGEpOworCisgICAgUmVmUHRyPFdlYkdQVVRleHR1cmU+IGNyZWF0ZVRleHR1cmUoV2ViR1BV
VGV4dHVyZURlc2NyaXB0b3ImKTsKKworcHJvdGVjdGVkOgorICAgIC8vIEFjdGl2ZURPTU9iamVj
dAorICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzdG9wKCkgb3ZlcnJpZGU7CisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgp
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lv
bigpIGNvbnN0IG92ZXJyaWRlOworCisgICAgSW50U2l6ZSBjbGFtcGVkQ2FudmFzU2l6ZSgpIGNv
bnN0OworICAgIHZvaWQgaW5pdGlhbGl6ZU5ld0NvbnRleHQoKTsKKworcHJpdmF0ZToKKy8vICAg
IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQoSFRNTENhbnZhc0VsZW1lbnQqKTsvLywgR3JhcGhpY3ND
b250ZXh0M0Q6OkF0dHJpYnV0ZXMpOworICAgIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQoSFRNTENh
bnZhc0VsZW1lbnQmLCBQYXNzUmVmUHRyPE1ldGFsRGV2aWNlPik7CisKKyAgICBSZWZQdHI8TWV0
YWxEZXZpY2U+IG1fZGV2aWNlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0NBTlZBU1JFTkRFUklOR0NPTlRFWFQoV2ViQ29yZTo6V2ViR1BV
UmVuZGVyaW5nQ29udGV4dCwgaXNNZXRhbCgpKQorCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuaWRsIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5pZGwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjkzZGQ5Yjk3Y2UwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5pZGwKQEAg
LTAsMCArMSwxMDggQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoK
KyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworWworSlNDdXN0b21NYXJrRnVu
Y3Rpb24sCitEb05vdENoZWNrQ29uc3RhbnRzLAorXSBpbnRlcmZhY2UgV2ViR1BVUmVuZGVyaW5n
Q29udGV4dCB7CisKKyAgICAvLyBQaXhlbCBmb3JtYXRzCisKKyAgICBjb25zdCB1bnNpZ25lZCBp
bnQgUGl4ZWxGb3JtYXRCR1JBOFVub3JtID0gODA7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFBp
eGVsRm9ybWF0RGVwdGgzMkZsb2F0ID0gMjUyOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBQaXhl
bEZvcm1hdFN0ZW5jaWw4ID0gMjUzOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBQaXhlbEZvcm1h
dEludmFsaWQgPSAwOworCisgICAgLy8gTG9hZCBhY3Rpb25zCisKKyAgICBjb25zdCB1bnNpZ25l
ZCBpbnQgTG9hZEFjdGlvbkRvbnRDYXJlID0gMDsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgTG9h
ZEFjdGlvbkxvYWQgPSAxOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBMb2FkQWN0aW9uQ2xlYXIg
PSAyOworCisgICAgLy8gU3RvcmUgYWN0aW9ucworCisgICAgY29uc3QgdW5zaWduZWQgaW50IFN0
b3JlQWN0aW9uRG9udENhcmUgPSAwOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBTdG9yZUFjdGlv
blN0b3JlID0gMTsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgU3RvcmVBY3Rpb25NdWx0aXNhbXBs
ZVJlc29sdmUgPSAyOworCisgICAgLy8gUHJpbWl0aXZlIHR5cGVzCisKKyAgICBjb25zdCB1bnNp
Z25lZCBpbnQgUHJpbWl0aXZlVHlwZVBvaW50ID0gMDsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQg
UHJpbWl0aXZlVHlwZUxpbmUgPSAxOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBQcmltaXRpdmVU
eXBlTGluZVN0cmlwID0gMjsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgUHJpbWl0aXZlVHlwZVRy
aWFuZ2xlID0gMzsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgUHJpbWl0aXZlVHlwZVRyaWFuZ2xl
U3RyaXAgPSA0OworCisgICAgLy8gQ29tcGFyaXNvbiBmdW5jdGlvbnMKKworICAgIGNvbnN0IHVu
c2lnbmVkIGludCBDb21wYXJlRnVuY3Rpb25OZXZlciA9IDA7CisgICAgY29uc3QgdW5zaWduZWQg
aW50IENvbXBhcmVGdW5jdGlvbkxlc3MgPSAxOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBDb21w
YXJlRnVuY3Rpb25FcXVhbCA9IDI7CisgICAgY29uc3QgdW5zaWduZWQgaW50IENvbXBhcmVGdW5j
dGlvbkxlc3NFcXVhbCA9IDM7CisgICAgY29uc3QgdW5zaWduZWQgaW50IENvbXBhcmVGdW5jdGlv
bkdyZWF0ZXIgPSA0OworICAgIGNvbnN0IHVuc2lnbmVkIGludCBDb21wYXJlRnVuY3Rpb25Ob3RF
cXVhbCA9IDU7CisgICAgY29uc3QgdW5zaWduZWQgaW50IENvbXBhcmVGdW5jdGlvbkdyZWF0ZXJF
cXVhbCA9IDY7CisgICAgY29uc3QgdW5zaWduZWQgaW50IENvbXBhcmVGdW5jdGlvbkFsd2F5cyA9
IDc7CisKKyAgICAvLyBUZXh0dXJlIFR5cGVzCisKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgVGV4
dHVyZVR5cGUxRCA9IDA7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVUeXBlMURBcnJh
eSA9IDE7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVUeXBlMkQgPSAyOworICAgIGNv
bnN0IHVuc2lnbmVkIGludCBUZXh0dXJlVHlwZTJEQXJyYXkgPSAzOworICAgIGNvbnN0IHVuc2ln
bmVkIGludCBUZXh0dXJlVHlwZTJETXVsdGlzYW1wbGUgPSA0OworICAgIGNvbnN0IHVuc2lnbmVk
IGludCBUZXh0dXJlVHlwZUN1YmUgPSA1OworICAgIGNvbnN0IHVuc2lnbmVkIGludCBUZXh0dXJl
VHlwZUN1YmVBcnJheSA9IDY7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVUeXBlM0Qg
PSA3OworCisgICAgLy8gU3RvcmFnZSBtb2RlcworCisgICAgY29uc3QgdW5zaWduZWQgaW50IFN0
b3JhZ2VNb2RlU2hhcmVkICA9IDA7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFN0b3JhZ2VNb2Rl
TWFuYWdlZCA9IDE7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFN0b3JhZ2VNb2RlUHJpdmF0ZSA9
IDI7CisKKyAgICAvLyBVc2FnZQorCisgICAgY29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVVc2Fn
ZVVua25vd24gPSAweDAwMDA7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVVc2FnZVNo
YWRlclJlYWQgPSAweDAwMDE7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVVc2FnZVNo
YWRlcldyaXRlID0gMHgwMDAyOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBUZXh0dXJlVXNhZ2VS
ZW5kZXJUYXJnZXQgPSAweDAwMDQ7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVVc2Fn
ZVBpeGVsRm9ybWF0VmlldyA9IDB4MDAxMDsKKworICAgIC8vIEVudHJ5IHBvaW50cworCisgICAg
V2ViR1BVTGlicmFyeSBjcmVhdGVMaWJyYXJ5KERPTVN0cmluZyBzb3VyY2VDb2RlKTsKKworICAg
IFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGU/IGNyZWF0ZVJlbmRlclBpcGVsaW5lU3RhdGUoV2Vi
R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOworICAgIFdlYkdQVURlcHRo
U3RlbmNpbFN0YXRlPyBjcmVhdGVEZXB0aFN0ZW5jaWxTdGF0ZShXZWJHUFVEZXB0aFN0ZW5jaWxE
ZXNjcmlwdG9yIGRlc2NyaXB0b3IpOworCisgICAgV2ViR1BVQ29tbWFuZFF1ZXVlPyBjcmVhdGVD
b21tYW5kUXVldWUoKTsKKworICAgIFdlYkdQVURyYXdhYmxlPyBuZXh0RHJhd2FibGUoKTsKKwor
ICAgIFdlYkdQVUJ1ZmZlcj8gY3JlYXRlQnVmZmVyKEFycmF5QnVmZmVyVmlldyBkYXRhKTsKKwor
ICAgIFdlYkdQVVRleHR1cmU/IGNyZWF0ZVRleHR1cmUoV2ViR1BVVGV4dHVyZURlc2NyaXB0b3Ig
ZGVzY3JpcHRvcik7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0
dXJlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzgzMzE3MTQ1
ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVU
ZXh0dXJlLmNwcApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV2ViR1BV
VGV4dHVyZS5oIgorCisjaW5jbHVkZSAiTWV0YWxUZXh0dXJlLmgiCisjaW5jbHVkZSAiV2ViR1BV
UmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFdlYkdQVVRleHR1cmU+IFdlYkdQVVRleHR1
cmU6OmNyZWF0ZUZyb21EcmF3YWJsZVRleHR1cmUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29u
dGV4dCwgUGFzc1JlZlB0cjxNZXRhbFRleHR1cmU+IGRyYXdhYmxlVGV4dHVyZSkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVUZXh0dXJlKGNvbnRleHQsIGRyYXdhYmxlVGV4dHVy
ZSkpOworfQorCitSZWY8V2ViR1BVVGV4dHVyZT4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlKFdlYkdQ
VVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yKiBkZXNj
cmlwdG9yKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVRleHR1cmUoY29udGV4
dCwgZGVzY3JpcHRvcikpOworfQorCitXZWJHUFVUZXh0dXJlOjpXZWJHUFVUZXh0dXJlKFdlYkdQ
VVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8TWV0YWxUZXh0dXJlPiBkcmF3
YWJsZVRleHR1cmUpCisgICAgOiBXZWJHUFVPYmplY3QoY29udGV4dCkKKyAgICAsIG1fdGV4dHVy
ZShkcmF3YWJsZVRleHR1cmUpCit7Cit9CisKK1dlYkdQVVRleHR1cmU6OldlYkdQVVRleHR1cmUo
V2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgV2ViR1BVVGV4dHVyZURlc2NyaXB0b3Iq
IGRlc2NyaXB0b3IpCisgICAgOiBXZWJHUFVPYmplY3QoY29udGV4dCkKK3sKKyAgICBtX3RleHR1
cmUgPSBjb250ZXh0LT5kZXZpY2UoKS0+Y3JlYXRlVGV4dHVyZShkZXNjcmlwdG9yLT50ZXh0dXJl
RGVzY3JpcHRvcigpKTsKK30KKworV2ViR1BVVGV4dHVyZTo6fldlYkdQVVRleHR1cmUoKQorewor
fQorCit1bnNpZ25lZCBsb25nIFdlYkdQVVRleHR1cmU6OndpZHRoKCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1fdGV4dHVyZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgcmV0dXJuIG1fdGV4
dHVyZS0+d2lkdGgoKTsKK30KKwordW5zaWduZWQgbG9uZyBXZWJHUFVUZXh0dXJlOjpoZWlnaHQo
KSBjb25zdAoreworICAgIGlmICghbV90ZXh0dXJlKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IHJldHVybiBtX3RleHR1cmUtPmhlaWdodCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmUu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNjJiNTNlMGIzMTQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlLmgKQEAgLTAsMCAr
MSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgTWV0YWxUZXh0dXJlOworY2xhc3MgV2ViR1BVVGV4dHVyZURlc2NyaXB0
b3I7CisKK2NsYXNzIFdlYkdQVVRleHR1cmUgOiBwdWJsaWMgV2ViR1BVT2JqZWN0IHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5XZWJHUFVUZXh0dXJlKCk7CisgICAgc3RhdGljIFJlZjxXZWJHUFVU
ZXh0dXJlPiBjcmVhdGVGcm9tRHJhd2FibGVUZXh0dXJlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQq
LCBQYXNzUmVmUHRyPE1ldGFsVGV4dHVyZT4pOworICAgIHN0YXRpYyBSZWY8V2ViR1BVVGV4dHVy
ZT4gY3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBXZWJHUFVUZXh0dXJlRGVzY3JpcHRv
ciopOworCisgICAgdW5zaWduZWQgbG9uZyB3aWR0aCgpIGNvbnN0OworICAgIHVuc2lnbmVkIGxv
bmcgaGVpZ2h0KCkgY29uc3Q7CisKKyAgICBNZXRhbFRleHR1cmUqIHRleHR1cmUoKSBjb25zdCB7
IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWJHUFVUZXh0dXJl
KFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBQYXNzUmVmUHRyPE1ldGFsVGV4dHVyZT4pOworICAg
IFdlYkdQVVRleHR1cmUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIFdlYkdQVVRleHR1cmVEZXNj
cmlwdG9yKik7CisKKyAgICBSZWZQdHI8TWV0YWxUZXh0dXJlPiBtX3RleHR1cmU7Cit9OworICAg
IAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVVRleHR1cmUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li5mYTgzZjljNmI3YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVVRleHR1cmUuaWRsCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
Ki8KKworaW50ZXJmYWNlIFdlYkdQVVRleHR1cmUgeworCityZWFkb25seSBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyB3aWR0aDsKK3JlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGhlaWdo
dDsKKworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRl
eHR1cmVEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRl
eHR1cmVEZXNjcmlwdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uNGQ1MDBjNjE1MGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHAKQEAgLTAsMCArMSwxNDcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpbmNsdWRlICJXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oIgorCisjaW5jbHVkZSAi
TWV0YWxUZXh0dXJlRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlcmluZ0NvbnRl
eHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8V2ViR1BVVGV4dHVyZURlc2NyaXB0
b3I+IFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yOjpjcmVhdGUodW5zaWduZWQgbG9uZyBwaXhlbEZv
cm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQsIGJvb2wgbWlw
bWFwcGVkKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVRleHR1cmVEZXNjcmlw
dG9yKHBpeGVsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBtaXBtYXBwZWQpKTsKK30KKworV2ViR1BV
VGV4dHVyZURlc2NyaXB0b3I6OldlYkdQVVRleHR1cmVEZXNjcmlwdG9yKHVuc2lnbmVkIGxvbmcg
cGl4ZWxGb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0LCBi
b29sIG1pcG1hcHBlZCkKKyAgICA6IFdlYkdQVU9iamVjdCgpCit7CisgICAgbV90ZXh0dXJlRGVz
Y3JpcHRvciA9IE1ldGFsVGV4dHVyZURlc2NyaXB0b3I6OmNyZWF0ZShwaXhlbEZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgbWlwbWFwcGVkKTsKK30KKworV2ViR1BVVGV4dHVyZURlc2NyaXB0b3I6On5X
ZWJHUFVUZXh0dXJlRGVzY3JpcHRvcigpCit7Cit9CisKK3Vuc2lnbmVkIGxvbmcgV2ViR1BVVGV4
dHVyZURlc2NyaXB0b3I6OndpZHRoKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fdGV4dHVyZURlc2Ny
aXB0b3IpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIG1fdGV4dHVyZURlc2NyaXB0
b3ItPndpZHRoKCk7Cit9CisKK3ZvaWQgV2ViR1BVVGV4dHVyZURlc2NyaXB0b3I6OnNldFdpZHRo
KHVuc2lnbmVkIGxvbmcgd2lkdGgpCit7CisgICAgICBpZiAoIW1fdGV4dHVyZURlc2NyaXB0b3Ip
CisgICAgICAgIHJldHVybjsKKworICAgIG1fdGV4dHVyZURlc2NyaXB0b3ItPnNldFdpZHRoKHdp
ZHRoKTsKK30KKwordW5zaWduZWQgbG9uZyBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcjo6aGVpZ2h0
KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fdGV4dHVyZURlc2NyaXB0b3IpCisgICAgICAgIHJldHVy
biAwOworCisgICAgcmV0dXJuIG1fdGV4dHVyZURlc2NyaXB0b3ItPmhlaWdodCgpOworfQorCit2
b2lkIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yOjpzZXRIZWlnaHQodW5zaWduZWQgbG9uZyBoZWln
aHQpCit7CisgICAgaWYgKCFtX3RleHR1cmVEZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgbV90ZXh0dXJlRGVzY3JpcHRvci0+c2V0SGVpZ2h0KGhlaWdodCk7Cit9CisKK3Vu
c2lnbmVkIGxvbmcgV2ViR1BVVGV4dHVyZURlc2NyaXB0b3I6OnNhbXBsZUNvdW50KCkgY29uc3QK
K3sKKyAgICBpZiAoIW1fdGV4dHVyZURlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgcmV0dXJuIG1fdGV4dHVyZURlc2NyaXB0b3ItPnNhbXBsZUNvdW50KCk7Cit9CisKK3ZvaWQg
V2ViR1BVVGV4dHVyZURlc2NyaXB0b3I6OnNldFNhbXBsZUNvdW50KHVuc2lnbmVkIGxvbmcgc2Ft
cGxlQ291bnQpCit7CisgICAgaWYgKCFtX3RleHR1cmVEZXNjcmlwdG9yKQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgbV90ZXh0dXJlRGVzY3JpcHRvci0+c2V0U2FtcGxlQ291bnQoc2FtcGxl
Q291bnQpOworfQorCit1bnNpZ25lZCBsb25nIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yOjp0ZXh0
dXJlVHlwZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3RleHR1cmVEZXNjcmlwdG9yKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIHJldHVybiBtX3RleHR1cmVEZXNjcmlwdG9yLT50ZXh0dXJlVHlw
ZSgpOworfQorCit2b2lkIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yOjpzZXRUZXh0dXJlVHlwZSh1
bnNpZ25lZCBsb25nIHRleHR1cmVUeXBlKQoreworICAgIGlmICghbV90ZXh0dXJlRGVzY3JpcHRv
cikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fdGV4dHVyZURlc2NyaXB0b3ItPnNldFRl
eHR1cmVUeXBlKHRleHR1cmVUeXBlKTsKK30KKwordW5zaWduZWQgbG9uZyBXZWJHUFVUZXh0dXJl
RGVzY3JpcHRvcjo6c3RvcmFnZU1vZGUoKSBjb25zdAoreworICAgIGlmICghbV90ZXh0dXJlRGVz
Y3JpcHRvcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gbV90ZXh0dXJlRGVzY3Jp
cHRvci0+c3RvcmFnZU1vZGUoKTsKK30KKwordm9pZCBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcjo6
c2V0U3RvcmFnZU1vZGUodW5zaWduZWQgbG9uZyBzdG9yYWdlTW9kZSkKK3sKKyAgICBpZiAoIW1f
dGV4dHVyZURlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX3RleHR1cmVE
ZXNjcmlwdG9yLT5zZXRTdG9yYWdlTW9kZShzdG9yYWdlTW9kZSk7Cit9CisKK3Vuc2lnbmVkIGxv
bmcgV2ViR1BVVGV4dHVyZURlc2NyaXB0b3I6OnVzYWdlKCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
dGV4dHVyZURlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIG1fdGV4
dHVyZURlc2NyaXB0b3ItPnVzYWdlKCk7Cit9CisKK3ZvaWQgV2ViR1BVVGV4dHVyZURlc2NyaXB0
b3I6OnNldFVzYWdlKHVuc2lnbmVkIGxvbmcgdXNhZ2UpCit7CisgICAgaWYgKCFtX3RleHR1cmVE
ZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3RleHR1cmVEZXNjcmlwdG9yLT5z
ZXRVc2FnZSh1c2FnZSk7Cit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmVEZXNjcmlwdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41Y2YwYjQ1ZTYzYQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmVE
ZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViR1BVRW51bXMu
aCIKKyNpbmNsdWRlICJXZWJHUFVPYmplY3QuaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZXRhbFRleHR1cmVEZXNjcmlwdG9yOwor
CitjbGFzcyBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvciA6IHB1YmxpYyBXZWJHUFVPYmplY3Qgewor
cHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVVRleHR1cmVEZXNjcmlwdG9yKCk7CisgICAgc3Rh
dGljIFJlZjxXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcj4gY3JlYXRlKHVuc2lnbmVkIGxvbmcgcGl4
ZWxGb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0LCBib29s
IG1pcG1hcHBlZCk7CisKKyAgICB1bnNpZ25lZCBsb25nIHdpZHRoKCkgY29uc3Q7CisgICAgdm9p
ZCBzZXRXaWR0aCh1bnNpZ25lZCBsb25nKTsKKworICAgIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRIZWlnaHQodW5zaWduZWQgbG9uZyk7CisKKyAgICB1bnNpZ25l
ZCBsb25nIHNhbXBsZUNvdW50KCkgY29uc3Q7CisgICAgdm9pZCBzZXRTYW1wbGVDb3VudCh1bnNp
Z25lZCBsb25nKTsKKworICAgIHVuc2lnbmVkIGxvbmcgdGV4dHVyZVR5cGUoKSBjb25zdDsKKyAg
ICB2b2lkIHNldFRleHR1cmVUeXBlKHVuc2lnbmVkIGxvbmcpOworCisgICAgdW5zaWduZWQgbG9u
ZyBzdG9yYWdlTW9kZSgpIGNvbnN0OworICAgIHZvaWQgc2V0U3RvcmFnZU1vZGUodW5zaWduZWQg
bG9uZyk7CisKKyAgICB1bnNpZ25lZCBsb25nIHVzYWdlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRV
c2FnZSh1bnNpZ25lZCBsb25nKTsKKworICAgIE1ldGFsVGV4dHVyZURlc2NyaXB0b3IqIHRleHR1
cmVEZXNjcmlwdG9yKCkgeyByZXR1cm4gbV90ZXh0dXJlRGVzY3JpcHRvci5nZXQoKTsgfQorCitw
cml2YXRlOgorICAgIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yKHVuc2lnbmVkIGxvbmcgcGl4ZWxG
b3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0LCBib29sIG1p
cG1hcHBlZCk7CisKKyAgICBSZWZQdHI8TWV0YWxUZXh0dXJlRGVzY3JpcHRvcj4gbV90ZXh0dXJl
RGVzY3JpcHRvcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40NzVkNzZhY2EyOAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmVEZXNj
cmlwdG9yLmlkbApAQCAtMCwwICsxLDQ2IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK1sgQ29u
c3RydWN0b3IodW5zaWduZWQgbG9uZyBwaXhlbEZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwg
dW5zaWduZWQgbG9uZyBoZWlnaHQsIGJvb2xlYW4gbWlwbWFwcGVkKSBdCitpbnRlcmZhY2UgV2Vi
R1BVVGV4dHVyZURlc2NyaXB0b3IgeworICAgIC8vIGF0dHJpYnV0ZSBET01TdHJpbmcgdGV4dHVy
ZVR5cGU7CisgICAgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgdGV4dHVyZVR5cGU7CisKKy8vICAg
IGF0dHJpYnV0ZSBET01TdHJpbmcgcGl4ZWxGb3JtYXQ7CisgICAgYXR0cmlidXRlIHVuc2lnbmVk
IGxvbmcgd2lkdGg7CisgICAgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgaGVpZ2h0OworLy8gICAg
YXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgZGVwdGg7CisvLyAgICBhdHRyaWJ1dGUgdW5zaWduZWQg
bG9uZyBtaXBtYXBMZXZlbENvdW50OworICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHNhbXBs
ZUNvdW50OworLy8gICAgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgYXJyYXlDb3VudDsKKy8vICAg
IGF0dHJpYnV0ZSBXZWJHUFVSZXNvdXJjZU9wdGlvbnMgcmVzb3VyY2VPcHRpb25zOworLy8gICAg
YXR0cmlidXRlIFdlYkdQVUNQVUNhY2hlTW9kZSBjcHVDYWNoZU1vZGU7CisKKyAgICAvLyBhdHRy
aWJ1dGUgV2ViR1BVU3RvcmFnZU1vZGUgc3RvcmFnZU1vZGU7CisgICAgYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgc3RvcmFnZU1vZGU7CisKKyAgICAvLyBhdHRyaWJ1dGUgV2ViR1BVVGV4dHVyZVVz
YWdlIHVzYWdlOworICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHVzYWdlOworfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCBhM2NjY2UxYzhjZS4uNGMyMmI1NDA3NTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTg5LDYgKzg5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIE0oV2ViR0wpIFwKICAgICBNKFdlYlJlcGxheSkgXAogICAgIE0oV2hlZWxFdmVu
dFRlc3RUcmlnZ2VycykgXAorICAgIE0oV2ViR1BVKSBcCiAKICN1bmRlZiBERUNMQVJFX0xPR19D
SEFOTkVMCiAjZGVmaW5lIERFQ0xBUkVfTE9HX0NIQU5ORUwobmFtZSkgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAK
aW5kZXggMzczZGVkOWMzNGIuLjhlMjcxNzg0ZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKQEAgLTIwMSw2
ICsyMDEsOSBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBQbGF0Zm9y
bUNBTGF5ZXI6OkxheWVyVHlwZSBsYXllclR5cGUpCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZVdlYkdMTGF5ZXI6CiAgICAgICAgIHRzIDw8ICJ3ZWItZ2wtbGF5ZXIiOwogICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlV2ViR1BVTGF5
ZXI6CisgICAgICAgIHRzIDw8ICJ3ZWItbWV0YWwtbGF5ZXIiOworICAgICAgICBicmVhazsKICAg
ICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlU2hhcGVMYXllcjoKICAgICAgICAgdHMg
PDwgInNoYXBlLWxheWVyIjsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCmluZGV4IDRjOWU0YmQ3
MTRmLi4wOGE0ODVjNDEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKQEAgLTc1LDYgKzc1LDcgQEAgcHVibGljOgog
ICAgICAgICBMYXllclR5cGVSb290TGF5ZXIsCiAgICAgICAgIExheWVyVHlwZUFWUGxheWVyTGF5
ZXIsCiAgICAgICAgIExheWVyVHlwZVdlYkdMTGF5ZXIsCisgICAgICAgIExheWVyVHlwZVdlYkdQ
VUxheWVyLAogICAgICAgICBMYXllclR5cGVCYWNrZHJvcExheWVyLAogICAgICAgICBMYXllclR5
cGVTaGFwZUxheWVyLAogICAgICAgICBMYXllclR5cGVMaWdodFN5c3RlbUJhY2tkcm9wTGF5ZXIs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9Q
bGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCmluZGV4IGJkOGZhZDc1OGYzLi4zN2Fi
YWY1NTU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
Y29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KQEAgLTQyLDYgKzQy
LDcgQEAKICNpbXBvcnQgIldlYkNvcmVDQUxheWVyRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJHTExh
eWVyLmgiCiAjaW1wb3J0ICJXZWJMYXllci5oIgorI2ltcG9ydCAiV2ViR1BVTGF5ZXIuaCIKICNp
bXBvcnQgIldlYlN5c3RlbUJhY2tkcm9wTGF5ZXIuaCIKICNpbXBvcnQgIldlYlRpbGVkQmFja2lu
Z0xheWVyLmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXIuaD4KQEAgLTE5Niw2ICsx
OTcsOSBAQCBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6
bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcihQbGF0ZgogICAgIGlmIChbbGF5ZXIgaXNLaW5kT2ZD
bGFzczpbV2ViR0xMYXllciBjbGFzc11dKQogICAgICAgICByZXR1cm4gTGF5ZXJUeXBlV2ViR0xM
YXllcjsKIAorICAgIGlmIChbbGF5ZXIgaXNLaW5kT2ZDbGFzczpbV2ViR1BVTGF5ZXIgY2xhc3Nd
XSkKKyAgICAgICAgcmV0dXJuIExheWVyVHlwZVdlYkdQVUxheWVyOworCiAgICAgcmV0dXJuIExh
eWVyVHlwZUN1c3RvbTsKIH0KIApAQCAtMjUxLDYgKzI1NSw3IEBAIFBsYXRmb3JtQ0FMYXllckNv
Y29hOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNB
TGF5ZXJDCiAgICAgICAgIGxheWVyQ2xhc3MgPSBnZXRBVlBsYXllckxheWVyQ2xhc3MoKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBMYXllclR5cGVXZWJHTExheWVyOgorICAgIGNhc2UgTGF5
ZXJUeXBlV2ViR1BVTGF5ZXI6CiAgICAgICAgIC8vIFdlIGRvbid0IGNyZWF0ZSBQbGF0Zm9ybUNB
TGF5ZXJDb2NvYXMgd3JhcHBlZCBhcm91bmQgV2ViR0xMYXllcnMuCiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTI4OCw3ICsyOTMsNyBAQCB2b2lkIFBs
YXRmb3JtQ0FMYXllckNvY29hOjpjb21tb25Jbml0KCkKICAgICBbbV9sYXllciBzZXRWYWx1ZTpb
TlNWYWx1ZSB2YWx1ZVdpdGhQb2ludGVyOnRoaXNdIGZvcktleTpwbGF0Zm9ybUNBTGF5ZXJQb2lu
dGVyXTsKICAgICAKICAgICAvLyBDbGVhciBhbGwgdGhlIGltcGxpY2l0IGFuaW1hdGlvbnMgb24g
dGhlIENBTGF5ZXIKLSAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQVZQbGF5ZXJMYXll
ciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVXZWJHTExheWVyIHx8IG1fbGF5ZXJUeXBlID09
IExheWVyVHlwZVNjcm9sbGluZ0xheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUN1c3Rv
bSkKKyAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQVZQbGF5ZXJMYXllciB8fCBtX2xh
eWVyVHlwZSA9PSBMYXllclR5cGVXZWJHTExheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlw
ZVdlYkdQVUxheWVyIHx8bV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2Nyb2xsaW5nTGF5ZXIgfHwg
bV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQ3VzdG9tKQogICAgICAgICBbbV9sYXllciB3ZWJfZGlz
YWJsZUFsbEFjdGlvbnNdOwogICAgIGVsc2UKICAgICAgICAgW21fbGF5ZXIgc2V0RGVsZWdhdGU6
W1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZSBzaGFyZWRdXTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01ldGFsQnVmZmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZXRhbEJ1ZmZlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zZGI4Zjc3Yjc2NQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01ldGFsQnVm
ZmVyLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2lu
Y2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CisKK09CSkNfQ0xBU1MgTVRMQnVmZmVy
OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1ldGFsRGV2aWNlOworCitjbGFzcyBN
ZXRhbEJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPE1ldGFsQnVmZmVyPiB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8TWV0YWxCdWZmZXI+IGNyZWF0ZShNZXRhbERldmljZSosIEFy
cmF5QnVmZmVyVmlldyopOworICAgIH5NZXRhbEJ1ZmZlcigpOworCisgICAgTVRMQnVmZmVyKiBi
dWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQorCisgICAgdW5zaWduZWQgbG9uZyBs
ZW5ndGgoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBjb250ZW50cygpOwor
Citwcml2YXRlOgorICAgIE1ldGFsQnVmZmVyKE1ldGFsRGV2aWNlKiwgQXJyYXlCdWZmZXJWaWV3
Kik7CisKKyAgICBSZXRhaW5QdHI8TVRMQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IG1fY29udGVudHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01ldGFsQnVm
ZmVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWV0YWxCdWZm
ZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU3YTQ1MDdkNjBi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvTWV0YWxCdWZmZXIubW0KQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUg
Ik1ldGFsQnVmZmVyLmgiCisKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIk1ldGFsRGV2
aWNlLmgiCisKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworUGFzc1JlZlB0cjxNZXRhbEJ1ZmZlcj4gTWV0YWxCdWZmZXI6OmNyZWF0ZShNZXRhbERldmlj
ZSogZGV2aWNlLCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEpCit7CisgICAgUmVmUHRyPE1ldGFsQnVm
ZmVyPiBidWZmZXIgPSBhZG9wdFJlZihuZXcgTWV0YWxCdWZmZXIoZGV2aWNlLCBkYXRhKSk7Cisg
ICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlKCk7Cit9CisKK01ldGFsQnVmZmVyOjpNZXRhbEJ1ZmZl
cihNZXRhbERldmljZSogZGV2aWNlLCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEpCit7CisgICAgTE9H
KFdlYkdQVSwgIk1ldGFsQnVmZmVyOjpNZXRhbEJ1ZmZlcigpIik7CisKKyAgICBpZiAoIWRldmlj
ZSB8fCAhZGV2aWNlLT5kZXZpY2UoKSB8fCAhZGF0YSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9idWZmZXIgPSAoTVRMQnVmZmVyKilbZGV2aWNlLT5kZXZpY2UoKSBuZXdCdWZmZXJXaXRoQnl0
ZXM6ZGF0YS0+YmFzZUFkZHJlc3MoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoOmRhdGEtPmJ5dGVMZW5ndGgoKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25z
Ok1UTFJlc291cmNlT3B0aW9uQ1BVQ2FjaGVNb2RlRGVmYXVsdF07Cit9CisKK01ldGFsQnVmZmVy
Ojp+TWV0YWxCdWZmZXIoKQoreworICAgIExPRyhXZWJHUFUsICJNZXRhbEJ1ZmZlcjo6fk1ldGFs
QnVmZmVyKCkiKTsKK30KKwordW5zaWduZWQgbG9uZyBNZXRhbEJ1ZmZlcjo6bGVuZ3RoKCkgY29u
c3QKK3sKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVy
biBbbV9idWZmZXIgbGVuZ3RoXTsKK30KKworUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gTWV0YWxC
dWZmZXI6OmNvbnRlbnRzKCkKK3sKKyAgICBpZiAobV9jb250ZW50cykKKyAgICAgICAgcmV0dXJu
IG1fY29udGVudHM7CisKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIG1fY29udGVudHMgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKFttX2J1
ZmZlciBjb250ZW50c10sIFttX2J1ZmZlciBsZW5ndGhdLCBbXSAodm9pZCopIHsgfSk7CisgICAg
cmV0dXJuIG1fY29udGVudHM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01ldGFsQ29tbWFuZEJ1
ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWV0YWxDb21t
YW5kQnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQ4ODYz
N2I3NTllCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvTWV0YWxDb21tYW5kQnVmZmVyLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK09CSkNfQ0xBU1MgTVRMQ29tbWFuZEJ1ZmZlcjsK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZXRhbENvbW1hbmRRdWV1ZTsKK2NsYXNz
IE1ldGFsRHJhd2FibGU7CitjbGFzcyBNZXRhbFJlbmRlckNvbW1hbmRFbmNvZGVyOworY2xhc3Mg
TWV0YWxSZW5kZXJQYXNzRGVzY3JpcHRvcjsKKworY2xhc3MgTWV0YWxDb21tYW5kQnVmZmVyIDog
cHVibGljIFJlZkNvdW50ZWQ8TWV0YWxDb21tYW5kQnVmZmVyPiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8TWV0YWxDb21tYW5kQnVmZmVyPiBjcmVhdGUoTWV0YWxDb21tYW5kUXVl
dWUqKTsKKyAgICB+TWV0YWxDb21tYW5kQnVmZmVyKCk7CisKKyAgICB2b2lkIGNvbW1pdCgpOwor
ICAgIHZvaWQgcHJlc2VudERyYXdhYmxlKE1ldGFsRHJhd2FibGUqIGRyYXdhYmxlKTsKKworICAg
IFBhc3NSZWZQdHI8TWV0YWxSZW5kZXJDb21tYW5kRW5jb2Rlcj4gY3JlYXRlUmVuZGVyQ29tbWFu
ZEVuY29kZXIoTWV0YWxSZW5kZXJQYXNzRGVzY3JpcHRvciopOworCisgICAgTVRMQ29tbWFuZEJ1
ZmZlciogY29tbWFuZEJ1ZmZlcigpIHsgcmV0dXJuIG1fY29tbWFuZEJ1ZmZlci5nZXQoKTsgfQor
Citwcml2YXRlOgorICAgIE1ldGFsQ29tbWFuZEJ1ZmZlcihNZXRhbENvbW1hbmRRdWV1ZSopOwor
CisgICAgUmV0YWluUHRyPE1UTENvbW1hbmRCdWZmZXI+IG1fY29tbWFuZEJ1ZmZlcjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvTWV0YWxDb21tYW5kQnVmZmVyLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWV0YWxDb21tYW5kQnVmZmVyLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44MDE0ZjhkOTYxMgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01ldGFsQ29tbWFu
ZEJ1ZmZlci5tbQpAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiTWV0YWxD
b21tYW5kQnVmZmVyLmgiCisKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIk1ldGFsQ29t
bWFuZFF1ZXVlLmgiCisjaW1wb3J0ICJNZXRhbERyYXdhYmxlLmgiCisjaW1wb3J0ICJNZXRhbFJl
bmRlckNvbW1hbmRFbmNvZGVyLmgiCisjaW1wb3J0ICJNZXRhbFJlbmRlclBhc3NEZXNjcmlwdG9y
LmgiCisKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
UGFzc1JlZlB0cjxNZXRhbENvbW1hbmRCdWZmZXI+IE1ldGFsQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRl
KE1ldGFsQ29tbWFuZFF1ZXVlKiBxdWV1ZSkKK3sKKyAgICBSZWZQdHI8TWV0YWxDb21tYW5kQnVm
ZmVyPiBjb21tYW5kQnVmZmVyID0gYWRvcHRSZWYobmV3IE1ldGFsQ29tbWFuZEJ1ZmZlcihxdWV1
ZSkpOworICAgIHJldHVybiBjb21tYW5kQnVmZmVyLnJlbGVhc2UoKTsKK30KKworTWV0YWxDb21t
YW5kQnVmZmVyOjpNZXRhbENvbW1hbmRCdWZmZXIoTWV0YWxDb21tYW5kUXVldWUqIHF1ZXVlKQor
eworICAgIExPRyhXZWJHUFUsICJNZXRhbENvbW1hbmRCdWZmZXI6Ok1ldGFsQ29tbWFuZEJ1ZmZl
cigpIik7CisKKyAgICBpZiAoIXF1ZXVlIHx8ICFxdWV1ZS0+Y29tbWFuZFF1ZXVlKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fY29tbWFuZEJ1ZmZlciA9IChNVExDb21tYW5kQnVmZmVyKilb
cXVldWUtPmNvbW1hbmRRdWV1ZSgpIGNvbW1hbmRCdWZmZXJdOworfQorCitNZXRhbENvbW1hbmRC
dWZmZXI6On5NZXRhbENvbW1hbmRCdWZmZXIoKQoreworICAgIExPRyhXZWJHUFUsICJNZXRhbENv
bW1hbmRCdWZmZXI6On5NZXRhbENvbW1hbmRCdWZmZXIoKSIpOworfQorCit2b2lkIE1ldGFsQ29t
bWFuZEJ1ZmZlcjo6Y29tbWl0KCkKK3sKKyAgICBpZiAoIW1fY29tbWFuZEJ1ZmZlcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgW21fY29tbWFuZEJ1ZmZlciBjb21taXRdOworfQorCit2b2lkIE1l
dGFsQ29tbWFuZEJ1ZmZlcjo6cHJlc2VudERyYXdhYmxlKE1ldGFsRHJhd2FibGUqIGRyYXdhYmxl
KQoreworICAgIGlmICghbV9jb21tYW5kQnVmZmVyIHx8ICFkcmF3YWJsZS0+ZHJhd2FibGUoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgW21fY29tbWFuZEJ1ZmZlciBwcmVzZW50RHJhd2FibGU6
c3RhdGljX2Nhc3Q8aWQ8TVRMRHJhd2FibGU+PihkcmF3YWJsZS0+ZHJhd2FibGUoKSldOworICAg
IGRyYXdhYmxlLT5yZWxlYXNlKCk7Cit9CisKK1Bhc3NSZWZQdHI8TWV0YWxSZW5kZXJDb21tYW5k
RW5jb2Rlcj4gTWV0YWxDb21tYW5kQnVmZmVyOjpjcmVhdGVSZW5kZXJDb21tYW5kRW5jb2RlcihN
ZXRhbFJlbmRlclBhc3NEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBNZXRh
bFJlbmRlckNvbW1hbmRFbmNvZGVyOjpjcmVhdGUodGhpcywgZGVzY3JpcHRvcik7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL01ldGFsQ29tbWFuZFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9NZXRhbENvbW1hbmRRdWV1ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42Yjc3MmI3MmQ1YgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01ldGFsQ29tbWFuZFF1ZXVlLmgK
QEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK09C
SkNfQ0xBU1MgTVRMQ29tbWFuZFF1ZXVlOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IE1ldGFsQ29tbWFuZEJ1ZmZlcjsKK2NsYXNzIE1ldGFsRGV2aWNlOworY2xhc3MgTWV0YWxGdW5j
dGlvbjsKKworY2xhc3MgTWV0YWxDb21tYW5kUXVldWUgOiBwdWJsaWMgUmVmQ291bnRlZDxNZXRh
bENvbW1hbmRRdWV1ZT4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1ldGFsQ29t
bWFuZFF1ZXVlPiBjcmVhdGUoTWV0YWxEZXZpY2UqKTsKKyAgICB+TWV0YWxDb21tYW5kUXVldWUo
KTsKKworICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgc2V0TGFiZWwoY29uc3Qg
U3RyaW5nJik7CisKKyAgICBQYXNzUmVmUHRyPE1ldGFsQ29tbWFuZEJ1ZmZlcj4gY3JlYXRlQ29t
bWFuZEJ1ZmZlcigpOworCisgICAgTVRMQ29tbWFuZFF1ZXVlKiBjb21tYW5kUXVldWUoKSB7IHJl
dHVybiBtX2NvbW1hbmRRdWV1ZS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIE1ldGFsQ29tbWFu
ZFF1ZXVlKE1ldGFsRGV2aWNlKik7CisKKyAgICBSZXRhaW5QdHI8TVRMQ29tbWFuZFF1ZXVlPiBt
X2NvbW1hbmRRdWV1ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWV0YWxDb21tYW5kUXVl
dWUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZXRhbENvbW1h
bmRRdWV1ZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMDEyNDMw
MzI4MzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9NZXRhbENvbW1hbmRRdWV1ZS5tbQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaW5jbHVkZSAiTWV0YWxDb21tYW5kUXVldWUuaCIKKworI2ltcG9ydCAiTG9nZ2luZy5oIgor
I2ltcG9ydCAiTWV0YWxDb21tYW5kQnVmZmVyLmgiCisjaW1wb3J0ICJNZXRhbERldmljZS5oIgor
I2ltcG9ydCAiTWV0YWxGdW5jdGlvbi5oIgorCisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8TWV0YWxDb21tYW5kUXVldWU+IE1ldGFs
Q29tbWFuZFF1ZXVlOjpjcmVhdGUoTWV0YWxEZXZpY2UqIGRldmljZSkKK3sKKyAgICBSZWZQdHI8
TWV0YWxDb21tYW5kUXVldWU+IGNvbW1hbmRRdWV1ZSA9IGFkb3B0UmVmKG5ldyBNZXRhbENvbW1h
bmRRdWV1ZShkZXZpY2UpKTsKKyAgICByZXR1cm4gY29tbWFuZFF1ZXVlLnJlbGVhc2UoKTsKK30K
KworTWV0YWxDb21tYW5kUXVldWU6Ok1ldGFsQ29tbWFuZFF1ZXVlKE1ldGFsRGV2aWNlKiBkZXZp
Y2UpCit7CisgICAgTE9HKFdlYkdQVSwgIk1ldGFsQ29tbWFuZFF1ZXVlOjpNZXRhbENvbW1hbmRR
dWV1ZSgpIik7CisKKyAgICBpZiAoIWRldmljZSB8fCAhZGV2aWNlLT5kZXZpY2UoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9jb21tYW5kUXVldWUgPSAoTVRMQ29tbWFuZFF1ZXVlKilbZGV2
aWNlLT5kZXZpY2UoKSBuZXdDb21tYW5kUXVldWVdOworfQorCitNZXRhbENvbW1hbmRRdWV1ZTo6
fk1ldGFsQ29tbWFuZFF1ZXVlKCkKK3sKKyAgICBMT0coV2ViR1BVLCAiTWV0YWxDb21tYW5kUXVl
dWU6On5NZXRhbENvbW1hbmRRdWV1ZSgpIik7Cit9CisKK1N0cmluZyBNZXRhbENvbW1hbmRRdWV1
ZTo6bGFiZWwoKSBjb25zdAoreworICAgIGlmICghbV9jb21tYW5kUXVldWUpCisgICAgICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOworCisgICAgcmV0dXJuIFttX2NvbW1hbmRRdWV1ZSBsYWJlbF07
Cit9CisKK3ZvaWQgTWV0YWxDb21tYW5kUXVldWU6OnNldExhYmVsKGNvbnN0IFN0cmluZyYgbGFi
ZWwpCit7CisgICAgaWYgKCFtX2NvbW1hbmRRdWV1ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
W21fY29tbWFuZFF1ZXVlIHNldExhYmVsOmxhYmVsXTsKK30KKworUGFzc1JlZlB0cjxNZXRhbENv
bW1hbmRCdWZmZXI+IE1ldGFsQ29tbWFuZFF1ZXVlOjpjcmVhdGVDb21tYW5kQnVmZmVyKCkKK3sK
KyAgICByZXR1cm4gTWV0YWxDb21tYW5kQnVmZmVyOjpjcmVhdGUodGhpcyk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL01ldGFsRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWV0YWxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjc4NGE1Y2UzM2E0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWV0
YWxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiTWV0YWxFbnVtcy5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitPQkpDX0NM
QVNTIE1UTERlcHRoU3RlbmNpbERlc2NyaXB0b3I7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgTWV0YWxGdW5jdGlvbjsKKworY2xhc3MgTWV0YWxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9y
IDogcHVibGljIFJlZkNvdW50ZWQ8TWV0YWxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yPiB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWV0YWxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yPiBj
cmVhdGUoKTsKKyAgICB+TWV0YWxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCk7CisKKyAgICBTdHJp
bmcgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkIHNldExhYmVsKGNvbnN0IFN0cmluZyYpOworCisg
ICAgYm9vbCBkZXB0aFdyaXRlRW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0RGVwdGhXcml0
ZUVuYWJsZWQoYm9vbCk7CisKKyAgICBNZXRhbENvbXBhcmVGdW5jdGlvbiBkZXB0aENvbXBhcmVG
dW5jdGlvbigpIGNvbnN0OworICAgIHZvaWQgc2V0RGVwdGhDb21wYXJlRnVuY3Rpb24oTWV0YWxD
b21wYXJlRnVuY3Rpb24pOworCisgICAgTVRMRGVwdGhTdGVuY2lsRGVzY3JpcHRvciogZGVwdGhT
dGVuY2lsRGVzY3JpcHRvcigpIHsgcmV0dXJuIG1fZGVwdGhTdGVuY2lsRGVzY3JpcHRvci5nZXQo
KTsgfQorCitwcml2YXRlOgorICAgIE1ldGFsRGVwdGhTdGVuY2lsRGVzY3JpcHRvcigpOworCisg
ICAgUmV0YWluUHRyPE1UTERlcHRoU3RlbmNpbERlc2NyaXB0b3I+IG1fZGVwdGhTdGVuY2lsRGVz
Y3JpcHRvcjsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01ldGFsRGVwdGhTdGVuY2ls
RGVzY3JpcHRvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01l
dGFsRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uMzM3NjhmMDBmNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZXRhbERlcHRoU3RlbmNpbERlc2NyaXB0b3IubW0K
QEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJNZXRhbERlcHRoU3RlbmNp
bERlc2NyaXB0b3IuaCIKKworI2ltcG9ydCAiTG9nZ2luZy5oIgorCisjaW1wb3J0IDxNZXRhbC9N
ZXRhbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8TWV0YWxEZXB0aFN0
ZW5jaWxEZXNjcmlwdG9yPiBNZXRhbERlcHRoU3RlbmNpbERlc2NyaXB0b3I6OmNyZWF0ZSgpCit7
CisgICAgUmVmUHRyPE1ldGFsRGVwdGhTdGVuY2lsRGVzY3JpcHRvcj4gZGVzY3JpcHRvciA9IGFk
b3B0UmVmKG5ldyBNZXRhbERlcHRoU3RlbmNpbERlc2NyaXB0b3IoKSk7CisgICAgcmV0dXJuIGRl
c2NyaXB0b3IucmVsZWFzZSgpOworfQorCitNZXRhbERlcHRoU3RlbmNpbERlc2NyaXB0b3I6Ok1l
dGFsRGVwdGhTdGVuY2lsRGVzY3JpcHRvcigpCit7CisgICAgTE9HKFdlYkdQVSwgIk1ldGFsRGVw
dGhTdGVuY2lsRGVzY3JpcHRvcjo6TWV0YWxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCkiKTsKKwor
ICAgIG1fZGVwdGhTdGVuY2lsRGVzY3JpcHRvciA9IChNVExEZXB0aFN0ZW5jaWxEZXNjcmlwdG9y
KilbTVRMRGVwdGhTdGVuY2lsRGVzY3JpcHRvciBuZXddOworfQorCitNZXRhbERlcHRoU3RlbmNp
bERlc2NyaXB0b3I6On5NZXRhbERlcHRoU3RlbmNpbERlc2NyaXB0b3IoKQoreworICAgIExPRyhX
ZWJHUFUsICJNZXRhbERlcHRoU3RlbmNpbERlc2NyaXB0b3I6On5NZXRhbERlcHRoU3RlbmNpbERl
c2NyaXB0b3IoKSIpOworfQorCitTdHJpbmcgTWV0YWxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjps
YWJlbCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2RlcHRoU3RlbmNpbERlc2NyaXB0b3IpCisgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgcmV0dXJuIFttX2RlcHRoU3RlbmNpbERl
c2NyaXB0b3IgbGFiZWxdOworfQorCit2b2lkIE1ldGFsRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6
c2V0TGFiZWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKK3sKKyAgICBpZiAoIW1fZGVwdGhTdGVuY2ls
RGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgW21fZGVwdGhTdGVuY2lsRGVzY3Jp
cHRvciBzZXRMYWJlbDpsYWJlbF07Cit9CisKK2Jvb2wgTWV0YWxEZXB0aFN0ZW5jaWxEZXNjcmlw
dG9yOjpkZXB0aFdyaXRlRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2RlcHRoU3RlbmNp
bERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBbbV9kZXB0
aFN0ZW5jaWxEZXNjcmlwdG9yIGlzRGVwdGhXcml0ZUVuYWJsZWRdOworfQorCit2b2lkIE1ldGFs
RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6c2V0RGVwdGhXcml0ZUVuYWJsZWQoYm9vbCBuZXdEZXB0
aFdyaXRlRW5hYmxlZCkKK3sKKyAgICBpZiAoIW1fZGVwdGhTdGVuY2lsRGVzY3JpcHRvcikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgW21fZGVwdGhTdGVuY2lsRGVzY3JpcHRvciBzZXREZXB0aFdy
aXRlRW5hYmxlZDpuZXdEZXB0aFdyaXRlRW5hYmxlZF07Cit9CisKK01ldGFsQ29tcGFyZUZ1bmN0
aW9uIE1ldGFsRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6ZGVwdGhDb21wYXJlRnVuY3Rpb24oKSBj
b25zdAoreworICAgIGlmICghbV9kZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKQorICAgICAgICByZXR1
cm4gTWV0YWxDb21wYXJlRnVuY3Rpb246Ok5ldmVyOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PE1ldGFsQ29tcGFyZUZ1bmN0aW9uPihbbV9kZXB0aFN0ZW5jaWxEZXNjcmlwdG9yIGRlcHRoQ29t
cGFyZUZ1bmN0aW9uXSk7Cit9CisKK3ZvaWQgTWV0YWxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpz
ZXREZXB0aENvbXBhcmVGdW5jdGlvbihNZXRhbENvbXBhcmVGdW5jdGlvbiBuZXdGdW5jdGlvbikK
K3sKKyAgICBpZiAoIW1fZGVwdGhTdGVuY2lsRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgW21fZGVwdGhTdGVuY2lsRGVzY3JpcHRvciBzZXREZXB0aENvbXBhcmVGdW5jdGlvbjpz
dGF0aWNfY2FzdDxNVExDb21wYXJlRnVuY3Rpb24+KG5ld0Z1bmN0aW9uKV07CisKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvTWV0YWxEZXB0aFN0ZW5jaWxTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWV0YWxEZXB0aFN0ZW5jaWxTdGF0ZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wOTM4ZmU2YjgwOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01ldGFsRGVwdGhT
dGVuY2lsU3RhdGUuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworT0JKQ19DTEFTUyBNVExEZXB0aFN0ZW5jaWxTdGF0ZTsKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBNZXRhbERldmljZTsKK2NsYXNzIE1ldGFsRGVwdGhTdGVuY2ls
RGVzY3JpcHRvcjsKKworY2xhc3MgTWV0YWxEZXB0aFN0ZW5jaWxTdGF0ZSA6IHB1YmxpYyBSZWZD
b3VudGVkPE1ldGFsRGVwdGhTdGVuY2lsU3RhdGU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxNZXRhbERlcHRoU3RlbmNpbFN0YXRlPiBjcmVhdGUoTWV0YWxEZXZpY2UqLCBNZXRh
bERlcHRoU3RlbmNpbERlc2NyaXB0b3IqKTsKKyAgICB+TWV0YWxEZXB0aFN0ZW5jaWxTdGF0ZSgp
OworCisgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRMYWJlbChjb25zdCBT
dHJpbmcmKTsKKworICAgIE1UTERlcHRoU3RlbmNpbFN0YXRlKiBkZXB0aFN0ZW5jaWxTdGF0ZSgp
IHsgcmV0dXJuIG1fZGVwdGhTdGVuY2lsU3RhdGUuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBN
ZXRhbERlcHRoU3RlbmNpbFN0YXRlKE1ldGFsRGV2aWNlKiwgTWV0YWxEZXB0aFN0ZW5jaWxEZXNj
cmlwdG9yKik7CisKKyAgICBSZXRhaW5QdHI8TVRMRGVwdGhTdGVuY2lsU3RhdGU+IG1fZGVwdGhT
dGVuY2lsU3RhdGU7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZXRhbERlcHRoU3Rl
bmNpbFN0YXRlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWV0
YWxEZXB0aFN0ZW5jaWxTdGF0ZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uOWZkMDk5ZTdkN2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9NZXRhbERlcHRoU3RlbmNpbFN0YXRlLm1tCkBAIC0wLDAgKzEs
NzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJNZXRhbERlcHRoU3RlbmNpbFN0YXRlLmgiCisK
KyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIk1ldGFsRGV2aWNlLmgiCisjaW1wb3J0ICJN
ZXRhbERlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCIKKworI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE1ldGFsRGVwdGhTdGVuY2lsU3Rh
dGU+IE1ldGFsRGVwdGhTdGVuY2lsU3RhdGU6OmNyZWF0ZShNZXRhbERldmljZSogZGV2aWNlLCBN
ZXRhbERlcHRoU3RlbmNpbERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgUmVmUHRyPE1l
dGFsRGVwdGhTdGVuY2lsU3RhdGU+IHN0YXRlID0gYWRvcHRSZWYobmV3IE1ldGFsRGVwdGhTdGVu
Y2lsU3RhdGUoZGV2aWNlLCBkZXNjcmlwdG9yKSk7CisgICAgcmV0dXJuIHN0YXRlLnJlbGVhc2Uo
KTsKK30KKworTWV0YWxEZXB0aFN0ZW5jaWxTdGF0ZTo6TWV0YWxEZXB0aFN0ZW5jaWxTdGF0ZShN
ZXRhbERldmljZSogZGV2aWNlLCBNZXRhbERlcHRoU3RlbmNpbERlc2NyaXB0b3IqIGRlc2NyaXB0
b3IpCit7CisgICAgTE9HKFdlYkdQVSwgIk1ldGFsRGVwdGhTdGVuY2lsU3RhdGU6Ok1ldGFsRGVw
dGhTdGVuY2lsU3RhdGUoKSIpOworCisgICAgaWYgKCFkZXZpY2UgfHwgIWRldmljZS0+ZGV2aWNl
KCkgfHwgIWRlc2NyaXB0b3IgfHwgIWRlc2NyaXB0b3ItPmRlcHRoU3RlbmNpbERlc2NyaXB0b3Io
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kZXB0aFN0ZW5jaWxTdGF0ZSA9IChNVExEZXB0
aFN0ZW5jaWxTdGF0ZSopW2RldmljZS0+ZGV2aWNlKCkgbmV3RGVwdGhTdGVuY2lsU3RhdGVXaXRo
RGVzY3JpcHRvcjpkZXNjcmlwdG9yLT5kZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCldOworfQorCitN
ZXRhbERlcHRoU3RlbmNpbFN0YXRlOjp+TWV0YWxEZXB0aFN0ZW5jaWxTdGF0ZSgpCit7CisgICAg
TE9HKFdlYkdQVSwgIk1ldGFsRGVwdGhTdGVuY2lsU3RhdGU6On5NZXRhbERlcHRoU3RlbmNpbFN0
YXRlKCkiKTsKK30KKworU3RyaW5nIE1ldGFsRGVwdGhTdGVuY2lsU3RhdGU6OmxhYmVsKCkgY29u
c3QKK3sKKyAgICBpZiAoIW1fZGVwdGhTdGVuY2lsU3RhdGUpCisgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOworCisgICAgcmV0dXJuIFttX2RlcHRoU3RlbmNpbFN0YXRlIGxhYmVsXTsKK30K
Kwordm9pZCBNZXRhbERlcHRoU3RlbmNpbFN0YXRlOjpzZXRMYWJlbChjb25zdCBTdHJpbmcmIGxh
YmVsKQoreworICAgIGlmICghbV9kZXB0aFN0ZW5jaWxTdGF0ZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgW21fZGVwdGhTdGVuY2lsU3RhdGUgc2V0TGFiZWw6bGFiZWxdOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9NZXRhbERldmljZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvTWV0YWxEZXZpY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uYzRhMGZhOWM4NzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9NZXRhbERldmljZS5oCkBAIC0wLDAgKzEsMTI3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CisKK09CSkNfQ0xBU1MgQ0FM
YXllcjsKK09CSkNfQ0xBU1MgV2ViR1BVTGF5ZXI7CitPQkpDX0NMQVNTIE1UTERldmljZTsKKwor
I2lmIFVTRShDQSkKKyNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXIuaCIKKyNlbmRpZgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEhvc3RXaW5kb3c7CitjbGFzcyBNZXRhbENvbW1hbmRR
dWV1ZTsKK2NsYXNzIE1ldGFsRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjsKK2NsYXNzIE1ldGFsRGVw
dGhTdGVuY2lsU3RhdGU7CitjbGFzcyBNZXRhbExpYnJhcnk7CitjbGFzcyBNZXRhbFJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcjsKK2NsYXNzIE1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZTsKK2NsYXNz
IE1ldGFsRHJhd2FibGU7CitjbGFzcyBNZXRhbEJ1ZmZlcjsKK2NsYXNzIE1ldGFsVGV4dHVyZTsK
K2NsYXNzIE1ldGFsVGV4dHVyZURlc2NyaXB0b3I7CisKK2NsYXNzIE1ldGFsRGV2aWNlIDogcHVi
bGljIFJlZkNvdW50ZWQ8TWV0YWxEZXZpY2U+IHsKK3B1YmxpYzoKKworICAgIC8vIENvbnRleHQg
Y3JlYXRpb24gYXR0cmlidXRlcy4KKyAgICBzdHJ1Y3QgQXR0cmlidXRlcyB7CisgICAgICAgIEF0
dHJpYnV0ZXMoKQorICAgICAgICA6IGFscGhhKHRydWUpCisgICAgICAgICwgZGVwdGgodHJ1ZSkK
KyAgICAgICAgLCBzdGVuY2lsKGZhbHNlKQorICAgICAgICAsIGFudGlhbGlhcyh0cnVlKQorICAg
ICAgICAsIHByZW11bHRpcGxpZWRBbHBoYSh0cnVlKQorICAgICAgICAsIGRldmljZVBpeGVsUmF0
aW8oMSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBhbHBoYTsKKyAgICAg
ICAgYm9vbCBkZXB0aDsKKyAgICAgICAgYm9vbCBzdGVuY2lsOworICAgICAgICBib29sIGFudGlh
bGlhczsKKyAgICAgICAgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGE7CisgICAgICAgIGZsb2F0IGRl
dmljZVBpeGVsUmF0aW87CisgICAgfTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1ldGFsRGV2
aWNlPiBjcmVhdGUoQXR0cmlidXRlcywgSG9zdFdpbmRvdyopOworICAgIH5NZXRhbERldmljZSgp
OworCisgICAgQ0FMYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Q0FMYXllcio+KG1fbGF5ZXIuZ2V0KCkpOyB9CisKKyAgICB2b2lkIHJlc2hhcGUo
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKworICAgIE1UTERldmljZSogZGV2aWNlKCkgeyByZXR1
cm4gbV9kZXZpY2UuZ2V0KCk7IH0KKyAgICBXZWJHUFVMYXllciogbGF5ZXIoKSB7IHJldHVybiBt
X2xheWVyLmdldCgpOyB9CisKKyAgICBQYXNzUmVmUHRyPE1ldGFsRHJhd2FibGU+IGdldEZyYW1l
YnVmZmVyKCk7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBFbnRyeSBwb2ludHMgZm9y
IFdlYkdQVS4KKyAgICAvLworCisgICAgUGFzc1JlZlB0cjxNZXRhbExpYnJhcnk+IGNyZWF0ZUxp
YnJhcnkoY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKTsKKyAgICBQYXNzUmVmUHRyPE1ldGFsQ29t
bWFuZFF1ZXVlPiBjcmVhdGVDb21tYW5kUXVldWUoKTsKKyAgICBQYXNzUmVmUHRyPE1ldGFsQnVm
ZmVyPiBjcmVhdGVCdWZmZXJGcm9tRGF0YShBcnJheUJ1ZmZlclZpZXcqKTsKKyAgICBQYXNzUmVm
UHRyPE1ldGFsVGV4dHVyZT4gY3JlYXRlVGV4dHVyZShNZXRhbFRleHR1cmVEZXNjcmlwdG9yKik7
CisKKyAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpOworICAgIHZvaWQgbWFya0xheWVyQ29t
cG9zaXRlZCgpOworICAgIGJvb2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3Q7CisvLyAgICB2b2lk
IGZvcmNlQ29udGV4dExvc3QoKTsKKworcHJpdmF0ZToKKyAgICBNZXRhbERldmljZShBdHRyaWJ1
dGVzLCBIb3N0V2luZG93Kik7CisKKy8vICAgIGludCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50
SGVpZ2h0OworCisgICAgUmV0YWluUHRyPFdlYkdQVUxheWVyPiBtX2xheWVyOworICAgIFJldGFp
blB0cjxNVExEZXZpY2U+IG1fZGV2aWNlOworLy8gICAgUmV0YWluUHRyPENBTWV0YWxEcmF3YWJs
ZT4gbV9jdXJyZW50RHJhd2FibGU7CisKKy8vICAgIFJldGFpblB0cjxNVExDb21tYW5kUXVldWU+
IG1fY29tbWFuZFF1ZXVlOworLy8gICAgUmV0YWluUHRyPE1UTExpYnJhcnk+IG1fZGVmYXVsdExp
YnJhcnk7CisvLyAgICBSZXRhaW5QdHI8TVRMUmVuZGVyUGlwZWxpbmVTdGF0ZT4gbV9waXBlbGlu
ZVN0YXRlOworLy8gICAgUmV0YWluUHRyPE1UTEJ1ZmZlcj4gbV92ZXJ0ZXhCdWZmZXI7CisvLyAg
ICBSZXRhaW5QdHI8TVRMRGVwdGhTdGVuY2lsU3RhdGU+IG1fZGVwdGhTdGF0ZTsKKy8vCisvLyAg
ICB1bnNpZ25lZCBtX3NhbXBsZUNvdW50OworCisgICAgQXR0cmlidXRlcyBtX2F0dHJzOworCisg
ICAgYm9vbCBtX2xheWVyQ29tcG9zaXRlZCB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL01ldGFsRGV2aWNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvTWV0YWxEZXZpY2UubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjI0NGRlZTM0ODQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvTWV0YWxEZXZpY2UubW0KQEAgLTAsMCArMSwxNDUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpbmNsdWRlICJNZXRhbERldmljZS5oIgorCisjaW1wb3J0ICJHcmFwaGljc0NvbnRl
eHRDRy5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiTWV0YWxDb21tYW5kUXVldWUu
aCIKKyNpbXBvcnQgIk1ldGFsRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oIgorI2ltcG9ydCAiTWV0
YWxEZXB0aFN0ZW5jaWxTdGF0ZS5oIgorI2ltcG9ydCAiTWV0YWxMaWJyYXJ5LmgiCisjaW1wb3J0
ICJNZXRhbFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgorI2ltcG9ydCAiTWV0YWxSZW5kZXJQ
aXBlbGluZVN0YXRlLmgiCisjaW1wb3J0ICJNZXRhbERyYXdhYmxlLmgiCisjaW1wb3J0ICJNZXRh
bEJ1ZmZlci5oIgorI2ltcG9ydCAiTWV0YWxUZXh0dXJlLmgiCisjaW1wb3J0ICJNZXRhbFRleHR1
cmVEZXNjcmlwdG9yLmgiCisjaW1wb3J0ICJXZWJHUFVMYXllci5oIgorCisjaW1wb3J0IDxNZXRh
bC9NZXRhbC5oPgorI2ltcG9ydCA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgorI2ltcG9ydCA8d3Rm
L0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVm
UHRyPE1ldGFsRGV2aWNlPiBNZXRhbERldmljZTo6Y3JlYXRlKE1ldGFsRGV2aWNlOjpBdHRyaWJ1
dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93KQoreworICAgIFJlZlB0cjxNZXRhbERl
dmljZT4gZGV2aWNlID0gYWRvcHRSZWYobmV3IE1ldGFsRGV2aWNlKGF0dHJzLCBob3N0V2luZG93
KSk7CisKKyAgICBpZiAoIWRldmljZS0+bV9kZXZpY2UpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwg
Ik1ldGFsRGV2aWNlOjpjcmVhdGUgLS0gbm8gZGV2aWNlIik7CisgICAgICAgIC8vIHJldHVybiBu
dWxscHRyOworICAgIH0KKworICAgIHJldHVybiBkZXZpY2UucmVsZWFzZSgpOworfQorCitNZXRh
bERldmljZTo6TWV0YWxEZXZpY2UoQXR0cmlidXRlcywgSG9zdFdpbmRvdyopCit7CisgICAgTE9H
KFdlYkdQVSwgIk1ldGFsRGV2aWNlOjpNZXRhbERldmljZSgpIik7CisKKyAgICBtX2RldmljZSA9
IChNVExEZXZpY2UqKU1UTENyZWF0ZVN5c3RlbURlZmF1bHREZXZpY2UoKTsKKworICAgIGlmICgh
bV9kZXZpY2UpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIk1ldGFsRGV2aWNlOjpNZXRhbERldmlj
ZSAtLSBjb3VsZCBub3QgY3JlYXRlIHRoZSBkZXZpY2UiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIG1fbGF5ZXIgPSBbW1dl
YkdQVUxheWVyIGFsbG9jXSBpbml0V2l0aE1ldGFsRGV2aWNlOnRoaXNdOworICAgIFttX2xheWVy
IHNldE9wYXF1ZTowXTsKKyNpZm5kZWYgTkRFQlVHCisgICAgW21fbGF5ZXIgc2V0TmFtZTpAIldl
YkdQVSBMYXllciJdOworI2VuZGlmCisKKyAgICBbbV9sYXllciBzZXREZXZpY2U6KGlkPE1UTERl
dmljZT4pbV9kZXZpY2UuZ2V0KCldOworICAgIFttX2xheWVyIHNldFBpeGVsRm9ybWF0Ok1UTFBp
eGVsRm9ybWF0QkdSQThVbm9ybV07CisgICAgW21fbGF5ZXIgc2V0RnJhbWVidWZmZXJPbmx5OllF
U107CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCitNZXRhbERldmljZTo6fk1l
dGFsRGV2aWNlKCkKK3sKKyAgICBMT0coV2ViR1BVLCAiTWV0YWxEZXZpY2U6On5NZXRhbERldmlj
ZSgpIik7Cit9CisKK3ZvaWQgTWV0YWxEZXZpY2U6Om1hcmtDb250ZXh0Q2hhbmdlZCgpCit7Cisg
ICAgbV9sYXllckNvbXBvc2l0ZWQgPSBmYWxzZTsKK30KKwordm9pZCBNZXRhbERldmljZTo6bWFy
a0xheWVyQ29tcG9zaXRlZCgpCit7CisgICAgbV9sYXllckNvbXBvc2l0ZWQgPSB0cnVlOworfQor
Citib29sIE1ldGFsRGV2aWNlOjpsYXllckNvbXBvc2l0ZWQoKSBjb25zdAoreworICAgIHJldHVy
biBtX2xheWVyQ29tcG9zaXRlZDsKK30KKwordm9pZCBNZXRhbERldmljZTo6cmVzaGFwZShpbnQg
d2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgaWYgKCFtX2RldmljZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKG1fbGF5ZXIpIHsKKyAgICAgICAgW21fbGF5ZXIgc2V0Qm91bmRzOkNHUmVj
dE1ha2UoMCwgMCwgd2lkdGgsIGhlaWdodCldOworICAgICAgICBbbV9sYXllciBzZXREcmF3YWJs
ZVNpemU6Q0dTaXplTWFrZSh3aWR0aCwgaGVpZ2h0KV07CisgICAgfQorCisgICAgLy8gRklYTUU6
IExvdHMgb2YgcmVzaGFwZSBzdHVmZiBzaG91bGQgZ28gaGVyZS4gU2VlIEdDM0QuCisKK30KKwor
UGFzc1JlZlB0cjxNZXRhbExpYnJhcnk+IE1ldGFsRGV2aWNlOjpjcmVhdGVMaWJyYXJ5KGNvbnN0
IFN0cmluZyYgc291cmNlQ29kZSkKK3sKKyAgICByZXR1cm4gTWV0YWxMaWJyYXJ5OjpjcmVhdGUo
dGhpcywgc291cmNlQ29kZSk7Cit9CisKK1Bhc3NSZWZQdHI8TWV0YWxDb21tYW5kUXVldWU+IE1l
dGFsRGV2aWNlOjpjcmVhdGVDb21tYW5kUXVldWUoKQoreworICAgIHJldHVybiBNZXRhbENvbW1h
bmRRdWV1ZTo6Y3JlYXRlKHRoaXMpOworfQorCitQYXNzUmVmUHRyPE1ldGFsRHJhd2FibGU+IE1l
dGFsRGV2aWNlOjpnZXRGcmFtZWJ1ZmZlcigpCit7CisgICAgcmV0dXJuIE1ldGFsRHJhd2FibGU6
OmNyZWF0ZU5leHREcmF3YWJsZSh0aGlzKTsKK30KKworUGFzc1JlZlB0cjxNZXRhbEJ1ZmZlcj4g
TWV0YWxEZXZpY2U6OmNyZWF0ZUJ1ZmZlckZyb21EYXRhKEFycmF5QnVmZmVyVmlldyogZGF0YSkK
K3sKKyAgICByZXR1cm4gTWV0YWxCdWZmZXI6OmNyZWF0ZSh0aGlzLCBkYXRhKTsKK30KKworUGFz
c1JlZlB0cjxNZXRhbFRleHR1cmU+IE1ldGFsRGV2aWNlOjpjcmVhdGVUZXh0dXJlKE1ldGFsVGV4
dHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIE1ldGFsVGV4dHVyZTo6
Y3JlYXRlKHRoaXMtPmRldmljZSgpLCBkZXNjcmlwdG9yLT50ZXh0dXJlRGVzY3JpcHRvcigpKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWV0YWxEcmF3YWJsZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWV0YWxEcmF3YWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45OTUxYzhjNmQxMwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01ldGFsRHJhd2FibGUuaApAQCAt
MCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBNVExEcmF3YWJsZTsKK09CSkNfQ0xBU1Mg
TVRMVGV4dHVyZTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZXRhbERldmljZTsK
K2NsYXNzIE1ldGFsVGV4dHVyZTsKKworY2xhc3MgTWV0YWxEcmF3YWJsZSA6IHB1YmxpYyBSZWZD
b3VudGVkPE1ldGFsRHJhd2FibGU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
ZXRhbERyYXdhYmxlPiBjcmVhdGVOZXh0RHJhd2FibGUoTWV0YWxEZXZpY2UqKTsKKyAgICB+TWV0
YWxEcmF3YWJsZSgpOworCisgICAgdm9pZCByZWxlYXNlKCk7CisKKyAgICBNVExEcmF3YWJsZSog
ZHJhd2FibGUoKSB7IHJldHVybiBtX2RyYXdhYmxlLmdldCgpOyB9CisgICAgTVRMVGV4dHVyZSog
dGV4dHVyZSgpOyAvLyBGSVhNRTogb25seSB0aGUgZnJhbWVidWZmZXIgaGFzIHRoaXMsIG5vdCBh
bGwgZHJhd2FibGVzLgorCitwcml2YXRlOgorICAgIE1ldGFsRHJhd2FibGUoTWV0YWxEZXZpY2Uq
KTsKKworICAgIFJldGFpblB0cjxNVExEcmF3YWJsZT4gbV9kcmF3YWJsZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvTWV0YWxEcmF3YWJsZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL01ldGFsRHJhd2FibGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLjFiYjVkOWJjZjRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWV0YWxEcmF3YWJsZS5tbQpAQCAtMCwwICsx
LDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiTWV0YWxEcmF3YWJsZS5oIgorCisjaW1wb3J0
ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJNZXRhbERldmljZS5oIgorI2ltcG9ydCAiTWV0YWxUZXh0
dXJlLmgiCisKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisjaW1wb3J0IDxRdWFydHpDb3JlL1F1
YXJ0ekNvcmUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE1ldGFsRHJh
d2FibGU+IE1ldGFsRHJhd2FibGU6OmNyZWF0ZU5leHREcmF3YWJsZShNZXRhbERldmljZSogZGV2
aWNlKQoreworICAgIFJlZlB0cjxNZXRhbERyYXdhYmxlPiBkcmF3YWJsZSA9IGFkb3B0UmVmKG5l
dyBNZXRhbERyYXdhYmxlKGRldmljZSkpOworICAgIHJldHVybiBkcmF3YWJsZS5yZWxlYXNlKCk7
Cit9CisKK01ldGFsRHJhd2FibGU6Ok1ldGFsRHJhd2FibGUoTWV0YWxEZXZpY2UqIGRldmljZSkK
K3sKKyAgICBMT0coV2ViR1BVLCAiTWV0YWxEcmF3YWJsZTo6TWV0YWxEcmF3YWJsZSgpIik7CisK
KyAgICBpZiAoIWRldmljZSB8fCAhZGV2aWNlLT5sYXllcigpKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2RyYXdhYmxlID0gKE1UTERyYXdhYmxlKilbZGV2aWNlLT5sYXllcigpIG5leHREcmF3
YWJsZV07CisgICAgaWYgKCFtX2RyYXdhYmxlKQorICAgICAgICBMT0coV2ViR1BVLCAiTWV0YWxE
cmF3YWJsZTo6TWV0YWxEcmF3YWJsZSgpIC0gZmFpbGVkIHRvIGdldCBuZXh0RHJhd2FibGUhIik7
Cit9CisKK01ldGFsRHJhd2FibGU6On5NZXRhbERyYXdhYmxlKCkKK3sKKyAgICBMT0coV2ViR1BV
LCAiTWV0YWxEcmF3YWJsZTo6fk1ldGFsRHJhd2FibGUoKSIpOworfQorCit2b2lkIE1ldGFsRHJh
d2FibGU6OnJlbGVhc2UoKQoreworICAgIExPRyhXZWJHUFUsICJNZXRhbERyYXdhYmxlOjpyZWxl
YXNlKCkiKTsKKyAgICBtX2RyYXdhYmxlID0gbnVsbHB0cjsKK30KKworTVRMVGV4dHVyZSogTWV0
YWxEcmF3YWJsZTo6dGV4dHVyZSgpCit7CisgICAgaWYgKCFtX2RyYXdhYmxlKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gKE1UTFRleHR1cmUqKVsoaWQ8Q0FNZXRhbERyYXdh
YmxlPiltX2RyYXdhYmxlLmdldCgpIHRleHR1cmVdOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9N
ZXRhbEVudW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZXRh
bEVudW1zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjk2YTc3ZmJh
NTU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvTWV0YWxFbnVtcy5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2VudW0gY2xhc3MgTWV0YWxDb21wYXJlRnVuY3Rpb24geworICAgIE5ldmVyID0g
MCwKKyAgICBMZXNzID0gMSwKKyAgICBFcXVhbCA9IDIsCisgICAgTGVzc0VxdWFsID0gMywKKyAg
ICBHcmVhdGVyID0gNCwKKyAgICBOb3RFcXVhbCA9IDUsCisgICAgR3JlYXRlckVxdWFsID0gNiwK
KyAgICBBbHdheXMgPSA3Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01ldGFsRnVuY3Rpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01ldGFsRnVuY3Rpb24u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjFmMTFkYTZiY2QKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9N
ZXRhbEZ1bmN0aW9uLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitPQkpDX0NMQVNTIE1UTEZ1bmN0
aW9uOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1ldGFsTGlicmFyeTsKKworY2xh
c3MgTWV0YWxGdW5jdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE1ldGFsRnVuY3Rpb24+IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXRhbEZ1bmN0aW9uPiBjcmVhdGUoTWV0YWxM
aWJyYXJ5KiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICB+TWV0YWxGdW5jdGlvbigpOworCisg
ICAgU3RyaW5nIG5hbWUoKSBjb25zdDsKKworICAgIE1UTEZ1bmN0aW9uKiBmdW5jdGlvbigpIHsg
cmV0dXJuIG1fZnVuY3Rpb24uZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBNZXRhbEZ1bmN0aW9u
KE1ldGFsTGlicmFyeSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICBSZXRhaW5QdHI8TVRM
RnVuY3Rpb24+IG1fZnVuY3Rpb247Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZXRh
bEZ1bmN0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWV0
YWxGdW5jdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDE4
ZjEyZDA5NDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9NZXRhbEZ1bmN0aW9uLm1tCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpbmNsdWRlICJNZXRhbEZ1bmN0aW9uLmgiCisKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBv
cnQgIk1ldGFsRGV2aWNlLmgiCisjaW1wb3J0ICJNZXRhbExpYnJhcnkuaCIKKworI2ltcG9ydCA8
TWV0YWwvTWV0YWwuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE1ldGFs
RnVuY3Rpb24+IE1ldGFsRnVuY3Rpb246OmNyZWF0ZShNZXRhbExpYnJhcnkqIGxpYnJhcnksIGNv
bnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBSZWZQdHI8TWV0YWxGdW5jdGlvbj4gZnVuY3Rpb24g
PSBhZG9wdFJlZihuZXcgTWV0YWxGdW5jdGlvbihsaWJyYXJ5LCBuYW1lKSk7CisgICAgaWYgKCFm
dW5jdGlvbi0+ZnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IGZ1bmN0aW9uLnJlbGVhc2UoKTsKK30KKworTWV0YWxGdW5jdGlvbjo6TWV0YWxGdW5jdGlvbihN
ZXRhbExpYnJhcnkqIGxpYnJhcnksIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBMT0coV2Vi
R1BVLCAiTWV0YWxGdW5jdGlvbjo6TWV0YWxGdW5jdGlvbigpIik7CisKKyAgICBpZiAoIWxpYnJh
cnkgfHwgIWxpYnJhcnktPmxpYnJhcnkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mdW5j
dGlvbiA9IChNVExGdW5jdGlvbiopW2xpYnJhcnktPmxpYnJhcnkoKSBuZXdGdW5jdGlvbldpdGhO
YW1lOm5hbWVdOworfQorCitNZXRhbEZ1bmN0aW9uOjp+TWV0YWxGdW5jdGlvbigpCit7CisgICAg
TE9HKFdlYkdQVSwgIk1ldGFsRnVuY3Rpb246On5NZXRhbEZ1bmN0aW9uKCkiKTsKK30KKworU3Ry
aW5nIE1ldGFsRnVuY3Rpb246Om5hbWUoKSBjb25zdAoreworICAgIGlmICghbV9mdW5jdGlvbikK
KyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4gW21fZnVuY3Rpb24g
bmFtZV07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01ldGFsTGlicmFyeS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWV0YWxMaWJyYXJ5LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjZkMzAxNmNiYmI0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWV0YWxMaWJyYXJ5LmgK
QEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCitPQkpDX0NMQVNTIE1UTExpYnJhcnk7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgTWV0YWxEZXZpY2U7CitjbGFzcyBNZXRhbEZ1bmN0aW9uOwor
CitjbGFzcyBNZXRhbExpYnJhcnkgOiBwdWJsaWMgUmVmQ291bnRlZDxNZXRhbExpYnJhcnk+IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXRhbExpYnJhcnk+IGNyZWF0ZShNZXRh
bERldmljZSosIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSk7CisgICAgfk1ldGFsTGlicmFyeSgp
OworCisgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRMYWJlbChjb25zdCBT
dHJpbmcmKTsKKworICAgIFZlY3RvcjxTdHJpbmc+IGZ1bmN0aW9uTmFtZXMoKTsKKworICAgIFBh
c3NSZWZQdHI8TWV0YWxGdW5jdGlvbj4gZnVuY3Rpb25XaXRoTmFtZShjb25zdCBTdHJpbmcmKTsK
KworICAgIE1UTExpYnJhcnkqIGxpYnJhcnkoKSB7IHJldHVybiBtX2xpYnJhcnkuZ2V0KCk7IH0K
KworcHJpdmF0ZToKKyAgICBNZXRhbExpYnJhcnkoTWV0YWxEZXZpY2UqLCBjb25zdCBTdHJpbmcm
IHNvdXJjZUNvZGUpOworCisgICAgUmV0YWluUHRyPE1UTExpYnJhcnk+IG1fbGlicmFyeTsKK307
CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01ldGFsTGlicmFyeS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01ldGFsTGlicmFyeS5tbQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNGJkMDlkZjc0YmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZXRhbExpYnJhcnkubW0K
QEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJNZXRhbExpYnJhcnkuaCIK
KworI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiTWV0YWxEZXZpY2UuaCIKKyNpbXBvcnQg
Ik1ldGFsRnVuY3Rpb24uaCIKKworI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE1ldGFsTGlicmFyeT4gTWV0YWxMaWJyYXJ5OjpjcmVh
dGUoTWV0YWxEZXZpY2UqIGRldmljZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKQoreworICAg
IFJlZlB0cjxNZXRhbExpYnJhcnk+IGxpYnJhcnkgPSBhZG9wdFJlZihuZXcgTWV0YWxMaWJyYXJ5
KGRldmljZSwgc291cmNlQ29kZSkpOworICAgIHJldHVybiBsaWJyYXJ5LnJlbGVhc2UoKTsKK30K
KworTWV0YWxMaWJyYXJ5OjpNZXRhbExpYnJhcnkoTWV0YWxEZXZpY2UqIGRldmljZSwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VDb2RlKQoreworICAgIExPRyhXZWJHUFUsICJNZXRhbExpYnJhcnk6Ok1l
dGFsTGlicmFyeSgpIik7CisKKyAgICBpZiAoIWRldmljZSB8fCAhZGV2aWNlLT5kZXZpY2UoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgTlNFcnJvciogZXJyb3IgPSBbW05TRXJyb3IgYWxsb2Nd
IGluaXRdOworICAgIG1fbGlicmFyeSA9IChNVExMaWJyYXJ5KilbZGV2aWNlLT5kZXZpY2UoKSBu
ZXdMaWJyYXJ5V2l0aFNvdXJjZTpzb3VyY2VDb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOm5pbAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJv
cjomZXJyb3JdOworICAgIGlmICghbV9saWJyYXJ5KSB7CisgICAgICAgIExPRyhXZWJHUFUsICJD
b21waWxhdGlvbiBlcnJvcjogJXMiLCBbW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSBVVEY4
U3RyaW5nXSk7CisgICAgfQorfQorCitNZXRhbExpYnJhcnk6On5NZXRhbExpYnJhcnkoKQorewor
ICAgIExPRyhXZWJHUFUsICJNZXRhbExpYnJhcnk6On5NZXRhbExpYnJhcnkoKSIpOworfQorCitT
dHJpbmcgTWV0YWxMaWJyYXJ5OjpsYWJlbCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2xpYnJhcnkp
CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgcmV0dXJuIFttX2xpYnJhcnkg
bGFiZWxdOworfQorCit2b2lkIE1ldGFsTGlicmFyeTo6c2V0TGFiZWwoY29uc3QgU3RyaW5nJiBs
YWJlbCkKK3sKKyAgICBpZiAoIW1fbGlicmFyeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW21f
bGlicmFyeSBzZXRMYWJlbDpsYWJlbF07Cit9CisKK1ZlY3RvcjxTdHJpbmc+IE1ldGFsTGlicmFy
eTo6ZnVuY3Rpb25OYW1lcygpCit7CisgICAgaWYgKCFtX2xpYnJhcnkpCisgICAgICAgIHJldHVy
biBWZWN0b3I8U3RyaW5nPigpOworCisgICAgVmVjdG9yPFN0cmluZz4gbmFtZXM7CisKKyAgICBO
U0FycmF5PE5TU3RyaW5nKj4qIGZ1bmN0aW9uTmFtZXMgPSBbbV9saWJyYXJ5IGZ1bmN0aW9uTmFt
ZXNdOworICAgIGZvciAoTlNTdHJpbmcqIHN0cmluZyBpbiBmdW5jdGlvbk5hbWVzKQorICAgICAg
ICBuYW1lcy5hcHBlbmQoc3RyaW5nKTsKKworICAgIHJldHVybiBuYW1lczsKK30KKworUGFzc1Jl
ZlB0cjxNZXRhbEZ1bmN0aW9uPiBNZXRhbExpYnJhcnk6OmZ1bmN0aW9uV2l0aE5hbWUoY29uc3Qg
U3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBNZXRhbEZ1bmN0aW9uOjpjcmVhdGUodGhpcywg
bmFtZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01ldGFsUmVuZGVyQ29t
bWFuZEVuY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOGE4
YWEyNDJjNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9NZXRhbFJlbmRlckNvbW1hbmRFbmNvZGVyLmgKQEAgLTAsMCArMSw2MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CisKK09CSkNfQ0xBU1MgTVRMUmVuZGVyQ29tbWFuZEVuY29kZXI7CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgTWV0YWxDb21tYW5kQnVmZmVyOworY2xhc3MgTWV0YWxEZXB0aFN0
ZW5jaWxTdGF0ZTsKK2NsYXNzIE1ldGFsUmVuZGVyUGFzc0Rlc2NyaXB0b3I7CitjbGFzcyBNZXRh
bFJlbmRlclBpcGVsaW5lU3RhdGU7CitjbGFzcyBNZXRhbEJ1ZmZlcjsKKworY2xhc3MgTWV0YWxS
ZW5kZXJDb21tYW5kRW5jb2RlciA6IHB1YmxpYyBSZWZDb3VudGVkPE1ldGFsUmVuZGVyQ29tbWFu
ZEVuY29kZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXRhbFJlbmRlckNv
bW1hbmRFbmNvZGVyPiBjcmVhdGUoTWV0YWxDb21tYW5kQnVmZmVyKiwgTWV0YWxSZW5kZXJQYXNz
RGVzY3JpcHRvciopOworICAgIH5NZXRhbFJlbmRlckNvbW1hbmRFbmNvZGVyKCk7CisKKyAgICB2
b2lkIHNldFJlbmRlclBpcGVsaW5lU3RhdGUoTWV0YWxSZW5kZXJQaXBlbGluZVN0YXRlKik7Cisg
ICAgdm9pZCBzZXREZXB0aFN0ZW5jaWxTdGF0ZShNZXRhbERlcHRoU3RlbmNpbFN0YXRlKik7Cisg
ICAgdm9pZCBzZXRWZXJ0ZXhCdWZmZXIoTWV0YWxCdWZmZXIqIGJ1ZmZlciwgdW5zaWduZWQgaW50
IG9mZnNldCwgdW5zaWduZWQgaW50IGluZGV4KTsKKyAgICB2b2lkIHNldEZyYWdtZW50QnVmZmVy
KE1ldGFsQnVmZmVyKiBidWZmZXIsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBp
bmRleCk7CisgICAgdm9pZCBkcmF3UHJpbWl0aXZlcyh1bnNpZ25lZCBpbnQgdHlwZSwgdW5zaWdu
ZWQgaW50IHN0YXJ0LCB1bnNpZ25lZCBpbnQgY291bnQpOworICAgIHZvaWQgZW5kRW5jb2Rpbmco
KTsKKworICAgIE1UTFJlbmRlckNvbW1hbmRFbmNvZGVyKiByZW5kZXJDb21tYW5kRW5jb2Rlcigp
IHsgcmV0dXJuIG1fcmVuZGVyQ29tbWFuZEVuY29kZXIuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAg
ICBNZXRhbFJlbmRlckNvbW1hbmRFbmNvZGVyKE1ldGFsQ29tbWFuZEJ1ZmZlciosIE1ldGFsUmVu
ZGVyUGFzc0Rlc2NyaXB0b3IqKTsKKworICAgIFJldGFpblB0cjxNVExSZW5kZXJDb21tYW5kRW5j
b2Rlcj4gbV9yZW5kZXJDb21tYW5kRW5jb2RlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
TWV0YWxSZW5kZXJDb21tYW5kRW5jb2Rlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL01ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXIubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjZhMDUyODE0ZmI4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWV0YWxSZW5kZXJDb21tYW5k
RW5jb2Rlci5tbQpAQCAtMCwwICsxLDExMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIk1ldGFs
UmVuZGVyQ29tbWFuZEVuY29kZXIuaCIKKworI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAi
TWV0YWxDb21tYW5kQnVmZmVyLmgiCisjaW1wb3J0ICJNZXRhbERlcHRoU3RlbmNpbFN0YXRlLmgi
CisjaW1wb3J0ICJNZXRhbFJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCisjaW1wb3J0ICJNZXRhbFJl
bmRlclBpcGVsaW5lU3RhdGUuaCIKKyNpbXBvcnQgIk1ldGFsQnVmZmVyLmgiCisKKyNpbXBvcnQg
PE1ldGFsL01ldGFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxNZXRh
bFJlbmRlckNvbW1hbmRFbmNvZGVyPiBNZXRhbFJlbmRlckNvbW1hbmRFbmNvZGVyOjpjcmVhdGUo
TWV0YWxDb21tYW5kQnVmZmVyKiBidWZmZXIsIE1ldGFsUmVuZGVyUGFzc0Rlc2NyaXB0b3IqIGRl
c2NyaXB0b3IpCit7CisgICAgUmVmUHRyPE1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXI+IGNvbW1h
bmRFbmNvZGVyID0gYWRvcHRSZWYobmV3IE1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXIoYnVmZmVy
LCBkZXNjcmlwdG9yKSk7CisgICAgcmV0dXJuIGNvbW1hbmRFbmNvZGVyLnJlbGVhc2UoKTsKK30K
KworTWV0YWxSZW5kZXJDb21tYW5kRW5jb2Rlcjo6TWV0YWxSZW5kZXJDb21tYW5kRW5jb2RlcihN
ZXRhbENvbW1hbmRCdWZmZXIqIGJ1ZmZlciwgTWV0YWxSZW5kZXJQYXNzRGVzY3JpcHRvciogZGVz
Y3JpcHRvcikKK3sKKyAgICBMT0coV2ViR1BVLCAiTWV0YWxSZW5kZXJDb21tYW5kRW5jb2Rlcjo6
TWV0YWxSZW5kZXJDb21tYW5kRW5jb2RlcigpIik7CisKKyAgICBpZiAoIWJ1ZmZlciB8fCAhYnVm
ZmVyLT5jb21tYW5kQnVmZmVyKCkgfHwgIWRlc2NyaXB0b3IgfHwgIWRlc2NyaXB0b3ItPnJlbmRl
clBhc3NEZXNjcmlwdG9yKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVuZGVyQ29tbWFu
ZEVuY29kZXIgPSAoTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIqKVtidWZmZXItPmNvbW1hbmRCdWZm
ZXIoKSByZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yOmRlc2NyaXB0b3ItPnJlbmRl
clBhc3NEZXNjcmlwdG9yKCldOworfQorCitNZXRhbFJlbmRlckNvbW1hbmRFbmNvZGVyOjp+TWV0
YWxSZW5kZXJDb21tYW5kRW5jb2RlcigpCit7CisgICAgTE9HKFdlYkdQVSwgIk1ldGFsUmVuZGVy
Q29tbWFuZEVuY29kZXI6On5NZXRhbFJlbmRlckNvbW1hbmRFbmNvZGVyKCkiKTsKK30KKwordm9p
ZCBNZXRhbFJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRSZW5kZXJQaXBlbGluZVN0YXRlKE1ldGFs
UmVuZGVyUGlwZWxpbmVTdGF0ZSogcGlwZWxpbmVTdGF0ZSkKK3sKKyAgICBpZiAoIW1fcmVuZGVy
Q29tbWFuZEVuY29kZXIgfHwgIXBpcGVsaW5lU3RhdGUpCisgICAgICAgIHJldHVybjsKKworICAg
IFttX3JlbmRlckNvbW1hbmRFbmNvZGVyIHNldFJlbmRlclBpcGVsaW5lU3RhdGU6c3RhdGljX2Nh
c3Q8aWQ8TVRMUmVuZGVyUGlwZWxpbmVTdGF0ZT4+KHBpcGVsaW5lU3RhdGUtPnJlbmRlclBpcGVs
aW5lU3RhdGUoKSldOworfQorCit2b2lkIE1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldERl
cHRoU3RlbmNpbFN0YXRlKE1ldGFsRGVwdGhTdGVuY2lsU3RhdGUqIGRlcHRoU3RlbmNpbFN0YXRl
KQoreworICAgIGlmICghbV9yZW5kZXJDb21tYW5kRW5jb2RlciB8fCAhZGVwdGhTdGVuY2lsU3Rh
dGUpCisgICAgICAgIHJldHVybjsKKworICAgIFttX3JlbmRlckNvbW1hbmRFbmNvZGVyIHNldERl
cHRoU3RlbmNpbFN0YXRlOnN0YXRpY19jYXN0PGlkPE1UTERlcHRoU3RlbmNpbFN0YXRlPj4oZGVw
dGhTdGVuY2lsU3RhdGUtPmRlcHRoU3RlbmNpbFN0YXRlKCkpXTsKK30KKwordm9pZCBNZXRhbFJl
bmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWZXJ0ZXhCdWZmZXIoTWV0YWxCdWZmZXIqIGJ1ZmZlciwg
dW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGluZGV4KQoreworICAgIGlmICghbV9y
ZW5kZXJDb21tYW5kRW5jb2RlciB8fCAhYnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBb
bV9yZW5kZXJDb21tYW5kRW5jb2RlciBzZXRWZXJ0ZXhCdWZmZXI6c3RhdGljX2Nhc3Q8aWQ8TVRM
QnVmZmVyPj4oYnVmZmVyLT5idWZmZXIoKSkgb2Zmc2V0Om9mZnNldCBhdEluZGV4OmluZGV4XTsK
K30KKwordm9pZCBNZXRhbFJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudEJ1ZmZlcihN
ZXRhbEJ1ZmZlciogYnVmZmVyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgaW5k
ZXgpCit7CisgICAgaWYgKCFtX3JlbmRlckNvbW1hbmRFbmNvZGVyIHx8ICFidWZmZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIFttX3JlbmRlckNvbW1hbmRFbmNvZGVyIHNldEZyYWdtZW50QnVm
ZmVyOnN0YXRpY19jYXN0PGlkPE1UTEJ1ZmZlcj4+KGJ1ZmZlci0+YnVmZmVyKCkpIG9mZnNldDpv
ZmZzZXQgYXRJbmRleDppbmRleF07Cit9CisKK3ZvaWQgTWV0YWxSZW5kZXJDb21tYW5kRW5jb2Rl
cjo6ZHJhd1ByaW1pdGl2ZXModW5zaWduZWQgaW50IHR5cGUsIHVuc2lnbmVkIGludCBzdGFydCwg
dW5zaWduZWQgaW50IGNvdW50KQoreworICAgIGlmICghbV9yZW5kZXJDb21tYW5kRW5jb2RlciB8
fCAhY291bnQpCisgICAgICAgIHJldHVybjsKKworICAgIFttX3JlbmRlckNvbW1hbmRFbmNvZGVy
IGRyYXdQcmltaXRpdmVzOnN0YXRpY19jYXN0PE1UTFByaW1pdGl2ZVR5cGU+KHR5cGUpIHZlcnRl
eFN0YXJ0OnN0YXJ0IHZlcnRleENvdW50OmNvdW50XTsKK30KKwordm9pZCBNZXRhbFJlbmRlckNv
bW1hbmRFbmNvZGVyOjplbmRFbmNvZGluZygpCit7CisgICAgaWYgKCFtX3JlbmRlckNvbW1hbmRF
bmNvZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBbbV9yZW5kZXJDb21tYW5kRW5jb2RlciBl
bmRFbmNvZGluZ107Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01ldGFsUmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9NZXRhbFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42Yzg2YmM1Yjg4MQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01ldGFsUmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitPQkpDX0NMQVNTIE1UTFJl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBNZXRhbFRleHR1cmU7CisKK2NsYXNzIE1ldGFsUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8TWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3I+IHsKK3B1YmxpYzoKKyAgICB+TWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0
b3IoKTsKKworICAgIHVuc2lnbmVkIGxvbmcgbG9hZEFjdGlvbigpIGNvbnN0OworICAgIHZvaWQg
c2V0TG9hZEFjdGlvbih1bnNpZ25lZCBsb25nKTsKKworICAgIHVuc2lnbmVkIGxvbmcgc3RvcmVB
Y3Rpb24oKSBjb25zdDsKKyAgICB2b2lkIHNldFN0b3JlQWN0aW9uKHVuc2lnbmVkIGxvbmcpOwor
CisgICAgdm9pZCBzZXRUZXh0dXJlKFBhc3NSZWZQdHI8TWV0YWxUZXh0dXJlPik7CisKKyAgICBN
VExSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IqIHJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
LmdldCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBNZXRhbFJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvcihNVExSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IqKTsKKworcHJpdmF0ZToK
KworICAgIFJldGFpblB0cjxNVExSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I+IG1fcmVu
ZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZXRhbFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3Jp
cHRvci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTJhMGE1YjYw
MzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9NZXRhbFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5tbQpAQCAtMCwwICsxLDg5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3IuaCIKKworI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiTWV0YWxUZXh0dXJlLmgi
CisKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTWV0
YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6Ok1ldGFsUmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yKE1UTFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciogYXR0YWNobWVu
dERlc2NyaXB0b3IpCit7CisgICAgTE9HKFdlYkdQVSwgIk1ldGFsUmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yOjpNZXRhbFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcigpIik7CisK
KyAgICBtX3JlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciA9IGF0dGFjaG1lbnREZXNjcmlw
dG9yOworfQorCitNZXRhbFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6fk1ldGFsUmVu
ZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKCkKK3sKKyAgICBMT0coV2ViR1BVLCAiTWV0YWxS
ZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6On5NZXRhbFJlbmRlclBhc3NBdHRhY2htZW50
RGVzY3JpcHRvcigpIik7Cit9CisKK3Vuc2lnbmVkIGxvbmcgTWV0YWxSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3I6OmxvYWRBY3Rpb24oKSBjb25zdAoreworICAgIGlmICghbV9yZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiAwOyAvLyBGSVhNRTogVGhl
cmUgaXMgcHJvYmFibHkgYSByZWFsIHZhbHVlIGZvciB0aGlzLgorCisgICAgcmV0dXJuIFttX3Jl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciBsb2FkQWN0aW9uXTsKK30KKwordm9pZCBNZXRh
bFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0TG9hZEFjdGlvbih1bnNpZ25lZCBs
b25nIG5ld0xvYWRBY3Rpb24pCit7CisgICAgaWYgKCFtX3JlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgW21fcmVuZGVyUGFzc0F0dGFjaG1lbnRE
ZXNjcmlwdG9yIHNldExvYWRBY3Rpb246c3RhdGljX2Nhc3Q8TVRMTG9hZEFjdGlvbj4obmV3TG9h
ZEFjdGlvbildOworfQorCit1bnNpZ25lZCBsb25nIE1ldGFsUmVuZGVyUGFzc0F0dGFjaG1lbnRE
ZXNjcmlwdG9yOjpzdG9yZUFjdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRlclBhc3NB
dHRhY2htZW50RGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIDA7IC8vIEZJWE1FOiBUaGVyZSBp
cyBwcm9iYWJseSBhIHJlYWwgdmFsdWUgZm9yIHRoaXMuCisKKyAgICByZXR1cm4gW21fcmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yIHN0b3JlQWN0aW9uXTsKK30KKwordm9pZCBNZXRhbFJl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0U3RvcmVBY3Rpb24odW5zaWduZWQgbG9u
ZyBuZXdTdG9yZUFjdGlvbikKK3sKKyAgICBpZiAoIW1fcmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBbbV9yZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3Igc2V0U3RvcmVBY3Rpb246c3RhdGljX2Nhc3Q8TVRMU3RvcmVBY3Rpb24+KG5ld1N0
b3JlQWN0aW9uKV07Cit9CisKK3ZvaWQgTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0
b3I6OnNldFRleHR1cmUoUGFzc1JlZlB0cjxNZXRhbFRleHR1cmU+IHRleHR1cmUpCit7CisgICAg
aWYgKCFtX3JlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIFttX3JlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciBzZXRUZXh0dXJlOnN0
YXRpY19jYXN0PGlkPE1UTFRleHR1cmU+Pih0ZXh0dXJlLT50ZXh0dXJlKCkpXTsKK30KKyAgICAK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL01ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01ldGFsUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uY2Y5NTU5OTM1MDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWV0YWxSZW5k
ZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCIKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworCitPQkpDX0NMQVNTIE1UTFJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIE1ldGFsVGV4dHVyZTsKKworY2xhc3MgTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvciA6IHB1YmxpYyBNZXRhbFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcj4gY3JlYXRlKE1UTFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yKik7CisgICAgfk1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3Io
KTsKKworICAgIFZlY3RvcjxmbG9hdD4gY2xlYXJDb2xvcigpIGNvbnN0OworICAgIHZvaWQgc2V0
Q2xlYXJDb2xvcihjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CisKKyAgICBNVExSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvciogcmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yKE1UTFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKik7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZXRh
bFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hZDUyNDgxNDM1MQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01ldGFsUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IubW0KQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgIk1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCIKKworI2lt
cG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiTWV0YWxUZXh0dXJlLmgiCisKKyNpbXBvcnQgPE1l
dGFsL01ldGFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxNZXRhbFJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBNZXRhbFJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yOjpjcmVhdGUoTVRMUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IqIGNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IpCit7CisgICAgUmVmUHRyPE1ldGFs
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGRlc2NyaXB0b3IgPSBhZG9wdFJl
ZihuZXcgTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcihjb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yKSk7CisgICAgcmV0dXJuIGRlc2NyaXB0b3IucmVsZWFzZSgpOworfQor
CitNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpNZXRhbFJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKE1UTFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yKiBjb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKQorICAgIDogTWV0YWxSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3IoY29sb3JBdHRhY2htZW50RGVzY3JpcHRvcikKK3sKKyAg
ICBMT0coV2ViR1BVLCAiTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6
TWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpIik7Cit9CisKK01ldGFs
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6On5NZXRhbFJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yKCkKK3sKKyAgICBMT0coV2ViR1BVLCAiTWV0YWxSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6fk1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IoKSIpOworfQorCitNVExSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvciogTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6cmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKSBjb25zdAoreworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxNVExSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcio+KHJlbmRlclBh
c3NBdHRhY2htZW50RGVzY3JpcHRvcigpKTsKK30KKworVmVjdG9yPGZsb2F0PiBNZXRhbFJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpjbGVhckNvbG9yKCkgY29uc3QKK3sKKyAg
ICBNVExSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogY29sb3JBdHRhY2htZW50
RGVzY3JpcHRvciA9IHJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCk7CisgICAg
aWYgKCFjb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKQorICAgICAgICByZXR1cm4gVmVjdG9yPGZs
b2F0PigpOworCisgICAgTVRMQ2xlYXJDb2xvciBjb2xvciA9IFtjb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yIGNsZWFyQ29sb3JdOworICAgIHJldHVybiBWZWN0b3I8ZmxvYXQ+KHtzdGF0aWNfY2Fz
dDxmbG9hdD4oY29sb3IucmVkKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLmdyZWVuKSwgc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLmJsdWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4oY29sb3IuYWxw
aGEpfSk7Cit9CisKK3ZvaWQgTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cjo6c2V0Q2xlYXJDb2xvcihjb25zdCBWZWN0b3I8ZmxvYXQ+JiBuZXdDbGVhckNvbG9yKQorewor
ICAgIE1UTFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBjb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yID0gcmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKTsKKyAg
ICBpZiAoIWNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgfHwgbmV3Q2xlYXJDb2xvci5zaXplKCkg
IT0gNCkKKyAgICAgICAgcmV0dXJuOworCisgICAgTVRMQ2xlYXJDb2xvciBjbGVhckNvbG9yID0g
TVRMQ2xlYXJDb2xvck1ha2UobmV3Q2xlYXJDb2xvclswXSwgbmV3Q2xlYXJDb2xvclsxXSwgbmV3
Q2xlYXJDb2xvclsyXSwgbmV3Q2xlYXJDb2xvclszXSk7CisgICAgW2NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3Igc2V0Q2xlYXJDb2xvcjpjbGVhckNvbG9yXTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2ht
ZW50RGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5j
ZWFlZTcxNDE3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL01ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaApA
QCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXRhbFJlbmRlclBhc3NBdHRhY2htZW50
RGVzY3JpcHRvci5oIgorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCitPQkpDX0NMQVNTIE1UTFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnRE
ZXNjcmlwdG9yOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1ldGFsVGV4dHVyZTsK
KworY2xhc3MgTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1Ymxp
YyBNZXRhbFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8TWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcj4g
Y3JlYXRlKE1UTFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKik7CisgICAgfk1l
dGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoKTsKKworICAgIGRvdWJsZSBj
bGVhckRlcHRoKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDbGVhckRlcHRoKGRvdWJsZSk7CisKKyAg
ICBNVExSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogcmVuZGVyUGFzc0RlcHRo
QXR0YWNobWVudERlc2NyaXB0b3IoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBNZXRhbFJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKE1UTFJlbmRlclBhc3NEZXB0aEF0dGFjaG1l
bnREZXNjcmlwdG9yKik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01ldGFsUmVuZGVyUGFz
c0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9NZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mY2M1ZjI4MmZmZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01l
dGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IubW0KQEAgLTAsMCArMSw3NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2luY2x1ZGUgIk1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3IuaCIKKworI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiTWV0YWxUZXh0dXJl
LmgiCisKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
UGFzc1JlZlB0cjxNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yPiBNZXRh
bFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjpjcmVhdGUoTVRMUmVuZGVyUGFz
c0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqIGRlcHRoQXR0YWNobWVudERlc2NyaXB0b3IpCit7
CisgICAgUmVmUHRyPE1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I+IGRl
c2NyaXB0b3IgPSBhZG9wdFJlZihuZXcgTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvcihkZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKSk7CisgICAgcmV0dXJuIGRlc2NyaXB0
b3IucmVsZWFzZSgpOworfQorCitNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yOjpNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKE1UTFJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBkZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKQor
ICAgIDogTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoZGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvcikKK3sKKyAgICBMT0coV2ViR1BVLCAiTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvcjo6TWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
cigpIik7Cit9CisKK01ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6On5N
ZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKCkKK3sKKyAgICBMT0coV2Vi
R1BVLCAiTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6fk1ldGFsUmVu
ZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoKSIpOworfQorCitNVExSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvcjo6cmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoKSBjb25zdAor
eworICAgIHJldHVybiBzdGF0aWNfY2FzdDxNVExSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvcio+KHJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcigpKTsKK30KKworZG91Ymxl
IE1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OmNsZWFyRGVwdGgoKSBj
b25zdAoreworICAgIE1UTFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNj
cmlwdG9yID0gcmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoKTsKKyAgICBpZiAo
IWRlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIFtkZXNjcmlwdG9y
IGNsZWFyRGVwdGhdOworfQorCit2b2lkIE1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3I6OnNldENsZWFyRGVwdGgoZG91YmxlIG5ld0NsZWFyRGVwdGgpCit7CisgICAgTVRM
UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqIGRlc2NyaXB0b3IgPSByZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcigpOworICAgIGlmICghZGVzY3JpcHRvcikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgW2Rlc2NyaXB0b3Igc2V0Q2xlYXJEZXB0aDpuZXdDbGVhckRl
cHRoXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWV0YWxSZW5kZXJQYXNzRGVzY3JpcHRvci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWV0YWxSZW5kZXJQYXNz
RGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zNTlj
YjIyZTM1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL01ldGFsUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaApAQCAtMCwwICsxLDU5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK09CSkNfQ0xBU1MgTVRMUmVuZGVyUGFzc0Rlc2NyaXB0b3I7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgTWV0YWxGdW5jdGlvbjsKK2NsYXNzIE1ldGFsUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3I7CitjbGFzcyBNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1l
bnREZXNjcmlwdG9yOworCitjbGFzcyBNZXRhbFJlbmRlclBhc3NEZXNjcmlwdG9yIDogcHVibGlj
IFJlZkNvdW50ZWQ8TWV0YWxSZW5kZXJQYXNzRGVzY3JpcHRvcj4geworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1ldGFsUmVuZGVyUGFzc0Rlc2NyaXB0b3I+IGNyZWF0ZSgpOworICAg
IH5NZXRhbFJlbmRlclBhc3NEZXNjcmlwdG9yKCk7CisKKyAgICBWZWN0b3I8UmVmUHRyPE1ldGFs
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+PiBjb2xvckF0dGFjaG1lbnRzKCk7
CisgICAgUmVmUHRyPE1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I+IGRl
cHRoQXR0YWNobWVudCgpOworCisgICAgTVRMUmVuZGVyUGFzc0Rlc2NyaXB0b3IqIHJlbmRlclBh
c3NEZXNjcmlwdG9yKCkgeyByZXR1cm4gbV9yZW5kZXJQYXNzRGVzY3JpcHRvci5nZXQoKTsgfQor
Citwcml2YXRlOgorICAgIE1ldGFsUmVuZGVyUGFzc0Rlc2NyaXB0b3IoKTsKKworICAgIFJldGFp
blB0cjxNVExSZW5kZXJQYXNzRGVzY3JpcHRvcj4gbV9yZW5kZXJQYXNzRGVzY3JpcHRvcjsKKyAg
ICBSZWZQdHI8TWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcj4gbV9kZXB0
aEF0dGFjaG1lbnQ7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZXRhbFJlbmRlclBh
c3NEZXNjcmlwdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
TWV0YWxSZW5kZXJQYXNzRGVzY3JpcHRvci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uY2VhZTYzZTU3ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZXRhbFJlbmRlclBhc3NEZXNjcmlwdG9yLm1tCkBA
IC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJNZXRhbFJlbmRlclBhc3NEZXNj
cmlwdG9yLmgiCisKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIk1ldGFsUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCIKKyNpbXBvcnQgIk1ldGFsUmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCIKKworI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE1ldGFsUmVuZGVyUGFzc0Rlc2NyaXB0
b3I+IE1ldGFsUmVuZGVyUGFzc0Rlc2NyaXB0b3I6OmNyZWF0ZSgpCit7CisgICAgUmVmUHRyPE1l
dGFsUmVuZGVyUGFzc0Rlc2NyaXB0b3I+IGRlc2NyaXB0b3IgPSBhZG9wdFJlZihuZXcgTWV0YWxS
ZW5kZXJQYXNzRGVzY3JpcHRvcigpKTsKKyAgICByZXR1cm4gZGVzY3JpcHRvci5yZWxlYXNlKCk7
Cit9CisKK01ldGFsUmVuZGVyUGFzc0Rlc2NyaXB0b3I6Ok1ldGFsUmVuZGVyUGFzc0Rlc2NyaXB0
b3IoKQoreworICAgIExPRyhXZWJHUFUsICJNZXRhbFJlbmRlclBhc3NEZXNjcmlwdG9yOjpNZXRh
bFJlbmRlclBhc3NEZXNjcmlwdG9yKCkiKTsKKworICAgIG1fcmVuZGVyUGFzc0Rlc2NyaXB0b3Ig
PSAoTVRMUmVuZGVyUGFzc0Rlc2NyaXB0b3IqKVtNVExSZW5kZXJQYXNzRGVzY3JpcHRvciBuZXdd
OworfQorCitNZXRhbFJlbmRlclBhc3NEZXNjcmlwdG9yOjp+TWV0YWxSZW5kZXJQYXNzRGVzY3Jp
cHRvcigpCit7CisgICAgTE9HKFdlYkdQVSwgIk1ldGFsUmVuZGVyUGFzc0Rlc2NyaXB0b3I6On5N
ZXRhbFJlbmRlclBhc3NEZXNjcmlwdG9yKCkiKTsKK30KKworVmVjdG9yPFJlZlB0cjxNZXRhbFJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4gTWV0YWxSZW5kZXJQYXNzRGVzY3Jp
cHRvcjo6Y29sb3JBdHRhY2htZW50cygpCit7CisgICAgaWYgKCFtX3JlbmRlclBhc3NEZXNjcmlw
dG9yKQorICAgICAgICByZXR1cm4gVmVjdG9yPFJlZlB0cjxNZXRhbFJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yPj4oKTsKKworICAgIFZlY3RvcjxSZWZQdHI8TWV0YWxSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4+IHBsYXRmb3JtQ29sb3JBdHRhY2htZW50czsK
KyAgICBwbGF0Zm9ybUNvbG9yQXR0YWNobWVudHMuYXBwZW5kKE1ldGFsUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3I6OmNyZWF0ZShbW21fcmVuZGVyUGFzc0Rlc2NyaXB0b3IgY29s
b3JBdHRhY2htZW50c10gb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OjBdKSk7CisgICAgcmV0dXJu
IHBsYXRmb3JtQ29sb3JBdHRhY2htZW50czsKK30KKworUmVmUHRyPE1ldGFsUmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3I+IE1ldGFsUmVuZGVyUGFzc0Rlc2NyaXB0b3I6OmRlcHRo
QXR0YWNobWVudCgpCit7CisgICAgaWYgKCFtX3JlbmRlclBhc3NEZXNjcmlwdG9yKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmICghbV9kZXB0aEF0dGFjaG1lbnQpCisgICAgICAg
IG1fZGVwdGhBdHRhY2htZW50ID0gTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3Jp
cHRvcjo6Y3JlYXRlKFttX3JlbmRlclBhc3NEZXNjcmlwdG9yIGRlcHRoQXR0YWNobWVudF0pOwor
CisgICAgcmV0dXJuIG1fZGVwdGhBdHRhY2htZW50OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9N
ZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uYTE5OWIwNzUxNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9NZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvci5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworT0JKQ19DTEFTUyBNVExSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMg
UmVmQ291bnRlZDxNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4g
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1ldGFsUmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yPiBjcmVhdGUoTVRMUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yKik7CisgICAgfk1ldGFsUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yKCk7CisKKyAgICB1bnNpZ25lZCBsb25nIHBpeGVsRm9ybWF0KCkgY29uc3Q7
CisgICAgdm9pZCBzZXRQaXhlbEZvcm1hdCh1bnNpZ25lZCBsb25nKTsKKworICAgIE1UTFJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogcmVuZGVyUGlwZWxpbmVDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yKCkgeyByZXR1cm4gbV9yZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBNZXRhbFJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcihNVExSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IqKTsKKworICAgIFJldGFpblB0cjxNVExSZW5kZXJQaXBlbGluZUNvbG9y
QXR0YWNobWVudERlc2NyaXB0b3I+IG1fcmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWV0YWxSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9NZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uN2E1ZjcxNTQwZmMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9NZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5tbQpAQCAtMCww
ICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IuaCIKKworI2ltcG9ydCAiTG9nZ2luZy5oIgorCisjaW1wb3J0
IDxNZXRhbC9NZXRhbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8TWV0
YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IE1ldGFsUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpjcmVhdGUoTVRMUmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBjb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKQorewor
ICAgIFJlZlB0cjxNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4g
ZGVzY3JpcHRvciA9IGFkb3B0UmVmKG5ldyBNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvcihjb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKSk7CisgICAgcmV0dXJuIGRl
c2NyaXB0b3IucmVsZWFzZSgpOworfQorCitNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6TWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IoTVRMUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBjb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yKQoreworICAgIExPRyhXZWJHUFUsICJNZXRhbFJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6TWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IoKSIpOworCisgICAgbV9yZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IgPSBjb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOworfQorCitNZXRhbFJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6fk1ldGFsUmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCkKK3sKKyAgICBMT0coV2ViR1BVLCAiTWV0YWxSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6On5NZXRhbFJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpIik7Cit9CisKK3Vuc2lnbmVkIGxvbmcgTWV0YWxS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnBpeGVsRm9ybWF0KCkgY29u
c3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
KQorICAgICAgICByZXR1cm4gMDsgLy8gRklYTUU6IFRoZXJlIGlzIHByb2JhYmx5IGEgcmVhbCB2
YWx1ZSBmb3IgdGhpcy4KKworICAgIHJldHVybiBbbV9yZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IgcGl4ZWxGb3JtYXRdOworfQorCit2b2lkIE1ldGFsUmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRQaXhlbEZvcm1hdCh1bnNpZ25lZCBsb25n
IG5ld0Zvcm1hdCkKK3sKKyAgICBpZiAoIW1fcmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBbbV9yZW5kZXJQaXBlbGluZUNvbG9y
QXR0YWNobWVudERlc2NyaXB0b3Igc2V0UGl4ZWxGb3JtYXQ6c3RhdGljX2Nhc3Q8TVRMUGl4ZWxG
b3JtYXQ+KG5ld0Zvcm1hdCldOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZXRhbFJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvTWV0YWxSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uZWQxM2FlY2M3MjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZXRhbFJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvci5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworT0JKQ19DTEFTUyBNVExSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWV0YWxGdW5jdGlv
bjsKK2NsYXNzIE1ldGFsUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOwor
CitjbGFzcyBNZXRhbFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA6IHB1YmxpYyBSZWZDb3VudGVk
PE1ldGFsUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8TWV0YWxSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IGNyZWF0ZSgpOworICAgIH5N
ZXRhbFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpOworCisgICAgU3RyaW5nIGxhYmVsKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKTsKKworICAgIHZvaWQgc2V0VmVy
dGV4RnVuY3Rpb24oUGFzc1JlZlB0cjxNZXRhbEZ1bmN0aW9uPik7CisgICAgdm9pZCBzZXRGcmFn
bWVudEZ1bmN0aW9uKFBhc3NSZWZQdHI8TWV0YWxGdW5jdGlvbj4pOworCisgICAgdW5zaWduZWQg
bG9uZyBkZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdCgpIGNvbnN0OworICAgIHZvaWQgc2V0RGVw
dGhBdHRhY2htZW50UGl4ZWxGb3JtYXQodW5zaWduZWQgbG9uZyk7CisKKyAgICB2b2lkIHJlc2V0
KCk7CisKKyAgICBWZWN0b3I8UmVmUHRyPE1ldGFsUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yPj4gY29sb3JBdHRhY2htZW50cygpOworCisgICAgTVRMUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yKiByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoKSB7IHJldHVybiBtX3JlbmRl
clBpcGVsaW5lRGVzY3JpcHRvci5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIE1ldGFsUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yKCk7CisgICAgCisgICAgUmV0YWluUHRyPE1UTFJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcj4gbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3I7Cit9OworICAgIAorfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9NZXRhbFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01ldGFsUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40N2I4YWVm
MzkxOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL01ldGFsUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLm1tCkBAIC0wLDAgKzEsMTIyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaW5jbHVkZSAiTWV0YWxSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIK
KworI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiTWV0YWxGdW5jdGlvbi5oIgorI2ltcG9y
dCAiTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCIKKworI2lt
cG9ydCA8TWV0YWwvTWV0YWwuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRy
PE1ldGFsUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiBNZXRhbFJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcjo6Y3JlYXRlKCkKK3sKKyAgICBSZWZQdHI8TWV0YWxSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3I+IGRlc2NyaXB0b3IgPSBhZG9wdFJlZihuZXcgTWV0YWxSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IoKSk7CisgICAgcmV0dXJuIGRlc2NyaXB0b3IucmVsZWFzZSgpOworfQorCitNZXRhbFJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcjo6TWV0YWxSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoKQorewor
ICAgIExPRyhXZWJHUFUsICJNZXRhbFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6TWV0YWxSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IoKSIpOworCisgICAgbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IgPSAoTVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKilbTVRMUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yIG5ld107Cit9CisKK01ldGFsUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp+TWV0YWxS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoKQoreworICAgIExPRyhXZWJHUFUsICJNZXRhbFJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcjo6fk1ldGFsUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCkiKTsK
K30KKworU3RyaW5nIE1ldGFsUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpsYWJlbCgpIGNvbnN0
Cit7CisgICAgaWYgKCFtX3JlbmRlclBpcGVsaW5lRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4gW21fcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
IGxhYmVsXTsKK30KKwordm9pZCBNZXRhbFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0TGFi
ZWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKK3sKKyAgICBpZiAoIW1fcmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBbbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0
b3Igc2V0TGFiZWw6bGFiZWxdOworfQorCit2b2lkIE1ldGFsUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yOjpzZXRWZXJ0ZXhGdW5jdGlvbihQYXNzUmVmUHRyPE1ldGFsRnVuY3Rpb24+IG5ld0Z1bmN0
aW9uKQoreworICAgIGlmICghbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpCisgICAgICAgIHJl
dHVybjsKKworICAgIFttX3JlbmRlclBpcGVsaW5lRGVzY3JpcHRvciBzZXRWZXJ0ZXhGdW5jdGlv
bjooaWQ8TVRMRnVuY3Rpb24+KW5ld0Z1bmN0aW9uLT5mdW5jdGlvbigpXTsKK30KKwordm9pZCBN
ZXRhbFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0RnJhZ21lbnRGdW5jdGlvbihQYXNzUmVm
UHRyPE1ldGFsRnVuY3Rpb24+IG5ld0Z1bmN0aW9uKQoreworICAgIGlmICghbV9yZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIFttX3JlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciBzZXRGcmFnbWVudEZ1bmN0aW9uOihpZDxNVExGdW5jdGlvbj4pbmV3RnVuY3Rp
b24tPmZ1bmN0aW9uKCldOworfQorCitWZWN0b3I8UmVmUHRyPE1ldGFsUmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4gTWV0YWxSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6
OmNvbG9yQXR0YWNobWVudHMoKQoreworICAgIGlmICghbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IpCisgICAgICAgIHJldHVybiBWZWN0b3I8UmVmUHRyPE1ldGFsUmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yPj4oKTsKKworICAgIFZlY3RvcjxSZWZQdHI8TWV0YWxSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+PiBwbGF0Zm9ybUNvbG9yQXR0YWNo
bWVudHM7CisgICAgcGxhdGZvcm1Db2xvckF0dGFjaG1lbnRzLmFwcGVuZChNZXRhbFJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6Y3JlYXRlKFtbbV9yZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IgY29sb3JBdHRhY2htZW50c10gb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OjBd
KSk7CisgICAgcmV0dXJuIHBsYXRmb3JtQ29sb3JBdHRhY2htZW50czsKK30KKwordW5zaWduZWQg
bG9uZyBNZXRhbFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6ZGVwdGhBdHRhY2htZW50UGl4ZWxG
b3JtYXQoKSBjb25zdAoreworICAgIGlmICghbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpCisg
ICAgICAgIHJldHVybiAwOyAvLyBGSVhNRTogVGhlcmUgaXMgcHJvYmFibHkgYSByZWFsIHZhbHVl
IGZvciB0aGlzLgorCisgICAgcmV0dXJuIFttX3JlbmRlclBpcGVsaW5lRGVzY3JpcHRvciBkZXB0
aEF0dGFjaG1lbnRQaXhlbEZvcm1hdF07Cit9CisKK3ZvaWQgTWV0YWxSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OnNldERlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0KHVuc2lnbmVkIGxvbmcgbmV3
Rm9ybWF0KQoreworICAgIGlmICghbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpCisgICAgICAg
IHJldHVybjsKKworICAgIFttX3JlbmRlclBpcGVsaW5lRGVzY3JpcHRvciBzZXREZXB0aEF0dGFj
aG1lbnRQaXhlbEZvcm1hdDpzdGF0aWNfY2FzdDxNVExQaXhlbEZvcm1hdD4obmV3Rm9ybWF0KV07
Cit9CisKK3ZvaWQgTWV0YWxSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnJlc2V0KCkKK3sKKyAg
ICBpZiAoIW1fcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisKKyAg
ICBbbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgcmVzZXRdOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9NZXRhbFJlbmRlclBpcGVsaW5lU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL01ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41MzhjYWU1NzgyNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01ldGFsUmVuZGVyUGlwZWxp
bmVTdGF0ZS5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCitPQkpDX0NMQVNTIE1UTFJlbmRlclBpcGVsaW5lU3RhdGU7CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgTWV0YWxEZXZpY2U7CitjbGFzcyBNZXRhbFJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcjsKKworY2xhc3MgTWV0YWxSZW5kZXJQaXBlbGluZVN0YXRlIDogcHVibGljIFJl
ZkNvdW50ZWQ8TWV0YWxSZW5kZXJQaXBlbGluZVN0YXRlPiB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWV0YWxSZW5kZXJQaXBlbGluZVN0YXRlPiBjcmVhdGUoTWV0YWxEZXZpY2Uq
LCBNZXRhbFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciopOworICAgIH5NZXRhbFJlbmRlclBpcGVs
aW5lU3RhdGUoKTsKKworICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgc2V0TGFi
ZWwoY29uc3QgU3RyaW5nJik7CisKKyAgICBNVExSZW5kZXJQaXBlbGluZVN0YXRlKiByZW5kZXJQ
aXBlbGluZVN0YXRlKCkgeyByZXR1cm4gbV9yZW5kZXJQaXBlbGluZVN0YXRlLmdldCgpOyB9CisK
K3ByaXZhdGU6CisgICAgTWV0YWxSZW5kZXJQaXBlbGluZVN0YXRlKE1ldGFsRGV2aWNlKiwgTWV0
YWxSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqKTsKKworICAgIFJldGFpblB0cjxNVExSZW5kZXJQ
aXBlbGluZVN0YXRlPiBtX3JlbmRlclBpcGVsaW5lU3RhdGU7Cit9OworICAgIAorfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9NZXRhbFJlbmRlclBpcGVsaW5lU3RhdGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZXRhbFJlbmRlclBpcGVsaW5lU3RhdGUubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjM4NmY4NDU3ZjMxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWV0YWxSZW5k
ZXJQaXBlbGluZVN0YXRlLm1tCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRl
ICJNZXRhbFJlbmRlclBpcGVsaW5lU3RhdGUuaCIKKworI2ltcG9ydCAiTG9nZ2luZy5oIgorI2lt
cG9ydCAiTWV0YWxEZXZpY2UuaCIKKyNpbXBvcnQgIk1ldGFsUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yLmgiCisKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworUGFzc1JlZlB0cjxNZXRhbFJlbmRlclBpcGVsaW5lU3RhdGU+IE1ldGFsUmVuZGVyUGlwZWxp
bmVTdGF0ZTo6Y3JlYXRlKE1ldGFsRGV2aWNlKiBkZXZpY2UsIE1ldGFsUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAgIFJlZlB0cjxNZXRhbFJlbmRlclBpcGVsaW5l
U3RhdGU+IHN0YXRlID0gYWRvcHRSZWYobmV3IE1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZShkZXZp
Y2UsIGRlc2NyaXB0b3IpKTsKKyAgICByZXR1cm4gc3RhdGUucmVsZWFzZSgpOworfQorCitNZXRh
bFJlbmRlclBpcGVsaW5lU3RhdGU6Ok1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZShNZXRhbERldmlj
ZSogZGV2aWNlLCBNZXRhbFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sK
KyAgICBMT0coV2ViR1BVLCAiTWV0YWxSZW5kZXJQaXBlbGluZVN0YXRlOjpNZXRhbFJlbmRlclBp
cGVsaW5lU3RhdGUoKSIpOworCisgICAgaWYgKCFkZXZpY2UgfHwgIWRldmljZS0+ZGV2aWNlKCkg
fHwgIWRlc2NyaXB0b3IgfHwgIWRlc2NyaXB0b3ItPnJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigp
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3JlbmRlclBpcGVsaW5lU3RhdGUgPSAoTVRMUmVu
ZGVyUGlwZWxpbmVTdGF0ZSopW2RldmljZS0+ZGV2aWNlKCkgbmV3UmVuZGVyUGlwZWxpbmVTdGF0
ZVdpdGhEZXNjcmlwdG9yOmRlc2NyaXB0b3ItPnJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjpuaWxdOwor
fQorCitNZXRhbFJlbmRlclBpcGVsaW5lU3RhdGU6On5NZXRhbFJlbmRlclBpcGVsaW5lU3RhdGUo
KQoreworICAgIExPRyhXZWJHUFUsICJNZXRhbFJlbmRlclBpcGVsaW5lU3RhdGU6On5NZXRhbFJl
bmRlclBpcGVsaW5lU3RhdGUoKSIpOworfQorCitTdHJpbmcgTWV0YWxSZW5kZXJQaXBlbGluZVN0
YXRlOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRlclBpcGVsaW5lU3RhdGUpCisg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgcmV0dXJuIFttX3JlbmRlclBpcGVs
aW5lU3RhdGUgbGFiZWxdOworfQorCit2b2lkIE1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZTo6c2V0
TGFiZWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKK3sKKyAgICBpZiAoIW1fcmVuZGVyUGlwZWxpbmVT
dGF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW21fcmVuZGVyUGlwZWxpbmVTdGF0ZSBzZXRM
YWJlbDpsYWJlbF07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01ldGFsVGV4dHVyZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWV0YWxUZXh0dXJlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjg2NzkwOTJlMjM5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWV0YWxUZXh0
dXJlLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgTVRMRGV2aWNlOworT0JK
Q19DTEFTUyBNVExUZXh0dXJlOworT0JKQ19DTEFTUyBNVExUZXh0dXJlRGVzY3JpcHRvcjsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZXRhbFRleHR1cmUgOiBwdWJsaWMgUmVmQ291
bnRlZDxNZXRhbFRleHR1cmU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXRh
bFRleHR1cmU+IGNyZWF0ZUZyb21FeGlzdGluZ1RleHR1cmUoTVRMVGV4dHVyZSopOworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1ldGFsVGV4dHVyZT4gY3JlYXRlKE1UTERldmljZSosIE1UTFRleHR1
cmVEZXNjcmlwdG9yKik7CisKKyAgICB+TWV0YWxUZXh0dXJlKCk7CisKKyAgICB1bnNpZ25lZCBs
b25nIHdpZHRoKCkgY29uc3Q7CisgICAgdW5zaWduZWQgbG9uZyBoZWlnaHQoKSBjb25zdDsKKwor
ICAgIE1UTFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKwor
cHJpdmF0ZToKKyAgICBNZXRhbFRleHR1cmUoTVRMVGV4dHVyZSopOworICAgIE1ldGFsVGV4dHVy
ZShNVExEZXZpY2UqLCBNVExUZXh0dXJlRGVzY3JpcHRvciopOworCisgICAgUmV0YWluUHRyPE1U
TFRleHR1cmU+IG1fdGV4dHVyZTsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01ldGFs
VGV4dHVyZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01ldGFs
VGV4dHVyZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMTE0NzJl
NWJjMjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9NZXRhbFRleHR1cmUubW0KQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgIk1ldGFsVGV4dHVyZS5oIgorCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJN
ZXRhbERldmljZS5oIgorCisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorI2ltcG9ydCA8UXVhcnR6
Q29yZS9RdWFydHpDb3JlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy9QYXNzUmVmUHRy
PE1ldGFsVGV4dHVyZT4gTWV0YWxUZXh0dXJlOjpjcmVhdGVGcmFtZWJ1ZmZlclRleHR1cmVGcm9t
RGV2aWNlKE1ldGFsRGV2aWNlKiBkZXZpY2UpCisvL3sKKy8vICAgIGlkPENBTWV0YWxEcmF3YWJs
ZT4gZHJhd2FibGUgPSBbZGV2aWNlLT5sYXllcigpIG5leHREcmF3YWJsZV07CisvLyAgICBNVExU
ZXh0dXJlKiBmcmFtZWJ1ZmZlclRleHR1cmUgPSBzdGF0aWNfY2FzdDxNVExUZXh0dXJlKj4oZHJh
d2FibGUudGV4dHVyZSk7CisvLworLy8gICAgUmVmUHRyPE1ldGFsVGV4dHVyZT4gdGV4dHVyZSA9
IGFkb3B0UmVmKG5ldyBNZXRhbFRleHR1cmUoZnJhbWVidWZmZXJUZXh0dXJlKSk7CisvLyAgICBy
ZXR1cm4gdGV4dHVyZS5yZWxlYXNlKCk7CisvL30KKworUGFzc1JlZlB0cjxNZXRhbFRleHR1cmU+
IE1ldGFsVGV4dHVyZTo6Y3JlYXRlRnJvbUV4aXN0aW5nVGV4dHVyZShNVExUZXh0dXJlKiBmcmFt
ZWJ1ZmZlclRleHR1cmUpCit7CisgICAgUmVmUHRyPE1ldGFsVGV4dHVyZT4gdGV4dHVyZSA9IGFk
b3B0UmVmKG5ldyBNZXRhbFRleHR1cmUoZnJhbWVidWZmZXJUZXh0dXJlKSk7CisgICAgcmV0dXJu
IHRleHR1cmUucmVsZWFzZSgpOworfQorCitQYXNzUmVmUHRyPE1ldGFsVGV4dHVyZT4gTWV0YWxU
ZXh0dXJlOjpjcmVhdGUoTVRMRGV2aWNlKiBkZXZpY2UsIE1UTFRleHR1cmVEZXNjcmlwdG9yKiBk
ZXNjcmlwdG9yKQoreworICAgIFJlZlB0cjxNZXRhbFRleHR1cmU+IHRleHR1cmUgPSBhZG9wdFJl
ZihuZXcgTWV0YWxUZXh0dXJlKGRldmljZSwgZGVzY3JpcHRvcikpOworICAgIHJldHVybiB0ZXh0
dXJlLnJlbGVhc2UoKTsKK30KKworTWV0YWxUZXh0dXJlOjpNZXRhbFRleHR1cmUoTVRMRGV2aWNl
KiBkZXZpY2UsIE1UTFRleHR1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAgIExPRyhX
ZWJHUFUsICJNZXRhbFRleHR1cmU6Ok1ldGFsVGV4dHVyZSgpIik7CisKKyAgICBpZiAoIWRldmlj
ZSB8fCAhZGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV90ZXh0dXJlID0gKE1U
TFRleHR1cmUqKVtkZXZpY2UgbmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yOmRlc2NyaXB0b3JdOwor
fQorCitNZXRhbFRleHR1cmU6Ok1ldGFsVGV4dHVyZShNVExUZXh0dXJlKiB0ZXh0dXJlKQorewor
ICAgIExPRyhXZWJHUFUsICJNZXRhbFRleHR1cmU6Ok1ldGFsVGV4dHVyZSgpIGV4aXN0aW5nIHRl
eHR1cmUgZm9ybSIpOworCisgICAgbV90ZXh0dXJlID0gdGV4dHVyZTsKK30KKworTWV0YWxUZXh0
dXJlOjp+TWV0YWxUZXh0dXJlKCkKK3sKKyAgICBMT0coV2ViR1BVLCAiTWV0YWxUZXh0dXJlOjp+
TWV0YWxUZXh0dXJlKCkiKTsKK30KKwordW5zaWduZWQgbG9uZyBNZXRhbFRleHR1cmU6OndpZHRo
KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fdGV4dHVyZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
aWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSA9IHN0YXRpY19jYXN0PGlkPE1UTFRleHR1cmU+PihtX3Rl
eHR1cmUuZ2V0KCkpOworICAgIHJldHVybiB0ZXh0dXJlLndpZHRoOworfQorCit1bnNpZ25lZCBs
b25nIE1ldGFsVGV4dHVyZTo6aGVpZ2h0KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fdGV4dHVyZSkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgaWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSA9IHN0YXRpY19j
YXN0PGlkPE1UTFRleHR1cmU+PihtX3RleHR1cmUuZ2V0KCkpOworICAgIHJldHVybiB0ZXh0dXJl
LmhlaWdodDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZXRhbFRleHR1cmVEZXNjcmlwdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZXRhbFRleHR1cmVE
ZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjExYTll
ZTdlMjA4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvTWV0YWxUZXh0dXJlRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIk1ldGFsRW51bXMuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNf
Q0xBU1MgTVRMVGV4dHVyZURlc2NyaXB0b3I7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgTWV0YWxGdW5jdGlvbjsKKworY2xhc3MgTWV0YWxUZXh0dXJlRGVzY3JpcHRvciA6IHB1Ymxp
YyBSZWZDb3VudGVkPE1ldGFsVGV4dHVyZURlc2NyaXB0b3I+IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxNZXRhbFRleHR1cmVEZXNjcmlwdG9yPiBjcmVhdGUodW5zaWduZWQgbG9u
ZyBwaXhlbEZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQs
IGJvb2wgbWlwbWFwcGVkKTsKKyAgICB+TWV0YWxUZXh0dXJlRGVzY3JpcHRvcigpOworCisgICAg
dW5zaWduZWQgbG9uZyB3aWR0aCgpIGNvbnN0OworICAgIHZvaWQgc2V0V2lkdGgodW5zaWduZWQg
bG9uZyk7CisKKyAgICB1bnNpZ25lZCBsb25nIGhlaWdodCgpIGNvbnN0OworICAgIHZvaWQgc2V0
SGVpZ2h0KHVuc2lnbmVkIGxvbmcpOworCisgICAgdW5zaWduZWQgbG9uZyBzYW1wbGVDb3VudCgp
IGNvbnN0OworICAgIHZvaWQgc2V0U2FtcGxlQ291bnQodW5zaWduZWQgbG9uZyk7CisKKyAgICB1
bnNpZ25lZCBsb25nIHRleHR1cmVUeXBlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRUZXh0dXJlVHlw
ZSh1bnNpZ25lZCBsb25nKTsKKworICAgIHVuc2lnbmVkIGxvbmcgc3RvcmFnZU1vZGUoKSBjb25z
dDsKKyAgICB2b2lkIHNldFN0b3JhZ2VNb2RlKHVuc2lnbmVkIGxvbmcpOworCisgICAgdW5zaWdu
ZWQgbG9uZyB1c2FnZSgpIGNvbnN0OworICAgIHZvaWQgc2V0VXNhZ2UodW5zaWduZWQgbG9uZyk7
CisKKyAgICBNVExUZXh0dXJlRGVzY3JpcHRvciogdGV4dHVyZURlc2NyaXB0b3IoKSB7IHJldHVy
biBtX3RleHR1cmVEZXNjcmlwdG9yLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgTWV0YWxUZXh0
dXJlRGVzY3JpcHRvcih1bnNpZ25lZCBsb25nIHBpeGVsRm9ybWF0LCB1bnNpZ25lZCBsb25nIHdp
ZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCwgYm9vbCBtaXBtYXBwZWQpOworCisgICAgUmV0YWlu
UHRyPE1UTFRleHR1cmVEZXNjcmlwdG9yPiBtX3RleHR1cmVEZXNjcmlwdG9yOworfTsKKyAgICAK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvTWV0YWxUZXh0dXJlRGVzY3JpcHRvci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01ldGFsVGV4dHVyZURlc2NyaXB0b3IubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjU3NDM2NGM4YzkyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWV0
YWxUZXh0dXJlRGVzY3JpcHRvci5tbQpAQCAtMCwwICsxLDE1NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgIk1ldGFsVGV4dHVyZURlc2NyaXB0b3IuaCIKKworI2ltcG9ydCAiTG9nZ2luZy5oIgor
CisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NS
ZWZQdHI8TWV0YWxUZXh0dXJlRGVzY3JpcHRvcj4gTWV0YWxUZXh0dXJlRGVzY3JpcHRvcjo6Y3Jl
YXRlKHVuc2lnbmVkIGxvbmcgcGl4ZWxGb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2ln
bmVkIGxvbmcgaGVpZ2h0LCBib29sIG1pcG1hcHBlZCkKK3sKKyAgICBSZWZQdHI8TWV0YWxUZXh0
dXJlRGVzY3JpcHRvcj4gZGVzY3JpcHRvciA9IGFkb3B0UmVmKG5ldyBNZXRhbFRleHR1cmVEZXNj
cmlwdG9yKHBpeGVsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBtaXBtYXBwZWQpKTsKKyAgICByZXR1
cm4gZGVzY3JpcHRvci5yZWxlYXNlKCk7Cit9CisKK01ldGFsVGV4dHVyZURlc2NyaXB0b3I6Ok1l
dGFsVGV4dHVyZURlc2NyaXB0b3IodW5zaWduZWQgbG9uZyBwaXhlbEZvcm1hdCwgdW5zaWduZWQg
bG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQsIGJvb2wgbWlwbWFwcGVkKQoreworICAg
IExPRyhXZWJHUFUsICJNZXRhbFRleHR1cmVEZXNjcmlwdG9yOjpNZXRhbFRleHR1cmVEZXNjcmlw
dG9yKCkiKTsKKworICAgIG1fdGV4dHVyZURlc2NyaXB0b3IgPSAoTVRMVGV4dHVyZURlc2NyaXB0
b3IqKVtNVExUZXh0dXJlRGVzY3JpcHRvciB0ZXh0dXJlMkREZXNjcmlwdG9yV2l0aFBpeGVsRm9y
bWF0OiBzdGF0aWNfY2FzdDxNVExQaXhlbEZvcm1hdD4ocGl4ZWxGb3JtYXQpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGhlaWdodAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlwbWFwcGVkOiBtaXBtYXBwZWRdOworfQor
CitNZXRhbFRleHR1cmVEZXNjcmlwdG9yOjp+TWV0YWxUZXh0dXJlRGVzY3JpcHRvcigpCit7Cisg
ICAgTE9HKFdlYkdQVSwgIk1ldGFsVGV4dHVyZURlc2NyaXB0b3I6On5NZXRhbFRleHR1cmVEZXNj
cmlwdG9yKCkiKTsKK30KKwordW5zaWduZWQgbG9uZyBNZXRhbFRleHR1cmVEZXNjcmlwdG9yOjp3
aWR0aCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3RleHR1cmVEZXNjcmlwdG9yKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIHJldHVybiBbbV90ZXh0dXJlRGVzY3JpcHRvciB3aWR0aF07Cit9CisK
K3ZvaWQgTWV0YWxUZXh0dXJlRGVzY3JpcHRvcjo6c2V0V2lkdGgodW5zaWduZWQgbG9uZyB3aWR0
aCkKK3sKKyAgICBpZiAoIW1fdGV4dHVyZURlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFttX3RleHR1cmVEZXNjcmlwdG9yIHNldFdpZHRoOndpZHRoXTsKK30KKwordW5zaWduZWQg
bG9uZyBNZXRhbFRleHR1cmVEZXNjcmlwdG9yOjpoZWlnaHQoKSBjb25zdAoreworICAgIGlmICgh
bV90ZXh0dXJlRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gW21f
dGV4dHVyZURlc2NyaXB0b3IgaGVpZ2h0XTsKK30KKwordm9pZCBNZXRhbFRleHR1cmVEZXNjcmlw
dG9yOjpzZXRIZWlnaHQodW5zaWduZWQgbG9uZyBoZWlnaHQpCit7CisgICAgaWYgKCFtX3RleHR1
cmVEZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgW21fdGV4dHVyZURlc2Ny
aXB0b3Igc2V0SGVpZ2h0OmhlaWdodF07Cit9CisKK3Vuc2lnbmVkIGxvbmcgTWV0YWxUZXh0dXJl
RGVzY3JpcHRvcjo6c2FtcGxlQ291bnQoKSBjb25zdAoreworICAgIGlmICghbV90ZXh0dXJlRGVz
Y3JpcHRvcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gW21fdGV4dHVyZURlc2Ny
aXB0b3Igc2FtcGxlQ291bnRdOworfQorCit2b2lkIE1ldGFsVGV4dHVyZURlc2NyaXB0b3I6OnNl
dFNhbXBsZUNvdW50KHVuc2lnbmVkIGxvbmcgc2FtcGxlQ291bnQpCit7CisgICAgaWYgKCFtX3Rl
eHR1cmVEZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgW21fdGV4dHVyZURl
c2NyaXB0b3Igc2V0U2FtcGxlQ291bnQ6c2FtcGxlQ291bnRdOworfQorCit1bnNpZ25lZCBsb25n
IE1ldGFsVGV4dHVyZURlc2NyaXB0b3I6OnRleHR1cmVUeXBlKCkgY29uc3QKK3sKKyAgICBpZiAo
IW1fdGV4dHVyZURlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIFtt
X3RleHR1cmVEZXNjcmlwdG9yIHRleHR1cmVUeXBlXTsKK30KKwordm9pZCBNZXRhbFRleHR1cmVE
ZXNjcmlwdG9yOjpzZXRUZXh0dXJlVHlwZSh1bnNpZ25lZCBsb25nIHRleHR1cmVUeXBlKQorewor
ICAgIGlmICghbV90ZXh0dXJlRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAg
IFttX3RleHR1cmVEZXNjcmlwdG9yIHNldFRleHR1cmVUeXBlOnN0YXRpY19jYXN0PE1UTFRleHR1
cmVUeXBlPih0ZXh0dXJlVHlwZSldOworfQorCit1bnNpZ25lZCBsb25nIE1ldGFsVGV4dHVyZURl
c2NyaXB0b3I6OnN0b3JhZ2VNb2RlKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fdGV4dHVyZURlc2Ny
aXB0b3IpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIFttX3RleHR1cmVEZXNjcmlw
dG9yIHN0b3JhZ2VNb2RlXTsKK30KKwordm9pZCBNZXRhbFRleHR1cmVEZXNjcmlwdG9yOjpzZXRT
dG9yYWdlTW9kZSh1bnNpZ25lZCBsb25nIHN0b3JhZ2VNb2RlKQoreworICAgIGlmICghbV90ZXh0
dXJlRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFttX3RleHR1cmVEZXNj
cmlwdG9yIHNldFN0b3JhZ2VNb2RlOnN0YXRpY19jYXN0PE1UTFN0b3JhZ2VNb2RlPihzdG9yYWdl
TW9kZSldOworfQorCit1bnNpZ25lZCBsb25nIE1ldGFsVGV4dHVyZURlc2NyaXB0b3I6OnVzYWdl
KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fdGV4dHVyZURlc2NyaXB0b3IpCisgICAgICAgIHJldHVy
biAwOworCisgICAgcmV0dXJuIFttX3RleHR1cmVEZXNjcmlwdG9yIHVzYWdlXTsKK30KKwordm9p
ZCBNZXRhbFRleHR1cmVEZXNjcmlwdG9yOjpzZXRVc2FnZSh1bnNpZ25lZCBsb25nIHVzYWdlKQor
eworICAgIGlmICghbV90ZXh0dXJlRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOworICAgIAor
ICAgIFttX3RleHR1cmVEZXNjcmlwdG9yIHNldFVzYWdlOnVzYWdlXTsKK30KKworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJHUFVMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViR1BVTGF5ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uNzQzM2VhZDIzNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHUFVMYXllci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkdQVUxh
eWVyX2gKKyNkZWZpbmUgV2ViR1BVTGF5ZXJfaAorCisjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0
ekNvcmUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgR3JhcGhpY3NMYXllcjsKK2Ns
YXNzIE1ldGFsRGV2aWNlOworfQorCitAaW50ZXJmYWNlIFdlYkdQVUxheWVyIDogQ0FNZXRhbExh
eWVyCit7CisgICAgV2ViQ29yZTo6TWV0YWxEZXZpY2UqIF9jb250ZXh0OworICAgIGZsb2F0IF9k
ZXZpY2VQaXhlbFJhdGlvOworfQorCitAcHJvcGVydHkgKG5vbmF0b21pYykgV2ViQ29yZTo6TWV0
YWxEZXZpY2UqIGNvbnRleHQ7CisKKy0gKGlkKWluaXRXaXRoTWV0YWxEZXZpY2U6KFdlYkNvcmU6
Ok1ldGFsRGV2aWNlKiljb250ZXh0OworCistIChDR0ltYWdlUmVmKWNvcHlJbWFnZVNuYXBzaG90
V2l0aENvbG9yU3BhY2U6KENHQ29sb3JTcGFjZVJlZiljb2xvclNwYWNlOworCitAZW5kCisKKyNl
bmRpZiAvLyBXZWJHUFVMYXllcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJHUFVMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkdQVUxheWVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwLi4yNzBkOWY0NmJjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdQVUxheWVyLm1tCkBAIC0wLDAgKzEsODEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpbXBvcnQgIldlYkdQVUxheWVyLmgiCisKKyNpbXBvcnQgIk1ldGFs
RGV2aWNlLmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgorI2ltcG9ydCAiR3JhcGhp
Y3NMYXllci5oIgorI2ltcG9ydCA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0BpbXBsZW1lbnRhdGlvbiBX
ZWJHUFVMYXllcgorCitAc3ludGhlc2l6ZSBjb250ZXh0PV9jb250ZXh0OworCistKGlkKWluaXRX
aXRoTWV0YWxEZXZpY2U6KE1ldGFsRGV2aWNlKiljb250ZXh0Cit7CisgICAgc2VsZiA9IFtzdXBl
ciBpbml0XTsKKyAgICBfY29udGV4dCA9IGNvbnRleHQ7CisKKyAgICAvLyBGSVhNRQorICAgIF9k
ZXZpY2VQaXhlbFJhdGlvID0gMTsKKy8vICAgIF9kZXZpY2VQaXhlbFJhdGlvID0gY29udGV4dC0+
Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKS5kZXZpY2VQaXhlbFJhdGlvOworCisjaWYgUExBVEZPUk0o
TUFDKQorICAgIHNlbGYuY29udGVudHNTY2FsZSA9IF9kZXZpY2VQaXhlbFJhdGlvOworI2lmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwCisgICAgaWYgKFtzZWxmIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0Q29sb3JzcGFjZTopXSkKKyAgICAgICAgW3Nl
bGYgc2V0Q29sb3JzcGFjZTpzUkdCQ29sb3JTcGFjZVJlZigpXTsKKyNlbmRpZgorI2VuZGlmCisg
ICAgcmV0dXJuIHNlbGY7Cit9CisKKy0oQ0dJbWFnZVJlZiljb3B5SW1hZ2VTbmFwc2hvdFdpdGhD
b2xvclNwYWNlOihDR0NvbG9yU3BhY2VSZWYpY29sb3JTcGFjZQoreworICAgIGlmICghX2NvbnRl
eHQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgVU5VU0VEX1BBUkFNKGNvbG9yU3Bh
Y2UpOworICAgIHJldHVybiBudWxscHRyOworfQorCistICh2b2lkKWRpc3BsYXkKK3sKKyAgICAv
LyBUaGlzIGlzIGEgbm8tb3AgdGhhdCBjYXVzZXMgYSB3YXJuaW5nIGluIHRoZSBjb25zb2xlLiBX
ZSBkb24ndCBuZWVkIHRvCisgICAgLy8gY2FsbCBkaXNwbGF5IC0gaW5zdGVhZCB3ZSBwcmVzZW50
IGEgZHJhd2FibGUgZnJvbSBvdXIgY29udGV4dC4KK30KKworLSAodm9pZClzZXRCb3VuZHM6KENH
UmVjdClyZWN0Cit7CisgICAgW3N1cGVyIHNldEJvdW5kczpyZWN0XTsKK30KKworQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkdMTGF5ZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViR0xMYXllci5tbQpp
bmRleCBmY2RhNzAxNGRmOC4uYTBjZDI5OTYxMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJHTExheWVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJHTExheWVyLm1tCkBAIC0xNzAsNiArMTcwLDExIEBA
IHN0YXRpYyB2b2lkIGZyZWVEYXRhKHZvaWQgKiwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IC8q
IHNpemUgKi8pCiAjZW5kaWYKIH0KIAorLSAodm9pZClzZXRCb3VuZHM6KENHUmVjdClyZWN0Cit7
CisgICAgW3N1cGVyIHNldEJvdW5kczpyZWN0XTsKK30KKwogLSAodm9pZClkaXNwbGF5CiB7CiAg
ICAgaWYgKCFfY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAKaW5kZXggYWZjZmRkN2QxZWQuLjdlMDRmODk5ZTM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtODEsNyAr
ODEsNyBAQCBDYW52YXNDb21wb3NpdGluZ1N0cmF0ZWd5IGNhbnZhc0NvbXBvc2l0aW5nU3RyYXRl
Z3koY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcgogICAgIGlmICghY29udGV4dCB8fCAhY29u
dGV4dC0+aXNBY2NlbGVyYXRlZCgpKQogICAgICAgICByZXR1cm4gVW5hY2NlbGVyYXRlZENhbnZh
czsKICAgICAKLSAgICBpZiAoY29udGV4dC0+aXMzZCgpKQorICAgIGlmIChjb250ZXh0LT5pczNk
KCkgfHwgY29udGV4dC0+aXNNZXRhbCgpKQogICAgICAgICByZXR1cm4gQ2FudmFzQXNMYXllckNv
bnRlbnRzOwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0gYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCmluZGV4
IGQ5NjIzYTg4ZDkzLi4zNmRjMDNhMmQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCkBAIC0zNzAsNiArMzcwLDcgQEAg
dm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZHJhd0luQ29udGV4dChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIENHSW1hZ2VSZWYKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlUm9vdExheWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXll
ckxheWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVXZWJHTExheWVyOgor
ICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVXZWJHUFVMYXllcjoKICAgICBjYXNl
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlU2hhcGVMYXllcjoKICAgICBjYXNlIFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlU2Nyb2xsaW5nTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZUN1c3RvbToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9t
YWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
bWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCmluZGV4IGM5Njc5ZGRlNGNmLi4yZWQy
ZDNkMzE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCkBAIC04OTQsNiArODk0LDcgQEAgQ1N0cmluZyBSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVzY3JpcHRpb24oKSBjb25zdAogICAgICAgICAgICAg
ICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJ
RCA8PCAiKSI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlV2ViR0xMYXllcjoKKyAgICAgICAgICAgIGNhc2UgUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVXZWJHUFVMYXllcjoKICAgICAgICAgICAgICAgICB0cyA8PCAi
IChjb250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3RpbmdDb250ZXh0SUQgPDwgIikiOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZUN1c3RvbToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQppbmRleCBjMzI1NzFlYTExZi4uNTc0MzNiYjUy
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUmVtb3RlTGF5ZXJU
cmVlSG9zdElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1JlbW90ZUxh
eWVyVHJlZUhvc3RJT1MubW0KQEAgLTE4Miw2ICsxODIsOSBAQCBMYXllck9yVmlldyAqUmVtb3Rl
TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlTGF5ZXIoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b246OgogCiAgICAgQVNTRVJUKCF2aWV3KTsKIAorCisKKwogICAgIHN3aXRjaCAocHJvcGVydGll
cy50eXBlKSB7CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxheWVyOgogICAg
IGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVXZWJMYXllcjoKQEAgLTIwNyw2ICsyMTAs
NyBAQCBMYXllck9yVmlldyAqUmVtb3RlTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlTGF5ZXIoY29uc3Qg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVDdXN0b206CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxh
eWVyTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYkdMTGF5ZXI6
CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYkdQVUxheWVyOgogICAgICAg
ICBpZiAoIW1faXNEZWJ1Z0xheWVyVHJlZUhvc3QpIHsKICAgICAgICAgICAgIHZpZXcgPSBhZG9w
dE5TKFtbV0tSZW1vdGVWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29udGV4
dElEOnByb3BlcnRpZXMuaG9zdGluZ0NvbnRleHRJRF0pOwogICAgICAgICAgICAgaWYgKHByb3Bl
cnRpZXMudHlwZSA9PSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXIpIHsK
QEAgLTIyNyw2ICsyMzEsNyBAQCBMYXllck9yVmlldyAqUmVtb3RlTGF5ZXJUcmVlSG9zdDo6Y3Jl
YXRlTGF5ZXIoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OgogICAgICAgICAgICAg
dmlldyA9IGFkb3B0TlMoW1tVSVZpZXcgYWxsb2NdIGluaXRdKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKKyAgICAgICAgTlNMb2coQCJVbmtub3duIGxheWVyIHR5cGUgaXMgJWQiLCBw
cm9wZXJ0aWVzLnR5cGUpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVl
SG9zdC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9z
dC5tbQppbmRleCAxMDQ0OGYzYjk0YS4uMDU4OWYxMDY4ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KQEAgLTI0NSw2ICsy
NDUsNyBAQCBMYXllck9yVmlldyAqUmVtb3RlTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlTGF5ZXIoY29u
c3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVDdXN0b206CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFW
UGxheWVyTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYkdMTGF5
ZXI6CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYkdQVUxheWVyOgogICAg
ICAgICBpZiAoIW1faXNEZWJ1Z0xheWVyVHJlZUhvc3QpCiAgICAgICAgICAgICBsYXllciA9IFdL
TWFrZVJlbmRlckxheWVyKHByb3BlcnRpZXMuaG9zdGluZ0NvbnRleHRJRCk7CiAgICAgICAgIGVs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxh
dGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KaW5kZXggMDEzZGUxY2My
MTMuLjQ2MDNkNjljYzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5t
bQpAQCAtODIsNyArODIsNyBAQCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRmb3Jt
Q0FMYXllclJlbW90ZUN1c3RvbShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbAogICAgIG1fcGxhdGZv
cm1MYXllciA9IGN1c3RvbUxheWVyOwogICAgIFtjdXN0b21MYXllciB3ZWJfZGlzYWJsZUFsbEFj
dGlvbnNdOwogCi0gICAgbV9wcm92aWRlc0NvbnRlbnRzID0gbGF5ZXJUeXBlID09IExheWVyVHlw
ZVdlYkdMTGF5ZXI7CisgICAgbV9wcm92aWRlc0NvbnRlbnRzID0gbGF5ZXJUeXBlID09IExheWVy
VHlwZVdlYkdMTGF5ZXIgfHwgbGF5ZXJUeXBlID09IExheWVyVHlwZVdlYkdQVUxheWVyOwogCiAg
ICAgcHJvcGVydGllcygpLnBvc2l0aW9uID0gRmxvYXRQb2ludDNEKGN1c3RvbUxheWVyLnBvc2l0
aW9uLngsIGN1c3RvbUxheWVyLnBvc2l0aW9uLnksIGN1c3RvbUxheWVyLnpQb3NpdGlvbik7CiAg
ICAgcHJvcGVydGllcygpLmFuY2hvclBvaW50ID0gRmxvYXRQb2ludDNEKGN1c3RvbUxheWVyLmFu
Y2hvclBvaW50LngsIGN1c3RvbUxheWVyLmFuY2hvclBvaW50LnksIGN1c3RvbUxheWVyLmFuY2hv
clBvaW50Wik7CkBAIC0xMjEsNyArMTIxLDcgQEAgUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9y
bUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y2xvbmUoUGxhdGZvcm0KICAg
ICAgICAgfQogCiAgICAgICAgIGNvcHlDb250ZW50cyA9IGZhbHNlOwotICAgIH0gZWxzZSBpZiAo
bGF5ZXJUeXBlKCkgPT0gTGF5ZXJUeXBlV2ViR0xMYXllcikgeworICAgIH0gZWxzZSBpZiAobGF5
ZXJUeXBlKCkgPT0gTGF5ZXJUeXBlV2ViR0xMYXllciB8fCBsYXllclR5cGUoKSA9PSBMYXllclR5
cGVXZWJHUFVMYXllcikgewogICAgICAgICBjbG9uZWRMYXllciA9IGFkb3B0TlMoW1tDQUxheWVy
IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIC8vIEZJWE1FOiBjdXJyZW50bHkgY29weWluZyBXZWJH
TCBjb250ZW50cyBicmVha3MgdGhlIG9yaWdpbmFsIGxheWVyLgogICAgICAgICBjb3B5Q29udGVu
dHMgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL21ha2VLZXl3b3Jkcy5weSBiL21ha2VLZXl3b3Jkcy5w
eQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMC4uZjU1NjY0MzVkMjcKLS0t
IC9kZXYvbnVsbAorKysgYi9tYWtlS2V5d29yZHMucHkKQEAgLTAsMCArMSw3MyBAQAorIyEvdXNy
L2Jpbi9weXRob24KKworaW1wb3J0IHN5cywgcmUKKworZW51bVN0cmluZyA9IHN5cy5zdGRpbi5y
ZWFkKCkKKworbmFtZVJFID0gcmUuY29tcGlsZSgiXmVudW0gKFxTKykgeyIsIHJlLk1VTFRJTElO
RSkKK25hbWUgPSBuYW1lUkUuc2VhcmNoKGVudW1TdHJpbmcpLmdyb3VwKDEpCisKK25hbWVXaXRo
b3V0UHJlZml4ID0gbmFtZVs1Ol0KKworaXRlbVJFID0gcmUuY29tcGlsZShyIlwiKFxTKylcIiIs
IHJlLk1VTFRJTElORSkKK2l0ZW1zID0gaXRlbVJFLmZpbmRhbGwoZW51bVN0cmluZykKKworIyBw
cmludAorIyBmb3IgaXRlbSBpbiBpdGVtczoKKyMgICAgIHByaW50ICJzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiAlc0tleXdvcmQoKTsiICUgaXRlbQorIworIworIyBmb3IgaXRlbSBpbiBpdGVt
czoKKyMgICAgIHByaW50CisjICAgICBwcmludCAiY29uc3QgQXRvbWljU3RyaW5nJiAlczo6JXNL
ZXl3b3JkKCkiICUgKG5hbWUsIGl0ZW0pCisjICAgICBwcmludCAieyIKKyMgICAgIHByaW50ICIg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gJXMoXCIlc1wiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsiICUgKGl0ZW0sIGl0ZW0pCisjICAg
ICBwcmludCAiICAgIHJldHVybiAlczsiICUgaXRlbQorIyAgICAgcHJpbnQgIn0iCisjCisKK3By
aW50ICJlbnVtIGNsYXNzICVzIHsiICUgbmFtZQorZm9yIGl0ZW0gaW4gaXRlbXM6CisgICAgcHJp
bnQgIiAgICAlcywiICUgaXRlbS50aXRsZSgpCitwcmludCAifTsiCisKK3ByaW50CitwcmludCAi
T3B0aW9uYWw8JXM+IHRvJXMoY29uc3QgU3RyaW5nJik7IiAlIChuYW1lLCBuYW1lKQorcHJpbnQg
IlN0cmluZyAlc05hbWUoY29uc3QgJXMpOyIgJSAobmFtZVswXS5sb3dlcigpICsgbmFtZVsxOl0s
IG5hbWUpCisKK3ByaW50CitwcmludCAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCitw
cmludAorCitwcmludCAiT3B0aW9uYWw8JXM+IHRvJXMoY29uc3QgU3RyaW5nJiBuYW1lKSIgJSAo
bmFtZSwgbmFtZSkKK3ByaW50ICJ7IgorZm9yIGl0ZW0gaW4gaXRlbXM6CisgICAgcHJpbnQgIiAg
ICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgXCIlc1wiKSkiICUgaXRl
bQorICAgIHByaW50ICIgICAgICAgIHJldHVybiAlczo6JXM7IiAlIChuYW1lLCBpdGVtLnRpdGxl
KCkpCitwcmludAorcHJpbnQgIiAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsiCitwcmludCAiICAg
IHJldHVybiBOdWxsb3B0OyIKK3ByaW50ICJ9IgorCitwcmludAorcHJpbnQgIlN0cmluZyAlc05h
bWUoY29uc3QgJXMgdmFsdWUpIiAlIChuYW1lWzBdLmxvd2VyKCkgKyBuYW1lWzE6XSwgbmFtZSkK
K3ByaW50ICJ7IgorZm9yIGl0ZW0gaW4gaXRlbXM6CisgICAgcHJpbnQgIiAgICBpZiAodmFsdWUg
PT0gJXM6OiVzKSIgJSAobmFtZSwgaXRlbS50aXRsZSgpKQorICAgIHByaW50ICIgICAgICAgIHJl
dHVybiBBU0NJSUxpdGVyYWwoXCIlc1wiKTsiICUgKGl0ZW0pCitwcmludAorcHJpbnQgIiAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsiCitwcmludCAiICAgIHJldHVybiBlbXB0eVN0cmluZygpOyIK
K3ByaW50ICJ9IgorCitwcmludAorcHJpbnQgIk1ldGFsJXMgdG9NZXRhbCVzKGNvbnN0ICVzIHZh
bHVlKSIgJSAobmFtZVdpdGhvdXRQcmVmaXgsIG5hbWVXaXRob3V0UHJlZml4LCBuYW1lKQorcHJp
bnQgInsiCitmb3IgaXRlbSBpbiBpdGVtczoKKyAgICBwcmludCAiICAgIGlmICh2YWx1ZSA9PSAl
czo6JXMpIiAlIChuYW1lLCBpdGVtLnRpdGxlKCkpCisgICAgcHJpbnQgIiAgICAgICAgcmV0dXJu
IE1ldGFsJXM6OiVzOyIgJSAobmFtZVdpdGhvdXRQcmVmaXgsIGl0ZW0udGl0bGUoKSkKK3ByaW50
CitwcmludCAiICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyIKK3ByaW50ICIgICAgcmV0dXJuIGZp
eG1lOyIKK3ByaW50ICJ9IgorCmRpZmYgLS1naXQgYS93ZWJncHUvZ2wtbWF0cml4LmpzIGIvd2Vi
Z3B1L2dsLW1hdHJpeC5qcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMC4u
YzM4Njg0ZDFlM2MKLS0tIC9kZXYvbnVsbAorKysgYi93ZWJncHUvZ2wtbWF0cml4LmpzCkBAIC0w
LDAgKzEsNjYwOSBAQAorLyoqCisgKiBAZmlsZW92ZXJ2aWV3IGdsLW1hdHJpeCAtIEhpZ2ggcGVy
Zm9ybWFuY2UgbWF0cml4IGFuZCB2ZWN0b3Igb3BlcmF0aW9ucworICogQGF1dGhvciBCcmFuZG9u
IEpvbmVzCisgKiBAYXV0aG9yIENvbGluIE1hY0tlbnppZSBJVgorICogQHZlcnNpb24gMi4zLjIK
KyAqLworCisvKiBDb3B5cmlnaHQgKGMpIDIwMTUsIEJyYW5kb24gSm9uZXMsIENvbGluIE1hY0tl
bnppZSBJVi4KKworUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us
IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNz
b2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKK2lu
IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p
dGF0aW9uIHRoZSByaWdodHMKK3RvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwg
ZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKK2NvcGllcyBvZiB0aGUgU29mdHdh
cmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworZnVybmlz
aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworVGhl
IGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwg
YmUgaW5jbHVkZWQgaW4KK2FsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhl
IFNvZnR3YXJlLgorCitUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX
QVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorSU1QTElFRCwgSU5DTFVESU5HIEJVVCBO
T1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCitGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUKK0FVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBB
TlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKK0xJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ
T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCitPVVQgT0Yg
T1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERF
QUxJTkdTIElOCitUSEUgU09GVFdBUkUuICovCisKKyhmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2Fs
TW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7CisJaWYodHlwZW9mIGV4cG9ydHMgPT09
ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKQorCQltb2R1bGUuZXhwb3J0
cyA9IGZhY3RvcnkoKTsKKwllbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYg
ZGVmaW5lLmFtZCkKKwkJZGVmaW5lKFtdLCBmYWN0b3J5KTsKKwllbHNlIHsKKwkJdmFyIGEgPSBm
YWN0b3J5KCk7CisJCWZvcih2YXIgaSBpbiBhKSAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3Qn
ID8gZXhwb3J0cyA6IHJvb3QpW2ldID0gYVtpXTsKKwl9Cit9KSh0aGlzLCBmdW5jdGlvbigpIHsK
K3JldHVybiAvKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFw
CisvKioqKioqLyAJLy8gVGhlIG1vZHVsZSBjYWNoZQorLyoqKioqKi8gCXZhciBpbnN0YWxsZWRN
b2R1bGVzID0ge307CisKKy8qKioqKiovIAkvLyBUaGUgcmVxdWlyZSBmdW5jdGlvbgorLyoqKioq
Ki8gCWZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHsKKworLyoqKioqKi8g
CQkvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGUKKy8qKioqKiovIAkJaWYoaW5zdGFsbGVk
TW9kdWxlc1ttb2R1bGVJZF0pCisvKioqKioqLyAJCQlyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1tt
b2R1bGVJZF0uZXhwb3J0czsKKworLyoqKioqKi8gCQkvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChh
bmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKQorLyoqKioqKi8gCQl2YXIgbW9kdWxlID0gaW5zdGFs
bGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7CisvKioqKioqLyAJCQlleHBvcnRzOiB7fSwKKy8qKioq
KiovIAkJCWlkOiBtb2R1bGVJZCwKKy8qKioqKiovIAkJCWxvYWRlZDogZmFsc2UKKy8qKioqKiov
IAkJfTsKKworLyoqKioqKi8gCQkvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb24KKy8qKioq
KiovIAkJbW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1
bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7CisKKy8qKioqKiovIAkJLy8gRmxhZyB0
aGUgbW9kdWxlIGFzIGxvYWRlZAorLyoqKioqKi8gCQltb2R1bGUubG9hZGVkID0gdHJ1ZTsKKwor
LyoqKioqKi8gCQkvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZQorLyoqKioqKi8g
CQlyZXR1cm4gbW9kdWxlLmV4cG9ydHM7CisvKioqKioqLyAJfQorCisKKy8qKioqKiovIAkvLyBl
eHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKQorLyoqKioqKi8g
CV9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7CisKKy8qKioqKiovIAkvLyBleHBvc2Ug
dGhlIG1vZHVsZSBjYWNoZQorLyoqKioqKi8gCV9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3Rh
bGxlZE1vZHVsZXM7CisKKy8qKioqKiovIAkvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfXworLyoq
KioqKi8gCV9fd2VicGFja19yZXF1aXJlX18ucCA9ICIiOworCisvKioqKioqLyAJLy8gTG9hZCBl
bnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzCisvKioqKioqLyAJcmV0dXJuIF9fd2VicGFj
a19yZXF1aXJlX18oMCk7CisvKioqKioqLyB9KQorLyoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKiov
IChbCisvKiAwICovCisvKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19y
ZXF1aXJlX18pIHsKKworCS8qKgorCSAqIEBmaWxlb3ZlcnZpZXcgZ2wtbWF0cml4IC0gSGlnaCBw
ZXJmb3JtYW5jZSBtYXRyaXggYW5kIHZlY3RvciBvcGVyYXRpb25zCisJICogQGF1dGhvciBCcmFu
ZG9uIEpvbmVzCisJICogQGF1dGhvciBDb2xpbiBNYWNLZW56aWUgSVYKKwkgKiBAdmVyc2lvbiAy
LjMuMgorCSAqLworCisJLyogQ29weXJpZ2h0IChjKSAyMDE1LCBCcmFuZG9uIEpvbmVzLCBDb2xp
biBNYWNLZW56aWUgSVYuCisKKwlQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9m
IGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisJb2YgdGhpcyBzb2Z0d2Fy
ZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRv
IGRlYWwKKwlpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdp
dGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCisJdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdl
LCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorCWNvcGllcyBv
ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2Fy
ZSBpcworCWZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnM6CisKKwlUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u
IG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorCWFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwg
cG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCisJVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB
UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKwlJTVBMSUVE
LCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSwKKwlGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO
R0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKwlBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xE
RVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisJTElBQklMSVRZ
LCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFS
SVNJTkcgRlJPTSwKKwlPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP
UiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCisJVEhFIFNPRlRXQVJFLiAqLworCS8vIEVO
RCBIRUFERVIKKworCWV4cG9ydHMuZ2xNYXRyaXggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpOwor
CWV4cG9ydHMubWF0MiA9IF9fd2VicGFja19yZXF1aXJlX18oMik7CisJZXhwb3J0cy5tYXQyZCA9
IF9fd2VicGFja19yZXF1aXJlX18oMyk7CisJZXhwb3J0cy5tYXQzID0gX193ZWJwYWNrX3JlcXVp
cmVfXyg0KTsKKwlleHBvcnRzLm1hdDQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpOworCWV4cG9y
dHMucXVhdCA9IF9fd2VicGFja19yZXF1aXJlX18oNik7CisJZXhwb3J0cy52ZWMyID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg5KTsKKwlleHBvcnRzLnZlYzMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcp
OworCWV4cG9ydHMudmVjNCA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7CisKKy8qKiovIH0sCisv
KiAxICovCisvKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKKworCS8qIENvcHlyaWdo
dCAoYykgMjAxNSwgQnJhbmRvbiBKb25lcywgQ29saW4gTWFjS2VuemllIElWLgorCisJUGVybWlz
c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0
YWluaW5nIGEgY29weQorCW9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRh
dGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCisJaW4gdGhlIFNvZnR3YXJlIHdp
dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0
cworCXRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi
bGljZW5zZSwgYW5kL29yIHNlbGwKKwljb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVy
bWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKwlmdXJuaXNoZWQgdG8gZG8gc28s
IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCisJVGhlIGFib3ZlIGNvcHly
aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQg
aW4KKwlhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4K
KworCVRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9G
IEFOWSBLSU5ELCBFWFBSRVNTIE9SCisJSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRF
RCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisJRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFCisJQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJ
TSwgREFNQUdFUyBPUiBPVEhFUgorCUxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg
Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisJT1VUIE9GIE9SIElO
IENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5H
UyBJTgorCVRIRSBTT0ZUV0FSRS4gKi8KKworCS8qKgorCSAqIEBjbGFzcyBDb21tb24gdXRpbGl0
aWVzCisJICogQG5hbWUgZ2xNYXRyaXgKKwkgKi8KKwl2YXIgZ2xNYXRyaXggPSB7fTsKKworCS8v
IENvbmZpZ3VyYXRpb24gQ29uc3RhbnRzCisJZ2xNYXRyaXguRVBTSUxPTiA9IDAuMDAwMDAxOwor
CWdsTWF0cml4LkFSUkFZX1RZUEUgPSAodHlwZW9mIEZsb2F0MzJBcnJheSAhPT0gJ3VuZGVmaW5l
ZCcpID8gRmxvYXQzMkFycmF5IDogQXJyYXk7CisJZ2xNYXRyaXguUkFORE9NID0gTWF0aC5yYW5k
b207CisJZ2xNYXRyaXguRU5BQkxFX1NJTUQgPSBmYWxzZTsKKworCS8vIENhcGFiaWxpdHkgZGV0
ZWN0aW9uCisJZ2xNYXRyaXguU0lNRF9BVkFJTEFCTEUgPSAoZ2xNYXRyaXguQVJSQVlfVFlQRSA9
PT0gRmxvYXQzMkFycmF5KSAmJiAoJ1NJTUQnIGluIHRoaXMpOworCWdsTWF0cml4LlVTRV9TSU1E
ID0gZ2xNYXRyaXguRU5BQkxFX1NJTUQgJiYgZ2xNYXRyaXguU0lNRF9BVkFJTEFCTEU7CisKKwkv
KioKKwkgKiBTZXRzIHRoZSB0eXBlIG9mIGFycmF5IHVzZWQgd2hlbiBjcmVhdGluZyBuZXcgdmVj
dG9ycyBhbmQgbWF0cmljZXMKKwkgKgorCSAqIEBwYXJhbSB7VHlwZX0gdHlwZSBBcnJheSB0eXBl
LCBzdWNoIGFzIEZsb2F0MzJBcnJheSBvciBBcnJheQorCSAqLworCWdsTWF0cml4LnNldE1hdHJp
eEFycmF5VHlwZSA9IGZ1bmN0aW9uKHR5cGUpIHsKKwkgICAgZ2xNYXRyaXguQVJSQVlfVFlQRSA9
IHR5cGU7CisJfQorCisJdmFyIGRlZ3JlZSA9IE1hdGguUEkgLyAxODA7CisKKwkvKioKKwkqIENv
bnZlcnQgRGVncmVlIFRvIFJhZGlhbgorCSoKKwkqIEBwYXJhbSB7TnVtYmVyfSBBbmdsZSBpbiBE
ZWdyZWVzCisJKi8KKwlnbE1hdHJpeC50b1JhZGlhbiA9IGZ1bmN0aW9uKGEpeworCSAgICAgcmV0
dXJuIGEgKiBkZWdyZWU7CisJfQorCisJLyoqCisJICogVGVzdHMgd2hldGhlciBvciBub3QgdGhl
IGFyZ3VtZW50cyBoYXZlIGFwcHJveGltYXRlbHkgdGhlIHNhbWUgdmFsdWUsIHdpdGhpbiBhbiBh
YnNvbHV0ZQorCSAqIG9yIHJlbGF0aXZlIHRvbGVyYW5jZSBvZiBnbE1hdHJpeC5FUFNJTE9OIChh
biBhYnNvbHV0ZSB0b2xlcmFuY2UgaXMgdXNlZCBmb3IgdmFsdWVzIGxlc3MgCisJICogdGhhbiBv
ciBlcXVhbCB0byAxLjAsIGFuZCBhIHJlbGF0aXZlIHRvbGVyYW5jZSBpcyB1c2VkIGZvciBsYXJn
ZXIgdmFsdWVzKQorCSAqIAorCSAqIEBwYXJhbSB7TnVtYmVyfSBhIFRoZSBmaXJzdCBudW1iZXIg
dG8gdGVzdC4KKwkgKiBAcGFyYW0ge051bWJlcn0gYiBUaGUgc2Vjb25kIG51bWJlciB0byB0ZXN0
LgorCSAqIEByZXR1cm5zIHtCb29sZWFufSBUcnVlIGlmIHRoZSBudW1iZXJzIGFyZSBhcHByb3hp
bWF0ZWx5IGVxdWFsLCBmYWxzZSBvdGhlcndpc2UuCisJICovCisJZ2xNYXRyaXguZXF1YWxzID0g
ZnVuY3Rpb24oYSwgYikgeworCQlyZXR1cm4gTWF0aC5hYnMoYSAtIGIpIDw9IGdsTWF0cml4LkVQ
U0lMT04qTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhKSwgTWF0aC5hYnMoYikpOworCX0KKworCW1v
ZHVsZS5leHBvcnRzID0gZ2xNYXRyaXg7CisKKworLyoqKi8gfSwKKy8qIDIgKi8KKy8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgeworCisJLyogQ29w
eXJpZ2h0IChjKSAyMDE1LCBCcmFuZG9uIEpvbmVzLCBDb2xpbiBNYWNLZW56aWUgSVYuCisKKwlQ
ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv
biBvYnRhaW5pbmcgYSBjb3B5CisJb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1
bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKKwlpbiB0aGUgU29mdHdh
cmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUg
cmlnaHRzCisJdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl
LCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorCWNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0
byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworCWZ1cm5pc2hlZCB0byBk
byBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKwlUaGUgYWJvdmUg
Y29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNs
dWRlZCBpbgorCWFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3
YXJlLgorCisJVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFO
VFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKwlJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM
SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKwlGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUKKwlBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5Z
IENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisJTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP
TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKwlPVVQgT0Yg
T1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERF
QUxJTkdTIElOCisJVEhFIFNPRlRXQVJFLiAqLworCisJdmFyIGdsTWF0cml4ID0gX193ZWJwYWNr
X3JlcXVpcmVfXygxKTsKKworCS8qKgorCSAqIEBjbGFzcyAyeDIgTWF0cml4CisJICogQG5hbWUg
bWF0MgorCSAqLworCXZhciBtYXQyID0ge307CisKKwkvKioKKwkgKiBDcmVhdGVzIGEgbmV3IGlk
ZW50aXR5IG1hdDIKKwkgKgorCSAqIEByZXR1cm5zIHttYXQyfSBhIG5ldyAyeDIgbWF0cml4CisJ
ICovCisJbWF0Mi5jcmVhdGUgPSBmdW5jdGlvbigpIHsKKwkgICAgdmFyIG91dCA9IG5ldyBnbE1h
dHJpeC5BUlJBWV9UWVBFKDQpOworCSAgICBvdXRbMF0gPSAxOworCSAgICBvdXRbMV0gPSAwOwor
CSAgICBvdXRbMl0gPSAwOworCSAgICBvdXRbM10gPSAxOworCSAgICByZXR1cm4gb3V0OworCX07
CisKKwkvKioKKwkgKiBDcmVhdGVzIGEgbmV3IG1hdDIgaW5pdGlhbGl6ZWQgd2l0aCB2YWx1ZXMg
ZnJvbSBhbiBleGlzdGluZyBtYXRyaXgKKwkgKgorCSAqIEBwYXJhbSB7bWF0Mn0gYSBtYXRyaXgg
dG8gY2xvbmUKKwkgKiBAcmV0dXJucyB7bWF0Mn0gYSBuZXcgMngyIG1hdHJpeAorCSAqLworCW1h
dDIuY2xvbmUgPSBmdW5jdGlvbihhKSB7CisJICAgIHZhciBvdXQgPSBuZXcgZ2xNYXRyaXguQVJS
QVlfVFlQRSg0KTsKKwkgICAgb3V0WzBdID0gYVswXTsKKwkgICAgb3V0WzFdID0gYVsxXTsKKwkg
ICAgb3V0WzJdID0gYVsyXTsKKwkgICAgb3V0WzNdID0gYVszXTsKKwkgICAgcmV0dXJuIG91dDsK
Kwl9OworCisJLyoqCisJICogQ29weSB0aGUgdmFsdWVzIGZyb20gb25lIG1hdDIgdG8gYW5vdGhl
cgorCSAqCisJICogQHBhcmFtIHttYXQyfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXgKKwkgKiBA
cGFyYW0ge21hdDJ9IGEgdGhlIHNvdXJjZSBtYXRyaXgKKwkgKiBAcmV0dXJucyB7bWF0Mn0gb3V0
CisJICovCisJbWF0Mi5jb3B5ID0gZnVuY3Rpb24ob3V0LCBhKSB7CisJICAgIG91dFswXSA9IGFb
MF07CisJICAgIG91dFsxXSA9IGFbMV07CisJICAgIG91dFsyXSA9IGFbMl07CisJICAgIG91dFsz
XSA9IGFbM107CisJICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIFNldCBhIG1hdDIg
dG8gdGhlIGlkZW50aXR5IG1hdHJpeAorCSAqCisJICogQHBhcmFtIHttYXQyfSBvdXQgdGhlIHJl
Y2VpdmluZyBtYXRyaXgKKwkgKiBAcmV0dXJucyB7bWF0Mn0gb3V0CisJICovCisJbWF0Mi5pZGVu
dGl0eSA9IGZ1bmN0aW9uKG91dCkgeworCSAgICBvdXRbMF0gPSAxOworCSAgICBvdXRbMV0gPSAw
OworCSAgICBvdXRbMl0gPSAwOworCSAgICBvdXRbM10gPSAxOworCSAgICByZXR1cm4gb3V0Owor
CX07CisKKwkvKioKKwkgKiBDcmVhdGUgYSBuZXcgbWF0MiB3aXRoIHRoZSBnaXZlbiB2YWx1ZXMK
KwkgKgorCSAqIEBwYXJhbSB7TnVtYmVyfSBtMDAgQ29tcG9uZW50IGluIGNvbHVtbiAwLCByb3cg
MCBwb3NpdGlvbiAoaW5kZXggMCkKKwkgKiBAcGFyYW0ge051bWJlcn0gbTAxIENvbXBvbmVudCBp
biBjb2x1bW4gMCwgcm93IDEgcG9zaXRpb24gKGluZGV4IDEpCisJICogQHBhcmFtIHtOdW1iZXJ9
IG0xMCBDb21wb25lbnQgaW4gY29sdW1uIDEsIHJvdyAwIHBvc2l0aW9uIChpbmRleCAyKQorCSAq
IEBwYXJhbSB7TnVtYmVyfSBtMTEgQ29tcG9uZW50IGluIGNvbHVtbiAxLCByb3cgMSBwb3NpdGlv
biAoaW5kZXggMykKKwkgKiBAcmV0dXJucyB7bWF0Mn0gb3V0IEEgbmV3IDJ4MiBtYXRyaXgKKwkg
Ki8KKwltYXQyLmZyb21WYWx1ZXMgPSBmdW5jdGlvbihtMDAsIG0wMSwgbTEwLCBtMTEpIHsKKwkg
ICAgdmFyIG91dCA9IG5ldyBnbE1hdHJpeC5BUlJBWV9UWVBFKDQpOworCSAgICBvdXRbMF0gPSBt
MDA7CisJICAgIG91dFsxXSA9IG0wMTsKKwkgICAgb3V0WzJdID0gbTEwOworCSAgICBvdXRbM10g
PSBtMTE7CisJICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIFNldCB0aGUgY29tcG9u
ZW50cyBvZiBhIG1hdDIgdG8gdGhlIGdpdmVuIHZhbHVlcworCSAqCisJICogQHBhcmFtIHttYXQy
fSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXgKKwkgKiBAcGFyYW0ge051bWJlcn0gbTAwIENvbXBv
bmVudCBpbiBjb2x1bW4gMCwgcm93IDAgcG9zaXRpb24gKGluZGV4IDApCisJICogQHBhcmFtIHtO
dW1iZXJ9IG0wMSBDb21wb25lbnQgaW4gY29sdW1uIDAsIHJvdyAxIHBvc2l0aW9uIChpbmRleCAx
KQorCSAqIEBwYXJhbSB7TnVtYmVyfSBtMTAgQ29tcG9uZW50IGluIGNvbHVtbiAxLCByb3cgMCBw
b3NpdGlvbiAoaW5kZXggMikKKwkgKiBAcGFyYW0ge051bWJlcn0gbTExIENvbXBvbmVudCBpbiBj
b2x1bW4gMSwgcm93IDEgcG9zaXRpb24gKGluZGV4IDMpCisJICogQHJldHVybnMge21hdDJ9IG91
dAorCSAqLworCW1hdDIuc2V0ID0gZnVuY3Rpb24ob3V0LCBtMDAsIG0wMSwgbTEwLCBtMTEpIHsK
KwkgICAgb3V0WzBdID0gbTAwOworCSAgICBvdXRbMV0gPSBtMDE7CisJICAgIG91dFsyXSA9IG0x
MDsKKwkgICAgb3V0WzNdID0gbTExOworCSAgICByZXR1cm4gb3V0OworCX07CisKKworCS8qKgor
CSAqIFRyYW5zcG9zZSB0aGUgdmFsdWVzIG9mIGEgbWF0MgorCSAqCisJICogQHBhcmFtIHttYXQy
fSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXgKKwkgKiBAcGFyYW0ge21hdDJ9IGEgdGhlIHNvdXJj
ZSBtYXRyaXgKKwkgKiBAcmV0dXJucyB7bWF0Mn0gb3V0CisJICovCisJbWF0Mi50cmFuc3Bvc2Ug
PSBmdW5jdGlvbihvdXQsIGEpIHsKKwkgICAgLy8gSWYgd2UgYXJlIHRyYW5zcG9zaW5nIG91cnNl
bHZlcyB3ZSBjYW4gc2tpcCBhIGZldyBzdGVwcyBidXQgaGF2ZSB0byBjYWNoZSBzb21lIHZhbHVl
cworCSAgICBpZiAob3V0ID09PSBhKSB7CisJICAgICAgICB2YXIgYTEgPSBhWzFdOworCSAgICAg
ICAgb3V0WzFdID0gYVsyXTsKKwkgICAgICAgIG91dFsyXSA9IGExOworCSAgICB9IGVsc2Ugewor
CSAgICAgICAgb3V0WzBdID0gYVswXTsKKwkgICAgICAgIG91dFsxXSA9IGFbMl07CisJICAgICAg
ICBvdXRbMl0gPSBhWzFdOworCSAgICAgICAgb3V0WzNdID0gYVszXTsKKwkgICAgfQorCSAgICAK
KwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogSW52ZXJ0cyBhIG1hdDIKKwkgKgor
CSAqIEBwYXJhbSB7bWF0Mn0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4CisJICogQHBhcmFtIHtt
YXQyfSBhIHRoZSBzb3VyY2UgbWF0cml4CisJICogQHJldHVybnMge21hdDJ9IG91dAorCSAqLwor
CW1hdDIuaW52ZXJ0ID0gZnVuY3Rpb24ob3V0LCBhKSB7CisJICAgIHZhciBhMCA9IGFbMF0sIGEx
ID0gYVsxXSwgYTIgPSBhWzJdLCBhMyA9IGFbM10sCisKKwkgICAgICAgIC8vIENhbGN1bGF0ZSB0
aGUgZGV0ZXJtaW5hbnQKKwkgICAgICAgIGRldCA9IGEwICogYTMgLSBhMiAqIGExOworCisJICAg
IGlmICghZGV0KSB7CisJICAgICAgICByZXR1cm4gbnVsbDsKKwkgICAgfQorCSAgICBkZXQgPSAx
LjAgLyBkZXQ7CisJICAgIAorCSAgICBvdXRbMF0gPSAgYTMgKiBkZXQ7CisJICAgIG91dFsxXSA9
IC1hMSAqIGRldDsKKwkgICAgb3V0WzJdID0gLWEyICogZGV0OworCSAgICBvdXRbM10gPSAgYTAg
KiBkZXQ7CisKKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogQ2FsY3VsYXRlcyB0
aGUgYWRqdWdhdGUgb2YgYSBtYXQyCisJICoKKwkgKiBAcGFyYW0ge21hdDJ9IG91dCB0aGUgcmVj
ZWl2aW5nIG1hdHJpeAorCSAqIEBwYXJhbSB7bWF0Mn0gYSB0aGUgc291cmNlIG1hdHJpeAorCSAq
IEByZXR1cm5zIHttYXQyfSBvdXQKKwkgKi8KKwltYXQyLmFkam9pbnQgPSBmdW5jdGlvbihvdXQs
IGEpIHsKKwkgICAgLy8gQ2FjaGluZyB0aGlzIHZhbHVlIGlzIG5lc3NlY2FyeSBpZiBvdXQgPT0g
YQorCSAgICB2YXIgYTAgPSBhWzBdOworCSAgICBvdXRbMF0gPSAgYVszXTsKKwkgICAgb3V0WzFd
ID0gLWFbMV07CisJICAgIG91dFsyXSA9IC1hWzJdOworCSAgICBvdXRbM10gPSAgYTA7CisKKwkg
ICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogQ2FsY3VsYXRlcyB0aGUgZGV0ZXJtaW5h
bnQgb2YgYSBtYXQyCisJICoKKwkgKiBAcGFyYW0ge21hdDJ9IGEgdGhlIHNvdXJjZSBtYXRyaXgK
KwkgKiBAcmV0dXJucyB7TnVtYmVyfSBkZXRlcm1pbmFudCBvZiBhCisJICovCisJbWF0Mi5kZXRl
cm1pbmFudCA9IGZ1bmN0aW9uIChhKSB7CisJICAgIHJldHVybiBhWzBdICogYVszXSAtIGFbMl0g
KiBhWzFdOworCX07CisKKwkvKioKKwkgKiBNdWx0aXBsaWVzIHR3byBtYXQyJ3MKKwkgKgorCSAq
IEBwYXJhbSB7bWF0Mn0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4CisJICogQHBhcmFtIHttYXQy
fSBhIHRoZSBmaXJzdCBvcGVyYW5kCisJICogQHBhcmFtIHttYXQyfSBiIHRoZSBzZWNvbmQgb3Bl
cmFuZAorCSAqIEByZXR1cm5zIHttYXQyfSBvdXQKKwkgKi8KKwltYXQyLm11bHRpcGx5ID0gZnVu
Y3Rpb24gKG91dCwgYSwgYikgeworCSAgICB2YXIgYTAgPSBhWzBdLCBhMSA9IGFbMV0sIGEyID0g
YVsyXSwgYTMgPSBhWzNdOworCSAgICB2YXIgYjAgPSBiWzBdLCBiMSA9IGJbMV0sIGIyID0gYlsy
XSwgYjMgPSBiWzNdOworCSAgICBvdXRbMF0gPSBhMCAqIGIwICsgYTIgKiBiMTsKKwkgICAgb3V0
WzFdID0gYTEgKiBiMCArIGEzICogYjE7CisJICAgIG91dFsyXSA9IGEwICogYjIgKyBhMiAqIGIz
OworCSAgICBvdXRbM10gPSBhMSAqIGIyICsgYTMgKiBiMzsKKwkgICAgcmV0dXJuIG91dDsKKwl9
OworCisJLyoqCisJICogQWxpYXMgZm9yIHtAbGluayBtYXQyLm11bHRpcGx5fQorCSAqIEBmdW5j
dGlvbgorCSAqLworCW1hdDIubXVsID0gbWF0Mi5tdWx0aXBseTsKKworCS8qKgorCSAqIFJvdGF0
ZXMgYSBtYXQyIGJ5IHRoZSBnaXZlbiBhbmdsZQorCSAqCisJICogQHBhcmFtIHttYXQyfSBvdXQg
dGhlIHJlY2VpdmluZyBtYXRyaXgKKwkgKiBAcGFyYW0ge21hdDJ9IGEgdGhlIG1hdHJpeCB0byBy
b3RhdGUKKwkgKiBAcGFyYW0ge051bWJlcn0gcmFkIHRoZSBhbmdsZSB0byByb3RhdGUgdGhlIG1h
dHJpeCBieQorCSAqIEByZXR1cm5zIHttYXQyfSBvdXQKKwkgKi8KKwltYXQyLnJvdGF0ZSA9IGZ1
bmN0aW9uIChvdXQsIGEsIHJhZCkgeworCSAgICB2YXIgYTAgPSBhWzBdLCBhMSA9IGFbMV0sIGEy
ID0gYVsyXSwgYTMgPSBhWzNdLAorCSAgICAgICAgcyA9IE1hdGguc2luKHJhZCksCisJICAgICAg
ICBjID0gTWF0aC5jb3MocmFkKTsKKwkgICAgb3V0WzBdID0gYTAgKiAgYyArIGEyICogczsKKwkg
ICAgb3V0WzFdID0gYTEgKiAgYyArIGEzICogczsKKwkgICAgb3V0WzJdID0gYTAgKiAtcyArIGEy
ICogYzsKKwkgICAgb3V0WzNdID0gYTEgKiAtcyArIGEzICogYzsKKwkgICAgcmV0dXJuIG91dDsK
Kwl9OworCisJLyoqCisJICogU2NhbGVzIHRoZSBtYXQyIGJ5IHRoZSBkaW1lbnNpb25zIGluIHRo
ZSBnaXZlbiB2ZWMyCisJICoKKwkgKiBAcGFyYW0ge21hdDJ9IG91dCB0aGUgcmVjZWl2aW5nIG1h
dHJpeAorCSAqIEBwYXJhbSB7bWF0Mn0gYSB0aGUgbWF0cml4IHRvIHJvdGF0ZQorCSAqIEBwYXJh
bSB7dmVjMn0gdiB0aGUgdmVjMiB0byBzY2FsZSB0aGUgbWF0cml4IGJ5CisJICogQHJldHVybnMg
e21hdDJ9IG91dAorCSAqKi8KKwltYXQyLnNjYWxlID0gZnVuY3Rpb24ob3V0LCBhLCB2KSB7CisJ
ICAgIHZhciBhMCA9IGFbMF0sIGExID0gYVsxXSwgYTIgPSBhWzJdLCBhMyA9IGFbM10sCisJICAg
ICAgICB2MCA9IHZbMF0sIHYxID0gdlsxXTsKKwkgICAgb3V0WzBdID0gYTAgKiB2MDsKKwkgICAg
b3V0WzFdID0gYTEgKiB2MDsKKwkgICAgb3V0WzJdID0gYTIgKiB2MTsKKwkgICAgb3V0WzNdID0g
YTMgKiB2MTsKKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogQ3JlYXRlcyBhIG1h
dHJpeCBmcm9tIGEgZ2l2ZW4gYW5nbGUKKwkgKiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gKGJ1dCBt
dWNoIGZhc3RlciB0aGFuKToKKwkgKgorCSAqICAgICBtYXQyLmlkZW50aXR5KGRlc3QpOworCSAq
ICAgICBtYXQyLnJvdGF0ZShkZXN0LCBkZXN0LCByYWQpOworCSAqCisJICogQHBhcmFtIHttYXQy
fSBvdXQgbWF0MiByZWNlaXZpbmcgb3BlcmF0aW9uIHJlc3VsdAorCSAqIEBwYXJhbSB7TnVtYmVy
fSByYWQgdGhlIGFuZ2xlIHRvIHJvdGF0ZSB0aGUgbWF0cml4IGJ5CisJICogQHJldHVybnMge21h
dDJ9IG91dAorCSAqLworCW1hdDIuZnJvbVJvdGF0aW9uID0gZnVuY3Rpb24ob3V0LCByYWQpIHsK
KwkgICAgdmFyIHMgPSBNYXRoLnNpbihyYWQpLAorCSAgICAgICAgYyA9IE1hdGguY29zKHJhZCk7
CisJICAgIG91dFswXSA9IGM7CisJICAgIG91dFsxXSA9IHM7CisJICAgIG91dFsyXSA9IC1zOwor
CSAgICBvdXRbM10gPSBjOworCSAgICByZXR1cm4gb3V0OworCX0KKworCS8qKgorCSAqIENyZWF0
ZXMgYSBtYXRyaXggZnJvbSBhIHZlY3RvciBzY2FsaW5nCisJICogVGhpcyBpcyBlcXVpdmFsZW50
IHRvIChidXQgbXVjaCBmYXN0ZXIgdGhhbik6CisJICoKKwkgKiAgICAgbWF0Mi5pZGVudGl0eShk
ZXN0KTsKKwkgKiAgICAgbWF0Mi5zY2FsZShkZXN0LCBkZXN0LCB2ZWMpOworCSAqCisJICogQHBh
cmFtIHttYXQyfSBvdXQgbWF0MiByZWNlaXZpbmcgb3BlcmF0aW9uIHJlc3VsdAorCSAqIEBwYXJh
bSB7dmVjMn0gdiBTY2FsaW5nIHZlY3RvcgorCSAqIEByZXR1cm5zIHttYXQyfSBvdXQKKwkgKi8K
KwltYXQyLmZyb21TY2FsaW5nID0gZnVuY3Rpb24ob3V0LCB2KSB7CisJICAgIG91dFswXSA9IHZb
MF07CisJICAgIG91dFsxXSA9IDA7CisJICAgIG91dFsyXSA9IDA7CisJICAgIG91dFszXSA9IHZb
MV07CisJICAgIHJldHVybiBvdXQ7CisJfQorCisJLyoqCisJICogUmV0dXJucyBhIHN0cmluZyBy
ZXByZXNlbnRhdGlvbiBvZiBhIG1hdDIKKwkgKgorCSAqIEBwYXJhbSB7bWF0Mn0gbWF0IG1hdHJp
eCB0byByZXByZXNlbnQgYXMgYSBzdHJpbmcKKwkgKiBAcmV0dXJucyB7U3RyaW5nfSBzdHJpbmcg
cmVwcmVzZW50YXRpb24gb2YgdGhlIG1hdHJpeAorCSAqLworCW1hdDIuc3RyID0gZnVuY3Rpb24g
KGEpIHsKKwkgICAgcmV0dXJuICdtYXQyKCcgKyBhWzBdICsgJywgJyArIGFbMV0gKyAnLCAnICsg
YVsyXSArICcsICcgKyBhWzNdICsgJyknOworCX07CisKKwkvKioKKwkgKiBSZXR1cm5zIEZyb2Jl
bml1cyBub3JtIG9mIGEgbWF0MgorCSAqCisJICogQHBhcmFtIHttYXQyfSBhIHRoZSBtYXRyaXgg
dG8gY2FsY3VsYXRlIEZyb2Jlbml1cyBub3JtIG9mCisJICogQHJldHVybnMge051bWJlcn0gRnJv
YmVuaXVzIG5vcm0KKwkgKi8KKwltYXQyLmZyb2IgPSBmdW5jdGlvbiAoYSkgeworCSAgICByZXR1
cm4oTWF0aC5zcXJ0KE1hdGgucG93KGFbMF0sIDIpICsgTWF0aC5wb3coYVsxXSwgMikgKyBNYXRo
LnBvdyhhWzJdLCAyKSArIE1hdGgucG93KGFbM10sIDIpKSkKKwl9OworCisJLyoqCisJICogUmV0
dXJucyBMLCBEIGFuZCBVIG1hdHJpY2VzIChMb3dlciB0cmlhbmd1bGFyLCBEaWFnb25hbCBhbmQg
VXBwZXIgdHJpYW5ndWxhcikgYnkgZmFjdG9yaXppbmcgdGhlIGlucHV0IG1hdHJpeAorCSAqIEBw
YXJhbSB7bWF0Mn0gTCB0aGUgbG93ZXIgdHJpYW5ndWxhciBtYXRyaXggCisJICogQHBhcmFtIHtt
YXQyfSBEIHRoZSBkaWFnb25hbCBtYXRyaXggCisJICogQHBhcmFtIHttYXQyfSBVIHRoZSB1cHBl
ciB0cmlhbmd1bGFyIG1hdHJpeCAKKwkgKiBAcGFyYW0ge21hdDJ9IGEgdGhlIGlucHV0IG1hdHJp
eCB0byBmYWN0b3JpemUKKwkgKi8KKworCW1hdDIuTERVID0gZnVuY3Rpb24gKEwsIEQsIFUsIGEp
IHsgCisJICAgIExbMl0gPSBhWzJdL2FbMF07IAorCSAgICBVWzBdID0gYVswXTsgCisJICAgIFVb
MV0gPSBhWzFdOyAKKwkgICAgVVszXSA9IGFbM10gLSBMWzJdICogVVsxXTsgCisJICAgIHJldHVy
biBbTCwgRCwgVV07ICAgICAgIAorCX07IAorCisJLyoqCisJICogQWRkcyB0d28gbWF0MidzCisJ
ICoKKwkgKiBAcGFyYW0ge21hdDJ9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeAorCSAqIEBwYXJh
bSB7bWF0Mn0gYSB0aGUgZmlyc3Qgb3BlcmFuZAorCSAqIEBwYXJhbSB7bWF0Mn0gYiB0aGUgc2Vj
b25kIG9wZXJhbmQKKwkgKiBAcmV0dXJucyB7bWF0Mn0gb3V0CisJICovCisJbWF0Mi5hZGQgPSBm
dW5jdGlvbihvdXQsIGEsIGIpIHsKKwkgICAgb3V0WzBdID0gYVswXSArIGJbMF07CisJICAgIG91
dFsxXSA9IGFbMV0gKyBiWzFdOworCSAgICBvdXRbMl0gPSBhWzJdICsgYlsyXTsKKwkgICAgb3V0
WzNdID0gYVszXSArIGJbM107CisJICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIFN1
YnRyYWN0cyBtYXRyaXggYiBmcm9tIG1hdHJpeCBhCisJICoKKwkgKiBAcGFyYW0ge21hdDJ9IG91
dCB0aGUgcmVjZWl2aW5nIG1hdHJpeAorCSAqIEBwYXJhbSB7bWF0Mn0gYSB0aGUgZmlyc3Qgb3Bl
cmFuZAorCSAqIEBwYXJhbSB7bWF0Mn0gYiB0aGUgc2Vjb25kIG9wZXJhbmQKKwkgKiBAcmV0dXJu
cyB7bWF0Mn0gb3V0CisJICovCisJbWF0Mi5zdWJ0cmFjdCA9IGZ1bmN0aW9uKG91dCwgYSwgYikg
eworCSAgICBvdXRbMF0gPSBhWzBdIC0gYlswXTsKKwkgICAgb3V0WzFdID0gYVsxXSAtIGJbMV07
CisJICAgIG91dFsyXSA9IGFbMl0gLSBiWzJdOworCSAgICBvdXRbM10gPSBhWzNdIC0gYlszXTsK
KwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogQWxpYXMgZm9yIHtAbGluayBtYXQy
LnN1YnRyYWN0fQorCSAqIEBmdW5jdGlvbgorCSAqLworCW1hdDIuc3ViID0gbWF0Mi5zdWJ0cmFj
dDsKKworCS8qKgorCSAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIG1hdHJpY2VzIGhhdmUg
ZXhhY3RseSB0aGUgc2FtZSBlbGVtZW50cyBpbiB0aGUgc2FtZSBwb3NpdGlvbiAod2hlbiBjb21w
YXJlZCB3aXRoID09PSkKKwkgKgorCSAqIEBwYXJhbSB7bWF0Mn0gYSBUaGUgZmlyc3QgbWF0cml4
LgorCSAqIEBwYXJhbSB7bWF0Mn0gYiBUaGUgc2Vjb25kIG1hdHJpeC4KKwkgKiBAcmV0dXJucyB7
Qm9vbGVhbn0gVHJ1ZSBpZiB0aGUgbWF0cmljZXMgYXJlIGVxdWFsLCBmYWxzZSBvdGhlcndpc2Uu
CisJICovCisJbWF0Mi5leGFjdEVxdWFscyA9IGZ1bmN0aW9uIChhLCBiKSB7CisJICAgIHJldHVy
biBhWzBdID09PSBiWzBdICYmIGFbMV0gPT09IGJbMV0gJiYgYVsyXSA9PT0gYlsyXSAmJiBhWzNd
ID09PSBiWzNdOworCX07CisKKwkvKioKKwkgKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBt
YXRyaWNlcyBoYXZlIGFwcHJveGltYXRlbHkgdGhlIHNhbWUgZWxlbWVudHMgaW4gdGhlIHNhbWUg
cG9zaXRpb24uCisJICoKKwkgKiBAcGFyYW0ge21hdDJ9IGEgVGhlIGZpcnN0IG1hdHJpeC4KKwkg
KiBAcGFyYW0ge21hdDJ9IGIgVGhlIHNlY29uZCBtYXRyaXguCisJICogQHJldHVybnMge0Jvb2xl
YW59IFRydWUgaWYgdGhlIG1hdHJpY2VzIGFyZSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlLgorCSAq
LworCW1hdDIuZXF1YWxzID0gZnVuY3Rpb24gKGEsIGIpIHsKKwkgICAgdmFyIGEwID0gYVswXSwg
YTEgPSBhWzFdLCBhMiA9IGFbMl0sIGEzID0gYVszXTsKKwkgICAgdmFyIGIwID0gYlswXSwgYjEg
PSBiWzFdLCBiMiA9IGJbMl0sIGIzID0gYlszXTsKKwkgICAgcmV0dXJuIChNYXRoLmFicyhhMCAt
IGIwKSA8PSBnbE1hdHJpeC5FUFNJTE9OKk1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTApLCBNYXRo
LmFicyhiMCkpICYmCisJICAgICAgICAgICAgTWF0aC5hYnMoYTEgLSBiMSkgPD0gZ2xNYXRyaXgu
RVBTSUxPTipNYXRoLm1heCgxLjAsIE1hdGguYWJzKGExKSwgTWF0aC5hYnMoYjEpKSAmJgorCSAg
ICAgICAgICAgIE1hdGguYWJzKGEyIC0gYjIpIDw9IGdsTWF0cml4LkVQU0lMT04qTWF0aC5tYXgo
MS4wLCBNYXRoLmFicyhhMiksIE1hdGguYWJzKGIyKSkgJiYKKwkgICAgICAgICAgICBNYXRoLmFi
cyhhMyAtIGIzKSA8PSBnbE1hdHJpeC5FUFNJTE9OKk1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTMp
LCBNYXRoLmFicyhiMykpKTsKKwl9OworCisJLyoqCisJICogTXVsdGlwbHkgZWFjaCBlbGVtZW50
IG9mIHRoZSBtYXRyaXggYnkgYSBzY2FsYXIuCisJICoKKwkgKiBAcGFyYW0ge21hdDJ9IG91dCB0
aGUgcmVjZWl2aW5nIG1hdHJpeAorCSAqIEBwYXJhbSB7bWF0Mn0gYSB0aGUgbWF0cml4IHRvIHNj
YWxlCisJICogQHBhcmFtIHtOdW1iZXJ9IGIgYW1vdW50IHRvIHNjYWxlIHRoZSBtYXRyaXgncyBl
bGVtZW50cyBieQorCSAqIEByZXR1cm5zIHttYXQyfSBvdXQKKwkgKi8KKwltYXQyLm11bHRpcGx5
U2NhbGFyID0gZnVuY3Rpb24ob3V0LCBhLCBiKSB7CisJICAgIG91dFswXSA9IGFbMF0gKiBiOwor
CSAgICBvdXRbMV0gPSBhWzFdICogYjsKKwkgICAgb3V0WzJdID0gYVsyXSAqIGI7CisJICAgIG91
dFszXSA9IGFbM10gKiBiOworCSAgICByZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBBZGRz
IHR3byBtYXQyJ3MgYWZ0ZXIgbXVsdGlwbHlpbmcgZWFjaCBlbGVtZW50IG9mIHRoZSBzZWNvbmQg
b3BlcmFuZCBieSBhIHNjYWxhciB2YWx1ZS4KKwkgKgorCSAqIEBwYXJhbSB7bWF0Mn0gb3V0IHRo
ZSByZWNlaXZpbmcgdmVjdG9yCisJICogQHBhcmFtIHttYXQyfSBhIHRoZSBmaXJzdCBvcGVyYW5k
CisJICogQHBhcmFtIHttYXQyfSBiIHRoZSBzZWNvbmQgb3BlcmFuZAorCSAqIEBwYXJhbSB7TnVt
YmVyfSBzY2FsZSB0aGUgYW1vdW50IHRvIHNjYWxlIGIncyBlbGVtZW50cyBieSBiZWZvcmUgYWRk
aW5nCisJICogQHJldHVybnMge21hdDJ9IG91dAorCSAqLworCW1hdDIubXVsdGlwbHlTY2FsYXJB
bmRBZGQgPSBmdW5jdGlvbihvdXQsIGEsIGIsIHNjYWxlKSB7CisJICAgIG91dFswXSA9IGFbMF0g
KyAoYlswXSAqIHNjYWxlKTsKKwkgICAgb3V0WzFdID0gYVsxXSArIChiWzFdICogc2NhbGUpOwor
CSAgICBvdXRbMl0gPSBhWzJdICsgKGJbMl0gKiBzY2FsZSk7CisJICAgIG91dFszXSA9IGFbM10g
KyAoYlszXSAqIHNjYWxlKTsKKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJbW9kdWxlLmV4cG9y
dHMgPSBtYXQyOworCisKKy8qKiovIH0sCisvKiAzICovCisvKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKKworCS8qIENvcHlyaWdodCAoYykgMjAx
NSwgQnJhbmRvbiBKb25lcywgQ29saW4gTWFjS2VuemllIElWLgorCisJUGVybWlzc2lvbiBpcyBo
ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEg
Y29weQorCW9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl
cyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCisJaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz
dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cworCXRvIHVz
ZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwg
YW5kL29yIHNlbGwKKwljb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNv
bnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKwlmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg
dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCisJVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKwlhbGwg
Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworCVRIRSBT
T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E
LCBFWFBSRVNTIE9SCisJSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisJRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisJQVVU
SE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdF
UyBPUiBPVEhFUgorCUxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1Qs
IFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisJT1VUIE9GIE9SIElOIENPTk5FQ1RJ
T04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgorCVRI
RSBTT0ZUV0FSRS4gKi8KKworCXZhciBnbE1hdHJpeCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7
CisKKwkvKioKKwkgKiBAY2xhc3MgMngzIE1hdHJpeAorCSAqIEBuYW1lIG1hdDJkCisJICogCisJ
ICogQGRlc2NyaXB0aW9uIAorCSAqIEEgbWF0MmQgY29udGFpbnMgc2l4IGVsZW1lbnRzIGRlZmlu
ZWQgYXM6CisJICogPHByZT4KKwkgKiBbYSwgYywgdHgsCisJICogIGIsIGQsIHR5XQorCSAqIDwv
cHJlPgorCSAqIFRoaXMgaXMgYSBzaG9ydCBmb3JtIGZvciB0aGUgM3gzIG1hdHJpeDoKKwkgKiA8
cHJlPgorCSAqIFthLCBjLCB0eCwKKwkgKiAgYiwgZCwgdHksCisJICogIDAsIDAsIDFdCisJICog
PC9wcmU+CisJICogVGhlIGxhc3Qgcm93IGlzIGlnbm9yZWQgc28gdGhlIGFycmF5IGlzIHNob3J0
ZXIgYW5kIG9wZXJhdGlvbnMgYXJlIGZhc3Rlci4KKwkgKi8KKwl2YXIgbWF0MmQgPSB7fTsKKwor
CS8qKgorCSAqIENyZWF0ZXMgYSBuZXcgaWRlbnRpdHkgbWF0MmQKKwkgKgorCSAqIEByZXR1cm5z
IHttYXQyZH0gYSBuZXcgMngzIG1hdHJpeAorCSAqLworCW1hdDJkLmNyZWF0ZSA9IGZ1bmN0aW9u
KCkgeworCSAgICB2YXIgb3V0ID0gbmV3IGdsTWF0cml4LkFSUkFZX1RZUEUoNik7CisJICAgIG91
dFswXSA9IDE7CisJICAgIG91dFsxXSA9IDA7CisJICAgIG91dFsyXSA9IDA7CisJICAgIG91dFsz
XSA9IDE7CisJICAgIG91dFs0XSA9IDA7CisJICAgIG91dFs1XSA9IDA7CisJICAgIHJldHVybiBv
dXQ7CisJfTsKKworCS8qKgorCSAqIENyZWF0ZXMgYSBuZXcgbWF0MmQgaW5pdGlhbGl6ZWQgd2l0
aCB2YWx1ZXMgZnJvbSBhbiBleGlzdGluZyBtYXRyaXgKKwkgKgorCSAqIEBwYXJhbSB7bWF0MmR9
IGEgbWF0cml4IHRvIGNsb25lCisJICogQHJldHVybnMge21hdDJkfSBhIG5ldyAyeDMgbWF0cml4
CisJICovCisJbWF0MmQuY2xvbmUgPSBmdW5jdGlvbihhKSB7CisJICAgIHZhciBvdXQgPSBuZXcg
Z2xNYXRyaXguQVJSQVlfVFlQRSg2KTsKKwkgICAgb3V0WzBdID0gYVswXTsKKwkgICAgb3V0WzFd
ID0gYVsxXTsKKwkgICAgb3V0WzJdID0gYVsyXTsKKwkgICAgb3V0WzNdID0gYVszXTsKKwkgICAg
b3V0WzRdID0gYVs0XTsKKwkgICAgb3V0WzVdID0gYVs1XTsKKwkgICAgcmV0dXJuIG91dDsKKwl9
OworCisJLyoqCisJICogQ29weSB0aGUgdmFsdWVzIGZyb20gb25lIG1hdDJkIHRvIGFub3RoZXIK
KwkgKgorCSAqIEBwYXJhbSB7bWF0MmR9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeAorCSAqIEBw
YXJhbSB7bWF0MmR9IGEgdGhlIHNvdXJjZSBtYXRyaXgKKwkgKiBAcmV0dXJucyB7bWF0MmR9IG91
dAorCSAqLworCW1hdDJkLmNvcHkgPSBmdW5jdGlvbihvdXQsIGEpIHsKKwkgICAgb3V0WzBdID0g
YVswXTsKKwkgICAgb3V0WzFdID0gYVsxXTsKKwkgICAgb3V0WzJdID0gYVsyXTsKKwkgICAgb3V0
WzNdID0gYVszXTsKKwkgICAgb3V0WzRdID0gYVs0XTsKKwkgICAgb3V0WzVdID0gYVs1XTsKKwkg
ICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogU2V0IGEgbWF0MmQgdG8gdGhlIGlkZW50
aXR5IG1hdHJpeAorCSAqCisJICogQHBhcmFtIHttYXQyZH0gb3V0IHRoZSByZWNlaXZpbmcgbWF0
cml4CisJICogQHJldHVybnMge21hdDJkfSBvdXQKKwkgKi8KKwltYXQyZC5pZGVudGl0eSA9IGZ1
bmN0aW9uKG91dCkgeworCSAgICBvdXRbMF0gPSAxOworCSAgICBvdXRbMV0gPSAwOworCSAgICBv
dXRbMl0gPSAwOworCSAgICBvdXRbM10gPSAxOworCSAgICBvdXRbNF0gPSAwOworCSAgICBvdXRb
NV0gPSAwOworCSAgICByZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBDcmVhdGUgYSBuZXcg
bWF0MmQgd2l0aCB0aGUgZ2l2ZW4gdmFsdWVzCisJICoKKwkgKiBAcGFyYW0ge051bWJlcn0gYSBD
b21wb25lbnQgQSAoaW5kZXggMCkKKwkgKiBAcGFyYW0ge051bWJlcn0gYiBDb21wb25lbnQgQiAo
aW5kZXggMSkKKwkgKiBAcGFyYW0ge051bWJlcn0gYyBDb21wb25lbnQgQyAoaW5kZXggMikKKwkg
KiBAcGFyYW0ge051bWJlcn0gZCBDb21wb25lbnQgRCAoaW5kZXggMykKKwkgKiBAcGFyYW0ge051
bWJlcn0gdHggQ29tcG9uZW50IFRYIChpbmRleCA0KQorCSAqIEBwYXJhbSB7TnVtYmVyfSB0eSBD
b21wb25lbnQgVFkgKGluZGV4IDUpCisJICogQHJldHVybnMge21hdDJkfSBBIG5ldyBtYXQyZAor
CSAqLworCW1hdDJkLmZyb21WYWx1ZXMgPSBmdW5jdGlvbihhLCBiLCBjLCBkLCB0eCwgdHkpIHsK
KwkgICAgdmFyIG91dCA9IG5ldyBnbE1hdHJpeC5BUlJBWV9UWVBFKDYpOworCSAgICBvdXRbMF0g
PSBhOworCSAgICBvdXRbMV0gPSBiOworCSAgICBvdXRbMl0gPSBjOworCSAgICBvdXRbM10gPSBk
OworCSAgICBvdXRbNF0gPSB0eDsKKwkgICAgb3V0WzVdID0gdHk7CisJICAgIHJldHVybiBvdXQ7
CisJfTsKKworCS8qKgorCSAqIFNldCB0aGUgY29tcG9uZW50cyBvZiBhIG1hdDJkIHRvIHRoZSBn
aXZlbiB2YWx1ZXMKKwkgKgorCSAqIEBwYXJhbSB7bWF0MmR9IG91dCB0aGUgcmVjZWl2aW5nIG1h
dHJpeAorCSAqIEBwYXJhbSB7TnVtYmVyfSBhIENvbXBvbmVudCBBIChpbmRleCAwKQorCSAqIEBw
YXJhbSB7TnVtYmVyfSBiIENvbXBvbmVudCBCIChpbmRleCAxKQorCSAqIEBwYXJhbSB7TnVtYmVy
fSBjIENvbXBvbmVudCBDIChpbmRleCAyKQorCSAqIEBwYXJhbSB7TnVtYmVyfSBkIENvbXBvbmVu
dCBEIChpbmRleCAzKQorCSAqIEBwYXJhbSB7TnVtYmVyfSB0eCBDb21wb25lbnQgVFggKGluZGV4
IDQpCisJICogQHBhcmFtIHtOdW1iZXJ9IHR5IENvbXBvbmVudCBUWSAoaW5kZXggNSkKKwkgKiBA
cmV0dXJucyB7bWF0MmR9IG91dAorCSAqLworCW1hdDJkLnNldCA9IGZ1bmN0aW9uKG91dCwgYSwg
YiwgYywgZCwgdHgsIHR5KSB7CisJICAgIG91dFswXSA9IGE7CisJICAgIG91dFsxXSA9IGI7CisJ
ICAgIG91dFsyXSA9IGM7CisJICAgIG91dFszXSA9IGQ7CisJICAgIG91dFs0XSA9IHR4OworCSAg
ICBvdXRbNV0gPSB0eTsKKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogSW52ZXJ0
cyBhIG1hdDJkCisJICoKKwkgKiBAcGFyYW0ge21hdDJkfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRy
aXgKKwkgKiBAcGFyYW0ge21hdDJkfSBhIHRoZSBzb3VyY2UgbWF0cml4CisJICogQHJldHVybnMg
e21hdDJkfSBvdXQKKwkgKi8KKwltYXQyZC5pbnZlcnQgPSBmdW5jdGlvbihvdXQsIGEpIHsKKwkg
ICAgdmFyIGFhID0gYVswXSwgYWIgPSBhWzFdLCBhYyA9IGFbMl0sIGFkID0gYVszXSwKKwkgICAg
ICAgIGF0eCA9IGFbNF0sIGF0eSA9IGFbNV07CisKKwkgICAgdmFyIGRldCA9IGFhICogYWQgLSBh
YiAqIGFjOworCSAgICBpZighZGV0KXsKKwkgICAgICAgIHJldHVybiBudWxsOworCSAgICB9CisJ
ICAgIGRldCA9IDEuMCAvIGRldDsKKworCSAgICBvdXRbMF0gPSBhZCAqIGRldDsKKwkgICAgb3V0
WzFdID0gLWFiICogZGV0OworCSAgICBvdXRbMl0gPSAtYWMgKiBkZXQ7CisJICAgIG91dFszXSA9
IGFhICogZGV0OworCSAgICBvdXRbNF0gPSAoYWMgKiBhdHkgLSBhZCAqIGF0eCkgKiBkZXQ7CisJ
ICAgIG91dFs1XSA9IChhYiAqIGF0eCAtIGFhICogYXR5KSAqIGRldDsKKwkgICAgcmV0dXJuIG91
dDsKKwl9OworCisJLyoqCisJICogQ2FsY3VsYXRlcyB0aGUgZGV0ZXJtaW5hbnQgb2YgYSBtYXQy
ZAorCSAqCisJICogQHBhcmFtIHttYXQyZH0gYSB0aGUgc291cmNlIG1hdHJpeAorCSAqIEByZXR1
cm5zIHtOdW1iZXJ9IGRldGVybWluYW50IG9mIGEKKwkgKi8KKwltYXQyZC5kZXRlcm1pbmFudCA9
IGZ1bmN0aW9uIChhKSB7CisJICAgIHJldHVybiBhWzBdICogYVszXSAtIGFbMV0gKiBhWzJdOwor
CX07CisKKwkvKioKKwkgKiBNdWx0aXBsaWVzIHR3byBtYXQyZCdzCisJICoKKwkgKiBAcGFyYW0g
e21hdDJkfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXgKKwkgKiBAcGFyYW0ge21hdDJkfSBhIHRo
ZSBmaXJzdCBvcGVyYW5kCisJICogQHBhcmFtIHttYXQyZH0gYiB0aGUgc2Vjb25kIG9wZXJhbmQK
KwkgKiBAcmV0dXJucyB7bWF0MmR9IG91dAorCSAqLworCW1hdDJkLm11bHRpcGx5ID0gZnVuY3Rp
b24gKG91dCwgYSwgYikgeworCSAgICB2YXIgYTAgPSBhWzBdLCBhMSA9IGFbMV0sIGEyID0gYVsy
XSwgYTMgPSBhWzNdLCBhNCA9IGFbNF0sIGE1ID0gYVs1XSwKKwkgICAgICAgIGIwID0gYlswXSwg
YjEgPSBiWzFdLCBiMiA9IGJbMl0sIGIzID0gYlszXSwgYjQgPSBiWzRdLCBiNSA9IGJbNV07CisJ
ICAgIG91dFswXSA9IGEwICogYjAgKyBhMiAqIGIxOworCSAgICBvdXRbMV0gPSBhMSAqIGIwICsg
YTMgKiBiMTsKKwkgICAgb3V0WzJdID0gYTAgKiBiMiArIGEyICogYjM7CisJICAgIG91dFszXSA9
IGExICogYjIgKyBhMyAqIGIzOworCSAgICBvdXRbNF0gPSBhMCAqIGI0ICsgYTIgKiBiNSArIGE0
OworCSAgICBvdXRbNV0gPSBhMSAqIGI0ICsgYTMgKiBiNSArIGE1OworCSAgICByZXR1cm4gb3V0
OworCX07CisKKwkvKioKKwkgKiBBbGlhcyBmb3Ige0BsaW5rIG1hdDJkLm11bHRpcGx5fQorCSAq
IEBmdW5jdGlvbgorCSAqLworCW1hdDJkLm11bCA9IG1hdDJkLm11bHRpcGx5OworCisJLyoqCisJ
ICogUm90YXRlcyBhIG1hdDJkIGJ5IHRoZSBnaXZlbiBhbmdsZQorCSAqCisJICogQHBhcmFtIHtt
YXQyZH0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4CisJICogQHBhcmFtIHttYXQyZH0gYSB0aGUg
bWF0cml4IHRvIHJvdGF0ZQorCSAqIEBwYXJhbSB7TnVtYmVyfSByYWQgdGhlIGFuZ2xlIHRvIHJv
dGF0ZSB0aGUgbWF0cml4IGJ5CisJICogQHJldHVybnMge21hdDJkfSBvdXQKKwkgKi8KKwltYXQy
ZC5yb3RhdGUgPSBmdW5jdGlvbiAob3V0LCBhLCByYWQpIHsKKwkgICAgdmFyIGEwID0gYVswXSwg
YTEgPSBhWzFdLCBhMiA9IGFbMl0sIGEzID0gYVszXSwgYTQgPSBhWzRdLCBhNSA9IGFbNV0sCisJ
ICAgICAgICBzID0gTWF0aC5zaW4ocmFkKSwKKwkgICAgICAgIGMgPSBNYXRoLmNvcyhyYWQpOwor
CSAgICBvdXRbMF0gPSBhMCAqICBjICsgYTIgKiBzOworCSAgICBvdXRbMV0gPSBhMSAqICBjICsg
YTMgKiBzOworCSAgICBvdXRbMl0gPSBhMCAqIC1zICsgYTIgKiBjOworCSAgICBvdXRbM10gPSBh
MSAqIC1zICsgYTMgKiBjOworCSAgICBvdXRbNF0gPSBhNDsKKwkgICAgb3V0WzVdID0gYTU7CisJ
ICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIFNjYWxlcyB0aGUgbWF0MmQgYnkgdGhl
IGRpbWVuc2lvbnMgaW4gdGhlIGdpdmVuIHZlYzIKKwkgKgorCSAqIEBwYXJhbSB7bWF0MmR9IG91
dCB0aGUgcmVjZWl2aW5nIG1hdHJpeAorCSAqIEBwYXJhbSB7bWF0MmR9IGEgdGhlIG1hdHJpeCB0
byB0cmFuc2xhdGUKKwkgKiBAcGFyYW0ge3ZlYzJ9IHYgdGhlIHZlYzIgdG8gc2NhbGUgdGhlIG1h
dHJpeCBieQorCSAqIEByZXR1cm5zIHttYXQyZH0gb3V0CisJICoqLworCW1hdDJkLnNjYWxlID0g
ZnVuY3Rpb24ob3V0LCBhLCB2KSB7CisJICAgIHZhciBhMCA9IGFbMF0sIGExID0gYVsxXSwgYTIg
PSBhWzJdLCBhMyA9IGFbM10sIGE0ID0gYVs0XSwgYTUgPSBhWzVdLAorCSAgICAgICAgdjAgPSB2
WzBdLCB2MSA9IHZbMV07CisJICAgIG91dFswXSA9IGEwICogdjA7CisJICAgIG91dFsxXSA9IGEx
ICogdjA7CisJICAgIG91dFsyXSA9IGEyICogdjE7CisJICAgIG91dFszXSA9IGEzICogdjE7CisJ
ICAgIG91dFs0XSA9IGE0OworCSAgICBvdXRbNV0gPSBhNTsKKwkgICAgcmV0dXJuIG91dDsKKwl9
OworCisJLyoqCisJICogVHJhbnNsYXRlcyB0aGUgbWF0MmQgYnkgdGhlIGRpbWVuc2lvbnMgaW4g
dGhlIGdpdmVuIHZlYzIKKwkgKgorCSAqIEBwYXJhbSB7bWF0MmR9IG91dCB0aGUgcmVjZWl2aW5n
IG1hdHJpeAorCSAqIEBwYXJhbSB7bWF0MmR9IGEgdGhlIG1hdHJpeCB0byB0cmFuc2xhdGUKKwkg
KiBAcGFyYW0ge3ZlYzJ9IHYgdGhlIHZlYzIgdG8gdHJhbnNsYXRlIHRoZSBtYXRyaXggYnkKKwkg
KiBAcmV0dXJucyB7bWF0MmR9IG91dAorCSAqKi8KKwltYXQyZC50cmFuc2xhdGUgPSBmdW5jdGlv
bihvdXQsIGEsIHYpIHsKKwkgICAgdmFyIGEwID0gYVswXSwgYTEgPSBhWzFdLCBhMiA9IGFbMl0s
IGEzID0gYVszXSwgYTQgPSBhWzRdLCBhNSA9IGFbNV0sCisJICAgICAgICB2MCA9IHZbMF0sIHYx
ID0gdlsxXTsKKwkgICAgb3V0WzBdID0gYTA7CisJICAgIG91dFsxXSA9IGExOworCSAgICBvdXRb
Ml0gPSBhMjsKKwkgICAgb3V0WzNdID0gYTM7CisJICAgIG91dFs0XSA9IGEwICogdjAgKyBhMiAq
IHYxICsgYTQ7CisJICAgIG91dFs1XSA9IGExICogdjAgKyBhMyAqIHYxICsgYTU7CisJICAgIHJl
dHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIENyZWF0ZXMgYSBtYXRyaXggZnJvbSBhIGdpdmVu
IGFuZ2xlCisJICogVGhpcyBpcyBlcXVpdmFsZW50IHRvIChidXQgbXVjaCBmYXN0ZXIgdGhhbik6
CisJICoKKwkgKiAgICAgbWF0MmQuaWRlbnRpdHkoZGVzdCk7CisJICogICAgIG1hdDJkLnJvdGF0
ZShkZXN0LCBkZXN0LCByYWQpOworCSAqCisJICogQHBhcmFtIHttYXQyZH0gb3V0IG1hdDJkIHJl
Y2VpdmluZyBvcGVyYXRpb24gcmVzdWx0CisJICogQHBhcmFtIHtOdW1iZXJ9IHJhZCB0aGUgYW5n
bGUgdG8gcm90YXRlIHRoZSBtYXRyaXggYnkKKwkgKiBAcmV0dXJucyB7bWF0MmR9IG91dAorCSAq
LworCW1hdDJkLmZyb21Sb3RhdGlvbiA9IGZ1bmN0aW9uKG91dCwgcmFkKSB7CisJICAgIHZhciBz
ID0gTWF0aC5zaW4ocmFkKSwgYyA9IE1hdGguY29zKHJhZCk7CisJICAgIG91dFswXSA9IGM7CisJ
ICAgIG91dFsxXSA9IHM7CisJICAgIG91dFsyXSA9IC1zOworCSAgICBvdXRbM10gPSBjOworCSAg
ICBvdXRbNF0gPSAwOworCSAgICBvdXRbNV0gPSAwOworCSAgICByZXR1cm4gb3V0OworCX0KKwor
CS8qKgorCSAqIENyZWF0ZXMgYSBtYXRyaXggZnJvbSBhIHZlY3RvciBzY2FsaW5nCisJICogVGhp
cyBpcyBlcXVpdmFsZW50IHRvIChidXQgbXVjaCBmYXN0ZXIgdGhhbik6CisJICoKKwkgKiAgICAg
bWF0MmQuaWRlbnRpdHkoZGVzdCk7CisJICogICAgIG1hdDJkLnNjYWxlKGRlc3QsIGRlc3QsIHZl
Yyk7CisJICoKKwkgKiBAcGFyYW0ge21hdDJkfSBvdXQgbWF0MmQgcmVjZWl2aW5nIG9wZXJhdGlv
biByZXN1bHQKKwkgKiBAcGFyYW0ge3ZlYzJ9IHYgU2NhbGluZyB2ZWN0b3IKKwkgKiBAcmV0dXJu
cyB7bWF0MmR9IG91dAorCSAqLworCW1hdDJkLmZyb21TY2FsaW5nID0gZnVuY3Rpb24ob3V0LCB2
KSB7CisJICAgIG91dFswXSA9IHZbMF07CisJICAgIG91dFsxXSA9IDA7CisJICAgIG91dFsyXSA9
IDA7CisJICAgIG91dFszXSA9IHZbMV07CisJICAgIG91dFs0XSA9IDA7CisJICAgIG91dFs1XSA9
IDA7CisJICAgIHJldHVybiBvdXQ7CisJfQorCisJLyoqCisJICogQ3JlYXRlcyBhIG1hdHJpeCBm
cm9tIGEgdmVjdG9yIHRyYW5zbGF0aW9uCisJICogVGhpcyBpcyBlcXVpdmFsZW50IHRvIChidXQg
bXVjaCBmYXN0ZXIgdGhhbik6CisJICoKKwkgKiAgICAgbWF0MmQuaWRlbnRpdHkoZGVzdCk7CisJ
ICogICAgIG1hdDJkLnRyYW5zbGF0ZShkZXN0LCBkZXN0LCB2ZWMpOworCSAqCisJICogQHBhcmFt
IHttYXQyZH0gb3V0IG1hdDJkIHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0CisJICogQHBhcmFt
IHt2ZWMyfSB2IFRyYW5zbGF0aW9uIHZlY3RvcgorCSAqIEByZXR1cm5zIHttYXQyZH0gb3V0CisJ
ICovCisJbWF0MmQuZnJvbVRyYW5zbGF0aW9uID0gZnVuY3Rpb24ob3V0LCB2KSB7CisJICAgIG91
dFswXSA9IDE7CisJICAgIG91dFsxXSA9IDA7CisJICAgIG91dFsyXSA9IDA7CisJICAgIG91dFsz
XSA9IDE7CisJICAgIG91dFs0XSA9IHZbMF07CisJICAgIG91dFs1XSA9IHZbMV07CisJICAgIHJl
dHVybiBvdXQ7CisJfQorCisJLyoqCisJICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlv
biBvZiBhIG1hdDJkCisJICoKKwkgKiBAcGFyYW0ge21hdDJkfSBhIG1hdHJpeCB0byByZXByZXNl
bnQgYXMgYSBzdHJpbmcKKwkgKiBAcmV0dXJucyB7U3RyaW5nfSBzdHJpbmcgcmVwcmVzZW50YXRp
b24gb2YgdGhlIG1hdHJpeAorCSAqLworCW1hdDJkLnN0ciA9IGZ1bmN0aW9uIChhKSB7CisJICAg
IHJldHVybiAnbWF0MmQoJyArIGFbMF0gKyAnLCAnICsgYVsxXSArICcsICcgKyBhWzJdICsgJywg
JyArIAorCSAgICAgICAgICAgICAgICAgICAgYVszXSArICcsICcgKyBhWzRdICsgJywgJyArIGFb
NV0gKyAnKSc7CisJfTsKKworCS8qKgorCSAqIFJldHVybnMgRnJvYmVuaXVzIG5vcm0gb2YgYSBt
YXQyZAorCSAqCisJICogQHBhcmFtIHttYXQyZH0gYSB0aGUgbWF0cml4IHRvIGNhbGN1bGF0ZSBG
cm9iZW5pdXMgbm9ybSBvZgorCSAqIEByZXR1cm5zIHtOdW1iZXJ9IEZyb2Jlbml1cyBub3JtCisJ
ICovCisJbWF0MmQuZnJvYiA9IGZ1bmN0aW9uIChhKSB7IAorCSAgICByZXR1cm4oTWF0aC5zcXJ0
KE1hdGgucG93KGFbMF0sIDIpICsgTWF0aC5wb3coYVsxXSwgMikgKyBNYXRoLnBvdyhhWzJdLCAy
KSArIE1hdGgucG93KGFbM10sIDIpICsgTWF0aC5wb3coYVs0XSwgMikgKyBNYXRoLnBvdyhhWzVd
LCAyKSArIDEpKQorCX07IAorCisJLyoqCisJICogQWRkcyB0d28gbWF0MmQncworCSAqCisJICog
QHBhcmFtIHttYXQyZH0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4CisJICogQHBhcmFtIHttYXQy
ZH0gYSB0aGUgZmlyc3Qgb3BlcmFuZAorCSAqIEBwYXJhbSB7bWF0MmR9IGIgdGhlIHNlY29uZCBv
cGVyYW5kCisJICogQHJldHVybnMge21hdDJkfSBvdXQKKwkgKi8KKwltYXQyZC5hZGQgPSBmdW5j
dGlvbihvdXQsIGEsIGIpIHsKKwkgICAgb3V0WzBdID0gYVswXSArIGJbMF07CisJICAgIG91dFsx
XSA9IGFbMV0gKyBiWzFdOworCSAgICBvdXRbMl0gPSBhWzJdICsgYlsyXTsKKwkgICAgb3V0WzNd
ID0gYVszXSArIGJbM107CisJICAgIG91dFs0XSA9IGFbNF0gKyBiWzRdOworCSAgICBvdXRbNV0g
PSBhWzVdICsgYls1XTsKKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogU3VidHJh
Y3RzIG1hdHJpeCBiIGZyb20gbWF0cml4IGEKKwkgKgorCSAqIEBwYXJhbSB7bWF0MmR9IG91dCB0
aGUgcmVjZWl2aW5nIG1hdHJpeAorCSAqIEBwYXJhbSB7bWF0MmR9IGEgdGhlIGZpcnN0IG9wZXJh
bmQKKwkgKiBAcGFyYW0ge21hdDJkfSBiIHRoZSBzZWNvbmQgb3BlcmFuZAorCSAqIEByZXR1cm5z
IHttYXQyZH0gb3V0CisJICovCisJbWF0MmQuc3VidHJhY3QgPSBmdW5jdGlvbihvdXQsIGEsIGIp
IHsKKwkgICAgb3V0WzBdID0gYVswXSAtIGJbMF07CisJICAgIG91dFsxXSA9IGFbMV0gLSBiWzFd
OworCSAgICBvdXRbMl0gPSBhWzJdIC0gYlsyXTsKKwkgICAgb3V0WzNdID0gYVszXSAtIGJbM107
CisJICAgIG91dFs0XSA9IGFbNF0gLSBiWzRdOworCSAgICBvdXRbNV0gPSBhWzVdIC0gYls1XTsK
KwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogQWxpYXMgZm9yIHtAbGluayBtYXQy
ZC5zdWJ0cmFjdH0KKwkgKiBAZnVuY3Rpb24KKwkgKi8KKwltYXQyZC5zdWIgPSBtYXQyZC5zdWJ0
cmFjdDsKKworCS8qKgorCSAqIE11bHRpcGx5IGVhY2ggZWxlbWVudCBvZiB0aGUgbWF0cml4IGJ5
IGEgc2NhbGFyLgorCSAqCisJICogQHBhcmFtIHttYXQyZH0gb3V0IHRoZSByZWNlaXZpbmcgbWF0
cml4CisJICogQHBhcmFtIHttYXQyZH0gYSB0aGUgbWF0cml4IHRvIHNjYWxlCisJICogQHBhcmFt
IHtOdW1iZXJ9IGIgYW1vdW50IHRvIHNjYWxlIHRoZSBtYXRyaXgncyBlbGVtZW50cyBieQorCSAq
IEByZXR1cm5zIHttYXQyZH0gb3V0CisJICovCisJbWF0MmQubXVsdGlwbHlTY2FsYXIgPSBmdW5j
dGlvbihvdXQsIGEsIGIpIHsKKwkgICAgb3V0WzBdID0gYVswXSAqIGI7CisJICAgIG91dFsxXSA9
IGFbMV0gKiBiOworCSAgICBvdXRbMl0gPSBhWzJdICogYjsKKwkgICAgb3V0WzNdID0gYVszXSAq
IGI7CisJICAgIG91dFs0XSA9IGFbNF0gKiBiOworCSAgICBvdXRbNV0gPSBhWzVdICogYjsKKwkg
ICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogQWRkcyB0d28gbWF0MmQncyBhZnRlciBt
dWx0aXBseWluZyBlYWNoIGVsZW1lbnQgb2YgdGhlIHNlY29uZCBvcGVyYW5kIGJ5IGEgc2NhbGFy
IHZhbHVlLgorCSAqCisJICogQHBhcmFtIHttYXQyZH0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9y
CisJICogQHBhcmFtIHttYXQyZH0gYSB0aGUgZmlyc3Qgb3BlcmFuZAorCSAqIEBwYXJhbSB7bWF0
MmR9IGIgdGhlIHNlY29uZCBvcGVyYW5kCisJICogQHBhcmFtIHtOdW1iZXJ9IHNjYWxlIHRoZSBh
bW91bnQgdG8gc2NhbGUgYidzIGVsZW1lbnRzIGJ5IGJlZm9yZSBhZGRpbmcKKwkgKiBAcmV0dXJu
cyB7bWF0MmR9IG91dAorCSAqLworCW1hdDJkLm11bHRpcGx5U2NhbGFyQW5kQWRkID0gZnVuY3Rp
b24ob3V0LCBhLCBiLCBzY2FsZSkgeworCSAgICBvdXRbMF0gPSBhWzBdICsgKGJbMF0gKiBzY2Fs
ZSk7CisJICAgIG91dFsxXSA9IGFbMV0gKyAoYlsxXSAqIHNjYWxlKTsKKwkgICAgb3V0WzJdID0g
YVsyXSArIChiWzJdICogc2NhbGUpOworCSAgICBvdXRbM10gPSBhWzNdICsgKGJbM10gKiBzY2Fs
ZSk7CisJICAgIG91dFs0XSA9IGFbNF0gKyAoYls0XSAqIHNjYWxlKTsKKwkgICAgb3V0WzVdID0g
YVs1XSArIChiWzVdICogc2NhbGUpOworCSAgICByZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkg
KiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBtYXRyaWNlcyBoYXZlIGV4YWN0bHkgdGhlIHNh
bWUgZWxlbWVudHMgaW4gdGhlIHNhbWUgcG9zaXRpb24gKHdoZW4gY29tcGFyZWQgd2l0aCA9PT0p
CisJICoKKwkgKiBAcGFyYW0ge21hdDJkfSBhIFRoZSBmaXJzdCBtYXRyaXguCisJICogQHBhcmFt
IHttYXQyZH0gYiBUaGUgc2Vjb25kIG1hdHJpeC4KKwkgKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1
ZSBpZiB0aGUgbWF0cmljZXMgYXJlIGVxdWFsLCBmYWxzZSBvdGhlcndpc2UuCisJICovCisJbWF0
MmQuZXhhY3RFcXVhbHMgPSBmdW5jdGlvbiAoYSwgYikgeworCSAgICByZXR1cm4gYVswXSA9PT0g
YlswXSAmJiBhWzFdID09PSBiWzFdICYmIGFbMl0gPT09IGJbMl0gJiYgYVszXSA9PT0gYlszXSAm
JiBhWzRdID09PSBiWzRdICYmIGFbNV0gPT09IGJbNV07CisJfTsKKworCS8qKgorCSAqIFJldHVy
bnMgd2hldGhlciBvciBub3QgdGhlIG1hdHJpY2VzIGhhdmUgYXBwcm94aW1hdGVseSB0aGUgc2Ft
ZSBlbGVtZW50cyBpbiB0aGUgc2FtZSBwb3NpdGlvbi4KKwkgKgorCSAqIEBwYXJhbSB7bWF0MmR9
IGEgVGhlIGZpcnN0IG1hdHJpeC4KKwkgKiBAcGFyYW0ge21hdDJkfSBiIFRoZSBzZWNvbmQgbWF0
cml4LgorCSAqIEByZXR1cm5zIHtCb29sZWFufSBUcnVlIGlmIHRoZSBtYXRyaWNlcyBhcmUgZXF1
YWwsIGZhbHNlIG90aGVyd2lzZS4KKwkgKi8KKwltYXQyZC5lcXVhbHMgPSBmdW5jdGlvbiAoYSwg
YikgeworCSAgICB2YXIgYTAgPSBhWzBdLCBhMSA9IGFbMV0sIGEyID0gYVsyXSwgYTMgPSBhWzNd
LCBhNCA9IGFbNF0sIGE1ID0gYVs1XTsKKwkgICAgdmFyIGIwID0gYlswXSwgYjEgPSBiWzFdLCBi
MiA9IGJbMl0sIGIzID0gYlszXSwgYjQgPSBiWzRdLCBiNSA9IGJbNV07CisJICAgIHJldHVybiAo
TWF0aC5hYnMoYTAgLSBiMCkgPD0gZ2xNYXRyaXguRVBTSUxPTipNYXRoLm1heCgxLjAsIE1hdGgu
YWJzKGEwKSwgTWF0aC5hYnMoYjApKSAmJgorCSAgICAgICAgICAgIE1hdGguYWJzKGExIC0gYjEp
IDw9IGdsTWF0cml4LkVQU0lMT04qTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhMSksIE1hdGguYWJz
KGIxKSkgJiYKKwkgICAgICAgICAgICBNYXRoLmFicyhhMiAtIGIyKSA8PSBnbE1hdHJpeC5FUFNJ
TE9OKk1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTIpLCBNYXRoLmFicyhiMikpICYmCisJICAgICAg
ICAgICAgTWF0aC5hYnMoYTMgLSBiMykgPD0gZ2xNYXRyaXguRVBTSUxPTipNYXRoLm1heCgxLjAs
IE1hdGguYWJzKGEzKSwgTWF0aC5hYnMoYjMpKSAmJgorCSAgICAgICAgICAgIE1hdGguYWJzKGE0
IC0gYjQpIDw9IGdsTWF0cml4LkVQU0lMT04qTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhNCksIE1h
dGguYWJzKGI0KSkgJiYKKwkgICAgICAgICAgICBNYXRoLmFicyhhNSAtIGI1KSA8PSBnbE1hdHJp
eC5FUFNJTE9OKk1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTUpLCBNYXRoLmFicyhiNSkpKTsKKwl9
OworCisJbW9kdWxlLmV4cG9ydHMgPSBtYXQyZDsKKworCisvKioqLyB9LAorLyogNCAqLworLyoq
Ki8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CisKKwkv
KiBDb3B5cmlnaHQgKGMpIDIwMTUsIEJyYW5kb24gSm9uZXMsIENvbGluIE1hY0tlbnppZSBJVi4K
KworCVBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg
cGVyc29uIG9idGFpbmluZyBhIGNvcHkKKwlvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVk
IGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAorCWluIHRoZSBT
b2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9u
IHRoZSByaWdodHMKKwl0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3Ry
aWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCisJY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg
YW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisJZnVybmlzaGVk
IHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworCVRoZSBh
Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJl
IGluY2x1ZGVkIGluCisJYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUg
U29mdHdhcmUuCisKKwlUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX
QVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorCUlNUExJRUQsIElOQ0xVRElORyBCVVQg
Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorCUZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRQorCUFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZP
UiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKwlMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4g
QUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorCU9V
VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI
RVIgREVBTElOR1MgSU4KKwlUSEUgU09GVFdBUkUuICovCisKKwl2YXIgZ2xNYXRyaXggPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDEpOworCisJLyoqCisJICogQGNsYXNzIDN4MyBNYXRyaXgKKwkgKiBA
bmFtZSBtYXQzCisJICovCisJdmFyIG1hdDMgPSB7fTsKKworCS8qKgorCSAqIENyZWF0ZXMgYSBu
ZXcgaWRlbnRpdHkgbWF0MworCSAqCisJICogQHJldHVybnMge21hdDN9IGEgbmV3IDN4MyBtYXRy
aXgKKwkgKi8KKwltYXQzLmNyZWF0ZSA9IGZ1bmN0aW9uKCkgeworCSAgICB2YXIgb3V0ID0gbmV3
IGdsTWF0cml4LkFSUkFZX1RZUEUoOSk7CisJICAgIG91dFswXSA9IDE7CisJICAgIG91dFsxXSA9
IDA7CisJICAgIG91dFsyXSA9IDA7CisJICAgIG91dFszXSA9IDA7CisJICAgIG91dFs0XSA9IDE7
CisJICAgIG91dFs1XSA9IDA7CisJICAgIG91dFs2XSA9IDA7CisJICAgIG91dFs3XSA9IDA7CisJ
ICAgIG91dFs4XSA9IDE7CisJICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIENvcGll
cyB0aGUgdXBwZXItbGVmdCAzeDMgdmFsdWVzIGludG8gdGhlIGdpdmVuIG1hdDMuCisJICoKKwkg
KiBAcGFyYW0ge21hdDN9IG91dCB0aGUgcmVjZWl2aW5nIDN4MyBtYXRyaXgKKwkgKiBAcGFyYW0g
e21hdDR9IGEgICB0aGUgc291cmNlIDR4NCBtYXRyaXgKKwkgKiBAcmV0dXJucyB7bWF0M30gb3V0
CisJICovCisJbWF0My5mcm9tTWF0NCA9IGZ1bmN0aW9uKG91dCwgYSkgeworCSAgICBvdXRbMF0g
PSBhWzBdOworCSAgICBvdXRbMV0gPSBhWzFdOworCSAgICBvdXRbMl0gPSBhWzJdOworCSAgICBv
dXRbM10gPSBhWzRdOworCSAgICBvdXRbNF0gPSBhWzVdOworCSAgICBvdXRbNV0gPSBhWzZdOwor
CSAgICBvdXRbNl0gPSBhWzhdOworCSAgICBvdXRbN10gPSBhWzldOworCSAgICBvdXRbOF0gPSBh
WzEwXTsKKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogQ3JlYXRlcyBhIG5ldyBt
YXQzIGluaXRpYWxpemVkIHdpdGggdmFsdWVzIGZyb20gYW4gZXhpc3RpbmcgbWF0cml4CisJICoK
KwkgKiBAcGFyYW0ge21hdDN9IGEgbWF0cml4IHRvIGNsb25lCisJICogQHJldHVybnMge21hdDN9
IGEgbmV3IDN4MyBtYXRyaXgKKwkgKi8KKwltYXQzLmNsb25lID0gZnVuY3Rpb24oYSkgeworCSAg
ICB2YXIgb3V0ID0gbmV3IGdsTWF0cml4LkFSUkFZX1RZUEUoOSk7CisJICAgIG91dFswXSA9IGFb
MF07CisJICAgIG91dFsxXSA9IGFbMV07CisJICAgIG91dFsyXSA9IGFbMl07CisJICAgIG91dFsz
XSA9IGFbM107CisJICAgIG91dFs0XSA9IGFbNF07CisJICAgIG91dFs1XSA9IGFbNV07CisJICAg
IG91dFs2XSA9IGFbNl07CisJICAgIG91dFs3XSA9IGFbN107CisJICAgIG91dFs4XSA9IGFbOF07
CisJICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIENvcHkgdGhlIHZhbHVlcyBmcm9t
IG9uZSBtYXQzIHRvIGFub3RoZXIKKwkgKgorCSAqIEBwYXJhbSB7bWF0M30gb3V0IHRoZSByZWNl
aXZpbmcgbWF0cml4CisJICogQHBhcmFtIHttYXQzfSBhIHRoZSBzb3VyY2UgbWF0cml4CisJICog
QHJldHVybnMge21hdDN9IG91dAorCSAqLworCW1hdDMuY29weSA9IGZ1bmN0aW9uKG91dCwgYSkg
eworCSAgICBvdXRbMF0gPSBhWzBdOworCSAgICBvdXRbMV0gPSBhWzFdOworCSAgICBvdXRbMl0g
PSBhWzJdOworCSAgICBvdXRbM10gPSBhWzNdOworCSAgICBvdXRbNF0gPSBhWzRdOworCSAgICBv
dXRbNV0gPSBhWzVdOworCSAgICBvdXRbNl0gPSBhWzZdOworCSAgICBvdXRbN10gPSBhWzddOwor
CSAgICBvdXRbOF0gPSBhWzhdOworCSAgICByZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBD
cmVhdGUgYSBuZXcgbWF0MyB3aXRoIHRoZSBnaXZlbiB2YWx1ZXMKKwkgKgorCSAqIEBwYXJhbSB7
TnVtYmVyfSBtMDAgQ29tcG9uZW50IGluIGNvbHVtbiAwLCByb3cgMCBwb3NpdGlvbiAoaW5kZXgg
MCkKKwkgKiBAcGFyYW0ge051bWJlcn0gbTAxIENvbXBvbmVudCBpbiBjb2x1bW4gMCwgcm93IDEg
cG9zaXRpb24gKGluZGV4IDEpCisJICogQHBhcmFtIHtOdW1iZXJ9IG0wMiBDb21wb25lbnQgaW4g
Y29sdW1uIDAsIHJvdyAyIHBvc2l0aW9uIChpbmRleCAyKQorCSAqIEBwYXJhbSB7TnVtYmVyfSBt
MTAgQ29tcG9uZW50IGluIGNvbHVtbiAxLCByb3cgMCBwb3NpdGlvbiAoaW5kZXggMykKKwkgKiBA
cGFyYW0ge051bWJlcn0gbTExIENvbXBvbmVudCBpbiBjb2x1bW4gMSwgcm93IDEgcG9zaXRpb24g
KGluZGV4IDQpCisJICogQHBhcmFtIHtOdW1iZXJ9IG0xMiBDb21wb25lbnQgaW4gY29sdW1uIDEs
IHJvdyAyIHBvc2l0aW9uIChpbmRleCA1KQorCSAqIEBwYXJhbSB7TnVtYmVyfSBtMjAgQ29tcG9u
ZW50IGluIGNvbHVtbiAyLCByb3cgMCBwb3NpdGlvbiAoaW5kZXggNikKKwkgKiBAcGFyYW0ge051
bWJlcn0gbTIxIENvbXBvbmVudCBpbiBjb2x1bW4gMiwgcm93IDEgcG9zaXRpb24gKGluZGV4IDcp
CisJICogQHBhcmFtIHtOdW1iZXJ9IG0yMiBDb21wb25lbnQgaW4gY29sdW1uIDIsIHJvdyAyIHBv
c2l0aW9uIChpbmRleCA4KQorCSAqIEByZXR1cm5zIHttYXQzfSBBIG5ldyBtYXQzCisJICovCisJ
bWF0My5mcm9tVmFsdWVzID0gZnVuY3Rpb24obTAwLCBtMDEsIG0wMiwgbTEwLCBtMTEsIG0xMiwg
bTIwLCBtMjEsIG0yMikgeworCSAgICB2YXIgb3V0ID0gbmV3IGdsTWF0cml4LkFSUkFZX1RZUEUo
OSk7CisJICAgIG91dFswXSA9IG0wMDsKKwkgICAgb3V0WzFdID0gbTAxOworCSAgICBvdXRbMl0g
PSBtMDI7CisJICAgIG91dFszXSA9IG0xMDsKKwkgICAgb3V0WzRdID0gbTExOworCSAgICBvdXRb
NV0gPSBtMTI7CisJICAgIG91dFs2XSA9IG0yMDsKKwkgICAgb3V0WzddID0gbTIxOworCSAgICBv
dXRbOF0gPSBtMjI7CisJICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIFNldCB0aGUg
Y29tcG9uZW50cyBvZiBhIG1hdDMgdG8gdGhlIGdpdmVuIHZhbHVlcworCSAqCisJICogQHBhcmFt
IHttYXQzfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXgKKwkgKiBAcGFyYW0ge051bWJlcn0gbTAw
IENvbXBvbmVudCBpbiBjb2x1bW4gMCwgcm93IDAgcG9zaXRpb24gKGluZGV4IDApCisJICogQHBh
cmFtIHtOdW1iZXJ9IG0wMSBDb21wb25lbnQgaW4gY29sdW1uIDAsIHJvdyAxIHBvc2l0aW9uIChp
bmRleCAxKQorCSAqIEBwYXJhbSB7TnVtYmVyfSBtMDIgQ29tcG9uZW50IGluIGNvbHVtbiAwLCBy
b3cgMiBwb3NpdGlvbiAoaW5kZXggMikKKwkgKiBAcGFyYW0ge051bWJlcn0gbTEwIENvbXBvbmVu
dCBpbiBjb2x1bW4gMSwgcm93IDAgcG9zaXRpb24gKGluZGV4IDMpCisJICogQHBhcmFtIHtOdW1i
ZXJ9IG0xMSBDb21wb25lbnQgaW4gY29sdW1uIDEsIHJvdyAxIHBvc2l0aW9uIChpbmRleCA0KQor
CSAqIEBwYXJhbSB7TnVtYmVyfSBtMTIgQ29tcG9uZW50IGluIGNvbHVtbiAxLCByb3cgMiBwb3Np
dGlvbiAoaW5kZXggNSkKKwkgKiBAcGFyYW0ge051bWJlcn0gbTIwIENvbXBvbmVudCBpbiBjb2x1
bW4gMiwgcm93IDAgcG9zaXRpb24gKGluZGV4IDYpCisJICogQHBhcmFtIHtOdW1iZXJ9IG0yMSBD
b21wb25lbnQgaW4gY29sdW1uIDIsIHJvdyAxIHBvc2l0aW9uIChpbmRleCA3KQorCSAqIEBwYXJh
bSB7TnVtYmVyfSBtMjIgQ29tcG9uZW50IGluIGNvbHVtbiAyLCByb3cgMiBwb3NpdGlvbiAoaW5k
ZXggOCkKKwkgKiBAcmV0dXJucyB7bWF0M30gb3V0CisJICovCisJbWF0My5zZXQgPSBmdW5jdGlv
bihvdXQsIG0wMCwgbTAxLCBtMDIsIG0xMCwgbTExLCBtMTIsIG0yMCwgbTIxLCBtMjIpIHsKKwkg
ICAgb3V0WzBdID0gbTAwOworCSAgICBvdXRbMV0gPSBtMDE7CisJICAgIG91dFsyXSA9IG0wMjsK
KwkgICAgb3V0WzNdID0gbTEwOworCSAgICBvdXRbNF0gPSBtMTE7CisJICAgIG91dFs1XSA9IG0x
MjsKKwkgICAgb3V0WzZdID0gbTIwOworCSAgICBvdXRbN10gPSBtMjE7CisJICAgIG91dFs4XSA9
IG0yMjsKKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogU2V0IGEgbWF0MyB0byB0
aGUgaWRlbnRpdHkgbWF0cml4CisJICoKKwkgKiBAcGFyYW0ge21hdDN9IG91dCB0aGUgcmVjZWl2
aW5nIG1hdHJpeAorCSAqIEByZXR1cm5zIHttYXQzfSBvdXQKKwkgKi8KKwltYXQzLmlkZW50aXR5
ID0gZnVuY3Rpb24ob3V0KSB7CisJICAgIG91dFswXSA9IDE7CisJICAgIG91dFsxXSA9IDA7CisJ
ICAgIG91dFsyXSA9IDA7CisJICAgIG91dFszXSA9IDA7CisJICAgIG91dFs0XSA9IDE7CisJICAg
IG91dFs1XSA9IDA7CisJICAgIG91dFs2XSA9IDA7CisJICAgIG91dFs3XSA9IDA7CisJICAgIG91
dFs4XSA9IDE7CisJICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIFRyYW5zcG9zZSB0
aGUgdmFsdWVzIG9mIGEgbWF0MworCSAqCisJICogQHBhcmFtIHttYXQzfSBvdXQgdGhlIHJlY2Vp
dmluZyBtYXRyaXgKKwkgKiBAcGFyYW0ge21hdDN9IGEgdGhlIHNvdXJjZSBtYXRyaXgKKwkgKiBA
cmV0dXJucyB7bWF0M30gb3V0CisJICovCisJbWF0My50cmFuc3Bvc2UgPSBmdW5jdGlvbihvdXQs
IGEpIHsKKwkgICAgLy8gSWYgd2UgYXJlIHRyYW5zcG9zaW5nIG91cnNlbHZlcyB3ZSBjYW4gc2tp
cCBhIGZldyBzdGVwcyBidXQgaGF2ZSB0byBjYWNoZSBzb21lIHZhbHVlcworCSAgICBpZiAob3V0
ID09PSBhKSB7CisJICAgICAgICB2YXIgYTAxID0gYVsxXSwgYTAyID0gYVsyXSwgYTEyID0gYVs1
XTsKKwkgICAgICAgIG91dFsxXSA9IGFbM107CisJICAgICAgICBvdXRbMl0gPSBhWzZdOworCSAg
ICAgICAgb3V0WzNdID0gYTAxOworCSAgICAgICAgb3V0WzVdID0gYVs3XTsKKwkgICAgICAgIG91
dFs2XSA9IGEwMjsKKwkgICAgICAgIG91dFs3XSA9IGExMjsKKwkgICAgfSBlbHNlIHsKKwkgICAg
ICAgIG91dFswXSA9IGFbMF07CisJICAgICAgICBvdXRbMV0gPSBhWzNdOworCSAgICAgICAgb3V0
WzJdID0gYVs2XTsKKwkgICAgICAgIG91dFszXSA9IGFbMV07CisJICAgICAgICBvdXRbNF0gPSBh
WzRdOworCSAgICAgICAgb3V0WzVdID0gYVs3XTsKKwkgICAgICAgIG91dFs2XSA9IGFbMl07CisJ
ICAgICAgICBvdXRbN10gPSBhWzVdOworCSAgICAgICAgb3V0WzhdID0gYVs4XTsKKwkgICAgfQor
CSAgICAKKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogSW52ZXJ0cyBhIG1hdDMK
KwkgKgorCSAqIEBwYXJhbSB7bWF0M30gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4CisJICogQHBh
cmFtIHttYXQzfSBhIHRoZSBzb3VyY2UgbWF0cml4CisJICogQHJldHVybnMge21hdDN9IG91dAor
CSAqLworCW1hdDMuaW52ZXJ0ID0gZnVuY3Rpb24ob3V0LCBhKSB7CisJICAgIHZhciBhMDAgPSBh
WzBdLCBhMDEgPSBhWzFdLCBhMDIgPSBhWzJdLAorCSAgICAgICAgYTEwID0gYVszXSwgYTExID0g
YVs0XSwgYTEyID0gYVs1XSwKKwkgICAgICAgIGEyMCA9IGFbNl0sIGEyMSA9IGFbN10sIGEyMiA9
IGFbOF0sCisKKwkgICAgICAgIGIwMSA9IGEyMiAqIGExMSAtIGExMiAqIGEyMSwKKwkgICAgICAg
IGIxMSA9IC1hMjIgKiBhMTAgKyBhMTIgKiBhMjAsCisJICAgICAgICBiMjEgPSBhMjEgKiBhMTAg
LSBhMTEgKiBhMjAsCisKKwkgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgZGV0ZXJtaW5hbnQKKwkg
ICAgICAgIGRldCA9IGEwMCAqIGIwMSArIGEwMSAqIGIxMSArIGEwMiAqIGIyMTsKKworCSAgICBp
ZiAoIWRldCkgeyAKKwkgICAgICAgIHJldHVybiBudWxsOyAKKwkgICAgfQorCSAgICBkZXQgPSAx
LjAgLyBkZXQ7CisKKwkgICAgb3V0WzBdID0gYjAxICogZGV0OworCSAgICBvdXRbMV0gPSAoLWEy
MiAqIGEwMSArIGEwMiAqIGEyMSkgKiBkZXQ7CisJICAgIG91dFsyXSA9IChhMTIgKiBhMDEgLSBh
MDIgKiBhMTEpICogZGV0OworCSAgICBvdXRbM10gPSBiMTEgKiBkZXQ7CisJICAgIG91dFs0XSA9
IChhMjIgKiBhMDAgLSBhMDIgKiBhMjApICogZGV0OworCSAgICBvdXRbNV0gPSAoLWExMiAqIGEw
MCArIGEwMiAqIGExMCkgKiBkZXQ7CisJICAgIG91dFs2XSA9IGIyMSAqIGRldDsKKwkgICAgb3V0
WzddID0gKC1hMjEgKiBhMDAgKyBhMDEgKiBhMjApICogZGV0OworCSAgICBvdXRbOF0gPSAoYTEx
ICogYTAwIC0gYTAxICogYTEwKSAqIGRldDsKKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoq
CisJICogQ2FsY3VsYXRlcyB0aGUgYWRqdWdhdGUgb2YgYSBtYXQzCisJICoKKwkgKiBAcGFyYW0g
e21hdDN9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeAorCSAqIEBwYXJhbSB7bWF0M30gYSB0aGUg
c291cmNlIG1hdHJpeAorCSAqIEByZXR1cm5zIHttYXQzfSBvdXQKKwkgKi8KKwltYXQzLmFkam9p
bnQgPSBmdW5jdGlvbihvdXQsIGEpIHsKKwkgICAgdmFyIGEwMCA9IGFbMF0sIGEwMSA9IGFbMV0s
IGEwMiA9IGFbMl0sCisJICAgICAgICBhMTAgPSBhWzNdLCBhMTEgPSBhWzRdLCBhMTIgPSBhWzVd
LAorCSAgICAgICAgYTIwID0gYVs2XSwgYTIxID0gYVs3XSwgYTIyID0gYVs4XTsKKworCSAgICBv
dXRbMF0gPSAoYTExICogYTIyIC0gYTEyICogYTIxKTsKKwkgICAgb3V0WzFdID0gKGEwMiAqIGEy
MSAtIGEwMSAqIGEyMik7CisJICAgIG91dFsyXSA9IChhMDEgKiBhMTIgLSBhMDIgKiBhMTEpOwor
CSAgICBvdXRbM10gPSAoYTEyICogYTIwIC0gYTEwICogYTIyKTsKKwkgICAgb3V0WzRdID0gKGEw
MCAqIGEyMiAtIGEwMiAqIGEyMCk7CisJICAgIG91dFs1XSA9IChhMDIgKiBhMTAgLSBhMDAgKiBh
MTIpOworCSAgICBvdXRbNl0gPSAoYTEwICogYTIxIC0gYTExICogYTIwKTsKKwkgICAgb3V0Wzdd
ID0gKGEwMSAqIGEyMCAtIGEwMCAqIGEyMSk7CisJICAgIG91dFs4XSA9IChhMDAgKiBhMTEgLSBh
MDEgKiBhMTApOworCSAgICByZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBDYWxjdWxhdGVz
IHRoZSBkZXRlcm1pbmFudCBvZiBhIG1hdDMKKwkgKgorCSAqIEBwYXJhbSB7bWF0M30gYSB0aGUg
c291cmNlIG1hdHJpeAorCSAqIEByZXR1cm5zIHtOdW1iZXJ9IGRldGVybWluYW50IG9mIGEKKwkg
Ki8KKwltYXQzLmRldGVybWluYW50ID0gZnVuY3Rpb24gKGEpIHsKKwkgICAgdmFyIGEwMCA9IGFb
MF0sIGEwMSA9IGFbMV0sIGEwMiA9IGFbMl0sCisJICAgICAgICBhMTAgPSBhWzNdLCBhMTEgPSBh
WzRdLCBhMTIgPSBhWzVdLAorCSAgICAgICAgYTIwID0gYVs2XSwgYTIxID0gYVs3XSwgYTIyID0g
YVs4XTsKKworCSAgICByZXR1cm4gYTAwICogKGEyMiAqIGExMSAtIGExMiAqIGEyMSkgKyBhMDEg
KiAoLWEyMiAqIGExMCArIGExMiAqIGEyMCkgKyBhMDIgKiAoYTIxICogYTEwIC0gYTExICogYTIw
KTsKKwl9OworCisJLyoqCisJICogTXVsdGlwbGllcyB0d28gbWF0MydzCisJICoKKwkgKiBAcGFy
YW0ge21hdDN9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeAorCSAqIEBwYXJhbSB7bWF0M30gYSB0
aGUgZmlyc3Qgb3BlcmFuZAorCSAqIEBwYXJhbSB7bWF0M30gYiB0aGUgc2Vjb25kIG9wZXJhbmQK
KwkgKiBAcmV0dXJucyB7bWF0M30gb3V0CisJICovCisJbWF0My5tdWx0aXBseSA9IGZ1bmN0aW9u
IChvdXQsIGEsIGIpIHsKKwkgICAgdmFyIGEwMCA9IGFbMF0sIGEwMSA9IGFbMV0sIGEwMiA9IGFb
Ml0sCisJICAgICAgICBhMTAgPSBhWzNdLCBhMTEgPSBhWzRdLCBhMTIgPSBhWzVdLAorCSAgICAg
ICAgYTIwID0gYVs2XSwgYTIxID0gYVs3XSwgYTIyID0gYVs4XSwKKworCSAgICAgICAgYjAwID0g
YlswXSwgYjAxID0gYlsxXSwgYjAyID0gYlsyXSwKKwkgICAgICAgIGIxMCA9IGJbM10sIGIxMSA9
IGJbNF0sIGIxMiA9IGJbNV0sCisJICAgICAgICBiMjAgPSBiWzZdLCBiMjEgPSBiWzddLCBiMjIg
PSBiWzhdOworCisJICAgIG91dFswXSA9IGIwMCAqIGEwMCArIGIwMSAqIGExMCArIGIwMiAqIGEy
MDsKKwkgICAgb3V0WzFdID0gYjAwICogYTAxICsgYjAxICogYTExICsgYjAyICogYTIxOworCSAg
ICBvdXRbMl0gPSBiMDAgKiBhMDIgKyBiMDEgKiBhMTIgKyBiMDIgKiBhMjI7CisKKwkgICAgb3V0
WzNdID0gYjEwICogYTAwICsgYjExICogYTEwICsgYjEyICogYTIwOworCSAgICBvdXRbNF0gPSBi
MTAgKiBhMDEgKyBiMTEgKiBhMTEgKyBiMTIgKiBhMjE7CisJICAgIG91dFs1XSA9IGIxMCAqIGEw
MiArIGIxMSAqIGExMiArIGIxMiAqIGEyMjsKKworCSAgICBvdXRbNl0gPSBiMjAgKiBhMDAgKyBi
MjEgKiBhMTAgKyBiMjIgKiBhMjA7CisJICAgIG91dFs3XSA9IGIyMCAqIGEwMSArIGIyMSAqIGEx
MSArIGIyMiAqIGEyMTsKKwkgICAgb3V0WzhdID0gYjIwICogYTAyICsgYjIxICogYTEyICsgYjIy
ICogYTIyOworCSAgICByZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBBbGlhcyBmb3Ige0Bs
aW5rIG1hdDMubXVsdGlwbHl9CisJICogQGZ1bmN0aW9uCisJICovCisJbWF0My5tdWwgPSBtYXQz
Lm11bHRpcGx5OworCisJLyoqCisJICogVHJhbnNsYXRlIGEgbWF0MyBieSB0aGUgZ2l2ZW4gdmVj
dG9yCisJICoKKwkgKiBAcGFyYW0ge21hdDN9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeAorCSAq
IEBwYXJhbSB7bWF0M30gYSB0aGUgbWF0cml4IHRvIHRyYW5zbGF0ZQorCSAqIEBwYXJhbSB7dmVj
Mn0gdiB2ZWN0b3IgdG8gdHJhbnNsYXRlIGJ5CisJICogQHJldHVybnMge21hdDN9IG91dAorCSAq
LworCW1hdDMudHJhbnNsYXRlID0gZnVuY3Rpb24ob3V0LCBhLCB2KSB7CisJICAgIHZhciBhMDAg
PSBhWzBdLCBhMDEgPSBhWzFdLCBhMDIgPSBhWzJdLAorCSAgICAgICAgYTEwID0gYVszXSwgYTEx
ID0gYVs0XSwgYTEyID0gYVs1XSwKKwkgICAgICAgIGEyMCA9IGFbNl0sIGEyMSA9IGFbN10sIGEy
MiA9IGFbOF0sCisJICAgICAgICB4ID0gdlswXSwgeSA9IHZbMV07CisKKwkgICAgb3V0WzBdID0g
YTAwOworCSAgICBvdXRbMV0gPSBhMDE7CisJICAgIG91dFsyXSA9IGEwMjsKKworCSAgICBvdXRb
M10gPSBhMTA7CisJICAgIG91dFs0XSA9IGExMTsKKwkgICAgb3V0WzVdID0gYTEyOworCisJICAg
IG91dFs2XSA9IHggKiBhMDAgKyB5ICogYTEwICsgYTIwOworCSAgICBvdXRbN10gPSB4ICogYTAx
ICsgeSAqIGExMSArIGEyMTsKKwkgICAgb3V0WzhdID0geCAqIGEwMiArIHkgKiBhMTIgKyBhMjI7
CisJICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIFJvdGF0ZXMgYSBtYXQzIGJ5IHRo
ZSBnaXZlbiBhbmdsZQorCSAqCisJICogQHBhcmFtIHttYXQzfSBvdXQgdGhlIHJlY2VpdmluZyBt
YXRyaXgKKwkgKiBAcGFyYW0ge21hdDN9IGEgdGhlIG1hdHJpeCB0byByb3RhdGUKKwkgKiBAcGFy
YW0ge051bWJlcn0gcmFkIHRoZSBhbmdsZSB0byByb3RhdGUgdGhlIG1hdHJpeCBieQorCSAqIEBy
ZXR1cm5zIHttYXQzfSBvdXQKKwkgKi8KKwltYXQzLnJvdGF0ZSA9IGZ1bmN0aW9uIChvdXQsIGEs
IHJhZCkgeworCSAgICB2YXIgYTAwID0gYVswXSwgYTAxID0gYVsxXSwgYTAyID0gYVsyXSwKKwkg
ICAgICAgIGExMCA9IGFbM10sIGExMSA9IGFbNF0sIGExMiA9IGFbNV0sCisJICAgICAgICBhMjAg
PSBhWzZdLCBhMjEgPSBhWzddLCBhMjIgPSBhWzhdLAorCisJICAgICAgICBzID0gTWF0aC5zaW4o
cmFkKSwKKwkgICAgICAgIGMgPSBNYXRoLmNvcyhyYWQpOworCisJICAgIG91dFswXSA9IGMgKiBh
MDAgKyBzICogYTEwOworCSAgICBvdXRbMV0gPSBjICogYTAxICsgcyAqIGExMTsKKwkgICAgb3V0
WzJdID0gYyAqIGEwMiArIHMgKiBhMTI7CisKKwkgICAgb3V0WzNdID0gYyAqIGExMCAtIHMgKiBh
MDA7CisJICAgIG91dFs0XSA9IGMgKiBhMTEgLSBzICogYTAxOworCSAgICBvdXRbNV0gPSBjICog
YTEyIC0gcyAqIGEwMjsKKworCSAgICBvdXRbNl0gPSBhMjA7CisJICAgIG91dFs3XSA9IGEyMTsK
KwkgICAgb3V0WzhdID0gYTIyOworCSAgICByZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBT
Y2FsZXMgdGhlIG1hdDMgYnkgdGhlIGRpbWVuc2lvbnMgaW4gdGhlIGdpdmVuIHZlYzIKKwkgKgor
CSAqIEBwYXJhbSB7bWF0M30gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4CisJICogQHBhcmFtIHtt
YXQzfSBhIHRoZSBtYXRyaXggdG8gcm90YXRlCisJICogQHBhcmFtIHt2ZWMyfSB2IHRoZSB2ZWMy
IHRvIHNjYWxlIHRoZSBtYXRyaXggYnkKKwkgKiBAcmV0dXJucyB7bWF0M30gb3V0CisJICoqLwor
CW1hdDMuc2NhbGUgPSBmdW5jdGlvbihvdXQsIGEsIHYpIHsKKwkgICAgdmFyIHggPSB2WzBdLCB5
ID0gdlsxXTsKKworCSAgICBvdXRbMF0gPSB4ICogYVswXTsKKwkgICAgb3V0WzFdID0geCAqIGFb
MV07CisJICAgIG91dFsyXSA9IHggKiBhWzJdOworCisJICAgIG91dFszXSA9IHkgKiBhWzNdOwor
CSAgICBvdXRbNF0gPSB5ICogYVs0XTsKKwkgICAgb3V0WzVdID0geSAqIGFbNV07CisKKwkgICAg
b3V0WzZdID0gYVs2XTsKKwkgICAgb3V0WzddID0gYVs3XTsKKwkgICAgb3V0WzhdID0gYVs4XTsK
KwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogQ3JlYXRlcyBhIG1hdHJpeCBmcm9t
IGEgdmVjdG9yIHRyYW5zbGF0aW9uCisJICogVGhpcyBpcyBlcXVpdmFsZW50IHRvIChidXQgbXVj
aCBmYXN0ZXIgdGhhbik6CisJICoKKwkgKiAgICAgbWF0My5pZGVudGl0eShkZXN0KTsKKwkgKiAg
ICAgbWF0My50cmFuc2xhdGUoZGVzdCwgZGVzdCwgdmVjKTsKKwkgKgorCSAqIEBwYXJhbSB7bWF0
M30gb3V0IG1hdDMgcmVjZWl2aW5nIG9wZXJhdGlvbiByZXN1bHQKKwkgKiBAcGFyYW0ge3ZlYzJ9
IHYgVHJhbnNsYXRpb24gdmVjdG9yCisJICogQHJldHVybnMge21hdDN9IG91dAorCSAqLworCW1h
dDMuZnJvbVRyYW5zbGF0aW9uID0gZnVuY3Rpb24ob3V0LCB2KSB7CisJICAgIG91dFswXSA9IDE7
CisJICAgIG91dFsxXSA9IDA7CisJICAgIG91dFsyXSA9IDA7CisJICAgIG91dFszXSA9IDA7CisJ
ICAgIG91dFs0XSA9IDE7CisJICAgIG91dFs1XSA9IDA7CisJICAgIG91dFs2XSA9IHZbMF07CisJ
ICAgIG91dFs3XSA9IHZbMV07CisJICAgIG91dFs4XSA9IDE7CisJICAgIHJldHVybiBvdXQ7CisJ
fQorCisJLyoqCisJICogQ3JlYXRlcyBhIG1hdHJpeCBmcm9tIGEgZ2l2ZW4gYW5nbGUKKwkgKiBU
aGlzIGlzIGVxdWl2YWxlbnQgdG8gKGJ1dCBtdWNoIGZhc3RlciB0aGFuKToKKwkgKgorCSAqICAg
ICBtYXQzLmlkZW50aXR5KGRlc3QpOworCSAqICAgICBtYXQzLnJvdGF0ZShkZXN0LCBkZXN0LCBy
YWQpOworCSAqCisJICogQHBhcmFtIHttYXQzfSBvdXQgbWF0MyByZWNlaXZpbmcgb3BlcmF0aW9u
IHJlc3VsdAorCSAqIEBwYXJhbSB7TnVtYmVyfSByYWQgdGhlIGFuZ2xlIHRvIHJvdGF0ZSB0aGUg
bWF0cml4IGJ5CisJICogQHJldHVybnMge21hdDN9IG91dAorCSAqLworCW1hdDMuZnJvbVJvdGF0
aW9uID0gZnVuY3Rpb24ob3V0LCByYWQpIHsKKwkgICAgdmFyIHMgPSBNYXRoLnNpbihyYWQpLCBj
ID0gTWF0aC5jb3MocmFkKTsKKworCSAgICBvdXRbMF0gPSBjOworCSAgICBvdXRbMV0gPSBzOwor
CSAgICBvdXRbMl0gPSAwOworCisJICAgIG91dFszXSA9IC1zOworCSAgICBvdXRbNF0gPSBjOwor
CSAgICBvdXRbNV0gPSAwOworCisJICAgIG91dFs2XSA9IDA7CisJICAgIG91dFs3XSA9IDA7CisJ
ICAgIG91dFs4XSA9IDE7CisJICAgIHJldHVybiBvdXQ7CisJfQorCisJLyoqCisJICogQ3JlYXRl
cyBhIG1hdHJpeCBmcm9tIGEgdmVjdG9yIHNjYWxpbmcKKwkgKiBUaGlzIGlzIGVxdWl2YWxlbnQg
dG8gKGJ1dCBtdWNoIGZhc3RlciB0aGFuKToKKwkgKgorCSAqICAgICBtYXQzLmlkZW50aXR5KGRl
c3QpOworCSAqICAgICBtYXQzLnNjYWxlKGRlc3QsIGRlc3QsIHZlYyk7CisJICoKKwkgKiBAcGFy
YW0ge21hdDN9IG91dCBtYXQzIHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0CisJICogQHBhcmFt
IHt2ZWMyfSB2IFNjYWxpbmcgdmVjdG9yCisJICogQHJldHVybnMge21hdDN9IG91dAorCSAqLwor
CW1hdDMuZnJvbVNjYWxpbmcgPSBmdW5jdGlvbihvdXQsIHYpIHsKKwkgICAgb3V0WzBdID0gdlsw
XTsKKwkgICAgb3V0WzFdID0gMDsKKwkgICAgb3V0WzJdID0gMDsKKworCSAgICBvdXRbM10gPSAw
OworCSAgICBvdXRbNF0gPSB2WzFdOworCSAgICBvdXRbNV0gPSAwOworCisJICAgIG91dFs2XSA9
IDA7CisJICAgIG91dFs3XSA9IDA7CisJICAgIG91dFs4XSA9IDE7CisJICAgIHJldHVybiBvdXQ7
CisJfQorCisJLyoqCisJICogQ29waWVzIHRoZSB2YWx1ZXMgZnJvbSBhIG1hdDJkIGludG8gYSBt
YXQzCisJICoKKwkgKiBAcGFyYW0ge21hdDN9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeAorCSAq
IEBwYXJhbSB7bWF0MmR9IGEgdGhlIG1hdHJpeCB0byBjb3B5CisJICogQHJldHVybnMge21hdDN9
IG91dAorCSAqKi8KKwltYXQzLmZyb21NYXQyZCA9IGZ1bmN0aW9uKG91dCwgYSkgeworCSAgICBv
dXRbMF0gPSBhWzBdOworCSAgICBvdXRbMV0gPSBhWzFdOworCSAgICBvdXRbMl0gPSAwOworCisJ
ICAgIG91dFszXSA9IGFbMl07CisJICAgIG91dFs0XSA9IGFbM107CisJICAgIG91dFs1XSA9IDA7
CisKKwkgICAgb3V0WzZdID0gYVs0XTsKKwkgICAgb3V0WzddID0gYVs1XTsKKwkgICAgb3V0Wzhd
ID0gMTsKKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJKiBDYWxjdWxhdGVzIGEgM3gz
IG1hdHJpeCBmcm9tIHRoZSBnaXZlbiBxdWF0ZXJuaW9uCisJKgorCSogQHBhcmFtIHttYXQzfSBv
dXQgbWF0MyByZWNlaXZpbmcgb3BlcmF0aW9uIHJlc3VsdAorCSogQHBhcmFtIHtxdWF0fSBxIFF1
YXRlcm5pb24gdG8gY3JlYXRlIG1hdHJpeCBmcm9tCisJKgorCSogQHJldHVybnMge21hdDN9IG91
dAorCSovCisJbWF0My5mcm9tUXVhdCA9IGZ1bmN0aW9uIChvdXQsIHEpIHsKKwkgICAgdmFyIHgg
PSBxWzBdLCB5ID0gcVsxXSwgeiA9IHFbMl0sIHcgPSBxWzNdLAorCSAgICAgICAgeDIgPSB4ICsg
eCwKKwkgICAgICAgIHkyID0geSArIHksCisJICAgICAgICB6MiA9IHogKyB6LAorCisJICAgICAg
ICB4eCA9IHggKiB4MiwKKwkgICAgICAgIHl4ID0geSAqIHgyLAorCSAgICAgICAgeXkgPSB5ICog
eTIsCisJICAgICAgICB6eCA9IHogKiB4MiwKKwkgICAgICAgIHp5ID0geiAqIHkyLAorCSAgICAg
ICAgenogPSB6ICogejIsCisJICAgICAgICB3eCA9IHcgKiB4MiwKKwkgICAgICAgIHd5ID0gdyAq
IHkyLAorCSAgICAgICAgd3ogPSB3ICogejI7CisKKwkgICAgb3V0WzBdID0gMSAtIHl5IC0geno7
CisJICAgIG91dFszXSA9IHl4IC0gd3o7CisJICAgIG91dFs2XSA9IHp4ICsgd3k7CisKKwkgICAg
b3V0WzFdID0geXggKyB3ejsKKwkgICAgb3V0WzRdID0gMSAtIHh4IC0geno7CisJICAgIG91dFs3
XSA9IHp5IC0gd3g7CisKKwkgICAgb3V0WzJdID0genggLSB3eTsKKwkgICAgb3V0WzVdID0genkg
KyB3eDsKKwkgICAgb3V0WzhdID0gMSAtIHh4IC0geXk7CisKKwkgICAgcmV0dXJuIG91dDsKKwl9
OworCisJLyoqCisJKiBDYWxjdWxhdGVzIGEgM3gzIG5vcm1hbCBtYXRyaXggKHRyYW5zcG9zZSBp
bnZlcnNlKSBmcm9tIHRoZSA0eDQgbWF0cml4CisJKgorCSogQHBhcmFtIHttYXQzfSBvdXQgbWF0
MyByZWNlaXZpbmcgb3BlcmF0aW9uIHJlc3VsdAorCSogQHBhcmFtIHttYXQ0fSBhIE1hdDQgdG8g
ZGVyaXZlIHRoZSBub3JtYWwgbWF0cml4IGZyb20KKwkqCisJKiBAcmV0dXJucyB7bWF0M30gb3V0
CisJKi8KKwltYXQzLm5vcm1hbEZyb21NYXQ0ID0gZnVuY3Rpb24gKG91dCwgYSkgeworCSAgICB2
YXIgYTAwID0gYVswXSwgYTAxID0gYVsxXSwgYTAyID0gYVsyXSwgYTAzID0gYVszXSwKKwkgICAg
ICAgIGExMCA9IGFbNF0sIGExMSA9IGFbNV0sIGExMiA9IGFbNl0sIGExMyA9IGFbN10sCisJICAg
ICAgICBhMjAgPSBhWzhdLCBhMjEgPSBhWzldLCBhMjIgPSBhWzEwXSwgYTIzID0gYVsxMV0sCisJ
ICAgICAgICBhMzAgPSBhWzEyXSwgYTMxID0gYVsxM10sIGEzMiA9IGFbMTRdLCBhMzMgPSBhWzE1
XSwKKworCSAgICAgICAgYjAwID0gYTAwICogYTExIC0gYTAxICogYTEwLAorCSAgICAgICAgYjAx
ID0gYTAwICogYTEyIC0gYTAyICogYTEwLAorCSAgICAgICAgYjAyID0gYTAwICogYTEzIC0gYTAz
ICogYTEwLAorCSAgICAgICAgYjAzID0gYTAxICogYTEyIC0gYTAyICogYTExLAorCSAgICAgICAg
YjA0ID0gYTAxICogYTEzIC0gYTAzICogYTExLAorCSAgICAgICAgYjA1ID0gYTAyICogYTEzIC0g
YTAzICogYTEyLAorCSAgICAgICAgYjA2ID0gYTIwICogYTMxIC0gYTIxICogYTMwLAorCSAgICAg
ICAgYjA3ID0gYTIwICogYTMyIC0gYTIyICogYTMwLAorCSAgICAgICAgYjA4ID0gYTIwICogYTMz
IC0gYTIzICogYTMwLAorCSAgICAgICAgYjA5ID0gYTIxICogYTMyIC0gYTIyICogYTMxLAorCSAg
ICAgICAgYjEwID0gYTIxICogYTMzIC0gYTIzICogYTMxLAorCSAgICAgICAgYjExID0gYTIyICog
YTMzIC0gYTIzICogYTMyLAorCisJICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGRldGVybWluYW50
CisJICAgICAgICBkZXQgPSBiMDAgKiBiMTEgLSBiMDEgKiBiMTAgKyBiMDIgKiBiMDkgKyBiMDMg
KiBiMDggLSBiMDQgKiBiMDcgKyBiMDUgKiBiMDY7CisKKwkgICAgaWYgKCFkZXQpIHsgCisJICAg
ICAgICByZXR1cm4gbnVsbDsgCisJICAgIH0KKwkgICAgZGV0ID0gMS4wIC8gZGV0OworCisJICAg
IG91dFswXSA9IChhMTEgKiBiMTEgLSBhMTIgKiBiMTAgKyBhMTMgKiBiMDkpICogZGV0OworCSAg
ICBvdXRbMV0gPSAoYTEyICogYjA4IC0gYTEwICogYjExIC0gYTEzICogYjA3KSAqIGRldDsKKwkg
ICAgb3V0WzJdID0gKGExMCAqIGIxMCAtIGExMSAqIGIwOCArIGExMyAqIGIwNikgKiBkZXQ7CisK
KwkgICAgb3V0WzNdID0gKGEwMiAqIGIxMCAtIGEwMSAqIGIxMSAtIGEwMyAqIGIwOSkgKiBkZXQ7
CisJICAgIG91dFs0XSA9IChhMDAgKiBiMTEgLSBhMDIgKiBiMDggKyBhMDMgKiBiMDcpICogZGV0
OworCSAgICBvdXRbNV0gPSAoYTAxICogYjA4IC0gYTAwICogYjEwIC0gYTAzICogYjA2KSAqIGRl
dDsKKworCSAgICBvdXRbNl0gPSAoYTMxICogYjA1IC0gYTMyICogYjA0ICsgYTMzICogYjAzKSAq
IGRldDsKKwkgICAgb3V0WzddID0gKGEzMiAqIGIwMiAtIGEzMCAqIGIwNSAtIGEzMyAqIGIwMSkg
KiBkZXQ7CisJICAgIG91dFs4XSA9IChhMzAgKiBiMDQgLSBhMzEgKiBiMDIgKyBhMzMgKiBiMDAp
ICogZGV0OworCisJICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIFJldHVybnMgYSBz
dHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBtYXQzCisJICoKKwkgKiBAcGFyYW0ge21hdDN9IG1h
dCBtYXRyaXggdG8gcmVwcmVzZW50IGFzIGEgc3RyaW5nCisJICogQHJldHVybnMge1N0cmluZ30g
c3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtYXRyaXgKKwkgKi8KKwltYXQzLnN0ciA9IGZ1
bmN0aW9uIChhKSB7CisJICAgIHJldHVybiAnbWF0MygnICsgYVswXSArICcsICcgKyBhWzFdICsg
JywgJyArIGFbMl0gKyAnLCAnICsgCisJICAgICAgICAgICAgICAgICAgICBhWzNdICsgJywgJyAr
IGFbNF0gKyAnLCAnICsgYVs1XSArICcsICcgKyAKKwkgICAgICAgICAgICAgICAgICAgIGFbNl0g
KyAnLCAnICsgYVs3XSArICcsICcgKyBhWzhdICsgJyknOworCX07CisKKwkvKioKKwkgKiBSZXR1
cm5zIEZyb2Jlbml1cyBub3JtIG9mIGEgbWF0MworCSAqCisJICogQHBhcmFtIHttYXQzfSBhIHRo
ZSBtYXRyaXggdG8gY2FsY3VsYXRlIEZyb2Jlbml1cyBub3JtIG9mCisJICogQHJldHVybnMge051
bWJlcn0gRnJvYmVuaXVzIG5vcm0KKwkgKi8KKwltYXQzLmZyb2IgPSBmdW5jdGlvbiAoYSkgewor
CSAgICByZXR1cm4oTWF0aC5zcXJ0KE1hdGgucG93KGFbMF0sIDIpICsgTWF0aC5wb3coYVsxXSwg
MikgKyBNYXRoLnBvdyhhWzJdLCAyKSArIE1hdGgucG93KGFbM10sIDIpICsgTWF0aC5wb3coYVs0
XSwgMikgKyBNYXRoLnBvdyhhWzVdLCAyKSArIE1hdGgucG93KGFbNl0sIDIpICsgTWF0aC5wb3co
YVs3XSwgMikgKyBNYXRoLnBvdyhhWzhdLCAyKSkpCisJfTsKKworCS8qKgorCSAqIEFkZHMgdHdv
IG1hdDMncworCSAqCisJICogQHBhcmFtIHttYXQzfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXgK
KwkgKiBAcGFyYW0ge21hdDN9IGEgdGhlIGZpcnN0IG9wZXJhbmQKKwkgKiBAcGFyYW0ge21hdDN9
IGIgdGhlIHNlY29uZCBvcGVyYW5kCisJICogQHJldHVybnMge21hdDN9IG91dAorCSAqLworCW1h
dDMuYWRkID0gZnVuY3Rpb24ob3V0LCBhLCBiKSB7CisJICAgIG91dFswXSA9IGFbMF0gKyBiWzBd
OworCSAgICBvdXRbMV0gPSBhWzFdICsgYlsxXTsKKwkgICAgb3V0WzJdID0gYVsyXSArIGJbMl07
CisJICAgIG91dFszXSA9IGFbM10gKyBiWzNdOworCSAgICBvdXRbNF0gPSBhWzRdICsgYls0XTsK
KwkgICAgb3V0WzVdID0gYVs1XSArIGJbNV07CisJICAgIG91dFs2XSA9IGFbNl0gKyBiWzZdOwor
CSAgICBvdXRbN10gPSBhWzddICsgYls3XTsKKwkgICAgb3V0WzhdID0gYVs4XSArIGJbOF07CisJ
ICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIFN1YnRyYWN0cyBtYXRyaXggYiBmcm9t
IG1hdHJpeCBhCisJICoKKwkgKiBAcGFyYW0ge21hdDN9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJp
eAorCSAqIEBwYXJhbSB7bWF0M30gYSB0aGUgZmlyc3Qgb3BlcmFuZAorCSAqIEBwYXJhbSB7bWF0
M30gYiB0aGUgc2Vjb25kIG9wZXJhbmQKKwkgKiBAcmV0dXJucyB7bWF0M30gb3V0CisJICovCisJ
bWF0My5zdWJ0cmFjdCA9IGZ1bmN0aW9uKG91dCwgYSwgYikgeworCSAgICBvdXRbMF0gPSBhWzBd
IC0gYlswXTsKKwkgICAgb3V0WzFdID0gYVsxXSAtIGJbMV07CisJICAgIG91dFsyXSA9IGFbMl0g
LSBiWzJdOworCSAgICBvdXRbM10gPSBhWzNdIC0gYlszXTsKKwkgICAgb3V0WzRdID0gYVs0XSAt
IGJbNF07CisJICAgIG91dFs1XSA9IGFbNV0gLSBiWzVdOworCSAgICBvdXRbNl0gPSBhWzZdIC0g
Yls2XTsKKwkgICAgb3V0WzddID0gYVs3XSAtIGJbN107CisJICAgIG91dFs4XSA9IGFbOF0gLSBi
WzhdOworCSAgICByZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBBbGlhcyBmb3Ige0BsaW5r
IG1hdDMuc3VidHJhY3R9CisJICogQGZ1bmN0aW9uCisJICovCisJbWF0My5zdWIgPSBtYXQzLnN1
YnRyYWN0OworCisJLyoqCisJICogTXVsdGlwbHkgZWFjaCBlbGVtZW50IG9mIHRoZSBtYXRyaXgg
YnkgYSBzY2FsYXIuCisJICoKKwkgKiBAcGFyYW0ge21hdDN9IG91dCB0aGUgcmVjZWl2aW5nIG1h
dHJpeAorCSAqIEBwYXJhbSB7bWF0M30gYSB0aGUgbWF0cml4IHRvIHNjYWxlCisJICogQHBhcmFt
IHtOdW1iZXJ9IGIgYW1vdW50IHRvIHNjYWxlIHRoZSBtYXRyaXgncyBlbGVtZW50cyBieQorCSAq
IEByZXR1cm5zIHttYXQzfSBvdXQKKwkgKi8KKwltYXQzLm11bHRpcGx5U2NhbGFyID0gZnVuY3Rp
b24ob3V0LCBhLCBiKSB7CisJICAgIG91dFswXSA9IGFbMF0gKiBiOworCSAgICBvdXRbMV0gPSBh
WzFdICogYjsKKwkgICAgb3V0WzJdID0gYVsyXSAqIGI7CisJICAgIG91dFszXSA9IGFbM10gKiBi
OworCSAgICBvdXRbNF0gPSBhWzRdICogYjsKKwkgICAgb3V0WzVdID0gYVs1XSAqIGI7CisJICAg
IG91dFs2XSA9IGFbNl0gKiBiOworCSAgICBvdXRbN10gPSBhWzddICogYjsKKwkgICAgb3V0Wzhd
ID0gYVs4XSAqIGI7CisJICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIEFkZHMgdHdv
IG1hdDMncyBhZnRlciBtdWx0aXBseWluZyBlYWNoIGVsZW1lbnQgb2YgdGhlIHNlY29uZCBvcGVy
YW5kIGJ5IGEgc2NhbGFyIHZhbHVlLgorCSAqCisJICogQHBhcmFtIHttYXQzfSBvdXQgdGhlIHJl
Y2VpdmluZyB2ZWN0b3IKKwkgKiBAcGFyYW0ge21hdDN9IGEgdGhlIGZpcnN0IG9wZXJhbmQKKwkg
KiBAcGFyYW0ge21hdDN9IGIgdGhlIHNlY29uZCBvcGVyYW5kCisJICogQHBhcmFtIHtOdW1iZXJ9
IHNjYWxlIHRoZSBhbW91bnQgdG8gc2NhbGUgYidzIGVsZW1lbnRzIGJ5IGJlZm9yZSBhZGRpbmcK
KwkgKiBAcmV0dXJucyB7bWF0M30gb3V0CisJICovCisJbWF0My5tdWx0aXBseVNjYWxhckFuZEFk
ZCA9IGZ1bmN0aW9uKG91dCwgYSwgYiwgc2NhbGUpIHsKKwkgICAgb3V0WzBdID0gYVswXSArIChi
WzBdICogc2NhbGUpOworCSAgICBvdXRbMV0gPSBhWzFdICsgKGJbMV0gKiBzY2FsZSk7CisJICAg
IG91dFsyXSA9IGFbMl0gKyAoYlsyXSAqIHNjYWxlKTsKKwkgICAgb3V0WzNdID0gYVszXSArIChi
WzNdICogc2NhbGUpOworCSAgICBvdXRbNF0gPSBhWzRdICsgKGJbNF0gKiBzY2FsZSk7CisJICAg
IG91dFs1XSA9IGFbNV0gKyAoYls1XSAqIHNjYWxlKTsKKwkgICAgb3V0WzZdID0gYVs2XSArIChi
WzZdICogc2NhbGUpOworCSAgICBvdXRbN10gPSBhWzddICsgKGJbN10gKiBzY2FsZSk7CisJICAg
IG91dFs4XSA9IGFbOF0gKyAoYls4XSAqIHNjYWxlKTsKKwkgICAgcmV0dXJuIG91dDsKKwl9Owor
CisJLyoKKwkgKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBtYXRyaWNlcyBoYXZlIGV4YWN0
bHkgdGhlIHNhbWUgZWxlbWVudHMgaW4gdGhlIHNhbWUgcG9zaXRpb24gKHdoZW4gY29tcGFyZWQg
d2l0aCA9PT0pCisJICoKKwkgKiBAcGFyYW0ge21hdDN9IGEgVGhlIGZpcnN0IG1hdHJpeC4KKwkg
KiBAcGFyYW0ge21hdDN9IGIgVGhlIHNlY29uZCBtYXRyaXguCisJICogQHJldHVybnMge0Jvb2xl
YW59IFRydWUgaWYgdGhlIG1hdHJpY2VzIGFyZSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlLgorCSAq
LworCW1hdDMuZXhhY3RFcXVhbHMgPSBmdW5jdGlvbiAoYSwgYikgeworCSAgICByZXR1cm4gYVsw
XSA9PT0gYlswXSAmJiBhWzFdID09PSBiWzFdICYmIGFbMl0gPT09IGJbMl0gJiYgCisJICAgICAg
ICAgICBhWzNdID09PSBiWzNdICYmIGFbNF0gPT09IGJbNF0gJiYgYVs1XSA9PT0gYls1XSAmJgor
CSAgICAgICAgICAgYVs2XSA9PT0gYls2XSAmJiBhWzddID09PSBiWzddICYmIGFbOF0gPT09IGJb
OF07CisJfTsKKworCS8qKgorCSAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIG1hdHJpY2Vz
IGhhdmUgYXBwcm94aW1hdGVseSB0aGUgc2FtZSBlbGVtZW50cyBpbiB0aGUgc2FtZSBwb3NpdGlv
bi4KKwkgKgorCSAqIEBwYXJhbSB7bWF0M30gYSBUaGUgZmlyc3QgbWF0cml4LgorCSAqIEBwYXJh
bSB7bWF0M30gYiBUaGUgc2Vjb25kIG1hdHJpeC4KKwkgKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1
ZSBpZiB0aGUgbWF0cmljZXMgYXJlIGVxdWFsLCBmYWxzZSBvdGhlcndpc2UuCisJICovCisJbWF0
My5lcXVhbHMgPSBmdW5jdGlvbiAoYSwgYikgeworCSAgICB2YXIgYTAgPSBhWzBdLCBhMSA9IGFb
MV0sIGEyID0gYVsyXSwgYTMgPSBhWzNdLCBhNCA9IGFbNF0sIGE1ID0gYVs1XSwgYTYgPSBhWzZd
LCBhNyA9IGFbN10sIGE4ID0gYVs4XTsKKwkgICAgdmFyIGIwID0gYlswXSwgYjEgPSBiWzFdLCBi
MiA9IGJbMl0sIGIzID0gYlszXSwgYjQgPSBiWzRdLCBiNSA9IGJbNV0sIGI2ID0gYVs2XSwgYjcg
PSBiWzddLCBiOCA9IGJbOF07CisJICAgIHJldHVybiAoTWF0aC5hYnMoYTAgLSBiMCkgPD0gZ2xN
YXRyaXguRVBTSUxPTipNYXRoLm1heCgxLjAsIE1hdGguYWJzKGEwKSwgTWF0aC5hYnMoYjApKSAm
JgorCSAgICAgICAgICAgIE1hdGguYWJzKGExIC0gYjEpIDw9IGdsTWF0cml4LkVQU0lMT04qTWF0
aC5tYXgoMS4wLCBNYXRoLmFicyhhMSksIE1hdGguYWJzKGIxKSkgJiYKKwkgICAgICAgICAgICBN
YXRoLmFicyhhMiAtIGIyKSA8PSBnbE1hdHJpeC5FUFNJTE9OKk1hdGgubWF4KDEuMCwgTWF0aC5h
YnMoYTIpLCBNYXRoLmFicyhiMikpICYmCisJICAgICAgICAgICAgTWF0aC5hYnMoYTMgLSBiMykg
PD0gZ2xNYXRyaXguRVBTSUxPTipNYXRoLm1heCgxLjAsIE1hdGguYWJzKGEzKSwgTWF0aC5hYnMo
YjMpKSAmJgorCSAgICAgICAgICAgIE1hdGguYWJzKGE0IC0gYjQpIDw9IGdsTWF0cml4LkVQU0lM
T04qTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhNCksIE1hdGguYWJzKGI0KSkgJiYKKwkgICAgICAg
ICAgICBNYXRoLmFicyhhNSAtIGI1KSA8PSBnbE1hdHJpeC5FUFNJTE9OKk1hdGgubWF4KDEuMCwg
TWF0aC5hYnMoYTUpLCBNYXRoLmFicyhiNSkpICYmCisJICAgICAgICAgICAgTWF0aC5hYnMoYTYg
LSBiNikgPD0gZ2xNYXRyaXguRVBTSUxPTipNYXRoLm1heCgxLjAsIE1hdGguYWJzKGE2KSwgTWF0
aC5hYnMoYjYpKSAmJgorCSAgICAgICAgICAgIE1hdGguYWJzKGE3IC0gYjcpIDw9IGdsTWF0cml4
LkVQU0lMT04qTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhNyksIE1hdGguYWJzKGI3KSkgJiYKKwkg
ICAgICAgICAgICBNYXRoLmFicyhhOCAtIGI4KSA8PSBnbE1hdHJpeC5FUFNJTE9OKk1hdGgubWF4
KDEuMCwgTWF0aC5hYnMoYTgpLCBNYXRoLmFicyhiOCkpKTsKKwl9OworCisKKwltb2R1bGUuZXhw
b3J0cyA9IG1hdDM7CisKKworLyoqKi8gfSwKKy8qIDUgKi8KKy8qKiovIGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgeworCisJLyogQ29weXJpZ2h0IChjKSAy
MDE1LCBCcmFuZG9uIEpvbmVzLCBDb2xpbiBNYWNLZW56aWUgSVYuCisKKwlQZXJtaXNzaW9uIGlz
IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg
YSBjb3B5CisJb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZp
bGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKKwlpbiB0aGUgU29mdHdhcmUgd2l0aG91dCBy
ZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCisJdG8g
dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl
LCBhbmQvb3Igc2VsbAorCWNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVy
c29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworCWZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj
dCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKwlUaGUgYWJvdmUgY29weXJpZ2h0IG5v
dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorCWFs
bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCisJVEhF
IFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJ
TkQsIEVYUFJFU1MgT1IKKwlJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI
RSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKwlGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKwlB
VVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1B
R0VTIE9SIE9USEVSCisJTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFD
VCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKwlPVVQgT0YgT1IgSU4gQ09OTkVD
VElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCisJ
VEhFIFNPRlRXQVJFLiAqLworCisJdmFyIGdsTWF0cml4ID0gX193ZWJwYWNrX3JlcXVpcmVfXygx
KTsKKworCS8qKgorCSAqIEBjbGFzcyA0eDQgTWF0cml4CisJICogQG5hbWUgbWF0NAorCSAqLwor
CXZhciBtYXQ0ID0geworCSAgc2NhbGFyOiB7fSwKKwkgIFNJTUQ6IHt9LAorCX07CisKKwkvKioK
KwkgKiBDcmVhdGVzIGEgbmV3IGlkZW50aXR5IG1hdDQKKwkgKgorCSAqIEByZXR1cm5zIHttYXQ0
fSBhIG5ldyA0eDQgbWF0cml4CisJICovCisJbWF0NC5jcmVhdGUgPSBmdW5jdGlvbigpIHsKKwkg
ICAgdmFyIG91dCA9IG5ldyBnbE1hdHJpeC5BUlJBWV9UWVBFKDE2KTsKKwkgICAgb3V0WzBdID0g
MTsKKwkgICAgb3V0WzFdID0gMDsKKwkgICAgb3V0WzJdID0gMDsKKwkgICAgb3V0WzNdID0gMDsK
KwkgICAgb3V0WzRdID0gMDsKKwkgICAgb3V0WzVdID0gMTsKKwkgICAgb3V0WzZdID0gMDsKKwkg
ICAgb3V0WzddID0gMDsKKwkgICAgb3V0WzhdID0gMDsKKwkgICAgb3V0WzldID0gMDsKKwkgICAg
b3V0WzEwXSA9IDE7CisJICAgIG91dFsxMV0gPSAwOworCSAgICBvdXRbMTJdID0gMDsKKwkgICAg
b3V0WzEzXSA9IDA7CisJICAgIG91dFsxNF0gPSAwOworCSAgICBvdXRbMTVdID0gMTsKKwkgICAg
cmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogQ3JlYXRlcyBhIG5ldyBtYXQ0IGluaXRpYWxp
emVkIHdpdGggdmFsdWVzIGZyb20gYW4gZXhpc3RpbmcgbWF0cml4CisJICoKKwkgKiBAcGFyYW0g
e21hdDR9IGEgbWF0cml4IHRvIGNsb25lCisJICogQHJldHVybnMge21hdDR9IGEgbmV3IDR4NCBt
YXRyaXgKKwkgKi8KKwltYXQ0LmNsb25lID0gZnVuY3Rpb24oYSkgeworCSAgICB2YXIgb3V0ID0g
bmV3IGdsTWF0cml4LkFSUkFZX1RZUEUoMTYpOworCSAgICBvdXRbMF0gPSBhWzBdOworCSAgICBv
dXRbMV0gPSBhWzFdOworCSAgICBvdXRbMl0gPSBhWzJdOworCSAgICBvdXRbM10gPSBhWzNdOwor
CSAgICBvdXRbNF0gPSBhWzRdOworCSAgICBvdXRbNV0gPSBhWzVdOworCSAgICBvdXRbNl0gPSBh
WzZdOworCSAgICBvdXRbN10gPSBhWzddOworCSAgICBvdXRbOF0gPSBhWzhdOworCSAgICBvdXRb
OV0gPSBhWzldOworCSAgICBvdXRbMTBdID0gYVsxMF07CisJICAgIG91dFsxMV0gPSBhWzExXTsK
KwkgICAgb3V0WzEyXSA9IGFbMTJdOworCSAgICBvdXRbMTNdID0gYVsxM107CisJICAgIG91dFsx
NF0gPSBhWzE0XTsKKwkgICAgb3V0WzE1XSA9IGFbMTVdOworCSAgICByZXR1cm4gb3V0OworCX07
CisKKwkvKioKKwkgKiBDb3B5IHRoZSB2YWx1ZXMgZnJvbSBvbmUgbWF0NCB0byBhbm90aGVyCisJ
ICoKKwkgKiBAcGFyYW0ge21hdDR9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeAorCSAqIEBwYXJh
bSB7bWF0NH0gYSB0aGUgc291cmNlIG1hdHJpeAorCSAqIEByZXR1cm5zIHttYXQ0fSBvdXQKKwkg
Ki8KKwltYXQ0LmNvcHkgPSBmdW5jdGlvbihvdXQsIGEpIHsKKwkgICAgb3V0WzBdID0gYVswXTsK
KwkgICAgb3V0WzFdID0gYVsxXTsKKwkgICAgb3V0WzJdID0gYVsyXTsKKwkgICAgb3V0WzNdID0g
YVszXTsKKwkgICAgb3V0WzRdID0gYVs0XTsKKwkgICAgb3V0WzVdID0gYVs1XTsKKwkgICAgb3V0
WzZdID0gYVs2XTsKKwkgICAgb3V0WzddID0gYVs3XTsKKwkgICAgb3V0WzhdID0gYVs4XTsKKwkg
ICAgb3V0WzldID0gYVs5XTsKKwkgICAgb3V0WzEwXSA9IGFbMTBdOworCSAgICBvdXRbMTFdID0g
YVsxMV07CisJICAgIG91dFsxMl0gPSBhWzEyXTsKKwkgICAgb3V0WzEzXSA9IGFbMTNdOworCSAg
ICBvdXRbMTRdID0gYVsxNF07CisJICAgIG91dFsxNV0gPSBhWzE1XTsKKwkgICAgcmV0dXJuIG91
dDsKKwl9OworCisJLyoqCisJICogQ3JlYXRlIGEgbmV3IG1hdDQgd2l0aCB0aGUgZ2l2ZW4gdmFs
dWVzCisJICoKKwkgKiBAcGFyYW0ge051bWJlcn0gbTAwIENvbXBvbmVudCBpbiBjb2x1bW4gMCwg
cm93IDAgcG9zaXRpb24gKGluZGV4IDApCisJICogQHBhcmFtIHtOdW1iZXJ9IG0wMSBDb21wb25l
bnQgaW4gY29sdW1uIDAsIHJvdyAxIHBvc2l0aW9uIChpbmRleCAxKQorCSAqIEBwYXJhbSB7TnVt
YmVyfSBtMDIgQ29tcG9uZW50IGluIGNvbHVtbiAwLCByb3cgMiBwb3NpdGlvbiAoaW5kZXggMikK
KwkgKiBAcGFyYW0ge051bWJlcn0gbTAzIENvbXBvbmVudCBpbiBjb2x1bW4gMCwgcm93IDMgcG9z
aXRpb24gKGluZGV4IDMpCisJICogQHBhcmFtIHtOdW1iZXJ9IG0xMCBDb21wb25lbnQgaW4gY29s
dW1uIDEsIHJvdyAwIHBvc2l0aW9uIChpbmRleCA0KQorCSAqIEBwYXJhbSB7TnVtYmVyfSBtMTEg
Q29tcG9uZW50IGluIGNvbHVtbiAxLCByb3cgMSBwb3NpdGlvbiAoaW5kZXggNSkKKwkgKiBAcGFy
YW0ge051bWJlcn0gbTEyIENvbXBvbmVudCBpbiBjb2x1bW4gMSwgcm93IDIgcG9zaXRpb24gKGlu
ZGV4IDYpCisJICogQHBhcmFtIHtOdW1iZXJ9IG0xMyBDb21wb25lbnQgaW4gY29sdW1uIDEsIHJv
dyAzIHBvc2l0aW9uIChpbmRleCA3KQorCSAqIEBwYXJhbSB7TnVtYmVyfSBtMjAgQ29tcG9uZW50
IGluIGNvbHVtbiAyLCByb3cgMCBwb3NpdGlvbiAoaW5kZXggOCkKKwkgKiBAcGFyYW0ge051bWJl
cn0gbTIxIENvbXBvbmVudCBpbiBjb2x1bW4gMiwgcm93IDEgcG9zaXRpb24gKGluZGV4IDkpCisJ
ICogQHBhcmFtIHtOdW1iZXJ9IG0yMiBDb21wb25lbnQgaW4gY29sdW1uIDIsIHJvdyAyIHBvc2l0
aW9uIChpbmRleCAxMCkKKwkgKiBAcGFyYW0ge051bWJlcn0gbTIzIENvbXBvbmVudCBpbiBjb2x1
bW4gMiwgcm93IDMgcG9zaXRpb24gKGluZGV4IDExKQorCSAqIEBwYXJhbSB7TnVtYmVyfSBtMzAg
Q29tcG9uZW50IGluIGNvbHVtbiAzLCByb3cgMCBwb3NpdGlvbiAoaW5kZXggMTIpCisJICogQHBh
cmFtIHtOdW1iZXJ9IG0zMSBDb21wb25lbnQgaW4gY29sdW1uIDMsIHJvdyAxIHBvc2l0aW9uIChp
bmRleCAxMykKKwkgKiBAcGFyYW0ge051bWJlcn0gbTMyIENvbXBvbmVudCBpbiBjb2x1bW4gMywg
cm93IDIgcG9zaXRpb24gKGluZGV4IDE0KQorCSAqIEBwYXJhbSB7TnVtYmVyfSBtMzMgQ29tcG9u
ZW50IGluIGNvbHVtbiAzLCByb3cgMyBwb3NpdGlvbiAoaW5kZXggMTUpCisJICogQHJldHVybnMg
e21hdDR9IEEgbmV3IG1hdDQKKwkgKi8KKwltYXQ0LmZyb21WYWx1ZXMgPSBmdW5jdGlvbihtMDAs
IG0wMSwgbTAyLCBtMDMsIG0xMCwgbTExLCBtMTIsIG0xMywgbTIwLCBtMjEsIG0yMiwgbTIzLCBt
MzAsIG0zMSwgbTMyLCBtMzMpIHsKKwkgICAgdmFyIG91dCA9IG5ldyBnbE1hdHJpeC5BUlJBWV9U
WVBFKDE2KTsKKwkgICAgb3V0WzBdID0gbTAwOworCSAgICBvdXRbMV0gPSBtMDE7CisJICAgIG91
dFsyXSA9IG0wMjsKKwkgICAgb3V0WzNdID0gbTAzOworCSAgICBvdXRbNF0gPSBtMTA7CisJICAg
IG91dFs1XSA9IG0xMTsKKwkgICAgb3V0WzZdID0gbTEyOworCSAgICBvdXRbN10gPSBtMTM7CisJ
ICAgIG91dFs4XSA9IG0yMDsKKwkgICAgb3V0WzldID0gbTIxOworCSAgICBvdXRbMTBdID0gbTIy
OworCSAgICBvdXRbMTFdID0gbTIzOworCSAgICBvdXRbMTJdID0gbTMwOworCSAgICBvdXRbMTNd
ID0gbTMxOworCSAgICBvdXRbMTRdID0gbTMyOworCSAgICBvdXRbMTVdID0gbTMzOworCSAgICBy
ZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBTZXQgdGhlIGNvbXBvbmVudHMgb2YgYSBtYXQ0
IHRvIHRoZSBnaXZlbiB2YWx1ZXMKKwkgKgorCSAqIEBwYXJhbSB7bWF0NH0gb3V0IHRoZSByZWNl
aXZpbmcgbWF0cml4CisJICogQHBhcmFtIHtOdW1iZXJ9IG0wMCBDb21wb25lbnQgaW4gY29sdW1u
IDAsIHJvdyAwIHBvc2l0aW9uIChpbmRleCAwKQorCSAqIEBwYXJhbSB7TnVtYmVyfSBtMDEgQ29t
cG9uZW50IGluIGNvbHVtbiAwLCByb3cgMSBwb3NpdGlvbiAoaW5kZXggMSkKKwkgKiBAcGFyYW0g
e051bWJlcn0gbTAyIENvbXBvbmVudCBpbiBjb2x1bW4gMCwgcm93IDIgcG9zaXRpb24gKGluZGV4
IDIpCisJICogQHBhcmFtIHtOdW1iZXJ9IG0wMyBDb21wb25lbnQgaW4gY29sdW1uIDAsIHJvdyAz
IHBvc2l0aW9uIChpbmRleCAzKQorCSAqIEBwYXJhbSB7TnVtYmVyfSBtMTAgQ29tcG9uZW50IGlu
IGNvbHVtbiAxLCByb3cgMCBwb3NpdGlvbiAoaW5kZXggNCkKKwkgKiBAcGFyYW0ge051bWJlcn0g
bTExIENvbXBvbmVudCBpbiBjb2x1bW4gMSwgcm93IDEgcG9zaXRpb24gKGluZGV4IDUpCisJICog
QHBhcmFtIHtOdW1iZXJ9IG0xMiBDb21wb25lbnQgaW4gY29sdW1uIDEsIHJvdyAyIHBvc2l0aW9u
IChpbmRleCA2KQorCSAqIEBwYXJhbSB7TnVtYmVyfSBtMTMgQ29tcG9uZW50IGluIGNvbHVtbiAx
LCByb3cgMyBwb3NpdGlvbiAoaW5kZXggNykKKwkgKiBAcGFyYW0ge051bWJlcn0gbTIwIENvbXBv
bmVudCBpbiBjb2x1bW4gMiwgcm93IDAgcG9zaXRpb24gKGluZGV4IDgpCisJICogQHBhcmFtIHtO
dW1iZXJ9IG0yMSBDb21wb25lbnQgaW4gY29sdW1uIDIsIHJvdyAxIHBvc2l0aW9uIChpbmRleCA5
KQorCSAqIEBwYXJhbSB7TnVtYmVyfSBtMjIgQ29tcG9uZW50IGluIGNvbHVtbiAyLCByb3cgMiBw
b3NpdGlvbiAoaW5kZXggMTApCisJICogQHBhcmFtIHtOdW1iZXJ9IG0yMyBDb21wb25lbnQgaW4g
Y29sdW1uIDIsIHJvdyAzIHBvc2l0aW9uIChpbmRleCAxMSkKKwkgKiBAcGFyYW0ge051bWJlcn0g
bTMwIENvbXBvbmVudCBpbiBjb2x1bW4gMywgcm93IDAgcG9zaXRpb24gKGluZGV4IDEyKQorCSAq
IEBwYXJhbSB7TnVtYmVyfSBtMzEgQ29tcG9uZW50IGluIGNvbHVtbiAzLCByb3cgMSBwb3NpdGlv
biAoaW5kZXggMTMpCisJICogQHBhcmFtIHtOdW1iZXJ9IG0zMiBDb21wb25lbnQgaW4gY29sdW1u
IDMsIHJvdyAyIHBvc2l0aW9uIChpbmRleCAxNCkKKwkgKiBAcGFyYW0ge051bWJlcn0gbTMzIENv
bXBvbmVudCBpbiBjb2x1bW4gMywgcm93IDMgcG9zaXRpb24gKGluZGV4IDE1KQorCSAqIEByZXR1
cm5zIHttYXQ0fSBvdXQKKwkgKi8KKwltYXQ0LnNldCA9IGZ1bmN0aW9uKG91dCwgbTAwLCBtMDEs
IG0wMiwgbTAzLCBtMTAsIG0xMSwgbTEyLCBtMTMsIG0yMCwgbTIxLCBtMjIsIG0yMywgbTMwLCBt
MzEsIG0zMiwgbTMzKSB7CisJICAgIG91dFswXSA9IG0wMDsKKwkgICAgb3V0WzFdID0gbTAxOwor
CSAgICBvdXRbMl0gPSBtMDI7CisJICAgIG91dFszXSA9IG0wMzsKKwkgICAgb3V0WzRdID0gbTEw
OworCSAgICBvdXRbNV0gPSBtMTE7CisJICAgIG91dFs2XSA9IG0xMjsKKwkgICAgb3V0WzddID0g
bTEzOworCSAgICBvdXRbOF0gPSBtMjA7CisJICAgIG91dFs5XSA9IG0yMTsKKwkgICAgb3V0WzEw
XSA9IG0yMjsKKwkgICAgb3V0WzExXSA9IG0yMzsKKwkgICAgb3V0WzEyXSA9IG0zMDsKKwkgICAg
b3V0WzEzXSA9IG0zMTsKKwkgICAgb3V0WzE0XSA9IG0zMjsKKwkgICAgb3V0WzE1XSA9IG0zMzsK
KwkgICAgcmV0dXJuIG91dDsKKwl9OworCisKKwkvKioKKwkgKiBTZXQgYSBtYXQ0IHRvIHRoZSBp
ZGVudGl0eSBtYXRyaXgKKwkgKgorCSAqIEBwYXJhbSB7bWF0NH0gb3V0IHRoZSByZWNlaXZpbmcg
bWF0cml4CisJICogQHJldHVybnMge21hdDR9IG91dAorCSAqLworCW1hdDQuaWRlbnRpdHkgPSBm
dW5jdGlvbihvdXQpIHsKKwkgICAgb3V0WzBdID0gMTsKKwkgICAgb3V0WzFdID0gMDsKKwkgICAg
b3V0WzJdID0gMDsKKwkgICAgb3V0WzNdID0gMDsKKwkgICAgb3V0WzRdID0gMDsKKwkgICAgb3V0
WzVdID0gMTsKKwkgICAgb3V0WzZdID0gMDsKKwkgICAgb3V0WzddID0gMDsKKwkgICAgb3V0Wzhd
ID0gMDsKKwkgICAgb3V0WzldID0gMDsKKwkgICAgb3V0WzEwXSA9IDE7CisJICAgIG91dFsxMV0g
PSAwOworCSAgICBvdXRbMTJdID0gMDsKKwkgICAgb3V0WzEzXSA9IDA7CisJICAgIG91dFsxNF0g
PSAwOworCSAgICBvdXRbMTVdID0gMTsKKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJ
ICogVHJhbnNwb3NlIHRoZSB2YWx1ZXMgb2YgYSBtYXQ0IG5vdCB1c2luZyBTSU1ECisJICoKKwkg
KiBAcGFyYW0ge21hdDR9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeAorCSAqIEBwYXJhbSB7bWF0
NH0gYSB0aGUgc291cmNlIG1hdHJpeAorCSAqIEByZXR1cm5zIHttYXQ0fSBvdXQKKwkgKi8KKwlt
YXQ0LnNjYWxhci50cmFuc3Bvc2UgPSBmdW5jdGlvbihvdXQsIGEpIHsKKwkgICAgLy8gSWYgd2Ug
YXJlIHRyYW5zcG9zaW5nIG91cnNlbHZlcyB3ZSBjYW4gc2tpcCBhIGZldyBzdGVwcyBidXQgaGF2
ZSB0byBjYWNoZSBzb21lIHZhbHVlcworCSAgICBpZiAob3V0ID09PSBhKSB7CisJICAgICAgICB2
YXIgYTAxID0gYVsxXSwgYTAyID0gYVsyXSwgYTAzID0gYVszXSwKKwkgICAgICAgICAgICBhMTIg
PSBhWzZdLCBhMTMgPSBhWzddLAorCSAgICAgICAgICAgIGEyMyA9IGFbMTFdOworCisJICAgICAg
ICBvdXRbMV0gPSBhWzRdOworCSAgICAgICAgb3V0WzJdID0gYVs4XTsKKwkgICAgICAgIG91dFsz
XSA9IGFbMTJdOworCSAgICAgICAgb3V0WzRdID0gYTAxOworCSAgICAgICAgb3V0WzZdID0gYVs5
XTsKKwkgICAgICAgIG91dFs3XSA9IGFbMTNdOworCSAgICAgICAgb3V0WzhdID0gYTAyOworCSAg
ICAgICAgb3V0WzldID0gYTEyOworCSAgICAgICAgb3V0WzExXSA9IGFbMTRdOworCSAgICAgICAg
b3V0WzEyXSA9IGEwMzsKKwkgICAgICAgIG91dFsxM10gPSBhMTM7CisJICAgICAgICBvdXRbMTRd
ID0gYTIzOworCSAgICB9IGVsc2UgeworCSAgICAgICAgb3V0WzBdID0gYVswXTsKKwkgICAgICAg
IG91dFsxXSA9IGFbNF07CisJICAgICAgICBvdXRbMl0gPSBhWzhdOworCSAgICAgICAgb3V0WzNd
ID0gYVsxMl07CisJICAgICAgICBvdXRbNF0gPSBhWzFdOworCSAgICAgICAgb3V0WzVdID0gYVs1
XTsKKwkgICAgICAgIG91dFs2XSA9IGFbOV07CisJICAgICAgICBvdXRbN10gPSBhWzEzXTsKKwkg
ICAgICAgIG91dFs4XSA9IGFbMl07CisJICAgICAgICBvdXRbOV0gPSBhWzZdOworCSAgICAgICAg
b3V0WzEwXSA9IGFbMTBdOworCSAgICAgICAgb3V0WzExXSA9IGFbMTRdOworCSAgICAgICAgb3V0
WzEyXSA9IGFbM107CisJICAgICAgICBvdXRbMTNdID0gYVs3XTsKKwkgICAgICAgIG91dFsxNF0g
PSBhWzExXTsKKwkgICAgICAgIG91dFsxNV0gPSBhWzE1XTsKKwkgICAgfQorCisJICAgIHJldHVy
biBvdXQ7CisJfTsKKworCS8qKgorCSAqIFRyYW5zcG9zZSB0aGUgdmFsdWVzIG9mIGEgbWF0NCB1
c2luZyBTSU1ECisJICoKKwkgKiBAcGFyYW0ge21hdDR9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJp
eAorCSAqIEBwYXJhbSB7bWF0NH0gYSB0aGUgc291cmNlIG1hdHJpeAorCSAqIEByZXR1cm5zIHtt
YXQ0fSBvdXQKKwkgKi8KKwltYXQ0LlNJTUQudHJhbnNwb3NlID0gZnVuY3Rpb24ob3V0LCBhKSB7
CisJICAgIHZhciBhMCwgYTEsIGEyLCBhMywKKwkgICAgICAgIHRtcDAxLCB0bXAyMywKKwkgICAg
ICAgIG91dDAsIG91dDEsIG91dDIsIG91dDM7CisKKwkgICAgYTAgPSBTSU1ELkZsb2F0MzJ4NC5s
b2FkKGEsIDApOworCSAgICBhMSA9IFNJTUQuRmxvYXQzMng0LmxvYWQoYSwgNCk7CisJICAgIGEy
ID0gU0lNRC5GbG9hdDMyeDQubG9hZChhLCA4KTsKKwkgICAgYTMgPSBTSU1ELkZsb2F0MzJ4NC5s
b2FkKGEsIDEyKTsKKworCSAgICB0bXAwMSA9IFNJTUQuRmxvYXQzMng0LnNodWZmbGUoYTAsIGEx
LCAwLCAxLCA0LCA1KTsKKwkgICAgdG1wMjMgPSBTSU1ELkZsb2F0MzJ4NC5zaHVmZmxlKGEyLCBh
MywgMCwgMSwgNCwgNSk7CisJICAgIG91dDAgID0gU0lNRC5GbG9hdDMyeDQuc2h1ZmZsZSh0bXAw
MSwgdG1wMjMsIDAsIDIsIDQsIDYpOworCSAgICBvdXQxICA9IFNJTUQuRmxvYXQzMng0LnNodWZm
bGUodG1wMDEsIHRtcDIzLCAxLCAzLCA1LCA3KTsKKwkgICAgU0lNRC5GbG9hdDMyeDQuc3RvcmUo
b3V0LCAwLCAgb3V0MCk7CisJICAgIFNJTUQuRmxvYXQzMng0LnN0b3JlKG91dCwgNCwgIG91dDEp
OworCisJICAgIHRtcDAxID0gU0lNRC5GbG9hdDMyeDQuc2h1ZmZsZShhMCwgYTEsIDIsIDMsIDYs
IDcpOworCSAgICB0bXAyMyA9IFNJTUQuRmxvYXQzMng0LnNodWZmbGUoYTIsIGEzLCAyLCAzLCA2
LCA3KTsKKwkgICAgb3V0MiAgPSBTSU1ELkZsb2F0MzJ4NC5zaHVmZmxlKHRtcDAxLCB0bXAyMywg
MCwgMiwgNCwgNik7CisJICAgIG91dDMgID0gU0lNRC5GbG9hdDMyeDQuc2h1ZmZsZSh0bXAwMSwg
dG1wMjMsIDEsIDMsIDUsIDcpOworCSAgICBTSU1ELkZsb2F0MzJ4NC5zdG9yZShvdXQsIDgsICBv
dXQyKTsKKwkgICAgU0lNRC5GbG9hdDMyeDQuc3RvcmUob3V0LCAxMiwgb3V0Myk7CisKKwkgICAg
cmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogVHJhbnNwc2UgYSBtYXQ0IHVzaW5nIFNJTUQg
aWYgYXZhaWxhYmxlIGFuZCBlbmFibGVkCisJICoKKwkgKiBAcGFyYW0ge21hdDR9IG91dCB0aGUg
cmVjZWl2aW5nIG1hdHJpeAorCSAqIEBwYXJhbSB7bWF0NH0gYSB0aGUgc291cmNlIG1hdHJpeAor
CSAqIEByZXR1cm5zIHttYXQ0fSBvdXQKKwkgKi8KKwltYXQ0LnRyYW5zcG9zZSA9IGdsTWF0cml4
LlVTRV9TSU1EID8gbWF0NC5TSU1ELnRyYW5zcG9zZSA6IG1hdDQuc2NhbGFyLnRyYW5zcG9zZTsK
KworCS8qKgorCSAqIEludmVydHMgYSBtYXQ0IG5vdCB1c2luZyBTSU1ECisJICoKKwkgKiBAcGFy
YW0ge21hdDR9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeAorCSAqIEBwYXJhbSB7bWF0NH0gYSB0
aGUgc291cmNlIG1hdHJpeAorCSAqIEByZXR1cm5zIHttYXQ0fSBvdXQKKwkgKi8KKwltYXQ0LnNj
YWxhci5pbnZlcnQgPSBmdW5jdGlvbihvdXQsIGEpIHsKKwkgICAgdmFyIGEwMCA9IGFbMF0sIGEw
MSA9IGFbMV0sIGEwMiA9IGFbMl0sIGEwMyA9IGFbM10sCisJICAgICAgICBhMTAgPSBhWzRdLCBh
MTEgPSBhWzVdLCBhMTIgPSBhWzZdLCBhMTMgPSBhWzddLAorCSAgICAgICAgYTIwID0gYVs4XSwg
YTIxID0gYVs5XSwgYTIyID0gYVsxMF0sIGEyMyA9IGFbMTFdLAorCSAgICAgICAgYTMwID0gYVsx
Ml0sIGEzMSA9IGFbMTNdLCBhMzIgPSBhWzE0XSwgYTMzID0gYVsxNV0sCisKKwkgICAgICAgIGIw
MCA9IGEwMCAqIGExMSAtIGEwMSAqIGExMCwKKwkgICAgICAgIGIwMSA9IGEwMCAqIGExMiAtIGEw
MiAqIGExMCwKKwkgICAgICAgIGIwMiA9IGEwMCAqIGExMyAtIGEwMyAqIGExMCwKKwkgICAgICAg
IGIwMyA9IGEwMSAqIGExMiAtIGEwMiAqIGExMSwKKwkgICAgICAgIGIwNCA9IGEwMSAqIGExMyAt
IGEwMyAqIGExMSwKKwkgICAgICAgIGIwNSA9IGEwMiAqIGExMyAtIGEwMyAqIGExMiwKKwkgICAg
ICAgIGIwNiA9IGEyMCAqIGEzMSAtIGEyMSAqIGEzMCwKKwkgICAgICAgIGIwNyA9IGEyMCAqIGEz
MiAtIGEyMiAqIGEzMCwKKwkgICAgICAgIGIwOCA9IGEyMCAqIGEzMyAtIGEyMyAqIGEzMCwKKwkg
ICAgICAgIGIwOSA9IGEyMSAqIGEzMiAtIGEyMiAqIGEzMSwKKwkgICAgICAgIGIxMCA9IGEyMSAq
IGEzMyAtIGEyMyAqIGEzMSwKKwkgICAgICAgIGIxMSA9IGEyMiAqIGEzMyAtIGEyMyAqIGEzMiwK
KworCSAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBkZXRlcm1pbmFudAorCSAgICAgICAgZGV0ID0g
YjAwICogYjExIC0gYjAxICogYjEwICsgYjAyICogYjA5ICsgYjAzICogYjA4IC0gYjA0ICogYjA3
ICsgYjA1ICogYjA2OworCisJICAgIGlmICghZGV0KSB7CisJICAgICAgICByZXR1cm4gbnVsbDsK
KwkgICAgfQorCSAgICBkZXQgPSAxLjAgLyBkZXQ7CisKKwkgICAgb3V0WzBdID0gKGExMSAqIGIx
MSAtIGExMiAqIGIxMCArIGExMyAqIGIwOSkgKiBkZXQ7CisJICAgIG91dFsxXSA9IChhMDIgKiBi
MTAgLSBhMDEgKiBiMTEgLSBhMDMgKiBiMDkpICogZGV0OworCSAgICBvdXRbMl0gPSAoYTMxICog
YjA1IC0gYTMyICogYjA0ICsgYTMzICogYjAzKSAqIGRldDsKKwkgICAgb3V0WzNdID0gKGEyMiAq
IGIwNCAtIGEyMSAqIGIwNSAtIGEyMyAqIGIwMykgKiBkZXQ7CisJICAgIG91dFs0XSA9IChhMTIg
KiBiMDggLSBhMTAgKiBiMTEgLSBhMTMgKiBiMDcpICogZGV0OworCSAgICBvdXRbNV0gPSAoYTAw
ICogYjExIC0gYTAyICogYjA4ICsgYTAzICogYjA3KSAqIGRldDsKKwkgICAgb3V0WzZdID0gKGEz
MiAqIGIwMiAtIGEzMCAqIGIwNSAtIGEzMyAqIGIwMSkgKiBkZXQ7CisJICAgIG91dFs3XSA9IChh
MjAgKiBiMDUgLSBhMjIgKiBiMDIgKyBhMjMgKiBiMDEpICogZGV0OworCSAgICBvdXRbOF0gPSAo
YTEwICogYjEwIC0gYTExICogYjA4ICsgYTEzICogYjA2KSAqIGRldDsKKwkgICAgb3V0WzldID0g
KGEwMSAqIGIwOCAtIGEwMCAqIGIxMCAtIGEwMyAqIGIwNikgKiBkZXQ7CisJICAgIG91dFsxMF0g
PSAoYTMwICogYjA0IC0gYTMxICogYjAyICsgYTMzICogYjAwKSAqIGRldDsKKwkgICAgb3V0WzEx
XSA9IChhMjEgKiBiMDIgLSBhMjAgKiBiMDQgLSBhMjMgKiBiMDApICogZGV0OworCSAgICBvdXRb
MTJdID0gKGExMSAqIGIwNyAtIGExMCAqIGIwOSAtIGExMiAqIGIwNikgKiBkZXQ7CisJICAgIG91
dFsxM10gPSAoYTAwICogYjA5IC0gYTAxICogYjA3ICsgYTAyICogYjA2KSAqIGRldDsKKwkgICAg
b3V0WzE0XSA9IChhMzEgKiBiMDEgLSBhMzAgKiBiMDMgLSBhMzIgKiBiMDApICogZGV0OworCSAg
ICBvdXRbMTVdID0gKGEyMCAqIGIwMyAtIGEyMSAqIGIwMSArIGEyMiAqIGIwMCkgKiBkZXQ7CisK
KwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogSW52ZXJ0cyBhIG1hdDQgdXNpbmcg
U0lNRAorCSAqCisJICogQHBhcmFtIHttYXQ0fSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXgKKwkg
KiBAcGFyYW0ge21hdDR9IGEgdGhlIHNvdXJjZSBtYXRyaXgKKwkgKiBAcmV0dXJucyB7bWF0NH0g
b3V0CisJICovCisJbWF0NC5TSU1ELmludmVydCA9IGZ1bmN0aW9uKG91dCwgYSkgeworCSAgdmFy
IHJvdzAsIHJvdzEsIHJvdzIsIHJvdzMsCisJICAgICAgdG1wMSwKKwkgICAgICBtaW5vcjAsIG1p
bm9yMSwgbWlub3IyLCBtaW5vcjMsCisJICAgICAgZGV0LAorCSAgICAgIGEwID0gU0lNRC5GbG9h
dDMyeDQubG9hZChhLCAwKSwKKwkgICAgICBhMSA9IFNJTUQuRmxvYXQzMng0LmxvYWQoYSwgNCks
CisJICAgICAgYTIgPSBTSU1ELkZsb2F0MzJ4NC5sb2FkKGEsIDgpLAorCSAgICAgIGEzID0gU0lN
RC5GbG9hdDMyeDQubG9hZChhLCAxMik7CisKKwkgIC8vIENvbXB1dGUgbWF0cml4IGFkanVnYXRl
CisJICB0bXAxID0gU0lNRC5GbG9hdDMyeDQuc2h1ZmZsZShhMCwgYTEsIDAsIDEsIDQsIDUpOwor
CSAgcm93MSA9IFNJTUQuRmxvYXQzMng0LnNodWZmbGUoYTIsIGEzLCAwLCAxLCA0LCA1KTsKKwkg
IHJvdzAgPSBTSU1ELkZsb2F0MzJ4NC5zaHVmZmxlKHRtcDEsIHJvdzEsIDAsIDIsIDQsIDYpOwor
CSAgcm93MSA9IFNJTUQuRmxvYXQzMng0LnNodWZmbGUocm93MSwgdG1wMSwgMSwgMywgNSwgNyk7
CisJICB0bXAxID0gU0lNRC5GbG9hdDMyeDQuc2h1ZmZsZShhMCwgYTEsIDIsIDMsIDYsIDcpOwor
CSAgcm93MyA9IFNJTUQuRmxvYXQzMng0LnNodWZmbGUoYTIsIGEzLCAyLCAzLCA2LCA3KTsKKwkg
IHJvdzIgPSBTSU1ELkZsb2F0MzJ4NC5zaHVmZmxlKHRtcDEsIHJvdzMsIDAsIDIsIDQsIDYpOwor
CSAgcm93MyA9IFNJTUQuRmxvYXQzMng0LnNodWZmbGUocm93MywgdG1wMSwgMSwgMywgNSwgNyk7
CisKKwkgIHRtcDEgICA9IFNJTUQuRmxvYXQzMng0Lm11bChyb3cyLCByb3czKTsKKwkgIHRtcDEg
ICA9IFNJTUQuRmxvYXQzMng0LnN3aXp6bGUodG1wMSwgMSwgMCwgMywgMik7CisJICBtaW5vcjAg
PSBTSU1ELkZsb2F0MzJ4NC5tdWwocm93MSwgdG1wMSk7CisJICBtaW5vcjEgPSBTSU1ELkZsb2F0
MzJ4NC5tdWwocm93MCwgdG1wMSk7CisJICB0bXAxICAgPSBTSU1ELkZsb2F0MzJ4NC5zd2l6emxl
KHRtcDEsIDIsIDMsIDAsIDEpOworCSAgbWlub3IwID0gU0lNRC5GbG9hdDMyeDQuc3ViKFNJTUQu
RmxvYXQzMng0Lm11bChyb3cxLCB0bXAxKSwgbWlub3IwKTsKKwkgIG1pbm9yMSA9IFNJTUQuRmxv
YXQzMng0LnN1YihTSU1ELkZsb2F0MzJ4NC5tdWwocm93MCwgdG1wMSksIG1pbm9yMSk7CisJICBt
aW5vcjEgPSBTSU1ELkZsb2F0MzJ4NC5zd2l6emxlKG1pbm9yMSwgMiwgMywgMCwgMSk7CisKKwkg
IHRtcDEgICA9IFNJTUQuRmxvYXQzMng0Lm11bChyb3cxLCByb3cyKTsKKwkgIHRtcDEgICA9IFNJ
TUQuRmxvYXQzMng0LnN3aXp6bGUodG1wMSwgMSwgMCwgMywgMik7CisJICBtaW5vcjAgPSBTSU1E
LkZsb2F0MzJ4NC5hZGQoU0lNRC5GbG9hdDMyeDQubXVsKHJvdzMsIHRtcDEpLCBtaW5vcjApOwor
CSAgbWlub3IzID0gU0lNRC5GbG9hdDMyeDQubXVsKHJvdzAsIHRtcDEpOworCSAgdG1wMSAgID0g
U0lNRC5GbG9hdDMyeDQuc3dpenpsZSh0bXAxLCAyLCAzLCAwLCAxKTsKKwkgIG1pbm9yMCA9IFNJ
TUQuRmxvYXQzMng0LnN1YihtaW5vcjAsIFNJTUQuRmxvYXQzMng0Lm11bChyb3czLCB0bXAxKSk7
CisJICBtaW5vcjMgPSBTSU1ELkZsb2F0MzJ4NC5zdWIoU0lNRC5GbG9hdDMyeDQubXVsKHJvdzAs
IHRtcDEpLCBtaW5vcjMpOworCSAgbWlub3IzID0gU0lNRC5GbG9hdDMyeDQuc3dpenpsZShtaW5v
cjMsIDIsIDMsIDAsIDEpOworCisJICB0bXAxICAgPSBTSU1ELkZsb2F0MzJ4NC5tdWwoU0lNRC5G
bG9hdDMyeDQuc3dpenpsZShyb3cxLCAyLCAzLCAwLCAxKSwgcm93Myk7CisJICB0bXAxICAgPSBT
SU1ELkZsb2F0MzJ4NC5zd2l6emxlKHRtcDEsIDEsIDAsIDMsIDIpOworCSAgcm93MiAgID0gU0lN
RC5GbG9hdDMyeDQuc3dpenpsZShyb3cyLCAyLCAzLCAwLCAxKTsKKwkgIG1pbm9yMCA9IFNJTUQu
RmxvYXQzMng0LmFkZChTSU1ELkZsb2F0MzJ4NC5tdWwocm93MiwgdG1wMSksIG1pbm9yMCk7CisJ
ICBtaW5vcjIgPSBTSU1ELkZsb2F0MzJ4NC5tdWwocm93MCwgdG1wMSk7CisJICB0bXAxICAgPSBT
SU1ELkZsb2F0MzJ4NC5zd2l6emxlKHRtcDEsIDIsIDMsIDAsIDEpOworCSAgbWlub3IwID0gU0lN
RC5GbG9hdDMyeDQuc3ViKG1pbm9yMCwgU0lNRC5GbG9hdDMyeDQubXVsKHJvdzIsIHRtcDEpKTsK
KwkgIG1pbm9yMiA9IFNJTUQuRmxvYXQzMng0LnN1YihTSU1ELkZsb2F0MzJ4NC5tdWwocm93MCwg
dG1wMSksIG1pbm9yMik7CisJICBtaW5vcjIgPSBTSU1ELkZsb2F0MzJ4NC5zd2l6emxlKG1pbm9y
MiwgMiwgMywgMCwgMSk7CisKKwkgIHRtcDEgICA9IFNJTUQuRmxvYXQzMng0Lm11bChyb3cwLCBy
b3cxKTsKKwkgIHRtcDEgICA9IFNJTUQuRmxvYXQzMng0LnN3aXp6bGUodG1wMSwgMSwgMCwgMywg
Mik7CisJICBtaW5vcjIgPSBTSU1ELkZsb2F0MzJ4NC5hZGQoU0lNRC5GbG9hdDMyeDQubXVsKHJv
dzMsIHRtcDEpLCBtaW5vcjIpOworCSAgbWlub3IzID0gU0lNRC5GbG9hdDMyeDQuc3ViKFNJTUQu
RmxvYXQzMng0Lm11bChyb3cyLCB0bXAxKSwgbWlub3IzKTsKKwkgIHRtcDEgICA9IFNJTUQuRmxv
YXQzMng0LnN3aXp6bGUodG1wMSwgMiwgMywgMCwgMSk7CisJICBtaW5vcjIgPSBTSU1ELkZsb2F0
MzJ4NC5zdWIoU0lNRC5GbG9hdDMyeDQubXVsKHJvdzMsIHRtcDEpLCBtaW5vcjIpOworCSAgbWlu
b3IzID0gU0lNRC5GbG9hdDMyeDQuc3ViKG1pbm9yMywgU0lNRC5GbG9hdDMyeDQubXVsKHJvdzIs
IHRtcDEpKTsKKworCSAgdG1wMSAgID0gU0lNRC5GbG9hdDMyeDQubXVsKHJvdzAsIHJvdzMpOwor
CSAgdG1wMSAgID0gU0lNRC5GbG9hdDMyeDQuc3dpenpsZSh0bXAxLCAxLCAwLCAzLCAyKTsKKwkg
IG1pbm9yMSA9IFNJTUQuRmxvYXQzMng0LnN1YihtaW5vcjEsIFNJTUQuRmxvYXQzMng0Lm11bChy
b3cyLCB0bXAxKSk7CisJICBtaW5vcjIgPSBTSU1ELkZsb2F0MzJ4NC5hZGQoU0lNRC5GbG9hdDMy
eDQubXVsKHJvdzEsIHRtcDEpLCBtaW5vcjIpOworCSAgdG1wMSAgID0gU0lNRC5GbG9hdDMyeDQu
c3dpenpsZSh0bXAxLCAyLCAzLCAwLCAxKTsKKwkgIG1pbm9yMSA9IFNJTUQuRmxvYXQzMng0LmFk
ZChTSU1ELkZsb2F0MzJ4NC5tdWwocm93MiwgdG1wMSksIG1pbm9yMSk7CisJICBtaW5vcjIgPSBT
SU1ELkZsb2F0MzJ4NC5zdWIobWlub3IyLCBTSU1ELkZsb2F0MzJ4NC5tdWwocm93MSwgdG1wMSkp
OworCisJICB0bXAxICAgPSBTSU1ELkZsb2F0MzJ4NC5tdWwocm93MCwgcm93Mik7CisJICB0bXAx
ICAgPSBTSU1ELkZsb2F0MzJ4NC5zd2l6emxlKHRtcDEsIDEsIDAsIDMsIDIpOworCSAgbWlub3Ix
ID0gU0lNRC5GbG9hdDMyeDQuYWRkKFNJTUQuRmxvYXQzMng0Lm11bChyb3czLCB0bXAxKSwgbWlu
b3IxKTsKKwkgIG1pbm9yMyA9IFNJTUQuRmxvYXQzMng0LnN1YihtaW5vcjMsIFNJTUQuRmxvYXQz
Mng0Lm11bChyb3cxLCB0bXAxKSk7CisJICB0bXAxICAgPSBTSU1ELkZsb2F0MzJ4NC5zd2l6emxl
KHRtcDEsIDIsIDMsIDAsIDEpOworCSAgbWlub3IxID0gU0lNRC5GbG9hdDMyeDQuc3ViKG1pbm9y
MSwgU0lNRC5GbG9hdDMyeDQubXVsKHJvdzMsIHRtcDEpKTsKKwkgIG1pbm9yMyA9IFNJTUQuRmxv
YXQzMng0LmFkZChTSU1ELkZsb2F0MzJ4NC5tdWwocm93MSwgdG1wMSksIG1pbm9yMyk7CisKKwkg
IC8vIENvbXB1dGUgbWF0cml4IGRldGVybWluYW50CisJICBkZXQgICA9IFNJTUQuRmxvYXQzMng0
Lm11bChyb3cwLCBtaW5vcjApOworCSAgZGV0ICAgPSBTSU1ELkZsb2F0MzJ4NC5hZGQoU0lNRC5G
bG9hdDMyeDQuc3dpenpsZShkZXQsIDIsIDMsIDAsIDEpLCBkZXQpOworCSAgZGV0ICAgPSBTSU1E
LkZsb2F0MzJ4NC5hZGQoU0lNRC5GbG9hdDMyeDQuc3dpenpsZShkZXQsIDEsIDAsIDMsIDIpLCBk
ZXQpOworCSAgdG1wMSAgPSBTSU1ELkZsb2F0MzJ4NC5yZWNpcHJvY2FsQXBwcm94aW1hdGlvbihk
ZXQpOworCSAgZGV0ICAgPSBTSU1ELkZsb2F0MzJ4NC5zdWIoCisJICAgICAgICAgICAgICAgU0lN
RC5GbG9hdDMyeDQuYWRkKHRtcDEsIHRtcDEpLAorCSAgICAgICAgICAgICAgIFNJTUQuRmxvYXQz
Mng0Lm11bChkZXQsIFNJTUQuRmxvYXQzMng0Lm11bCh0bXAxLCB0bXAxKSkpOworCSAgZGV0ICAg
PSBTSU1ELkZsb2F0MzJ4NC5zd2l6emxlKGRldCwgMCwgMCwgMCwgMCk7CisJICBpZiAoIWRldCkg
eworCSAgICAgIHJldHVybiBudWxsOworCSAgfQorCisJICAvLyBDb21wdXRlIG1hdHJpeCBpbnZl
cnNlCisJICBTSU1ELkZsb2F0MzJ4NC5zdG9yZShvdXQsIDAsICBTSU1ELkZsb2F0MzJ4NC5tdWwo
ZGV0LCBtaW5vcjApKTsKKwkgIFNJTUQuRmxvYXQzMng0LnN0b3JlKG91dCwgNCwgIFNJTUQuRmxv
YXQzMng0Lm11bChkZXQsIG1pbm9yMSkpOworCSAgU0lNRC5GbG9hdDMyeDQuc3RvcmUob3V0LCA4
LCAgU0lNRC5GbG9hdDMyeDQubXVsKGRldCwgbWlub3IyKSk7CisJICBTSU1ELkZsb2F0MzJ4NC5z
dG9yZShvdXQsIDEyLCBTSU1ELkZsb2F0MzJ4NC5tdWwoZGV0LCBtaW5vcjMpKTsKKwkgIHJldHVy
biBvdXQ7CisJfQorCisJLyoqCisJICogSW52ZXJ0cyBhIG1hdDQgdXNpbmcgU0lNRCBpZiBhdmFp
bGFibGUgYW5kIGVuYWJsZWQKKwkgKgorCSAqIEBwYXJhbSB7bWF0NH0gb3V0IHRoZSByZWNlaXZp
bmcgbWF0cml4CisJICogQHBhcmFtIHttYXQ0fSBhIHRoZSBzb3VyY2UgbWF0cml4CisJICogQHJl
dHVybnMge21hdDR9IG91dAorCSAqLworCW1hdDQuaW52ZXJ0ID0gZ2xNYXRyaXguVVNFX1NJTUQg
PyBtYXQ0LlNJTUQuaW52ZXJ0IDogbWF0NC5zY2FsYXIuaW52ZXJ0OworCisJLyoqCisJICogQ2Fs
Y3VsYXRlcyB0aGUgYWRqdWdhdGUgb2YgYSBtYXQ0IG5vdCB1c2luZyBTSU1ECisJICoKKwkgKiBA
cGFyYW0ge21hdDR9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeAorCSAqIEBwYXJhbSB7bWF0NH0g
YSB0aGUgc291cmNlIG1hdHJpeAorCSAqIEByZXR1cm5zIHttYXQ0fSBvdXQKKwkgKi8KKwltYXQ0
LnNjYWxhci5hZGpvaW50ID0gZnVuY3Rpb24ob3V0LCBhKSB7CisJICAgIHZhciBhMDAgPSBhWzBd
LCBhMDEgPSBhWzFdLCBhMDIgPSBhWzJdLCBhMDMgPSBhWzNdLAorCSAgICAgICAgYTEwID0gYVs0
XSwgYTExID0gYVs1XSwgYTEyID0gYVs2XSwgYTEzID0gYVs3XSwKKwkgICAgICAgIGEyMCA9IGFb
OF0sIGEyMSA9IGFbOV0sIGEyMiA9IGFbMTBdLCBhMjMgPSBhWzExXSwKKwkgICAgICAgIGEzMCA9
IGFbMTJdLCBhMzEgPSBhWzEzXSwgYTMyID0gYVsxNF0sIGEzMyA9IGFbMTVdOworCisJICAgIG91
dFswXSAgPSAgKGExMSAqIChhMjIgKiBhMzMgLSBhMjMgKiBhMzIpIC0gYTIxICogKGExMiAqIGEz
MyAtIGExMyAqIGEzMikgKyBhMzEgKiAoYTEyICogYTIzIC0gYTEzICogYTIyKSk7CisJICAgIG91
dFsxXSAgPSAtKGEwMSAqIChhMjIgKiBhMzMgLSBhMjMgKiBhMzIpIC0gYTIxICogKGEwMiAqIGEz
MyAtIGEwMyAqIGEzMikgKyBhMzEgKiAoYTAyICogYTIzIC0gYTAzICogYTIyKSk7CisJICAgIG91
dFsyXSAgPSAgKGEwMSAqIChhMTIgKiBhMzMgLSBhMTMgKiBhMzIpIC0gYTExICogKGEwMiAqIGEz
MyAtIGEwMyAqIGEzMikgKyBhMzEgKiAoYTAyICogYTEzIC0gYTAzICogYTEyKSk7CisJICAgIG91
dFszXSAgPSAtKGEwMSAqIChhMTIgKiBhMjMgLSBhMTMgKiBhMjIpIC0gYTExICogKGEwMiAqIGEy
MyAtIGEwMyAqIGEyMikgKyBhMjEgKiAoYTAyICogYTEzIC0gYTAzICogYTEyKSk7CisJICAgIG91
dFs0XSAgPSAtKGExMCAqIChhMjIgKiBhMzMgLSBhMjMgKiBhMzIpIC0gYTIwICogKGExMiAqIGEz
MyAtIGExMyAqIGEzMikgKyBhMzAgKiAoYTEyICogYTIzIC0gYTEzICogYTIyKSk7CisJICAgIG91
dFs1XSAgPSAgKGEwMCAqIChhMjIgKiBhMzMgLSBhMjMgKiBhMzIpIC0gYTIwICogKGEwMiAqIGEz
MyAtIGEwMyAqIGEzMikgKyBhMzAgKiAoYTAyICogYTIzIC0gYTAzICogYTIyKSk7CisJICAgIG91
dFs2XSAgPSAtKGEwMCAqIChhMTIgKiBhMzMgLSBhMTMgKiBhMzIpIC0gYTEwICogKGEwMiAqIGEz
MyAtIGEwMyAqIGEzMikgKyBhMzAgKiAoYTAyICogYTEzIC0gYTAzICogYTEyKSk7CisJICAgIG91
dFs3XSAgPSAgKGEwMCAqIChhMTIgKiBhMjMgLSBhMTMgKiBhMjIpIC0gYTEwICogKGEwMiAqIGEy
MyAtIGEwMyAqIGEyMikgKyBhMjAgKiAoYTAyICogYTEzIC0gYTAzICogYTEyKSk7CisJICAgIG91
dFs4XSAgPSAgKGExMCAqIChhMjEgKiBhMzMgLSBhMjMgKiBhMzEpIC0gYTIwICogKGExMSAqIGEz
MyAtIGExMyAqIGEzMSkgKyBhMzAgKiAoYTExICogYTIzIC0gYTEzICogYTIxKSk7CisJICAgIG91
dFs5XSAgPSAtKGEwMCAqIChhMjEgKiBhMzMgLSBhMjMgKiBhMzEpIC0gYTIwICogKGEwMSAqIGEz
MyAtIGEwMyAqIGEzMSkgKyBhMzAgKiAoYTAxICogYTIzIC0gYTAzICogYTIxKSk7CisJICAgIG91
dFsxMF0gPSAgKGEwMCAqIChhMTEgKiBhMzMgLSBhMTMgKiBhMzEpIC0gYTEwICogKGEwMSAqIGEz
MyAtIGEwMyAqIGEzMSkgKyBhMzAgKiAoYTAxICogYTEzIC0gYTAzICogYTExKSk7CisJICAgIG91
dFsxMV0gPSAtKGEwMCAqIChhMTEgKiBhMjMgLSBhMTMgKiBhMjEpIC0gYTEwICogKGEwMSAqIGEy
MyAtIGEwMyAqIGEyMSkgKyBhMjAgKiAoYTAxICogYTEzIC0gYTAzICogYTExKSk7CisJICAgIG91
dFsxMl0gPSAtKGExMCAqIChhMjEgKiBhMzIgLSBhMjIgKiBhMzEpIC0gYTIwICogKGExMSAqIGEz
MiAtIGExMiAqIGEzMSkgKyBhMzAgKiAoYTExICogYTIyIC0gYTEyICogYTIxKSk7CisJICAgIG91
dFsxM10gPSAgKGEwMCAqIChhMjEgKiBhMzIgLSBhMjIgKiBhMzEpIC0gYTIwICogKGEwMSAqIGEz
MiAtIGEwMiAqIGEzMSkgKyBhMzAgKiAoYTAxICogYTIyIC0gYTAyICogYTIxKSk7CisJICAgIG91
dFsxNF0gPSAtKGEwMCAqIChhMTEgKiBhMzIgLSBhMTIgKiBhMzEpIC0gYTEwICogKGEwMSAqIGEz
MiAtIGEwMiAqIGEzMSkgKyBhMzAgKiAoYTAxICogYTEyIC0gYTAyICogYTExKSk7CisJICAgIG91
dFsxNV0gPSAgKGEwMCAqIChhMTEgKiBhMjIgLSBhMTIgKiBhMjEpIC0gYTEwICogKGEwMSAqIGEy
MiAtIGEwMiAqIGEyMSkgKyBhMjAgKiAoYTAxICogYTEyIC0gYTAyICogYTExKSk7CisJICAgIHJl
dHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIENhbGN1bGF0ZXMgdGhlIGFkanVnYXRlIG9mIGEg
bWF0NCB1c2luZyBTSU1ECisJICoKKwkgKiBAcGFyYW0ge21hdDR9IG91dCB0aGUgcmVjZWl2aW5n
IG1hdHJpeAorCSAqIEBwYXJhbSB7bWF0NH0gYSB0aGUgc291cmNlIG1hdHJpeAorCSAqIEByZXR1
cm5zIHttYXQ0fSBvdXQKKwkgKi8KKwltYXQ0LlNJTUQuYWRqb2ludCA9IGZ1bmN0aW9uKG91dCwg
YSkgeworCSAgdmFyIGEwLCBhMSwgYTIsIGEzOworCSAgdmFyIHJvdzAsIHJvdzEsIHJvdzIsIHJv
dzM7CisJICB2YXIgdG1wMTsKKwkgIHZhciBtaW5vcjAsIG1pbm9yMSwgbWlub3IyLCBtaW5vcjM7
CisKKwkgIHZhciBhMCA9IFNJTUQuRmxvYXQzMng0LmxvYWQoYSwgMCk7CisJICB2YXIgYTEgPSBT
SU1ELkZsb2F0MzJ4NC5sb2FkKGEsIDQpOworCSAgdmFyIGEyID0gU0lNRC5GbG9hdDMyeDQubG9h
ZChhLCA4KTsKKwkgIHZhciBhMyA9IFNJTUQuRmxvYXQzMng0LmxvYWQoYSwgMTIpOworCisJICAv
LyBUcmFuc3Bvc2UgdGhlIHNvdXJjZSBtYXRyaXguICBTb3J0IG9mLiAgTm90IGEgdHJ1ZSB0cmFu
c3Bvc2Ugb3BlcmF0aW9uCisJICB0bXAxID0gU0lNRC5GbG9hdDMyeDQuc2h1ZmZsZShhMCwgYTEs
IDAsIDEsIDQsIDUpOworCSAgcm93MSA9IFNJTUQuRmxvYXQzMng0LnNodWZmbGUoYTIsIGEzLCAw
LCAxLCA0LCA1KTsKKwkgIHJvdzAgPSBTSU1ELkZsb2F0MzJ4NC5zaHVmZmxlKHRtcDEsIHJvdzEs
IDAsIDIsIDQsIDYpOworCSAgcm93MSA9IFNJTUQuRmxvYXQzMng0LnNodWZmbGUocm93MSwgdG1w
MSwgMSwgMywgNSwgNyk7CisKKwkgIHRtcDEgPSBTSU1ELkZsb2F0MzJ4NC5zaHVmZmxlKGEwLCBh
MSwgMiwgMywgNiwgNyk7CisJICByb3czID0gU0lNRC5GbG9hdDMyeDQuc2h1ZmZsZShhMiwgYTMs
IDIsIDMsIDYsIDcpOworCSAgcm93MiA9IFNJTUQuRmxvYXQzMng0LnNodWZmbGUodG1wMSwgcm93
MywgMCwgMiwgNCwgNik7CisJICByb3czID0gU0lNRC5GbG9hdDMyeDQuc2h1ZmZsZShyb3czLCB0
bXAxLCAxLCAzLCA1LCA3KTsKKworCSAgdG1wMSAgID0gU0lNRC5GbG9hdDMyeDQubXVsKHJvdzIs
IHJvdzMpOworCSAgdG1wMSAgID0gU0lNRC5GbG9hdDMyeDQuc3dpenpsZSh0bXAxLCAxLCAwLCAz
LCAyKTsKKwkgIG1pbm9yMCA9IFNJTUQuRmxvYXQzMng0Lm11bChyb3cxLCB0bXAxKTsKKwkgIG1p
bm9yMSA9IFNJTUQuRmxvYXQzMng0Lm11bChyb3cwLCB0bXAxKTsKKwkgIHRtcDEgICA9IFNJTUQu
RmxvYXQzMng0LnN3aXp6bGUodG1wMSwgMiwgMywgMCwgMSk7CisJICBtaW5vcjAgPSBTSU1ELkZs
b2F0MzJ4NC5zdWIoU0lNRC5GbG9hdDMyeDQubXVsKHJvdzEsIHRtcDEpLCBtaW5vcjApOworCSAg
bWlub3IxID0gU0lNRC5GbG9hdDMyeDQuc3ViKFNJTUQuRmxvYXQzMng0Lm11bChyb3cwLCB0bXAx
KSwgbWlub3IxKTsKKwkgIG1pbm9yMSA9IFNJTUQuRmxvYXQzMng0LnN3aXp6bGUobWlub3IxLCAy
LCAzLCAwLCAxKTsKKworCSAgdG1wMSAgID0gU0lNRC5GbG9hdDMyeDQubXVsKHJvdzEsIHJvdzIp
OworCSAgdG1wMSAgID0gU0lNRC5GbG9hdDMyeDQuc3dpenpsZSh0bXAxLCAxLCAwLCAzLCAyKTsK
KwkgIG1pbm9yMCA9IFNJTUQuRmxvYXQzMng0LmFkZChTSU1ELkZsb2F0MzJ4NC5tdWwocm93Mywg
dG1wMSksIG1pbm9yMCk7CisJICBtaW5vcjMgPSBTSU1ELkZsb2F0MzJ4NC5tdWwocm93MCwgdG1w
MSk7CisJICB0bXAxICAgPSBTSU1ELkZsb2F0MzJ4NC5zd2l6emxlKHRtcDEsIDIsIDMsIDAsIDEp
OworCSAgbWlub3IwID0gU0lNRC5GbG9hdDMyeDQuc3ViKG1pbm9yMCwgU0lNRC5GbG9hdDMyeDQu
bXVsKHJvdzMsIHRtcDEpKTsKKwkgIG1pbm9yMyA9IFNJTUQuRmxvYXQzMng0LnN1YihTSU1ELkZs
b2F0MzJ4NC5tdWwocm93MCwgdG1wMSksIG1pbm9yMyk7CisJICBtaW5vcjMgPSBTSU1ELkZsb2F0
MzJ4NC5zd2l6emxlKG1pbm9yMywgMiwgMywgMCwgMSk7CisKKwkgIHRtcDEgICA9IFNJTUQuRmxv
YXQzMng0Lm11bChTSU1ELkZsb2F0MzJ4NC5zd2l6emxlKHJvdzEsIDIsIDMsIDAsIDEpLCByb3cz
KTsKKwkgIHRtcDEgICA9IFNJTUQuRmxvYXQzMng0LnN3aXp6bGUodG1wMSwgMSwgMCwgMywgMik7
CisJICByb3cyICAgPSBTSU1ELkZsb2F0MzJ4NC5zd2l6emxlKHJvdzIsIDIsIDMsIDAsIDEpOwor
CSAgbWlub3IwID0gU0lNRC5GbG9hdDMyeDQuYWRkKFNJTUQuRmxvYXQzMng0Lm11bChyb3cyLCB0
bXAxKSwgbWlub3IwKTsKKwkgIG1pbm9yMiA9IFNJTUQuRmxvYXQzMng0Lm11bChyb3cwLCB0bXAx
KTsKKwkgIHRtcDEgICA9IFNJTUQuRmxvYXQzMng0LnN3aXp6bGUodG1wMSwgMiwgMywgMCwgMSk7
CisJICBtaW5vcjAgPSBTSU1ELkZsb2F0MzJ4NC5zdWIobWlub3IwLCBTSU1ELkZsb2F0MzJ4NC5t
dWwocm93MiwgdG1wMSkpOworCSAgbWlub3IyID0gU0lNRC5GbG9hdDMyeDQuc3ViKFNJTUQuRmxv
YXQzMng0Lm11bChyb3cwLCB0bXAxKSwgbWlub3IyKTsKKwkgIG1pbm9yMiA9IFNJTUQuRmxvYXQz
Mng0LnN3aXp6bGUobWlub3IyLCAyLCAzLCAwLCAxKTsKKworCSAgdG1wMSAgID0gU0lNRC5GbG9h
dDMyeDQubXVsKHJvdzAsIHJvdzEpOworCSAgdG1wMSAgID0gU0lNRC5GbG9hdDMyeDQuc3dpenps
ZSh0bXAxLCAxLCAwLCAzLCAyKTsKKwkgIG1pbm9yMiA9IFNJTUQuRmxvYXQzMng0LmFkZChTSU1E
LkZsb2F0MzJ4NC5tdWwocm93MywgdG1wMSksIG1pbm9yMik7CisJICBtaW5vcjMgPSBTSU1ELkZs
b2F0MzJ4NC5zdWIoU0lNRC5GbG9hdDMyeDQubXVsKHJvdzIsIHRtcDEpLCBtaW5vcjMpOworCSAg
dG1wMSAgID0gU0lNRC5GbG9hdDMyeDQuc3dpenpsZSh0bXAxLCAyLCAzLCAwLCAxKTsKKwkgIG1p
bm9yMiA9IFNJTUQuRmxvYXQzMng0LnN1YihTSU1ELkZsb2F0MzJ4NC5tdWwocm93MywgdG1wMSks
IG1pbm9yMik7CisJICBtaW5vcjMgPSBTSU1ELkZsb2F0MzJ4NC5zdWIobWlub3IzLCBTSU1ELkZs
b2F0MzJ4NC5tdWwocm93MiwgdG1wMSkpOworCisJICB0bXAxICAgPSBTSU1ELkZsb2F0MzJ4NC5t
dWwocm93MCwgcm93Myk7CisJICB0bXAxICAgPSBTSU1ELkZsb2F0MzJ4NC5zd2l6emxlKHRtcDEs
IDEsIDAsIDMsIDIpOworCSAgbWlub3IxID0gU0lNRC5GbG9hdDMyeDQuc3ViKG1pbm9yMSwgU0lN
RC5GbG9hdDMyeDQubXVsKHJvdzIsIHRtcDEpKTsKKwkgIG1pbm9yMiA9IFNJTUQuRmxvYXQzMng0
LmFkZChTSU1ELkZsb2F0MzJ4NC5tdWwocm93MSwgdG1wMSksIG1pbm9yMik7CisJICB0bXAxICAg
PSBTSU1ELkZsb2F0MzJ4NC5zd2l6emxlKHRtcDEsIDIsIDMsIDAsIDEpOworCSAgbWlub3IxID0g
U0lNRC5GbG9hdDMyeDQuYWRkKFNJTUQuRmxvYXQzMng0Lm11bChyb3cyLCB0bXAxKSwgbWlub3Ix
KTsKKwkgIG1pbm9yMiA9IFNJTUQuRmxvYXQzMng0LnN1YihtaW5vcjIsIFNJTUQuRmxvYXQzMng0
Lm11bChyb3cxLCB0bXAxKSk7CisKKwkgIHRtcDEgICA9IFNJTUQuRmxvYXQzMng0Lm11bChyb3cw
LCByb3cyKTsKKwkgIHRtcDEgICA9IFNJTUQuRmxvYXQzMng0LnN3aXp6bGUodG1wMSwgMSwgMCwg
MywgMik7CisJICBtaW5vcjEgPSBTSU1ELkZsb2F0MzJ4NC5hZGQoU0lNRC5GbG9hdDMyeDQubXVs
KHJvdzMsIHRtcDEpLCBtaW5vcjEpOworCSAgbWlub3IzID0gU0lNRC5GbG9hdDMyeDQuc3ViKG1p
bm9yMywgU0lNRC5GbG9hdDMyeDQubXVsKHJvdzEsIHRtcDEpKTsKKwkgIHRtcDEgICA9IFNJTUQu
RmxvYXQzMng0LnN3aXp6bGUodG1wMSwgMiwgMywgMCwgMSk7CisJICBtaW5vcjEgPSBTSU1ELkZs
b2F0MzJ4NC5zdWIobWlub3IxLCBTSU1ELkZsb2F0MzJ4NC5tdWwocm93MywgdG1wMSkpOworCSAg
bWlub3IzID0gU0lNRC5GbG9hdDMyeDQuYWRkKFNJTUQuRmxvYXQzMng0Lm11bChyb3cxLCB0bXAx
KSwgbWlub3IzKTsKKworCSAgU0lNRC5GbG9hdDMyeDQuc3RvcmUob3V0LCAwLCAgbWlub3IwKTsK
KwkgIFNJTUQuRmxvYXQzMng0LnN0b3JlKG91dCwgNCwgIG1pbm9yMSk7CisJICBTSU1ELkZsb2F0
MzJ4NC5zdG9yZShvdXQsIDgsICBtaW5vcjIpOworCSAgU0lNRC5GbG9hdDMyeDQuc3RvcmUob3V0
LCAxMiwgbWlub3IzKTsKKwkgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIENhbGN1bGF0
ZXMgdGhlIGFkanVnYXRlIG9mIGEgbWF0NCB1c2luZyBTSU1EIGlmIGF2YWlsYWJsZSBhbmQgZW5h
YmxlZAorCSAqCisJICogQHBhcmFtIHttYXQ0fSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXgKKwkg
KiBAcGFyYW0ge21hdDR9IGEgdGhlIHNvdXJjZSBtYXRyaXgKKwkgKiBAcmV0dXJucyB7bWF0NH0g
b3V0CisJICovCisJIG1hdDQuYWRqb2ludCA9IGdsTWF0cml4LlVTRV9TSU1EID8gbWF0NC5TSU1E
LmFkam9pbnQgOiBtYXQ0LnNjYWxhci5hZGpvaW50OworCisJLyoqCisJICogQ2FsY3VsYXRlcyB0
aGUgZGV0ZXJtaW5hbnQgb2YgYSBtYXQ0CisJICoKKwkgKiBAcGFyYW0ge21hdDR9IGEgdGhlIHNv
dXJjZSBtYXRyaXgKKwkgKiBAcmV0dXJucyB7TnVtYmVyfSBkZXRlcm1pbmFudCBvZiBhCisJICov
CisJbWF0NC5kZXRlcm1pbmFudCA9IGZ1bmN0aW9uIChhKSB7CisJICAgIHZhciBhMDAgPSBhWzBd
LCBhMDEgPSBhWzFdLCBhMDIgPSBhWzJdLCBhMDMgPSBhWzNdLAorCSAgICAgICAgYTEwID0gYVs0
XSwgYTExID0gYVs1XSwgYTEyID0gYVs2XSwgYTEzID0gYVs3XSwKKwkgICAgICAgIGEyMCA9IGFb
OF0sIGEyMSA9IGFbOV0sIGEyMiA9IGFbMTBdLCBhMjMgPSBhWzExXSwKKwkgICAgICAgIGEzMCA9
IGFbMTJdLCBhMzEgPSBhWzEzXSwgYTMyID0gYVsxNF0sIGEzMyA9IGFbMTVdLAorCisJICAgICAg
ICBiMDAgPSBhMDAgKiBhMTEgLSBhMDEgKiBhMTAsCisJICAgICAgICBiMDEgPSBhMDAgKiBhMTIg
LSBhMDIgKiBhMTAsCisJICAgICAgICBiMDIgPSBhMDAgKiBhMTMgLSBhMDMgKiBhMTAsCisJICAg
ICAgICBiMDMgPSBhMDEgKiBhMTIgLSBhMDIgKiBhMTEsCisJICAgICAgICBiMDQgPSBhMDEgKiBh
MTMgLSBhMDMgKiBhMTEsCisJICAgICAgICBiMDUgPSBhMDIgKiBhMTMgLSBhMDMgKiBhMTIsCisJ
ICAgICAgICBiMDYgPSBhMjAgKiBhMzEgLSBhMjEgKiBhMzAsCisJICAgICAgICBiMDcgPSBhMjAg
KiBhMzIgLSBhMjIgKiBhMzAsCisJICAgICAgICBiMDggPSBhMjAgKiBhMzMgLSBhMjMgKiBhMzAs
CisJICAgICAgICBiMDkgPSBhMjEgKiBhMzIgLSBhMjIgKiBhMzEsCisJICAgICAgICBiMTAgPSBh
MjEgKiBhMzMgLSBhMjMgKiBhMzEsCisJICAgICAgICBiMTEgPSBhMjIgKiBhMzMgLSBhMjMgKiBh
MzI7CisKKwkgICAgLy8gQ2FsY3VsYXRlIHRoZSBkZXRlcm1pbmFudAorCSAgICByZXR1cm4gYjAw
ICogYjExIC0gYjAxICogYjEwICsgYjAyICogYjA5ICsgYjAzICogYjA4IC0gYjA0ICogYjA3ICsg
YjA1ICogYjA2OworCX07CisKKwkvKioKKwkgKiBNdWx0aXBsaWVzIHR3byBtYXQ0J3MgZXhwbGlj
aXRseSB1c2luZyBTSU1ECisJICoKKwkgKiBAcGFyYW0ge21hdDR9IG91dCB0aGUgcmVjZWl2aW5n
IG1hdHJpeAorCSAqIEBwYXJhbSB7bWF0NH0gYSB0aGUgZmlyc3Qgb3BlcmFuZCwgbXVzdCBiZSBh
IEZsb2F0MzJBcnJheQorCSAqIEBwYXJhbSB7bWF0NH0gYiB0aGUgc2Vjb25kIG9wZXJhbmQsIG11
c3QgYmUgYSBGbG9hdDMyQXJyYXkKKwkgKiBAcmV0dXJucyB7bWF0NH0gb3V0CisJICovCisJbWF0
NC5TSU1ELm11bHRpcGx5ID0gZnVuY3Rpb24gKG91dCwgYSwgYikgeworCSAgICB2YXIgYTAgPSBT
SU1ELkZsb2F0MzJ4NC5sb2FkKGEsIDApOworCSAgICB2YXIgYTEgPSBTSU1ELkZsb2F0MzJ4NC5s
b2FkKGEsIDQpOworCSAgICB2YXIgYTIgPSBTSU1ELkZsb2F0MzJ4NC5sb2FkKGEsIDgpOworCSAg
ICB2YXIgYTMgPSBTSU1ELkZsb2F0MzJ4NC5sb2FkKGEsIDEyKTsKKworCSAgICB2YXIgYjAgPSBT
SU1ELkZsb2F0MzJ4NC5sb2FkKGIsIDApOworCSAgICB2YXIgb3V0MCA9IFNJTUQuRmxvYXQzMng0
LmFkZCgKKwkgICAgICAgICAgICAgICAgICAgU0lNRC5GbG9hdDMyeDQubXVsKFNJTUQuRmxvYXQz
Mng0LnN3aXp6bGUoYjAsIDAsIDAsIDAsIDApLCBhMCksCisJICAgICAgICAgICAgICAgICAgIFNJ
TUQuRmxvYXQzMng0LmFkZCgKKwkgICAgICAgICAgICAgICAgICAgICAgIFNJTUQuRmxvYXQzMng0
Lm11bChTSU1ELkZsb2F0MzJ4NC5zd2l6emxlKGIwLCAxLCAxLCAxLCAxKSwgYTEpLAorCSAgICAg
ICAgICAgICAgICAgICAgICAgU0lNRC5GbG9hdDMyeDQuYWRkKAorCSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNJTUQuRmxvYXQzMng0Lm11bChTSU1ELkZsb2F0MzJ4NC5zd2l6emxlKGIwLCAy
LCAyLCAyLCAyKSwgYTIpLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgIFNJTUQuRmxvYXQz
Mng0Lm11bChTSU1ELkZsb2F0MzJ4NC5zd2l6emxlKGIwLCAzLCAzLCAzLCAzKSwgYTMpKSkpOwor
CSAgICBTSU1ELkZsb2F0MzJ4NC5zdG9yZShvdXQsIDAsIG91dDApOworCisJICAgIHZhciBiMSA9
IFNJTUQuRmxvYXQzMng0LmxvYWQoYiwgNCk7CisJICAgIHZhciBvdXQxID0gU0lNRC5GbG9hdDMy
eDQuYWRkKAorCSAgICAgICAgICAgICAgICAgICBTSU1ELkZsb2F0MzJ4NC5tdWwoU0lNRC5GbG9h
dDMyeDQuc3dpenpsZShiMSwgMCwgMCwgMCwgMCksIGEwKSwKKwkgICAgICAgICAgICAgICAgICAg
U0lNRC5GbG9hdDMyeDQuYWRkKAorCSAgICAgICAgICAgICAgICAgICAgICAgU0lNRC5GbG9hdDMy
eDQubXVsKFNJTUQuRmxvYXQzMng0LnN3aXp6bGUoYjEsIDEsIDEsIDEsIDEpLCBhMSksCisJICAg
ICAgICAgICAgICAgICAgICAgICBTSU1ELkZsb2F0MzJ4NC5hZGQoCisJICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU0lNRC5GbG9hdDMyeDQubXVsKFNJTUQuRmxvYXQzMng0LnN3aXp6bGUoYjEs
IDIsIDIsIDIsIDIpLCBhMiksCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgU0lNRC5GbG9h
dDMyeDQubXVsKFNJTUQuRmxvYXQzMng0LnN3aXp6bGUoYjEsIDMsIDMsIDMsIDMpLCBhMykpKSk7
CisJICAgIFNJTUQuRmxvYXQzMng0LnN0b3JlKG91dCwgNCwgb3V0MSk7CisKKwkgICAgdmFyIGIy
ID0gU0lNRC5GbG9hdDMyeDQubG9hZChiLCA4KTsKKwkgICAgdmFyIG91dDIgPSBTSU1ELkZsb2F0
MzJ4NC5hZGQoCisJICAgICAgICAgICAgICAgICAgIFNJTUQuRmxvYXQzMng0Lm11bChTSU1ELkZs
b2F0MzJ4NC5zd2l6emxlKGIyLCAwLCAwLCAwLCAwKSwgYTApLAorCSAgICAgICAgICAgICAgICAg
ICBTSU1ELkZsb2F0MzJ4NC5hZGQoCisJICAgICAgICAgICAgICAgICAgICAgICBTSU1ELkZsb2F0
MzJ4NC5tdWwoU0lNRC5GbG9hdDMyeDQuc3dpenpsZShiMiwgMSwgMSwgMSwgMSksIGExKSwKKwkg
ICAgICAgICAgICAgICAgICAgICAgIFNJTUQuRmxvYXQzMng0LmFkZCgKKwkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU0lNRC5GbG9hdDMyeDQubXVsKFNJTUQuRmxvYXQzMng0LnN3aXp6
bGUoYjIsIDIsIDIsIDIsIDIpLCBhMiksCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNJTUQuRmxvYXQzMng0Lm11bChTSU1ELkZsb2F0MzJ4NC5zd2l6emxlKGIyLCAzLCAzLCAzLCAz
KSwgYTMpKSkpOworCSAgICBTSU1ELkZsb2F0MzJ4NC5zdG9yZShvdXQsIDgsIG91dDIpOworCisJ
ICAgIHZhciBiMyA9IFNJTUQuRmxvYXQzMng0LmxvYWQoYiwgMTIpOworCSAgICB2YXIgb3V0MyA9
IFNJTUQuRmxvYXQzMng0LmFkZCgKKwkgICAgICAgICAgICAgICAgICAgU0lNRC5GbG9hdDMyeDQu
bXVsKFNJTUQuRmxvYXQzMng0LnN3aXp6bGUoYjMsIDAsIDAsIDAsIDApLCBhMCksCisJICAgICAg
ICAgICAgICAgICAgIFNJTUQuRmxvYXQzMng0LmFkZCgKKwkgICAgICAgICAgICAgICAgICAgICAg
ICBTSU1ELkZsb2F0MzJ4NC5tdWwoU0lNRC5GbG9hdDMyeDQuc3dpenpsZShiMywgMSwgMSwgMSwg
MSksIGExKSwKKwkgICAgICAgICAgICAgICAgICAgICAgICBTSU1ELkZsb2F0MzJ4NC5hZGQoCisJ
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNJTUQuRmxvYXQzMng0Lm11bChTSU1ELkZsb2F0
MzJ4NC5zd2l6emxlKGIzLCAyLCAyLCAyLCAyKSwgYTIpLAorCSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTSU1ELkZsb2F0MzJ4NC5tdWwoU0lNRC5GbG9hdDMyeDQuc3dpenpsZShiMywgMywg
MywgMywgMyksIGEzKSkpKTsKKwkgICAgU0lNRC5GbG9hdDMyeDQuc3RvcmUob3V0LCAxMiwgb3V0
Myk7CisKKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogTXVsdGlwbGllcyB0d28g
bWF0NCdzIGV4cGxpY2l0bHkgbm90IHVzaW5nIFNJTUQKKwkgKgorCSAqIEBwYXJhbSB7bWF0NH0g
b3V0IHRoZSByZWNlaXZpbmcgbWF0cml4CisJICogQHBhcmFtIHttYXQ0fSBhIHRoZSBmaXJzdCBv
cGVyYW5kCisJICogQHBhcmFtIHttYXQ0fSBiIHRoZSBzZWNvbmQgb3BlcmFuZAorCSAqIEByZXR1
cm5zIHttYXQ0fSBvdXQKKwkgKi8KKwltYXQ0LnNjYWxhci5tdWx0aXBseSA9IGZ1bmN0aW9uIChv
dXQsIGEsIGIpIHsKKwkgICAgdmFyIGEwMCA9IGFbMF0sIGEwMSA9IGFbMV0sIGEwMiA9IGFbMl0s
IGEwMyA9IGFbM10sCisJICAgICAgICBhMTAgPSBhWzRdLCBhMTEgPSBhWzVdLCBhMTIgPSBhWzZd
LCBhMTMgPSBhWzddLAorCSAgICAgICAgYTIwID0gYVs4XSwgYTIxID0gYVs5XSwgYTIyID0gYVsx
MF0sIGEyMyA9IGFbMTFdLAorCSAgICAgICAgYTMwID0gYVsxMl0sIGEzMSA9IGFbMTNdLCBhMzIg
PSBhWzE0XSwgYTMzID0gYVsxNV07CisKKwkgICAgLy8gQ2FjaGUgb25seSB0aGUgY3VycmVudCBs
aW5lIG9mIHRoZSBzZWNvbmQgbWF0cml4CisJICAgIHZhciBiMCAgPSBiWzBdLCBiMSA9IGJbMV0s
IGIyID0gYlsyXSwgYjMgPSBiWzNdOworCSAgICBvdXRbMF0gPSBiMCphMDAgKyBiMSphMTAgKyBi
MiphMjAgKyBiMyphMzA7CisJICAgIG91dFsxXSA9IGIwKmEwMSArIGIxKmExMSArIGIyKmEyMSAr
IGIzKmEzMTsKKwkgICAgb3V0WzJdID0gYjAqYTAyICsgYjEqYTEyICsgYjIqYTIyICsgYjMqYTMy
OworCSAgICBvdXRbM10gPSBiMCphMDMgKyBiMSphMTMgKyBiMiphMjMgKyBiMyphMzM7CisKKwkg
ICAgYjAgPSBiWzRdOyBiMSA9IGJbNV07IGIyID0gYls2XTsgYjMgPSBiWzddOworCSAgICBvdXRb
NF0gPSBiMCphMDAgKyBiMSphMTAgKyBiMiphMjAgKyBiMyphMzA7CisJICAgIG91dFs1XSA9IGIw
KmEwMSArIGIxKmExMSArIGIyKmEyMSArIGIzKmEzMTsKKwkgICAgb3V0WzZdID0gYjAqYTAyICsg
YjEqYTEyICsgYjIqYTIyICsgYjMqYTMyOworCSAgICBvdXRbN10gPSBiMCphMDMgKyBiMSphMTMg
KyBiMiphMjMgKyBiMyphMzM7CisKKwkgICAgYjAgPSBiWzhdOyBiMSA9IGJbOV07IGIyID0gYlsx
MF07IGIzID0gYlsxMV07CisJICAgIG91dFs4XSA9IGIwKmEwMCArIGIxKmExMCArIGIyKmEyMCAr
IGIzKmEzMDsKKwkgICAgb3V0WzldID0gYjAqYTAxICsgYjEqYTExICsgYjIqYTIxICsgYjMqYTMx
OworCSAgICBvdXRbMTBdID0gYjAqYTAyICsgYjEqYTEyICsgYjIqYTIyICsgYjMqYTMyOworCSAg
ICBvdXRbMTFdID0gYjAqYTAzICsgYjEqYTEzICsgYjIqYTIzICsgYjMqYTMzOworCisJICAgIGIw
ID0gYlsxMl07IGIxID0gYlsxM107IGIyID0gYlsxNF07IGIzID0gYlsxNV07CisJICAgIG91dFsx
Ml0gPSBiMCphMDAgKyBiMSphMTAgKyBiMiphMjAgKyBiMyphMzA7CisJICAgIG91dFsxM10gPSBi
MCphMDEgKyBiMSphMTEgKyBiMiphMjEgKyBiMyphMzE7CisJICAgIG91dFsxNF0gPSBiMCphMDIg
KyBiMSphMTIgKyBiMiphMjIgKyBiMyphMzI7CisJICAgIG91dFsxNV0gPSBiMCphMDMgKyBiMSph
MTMgKyBiMiphMjMgKyBiMyphMzM7CisJICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAq
IE11bHRpcGxpZXMgdHdvIG1hdDQncyB1c2luZyBTSU1EIGlmIGF2YWlsYWJsZSBhbmQgZW5hYmxl
ZAorCSAqCisJICogQHBhcmFtIHttYXQ0fSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXgKKwkgKiBA
cGFyYW0ge21hdDR9IGEgdGhlIGZpcnN0IG9wZXJhbmQKKwkgKiBAcGFyYW0ge21hdDR9IGIgdGhl
IHNlY29uZCBvcGVyYW5kCisJICogQHJldHVybnMge21hdDR9IG91dAorCSAqLworCW1hdDQubXVs
dGlwbHkgPSBnbE1hdHJpeC5VU0VfU0lNRCA/IG1hdDQuU0lNRC5tdWx0aXBseSA6IG1hdDQuc2Nh
bGFyLm11bHRpcGx5OworCisJLyoqCisJICogQWxpYXMgZm9yIHtAbGluayBtYXQ0Lm11bHRpcGx5
fQorCSAqIEBmdW5jdGlvbgorCSAqLworCW1hdDQubXVsID0gbWF0NC5tdWx0aXBseTsKKworCS8q
KgorCSAqIFRyYW5zbGF0ZSBhIG1hdDQgYnkgdGhlIGdpdmVuIHZlY3RvciBub3QgdXNpbmcgU0lN
RAorCSAqCisJICogQHBhcmFtIHttYXQ0fSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXgKKwkgKiBA
cGFyYW0ge21hdDR9IGEgdGhlIG1hdHJpeCB0byB0cmFuc2xhdGUKKwkgKiBAcGFyYW0ge3ZlYzN9
IHYgdmVjdG9yIHRvIHRyYW5zbGF0ZSBieQorCSAqIEByZXR1cm5zIHttYXQ0fSBvdXQKKwkgKi8K
KwltYXQ0LnNjYWxhci50cmFuc2xhdGUgPSBmdW5jdGlvbiAob3V0LCBhLCB2KSB7CisJICAgIHZh
ciB4ID0gdlswXSwgeSA9IHZbMV0sIHogPSB2WzJdLAorCSAgICAgICAgYTAwLCBhMDEsIGEwMiwg
YTAzLAorCSAgICAgICAgYTEwLCBhMTEsIGExMiwgYTEzLAorCSAgICAgICAgYTIwLCBhMjEsIGEy
MiwgYTIzOworCisJICAgIGlmIChhID09PSBvdXQpIHsKKwkgICAgICAgIG91dFsxMl0gPSBhWzBd
ICogeCArIGFbNF0gKiB5ICsgYVs4XSAqIHogKyBhWzEyXTsKKwkgICAgICAgIG91dFsxM10gPSBh
WzFdICogeCArIGFbNV0gKiB5ICsgYVs5XSAqIHogKyBhWzEzXTsKKwkgICAgICAgIG91dFsxNF0g
PSBhWzJdICogeCArIGFbNl0gKiB5ICsgYVsxMF0gKiB6ICsgYVsxNF07CisJICAgICAgICBvdXRb
MTVdID0gYVszXSAqIHggKyBhWzddICogeSArIGFbMTFdICogeiArIGFbMTVdOworCSAgICB9IGVs
c2UgeworCSAgICAgICAgYTAwID0gYVswXTsgYTAxID0gYVsxXTsgYTAyID0gYVsyXTsgYTAzID0g
YVszXTsKKwkgICAgICAgIGExMCA9IGFbNF07IGExMSA9IGFbNV07IGExMiA9IGFbNl07IGExMyA9
IGFbN107CisJICAgICAgICBhMjAgPSBhWzhdOyBhMjEgPSBhWzldOyBhMjIgPSBhWzEwXTsgYTIz
ID0gYVsxMV07CisKKwkgICAgICAgIG91dFswXSA9IGEwMDsgb3V0WzFdID0gYTAxOyBvdXRbMl0g
PSBhMDI7IG91dFszXSA9IGEwMzsKKwkgICAgICAgIG91dFs0XSA9IGExMDsgb3V0WzVdID0gYTEx
OyBvdXRbNl0gPSBhMTI7IG91dFs3XSA9IGExMzsKKwkgICAgICAgIG91dFs4XSA9IGEyMDsgb3V0
WzldID0gYTIxOyBvdXRbMTBdID0gYTIyOyBvdXRbMTFdID0gYTIzOworCisJICAgICAgICBvdXRb
MTJdID0gYTAwICogeCArIGExMCAqIHkgKyBhMjAgKiB6ICsgYVsxMl07CisJICAgICAgICBvdXRb
MTNdID0gYTAxICogeCArIGExMSAqIHkgKyBhMjEgKiB6ICsgYVsxM107CisJICAgICAgICBvdXRb
MTRdID0gYTAyICogeCArIGExMiAqIHkgKyBhMjIgKiB6ICsgYVsxNF07CisJICAgICAgICBvdXRb
MTVdID0gYTAzICogeCArIGExMyAqIHkgKyBhMjMgKiB6ICsgYVsxNV07CisJICAgIH0KKworCSAg
ICByZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBUcmFuc2xhdGVzIGEgbWF0NCBieSB0aGUg
Z2l2ZW4gdmVjdG9yIHVzaW5nIFNJTUQKKwkgKgorCSAqIEBwYXJhbSB7bWF0NH0gb3V0IHRoZSBy
ZWNlaXZpbmcgbWF0cml4CisJICogQHBhcmFtIHttYXQ0fSBhIHRoZSBtYXRyaXggdG8gdHJhbnNs
YXRlCisJICogQHBhcmFtIHt2ZWMzfSB2IHZlY3RvciB0byB0cmFuc2xhdGUgYnkKKwkgKiBAcmV0
dXJucyB7bWF0NH0gb3V0CisJICovCisJbWF0NC5TSU1ELnRyYW5zbGF0ZSA9IGZ1bmN0aW9uIChv
dXQsIGEsIHYpIHsKKwkgICAgdmFyIGEwID0gU0lNRC5GbG9hdDMyeDQubG9hZChhLCAwKSwKKwkg
ICAgICAgIGExID0gU0lNRC5GbG9hdDMyeDQubG9hZChhLCA0KSwKKwkgICAgICAgIGEyID0gU0lN
RC5GbG9hdDMyeDQubG9hZChhLCA4KSwKKwkgICAgICAgIGEzID0gU0lNRC5GbG9hdDMyeDQubG9h
ZChhLCAxMiksCisJICAgICAgICB2ZWMgPSBTSU1ELkZsb2F0MzJ4NCh2WzBdLCB2WzFdLCB2WzJd
ICwgMCk7CisKKwkgICAgaWYgKGEgIT09IG91dCkgeworCSAgICAgICAgb3V0WzBdID0gYVswXTsg
b3V0WzFdID0gYVsxXTsgb3V0WzJdID0gYVsyXTsgb3V0WzNdID0gYVszXTsKKwkgICAgICAgIG91
dFs0XSA9IGFbNF07IG91dFs1XSA9IGFbNV07IG91dFs2XSA9IGFbNl07IG91dFs3XSA9IGFbN107
CisJICAgICAgICBvdXRbOF0gPSBhWzhdOyBvdXRbOV0gPSBhWzldOyBvdXRbMTBdID0gYVsxMF07
IG91dFsxMV0gPSBhWzExXTsKKwkgICAgfQorCisJICAgIGEwID0gU0lNRC5GbG9hdDMyeDQubXVs
KGEwLCBTSU1ELkZsb2F0MzJ4NC5zd2l6emxlKHZlYywgMCwgMCwgMCwgMCkpOworCSAgICBhMSA9
IFNJTUQuRmxvYXQzMng0Lm11bChhMSwgU0lNRC5GbG9hdDMyeDQuc3dpenpsZSh2ZWMsIDEsIDEs
IDEsIDEpKTsKKwkgICAgYTIgPSBTSU1ELkZsb2F0MzJ4NC5tdWwoYTIsIFNJTUQuRmxvYXQzMng0
LnN3aXp6bGUodmVjLCAyLCAyLCAyLCAyKSk7CisKKwkgICAgdmFyIHQwID0gU0lNRC5GbG9hdDMy
eDQuYWRkKGEwLCBTSU1ELkZsb2F0MzJ4NC5hZGQoYTEsIFNJTUQuRmxvYXQzMng0LmFkZChhMiwg
YTMpKSk7CisJICAgIFNJTUQuRmxvYXQzMng0LnN0b3JlKG91dCwgMTIsIHQwKTsKKworCSAgICBy
ZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBUcmFuc2xhdGVzIGEgbWF0NCBieSB0aGUgZ2l2
ZW4gdmVjdG9yIHVzaW5nIFNJTUQgaWYgYXZhaWxhYmxlIGFuZCBlbmFibGVkCisJICoKKwkgKiBA
cGFyYW0ge21hdDR9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeAorCSAqIEBwYXJhbSB7bWF0NH0g
YSB0aGUgbWF0cml4IHRvIHRyYW5zbGF0ZQorCSAqIEBwYXJhbSB7dmVjM30gdiB2ZWN0b3IgdG8g
dHJhbnNsYXRlIGJ5CisJICogQHJldHVybnMge21hdDR9IG91dAorCSAqLworCW1hdDQudHJhbnNs
YXRlID0gZ2xNYXRyaXguVVNFX1NJTUQgPyBtYXQ0LlNJTUQudHJhbnNsYXRlIDogbWF0NC5zY2Fs
YXIudHJhbnNsYXRlOworCisJLyoqCisJICogU2NhbGVzIHRoZSBtYXQ0IGJ5IHRoZSBkaW1lbnNp
b25zIGluIHRoZSBnaXZlbiB2ZWMzIG5vdCB1c2luZyB2ZWN0b3JpemF0aW9uCisJICoKKwkgKiBA
cGFyYW0ge21hdDR9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeAorCSAqIEBwYXJhbSB7bWF0NH0g
YSB0aGUgbWF0cml4IHRvIHNjYWxlCisJICogQHBhcmFtIHt2ZWMzfSB2IHRoZSB2ZWMzIHRvIHNj
YWxlIHRoZSBtYXRyaXggYnkKKwkgKiBAcmV0dXJucyB7bWF0NH0gb3V0CisJICoqLworCW1hdDQu
c2NhbGFyLnNjYWxlID0gZnVuY3Rpb24ob3V0LCBhLCB2KSB7CisJICAgIHZhciB4ID0gdlswXSwg
eSA9IHZbMV0sIHogPSB2WzJdOworCisJICAgIG91dFswXSA9IGFbMF0gKiB4OworCSAgICBvdXRb
MV0gPSBhWzFdICogeDsKKwkgICAgb3V0WzJdID0gYVsyXSAqIHg7CisJICAgIG91dFszXSA9IGFb
M10gKiB4OworCSAgICBvdXRbNF0gPSBhWzRdICogeTsKKwkgICAgb3V0WzVdID0gYVs1XSAqIHk7
CisJICAgIG91dFs2XSA9IGFbNl0gKiB5OworCSAgICBvdXRbN10gPSBhWzddICogeTsKKwkgICAg
b3V0WzhdID0gYVs4XSAqIHo7CisJICAgIG91dFs5XSA9IGFbOV0gKiB6OworCSAgICBvdXRbMTBd
ID0gYVsxMF0gKiB6OworCSAgICBvdXRbMTFdID0gYVsxMV0gKiB6OworCSAgICBvdXRbMTJdID0g
YVsxMl07CisJICAgIG91dFsxM10gPSBhWzEzXTsKKwkgICAgb3V0WzE0XSA9IGFbMTRdOworCSAg
ICBvdXRbMTVdID0gYVsxNV07CisJICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIFNj
YWxlcyB0aGUgbWF0NCBieSB0aGUgZGltZW5zaW9ucyBpbiB0aGUgZ2l2ZW4gdmVjMyB1c2luZyB2
ZWN0b3JpemF0aW9uCisJICoKKwkgKiBAcGFyYW0ge21hdDR9IG91dCB0aGUgcmVjZWl2aW5nIG1h
dHJpeAorCSAqIEBwYXJhbSB7bWF0NH0gYSB0aGUgbWF0cml4IHRvIHNjYWxlCisJICogQHBhcmFt
IHt2ZWMzfSB2IHRoZSB2ZWMzIHRvIHNjYWxlIHRoZSBtYXRyaXggYnkKKwkgKiBAcmV0dXJucyB7
bWF0NH0gb3V0CisJICoqLworCW1hdDQuU0lNRC5zY2FsZSA9IGZ1bmN0aW9uKG91dCwgYSwgdikg
eworCSAgICB2YXIgYTAsIGExLCBhMjsKKwkgICAgdmFyIHZlYyA9IFNJTUQuRmxvYXQzMng0KHZb
MF0sIHZbMV0sIHZbMl0sIDApOworCisJICAgIGEwID0gU0lNRC5GbG9hdDMyeDQubG9hZChhLCAw
KTsKKwkgICAgU0lNRC5GbG9hdDMyeDQuc3RvcmUoCisJICAgICAgICBvdXQsIDAsIFNJTUQuRmxv
YXQzMng0Lm11bChhMCwgU0lNRC5GbG9hdDMyeDQuc3dpenpsZSh2ZWMsIDAsIDAsIDAsIDApKSk7
CisKKwkgICAgYTEgPSBTSU1ELkZsb2F0MzJ4NC5sb2FkKGEsIDQpOworCSAgICBTSU1ELkZsb2F0
MzJ4NC5zdG9yZSgKKwkgICAgICAgIG91dCwgNCwgU0lNRC5GbG9hdDMyeDQubXVsKGExLCBTSU1E
LkZsb2F0MzJ4NC5zd2l6emxlKHZlYywgMSwgMSwgMSwgMSkpKTsKKworCSAgICBhMiA9IFNJTUQu
RmxvYXQzMng0LmxvYWQoYSwgOCk7CisJICAgIFNJTUQuRmxvYXQzMng0LnN0b3JlKAorCSAgICAg
ICAgb3V0LCA4LCBTSU1ELkZsb2F0MzJ4NC5tdWwoYTIsIFNJTUQuRmxvYXQzMng0LnN3aXp6bGUo
dmVjLCAyLCAyLCAyLCAyKSkpOworCisJICAgIG91dFsxMl0gPSBhWzEyXTsKKwkgICAgb3V0WzEz
XSA9IGFbMTNdOworCSAgICBvdXRbMTRdID0gYVsxNF07CisJICAgIG91dFsxNV0gPSBhWzE1XTsK
KwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogU2NhbGVzIHRoZSBtYXQ0IGJ5IHRo
ZSBkaW1lbnNpb25zIGluIHRoZSBnaXZlbiB2ZWMzIHVzaW5nIFNJTUQgaWYgYXZhaWxhYmxlIGFu
ZCBlbmFibGVkCisJICoKKwkgKiBAcGFyYW0ge21hdDR9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJp
eAorCSAqIEBwYXJhbSB7bWF0NH0gYSB0aGUgbWF0cml4IHRvIHNjYWxlCisJICogQHBhcmFtIHt2
ZWMzfSB2IHRoZSB2ZWMzIHRvIHNjYWxlIHRoZSBtYXRyaXggYnkKKwkgKiBAcmV0dXJucyB7bWF0
NH0gb3V0CisJICovCisJbWF0NC5zY2FsZSA9IGdsTWF0cml4LlVTRV9TSU1EID8gbWF0NC5TSU1E
LnNjYWxlIDogbWF0NC5zY2FsYXIuc2NhbGU7CisKKwkvKioKKwkgKiBSb3RhdGVzIGEgbWF0NCBi
eSB0aGUgZ2l2ZW4gYW5nbGUgYXJvdW5kIHRoZSBnaXZlbiBheGlzCisJICoKKwkgKiBAcGFyYW0g
e21hdDR9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeAorCSAqIEBwYXJhbSB7bWF0NH0gYSB0aGUg
bWF0cml4IHRvIHJvdGF0ZQorCSAqIEBwYXJhbSB7TnVtYmVyfSByYWQgdGhlIGFuZ2xlIHRvIHJv
dGF0ZSB0aGUgbWF0cml4IGJ5CisJICogQHBhcmFtIHt2ZWMzfSBheGlzIHRoZSBheGlzIHRvIHJv
dGF0ZSBhcm91bmQKKwkgKiBAcmV0dXJucyB7bWF0NH0gb3V0CisJICovCisJbWF0NC5yb3RhdGUg
PSBmdW5jdGlvbiAob3V0LCBhLCByYWQsIGF4aXMpIHsKKwkgICAgdmFyIHggPSBheGlzWzBdLCB5
ID0gYXhpc1sxXSwgeiA9IGF4aXNbMl0sCisJICAgICAgICBsZW4gPSBNYXRoLnNxcnQoeCAqIHgg
KyB5ICogeSArIHogKiB6KSwKKwkgICAgICAgIHMsIGMsIHQsCisJICAgICAgICBhMDAsIGEwMSwg
YTAyLCBhMDMsCisJICAgICAgICBhMTAsIGExMSwgYTEyLCBhMTMsCisJICAgICAgICBhMjAsIGEy
MSwgYTIyLCBhMjMsCisJICAgICAgICBiMDAsIGIwMSwgYjAyLAorCSAgICAgICAgYjEwLCBiMTEs
IGIxMiwKKwkgICAgICAgIGIyMCwgYjIxLCBiMjI7CisKKwkgICAgaWYgKE1hdGguYWJzKGxlbikg
PCBnbE1hdHJpeC5FUFNJTE9OKSB7IHJldHVybiBudWxsOyB9CisKKwkgICAgbGVuID0gMSAvIGxl
bjsKKwkgICAgeCAqPSBsZW47CisJICAgIHkgKj0gbGVuOworCSAgICB6ICo9IGxlbjsKKworCSAg
ICBzID0gTWF0aC5zaW4ocmFkKTsKKwkgICAgYyA9IE1hdGguY29zKHJhZCk7CisJICAgIHQgPSAx
IC0gYzsKKworCSAgICBhMDAgPSBhWzBdOyBhMDEgPSBhWzFdOyBhMDIgPSBhWzJdOyBhMDMgPSBh
WzNdOworCSAgICBhMTAgPSBhWzRdOyBhMTEgPSBhWzVdOyBhMTIgPSBhWzZdOyBhMTMgPSBhWzdd
OworCSAgICBhMjAgPSBhWzhdOyBhMjEgPSBhWzldOyBhMjIgPSBhWzEwXTsgYTIzID0gYVsxMV07
CisKKwkgICAgLy8gQ29uc3RydWN0IHRoZSBlbGVtZW50cyBvZiB0aGUgcm90YXRpb24gbWF0cml4
CisJICAgIGIwMCA9IHggKiB4ICogdCArIGM7IGIwMSA9IHkgKiB4ICogdCArIHogKiBzOyBiMDIg
PSB6ICogeCAqIHQgLSB5ICogczsKKwkgICAgYjEwID0geCAqIHkgKiB0IC0geiAqIHM7IGIxMSA9
IHkgKiB5ICogdCArIGM7IGIxMiA9IHogKiB5ICogdCArIHggKiBzOworCSAgICBiMjAgPSB4ICog
eiAqIHQgKyB5ICogczsgYjIxID0geSAqIHogKiB0IC0geCAqIHM7IGIyMiA9IHogKiB6ICogdCAr
IGM7CisKKwkgICAgLy8gUGVyZm9ybSByb3RhdGlvbi1zcGVjaWZpYyBtYXRyaXggbXVsdGlwbGlj
YXRpb24KKwkgICAgb3V0WzBdID0gYTAwICogYjAwICsgYTEwICogYjAxICsgYTIwICogYjAyOwor
CSAgICBvdXRbMV0gPSBhMDEgKiBiMDAgKyBhMTEgKiBiMDEgKyBhMjEgKiBiMDI7CisJICAgIG91
dFsyXSA9IGEwMiAqIGIwMCArIGExMiAqIGIwMSArIGEyMiAqIGIwMjsKKwkgICAgb3V0WzNdID0g
YTAzICogYjAwICsgYTEzICogYjAxICsgYTIzICogYjAyOworCSAgICBvdXRbNF0gPSBhMDAgKiBi
MTAgKyBhMTAgKiBiMTEgKyBhMjAgKiBiMTI7CisJICAgIG91dFs1XSA9IGEwMSAqIGIxMCArIGEx
MSAqIGIxMSArIGEyMSAqIGIxMjsKKwkgICAgb3V0WzZdID0gYTAyICogYjEwICsgYTEyICogYjEx
ICsgYTIyICogYjEyOworCSAgICBvdXRbN10gPSBhMDMgKiBiMTAgKyBhMTMgKiBiMTEgKyBhMjMg
KiBiMTI7CisJICAgIG91dFs4XSA9IGEwMCAqIGIyMCArIGExMCAqIGIyMSArIGEyMCAqIGIyMjsK
KwkgICAgb3V0WzldID0gYTAxICogYjIwICsgYTExICogYjIxICsgYTIxICogYjIyOworCSAgICBv
dXRbMTBdID0gYTAyICogYjIwICsgYTEyICogYjIxICsgYTIyICogYjIyOworCSAgICBvdXRbMTFd
ID0gYTAzICogYjIwICsgYTEzICogYjIxICsgYTIzICogYjIyOworCisJICAgIGlmIChhICE9PSBv
dXQpIHsgLy8gSWYgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZGlmZmVyLCBjb3B5IHRoZSB1
bmNoYW5nZWQgbGFzdCByb3cKKwkgICAgICAgIG91dFsxMl0gPSBhWzEyXTsKKwkgICAgICAgIG91
dFsxM10gPSBhWzEzXTsKKwkgICAgICAgIG91dFsxNF0gPSBhWzE0XTsKKwkgICAgICAgIG91dFsx
NV0gPSBhWzE1XTsKKwkgICAgfQorCSAgICByZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBS
b3RhdGVzIGEgbWF0cml4IGJ5IHRoZSBnaXZlbiBhbmdsZSBhcm91bmQgdGhlIFggYXhpcyBub3Qg
dXNpbmcgU0lNRAorCSAqCisJICogQHBhcmFtIHttYXQ0fSBvdXQgdGhlIHJlY2VpdmluZyBtYXRy
aXgKKwkgKiBAcGFyYW0ge21hdDR9IGEgdGhlIG1hdHJpeCB0byByb3RhdGUKKwkgKiBAcGFyYW0g
e051bWJlcn0gcmFkIHRoZSBhbmdsZSB0byByb3RhdGUgdGhlIG1hdHJpeCBieQorCSAqIEByZXR1
cm5zIHttYXQ0fSBvdXQKKwkgKi8KKwltYXQ0LnNjYWxhci5yb3RhdGVYID0gZnVuY3Rpb24gKG91
dCwgYSwgcmFkKSB7CisJICAgIHZhciBzID0gTWF0aC5zaW4ocmFkKSwKKwkgICAgICAgIGMgPSBN
YXRoLmNvcyhyYWQpLAorCSAgICAgICAgYTEwID0gYVs0XSwKKwkgICAgICAgIGExMSA9IGFbNV0s
CisJICAgICAgICBhMTIgPSBhWzZdLAorCSAgICAgICAgYTEzID0gYVs3XSwKKwkgICAgICAgIGEy
MCA9IGFbOF0sCisJICAgICAgICBhMjEgPSBhWzldLAorCSAgICAgICAgYTIyID0gYVsxMF0sCisJ
ICAgICAgICBhMjMgPSBhWzExXTsKKworCSAgICBpZiAoYSAhPT0gb3V0KSB7IC8vIElmIHRoZSBz
b3VyY2UgYW5kIGRlc3RpbmF0aW9uIGRpZmZlciwgY29weSB0aGUgdW5jaGFuZ2VkIHJvd3MKKwkg
ICAgICAgIG91dFswXSAgPSBhWzBdOworCSAgICAgICAgb3V0WzFdICA9IGFbMV07CisJICAgICAg
ICBvdXRbMl0gID0gYVsyXTsKKwkgICAgICAgIG91dFszXSAgPSBhWzNdOworCSAgICAgICAgb3V0
WzEyXSA9IGFbMTJdOworCSAgICAgICAgb3V0WzEzXSA9IGFbMTNdOworCSAgICAgICAgb3V0WzE0
XSA9IGFbMTRdOworCSAgICAgICAgb3V0WzE1XSA9IGFbMTVdOworCSAgICB9CisKKwkgICAgLy8g
UGVyZm9ybSBheGlzLXNwZWNpZmljIG1hdHJpeCBtdWx0aXBsaWNhdGlvbgorCSAgICBvdXRbNF0g
PSBhMTAgKiBjICsgYTIwICogczsKKwkgICAgb3V0WzVdID0gYTExICogYyArIGEyMSAqIHM7CisJ
ICAgIG91dFs2XSA9IGExMiAqIGMgKyBhMjIgKiBzOworCSAgICBvdXRbN10gPSBhMTMgKiBjICsg
YTIzICogczsKKwkgICAgb3V0WzhdID0gYTIwICogYyAtIGExMCAqIHM7CisJICAgIG91dFs5XSA9
IGEyMSAqIGMgLSBhMTEgKiBzOworCSAgICBvdXRbMTBdID0gYTIyICogYyAtIGExMiAqIHM7CisJ
ICAgIG91dFsxMV0gPSBhMjMgKiBjIC0gYTEzICogczsKKwkgICAgcmV0dXJuIG91dDsKKwl9Owor
CisJLyoqCisJICogUm90YXRlcyBhIG1hdHJpeCBieSB0aGUgZ2l2ZW4gYW5nbGUgYXJvdW5kIHRo
ZSBYIGF4aXMgdXNpbmcgU0lNRAorCSAqCisJICogQHBhcmFtIHttYXQ0fSBvdXQgdGhlIHJlY2Vp
dmluZyBtYXRyaXgKKwkgKiBAcGFyYW0ge21hdDR9IGEgdGhlIG1hdHJpeCB0byByb3RhdGUKKwkg
KiBAcGFyYW0ge051bWJlcn0gcmFkIHRoZSBhbmdsZSB0byByb3RhdGUgdGhlIG1hdHJpeCBieQor
CSAqIEByZXR1cm5zIHttYXQ0fSBvdXQKKwkgKi8KKwltYXQ0LlNJTUQucm90YXRlWCA9IGZ1bmN0
aW9uIChvdXQsIGEsIHJhZCkgeworCSAgICB2YXIgcyA9IFNJTUQuRmxvYXQzMng0LnNwbGF0KE1h
dGguc2luKHJhZCkpLAorCSAgICAgICAgYyA9IFNJTUQuRmxvYXQzMng0LnNwbGF0KE1hdGguY29z
KHJhZCkpOworCisJICAgIGlmIChhICE9PSBvdXQpIHsgLy8gSWYgdGhlIHNvdXJjZSBhbmQgZGVz
dGluYXRpb24gZGlmZmVyLCBjb3B5IHRoZSB1bmNoYW5nZWQgcm93cworCSAgICAgIG91dFswXSAg
PSBhWzBdOworCSAgICAgIG91dFsxXSAgPSBhWzFdOworCSAgICAgIG91dFsyXSAgPSBhWzJdOwor
CSAgICAgIG91dFszXSAgPSBhWzNdOworCSAgICAgIG91dFsxMl0gPSBhWzEyXTsKKwkgICAgICBv
dXRbMTNdID0gYVsxM107CisJICAgICAgb3V0WzE0XSA9IGFbMTRdOworCSAgICAgIG91dFsxNV0g
PSBhWzE1XTsKKwkgICAgfQorCisJICAgIC8vIFBlcmZvcm0gYXhpcy1zcGVjaWZpYyBtYXRyaXgg
bXVsdGlwbGljYXRpb24KKwkgICAgdmFyIGFfMSA9IFNJTUQuRmxvYXQzMng0LmxvYWQoYSwgNCk7
CisJICAgIHZhciBhXzIgPSBTSU1ELkZsb2F0MzJ4NC5sb2FkKGEsIDgpOworCSAgICBTSU1ELkZs
b2F0MzJ4NC5zdG9yZShvdXQsIDQsCisJICAgICAgICAgICAgICAgICAgICAgICAgIFNJTUQuRmxv
YXQzMng0LmFkZChTSU1ELkZsb2F0MzJ4NC5tdWwoYV8xLCBjKSwgU0lNRC5GbG9hdDMyeDQubXVs
KGFfMiwgcykpKTsKKwkgICAgU0lNRC5GbG9hdDMyeDQuc3RvcmUob3V0LCA4LAorCSAgICAgICAg
ICAgICAgICAgICAgICAgICBTSU1ELkZsb2F0MzJ4NC5zdWIoU0lNRC5GbG9hdDMyeDQubXVsKGFf
MiwgYyksIFNJTUQuRmxvYXQzMng0Lm11bChhXzEsIHMpKSk7CisJICAgIHJldHVybiBvdXQ7CisJ
fTsKKworCS8qKgorCSAqIFJvdGF0ZXMgYSBtYXRyaXggYnkgdGhlIGdpdmVuIGFuZ2xlIGFyb3Vu
ZCB0aGUgWCBheGlzIHVzaW5nIFNJTUQgaWYgYXZhaWxhYmUgYW5kIGVuYWJsZWQKKwkgKgorCSAq
IEBwYXJhbSB7bWF0NH0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4CisJICogQHBhcmFtIHttYXQ0
fSBhIHRoZSBtYXRyaXggdG8gcm90YXRlCisJICogQHBhcmFtIHtOdW1iZXJ9IHJhZCB0aGUgYW5n
bGUgdG8gcm90YXRlIHRoZSBtYXRyaXggYnkKKwkgKiBAcmV0dXJucyB7bWF0NH0gb3V0CisJICov
CisJbWF0NC5yb3RhdGVYID0gZ2xNYXRyaXguVVNFX1NJTUQgPyBtYXQ0LlNJTUQucm90YXRlWCA6
IG1hdDQuc2NhbGFyLnJvdGF0ZVg7CisKKwkvKioKKwkgKiBSb3RhdGVzIGEgbWF0cml4IGJ5IHRo
ZSBnaXZlbiBhbmdsZSBhcm91bmQgdGhlIFkgYXhpcyBub3QgdXNpbmcgU0lNRAorCSAqCisJICog
QHBhcmFtIHttYXQ0fSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXgKKwkgKiBAcGFyYW0ge21hdDR9
IGEgdGhlIG1hdHJpeCB0byByb3RhdGUKKwkgKiBAcGFyYW0ge051bWJlcn0gcmFkIHRoZSBhbmds
ZSB0byByb3RhdGUgdGhlIG1hdHJpeCBieQorCSAqIEByZXR1cm5zIHttYXQ0fSBvdXQKKwkgKi8K
KwltYXQ0LnNjYWxhci5yb3RhdGVZID0gZnVuY3Rpb24gKG91dCwgYSwgcmFkKSB7CisJICAgIHZh
ciBzID0gTWF0aC5zaW4ocmFkKSwKKwkgICAgICAgIGMgPSBNYXRoLmNvcyhyYWQpLAorCSAgICAg
ICAgYTAwID0gYVswXSwKKwkgICAgICAgIGEwMSA9IGFbMV0sCisJICAgICAgICBhMDIgPSBhWzJd
LAorCSAgICAgICAgYTAzID0gYVszXSwKKwkgICAgICAgIGEyMCA9IGFbOF0sCisJICAgICAgICBh
MjEgPSBhWzldLAorCSAgICAgICAgYTIyID0gYVsxMF0sCisJICAgICAgICBhMjMgPSBhWzExXTsK
KworCSAgICBpZiAoYSAhPT0gb3V0KSB7IC8vIElmIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9u
IGRpZmZlciwgY29weSB0aGUgdW5jaGFuZ2VkIHJvd3MKKwkgICAgICAgIG91dFs0XSAgPSBhWzRd
OworCSAgICAgICAgb3V0WzVdICA9IGFbNV07CisJICAgICAgICBvdXRbNl0gID0gYVs2XTsKKwkg
ICAgICAgIG91dFs3XSAgPSBhWzddOworCSAgICAgICAgb3V0WzEyXSA9IGFbMTJdOworCSAgICAg
ICAgb3V0WzEzXSA9IGFbMTNdOworCSAgICAgICAgb3V0WzE0XSA9IGFbMTRdOworCSAgICAgICAg
b3V0WzE1XSA9IGFbMTVdOworCSAgICB9CisKKwkgICAgLy8gUGVyZm9ybSBheGlzLXNwZWNpZmlj
IG1hdHJpeCBtdWx0aXBsaWNhdGlvbgorCSAgICBvdXRbMF0gPSBhMDAgKiBjIC0gYTIwICogczsK
KwkgICAgb3V0WzFdID0gYTAxICogYyAtIGEyMSAqIHM7CisJICAgIG91dFsyXSA9IGEwMiAqIGMg
LSBhMjIgKiBzOworCSAgICBvdXRbM10gPSBhMDMgKiBjIC0gYTIzICogczsKKwkgICAgb3V0Wzhd
ID0gYTAwICogcyArIGEyMCAqIGM7CisJICAgIG91dFs5XSA9IGEwMSAqIHMgKyBhMjEgKiBjOwor
CSAgICBvdXRbMTBdID0gYTAyICogcyArIGEyMiAqIGM7CisJICAgIG91dFsxMV0gPSBhMDMgKiBz
ICsgYTIzICogYzsKKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogUm90YXRlcyBh
IG1hdHJpeCBieSB0aGUgZ2l2ZW4gYW5nbGUgYXJvdW5kIHRoZSBZIGF4aXMgdXNpbmcgU0lNRAor
CSAqCisJICogQHBhcmFtIHttYXQ0fSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXgKKwkgKiBAcGFy
YW0ge21hdDR9IGEgdGhlIG1hdHJpeCB0byByb3RhdGUKKwkgKiBAcGFyYW0ge051bWJlcn0gcmFk
IHRoZSBhbmdsZSB0byByb3RhdGUgdGhlIG1hdHJpeCBieQorCSAqIEByZXR1cm5zIHttYXQ0fSBv
dXQKKwkgKi8KKwltYXQ0LlNJTUQucm90YXRlWSA9IGZ1bmN0aW9uIChvdXQsIGEsIHJhZCkgewor
CSAgICB2YXIgcyA9IFNJTUQuRmxvYXQzMng0LnNwbGF0KE1hdGguc2luKHJhZCkpLAorCSAgICAg
ICAgYyA9IFNJTUQuRmxvYXQzMng0LnNwbGF0KE1hdGguY29zKHJhZCkpOworCisJICAgIGlmIChh
ICE9PSBvdXQpIHsgLy8gSWYgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZGlmZmVyLCBjb3B5
IHRoZSB1bmNoYW5nZWQgcm93cworCSAgICAgICAgb3V0WzRdICA9IGFbNF07CisJICAgICAgICBv
dXRbNV0gID0gYVs1XTsKKwkgICAgICAgIG91dFs2XSAgPSBhWzZdOworCSAgICAgICAgb3V0Wzdd
ICA9IGFbN107CisJICAgICAgICBvdXRbMTJdID0gYVsxMl07CisJICAgICAgICBvdXRbMTNdID0g
YVsxM107CisJICAgICAgICBvdXRbMTRdID0gYVsxNF07CisJICAgICAgICBvdXRbMTVdID0gYVsx
NV07CisJICAgIH0KKworCSAgICAvLyBQZXJmb3JtIGF4aXMtc3BlY2lmaWMgbWF0cml4IG11bHRp
cGxpY2F0aW9uCisJICAgIHZhciBhXzAgPSBTSU1ELkZsb2F0MzJ4NC5sb2FkKGEsIDApOworCSAg
ICB2YXIgYV8yID0gU0lNRC5GbG9hdDMyeDQubG9hZChhLCA4KTsKKwkgICAgU0lNRC5GbG9hdDMy
eDQuc3RvcmUob3V0LCAwLAorCSAgICAgICAgICAgICAgICAgICAgICAgICBTSU1ELkZsb2F0MzJ4
NC5zdWIoU0lNRC5GbG9hdDMyeDQubXVsKGFfMCwgYyksIFNJTUQuRmxvYXQzMng0Lm11bChhXzIs
IHMpKSk7CisJICAgIFNJTUQuRmxvYXQzMng0LnN0b3JlKG91dCwgOCwKKwkgICAgICAgICAgICAg
ICAgICAgICAgICAgU0lNRC5GbG9hdDMyeDQuYWRkKFNJTUQuRmxvYXQzMng0Lm11bChhXzAsIHMp
LCBTSU1ELkZsb2F0MzJ4NC5tdWwoYV8yLCBjKSkpOworCSAgICByZXR1cm4gb3V0OworCX07CisK
KwkvKioKKwkgKiBSb3RhdGVzIGEgbWF0cml4IGJ5IHRoZSBnaXZlbiBhbmdsZSBhcm91bmQgdGhl
IFkgYXhpcyBpZiBTSU1EIGF2YWlsYWJsZSBhbmQgZW5hYmxlZAorCSAqCisJICogQHBhcmFtIHtt
YXQ0fSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXgKKwkgKiBAcGFyYW0ge21hdDR9IGEgdGhlIG1h
dHJpeCB0byByb3RhdGUKKwkgKiBAcGFyYW0ge051bWJlcn0gcmFkIHRoZSBhbmdsZSB0byByb3Rh
dGUgdGhlIG1hdHJpeCBieQorCSAqIEByZXR1cm5zIHttYXQ0fSBvdXQKKwkgKi8KKwkgbWF0NC5y
b3RhdGVZID0gZ2xNYXRyaXguVVNFX1NJTUQgPyBtYXQ0LlNJTUQucm90YXRlWSA6IG1hdDQuc2Nh
bGFyLnJvdGF0ZVk7CisKKwkvKioKKwkgKiBSb3RhdGVzIGEgbWF0cml4IGJ5IHRoZSBnaXZlbiBh
bmdsZSBhcm91bmQgdGhlIFogYXhpcyBub3QgdXNpbmcgU0lNRAorCSAqCisJICogQHBhcmFtIHtt
YXQ0fSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXgKKwkgKiBAcGFyYW0ge21hdDR9IGEgdGhlIG1h
dHJpeCB0byByb3RhdGUKKwkgKiBAcGFyYW0ge051bWJlcn0gcmFkIHRoZSBhbmdsZSB0byByb3Rh
dGUgdGhlIG1hdHJpeCBieQorCSAqIEByZXR1cm5zIHttYXQ0fSBvdXQKKwkgKi8KKwltYXQ0LnNj
YWxhci5yb3RhdGVaID0gZnVuY3Rpb24gKG91dCwgYSwgcmFkKSB7CisJICAgIHZhciBzID0gTWF0
aC5zaW4ocmFkKSwKKwkgICAgICAgIGMgPSBNYXRoLmNvcyhyYWQpLAorCSAgICAgICAgYTAwID0g
YVswXSwKKwkgICAgICAgIGEwMSA9IGFbMV0sCisJICAgICAgICBhMDIgPSBhWzJdLAorCSAgICAg
ICAgYTAzID0gYVszXSwKKwkgICAgICAgIGExMCA9IGFbNF0sCisJICAgICAgICBhMTEgPSBhWzVd
LAorCSAgICAgICAgYTEyID0gYVs2XSwKKwkgICAgICAgIGExMyA9IGFbN107CisKKwkgICAgaWYg
KGEgIT09IG91dCkgeyAvLyBJZiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBkaWZmZXIsIGNv
cHkgdGhlIHVuY2hhbmdlZCBsYXN0IHJvdworCSAgICAgICAgb3V0WzhdICA9IGFbOF07CisJICAg
ICAgICBvdXRbOV0gID0gYVs5XTsKKwkgICAgICAgIG91dFsxMF0gPSBhWzEwXTsKKwkgICAgICAg
IG91dFsxMV0gPSBhWzExXTsKKwkgICAgICAgIG91dFsxMl0gPSBhWzEyXTsKKwkgICAgICAgIG91
dFsxM10gPSBhWzEzXTsKKwkgICAgICAgIG91dFsxNF0gPSBhWzE0XTsKKwkgICAgICAgIG91dFsx
NV0gPSBhWzE1XTsKKwkgICAgfQorCisJICAgIC8vIFBlcmZvcm0gYXhpcy1zcGVjaWZpYyBtYXRy
aXggbXVsdGlwbGljYXRpb24KKwkgICAgb3V0WzBdID0gYTAwICogYyArIGExMCAqIHM7CisJICAg
IG91dFsxXSA9IGEwMSAqIGMgKyBhMTEgKiBzOworCSAgICBvdXRbMl0gPSBhMDIgKiBjICsgYTEy
ICogczsKKwkgICAgb3V0WzNdID0gYTAzICogYyArIGExMyAqIHM7CisJICAgIG91dFs0XSA9IGEx
MCAqIGMgLSBhMDAgKiBzOworCSAgICBvdXRbNV0gPSBhMTEgKiBjIC0gYTAxICogczsKKwkgICAg
b3V0WzZdID0gYTEyICogYyAtIGEwMiAqIHM7CisJICAgIG91dFs3XSA9IGExMyAqIGMgLSBhMDMg
KiBzOworCSAgICByZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBSb3RhdGVzIGEgbWF0cml4
IGJ5IHRoZSBnaXZlbiBhbmdsZSBhcm91bmQgdGhlIFogYXhpcyB1c2luZyBTSU1ECisJICoKKwkg
KiBAcGFyYW0ge21hdDR9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeAorCSAqIEBwYXJhbSB7bWF0
NH0gYSB0aGUgbWF0cml4IHRvIHJvdGF0ZQorCSAqIEBwYXJhbSB7TnVtYmVyfSByYWQgdGhlIGFu
Z2xlIHRvIHJvdGF0ZSB0aGUgbWF0cml4IGJ5CisJICogQHJldHVybnMge21hdDR9IG91dAorCSAq
LworCW1hdDQuU0lNRC5yb3RhdGVaID0gZnVuY3Rpb24gKG91dCwgYSwgcmFkKSB7CisJICAgIHZh
ciBzID0gU0lNRC5GbG9hdDMyeDQuc3BsYXQoTWF0aC5zaW4ocmFkKSksCisJICAgICAgICBjID0g
U0lNRC5GbG9hdDMyeDQuc3BsYXQoTWF0aC5jb3MocmFkKSk7CisKKwkgICAgaWYgKGEgIT09IG91
dCkgeyAvLyBJZiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBkaWZmZXIsIGNvcHkgdGhlIHVu
Y2hhbmdlZCBsYXN0IHJvdworCSAgICAgICAgb3V0WzhdICA9IGFbOF07CisJICAgICAgICBvdXRb
OV0gID0gYVs5XTsKKwkgICAgICAgIG91dFsxMF0gPSBhWzEwXTsKKwkgICAgICAgIG91dFsxMV0g
PSBhWzExXTsKKwkgICAgICAgIG91dFsxMl0gPSBhWzEyXTsKKwkgICAgICAgIG91dFsxM10gPSBh
WzEzXTsKKwkgICAgICAgIG91dFsxNF0gPSBhWzE0XTsKKwkgICAgICAgIG91dFsxNV0gPSBhWzE1
XTsKKwkgICAgfQorCisJICAgIC8vIFBlcmZvcm0gYXhpcy1zcGVjaWZpYyBtYXRyaXggbXVsdGlw
bGljYXRpb24KKwkgICAgdmFyIGFfMCA9IFNJTUQuRmxvYXQzMng0LmxvYWQoYSwgMCk7CisJICAg
IHZhciBhXzEgPSBTSU1ELkZsb2F0MzJ4NC5sb2FkKGEsIDQpOworCSAgICBTSU1ELkZsb2F0MzJ4
NC5zdG9yZShvdXQsIDAsCisJICAgICAgICAgICAgICAgICAgICAgICAgIFNJTUQuRmxvYXQzMng0
LmFkZChTSU1ELkZsb2F0MzJ4NC5tdWwoYV8wLCBjKSwgU0lNRC5GbG9hdDMyeDQubXVsKGFfMSwg
cykpKTsKKwkgICAgU0lNRC5GbG9hdDMyeDQuc3RvcmUob3V0LCA0LAorCSAgICAgICAgICAgICAg
ICAgICAgICAgICBTSU1ELkZsb2F0MzJ4NC5zdWIoU0lNRC5GbG9hdDMyeDQubXVsKGFfMSwgYyks
IFNJTUQuRmxvYXQzMng0Lm11bChhXzAsIHMpKSk7CisJICAgIHJldHVybiBvdXQ7CisJfTsKKwor
CS8qKgorCSAqIFJvdGF0ZXMgYSBtYXRyaXggYnkgdGhlIGdpdmVuIGFuZ2xlIGFyb3VuZCB0aGUg
WiBheGlzIGlmIFNJTUQgYXZhaWxhYmxlIGFuZCBlbmFibGVkCisJICoKKwkgKiBAcGFyYW0ge21h
dDR9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeAorCSAqIEBwYXJhbSB7bWF0NH0gYSB0aGUgbWF0
cml4IHRvIHJvdGF0ZQorCSAqIEBwYXJhbSB7TnVtYmVyfSByYWQgdGhlIGFuZ2xlIHRvIHJvdGF0
ZSB0aGUgbWF0cml4IGJ5CisJICogQHJldHVybnMge21hdDR9IG91dAorCSAqLworCSBtYXQ0LnJv
dGF0ZVogPSBnbE1hdHJpeC5VU0VfU0lNRCA/IG1hdDQuU0lNRC5yb3RhdGVaIDogbWF0NC5zY2Fs
YXIucm90YXRlWjsKKworCS8qKgorCSAqIENyZWF0ZXMgYSBtYXRyaXggZnJvbSBhIHZlY3RvciB0
cmFuc2xhdGlvbgorCSAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byAoYnV0IG11Y2ggZmFzdGVyIHRo
YW4pOgorCSAqCisJICogICAgIG1hdDQuaWRlbnRpdHkoZGVzdCk7CisJICogICAgIG1hdDQudHJh
bnNsYXRlKGRlc3QsIGRlc3QsIHZlYyk7CisJICoKKwkgKiBAcGFyYW0ge21hdDR9IG91dCBtYXQ0
IHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0CisJICogQHBhcmFtIHt2ZWMzfSB2IFRyYW5zbGF0
aW9uIHZlY3RvcgorCSAqIEByZXR1cm5zIHttYXQ0fSBvdXQKKwkgKi8KKwltYXQ0LmZyb21UcmFu
c2xhdGlvbiA9IGZ1bmN0aW9uKG91dCwgdikgeworCSAgICBvdXRbMF0gPSAxOworCSAgICBvdXRb
MV0gPSAwOworCSAgICBvdXRbMl0gPSAwOworCSAgICBvdXRbM10gPSAwOworCSAgICBvdXRbNF0g
PSAwOworCSAgICBvdXRbNV0gPSAxOworCSAgICBvdXRbNl0gPSAwOworCSAgICBvdXRbN10gPSAw
OworCSAgICBvdXRbOF0gPSAwOworCSAgICBvdXRbOV0gPSAwOworCSAgICBvdXRbMTBdID0gMTsK
KwkgICAgb3V0WzExXSA9IDA7CisJICAgIG91dFsxMl0gPSB2WzBdOworCSAgICBvdXRbMTNdID0g
dlsxXTsKKwkgICAgb3V0WzE0XSA9IHZbMl07CisJICAgIG91dFsxNV0gPSAxOworCSAgICByZXR1
cm4gb3V0OworCX0KKworCS8qKgorCSAqIENyZWF0ZXMgYSBtYXRyaXggZnJvbSBhIHZlY3RvciBz
Y2FsaW5nCisJICogVGhpcyBpcyBlcXVpdmFsZW50IHRvIChidXQgbXVjaCBmYXN0ZXIgdGhhbik6
CisJICoKKwkgKiAgICAgbWF0NC5pZGVudGl0eShkZXN0KTsKKwkgKiAgICAgbWF0NC5zY2FsZShk
ZXN0LCBkZXN0LCB2ZWMpOworCSAqCisJICogQHBhcmFtIHttYXQ0fSBvdXQgbWF0NCByZWNlaXZp
bmcgb3BlcmF0aW9uIHJlc3VsdAorCSAqIEBwYXJhbSB7dmVjM30gdiBTY2FsaW5nIHZlY3Rvcgor
CSAqIEByZXR1cm5zIHttYXQ0fSBvdXQKKwkgKi8KKwltYXQ0LmZyb21TY2FsaW5nID0gZnVuY3Rp
b24ob3V0LCB2KSB7CisJICAgIG91dFswXSA9IHZbMF07CisJICAgIG91dFsxXSA9IDA7CisJICAg
IG91dFsyXSA9IDA7CisJICAgIG91dFszXSA9IDA7CisJICAgIG91dFs0XSA9IDA7CisJICAgIG91
dFs1XSA9IHZbMV07CisJICAgIG91dFs2XSA9IDA7CisJICAgIG91dFs3XSA9IDA7CisJICAgIG91
dFs4XSA9IDA7CisJICAgIG91dFs5XSA9IDA7CisJICAgIG91dFsxMF0gPSB2WzJdOworCSAgICBv
dXRbMTFdID0gMDsKKwkgICAgb3V0WzEyXSA9IDA7CisJICAgIG91dFsxM10gPSAwOworCSAgICBv
dXRbMTRdID0gMDsKKwkgICAgb3V0WzE1XSA9IDE7CisJICAgIHJldHVybiBvdXQ7CisJfQorCisJ
LyoqCisJICogQ3JlYXRlcyBhIG1hdHJpeCBmcm9tIGEgZ2l2ZW4gYW5nbGUgYXJvdW5kIGEgZ2l2
ZW4gYXhpcworCSAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byAoYnV0IG11Y2ggZmFzdGVyIHRoYW4p
OgorCSAqCisJICogICAgIG1hdDQuaWRlbnRpdHkoZGVzdCk7CisJICogICAgIG1hdDQucm90YXRl
KGRlc3QsIGRlc3QsIHJhZCwgYXhpcyk7CisJICoKKwkgKiBAcGFyYW0ge21hdDR9IG91dCBtYXQ0
IHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0CisJICogQHBhcmFtIHtOdW1iZXJ9IHJhZCB0aGUg
YW5nbGUgdG8gcm90YXRlIHRoZSBtYXRyaXggYnkKKwkgKiBAcGFyYW0ge3ZlYzN9IGF4aXMgdGhl
IGF4aXMgdG8gcm90YXRlIGFyb3VuZAorCSAqIEByZXR1cm5zIHttYXQ0fSBvdXQKKwkgKi8KKwlt
YXQ0LmZyb21Sb3RhdGlvbiA9IGZ1bmN0aW9uKG91dCwgcmFkLCBheGlzKSB7CisJICAgIHZhciB4
ID0gYXhpc1swXSwgeSA9IGF4aXNbMV0sIHogPSBheGlzWzJdLAorCSAgICAgICAgbGVuID0gTWF0
aC5zcXJ0KHggKiB4ICsgeSAqIHkgKyB6ICogeiksCisJICAgICAgICBzLCBjLCB0OworCisJICAg
IGlmIChNYXRoLmFicyhsZW4pIDwgZ2xNYXRyaXguRVBTSUxPTikgeyByZXR1cm4gbnVsbDsgfQor
CisJICAgIGxlbiA9IDEgLyBsZW47CisJICAgIHggKj0gbGVuOworCSAgICB5ICo9IGxlbjsKKwkg
ICAgeiAqPSBsZW47CisKKwkgICAgcyA9IE1hdGguc2luKHJhZCk7CisJICAgIGMgPSBNYXRoLmNv
cyhyYWQpOworCSAgICB0ID0gMSAtIGM7CisKKwkgICAgLy8gUGVyZm9ybSByb3RhdGlvbi1zcGVj
aWZpYyBtYXRyaXggbXVsdGlwbGljYXRpb24KKwkgICAgb3V0WzBdID0geCAqIHggKiB0ICsgYzsK
KwkgICAgb3V0WzFdID0geSAqIHggKiB0ICsgeiAqIHM7CisJICAgIG91dFsyXSA9IHogKiB4ICog
dCAtIHkgKiBzOworCSAgICBvdXRbM10gPSAwOworCSAgICBvdXRbNF0gPSB4ICogeSAqIHQgLSB6
ICogczsKKwkgICAgb3V0WzVdID0geSAqIHkgKiB0ICsgYzsKKwkgICAgb3V0WzZdID0geiAqIHkg
KiB0ICsgeCAqIHM7CisJICAgIG91dFs3XSA9IDA7CisJICAgIG91dFs4XSA9IHggKiB6ICogdCAr
IHkgKiBzOworCSAgICBvdXRbOV0gPSB5ICogeiAqIHQgLSB4ICogczsKKwkgICAgb3V0WzEwXSA9
IHogKiB6ICogdCArIGM7CisJICAgIG91dFsxMV0gPSAwOworCSAgICBvdXRbMTJdID0gMDsKKwkg
ICAgb3V0WzEzXSA9IDA7CisJICAgIG91dFsxNF0gPSAwOworCSAgICBvdXRbMTVdID0gMTsKKwkg
ICAgcmV0dXJuIG91dDsKKwl9CisKKwkvKioKKwkgKiBDcmVhdGVzIGEgbWF0cml4IGZyb20gdGhl
IGdpdmVuIGFuZ2xlIGFyb3VuZCB0aGUgWCBheGlzCisJICogVGhpcyBpcyBlcXVpdmFsZW50IHRv
IChidXQgbXVjaCBmYXN0ZXIgdGhhbik6CisJICoKKwkgKiAgICAgbWF0NC5pZGVudGl0eShkZXN0
KTsKKwkgKiAgICAgbWF0NC5yb3RhdGVYKGRlc3QsIGRlc3QsIHJhZCk7CisJICoKKwkgKiBAcGFy
YW0ge21hdDR9IG91dCBtYXQ0IHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0CisJICogQHBhcmFt
IHtOdW1iZXJ9IHJhZCB0aGUgYW5nbGUgdG8gcm90YXRlIHRoZSBtYXRyaXggYnkKKwkgKiBAcmV0
dXJucyB7bWF0NH0gb3V0CisJICovCisJbWF0NC5mcm9tWFJvdGF0aW9uID0gZnVuY3Rpb24ob3V0
LCByYWQpIHsKKwkgICAgdmFyIHMgPSBNYXRoLnNpbihyYWQpLAorCSAgICAgICAgYyA9IE1hdGgu
Y29zKHJhZCk7CisKKwkgICAgLy8gUGVyZm9ybSBheGlzLXNwZWNpZmljIG1hdHJpeCBtdWx0aXBs
aWNhdGlvbgorCSAgICBvdXRbMF0gID0gMTsKKwkgICAgb3V0WzFdICA9IDA7CisJICAgIG91dFsy
XSAgPSAwOworCSAgICBvdXRbM10gID0gMDsKKwkgICAgb3V0WzRdID0gMDsKKwkgICAgb3V0WzVd
ID0gYzsKKwkgICAgb3V0WzZdID0gczsKKwkgICAgb3V0WzddID0gMDsKKwkgICAgb3V0WzhdID0g
MDsKKwkgICAgb3V0WzldID0gLXM7CisJICAgIG91dFsxMF0gPSBjOworCSAgICBvdXRbMTFdID0g
MDsKKwkgICAgb3V0WzEyXSA9IDA7CisJICAgIG91dFsxM10gPSAwOworCSAgICBvdXRbMTRdID0g
MDsKKwkgICAgb3V0WzE1XSA9IDE7CisJICAgIHJldHVybiBvdXQ7CisJfQorCisJLyoqCisJICog
Q3JlYXRlcyBhIG1hdHJpeCBmcm9tIHRoZSBnaXZlbiBhbmdsZSBhcm91bmQgdGhlIFkgYXhpcwor
CSAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byAoYnV0IG11Y2ggZmFzdGVyIHRoYW4pOgorCSAqCisJ
ICogICAgIG1hdDQuaWRlbnRpdHkoZGVzdCk7CisJICogICAgIG1hdDQucm90YXRlWShkZXN0LCBk
ZXN0LCByYWQpOworCSAqCisJICogQHBhcmFtIHttYXQ0fSBvdXQgbWF0NCByZWNlaXZpbmcgb3Bl
cmF0aW9uIHJlc3VsdAorCSAqIEBwYXJhbSB7TnVtYmVyfSByYWQgdGhlIGFuZ2xlIHRvIHJvdGF0
ZSB0aGUgbWF0cml4IGJ5CisJICogQHJldHVybnMge21hdDR9IG91dAorCSAqLworCW1hdDQuZnJv
bVlSb3RhdGlvbiA9IGZ1bmN0aW9uKG91dCwgcmFkKSB7CisJICAgIHZhciBzID0gTWF0aC5zaW4o
cmFkKSwKKwkgICAgICAgIGMgPSBNYXRoLmNvcyhyYWQpOworCisJICAgIC8vIFBlcmZvcm0gYXhp
cy1zcGVjaWZpYyBtYXRyaXggbXVsdGlwbGljYXRpb24KKwkgICAgb3V0WzBdICA9IGM7CisJICAg
IG91dFsxXSAgPSAwOworCSAgICBvdXRbMl0gID0gLXM7CisJICAgIG91dFszXSAgPSAwOworCSAg
ICBvdXRbNF0gPSAwOworCSAgICBvdXRbNV0gPSAxOworCSAgICBvdXRbNl0gPSAwOworCSAgICBv
dXRbN10gPSAwOworCSAgICBvdXRbOF0gPSBzOworCSAgICBvdXRbOV0gPSAwOworCSAgICBvdXRb
MTBdID0gYzsKKwkgICAgb3V0WzExXSA9IDA7CisJICAgIG91dFsxMl0gPSAwOworCSAgICBvdXRb
MTNdID0gMDsKKwkgICAgb3V0WzE0XSA9IDA7CisJICAgIG91dFsxNV0gPSAxOworCSAgICByZXR1
cm4gb3V0OworCX0KKworCS8qKgorCSAqIENyZWF0ZXMgYSBtYXRyaXggZnJvbSB0aGUgZ2l2ZW4g
YW5nbGUgYXJvdW5kIHRoZSBaIGF4aXMKKwkgKiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gKGJ1dCBt
dWNoIGZhc3RlciB0aGFuKToKKwkgKgorCSAqICAgICBtYXQ0LmlkZW50aXR5KGRlc3QpOworCSAq
ICAgICBtYXQ0LnJvdGF0ZVooZGVzdCwgZGVzdCwgcmFkKTsKKwkgKgorCSAqIEBwYXJhbSB7bWF0
NH0gb3V0IG1hdDQgcmVjZWl2aW5nIG9wZXJhdGlvbiByZXN1bHQKKwkgKiBAcGFyYW0ge051bWJl
cn0gcmFkIHRoZSBhbmdsZSB0byByb3RhdGUgdGhlIG1hdHJpeCBieQorCSAqIEByZXR1cm5zIHtt
YXQ0fSBvdXQKKwkgKi8KKwltYXQ0LmZyb21aUm90YXRpb24gPSBmdW5jdGlvbihvdXQsIHJhZCkg
eworCSAgICB2YXIgcyA9IE1hdGguc2luKHJhZCksCisJICAgICAgICBjID0gTWF0aC5jb3MocmFk
KTsKKworCSAgICAvLyBQZXJmb3JtIGF4aXMtc3BlY2lmaWMgbWF0cml4IG11bHRpcGxpY2F0aW9u
CisJICAgIG91dFswXSAgPSBjOworCSAgICBvdXRbMV0gID0gczsKKwkgICAgb3V0WzJdICA9IDA7
CisJICAgIG91dFszXSAgPSAwOworCSAgICBvdXRbNF0gPSAtczsKKwkgICAgb3V0WzVdID0gYzsK
KwkgICAgb3V0WzZdID0gMDsKKwkgICAgb3V0WzddID0gMDsKKwkgICAgb3V0WzhdID0gMDsKKwkg
ICAgb3V0WzldID0gMDsKKwkgICAgb3V0WzEwXSA9IDE7CisJICAgIG91dFsxMV0gPSAwOworCSAg
ICBvdXRbMTJdID0gMDsKKwkgICAgb3V0WzEzXSA9IDA7CisJICAgIG91dFsxNF0gPSAwOworCSAg
ICBvdXRbMTVdID0gMTsKKwkgICAgcmV0dXJuIG91dDsKKwl9CisKKwkvKioKKwkgKiBDcmVhdGVz
IGEgbWF0cml4IGZyb20gYSBxdWF0ZXJuaW9uIHJvdGF0aW9uIGFuZCB2ZWN0b3IgdHJhbnNsYXRp
b24KKwkgKiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gKGJ1dCBtdWNoIGZhc3RlciB0aGFuKToKKwkg
KgorCSAqICAgICBtYXQ0LmlkZW50aXR5KGRlc3QpOworCSAqICAgICBtYXQ0LnRyYW5zbGF0ZShk
ZXN0LCB2ZWMpOworCSAqICAgICB2YXIgcXVhdE1hdCA9IG1hdDQuY3JlYXRlKCk7CisJICogICAg
IHF1YXQ0LnRvTWF0NChxdWF0LCBxdWF0TWF0KTsKKwkgKiAgICAgbWF0NC5tdWx0aXBseShkZXN0
LCBxdWF0TWF0KTsKKwkgKgorCSAqIEBwYXJhbSB7bWF0NH0gb3V0IG1hdDQgcmVjZWl2aW5nIG9w
ZXJhdGlvbiByZXN1bHQKKwkgKiBAcGFyYW0ge3F1YXQ0fSBxIFJvdGF0aW9uIHF1YXRlcm5pb24K
KwkgKiBAcGFyYW0ge3ZlYzN9IHYgVHJhbnNsYXRpb24gdmVjdG9yCisJICogQHJldHVybnMge21h
dDR9IG91dAorCSAqLworCW1hdDQuZnJvbVJvdGF0aW9uVHJhbnNsYXRpb24gPSBmdW5jdGlvbiAo
b3V0LCBxLCB2KSB7CisJICAgIC8vIFF1YXRlcm5pb24gbWF0aAorCSAgICB2YXIgeCA9IHFbMF0s
IHkgPSBxWzFdLCB6ID0gcVsyXSwgdyA9IHFbM10sCisJICAgICAgICB4MiA9IHggKyB4LAorCSAg
ICAgICAgeTIgPSB5ICsgeSwKKwkgICAgICAgIHoyID0geiArIHosCisKKwkgICAgICAgIHh4ID0g
eCAqIHgyLAorCSAgICAgICAgeHkgPSB4ICogeTIsCisJICAgICAgICB4eiA9IHggKiB6MiwKKwkg
ICAgICAgIHl5ID0geSAqIHkyLAorCSAgICAgICAgeXogPSB5ICogejIsCisJICAgICAgICB6eiA9
IHogKiB6MiwKKwkgICAgICAgIHd4ID0gdyAqIHgyLAorCSAgICAgICAgd3kgPSB3ICogeTIsCisJ
ICAgICAgICB3eiA9IHcgKiB6MjsKKworCSAgICBvdXRbMF0gPSAxIC0gKHl5ICsgenopOworCSAg
ICBvdXRbMV0gPSB4eSArIHd6OworCSAgICBvdXRbMl0gPSB4eiAtIHd5OworCSAgICBvdXRbM10g
PSAwOworCSAgICBvdXRbNF0gPSB4eSAtIHd6OworCSAgICBvdXRbNV0gPSAxIC0gKHh4ICsgenop
OworCSAgICBvdXRbNl0gPSB5eiArIHd4OworCSAgICBvdXRbN10gPSAwOworCSAgICBvdXRbOF0g
PSB4eiArIHd5OworCSAgICBvdXRbOV0gPSB5eiAtIHd4OworCSAgICBvdXRbMTBdID0gMSAtICh4
eCArIHl5KTsKKwkgICAgb3V0WzExXSA9IDA7CisJICAgIG91dFsxMl0gPSB2WzBdOworCSAgICBv
dXRbMTNdID0gdlsxXTsKKwkgICAgb3V0WzE0XSA9IHZbMl07CisJICAgIG91dFsxNV0gPSAxOwor
CisJICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIFJldHVybnMgdGhlIHRyYW5zbGF0
aW9uIHZlY3RvciBjb21wb25lbnQgb2YgYSB0cmFuc2Zvcm1hdGlvbgorCSAqICBtYXRyaXguIElm
IGEgbWF0cml4IGlzIGJ1aWx0IHdpdGggZnJvbVJvdGF0aW9uVHJhbnNsYXRpb24sCisJICogIHRo
ZSByZXR1cm5lZCB2ZWN0b3Igd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUgdHJhbnNsYXRpb24gdmVj
dG9yCisJICogIG9yaWdpbmFsbHkgc3VwcGxpZWQuCisJICogQHBhcmFtICB7dmVjM30gb3V0IFZl
Y3RvciB0byByZWNlaXZlIHRyYW5zbGF0aW9uIGNvbXBvbmVudAorCSAqIEBwYXJhbSAge21hdDR9
IG1hdCBNYXRyaXggdG8gYmUgZGVjb21wb3NlZCAoaW5wdXQpCisJICogQHJldHVybiB7dmVjM30g
b3V0CisJICovCisJbWF0NC5nZXRUcmFuc2xhdGlvbiA9IGZ1bmN0aW9uIChvdXQsIG1hdCkgewor
CSAgb3V0WzBdID0gbWF0WzEyXTsKKwkgIG91dFsxXSA9IG1hdFsxM107CisJICBvdXRbMl0gPSBt
YXRbMTRdOworCisJICByZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBSZXR1cm5zIGEgcXVh
dGVybmlvbiByZXByZXNlbnRpbmcgdGhlIHJvdGF0aW9uYWwgY29tcG9uZW50CisJICogIG9mIGEg
dHJhbnNmb3JtYXRpb24gbWF0cml4LiBJZiBhIG1hdHJpeCBpcyBidWlsdCB3aXRoCisJICogIGZy
b21Sb3RhdGlvblRyYW5zbGF0aW9uLCB0aGUgcmV0dXJuZWQgcXVhdGVybmlvbiB3aWxsIGJlIHRo
ZQorCSAqICBzYW1lIGFzIHRoZSBxdWF0ZXJuaW9uIG9yaWdpbmFsbHkgc3VwcGxpZWQuCisJICog
QHBhcmFtIHtxdWF0fSBvdXQgUXVhdGVybmlvbiB0byByZWNlaXZlIHRoZSByb3RhdGlvbiBjb21w
b25lbnQKKwkgKiBAcGFyYW0ge21hdDR9IG1hdCBNYXRyaXggdG8gYmUgZGVjb21wb3NlZCAoaW5w
dXQpCisJICogQHJldHVybiB7cXVhdH0gb3V0CisJICovCisJbWF0NC5nZXRSb3RhdGlvbiA9IGZ1
bmN0aW9uIChvdXQsIG1hdCkgeworCSAgLy8gQWxnb3JpdGhtIHRha2VuIGZyb20gaHR0cDovL3d3
dy5ldWNsaWRlYW5zcGFjZS5jb20vbWF0aHMvZ2VvbWV0cnkvcm90YXRpb25zL2NvbnZlcnNpb25z
L21hdHJpeFRvUXVhdGVybmlvbi9pbmRleC5odG0KKwkgIHZhciB0cmFjZSA9IG1hdFswXSArIG1h
dFs1XSArIG1hdFsxMF07CisJICB2YXIgUyA9IDA7CisKKwkgIGlmICh0cmFjZSA+IDApIHsgCisJ
ICAgIFMgPSBNYXRoLnNxcnQodHJhY2UgKyAxLjApICogMjsKKwkgICAgb3V0WzNdID0gMC4yNSAq
IFM7CisJICAgIG91dFswXSA9IChtYXRbNl0gLSBtYXRbOV0pIC8gUzsKKwkgICAgb3V0WzFdID0g
KG1hdFs4XSAtIG1hdFsyXSkgLyBTOyAKKwkgICAgb3V0WzJdID0gKG1hdFsxXSAtIG1hdFs0XSkg
LyBTOyAKKwkgIH0gZWxzZSBpZiAoKG1hdFswXSA+IG1hdFs1XSkmKG1hdFswXSA+IG1hdFsxMF0p
KSB7IAorCSAgICBTID0gTWF0aC5zcXJ0KDEuMCArIG1hdFswXSAtIG1hdFs1XSAtIG1hdFsxMF0p
ICogMjsKKwkgICAgb3V0WzNdID0gKG1hdFs2XSAtIG1hdFs5XSkgLyBTOworCSAgICBvdXRbMF0g
PSAwLjI1ICogUzsKKwkgICAgb3V0WzFdID0gKG1hdFsxXSArIG1hdFs0XSkgLyBTOyAKKwkgICAg
b3V0WzJdID0gKG1hdFs4XSArIG1hdFsyXSkgLyBTOyAKKwkgIH0gZWxzZSBpZiAobWF0WzVdID4g
bWF0WzEwXSkgeyAKKwkgICAgUyA9IE1hdGguc3FydCgxLjAgKyBtYXRbNV0gLSBtYXRbMF0gLSBt
YXRbMTBdKSAqIDI7CisJICAgIG91dFszXSA9IChtYXRbOF0gLSBtYXRbMl0pIC8gUzsKKwkgICAg
b3V0WzBdID0gKG1hdFsxXSArIG1hdFs0XSkgLyBTOyAKKwkgICAgb3V0WzFdID0gMC4yNSAqIFM7
CisJICAgIG91dFsyXSA9IChtYXRbNl0gKyBtYXRbOV0pIC8gUzsgCisJICB9IGVsc2UgeyAKKwkg
ICAgUyA9IE1hdGguc3FydCgxLjAgKyBtYXRbMTBdIC0gbWF0WzBdIC0gbWF0WzVdKSAqIDI7CisJ
ICAgIG91dFszXSA9IChtYXRbMV0gLSBtYXRbNF0pIC8gUzsKKwkgICAgb3V0WzBdID0gKG1hdFs4
XSArIG1hdFsyXSkgLyBTOworCSAgICBvdXRbMV0gPSAobWF0WzZdICsgbWF0WzldKSAvIFM7CisJ
ICAgIG91dFsyXSA9IDAuMjUgKiBTOworCSAgfQorCisJICByZXR1cm4gb3V0OworCX07CisKKwkv
KioKKwkgKiBDcmVhdGVzIGEgbWF0cml4IGZyb20gYSBxdWF0ZXJuaW9uIHJvdGF0aW9uLCB2ZWN0
b3IgdHJhbnNsYXRpb24gYW5kIHZlY3RvciBzY2FsZQorCSAqIFRoaXMgaXMgZXF1aXZhbGVudCB0
byAoYnV0IG11Y2ggZmFzdGVyIHRoYW4pOgorCSAqCisJICogICAgIG1hdDQuaWRlbnRpdHkoZGVz
dCk7CisJICogICAgIG1hdDQudHJhbnNsYXRlKGRlc3QsIHZlYyk7CisJICogICAgIHZhciBxdWF0
TWF0ID0gbWF0NC5jcmVhdGUoKTsKKwkgKiAgICAgcXVhdDQudG9NYXQ0KHF1YXQsIHF1YXRNYXQp
OworCSAqICAgICBtYXQ0Lm11bHRpcGx5KGRlc3QsIHF1YXRNYXQpOworCSAqICAgICBtYXQ0LnNj
YWxlKGRlc3QsIHNjYWxlKQorCSAqCisJICogQHBhcmFtIHttYXQ0fSBvdXQgbWF0NCByZWNlaXZp
bmcgb3BlcmF0aW9uIHJlc3VsdAorCSAqIEBwYXJhbSB7cXVhdDR9IHEgUm90YXRpb24gcXVhdGVy
bmlvbgorCSAqIEBwYXJhbSB7dmVjM30gdiBUcmFuc2xhdGlvbiB2ZWN0b3IKKwkgKiBAcGFyYW0g
e3ZlYzN9IHMgU2NhbGluZyB2ZWN0b3IKKwkgKiBAcmV0dXJucyB7bWF0NH0gb3V0CisJICovCisJ
bWF0NC5mcm9tUm90YXRpb25UcmFuc2xhdGlvblNjYWxlID0gZnVuY3Rpb24gKG91dCwgcSwgdiwg
cykgeworCSAgICAvLyBRdWF0ZXJuaW9uIG1hdGgKKwkgICAgdmFyIHggPSBxWzBdLCB5ID0gcVsx
XSwgeiA9IHFbMl0sIHcgPSBxWzNdLAorCSAgICAgICAgeDIgPSB4ICsgeCwKKwkgICAgICAgIHky
ID0geSArIHksCisJICAgICAgICB6MiA9IHogKyB6LAorCisJICAgICAgICB4eCA9IHggKiB4MiwK
KwkgICAgICAgIHh5ID0geCAqIHkyLAorCSAgICAgICAgeHogPSB4ICogejIsCisJICAgICAgICB5
eSA9IHkgKiB5MiwKKwkgICAgICAgIHl6ID0geSAqIHoyLAorCSAgICAgICAgenogPSB6ICogejIs
CisJICAgICAgICB3eCA9IHcgKiB4MiwKKwkgICAgICAgIHd5ID0gdyAqIHkyLAorCSAgICAgICAg
d3ogPSB3ICogejIsCisJICAgICAgICBzeCA9IHNbMF0sCisJICAgICAgICBzeSA9IHNbMV0sCisJ
ICAgICAgICBzeiA9IHNbMl07CisKKwkgICAgb3V0WzBdID0gKDEgLSAoeXkgKyB6eikpICogc3g7
CisJICAgIG91dFsxXSA9ICh4eSArIHd6KSAqIHN4OworCSAgICBvdXRbMl0gPSAoeHogLSB3eSkg
KiBzeDsKKwkgICAgb3V0WzNdID0gMDsKKwkgICAgb3V0WzRdID0gKHh5IC0gd3opICogc3k7CisJ
ICAgIG91dFs1XSA9ICgxIC0gKHh4ICsgenopKSAqIHN5OworCSAgICBvdXRbNl0gPSAoeXogKyB3
eCkgKiBzeTsKKwkgICAgb3V0WzddID0gMDsKKwkgICAgb3V0WzhdID0gKHh6ICsgd3kpICogc3o7
CisJICAgIG91dFs5XSA9ICh5eiAtIHd4KSAqIHN6OworCSAgICBvdXRbMTBdID0gKDEgLSAoeHgg
KyB5eSkpICogc3o7CisJICAgIG91dFsxMV0gPSAwOworCSAgICBvdXRbMTJdID0gdlswXTsKKwkg
ICAgb3V0WzEzXSA9IHZbMV07CisJICAgIG91dFsxNF0gPSB2WzJdOworCSAgICBvdXRbMTVdID0g
MTsKKworCSAgICByZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBDcmVhdGVzIGEgbWF0cml4
IGZyb20gYSBxdWF0ZXJuaW9uIHJvdGF0aW9uLCB2ZWN0b3IgdHJhbnNsYXRpb24gYW5kIHZlY3Rv
ciBzY2FsZSwgcm90YXRpbmcgYW5kIHNjYWxpbmcgYXJvdW5kIHRoZSBnaXZlbiBvcmlnaW4KKwkg
KiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gKGJ1dCBtdWNoIGZhc3RlciB0aGFuKToKKwkgKgorCSAq
ICAgICBtYXQ0LmlkZW50aXR5KGRlc3QpOworCSAqICAgICBtYXQ0LnRyYW5zbGF0ZShkZXN0LCB2
ZWMpOworCSAqICAgICBtYXQ0LnRyYW5zbGF0ZShkZXN0LCBvcmlnaW4pOworCSAqICAgICB2YXIg
cXVhdE1hdCA9IG1hdDQuY3JlYXRlKCk7CisJICogICAgIHF1YXQ0LnRvTWF0NChxdWF0LCBxdWF0
TWF0KTsKKwkgKiAgICAgbWF0NC5tdWx0aXBseShkZXN0LCBxdWF0TWF0KTsKKwkgKiAgICAgbWF0
NC5zY2FsZShkZXN0LCBzY2FsZSkKKwkgKiAgICAgbWF0NC50cmFuc2xhdGUoZGVzdCwgbmVnYXRp
dmVPcmlnaW4pOworCSAqCisJICogQHBhcmFtIHttYXQ0fSBvdXQgbWF0NCByZWNlaXZpbmcgb3Bl
cmF0aW9uIHJlc3VsdAorCSAqIEBwYXJhbSB7cXVhdDR9IHEgUm90YXRpb24gcXVhdGVybmlvbgor
CSAqIEBwYXJhbSB7dmVjM30gdiBUcmFuc2xhdGlvbiB2ZWN0b3IKKwkgKiBAcGFyYW0ge3ZlYzN9
IHMgU2NhbGluZyB2ZWN0b3IKKwkgKiBAcGFyYW0ge3ZlYzN9IG8gVGhlIG9yaWdpbiB2ZWN0b3Ig
YXJvdW5kIHdoaWNoIHRvIHNjYWxlIGFuZCByb3RhdGUKKwkgKiBAcmV0dXJucyB7bWF0NH0gb3V0
CisJICovCisJbWF0NC5mcm9tUm90YXRpb25UcmFuc2xhdGlvblNjYWxlT3JpZ2luID0gZnVuY3Rp
b24gKG91dCwgcSwgdiwgcywgbykgeworCSAgLy8gUXVhdGVybmlvbiBtYXRoCisJICB2YXIgeCA9
IHFbMF0sIHkgPSBxWzFdLCB6ID0gcVsyXSwgdyA9IHFbM10sCisJICAgICAgeDIgPSB4ICsgeCwK
KwkgICAgICB5MiA9IHkgKyB5LAorCSAgICAgIHoyID0geiArIHosCisKKwkgICAgICB4eCA9IHgg
KiB4MiwKKwkgICAgICB4eSA9IHggKiB5MiwKKwkgICAgICB4eiA9IHggKiB6MiwKKwkgICAgICB5
eSA9IHkgKiB5MiwKKwkgICAgICB5eiA9IHkgKiB6MiwKKwkgICAgICB6eiA9IHogKiB6MiwKKwkg
ICAgICB3eCA9IHcgKiB4MiwKKwkgICAgICB3eSA9IHcgKiB5MiwKKwkgICAgICB3eiA9IHcgKiB6
MiwKKworCSAgICAgIHN4ID0gc1swXSwKKwkgICAgICBzeSA9IHNbMV0sCisJICAgICAgc3ogPSBz
WzJdLAorCisJICAgICAgb3ggPSBvWzBdLAorCSAgICAgIG95ID0gb1sxXSwKKwkgICAgICBveiA9
IG9bMl07CisKKwkgIG91dFswXSA9ICgxIC0gKHl5ICsgenopKSAqIHN4OworCSAgb3V0WzFdID0g
KHh5ICsgd3opICogc3g7CisJICBvdXRbMl0gPSAoeHogLSB3eSkgKiBzeDsKKwkgIG91dFszXSA9
IDA7CisJICBvdXRbNF0gPSAoeHkgLSB3eikgKiBzeTsKKwkgIG91dFs1XSA9ICgxIC0gKHh4ICsg
enopKSAqIHN5OworCSAgb3V0WzZdID0gKHl6ICsgd3gpICogc3k7CisJICBvdXRbN10gPSAwOwor
CSAgb3V0WzhdID0gKHh6ICsgd3kpICogc3o7CisJICBvdXRbOV0gPSAoeXogLSB3eCkgKiBzejsK
KwkgIG91dFsxMF0gPSAoMSAtICh4eCArIHl5KSkgKiBzejsKKwkgIG91dFsxMV0gPSAwOworCSAg
b3V0WzEyXSA9IHZbMF0gKyBveCAtIChvdXRbMF0gKiBveCArIG91dFs0XSAqIG95ICsgb3V0Wzhd
ICogb3opOworCSAgb3V0WzEzXSA9IHZbMV0gKyBveSAtIChvdXRbMV0gKiBveCArIG91dFs1XSAq
IG95ICsgb3V0WzldICogb3opOworCSAgb3V0WzE0XSA9IHZbMl0gKyBveiAtIChvdXRbMl0gKiBv
eCArIG91dFs2XSAqIG95ICsgb3V0WzEwXSAqIG96KTsKKwkgIG91dFsxNV0gPSAxOworCisJICBy
ZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBDYWxjdWxhdGVzIGEgNHg0IG1hdHJpeCBmcm9t
IHRoZSBnaXZlbiBxdWF0ZXJuaW9uCisJICoKKwkgKiBAcGFyYW0ge21hdDR9IG91dCBtYXQ0IHJl
Y2VpdmluZyBvcGVyYXRpb24gcmVzdWx0CisJICogQHBhcmFtIHtxdWF0fSBxIFF1YXRlcm5pb24g
dG8gY3JlYXRlIG1hdHJpeCBmcm9tCisJICoKKwkgKiBAcmV0dXJucyB7bWF0NH0gb3V0CisJICov
CisJbWF0NC5mcm9tUXVhdCA9IGZ1bmN0aW9uIChvdXQsIHEpIHsKKwkgICAgdmFyIHggPSBxWzBd
LCB5ID0gcVsxXSwgeiA9IHFbMl0sIHcgPSBxWzNdLAorCSAgICAgICAgeDIgPSB4ICsgeCwKKwkg
ICAgICAgIHkyID0geSArIHksCisJICAgICAgICB6MiA9IHogKyB6LAorCisJICAgICAgICB4eCA9
IHggKiB4MiwKKwkgICAgICAgIHl4ID0geSAqIHgyLAorCSAgICAgICAgeXkgPSB5ICogeTIsCisJ
ICAgICAgICB6eCA9IHogKiB4MiwKKwkgICAgICAgIHp5ID0geiAqIHkyLAorCSAgICAgICAgenog
PSB6ICogejIsCisJICAgICAgICB3eCA9IHcgKiB4MiwKKwkgICAgICAgIHd5ID0gdyAqIHkyLAor
CSAgICAgICAgd3ogPSB3ICogejI7CisKKwkgICAgb3V0WzBdID0gMSAtIHl5IC0geno7CisJICAg
IG91dFsxXSA9IHl4ICsgd3o7CisJICAgIG91dFsyXSA9IHp4IC0gd3k7CisJICAgIG91dFszXSA9
IDA7CisKKwkgICAgb3V0WzRdID0geXggLSB3ejsKKwkgICAgb3V0WzVdID0gMSAtIHh4IC0geno7
CisJICAgIG91dFs2XSA9IHp5ICsgd3g7CisJICAgIG91dFs3XSA9IDA7CisKKwkgICAgb3V0Wzhd
ID0genggKyB3eTsKKwkgICAgb3V0WzldID0genkgLSB3eDsKKwkgICAgb3V0WzEwXSA9IDEgLSB4
eCAtIHl5OworCSAgICBvdXRbMTFdID0gMDsKKworCSAgICBvdXRbMTJdID0gMDsKKwkgICAgb3V0
WzEzXSA9IDA7CisJICAgIG91dFsxNF0gPSAwOworCSAgICBvdXRbMTVdID0gMTsKKworCSAgICBy
ZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBHZW5lcmF0ZXMgYSBmcnVzdHVtIG1hdHJpeCB3
aXRoIHRoZSBnaXZlbiBib3VuZHMKKwkgKgorCSAqIEBwYXJhbSB7bWF0NH0gb3V0IG1hdDQgZnJ1
c3R1bSBtYXRyaXggd2lsbCBiZSB3cml0dGVuIGludG8KKwkgKiBAcGFyYW0ge051bWJlcn0gbGVm
dCBMZWZ0IGJvdW5kIG9mIHRoZSBmcnVzdHVtCisJICogQHBhcmFtIHtOdW1iZXJ9IHJpZ2h0IFJp
Z2h0IGJvdW5kIG9mIHRoZSBmcnVzdHVtCisJICogQHBhcmFtIHtOdW1iZXJ9IGJvdHRvbSBCb3R0
b20gYm91bmQgb2YgdGhlIGZydXN0dW0KKwkgKiBAcGFyYW0ge051bWJlcn0gdG9wIFRvcCBib3Vu
ZCBvZiB0aGUgZnJ1c3R1bQorCSAqIEBwYXJhbSB7TnVtYmVyfSBuZWFyIE5lYXIgYm91bmQgb2Yg
dGhlIGZydXN0dW0KKwkgKiBAcGFyYW0ge051bWJlcn0gZmFyIEZhciBib3VuZCBvZiB0aGUgZnJ1
c3R1bQorCSAqIEByZXR1cm5zIHttYXQ0fSBvdXQKKwkgKi8KKwltYXQ0LmZydXN0dW0gPSBmdW5j
dGlvbiAob3V0LCBsZWZ0LCByaWdodCwgYm90dG9tLCB0b3AsIG5lYXIsIGZhcikgeworCSAgICB2
YXIgcmwgPSAxIC8gKHJpZ2h0IC0gbGVmdCksCisJICAgICAgICB0YiA9IDEgLyAodG9wIC0gYm90
dG9tKSwKKwkgICAgICAgIG5mID0gMSAvIChuZWFyIC0gZmFyKTsKKwkgICAgb3V0WzBdID0gKG5l
YXIgKiAyKSAqIHJsOworCSAgICBvdXRbMV0gPSAwOworCSAgICBvdXRbMl0gPSAwOworCSAgICBv
dXRbM10gPSAwOworCSAgICBvdXRbNF0gPSAwOworCSAgICBvdXRbNV0gPSAobmVhciAqIDIpICog
dGI7CisJICAgIG91dFs2XSA9IDA7CisJICAgIG91dFs3XSA9IDA7CisJICAgIG91dFs4XSA9IChy
aWdodCArIGxlZnQpICogcmw7CisJICAgIG91dFs5XSA9ICh0b3AgKyBib3R0b20pICogdGI7CisJ
ICAgIG91dFsxMF0gPSAoZmFyICsgbmVhcikgKiBuZjsKKwkgICAgb3V0WzExXSA9IC0xOworCSAg
ICBvdXRbMTJdID0gMDsKKwkgICAgb3V0WzEzXSA9IDA7CisJICAgIG91dFsxNF0gPSAoZmFyICog
bmVhciAqIDIpICogbmY7CisJICAgIG91dFsxNV0gPSAwOworCSAgICByZXR1cm4gb3V0OworCX07
CisKKwkvKioKKwkgKiBHZW5lcmF0ZXMgYSBwZXJzcGVjdGl2ZSBwcm9qZWN0aW9uIG1hdHJpeCB3
aXRoIHRoZSBnaXZlbiBib3VuZHMKKwkgKgorCSAqIEBwYXJhbSB7bWF0NH0gb3V0IG1hdDQgZnJ1
c3R1bSBtYXRyaXggd2lsbCBiZSB3cml0dGVuIGludG8KKwkgKiBAcGFyYW0ge251bWJlcn0gZm92
eSBWZXJ0aWNhbCBmaWVsZCBvZiB2aWV3IGluIHJhZGlhbnMKKwkgKiBAcGFyYW0ge251bWJlcn0g
YXNwZWN0IEFzcGVjdCByYXRpby4gdHlwaWNhbGx5IHZpZXdwb3J0IHdpZHRoL2hlaWdodAorCSAq
IEBwYXJhbSB7bnVtYmVyfSBuZWFyIE5lYXIgYm91bmQgb2YgdGhlIGZydXN0dW0KKwkgKiBAcGFy
YW0ge251bWJlcn0gZmFyIEZhciBib3VuZCBvZiB0aGUgZnJ1c3R1bQorCSAqIEByZXR1cm5zIHtt
YXQ0fSBvdXQKKwkgKi8KKwltYXQ0LnBlcnNwZWN0aXZlID0gZnVuY3Rpb24gKG91dCwgZm92eSwg
YXNwZWN0LCBuZWFyLCBmYXIpIHsKKwkgICAgdmFyIGYgPSAxLjAgLyBNYXRoLnRhbihmb3Z5IC8g
MiksCisJICAgICAgICBuZiA9IDEgLyAobmVhciAtIGZhcik7CisJICAgIG91dFswXSA9IGYgLyBh
c3BlY3Q7CisJICAgIG91dFsxXSA9IDA7CisJICAgIG91dFsyXSA9IDA7CisJICAgIG91dFszXSA9
IDA7CisJICAgIG91dFs0XSA9IDA7CisJICAgIG91dFs1XSA9IGY7CisJICAgIG91dFs2XSA9IDA7
CisJICAgIG91dFs3XSA9IDA7CisJICAgIG91dFs4XSA9IDA7CisJICAgIG91dFs5XSA9IDA7CisJ
ICAgIG91dFsxMF0gPSAoZmFyICsgbmVhcikgKiBuZjsKKwkgICAgb3V0WzExXSA9IC0xOworCSAg
ICBvdXRbMTJdID0gMDsKKwkgICAgb3V0WzEzXSA9IDA7CisJICAgIG91dFsxNF0gPSAoMiAqIGZh
ciAqIG5lYXIpICogbmY7CisJICAgIG91dFsxNV0gPSAwOworCSAgICByZXR1cm4gb3V0OworCX07
CisKKwkvKioKKwkgKiBHZW5lcmF0ZXMgYSBwZXJzcGVjdGl2ZSBwcm9qZWN0aW9uIG1hdHJpeCB3
aXRoIHRoZSBnaXZlbiBmaWVsZCBvZiB2aWV3LgorCSAqIFRoaXMgaXMgcHJpbWFyaWx5IHVzZWZ1
bCBmb3IgZ2VuZXJhdGluZyBwcm9qZWN0aW9uIG1hdHJpY2VzIHRvIGJlIHVzZWQKKwkgKiB3aXRo
IHRoZSBzdGlsbCBleHBlcmllbWVudGFsIFdlYlZSIEFQSS4KKwkgKgorCSAqIEBwYXJhbSB7bWF0
NH0gb3V0IG1hdDQgZnJ1c3R1bSBtYXRyaXggd2lsbCBiZSB3cml0dGVuIGludG8KKwkgKiBAcGFy
YW0ge09iamVjdH0gZm92IE9iamVjdCBjb250YWluaW5nIHRoZSBmb2xsb3dpbmcgdmFsdWVzOiB1
cERlZ3JlZXMsIGRvd25EZWdyZWVzLCBsZWZ0RGVncmVlcywgcmlnaHREZWdyZWVzCisJICogQHBh
cmFtIHtudW1iZXJ9IG5lYXIgTmVhciBib3VuZCBvZiB0aGUgZnJ1c3R1bQorCSAqIEBwYXJhbSB7
bnVtYmVyfSBmYXIgRmFyIGJvdW5kIG9mIHRoZSBmcnVzdHVtCisJICogQHJldHVybnMge21hdDR9
IG91dAorCSAqLworCW1hdDQucGVyc3BlY3RpdmVGcm9tRmllbGRPZlZpZXcgPSBmdW5jdGlvbiAo
b3V0LCBmb3YsIG5lYXIsIGZhcikgeworCSAgICB2YXIgdXBUYW4gPSBNYXRoLnRhbihmb3YudXBE
ZWdyZWVzICogTWF0aC5QSS8xODAuMCksCisJICAgICAgICBkb3duVGFuID0gTWF0aC50YW4oZm92
LmRvd25EZWdyZWVzICogTWF0aC5QSS8xODAuMCksCisJICAgICAgICBsZWZ0VGFuID0gTWF0aC50
YW4oZm92LmxlZnREZWdyZWVzICogTWF0aC5QSS8xODAuMCksCisJICAgICAgICByaWdodFRhbiA9
IE1hdGgudGFuKGZvdi5yaWdodERlZ3JlZXMgKiBNYXRoLlBJLzE4MC4wKSwKKwkgICAgICAgIHhT
Y2FsZSA9IDIuMCAvIChsZWZ0VGFuICsgcmlnaHRUYW4pLAorCSAgICAgICAgeVNjYWxlID0gMi4w
IC8gKHVwVGFuICsgZG93blRhbik7CisKKwkgICAgb3V0WzBdID0geFNjYWxlOworCSAgICBvdXRb
MV0gPSAwLjA7CisJICAgIG91dFsyXSA9IDAuMDsKKwkgICAgb3V0WzNdID0gMC4wOworCSAgICBv
dXRbNF0gPSAwLjA7CisJICAgIG91dFs1XSA9IHlTY2FsZTsKKwkgICAgb3V0WzZdID0gMC4wOwor
CSAgICBvdXRbN10gPSAwLjA7CisJICAgIG91dFs4XSA9IC0oKGxlZnRUYW4gLSByaWdodFRhbikg
KiB4U2NhbGUgKiAwLjUpOworCSAgICBvdXRbOV0gPSAoKHVwVGFuIC0gZG93blRhbikgKiB5U2Nh
bGUgKiAwLjUpOworCSAgICBvdXRbMTBdID0gZmFyIC8gKG5lYXIgLSBmYXIpOworCSAgICBvdXRb
MTFdID0gLTEuMDsKKwkgICAgb3V0WzEyXSA9IDAuMDsKKwkgICAgb3V0WzEzXSA9IDAuMDsKKwkg
ICAgb3V0WzE0XSA9IChmYXIgKiBuZWFyKSAvIChuZWFyIC0gZmFyKTsKKwkgICAgb3V0WzE1XSA9
IDAuMDsKKwkgICAgcmV0dXJuIG91dDsKKwl9CisKKwkvKioKKwkgKiBHZW5lcmF0ZXMgYSBvcnRo
b2dvbmFsIHByb2plY3Rpb24gbWF0cml4IHdpdGggdGhlIGdpdmVuIGJvdW5kcworCSAqCisJICog
QHBhcmFtIHttYXQ0fSBvdXQgbWF0NCBmcnVzdHVtIG1hdHJpeCB3aWxsIGJlIHdyaXR0ZW4gaW50
bworCSAqIEBwYXJhbSB7bnVtYmVyfSBsZWZ0IExlZnQgYm91bmQgb2YgdGhlIGZydXN0dW0KKwkg
KiBAcGFyYW0ge251bWJlcn0gcmlnaHQgUmlnaHQgYm91bmQgb2YgdGhlIGZydXN0dW0KKwkgKiBA
cGFyYW0ge251bWJlcn0gYm90dG9tIEJvdHRvbSBib3VuZCBvZiB0aGUgZnJ1c3R1bQorCSAqIEBw
YXJhbSB7bnVtYmVyfSB0b3AgVG9wIGJvdW5kIG9mIHRoZSBmcnVzdHVtCisJICogQHBhcmFtIHtu
dW1iZXJ9IG5lYXIgTmVhciBib3VuZCBvZiB0aGUgZnJ1c3R1bQorCSAqIEBwYXJhbSB7bnVtYmVy
fSBmYXIgRmFyIGJvdW5kIG9mIHRoZSBmcnVzdHVtCisJICogQHJldHVybnMge21hdDR9IG91dAor
CSAqLworCW1hdDQub3J0aG8gPSBmdW5jdGlvbiAob3V0LCBsZWZ0LCByaWdodCwgYm90dG9tLCB0
b3AsIG5lYXIsIGZhcikgeworCSAgICB2YXIgbHIgPSAxIC8gKGxlZnQgLSByaWdodCksCisJICAg
ICAgICBidCA9IDEgLyAoYm90dG9tIC0gdG9wKSwKKwkgICAgICAgIG5mID0gMSAvIChuZWFyIC0g
ZmFyKTsKKwkgICAgb3V0WzBdID0gLTIgKiBscjsKKwkgICAgb3V0WzFdID0gMDsKKwkgICAgb3V0
WzJdID0gMDsKKwkgICAgb3V0WzNdID0gMDsKKwkgICAgb3V0WzRdID0gMDsKKwkgICAgb3V0WzVd
ID0gLTIgKiBidDsKKwkgICAgb3V0WzZdID0gMDsKKwkgICAgb3V0WzddID0gMDsKKwkgICAgb3V0
WzhdID0gMDsKKwkgICAgb3V0WzldID0gMDsKKwkgICAgb3V0WzEwXSA9IDIgKiBuZjsKKwkgICAg
b3V0WzExXSA9IDA7CisJICAgIG91dFsxMl0gPSAobGVmdCArIHJpZ2h0KSAqIGxyOworCSAgICBv
dXRbMTNdID0gKHRvcCArIGJvdHRvbSkgKiBidDsKKwkgICAgb3V0WzE0XSA9IChmYXIgKyBuZWFy
KSAqIG5mOworCSAgICBvdXRbMTVdID0gMTsKKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoq
CisJICogR2VuZXJhdGVzIGEgbG9vay1hdCBtYXRyaXggd2l0aCB0aGUgZ2l2ZW4gZXllIHBvc2l0
aW9uLCBmb2NhbCBwb2ludCwgYW5kIHVwIGF4aXMKKwkgKgorCSAqIEBwYXJhbSB7bWF0NH0gb3V0
IG1hdDQgZnJ1c3R1bSBtYXRyaXggd2lsbCBiZSB3cml0dGVuIGludG8KKwkgKiBAcGFyYW0ge3Zl
YzN9IGV5ZSBQb3NpdGlvbiBvZiB0aGUgdmlld2VyCisJICogQHBhcmFtIHt2ZWMzfSBjZW50ZXIg
UG9pbnQgdGhlIHZpZXdlciBpcyBsb29raW5nIGF0CisJICogQHBhcmFtIHt2ZWMzfSB1cCB2ZWMz
IHBvaW50aW5nIHVwCisJICogQHJldHVybnMge21hdDR9IG91dAorCSAqLworCW1hdDQubG9va0F0
ID0gZnVuY3Rpb24gKG91dCwgZXllLCBjZW50ZXIsIHVwKSB7CisJICAgIHZhciB4MCwgeDEsIHgy
LCB5MCwgeTEsIHkyLCB6MCwgejEsIHoyLCBsZW4sCisJICAgICAgICBleWV4ID0gZXllWzBdLAor
CSAgICAgICAgZXlleSA9IGV5ZVsxXSwKKwkgICAgICAgIGV5ZXogPSBleWVbMl0sCisJICAgICAg
ICB1cHggPSB1cFswXSwKKwkgICAgICAgIHVweSA9IHVwWzFdLAorCSAgICAgICAgdXB6ID0gdXBb
Ml0sCisJICAgICAgICBjZW50ZXJ4ID0gY2VudGVyWzBdLAorCSAgICAgICAgY2VudGVyeSA9IGNl
bnRlclsxXSwKKwkgICAgICAgIGNlbnRlcnogPSBjZW50ZXJbMl07CisKKwkgICAgaWYgKE1hdGgu
YWJzKGV5ZXggLSBjZW50ZXJ4KSA8IGdsTWF0cml4LkVQU0lMT04gJiYKKwkgICAgICAgIE1hdGgu
YWJzKGV5ZXkgLSBjZW50ZXJ5KSA8IGdsTWF0cml4LkVQU0lMT04gJiYKKwkgICAgICAgIE1hdGgu
YWJzKGV5ZXogLSBjZW50ZXJ6KSA8IGdsTWF0cml4LkVQU0lMT04pIHsKKwkgICAgICAgIHJldHVy
biBtYXQ0LmlkZW50aXR5KG91dCk7CisJICAgIH0KKworCSAgICB6MCA9IGV5ZXggLSBjZW50ZXJ4
OworCSAgICB6MSA9IGV5ZXkgLSBjZW50ZXJ5OworCSAgICB6MiA9IGV5ZXogLSBjZW50ZXJ6Owor
CisJICAgIGxlbiA9IDEgLyBNYXRoLnNxcnQoejAgKiB6MCArIHoxICogejEgKyB6MiAqIHoyKTsK
KwkgICAgejAgKj0gbGVuOworCSAgICB6MSAqPSBsZW47CisJICAgIHoyICo9IGxlbjsKKworCSAg
ICB4MCA9IHVweSAqIHoyIC0gdXB6ICogejE7CisJICAgIHgxID0gdXB6ICogejAgLSB1cHggKiB6
MjsKKwkgICAgeDIgPSB1cHggKiB6MSAtIHVweSAqIHowOworCSAgICBsZW4gPSBNYXRoLnNxcnQo
eDAgKiB4MCArIHgxICogeDEgKyB4MiAqIHgyKTsKKwkgICAgaWYgKCFsZW4pIHsKKwkgICAgICAg
IHgwID0gMDsKKwkgICAgICAgIHgxID0gMDsKKwkgICAgICAgIHgyID0gMDsKKwkgICAgfSBlbHNl
IHsKKwkgICAgICAgIGxlbiA9IDEgLyBsZW47CisJICAgICAgICB4MCAqPSBsZW47CisJICAgICAg
ICB4MSAqPSBsZW47CisJICAgICAgICB4MiAqPSBsZW47CisJICAgIH0KKworCSAgICB5MCA9IHox
ICogeDIgLSB6MiAqIHgxOworCSAgICB5MSA9IHoyICogeDAgLSB6MCAqIHgyOworCSAgICB5MiA9
IHowICogeDEgLSB6MSAqIHgwOworCisJICAgIGxlbiA9IE1hdGguc3FydCh5MCAqIHkwICsgeTEg
KiB5MSArIHkyICogeTIpOworCSAgICBpZiAoIWxlbikgeworCSAgICAgICAgeTAgPSAwOworCSAg
ICAgICAgeTEgPSAwOworCSAgICAgICAgeTIgPSAwOworCSAgICB9IGVsc2UgeworCSAgICAgICAg
bGVuID0gMSAvIGxlbjsKKwkgICAgICAgIHkwICo9IGxlbjsKKwkgICAgICAgIHkxICo9IGxlbjsK
KwkgICAgICAgIHkyICo9IGxlbjsKKwkgICAgfQorCisJICAgIG91dFswXSA9IHgwOworCSAgICBv
dXRbMV0gPSB5MDsKKwkgICAgb3V0WzJdID0gejA7CisJICAgIG91dFszXSA9IDA7CisJICAgIG91
dFs0XSA9IHgxOworCSAgICBvdXRbNV0gPSB5MTsKKwkgICAgb3V0WzZdID0gejE7CisJICAgIG91
dFs3XSA9IDA7CisJICAgIG91dFs4XSA9IHgyOworCSAgICBvdXRbOV0gPSB5MjsKKwkgICAgb3V0
WzEwXSA9IHoyOworCSAgICBvdXRbMTFdID0gMDsKKwkgICAgb3V0WzEyXSA9IC0oeDAgKiBleWV4
ICsgeDEgKiBleWV5ICsgeDIgKiBleWV6KTsKKwkgICAgb3V0WzEzXSA9IC0oeTAgKiBleWV4ICsg
eTEgKiBleWV5ICsgeTIgKiBleWV6KTsKKwkgICAgb3V0WzE0XSA9IC0oejAgKiBleWV4ICsgejEg
KiBleWV5ICsgejIgKiBleWV6KTsKKwkgICAgb3V0WzE1XSA9IDE7CisKKwkgICAgcmV0dXJuIG91
dDsKKwl9OworCisJLyoqCisJICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBh
IG1hdDQKKwkgKgorCSAqIEBwYXJhbSB7bWF0NH0gbWF0IG1hdHJpeCB0byByZXByZXNlbnQgYXMg
YSBzdHJpbmcKKwkgKiBAcmV0dXJucyB7U3RyaW5nfSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2Yg
dGhlIG1hdHJpeAorCSAqLworCW1hdDQuc3RyID0gZnVuY3Rpb24gKGEpIHsKKwkgICAgcmV0dXJu
ICdtYXQ0KCcgKyBhWzBdICsgJywgJyArIGFbMV0gKyAnLCAnICsgYVsyXSArICcsICcgKyBhWzNd
ICsgJywgJyArCisJICAgICAgICAgICAgICAgICAgICBhWzRdICsgJywgJyArIGFbNV0gKyAnLCAn
ICsgYVs2XSArICcsICcgKyBhWzddICsgJywgJyArCisJICAgICAgICAgICAgICAgICAgICBhWzhd
ICsgJywgJyArIGFbOV0gKyAnLCAnICsgYVsxMF0gKyAnLCAnICsgYVsxMV0gKyAnLCAnICsKKwkg
ICAgICAgICAgICAgICAgICAgIGFbMTJdICsgJywgJyArIGFbMTNdICsgJywgJyArIGFbMTRdICsg
JywgJyArIGFbMTVdICsgJyknOworCX07CisKKwkvKioKKwkgKiBSZXR1cm5zIEZyb2Jlbml1cyBu
b3JtIG9mIGEgbWF0NAorCSAqCisJICogQHBhcmFtIHttYXQ0fSBhIHRoZSBtYXRyaXggdG8gY2Fs
Y3VsYXRlIEZyb2Jlbml1cyBub3JtIG9mCisJICogQHJldHVybnMge051bWJlcn0gRnJvYmVuaXVz
IG5vcm0KKwkgKi8KKwltYXQ0LmZyb2IgPSBmdW5jdGlvbiAoYSkgeworCSAgICByZXR1cm4oTWF0
aC5zcXJ0KE1hdGgucG93KGFbMF0sIDIpICsgTWF0aC5wb3coYVsxXSwgMikgKyBNYXRoLnBvdyhh
WzJdLCAyKSArIE1hdGgucG93KGFbM10sIDIpICsgTWF0aC5wb3coYVs0XSwgMikgKyBNYXRoLnBv
dyhhWzVdLCAyKSArIE1hdGgucG93KGFbNl0sIDIpICsgTWF0aC5wb3coYVs3XSwgMikgKyBNYXRo
LnBvdyhhWzhdLCAyKSArIE1hdGgucG93KGFbOV0sIDIpICsgTWF0aC5wb3coYVsxMF0sIDIpICsg
TWF0aC5wb3coYVsxMV0sIDIpICsgTWF0aC5wb3coYVsxMl0sIDIpICsgTWF0aC5wb3coYVsxM10s
IDIpICsgTWF0aC5wb3coYVsxNF0sIDIpICsgTWF0aC5wb3coYVsxNV0sIDIpICkpCisJfTsKKwor
CS8qKgorCSAqIEFkZHMgdHdvIG1hdDQncworCSAqCisJICogQHBhcmFtIHttYXQ0fSBvdXQgdGhl
IHJlY2VpdmluZyBtYXRyaXgKKwkgKiBAcGFyYW0ge21hdDR9IGEgdGhlIGZpcnN0IG9wZXJhbmQK
KwkgKiBAcGFyYW0ge21hdDR9IGIgdGhlIHNlY29uZCBvcGVyYW5kCisJICogQHJldHVybnMge21h
dDR9IG91dAorCSAqLworCW1hdDQuYWRkID0gZnVuY3Rpb24ob3V0LCBhLCBiKSB7CisJICAgIG91
dFswXSA9IGFbMF0gKyBiWzBdOworCSAgICBvdXRbMV0gPSBhWzFdICsgYlsxXTsKKwkgICAgb3V0
WzJdID0gYVsyXSArIGJbMl07CisJICAgIG91dFszXSA9IGFbM10gKyBiWzNdOworCSAgICBvdXRb
NF0gPSBhWzRdICsgYls0XTsKKwkgICAgb3V0WzVdID0gYVs1XSArIGJbNV07CisJICAgIG91dFs2
XSA9IGFbNl0gKyBiWzZdOworCSAgICBvdXRbN10gPSBhWzddICsgYls3XTsKKwkgICAgb3V0Wzhd
ID0gYVs4XSArIGJbOF07CisJICAgIG91dFs5XSA9IGFbOV0gKyBiWzldOworCSAgICBvdXRbMTBd
ID0gYVsxMF0gKyBiWzEwXTsKKwkgICAgb3V0WzExXSA9IGFbMTFdICsgYlsxMV07CisJICAgIG91
dFsxMl0gPSBhWzEyXSArIGJbMTJdOworCSAgICBvdXRbMTNdID0gYVsxM10gKyBiWzEzXTsKKwkg
ICAgb3V0WzE0XSA9IGFbMTRdICsgYlsxNF07CisJICAgIG91dFsxNV0gPSBhWzE1XSArIGJbMTVd
OworCSAgICByZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBTdWJ0cmFjdHMgbWF0cml4IGIg
ZnJvbSBtYXRyaXggYQorCSAqCisJICogQHBhcmFtIHttYXQ0fSBvdXQgdGhlIHJlY2VpdmluZyBt
YXRyaXgKKwkgKiBAcGFyYW0ge21hdDR9IGEgdGhlIGZpcnN0IG9wZXJhbmQKKwkgKiBAcGFyYW0g
e21hdDR9IGIgdGhlIHNlY29uZCBvcGVyYW5kCisJICogQHJldHVybnMge21hdDR9IG91dAorCSAq
LworCW1hdDQuc3VidHJhY3QgPSBmdW5jdGlvbihvdXQsIGEsIGIpIHsKKwkgICAgb3V0WzBdID0g
YVswXSAtIGJbMF07CisJICAgIG91dFsxXSA9IGFbMV0gLSBiWzFdOworCSAgICBvdXRbMl0gPSBh
WzJdIC0gYlsyXTsKKwkgICAgb3V0WzNdID0gYVszXSAtIGJbM107CisJICAgIG91dFs0XSA9IGFb
NF0gLSBiWzRdOworCSAgICBvdXRbNV0gPSBhWzVdIC0gYls1XTsKKwkgICAgb3V0WzZdID0gYVs2
XSAtIGJbNl07CisJICAgIG91dFs3XSA9IGFbN10gLSBiWzddOworCSAgICBvdXRbOF0gPSBhWzhd
IC0gYls4XTsKKwkgICAgb3V0WzldID0gYVs5XSAtIGJbOV07CisJICAgIG91dFsxMF0gPSBhWzEw
XSAtIGJbMTBdOworCSAgICBvdXRbMTFdID0gYVsxMV0gLSBiWzExXTsKKwkgICAgb3V0WzEyXSA9
IGFbMTJdIC0gYlsxMl07CisJICAgIG91dFsxM10gPSBhWzEzXSAtIGJbMTNdOworCSAgICBvdXRb
MTRdID0gYVsxNF0gLSBiWzE0XTsKKwkgICAgb3V0WzE1XSA9IGFbMTVdIC0gYlsxNV07CisJICAg
IHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIEFsaWFzIGZvciB7QGxpbmsgbWF0NC5zdWJ0
cmFjdH0KKwkgKiBAZnVuY3Rpb24KKwkgKi8KKwltYXQ0LnN1YiA9IG1hdDQuc3VidHJhY3Q7CisK
KwkvKioKKwkgKiBNdWx0aXBseSBlYWNoIGVsZW1lbnQgb2YgdGhlIG1hdHJpeCBieSBhIHNjYWxh
ci4KKwkgKgorCSAqIEBwYXJhbSB7bWF0NH0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4CisJICog
QHBhcmFtIHttYXQ0fSBhIHRoZSBtYXRyaXggdG8gc2NhbGUKKwkgKiBAcGFyYW0ge051bWJlcn0g
YiBhbW91bnQgdG8gc2NhbGUgdGhlIG1hdHJpeCdzIGVsZW1lbnRzIGJ5CisJICogQHJldHVybnMg
e21hdDR9IG91dAorCSAqLworCW1hdDQubXVsdGlwbHlTY2FsYXIgPSBmdW5jdGlvbihvdXQsIGEs
IGIpIHsKKwkgICAgb3V0WzBdID0gYVswXSAqIGI7CisJICAgIG91dFsxXSA9IGFbMV0gKiBiOwor
CSAgICBvdXRbMl0gPSBhWzJdICogYjsKKwkgICAgb3V0WzNdID0gYVszXSAqIGI7CisJICAgIG91
dFs0XSA9IGFbNF0gKiBiOworCSAgICBvdXRbNV0gPSBhWzVdICogYjsKKwkgICAgb3V0WzZdID0g
YVs2XSAqIGI7CisJICAgIG91dFs3XSA9IGFbN10gKiBiOworCSAgICBvdXRbOF0gPSBhWzhdICog
YjsKKwkgICAgb3V0WzldID0gYVs5XSAqIGI7CisJICAgIG91dFsxMF0gPSBhWzEwXSAqIGI7CisJ
ICAgIG91dFsxMV0gPSBhWzExXSAqIGI7CisJICAgIG91dFsxMl0gPSBhWzEyXSAqIGI7CisJICAg
IG91dFsxM10gPSBhWzEzXSAqIGI7CisJICAgIG91dFsxNF0gPSBhWzE0XSAqIGI7CisJICAgIG91
dFsxNV0gPSBhWzE1XSAqIGI7CisJICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIEFk
ZHMgdHdvIG1hdDQncyBhZnRlciBtdWx0aXBseWluZyBlYWNoIGVsZW1lbnQgb2YgdGhlIHNlY29u
ZCBvcGVyYW5kIGJ5IGEgc2NhbGFyIHZhbHVlLgorCSAqCisJICogQHBhcmFtIHttYXQ0fSBvdXQg
dGhlIHJlY2VpdmluZyB2ZWN0b3IKKwkgKiBAcGFyYW0ge21hdDR9IGEgdGhlIGZpcnN0IG9wZXJh
bmQKKwkgKiBAcGFyYW0ge21hdDR9IGIgdGhlIHNlY29uZCBvcGVyYW5kCisJICogQHBhcmFtIHtO
dW1iZXJ9IHNjYWxlIHRoZSBhbW91bnQgdG8gc2NhbGUgYidzIGVsZW1lbnRzIGJ5IGJlZm9yZSBh
ZGRpbmcKKwkgKiBAcmV0dXJucyB7bWF0NH0gb3V0CisJICovCisJbWF0NC5tdWx0aXBseVNjYWxh
ckFuZEFkZCA9IGZ1bmN0aW9uKG91dCwgYSwgYiwgc2NhbGUpIHsKKwkgICAgb3V0WzBdID0gYVsw
XSArIChiWzBdICogc2NhbGUpOworCSAgICBvdXRbMV0gPSBhWzFdICsgKGJbMV0gKiBzY2FsZSk7
CisJICAgIG91dFsyXSA9IGFbMl0gKyAoYlsyXSAqIHNjYWxlKTsKKwkgICAgb3V0WzNdID0gYVsz
XSArIChiWzNdICogc2NhbGUpOworCSAgICBvdXRbNF0gPSBhWzRdICsgKGJbNF0gKiBzY2FsZSk7
CisJICAgIG91dFs1XSA9IGFbNV0gKyAoYls1XSAqIHNjYWxlKTsKKwkgICAgb3V0WzZdID0gYVs2
XSArIChiWzZdICogc2NhbGUpOworCSAgICBvdXRbN10gPSBhWzddICsgKGJbN10gKiBzY2FsZSk7
CisJICAgIG91dFs4XSA9IGFbOF0gKyAoYls4XSAqIHNjYWxlKTsKKwkgICAgb3V0WzldID0gYVs5
XSArIChiWzldICogc2NhbGUpOworCSAgICBvdXRbMTBdID0gYVsxMF0gKyAoYlsxMF0gKiBzY2Fs
ZSk7CisJICAgIG91dFsxMV0gPSBhWzExXSArIChiWzExXSAqIHNjYWxlKTsKKwkgICAgb3V0WzEy
XSA9IGFbMTJdICsgKGJbMTJdICogc2NhbGUpOworCSAgICBvdXRbMTNdID0gYVsxM10gKyAoYlsx
M10gKiBzY2FsZSk7CisJICAgIG91dFsxNF0gPSBhWzE0XSArIChiWzE0XSAqIHNjYWxlKTsKKwkg
ICAgb3V0WzE1XSA9IGFbMTVdICsgKGJbMTVdICogc2NhbGUpOworCSAgICByZXR1cm4gb3V0Owor
CX07CisKKwkvKioKKwkgKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBtYXRyaWNlcyBoYXZl
IGV4YWN0bHkgdGhlIHNhbWUgZWxlbWVudHMgaW4gdGhlIHNhbWUgcG9zaXRpb24gKHdoZW4gY29t
cGFyZWQgd2l0aCA9PT0pCisJICoKKwkgKiBAcGFyYW0ge21hdDR9IGEgVGhlIGZpcnN0IG1hdHJp
eC4KKwkgKiBAcGFyYW0ge21hdDR9IGIgVGhlIHNlY29uZCBtYXRyaXguCisJICogQHJldHVybnMg
e0Jvb2xlYW59IFRydWUgaWYgdGhlIG1hdHJpY2VzIGFyZSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNl
LgorCSAqLworCW1hdDQuZXhhY3RFcXVhbHMgPSBmdW5jdGlvbiAoYSwgYikgeworCSAgICByZXR1
cm4gYVswXSA9PT0gYlswXSAmJiBhWzFdID09PSBiWzFdICYmIGFbMl0gPT09IGJbMl0gJiYgYVsz
XSA9PT0gYlszXSAmJiAKKwkgICAgICAgICAgIGFbNF0gPT09IGJbNF0gJiYgYVs1XSA9PT0gYls1
XSAmJiBhWzZdID09PSBiWzZdICYmIGFbN10gPT09IGJbN10gJiYgCisJICAgICAgICAgICBhWzhd
ID09PSBiWzhdICYmIGFbOV0gPT09IGJbOV0gJiYgYVsxMF0gPT09IGJbMTBdICYmIGFbMTFdID09
PSBiWzExXSAmJgorCSAgICAgICAgICAgYVsxMl0gPT09IGJbMTJdICYmIGFbMTNdID09PSBiWzEz
XSAmJiBhWzE0XSA9PT0gYlsxNF0gJiYgYVsxNV0gPT09IGJbMTVdOworCX07CisKKwkvKioKKwkg
KiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBtYXRyaWNlcyBoYXZlIGFwcHJveGltYXRlbHkg
dGhlIHNhbWUgZWxlbWVudHMgaW4gdGhlIHNhbWUgcG9zaXRpb24uCisJICoKKwkgKiBAcGFyYW0g
e21hdDR9IGEgVGhlIGZpcnN0IG1hdHJpeC4KKwkgKiBAcGFyYW0ge21hdDR9IGIgVGhlIHNlY29u
ZCBtYXRyaXguCisJICogQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWYgdGhlIG1hdHJpY2VzIGFy
ZSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlLgorCSAqLworCW1hdDQuZXF1YWxzID0gZnVuY3Rpb24g
KGEsIGIpIHsKKwkgICAgdmFyIGEwICA9IGFbMF0sICBhMSAgPSBhWzFdLCAgYTIgID0gYVsyXSwg
IGEzICA9IGFbM10sCisJICAgICAgICBhNCAgPSBhWzRdLCAgYTUgID0gYVs1XSwgIGE2ICA9IGFb
Nl0sICBhNyAgPSBhWzddLCAKKwkgICAgICAgIGE4ICA9IGFbOF0sICBhOSAgPSBhWzldLCAgYTEw
ID0gYVsxMF0sIGExMSA9IGFbMTFdLCAKKwkgICAgICAgIGExMiA9IGFbMTJdLCBhMTMgPSBhWzEz
XSwgYTE0ID0gYVsxNF0sIGExNSA9IGFbMTVdOworCisJICAgIHZhciBiMCAgPSBiWzBdLCAgYjEg
ID0gYlsxXSwgIGIyICA9IGJbMl0sICBiMyAgPSBiWzNdLAorCSAgICAgICAgYjQgID0gYls0XSwg
IGI1ICA9IGJbNV0sICBiNiAgPSBiWzZdLCAgYjcgID0gYls3XSwgCisJICAgICAgICBiOCAgPSBi
WzhdLCAgYjkgID0gYls5XSwgIGIxMCA9IGJbMTBdLCBiMTEgPSBiWzExXSwgCisJICAgICAgICBi
MTIgPSBiWzEyXSwgYjEzID0gYlsxM10sIGIxNCA9IGJbMTRdLCBiMTUgPSBiWzE1XTsKKworCSAg
ICByZXR1cm4gKE1hdGguYWJzKGEwIC0gYjApIDw9IGdsTWF0cml4LkVQU0lMT04qTWF0aC5tYXgo
MS4wLCBNYXRoLmFicyhhMCksIE1hdGguYWJzKGIwKSkgJiYKKwkgICAgICAgICAgICBNYXRoLmFi
cyhhMSAtIGIxKSA8PSBnbE1hdHJpeC5FUFNJTE9OKk1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTEp
LCBNYXRoLmFicyhiMSkpICYmCisJICAgICAgICAgICAgTWF0aC5hYnMoYTIgLSBiMikgPD0gZ2xN
YXRyaXguRVBTSUxPTipNYXRoLm1heCgxLjAsIE1hdGguYWJzKGEyKSwgTWF0aC5hYnMoYjIpKSAm
JgorCSAgICAgICAgICAgIE1hdGguYWJzKGEzIC0gYjMpIDw9IGdsTWF0cml4LkVQU0lMT04qTWF0
aC5tYXgoMS4wLCBNYXRoLmFicyhhMyksIE1hdGguYWJzKGIzKSkgJiYKKwkgICAgICAgICAgICBN
YXRoLmFicyhhNCAtIGI0KSA8PSBnbE1hdHJpeC5FUFNJTE9OKk1hdGgubWF4KDEuMCwgTWF0aC5h
YnMoYTQpLCBNYXRoLmFicyhiNCkpICYmCisJICAgICAgICAgICAgTWF0aC5hYnMoYTUgLSBiNSkg
PD0gZ2xNYXRyaXguRVBTSUxPTipNYXRoLm1heCgxLjAsIE1hdGguYWJzKGE1KSwgTWF0aC5hYnMo
YjUpKSAmJgorCSAgICAgICAgICAgIE1hdGguYWJzKGE2IC0gYjYpIDw9IGdsTWF0cml4LkVQU0lM
T04qTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhNiksIE1hdGguYWJzKGI2KSkgJiYKKwkgICAgICAg
ICAgICBNYXRoLmFicyhhNyAtIGI3KSA8PSBnbE1hdHJpeC5FUFNJTE9OKk1hdGgubWF4KDEuMCwg
TWF0aC5hYnMoYTcpLCBNYXRoLmFicyhiNykpICYmCisJICAgICAgICAgICAgTWF0aC5hYnMoYTgg
LSBiOCkgPD0gZ2xNYXRyaXguRVBTSUxPTipNYXRoLm1heCgxLjAsIE1hdGguYWJzKGE4KSwgTWF0
aC5hYnMoYjgpKSAmJgorCSAgICAgICAgICAgIE1hdGguYWJzKGE5IC0gYjkpIDw9IGdsTWF0cml4
LkVQU0lMT04qTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhOSksIE1hdGguYWJzKGI5KSkgJiYKKwkg
ICAgICAgICAgICBNYXRoLmFicyhhMTAgLSBiMTApIDw9IGdsTWF0cml4LkVQU0lMT04qTWF0aC5t
YXgoMS4wLCBNYXRoLmFicyhhMTApLCBNYXRoLmFicyhiMTApKSAmJgorCSAgICAgICAgICAgIE1h
dGguYWJzKGExMSAtIGIxMSkgPD0gZ2xNYXRyaXguRVBTSUxPTipNYXRoLm1heCgxLjAsIE1hdGgu
YWJzKGExMSksIE1hdGguYWJzKGIxMSkpICYmCisJICAgICAgICAgICAgTWF0aC5hYnMoYTEyIC0g
YjEyKSA8PSBnbE1hdHJpeC5FUFNJTE9OKk1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTEyKSwgTWF0
aC5hYnMoYjEyKSkgJiYKKwkgICAgICAgICAgICBNYXRoLmFicyhhMTMgLSBiMTMpIDw9IGdsTWF0
cml4LkVQU0lMT04qTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhMTMpLCBNYXRoLmFicyhiMTMpKSAm
JgorCSAgICAgICAgICAgIE1hdGguYWJzKGExNCAtIGIxNCkgPD0gZ2xNYXRyaXguRVBTSUxPTipN
YXRoLm1heCgxLjAsIE1hdGguYWJzKGExNCksIE1hdGguYWJzKGIxNCkpICYmCisJICAgICAgICAg
ICAgTWF0aC5hYnMoYTE1IC0gYjE1KSA8PSBnbE1hdHJpeC5FUFNJTE9OKk1hdGgubWF4KDEuMCwg
TWF0aC5hYnMoYTE1KSwgTWF0aC5hYnMoYjE1KSkpOworCX07CisKKworCisJbW9kdWxlLmV4cG9y
dHMgPSBtYXQ0OworCisKKy8qKiovIH0sCisvKiA2ICovCisvKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKKworCS8qIENvcHlyaWdodCAoYykgMjAx
NSwgQnJhbmRvbiBKb25lcywgQ29saW4gTWFjS2VuemllIElWLgorCisJUGVybWlzc2lvbiBpcyBo
ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEg
Y29weQorCW9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl
cyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCisJaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz
dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cworCXRvIHVz
ZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwg
YW5kL29yIHNlbGwKKwljb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNv
bnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKwlmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg
dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCisJVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKwlhbGwg
Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworCVRIRSBT
T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E
LCBFWFBSRVNTIE9SCisJSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisJRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisJQVVU
SE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdF
UyBPUiBPVEhFUgorCUxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1Qs
IFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisJT1VUIE9GIE9SIElOIENPTk5FQ1RJ
T04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgorCVRI
RSBTT0ZUV0FSRS4gKi8KKworCXZhciBnbE1hdHJpeCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7
CisJdmFyIG1hdDMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOworCXZhciB2ZWMzID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg3KTsKKwl2YXIgdmVjNCA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7CisK
KwkvKioKKwkgKiBAY2xhc3MgUXVhdGVybmlvbgorCSAqIEBuYW1lIHF1YXQKKwkgKi8KKwl2YXIg
cXVhdCA9IHt9OworCisJLyoqCisJICogQ3JlYXRlcyBhIG5ldyBpZGVudGl0eSBxdWF0CisJICoK
KwkgKiBAcmV0dXJucyB7cXVhdH0gYSBuZXcgcXVhdGVybmlvbgorCSAqLworCXF1YXQuY3JlYXRl
ID0gZnVuY3Rpb24oKSB7CisJICAgIHZhciBvdXQgPSBuZXcgZ2xNYXRyaXguQVJSQVlfVFlQRSg0
KTsKKwkgICAgb3V0WzBdID0gMDsKKwkgICAgb3V0WzFdID0gMDsKKwkgICAgb3V0WzJdID0gMDsK
KwkgICAgb3V0WzNdID0gMTsKKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogU2V0
cyBhIHF1YXRlcm5pb24gdG8gcmVwcmVzZW50IHRoZSBzaG9ydGVzdCByb3RhdGlvbiBmcm9tIG9u
ZQorCSAqIHZlY3RvciB0byBhbm90aGVyLgorCSAqCisJICogQm90aCB2ZWN0b3JzIGFyZSBhc3N1
bWVkIHRvIGJlIHVuaXQgbGVuZ3RoLgorCSAqCisJICogQHBhcmFtIHtxdWF0fSBvdXQgdGhlIHJl
Y2VpdmluZyBxdWF0ZXJuaW9uLgorCSAqIEBwYXJhbSB7dmVjM30gYSB0aGUgaW5pdGlhbCB2ZWN0
b3IKKwkgKiBAcGFyYW0ge3ZlYzN9IGIgdGhlIGRlc3RpbmF0aW9uIHZlY3RvcgorCSAqIEByZXR1
cm5zIHtxdWF0fSBvdXQKKwkgKi8KKwlxdWF0LnJvdGF0aW9uVG8gPSAoZnVuY3Rpb24oKSB7CisJ
ICAgIHZhciB0bXB2ZWMzID0gdmVjMy5jcmVhdGUoKTsKKwkgICAgdmFyIHhVbml0VmVjMyA9IHZl
YzMuZnJvbVZhbHVlcygxLDAsMCk7CisJICAgIHZhciB5VW5pdFZlYzMgPSB2ZWMzLmZyb21WYWx1
ZXMoMCwxLDApOworCisJICAgIHJldHVybiBmdW5jdGlvbihvdXQsIGEsIGIpIHsKKwkgICAgICAg
IHZhciBkb3QgPSB2ZWMzLmRvdChhLCBiKTsKKwkgICAgICAgIGlmIChkb3QgPCAtMC45OTk5OTkp
IHsKKwkgICAgICAgICAgICB2ZWMzLmNyb3NzKHRtcHZlYzMsIHhVbml0VmVjMywgYSk7CisJICAg
ICAgICAgICAgaWYgKHZlYzMubGVuZ3RoKHRtcHZlYzMpIDwgMC4wMDAwMDEpCisJICAgICAgICAg
ICAgICAgIHZlYzMuY3Jvc3ModG1wdmVjMywgeVVuaXRWZWMzLCBhKTsKKwkgICAgICAgICAgICB2
ZWMzLm5vcm1hbGl6ZSh0bXB2ZWMzLCB0bXB2ZWMzKTsKKwkgICAgICAgICAgICBxdWF0LnNldEF4
aXNBbmdsZShvdXQsIHRtcHZlYzMsIE1hdGguUEkpOworCSAgICAgICAgICAgIHJldHVybiBvdXQ7
CisJICAgICAgICB9IGVsc2UgaWYgKGRvdCA+IDAuOTk5OTk5KSB7CisJICAgICAgICAgICAgb3V0
WzBdID0gMDsKKwkgICAgICAgICAgICBvdXRbMV0gPSAwOworCSAgICAgICAgICAgIG91dFsyXSA9
IDA7CisJICAgICAgICAgICAgb3V0WzNdID0gMTsKKwkgICAgICAgICAgICByZXR1cm4gb3V0Owor
CSAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICB2ZWMzLmNyb3NzKHRtcHZlYzMsIGEsIGIp
OworCSAgICAgICAgICAgIG91dFswXSA9IHRtcHZlYzNbMF07CisJICAgICAgICAgICAgb3V0WzFd
ID0gdG1wdmVjM1sxXTsKKwkgICAgICAgICAgICBvdXRbMl0gPSB0bXB2ZWMzWzJdOworCSAgICAg
ICAgICAgIG91dFszXSA9IDEgKyBkb3Q7CisJICAgICAgICAgICAgcmV0dXJuIHF1YXQubm9ybWFs
aXplKG91dCwgb3V0KTsKKwkgICAgICAgIH0KKwkgICAgfTsKKwl9KSgpOworCisJLyoqCisJICog
U2V0cyB0aGUgc3BlY2lmaWVkIHF1YXRlcm5pb24gd2l0aCB2YWx1ZXMgY29ycmVzcG9uZGluZyB0
byB0aGUgZ2l2ZW4KKwkgKiBheGVzLiBFYWNoIGF4aXMgaXMgYSB2ZWMzIGFuZCBpcyBleHBlY3Rl
ZCB0byBiZSB1bml0IGxlbmd0aCBhbmQKKwkgKiBwZXJwZW5kaWN1bGFyIHRvIGFsbCBvdGhlciBz
cGVjaWZpZWQgYXhlcy4KKwkgKgorCSAqIEBwYXJhbSB7dmVjM30gdmlldyAgdGhlIHZlY3RvciBy
ZXByZXNlbnRpbmcgdGhlIHZpZXdpbmcgZGlyZWN0aW9uCisJICogQHBhcmFtIHt2ZWMzfSByaWdo
dCB0aGUgdmVjdG9yIHJlcHJlc2VudGluZyB0aGUgbG9jYWwgInJpZ2h0IiBkaXJlY3Rpb24KKwkg
KiBAcGFyYW0ge3ZlYzN9IHVwICAgIHRoZSB2ZWN0b3IgcmVwcmVzZW50aW5nIHRoZSBsb2NhbCAi
dXAiIGRpcmVjdGlvbgorCSAqIEByZXR1cm5zIHtxdWF0fSBvdXQKKwkgKi8KKwlxdWF0LnNldEF4
ZXMgPSAoZnVuY3Rpb24oKSB7CisJICAgIHZhciBtYXRyID0gbWF0My5jcmVhdGUoKTsKKworCSAg
ICByZXR1cm4gZnVuY3Rpb24ob3V0LCB2aWV3LCByaWdodCwgdXApIHsKKwkgICAgICAgIG1hdHJb
MF0gPSByaWdodFswXTsKKwkgICAgICAgIG1hdHJbM10gPSByaWdodFsxXTsKKwkgICAgICAgIG1h
dHJbNl0gPSByaWdodFsyXTsKKworCSAgICAgICAgbWF0clsxXSA9IHVwWzBdOworCSAgICAgICAg
bWF0cls0XSA9IHVwWzFdOworCSAgICAgICAgbWF0cls3XSA9IHVwWzJdOworCisJICAgICAgICBt
YXRyWzJdID0gLXZpZXdbMF07CisJICAgICAgICBtYXRyWzVdID0gLXZpZXdbMV07CisJICAgICAg
ICBtYXRyWzhdID0gLXZpZXdbMl07CisKKwkgICAgICAgIHJldHVybiBxdWF0Lm5vcm1hbGl6ZShv
dXQsIHF1YXQuZnJvbU1hdDMob3V0LCBtYXRyKSk7CisJICAgIH07CisJfSkoKTsKKworCS8qKgor
CSAqIENyZWF0ZXMgYSBuZXcgcXVhdCBpbml0aWFsaXplZCB3aXRoIHZhbHVlcyBmcm9tIGFuIGV4
aXN0aW5nIHF1YXRlcm5pb24KKwkgKgorCSAqIEBwYXJhbSB7cXVhdH0gYSBxdWF0ZXJuaW9uIHRv
IGNsb25lCisJICogQHJldHVybnMge3F1YXR9IGEgbmV3IHF1YXRlcm5pb24KKwkgKiBAZnVuY3Rp
b24KKwkgKi8KKwlxdWF0LmNsb25lID0gdmVjNC5jbG9uZTsKKworCS8qKgorCSAqIENyZWF0ZXMg
YSBuZXcgcXVhdCBpbml0aWFsaXplZCB3aXRoIHRoZSBnaXZlbiB2YWx1ZXMKKwkgKgorCSAqIEBw
YXJhbSB7TnVtYmVyfSB4IFggY29tcG9uZW50CisJICogQHBhcmFtIHtOdW1iZXJ9IHkgWSBjb21w
b25lbnQKKwkgKiBAcGFyYW0ge051bWJlcn0geiBaIGNvbXBvbmVudAorCSAqIEBwYXJhbSB7TnVt
YmVyfSB3IFcgY29tcG9uZW50CisJICogQHJldHVybnMge3F1YXR9IGEgbmV3IHF1YXRlcm5pb24K
KwkgKiBAZnVuY3Rpb24KKwkgKi8KKwlxdWF0LmZyb21WYWx1ZXMgPSB2ZWM0LmZyb21WYWx1ZXM7
CisKKwkvKioKKwkgKiBDb3B5IHRoZSB2YWx1ZXMgZnJvbSBvbmUgcXVhdCB0byBhbm90aGVyCisJ
ICoKKwkgKiBAcGFyYW0ge3F1YXR9IG91dCB0aGUgcmVjZWl2aW5nIHF1YXRlcm5pb24KKwkgKiBA
cGFyYW0ge3F1YXR9IGEgdGhlIHNvdXJjZSBxdWF0ZXJuaW9uCisJICogQHJldHVybnMge3F1YXR9
IG91dAorCSAqIEBmdW5jdGlvbgorCSAqLworCXF1YXQuY29weSA9IHZlYzQuY29weTsKKworCS8q
KgorCSAqIFNldCB0aGUgY29tcG9uZW50cyBvZiBhIHF1YXQgdG8gdGhlIGdpdmVuIHZhbHVlcwor
CSAqCisJICogQHBhcmFtIHtxdWF0fSBvdXQgdGhlIHJlY2VpdmluZyBxdWF0ZXJuaW9uCisJICog
QHBhcmFtIHtOdW1iZXJ9IHggWCBjb21wb25lbnQKKwkgKiBAcGFyYW0ge051bWJlcn0geSBZIGNv
bXBvbmVudAorCSAqIEBwYXJhbSB7TnVtYmVyfSB6IFogY29tcG9uZW50CisJICogQHBhcmFtIHtO
dW1iZXJ9IHcgVyBjb21wb25lbnQKKwkgKiBAcmV0dXJucyB7cXVhdH0gb3V0CisJICogQGZ1bmN0
aW9uCisJICovCisJcXVhdC5zZXQgPSB2ZWM0LnNldDsKKworCS8qKgorCSAqIFNldCBhIHF1YXQg
dG8gdGhlIGlkZW50aXR5IHF1YXRlcm5pb24KKwkgKgorCSAqIEBwYXJhbSB7cXVhdH0gb3V0IHRo
ZSByZWNlaXZpbmcgcXVhdGVybmlvbgorCSAqIEByZXR1cm5zIHtxdWF0fSBvdXQKKwkgKi8KKwlx
dWF0LmlkZW50aXR5ID0gZnVuY3Rpb24ob3V0KSB7CisJICAgIG91dFswXSA9IDA7CisJICAgIG91
dFsxXSA9IDA7CisJICAgIG91dFsyXSA9IDA7CisJICAgIG91dFszXSA9IDE7CisJICAgIHJldHVy
biBvdXQ7CisJfTsKKworCS8qKgorCSAqIFNldHMgYSBxdWF0IGZyb20gdGhlIGdpdmVuIGFuZ2xl
IGFuZCByb3RhdGlvbiBheGlzLAorCSAqIHRoZW4gcmV0dXJucyBpdC4KKwkgKgorCSAqIEBwYXJh
bSB7cXVhdH0gb3V0IHRoZSByZWNlaXZpbmcgcXVhdGVybmlvbgorCSAqIEBwYXJhbSB7dmVjM30g
YXhpcyB0aGUgYXhpcyBhcm91bmQgd2hpY2ggdG8gcm90YXRlCisJICogQHBhcmFtIHtOdW1iZXJ9
IHJhZCB0aGUgYW5nbGUgaW4gcmFkaWFucworCSAqIEByZXR1cm5zIHtxdWF0fSBvdXQKKwkgKiov
CisJcXVhdC5zZXRBeGlzQW5nbGUgPSBmdW5jdGlvbihvdXQsIGF4aXMsIHJhZCkgeworCSAgICBy
YWQgPSByYWQgKiAwLjU7CisJICAgIHZhciBzID0gTWF0aC5zaW4ocmFkKTsKKwkgICAgb3V0WzBd
ID0gcyAqIGF4aXNbMF07CisJICAgIG91dFsxXSA9IHMgKiBheGlzWzFdOworCSAgICBvdXRbMl0g
PSBzICogYXhpc1syXTsKKwkgICAgb3V0WzNdID0gTWF0aC5jb3MocmFkKTsKKwkgICAgcmV0dXJu
IG91dDsKKwl9OworCisJLyoqCisJICogR2V0cyB0aGUgcm90YXRpb24gYXhpcyBhbmQgYW5nbGUg
Zm9yIGEgZ2l2ZW4KKwkgKiAgcXVhdGVybmlvbi4gSWYgYSBxdWF0ZXJuaW9uIGlzIGNyZWF0ZWQg
d2l0aAorCSAqICBzZXRBeGlzQW5nbGUsIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIHRoZSBzYW1l
CisJICogIHZhbHVlcyBhcyBwcm92aWRpZWQgaW4gdGhlIG9yaWdpbmFsIHBhcmFtZXRlciBsaXN0
CisJICogIE9SIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHZhbHVlcy4KKwkgKiBFeGFtcGxlOiBU
aGUgcXVhdGVybmlvbiBmb3JtZWQgYnkgYXhpcyBbMCwgMCwgMV0gYW5kCisJICogIGFuZ2xlIC05
MCBpcyB0aGUgc2FtZSBhcyB0aGUgcXVhdGVybmlvbiBmb3JtZWQgYnkKKwkgKiAgWzAsIDAsIDFd
IGFuZCAyNzAuIFRoaXMgbWV0aG9kIGZhdm9ycyB0aGUgbGF0dGVyLgorCSAqIEBwYXJhbSAge3Zl
YzN9IG91dF9heGlzICBWZWN0b3IgcmVjZWl2aW5nIHRoZSBheGlzIG9mIHJvdGF0aW9uCisJICog
QHBhcmFtICB7cXVhdH0gcSAgICAgUXVhdGVybmlvbiB0byBiZSBkZWNvbXBvc2VkCisJICogQHJl
dHVybiB7TnVtYmVyfSAgICAgQW5nbGUsIGluIHJhZGlhbnMsIG9mIHRoZSByb3RhdGlvbgorCSAq
LworCXF1YXQuZ2V0QXhpc0FuZ2xlID0gZnVuY3Rpb24ob3V0X2F4aXMsIHEpIHsKKwkgICAgdmFy
IHJhZCA9IE1hdGguYWNvcyhxWzNdKSAqIDIuMDsKKwkgICAgdmFyIHMgPSBNYXRoLnNpbihyYWQg
LyAyLjApOworCSAgICBpZiAocyAhPSAwLjApIHsKKwkgICAgICAgIG91dF9heGlzWzBdID0gcVsw
XSAvIHM7CisJICAgICAgICBvdXRfYXhpc1sxXSA9IHFbMV0gLyBzOworCSAgICAgICAgb3V0X2F4
aXNbMl0gPSBxWzJdIC8gczsKKwkgICAgfSBlbHNlIHsKKwkgICAgICAgIC8vIElmIHMgaXMgemVy
bywgcmV0dXJuIGFueSBheGlzIChubyByb3RhdGlvbiAtIGF4aXMgZG9lcyBub3QgbWF0dGVyKQor
CSAgICAgICAgb3V0X2F4aXNbMF0gPSAxOworCSAgICAgICAgb3V0X2F4aXNbMV0gPSAwOworCSAg
ICAgICAgb3V0X2F4aXNbMl0gPSAwOworCSAgICB9CisJICAgIHJldHVybiByYWQ7CisJfTsKKwor
CS8qKgorCSAqIEFkZHMgdHdvIHF1YXQncworCSAqCisJICogQHBhcmFtIHtxdWF0fSBvdXQgdGhl
IHJlY2VpdmluZyBxdWF0ZXJuaW9uCisJICogQHBhcmFtIHtxdWF0fSBhIHRoZSBmaXJzdCBvcGVy
YW5kCisJICogQHBhcmFtIHtxdWF0fSBiIHRoZSBzZWNvbmQgb3BlcmFuZAorCSAqIEByZXR1cm5z
IHtxdWF0fSBvdXQKKwkgKiBAZnVuY3Rpb24KKwkgKi8KKwlxdWF0LmFkZCA9IHZlYzQuYWRkOwor
CisJLyoqCisJICogTXVsdGlwbGllcyB0d28gcXVhdCdzCisJICoKKwkgKiBAcGFyYW0ge3F1YXR9
IG91dCB0aGUgcmVjZWl2aW5nIHF1YXRlcm5pb24KKwkgKiBAcGFyYW0ge3F1YXR9IGEgdGhlIGZp
cnN0IG9wZXJhbmQKKwkgKiBAcGFyYW0ge3F1YXR9IGIgdGhlIHNlY29uZCBvcGVyYW5kCisJICog
QHJldHVybnMge3F1YXR9IG91dAorCSAqLworCXF1YXQubXVsdGlwbHkgPSBmdW5jdGlvbihvdXQs
IGEsIGIpIHsKKwkgICAgdmFyIGF4ID0gYVswXSwgYXkgPSBhWzFdLCBheiA9IGFbMl0sIGF3ID0g
YVszXSwKKwkgICAgICAgIGJ4ID0gYlswXSwgYnkgPSBiWzFdLCBieiA9IGJbMl0sIGJ3ID0gYlsz
XTsKKworCSAgICBvdXRbMF0gPSBheCAqIGJ3ICsgYXcgKiBieCArIGF5ICogYnogLSBheiAqIGJ5
OworCSAgICBvdXRbMV0gPSBheSAqIGJ3ICsgYXcgKiBieSArIGF6ICogYnggLSBheCAqIGJ6Owor
CSAgICBvdXRbMl0gPSBheiAqIGJ3ICsgYXcgKiBieiArIGF4ICogYnkgLSBheSAqIGJ4OworCSAg
ICBvdXRbM10gPSBhdyAqIGJ3IC0gYXggKiBieCAtIGF5ICogYnkgLSBheiAqIGJ6OworCSAgICBy
ZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBBbGlhcyBmb3Ige0BsaW5rIHF1YXQubXVsdGlw
bHl9CisJICogQGZ1bmN0aW9uCisJICovCisJcXVhdC5tdWwgPSBxdWF0Lm11bHRpcGx5OworCisJ
LyoqCisJICogU2NhbGVzIGEgcXVhdCBieSBhIHNjYWxhciBudW1iZXIKKwkgKgorCSAqIEBwYXJh
bSB7cXVhdH0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yCisJICogQHBhcmFtIHtxdWF0fSBhIHRo
ZSB2ZWN0b3IgdG8gc2NhbGUKKwkgKiBAcGFyYW0ge051bWJlcn0gYiBhbW91bnQgdG8gc2NhbGUg
dGhlIHZlY3RvciBieQorCSAqIEByZXR1cm5zIHtxdWF0fSBvdXQKKwkgKiBAZnVuY3Rpb24KKwkg
Ki8KKwlxdWF0LnNjYWxlID0gdmVjNC5zY2FsZTsKKworCS8qKgorCSAqIFJvdGF0ZXMgYSBxdWF0
ZXJuaW9uIGJ5IHRoZSBnaXZlbiBhbmdsZSBhYm91dCB0aGUgWCBheGlzCisJICoKKwkgKiBAcGFy
YW0ge3F1YXR9IG91dCBxdWF0IHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0CisJICogQHBhcmFt
IHtxdWF0fSBhIHF1YXQgdG8gcm90YXRlCisJICogQHBhcmFtIHtudW1iZXJ9IHJhZCBhbmdsZSAo
aW4gcmFkaWFucykgdG8gcm90YXRlCisJICogQHJldHVybnMge3F1YXR9IG91dAorCSAqLworCXF1
YXQucm90YXRlWCA9IGZ1bmN0aW9uIChvdXQsIGEsIHJhZCkgeworCSAgICByYWQgKj0gMC41OyAK
KworCSAgICB2YXIgYXggPSBhWzBdLCBheSA9IGFbMV0sIGF6ID0gYVsyXSwgYXcgPSBhWzNdLAor
CSAgICAgICAgYnggPSBNYXRoLnNpbihyYWQpLCBidyA9IE1hdGguY29zKHJhZCk7CisKKwkgICAg
b3V0WzBdID0gYXggKiBidyArIGF3ICogYng7CisJICAgIG91dFsxXSA9IGF5ICogYncgKyBheiAq
IGJ4OworCSAgICBvdXRbMl0gPSBheiAqIGJ3IC0gYXkgKiBieDsKKwkgICAgb3V0WzNdID0gYXcg
KiBidyAtIGF4ICogYng7CisJICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIFJvdGF0
ZXMgYSBxdWF0ZXJuaW9uIGJ5IHRoZSBnaXZlbiBhbmdsZSBhYm91dCB0aGUgWSBheGlzCisJICoK
KwkgKiBAcGFyYW0ge3F1YXR9IG91dCBxdWF0IHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0CisJ
ICogQHBhcmFtIHtxdWF0fSBhIHF1YXQgdG8gcm90YXRlCisJICogQHBhcmFtIHtudW1iZXJ9IHJh
ZCBhbmdsZSAoaW4gcmFkaWFucykgdG8gcm90YXRlCisJICogQHJldHVybnMge3F1YXR9IG91dAor
CSAqLworCXF1YXQucm90YXRlWSA9IGZ1bmN0aW9uIChvdXQsIGEsIHJhZCkgeworCSAgICByYWQg
Kj0gMC41OyAKKworCSAgICB2YXIgYXggPSBhWzBdLCBheSA9IGFbMV0sIGF6ID0gYVsyXSwgYXcg
PSBhWzNdLAorCSAgICAgICAgYnkgPSBNYXRoLnNpbihyYWQpLCBidyA9IE1hdGguY29zKHJhZCk7
CisKKwkgICAgb3V0WzBdID0gYXggKiBidyAtIGF6ICogYnk7CisJICAgIG91dFsxXSA9IGF5ICog
YncgKyBhdyAqIGJ5OworCSAgICBvdXRbMl0gPSBheiAqIGJ3ICsgYXggKiBieTsKKwkgICAgb3V0
WzNdID0gYXcgKiBidyAtIGF5ICogYnk7CisJICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgor
CSAqIFJvdGF0ZXMgYSBxdWF0ZXJuaW9uIGJ5IHRoZSBnaXZlbiBhbmdsZSBhYm91dCB0aGUgWiBh
eGlzCisJICoKKwkgKiBAcGFyYW0ge3F1YXR9IG91dCBxdWF0IHJlY2VpdmluZyBvcGVyYXRpb24g
cmVzdWx0CisJICogQHBhcmFtIHtxdWF0fSBhIHF1YXQgdG8gcm90YXRlCisJICogQHBhcmFtIHtu
dW1iZXJ9IHJhZCBhbmdsZSAoaW4gcmFkaWFucykgdG8gcm90YXRlCisJICogQHJldHVybnMge3F1
YXR9IG91dAorCSAqLworCXF1YXQucm90YXRlWiA9IGZ1bmN0aW9uIChvdXQsIGEsIHJhZCkgewor
CSAgICByYWQgKj0gMC41OyAKKworCSAgICB2YXIgYXggPSBhWzBdLCBheSA9IGFbMV0sIGF6ID0g
YVsyXSwgYXcgPSBhWzNdLAorCSAgICAgICAgYnogPSBNYXRoLnNpbihyYWQpLCBidyA9IE1hdGgu
Y29zKHJhZCk7CisKKwkgICAgb3V0WzBdID0gYXggKiBidyArIGF5ICogYno7CisJICAgIG91dFsx
XSA9IGF5ICogYncgLSBheCAqIGJ6OworCSAgICBvdXRbMl0gPSBheiAqIGJ3ICsgYXcgKiBiejsK
KwkgICAgb3V0WzNdID0gYXcgKiBidyAtIGF6ICogYno7CisJICAgIHJldHVybiBvdXQ7CisJfTsK
KworCS8qKgorCSAqIENhbGN1bGF0ZXMgdGhlIFcgY29tcG9uZW50IG9mIGEgcXVhdCBmcm9tIHRo
ZSBYLCBZLCBhbmQgWiBjb21wb25lbnRzLgorCSAqIEFzc3VtZXMgdGhhdCBxdWF0ZXJuaW9uIGlz
IDEgdW5pdCBpbiBsZW5ndGguCisJICogQW55IGV4aXN0aW5nIFcgY29tcG9uZW50IHdpbGwgYmUg
aWdub3JlZC4KKwkgKgorCSAqIEBwYXJhbSB7cXVhdH0gb3V0IHRoZSByZWNlaXZpbmcgcXVhdGVy
bmlvbgorCSAqIEBwYXJhbSB7cXVhdH0gYSBxdWF0IHRvIGNhbGN1bGF0ZSBXIGNvbXBvbmVudCBv
ZgorCSAqIEByZXR1cm5zIHtxdWF0fSBvdXQKKwkgKi8KKwlxdWF0LmNhbGN1bGF0ZVcgPSBmdW5j
dGlvbiAob3V0LCBhKSB7CisJICAgIHZhciB4ID0gYVswXSwgeSA9IGFbMV0sIHogPSBhWzJdOwor
CisJICAgIG91dFswXSA9IHg7CisJICAgIG91dFsxXSA9IHk7CisJICAgIG91dFsyXSA9IHo7CisJ
ICAgIG91dFszXSA9IE1hdGguc3FydChNYXRoLmFicygxLjAgLSB4ICogeCAtIHkgKiB5IC0geiAq
IHopKTsKKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogQ2FsY3VsYXRlcyB0aGUg
ZG90IHByb2R1Y3Qgb2YgdHdvIHF1YXQncworCSAqCisJICogQHBhcmFtIHtxdWF0fSBhIHRoZSBm
aXJzdCBvcGVyYW5kCisJICogQHBhcmFtIHtxdWF0fSBiIHRoZSBzZWNvbmQgb3BlcmFuZAorCSAq
IEByZXR1cm5zIHtOdW1iZXJ9IGRvdCBwcm9kdWN0IG9mIGEgYW5kIGIKKwkgKiBAZnVuY3Rpb24K
KwkgKi8KKwlxdWF0LmRvdCA9IHZlYzQuZG90OworCisJLyoqCisJICogUGVyZm9ybXMgYSBsaW5l
YXIgaW50ZXJwb2xhdGlvbiBiZXR3ZWVuIHR3byBxdWF0J3MKKwkgKgorCSAqIEBwYXJhbSB7cXVh
dH0gb3V0IHRoZSByZWNlaXZpbmcgcXVhdGVybmlvbgorCSAqIEBwYXJhbSB7cXVhdH0gYSB0aGUg
Zmlyc3Qgb3BlcmFuZAorCSAqIEBwYXJhbSB7cXVhdH0gYiB0aGUgc2Vjb25kIG9wZXJhbmQKKwkg
KiBAcGFyYW0ge051bWJlcn0gdCBpbnRlcnBvbGF0aW9uIGFtb3VudCBiZXR3ZWVuIHRoZSB0d28g
aW5wdXRzCisJICogQHJldHVybnMge3F1YXR9IG91dAorCSAqIEBmdW5jdGlvbgorCSAqLworCXF1
YXQubGVycCA9IHZlYzQubGVycDsKKworCS8qKgorCSAqIFBlcmZvcm1zIGEgc3BoZXJpY2FsIGxp
bmVhciBpbnRlcnBvbGF0aW9uIGJldHdlZW4gdHdvIHF1YXQKKwkgKgorCSAqIEBwYXJhbSB7cXVh
dH0gb3V0IHRoZSByZWNlaXZpbmcgcXVhdGVybmlvbgorCSAqIEBwYXJhbSB7cXVhdH0gYSB0aGUg
Zmlyc3Qgb3BlcmFuZAorCSAqIEBwYXJhbSB7cXVhdH0gYiB0aGUgc2Vjb25kIG9wZXJhbmQKKwkg
KiBAcGFyYW0ge051bWJlcn0gdCBpbnRlcnBvbGF0aW9uIGFtb3VudCBiZXR3ZWVuIHRoZSB0d28g
aW5wdXRzCisJICogQHJldHVybnMge3F1YXR9IG91dAorCSAqLworCXF1YXQuc2xlcnAgPSBmdW5j
dGlvbiAob3V0LCBhLCBiLCB0KSB7CisJICAgIC8vIGJlbmNobWFya3M6CisJICAgIC8vICAgIGh0
dHA6Ly9qc3BlcmYuY29tL3F1YXRlcm5pb24tc2xlcnAtaW1wbGVtZW50YXRpb25zCisKKwkgICAg
dmFyIGF4ID0gYVswXSwgYXkgPSBhWzFdLCBheiA9IGFbMl0sIGF3ID0gYVszXSwKKwkgICAgICAg
IGJ4ID0gYlswXSwgYnkgPSBiWzFdLCBieiA9IGJbMl0sIGJ3ID0gYlszXTsKKworCSAgICB2YXIg
ICAgICAgIG9tZWdhLCBjb3NvbSwgc2lub20sIHNjYWxlMCwgc2NhbGUxOworCisJICAgIC8vIGNh
bGMgY29zaW5lCisJICAgIGNvc29tID0gYXggKiBieCArIGF5ICogYnkgKyBheiAqIGJ6ICsgYXcg
KiBidzsKKwkgICAgLy8gYWRqdXN0IHNpZ25zIChpZiBuZWNlc3NhcnkpCisJICAgIGlmICggY29z
b20gPCAwLjAgKSB7CisJICAgICAgICBjb3NvbSA9IC1jb3NvbTsKKwkgICAgICAgIGJ4ID0gLSBi
eDsKKwkgICAgICAgIGJ5ID0gLSBieTsKKwkgICAgICAgIGJ6ID0gLSBiejsKKwkgICAgICAgIGJ3
ID0gLSBidzsKKwkgICAgfQorCSAgICAvLyBjYWxjdWxhdGUgY29lZmZpY2llbnRzCisJICAgIGlm
ICggKDEuMCAtIGNvc29tKSA+IDAuMDAwMDAxICkgeworCSAgICAgICAgLy8gc3RhbmRhcmQgY2Fz
ZSAoc2xlcnApCisJICAgICAgICBvbWVnYSAgPSBNYXRoLmFjb3MoY29zb20pOworCSAgICAgICAg
c2lub20gID0gTWF0aC5zaW4ob21lZ2EpOworCSAgICAgICAgc2NhbGUwID0gTWF0aC5zaW4oKDEu
MCAtIHQpICogb21lZ2EpIC8gc2lub207CisJICAgICAgICBzY2FsZTEgPSBNYXRoLnNpbih0ICog
b21lZ2EpIC8gc2lub207CisJICAgIH0gZWxzZSB7ICAgICAgICAKKwkgICAgICAgIC8vICJmcm9t
IiBhbmQgInRvIiBxdWF0ZXJuaW9ucyBhcmUgdmVyeSBjbG9zZSAKKwkgICAgICAgIC8vICAuLi4g
c28gd2UgY2FuIGRvIGEgbGluZWFyIGludGVycG9sYXRpb24KKwkgICAgICAgIHNjYWxlMCA9IDEu
MCAtIHQ7CisJICAgICAgICBzY2FsZTEgPSB0OworCSAgICB9CisJICAgIC8vIGNhbGN1bGF0ZSBm
aW5hbCB2YWx1ZXMKKwkgICAgb3V0WzBdID0gc2NhbGUwICogYXggKyBzY2FsZTEgKiBieDsKKwkg
ICAgb3V0WzFdID0gc2NhbGUwICogYXkgKyBzY2FsZTEgKiBieTsKKwkgICAgb3V0WzJdID0gc2Nh
bGUwICogYXogKyBzY2FsZTEgKiBiejsKKwkgICAgb3V0WzNdID0gc2NhbGUwICogYXcgKyBzY2Fs
ZTEgKiBidzsKKwkgICAgCisJICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIFBlcmZv
cm1zIGEgc3BoZXJpY2FsIGxpbmVhciBpbnRlcnBvbGF0aW9uIHdpdGggdHdvIGNvbnRyb2wgcG9p
bnRzCisJICoKKwkgKiBAcGFyYW0ge3F1YXR9IG91dCB0aGUgcmVjZWl2aW5nIHF1YXRlcm5pb24K
KwkgKiBAcGFyYW0ge3F1YXR9IGEgdGhlIGZpcnN0IG9wZXJhbmQKKwkgKiBAcGFyYW0ge3F1YXR9
IGIgdGhlIHNlY29uZCBvcGVyYW5kCisJICogQHBhcmFtIHtxdWF0fSBjIHRoZSB0aGlyZCBvcGVy
YW5kCisJICogQHBhcmFtIHtxdWF0fSBkIHRoZSBmb3VydGggb3BlcmFuZAorCSAqIEBwYXJhbSB7
TnVtYmVyfSB0IGludGVycG9sYXRpb24gYW1vdW50CisJICogQHJldHVybnMge3F1YXR9IG91dAor
CSAqLworCXF1YXQuc3FsZXJwID0gKGZ1bmN0aW9uICgpIHsKKwkgIHZhciB0ZW1wMSA9IHF1YXQu
Y3JlYXRlKCk7CisJICB2YXIgdGVtcDIgPSBxdWF0LmNyZWF0ZSgpOworCSAgCisJICByZXR1cm4g
ZnVuY3Rpb24gKG91dCwgYSwgYiwgYywgZCwgdCkgeworCSAgICBxdWF0LnNsZXJwKHRlbXAxLCBh
LCBkLCB0KTsKKwkgICAgcXVhdC5zbGVycCh0ZW1wMiwgYiwgYywgdCk7CisJICAgIHF1YXQuc2xl
cnAob3V0LCB0ZW1wMSwgdGVtcDIsIDIgKiB0ICogKDEgLSB0KSk7CisJICAgIAorCSAgICByZXR1
cm4gb3V0OworCSAgfTsKKwl9KCkpOworCisJLyoqCisJICogQ2FsY3VsYXRlcyB0aGUgaW52ZXJz
ZSBvZiBhIHF1YXQKKwkgKgorCSAqIEBwYXJhbSB7cXVhdH0gb3V0IHRoZSByZWNlaXZpbmcgcXVh
dGVybmlvbgorCSAqIEBwYXJhbSB7cXVhdH0gYSBxdWF0IHRvIGNhbGN1bGF0ZSBpbnZlcnNlIG9m
CisJICogQHJldHVybnMge3F1YXR9IG91dAorCSAqLworCXF1YXQuaW52ZXJ0ID0gZnVuY3Rpb24o
b3V0LCBhKSB7CisJICAgIHZhciBhMCA9IGFbMF0sIGExID0gYVsxXSwgYTIgPSBhWzJdLCBhMyA9
IGFbM10sCisJICAgICAgICBkb3QgPSBhMCphMCArIGExKmExICsgYTIqYTIgKyBhMyphMywKKwkg
ICAgICAgIGludkRvdCA9IGRvdCA/IDEuMC9kb3QgOiAwOworCSAgICAKKwkgICAgLy8gVE9ETzog
V291bGQgYmUgZmFzdGVyIHRvIHJldHVybiBbMCwwLDAsMF0gaW1tZWRpYXRlbHkgaWYgZG90ID09
IDAKKworCSAgICBvdXRbMF0gPSAtYTAqaW52RG90OworCSAgICBvdXRbMV0gPSAtYTEqaW52RG90
OworCSAgICBvdXRbMl0gPSAtYTIqaW52RG90OworCSAgICBvdXRbM10gPSBhMyppbnZEb3Q7CisJ
ICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIENhbGN1bGF0ZXMgdGhlIGNvbmp1Z2F0
ZSBvZiBhIHF1YXQKKwkgKiBJZiB0aGUgcXVhdGVybmlvbiBpcyBub3JtYWxpemVkLCB0aGlzIGZ1
bmN0aW9uIGlzIGZhc3RlciB0aGFuIHF1YXQuaW52ZXJzZSBhbmQgcHJvZHVjZXMgdGhlIHNhbWUg
cmVzdWx0LgorCSAqCisJICogQHBhcmFtIHtxdWF0fSBvdXQgdGhlIHJlY2VpdmluZyBxdWF0ZXJu
aW9uCisJICogQHBhcmFtIHtxdWF0fSBhIHF1YXQgdG8gY2FsY3VsYXRlIGNvbmp1Z2F0ZSBvZgor
CSAqIEByZXR1cm5zIHtxdWF0fSBvdXQKKwkgKi8KKwlxdWF0LmNvbmp1Z2F0ZSA9IGZ1bmN0aW9u
IChvdXQsIGEpIHsKKwkgICAgb3V0WzBdID0gLWFbMF07CisJICAgIG91dFsxXSA9IC1hWzFdOwor
CSAgICBvdXRbMl0gPSAtYVsyXTsKKwkgICAgb3V0WzNdID0gYVszXTsKKwkgICAgcmV0dXJuIG91
dDsKKwl9OworCisJLyoqCisJICogQ2FsY3VsYXRlcyB0aGUgbGVuZ3RoIG9mIGEgcXVhdAorCSAq
CisJICogQHBhcmFtIHtxdWF0fSBhIHZlY3RvciB0byBjYWxjdWxhdGUgbGVuZ3RoIG9mCisJICog
QHJldHVybnMge051bWJlcn0gbGVuZ3RoIG9mIGEKKwkgKiBAZnVuY3Rpb24KKwkgKi8KKwlxdWF0
Lmxlbmd0aCA9IHZlYzQubGVuZ3RoOworCisJLyoqCisJICogQWxpYXMgZm9yIHtAbGluayBxdWF0
Lmxlbmd0aH0KKwkgKiBAZnVuY3Rpb24KKwkgKi8KKwlxdWF0LmxlbiA9IHF1YXQubGVuZ3RoOwor
CisJLyoqCisJICogQ2FsY3VsYXRlcyB0aGUgc3F1YXJlZCBsZW5ndGggb2YgYSBxdWF0CisJICoK
KwkgKiBAcGFyYW0ge3F1YXR9IGEgdmVjdG9yIHRvIGNhbGN1bGF0ZSBzcXVhcmVkIGxlbmd0aCBv
ZgorCSAqIEByZXR1cm5zIHtOdW1iZXJ9IHNxdWFyZWQgbGVuZ3RoIG9mIGEKKwkgKiBAZnVuY3Rp
b24KKwkgKi8KKwlxdWF0LnNxdWFyZWRMZW5ndGggPSB2ZWM0LnNxdWFyZWRMZW5ndGg7CisKKwkv
KioKKwkgKiBBbGlhcyBmb3Ige0BsaW5rIHF1YXQuc3F1YXJlZExlbmd0aH0KKwkgKiBAZnVuY3Rp
b24KKwkgKi8KKwlxdWF0LnNxckxlbiA9IHF1YXQuc3F1YXJlZExlbmd0aDsKKworCS8qKgorCSAq
IE5vcm1hbGl6ZSBhIHF1YXQKKwkgKgorCSAqIEBwYXJhbSB7cXVhdH0gb3V0IHRoZSByZWNlaXZp
bmcgcXVhdGVybmlvbgorCSAqIEBwYXJhbSB7cXVhdH0gYSBxdWF0ZXJuaW9uIHRvIG5vcm1hbGl6
ZQorCSAqIEByZXR1cm5zIHtxdWF0fSBvdXQKKwkgKiBAZnVuY3Rpb24KKwkgKi8KKwlxdWF0Lm5v
cm1hbGl6ZSA9IHZlYzQubm9ybWFsaXplOworCisJLyoqCisJICogQ3JlYXRlcyBhIHF1YXRlcm5p
b24gZnJvbSB0aGUgZ2l2ZW4gM3gzIHJvdGF0aW9uIG1hdHJpeC4KKwkgKgorCSAqIE5PVEU6IFRo
ZSByZXN1bHRhbnQgcXVhdGVybmlvbiBpcyBub3Qgbm9ybWFsaXplZCwgc28geW91IHNob3VsZCBi
ZSBzdXJlCisJICogdG8gcmVub3JtYWxpemUgdGhlIHF1YXRlcm5pb24geW91cnNlbGYgd2hlcmUg
bmVjZXNzYXJ5LgorCSAqCisJICogQHBhcmFtIHtxdWF0fSBvdXQgdGhlIHJlY2VpdmluZyBxdWF0
ZXJuaW9uCisJICogQHBhcmFtIHttYXQzfSBtIHJvdGF0aW9uIG1hdHJpeAorCSAqIEByZXR1cm5z
IHtxdWF0fSBvdXQKKwkgKiBAZnVuY3Rpb24KKwkgKi8KKwlxdWF0LmZyb21NYXQzID0gZnVuY3Rp
b24ob3V0LCBtKSB7CisJICAgIC8vIEFsZ29yaXRobSBpbiBLZW4gU2hvZW1ha2UncyBhcnRpY2xl
IGluIDE5ODcgU0lHR1JBUEggY291cnNlIG5vdGVzCisJICAgIC8vIGFydGljbGUgIlF1YXRlcm5p
b24gQ2FsY3VsdXMgYW5kIEZhc3QgQW5pbWF0aW9uIi4KKwkgICAgdmFyIGZUcmFjZSA9IG1bMF0g
KyBtWzRdICsgbVs4XTsKKwkgICAgdmFyIGZSb290OworCisJICAgIGlmICggZlRyYWNlID4gMC4w
ICkgeworCSAgICAgICAgLy8gfHd8ID4gMS8yLCBtYXkgYXMgd2VsbCBjaG9vc2UgdyA+IDEvMgor
CSAgICAgICAgZlJvb3QgPSBNYXRoLnNxcnQoZlRyYWNlICsgMS4wKTsgIC8vIDJ3CisJICAgICAg
ICBvdXRbM10gPSAwLjUgKiBmUm9vdDsKKwkgICAgICAgIGZSb290ID0gMC41L2ZSb290OyAgLy8g
MS8oNHcpCisJICAgICAgICBvdXRbMF0gPSAobVs1XS1tWzddKSpmUm9vdDsKKwkgICAgICAgIG91
dFsxXSA9IChtWzZdLW1bMl0pKmZSb290OworCSAgICAgICAgb3V0WzJdID0gKG1bMV0tbVszXSkq
ZlJvb3Q7CisJICAgIH0gZWxzZSB7CisJICAgICAgICAvLyB8d3wgPD0gMS8yCisJICAgICAgICB2
YXIgaSA9IDA7CisJICAgICAgICBpZiAoIG1bNF0gPiBtWzBdICkKKwkgICAgICAgICAgaSA9IDE7
CisJICAgICAgICBpZiAoIG1bOF0gPiBtW2kqMytpXSApCisJICAgICAgICAgIGkgPSAyOworCSAg
ICAgICAgdmFyIGogPSAoaSsxKSUzOworCSAgICAgICAgdmFyIGsgPSAoaSsyKSUzOworCSAgICAg
ICAgCisJICAgICAgICBmUm9vdCA9IE1hdGguc3FydChtW2kqMytpXS1tW2oqMytqXS1tW2sqMytr
XSArIDEuMCk7CisJICAgICAgICBvdXRbaV0gPSAwLjUgKiBmUm9vdDsKKwkgICAgICAgIGZSb290
ID0gMC41IC8gZlJvb3Q7CisJICAgICAgICBvdXRbM10gPSAobVtqKjMra10gLSBtW2sqMytqXSkg
KiBmUm9vdDsKKwkgICAgICAgIG91dFtqXSA9IChtW2oqMytpXSArIG1baSozK2pdKSAqIGZSb290
OworCSAgICAgICAgb3V0W2tdID0gKG1bayozK2ldICsgbVtpKjMra10pICogZlJvb3Q7CisJICAg
IH0KKwkgICAgCisJICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIFJldHVybnMgYSBz
dHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBxdWF0ZW5pb24KKwkgKgorCSAqIEBwYXJhbSB7cXVh
dH0gdmVjIHZlY3RvciB0byByZXByZXNlbnQgYXMgYSBzdHJpbmcKKwkgKiBAcmV0dXJucyB7U3Ry
aW5nfSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHZlY3RvcgorCSAqLworCXF1YXQuc3Ry
ID0gZnVuY3Rpb24gKGEpIHsKKwkgICAgcmV0dXJuICdxdWF0KCcgKyBhWzBdICsgJywgJyArIGFb
MV0gKyAnLCAnICsgYVsyXSArICcsICcgKyBhWzNdICsgJyknOworCX07CisKKwkvKioKKwkgKiBS
ZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBxdWF0ZXJuaW9ucyBoYXZlIGV4YWN0bHkgdGhlIHNh
bWUgZWxlbWVudHMgaW4gdGhlIHNhbWUgcG9zaXRpb24gKHdoZW4gY29tcGFyZWQgd2l0aCA9PT0p
CisJICoKKwkgKiBAcGFyYW0ge3F1YXR9IGEgVGhlIGZpcnN0IHF1YXRlcm5pb24uCisJICogQHBh
cmFtIHtxdWF0fSBiIFRoZSBzZWNvbmQgcXVhdGVybmlvbi4KKwkgKiBAcmV0dXJucyB7Qm9vbGVh
bn0gVHJ1ZSBpZiB0aGUgdmVjdG9ycyBhcmUgZXF1YWwsIGZhbHNlIG90aGVyd2lzZS4KKwkgKi8K
KwlxdWF0LmV4YWN0RXF1YWxzID0gdmVjNC5leGFjdEVxdWFsczsKKworCS8qKgorCSAqIFJldHVy
bnMgd2hldGhlciBvciBub3QgdGhlIHF1YXRlcm5pb25zIGhhdmUgYXBwcm94aW1hdGVseSB0aGUg
c2FtZSBlbGVtZW50cyBpbiB0aGUgc2FtZSBwb3NpdGlvbi4KKwkgKgorCSAqIEBwYXJhbSB7cXVh
dH0gYSBUaGUgZmlyc3QgdmVjdG9yLgorCSAqIEBwYXJhbSB7cXVhdH0gYiBUaGUgc2Vjb25kIHZl
Y3Rvci4KKwkgKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1ZSBpZiB0aGUgdmVjdG9ycyBhcmUgZXF1
YWwsIGZhbHNlIG90aGVyd2lzZS4KKwkgKi8KKwlxdWF0LmVxdWFscyA9IHZlYzQuZXF1YWxzOwor
CisJbW9kdWxlLmV4cG9ydHMgPSBxdWF0OworCisKKy8qKiovIH0sCisvKiA3ICovCisvKioqLyBm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKKworCS8qIENv
cHlyaWdodCAoYykgMjAxNSwgQnJhbmRvbiBKb25lcywgQ29saW4gTWFjS2VuemllIElWLgorCisJ
UGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJz
b24gb2J0YWluaW5nIGEgY29weQorCW9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9j
dW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCisJaW4gdGhlIFNvZnR3
YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhl
IHJpZ2h0cworCXRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0
ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKKwljb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQg
dG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKwlmdXJuaXNoZWQgdG8g
ZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCisJVGhlIGFib3Zl
IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5j
bHVkZWQgaW4KKwlhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0
d2FyZS4KKworCVRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJB
TlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisJSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1Qg
TElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisJRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFCisJQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO
WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorCUxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ
T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisJT1VUIE9G
IE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBE
RUFMSU5HUyBJTgorCVRIRSBTT0ZUV0FSRS4gKi8KKworCXZhciBnbE1hdHJpeCA9IF9fd2VicGFj
a19yZXF1aXJlX18oMSk7CisKKwkvKioKKwkgKiBAY2xhc3MgMyBEaW1lbnNpb25hbCBWZWN0b3IK
KwkgKiBAbmFtZSB2ZWMzCisJICovCisJdmFyIHZlYzMgPSB7fTsKKworCS8qKgorCSAqIENyZWF0
ZXMgYSBuZXcsIGVtcHR5IHZlYzMKKwkgKgorCSAqIEByZXR1cm5zIHt2ZWMzfSBhIG5ldyAzRCB2
ZWN0b3IKKwkgKi8KKwl2ZWMzLmNyZWF0ZSA9IGZ1bmN0aW9uKCkgeworCSAgICB2YXIgb3V0ID0g
bmV3IGdsTWF0cml4LkFSUkFZX1RZUEUoMyk7CisJICAgIG91dFswXSA9IDA7CisJICAgIG91dFsx
XSA9IDA7CisJICAgIG91dFsyXSA9IDA7CisJICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgor
CSAqIENyZWF0ZXMgYSBuZXcgdmVjMyBpbml0aWFsaXplZCB3aXRoIHZhbHVlcyBmcm9tIGFuIGV4
aXN0aW5nIHZlY3RvcgorCSAqCisJICogQHBhcmFtIHt2ZWMzfSBhIHZlY3RvciB0byBjbG9uZQor
CSAqIEByZXR1cm5zIHt2ZWMzfSBhIG5ldyAzRCB2ZWN0b3IKKwkgKi8KKwl2ZWMzLmNsb25lID0g
ZnVuY3Rpb24oYSkgeworCSAgICB2YXIgb3V0ID0gbmV3IGdsTWF0cml4LkFSUkFZX1RZUEUoMyk7
CisJICAgIG91dFswXSA9IGFbMF07CisJICAgIG91dFsxXSA9IGFbMV07CisJICAgIG91dFsyXSA9
IGFbMl07CisJICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIENyZWF0ZXMgYSBuZXcg
dmVjMyBpbml0aWFsaXplZCB3aXRoIHRoZSBnaXZlbiB2YWx1ZXMKKwkgKgorCSAqIEBwYXJhbSB7
TnVtYmVyfSB4IFggY29tcG9uZW50CisJICogQHBhcmFtIHtOdW1iZXJ9IHkgWSBjb21wb25lbnQK
KwkgKiBAcGFyYW0ge051bWJlcn0geiBaIGNvbXBvbmVudAorCSAqIEByZXR1cm5zIHt2ZWMzfSBh
IG5ldyAzRCB2ZWN0b3IKKwkgKi8KKwl2ZWMzLmZyb21WYWx1ZXMgPSBmdW5jdGlvbih4LCB5LCB6
KSB7CisJICAgIHZhciBvdXQgPSBuZXcgZ2xNYXRyaXguQVJSQVlfVFlQRSgzKTsKKwkgICAgb3V0
WzBdID0geDsKKwkgICAgb3V0WzFdID0geTsKKwkgICAgb3V0WzJdID0gejsKKwkgICAgcmV0dXJu
IG91dDsKKwl9OworCisJLyoqCisJICogQ29weSB0aGUgdmFsdWVzIGZyb20gb25lIHZlYzMgdG8g
YW5vdGhlcgorCSAqCisJICogQHBhcmFtIHt2ZWMzfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3IK
KwkgKiBAcGFyYW0ge3ZlYzN9IGEgdGhlIHNvdXJjZSB2ZWN0b3IKKwkgKiBAcmV0dXJucyB7dmVj
M30gb3V0CisJICovCisJdmVjMy5jb3B5ID0gZnVuY3Rpb24ob3V0LCBhKSB7CisJICAgIG91dFsw
XSA9IGFbMF07CisJICAgIG91dFsxXSA9IGFbMV07CisJICAgIG91dFsyXSA9IGFbMl07CisJICAg
IHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIFNldCB0aGUgY29tcG9uZW50cyBvZiBhIHZl
YzMgdG8gdGhlIGdpdmVuIHZhbHVlcworCSAqCisJICogQHBhcmFtIHt2ZWMzfSBvdXQgdGhlIHJl
Y2VpdmluZyB2ZWN0b3IKKwkgKiBAcGFyYW0ge051bWJlcn0geCBYIGNvbXBvbmVudAorCSAqIEBw
YXJhbSB7TnVtYmVyfSB5IFkgY29tcG9uZW50CisJICogQHBhcmFtIHtOdW1iZXJ9IHogWiBjb21w
b25lbnQKKwkgKiBAcmV0dXJucyB7dmVjM30gb3V0CisJICovCisJdmVjMy5zZXQgPSBmdW5jdGlv
bihvdXQsIHgsIHksIHopIHsKKwkgICAgb3V0WzBdID0geDsKKwkgICAgb3V0WzFdID0geTsKKwkg
ICAgb3V0WzJdID0gejsKKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogQWRkcyB0
d28gdmVjMydzCisJICoKKwkgKiBAcGFyYW0ge3ZlYzN9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3Rv
cgorCSAqIEBwYXJhbSB7dmVjM30gYSB0aGUgZmlyc3Qgb3BlcmFuZAorCSAqIEBwYXJhbSB7dmVj
M30gYiB0aGUgc2Vjb25kIG9wZXJhbmQKKwkgKiBAcmV0dXJucyB7dmVjM30gb3V0CisJICovCisJ
dmVjMy5hZGQgPSBmdW5jdGlvbihvdXQsIGEsIGIpIHsKKwkgICAgb3V0WzBdID0gYVswXSArIGJb
MF07CisJICAgIG91dFsxXSA9IGFbMV0gKyBiWzFdOworCSAgICBvdXRbMl0gPSBhWzJdICsgYlsy
XTsKKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogU3VidHJhY3RzIHZlY3RvciBi
IGZyb20gdmVjdG9yIGEKKwkgKgorCSAqIEBwYXJhbSB7dmVjM30gb3V0IHRoZSByZWNlaXZpbmcg
dmVjdG9yCisJICogQHBhcmFtIHt2ZWMzfSBhIHRoZSBmaXJzdCBvcGVyYW5kCisJICogQHBhcmFt
IHt2ZWMzfSBiIHRoZSBzZWNvbmQgb3BlcmFuZAorCSAqIEByZXR1cm5zIHt2ZWMzfSBvdXQKKwkg
Ki8KKwl2ZWMzLnN1YnRyYWN0ID0gZnVuY3Rpb24ob3V0LCBhLCBiKSB7CisJICAgIG91dFswXSA9
IGFbMF0gLSBiWzBdOworCSAgICBvdXRbMV0gPSBhWzFdIC0gYlsxXTsKKwkgICAgb3V0WzJdID0g
YVsyXSAtIGJbMl07CisJICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIEFsaWFzIGZv
ciB7QGxpbmsgdmVjMy5zdWJ0cmFjdH0KKwkgKiBAZnVuY3Rpb24KKwkgKi8KKwl2ZWMzLnN1YiA9
IHZlYzMuc3VidHJhY3Q7CisKKwkvKioKKwkgKiBNdWx0aXBsaWVzIHR3byB2ZWMzJ3MKKwkgKgor
CSAqIEBwYXJhbSB7dmVjM30gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yCisJICogQHBhcmFtIHt2
ZWMzfSBhIHRoZSBmaXJzdCBvcGVyYW5kCisJICogQHBhcmFtIHt2ZWMzfSBiIHRoZSBzZWNvbmQg
b3BlcmFuZAorCSAqIEByZXR1cm5zIHt2ZWMzfSBvdXQKKwkgKi8KKwl2ZWMzLm11bHRpcGx5ID0g
ZnVuY3Rpb24ob3V0LCBhLCBiKSB7CisJICAgIG91dFswXSA9IGFbMF0gKiBiWzBdOworCSAgICBv
dXRbMV0gPSBhWzFdICogYlsxXTsKKwkgICAgb3V0WzJdID0gYVsyXSAqIGJbMl07CisJICAgIHJl
dHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIEFsaWFzIGZvciB7QGxpbmsgdmVjMy5tdWx0aXBs
eX0KKwkgKiBAZnVuY3Rpb24KKwkgKi8KKwl2ZWMzLm11bCA9IHZlYzMubXVsdGlwbHk7CisKKwkv
KioKKwkgKiBEaXZpZGVzIHR3byB2ZWMzJ3MKKwkgKgorCSAqIEBwYXJhbSB7dmVjM30gb3V0IHRo
ZSByZWNlaXZpbmcgdmVjdG9yCisJICogQHBhcmFtIHt2ZWMzfSBhIHRoZSBmaXJzdCBvcGVyYW5k
CisJICogQHBhcmFtIHt2ZWMzfSBiIHRoZSBzZWNvbmQgb3BlcmFuZAorCSAqIEByZXR1cm5zIHt2
ZWMzfSBvdXQKKwkgKi8KKwl2ZWMzLmRpdmlkZSA9IGZ1bmN0aW9uKG91dCwgYSwgYikgeworCSAg
ICBvdXRbMF0gPSBhWzBdIC8gYlswXTsKKwkgICAgb3V0WzFdID0gYVsxXSAvIGJbMV07CisJICAg
IG91dFsyXSA9IGFbMl0gLyBiWzJdOworCSAgICByZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkg
KiBBbGlhcyBmb3Ige0BsaW5rIHZlYzMuZGl2aWRlfQorCSAqIEBmdW5jdGlvbgorCSAqLworCXZl
YzMuZGl2ID0gdmVjMy5kaXZpZGU7CisKKwkvKioKKwkgKiBNYXRoLmNlaWwgdGhlIGNvbXBvbmVu
dHMgb2YgYSB2ZWMzCisJICoKKwkgKiBAcGFyYW0ge3ZlYzN9IG91dCB0aGUgcmVjZWl2aW5nIHZl
Y3RvcgorCSAqIEBwYXJhbSB7dmVjM30gYSB2ZWN0b3IgdG8gY2VpbAorCSAqIEByZXR1cm5zIHt2
ZWMzfSBvdXQKKwkgKi8KKwl2ZWMzLmNlaWwgPSBmdW5jdGlvbiAob3V0LCBhKSB7CisJICAgIG91
dFswXSA9IE1hdGguY2VpbChhWzBdKTsKKwkgICAgb3V0WzFdID0gTWF0aC5jZWlsKGFbMV0pOwor
CSAgICBvdXRbMl0gPSBNYXRoLmNlaWwoYVsyXSk7CisJICAgIHJldHVybiBvdXQ7CisJfTsKKwor
CS8qKgorCSAqIE1hdGguZmxvb3IgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWMzCisJICoKKwkgKiBA
cGFyYW0ge3ZlYzN9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvcgorCSAqIEBwYXJhbSB7dmVjM30g
YSB2ZWN0b3IgdG8gZmxvb3IKKwkgKiBAcmV0dXJucyB7dmVjM30gb3V0CisJICovCisJdmVjMy5m
bG9vciA9IGZ1bmN0aW9uIChvdXQsIGEpIHsKKwkgICAgb3V0WzBdID0gTWF0aC5mbG9vcihhWzBd
KTsKKwkgICAgb3V0WzFdID0gTWF0aC5mbG9vcihhWzFdKTsKKwkgICAgb3V0WzJdID0gTWF0aC5m
bG9vcihhWzJdKTsKKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogUmV0dXJucyB0
aGUgbWluaW11bSBvZiB0d28gdmVjMydzCisJICoKKwkgKiBAcGFyYW0ge3ZlYzN9IG91dCB0aGUg
cmVjZWl2aW5nIHZlY3RvcgorCSAqIEBwYXJhbSB7dmVjM30gYSB0aGUgZmlyc3Qgb3BlcmFuZAor
CSAqIEBwYXJhbSB7dmVjM30gYiB0aGUgc2Vjb25kIG9wZXJhbmQKKwkgKiBAcmV0dXJucyB7dmVj
M30gb3V0CisJICovCisJdmVjMy5taW4gPSBmdW5jdGlvbihvdXQsIGEsIGIpIHsKKwkgICAgb3V0
WzBdID0gTWF0aC5taW4oYVswXSwgYlswXSk7CisJICAgIG91dFsxXSA9IE1hdGgubWluKGFbMV0s
IGJbMV0pOworCSAgICBvdXRbMl0gPSBNYXRoLm1pbihhWzJdLCBiWzJdKTsKKwkgICAgcmV0dXJu
IG91dDsKKwl9OworCisJLyoqCisJICogUmV0dXJucyB0aGUgbWF4aW11bSBvZiB0d28gdmVjMydz
CisJICoKKwkgKiBAcGFyYW0ge3ZlYzN9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvcgorCSAqIEBw
YXJhbSB7dmVjM30gYSB0aGUgZmlyc3Qgb3BlcmFuZAorCSAqIEBwYXJhbSB7dmVjM30gYiB0aGUg
c2Vjb25kIG9wZXJhbmQKKwkgKiBAcmV0dXJucyB7dmVjM30gb3V0CisJICovCisJdmVjMy5tYXgg
PSBmdW5jdGlvbihvdXQsIGEsIGIpIHsKKwkgICAgb3V0WzBdID0gTWF0aC5tYXgoYVswXSwgYlsw
XSk7CisJICAgIG91dFsxXSA9IE1hdGgubWF4KGFbMV0sIGJbMV0pOworCSAgICBvdXRbMl0gPSBN
YXRoLm1heChhWzJdLCBiWzJdKTsKKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICog
TWF0aC5yb3VuZCB0aGUgY29tcG9uZW50cyBvZiBhIHZlYzMKKwkgKgorCSAqIEBwYXJhbSB7dmVj
M30gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yCisJICogQHBhcmFtIHt2ZWMzfSBhIHZlY3RvciB0
byByb3VuZAorCSAqIEByZXR1cm5zIHt2ZWMzfSBvdXQKKwkgKi8KKwl2ZWMzLnJvdW5kID0gZnVu
Y3Rpb24gKG91dCwgYSkgeworCSAgICBvdXRbMF0gPSBNYXRoLnJvdW5kKGFbMF0pOworCSAgICBv
dXRbMV0gPSBNYXRoLnJvdW5kKGFbMV0pOworCSAgICBvdXRbMl0gPSBNYXRoLnJvdW5kKGFbMl0p
OworCSAgICByZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBTY2FsZXMgYSB2ZWMzIGJ5IGEg
c2NhbGFyIG51bWJlcgorCSAqCisJICogQHBhcmFtIHt2ZWMzfSBvdXQgdGhlIHJlY2VpdmluZyB2
ZWN0b3IKKwkgKiBAcGFyYW0ge3ZlYzN9IGEgdGhlIHZlY3RvciB0byBzY2FsZQorCSAqIEBwYXJh
bSB7TnVtYmVyfSBiIGFtb3VudCB0byBzY2FsZSB0aGUgdmVjdG9yIGJ5CisJICogQHJldHVybnMg
e3ZlYzN9IG91dAorCSAqLworCXZlYzMuc2NhbGUgPSBmdW5jdGlvbihvdXQsIGEsIGIpIHsKKwkg
ICAgb3V0WzBdID0gYVswXSAqIGI7CisJICAgIG91dFsxXSA9IGFbMV0gKiBiOworCSAgICBvdXRb
Ml0gPSBhWzJdICogYjsKKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogQWRkcyB0
d28gdmVjMydzIGFmdGVyIHNjYWxpbmcgdGhlIHNlY29uZCBvcGVyYW5kIGJ5IGEgc2NhbGFyIHZh
bHVlCisJICoKKwkgKiBAcGFyYW0ge3ZlYzN9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvcgorCSAq
IEBwYXJhbSB7dmVjM30gYSB0aGUgZmlyc3Qgb3BlcmFuZAorCSAqIEBwYXJhbSB7dmVjM30gYiB0
aGUgc2Vjb25kIG9wZXJhbmQKKwkgKiBAcGFyYW0ge051bWJlcn0gc2NhbGUgdGhlIGFtb3VudCB0
byBzY2FsZSBiIGJ5IGJlZm9yZSBhZGRpbmcKKwkgKiBAcmV0dXJucyB7dmVjM30gb3V0CisJICov
CisJdmVjMy5zY2FsZUFuZEFkZCA9IGZ1bmN0aW9uKG91dCwgYSwgYiwgc2NhbGUpIHsKKwkgICAg
b3V0WzBdID0gYVswXSArIChiWzBdICogc2NhbGUpOworCSAgICBvdXRbMV0gPSBhWzFdICsgKGJb
MV0gKiBzY2FsZSk7CisJICAgIG91dFsyXSA9IGFbMl0gKyAoYlsyXSAqIHNjYWxlKTsKKwkgICAg
cmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogQ2FsY3VsYXRlcyB0aGUgZXVjbGlkaWFuIGRp
c3RhbmNlIGJldHdlZW4gdHdvIHZlYzMncworCSAqCisJICogQHBhcmFtIHt2ZWMzfSBhIHRoZSBm
aXJzdCBvcGVyYW5kCisJICogQHBhcmFtIHt2ZWMzfSBiIHRoZSBzZWNvbmQgb3BlcmFuZAorCSAq
IEByZXR1cm5zIHtOdW1iZXJ9IGRpc3RhbmNlIGJldHdlZW4gYSBhbmQgYgorCSAqLworCXZlYzMu
ZGlzdGFuY2UgPSBmdW5jdGlvbihhLCBiKSB7CisJICAgIHZhciB4ID0gYlswXSAtIGFbMF0sCisJ
ICAgICAgICB5ID0gYlsxXSAtIGFbMV0sCisJICAgICAgICB6ID0gYlsyXSAtIGFbMl07CisJICAg
IHJldHVybiBNYXRoLnNxcnQoeCp4ICsgeSp5ICsgeip6KTsKKwl9OworCisJLyoqCisJICogQWxp
YXMgZm9yIHtAbGluayB2ZWMzLmRpc3RhbmNlfQorCSAqIEBmdW5jdGlvbgorCSAqLworCXZlYzMu
ZGlzdCA9IHZlYzMuZGlzdGFuY2U7CisKKwkvKioKKwkgKiBDYWxjdWxhdGVzIHRoZSBzcXVhcmVk
IGV1Y2xpZGlhbiBkaXN0YW5jZSBiZXR3ZWVuIHR3byB2ZWMzJ3MKKwkgKgorCSAqIEBwYXJhbSB7
dmVjM30gYSB0aGUgZmlyc3Qgb3BlcmFuZAorCSAqIEBwYXJhbSB7dmVjM30gYiB0aGUgc2Vjb25k
IG9wZXJhbmQKKwkgKiBAcmV0dXJucyB7TnVtYmVyfSBzcXVhcmVkIGRpc3RhbmNlIGJldHdlZW4g
YSBhbmQgYgorCSAqLworCXZlYzMuc3F1YXJlZERpc3RhbmNlID0gZnVuY3Rpb24oYSwgYikgewor
CSAgICB2YXIgeCA9IGJbMF0gLSBhWzBdLAorCSAgICAgICAgeSA9IGJbMV0gLSBhWzFdLAorCSAg
ICAgICAgeiA9IGJbMl0gLSBhWzJdOworCSAgICByZXR1cm4geCp4ICsgeSp5ICsgeip6OworCX07
CisKKwkvKioKKwkgKiBBbGlhcyBmb3Ige0BsaW5rIHZlYzMuc3F1YXJlZERpc3RhbmNlfQorCSAq
IEBmdW5jdGlvbgorCSAqLworCXZlYzMuc3FyRGlzdCA9IHZlYzMuc3F1YXJlZERpc3RhbmNlOwor
CisJLyoqCisJICogQ2FsY3VsYXRlcyB0aGUgbGVuZ3RoIG9mIGEgdmVjMworCSAqCisJICogQHBh
cmFtIHt2ZWMzfSBhIHZlY3RvciB0byBjYWxjdWxhdGUgbGVuZ3RoIG9mCisJICogQHJldHVybnMg
e051bWJlcn0gbGVuZ3RoIG9mIGEKKwkgKi8KKwl2ZWMzLmxlbmd0aCA9IGZ1bmN0aW9uIChhKSB7
CisJICAgIHZhciB4ID0gYVswXSwKKwkgICAgICAgIHkgPSBhWzFdLAorCSAgICAgICAgeiA9IGFb
Ml07CisJICAgIHJldHVybiBNYXRoLnNxcnQoeCp4ICsgeSp5ICsgeip6KTsKKwl9OworCisJLyoq
CisJICogQWxpYXMgZm9yIHtAbGluayB2ZWMzLmxlbmd0aH0KKwkgKiBAZnVuY3Rpb24KKwkgKi8K
Kwl2ZWMzLmxlbiA9IHZlYzMubGVuZ3RoOworCisJLyoqCisJICogQ2FsY3VsYXRlcyB0aGUgc3F1
YXJlZCBsZW5ndGggb2YgYSB2ZWMzCisJICoKKwkgKiBAcGFyYW0ge3ZlYzN9IGEgdmVjdG9yIHRv
IGNhbGN1bGF0ZSBzcXVhcmVkIGxlbmd0aCBvZgorCSAqIEByZXR1cm5zIHtOdW1iZXJ9IHNxdWFy
ZWQgbGVuZ3RoIG9mIGEKKwkgKi8KKwl2ZWMzLnNxdWFyZWRMZW5ndGggPSBmdW5jdGlvbiAoYSkg
eworCSAgICB2YXIgeCA9IGFbMF0sCisJICAgICAgICB5ID0gYVsxXSwKKwkgICAgICAgIHogPSBh
WzJdOworCSAgICByZXR1cm4geCp4ICsgeSp5ICsgeip6OworCX07CisKKwkvKioKKwkgKiBBbGlh
cyBmb3Ige0BsaW5rIHZlYzMuc3F1YXJlZExlbmd0aH0KKwkgKiBAZnVuY3Rpb24KKwkgKi8KKwl2
ZWMzLnNxckxlbiA9IHZlYzMuc3F1YXJlZExlbmd0aDsKKworCS8qKgorCSAqIE5lZ2F0ZXMgdGhl
IGNvbXBvbmVudHMgb2YgYSB2ZWMzCisJICoKKwkgKiBAcGFyYW0ge3ZlYzN9IG91dCB0aGUgcmVj
ZWl2aW5nIHZlY3RvcgorCSAqIEBwYXJhbSB7dmVjM30gYSB2ZWN0b3IgdG8gbmVnYXRlCisJICog
QHJldHVybnMge3ZlYzN9IG91dAorCSAqLworCXZlYzMubmVnYXRlID0gZnVuY3Rpb24ob3V0LCBh
KSB7CisJICAgIG91dFswXSA9IC1hWzBdOworCSAgICBvdXRbMV0gPSAtYVsxXTsKKwkgICAgb3V0
WzJdID0gLWFbMl07CisJICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIFJldHVybnMg
dGhlIGludmVyc2Ugb2YgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWMzCisJICoKKwkgKiBAcGFyYW0g
e3ZlYzN9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvcgorCSAqIEBwYXJhbSB7dmVjM30gYSB2ZWN0
b3IgdG8gaW52ZXJ0CisJICogQHJldHVybnMge3ZlYzN9IG91dAorCSAqLworCXZlYzMuaW52ZXJz
ZSA9IGZ1bmN0aW9uKG91dCwgYSkgeworCSAgb3V0WzBdID0gMS4wIC8gYVswXTsKKwkgIG91dFsx
XSA9IDEuMCAvIGFbMV07CisJICBvdXRbMl0gPSAxLjAgLyBhWzJdOworCSAgcmV0dXJuIG91dDsK
Kwl9OworCisJLyoqCisJICogTm9ybWFsaXplIGEgdmVjMworCSAqCisJICogQHBhcmFtIHt2ZWMz
fSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3IKKwkgKiBAcGFyYW0ge3ZlYzN9IGEgdmVjdG9yIHRv
IG5vcm1hbGl6ZQorCSAqIEByZXR1cm5zIHt2ZWMzfSBvdXQKKwkgKi8KKwl2ZWMzLm5vcm1hbGl6
ZSA9IGZ1bmN0aW9uKG91dCwgYSkgeworCSAgICB2YXIgeCA9IGFbMF0sCisJICAgICAgICB5ID0g
YVsxXSwKKwkgICAgICAgIHogPSBhWzJdOworCSAgICB2YXIgbGVuID0geCp4ICsgeSp5ICsgeip6
OworCSAgICBpZiAobGVuID4gMCkgeworCSAgICAgICAgLy9UT0RPOiBldmFsdWF0ZSB1c2Ugb2Yg
Z2xtX2ludnNxcnQgaGVyZT8KKwkgICAgICAgIGxlbiA9IDEgLyBNYXRoLnNxcnQobGVuKTsKKwkg
ICAgICAgIG91dFswXSA9IGFbMF0gKiBsZW47CisJICAgICAgICBvdXRbMV0gPSBhWzFdICogbGVu
OworCSAgICAgICAgb3V0WzJdID0gYVsyXSAqIGxlbjsKKwkgICAgfQorCSAgICByZXR1cm4gb3V0
OworCX07CisKKwkvKioKKwkgKiBDYWxjdWxhdGVzIHRoZSBkb3QgcHJvZHVjdCBvZiB0d28gdmVj
MydzCisJICoKKwkgKiBAcGFyYW0ge3ZlYzN9IGEgdGhlIGZpcnN0IG9wZXJhbmQKKwkgKiBAcGFy
YW0ge3ZlYzN9IGIgdGhlIHNlY29uZCBvcGVyYW5kCisJICogQHJldHVybnMge051bWJlcn0gZG90
IHByb2R1Y3Qgb2YgYSBhbmQgYgorCSAqLworCXZlYzMuZG90ID0gZnVuY3Rpb24gKGEsIGIpIHsK
KwkgICAgcmV0dXJuIGFbMF0gKiBiWzBdICsgYVsxXSAqIGJbMV0gKyBhWzJdICogYlsyXTsKKwl9
OworCisJLyoqCisJICogQ29tcHV0ZXMgdGhlIGNyb3NzIHByb2R1Y3Qgb2YgdHdvIHZlYzMncwor
CSAqCisJICogQHBhcmFtIHt2ZWMzfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3IKKwkgKiBAcGFy
YW0ge3ZlYzN9IGEgdGhlIGZpcnN0IG9wZXJhbmQKKwkgKiBAcGFyYW0ge3ZlYzN9IGIgdGhlIHNl
Y29uZCBvcGVyYW5kCisJICogQHJldHVybnMge3ZlYzN9IG91dAorCSAqLworCXZlYzMuY3Jvc3Mg
PSBmdW5jdGlvbihvdXQsIGEsIGIpIHsKKwkgICAgdmFyIGF4ID0gYVswXSwgYXkgPSBhWzFdLCBh
eiA9IGFbMl0sCisJICAgICAgICBieCA9IGJbMF0sIGJ5ID0gYlsxXSwgYnogPSBiWzJdOworCisJ
ICAgIG91dFswXSA9IGF5ICogYnogLSBheiAqIGJ5OworCSAgICBvdXRbMV0gPSBheiAqIGJ4IC0g
YXggKiBiejsKKwkgICAgb3V0WzJdID0gYXggKiBieSAtIGF5ICogYng7CisJICAgIHJldHVybiBv
dXQ7CisJfTsKKworCS8qKgorCSAqIFBlcmZvcm1zIGEgbGluZWFyIGludGVycG9sYXRpb24gYmV0
d2VlbiB0d28gdmVjMydzCisJICoKKwkgKiBAcGFyYW0ge3ZlYzN9IG91dCB0aGUgcmVjZWl2aW5n
IHZlY3RvcgorCSAqIEBwYXJhbSB7dmVjM30gYSB0aGUgZmlyc3Qgb3BlcmFuZAorCSAqIEBwYXJh
bSB7dmVjM30gYiB0aGUgc2Vjb25kIG9wZXJhbmQKKwkgKiBAcGFyYW0ge051bWJlcn0gdCBpbnRl
cnBvbGF0aW9uIGFtb3VudCBiZXR3ZWVuIHRoZSB0d28gaW5wdXRzCisJICogQHJldHVybnMge3Zl
YzN9IG91dAorCSAqLworCXZlYzMubGVycCA9IGZ1bmN0aW9uIChvdXQsIGEsIGIsIHQpIHsKKwkg
ICAgdmFyIGF4ID0gYVswXSwKKwkgICAgICAgIGF5ID0gYVsxXSwKKwkgICAgICAgIGF6ID0gYVsy
XTsKKwkgICAgb3V0WzBdID0gYXggKyB0ICogKGJbMF0gLSBheCk7CisJICAgIG91dFsxXSA9IGF5
ICsgdCAqIChiWzFdIC0gYXkpOworCSAgICBvdXRbMl0gPSBheiArIHQgKiAoYlsyXSAtIGF6KTsK
KwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogUGVyZm9ybXMgYSBoZXJtaXRlIGlu
dGVycG9sYXRpb24gd2l0aCB0d28gY29udHJvbCBwb2ludHMKKwkgKgorCSAqIEBwYXJhbSB7dmVj
M30gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yCisJICogQHBhcmFtIHt2ZWMzfSBhIHRoZSBmaXJz
dCBvcGVyYW5kCisJICogQHBhcmFtIHt2ZWMzfSBiIHRoZSBzZWNvbmQgb3BlcmFuZAorCSAqIEBw
YXJhbSB7dmVjM30gYyB0aGUgdGhpcmQgb3BlcmFuZAorCSAqIEBwYXJhbSB7dmVjM30gZCB0aGUg
Zm91cnRoIG9wZXJhbmQKKwkgKiBAcGFyYW0ge051bWJlcn0gdCBpbnRlcnBvbGF0aW9uIGFtb3Vu
dCBiZXR3ZWVuIHRoZSB0d28gaW5wdXRzCisJICogQHJldHVybnMge3ZlYzN9IG91dAorCSAqLwor
CXZlYzMuaGVybWl0ZSA9IGZ1bmN0aW9uIChvdXQsIGEsIGIsIGMsIGQsIHQpIHsKKwkgIHZhciBm
YWN0b3JUaW1lczIgPSB0ICogdCwKKwkgICAgICBmYWN0b3IxID0gZmFjdG9yVGltZXMyICogKDIg
KiB0IC0gMykgKyAxLAorCSAgICAgIGZhY3RvcjIgPSBmYWN0b3JUaW1lczIgKiAodCAtIDIpICsg
dCwKKwkgICAgICBmYWN0b3IzID0gZmFjdG9yVGltZXMyICogKHQgLSAxKSwKKwkgICAgICBmYWN0
b3I0ID0gZmFjdG9yVGltZXMyICogKDMgLSAyICogdCk7CisJICAKKwkgIG91dFswXSA9IGFbMF0g
KiBmYWN0b3IxICsgYlswXSAqIGZhY3RvcjIgKyBjWzBdICogZmFjdG9yMyArIGRbMF0gKiBmYWN0
b3I0OworCSAgb3V0WzFdID0gYVsxXSAqIGZhY3RvcjEgKyBiWzFdICogZmFjdG9yMiArIGNbMV0g
KiBmYWN0b3IzICsgZFsxXSAqIGZhY3RvcjQ7CisJICBvdXRbMl0gPSBhWzJdICogZmFjdG9yMSAr
IGJbMl0gKiBmYWN0b3IyICsgY1syXSAqIGZhY3RvcjMgKyBkWzJdICogZmFjdG9yNDsKKwkgIAor
CSAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogUGVyZm9ybXMgYSBiZXppZXIgaW50ZXJw
b2xhdGlvbiB3aXRoIHR3byBjb250cm9sIHBvaW50cworCSAqCisJICogQHBhcmFtIHt2ZWMzfSBv
dXQgdGhlIHJlY2VpdmluZyB2ZWN0b3IKKwkgKiBAcGFyYW0ge3ZlYzN9IGEgdGhlIGZpcnN0IG9w
ZXJhbmQKKwkgKiBAcGFyYW0ge3ZlYzN9IGIgdGhlIHNlY29uZCBvcGVyYW5kCisJICogQHBhcmFt
IHt2ZWMzfSBjIHRoZSB0aGlyZCBvcGVyYW5kCisJICogQHBhcmFtIHt2ZWMzfSBkIHRoZSBmb3Vy
dGggb3BlcmFuZAorCSAqIEBwYXJhbSB7TnVtYmVyfSB0IGludGVycG9sYXRpb24gYW1vdW50IGJl
dHdlZW4gdGhlIHR3byBpbnB1dHMKKwkgKiBAcmV0dXJucyB7dmVjM30gb3V0CisJICovCisJdmVj
My5iZXppZXIgPSBmdW5jdGlvbiAob3V0LCBhLCBiLCBjLCBkLCB0KSB7CisJICB2YXIgaW52ZXJz
ZUZhY3RvciA9IDEgLSB0LAorCSAgICAgIGludmVyc2VGYWN0b3JUaW1lc1R3byA9IGludmVyc2VG
YWN0b3IgKiBpbnZlcnNlRmFjdG9yLAorCSAgICAgIGZhY3RvclRpbWVzMiA9IHQgKiB0LAorCSAg
ICAgIGZhY3RvcjEgPSBpbnZlcnNlRmFjdG9yVGltZXNUd28gKiBpbnZlcnNlRmFjdG9yLAorCSAg
ICAgIGZhY3RvcjIgPSAzICogdCAqIGludmVyc2VGYWN0b3JUaW1lc1R3bywKKwkgICAgICBmYWN0
b3IzID0gMyAqIGZhY3RvclRpbWVzMiAqIGludmVyc2VGYWN0b3IsCisJICAgICAgZmFjdG9yNCA9
IGZhY3RvclRpbWVzMiAqIHQ7CisJICAKKwkgIG91dFswXSA9IGFbMF0gKiBmYWN0b3IxICsgYlsw
XSAqIGZhY3RvcjIgKyBjWzBdICogZmFjdG9yMyArIGRbMF0gKiBmYWN0b3I0OworCSAgb3V0WzFd
ID0gYVsxXSAqIGZhY3RvcjEgKyBiWzFdICogZmFjdG9yMiArIGNbMV0gKiBmYWN0b3IzICsgZFsx
XSAqIGZhY3RvcjQ7CisJICBvdXRbMl0gPSBhWzJdICogZmFjdG9yMSArIGJbMl0gKiBmYWN0b3Iy
ICsgY1syXSAqIGZhY3RvcjMgKyBkWzJdICogZmFjdG9yNDsKKwkgIAorCSAgcmV0dXJuIG91dDsK
Kwl9OworCisJLyoqCisJICogR2VuZXJhdGVzIGEgcmFuZG9tIHZlY3RvciB3aXRoIHRoZSBnaXZl
biBzY2FsZQorCSAqCisJICogQHBhcmFtIHt2ZWMzfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3IK
KwkgKiBAcGFyYW0ge051bWJlcn0gW3NjYWxlXSBMZW5ndGggb2YgdGhlIHJlc3VsdGluZyB2ZWN0
b3IuIElmIG9tbWl0dGVkLCBhIHVuaXQgdmVjdG9yIHdpbGwgYmUgcmV0dXJuZWQKKwkgKiBAcmV0
dXJucyB7dmVjM30gb3V0CisJICovCisJdmVjMy5yYW5kb20gPSBmdW5jdGlvbiAob3V0LCBzY2Fs
ZSkgeworCSAgICBzY2FsZSA9IHNjYWxlIHx8IDEuMDsKKworCSAgICB2YXIgciA9IGdsTWF0cml4
LlJBTkRPTSgpICogMi4wICogTWF0aC5QSTsKKwkgICAgdmFyIHogPSAoZ2xNYXRyaXguUkFORE9N
KCkgKiAyLjApIC0gMS4wOworCSAgICB2YXIgelNjYWxlID0gTWF0aC5zcXJ0KDEuMC16KnopICog
c2NhbGU7CisKKwkgICAgb3V0WzBdID0gTWF0aC5jb3MocikgKiB6U2NhbGU7CisJICAgIG91dFsx
XSA9IE1hdGguc2luKHIpICogelNjYWxlOworCSAgICBvdXRbMl0gPSB6ICogc2NhbGU7CisJICAg
IHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIFRyYW5zZm9ybXMgdGhlIHZlYzMgd2l0aCBh
IG1hdDQuCisJICogNHRoIHZlY3RvciBjb21wb25lbnQgaXMgaW1wbGljaXRseSAnMScKKwkgKgor
CSAqIEBwYXJhbSB7dmVjM30gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yCisJICogQHBhcmFtIHt2
ZWMzfSBhIHRoZSB2ZWN0b3IgdG8gdHJhbnNmb3JtCisJICogQHBhcmFtIHttYXQ0fSBtIG1hdHJp
eCB0byB0cmFuc2Zvcm0gd2l0aAorCSAqIEByZXR1cm5zIHt2ZWMzfSBvdXQKKwkgKi8KKwl2ZWMz
LnRyYW5zZm9ybU1hdDQgPSBmdW5jdGlvbihvdXQsIGEsIG0pIHsKKwkgICAgdmFyIHggPSBhWzBd
LCB5ID0gYVsxXSwgeiA9IGFbMl0sCisJICAgICAgICB3ID0gbVszXSAqIHggKyBtWzddICogeSAr
IG1bMTFdICogeiArIG1bMTVdOworCSAgICB3ID0gdyB8fCAxLjA7CisJICAgIG91dFswXSA9ICht
WzBdICogeCArIG1bNF0gKiB5ICsgbVs4XSAqIHogKyBtWzEyXSkgLyB3OworCSAgICBvdXRbMV0g
PSAobVsxXSAqIHggKyBtWzVdICogeSArIG1bOV0gKiB6ICsgbVsxM10pIC8gdzsKKwkgICAgb3V0
WzJdID0gKG1bMl0gKiB4ICsgbVs2XSAqIHkgKyBtWzEwXSAqIHogKyBtWzE0XSkgLyB3OworCSAg
ICByZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBUcmFuc2Zvcm1zIHRoZSB2ZWMzIHdpdGgg
YSBtYXQzLgorCSAqCisJICogQHBhcmFtIHt2ZWMzfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3IK
KwkgKiBAcGFyYW0ge3ZlYzN9IGEgdGhlIHZlY3RvciB0byB0cmFuc2Zvcm0KKwkgKiBAcGFyYW0g
e21hdDR9IG0gdGhlIDN4MyBtYXRyaXggdG8gdHJhbnNmb3JtIHdpdGgKKwkgKiBAcmV0dXJucyB7
dmVjM30gb3V0CisJICovCisJdmVjMy50cmFuc2Zvcm1NYXQzID0gZnVuY3Rpb24ob3V0LCBhLCBt
KSB7CisJICAgIHZhciB4ID0gYVswXSwgeSA9IGFbMV0sIHogPSBhWzJdOworCSAgICBvdXRbMF0g
PSB4ICogbVswXSArIHkgKiBtWzNdICsgeiAqIG1bNl07CisJICAgIG91dFsxXSA9IHggKiBtWzFd
ICsgeSAqIG1bNF0gKyB6ICogbVs3XTsKKwkgICAgb3V0WzJdID0geCAqIG1bMl0gKyB5ICogbVs1
XSArIHogKiBtWzhdOworCSAgICByZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBUcmFuc2Zv
cm1zIHRoZSB2ZWMzIHdpdGggYSBxdWF0CisJICoKKwkgKiBAcGFyYW0ge3ZlYzN9IG91dCB0aGUg
cmVjZWl2aW5nIHZlY3RvcgorCSAqIEBwYXJhbSB7dmVjM30gYSB0aGUgdmVjdG9yIHRvIHRyYW5z
Zm9ybQorCSAqIEBwYXJhbSB7cXVhdH0gcSBxdWF0ZXJuaW9uIHRvIHRyYW5zZm9ybSB3aXRoCisJ
ICogQHJldHVybnMge3ZlYzN9IG91dAorCSAqLworCXZlYzMudHJhbnNmb3JtUXVhdCA9IGZ1bmN0
aW9uKG91dCwgYSwgcSkgeworCSAgICAvLyBiZW5jaG1hcmtzOiBodHRwOi8vanNwZXJmLmNvbS9x
dWF0ZXJuaW9uLXRyYW5zZm9ybS12ZWMzLWltcGxlbWVudGF0aW9ucworCisJICAgIHZhciB4ID0g
YVswXSwgeSA9IGFbMV0sIHogPSBhWzJdLAorCSAgICAgICAgcXggPSBxWzBdLCBxeSA9IHFbMV0s
IHF6ID0gcVsyXSwgcXcgPSBxWzNdLAorCisJICAgICAgICAvLyBjYWxjdWxhdGUgcXVhdCAqIHZl
YworCSAgICAgICAgaXggPSBxdyAqIHggKyBxeSAqIHogLSBxeiAqIHksCisJICAgICAgICBpeSA9
IHF3ICogeSArIHF6ICogeCAtIHF4ICogeiwKKwkgICAgICAgIGl6ID0gcXcgKiB6ICsgcXggKiB5
IC0gcXkgKiB4LAorCSAgICAgICAgaXcgPSAtcXggKiB4IC0gcXkgKiB5IC0gcXogKiB6OworCisJ
ICAgIC8vIGNhbGN1bGF0ZSByZXN1bHQgKiBpbnZlcnNlIHF1YXQKKwkgICAgb3V0WzBdID0gaXgg
KiBxdyArIGl3ICogLXF4ICsgaXkgKiAtcXogLSBpeiAqIC1xeTsKKwkgICAgb3V0WzFdID0gaXkg
KiBxdyArIGl3ICogLXF5ICsgaXogKiAtcXggLSBpeCAqIC1xejsKKwkgICAgb3V0WzJdID0gaXog
KiBxdyArIGl3ICogLXF6ICsgaXggKiAtcXkgLSBpeSAqIC1xeDsKKwkgICAgcmV0dXJuIG91dDsK
Kwl9OworCisJLyoqCisJICogUm90YXRlIGEgM0QgdmVjdG9yIGFyb3VuZCB0aGUgeC1heGlzCisJ
ICogQHBhcmFtIHt2ZWMzfSBvdXQgVGhlIHJlY2VpdmluZyB2ZWMzCisJICogQHBhcmFtIHt2ZWMz
fSBhIFRoZSB2ZWMzIHBvaW50IHRvIHJvdGF0ZQorCSAqIEBwYXJhbSB7dmVjM30gYiBUaGUgb3Jp
Z2luIG9mIHRoZSByb3RhdGlvbgorCSAqIEBwYXJhbSB7TnVtYmVyfSBjIFRoZSBhbmdsZSBvZiBy
b3RhdGlvbgorCSAqIEByZXR1cm5zIHt2ZWMzfSBvdXQKKwkgKi8KKwl2ZWMzLnJvdGF0ZVggPSBm
dW5jdGlvbihvdXQsIGEsIGIsIGMpeworCSAgIHZhciBwID0gW10sIHI9W107CisJCSAgLy9UcmFu
c2xhdGUgcG9pbnQgdG8gdGhlIG9yaWdpbgorCQkgIHBbMF0gPSBhWzBdIC0gYlswXTsKKwkJICBw
WzFdID0gYVsxXSAtIGJbMV07CisJICAJcFsyXSA9IGFbMl0gLSBiWzJdOworCisJCSAgLy9wZXJm
b3JtIHJvdGF0aW9uCisJCSAgclswXSA9IHBbMF07CisJCSAgclsxXSA9IHBbMV0qTWF0aC5jb3Mo
YykgLSBwWzJdKk1hdGguc2luKGMpOworCQkgIHJbMl0gPSBwWzFdKk1hdGguc2luKGMpICsgcFsy
XSpNYXRoLmNvcyhjKTsKKworCQkgIC8vdHJhbnNsYXRlIHRvIGNvcnJlY3QgcG9zaXRpb24KKwkJ
ICBvdXRbMF0gPSByWzBdICsgYlswXTsKKwkJICBvdXRbMV0gPSByWzFdICsgYlsxXTsKKwkJICBv
dXRbMl0gPSByWzJdICsgYlsyXTsKKworCSAgCXJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAq
IFJvdGF0ZSBhIDNEIHZlY3RvciBhcm91bmQgdGhlIHktYXhpcworCSAqIEBwYXJhbSB7dmVjM30g
b3V0IFRoZSByZWNlaXZpbmcgdmVjMworCSAqIEBwYXJhbSB7dmVjM30gYSBUaGUgdmVjMyBwb2lu
dCB0byByb3RhdGUKKwkgKiBAcGFyYW0ge3ZlYzN9IGIgVGhlIG9yaWdpbiBvZiB0aGUgcm90YXRp
b24KKwkgKiBAcGFyYW0ge051bWJlcn0gYyBUaGUgYW5nbGUgb2Ygcm90YXRpb24KKwkgKiBAcmV0
dXJucyB7dmVjM30gb3V0CisJICovCisJdmVjMy5yb3RhdGVZID0gZnVuY3Rpb24ob3V0LCBhLCBi
LCBjKXsKKwkgIAl2YXIgcCA9IFtdLCByPVtdOworCSAgCS8vVHJhbnNsYXRlIHBvaW50IHRvIHRo
ZSBvcmlnaW4KKwkgIAlwWzBdID0gYVswXSAtIGJbMF07CisJICAJcFsxXSA9IGFbMV0gLSBiWzFd
OworCSAgCXBbMl0gPSBhWzJdIC0gYlsyXTsKKwkgIAorCSAgCS8vcGVyZm9ybSByb3RhdGlvbgor
CSAgCXJbMF0gPSBwWzJdKk1hdGguc2luKGMpICsgcFswXSpNYXRoLmNvcyhjKTsKKwkgIAlyWzFd
ID0gcFsxXTsKKwkgIAlyWzJdID0gcFsyXSpNYXRoLmNvcyhjKSAtIHBbMF0qTWF0aC5zaW4oYyk7
CisJICAKKwkgIAkvL3RyYW5zbGF0ZSB0byBjb3JyZWN0IHBvc2l0aW9uCisJICAJb3V0WzBdID0g
clswXSArIGJbMF07CisJICAJb3V0WzFdID0gclsxXSArIGJbMV07CisJICAJb3V0WzJdID0gclsy
XSArIGJbMl07CisJICAKKwkgIAlyZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBSb3RhdGUg
YSAzRCB2ZWN0b3IgYXJvdW5kIHRoZSB6LWF4aXMKKwkgKiBAcGFyYW0ge3ZlYzN9IG91dCBUaGUg
cmVjZWl2aW5nIHZlYzMKKwkgKiBAcGFyYW0ge3ZlYzN9IGEgVGhlIHZlYzMgcG9pbnQgdG8gcm90
YXRlCisJICogQHBhcmFtIHt2ZWMzfSBiIFRoZSBvcmlnaW4gb2YgdGhlIHJvdGF0aW9uCisJICog
QHBhcmFtIHtOdW1iZXJ9IGMgVGhlIGFuZ2xlIG9mIHJvdGF0aW9uCisJICogQHJldHVybnMge3Zl
YzN9IG91dAorCSAqLworCXZlYzMucm90YXRlWiA9IGZ1bmN0aW9uKG91dCwgYSwgYiwgYyl7CisJ
ICAJdmFyIHAgPSBbXSwgcj1bXTsKKwkgIAkvL1RyYW5zbGF0ZSBwb2ludCB0byB0aGUgb3JpZ2lu
CisJICAJcFswXSA9IGFbMF0gLSBiWzBdOworCSAgCXBbMV0gPSBhWzFdIC0gYlsxXTsKKwkgIAlw
WzJdID0gYVsyXSAtIGJbMl07CisJICAKKwkgIAkvL3BlcmZvcm0gcm90YXRpb24KKwkgIAlyWzBd
ID0gcFswXSpNYXRoLmNvcyhjKSAtIHBbMV0qTWF0aC5zaW4oYyk7CisJICAJclsxXSA9IHBbMF0q
TWF0aC5zaW4oYykgKyBwWzFdKk1hdGguY29zKGMpOworCSAgCXJbMl0gPSBwWzJdOworCSAgCisJ
ICAJLy90cmFuc2xhdGUgdG8gY29ycmVjdCBwb3NpdGlvbgorCSAgCW91dFswXSA9IHJbMF0gKyBi
WzBdOworCSAgCW91dFsxXSA9IHJbMV0gKyBiWzFdOworCSAgCW91dFsyXSA9IHJbMl0gKyBiWzJd
OworCSAgCisJICAJcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogUGVyZm9ybSBzb21lIG9w
ZXJhdGlvbiBvdmVyIGFuIGFycmF5IG9mIHZlYzNzLgorCSAqCisJICogQHBhcmFtIHtBcnJheX0g
YSB0aGUgYXJyYXkgb2YgdmVjdG9ycyB0byBpdGVyYXRlIG92ZXIKKwkgKiBAcGFyYW0ge051bWJl
cn0gc3RyaWRlIE51bWJlciBvZiBlbGVtZW50cyBiZXR3ZWVuIHRoZSBzdGFydCBvZiBlYWNoIHZl
YzMuIElmIDAgYXNzdW1lcyB0aWdodGx5IHBhY2tlZAorCSAqIEBwYXJhbSB7TnVtYmVyfSBvZmZz
ZXQgTnVtYmVyIG9mIGVsZW1lbnRzIHRvIHNraXAgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYXJy
YXkKKwkgKiBAcGFyYW0ge051bWJlcn0gY291bnQgTnVtYmVyIG9mIHZlYzNzIHRvIGl0ZXJhdGUg
b3Zlci4gSWYgMCBpdGVyYXRlcyBvdmVyIGVudGlyZSBhcnJheQorCSAqIEBwYXJhbSB7RnVuY3Rp
b259IGZuIEZ1bmN0aW9uIHRvIGNhbGwgZm9yIGVhY2ggdmVjdG9yIGluIHRoZSBhcnJheQorCSAq
IEBwYXJhbSB7T2JqZWN0fSBbYXJnXSBhZGRpdGlvbmFsIGFyZ3VtZW50IHRvIHBhc3MgdG8gZm4K
KwkgKiBAcmV0dXJucyB7QXJyYXl9IGEKKwkgKiBAZnVuY3Rpb24KKwkgKi8KKwl2ZWMzLmZvckVh
Y2ggPSAoZnVuY3Rpb24oKSB7CisJICAgIHZhciB2ZWMgPSB2ZWMzLmNyZWF0ZSgpOworCisJICAg
IHJldHVybiBmdW5jdGlvbihhLCBzdHJpZGUsIG9mZnNldCwgY291bnQsIGZuLCBhcmcpIHsKKwkg
ICAgICAgIHZhciBpLCBsOworCSAgICAgICAgaWYoIXN0cmlkZSkgeworCSAgICAgICAgICAgIHN0
cmlkZSA9IDM7CisJICAgICAgICB9CisKKwkgICAgICAgIGlmKCFvZmZzZXQpIHsKKwkgICAgICAg
ICAgICBvZmZzZXQgPSAwOworCSAgICAgICAgfQorCSAgICAgICAgCisJICAgICAgICBpZihjb3Vu
dCkgeworCSAgICAgICAgICAgIGwgPSBNYXRoLm1pbigoY291bnQgKiBzdHJpZGUpICsgb2Zmc2V0
LCBhLmxlbmd0aCk7CisJICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgIGwgPSBhLmxlbmd0
aDsKKwkgICAgICAgIH0KKworCSAgICAgICAgZm9yKGkgPSBvZmZzZXQ7IGkgPCBsOyBpICs9IHN0
cmlkZSkgeworCSAgICAgICAgICAgIHZlY1swXSA9IGFbaV07IHZlY1sxXSA9IGFbaSsxXTsgdmVj
WzJdID0gYVtpKzJdOworCSAgICAgICAgICAgIGZuKHZlYywgdmVjLCBhcmcpOworCSAgICAgICAg
ICAgIGFbaV0gPSB2ZWNbMF07IGFbaSsxXSA9IHZlY1sxXTsgYVtpKzJdID0gdmVjWzJdOworCSAg
ICAgICAgfQorCSAgICAgICAgCisJICAgICAgICByZXR1cm4gYTsKKwkgICAgfTsKKwl9KSgpOwor
CisJLyoqCisJICogR2V0IHRoZSBhbmdsZSBiZXR3ZWVuIHR3byAzRCB2ZWN0b3JzCisJICogQHBh
cmFtIHt2ZWMzfSBhIFRoZSBmaXJzdCBvcGVyYW5kCisJICogQHBhcmFtIHt2ZWMzfSBiIFRoZSBz
ZWNvbmQgb3BlcmFuZAorCSAqIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBhbmdsZSBpbiByYWRpYW5z
CisJICovCisJdmVjMy5hbmdsZSA9IGZ1bmN0aW9uKGEsIGIpIHsKKwkgICAKKwkgICAgdmFyIHRl
bXBBID0gdmVjMy5mcm9tVmFsdWVzKGFbMF0sIGFbMV0sIGFbMl0pOworCSAgICB2YXIgdGVtcEIg
PSB2ZWMzLmZyb21WYWx1ZXMoYlswXSwgYlsxXSwgYlsyXSk7CisJIAorCSAgICB2ZWMzLm5vcm1h
bGl6ZSh0ZW1wQSwgdGVtcEEpOworCSAgICB2ZWMzLm5vcm1hbGl6ZSh0ZW1wQiwgdGVtcEIpOwor
CSAKKwkgICAgdmFyIGNvc2luZSA9IHZlYzMuZG90KHRlbXBBLCB0ZW1wQik7CisKKwkgICAgaWYo
Y29zaW5lID4gMS4wKXsKKwkgICAgICAgIHJldHVybiAwOworCSAgICB9IGVsc2UgeworCSAgICAg
ICAgcmV0dXJuIE1hdGguYWNvcyhjb3NpbmUpOworCSAgICB9ICAgICAKKwl9OworCisJLyoqCisJ
ICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIHZlY3RvcgorCSAqCisJICog
QHBhcmFtIHt2ZWMzfSB2ZWMgdmVjdG9yIHRvIHJlcHJlc2VudCBhcyBhIHN0cmluZworCSAqIEBy
ZXR1cm5zIHtTdHJpbmd9IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgdmVjdG9yCisJICov
CisJdmVjMy5zdHIgPSBmdW5jdGlvbiAoYSkgeworCSAgICByZXR1cm4gJ3ZlYzMoJyArIGFbMF0g
KyAnLCAnICsgYVsxXSArICcsICcgKyBhWzJdICsgJyknOworCX07CisKKwkvKioKKwkgKiBSZXR1
cm5zIHdoZXRoZXIgb3Igbm90IHRoZSB2ZWN0b3JzIGhhdmUgZXhhY3RseSB0aGUgc2FtZSBlbGVt
ZW50cyBpbiB0aGUgc2FtZSBwb3NpdGlvbiAod2hlbiBjb21wYXJlZCB3aXRoID09PSkKKwkgKgor
CSAqIEBwYXJhbSB7dmVjM30gYSBUaGUgZmlyc3QgdmVjdG9yLgorCSAqIEBwYXJhbSB7dmVjM30g
YiBUaGUgc2Vjb25kIHZlY3Rvci4KKwkgKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1ZSBpZiB0aGUg
dmVjdG9ycyBhcmUgZXF1YWwsIGZhbHNlIG90aGVyd2lzZS4KKwkgKi8KKwl2ZWMzLmV4YWN0RXF1
YWxzID0gZnVuY3Rpb24gKGEsIGIpIHsKKwkgICAgcmV0dXJuIGFbMF0gPT09IGJbMF0gJiYgYVsx
XSA9PT0gYlsxXSAmJiBhWzJdID09PSBiWzJdOworCX07CisKKwkvKioKKwkgKiBSZXR1cm5zIHdo
ZXRoZXIgb3Igbm90IHRoZSB2ZWN0b3JzIGhhdmUgYXBwcm94aW1hdGVseSB0aGUgc2FtZSBlbGVt
ZW50cyBpbiB0aGUgc2FtZSBwb3NpdGlvbi4KKwkgKgorCSAqIEBwYXJhbSB7dmVjM30gYSBUaGUg
Zmlyc3QgdmVjdG9yLgorCSAqIEBwYXJhbSB7dmVjM30gYiBUaGUgc2Vjb25kIHZlY3Rvci4KKwkg
KiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1ZSBpZiB0aGUgdmVjdG9ycyBhcmUgZXF1YWwsIGZhbHNl
IG90aGVyd2lzZS4KKwkgKi8KKwl2ZWMzLmVxdWFscyA9IGZ1bmN0aW9uIChhLCBiKSB7CisJICAg
IHZhciBhMCA9IGFbMF0sIGExID0gYVsxXSwgYTIgPSBhWzJdOworCSAgICB2YXIgYjAgPSBiWzBd
LCBiMSA9IGJbMV0sIGIyID0gYlsyXTsKKwkgICAgcmV0dXJuIChNYXRoLmFicyhhMCAtIGIwKSA8
PSBnbE1hdHJpeC5FUFNJTE9OKk1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTApLCBNYXRoLmFicyhi
MCkpICYmCisJICAgICAgICAgICAgTWF0aC5hYnMoYTEgLSBiMSkgPD0gZ2xNYXRyaXguRVBTSUxP
TipNYXRoLm1heCgxLjAsIE1hdGguYWJzKGExKSwgTWF0aC5hYnMoYjEpKSAmJgorCSAgICAgICAg
ICAgIE1hdGguYWJzKGEyIC0gYjIpIDw9IGdsTWF0cml4LkVQU0lMT04qTWF0aC5tYXgoMS4wLCBN
YXRoLmFicyhhMiksIE1hdGguYWJzKGIyKSkpOworCX07CisKKwltb2R1bGUuZXhwb3J0cyA9IHZl
YzM7CisKKworLyoqKi8gfSwKKy8qIDggKi8KKy8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykgeworCisJLyogQ29weXJpZ2h0IChjKSAyMDE1LCBCcmFu
ZG9uIEpvbmVzLCBDb2xpbiBNYWNLZW56aWUgSVYuCisKKwlQZXJtaXNzaW9uIGlzIGhlcmVieSBn
cmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisJ
b2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUg
IlNvZnR3YXJlIiksIHRvIGRlYWwKKwlpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlv
biwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCisJdG8gdXNlLCBjb3B5
LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Ig
c2VsbAorCWNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3
aG9tIHRoZSBTb2Z0d2FyZSBpcworCWZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKwlUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg
dGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorCWFsbCBjb3BpZXMg
b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCisJVEhFIFNPRlRXQVJF
IElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJF
U1MgT1IKKwlJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKwlGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKwlBVVRIT1JTIE9S
IENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9U
SEVSCisJTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP
UiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKwlPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI
IFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCisJVEhFIFNPRlRX
QVJFLiAqLworCisJdmFyIGdsTWF0cml4ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTsKKworCS8q
KgorCSAqIEBjbGFzcyA0IERpbWVuc2lvbmFsIFZlY3RvcgorCSAqIEBuYW1lIHZlYzQKKwkgKi8K
Kwl2YXIgdmVjNCA9IHt9OworCisJLyoqCisJICogQ3JlYXRlcyBhIG5ldywgZW1wdHkgdmVjNAor
CSAqCisJICogQHJldHVybnMge3ZlYzR9IGEgbmV3IDREIHZlY3RvcgorCSAqLworCXZlYzQuY3Jl
YXRlID0gZnVuY3Rpb24oKSB7CisJICAgIHZhciBvdXQgPSBuZXcgZ2xNYXRyaXguQVJSQVlfVFlQ
RSg0KTsKKwkgICAgb3V0WzBdID0gMDsKKwkgICAgb3V0WzFdID0gMDsKKwkgICAgb3V0WzJdID0g
MDsKKwkgICAgb3V0WzNdID0gMDsKKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICog
Q3JlYXRlcyBhIG5ldyB2ZWM0IGluaXRpYWxpemVkIHdpdGggdmFsdWVzIGZyb20gYW4gZXhpc3Rp
bmcgdmVjdG9yCisJICoKKwkgKiBAcGFyYW0ge3ZlYzR9IGEgdmVjdG9yIHRvIGNsb25lCisJICog
QHJldHVybnMge3ZlYzR9IGEgbmV3IDREIHZlY3RvcgorCSAqLworCXZlYzQuY2xvbmUgPSBmdW5j
dGlvbihhKSB7CisJICAgIHZhciBvdXQgPSBuZXcgZ2xNYXRyaXguQVJSQVlfVFlQRSg0KTsKKwkg
ICAgb3V0WzBdID0gYVswXTsKKwkgICAgb3V0WzFdID0gYVsxXTsKKwkgICAgb3V0WzJdID0gYVsy
XTsKKwkgICAgb3V0WzNdID0gYVszXTsKKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJ
ICogQ3JlYXRlcyBhIG5ldyB2ZWM0IGluaXRpYWxpemVkIHdpdGggdGhlIGdpdmVuIHZhbHVlcwor
CSAqCisJICogQHBhcmFtIHtOdW1iZXJ9IHggWCBjb21wb25lbnQKKwkgKiBAcGFyYW0ge051bWJl
cn0geSBZIGNvbXBvbmVudAorCSAqIEBwYXJhbSB7TnVtYmVyfSB6IFogY29tcG9uZW50CisJICog
QHBhcmFtIHtOdW1iZXJ9IHcgVyBjb21wb25lbnQKKwkgKiBAcmV0dXJucyB7dmVjNH0gYSBuZXcg
NEQgdmVjdG9yCisJICovCisJdmVjNC5mcm9tVmFsdWVzID0gZnVuY3Rpb24oeCwgeSwgeiwgdykg
eworCSAgICB2YXIgb3V0ID0gbmV3IGdsTWF0cml4LkFSUkFZX1RZUEUoNCk7CisJICAgIG91dFsw
XSA9IHg7CisJICAgIG91dFsxXSA9IHk7CisJICAgIG91dFsyXSA9IHo7CisJICAgIG91dFszXSA9
IHc7CisJICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIENvcHkgdGhlIHZhbHVlcyBm
cm9tIG9uZSB2ZWM0IHRvIGFub3RoZXIKKwkgKgorCSAqIEBwYXJhbSB7dmVjNH0gb3V0IHRoZSBy
ZWNlaXZpbmcgdmVjdG9yCisJICogQHBhcmFtIHt2ZWM0fSBhIHRoZSBzb3VyY2UgdmVjdG9yCisJ
ICogQHJldHVybnMge3ZlYzR9IG91dAorCSAqLworCXZlYzQuY29weSA9IGZ1bmN0aW9uKG91dCwg
YSkgeworCSAgICBvdXRbMF0gPSBhWzBdOworCSAgICBvdXRbMV0gPSBhWzFdOworCSAgICBvdXRb
Ml0gPSBhWzJdOworCSAgICBvdXRbM10gPSBhWzNdOworCSAgICByZXR1cm4gb3V0OworCX07CisK
KwkvKioKKwkgKiBTZXQgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWM0IHRvIHRoZSBnaXZlbiB2YWx1
ZXMKKwkgKgorCSAqIEBwYXJhbSB7dmVjNH0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yCisJICog
QHBhcmFtIHtOdW1iZXJ9IHggWCBjb21wb25lbnQKKwkgKiBAcGFyYW0ge051bWJlcn0geSBZIGNv
bXBvbmVudAorCSAqIEBwYXJhbSB7TnVtYmVyfSB6IFogY29tcG9uZW50CisJICogQHBhcmFtIHtO
dW1iZXJ9IHcgVyBjb21wb25lbnQKKwkgKiBAcmV0dXJucyB7dmVjNH0gb3V0CisJICovCisJdmVj
NC5zZXQgPSBmdW5jdGlvbihvdXQsIHgsIHksIHosIHcpIHsKKwkgICAgb3V0WzBdID0geDsKKwkg
ICAgb3V0WzFdID0geTsKKwkgICAgb3V0WzJdID0gejsKKwkgICAgb3V0WzNdID0gdzsKKwkgICAg
cmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogQWRkcyB0d28gdmVjNCdzCisJICoKKwkgKiBA
cGFyYW0ge3ZlYzR9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvcgorCSAqIEBwYXJhbSB7dmVjNH0g
YSB0aGUgZmlyc3Qgb3BlcmFuZAorCSAqIEBwYXJhbSB7dmVjNH0gYiB0aGUgc2Vjb25kIG9wZXJh
bmQKKwkgKiBAcmV0dXJucyB7dmVjNH0gb3V0CisJICovCisJdmVjNC5hZGQgPSBmdW5jdGlvbihv
dXQsIGEsIGIpIHsKKwkgICAgb3V0WzBdID0gYVswXSArIGJbMF07CisJICAgIG91dFsxXSA9IGFb
MV0gKyBiWzFdOworCSAgICBvdXRbMl0gPSBhWzJdICsgYlsyXTsKKwkgICAgb3V0WzNdID0gYVsz
XSArIGJbM107CisJICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIFN1YnRyYWN0cyB2
ZWN0b3IgYiBmcm9tIHZlY3RvciBhCisJICoKKwkgKiBAcGFyYW0ge3ZlYzR9IG91dCB0aGUgcmVj
ZWl2aW5nIHZlY3RvcgorCSAqIEBwYXJhbSB7dmVjNH0gYSB0aGUgZmlyc3Qgb3BlcmFuZAorCSAq
IEBwYXJhbSB7dmVjNH0gYiB0aGUgc2Vjb25kIG9wZXJhbmQKKwkgKiBAcmV0dXJucyB7dmVjNH0g
b3V0CisJICovCisJdmVjNC5zdWJ0cmFjdCA9IGZ1bmN0aW9uKG91dCwgYSwgYikgeworCSAgICBv
dXRbMF0gPSBhWzBdIC0gYlswXTsKKwkgICAgb3V0WzFdID0gYVsxXSAtIGJbMV07CisJICAgIG91
dFsyXSA9IGFbMl0gLSBiWzJdOworCSAgICBvdXRbM10gPSBhWzNdIC0gYlszXTsKKwkgICAgcmV0
dXJuIG91dDsKKwl9OworCisJLyoqCisJICogQWxpYXMgZm9yIHtAbGluayB2ZWM0LnN1YnRyYWN0
fQorCSAqIEBmdW5jdGlvbgorCSAqLworCXZlYzQuc3ViID0gdmVjNC5zdWJ0cmFjdDsKKworCS8q
KgorCSAqIE11bHRpcGxpZXMgdHdvIHZlYzQncworCSAqCisJICogQHBhcmFtIHt2ZWM0fSBvdXQg
dGhlIHJlY2VpdmluZyB2ZWN0b3IKKwkgKiBAcGFyYW0ge3ZlYzR9IGEgdGhlIGZpcnN0IG9wZXJh
bmQKKwkgKiBAcGFyYW0ge3ZlYzR9IGIgdGhlIHNlY29uZCBvcGVyYW5kCisJICogQHJldHVybnMg
e3ZlYzR9IG91dAorCSAqLworCXZlYzQubXVsdGlwbHkgPSBmdW5jdGlvbihvdXQsIGEsIGIpIHsK
KwkgICAgb3V0WzBdID0gYVswXSAqIGJbMF07CisJICAgIG91dFsxXSA9IGFbMV0gKiBiWzFdOwor
CSAgICBvdXRbMl0gPSBhWzJdICogYlsyXTsKKwkgICAgb3V0WzNdID0gYVszXSAqIGJbM107CisJ
ICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIEFsaWFzIGZvciB7QGxpbmsgdmVjNC5t
dWx0aXBseX0KKwkgKiBAZnVuY3Rpb24KKwkgKi8KKwl2ZWM0Lm11bCA9IHZlYzQubXVsdGlwbHk7
CisKKwkvKioKKwkgKiBEaXZpZGVzIHR3byB2ZWM0J3MKKwkgKgorCSAqIEBwYXJhbSB7dmVjNH0g
b3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yCisJICogQHBhcmFtIHt2ZWM0fSBhIHRoZSBmaXJzdCBv
cGVyYW5kCisJICogQHBhcmFtIHt2ZWM0fSBiIHRoZSBzZWNvbmQgb3BlcmFuZAorCSAqIEByZXR1
cm5zIHt2ZWM0fSBvdXQKKwkgKi8KKwl2ZWM0LmRpdmlkZSA9IGZ1bmN0aW9uKG91dCwgYSwgYikg
eworCSAgICBvdXRbMF0gPSBhWzBdIC8gYlswXTsKKwkgICAgb3V0WzFdID0gYVsxXSAvIGJbMV07
CisJICAgIG91dFsyXSA9IGFbMl0gLyBiWzJdOworCSAgICBvdXRbM10gPSBhWzNdIC8gYlszXTsK
KwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogQWxpYXMgZm9yIHtAbGluayB2ZWM0
LmRpdmlkZX0KKwkgKiBAZnVuY3Rpb24KKwkgKi8KKwl2ZWM0LmRpdiA9IHZlYzQuZGl2aWRlOwor
CisJLyoqCisJICogTWF0aC5jZWlsIHRoZSBjb21wb25lbnRzIG9mIGEgdmVjNAorCSAqCisJICog
QHBhcmFtIHt2ZWM0fSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3IKKwkgKiBAcGFyYW0ge3ZlYzR9
IGEgdmVjdG9yIHRvIGNlaWwKKwkgKiBAcmV0dXJucyB7dmVjNH0gb3V0CisJICovCisJdmVjNC5j
ZWlsID0gZnVuY3Rpb24gKG91dCwgYSkgeworCSAgICBvdXRbMF0gPSBNYXRoLmNlaWwoYVswXSk7
CisJICAgIG91dFsxXSA9IE1hdGguY2VpbChhWzFdKTsKKwkgICAgb3V0WzJdID0gTWF0aC5jZWls
KGFbMl0pOworCSAgICBvdXRbM10gPSBNYXRoLmNlaWwoYVszXSk7CisJICAgIHJldHVybiBvdXQ7
CisJfTsKKworCS8qKgorCSAqIE1hdGguZmxvb3IgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWM0CisJ
ICoKKwkgKiBAcGFyYW0ge3ZlYzR9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvcgorCSAqIEBwYXJh
bSB7dmVjNH0gYSB2ZWN0b3IgdG8gZmxvb3IKKwkgKiBAcmV0dXJucyB7dmVjNH0gb3V0CisJICov
CisJdmVjNC5mbG9vciA9IGZ1bmN0aW9uIChvdXQsIGEpIHsKKwkgICAgb3V0WzBdID0gTWF0aC5m
bG9vcihhWzBdKTsKKwkgICAgb3V0WzFdID0gTWF0aC5mbG9vcihhWzFdKTsKKwkgICAgb3V0WzJd
ID0gTWF0aC5mbG9vcihhWzJdKTsKKwkgICAgb3V0WzNdID0gTWF0aC5mbG9vcihhWzNdKTsKKwkg
ICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogUmV0dXJucyB0aGUgbWluaW11bSBvZiB0
d28gdmVjNCdzCisJICoKKwkgKiBAcGFyYW0ge3ZlYzR9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3Rv
cgorCSAqIEBwYXJhbSB7dmVjNH0gYSB0aGUgZmlyc3Qgb3BlcmFuZAorCSAqIEBwYXJhbSB7dmVj
NH0gYiB0aGUgc2Vjb25kIG9wZXJhbmQKKwkgKiBAcmV0dXJucyB7dmVjNH0gb3V0CisJICovCisJ
dmVjNC5taW4gPSBmdW5jdGlvbihvdXQsIGEsIGIpIHsKKwkgICAgb3V0WzBdID0gTWF0aC5taW4o
YVswXSwgYlswXSk7CisJICAgIG91dFsxXSA9IE1hdGgubWluKGFbMV0sIGJbMV0pOworCSAgICBv
dXRbMl0gPSBNYXRoLm1pbihhWzJdLCBiWzJdKTsKKwkgICAgb3V0WzNdID0gTWF0aC5taW4oYVsz
XSwgYlszXSk7CisJICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIFJldHVybnMgdGhl
IG1heGltdW0gb2YgdHdvIHZlYzQncworCSAqCisJICogQHBhcmFtIHt2ZWM0fSBvdXQgdGhlIHJl
Y2VpdmluZyB2ZWN0b3IKKwkgKiBAcGFyYW0ge3ZlYzR9IGEgdGhlIGZpcnN0IG9wZXJhbmQKKwkg
KiBAcGFyYW0ge3ZlYzR9IGIgdGhlIHNlY29uZCBvcGVyYW5kCisJICogQHJldHVybnMge3ZlYzR9
IG91dAorCSAqLworCXZlYzQubWF4ID0gZnVuY3Rpb24ob3V0LCBhLCBiKSB7CisJICAgIG91dFsw
XSA9IE1hdGgubWF4KGFbMF0sIGJbMF0pOworCSAgICBvdXRbMV0gPSBNYXRoLm1heChhWzFdLCBi
WzFdKTsKKwkgICAgb3V0WzJdID0gTWF0aC5tYXgoYVsyXSwgYlsyXSk7CisJICAgIG91dFszXSA9
IE1hdGgubWF4KGFbM10sIGJbM10pOworCSAgICByZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkg
KiBNYXRoLnJvdW5kIHRoZSBjb21wb25lbnRzIG9mIGEgdmVjNAorCSAqCisJICogQHBhcmFtIHt2
ZWM0fSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3IKKwkgKiBAcGFyYW0ge3ZlYzR9IGEgdmVjdG9y
IHRvIHJvdW5kCisJICogQHJldHVybnMge3ZlYzR9IG91dAorCSAqLworCXZlYzQucm91bmQgPSBm
dW5jdGlvbiAob3V0LCBhKSB7CisJICAgIG91dFswXSA9IE1hdGgucm91bmQoYVswXSk7CisJICAg
IG91dFsxXSA9IE1hdGgucm91bmQoYVsxXSk7CisJICAgIG91dFsyXSA9IE1hdGgucm91bmQoYVsy
XSk7CisJICAgIG91dFszXSA9IE1hdGgucm91bmQoYVszXSk7CisJICAgIHJldHVybiBvdXQ7CisJ
fTsKKworCS8qKgorCSAqIFNjYWxlcyBhIHZlYzQgYnkgYSBzY2FsYXIgbnVtYmVyCisJICoKKwkg
KiBAcGFyYW0ge3ZlYzR9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvcgorCSAqIEBwYXJhbSB7dmVj
NH0gYSB0aGUgdmVjdG9yIHRvIHNjYWxlCisJICogQHBhcmFtIHtOdW1iZXJ9IGIgYW1vdW50IHRv
IHNjYWxlIHRoZSB2ZWN0b3IgYnkKKwkgKiBAcmV0dXJucyB7dmVjNH0gb3V0CisJICovCisJdmVj
NC5zY2FsZSA9IGZ1bmN0aW9uKG91dCwgYSwgYikgeworCSAgICBvdXRbMF0gPSBhWzBdICogYjsK
KwkgICAgb3V0WzFdID0gYVsxXSAqIGI7CisJICAgIG91dFsyXSA9IGFbMl0gKiBiOworCSAgICBv
dXRbM10gPSBhWzNdICogYjsKKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogQWRk
cyB0d28gdmVjNCdzIGFmdGVyIHNjYWxpbmcgdGhlIHNlY29uZCBvcGVyYW5kIGJ5IGEgc2NhbGFy
IHZhbHVlCisJICoKKwkgKiBAcGFyYW0ge3ZlYzR9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3Rvcgor
CSAqIEBwYXJhbSB7dmVjNH0gYSB0aGUgZmlyc3Qgb3BlcmFuZAorCSAqIEBwYXJhbSB7dmVjNH0g
YiB0aGUgc2Vjb25kIG9wZXJhbmQKKwkgKiBAcGFyYW0ge051bWJlcn0gc2NhbGUgdGhlIGFtb3Vu
dCB0byBzY2FsZSBiIGJ5IGJlZm9yZSBhZGRpbmcKKwkgKiBAcmV0dXJucyB7dmVjNH0gb3V0CisJ
ICovCisJdmVjNC5zY2FsZUFuZEFkZCA9IGZ1bmN0aW9uKG91dCwgYSwgYiwgc2NhbGUpIHsKKwkg
ICAgb3V0WzBdID0gYVswXSArIChiWzBdICogc2NhbGUpOworCSAgICBvdXRbMV0gPSBhWzFdICsg
KGJbMV0gKiBzY2FsZSk7CisJICAgIG91dFsyXSA9IGFbMl0gKyAoYlsyXSAqIHNjYWxlKTsKKwkg
ICAgb3V0WzNdID0gYVszXSArIChiWzNdICogc2NhbGUpOworCSAgICByZXR1cm4gb3V0OworCX07
CisKKwkvKioKKwkgKiBDYWxjdWxhdGVzIHRoZSBldWNsaWRpYW4gZGlzdGFuY2UgYmV0d2VlbiB0
d28gdmVjNCdzCisJICoKKwkgKiBAcGFyYW0ge3ZlYzR9IGEgdGhlIGZpcnN0IG9wZXJhbmQKKwkg
KiBAcGFyYW0ge3ZlYzR9IGIgdGhlIHNlY29uZCBvcGVyYW5kCisJICogQHJldHVybnMge051bWJl
cn0gZGlzdGFuY2UgYmV0d2VlbiBhIGFuZCBiCisJICovCisJdmVjNC5kaXN0YW5jZSA9IGZ1bmN0
aW9uKGEsIGIpIHsKKwkgICAgdmFyIHggPSBiWzBdIC0gYVswXSwKKwkgICAgICAgIHkgPSBiWzFd
IC0gYVsxXSwKKwkgICAgICAgIHogPSBiWzJdIC0gYVsyXSwKKwkgICAgICAgIHcgPSBiWzNdIC0g
YVszXTsKKwkgICAgcmV0dXJuIE1hdGguc3FydCh4KnggKyB5KnkgKyB6KnogKyB3KncpOworCX07
CisKKwkvKioKKwkgKiBBbGlhcyBmb3Ige0BsaW5rIHZlYzQuZGlzdGFuY2V9CisJICogQGZ1bmN0
aW9uCisJICovCisJdmVjNC5kaXN0ID0gdmVjNC5kaXN0YW5jZTsKKworCS8qKgorCSAqIENhbGN1
bGF0ZXMgdGhlIHNxdWFyZWQgZXVjbGlkaWFuIGRpc3RhbmNlIGJldHdlZW4gdHdvIHZlYzQncwor
CSAqCisJICogQHBhcmFtIHt2ZWM0fSBhIHRoZSBmaXJzdCBvcGVyYW5kCisJICogQHBhcmFtIHt2
ZWM0fSBiIHRoZSBzZWNvbmQgb3BlcmFuZAorCSAqIEByZXR1cm5zIHtOdW1iZXJ9IHNxdWFyZWQg
ZGlzdGFuY2UgYmV0d2VlbiBhIGFuZCBiCisJICovCisJdmVjNC5zcXVhcmVkRGlzdGFuY2UgPSBm
dW5jdGlvbihhLCBiKSB7CisJICAgIHZhciB4ID0gYlswXSAtIGFbMF0sCisJICAgICAgICB5ID0g
YlsxXSAtIGFbMV0sCisJICAgICAgICB6ID0gYlsyXSAtIGFbMl0sCisJICAgICAgICB3ID0gYlsz
XSAtIGFbM107CisJICAgIHJldHVybiB4KnggKyB5KnkgKyB6KnogKyB3Knc7CisJfTsKKworCS8q
KgorCSAqIEFsaWFzIGZvciB7QGxpbmsgdmVjNC5zcXVhcmVkRGlzdGFuY2V9CisJICogQGZ1bmN0
aW9uCisJICovCisJdmVjNC5zcXJEaXN0ID0gdmVjNC5zcXVhcmVkRGlzdGFuY2U7CisKKwkvKioK
KwkgKiBDYWxjdWxhdGVzIHRoZSBsZW5ndGggb2YgYSB2ZWM0CisJICoKKwkgKiBAcGFyYW0ge3Zl
YzR9IGEgdmVjdG9yIHRvIGNhbGN1bGF0ZSBsZW5ndGggb2YKKwkgKiBAcmV0dXJucyB7TnVtYmVy
fSBsZW5ndGggb2YgYQorCSAqLworCXZlYzQubGVuZ3RoID0gZnVuY3Rpb24gKGEpIHsKKwkgICAg
dmFyIHggPSBhWzBdLAorCSAgICAgICAgeSA9IGFbMV0sCisJICAgICAgICB6ID0gYVsyXSwKKwkg
ICAgICAgIHcgPSBhWzNdOworCSAgICByZXR1cm4gTWF0aC5zcXJ0KHgqeCArIHkqeSArIHoqeiAr
IHcqdyk7CisJfTsKKworCS8qKgorCSAqIEFsaWFzIGZvciB7QGxpbmsgdmVjNC5sZW5ndGh9CisJ
ICogQGZ1bmN0aW9uCisJICovCisJdmVjNC5sZW4gPSB2ZWM0Lmxlbmd0aDsKKworCS8qKgorCSAq
IENhbGN1bGF0ZXMgdGhlIHNxdWFyZWQgbGVuZ3RoIG9mIGEgdmVjNAorCSAqCisJICogQHBhcmFt
IHt2ZWM0fSBhIHZlY3RvciB0byBjYWxjdWxhdGUgc3F1YXJlZCBsZW5ndGggb2YKKwkgKiBAcmV0
dXJucyB7TnVtYmVyfSBzcXVhcmVkIGxlbmd0aCBvZiBhCisJICovCisJdmVjNC5zcXVhcmVkTGVu
Z3RoID0gZnVuY3Rpb24gKGEpIHsKKwkgICAgdmFyIHggPSBhWzBdLAorCSAgICAgICAgeSA9IGFb
MV0sCisJICAgICAgICB6ID0gYVsyXSwKKwkgICAgICAgIHcgPSBhWzNdOworCSAgICByZXR1cm4g
eCp4ICsgeSp5ICsgeip6ICsgdyp3OworCX07CisKKwkvKioKKwkgKiBBbGlhcyBmb3Ige0BsaW5r
IHZlYzQuc3F1YXJlZExlbmd0aH0KKwkgKiBAZnVuY3Rpb24KKwkgKi8KKwl2ZWM0LnNxckxlbiA9
IHZlYzQuc3F1YXJlZExlbmd0aDsKKworCS8qKgorCSAqIE5lZ2F0ZXMgdGhlIGNvbXBvbmVudHMg
b2YgYSB2ZWM0CisJICoKKwkgKiBAcGFyYW0ge3ZlYzR9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3Rv
cgorCSAqIEBwYXJhbSB7dmVjNH0gYSB2ZWN0b3IgdG8gbmVnYXRlCisJICogQHJldHVybnMge3Zl
YzR9IG91dAorCSAqLworCXZlYzQubmVnYXRlID0gZnVuY3Rpb24ob3V0LCBhKSB7CisJICAgIG91
dFswXSA9IC1hWzBdOworCSAgICBvdXRbMV0gPSAtYVsxXTsKKwkgICAgb3V0WzJdID0gLWFbMl07
CisJICAgIG91dFszXSA9IC1hWzNdOworCSAgICByZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkg
KiBSZXR1cm5zIHRoZSBpbnZlcnNlIG9mIHRoZSBjb21wb25lbnRzIG9mIGEgdmVjNAorCSAqCisJ
ICogQHBhcmFtIHt2ZWM0fSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3IKKwkgKiBAcGFyYW0ge3Zl
YzR9IGEgdmVjdG9yIHRvIGludmVydAorCSAqIEByZXR1cm5zIHt2ZWM0fSBvdXQKKwkgKi8KKwl2
ZWM0LmludmVyc2UgPSBmdW5jdGlvbihvdXQsIGEpIHsKKwkgIG91dFswXSA9IDEuMCAvIGFbMF07
CisJICBvdXRbMV0gPSAxLjAgLyBhWzFdOworCSAgb3V0WzJdID0gMS4wIC8gYVsyXTsKKwkgIG91
dFszXSA9IDEuMCAvIGFbM107CisJICByZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBOb3Jt
YWxpemUgYSB2ZWM0CisJICoKKwkgKiBAcGFyYW0ge3ZlYzR9IG91dCB0aGUgcmVjZWl2aW5nIHZl
Y3RvcgorCSAqIEBwYXJhbSB7dmVjNH0gYSB2ZWN0b3IgdG8gbm9ybWFsaXplCisJICogQHJldHVy
bnMge3ZlYzR9IG91dAorCSAqLworCXZlYzQubm9ybWFsaXplID0gZnVuY3Rpb24ob3V0LCBhKSB7
CisJICAgIHZhciB4ID0gYVswXSwKKwkgICAgICAgIHkgPSBhWzFdLAorCSAgICAgICAgeiA9IGFb
Ml0sCisJICAgICAgICB3ID0gYVszXTsKKwkgICAgdmFyIGxlbiA9IHgqeCArIHkqeSArIHoqeiAr
IHcqdzsKKwkgICAgaWYgKGxlbiA+IDApIHsKKwkgICAgICAgIGxlbiA9IDEgLyBNYXRoLnNxcnQo
bGVuKTsKKwkgICAgICAgIG91dFswXSA9IHggKiBsZW47CisJICAgICAgICBvdXRbMV0gPSB5ICog
bGVuOworCSAgICAgICAgb3V0WzJdID0geiAqIGxlbjsKKwkgICAgICAgIG91dFszXSA9IHcgKiBs
ZW47CisJICAgIH0KKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogQ2FsY3VsYXRl
cyB0aGUgZG90IHByb2R1Y3Qgb2YgdHdvIHZlYzQncworCSAqCisJICogQHBhcmFtIHt2ZWM0fSBh
IHRoZSBmaXJzdCBvcGVyYW5kCisJICogQHBhcmFtIHt2ZWM0fSBiIHRoZSBzZWNvbmQgb3BlcmFu
ZAorCSAqIEByZXR1cm5zIHtOdW1iZXJ9IGRvdCBwcm9kdWN0IG9mIGEgYW5kIGIKKwkgKi8KKwl2
ZWM0LmRvdCA9IGZ1bmN0aW9uIChhLCBiKSB7CisJICAgIHJldHVybiBhWzBdICogYlswXSArIGFb
MV0gKiBiWzFdICsgYVsyXSAqIGJbMl0gKyBhWzNdICogYlszXTsKKwl9OworCisJLyoqCisJICog
UGVyZm9ybXMgYSBsaW5lYXIgaW50ZXJwb2xhdGlvbiBiZXR3ZWVuIHR3byB2ZWM0J3MKKwkgKgor
CSAqIEBwYXJhbSB7dmVjNH0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yCisJICogQHBhcmFtIHt2
ZWM0fSBhIHRoZSBmaXJzdCBvcGVyYW5kCisJICogQHBhcmFtIHt2ZWM0fSBiIHRoZSBzZWNvbmQg
b3BlcmFuZAorCSAqIEBwYXJhbSB7TnVtYmVyfSB0IGludGVycG9sYXRpb24gYW1vdW50IGJldHdl
ZW4gdGhlIHR3byBpbnB1dHMKKwkgKiBAcmV0dXJucyB7dmVjNH0gb3V0CisJICovCisJdmVjNC5s
ZXJwID0gZnVuY3Rpb24gKG91dCwgYSwgYiwgdCkgeworCSAgICB2YXIgYXggPSBhWzBdLAorCSAg
ICAgICAgYXkgPSBhWzFdLAorCSAgICAgICAgYXogPSBhWzJdLAorCSAgICAgICAgYXcgPSBhWzNd
OworCSAgICBvdXRbMF0gPSBheCArIHQgKiAoYlswXSAtIGF4KTsKKwkgICAgb3V0WzFdID0gYXkg
KyB0ICogKGJbMV0gLSBheSk7CisJICAgIG91dFsyXSA9IGF6ICsgdCAqIChiWzJdIC0gYXopOwor
CSAgICBvdXRbM10gPSBhdyArIHQgKiAoYlszXSAtIGF3KTsKKwkgICAgcmV0dXJuIG91dDsKKwl9
OworCisJLyoqCisJICogR2VuZXJhdGVzIGEgcmFuZG9tIHZlY3RvciB3aXRoIHRoZSBnaXZlbiBz
Y2FsZQorCSAqCisJICogQHBhcmFtIHt2ZWM0fSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3IKKwkg
KiBAcGFyYW0ge051bWJlcn0gW3NjYWxlXSBMZW5ndGggb2YgdGhlIHJlc3VsdGluZyB2ZWN0b3Iu
IElmIG9tbWl0dGVkLCBhIHVuaXQgdmVjdG9yIHdpbGwgYmUgcmV0dXJuZWQKKwkgKiBAcmV0dXJu
cyB7dmVjNH0gb3V0CisJICovCisJdmVjNC5yYW5kb20gPSBmdW5jdGlvbiAob3V0LCBzY2FsZSkg
eworCSAgICBzY2FsZSA9IHNjYWxlIHx8IDEuMDsKKworCSAgICAvL1RPRE86IFRoaXMgaXMgYSBw
cmV0dHkgYXdmdWwgd2F5IG9mIGRvaW5nIHRoaXMuIEZpbmQgc29tZXRoaW5nIGJldHRlci4KKwkg
ICAgb3V0WzBdID0gZ2xNYXRyaXguUkFORE9NKCk7CisJICAgIG91dFsxXSA9IGdsTWF0cml4LlJB
TkRPTSgpOworCSAgICBvdXRbMl0gPSBnbE1hdHJpeC5SQU5ET00oKTsKKwkgICAgb3V0WzNdID0g
Z2xNYXRyaXguUkFORE9NKCk7CisJICAgIHZlYzQubm9ybWFsaXplKG91dCwgb3V0KTsKKwkgICAg
dmVjNC5zY2FsZShvdXQsIG91dCwgc2NhbGUpOworCSAgICByZXR1cm4gb3V0OworCX07CisKKwkv
KioKKwkgKiBUcmFuc2Zvcm1zIHRoZSB2ZWM0IHdpdGggYSBtYXQ0LgorCSAqCisJICogQHBhcmFt
IHt2ZWM0fSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3IKKwkgKiBAcGFyYW0ge3ZlYzR9IGEgdGhl
IHZlY3RvciB0byB0cmFuc2Zvcm0KKwkgKiBAcGFyYW0ge21hdDR9IG0gbWF0cml4IHRvIHRyYW5z
Zm9ybSB3aXRoCisJICogQHJldHVybnMge3ZlYzR9IG91dAorCSAqLworCXZlYzQudHJhbnNmb3Jt
TWF0NCA9IGZ1bmN0aW9uKG91dCwgYSwgbSkgeworCSAgICB2YXIgeCA9IGFbMF0sIHkgPSBhWzFd
LCB6ID0gYVsyXSwgdyA9IGFbM107CisJICAgIG91dFswXSA9IG1bMF0gKiB4ICsgbVs0XSAqIHkg
KyBtWzhdICogeiArIG1bMTJdICogdzsKKwkgICAgb3V0WzFdID0gbVsxXSAqIHggKyBtWzVdICog
eSArIG1bOV0gKiB6ICsgbVsxM10gKiB3OworCSAgICBvdXRbMl0gPSBtWzJdICogeCArIG1bNl0g
KiB5ICsgbVsxMF0gKiB6ICsgbVsxNF0gKiB3OworCSAgICBvdXRbM10gPSBtWzNdICogeCArIG1b
N10gKiB5ICsgbVsxMV0gKiB6ICsgbVsxNV0gKiB3OworCSAgICByZXR1cm4gb3V0OworCX07CisK
KwkvKioKKwkgKiBUcmFuc2Zvcm1zIHRoZSB2ZWM0IHdpdGggYSBxdWF0CisJICoKKwkgKiBAcGFy
YW0ge3ZlYzR9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvcgorCSAqIEBwYXJhbSB7dmVjNH0gYSB0
aGUgdmVjdG9yIHRvIHRyYW5zZm9ybQorCSAqIEBwYXJhbSB7cXVhdH0gcSBxdWF0ZXJuaW9uIHRv
IHRyYW5zZm9ybSB3aXRoCisJICogQHJldHVybnMge3ZlYzR9IG91dAorCSAqLworCXZlYzQudHJh
bnNmb3JtUXVhdCA9IGZ1bmN0aW9uKG91dCwgYSwgcSkgeworCSAgICB2YXIgeCA9IGFbMF0sIHkg
PSBhWzFdLCB6ID0gYVsyXSwKKwkgICAgICAgIHF4ID0gcVswXSwgcXkgPSBxWzFdLCBxeiA9IHFb
Ml0sIHF3ID0gcVszXSwKKworCSAgICAgICAgLy8gY2FsY3VsYXRlIHF1YXQgKiB2ZWMKKwkgICAg
ICAgIGl4ID0gcXcgKiB4ICsgcXkgKiB6IC0gcXogKiB5LAorCSAgICAgICAgaXkgPSBxdyAqIHkg
KyBxeiAqIHggLSBxeCAqIHosCisJICAgICAgICBpeiA9IHF3ICogeiArIHF4ICogeSAtIHF5ICog
eCwKKwkgICAgICAgIGl3ID0gLXF4ICogeCAtIHF5ICogeSAtIHF6ICogejsKKworCSAgICAvLyBj
YWxjdWxhdGUgcmVzdWx0ICogaW52ZXJzZSBxdWF0CisJICAgIG91dFswXSA9IGl4ICogcXcgKyBp
dyAqIC1xeCArIGl5ICogLXF6IC0gaXogKiAtcXk7CisJICAgIG91dFsxXSA9IGl5ICogcXcgKyBp
dyAqIC1xeSArIGl6ICogLXF4IC0gaXggKiAtcXo7CisJICAgIG91dFsyXSA9IGl6ICogcXcgKyBp
dyAqIC1xeiArIGl4ICogLXF5IC0gaXkgKiAtcXg7CisJICAgIG91dFszXSA9IGFbM107CisJICAg
IHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIFBlcmZvcm0gc29tZSBvcGVyYXRpb24gb3Zl
ciBhbiBhcnJheSBvZiB2ZWM0cy4KKwkgKgorCSAqIEBwYXJhbSB7QXJyYXl9IGEgdGhlIGFycmF5
IG9mIHZlY3RvcnMgdG8gaXRlcmF0ZSBvdmVyCisJICogQHBhcmFtIHtOdW1iZXJ9IHN0cmlkZSBO
dW1iZXIgb2YgZWxlbWVudHMgYmV0d2VlbiB0aGUgc3RhcnQgb2YgZWFjaCB2ZWM0LiBJZiAwIGFz
c3VtZXMgdGlnaHRseSBwYWNrZWQKKwkgKiBAcGFyYW0ge051bWJlcn0gb2Zmc2V0IE51bWJlciBv
ZiBlbGVtZW50cyB0byBza2lwIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFycmF5CisJICogQHBh
cmFtIHtOdW1iZXJ9IGNvdW50IE51bWJlciBvZiB2ZWM0cyB0byBpdGVyYXRlIG92ZXIuIElmIDAg
aXRlcmF0ZXMgb3ZlciBlbnRpcmUgYXJyYXkKKwkgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBGdW5j
dGlvbiB0byBjYWxsIGZvciBlYWNoIHZlY3RvciBpbiB0aGUgYXJyYXkKKwkgKiBAcGFyYW0ge09i
amVjdH0gW2FyZ10gYWRkaXRpb25hbCBhcmd1bWVudCB0byBwYXNzIHRvIGZuCisJICogQHJldHVy
bnMge0FycmF5fSBhCisJICogQGZ1bmN0aW9uCisJICovCisJdmVjNC5mb3JFYWNoID0gKGZ1bmN0
aW9uKCkgeworCSAgICB2YXIgdmVjID0gdmVjNC5jcmVhdGUoKTsKKworCSAgICByZXR1cm4gZnVu
Y3Rpb24oYSwgc3RyaWRlLCBvZmZzZXQsIGNvdW50LCBmbiwgYXJnKSB7CisJICAgICAgICB2YXIg
aSwgbDsKKwkgICAgICAgIGlmKCFzdHJpZGUpIHsKKwkgICAgICAgICAgICBzdHJpZGUgPSA0Owor
CSAgICAgICAgfQorCisJICAgICAgICBpZighb2Zmc2V0KSB7CisJICAgICAgICAgICAgb2Zmc2V0
ID0gMDsKKwkgICAgICAgIH0KKwkgICAgICAgIAorCSAgICAgICAgaWYoY291bnQpIHsKKwkgICAg
ICAgICAgICBsID0gTWF0aC5taW4oKGNvdW50ICogc3RyaWRlKSArIG9mZnNldCwgYS5sZW5ndGgp
OworCSAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICBsID0gYS5sZW5ndGg7CisJICAgICAg
ICB9CisKKwkgICAgICAgIGZvcihpID0gb2Zmc2V0OyBpIDwgbDsgaSArPSBzdHJpZGUpIHsKKwkg
ICAgICAgICAgICB2ZWNbMF0gPSBhW2ldOyB2ZWNbMV0gPSBhW2krMV07IHZlY1syXSA9IGFbaSsy
XTsgdmVjWzNdID0gYVtpKzNdOworCSAgICAgICAgICAgIGZuKHZlYywgdmVjLCBhcmcpOworCSAg
ICAgICAgICAgIGFbaV0gPSB2ZWNbMF07IGFbaSsxXSA9IHZlY1sxXTsgYVtpKzJdID0gdmVjWzJd
OyBhW2krM10gPSB2ZWNbM107CisJICAgICAgICB9CisJICAgICAgICAKKwkgICAgICAgIHJldHVy
biBhOworCSAgICB9OworCX0pKCk7CisKKwkvKioKKwkgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJl
c2VudGF0aW9uIG9mIGEgdmVjdG9yCisJICoKKwkgKiBAcGFyYW0ge3ZlYzR9IHZlYyB2ZWN0b3Ig
dG8gcmVwcmVzZW50IGFzIGEgc3RyaW5nCisJICogQHJldHVybnMge1N0cmluZ30gc3RyaW5nIHJl
cHJlc2VudGF0aW9uIG9mIHRoZSB2ZWN0b3IKKwkgKi8KKwl2ZWM0LnN0ciA9IGZ1bmN0aW9uIChh
KSB7CisJICAgIHJldHVybiAndmVjNCgnICsgYVswXSArICcsICcgKyBhWzFdICsgJywgJyArIGFb
Ml0gKyAnLCAnICsgYVszXSArICcpJzsKKwl9OworCisJLyoqCisJICogUmV0dXJucyB3aGV0aGVy
IG9yIG5vdCB0aGUgdmVjdG9ycyBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgZWxlbWVudHMgaW4gdGhl
IHNhbWUgcG9zaXRpb24gKHdoZW4gY29tcGFyZWQgd2l0aCA9PT0pCisJICoKKwkgKiBAcGFyYW0g
e3ZlYzR9IGEgVGhlIGZpcnN0IHZlY3Rvci4KKwkgKiBAcGFyYW0ge3ZlYzR9IGIgVGhlIHNlY29u
ZCB2ZWN0b3IuCisJICogQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWYgdGhlIHZlY3RvcnMgYXJl
IGVxdWFsLCBmYWxzZSBvdGhlcndpc2UuCisJICovCisJdmVjNC5leGFjdEVxdWFscyA9IGZ1bmN0
aW9uIChhLCBiKSB7CisJICAgIHJldHVybiBhWzBdID09PSBiWzBdICYmIGFbMV0gPT09IGJbMV0g
JiYgYVsyXSA9PT0gYlsyXSAmJiBhWzNdID09PSBiWzNdOworCX07CisKKwkvKioKKwkgKiBSZXR1
cm5zIHdoZXRoZXIgb3Igbm90IHRoZSB2ZWN0b3JzIGhhdmUgYXBwcm94aW1hdGVseSB0aGUgc2Ft
ZSBlbGVtZW50cyBpbiB0aGUgc2FtZSBwb3NpdGlvbi4KKwkgKgorCSAqIEBwYXJhbSB7dmVjNH0g
YSBUaGUgZmlyc3QgdmVjdG9yLgorCSAqIEBwYXJhbSB7dmVjNH0gYiBUaGUgc2Vjb25kIHZlY3Rv
ci4KKwkgKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1ZSBpZiB0aGUgdmVjdG9ycyBhcmUgZXF1YWws
IGZhbHNlIG90aGVyd2lzZS4KKwkgKi8KKwl2ZWM0LmVxdWFscyA9IGZ1bmN0aW9uIChhLCBiKSB7
CisJICAgIHZhciBhMCA9IGFbMF0sIGExID0gYVsxXSwgYTIgPSBhWzJdLCBhMyA9IGFbM107CisJ
ICAgIHZhciBiMCA9IGJbMF0sIGIxID0gYlsxXSwgYjIgPSBiWzJdLCBiMyA9IGJbM107CisJICAg
IHJldHVybiAoTWF0aC5hYnMoYTAgLSBiMCkgPD0gZ2xNYXRyaXguRVBTSUxPTipNYXRoLm1heCgx
LjAsIE1hdGguYWJzKGEwKSwgTWF0aC5hYnMoYjApKSAmJgorCSAgICAgICAgICAgIE1hdGguYWJz
KGExIC0gYjEpIDw9IGdsTWF0cml4LkVQU0lMT04qTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhMSks
IE1hdGguYWJzKGIxKSkgJiYKKwkgICAgICAgICAgICBNYXRoLmFicyhhMiAtIGIyKSA8PSBnbE1h
dHJpeC5FUFNJTE9OKk1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTIpLCBNYXRoLmFicyhiMikpICYm
CisJICAgICAgICAgICAgTWF0aC5hYnMoYTMgLSBiMykgPD0gZ2xNYXRyaXguRVBTSUxPTipNYXRo
Lm1heCgxLjAsIE1hdGguYWJzKGEzKSwgTWF0aC5hYnMoYjMpKSk7CisJfTsKKworCW1vZHVsZS5l
eHBvcnRzID0gdmVjNDsKKworCisvKioqLyB9LAorLyogOSAqLworLyoqKi8gZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CisKKwkvKiBDb3B5cmlnaHQgKGMp
IDIwMTUsIEJyYW5kb24gSm9uZXMsIENvbGluIE1hY0tlbnppZSBJVi4KKworCVBlcm1pc3Npb24g
aXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmlu
ZyBhIGNvcHkKKwlvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24g
ZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAorCWluIHRoZSBTb2Z0d2FyZSB3aXRob3V0
IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKKwl0
byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu
c2UsIGFuZC9vciBzZWxsCisJY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBw
ZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisJZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJq
ZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworCVRoZSBhYm92ZSBjb3B5cmlnaHQg
bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisJ
YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKKwlU
SEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg
S0lORCwgRVhQUkVTUyBPUgorCUlNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8g
VEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorCUZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQor
CUFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB
TUFHRVMgT1IgT1RIRVIKKwlMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRS
QUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorCU9VVCBPRiBPUiBJTiBDT05O
RUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4K
KwlUSEUgU09GVFdBUkUuICovCisKKwl2YXIgZ2xNYXRyaXggPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDEpOworCisJLyoqCisJICogQGNsYXNzIDIgRGltZW5zaW9uYWwgVmVjdG9yCisJICogQG5hbWUg
dmVjMgorCSAqLworCXZhciB2ZWMyID0ge307CisKKwkvKioKKwkgKiBDcmVhdGVzIGEgbmV3LCBl
bXB0eSB2ZWMyCisJICoKKwkgKiBAcmV0dXJucyB7dmVjMn0gYSBuZXcgMkQgdmVjdG9yCisJICov
CisJdmVjMi5jcmVhdGUgPSBmdW5jdGlvbigpIHsKKwkgICAgdmFyIG91dCA9IG5ldyBnbE1hdHJp
eC5BUlJBWV9UWVBFKDIpOworCSAgICBvdXRbMF0gPSAwOworCSAgICBvdXRbMV0gPSAwOworCSAg
ICByZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBDcmVhdGVzIGEgbmV3IHZlYzIgaW5pdGlh
bGl6ZWQgd2l0aCB2YWx1ZXMgZnJvbSBhbiBleGlzdGluZyB2ZWN0b3IKKwkgKgorCSAqIEBwYXJh
bSB7dmVjMn0gYSB2ZWN0b3IgdG8gY2xvbmUKKwkgKiBAcmV0dXJucyB7dmVjMn0gYSBuZXcgMkQg
dmVjdG9yCisJICovCisJdmVjMi5jbG9uZSA9IGZ1bmN0aW9uKGEpIHsKKwkgICAgdmFyIG91dCA9
IG5ldyBnbE1hdHJpeC5BUlJBWV9UWVBFKDIpOworCSAgICBvdXRbMF0gPSBhWzBdOworCSAgICBv
dXRbMV0gPSBhWzFdOworCSAgICByZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBDcmVhdGVz
IGEgbmV3IHZlYzIgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgZ2l2ZW4gdmFsdWVzCisJICoKKwkgKiBA
cGFyYW0ge051bWJlcn0geCBYIGNvbXBvbmVudAorCSAqIEBwYXJhbSB7TnVtYmVyfSB5IFkgY29t
cG9uZW50CisJICogQHJldHVybnMge3ZlYzJ9IGEgbmV3IDJEIHZlY3RvcgorCSAqLworCXZlYzIu
ZnJvbVZhbHVlcyA9IGZ1bmN0aW9uKHgsIHkpIHsKKwkgICAgdmFyIG91dCA9IG5ldyBnbE1hdHJp
eC5BUlJBWV9UWVBFKDIpOworCSAgICBvdXRbMF0gPSB4OworCSAgICBvdXRbMV0gPSB5OworCSAg
ICByZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBDb3B5IHRoZSB2YWx1ZXMgZnJvbSBvbmUg
dmVjMiB0byBhbm90aGVyCisJICoKKwkgKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5n
IHZlY3RvcgorCSAqIEBwYXJhbSB7dmVjMn0gYSB0aGUgc291cmNlIHZlY3RvcgorCSAqIEByZXR1
cm5zIHt2ZWMyfSBvdXQKKwkgKi8KKwl2ZWMyLmNvcHkgPSBmdW5jdGlvbihvdXQsIGEpIHsKKwkg
ICAgb3V0WzBdID0gYVswXTsKKwkgICAgb3V0WzFdID0gYVsxXTsKKwkgICAgcmV0dXJuIG91dDsK
Kwl9OworCisJLyoqCisJICogU2V0IHRoZSBjb21wb25lbnRzIG9mIGEgdmVjMiB0byB0aGUgZ2l2
ZW4gdmFsdWVzCisJICoKKwkgKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3Rv
cgorCSAqIEBwYXJhbSB7TnVtYmVyfSB4IFggY29tcG9uZW50CisJICogQHBhcmFtIHtOdW1iZXJ9
IHkgWSBjb21wb25lbnQKKwkgKiBAcmV0dXJucyB7dmVjMn0gb3V0CisJICovCisJdmVjMi5zZXQg
PSBmdW5jdGlvbihvdXQsIHgsIHkpIHsKKwkgICAgb3V0WzBdID0geDsKKwkgICAgb3V0WzFdID0g
eTsKKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogQWRkcyB0d28gdmVjMidzCisJ
ICoKKwkgKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvcgorCSAqIEBwYXJh
bSB7dmVjMn0gYSB0aGUgZmlyc3Qgb3BlcmFuZAorCSAqIEBwYXJhbSB7dmVjMn0gYiB0aGUgc2Vj
b25kIG9wZXJhbmQKKwkgKiBAcmV0dXJucyB7dmVjMn0gb3V0CisJICovCisJdmVjMi5hZGQgPSBm
dW5jdGlvbihvdXQsIGEsIGIpIHsKKwkgICAgb3V0WzBdID0gYVswXSArIGJbMF07CisJICAgIG91
dFsxXSA9IGFbMV0gKyBiWzFdOworCSAgICByZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBT
dWJ0cmFjdHMgdmVjdG9yIGIgZnJvbSB2ZWN0b3IgYQorCSAqCisJICogQHBhcmFtIHt2ZWMyfSBv
dXQgdGhlIHJlY2VpdmluZyB2ZWN0b3IKKwkgKiBAcGFyYW0ge3ZlYzJ9IGEgdGhlIGZpcnN0IG9w
ZXJhbmQKKwkgKiBAcGFyYW0ge3ZlYzJ9IGIgdGhlIHNlY29uZCBvcGVyYW5kCisJICogQHJldHVy
bnMge3ZlYzJ9IG91dAorCSAqLworCXZlYzIuc3VidHJhY3QgPSBmdW5jdGlvbihvdXQsIGEsIGIp
IHsKKwkgICAgb3V0WzBdID0gYVswXSAtIGJbMF07CisJICAgIG91dFsxXSA9IGFbMV0gLSBiWzFd
OworCSAgICByZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBBbGlhcyBmb3Ige0BsaW5rIHZl
YzIuc3VidHJhY3R9CisJICogQGZ1bmN0aW9uCisJICovCisJdmVjMi5zdWIgPSB2ZWMyLnN1YnRy
YWN0OworCisJLyoqCisJICogTXVsdGlwbGllcyB0d28gdmVjMidzCisJICoKKwkgKiBAcGFyYW0g
e3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvcgorCSAqIEBwYXJhbSB7dmVjMn0gYSB0aGUg
Zmlyc3Qgb3BlcmFuZAorCSAqIEBwYXJhbSB7dmVjMn0gYiB0aGUgc2Vjb25kIG9wZXJhbmQKKwkg
KiBAcmV0dXJucyB7dmVjMn0gb3V0CisJICovCisJdmVjMi5tdWx0aXBseSA9IGZ1bmN0aW9uKG91
dCwgYSwgYikgeworCSAgICBvdXRbMF0gPSBhWzBdICogYlswXTsKKwkgICAgb3V0WzFdID0gYVsx
XSAqIGJbMV07CisJICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIEFsaWFzIGZvciB7
QGxpbmsgdmVjMi5tdWx0aXBseX0KKwkgKiBAZnVuY3Rpb24KKwkgKi8KKwl2ZWMyLm11bCA9IHZl
YzIubXVsdGlwbHk7CisKKwkvKioKKwkgKiBEaXZpZGVzIHR3byB2ZWMyJ3MKKwkgKgorCSAqIEBw
YXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yCisJICogQHBhcmFtIHt2ZWMyfSBh
IHRoZSBmaXJzdCBvcGVyYW5kCisJICogQHBhcmFtIHt2ZWMyfSBiIHRoZSBzZWNvbmQgb3BlcmFu
ZAorCSAqIEByZXR1cm5zIHt2ZWMyfSBvdXQKKwkgKi8KKwl2ZWMyLmRpdmlkZSA9IGZ1bmN0aW9u
KG91dCwgYSwgYikgeworCSAgICBvdXRbMF0gPSBhWzBdIC8gYlswXTsKKwkgICAgb3V0WzFdID0g
YVsxXSAvIGJbMV07CisJICAgIHJldHVybiBvdXQ7CisJfTsKKworCS8qKgorCSAqIEFsaWFzIGZv
ciB7QGxpbmsgdmVjMi5kaXZpZGV9CisJICogQGZ1bmN0aW9uCisJICovCisJdmVjMi5kaXYgPSB2
ZWMyLmRpdmlkZTsKKworCS8qKgorCSAqIE1hdGguY2VpbCB0aGUgY29tcG9uZW50cyBvZiBhIHZl
YzIKKwkgKgorCSAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yCisJICog
QHBhcmFtIHt2ZWMyfSBhIHZlY3RvciB0byBjZWlsCisJICogQHJldHVybnMge3ZlYzJ9IG91dAor
CSAqLworCXZlYzIuY2VpbCA9IGZ1bmN0aW9uIChvdXQsIGEpIHsKKwkgICAgb3V0WzBdID0gTWF0
aC5jZWlsKGFbMF0pOworCSAgICBvdXRbMV0gPSBNYXRoLmNlaWwoYVsxXSk7CisJICAgIHJldHVy
biBvdXQ7CisJfTsKKworCS8qKgorCSAqIE1hdGguZmxvb3IgdGhlIGNvbXBvbmVudHMgb2YgYSB2
ZWMyCisJICoKKwkgKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvcgorCSAq
IEBwYXJhbSB7dmVjMn0gYSB2ZWN0b3IgdG8gZmxvb3IKKwkgKiBAcmV0dXJucyB7dmVjMn0gb3V0
CisJICovCisJdmVjMi5mbG9vciA9IGZ1bmN0aW9uIChvdXQsIGEpIHsKKwkgICAgb3V0WzBdID0g
TWF0aC5mbG9vcihhWzBdKTsKKwkgICAgb3V0WzFdID0gTWF0aC5mbG9vcihhWzFdKTsKKwkgICAg
cmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogUmV0dXJucyB0aGUgbWluaW11bSBvZiB0d28g
dmVjMidzCisJICoKKwkgKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3Rvcgor
CSAqIEBwYXJhbSB7dmVjMn0gYSB0aGUgZmlyc3Qgb3BlcmFuZAorCSAqIEBwYXJhbSB7dmVjMn0g
YiB0aGUgc2Vjb25kIG9wZXJhbmQKKwkgKiBAcmV0dXJucyB7dmVjMn0gb3V0CisJICovCisJdmVj
Mi5taW4gPSBmdW5jdGlvbihvdXQsIGEsIGIpIHsKKwkgICAgb3V0WzBdID0gTWF0aC5taW4oYVsw
XSwgYlswXSk7CisJICAgIG91dFsxXSA9IE1hdGgubWluKGFbMV0sIGJbMV0pOworCSAgICByZXR1
cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBSZXR1cm5zIHRoZSBtYXhpbXVtIG9mIHR3byB2ZWMy
J3MKKwkgKgorCSAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yCisJICog
QHBhcmFtIHt2ZWMyfSBhIHRoZSBmaXJzdCBvcGVyYW5kCisJICogQHBhcmFtIHt2ZWMyfSBiIHRo
ZSBzZWNvbmQgb3BlcmFuZAorCSAqIEByZXR1cm5zIHt2ZWMyfSBvdXQKKwkgKi8KKwl2ZWMyLm1h
eCA9IGZ1bmN0aW9uKG91dCwgYSwgYikgeworCSAgICBvdXRbMF0gPSBNYXRoLm1heChhWzBdLCBi
WzBdKTsKKwkgICAgb3V0WzFdID0gTWF0aC5tYXgoYVsxXSwgYlsxXSk7CisJICAgIHJldHVybiBv
dXQ7CisJfTsKKworCS8qKgorCSAqIE1hdGgucm91bmQgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWMy
CisJICoKKwkgKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvcgorCSAqIEBw
YXJhbSB7dmVjMn0gYSB2ZWN0b3IgdG8gcm91bmQKKwkgKiBAcmV0dXJucyB7dmVjMn0gb3V0CisJ
ICovCisJdmVjMi5yb3VuZCA9IGZ1bmN0aW9uIChvdXQsIGEpIHsKKwkgICAgb3V0WzBdID0gTWF0
aC5yb3VuZChhWzBdKTsKKwkgICAgb3V0WzFdID0gTWF0aC5yb3VuZChhWzFdKTsKKwkgICAgcmV0
dXJuIG91dDsKKwl9OworCisJLyoqCisJICogU2NhbGVzIGEgdmVjMiBieSBhIHNjYWxhciBudW1i
ZXIKKwkgKgorCSAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yCisJICog
QHBhcmFtIHt2ZWMyfSBhIHRoZSB2ZWN0b3IgdG8gc2NhbGUKKwkgKiBAcGFyYW0ge051bWJlcn0g
YiBhbW91bnQgdG8gc2NhbGUgdGhlIHZlY3RvciBieQorCSAqIEByZXR1cm5zIHt2ZWMyfSBvdXQK
KwkgKi8KKwl2ZWMyLnNjYWxlID0gZnVuY3Rpb24ob3V0LCBhLCBiKSB7CisJICAgIG91dFswXSA9
IGFbMF0gKiBiOworCSAgICBvdXRbMV0gPSBhWzFdICogYjsKKwkgICAgcmV0dXJuIG91dDsKKwl9
OworCisJLyoqCisJICogQWRkcyB0d28gdmVjMidzIGFmdGVyIHNjYWxpbmcgdGhlIHNlY29uZCBv
cGVyYW5kIGJ5IGEgc2NhbGFyIHZhbHVlCisJICoKKwkgKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUg
cmVjZWl2aW5nIHZlY3RvcgorCSAqIEBwYXJhbSB7dmVjMn0gYSB0aGUgZmlyc3Qgb3BlcmFuZAor
CSAqIEBwYXJhbSB7dmVjMn0gYiB0aGUgc2Vjb25kIG9wZXJhbmQKKwkgKiBAcGFyYW0ge051bWJl
cn0gc2NhbGUgdGhlIGFtb3VudCB0byBzY2FsZSBiIGJ5IGJlZm9yZSBhZGRpbmcKKwkgKiBAcmV0
dXJucyB7dmVjMn0gb3V0CisJICovCisJdmVjMi5zY2FsZUFuZEFkZCA9IGZ1bmN0aW9uKG91dCwg
YSwgYiwgc2NhbGUpIHsKKwkgICAgb3V0WzBdID0gYVswXSArIChiWzBdICogc2NhbGUpOworCSAg
ICBvdXRbMV0gPSBhWzFdICsgKGJbMV0gKiBzY2FsZSk7CisJICAgIHJldHVybiBvdXQ7CisJfTsK
KworCS8qKgorCSAqIENhbGN1bGF0ZXMgdGhlIGV1Y2xpZGlhbiBkaXN0YW5jZSBiZXR3ZWVuIHR3
byB2ZWMyJ3MKKwkgKgorCSAqIEBwYXJhbSB7dmVjMn0gYSB0aGUgZmlyc3Qgb3BlcmFuZAorCSAq
IEBwYXJhbSB7dmVjMn0gYiB0aGUgc2Vjb25kIG9wZXJhbmQKKwkgKiBAcmV0dXJucyB7TnVtYmVy
fSBkaXN0YW5jZSBiZXR3ZWVuIGEgYW5kIGIKKwkgKi8KKwl2ZWMyLmRpc3RhbmNlID0gZnVuY3Rp
b24oYSwgYikgeworCSAgICB2YXIgeCA9IGJbMF0gLSBhWzBdLAorCSAgICAgICAgeSA9IGJbMV0g
LSBhWzFdOworCSAgICByZXR1cm4gTWF0aC5zcXJ0KHgqeCArIHkqeSk7CisJfTsKKworCS8qKgor
CSAqIEFsaWFzIGZvciB7QGxpbmsgdmVjMi5kaXN0YW5jZX0KKwkgKiBAZnVuY3Rpb24KKwkgKi8K
Kwl2ZWMyLmRpc3QgPSB2ZWMyLmRpc3RhbmNlOworCisJLyoqCisJICogQ2FsY3VsYXRlcyB0aGUg
c3F1YXJlZCBldWNsaWRpYW4gZGlzdGFuY2UgYmV0d2VlbiB0d28gdmVjMidzCisJICoKKwkgKiBA
cGFyYW0ge3ZlYzJ9IGEgdGhlIGZpcnN0IG9wZXJhbmQKKwkgKiBAcGFyYW0ge3ZlYzJ9IGIgdGhl
IHNlY29uZCBvcGVyYW5kCisJICogQHJldHVybnMge051bWJlcn0gc3F1YXJlZCBkaXN0YW5jZSBi
ZXR3ZWVuIGEgYW5kIGIKKwkgKi8KKwl2ZWMyLnNxdWFyZWREaXN0YW5jZSA9IGZ1bmN0aW9uKGEs
IGIpIHsKKwkgICAgdmFyIHggPSBiWzBdIC0gYVswXSwKKwkgICAgICAgIHkgPSBiWzFdIC0gYVsx
XTsKKwkgICAgcmV0dXJuIHgqeCArIHkqeTsKKwl9OworCisJLyoqCisJICogQWxpYXMgZm9yIHtA
bGluayB2ZWMyLnNxdWFyZWREaXN0YW5jZX0KKwkgKiBAZnVuY3Rpb24KKwkgKi8KKwl2ZWMyLnNx
ckRpc3QgPSB2ZWMyLnNxdWFyZWREaXN0YW5jZTsKKworCS8qKgorCSAqIENhbGN1bGF0ZXMgdGhl
IGxlbmd0aCBvZiBhIHZlYzIKKwkgKgorCSAqIEBwYXJhbSB7dmVjMn0gYSB2ZWN0b3IgdG8gY2Fs
Y3VsYXRlIGxlbmd0aCBvZgorCSAqIEByZXR1cm5zIHtOdW1iZXJ9IGxlbmd0aCBvZiBhCisJICov
CisJdmVjMi5sZW5ndGggPSBmdW5jdGlvbiAoYSkgeworCSAgICB2YXIgeCA9IGFbMF0sCisJICAg
ICAgICB5ID0gYVsxXTsKKwkgICAgcmV0dXJuIE1hdGguc3FydCh4KnggKyB5KnkpOworCX07CisK
KwkvKioKKwkgKiBBbGlhcyBmb3Ige0BsaW5rIHZlYzIubGVuZ3RofQorCSAqIEBmdW5jdGlvbgor
CSAqLworCXZlYzIubGVuID0gdmVjMi5sZW5ndGg7CisKKwkvKioKKwkgKiBDYWxjdWxhdGVzIHRo
ZSBzcXVhcmVkIGxlbmd0aCBvZiBhIHZlYzIKKwkgKgorCSAqIEBwYXJhbSB7dmVjMn0gYSB2ZWN0
b3IgdG8gY2FsY3VsYXRlIHNxdWFyZWQgbGVuZ3RoIG9mCisJICogQHJldHVybnMge051bWJlcn0g
c3F1YXJlZCBsZW5ndGggb2YgYQorCSAqLworCXZlYzIuc3F1YXJlZExlbmd0aCA9IGZ1bmN0aW9u
IChhKSB7CisJICAgIHZhciB4ID0gYVswXSwKKwkgICAgICAgIHkgPSBhWzFdOworCSAgICByZXR1
cm4geCp4ICsgeSp5OworCX07CisKKwkvKioKKwkgKiBBbGlhcyBmb3Ige0BsaW5rIHZlYzIuc3F1
YXJlZExlbmd0aH0KKwkgKiBAZnVuY3Rpb24KKwkgKi8KKwl2ZWMyLnNxckxlbiA9IHZlYzIuc3F1
YXJlZExlbmd0aDsKKworCS8qKgorCSAqIE5lZ2F0ZXMgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWMy
CisJICoKKwkgKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvcgorCSAqIEBw
YXJhbSB7dmVjMn0gYSB2ZWN0b3IgdG8gbmVnYXRlCisJICogQHJldHVybnMge3ZlYzJ9IG91dAor
CSAqLworCXZlYzIubmVnYXRlID0gZnVuY3Rpb24ob3V0LCBhKSB7CisJICAgIG91dFswXSA9IC1h
WzBdOworCSAgICBvdXRbMV0gPSAtYVsxXTsKKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoq
CisJICogUmV0dXJucyB0aGUgaW52ZXJzZSBvZiB0aGUgY29tcG9uZW50cyBvZiBhIHZlYzIKKwkg
KgorCSAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yCisJICogQHBhcmFt
IHt2ZWMyfSBhIHZlY3RvciB0byBpbnZlcnQKKwkgKiBAcmV0dXJucyB7dmVjMn0gb3V0CisJICov
CisJdmVjMi5pbnZlcnNlID0gZnVuY3Rpb24ob3V0LCBhKSB7CisJICBvdXRbMF0gPSAxLjAgLyBh
WzBdOworCSAgb3V0WzFdID0gMS4wIC8gYVsxXTsKKwkgIHJldHVybiBvdXQ7CisJfTsKKworCS8q
KgorCSAqIE5vcm1hbGl6ZSBhIHZlYzIKKwkgKgorCSAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSBy
ZWNlaXZpbmcgdmVjdG9yCisJICogQHBhcmFtIHt2ZWMyfSBhIHZlY3RvciB0byBub3JtYWxpemUK
KwkgKiBAcmV0dXJucyB7dmVjMn0gb3V0CisJICovCisJdmVjMi5ub3JtYWxpemUgPSBmdW5jdGlv
bihvdXQsIGEpIHsKKwkgICAgdmFyIHggPSBhWzBdLAorCSAgICAgICAgeSA9IGFbMV07CisJICAg
IHZhciBsZW4gPSB4KnggKyB5Knk7CisJICAgIGlmIChsZW4gPiAwKSB7CisJICAgICAgICAvL1RP
RE86IGV2YWx1YXRlIHVzZSBvZiBnbG1faW52c3FydCBoZXJlPworCSAgICAgICAgbGVuID0gMSAv
IE1hdGguc3FydChsZW4pOworCSAgICAgICAgb3V0WzBdID0gYVswXSAqIGxlbjsKKwkgICAgICAg
IG91dFsxXSA9IGFbMV0gKiBsZW47CisJICAgIH0KKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJ
LyoqCisJICogQ2FsY3VsYXRlcyB0aGUgZG90IHByb2R1Y3Qgb2YgdHdvIHZlYzIncworCSAqCisJ
ICogQHBhcmFtIHt2ZWMyfSBhIHRoZSBmaXJzdCBvcGVyYW5kCisJICogQHBhcmFtIHt2ZWMyfSBi
IHRoZSBzZWNvbmQgb3BlcmFuZAorCSAqIEByZXR1cm5zIHtOdW1iZXJ9IGRvdCBwcm9kdWN0IG9m
IGEgYW5kIGIKKwkgKi8KKwl2ZWMyLmRvdCA9IGZ1bmN0aW9uIChhLCBiKSB7CisJICAgIHJldHVy
biBhWzBdICogYlswXSArIGFbMV0gKiBiWzFdOworCX07CisKKwkvKioKKwkgKiBDb21wdXRlcyB0
aGUgY3Jvc3MgcHJvZHVjdCBvZiB0d28gdmVjMidzCisJICogTm90ZSB0aGF0IHRoZSBjcm9zcyBw
cm9kdWN0IG11c3QgYnkgZGVmaW5pdGlvbiBwcm9kdWNlIGEgM0QgdmVjdG9yCisJICoKKwkgKiBA
cGFyYW0ge3ZlYzN9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvcgorCSAqIEBwYXJhbSB7dmVjMn0g
YSB0aGUgZmlyc3Qgb3BlcmFuZAorCSAqIEBwYXJhbSB7dmVjMn0gYiB0aGUgc2Vjb25kIG9wZXJh
bmQKKwkgKiBAcmV0dXJucyB7dmVjM30gb3V0CisJICovCisJdmVjMi5jcm9zcyA9IGZ1bmN0aW9u
KG91dCwgYSwgYikgeworCSAgICB2YXIgeiA9IGFbMF0gKiBiWzFdIC0gYVsxXSAqIGJbMF07CisJ
ICAgIG91dFswXSA9IG91dFsxXSA9IDA7CisJICAgIG91dFsyXSA9IHo7CisJICAgIHJldHVybiBv
dXQ7CisJfTsKKworCS8qKgorCSAqIFBlcmZvcm1zIGEgbGluZWFyIGludGVycG9sYXRpb24gYmV0
d2VlbiB0d28gdmVjMidzCisJICoKKwkgKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5n
IHZlY3RvcgorCSAqIEBwYXJhbSB7dmVjMn0gYSB0aGUgZmlyc3Qgb3BlcmFuZAorCSAqIEBwYXJh
bSB7dmVjMn0gYiB0aGUgc2Vjb25kIG9wZXJhbmQKKwkgKiBAcGFyYW0ge051bWJlcn0gdCBpbnRl
cnBvbGF0aW9uIGFtb3VudCBiZXR3ZWVuIHRoZSB0d28gaW5wdXRzCisJICogQHJldHVybnMge3Zl
YzJ9IG91dAorCSAqLworCXZlYzIubGVycCA9IGZ1bmN0aW9uIChvdXQsIGEsIGIsIHQpIHsKKwkg
ICAgdmFyIGF4ID0gYVswXSwKKwkgICAgICAgIGF5ID0gYVsxXTsKKwkgICAgb3V0WzBdID0gYXgg
KyB0ICogKGJbMF0gLSBheCk7CisJICAgIG91dFsxXSA9IGF5ICsgdCAqIChiWzFdIC0gYXkpOwor
CSAgICByZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBHZW5lcmF0ZXMgYSByYW5kb20gdmVj
dG9yIHdpdGggdGhlIGdpdmVuIHNjYWxlCisJICoKKwkgKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUg
cmVjZWl2aW5nIHZlY3RvcgorCSAqIEBwYXJhbSB7TnVtYmVyfSBbc2NhbGVdIExlbmd0aCBvZiB0
aGUgcmVzdWx0aW5nIHZlY3Rvci4gSWYgb21taXR0ZWQsIGEgdW5pdCB2ZWN0b3Igd2lsbCBiZSBy
ZXR1cm5lZAorCSAqIEByZXR1cm5zIHt2ZWMyfSBvdXQKKwkgKi8KKwl2ZWMyLnJhbmRvbSA9IGZ1
bmN0aW9uIChvdXQsIHNjYWxlKSB7CisJICAgIHNjYWxlID0gc2NhbGUgfHwgMS4wOworCSAgICB2
YXIgciA9IGdsTWF0cml4LlJBTkRPTSgpICogMi4wICogTWF0aC5QSTsKKwkgICAgb3V0WzBdID0g
TWF0aC5jb3MocikgKiBzY2FsZTsKKwkgICAgb3V0WzFdID0gTWF0aC5zaW4ocikgKiBzY2FsZTsK
KwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogVHJhbnNmb3JtcyB0aGUgdmVjMiB3
aXRoIGEgbWF0MgorCSAqCisJICogQHBhcmFtIHt2ZWMyfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0
b3IKKwkgKiBAcGFyYW0ge3ZlYzJ9IGEgdGhlIHZlY3RvciB0byB0cmFuc2Zvcm0KKwkgKiBAcGFy
YW0ge21hdDJ9IG0gbWF0cml4IHRvIHRyYW5zZm9ybSB3aXRoCisJICogQHJldHVybnMge3ZlYzJ9
IG91dAorCSAqLworCXZlYzIudHJhbnNmb3JtTWF0MiA9IGZ1bmN0aW9uKG91dCwgYSwgbSkgewor
CSAgICB2YXIgeCA9IGFbMF0sCisJICAgICAgICB5ID0gYVsxXTsKKwkgICAgb3V0WzBdID0gbVsw
XSAqIHggKyBtWzJdICogeTsKKwkgICAgb3V0WzFdID0gbVsxXSAqIHggKyBtWzNdICogeTsKKwkg
ICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogVHJhbnNmb3JtcyB0aGUgdmVjMiB3aXRo
IGEgbWF0MmQKKwkgKgorCSAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9y
CisJICogQHBhcmFtIHt2ZWMyfSBhIHRoZSB2ZWN0b3IgdG8gdHJhbnNmb3JtCisJICogQHBhcmFt
IHttYXQyZH0gbSBtYXRyaXggdG8gdHJhbnNmb3JtIHdpdGgKKwkgKiBAcmV0dXJucyB7dmVjMn0g
b3V0CisJICovCisJdmVjMi50cmFuc2Zvcm1NYXQyZCA9IGZ1bmN0aW9uKG91dCwgYSwgbSkgewor
CSAgICB2YXIgeCA9IGFbMF0sCisJICAgICAgICB5ID0gYVsxXTsKKwkgICAgb3V0WzBdID0gbVsw
XSAqIHggKyBtWzJdICogeSArIG1bNF07CisJICAgIG91dFsxXSA9IG1bMV0gKiB4ICsgbVszXSAq
IHkgKyBtWzVdOworCSAgICByZXR1cm4gb3V0OworCX07CisKKwkvKioKKwkgKiBUcmFuc2Zvcm1z
IHRoZSB2ZWMyIHdpdGggYSBtYXQzCisJICogM3JkIHZlY3RvciBjb21wb25lbnQgaXMgaW1wbGlj
aXRseSAnMScKKwkgKgorCSAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9y
CisJICogQHBhcmFtIHt2ZWMyfSBhIHRoZSB2ZWN0b3IgdG8gdHJhbnNmb3JtCisJICogQHBhcmFt
IHttYXQzfSBtIG1hdHJpeCB0byB0cmFuc2Zvcm0gd2l0aAorCSAqIEByZXR1cm5zIHt2ZWMyfSBv
dXQKKwkgKi8KKwl2ZWMyLnRyYW5zZm9ybU1hdDMgPSBmdW5jdGlvbihvdXQsIGEsIG0pIHsKKwkg
ICAgdmFyIHggPSBhWzBdLAorCSAgICAgICAgeSA9IGFbMV07CisJICAgIG91dFswXSA9IG1bMF0g
KiB4ICsgbVszXSAqIHkgKyBtWzZdOworCSAgICBvdXRbMV0gPSBtWzFdICogeCArIG1bNF0gKiB5
ICsgbVs3XTsKKwkgICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogVHJhbnNmb3JtcyB0
aGUgdmVjMiB3aXRoIGEgbWF0NAorCSAqIDNyZCB2ZWN0b3IgY29tcG9uZW50IGlzIGltcGxpY2l0
bHkgJzAnCisJICogNHRoIHZlY3RvciBjb21wb25lbnQgaXMgaW1wbGljaXRseSAnMScKKwkgKgor
CSAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yCisJICogQHBhcmFtIHt2
ZWMyfSBhIHRoZSB2ZWN0b3IgdG8gdHJhbnNmb3JtCisJICogQHBhcmFtIHttYXQ0fSBtIG1hdHJp
eCB0byB0cmFuc2Zvcm0gd2l0aAorCSAqIEByZXR1cm5zIHt2ZWMyfSBvdXQKKwkgKi8KKwl2ZWMy
LnRyYW5zZm9ybU1hdDQgPSBmdW5jdGlvbihvdXQsIGEsIG0pIHsKKwkgICAgdmFyIHggPSBhWzBd
LCAKKwkgICAgICAgIHkgPSBhWzFdOworCSAgICBvdXRbMF0gPSBtWzBdICogeCArIG1bNF0gKiB5
ICsgbVsxMl07CisJICAgIG91dFsxXSA9IG1bMV0gKiB4ICsgbVs1XSAqIHkgKyBtWzEzXTsKKwkg
ICAgcmV0dXJuIG91dDsKKwl9OworCisJLyoqCisJICogUGVyZm9ybSBzb21lIG9wZXJhdGlvbiBv
dmVyIGFuIGFycmF5IG9mIHZlYzJzLgorCSAqCisJICogQHBhcmFtIHtBcnJheX0gYSB0aGUgYXJy
YXkgb2YgdmVjdG9ycyB0byBpdGVyYXRlIG92ZXIKKwkgKiBAcGFyYW0ge051bWJlcn0gc3RyaWRl
IE51bWJlciBvZiBlbGVtZW50cyBiZXR3ZWVuIHRoZSBzdGFydCBvZiBlYWNoIHZlYzIuIElmIDAg
YXNzdW1lcyB0aWdodGx5IHBhY2tlZAorCSAqIEBwYXJhbSB7TnVtYmVyfSBvZmZzZXQgTnVtYmVy
IG9mIGVsZW1lbnRzIHRvIHNraXAgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYXJyYXkKKwkgKiBA
cGFyYW0ge051bWJlcn0gY291bnQgTnVtYmVyIG9mIHZlYzJzIHRvIGl0ZXJhdGUgb3Zlci4gSWYg
MCBpdGVyYXRlcyBvdmVyIGVudGlyZSBhcnJheQorCSAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIEZ1
bmN0aW9uIHRvIGNhbGwgZm9yIGVhY2ggdmVjdG9yIGluIHRoZSBhcnJheQorCSAqIEBwYXJhbSB7
T2JqZWN0fSBbYXJnXSBhZGRpdGlvbmFsIGFyZ3VtZW50IHRvIHBhc3MgdG8gZm4KKwkgKiBAcmV0
dXJucyB7QXJyYXl9IGEKKwkgKiBAZnVuY3Rpb24KKwkgKi8KKwl2ZWMyLmZvckVhY2ggPSAoZnVu
Y3Rpb24oKSB7CisJICAgIHZhciB2ZWMgPSB2ZWMyLmNyZWF0ZSgpOworCisJICAgIHJldHVybiBm
dW5jdGlvbihhLCBzdHJpZGUsIG9mZnNldCwgY291bnQsIGZuLCBhcmcpIHsKKwkgICAgICAgIHZh
ciBpLCBsOworCSAgICAgICAgaWYoIXN0cmlkZSkgeworCSAgICAgICAgICAgIHN0cmlkZSA9IDI7
CisJICAgICAgICB9CisKKwkgICAgICAgIGlmKCFvZmZzZXQpIHsKKwkgICAgICAgICAgICBvZmZz
ZXQgPSAwOworCSAgICAgICAgfQorCSAgICAgICAgCisJICAgICAgICBpZihjb3VudCkgeworCSAg
ICAgICAgICAgIGwgPSBNYXRoLm1pbigoY291bnQgKiBzdHJpZGUpICsgb2Zmc2V0LCBhLmxlbmd0
aCk7CisJICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgIGwgPSBhLmxlbmd0aDsKKwkgICAg
ICAgIH0KKworCSAgICAgICAgZm9yKGkgPSBvZmZzZXQ7IGkgPCBsOyBpICs9IHN0cmlkZSkgewor
CSAgICAgICAgICAgIHZlY1swXSA9IGFbaV07IHZlY1sxXSA9IGFbaSsxXTsKKwkgICAgICAgICAg
ICBmbih2ZWMsIHZlYywgYXJnKTsKKwkgICAgICAgICAgICBhW2ldID0gdmVjWzBdOyBhW2krMV0g
PSB2ZWNbMV07CisJICAgICAgICB9CisJICAgICAgICAKKwkgICAgICAgIHJldHVybiBhOworCSAg
ICB9OworCX0pKCk7CisKKwkvKioKKwkgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9u
IG9mIGEgdmVjdG9yCisJICoKKwkgKiBAcGFyYW0ge3ZlYzJ9IHZlYyB2ZWN0b3IgdG8gcmVwcmVz
ZW50IGFzIGEgc3RyaW5nCisJICogQHJldHVybnMge1N0cmluZ30gc3RyaW5nIHJlcHJlc2VudGF0
aW9uIG9mIHRoZSB2ZWN0b3IKKwkgKi8KKwl2ZWMyLnN0ciA9IGZ1bmN0aW9uIChhKSB7CisJICAg
IHJldHVybiAndmVjMignICsgYVswXSArICcsICcgKyBhWzFdICsgJyknOworCX07CisKKwkvKioK
KwkgKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSB2ZWN0b3JzIGV4YWN0bHkgaGF2ZSB0aGUg
c2FtZSBlbGVtZW50cyBpbiB0aGUgc2FtZSBwb3NpdGlvbiAod2hlbiBjb21wYXJlZCB3aXRoID09
PSkKKwkgKgorCSAqIEBwYXJhbSB7dmVjMn0gYSBUaGUgZmlyc3QgdmVjdG9yLgorCSAqIEBwYXJh
bSB7dmVjMn0gYiBUaGUgc2Vjb25kIHZlY3Rvci4KKwkgKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1
ZSBpZiB0aGUgdmVjdG9ycyBhcmUgZXF1YWwsIGZhbHNlIG90aGVyd2lzZS4KKwkgKi8KKwl2ZWMy
LmV4YWN0RXF1YWxzID0gZnVuY3Rpb24gKGEsIGIpIHsKKwkgICAgcmV0dXJuIGFbMF0gPT09IGJb
MF0gJiYgYVsxXSA9PT0gYlsxXTsKKwl9OworCisJLyoqCisJICogUmV0dXJucyB3aGV0aGVyIG9y
IG5vdCB0aGUgdmVjdG9ycyBoYXZlIGFwcHJveGltYXRlbHkgdGhlIHNhbWUgZWxlbWVudHMgaW4g
dGhlIHNhbWUgcG9zaXRpb24uCisJICoKKwkgKiBAcGFyYW0ge3ZlYzJ9IGEgVGhlIGZpcnN0IHZl
Y3Rvci4KKwkgKiBAcGFyYW0ge3ZlYzJ9IGIgVGhlIHNlY29uZCB2ZWN0b3IuCisJICogQHJldHVy
bnMge0Jvb2xlYW59IFRydWUgaWYgdGhlIHZlY3RvcnMgYXJlIGVxdWFsLCBmYWxzZSBvdGhlcndp
c2UuCisJICovCisJdmVjMi5lcXVhbHMgPSBmdW5jdGlvbiAoYSwgYikgeworCSAgICB2YXIgYTAg
PSBhWzBdLCBhMSA9IGFbMV07CisJICAgIHZhciBiMCA9IGJbMF0sIGIxID0gYlsxXTsKKwkgICAg
cmV0dXJuIChNYXRoLmFicyhhMCAtIGIwKSA8PSBnbE1hdHJpeC5FUFNJTE9OKk1hdGgubWF4KDEu
MCwgTWF0aC5hYnMoYTApLCBNYXRoLmFicyhiMCkpICYmCisJICAgICAgICAgICAgTWF0aC5hYnMo
YTEgLSBiMSkgPD0gZ2xNYXRyaXguRVBTSUxPTipNYXRoLm1heCgxLjAsIE1hdGguYWJzKGExKSwg
TWF0aC5hYnMoYjEpKSk7CisJfTsKKworCW1vZHVsZS5leHBvcnRzID0gdmVjMjsKKworCisvKioq
LyB9CisvKioqKioqLyBdKQorfSk7Cis7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvd2ViZ3B1L3dlYmdwdS10cmlhbmdsZS5odG1sIGIvd2ViZ3B1L3dlYmdwdS10cmlh
bmdsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hNjA4N2Q1
MjhiMwotLS0gL2Rldi9udWxsCisrKyBiL3dlYmdwdS93ZWJncHUtdHJpYW5nbGUuaHRtbApAQCAt
MCwwICsxLDk4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1l
PSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9NjAwIj4KKzx0aXRsZT5XZWJHUFUgZGVtbzwvdGl0
bGU+Cis8c3R5bGU+CitjYW52YXMgeworICB3aWR0aDogNTAwcHg7CisgIGhlaWdodDogNTAwcHg7
CisgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworfQorPC9zdHlsZT4KKzxzY3JpcHQgaWQ9Imxp
YnJhcnkiIHR5cGU9Ingtc2hhZGVyL3gtbWV0YWwiPgordXNpbmcgbmFtZXNwYWNlIG1ldGFsOwor
CitzdHJ1Y3QgVmVydGV4Cit7CisgICAgZmxvYXQ0IHBvc2l0aW9uIFtbcG9zaXRpb25dXTsKKyAg
ICBmbG9hdDQgY29sb3I7Cit9OworCit2ZXJ0ZXggVmVydGV4IHZlcnRleF9tYWluKGRldmljZSBW
ZXJ0ZXggKnZlcnRpY2VzIFtbYnVmZmVyKDApXV0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQgdmlkIFtbdmVydGV4X2lkXV0pCit7CisgICAgcmV0dXJuIHZlcnRpY2VzW3ZpZF07Cit9
CisKK2ZyYWdtZW50IGZsb2F0NCBmcmFnbWVudF9tYWluKFZlcnRleCBpblZlcnRleCBbW3N0YWdl
X2luXV0pCit7CisgICAgcmV0dXJuIGluVmVydGV4LmNvbG9yOworfQorPC9zY3JpcHQ+Cis8c2Ny
aXB0PgorCitmdW5jdGlvbiBsb2FkU2hhZGVyRnJvbVNjcmlwdChpZCkKK3sKKyAgICB2YXIgc2Ny
aXB0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKKyAgICByZXR1cm4gc2Ny
aXB0RWxlbWVudC50ZXh0OworfQorCit2YXIgZ3B1OworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigibG9hZCIsIGluaXQsIGZhbHNlKTsKKworZnVuY3Rpb24gaW5pdCgpIHsKKyAgICB2YXIgY2Fu
dmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7CisgICAgY2FudmFzLndpZHRo
ID0gNTAwOworICAgIGNhbnZhcy5oZWlnaHQgPSA1MDA7CisgICAgZ3B1ID0gY2FudmFzLmdldENv
bnRleHQoIndlYmdwdSIpOworCisgICAgdmFyIGxpYnJhcnkgPSBncHUuY3JlYXRlTGlicmFyeShs
b2FkU2hhZGVyRnJvbVNjcmlwdCgibGlicmFyeSIpKTsKKyAgICB2YXIgdmVydGV4RnVuY3Rpb24g
PSBsaWJyYXJ5LmZ1bmN0aW9uV2l0aE5hbWUoInZlcnRleF9tYWluIik7CisgICAgdmFyIGZyYWdt
ZW50RnVuY3Rpb24gPSBsaWJyYXJ5LmZ1bmN0aW9uV2l0aE5hbWUoImZyYWdtZW50X21haW4iKTsK
KworICAgIHZhciB2ZXJ0ZXhEYXRhID0gbmV3IEZsb2F0MzJBcnJheShbCisgICAgICAgIC8vICB4
LCAgICAgeSwgeiwgMSwgciwgZywgYiwgMQorICAgICAgICAgICAgMCwgIDAuNzUsIDAsIDEsIDEs
IDAsIDAsIDEsCisgICAgICAgIC0wLjc1LCAtMC43NSwgMCwgMSwgMCwgMSwgMCwgMSwKKyAgICAg
ICAgIDAuNzUsIC0wLjc1LCAwLCAxLCAwLCAwLCAxLCAxCisgICAgXSk7CisgICAgdmFyIHZlcnRl
eEJ1ZmZlciA9IGdwdS5jcmVhdGVCdWZmZXIodmVydGV4RGF0YSk7CisKKyAgICB2YXIgcGlwZWxp
bmVEZXNjcmlwdG9yID0gbmV3IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpOworICAg
IHBpcGVsaW5lRGVzY3JpcHRvci52ZXJ0ZXhGdW5jdGlvbiA9IHZlcnRleEZ1bmN0aW9uOworICAg
IHBpcGVsaW5lRGVzY3JpcHRvci5mcmFnbWVudEZ1bmN0aW9uID0gZnJhZ21lbnRGdW5jdGlvbjsK
KyAgICBwaXBlbGluZURlc2NyaXB0b3IuY29sb3JBdHRhY2htZW50c1swXS5waXhlbEZvcm1hdCA9
IGdwdS5QaXhlbEZvcm1hdEJHUkE4VW5vcm07CisKKyAgICB2YXIgcGlwZWxpbmVTdGF0ZSA9IGdw
dS5jcmVhdGVSZW5kZXJQaXBlbGluZVN0YXRlKHBpcGVsaW5lRGVzY3JpcHRvcik7CisKKyAgICB2
YXIgZHJhd2FibGUgPSBncHUubmV4dERyYXdhYmxlKCk7CisKKyAgICB2YXIgcGFzc0Rlc2NyaXB0
b3IgPSBuZXcgV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IoKTsKKyAgICBwYXNzRGVzY3JpcHRv
ci5jb2xvckF0dGFjaG1lbnRzWzBdLmxvYWRBY3Rpb24gPSBncHUuTG9hZEFjdGlvbkNsZWFyOwor
ICAgIHBhc3NEZXNjcmlwdG9yLmNvbG9yQXR0YWNobWVudHNbMF0uc3RvcmVBY3Rpb24gPSBncHUu
U3RvcmVBY3Rpb25TdG9yZTsKKyAgICBwYXNzRGVzY3JpcHRvci5jb2xvckF0dGFjaG1lbnRzWzBd
LmNsZWFyQ29sb3IgPSBbMC44LCAwLjgsIDAuOCwgMS4wXTsKKyAgICBwYXNzRGVzY3JpcHRvci5j
b2xvckF0dGFjaG1lbnRzWzBdLnRleHR1cmUgPSBkcmF3YWJsZS50ZXh0dXJlOworCisgICAgdmFy
IGNvbW1hbmRRdWV1ZSA9IGdwdS5jcmVhdGVDb21tYW5kUXVldWUoKTsKKworICAgIHZhciBjb21t
YW5kQnVmZmVyID0gY29tbWFuZFF1ZXVlLmNyZWF0ZUNvbW1hbmRCdWZmZXIoKTsKKworICAgIHZh
ciBjb21tYW5kRW5jb2RlciA9IGNvbW1hbmRCdWZmZXIuY3JlYXRlUmVuZGVyQ29tbWFuZEVuY29k
ZXJXaXRoRGVzY3JpcHRvcihwYXNzRGVzY3JpcHRvcik7CisgICAgY29tbWFuZEVuY29kZXIuc2V0
UmVuZGVyUGlwZWxpbmVTdGF0ZShwaXBlbGluZVN0YXRlKTsKKyAgICBjb21tYW5kRW5jb2Rlci5z
ZXRWZXJ0ZXhCdWZmZXIodmVydGV4QnVmZmVyLCAwLCAwKTsKKworICAgIGNvbW1hbmRFbmNvZGVy
LmRyYXdQcmltaXRpdmVzKGdwdS5QcmltaXRpdmVUeXBlVHJpYW5nbGUsIDAsIDMpOworICAgIGNv
bW1hbmRFbmNvZGVyLmVuZEVuY29kaW5nKCk7CisgICAgY29tbWFuZEJ1ZmZlci5wcmVzZW50RHJh
d2FibGUoZHJhd2FibGUpOworICAgIGNvbW1hbmRCdWZmZXIuY29tbWl0KCk7Cit9CisKKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHA+RHJhd3MgYSB0cmlhbmdsZSB3aXRoIGEgc2lt
cGxlIHNoYWRlci48L3A+Cis8Y2FudmFzPjwvY2FudmFzPgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvd2ViZ3B1L3dlYmdwdS5odG1sIGIvd2ViZ3B1L3dlYmdwdS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kYTViZmFiMTEwNAotLS0gL2Rldi9udWxs
CisrKyBiL3dlYmdwdS93ZWJncHUuaHRtbApAQCAtMCwwICsxLDQzNiBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRo
PTYwMCI+Cis8dGl0bGU+V2ViR1BVIGRlbW88L3RpdGxlPgorPHN0eWxlPgorYm9keSB7CisgICAg
YmFja2dyb3VuZC1jb2xvcjogcmdiKDM1JSwgNjUlLCA4NSUpOworICAgIG1hcmdpbjogMDsKKyAg
ICBwYWRkaW5nOiAwOworICAgIGhlaWdodDogMTAwdmg7CisgICAgZGlzcGxheTogZmxleDsKKyAg
ICBhbGlnbi1pdGVtczogY2VudGVyOworICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOworfQor
Y2FudmFzIHsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICB3aWR0aDogMTAwdnc7CisgICAgaGVp
Z2h0OiAxMDB2aDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0iZ2wtbWF0cml4LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgaWQ9ImxpYnJhcnkiIHR5cGU9Ingtc2hhZGVyL3gtbWV0YWwiPgorI2lu
Y2x1ZGUgPG1ldGFsX3N0ZGxpYj4KKyNpbmNsdWRlIDxzaW1kL3NpbWQuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIG1ldGFsOworCitzdHJ1Y3QgdW5pZm9ybV90Cit7CisgICAgc2ltZDo6ZmxvYXQ0eDQg
bW9kZWx2aWV3X3Byb2plY3Rpb25fbWF0cml4OworICAgIHNpbWQ6OmZsb2F0NHg0IG5vcm1hbF9t
YXRyaXg7CisgICAgc2ltZDo6ZmxvYXQ0ICAgYW1iaWVudF9jb2xvcjsKKyAgICBmbG9hdCAgICAg
ICAgICBtdWx0aXBsaWVyOworfSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCAoMjU2KSkpOworCitj
b25zdGFudCBmbG9hdDMgbGlnaHRfcG9zaXRpb24gPSBmbG9hdDMoMC4wLCAxLjAsIDEuMCk7Citj
b25zdGFudCBmbG9hdDQgbGlnaHRfY29sb3IgPSBmbG9hdDQoMSwgMC44LCAwLjgsIDEpOworCitz
dHJ1Y3QgdmVydGV4X3QKK3sKKyAgICBwYWNrZWRfZmxvYXQzIHBvc2l0aW9uOworICAgIHBhY2tl
ZF9mbG9hdDMgbm9ybWFsOworfTsKKworc3RydWN0IFZhcnlpbmcgeworICAgIGZsb2F0NCBwb3Np
dGlvbiBbW3Bvc2l0aW9uXV07CisgICAgaGFsZjQgY29sb3I7Cit9OworCisvLyB2ZXJ0ZXggc2hh
ZGVyIGZ1bmN0aW9uCit2ZXJ0ZXggVmFyeWluZyB2ZXJ0ZXhfZnVuY3Rpb24oZGV2aWNlIHZlcnRl
eF90KiB2ZXJ0ZXhfYXJyYXkgW1sgYnVmZmVyKDApIF1dLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0YW50IHVuaWZvcm1fdCYgdW5pZm9ybXMgW1sgYnVmZmVyKDEpIF1dLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2aWQgW1sgdmVydGV4
X2lkIF1dKQoreworICAgIFZhcnlpbmcgb3V0OworCisgICAgZmxvYXQ0IHBvc2l0aW9uID0gZmxv
YXQ0KGZsb2F0Myh2ZXJ0ZXhfYXJyYXlbdmlkXS5wb3NpdGlvbiksIDEuMCk7CisgICAgb3V0LnBv
c2l0aW9uID0gdW5pZm9ybXMubW9kZWx2aWV3X3Byb2plY3Rpb25fbWF0cml4ICogcG9zaXRpb247
CisKKyAgICBmbG9hdDMgbm9ybWFsID0gdmVydGV4X2FycmF5W3ZpZF0ubm9ybWFsOworICAgIGZs
b2F0NCBleWVfbm9ybWFsID0gbm9ybWFsaXplKHVuaWZvcm1zLm5vcm1hbF9tYXRyaXggKiBmbG9h
dDQobm9ybWFsLCAwLjApKTsKKworICAgIGZsb2F0IG5fZG90X2wgPSBkb3QoZXllX25vcm1hbC5y
Z2IsIG5vcm1hbGl6ZShsaWdodF9wb3NpdGlvbikpOworICAgIG5fZG90X2wgPSBmbWF4KDAuMCwg
bl9kb3RfbCk7CisKKyAgICBvdXQuY29sb3IgPSBoYWxmNCh1bmlmb3Jtcy5hbWJpZW50X2NvbG9y
ICsgbGlnaHRfY29sb3IgKiBuX2RvdF9sKTsKKworICAgIHJldHVybiBvdXQ7Cit9CisKKy8vIGZy
YWdtZW50IHNoYWRlciBmdW5jdGlvbgorZnJhZ21lbnQgaGFsZjQgZnJhZ21lbnRfZnVuY3Rpb24o
VmFyeWluZyBpbiBbW3N0YWdlX2luXV0pCit7CisgICAgcmV0dXJuIGluLmNvbG9yOworfTsKKwor
PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitjb25zdCBjcmVhdGVVbmlmb3JtID0gKCkgPT4gZ2V0VW5p
Zm9ybShuZXcgRmxvYXQzMkFycmF5KDY0KSk7CisKK2Z1bmN0aW9uIGdldFVuaWZvcm0oZmxvYXRB
cnJheSkKK3sKKyAgICBpZiAoIWZsb2F0QXJyYXkgfHwgZmxvYXRBcnJheS5sZW5ndGggIT0gNjQp
IHsKKyAgICAgICAgY29uc29sZS5sb2coIkluY29ycmVjdCBiYWNraW5nIHN0b3JlIGZvciB1bmlm
b3JtIik7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICAvLyBMYXlvdXQgaXMKKyAg
ICAvLyAwLTE1ID0gbW9kZWxfdmlld19wcm9qZWN0aW9uX21hdHJpeCAoZmxvYXQ0eDQpCisgICAg
Ly8gMTYtMzEgPSBub3JtYWwgbWF0cml4IChmbG9hdDR4NCkKKyAgICAvLyAzMi0zNSA9IGFtYmll
bnQgY29sb3IgKGZsb2F0NCkKKyAgICAvLyAzNiA9IG11bHRpcGxpZXIgKGludCkKKworICAgIHJl
dHVybiBuZXcgUHJveHkoZmxvYXRBcnJheSwgeworICAgICAgICBnZXQ6IGZ1bmN0aW9uICh0YXJn
ZXQsIG5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAobmFtZSkgeworICAgICAg
ICAgICAgY2FzZSAiYnVmZmVyIjoKKyAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0OworICAg
ICAgICAgICAgY2FzZSAibXZwIjoKKyAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0LnN1YmFy
cmF5KDAsIDE2KTsKKyAgICAgICAgICAgIGNhc2UgIm5vcm1hbCI6CisgICAgICAgICAgICAgICAg
cmV0dXJuIHRhcmdldC5zdWJhcnJheSgxNiwgMzIpOworICAgICAgICAgICAgY2FzZSAiYW1iaWVu
dENvbG9yIjoKKyAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0LnN1YmFycmF5KDMyLCAzNik7
CisgICAgICAgICAgICBjYXNlICJtdWx0aXBsaWVyIjoKKyAgICAgICAgICAgICAgICByZXR1cm4g
dGFyZ2V0WzQwXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0YXJnZXRbbmFt
ZV07CisgICAgICAgIH0sCisgICAgICAgIHNldDogZnVuY3Rpb24gKHRhcmdldCwgbmFtZSwgdmFs
dWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBjb3B5TWF0cml4ID0gKG1hdHJpeCwgYnVm
ZmVyLCBvZmZzZXQpID0+IHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE2
OyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgYnVmZmVyW29mZnNldCArIGldID0gbWF0cml4
W2ldOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3dp
dGNoIChuYW1lKSB7CisgICAgICAgICAgICBjYXNlICJtdnAiOgorICAgICAgICAgICAgICAgIGNv
cHlNYXRyaXgodmFsdWUsIHRhcmdldCwgMCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgY2FzZSAibm9ybWFsIjoKKyAgICAgICAgICAgICAgICBjb3B5TWF0cml4KHZhbHVl
LCB0YXJnZXQsIDE2KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjYXNl
ICJhbWJpZW50Q29sb3IiOgorICAgICAgICAgICAgICAgIHRhcmdldFszMl0gPSB2YWx1ZVswXTsK
KyAgICAgICAgICAgICAgICB0YXJnZXRbMzNdID0gdmFsdWVbMV07CisgICAgICAgICAgICAgICAg
dGFyZ2V0WzM0XSA9IHZhbHVlWzJdOworICAgICAgICAgICAgICAgIHRhcmdldFszNV0gPSB2YWx1
ZVszXTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjYXNlICJtdWx0aXBs
aWVyIjoKKyAgICAgICAgICAgICAgICB0YXJnZXRbMzZdID0gdmFsdWU7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGFyZ2V0W25hbWVdID0gdmFs
dWU7CisgICAgICAgIH0KKyAgICB9KTsKK30KKwordmFyIGtOdW1BY3RpdmVVbmlmb3JtQnVmZmVy
cyA9IDM7CisKK3ZhciBrTnVtYmVyT2ZCb3hlc1BlckF4aXMgPSA2OwordmFyIGtOdW1iZXJPZkJv
eGVzID0ga051bWJlck9mQm94ZXNQZXJBeGlzICoga051bWJlck9mQm94ZXNQZXJBeGlzOworCit2
YXIga0JveEJhc2VBbWJpZW50Q29sb3IgPSBbMC4yLCAwLjIsIDAuMiwgMS4wXTsKKwordmFyIGtG
T1ZZID0gNDUuMCAvIDE4MCAqIE1hdGguUEk7Cit2YXIga0V5ZSA9IHZlYzMuZnJvbVZhbHVlcygw
LjAsIDIuNzUsIC0yKTsKK3ZhciBrQ2VudGVyID0gdmVjMy5mcm9tVmFsdWVzKDAuMCwgMS41LCAx
LjApOwordmFyIGtVcCA9IHZlYzMuZnJvbVZhbHVlcygwLjAsIDEuMCwgMC4wKTsKK3ZhciBrRWRn
ZSA9IDEuNSAvIGtOdW1iZXJPZkJveGVzUGVyQXhpcyA7CisKK3ZhciBrQ3ViZVZlcnRleERhdGEg
PSBuZXcgRmxvYXQzMkFycmF5KAorWworICAgIGtFZGdlLCAta0VkZ2UsIGtFZGdlLCAwLjAsIC0x
LjAsIDAuMCwKKyAgICAta0VkZ2UsIC1rRWRnZSwga0VkZ2UsIDAuMCwgLTEuMCwgMC4wLAorICAg
IC1rRWRnZSwgLWtFZGdlLCAta0VkZ2UsIDAuMCwgLTEuMCwgMC4wLAorICAgIGtFZGdlLCAta0Vk
Z2UsIC1rRWRnZSwgMC4wLCAtMS4wLCAwLjAsCisgICAga0VkZ2UsIC1rRWRnZSwga0VkZ2UsIDAu
MCwgLTEuMCwgMC4wLAorICAgIC1rRWRnZSwgLWtFZGdlLCAta0VkZ2UsIDAuMCwgLTEuMCwgMC4w
LAorCisgICAga0VkZ2UsIGtFZGdlLCBrRWRnZSwgMS4wLCAwLjAsIDAuMCwKKyAgICBrRWRnZSwg
LWtFZGdlLCBrRWRnZSwgMS4wLCAwLjAsIDAuMCwKKyAgICBrRWRnZSwgLWtFZGdlLCAta0VkZ2Us
IDEuMCwgMC4wLCAwLjAsCisgICAga0VkZ2UsIGtFZGdlLCAta0VkZ2UsIDEuMCwgMC4wLCAwLjAs
CisgICAga0VkZ2UsIGtFZGdlLCBrRWRnZSwgMS4wLCAwLjAsIDAuMCwKKyAgICBrRWRnZSwgLWtF
ZGdlLCAta0VkZ2UsIDEuMCwgMC4wLCAwLjAsCisKKyAgICAta0VkZ2UsIGtFZGdlLCBrRWRnZSwg
MC4wLCAxLjAsIDAuMCwKKyAgICBrRWRnZSwga0VkZ2UsIGtFZGdlLCAwLjAsIDEuMCwgMC4wLAor
ICAgIGtFZGdlLCBrRWRnZSwgLWtFZGdlLCAwLjAsIDEuMCwgMC4wLAorICAgIC1rRWRnZSwga0Vk
Z2UsIC1rRWRnZSwgMC4wLCAxLjAsIDAuMCwKKyAgICAta0VkZ2UsIGtFZGdlLCBrRWRnZSwgMC4w
LCAxLjAsIDAuMCwKKyAgICBrRWRnZSwga0VkZ2UsIC1rRWRnZSwgMC4wLCAxLjAsIDAuMCwKKwor
ICAgIC1rRWRnZSwgLWtFZGdlLCBrRWRnZSwgLTEuMCwgMC4wLCAwLjAsCisgICAgLWtFZGdlLCBr
RWRnZSwga0VkZ2UsIC0xLjAsIDAuMCwgMC4wLAorICAgIC1rRWRnZSwga0VkZ2UsIC1rRWRnZSwg
LTEuMCwgMC4wLCAwLjAsCisgICAgLWtFZGdlLCAta0VkZ2UsIC1rRWRnZSwgLTEuMCwgMC4wLCAw
LjAsCisgICAgLWtFZGdlLCAta0VkZ2UsIGtFZGdlLCAtMS4wLCAwLjAsIDAuMCwKKyAgICAta0Vk
Z2UsIGtFZGdlLCAta0VkZ2UsIC0xLjAsIDAuMCwgMC4wLAorCisgICAga0VkZ2UsIGtFZGdlLCBr
RWRnZSwgMC4wLCAwLjAsIDEuMCwKKyAgICAta0VkZ2UsIGtFZGdlLCBrRWRnZSwgMC4wLCAwLjAs
IDEuMCwKKyAgICAta0VkZ2UsIC1rRWRnZSwga0VkZ2UsIDAuMCwgMC4wLCAxLjAsCisgICAgLWtF
ZGdlLCAta0VkZ2UsIGtFZGdlLCAwLjAsIDAuMCwgMS4wLAorICAgIGtFZGdlLCAta0VkZ2UsIGtF
ZGdlLCAwLjAsIDAuMCwgMS4wLAorICAgIGtFZGdlLCBrRWRnZSwga0VkZ2UsIDAuMCwgMC4wLCAx
LjAsCisKKyAgICBrRWRnZSwgLWtFZGdlLCAta0VkZ2UsIDAuMCwgMC4wLCAtMS4wLAorICAgIC1r
RWRnZSwgLWtFZGdlLCAta0VkZ2UsIDAuMCwgMC4wLCAtMS4wLAorICAgIC1rRWRnZSwga0VkZ2Us
IC1rRWRnZSwgMC4wLCAwLjAsIC0xLjAsCisgICAga0VkZ2UsIGtFZGdlLCAta0VkZ2UsIDAuMCwg
MC4wLCAtMS4wLAorICAgIGtFZGdlLCAta0VkZ2UsIC1rRWRnZSwgMC4wLCAwLjAsIC0xLjAsCisg
ICAgLWtFZGdlLCBrRWRnZSwgLWtFZGdlLCAwLjAsIDAuMCwgLTEuMAorXSk7CisKK3ZhciBwcm9q
ZWN0aW9uTWF0cml4ID0gbWF0NC5jcmVhdGUoKTsKK3ZhciB2aWV3TWF0cml4ID0gbWF0NC5jcmVh
dGUoKTsKKwordmFyIGNhbWVyYVJvdGF0aW9uID0gMDsKK3ZhciBjYW1lcmFBbHRpdHVkZSA9IDA7
CisKK3ZhciBncHU7Cit2YXIgY29tbWFuZFF1ZXVlOwordmFyIHJlbmRlclBhc3NEZXNjcmlwdG9y
OwordmFyIHJlbmRlclBpcGVsaW5lU3RhdGU7Cit2YXIgZGVwdGhTdGVuY2lsU3RhdGU7CisKK3Zh
ciBzdGFydFRpbWU7Cit2YXIgZWxhcHNlZFRpbWU7CisKK3ZhciB1bmlmb3JtQnVmZmVycyA9IG5l
dyBBcnJheShrTnVtQWN0aXZlVW5pZm9ybUJ1ZmZlcnMpOwordmFyIGN1cnJlbnRVbmlmb3JtQnVm
ZmVySW5kZXggPSAwOworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGluaXQsIGZh
bHNlKTsKKworZnVuY3Rpb24gaW5pdCgpIHsKKworICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKKyAgICB2YXIgY2FudmFzU2l6ZSA9IGNhbnZhcy5nZXRC
b3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICBjYW52YXMud2lkdGggPSBjYW52YXNTaXplLndpZHRo
OworICAgIGNhbnZhcy5oZWlnaHQgPSBjYW52YXNTaXplLmhlaWdodDsKKworICAgIHZhciBhc3Bl
Y3QgPSBNYXRoLmFicyhjYW52YXNTaXplLndpZHRoIC8gY2FudmFzU2l6ZS5oZWlnaHQpOworICAg
IG1hdDQucGVyc3BlY3RpdmUocHJvamVjdGlvbk1hdHJpeCwga0ZPVlksIGFzcGVjdCwgMC4xLCAx
MDAuMCk7CisgICAgbWF0NC5sb29rQXQodmlld01hdHJpeCwga0V5ZSwga0NlbnRlciwga1VwKTsK
KworICAgIGdwdSA9IGNhbnZhcy5nZXRDb250ZXh0KCJ3ZWJncHUiKTsKKyAgICBjb21tYW5kUXVl
dWUgPSBncHUuY3JlYXRlQ29tbWFuZFF1ZXVlKCk7CisKKyAgICB2YXIgbGlicmFyeSA9IGdwdS5j
cmVhdGVMaWJyYXJ5KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsaWJyYXJ5IikudGV4dCk7Cisg
ICAgdmFyIHZlcnRleEZ1bmN0aW9uID0gbGlicmFyeS5mdW5jdGlvbldpdGhOYW1lKCJ2ZXJ0ZXhf
ZnVuY3Rpb24iKTsKKyAgICB2YXIgZnJhZ21lbnRGdW5jdGlvbiA9IGxpYnJhcnkuZnVuY3Rpb25X
aXRoTmFtZSgiZnJhZ21lbnRfZnVuY3Rpb24iKTsKKworICAgIHZhciBwaXBlbGluZURlc2NyaXB0
b3IgPSBuZXcgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCk7CisgICAgcGlwZWxpbmVE
ZXNjcmlwdG9yLnZlcnRleEZ1bmN0aW9uID0gdmVydGV4RnVuY3Rpb247CisgICAgcGlwZWxpbmVE
ZXNjcmlwdG9yLmZyYWdtZW50RnVuY3Rpb24gPSBmcmFnbWVudEZ1bmN0aW9uOworICAgIHBpcGVs
aW5lRGVzY3JpcHRvci5jb2xvckF0dGFjaG1lbnRzWzBdLnBpeGVsRm9ybWF0ID0gZ3B1LlBpeGVs
Rm9ybWF0QkdSQThVbm9ybTsKKyAgICBwaXBlbGluZURlc2NyaXB0b3IuZGVwdGhBdHRhY2htZW50
UGl4ZWxGb3JtYXQgPSBncHUuUGl4ZWxGb3JtYXREZXB0aDMyRmxvYXQ7CisKKyAgICByZW5kZXJQ
aXBlbGluZVN0YXRlID0gZ3B1LmNyZWF0ZVJlbmRlclBpcGVsaW5lU3RhdGUocGlwZWxpbmVEZXNj
cmlwdG9yKTsKKworICAgIHZhciBkZXB0aFN0ZW5jaWxEZXNjcmlwdG9yID0gbmV3IFdlYkdQVURl
cHRoU3RlbmNpbERlc2NyaXB0b3IoKTsKKyAgICBkZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmRlcHRo
V3JpdGVFbmFibGVkID0gdHJ1ZTsKKyAgICBkZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmRlcHRoQ29t
cGFyZUZ1bmN0aW9uID0gImxlc3MiOworCisgICAgZGVwdGhTdGVuY2lsU3RhdGUgPSBncHUuY3Jl
YXRlRGVwdGhTdGVuY2lsU3RhdGUoZGVwdGhTdGVuY2lsRGVzY3JpcHRvcik7CisKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGtOdW1BY3RpdmVVbmlmb3JtQnVmZmVyczsgaSsrKSB7CisgICAgICAg
IHVuaWZvcm1CdWZmZXJzW2ldID0gW107CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwga051
bWJlck9mQm94ZXM7IGorKykgeworICAgICAgICAgICAgdmFyIHVuaWZvcm0gPSBjcmVhdGVVbmlm
b3JtKCk7CisgICAgICAgICAgICBpZiAoaiAlIDIpIHsKKyAgICAgICAgICAgICAgICB1bmlmb3Jt
Lm11bHRpcGxpZXIgPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
dW5pZm9ybS5tdWx0aXBsaWVyID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHVuaWZv
cm0uYW1iaWVudENvbG9yID0ga0JveEJhc2VBbWJpZW50Q29sb3I7CisKKyAgICAgICAgICAgIHVu
aWZvcm1CdWZmZXJzW2ldLnB1c2goZ3B1LmNyZWF0ZUJ1ZmZlcih1bmlmb3JtLmJ1ZmZlcikpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgdmFyIGRlcHRoVGV4dHVyZURlc2NyaXB0b3IgPSBuZXcg
V2ViR1BVVGV4dHVyZURlc2NyaXB0b3IoZ3B1LlBpeGVsRm9ybWF0RGVwdGgzMkZsb2F0LCBjYW52
YXNTaXplLndpZHRoLCBjYW52YXNTaXplLmhlaWdodCwgZmFsc2UpOworICAgIGRlcHRoVGV4dHVy
ZURlc2NyaXB0b3IudGV4dHVyZVR5cGUgPSBncHUuVGV4dHVyZVR5cGUyRDsKKyAgICBkZXB0aFRl
eHR1cmVEZXNjcmlwdG9yLnNhbXBsZUNvdW50ID0gMTsKKyAgICBkZXB0aFRleHR1cmVEZXNjcmlw
dG9yLnVzYWdlID0gZ3B1LlRleHR1cmVVc2FnZVVua25vd247CisgICAgZGVwdGhUZXh0dXJlRGVz
Y3JpcHRvci5zdG9yYWdlTW9kZSA9IGdwdS5TdG9yYWdlTW9kZVByaXZhdGU7CisKKyAgICB2YXIg
ZGVwdGhUZXh0dXJlID0gZ3B1LmNyZWF0ZVRleHR1cmUoZGVwdGhUZXh0dXJlRGVzY3JpcHRvcik7
CisKKyAgICByZW5kZXJQYXNzRGVzY3JpcHRvciA9IG5ldyBXZWJHUFVSZW5kZXJQYXNzRGVzY3Jp
cHRvcigpOworICAgIHJlbmRlclBhc3NEZXNjcmlwdG9yLmNvbG9yQXR0YWNobWVudHNbMF0ubG9h
ZEFjdGlvbiA9IGdwdS5Mb2FkQWN0aW9uQ2xlYXI7CisgICAgcmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
Y29sb3JBdHRhY2htZW50c1swXS5zdG9yZUFjdGlvbiA9IGdwdS5TdG9yZUFjdGlvblN0b3JlOwor
ICAgIHJlbmRlclBhc3NEZXNjcmlwdG9yLmNvbG9yQXR0YWNobWVudHNbMF0uY2xlYXJDb2xvciA9
IFswLjM1LCAwLjY1LCAwLjg1LCAxLjBdOworICAgIHJlbmRlclBhc3NEZXNjcmlwdG9yLmRlcHRo
QXR0YWNobWVudC5sb2FkQWN0aW9uID0gZ3B1LkxvYWRBY3Rpb25DbGVhcjsKKyAgICByZW5kZXJQ
YXNzRGVzY3JpcHRvci5kZXB0aEF0dGFjaG1lbnQuc3RvcmVBY3Rpb24gPSBncHUuU3RvcmVBY3Rp
b25Eb250Q2FyZTsKKyAgICByZW5kZXJQYXNzRGVzY3JpcHRvci5kZXB0aEF0dGFjaG1lbnQuY2xl
YXJEZXB0aCA9IDEuMDsKKyAgICByZW5kZXJQYXNzRGVzY3JpcHRvci5kZXB0aEF0dGFjaG1lbnQu
dGV4dHVyZSA9IGRlcHRoVGV4dHVyZTsKKworICAgIHZlcnRleEJ1ZmZlciA9IGdwdS5jcmVhdGVC
dWZmZXIoa0N1YmVWZXJ0ZXhEYXRhKTsKKworICAgIHN0YXJ0VGltZSA9IERhdGUubm93KCk7Cisg
ICAgcmVuZGVyKCk7Cit9CisKK3ZhciBzbW9vdGhzdGVwID0gKG1pbiwgbWF4LCB2YWx1ZSkgPT4g
eworICAgIHZhciB4ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oMSwgKHZhbHVlIC0gbWluKSAvICht
YXggLSBtaW4pKSk7CisgICAgcmV0dXJuIHggKiB4ICogKDMgLSAyICogeCk7Cit9OworCit2YXIg
aW5UaW1lUmFuZ2UgPSAobm93LCBzdGFydCwgZW5kLCBwZXJpb2QpID0+IHsKKyAgICB2YXIgb2Zm
c2V0ID0gbm93ICUgcGVyaW9kOworICAgIHJldHVybiBvZmZzZXQgPj0gc3RhcnQgJiYgb2Zmc2V0
IDw9IGVuZDsKK307CisKK3ZhciB0aW1lUmFuZ2VPZmZzZXQgPSAobm93LCBzdGFydCwgZW5kLCBw
ZXJpb2QpID0+IHsKKyAgICBpZiAoIWluVGltZVJhbmdlKSB7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKyAgICB2YXIgb2Zmc2V0ID0gbm93ICUgcGVyaW9kOworICAgIHJldHVybiBNYXRoLm1p
bigxLCBNYXRoLm1heCgwLCAob2Zmc2V0IC0gc3RhcnQpIC8gKGVuZCAtIHN0YXJ0KSkpOworfTsK
KwordmFyIG1pZGRsZVBlYWtUaW1lUmFuZ2VPZmZzZXQgPSAobm93LCBzdGFydCwgZW5kLCBwZXJp
b2QpID0+IHsKKyAgICB2YXIgb2Zmc2V0ID0gdGltZVJhbmdlT2Zmc2V0KG5vdywgc3RhcnQsIGVu
ZCwgcGVyaW9kKTsKKyAgICByZXR1cm4gMSAtIE1hdGguYWJzKDAuNSAtIG9mZnNldCkgKiAyOwor
fTsKKworZnVuY3Rpb24gcmVuZGVyKCkgeworCisgICAgZWxhcHNlZFRpbWUgPSAoRGF0ZS5ub3co
KSAtIHN0YXJ0VGltZSkgLyAxMDAwOworCisgICAgY2FtZXJhUm90YXRpb24gPSBNYXRoLlBJICog
MiAqICgxIC0gdGltZVJhbmdlT2Zmc2V0KGVsYXBzZWRUaW1lLCAwLCAxMSwgMTEpKTsKKyAgICBj
YW1lcmFBbHRpdHVkZSA9IE1hdGguc2luKGVsYXBzZWRUaW1lIC8gNiAqIE1hdGguUEkpICsgMTsK
KworICAgIHZhciBleWUgPSB2ZWMzLmNyZWF0ZSgpOworICAgIHZlYzMuYWRkKGV5ZSwga0V5ZSwg
dmVjMy5mcm9tVmFsdWVzKDAsIGNhbWVyYUFsdGl0dWRlLCAwKSk7CisgICAgbWF0NC5sb29rQXQo
dmlld01hdHJpeCwgZXllLCBrQ2VudGVyLCBrVXApOworCisgICAgdXBkYXRlVW5pZm9ybURhdGEo
Y3VycmVudFVuaWZvcm1CdWZmZXJJbmRleCk7CisKKyAgICB2YXIgY29tbWFuZEJ1ZmZlciA9IGNv
bW1hbmRRdWV1ZS5jcmVhdGVDb21tYW5kQnVmZmVyKCk7CisKKyAgICB2YXIgZHJhd2FibGUgPSBn
cHUubmV4dERyYXdhYmxlKCk7CisKKyAgICByZW5kZXJQYXNzRGVzY3JpcHRvci5jb2xvckF0dGFj
aG1lbnRzWzBdLnRleHR1cmUgPSBkcmF3YWJsZS50ZXh0dXJlOworCisgICAgdmFyIGNvbW1hbmRF
bmNvZGVyID0gY29tbWFuZEJ1ZmZlci5jcmVhdGVSZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNj
cmlwdG9yKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKKyAgICBjb21tYW5kRW5jb2Rlci5zZXREZXB0
aFN0ZW5jaWxTdGF0ZShkZXB0aFN0ZW5jaWxTdGF0ZSk7CisgICAgY29tbWFuZEVuY29kZXIuc2V0
UmVuZGVyUGlwZWxpbmVTdGF0ZShyZW5kZXJQaXBlbGluZVN0YXRlKTsKKyAgICBjb21tYW5kRW5j
b2Rlci5zZXRWZXJ0ZXhCdWZmZXIodmVydGV4QnVmZmVyLCAwLCAwKTsKKworICAgIGZvciAodmFy
IGdlb21ldHJ5QnVmZmVyIG9mIHVuaWZvcm1CdWZmZXJzW2N1cnJlbnRVbmlmb3JtQnVmZmVySW5k
ZXhdKSB7CisgICAgICAgIGNvbW1hbmRFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcihnZW9tZXRyeUJ1
ZmZlciwgMCwgMSk7CisgICAgICAgIGNvbW1hbmRFbmNvZGVyLmRyYXdQcmltaXRpdmVzKGdwdS5Q
cmltaXRpdmVUeXBlVHJpYW5nbGUsIDAsIGtDdWJlVmVydGV4RGF0YS5sZW5ndGgpOworICAgIH0K
KworICAgIGNvbW1hbmRFbmNvZGVyLmVuZEVuY29kaW5nKCk7CisgICAgY29tbWFuZEJ1ZmZlci5w
cmVzZW50RHJhd2FibGUoZHJhd2FibGUpOworICAgIGNvbW1hbmRCdWZmZXIuY29tbWl0KCk7CisK
KyAgICBjdXJyZW50VW5pZm9ybUJ1ZmZlckluZGV4ID0gKGN1cnJlbnRVbmlmb3JtQnVmZmVySW5k
ZXggKyAxKSAlIGtOdW1BY3RpdmVVbmlmb3JtQnVmZmVyczsKKyAgICByZXF1ZXN0QW5pbWF0aW9u
RnJhbWUocmVuZGVyKTsKK30KKworZnVuY3Rpb24gdXBkYXRlVW5pZm9ybURhdGEoaW5kZXgpIHsK
KworCisgICAgdmFyIGJhc2VNb2RlbFZpZXdNYXRyaXggPSBtYXQ0LmNyZWF0ZSgpOworICAgIG1h
dDQudHJhbnNsYXRlKGJhc2VNb2RlbFZpZXdNYXRyaXgsIGJhc2VNb2RlbFZpZXdNYXRyaXgsIHZl
YzMuZnJvbVZhbHVlcygwLCAtMSAqIGNhbWVyYUFsdGl0dWRlLCA1KSk7CisgICAgbWF0NC5yb3Rh
dGUoYmFzZU1vZGVsVmlld01hdHJpeCwgYmFzZU1vZGVsVmlld01hdHJpeCwgY2FtZXJhUm90YXRp
b24sIHZlYzMuZnJvbVZhbHVlcygwLCAxLCAwKSk7CisKKyAgICBtYXQ0Lm11bHRpcGx5KGJhc2VN
b2RlbFZpZXdNYXRyaXgsIHZpZXdNYXRyaXgsIGJhc2VNb2RlbFZpZXdNYXRyaXgpOworCisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBrTnVtYmVyT2ZCb3hlc1BlckF4aXM7IGkrKykgeworICAgICAg
ICBmb3IgKHZhciBqID0gMDsgaiA8IGtOdW1iZXJPZkJveGVzUGVyQXhpczsgaisrKSB7CisKKyAg
ICAgICAgICAgIHZhciBib3hJbmRleCA9IGkgKiBrTnVtYmVyT2ZCb3hlc1BlckF4aXMgKyBqOwor
CisgICAgICAgICAgICB2YXIgbW9kZWxWaWV3TWF0cml4ID0gbWF0NC5jcmVhdGUoKTsKKworICAg
ICAgICAgICAgLy8gUG9zaXRpb24gdGhlIGN1YmUgaW4gWCxZLgorICAgICAgICAgICAgdmFyIHRy
YW5zbGF0aW9uTWF0cml4ID0gbWF0NC5jcmVhdGUoKTsKKyAgICAgICAgICAgIGlmIChrTnVtYmVy
T2ZCb3hlc1BlckF4aXMgPiAxKSB7CisgICAgICAgICAgICAgICAgdmFyIHN0ZXAgPSA0IC8gKGtO
dW1iZXJPZkJveGVzUGVyQXhpcyAtIDEpOworICAgICAgICAgICAgICAgIG1hdDQudHJhbnNsYXRl
KHRyYW5zbGF0aW9uTWF0cml4LCB0cmFuc2xhdGlvbk1hdHJpeCwgdmVjMy5mcm9tVmFsdWVzKGog
KiBzdGVwIC0gMiwgMCwgaSAqIHN0ZXAgLSAyKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIG1hdDQudHJhbnNsYXRlKHRyYW5zbGF0aW9uTWF0cml4LCB0cmFuc2xhdGlv
bk1hdHJpeCwgdmVjMy5mcm9tVmFsdWVzKDAsIDAsIDApKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIHRyYW5zbGF0ZUVsYXBzZWRPZmZzZXQgPSBlbGFwc2VkVGltZSArIGJveElu
ZGV4ICogMC42OworICAgICAgICAgICAgaWYgKGluVGltZVJhbmdlKHRyYW5zbGF0ZUVsYXBzZWRP
ZmZzZXQsIDEwLCAxMiwgMjMpKSB7CisgICAgICAgICAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IHNt
b290aHN0ZXAoMCwgMSwgbWlkZGxlUGVha1RpbWVSYW5nZU9mZnNldCh0cmFuc2xhdGVFbGFwc2Vk
T2Zmc2V0LCAxMCwgMTIsIDIzKSkgKiAwLjQ7CisgICAgICAgICAgICAgICAgbWF0NC50cmFuc2xh
dGUodHJhbnNsYXRpb25NYXRyaXgsIHRyYW5zbGF0aW9uTWF0cml4LCB2ZWMzLmZyb21WYWx1ZXMo
MCwgdHJhbnNsYXRlLCAwKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBzY2Fs
ZU1hdHJpeCA9IG1hdDQuY3JlYXRlKCk7CisgICAgICAgICAgICB2YXIgc2NhbGVFbGFwc2VkT2Zm
c2V0ID0gZWxhcHNlZFRpbWUgKyBib3hJbmRleCAqIDAuMTsKKyAgICAgICAgICAgIGlmIChpblRp
bWVSYW5nZShzY2FsZUVsYXBzZWRPZmZzZXQsIDIsIDYsIDE5KSkgeworICAgICAgICAgICAgICAg
IHZhciBzY2FsZSA9IHNtb290aHN0ZXAoMCwgMSwgbWlkZGxlUGVha1RpbWVSYW5nZU9mZnNldChz
Y2FsZUVsYXBzZWRPZmZzZXQsIDIsIDYsIDE5KSkgKiAwLjUgKyAxOworICAgICAgICAgICAgICAg
IG1hdDQuc2NhbGUoc2NhbGVNYXRyaXgsIHNjYWxlTWF0cml4LCB2ZWMzLmZyb21WYWx1ZXMoc2Nh
bGUsIHNjYWxlLCBzY2FsZSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWF0NC5tdWx0
aXBseShtb2RlbFZpZXdNYXRyaXgsIHRyYW5zbGF0aW9uTWF0cml4LCBzY2FsZU1hdHJpeCk7CisK
KyAgICAgICAgICAgIC8vIFJvdGF0ZSB0aGUgY3ViZS4KKyAgICAgICAgICAgIHZhciByb3RhdGlv
bk1hdHJpeCA9IG1hdDQuY3JlYXRlKCk7CisgICAgICAgICAgICB2YXIgcm90YXRpb25FbGFwc2Vk
T2Zmc2V0ID0gZWxhcHNlZFRpbWUgKyAoa051bWJlck9mQm94ZXMgLSBib3hJbmRleCkgKiAwLjE7
CisgICAgICAgICAgICBpZiAoaW5UaW1lUmFuZ2Uocm90YXRpb25FbGFwc2VkT2Zmc2V0LCAzLCA3
LCAxMSkpIHsKKyAgICAgICAgICAgICAgICB2YXIgcm90YXRpb24gPSBzbW9vdGhzdGVwKDAsIDEs
IHRpbWVSYW5nZU9mZnNldChyb3RhdGlvbkVsYXBzZWRPZmZzZXQsIDMsIDcsIDExKSkgKiBNYXRo
LlBJICogMjsKKyAgICAgICAgICAgICAgICBtYXQ0LnJvdGF0ZShyb3RhdGlvbk1hdHJpeCwgcm90
YXRpb25NYXRyaXgsIHJvdGF0aW9uLCB2ZWMzLmZyb21WYWx1ZXMoMC41LCAxLCAxKSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBtYXQ0Lm11bHRpcGx5KG1vZGVsVmlld01hdHJpeCwgbW9k
ZWxWaWV3TWF0cml4LCByb3RhdGlvbk1hdHJpeCk7CisKKyAgICAgICAgICAgIG1hdDQubXVsdGlw
bHkobW9kZWxWaWV3TWF0cml4LCBiYXNlTW9kZWxWaWV3TWF0cml4LCBtb2RlbFZpZXdNYXRyaXgp
OworCisgICAgICAgICAgICB2YXIgbm9ybWFsTWF0cml4ID0gbWF0NC5jbG9uZShtb2RlbFZpZXdN
YXRyaXgpOworICAgICAgICAgICAgbWF0NC50cmFuc3Bvc2Uobm9ybWFsTWF0cml4LCBub3JtYWxN
YXRyaXgpOworICAgICAgICAgICAgbWF0NC5pbnZlcnQobm9ybWFsTWF0cml4LCBub3JtYWxNYXRy
aXgpOworCisgICAgICAgICAgICB2YXIgdW5pZm9ybSA9IGdldFVuaWZvcm0obmV3IEZsb2F0MzJB
cnJheSh1bmlmb3JtQnVmZmVyc1tpbmRleF1baSAqIGtOdW1iZXJPZkJveGVzUGVyQXhpcyArIGpd
LmNvbnRlbnRzKSk7CisKKyAgICAgICAgICAgIHVuaWZvcm0ubm9ybWFsID0gbm9ybWFsTWF0cml4
OworCisgICAgICAgICAgICB2YXIgbW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCA9IG1hdDQuY3Jl
YXRlKCk7CisgICAgICAgICAgICBtYXQ0Lm11bHRpcGx5KG1vZGVsVmlld1Byb2plY3Rpb25NYXRy
aXgsIHByb2plY3Rpb25NYXRyaXgsIG1vZGVsVmlld01hdHJpeCk7CisKKyAgICAgICAgICAgIHVu
aWZvcm0ubXZwID0gbW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeDsKKworICAgICAgICAgICAgdmFy
IGNvbG9yRWxhcHNlZE9mZnNldCA9IGVsYXBzZWRUaW1lICsgYm94SW5kZXggKiAwLjE1OworICAg
ICAgICAgICAgaWYgKGluVGltZVJhbmdlKGNvbG9yRWxhcHNlZE9mZnNldCwgMiwgMywgMTApKSB7
CisgICAgICAgICAgICAgICAgdmFyIHJlZEJvb3N0ID0gbWlkZGxlUGVha1RpbWVSYW5nZU9mZnNl
dChjb2xvckVsYXBzZWRPZmZzZXQsIDIsIDMsIDEwKSAqIDAuNTsKKyAgICAgICAgICAgICAgICB1
bmlmb3JtLmFtYmllbnRDb2xvclswXSA9IE1hdGgubWluKDEuMCwgTWF0aC5tYXgoMCwga0JveEJh
c2VBbWJpZW50Q29sb3JbMF0gKyByZWRCb29zdCkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICB1bmlmb3JtLmFtYmllbnRDb2xvclswXSA9IGtCb3hCYXNlQW1iaWVudENv
bG9yWzBdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29sb3JFbGFwc2VkT2Zmc2V0ID0g
ZWxhcHNlZFRpbWUgKyAoa051bWJlck9mQm94ZXMgLSBib3hJbmRleCkgKiAwLjE7CisgICAgICAg
ICAgICBpZiAoaW5UaW1lUmFuZ2UoY29sb3JFbGFwc2VkT2Zmc2V0LCA3LCAxMSwgMjEpKSB7Cisg
ICAgICAgICAgICAgICAgdmFyIGdyZWVuQm9vc3QgPSBtaWRkbGVQZWFrVGltZVJhbmdlT2Zmc2V0
KGNvbG9yRWxhcHNlZE9mZnNldCwgNywgMTEsIDIxKSAqIDAuMzsKKyAgICAgICAgICAgICAgICB1
bmlmb3JtLmFtYmllbnRDb2xvclsxXSA9IE1hdGgubWluKDEuMCwgTWF0aC5tYXgoMCwga0JveEJh
c2VBbWJpZW50Q29sb3JbMV0gKyBncmVlbkJvb3N0KSk7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIHVuaWZvcm0uYW1iaWVudENvbG9yWzFdID0ga0JveEJhc2VBbWJpZW50
Q29sb3JbMV07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzPjwvY2FudmFzPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304103</attachid>
            <date>2017-03-10 17:09:57 -0800</date>
            <delta_ts>2017-03-10 18:03:09 -0800</delta_ts>
            <desc>Frontend patch that should build when WEBGPU not defined</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>220461</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcKaW5kZXggZTU1N2NlMDBjZDQuLjZhMWYyZGMxMzY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9T
b3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAt
MjE2LDcgKzIxNiw3IEBAIEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBID0gOwogRU5BQkxFX1dF
QkFTU0VNQkxZID0gOwogRU5BQkxFX1dFQkdMID0gRU5BQkxFX1dFQkdMOwogRU5BQkxFX1dFQkdM
MiA9IEVOQUJMRV9XRUJHTDI7Ci1FTkFCTEVfV0VCR1BVID0gRU5BQkxFX1dFQkdQVTsKK0VOQUJM
RV9XRUJHUFUgPSA7CiBFTkFCTEVfV0VCR1BVW3Nkaz1pcGhvbmVzaW11bGF0b3IqXSA9IDsKIEVO
QUJMRV9XRUJfQU5JTUFUSU9OUyA9IEVOQUJMRV9XRUJfQU5JTUFUSU9OUzsKIEVOQUJMRV9XRUJf
QVVESU8gPSBFTkFCTEVfV0VCX0FVRElPOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5k
ZXggNzY1NTA0YzlkNjkuLjFhZjUxNDliZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTU2Miw2ICs1NjIsMjUgQEAgSlNfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29y
ZSkvaHRtbC9jYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUp
L2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaWRsIFwKICAgICAkKFdlYkNvcmUp
L2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaWRsIFwKKyAgICAkKFdlYkNv
cmUpL2h0bWwvY2FudmFzL1dlYkdQVUJ1ZmZlci5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9j
YW52YXMvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9jYW52
YXMvV2ViR1BVQ29tbWFuZFF1ZXVlLmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9X
ZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL2Nh
bnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9j
YW52YXMvV2ViR1BVRHJhd2FibGUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dl
YkdQVUZ1bmN0aW9uLmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHUFVMaWJy
YXJ5LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJDb21tYW5k
RW5jb2Rlci5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyaW5n
Q29udGV4dC5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yLmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9X
ZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5pZGwgXAorICAgICQoV2Vi
Q29yZSkvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0
b3IuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXNj
cmlwdG9yLmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwv
Y2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwgXAorICAgICQoV2ViQ29y
ZSkvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5pZGwgXAorICAgICQoV2Vi
Q29yZSkvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZS5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRt
bC9jYW52YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0
bWwvdHJhY2svQXVkaW9UcmFjay5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9BdWRp
b1RyYWNrTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9EYXRhQ3VlLmlkbCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggYjgxNGQzMTVhNjAuLjA2NGVjY2RkZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDA1LDYgKzE0MDUsMjkgQEAK
IAkJMzE5QUUwNjMxNDJENkIyNDAwNjU2M0ExIC8qIFN0eWxlRmlsdGVyRGF0YS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTlBRTA2MTE0MkQ2QjI0
MDA2NTYzQTEgLyogU3R5bGVGaWx0ZXJEYXRhLmNwcCAqLzsgfTsKIAkJMzE5QUUwNjQxNDJENkIy
NDAwNjU2M0ExIC8qIFN0eWxlRmlsdGVyRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzE5QUUwNjIxNDJENkIyNDAwNjU2M0ExIC8qIFN0eWxlRmls
dGVyRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTMxOUZCRDVGMTVEMkY0NjQwMDk2NDBBNiAvKiBDYWNoZWRJbWFnZUNsaWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE5RkJENUQxNUQyRjQ0
NDAwOTY0MEE2IC8qIENhY2hlZEltYWdlQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzFBMDg5MDQxRTczN0Q1MTAwM0I2NjA5IC8qIFdl
YkdQVUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMUEwODhDNjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVQnVmZmVyLmNwcCAqLzsgfTsK
KwkJMzFBMDg5MDUxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg4QzkxRTcz
N0I0RDAwM0I2NjA5IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuY3BwICovOyB9OworCQkzMUEwODkw
NjFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVQ29tbWFuZFF1ZXVlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OENDMUU3MzdCNEQwMDNCNjYw
OSAvKiBXZWJHUFVDb21tYW5kUXVldWUuY3BwICovOyB9OworCQkzMUEwODkwNzFFNzM3RDUxMDAz
QjY2MDkgLyogV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODhDRjFFNzM3QjREMDAzQjY2MDkg
LyogV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAgKi87IH07CisJCTMxQTA4OTA4MUU3
MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODhEMjFFNzM3QjREMDAzQjY2
MDkgLyogV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwICovOyB9OworCQkzMUEwODkwOTFFNzM3
RDUxMDAzQjY2MDkgLyogV2ViR1BVRHJhd2FibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg4RDUxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQ
VURyYXdhYmxlLmNwcCAqLzsgfTsKKwkJMzFBMDg5MEExRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQ
VUVudW1zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMxQTA4OEQ4MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVFbnVtcy5jcHAgKi87IH07CisJCTMx
QTA4OTBCMUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODhEQjFFNzM3QjREMDAzQjY2
MDkgLyogV2ViR1BVRnVuY3Rpb24uY3BwICovOyB9OworCQkzMUEwODkwQzFFNzM3RDUxMDAzQjY2
MDkgLyogV2ViR1BVTGlicmFyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMUEwODhERTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVTGlicmFyeS5j
cHAgKi87IH07CisJCTMxQTA4OTBEMUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg4RTEx
RTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVU9iamVjdC5jcHAgKi87IH07CisJCTMxQTA4OTBFMUU3
MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODhFMzFFNzM3QjREMDAz
QjY2MDkgLyogV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwICovOyB9OworCQkzMUEwODkw
RjFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODhFNjFFNzM3QjREMDAz
QjY2MDkgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAgKi87IH07CisJCTMxQTA4OTEwMUU3
MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg4RTkx
RTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5j
cHAgKi87IH07CisJCTMxQTA4OTExMUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODhFQzFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovOyB9OworCQkzMUEwODkxMjFF
NzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFB
MDg4RUYxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmNwcCAqLzsgfTsKKwkJMzFBMDg5MTMxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQ
VVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMxQTA4OEYyMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQ
YXNzRGVzY3JpcHRvci5jcHAgKi87IH07CisJCTMxQTA4OTE0MUU3MzdENTEwMDNCNjYwOSAvKiBX
ZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg4RjUxRTczN0I0RDAw
M0I2NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5j
cHAgKi87IH07CisJCTMxQTA4OTE1MUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzFBMDg4RjgxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvci5jcHAgKi87IH07CisJCTMxQTA4OTE2MUU3MzdENTEwMDNCNjYwOSAvKiBXZWJH
UFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMxQTA4OEZCMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQ
aXBlbGluZVN0YXRlLmNwcCAqLzsgfTsKKwkJMzFBMDg5MTcxRTczN0Q1MTAwM0I2NjA5IC8qIFdl
YkdQVVRleHR1cmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzFBMDg4RkUxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVRleHR1cmUuY3BwICovOyB9
OworCQkzMUEwODkxODFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVVGV4dHVyZURlc2NyaXB0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5
MDExRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmNwcCAqLzsgfTsK
KwkJMzFBMDg5MTkxRTczN0Q1NTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MUEwODhDNDFFNzM3QjJDMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0Q3VzdG9t
LmNwcCAqLzsgfTsKKwkJMzFBMDg5MUExRTczN0Q1NTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OEM1MUU3MzdCMkMwMDNCNjYwOSAvKiBKU1dl
YkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvckN1c3RvbS5jcHAgKi87IH07CiAJCTMx
QTc5NUM2MTg4OEJBREMwMDM4MkY5MCAvKiBKU0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTc5NUM0MTg4OEJB
RDEwMDM4MkY5MCAvKiBKU0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcCAqLzsgfTsKIAkJMzFBNzk1
QzcxODg4QkNCMjAwMzgyRjkwIC8qIEFOR0xFSW5zdGFuY2VkQXJyYXlzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUE3OTVDMjE4ODhCNzI0MDAzODJG
OTAgLyogQU5HTEVJbnN0YW5jZWRBcnJheXMuaCAqLzsgfTsKIAkJMzFBNzk1QzgxODg4QkNCNTAw
MzgyRjkwIC8qIEFOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTc5NUMxMTg4OEI3MjQwMDM4MkY5MCAvKiBBTkdM
RUluc3RhbmNlZEFycmF5cy5jcHAgKi87IH07CkBAIC04Nzc3LDYgKzg4MDAsNzAgQEAKIAkJMzE5
QUUwNjExNDJENkIyNDAwNjU2M0ExIC8qIFN0eWxlRmlsdGVyRGF0YS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZUZpbHRlckRhdGEuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzMTlBRTA2MjE0MkQ2QjI0MDA2NTYzQTEgLyogU3R5bGVGaWx0
ZXJEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlRmlsdGVyRGF0
YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTlGQkQ1RDE1RDJGNDQ0MDA5NjQw
QTYgLyogQ2FjaGVkSW1hZ2VDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ2FjaGVkSW1hZ2VDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFB
MDg4QzQxRTczN0IyQzAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdQVVJlbmRlcmlu
Z0NvbnRleHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhD
NTFFNzM3QjJDMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0
b3JDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJH
UFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3JDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkzMUEwODhDNjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVQnVmZmVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUJ1ZmZlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEM3MUU3MzdCNEQwMDNCNjYw
OSAvKiBXZWJHUFVCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
R1BVQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEM4MUU3MzdC
NEQwMDNCNjYwOSAvKiBXZWJHUFVCdWZmZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdl
YkdQVUJ1ZmZlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEM5MUU3
MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVDb21tYW5kQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUNvbW1hbmRCdWZmZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkzMUEwODhDQTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVQ29t
bWFuZEJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVDb21t
YW5kQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OENCMUU3MzdC
NEQwMDNCNjYwOSAvKiBXZWJHUFVDb21tYW5kQnVmZmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJHUFVDb21tYW5kQnVmZmVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzFBMDg4Q0MxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUNvbW1hbmRRdWV1ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVDb21tYW5kUXVldWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhDRDFFNzM3QjREMDAzQjY2MDkg
LyogV2ViR1BVQ29tbWFuZFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkdQVUNvbW1hbmRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEw
ODhDRTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVQ29tbWFuZFF1ZXVlLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXZWJHUFVDb21tYW5kUXVldWUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzMUEwODhDRjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRGVwdGhTdGVuY2ls
RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJH
UFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzFBMDg4RDAxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVRGVwdGhTdGVuY2ls
RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhEMTFFNzM3
QjREMDAzQjY2MDkgLyogV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEQyMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVE
ZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTMxQTA4OEQzMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhENDFFNzM3QjREMDAzQjY2
MDkgLyogV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzFBMDg4RDUxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVURyYXdhYmxlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVURyYXdhYmxlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RDYxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQ
VURyYXdhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVURyYXdh
YmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEQ3MUU3MzdCNEQwMDNC
NjYwOSAvKiBXZWJHUFVEcmF3YWJsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BV
RHJhd2FibGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhEODFFNzM3
QjREMDAzQjY2MDkgLyogV2ViR1BVRW51bXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViR1BVRW51bXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzMUEwODhEOTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRW51bXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVRW51bXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMzFBMDg4REExRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUVudW1zLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVFbnVtcy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTMxQTA4OERCMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVGdW5jdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVGdW5jdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OERDMUU3MzdCNEQwMDNCNjYwOSAv
KiBXZWJHUFVGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJH
UFVGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhERDFFNzM3
QjREMDAzQjY2MDkgLyogV2ViR1BVRnVuY3Rpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFdlYkdQVUZ1bmN0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4
REUxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUxpYnJhcnkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVTGlicmFyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTMxQTA4OERGMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVMaWJyYXJ5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUxpYnJhcnkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RTAxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQ
VUxpYnJhcnkuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVUxpYnJhcnkuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhFMTFFNzM3QjREMDAzQjY2MDkgLyog
V2ViR1BVT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YkdQVU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEUyMUU3
MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViR1BVT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMx
QTA4OEUzMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5kZXJDb21tYW5k
RW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEU0MUU3MzdC
NEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhFNTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BV
UmVuZGVyQ29tbWFuZEVuY29kZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVJl
bmRlckNvbW1hbmRFbmNvZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFB
MDg4RTYxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEU3MUU3MzdCNEQwMDNCNjYw
OSAvKiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzFBMDg4RTgxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhFOTFFNzM3QjREMDAzQjY2MDkgLyog
V2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEVBMUU3MzdCNEQwMDNC
NjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEVCMUU3MzdCNEQwMDNC
NjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEVDMUU3MzdCNEQwMDNCNjYwOSAv
KiBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEVE
MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzMUEwODhFRTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzFBMDg4RUYxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0
dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RjAxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQ
VVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEYxMUU3MzdCNEQwMDNCNjYw
OSAvKiBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0
b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhGMjFFNzM3QjREMDAz
QjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhGMzFFNzM3QjREMDAzQjY2MDkgLyogV2Vi
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzFBMDg4RjQxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlw
dG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRv
ci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEY1MUU3MzdCNEQwMDNC
NjYwOSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzFBMDg4RjYxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RjcxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQ
VVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RjgxRTczN0I0RDAwM0I2
NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhGOTFFNzM3QjREMDAzQjY2MDkg
LyogV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkzMUEwODhGQTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzMUEwODhGQjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBl
bGluZVN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RkMxRTcz
N0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhGRDFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BV
UmVuZGVyUGlwZWxpbmVTdGF0ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVu
ZGVyUGlwZWxpbmVTdGF0ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4
OEZFMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVUZXh0dXJlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVRleHR1cmUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzMUEwODhGRjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVVGV4dHVyZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVUZXh0dXJlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTAwMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJH
UFVUZXh0dXJlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVUZXh0dXJlLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5MDExRTczN0I0RDAwM0I2NjA5IC8q
IFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMzFBMDg5MDIxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVRleHR1cmVEZXNj
cmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVRleHR1cmVE
ZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTAzMUU3MzdC
NEQwMDNCNjYwOSAvKiBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzMUE3OTVDMTE4ODhCNzI0MDAzODJGOTAgLyogQU5HTEVJbnN0YW5jZWRBcnJh
eXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQU5HTEVJbnN0YW5j
ZWRBcnJheXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUE3OTVDMjE4ODhC
NzI0MDAzODJGOTAgLyogQU5HTEVJbnN0YW5jZWRBcnJheXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQU5HTEVJbnN0YW5jZWRBcnJheXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzFBNzk1QzMxODg4QjcyNDAwMzgyRjkwIC8qIEFOR0xFSW5zdGFuY2VkQXJy
YXlzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBTkdMRUluc3RhbmNlZEFycmF5cy5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzU0Myw2ICsxNzYzMCw2OCBAQAogCQkJ
CTc3QTE3QTc0MTJGMjg2NDIwMDRFMDJGNiAvKiBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNw
cCAqLywKIAkJCQk3N0ExN0E3NTEyRjI4NjQyMDA0RTAyRjYgLyogV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUy5oICovLAogCQkJCTc3QTE3QTc2MTJGMjg2NDIwMDRFMDJGNiAvKiBXZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTLmlkbCAqLywKKwkJCQkzMUEwODhDNjFFNzM3QjREMDAzQjY2MDkgLyog
V2ViR1BVQnVmZmVyLmNwcCAqLywKKwkJCQkzMUEwODhDNzFFNzM3QjREMDAzQjY2MDkgLyogV2Vi
R1BVQnVmZmVyLmggKi8sCisJCQkJMzFBMDg4QzgxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUJ1
ZmZlci5pZGwgKi8sCisJCQkJMzFBMDg4QzkxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUNvbW1h
bmRCdWZmZXIuY3BwICovLAorCQkJCTMxQTA4OENBMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVD
b21tYW5kQnVmZmVyLmggKi8sCisJCQkJMzFBMDg4Q0IxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQ
VUNvbW1hbmRCdWZmZXIuaWRsICovLAorCQkJCTMxQTA4OENDMUU3MzdCNEQwMDNCNjYwOSAvKiBX
ZWJHUFVDb21tYW5kUXVldWUuY3BwICovLAorCQkJCTMxQTA4OENEMUU3MzdCNEQwMDNCNjYwOSAv
KiBXZWJHUFVDb21tYW5kUXVldWUuaCAqLywKKwkJCQkzMUEwODhDRTFFNzM3QjREMDAzQjY2MDkg
LyogV2ViR1BVQ29tbWFuZFF1ZXVlLmlkbCAqLywKKwkJCQkzMUEwODhDRjFFNzM3QjREMDAzQjY2
MDkgLyogV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzFBMDg4RDAx
RTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCAqLywKKwkJ
CQkzMUEwODhEMTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRv
ci5pZGwgKi8sCisJCQkJMzFBMDg4RDIxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVURlcHRoU3Rl
bmNpbFN0YXRlLmNwcCAqLywKKwkJCQkzMUEwODhEMzFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BV
RGVwdGhTdGVuY2lsU3RhdGUuaCAqLywKKwkJCQkzMUEwODhENDFFNzM3QjREMDAzQjY2MDkgLyog
V2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaWRsICovLAorCQkJCTMxQTA4OEQ1MUU3MzdCNEQwMDNC
NjYwOSAvKiBXZWJHUFVEcmF3YWJsZS5jcHAgKi8sCisJCQkJMzFBMDg4RDYxRTczN0I0RDAwM0I2
NjA5IC8qIFdlYkdQVURyYXdhYmxlLmggKi8sCisJCQkJMzFBMDg4RDcxRTczN0I0RDAwM0I2NjA5
IC8qIFdlYkdQVURyYXdhYmxlLmlkbCAqLywKKwkJCQkzMUEwODhEODFFNzM3QjREMDAzQjY2MDkg
LyogV2ViR1BVRW51bXMuY3BwICovLAorCQkJCTMxQTA4OEQ5MUU3MzdCNEQwMDNCNjYwOSAvKiBX
ZWJHUFVFbnVtcy5oICovLAorCQkJCTMxQTA4OERBMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVF
bnVtcy5pZGwgKi8sCisJCQkJMzFBMDg4REIxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUZ1bmN0
aW9uLmNwcCAqLywKKwkJCQkzMUEwODhEQzFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRnVuY3Rp
b24uaCAqLywKKwkJCQkzMUEwODhERDFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRnVuY3Rpb24u
aWRsICovLAorCQkJCTMxQTA4OERFMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVMaWJyYXJ5LmNw
cCAqLywKKwkJCQkzMUEwODhERjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVTGlicmFyeS5oICov
LAorCQkJCTMxQTA4OEUwMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVMaWJyYXJ5LmlkbCAqLywK
KwkJCQkzMUEwODhFMTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVT2JqZWN0LmNwcCAqLywKKwkJ
CQkzMUEwODhFMjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVT2JqZWN0LmggKi8sCisJCQkJMzFB
MDg4RTMxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcCAq
LywKKwkJCQkzMUEwODhFNDFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyQ29tbWFuZEVu
Y29kZXIuaCAqLywKKwkJCQkzMUEwODhFNTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVy
Q29tbWFuZEVuY29kZXIuaWRsICovLAorCQkJCTMxQTA4OEU2MUU3MzdCNEQwMDNCNjYwOSAvKiBX
ZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcCAqLywKKwkJCQkzMUEwODhFNzFFNzM3QjREMDAzQjY2
MDkgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oICovLAorCQkJCTMxQTA4OEU4MUU3MzdCNEQw
MDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmlkbCAqLywKKwkJCQkzMUEwODhFOTFF
NzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNw
cCAqLywKKwkJCQkzMUEwODhFQTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0F0
dGFjaG1lbnREZXNjcmlwdG9yLmggKi8sCisJCQkJMzFBMDg4RUIxRTczN0I0RDAwM0I2NjA5IC8q
IFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5pZGwgKi8sCisJCQkJMzFBMDg4
RUMxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yLmNwcCAqLywKKwkJCQkzMUEwODhFRDFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLywKKwkJCQkzMUEwODhFRTFFNzM3
QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3Iu
aWRsICovLAorCQkJCTMxQTA4OEVGMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzFBMDg4RjAxRTczN0I0RDAw
M0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8s
CisJCQkJMzFBMDg4RjExRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0
dGFjaG1lbnREZXNjcmlwdG9yLmlkbCAqLywKKwkJCQkzMUEwODhGMjFFNzM3QjREMDAzQjY2MDkg
LyogV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwICovLAorCQkJCTMxQTA4OEYzMUU3MzdC
NEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oICovLAorCQkJCTMxQTA4
OEY0MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwgKi8s
CisJCQkJMzFBMDg4RjUxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzFBMDg4RjYxRTczN0I0RDAwM0I2
NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oICov
LAorCQkJCTMxQTA4OEY3MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IuaWRsICovLAorCQkJCTMxQTA4OEY4MUU3MzdCNEQwMDNC
NjYwOSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwICovLAorCQkJCTMxQTA4
OEY5MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAq
LywKKwkJCQkzMUEwODhGQTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yLmlkbCAqLywKKwkJCQkzMUEwODhGQjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BV
UmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHAgKi8sCisJCQkJMzFBMDg4RkMxRTczN0I0RDAwM0I2NjA5
IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaCAqLywKKwkJCQkzMUEwODhGRDFFNzM3QjRE
MDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5pZGwgKi8sCisJCQkJMzFBMDg4
RkUxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVRleHR1cmUuY3BwICovLAorCQkJCTMxQTA4OEZG
MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVUZXh0dXJlLmggKi8sCisJCQkJMzFBMDg5MDAxRTcz
N0I0RDAwM0I2NjA5IC8qIFdlYkdQVVRleHR1cmUuaWRsICovLAorCQkJCTMxQTA4OTAxMUU3MzdC
NEQwMDNCNjYwOSAvKiBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzFBMDg5
MDIxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmggKi8sCisJCQkJ
MzFBMDg5MDMxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmlkbCAq
LywKIAkJCSk7CiAJCQlwYXRoID0gY2FudmFzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTIyODQ3LDggKzIyOTk2LDggQEAKIAkJCQk3QTc0RUNCQzEwMTgzOURBMDBCRjkzOUUgLyog
SlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwICovLAogCQkJCUJDRTFDNDNGMEQ5ODMw
RjQwMDNCMDJGMiAvKiBKU0xvY2F0aW9uQ3VzdG9tLmNwcCAqLywKIAkJCQkyRDlCRjc0ODFEQkZE
REY4MDA3QTdEOTkgLyogSlNNZWRpYUtleVNlc3Npb25DdXN0b20uY3BwICovLAotCQkJCTQxMEI3
RTcxMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgKi8sCiAJCQkJ
NDE1Q0RBRjYxRTZDRTBEMzAwNEYxMUVFIC8qIEpTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAg
Ki8sCisJCQkJNDEwQjdFNzExMDQ1RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9t
LmNwcCAqLywKIAkJCQlBMUU1QjMxRDFBQUQxREE0MDA2RUJFRkIgLyogSlNNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzQ3VzdG9tLmNwcCAqLywKIAkJCQlDNkYwOTE3RTE0M0EyQkI5MDA2ODU4NDkg
LyogSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcCAqLywKIAkJCQlCQ0Q5QzI2MDBDMTdBQTY3
MDA1QzkwQTIgLyogSlNOb2RlQ3VzdG9tLmNwcCAqLywKQEAgLTIyODYyLDYgKzIzMDExLDggQEAK
IAkJCQk3QzczRkIxNzE5MUVGODA4MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFt
ZXNwYWNlQ3VzdG9tLmNwcCAqLywKIAkJCQlCRTZERjcwODE3MUNBMkM1MDBERDUyQjggLyogSlNW
aWRlb1RyYWNrQ3VzdG9tLmNwcCAqLywKIAkJCQlEM0YzRDM1QTFBNjlBM0IwMDA1OUZDMkIgLyog
SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlQ3VzdG9tLmNwcCAqLywKKwkJCQkzMUEwODhDNDFF
NzM3QjJDMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCAqLywK
KwkJCQkzMUEwODhDNTFFNzM3QjJDMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3JDdXN0b20uY3BwICovLAogCQkJCUUxRkY4RjY2MTgwNzQ2MDgwMDEzMjY3
NCAvKiBKU1dlYktpdFN1YnRsZUNyeXB0b0N1c3RvbS5jcHAgKi8sCiAJCQkJRTFDQTVDQkIwRThD
RENBRjAwRThFRjkwIC8qIEpTV29ya2VyQ3VzdG9tLmNwcCAqLywKIAkJCQlFMTgyNThBQjBFRjND
RDcwMDA5MzMyNDIgLyogSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8sCkBAIC0yOTY3
Miw2ICsyOTgyMyw3IEBACiAJCQkJMjkxNEUzMDcxQ0FCNUE0NDAwNDk5NjZGIC8qIEFjY2Vzc2li
aWxpdHlBdHRhY2htZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3RjU3QUJDMUE1MDcyNzcw
MDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUY1MkE4RkQ3MUQwQThEMEUwMDczQ0Y0MiAvKiBBY2Nlc3NpYmlsaXR5TGFiZWwuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5MTQxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVVJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkzN0Y1N0FCRDFBNTA3MjdBMDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eUxpc3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMzdGNTdBQkUxQTUwNzI3RTAwODc2Rjk4IC8qIEFjY2Vzc2liaWxpdHlM
aXN0Qm94LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3RjU3QUJGMUE1MDcyODEwMDg3NkY5OCAv
KiBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5Nzk5
LDYgKzI5OTUxLDcgQEAKIAkJCQlBQUE3MjhGOTE2RDFEOEJDMDBEM0JCQzYgLyogQVhPYmplY3RD
YWNoZUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI5QTgxMjRCMEZCQjlDQTkwMDUxMDI5MyAv
KiBBWE9iamVjdENhY2hlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBOEM4MUYxMUUzRDM2
OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkzMUEwODkxNjFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzEyNEVFNzBDMjY0MUNEMDA5RTIzNDkgLyogQmFyUHJv
cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0NjBCQjYxNTFEMEExQkYwMDAyMjE4MTIgLyogQmFz
ZTY0VXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3OUU2MUM5MTI2Q0E1QzMwMEI2
M0U4RCAvKiBCYXNlQnV0dG9uSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk5MTIs
NiArMzAwNjUsNyBAQAogCQkJCUE1ODRGRTJCMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGlu
ZUFQSU1vZHVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTUwQjZBMTA5OURGMDI3MDA5MEQ3
ODEgLyogQ29tbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUZFMTM3NDE4NDAyQTY3MDA4
OTJGMTMgLyogQ29tbW9uQ3J5cHRvVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMx
QTA4OTBDMUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVMaWJyYXJ5LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGNjBGMzJDMURGQkIxMEIwMDQxNkQ2QyAvKiBDb21tb25WTS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3QzkzRjM0OTFBQTZCQTVFMDBBOThCQUIgLyogQ29tcGlsZWRDb250ZW50RXh0
ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyRjRFNzhBMUU0NUJFQTEwMDZENzEwNSAv
KiBDb21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTk1MSw2ICsz
MDEwNSw3IEBACiAJCQkJMUFCNDBFRTExQkY0MjdENjAwQkE4MUJFIC8qIENvbnRleHRNZW51SXRl
bS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjAyODEyQjAyNjc2MDBDMUEzNTkgLyogQ29u
dm9sdmVyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTQyNEM5MzE2NEI1MkM4MDBGMzJE
NDAgLyogQ29va2llSmFyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxQTA4OTBBMUU3MzdENTEw
MDNCNjYwOSAvKiBXZWJHUFVFbnVtcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RUU2ODQ2MjEy
RDI2RTM4MDBFNzk0MTUgLyogQ29va2llSmFyQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTE0MjRDOTAxNjRCNDYwQjAwRjMyRDQwIC8qIENvb2tpZUphck1hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTdFRTY4NDYzMTJEMjZFMzgwMEU3OTQxNSAvKiBDb29raWVTdG9yYWdlQ0ZOZXQuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0zMDIxNyw2ICszMDM3Miw3IEBACiAJCQkJMTg4NjA0QjMwRjJF
NjU0QTAwMEI2NDQzIC8qIERPTVRpbWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc2RkMyQjBC
MTIzNzBEQTAwMDZBOTkxQSAvKiBET01Ub2tlbkxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MkUzN0RGREExMkRCQUZCODAwQTZCMjMzIC8qIERPTVVSTC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkzMUEwODkxOTFFNzM3RDU1MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0Q3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEOURFMTgxMTdBQUQ2QTQwMEVBMzg2RCAvKiBE
T01VUkxNZWRpYVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNUZDQzlGQzFCNERGN0Yy
MDBFNzIzMjYgLyogRE9NVVJMTWVkaWFTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQw
M0I5OTgwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdpbmRvdy5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTMwMzMzLDYgKzMwNDg5LDcgQEAKIAkJCQkwOEM5MjUxOTBGQ0M3QzRBMDA0ODBERUMgLyogRmls
dGVyRWZmZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxMzEzRjY1MTQ0M0IzNUYwMDZFMkE5
MCAvKiBGaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUVDRUI2
RDE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTMxQTA4OTBEMUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVPYmplY3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDlFQ0VCNkYxNDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThDRkYwNEQwQTE1NEYwOTAwMEE0MjM0IC8qIEZpeGVk
VGFibGVMYXlvdXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUE1MjhFODMxN0Q3RjUyRjAwQUE5
NTE4IC8qIEZsb2F0aW5nT2JqZWN0cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwNDA4LDYgKzMw
NTY1LDcgQEAKIAkJCQkxNDMyRTg0OTBDNTE0OTNGMDBCMTUwMEYgLyogR0NDb250cm9sbGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTRGQjM5MEFEMTVFRjYxRjMwMDdBRDUxRiAvKiBHZW5lcmF0
ZWRJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4MzAwMzBGNTFCN0QzM0I1MDBFRDNBQUMg
LyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMx
QTA4OTA5MUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVEcmF3YWJsZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwNzIwQjBBMDE0RDMzMjM1MDA2NDI5NTUgLyogR2VuZXJpY0V2ZW50UXVldWUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q0QkU1MkExQ0UxMzZFRjAwOUQ4N0RBIC8qIEdlbmVyaWNU
YXNrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc0NkFGMjMxNEY0RERFNjAwM0U3QTcw
IC8qIEdlb2xvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzA1MjksNiArMzA2ODcsNyBA
QAogCQkJCTk3N0IzODcwMTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MUGFyc2VyU2NoZWR1bGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDQzBFODc1MUJGRTcwRTkwMDhGN0Y1MCAvKiBIVE1MUGlj
dHVyZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg3MUQ0NTcwQTEyN0NCQzAwQjEy
QTY4IC8qIEhUTUxQbHVnSW5FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxQTA4OTEw
MUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDQxNTI5MkYwRTFBRThBMDAwQzRBMkQwIC8qIEhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThFQTdDQUQwQTE5MkI5
QzAwQThFRjVGIC8qIEhUTUxQcmVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0Iz
ODcyMTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MUHJlbG9hZFNjYW5uZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0zMDY3OSw2ICszMDgzOCw3IEBACiAJCQkJN0ExRjJCNTIxMjZDNjFCMjAwMDZBN0U2
IC8qIEluc3BlY3RvckNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzgxQjk1QjBFOTcz
MzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4MkFCMTc0MzEyNEI5OUVDMDBDNTA2OUQgLyogSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMzFBMDg5MTcxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVVRleHR1cmUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEE5Q0M4MjAxNkJGOUJCNDAwRUM2NDVBIC8qIEluc3Bl
Y3RvckNTU09NV3JhcHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FCMEIxQzAxMjExQTYy
MjAwQTc2OTQwIC8qIEluc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDFGMDYyMTUwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDk4NSw2ICszMTE0NSw3IEBACiAJCQkJMUFFMkFCMjEw
QTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTExhYmVsRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1NzY4MTQ0NDFFNzBDQjFCMDBFNzc3NTQgLyogSlNBZXNLZXlQYXJhbXMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUFFMkFCMjMwQTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTExlZ2VuZEVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5MTgxRTczN0Q1MTAwM0I2NjA5IC8q
IFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTJBQjI1
MEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxMSUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTgwRTdCMTAwQTE5RDYwNjAwN0ZCOEM1IC8qIEpTSFRNTExpbmtFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBRTJBQjI3MEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxNYXBFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzEwMTIsNiArMzExNzMsNyBAQAogCQkJCUUxRTZF
RUE0MEI2MjhEQTgwMDVGMkY3MCAvKiBKU0hUTUxTZWxlY3RFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDMTdGOTY2MEI2NEVCQjgwMDRBNjVDQiAvKiBKU0hUTUxTZWxlY3RFbGVtZW50
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlCNjlEM0I4MUI5OTEwMDcwMEUzNTEyQiAv
KiBKU0hUTUxTbG90RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODkxMzFFNzM3
RDUxMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTQ0NjE0M0IwQ0Q2ODlDQzAwRkFEQTc1IC8qIEpTSFRNTFNvdXJjZUVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc1MkQzOEQxNDEzMTA0QjAwMzMwNUJEIC8qIEpTSFRN
TFNwYW5FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU3QjBGMEExOUQ2MDYwMDdG
QjhDNSAvKiBKU0hUTUxTdHlsZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTE3OCw2
ICszMTM0MCw3IEBACiAJCQkJNTdFMjMzNzMxRENENDZCNjAwRjI4RDAxIC8qIEpTUnNhSGFzaGVk
SW1wb3J0UGFyYW1zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3NjhFNDM2MURCNzUyNzQwMEQw
QTRGNyAvKiBKU1JzYUhhc2hlZEtleUdlblBhcmFtcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
N0ZFREQ0MzFEQjZENzYwMDBFQjk2RjUgLyogSlNSc2FLZXlHZW5QYXJhbXMuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMzFBMDg5MDYxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVUNvbW1hbmRRdWV1
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1NzA2QTY5QTFEREU1RTg1MDBBMDNCMTQgLyogSlNS
c2FPYWVwUGFyYW1zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3RTIzMzYxMURDN0Q2QUEwMEYy
OEQwMSAvKiBKU1JzYU90aGVyUHJpbWVzSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzM3
OTRFNTE5RUUyRkYyMDBFNUEwNDUgLyogSlNSVENDb25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMzE0MTIsNiArMzE1NzUsNyBAQAogCQkJCTdBRjlCMjBFMThDRkI1RjQwMEM2NEJF
RiAvKiBKU1ZUVFJlZ2lvbkxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ4MkQ3RjcxM0Q0
QzhCRDAwNEU0MzcyIC8qIEpTV2F2ZVNoYXBlck5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MTIwREUzRjkxQzg3QzVBQjAwQjZENEREIC8qIEpTV2ViQW5pbWF0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTMxQTA4OTA4MUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxT
dGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEM0YzRDM2MzFBNjlCMTkwMDA1OUZDMkIgLyog
SlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQzRjNEMzZD
MUE2OUI3RDUwMDU5RkMyQiAvKiBKU1dlYkdMMlJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTdEMjBGNjIxMDdGNDA2OTAwQTgwMzkyIC8qIEpTV2ViR0xBY3Rp
dmVJbmZvLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzE3NzksNiArMzE5NDMsNyBAQAogCQkJCTE0
NzdFNzc2MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0Q1RTVCNjExQTE1RjE1NjAwMEM2MDlFIC8qIFBhZ2VDb25maWd1cmF0aW9uLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUYzODIwODkyMTQ3RDM1RjkwMDEwQkMwNiAvKiBQYWdlQ29uc29sZUFn
ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxQTA4OTExMUU3MzdENTEwMDNCNjYwOSAvKiBX
ZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlEQUVEMjAzMDE2RjI0NDJCMDA3MEVDMEYgLyogUGFnZUNvbnNvbGVDbGllbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTVBMkFGMEIxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1
Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUYzNDc0MkRDMTM0MzYyRjAwMDUzMUJDMiAv
KiBQYWdlRGVidWdnZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMyMDUwLDYgKzMyMjE1
LDcgQEAKIAkJCQkyNkMxNUNGNjE4NTdFMTVEMDBGMTVDMDMgLyogUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlFMUJBMDAzMTE2RkI5MkFDMDBCQTdBMzUgLyogUmVzb3VyY2VIYW5kbGVDbGllbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0U0MjhDRTUxM0UzNDA3RjAwM0I2NjFDIC8qIFJlc291cmNl
SGFuZGxlSU9TLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5MDUxRTczN0Q1MTAwM0I2NjA5
IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NTEw
Q0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTNFMjI3RTMwQUY1ODlBRDAwRDQ4MzI0IC8qIFJlc291cmNlTG9hZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdFRTY4NDc1MTJEMjZFNzAwMEU3OTQxNSAvKiBSZXNvdXJjZUxvYWRlckNG
TmV0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzIwNTgsNiArMzIyMjQsNyBAQAogCQkJCTk3M0Uz
MjU2MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWROb3RpZmllci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk2QjY5M0EzNDFDNTFBOTVEMDBCMDNCRUYgLyogUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E5MjlDQTYxQzU5OEE5RTAwNERGMjI2IC8qIFJl
c291cmNlTG9hZFN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5MEIxRTcz
N0Q1MTAwM0I2NjA5IC8qIFdlYkdQVUZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdB
RDNDREQ5MUM4QTAwMkYwMEYxMjY5OCAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2N0MwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNl
UmVxdWVzdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NkUxMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzIxNDcs
NiArMzIzMTQsNyBAQAogCQkJCTBGNjA1QUVDMTVGOTQ4NDgwMDRERjBDMCAvKiBTY3JvbGxpbmdD
b25zdHJhaW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUY2MkVFNzE0REEyMkE3MDA0MTU1
NkMgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDNEU0
MEUxODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJMzFBMDg5MUExRTczN0Q1NTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRjYy
RUU2MTREQTIyQTcwMDQxNTU2QyAvKiBTY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxQzYxQjBBMURFNTM2RTcwMDhBMjEyRCAvKiBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3REVFRTUxREU5NEFEQzAwQjkx
NjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbSBpbiBTb3VyY2VzICovLApA
QCAtMzIxODMsOSArMzIzNTEsMTEgQEAKIAkJCQlGNTVCM0REMTEyNTFGMTJEMDAzRUYyNjkgLyog
U2VhcmNoSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBFNzA1OEVFMUJDNUJDMTkw
MDQ1QTUwNyAvKiBTZWFyY2hQb3B1cE1lbnVDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTk3
NkYzNkVBMTQ2ODYyMjUwMDVFOTNCNCAvKiBTZWN1cml0eUNvbnRleHQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMzFBMDg5MEUxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlckNvbW1hbmRF
bmNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRDBFMEZBMEU5NzJDMzUwMDI2NURFQSAv
KiBTZWN1cml0eU9yaWdpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUUzQUEwQTFCOThCQ0FC
MDAzNkFEODEgLyogU2VjdXJpdHlPcmlnaW5EYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
RjdBRkM3MUE0OEE4QkMwMEM4RTRFNyAvKiBTZWN1cml0eU9yaWdpblBvbGljeS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkzMUEwODkxMjFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFz
c0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc0RDJE
QTQxNDZBNTM1RDAwRDUxRjhCIC8qIFNlY3VyaXR5UG9saWN5LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTk5Q0MwQjVEMThCRTk4NEEwMDZDRUJDQyAvKiBTZWdtZW50ZWRJbnB1dFN0b3JhZ2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjJDM0RBMkUwRDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRl
ZFN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMyMjkyLDYgKzMyNDYyLDcgQEAKIAkJCQkx
QTM3NjM2QjFBMkU2OEJCMDA5QTdFRTIgLyogU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTgxMDJDNTg4MTMyNUJCMTEwMERERTY3QSAvKiBTdHJpbmdDYWxs
YmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjM1NDBGMjBEMDA3ODJFMDAyMzgyRkEgLyog
U3RyaW5nVHJ1bmNhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxQTA4OTA0MUU3MzdENTEw
MDNCNjYwOSAvKiBXZWJHUFVCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE0QjgyMDQx
RDZERjBERjAwNzdFQkUzIC8qIFN0cnVjdHVyZWRDbG9uZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzVFQjZBMjBFODFEQzRGMDBCMjU5NjUgLyogU3R5bGVCYWNrZ3JvdW5kRGF0YS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQzVFQjY3RDBFODFENDIwMDBCMjU5NjUgLyogU3R5bGVCb3hEYXRh
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzI2NjEsMTIgKzMyODMyLDE0IEBACiAJCQkJNTJENUEx
OEYxQzU0NTkyMzAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUNERTgzREIxMTgzQzQ0MDYwMDMxRUFBMyAvKiBWaWRlb1BsYXliYWNr
UXVhbGl0eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDlEODI3OTFDN0I4RUUxMDA2RkYwNjYg
LyogVmlkZW9UZXh0dXJlQ29waWVyQ1YuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5MTUx
RTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCRTg4RTBERTE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCRTg4RTBFMTE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9U
cmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QzMzZGNjcxN0ZBMEFDNjAwREREQ0Qw
IC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDhC
NUE0MjE4MEQxNDlBMDA4QjhFNjUgLyogVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRUY0MThDRTExNzk2NzhDMDA5RDExMkMgLyogVmll
d3BvcnRBcmd1bWVudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjZGOUE4MzgxOEEwNDZBQzAw
QUVCODhBIC8qIFZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkz
MUEwODkwNzFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkzRkZGRjlBRDE1OUQ5QjA2MDAyMEJCRDUgLyogVmlld3Bv
cnRTdHlsZVJlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA5RTFGMDk5RTY0OTIw
MDU2RTU4MSAvKiBWaXNpYmxlUG9zaXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg4M0RG
MjcwRjNEMDQ1RDAwRjE5QkY2IC8qIFZpc2libGVTZWxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0zMjg0Niw2ICszMzAxOSw3IEBACiAJCQkJMkU0MzQ2NEYwRjU0NkE4MjAwQjBGMUJBIC8q
IFdvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMjcxQTE0MEVF
RUM4MDQwMEY2MTIxMyAvKiBXb3JrZXJOYXZpZ2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MkU0MzQ2NTIwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclJ1bkxvb3AuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMzFBMDg5MEYxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlcmluZ0NvbnRl
eHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU3RkQ3MUIxREI5NDIzRTAwNkFFMjRCIC8qIFdv
cmtlclJ1bnRpbWVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUE2NDNGRDBFQzA5N0Ew
MDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBNTRBMEM2NTFEQjgwNTM2MDAxN0E5MEIgLyogV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1l
bnRDdXN0b20uY3BwCmluZGV4IGE3OGIwMTg0NDM3Li5lMTY0MGYxY2IyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTQyLDYgKzQy
LDEwIEBACiAjaW5jbHVkZSAiSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCiAjZW5kaWYK
IAorI2lmIEVOQUJMRShXRUJHUFUpCisjaW5jbHVkZSAiSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0
LmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAjaW5jbHVkZSAiSlNUb3Vj
aC5oIgogI2luY2x1ZGUgIkpTVG91Y2hMaXN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCmluZGV4IDE3MmMw
ZDk5NzkxLi5iODUxOWNkMGI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKQEAgLTM3LDYgKzM3LDEwIEBA
CiAjaW5jbHVkZSAiSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCiAjZW5kaWYKIAorI2lm
IEVOQUJMRShXRUJHUFUpCisjaW5jbHVkZSAiSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCisj
ZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NjQsNiArNjgsMTEgQEAgSlNWYWx1ZSBKU0hUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEV4
ZWNTdGF0ZSYgc3RhdGUpCiAgICAgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCR1BVKQorICAg
IGlmIChIVE1MQ2FudmFzRWxlbWVudDo6aXNXZWJHUFVUeXBlKGNvbnRleHRJZCkpCisgICAgICAg
IHJldHVybiB0b0pTPElETE51bGxhYmxlPElETEludGVyZmFjZTxXZWJHUFVSZW5kZXJpbmdDb250
ZXh0Pj4+KHN0YXRlLCAqZ2xvYmFsT2JqZWN0KCksIHN0YXRpY19jYXN0PFdlYkdQVVJlbmRlcmlu
Z0NvbnRleHQqPih3cmFwcGVkKCkuZ2V0Q29udGV4dFdlYkdQVShjb250ZXh0SWQpKSk7CisjZW5k
aWYKKwogICAgIHJldHVybiBqc051bGwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3JDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHUFVSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3JDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi41YjBhMTM3ZTA4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yQ3VzdG9t
LmNwcApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTV2ViR1BVUmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5j
bHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNXZWJHUFVSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3Rh
dGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8V2ViR1BVUmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yPiYmIG9iamVjdCkKK3sKKyAgICBpZiAob2JqZWN0LT5pc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IoKSkKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8
V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+KGdsb2JhbE9iamVjdCwg
V1RGTW92ZShvYmplY3QpKTsKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxXZWJHUFVSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3I+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShvYmplY3QpKTsK
K30KKworSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciYgb2JqZWN0
KQoreworICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIG9iamVjdCk7Cit9CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dl
YkdQVVJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uYzNkMWMzMjViMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdQVVJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3Bw
CkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNXZWJHUFVSZW5kZXJpbmdD
b250ZXh0LmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCit1c2luZyBuYW1lc3BhY2UgSlNDOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0Ojp2
aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICB2aXNp
dG9yLmFkZE9wYXF1ZVJvb3QoJndyYXBwZWQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmlu
ZGV4IDRiNTFlZmU5Yzc0Li4xODRhOGUxM2ZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHAKQEAgLTYyLDYgKzYyLDEwIEBACiAjaW5jbHVkZSAiV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCR1BVKQorI2luY2x1
ZGUgIldlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAjaW5jbHVkZSAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCiAKQEAgLTE5NSw2ICsxOTksMTEg
QEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQo
Y29uc3QgU3RyaW5nJiB0eXBlKQogICAgIGlmIChIVE1MQ2FudmFzRWxlbWVudDo6aXMyZFR5cGUo
dHlwZSkpCiAgICAgICAgIHJldHVybiBnZXRDb250ZXh0MmQodHlwZSk7CiAKKyNpZiBFTkFCTEUo
V0VCR1BVKQorICAgIGlmIChIVE1MQ2FudmFzRWxlbWVudDo6aXNXZWJHUFVUeXBlKHR5cGUpKQor
ICAgICAgICByZXR1cm4gZ2V0Q29udGV4dFdlYkdQVSh0eXBlKTsKKyNlbmRpZgorCiAjaWYgRU5B
QkxFKFdFQkdMKQogICAgIGlmIChIVE1MQ2FudmFzRWxlbWVudDo6aXMzZFR5cGUodHlwZSkpCiAg
ICAgICAgIHJldHVybiBnZXRDb250ZXh0V2ViR0wodHlwZSk7CkBAIC0yOTgsNiArMzA3LDMxIEBA
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0V2Vi
R0woY29uc3QgU3RyaW5nJiB0eXBlLCBXCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJHUFUp
Citib29sIEhUTUxDYW52YXNFbGVtZW50Ojppc1dlYkdQVVR5cGUoY29uc3QgU3RyaW5nJiB0eXBl
KQoreworICAgIHJldHVybiB0eXBlID09ICJ3ZWJncHUiOworfQorCitDYW52YXNSZW5kZXJpbmdD
b250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dFdlYkdQVShjb25zdCBTdHJpbmcm
IHR5cGUpCit7CisgICAgQVNTRVJUKEhUTUxDYW52YXNFbGVtZW50Ojppc1dlYkdQVVR5cGUodHlw
ZSkpOworCisgICAgaWYgKG1fY29udGV4dCAmJiAhbV9jb250ZXh0LT5pc0dQVSgpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmICghbV9jb250ZXh0KSB7CisgICAgICAgIG1fY29u
dGV4dCA9IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZSgqdGhpcyk7CisgICAgICAgIGlm
IChtX2NvbnRleHQpIHsKKyAgICAgICAgICAgIC8vIE5lZWQgdG8gbWFrZSBzdXJlIGEgUmVuZGVy
TGF5ZXIgYW5kIGNvbXBvc2l0aW5nIGxheWVyIGdldCBjcmVhdGVkIGZvciB0aGUgQ2FudmFzCisg
ICAgICAgICAgICBpbnZhbGlkYXRlU3R5bGVBbmRMYXllckNvbXBvc2l0aW9uKCk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOworfQorI2VuZGlmCisKIHZv
aWQgSFRNTENhbnZhc0VsZW1lbnQ6OmRpZERyYXcoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewog
ICAgIGNsZWFyQ29waWVkSW1hZ2UoKTsKQEAgLTM1NSw2ICszODksMTIgQEAgdm9pZCBIVE1MQ2Fu
dmFzRWxlbWVudDo6cmVzZXQoKQogCiAgICAgc2V0U3VyZmFjZVNpemUobmV3U2l6ZSk7CiAKKyNp
ZiBFTkFCTEUoV0VCR1BVKQorICAgIC8vIEZJWE1FOiBXZWJHUFUgbmVlZHMgc29tZXRoaW5nIGhl
cmUgdG9vLgorICAgIGlmIChpc0dQVSgpICYmIG9sZFNpemUgIT0gc2l6ZSgpKQorICAgICAgICBz
dGF0aWNfY2FzdDxXZWJHUFVSZW5kZXJpbmdDb250ZXh0Kj4obV9jb250ZXh0LmdldCgpKS0+cmVz
aGFwZSh3aWR0aCgpLCBoZWlnaHQoKSk7CisjZW5kaWYKKwogI2lmIEVOQUJMRShXRUJHTCkKICAg
ICBpZiAoaXMzRCgpICYmIG9sZFNpemUgIT0gc2l6ZSgpKQogICAgICAgICBzdGF0aWNfY2FzdDxX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKj4obV9jb250ZXh0LmdldCgpKS0+cmVzaGFwZSh3aWR0
aCgpLCBoZWlnaHQoKSk7CkBAIC00MjMsMTIgKzQ2MywyNCBAQCB2b2lkIEhUTUxDYW52YXNFbGVt
ZW50OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHIp
CiAgICAgICAgIH0KICAgICB9CiAKLSNpZiBFTkFCTEUoV0VCR0wpICAgIAorI2lmIEVOQUJMRShX
RUJHUFUpCisgICAgaWYgKGlzR1BVKCkpCisgICAgICAgIHN0YXRpY19jYXN0PFdlYkdQVVJlbmRl
cmluZ0NvbnRleHQqPihtX2NvbnRleHQuZ2V0KCkpLT5tYXJrTGF5ZXJDb21wb3NpdGVkKCk7Cisj
ZW5kaWYKKworI2lmIEVOQUJMRShXRUJHTCkKICAgICBpZiAoaXMzRCgpKQogICAgICAgICBzdGF0
aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKj4obV9jb250ZXh0LmdldCgpKS0+bWFy
a0xheWVyQ29tcG9zaXRlZCgpOwogI2VuZGlmCiB9CiAKKyNpZiBFTkFCTEUoV0VCR1BVKQorYm9v
bCBIVE1MQ2FudmFzRWxlbWVudDo6aXNHUFUoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRl
eHQgJiYgbV9jb250ZXh0LT5pc0dQVSgpOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoV0VCR0wp
CiBib29sIEhUTUxDYW52YXNFbGVtZW50OjppczNEKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuaAppbmRleCBjZTA2ZmZiMWI1Ny4uNDhhMjE1ODhhNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKQEAgLTEwMCw2ICsxMDAsMTAg
QEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzM2RUeXBlKGNvbnN0IFN0cmluZyYpOwogICAg
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGdldENvbnRleHRXZWJHTChjb25zdCBTdHJpbmcmLCBX
ZWJHTENvbnRleHRBdHRyaWJ1dGVzJiYgPSB7IH0pOwogI2VuZGlmCisjaWYgRU5BQkxFKFdFQkdQ
VSkKKyAgICBzdGF0aWMgYm9vbCBpc1dlYkdQVVR5cGUoY29uc3QgU3RyaW5nJik7CisgICAgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCogZ2V0Q29udGV4dFdlYkdQVShjb25zdCBTdHJpbmcmKTsKKyNl
bmRpZgogCiAgICAgc3RhdGljIFN0cmluZyB0b0VuY29kaW5nTWltZVR5cGUoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8U3RyaW5nPiB0b0Rh
dGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxp
dHkpOwpAQCAtMTc2LDYgKzE4MCw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQkdMKQogICAg
IGJvb2wgaXMzRCgpIGNvbnN0OwogI2VuZGlmCisjaWYgRU5BQkxFKFdFQkdQVSkKKyAgICBib29s
IGlzR1BVKCkgY29uc3Q7CisjZW5kaWYKIAogICAgIEhhc2hTZXQ8Q2FudmFzT2JzZXJ2ZXIqPiBt
X29ic2VydmVyczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dD4g
bV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dC5oCmluZGV4IDc1OTA4MGY1MzFkLi40ZjBjNzE3OTkxOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaApA
QCAtNTQsNiArNTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzV2ViR0wxKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNXZWJHTDIoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXMzZCgpIGNvbnN0IHsgcmV0dXJuIGlzV2ViR0wx
KCkgfHwgaXNXZWJHTDIoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0dQVSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKCkge30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVCdWZmZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42ZWZjM2Q5NGU2YgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUJ1ZmZlci5j
cHAKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHUFVCdWZmZXIuaCIK
KworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVCdWZmZXIuaCIKKyNpbmNsdWRl
ICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZl
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXZWJHUFVCdWZmZXI+IFdlYkdQVUJ1
ZmZlcjo6Y3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIEFycmF5QnVmZmVy
VmlldyogZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVCdWZmZXIoY29u
dGV4dCwgZGF0YSkpOworfQorCitXZWJHUFVCdWZmZXI6OldlYkdQVUJ1ZmZlcihXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0KiBjb250ZXh0LCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEpCisgICAgOiBXZWJH
UFVPYmplY3QoY29udGV4dCkKK3sKKyAgICBtX2J1ZmZlciA9IGNvbnRleHQtPmRldmljZSgpLT5j
cmVhdGVCdWZmZXJGcm9tRGF0YShkYXRhKTsKK30KKworV2ViR1BVQnVmZmVyOjp+V2ViR1BVQnVm
ZmVyKCkKK3sKK30KKwordW5zaWduZWQgbG9uZyBXZWJHUFVCdWZmZXI6Omxlbmd0aCgpIGNvbnN0
Cit7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4g
bV9idWZmZXItPmxlbmd0aCgpOworfQorCitSZWZQdHI8QXJyYXlCdWZmZXI+IFdlYkdQVUJ1ZmZl
cjo6Y29udGVudHMoKSBjb25zdAoreworICAgIGlmICghbV9idWZmZXIpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgcmV0dXJuIG1fYnVmZmVyLT5jb250ZW50cygpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHUFVCdWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZTcw
ZWI0MDdkNDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHUFVCdWZmZXIuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQor
CisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgR1BVQnVmZmVyOworCitjbGFzcyBXZWJHUFVCdWZmZXIgOiBwdWJsaWMgV2ViR1BVT2JqZWN0
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJHUFVCdWZmZXIoKTsKKyAgICBzdGF0aWMgUmVm
PFdlYkdQVUJ1ZmZlcj4gY3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBBcnJheUJ1ZmZl
clZpZXcqKTsKKworICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKCkgY29uc3Q7CisgICAgUmVmUHRy
PEFycmF5QnVmZmVyPiBjb250ZW50cygpIGNvbnN0OworCisgICAgTWV0YWxCdWZmZXIqIGJ1ZmZl
cigpIHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgV2ViR1BVQnVm
ZmVyKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBBcnJheUJ1ZmZlclZpZXcqKTsKKyAgICBSZWZQ
dHI8TWV0YWxCdWZmZXI+IG1fYnVmZmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUJ1
ZmZlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVCdWZmZXIuaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43YmM4OWNkN2NjNQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUJ1ZmZlci5pZGwK
QEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1X
ZWJHUFUKK10gaW50ZXJmYWNlIFdlYkdQVUJ1ZmZlciB7CisKKyAgICByZWFkb25seSBhdHRyaWJ1
dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIEFycmF5QnVm
ZmVyVmlldyBjb250ZW50czsKKworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjJkMzU4YTM5NmJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKQEAgLTAsMCArMSw4NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJHUFVDb21tYW5kQnVmZmVyLmgiCisKKyNpZiBFTkFCTEUoV0VC
R1BVKQorCisjaW5jbHVkZSAiR1BVQ29tbWFuZEJ1ZmZlci5oIgorI2luY2x1ZGUgIkdQVUNvbW1h
bmRRdWV1ZS5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJXZWJHUFVDb21tYW5k
UXVldWUuaCIKKyNpbmNsdWRlICJXZWJHUFVEcmF3YWJsZS5oIgorI2luY2x1ZGUgIldlYkdQVVJl
bmRlcmluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5o
IgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IFdlYkdQVUNvbW1hbmRCdWZmZXI6
OmNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBXZWJHUFVDb21tYW5kUXVl
dWUqIHF1ZXVlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUNvbW1hbmRCdWZm
ZXIoY29udGV4dCwgcXVldWUpKTsKK30KKworV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6V2ViR1BVQ29t
bWFuZEJ1ZmZlcihXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBXZWJHUFVDb21tYW5k
UXVldWUqIHF1ZXVlKQorICAgIDogV2ViR1BVT2JqZWN0KGNvbnRleHQpCit7CisgICAgTE9HKFdl
YkdQVSwgIi0tIFdlYkdQVUNvbW1hbmRCdWZmZXI6OldlYkdQVUNvbW1hbmRCdWZmZXIoKSBORVci
KTsKKyAgICBtX2NvbW1hbmRCdWZmZXIgPSBxdWV1ZS0+Y29tbWFuZFF1ZXVlKCktPmNyZWF0ZUNv
bW1hbmRCdWZmZXIoKTsKK30KKworV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6fldlYkdQVUNvbW1hbmRC
dWZmZXIoKQoreworICAgIExPRyhXZWJHUFUsICItLSBXZWJHUFVDb21tYW5kQnVmZmVyOjp+V2Vi
R1BVQ29tbWFuZEJ1ZmZlcigpIERFTEVURSIpOworfQorCit2b2lkIFdlYkdQVUNvbW1hbmRCdWZm
ZXI6OmNvbW1pdCgpCit7CisgICAgTE9HKFdlYkdQVSwgIi0tIFdlYkdQVUNvbW1hbmRCdWZmZXI6
OmNvbW1pdCgpIik7CisgICAgaWYgKCFtX2NvbW1hbmRCdWZmZXIpCisgICAgICAgIHJldHVybjsK
KworICAgIHJldHVybiBtX2NvbW1hbmRCdWZmZXItPmNvbW1pdCgpOworfQorCit2b2lkIFdlYkdQ
VUNvbW1hbmRCdWZmZXI6OnByZXNlbnREcmF3YWJsZShXZWJHUFVEcmF3YWJsZSYgZHJhd2FibGUp
Cit7CisgICAgTE9HKFdlYkdQVSwgIi0tIFdlYkdQVUNvbW1hbmRCdWZmZXI6OnByZXNlbnREcmF3
YWJsZSgpIik7CisgICAgaWYgKCFtX2NvbW1hbmRCdWZmZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHJldHVybiBtX2NvbW1hbmRCdWZmZXItPnByZXNlbnREcmF3YWJsZShkcmF3YWJsZS5kcmF3
YWJsZSgpKTsKK30KKworUmVmUHRyPFdlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyPiBXZWJHUFVD
b21tYW5kQnVmZmVyOjpjcmVhdGVSZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yKFdl
YkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIFJlZlB0cjxXZWJH
UFVSZW5kZXJDb21tYW5kRW5jb2Rlcj4gY29tbWFuZEVuY29kZXIgPSBXZWJHUFVSZW5kZXJDb21t
YW5kRW5jb2Rlcjo6Y3JlYXRlKHRoaXMtPmNvbnRleHQoKSwgdGhpcywgJmRlc2NyaXB0b3IpOwor
ICAgIHJldHVybiBjb21tYW5kRW5jb2RlcjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUNv
bW1hbmRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRC
dWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjk3ZjY3M2M0
NTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVD
b21tYW5kQnVmZmVyLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkK
KworI2luY2x1ZGUgIldlYkdQVU9iamVjdC5oIgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVUNvbW1hbmRCdWZmZXI7CitjbGFzcyBX
ZWJHUFVDb21tYW5kUXVldWU7CitjbGFzcyBXZWJHUFVEcmF3YWJsZTsKK2NsYXNzIFdlYkdQVUZ1
bmN0aW9uOworY2xhc3MgV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI7CitjbGFzcyBXZWJHUFVS
ZW5kZXJQYXNzRGVzY3JpcHRvcjsKKworY2xhc3MgV2ViR1BVQ29tbWFuZEJ1ZmZlciA6IHB1Ymxp
YyBXZWJHUFVPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVUNvbW1hbmRCdWZm
ZXIoKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IGNyZWF0ZShXZWJHUFVS
ZW5kZXJpbmdDb250ZXh0KiwgV2ViR1BVQ29tbWFuZFF1ZXVlKik7CisKKyAgICB2b2lkIGNvbW1p
dCgpOworICAgIHZvaWQgcHJlc2VudERyYXdhYmxlKFdlYkdQVURyYXdhYmxlJik7CisKKyAgICBS
ZWZQdHI8V2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI+IGNyZWF0ZVJlbmRlckNvbW1hbmRFbmNv
ZGVyV2l0aERlc2NyaXB0b3IoV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
OworCisgICAgTWV0YWxDb21tYW5kQnVmZmVyKiBjb21tYW5kQnVmZmVyKCkgeyByZXR1cm4gbV9j
b21tYW5kQnVmZmVyLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgV2ViR1BVQ29tbWFuZEJ1ZmZl
cihXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgV2ViR1BVQ29tbWFuZFF1ZXVlKik7CisgICAgUmVm
UHRyPE1ldGFsQ29tbWFuZEJ1ZmZlcj4gbV9jb21tYW5kQnVmZmVyOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVUNvbW1hbmRCdWZmZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjlkYzE3NjQxYmU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwKQEAgLTAsMCArMSwzNSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRp
b25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gaW50ZXJmYWNlIFdl
YkdQVUNvbW1hbmRCdWZmZXIgeworCisgICAgV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIgY3Jl
YXRlUmVuZGVyQ29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcihXZWJHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvciBkZXNjcmlwdG9yKTsKKyAgICB2b2lkIGNvbW1pdCgpOworICAgIHZvaWQgcHJlc2Vu
dERyYXdhYmxlKFdlYkdQVURyYXdhYmxlIGRyYXdhYmxlKTsKKworfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRRdWV1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kUXVldWUuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jZDQ0MjFhNDI4NQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRRdWV1ZS5jcHAKQEAgLTAs
MCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHUFVDb21tYW5kUXVldWUuaCIKKwor
I2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVDb21tYW5kUXVldWUuaCIKKyNpbmNs
dWRlICJXZWJHUFVDb21tYW5kQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXZWJHUFVDb21tYW5kUXVldWU+
IFdlYkdQVUNvbW1hbmRRdWV1ZTo6Y3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRl
eHQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQ29tbWFuZFF1ZXVlKGNvbnRl
eHQpKTsKK30KKworV2ViR1BVQ29tbWFuZFF1ZXVlOjpXZWJHUFVDb21tYW5kUXVldWUoV2ViR1BV
UmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKKyAgICA6IFdlYkdQVU9iamVjdChjb250ZXh0KQor
eworICAgIG1fY29tbWFuZFF1ZXVlID0gY29udGV4dC0+ZGV2aWNlKCktPmNyZWF0ZUNvbW1hbmRR
dWV1ZSgpOworfQorCitXZWJHUFVDb21tYW5kUXVldWU6On5XZWJHUFVDb21tYW5kUXVldWUoKQor
eworfQorCitTdHJpbmcgV2ViR1BVQ29tbWFuZFF1ZXVlOjpsYWJlbCgpIGNvbnN0Cit7CisgICAg
aWYgKCFtX2NvbW1hbmRRdWV1ZSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAg
ICByZXR1cm4gbV9jb21tYW5kUXVldWUtPmxhYmVsKCk7Cit9CisKK3ZvaWQgV2ViR1BVQ29tbWFu
ZFF1ZXVlOjpzZXRMYWJlbChjb25zdCBTdHJpbmcmIGxhYmVsKQoreworICAgIGlmICghbV9jb21t
YW5kUXVldWUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29tbWFuZFF1ZXVlLT5zZXRMYWJl
bChsYWJlbCk7Cit9CisKK1JlZlB0cjxXZWJHUFVDb21tYW5kQnVmZmVyPiBXZWJHUFVDb21tYW5k
UXVldWU6OmNyZWF0ZUNvbW1hbmRCdWZmZXIoKQoreworICAgIFJlZlB0cjxXZWJHUFVDb21tYW5k
QnVmZmVyPiBidWZmZXIgPSBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUodGhpcy0+Y29udGV4
dCgpLCB0aGlzKTsKKyAgICByZXR1cm4gYnVmZmVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R1BVQ29tbWFuZFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21t
YW5kUXVldWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uY2FjNjZh
ZDAxYWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVDb21tYW5kUXVldWUuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BV
KQorCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0LmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVQ29tbWFuZFF1ZXVlOworY2xhc3Mg
V2ViR1BVQ29tbWFuZEJ1ZmZlcjsKKworY2xhc3MgV2ViR1BVQ29tbWFuZFF1ZXVlIDogcHVibGlj
IFdlYkdQVU9iamVjdCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViR1BVQ29tbWFuZFF1ZXVl
KCk7CisgICAgc3RhdGljIFJlZjxXZWJHUFVDb21tYW5kUXVldWU+IGNyZWF0ZShXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0Kik7CisKKyAgICBTdHJpbmcgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkIHNl
dExhYmVsKGNvbnN0IFN0cmluZyYpOworCisgICAgUmVmUHRyPFdlYkdQVUNvbW1hbmRCdWZmZXI+
IGNyZWF0ZUNvbW1hbmRCdWZmZXIoKTsKKworICAgIE1ldGFsQ29tbWFuZFF1ZXVlKiBjb21tYW5k
UXVldWUoKSB7IHJldHVybiBtX2NvbW1hbmRRdWV1ZS5nZXQoKTsgfQorCitwcml2YXRlOgorICAg
IFdlYkdQVUNvbW1hbmRRdWV1ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0Kik7CisKKyAgICBSZWZQ
dHI8TWV0YWxDb21tYW5kUXVldWU+IG1fY29tbWFuZFF1ZXVlOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVUNvbW1hbmRRdWV1ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHUFVDb21tYW5kUXVldWUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi5jMTY4OWI3NjY1OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVUNvbW1hbmRRdWV1ZS5pZGwKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1X
RUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gaW50ZXJmYWNlIFdlYkdQVUNv
bW1hbmRRdWV1ZSB7CisKKyAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOworCisgICAgV2Vi
R1BVQ29tbWFuZEJ1ZmZlcj8gY3JlYXRlQ29tbWFuZEJ1ZmZlcigpOworCit9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxEZXNj
cmlwdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDIzMjJj
MDFkMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgiCisKKyNpZiBFTkFCTEUo
V0VCR1BVKQorCisjaW5jbHVkZSAiR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oIgorI2luY2x1
ZGUgIldlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitS
ZWY8V2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcj4gV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3Jp
cHRvcjo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVEZXB0aFN0
ZW5jaWxEZXNjcmlwdG9yKCkpOworfQorCitXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpX
ZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCkKKyAgICA6IFdlYkdQVU9iamVjdCgpCit7Cisg
ICAgbV9kZXB0aFN0ZW5jaWxEZXNjcmlwdG9yID0gTWV0YWxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9y
OjpjcmVhdGUoKTsKK30KKworV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6fldlYkdQVURl
cHRoU3RlbmNpbERlc2NyaXB0b3IoKQoreworfQorCitTdHJpbmcgV2ViR1BVRGVwdGhTdGVuY2ls
RGVzY3JpcHRvcjo6bGFiZWwoKSBjb25zdAoreworICAgIGlmICghbV9kZXB0aFN0ZW5jaWxEZXNj
cmlwdG9yKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIHJldHVybiBtX2Rl
cHRoU3RlbmNpbERlc2NyaXB0b3ItPmxhYmVsKCk7Cit9CisKK3ZvaWQgV2ViR1BVRGVwdGhTdGVu
Y2lsRGVzY3JpcHRvcjo6c2V0TGFiZWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKK3sKKyAgICAgIGlm
ICghbV9kZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Rl
cHRoU3RlbmNpbERlc2NyaXB0b3ItPnNldExhYmVsKGxhYmVsKTsKK30KKworYm9vbCBXZWJHUFVE
ZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpkZXB0aFdyaXRlRW5hYmxlZCgpIGNvbnN0Cit7CisgICAg
aWYgKCFtX2RlcHRoU3RlbmNpbERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJldHVybiBtX2RlcHRoU3RlbmNpbERlc2NyaXB0b3ItPmRlcHRoV3JpdGVFbmFibGVkKCk7
Cit9CisKK3ZvaWQgV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6c2V0RGVwdGhXcml0ZUVu
YWJsZWQoYm9vbCBuZXdEZXB0aFdyaXRlRW5hYmxlZCkKK3sKKyAgICBpZiAoIW1fZGVwdGhTdGVu
Y2lsRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kZXB0aFN0ZW5jaWxEZXNj
cmlwdG9yLT5zZXREZXB0aFdyaXRlRW5hYmxlZChuZXdEZXB0aFdyaXRlRW5hYmxlZCk7Cit9CisK
K2F1dG8gV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6ZGVwdGhDb21wYXJlRnVuY3Rpb24o
KSBjb25zdCAtPiBXZWJHUFVDb21wYXJlRnVuY3Rpb24KK3sKKyAgICByZXR1cm4gbV9kZXB0aENv
bXBhcmVGdW5jdGlvbjsKK30KKwordm9pZCBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpz
ZXREZXB0aENvbXBhcmVGdW5jdGlvbihDb21wYXJlRnVuY3Rpb24gbmV3RGVwdGhDb21wYXJlRnVu
Y3Rpb24pCit7CisgICAgbV9kZXB0aENvbXBhcmVGdW5jdGlvbiA9IG5ld0RlcHRoQ29tcGFyZUZ1
bmN0aW9uOworICAgIG1fZGVwdGhTdGVuY2lsRGVzY3JpcHRvci0+c2V0RGVwdGhDb21wYXJlRnVu
Y3Rpb24odG9NZXRhbENvbXBhcmVGdW5jdGlvbihtX2RlcHRoQ29tcGFyZUZ1bmN0aW9uKSk7CisK
Ky8vICAgIGlmIChPcHRpb25hbDxXZWJHUFVDb21wYXJlRnVuY3Rpb24+IGNvbXBhcmVGdW5jdGlv
biA9IHRvV2ViR1BVQ29tcGFyZUZ1bmN0aW9uKG5ld0RlcHRoQ29tcGFyZUZ1bmN0aW9uKSkgewor
Ly8gICAgICAgIG1fZGVwdGhDb21wYXJlRnVuY3Rpb24gPSBjb21wYXJlRnVuY3Rpb24udmFsdWUo
KTsKKy8vICAgICAgICBtX2RlcHRoU3RlbmNpbERlc2NyaXB0b3ItPnNldERlcHRoQ29tcGFyZUZ1
bmN0aW9uKHRvTWV0YWxDb21wYXJlRnVuY3Rpb24obV9kZXB0aENvbXBhcmVGdW5jdGlvbikpOwor
Ly8gICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRv
ci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3Jp
cHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iYjRkMmIzM2Zl
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURl
cHRoU3RlbmNpbERlc2NyaXB0b3IuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
V0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BVRW51bXMuaCIKKyNpbmNsdWRlICJXZWJHUFVPYmpl
Y3QuaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOworCitjbGFzcyBXZWJHUFVEZXB0aFN0
ZW5jaWxEZXNjcmlwdG9yIDogcHVibGljIFdlYkdQVU9iamVjdCB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB+V2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcigpOworICAgIHN0YXRpYyBSZWY8V2Vi
R1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcj4gY3JlYXRlKCk7CisKKyAgICBTdHJpbmcgbGFiZWwo
KSBjb25zdDsKKyAgICB2b2lkIHNldExhYmVsKGNvbnN0IFN0cmluZyYpOworCisgICAgYm9vbCBk
ZXB0aFdyaXRlRW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0RGVwdGhXcml0ZUVuYWJsZWQo
Ym9vbCk7CisKKyAgICB1c2luZyBDb21wYXJlRnVuY3Rpb24gPSBXZWJHUFVDb21wYXJlRnVuY3Rp
b247CisgICAgQ29tcGFyZUZ1bmN0aW9uIGRlcHRoQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXREZXB0aENvbXBhcmVGdW5jdGlvbihDb21wYXJlRnVuY3Rpb24pOworCisgICAg
TWV0YWxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKiBkZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCkgeyBy
ZXR1cm4gbV9kZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAg
V2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcigpOworCisgICAgV2ViR1BVQ29tcGFyZUZ1bmN0
aW9uIG1fZGVwdGhDb21wYXJlRnVuY3Rpb247CisgICAgUmVmUHRyPE1ldGFsRGVwdGhTdGVuY2ls
RGVzY3JpcHRvcj4gbV9kZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5pZGwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjkzYjVmYzk5ZmNkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5p
ZGwKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGlt
ZT1XZWJHUFUKK10gZW51bSBXZWJHUFVDb21wYXJlRnVuY3Rpb24geworICAgICJuZXZlciIsCisg
ICAgImxlc3MiLAorICAgICJlcXVhbCIsCisgICAgImxlc3NlcXVhbCIsCisgICAgImdyZWF0ZXIi
LAorICAgICJub3RlcXVhbCIsCisgICAgImdyZWF0ZXJlcXVhbCIsCisgICAgImFsd2F5cyIKK307
CisKK1sKKyAgICBDb25zdHJ1Y3RvciwKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5h
YmxlZEF0UnVudGltZT1XZWJHUFUKK10gaW50ZXJmYWNlIFdlYkdQVURlcHRoU3RlbmNpbERlc2Ny
aXB0b3IgeworCisgICAgYXR0cmlidXRlIERPTVN0cmluZyBsYWJlbDsKKworICAgIGF0dHJpYnV0
ZSBXZWJHUFVDb21wYXJlRnVuY3Rpb24gZGVwdGhDb21wYXJlRnVuY3Rpb247CisgICAgYXR0cmli
dXRlIGJvb2xlYW4gZGVwdGhXcml0ZUVuYWJsZWQ7CisKK307CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjljZWU1Mzk5Yzk1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUu
Y3BwCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BVRGVwdGhTdGVu
Y2lsU3RhdGUuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVEZXB0aFN0
ZW5jaWxTdGF0ZS5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKKyNpbmNs
dWRlICJXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworUmVmPFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlPiBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0
ZTo6Y3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIFdlYkdQVURlcHRoU3Rl
bmNpbERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUoY29udGV4dCwgZGVzY3JpcHRvcikpOworfQorCitXZWJH
UFVEZXB0aFN0ZW5jaWxTdGF0ZTo6V2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUoV2ViR1BVUmVuZGVy
aW5nQ29udGV4dCogY29udGV4dCwgV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvciogZGVzY3Jp
cHRvcikKKyAgICA6IFdlYkdQVU9iamVjdChjb250ZXh0KQoreworICAgIGlmICghY29udGV4dCB8
fCAhZGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOworICAgIG1fZGVwdGhTdGVuY2lsU3RhdGUg
PSBNZXRhbERlcHRoU3RlbmNpbFN0YXRlOjpjcmVhdGUoY29udGV4dC0+ZGV2aWNlKCkuZ2V0KCks
IGRlc2NyaXB0b3ItPmRlcHRoU3RlbmNpbERlc2NyaXB0b3IoKSk7Cit9CisKK1dlYkdQVURlcHRo
U3RlbmNpbFN0YXRlOjp+V2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUoKQoreworfQorCitTdHJpbmcg
V2ViR1BVRGVwdGhTdGVuY2lsU3RhdGU6OmxhYmVsKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZGVw
dGhTdGVuY2lsU3RhdGUpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgcmV0
dXJuIG1fZGVwdGhTdGVuY2lsU3RhdGUtPmxhYmVsKCk7Cit9CisKK3ZvaWQgV2ViR1BVRGVwdGhT
dGVuY2lsU3RhdGU6OnNldExhYmVsKGNvbnN0IFN0cmluZyYgbGFiZWwpCit7CisgICAgaWYgKCFt
X2RlcHRoU3RlbmNpbFN0YXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RlcHRoU3RlbmNp
bFN0YXRlLT5zZXRMYWJlbChsYWJlbCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0
aFN0ZW5jaWxTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhT
dGVuY2lsU3RhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uY2Jj
MzdhM2Y3MTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShXRUJHUFUpCisKKyNpbmNsdWRlICJXZWJHUFVPYmplY3QuaCIKKworI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVEZXB0aFN0ZW5jaWxT
dGF0ZTsKK2NsYXNzIFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3I7CisKK2NsYXNzIFdlYkdQ
VURlcHRoU3RlbmNpbFN0YXRlIDogcHVibGljIFdlYkdQVU9iamVjdCB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+V2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUoKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQ
VURlcHRoU3RlbmNpbFN0YXRlPiBjcmVhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIFdlYkdQ
VURlcHRoU3RlbmNpbERlc2NyaXB0b3IqKTsKKworICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0Owor
ICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgU3RyaW5nJik7CisKKyAgICBNZXRhbERlcHRoU3RlbmNp
bFN0YXRlKiBkZXB0aFN0ZW5jaWxTdGF0ZSgpIHsgcmV0dXJuIG1fZGVwdGhTdGVuY2lsU3RhdGUu
Z2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZShXZWJHUFVS
ZW5kZXJpbmdDb250ZXh0KiwgV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvciopOworCisgICAg
UmVmUHRyPE1ldGFsRGVwdGhTdGVuY2lsU3RhdGU+IG1fZGVwdGhTdGVuY2lsU3RhdGU7Cit9Owor
ICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmlkbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTYxNWJkZjhjMzgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0
ZS5pZGwKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVu
dGltZT1XZWJHUFUKK10gaW50ZXJmYWNlIFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlIHsKKworICAg
IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7CisKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVEcmF3YWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHUFVEcmF3YWJsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLmRmNTY4NmFiZDA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVRHJhd2FibGUuY3BwCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViR1BVRHJhd2FibGUuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlICJHUFVEcmF3YWJsZS5oIgorI2luY2x1ZGUgIkdQVVRleHR1cmUuaCIKKyNpbmNsdWRl
ICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVVGV4dHVyZS5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXZWJHUFVEcmF3YWJsZT4gV2ViR1BVRHJhd2Fi
bGU6OmNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0KQoreworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYkdQVURyYXdhYmxlKGNvbnRleHQpKTsKK30KKworV2ViR1BVRHJh
d2FibGU6OldlYkdQVURyYXdhYmxlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCisg
ICAgOiBXZWJHUFVPYmplY3QoY29udGV4dCkKK3sKKyAgICBtX2RyYXdhYmxlID0gY29udGV4dC0+
ZGV2aWNlKCktPmdldEZyYW1lYnVmZmVyKCk7CisgICAgaWYgKCFtX2RyYXdhYmxlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBSZWZQdHI8TWV0YWxUZXh0dXJlPiBkcmF3YWJsZVRleHR1cmUgPSBN
ZXRhbFRleHR1cmU6OmNyZWF0ZUZyb21FeGlzdGluZ1RleHR1cmUobV9kcmF3YWJsZS0+dGV4dHVy
ZSgpKTsKKyAgICBtX3RleHR1cmUgPSBXZWJHUFVUZXh0dXJlOjpjcmVhdGVGcm9tRHJhd2FibGVU
ZXh0dXJlKGNvbnRleHQsIGRyYXdhYmxlVGV4dHVyZSk7Cit9CisKK1dlYkdQVURyYXdhYmxlOjp+
V2ViR1BVRHJhd2FibGUoKQoreworfQorCitXZWJHUFVUZXh0dXJlKiBXZWJHUFVEcmF3YWJsZTo6
dGV4dHVyZSgpCit7CisgICAgaWYgKCFtX3RleHR1cmUpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdQVURyYXdhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEcmF3YWJs
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hZTZmYjAxNGEwNgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURyYXdh
YmxlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1
ZGUgIldlYkdQVU9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVURy
YXdhYmxlOworY2xhc3MgV2ViR1BVVGV4dHVyZTsKKworY2xhc3MgV2ViR1BVRHJhd2FibGUgOiBw
dWJsaWMgV2ViR1BVT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJHUFVEcmF3YWJs
ZSgpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVRHJhd2FibGU+IGNyZWF0ZShXZWJHUFVSZW5kZXJp
bmdDb250ZXh0Kik7CisKKyAgICBXZWJHUFVUZXh0dXJlKiB0ZXh0dXJlKCk7CisKKyAgICBNZXRh
bERyYXdhYmxlKiBkcmF3YWJsZSgpIHsgcmV0dXJuIG1fZHJhd2FibGUuZ2V0KCk7IH0KKworcHJp
dmF0ZToKKyAgICBXZWJHUFVEcmF3YWJsZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0Kik7CisgICAg
UmVmUHRyPE1ldGFsRHJhd2FibGU+IG1fZHJhd2FibGU7CisgICAgUmVmUHRyPFdlYkdQVVRleHR1
cmU+IG1fdGV4dHVyZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEcmF3YWJsZS5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEcmF3YWJsZS5pZGwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRjOTAxYzQyNGEzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRHJhd2FibGUuaWRsCkBAIC0w
LDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BV
CitdIGludGVyZmFjZSBXZWJHUFVEcmF3YWJsZSB7CisKKyAgICByZWFkb25seSBhdHRyaWJ1dGUg
V2ViR1BVVGV4dHVyZSB0ZXh0dXJlOyAvLyBGSVhNRTogT25seSB0aGUgZnJhbWVidWZmZXIgc2hv
dWxkIGhhdmUgdGhpcy4KKworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVUVudW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUVu
dW1zLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTFiYTY1Mzc2
OGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVF
bnVtcy5jcHAKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BVRW51
bXMuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVFbnVtcy5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0ZDo6b3B0aW9uYWw8V2ViR1BVQ29tcGFyZUZ1bmN0aW9u
PiB0b1dlYkdQVUNvbXBhcmVGdW5jdGlvbihjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJuZXZlciIpKQorICAgICAgICBy
ZXR1cm4gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpOZXZlcjsKKyAgICBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UobmFtZSwgImxlc3MiKSkKKyAgICAgICAgcmV0dXJuIFdlYkdQVUNv
bXBhcmVGdW5jdGlvbjo6TGVzczsKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobmFtZSwgImVxdWFsIikpCisgICAgICAgIHJldHVybiBXZWJHUFVDb21wYXJlRnVuY3Rpb246
OkVxdWFsOworICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAibGVz
c2VxdWFsIikpCisgICAgICAgIHJldHVybiBXZWJHUFVDb21wYXJlRnVuY3Rpb246Okxlc3NlcXVh
bDsKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgImdyZWF0ZXIi
KSkKKyAgICAgICAgcmV0dXJuIFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6R3JlYXRlcjsKKyAgICBp
ZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIm5vdGVxdWFsIikpCisgICAg
ICAgIHJldHVybiBXZWJHUFVDb21wYXJlRnVuY3Rpb246Ok5vdGVxdWFsOworICAgIGlmIChlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiZ3JlYXRlcmVxdWFsIikpCisgICAgICAg
IHJldHVybiBXZWJHUFVDb21wYXJlRnVuY3Rpb246OkdyZWF0ZXJlcXVhbDsKKyAgICBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgImFsd2F5cyIpKQorICAgICAgICByZXR1
cm4gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpBbHdheXM7CisKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCitTdHJpbmcgd2ViM0RDb21wYXJl
RnVuY3Rpb25OYW1lKGNvbnN0IFdlYkdQVUNvbXBhcmVGdW5jdGlvbiB2YWx1ZSkKK3sKKyAgICBp
ZiAodmFsdWUgPT0gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpOZXZlcikKKyAgICAgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbCgibmV2ZXIiKTsKKyAgICBpZiAodmFsdWUgPT0gV2ViR1BVQ29tcGFyZUZ1
bmN0aW9uOjpMZXNzKQorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJsZXNzIik7CisgICAg
aWYgKHZhbHVlID09IFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6RXF1YWwpCisgICAgICAgIHJldHVy
biBBU0NJSUxpdGVyYWwoImVxdWFsIik7CisgICAgaWYgKHZhbHVlID09IFdlYkdQVUNvbXBhcmVG
dW5jdGlvbjo6TGVzc2VxdWFsKQorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJsZXNzZXF1
YWwiKTsKKyAgICBpZiAodmFsdWUgPT0gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpHcmVhdGVyKQor
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJncmVhdGVyIik7CisgICAgaWYgKHZhbHVlID09
IFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6Tm90ZXF1YWwpCisgICAgICAgIHJldHVybiBBU0NJSUxp
dGVyYWwoIm5vdGVxdWFsIik7CisgICAgaWYgKHZhbHVlID09IFdlYkdQVUNvbXBhcmVGdW5jdGlv
bjo6R3JlYXRlcmVxdWFsKQorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJncmVhdGVyZXF1
YWwiKTsKKyAgICBpZiAodmFsdWUgPT0gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpBbHdheXMpCisg
ICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImFsd2F5cyIpOworICAgIAorICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOworfQorCitNZXRhbENvbXBh
cmVGdW5jdGlvbiB0b01ldGFsQ29tcGFyZUZ1bmN0aW9uKGNvbnN0IFdlYkdQVUNvbXBhcmVGdW5j
dGlvbiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUgPT0gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpO
ZXZlcikKKyAgICAgICAgcmV0dXJuIE1ldGFsQ29tcGFyZUZ1bmN0aW9uOjpOZXZlcjsKKyAgICBp
ZiAodmFsdWUgPT0gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpMZXNzKQorICAgICAgICByZXR1cm4g
TWV0YWxDb21wYXJlRnVuY3Rpb246Okxlc3M7CisgICAgaWYgKHZhbHVlID09IFdlYkdQVUNvbXBh
cmVGdW5jdGlvbjo6RXF1YWwpCisgICAgICAgIHJldHVybiBNZXRhbENvbXBhcmVGdW5jdGlvbjo6
RXF1YWw7CisgICAgaWYgKHZhbHVlID09IFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6TGVzc2VxdWFs
KQorICAgICAgICByZXR1cm4gTWV0YWxDb21wYXJlRnVuY3Rpb246Okxlc3NFcXVhbDsKKyAgICBp
ZiAodmFsdWUgPT0gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpHcmVhdGVyKQorICAgICAgICByZXR1
cm4gTWV0YWxDb21wYXJlRnVuY3Rpb246OkdyZWF0ZXI7CisgICAgaWYgKHZhbHVlID09IFdlYkdQ
VUNvbXBhcmVGdW5jdGlvbjo6Tm90ZXF1YWwpCisgICAgICAgIHJldHVybiBNZXRhbENvbXBhcmVG
dW5jdGlvbjo6Tm90RXF1YWw7CisgICAgaWYgKHZhbHVlID09IFdlYkdQVUNvbXBhcmVGdW5jdGlv
bjo6R3JlYXRlcmVxdWFsKQorICAgICAgICByZXR1cm4gTWV0YWxDb21wYXJlRnVuY3Rpb246Okdy
ZWF0ZXJFcXVhbDsKKyAgICBpZiAodmFsdWUgPT0gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpBbHdh
eXMpCisgICAgICAgIHJldHVybiBNZXRhbENvbXBhcmVGdW5jdGlvbjo6QWx3YXlzOworICAgIAor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBNZXRhbENvbXBhcmVGdW5jdGlv
bjo6TmV2ZXI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVFbnVtcy5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRW51bXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uY2M0ZTcyMGRjOWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVFbnVtcy5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNz
IFdlYkdQVUNvbXBhcmVGdW5jdGlvbiB7CisgICAgTmV2ZXIsCisgICAgTGVzcywKKyAgICBFcXVh
bCwKKyAgICBMZXNzZXF1YWwsCisgICAgR3JlYXRlciwKKyAgICBOb3RlcXVhbCwKKyAgICBHcmVh
dGVyZXF1YWwsCisgICAgQWx3YXlzCit9OworCitzdGQ6Om9wdGlvbmFsPFdlYkdQVUNvbXBhcmVG
dW5jdGlvbj4gdG9XZWJHUFVDb21wYXJlRnVuY3Rpb24oY29uc3QgU3RyaW5nJik7CitTdHJpbmcg
d2ViM0RDb21wYXJlRnVuY3Rpb25OYW1lKGNvbnN0IFdlYkdQVUNvbXBhcmVGdW5jdGlvbik7CisK
K2VudW0gY2xhc3MgR1BVQ29tcGFyZUZ1bmN0aW9uOworTWV0YWxDb21wYXJlRnVuY3Rpb24gdG9N
ZXRhbENvbXBhcmVGdW5jdGlvbihjb25zdCBXZWJHUFVDb21wYXJlRnVuY3Rpb24pOworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVRW51bXMuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVRW51bXMuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43
MjFmYTE0ZDJlNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVUVudW1zLmlkbApAQCAtMCwwICsxLDI3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAg
RW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVQaXhlbEZvcm1hdCB7CisgICAg
IkJHUkE4VW5vcm0iCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJs
ZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVudW0gV2ViR1BVTG9hZEFjdGlvbiB7CisgICAgImRvbnRj
YXJlIiwKKyAgICAibG9hZCIsCisgICAgImNsZWFyIgorfTsKKworWworICAgIENvbmRpdGlvbmFs
PVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQVVN0b3Jl
QWN0aW9uIHsKKyAgICAiZG9udGNhcmUiLAorICAgICJzdG9yZSIsCisgICAgIm11bHRpc2FtcGxl
cmVzb2x2ZSIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0
UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVQcmltaXRpdmVUeXBlIHsKKyAgICAicG9pbnQi
LAorICAgICJsaW5lIiwKKyAgICAibGluZXN0cmlwIiwKKyAgICAidHJpYW5nbGUiLAorICAgICJ0
cmlhbmdsZXN0cmlwIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFi
bGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQVUZ1bmN0aW9uVHlwZSB7CisgICAgImZy
YWdtZW50IiwKKyAgICAidmVydGV4IgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwK
KyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQVVN0ZW5jaWxPcGVyYXRp
b24geworICAgICJrZWVwIiwKKyAgICAiemVybyIsCisgICAgInJlcGxhY2UiLAorICAgICJpbmNy
ZW1lbnRjbGFtcCIsCisgICAgImRlY3JlbWVudGNsYW1wIiwKKyAgICAiaW52ZXJ0IiwKKyAgICAi
aW5jcmVtZW50d3JhcCIsCisgICAgImRlY3JlbWVudHdyYXAiCit9OworCitbCisgICAgQ29uZGl0
aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVudW0gV2ViR1BV
U3RhdHVzIHsKKyAgICAibm90ZW5xdWV1ZWQiLAorICAgICJlbnF1ZXVlZCIsCisgICAgImNvbW1p
dHRlZCIsCisgICAgInNjaGVkdWxlZCIsCisgICAgImNvbXBsZXRlZCIsCisgICAgImVycm9yIgor
fTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdl
YkdQVQorXSBlbnVtIFdlYkdQVVNhbXBsZXJBZGRyZXNzTW9kZSB7CisgICAgImNsYW1wdG9lZGdl
IiwKKyAgICAibWlycm9yY2xhbXB0b2VkZ2UiLAorICAgICJyZXBlYXQiLAorICAgICJtaXJyb3Jy
ZXBlYXQiLAorICAgICJjbGFtcHRvemVybyIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJH
UFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVTYW1wbGVyTWlu
TWFnRmlsdGVyIHsKKyAgICAibmVhcmVzdCIsCisgICAgImxpbmVhciIKK307CisKK1sKKyAgICBD
b25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZW51bSBX
ZWJHUFVTYW1wbGVyTWlwRmlsdGVyIHsKKyAgICAibm90bWlwbWFwcGVkIiwKKyAgICAibmVhcmVz
dCIsCisgICAgImxpbmVhciIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAg
RW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVDdWxsTW9kZSB7CisgICAgIm5v
bmUiLAorICAgICJmcm9udCIsCisgICAgImJhY2siCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9
V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVudW0gV2ViR1BVSW5kZXhU
eXBlIHsKKyAgICAidWludDE2IiwKKyAgICAidWludDMyIgorfTsKKworWworICAgIENvbmRpdGlv
bmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQVVZp
c2liaWxpdHlSZXN1bHRNb2RlIHsKKyAgICAiZGlzYWJsZWQiLAorICAgICJib29sZWFuIiwKKyAg
ICAiY291bnRpbmciCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJs
ZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVudW0gV2ViR1BVV2luZGluZyB7CisgICAgImNsb2Nrd2lz
ZSIsCisgICAgImNvdW50ZXJjbG9ja3dpc2UiCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VC
R1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVudW0gV2ViR1BVRGVwdGhDbGlw
TW9kZSB7CisgICAgImNsaXAiLAorICAgICJjbGFtcCIKK307CisKK1sKKyAgICBDb25kaXRpb25h
bD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVUcmlh
bmdsZUZpbGxNb2RlIHsKKyAgICAiZmlsbCIsCisgICAgImxpbmVzIgorfTsKKworWworICAgIENv
bmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVtIFdl
YkdQVUNQVUNhY2hlTW9kZSB7CisgICAgImRlZmF1bHRjYWNoZSIsCisgICAgIndyaXRlY29tYmlu
ZWQiCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRp
bWU9V2ViR1BVCitdIGVudW0gV2ViR1BVU3RvcmFnZU1vZGUgeworICAgICJzaGFyZWQiLAorICAg
ICJtYW5hZ2VkIiwKKyAgICAicHJpdmF0ZSIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJH
UFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVSZXNvdXJjZU9w
dGlvbnMgeworICAgICJjcHVjYWNoZW1vZGVkZWZhdWx0Y2FjaGUiLAorICAgICJjcHVjYWNoZW1v
ZGV3cml0ZWNvbWJpbmVkIiwKKyAgICAic3RvcmFnZW1vZGVzaGFyZWQiLAorICAgICJzdG9yYWdl
bW9kZW1hbmFnZWQiLAorICAgICJzdG9yYWdlbW9kZXByaXZhdGUiLAorICAgICJvcHRpb25jcHVj
YWNoZW1vZGVkZWZhdWx0Y2FjaGUiLAorICAgICJvcHRpb25jcHVjYWNoZW1vZGV3cml0ZWNvbWJp
bmVkIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50
aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQVVRleHR1cmVVc2FnZSB7CisgICAgInVua25vd24iLAor
ICAgICJzaGFkZXJyZWFkIiwKKyAgICAic2hhZGVyd3JpdGUiLAorICAgICJyZW5kZXJ0YXJnZXQi
LAorICAgICJwaXhlbGZvcm1hdHZpZXciCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BV
LAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVudW0gV2ViR1BVQmxlbmRPcGVyYXRp
b24geworICAgICJhZGQiLAorICAgICJzdWJ0cmFjdCIsCisgICAgInJldmVyc2VzdWJ0cmFjdCIs
CisgICAgIm1pbiIsCisgICAgIm1heCIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUs
CisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVCbGVuZEZhY3RvciB7
CisgICAgInplcm8iLAorICAgICJvbmUiLAorICAgICJzb3VyY2Vjb2xvciIsCisgICAgIm9uZW1p
bnVzc291cmNlY29sb3IiLAorICAgICJzb3VyY2VhbHBoYSIsCisgICAgIm9uZW1pbnVzc291cmNl
YWxwaGEiLAorICAgICJkZXN0aW5hdGlvbmNvbG9yIiwKKyAgICAib25lbWludXNkZXN0aW5hdGlv
bmNvbG9yIiwKKyAgICAiZGVzdGluYXRpb25hbHBoYSIsCisgICAgIm9uZW1pbnVzZGVzdGluYXRp
b25hbHBoYSIsCisgICAgInNvdXJjZWFscGhhc2F0dXJhdGVkIiwKKyAgICAiYmxlbmRjb2xvciIs
CisgICAgIm9uZW1pbnVzYmxlbmRjb2xvciIsCisgICAgImJsZW5kYWxwaGEiLAorICAgICJvbmVt
aW51c2JsZW5kYWxwaGEiCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVu
YWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVudW0gV2ViR1BVQ29sb3JXcml0ZU1hc2sgeworICAg
ICJub25lIiwKKyAgICAicmVkIiwKKyAgICAiZ3JlZW4iLAorICAgICJibHVlIiwKKyAgICAiYWxw
aGEiLAorICAgICJhbGwiCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVu
YWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVudW0gV2ViR1BVTXVsdGlzYW1wbGVEZXB0aFJlc29s
dmVGaWx0ZXIgeworICAgICJzYW1wbGUwIiwKKyAgICAibWluIiwKKyAgICAibWF4IgorfTsKKwor
WworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQor
XSBlbnVtIFdlYkdQVUZlYXR1cmVTZXQgeworICAgICJsZXZlbDEiLAorICAgICJsZXZlbDIiCit9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42M2U4YmY4MDIxMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUZ1bmN0aW9uLmNwcApA
QCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdQVUZ1bmN0aW9uLmgiCisK
KyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiR1BVRnVuY3Rpb24uaCIKKyNpbmNsdWRl
ICJHUFVMaWJyYXJ5LmgiCisjaW5jbHVkZSAiV2ViR1BVTGlicmFyeS5oIgorI2luY2x1ZGUgIldl
YkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8V2Vi
R1BVRnVuY3Rpb24+IFdlYkdQVUZ1bmN0aW9uOjpjcmVhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4
dCogY29udGV4dCwgV2ViR1BVTGlicmFyeSogbGlicmFyeSwgY29uc3QgU3RyaW5nJiBuYW1lKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUZ1bmN0aW9uKGNvbnRleHQsIGxpYnJh
cnksIG5hbWUpKTsKK30KKworV2ViR1BVRnVuY3Rpb246OldlYkdQVUZ1bmN0aW9uKFdlYkdQVVJl
bmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIFdlYkdQVUxpYnJhcnkqIGxpYnJhcnksIGNvbnN0IFN0
cmluZyYgbmFtZSkKKyAgICA6IFdlYkdQVU9iamVjdChjb250ZXh0KQoreworICAgIG1fZnVuY3Rp
b24gPSBsaWJyYXJ5LT5saWJyYXJ5KCktPmZ1bmN0aW9uV2l0aE5hbWUobmFtZSk7Cit9CisKK1dl
YkdQVUZ1bmN0aW9uOjp+V2ViR1BVRnVuY3Rpb24oKQoreworfQorCitTdHJpbmcgV2ViR1BVRnVu
Y3Rpb246Om5hbWUoKSBjb25zdAoreworICAgIGlmICghbV9mdW5jdGlvbikKKyAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4gbV9mdW5jdGlvbi0+bmFtZSgpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVUZ1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLjBhOTUxYTkzMDVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVRnVuY3Rpb24uaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgR1BVRnVuY3Rpb247CitjbGFzcyBXZWJHUFVMaWJyYXJ5OworCitjbGFz
cyBXZWJHUFVGdW5jdGlvbiA6IHB1YmxpYyBXZWJHUFVPYmplY3QgeworcHVibGljOgorICAgIHZp
cnR1YWwgfldlYkdQVUZ1bmN0aW9uKCk7CisgICAgc3RhdGljIFJlZjxXZWJHUFVGdW5jdGlvbj4g
Y3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBXZWJHUFVMaWJyYXJ5KiwgY29uc3QgU3Ry
aW5nJiBuYW1lKTsKKworICAgIFN0cmluZyBuYW1lKCkgY29uc3Q7CisKKyAgICBNZXRhbEZ1bmN0
aW9uKiBmdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb24uZ2V0KCk7IH0KKworcHJp
dmF0ZToKKyAgICBXZWJHUFVGdW5jdGlvbihXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgV2ViR1BV
TGlicmFyeSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICBSZWZQdHI8TWV0YWxGdW5jdGlv
bj4gbV9mdW5jdGlvbjsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24u
aWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24uaWRsCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xNTYwMzY3MGNmYQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUZ1bmN0aW9uLmlkbApA
QCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdl
YkdQVQorXSBpbnRlcmZhY2UgV2ViR1BVRnVuY3Rpb24geworCisgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBuYW1lOworCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVTGlicmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHUFVMaWJyYXJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
NmQzNzU3OTM1YzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVMaWJyYXJ5LmNwcApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYkdQVUxpYnJhcnkuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVM
aWJyYXJ5LmgiCisjaW5jbHVkZSAiV2ViR1BVRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJHUFVS
ZW5kZXJpbmdDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFdlYkdQVUxp
YnJhcnk+IFdlYkdQVUxpYnJhcnk6OmNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViR1BVTGlicmFyeShjb250ZXh0LCBzb3VyY2VDb2RlKSk7Cit9CisKK1dlYkdQVUxpYnJh
cnk6OldlYkdQVUxpYnJhcnkoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VDb2RlKQorICAgIDogV2ViR1BVT2JqZWN0KGNvbnRleHQpCisgICAgLCBt
X3NvdXJjZUNvZGUoc291cmNlQ29kZSkKK3sKKyAgICBtX2xpYnJhcnkgPSBjb250ZXh0LT5kZXZp
Y2UoKS0+Y3JlYXRlTGlicmFyeShzb3VyY2VDb2RlKTsKK30KKworV2ViR1BVTGlicmFyeTo6fldl
YkdQVUxpYnJhcnkoKQoreworfQorCitTdHJpbmcgV2ViR1BVTGlicmFyeTo6bGFiZWwoKSBjb25z
dAoreworICAgIGlmICghbV9saWJyYXJ5KQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
KworICAgIHJldHVybiBtX2xpYnJhcnktPmxhYmVsKCk7Cit9CisKK3ZvaWQgV2ViR1BVTGlicmFy
eTo6c2V0TGFiZWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKK3sKKyAgICBpZiAoIW1fbGlicmFyeSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9saWJyYXJ5LT5zZXRMYWJlbChsYWJlbCk7Cit9CisK
K1ZlY3RvcjxTdHJpbmc+IFdlYkdQVUxpYnJhcnk6OmZ1bmN0aW9uTmFtZXMoKQoreworICAgIGlm
ICghbV9saWJyYXJ5KQorICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKKworICAgIHJl
dHVybiBtX2xpYnJhcnktPmZ1bmN0aW9uTmFtZXMoKTsKK30KKworUmVmUHRyPFdlYkdQVUZ1bmN0
aW9uPiBXZWJHUFVMaWJyYXJ5OjpmdW5jdGlvbldpdGhOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkK
K3sKKyAgICBpZiAoIW1fbGlicmFyeSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBS
ZWZQdHI8V2ViR1BVRnVuY3Rpb24+IGZ1bmN0aW9uID0gV2ViR1BVRnVuY3Rpb246OmNyZWF0ZSh0
aGlzLT5jb250ZXh0KCksIHRoaXMsIG5hbWUpOworICAgIGlmICghZnVuY3Rpb24tPmZ1bmN0aW9u
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBmdW5jdGlvbjsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVUxpYnJhcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVUxpYnJhcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uOTdmMWE0YWE0ODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHUFVMaWJyYXJ5LmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
QkdQVSkKKworI2luY2x1ZGUgIldlYkdQVU9iamVjdC5oIgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVUxpYnJhcnk7CitjbGFzcyBX
ZWJHUFVGdW5jdGlvbjsKKworY2xhc3MgV2ViR1BVTGlicmFyeSA6IHB1YmxpYyBXZWJHUFVPYmpl
Y3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVUxpYnJhcnkoKTsKKyAgICBzdGF0aWMg
UmVmPFdlYkdQVUxpYnJhcnk+IGNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VDb2RlKTsKKworICAgIFN0cmluZyBzb3VyY2VDb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zb3VyY2VDb2RlOyB9CisgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7CisgICAgdm9p
ZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKTsKKworICAgIFZlY3RvcjxTdHJpbmc+IGZ1bmN0aW9u
TmFtZXMoKTsKKworICAgIFJlZlB0cjxXZWJHUFVGdW5jdGlvbj4gZnVuY3Rpb25XaXRoTmFtZShj
b25zdCBTdHJpbmcmKTsKKworICAgIE1ldGFsTGlicmFyeSogbGlicmFyeSgpIHsgcmV0dXJuIG1f
bGlicmFyeS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFdlYkdQVUxpYnJhcnkoV2ViR1BVUmVu
ZGVyaW5nQ29udGV4dCosIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSk7CisKKyAgICBTdHJpbmcg
bV9zb3VyY2VDb2RlOworICAgIFJlZlB0cjxNZXRhbExpYnJhcnk+IG1fbGlicmFyeTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVMaWJyYXJ5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVUxpYnJhcnkuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi5kMzMwMzIyZmE3ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVUxpYnJhcnkuaWRsCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VC
R1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGludGVyZmFjZSBXZWJHUFVMaWJy
YXJ5IHsKKworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgc291cmNlQ29kZTsKKyAg
ICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBzZXF1
ZW5jZTxET01TdHJpbmc+IGZ1bmN0aW9uTmFtZXM7CisKKyAgICBXZWJHUFVGdW5jdGlvbj8gZnVu
Y3Rpb25XaXRoTmFtZShET01TdHJpbmcgbmFtZSk7CisKK307CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVT2JqZWN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uZDFhNzM3NGNlYTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHUFVPYmplY3QuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViR1BVT2JqZWN0LmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVk
ZSAiV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dl
YkdQVU9iamVjdDo6V2ViR1BVT2JqZWN0KFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQp
CisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKK3sKK30KKworV2ViR1BVT2JqZWN0Ojp+V2ViR1BV
T2JqZWN0KCkKK3sKK30KKwordm9pZCBXZWJHUFVPYmplY3Q6OmRlbGV0ZU9iamVjdChNZXRhbERl
dmljZSopCit7CisgICAgbV9kZWxldGVkID0gdHJ1ZTsKK30KKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVU9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVT2JqZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjgxN2ZlODk5M2ZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVT2JqZWN0LmgKQEAgLTAsMCArMSw1OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVURldmljZS5oIgorCisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJH
UFVSZW5kZXJpbmdDb250ZXh0OworCitjbGFzcyBXZWJHUFVPYmplY3QgOiBwdWJsaWMgUmVmQ291
bnRlZDxXZWJHUFVPYmplY3Q+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJHUFVPYmplY3Qo
KTsKKworICAgIHZvaWQgZGVsZXRlT2JqZWN0KE1ldGFsRGV2aWNlKik7CisgICAgYm9vbCBpc0Rl
bGV0ZWQoKSBjb25zdCB7IHJldHVybiBtX2RlbGV0ZWQ7IH0KKworICAgIFdlYkdQVVJlbmRlcmlu
Z0NvbnRleHQqIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KKworcHJvdGVj
dGVkOgorICAgIFdlYkdQVU9iamVjdChXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0ID0g
bnVsbHB0cik7CisKKyAgICBib29sIGhhc0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRl
eHQ7IH0KKworcHJpdmF0ZToKKyAgICBSZWZQdHI8V2ViR1BVUmVuZGVyaW5nQ29udGV4dD4gbV9j
b250ZXh0OworICAgIGJvb2wgbV9kZWxldGVkIHsgZmFsc2UgfTsKK307CisgICAgCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43MTg3YTI4NTc4MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmNw
cApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJDb21t
YW5kRW5jb2Rlci5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVVJlbmRl
ckNvbW1hbmRFbmNvZGVyLmgiCisjaW5jbHVkZSAiR1BVQ29tbWFuZEJ1ZmZlci5oIgorI2luY2x1
ZGUgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiV2ViR1BVQ29tbWFuZEJ1
ZmZlci5oIgorI2luY2x1ZGUgIldlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmgiCisjaW5jbHVkZSAi
V2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NEZXNj
cmlwdG9yLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oIgorI2luY2x1
ZGUgIldlYkdQVUJ1ZmZlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXZWJHUFVS
ZW5kZXJDb21tYW5kRW5jb2Rlcj4gV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI6OmNyZWF0ZShX
ZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBXZWJHUFVDb21tYW5kQnVmZmVyKiBidWZm
ZXIsIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyKGNvbnRleHQsIGJ1ZmZl
ciwgZGVzY3JpcHRvcikpOworfQorCitXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlcjo6V2ViR1BV
UmVuZGVyQ29tbWFuZEVuY29kZXIoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgV2Vi
R1BVQ29tbWFuZEJ1ZmZlciogYnVmZmVyLCBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciogZGVz
Y3JpcHRvcikKKyAgICA6IFdlYkdQVU9iamVjdChjb250ZXh0KQoreworICAgIG1fcmVuZGVyQ29t
bWFuZEVuY29kZXIgPSBidWZmZXItPmNvbW1hbmRCdWZmZXIoKS0+Y3JlYXRlUmVuZGVyQ29tbWFu
ZEVuY29kZXIoZGVzY3JpcHRvci0+cmVuZGVyUGFzc0Rlc2NyaXB0b3IoKSk7Cit9CisKK1dlYkdQ
VVJlbmRlckNvbW1hbmRFbmNvZGVyOjp+V2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIoKQorewor
fQorCit2b2lkIFdlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRSZW5kZXJQaXBlbGluZVN0
YXRlKFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUmIHBpcGVsaW5lU3RhdGUpCit7CisgICAgaWYg
KCFtX3JlbmRlckNvbW1hbmRFbmNvZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3JlbmRl
ckNvbW1hbmRFbmNvZGVyLT5zZXRSZW5kZXJQaXBlbGluZVN0YXRlKHBpcGVsaW5lU3RhdGUucmVu
ZGVyUGlwZWxpbmVTdGF0ZSgpKTsKK30KKwordm9pZCBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rl
cjo6c2V0RGVwdGhTdGVuY2lsU3RhdGUoV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUmIGRlcHRoU3Rl
bmNpbFN0YXRlKQoreworICAgIGlmICghbV9yZW5kZXJDb21tYW5kRW5jb2RlcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9yZW5kZXJDb21tYW5kRW5jb2Rlci0+c2V0RGVwdGhTdGVuY2lsU3Rh
dGUoZGVwdGhTdGVuY2lsU3RhdGUuZGVwdGhTdGVuY2lsU3RhdGUoKSk7Cit9CisKK3ZvaWQgV2Vi
R1BVUmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZlcnRleEJ1ZmZlcihXZWJHUFVCdWZmZXImIGJ1
ZmZlciwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGluZGV4KQoreworICAgIGlm
ICghbV9yZW5kZXJDb21tYW5kRW5jb2RlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9yZW5k
ZXJDb21tYW5kRW5jb2Rlci0+c2V0VmVydGV4QnVmZmVyKGJ1ZmZlci5idWZmZXIoKSwgb2Zmc2V0
LCBpbmRleCk7Cit9CisKK3ZvaWQgV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdt
ZW50QnVmZmVyKFdlYkdQVUJ1ZmZlciYgYnVmZmVyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNp
Z25lZCBpbnQgaW5kZXgpCit7CisgICAgaWYgKCFtX3JlbmRlckNvbW1hbmRFbmNvZGVyKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX3JlbmRlckNvbW1hbmRFbmNvZGVyLT5zZXRGcmFnbWVudEJ1
ZmZlcihidWZmZXIuYnVmZmVyKCksIG9mZnNldCwgaW5kZXgpOworfQorCit2b2lkIFdlYkdQVVJl
bmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3UHJpbWl0aXZlcyh1bnNpZ25lZCBpbnQgdHlwZSwgdW5z
aWduZWQgaW50IHN0YXJ0LCB1bnNpZ25lZCBpbnQgY291bnQpCit7CisgICAgaWYgKCFtX3JlbmRl
ckNvbW1hbmRFbmNvZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3JlbmRlckNvbW1hbmRF
bmNvZGVyLT5kcmF3UHJpbWl0aXZlcyh0eXBlLCBzdGFydCwgY291bnQpOworfQorCit2b2lkIFdl
YkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyOjplbmRFbmNvZGluZygpCit7CisgICAgaWYgKCFtX3Jl
bmRlckNvbW1hbmRFbmNvZGVyKQorICAgICAgICByZXR1cm47CisgICAgcmV0dXJuIG1fcmVuZGVy
Q29tbWFuZEVuY29kZXItPmVuZEVuY29kaW5nKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVSZW5kZXJDb21tYW5kRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uYjQ1ZjA2MzI4ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5oCkBAIC0wLDAgKzEsNjUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXZWJHUFVPYmplY3QuaCIKKwor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBH
UFVSZW5kZXJDb21tYW5kRW5jb2RlcjsKK2NsYXNzIFdlYkdQVUNvbW1hbmRCdWZmZXI7CitjbGFz
cyBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZTsKK2NsYXNzIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlw
dG9yOworY2xhc3MgV2ViR1BVRnVuY3Rpb247CitjbGFzcyBXZWJHUFVSZW5kZXJQaXBlbGluZVN0
YXRlOworY2xhc3MgV2ViR1BVQnVmZmVyOworCitjbGFzcyBXZWJHUFVSZW5kZXJDb21tYW5kRW5j
b2RlciA6IHB1YmxpYyBXZWJHUFVPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQ
VVJlbmRlckNvbW1hbmRFbmNvZGVyKCk7CisgICAgc3RhdGljIFJlZjxXZWJHUFVSZW5kZXJDb21t
YW5kRW5jb2Rlcj4gY3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBXZWJHUFVDb21tYW5k
QnVmZmVyKiwgV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IqKTsKKworICAgIHZvaWQgc2V0UmVu
ZGVyUGlwZWxpbmVTdGF0ZShXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlJik7CisgICAgdm9pZCBz
ZXREZXB0aFN0ZW5jaWxTdGF0ZShXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZSYpOworICAgIHZvaWQg
c2V0VmVydGV4QnVmZmVyKFdlYkdQVUJ1ZmZlciYgYnVmZmVyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0
LCB1bnNpZ25lZCBpbnQgaW5kZXgpOworICAgIHZvaWQgc2V0RnJhZ21lbnRCdWZmZXIoV2ViR1BV
QnVmZmVyJiBidWZmZXIsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBpbmRleCk7
CisgICAgdm9pZCBkcmF3UHJpbWl0aXZlcyh1bnNpZ25lZCBpbnQgdHlwZSwgdW5zaWduZWQgaW50
IHN0YXJ0LCB1bnNpZ25lZCBpbnQgY291bnQpOworICAgIHZvaWQgZW5kRW5jb2RpbmcoKTsKKwor
ICAgIE1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXIqIHJlbmRlckNvbW1hbmRFbmNvZGVyKCkgeyBy
ZXR1cm4gbV9yZW5kZXJDb21tYW5kRW5jb2Rlci5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFdl
YkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBXZWJHUFVD
b21tYW5kQnVmZmVyKiwgV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IqKTsKKyAgICBSZWZQdHI8
TWV0YWxSZW5kZXJDb21tYW5kRW5jb2Rlcj4gbV9yZW5kZXJDb21tYW5kRW5jb2RlcjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5pZGwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmM5OTQzYzU5NzUxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyQ29tbWFuZEVu
Y29kZXIuaWRsCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRB
dFJ1bnRpbWU9V2ViR1BVCitdIGludGVyZmFjZSBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2RlciB7
CisKKyAgICB2b2lkIHNldFJlbmRlclBpcGVsaW5lU3RhdGUoV2ViR1BVUmVuZGVyUGlwZWxpbmVT
dGF0ZSBwaXBlbGluZVN0YXRlKTsKKyAgICB2b2lkIHNldERlcHRoU3RlbmNpbFN0YXRlKFdlYkdQ
VURlcHRoU3RlbmNpbFN0YXRlIGRlcHRoU3RlbmNpbFN0YXRlKTsKKyAgICB2b2lkIHNldFZlcnRl
eEJ1ZmZlcihXZWJHUFVCdWZmZXIgYnVmZmVyLCB1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWdu
ZWQgbG9uZyBpbmRleCk7CisgICAgdm9pZCBzZXRGcmFnbWVudEJ1ZmZlcihXZWJHUFVCdWZmZXIg
YnVmZmVyLCB1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAg
dm9pZCBkcmF3UHJpbWl0aXZlcyh1bnNpZ25lZCBsb25nIHR5cGUsIHVuc2lnbmVkIGxvbmcgc3Rh
cnQsIHVuc2lnbmVkIGxvbmcgY291bnQpOworCisgICAgdm9pZCBlbmRFbmNvZGluZygpOworCit9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLmFlNGVmZDQ4ZTNhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yLmNwcApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2lu
Y2x1ZGUgIkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIkdQ
VVRleHR1cmUuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVk
ZSAiV2ViR1BVVGV4dHVyZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dlYkdQVVJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6V2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIE1ldGFsUmVuZGVyUGFzc0F0
dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorICAgIDogV2ViR1BVT2JqZWN0KGNvbnRl
eHQpCisgICAgLCBtX3JlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcihkZXNjcmlwdG9yKQor
eworfQorCitXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6On5XZWJHUFVSZW5k
ZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoKQoreworfQorCit1bnNpZ25lZCBsb25nIFdlYkdQ
VVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6bG9hZEFjdGlvbigpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX3JlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJu
IDA7IC8vIEZJWE1FOiBwcm9iYWJseSBhIHJlYWwgdmFsdWUgZm9yIHVua25vd24KKworICAgIHJl
dHVybiBtX3JlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci0+bG9hZEFjdGlvbigpOworfQor
Cit2b2lkIFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0TG9hZEFjdGlv
bih1bnNpZ25lZCBsb25nIG5ld0xvYWRBY3Rpb24pCit7CisgICAgaWYgKCFtX3JlbmRlclBhc3NB
dHRhY2htZW50RGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9yZW5kZXJQYXNz
QXR0YWNobWVudERlc2NyaXB0b3ItPnNldExvYWRBY3Rpb24obmV3TG9hZEFjdGlvbik7Cit9CisK
K3Vuc2lnbmVkIGxvbmcgV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzdG9y
ZUFjdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRlclBhc3NBdHRhY2htZW50RGVzY3Jp
cHRvcikKKyAgICAgICAgcmV0dXJuIDA7IC8vIEZJWE1FOiBwcm9iYWJseSBhIHJlYWwgdmFsdWUg
Zm9yIHVua25vd24KKworICAgIHJldHVybiBtX3JlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRv
ci0+c3RvcmVBY3Rpb24oKTsKK30KKwordm9pZCBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3I6OnNldFN0b3JlQWN0aW9uKHVuc2lnbmVkIGxvbmcgbmV3U3RvcmVBY3Rpb24pCit7
CisgICAgaWYgKCFtX3JlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9yZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3ItPnNldFN0b3JlQWN0
aW9uKG5ld1N0b3JlQWN0aW9uKTsKK30KKworUmVmUHRyPFdlYkdQVVRleHR1cmU+IFdlYkdQVVJl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6dGV4dHVyZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fdGV4dHVyZTsKK30KKwordm9pZCBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3I6OnNldFRleHR1cmUoUmVmUHRyPFdlYkdQVVRleHR1cmU+IG5ld1RleHR1cmUpCit7Cisg
ICAgaWYgKCFuZXdUZXh0dXJlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV90ZXh0dXJl
ID0gbmV3VGV4dHVyZTsKKyAgICAKKyAgICBpZiAobV9yZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3IpCisgICAgICAgIG1fcmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLT5zZXRUZXh0
dXJlKG5ld1RleHR1cmUtPnRleHR1cmUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVS
ZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mZTBkZjVmZDk4MwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvci5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlICJXZWJHUFVPYmplY3QuaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0
b3I7CitjbGFzcyBXZWJHUFVUZXh0dXJlOworCitjbGFzcyBXZWJHUFVSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3IgOiBwdWJsaWMgV2ViR1BVT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5XZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoKTsKKworICAgIHVuc2ln
bmVkIGxvbmcgbG9hZEFjdGlvbigpIGNvbnN0OworICAgIHZvaWQgc2V0TG9hZEFjdGlvbih1bnNp
Z25lZCBsb25nKTsKKworICAgIHVuc2lnbmVkIGxvbmcgc3RvcmVBY3Rpb24oKSBjb25zdDsKKyAg
ICB2b2lkIHNldFN0b3JlQWN0aW9uKHVuc2lnbmVkIGxvbmcpOworCisgICAgUmVmUHRyPFdlYkdQ
VVRleHR1cmU+IHRleHR1cmUoKSBjb25zdDsKKyAgICB2b2lkIHNldFRleHR1cmUoUmVmUHRyPFdl
YkdQVVRleHR1cmU+KTsKKworICAgIE1ldGFsUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
KiByZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5nZXQoKTsgfQorCisgICAgdmlydHVhbCBib29sIGlz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKK3By
b3RlY3RlZDoKKworICAgIFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcihXZWJH
UFVSZW5kZXJpbmdDb250ZXh0KiwgTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3Iq
KTsKKworCitwcml2YXRlOgorCisgICAgUmVmUHRyPE1ldGFsUmVuZGVyUGFzc0F0dGFjaG1lbnRE
ZXNjcmlwdG9yPiBtX3JlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjsKKyAgICBSZWZQdHI8
V2ViR1BVVGV4dHVyZT4gbV90ZXh0dXJlOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmlkbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZGI4OGNmY2JkYzQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3IuaWRsCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAg
IEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVLAorICAgIEN1c3RvbVRvSlNPYmplY3QKK10KK2ludGVy
ZmFjZSBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IgeworCisgICAgYXR0cmli
dXRlIFdlYkdQVVRleHR1cmU/IHRleHR1cmU7CisKKyAgICBhdHRyaWJ1dGUgdW5zaWduZWQgbG9u
ZyBsb2FkQWN0aW9uOyAvLyBzaG91bGQgYmUgV2ViR1BVTG9hZEFjdGlvbgorICAgIGF0dHJpYnV0
ZSB1bnNpZ25lZCBsb25nIHN0b3JlQWN0aW9uOyAvLyBzaG91bGQgYmUgV2ViR1BVU3RvcmVBY3Rp
b24KKworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMTI0NGJiM2Q4OGEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgor
CisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVVJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiR1BVVGV4dHVyZS5oIgorI2luY2x1ZGUgIldl
YkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVUZXh0dXJlLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yPiBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6Y3Jl
YXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIE1ldGFsUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoY29udGV4dCwg
ZGVzY3JpcHRvcikpOworfQorCitXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcjo6V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoV2ViR1BVUmVu
ZGVyaW5nQ29udGV4dCogY29udGV4dCwgTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvciogZGVzY3JpcHRvcikKKyAgICA6IFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvcihjb250ZXh0LCBkZXNjcmlwdG9yKQoreworfQorCitXZWJHUFVSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvcjo6fldlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yKCkKK3sKK30KKworTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvciogV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8TWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcio+KHJlbmRlclBh
c3NBdHRhY2htZW50RGVzY3JpcHRvcigpKTsKK30KKworVmVjdG9yPGZsb2F0PiBXZWJHUFVSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6Y2xlYXJDb2xvcigpIGNvbnN0Cit7Cisg
ICAgTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogZGVzY3JpcHRvciA9
IHJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCk7CisgICAgaWYgKCFkZXNjcmlw
dG9yKSB7CisgICAgICAgIFZlY3RvcjxmbG9hdD4gYmxhY2sgPSB7IDAuMCwgMC4wLCAwLjAsIDEu
MCB9OworICAgICAgICByZXR1cm4gYmxhY2s7CisgICAgfQorICAgIHJldHVybiBkZXNjcmlwdG9y
LT5jbGVhckNvbG9yKCk7Cit9CisKK3ZvaWQgV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3I6OnNldENsZWFyQ29sb3IoY29uc3QgVmVjdG9yPGZsb2F0PiYgbmV3Q2xlYXJD
b2xvcikKK3sKKyAgICBNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBk
ZXNjcmlwdG9yID0gcmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKTsKKyAgICBp
ZiAoIWRlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIGRlc2NyaXB0b3ItPnNldENs
ZWFyQ29sb3IobmV3Q2xlYXJDb2xvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjMyMjY2MmZmNDEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShX
RUJHUFUpCisKKyNpbmNsdWRlICJXZWJHUFVPYmplY3QuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5k
ZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvcjsKKworY2xhc3MgV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IgOiBwdWJsaWMgV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yIHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvcigpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3I+IGNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgTWV0YWxSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciopOworCisgICAgVmVjdG9yPGZsb2F0PiBjbGVh
ckNvbG9yKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDbGVhckNvbG9yKGNvbnN0IFZlY3RvcjxmbG9h
dD4mKTsKKworICAgIE1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIHJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCkgY29uc3Q7CisKKyAgICBib29sIGlz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KKworcHJpdmF0ZToKKyAgICBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcihXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvciopOworCit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmlkbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYWQ3MWQ1NjIwYWMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvci5pZGwKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJH
UFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gaW50ZXJmYWNlIFdlYkdQVVJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yIDogV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yIHsKKworICAgIGF0dHJpYnV0ZSBzZXF1ZW5jZTxmbG9hdD4gY2xlYXJDb2xv
cjsKKworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJl
bmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNjJkNmYyNzUzODkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIgor
CisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVVJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiR1BVVGV4dHVyZS5oIgorI2luY2x1ZGUgIldl
YkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVUZXh0dXJlLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnRE
ZXNjcmlwdG9yPiBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6Y3Jl
YXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIE1ldGFsUmVuZGVyUGFzc0RlcHRo
QXR0YWNobWVudERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoY29udGV4dCwg
ZGVzY3JpcHRvcikpOworfQorCitXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3Jp
cHRvcjo6V2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoV2ViR1BVUmVu
ZGVyaW5nQ29udGV4dCogY29udGV4dCwgTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvciogZGVzY3JpcHRvcikKKyAgICA6IFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvcihjb250ZXh0LCBkZXNjcmlwdG9yKQoreworfQorCitXZWJHUFVSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvcjo6fldlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnRE
ZXNjcmlwdG9yKCkKK3sKK30KKworZG91YmxlIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1l
bnREZXNjcmlwdG9yOjpjbGVhckRlcHRoKCkgY29uc3QKK3sKKyAgICBNZXRhbFJlbmRlclBhc3NE
ZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNjcmlwdG9yID0gcmVuZGVyUGFzc0RlcHRoQXR0
YWNobWVudERlc2NyaXB0b3IoKTsKKyAgICBpZiAoIWRlc2NyaXB0b3IpCisgICAgICAgIHJldHVy
biAwOworCisgICAgcmV0dXJuIGRlc2NyaXB0b3ItPmNsZWFyRGVwdGgoKTsKK30KKwordm9pZCBX
ZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0Q2xlYXJEZXB0aChk
b3VibGUgbmV3Q2xlYXJEZXB0aCkKK3sKKyAgICBNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1l
bnREZXNjcmlwdG9yKiBkZXNjcmlwdG9yID0gcmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2Ny
aXB0b3IoKTsKKyAgICBpZiAoIWRlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICBkZXNjcmlwdG9yLT5zZXRDbGVhckRlcHRoKG5ld0NsZWFyRGVwdGgpOworfQorCitNZXRhbFJl
bmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBXZWJHUFVSZW5kZXJQYXNzRGVwdGhB
dHRhY2htZW50RGVzY3JpcHRvcjo6cmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3Io
KSBjb25zdAoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxNZXRhbFJlbmRlclBhc3NEZXB0aEF0
dGFjaG1lbnREZXNjcmlwdG9yKj4ocmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKCkpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2Ny
aXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXB0
aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLjczOGFiNGM1YWY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaApAQCAt
MCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BV
T2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVUmVuZGVyUGFzc0RlcHRoQXR0
YWNobWVudERlc2NyaXB0b3I7CisKK2NsYXNzIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1l
bnREZXNjcmlwdG9yIDogcHVibGljIFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRv
ciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVu
dERlc2NyaXB0b3IoKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yPiBjcmVhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIE1ldGFsUmVu
ZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqKTsKKworICAgIGRvdWJsZSBjbGVhckRl
cHRoKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDbGVhckRlcHRoKGRvdWJsZSk7CisKKyAgICBNZXRh
bFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiByZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvcigpIGNvbnN0OworCitwcml2YXRlOgorICAgIFdlYkdQVVJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBNZXRh
bFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKik7CisKK307CisgICAgCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaWRs
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNo
bWVudERlc2NyaXB0b3IuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li4zMDA4YmNmMzNlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmlkbApAQCAtMCww
ICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
WworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQor
XSBpbnRlcmZhY2UgV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgOiBX
ZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IgeworCisgICAgYXR0cmlidXRlIHVu
cmVzdHJpY3RlZCBkb3VibGUgY2xlYXJEZXB0aDsKKworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNmQwNzI2Mjk2MTIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvci5jcHAKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHUFVS
ZW5kZXJQYXNzRGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUg
IkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJHUFVSZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCIK
KyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgor
I2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yPiBX
ZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcigpKTsKK30KKworV2ViR1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3I6OldlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yKCkKKzogV2ViR1BVT2Jq
ZWN0KCkKK3sKKyAgICBtX3JlbmRlclBhc3NEZXNjcmlwdG9yID0gTWV0YWxSZW5kZXJQYXNzRGVz
Y3JpcHRvcjo6Y3JlYXRlKCk7Cit9CisKK1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOjp+V2Vi
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IoKQoreworfQorCitSZWZQdHI8V2ViR1BVUmVuZGVyUGFz
c0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I+IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOjpk
ZXB0aEF0dGFjaG1lbnQoKQoreworICAgIGlmICghbV9yZW5kZXJQYXNzRGVzY3JpcHRvcikKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIW1fZGVwdGhBdHRhY2htZW50RGVzY3Jp
cHRvcikgeworICAgICAgICBSZWZQdHI8TWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvcj4gcGxhdGZvcm1EZXB0aEF0dGFjaG1lbnQgPSBtX3JlbmRlclBhc3NEZXNjcmlwdG9y
LT5kZXB0aEF0dGFjaG1lbnQoKTsKKyAgICAgICAgbV9kZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9y
ID0gV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OmNyZWF0ZSh0aGlz
LT5jb250ZXh0KCksIHBsYXRmb3JtRGVwdGhBdHRhY2htZW50LmdldCgpKTsKKyAgICB9CisgICAg
cmV0dXJuIG1fZGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjsKK30KKworVmVjdG9yPFJlZlB0cjxX
ZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4+IFdlYkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yOjpjb2xvckF0dGFjaG1lbnRzKCkKK3sKKyAgICBpZiAoIW1fcmVuZGVyUGFz
c0Rlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiBWZWN0b3I8UmVmUHRyPFdlYkdQVVJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4oKTsKKworICAgIGlmICghbV9jb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9ycy5zaXplKCkpIHsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxNZXRhbFJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4gcGxhdGZvcm1Db2xvckF0dGFjaG1l
bnRzID0gbV9yZW5kZXJQYXNzRGVzY3JpcHRvci0+Y29sb3JBdHRhY2htZW50cygpOworICAgICAg
ICBmb3IgKGF1dG8mIGF0dGFjaG1lbnQgOiBwbGF0Zm9ybUNvbG9yQXR0YWNobWVudHMpIHsKKyAg
ICAgICAgICAgIG1fY29sb3JBdHRhY2htZW50RGVzY3JpcHRvcnMuYXBwZW5kKFdlYkdQVVJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpjcmVhdGUodGhpcy0+Y29udGV4dCgpLCBh
dHRhY2htZW50LmdldCgpKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG1fY29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcnM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQ
YXNzRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
ODRjMDU5MjlkYzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXZWJHUFVPYmplY3QuaCIKKworI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVSZW5kZXJQ
YXNzRGVzY3JpcHRvcjsKK2NsYXNzIFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yOworY2xhc3MgV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I7
CisKK2NsYXNzIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yIDogcHVibGljIFdlYkdQVU9iamVj
dCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IoKTsK
KyAgICBzdGF0aWMgUmVmPFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yPiBjcmVhdGUoKTsKKwor
ICAgIFJlZlB0cjxXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcj4gZGVw
dGhBdHRhY2htZW50KCk7CisgICAgVmVjdG9yPFJlZlB0cjxXZWJHUFVSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcj4+IGNvbG9yQXR0YWNobWVudHMoKTsKKworICAgIE1ldGFsUmVu
ZGVyUGFzc0Rlc2NyaXB0b3IqIHJlbmRlclBhc3NEZXNjcmlwdG9yKCkgeyByZXR1cm4gbV9yZW5k
ZXJQYXNzRGVzY3JpcHRvci5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFdlYkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yKCk7CisKKyAgICBWZWN0b3I8UmVmUHRyPFdlYkdQVVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yPj4gbV9jb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yczsKKyAg
ICBSZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I+IG1fZGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvcjsKKworICAgIFJlZlB0cjxNZXRhbFJlbmRlclBhc3NEZXNj
cmlwdG9yPiBtX3JlbmRlclBhc3NEZXNjcmlwdG9yOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLmEwMjY0YmEyZDFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaWRsCkBAIC0w
LDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CitbCisgICAgQ29uc3RydWN0b3IsCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJs
ZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGludGVyZmFjZSBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRv
ciB7CisKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgc2VxdWVuY2U8V2ViR1BVUmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGNvbG9yQXR0YWNobWVudHM7CisgICAgcmVhZG9ubHkg
YXR0cmlidXRlIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yIGRlcHRo
QXR0YWNobWVudDsKKyAgICAvL3JlYWRvbmx5IGF0dHJpYnV0ZSBXZWJHUFVSZW5kZXJQYXNzU3Rl
bmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yIHN0ZW5jaWxBdHRhY2htZW50OworCisgICAgLy8gcmVu
ZGVyVGFyZ2V0QXJyYXlMZW5ndGgKKyAgICAvLyB2aXNpYmlsaXR5UmVzdWx0QnVmZmVyCisKK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uM2UwNjkzMDkyMDIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyaW5n
Q29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXZWJHUFVSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcjo6Y3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRl
eHQsIE1ldGFsUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNjcmlw
dG9yKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVJlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvcihjb250ZXh0LCBkZXNjcmlwdG9yKSk7Cit9CisKK1dlYkdQ
VVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6V2ViR1BVUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNv
bnRleHQsIE1ldGFsUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNj
cmlwdG9yKQorICAgIDogV2ViR1BVT2JqZWN0KGNvbnRleHQpCisgICAgLCBtX3JlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcihkZXNjcmlwdG9yKQoreworfQorCitXZWJHUFVS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6On5XZWJHUFVSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKQoreworfQorCit1bnNpZ25lZCBsb25nIFdl
YkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6cGl4ZWxGb3JtYXQo
KSBjb25zdAoreworICAgIGlmICghbV9yZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IpCisgICAgICAgIHJldHVybiAwOyAvLyBGSVhNRTogcHJvYmFibHkgYSByZWFsIHZhbHVl
IGZvciB1bmtub3duCisKKyAgICByZXR1cm4gbV9yZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3ItPnBpeGVsRm9ybWF0KCk7Cit9CisKK3ZvaWQgV2ViR1BVUmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRQaXhlbEZvcm1hdCh1bnNpZ25lZCBsb25n
IG5ld1BpeGVsRm9ybWF0KQoreworICAgIGlmICghbV9yZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLT5zZXRQaXhlbEZvcm1hdChuZXdQaXhlbEZvcm1hdCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwLi4zY2NmZmZlZWUwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvci5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlICJXZWJHUFVPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBH
UFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I7CisKK2NsYXNzIFdlYkdQ
VVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBXZWJHUFVP
YmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcigpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVUmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBjcmVhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4
dCosIE1ldGFsUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKik7CisKKyAg
ICB1bnNpZ25lZCBsb25nIHBpeGVsRm9ybWF0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRQaXhlbEZv
cm1hdCh1bnNpZ25lZCBsb25nKTsKKworICAgIE1ldGFsUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yKiByZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3Io
KSB7IHJldHVybiBtX3JlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5nZXQo
KTsgfQorCitwcml2YXRlOgorICAgIFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvcihXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgTWV0YWxSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IqKTsKKworICAgIFJlZlB0cjxNZXRhbFJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gbV9yZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3I7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaWRs
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mYjhiZjM2MTlkOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5pZGwKQEAgLTAsMCArMSwzMyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRp
b25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gaW50ZXJmYWNlIFdl
YkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciB7CisKKyAgICBhdHRy
aWJ1dGUgdW5zaWduZWQgbG9uZyBwaXhlbEZvcm1hdDsgLy8gc2hvdWxkIGJlIE1UTFBpeGVsRm9y
bWF0CisKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uMGY0YjI5NjIxNDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCkBA
IC0wLDAgKzEsMTQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVUZ1bmN0
aW9uLmgiCisjaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCisjaW5jbHVk
ZSAiR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisjaW5jbHVk
ZSAiV2ViR1BVRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0Lmgi
CisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcj4gV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpjcmVhdGUoKQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpKTsK
K30KKworV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpXZWJHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IoKQorICAgIDogV2ViR1BVT2JqZWN0KCkKK3sKKyAgICBtX3JlbmRlclBpcGVs
aW5lRGVzY3JpcHRvciA9IE1ldGFsUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpjcmVhdGUoKTsK
K30KKworV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp+V2ViR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yKCkKK3sKK30KKworU3RyaW5nIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcjo6bGFiZWwoKSBjb25zdAoreworICAgIGlmICghbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgcmV0dXJuIG1fcmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yLT5sYWJlbCgpOworfQorCit2b2lkIFdlYkdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcjo6c2V0TGFiZWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKK3sKKyAgICAgIGlm
ICghbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
cmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLT5zZXRMYWJlbChsYWJlbCk7Cit9CisKK1JlZlB0cjxX
ZWJHUFVGdW5jdGlvbj4gV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp2ZXJ0ZXhGdW5j
dGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdmVydGV4RnVuY3Rpb247Cit9CisKK3ZvaWQg
V2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRWZXJ0ZXhGdW5jdGlvbihSZWZQdHI8
V2ViR1BVRnVuY3Rpb24+IG5ld1ZlcnRleEZ1bmN0aW9uKQoreworICAgIGlmICghbmV3VmVydGV4
RnVuY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1fdmVydGV4RnVuY3Rpb24gPSBuZXdW
ZXJ0ZXhGdW5jdGlvbjsKKworICAgIGlmIChtX3JlbmRlclBpcGVsaW5lRGVzY3JpcHRvcikKKyAg
ICAgICAgbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3ItPnNldFZlcnRleEZ1bmN0aW9uKG5ld1Zl
cnRleEZ1bmN0aW9uLT5mdW5jdGlvbigpKTsKK30KKworUmVmUHRyPFdlYkdQVUZ1bmN0aW9uPiBX
ZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmZyYWdtZW50RnVuY3Rpb24oKSBjb25zdAor
eworICAgIHJldHVybiBtX2ZyYWdtZW50RnVuY3Rpb247Cit9CisKK3ZvaWQgV2ViR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRGcmFnbWVudEZ1bmN0aW9uKFJlZlB0cjxXZWJHUFVGdW5j
dGlvbj4gbmV3RnJhZ21lbnRGdW5jdGlvbikKK3sKKyAgICBpZiAoIW5ld0ZyYWdtZW50RnVuY3Rp
b24pCisgICAgICAgIHJldHVybjsKKworICAgIG1fZnJhZ21lbnRGdW5jdGlvbiA9IG5ld0ZyYWdt
ZW50RnVuY3Rpb247CisKKyAgICBpZiAobV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpCisgICAg
ICAgIG1fcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLT5zZXRGcmFnbWVudEZ1bmN0aW9uKG5ld0Zy
YWdtZW50RnVuY3Rpb24tPmZ1bmN0aW9uKCkpOworfQorCitWZWN0b3I8UmVmUHRyPFdlYkdQVVJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4+IFdlYkdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcjo6Y29sb3JBdHRhY2htZW50cygpCit7CisgICAgaWYgKCFtX3JlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxSZWZQdHI8V2ViR1BVUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4oKTsKKworICAgIGlmICghbV9j
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9ycy5zaXplKCkpIHsKKyAgICAgICAgVmVjdG9yPFJlZlB0
cjxNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4+IHBsYXRmb3Jt
Q29sb3JBdHRhY2htZW50cyA9IG1fcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLT5jb2xvckF0dGFj
aG1lbnRzKCk7CisgICAgICAgIGZvciAoYXV0byYgYXR0YWNobWVudCA6IHBsYXRmb3JtQ29sb3JB
dHRhY2htZW50cykgeworICAgICAgICAgICAgbV9jb2xvckF0dGFjaG1lbnREZXNjcmlwdG9ycy5h
cHBlbmQoV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpjcmVh
dGUodGhpcy0+Y29udGV4dCgpLCBhdHRhY2htZW50LmdldCgpKSk7CisgICAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIG1fY29sb3JBdHRhY2htZW50RGVzY3JpcHRvcnM7Cit9CisKK3Vuc2lnbmVk
IGxvbmcgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpkZXB0aEF0dGFjaG1lbnRQaXhl
bEZvcm1hdCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRlclBpcGVsaW5lRGVzY3JpcHRvcikK
KyAgICAgICAgcmV0dXJuIDA7IC8vIEZJWE1FOiBwcm9iYWJseSBhIHJlYWwgdmFsdWUgZm9yIHVu
a25vd24KKworICAgIHJldHVybiBtX3JlbmRlclBpcGVsaW5lRGVzY3JpcHRvci0+ZGVwdGhBdHRh
Y2htZW50UGl4ZWxGb3JtYXQoKTsKKworfQorCit2b2lkIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcjo6c2V0RGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQodW5zaWduZWQgbG9uZyBuZXdQ
aXhlbEZvcm1hdCkKK3sKKyAgICBpZiAoIW1fcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX3JlbmRlclBpcGVsaW5lRGVzY3JpcHRvci0+c2V0RGVwdGhB
dHRhY2htZW50UGl4ZWxGb3JtYXQobmV3UGl4ZWxGb3JtYXQpOworfQorCit2b2lkIFdlYkdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6cmVzZXQoKQoreworICAgIG1fdmVydGV4RnVuY3Rpb24g
PSBudWxscHRyOworICAgIG1fZnJhZ21lbnRGdW5jdGlvbiA9IG51bGxwdHI7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45OTEwZTg1MmY4NwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvci5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlICJXZWJHUFVPYmplY3QuaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I7Citj
bGFzcyBXZWJHUFVGdW5jdGlvbjsKK2NsYXNzIFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcjsKKworY2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
IDogcHVibGljIFdlYkdQVU9iamVjdCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCk7CisgICAgc3RhdGljIFJlZjxXZWJHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3I+IGNyZWF0ZSgpOworCisgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKTsKKworICAgIFJlZlB0cjxXZWJHUFVGdW5j
dGlvbj4gdmVydGV4RnVuY3Rpb24oKSBjb25zdDsKKyAgICB2b2lkIHNldFZlcnRleEZ1bmN0aW9u
KFJlZlB0cjxXZWJHUFVGdW5jdGlvbj4pOworCisgICAgUmVmUHRyPFdlYkdQVUZ1bmN0aW9uPiBm
cmFnbWVudEZ1bmN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBzZXRGcmFnbWVudEZ1bmN0aW9uKFJl
ZlB0cjxXZWJHUFVGdW5jdGlvbj4pOworCisgICAgVmVjdG9yPFJlZlB0cjxXZWJHUFVSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+PiBjb2xvckF0dGFjaG1lbnRzKCk7CisK
KyAgICB1bnNpZ25lZCBsb25nIGRlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0KCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXREZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdCh1bnNpZ25lZCBsb25nKTsKKwor
ICAgIHZvaWQgcmVzZXQoKTsKKworICAgIE1ldGFsUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBy
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoKSB7IHJldHVybiBtX3JlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvci5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcigpOworCisgICAgUmVmUHRyPFdlYkdQVUZ1bmN0aW9uPiBtX3ZlcnRleEZ1bmN0aW9uOwor
ICAgIFJlZlB0cjxXZWJHUFVGdW5jdGlvbj4gbV9mcmFnbWVudEZ1bmN0aW9uOworCisgICAgVmVj
dG9yPFJlZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+
PiBtX2NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JzOworCisgICAgUmVmUHRyPE1ldGFsUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yPiBtX3JlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTk4NjgzZGQ5ODgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IuaWRsCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uc3RydWN0b3IsCisgICAgQ29uZGl0
aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGludGVyZmFjZSBX
ZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgeworCisgICAgYXR0cmlidXRlIERPTVN0cmlu
ZyBsYWJlbDsKKworICAgIGF0dHJpYnV0ZSBXZWJHUFVGdW5jdGlvbj8gdmVydGV4RnVuY3Rpb247
CisgICAgYXR0cmlidXRlIFdlYkdQVUZ1bmN0aW9uPyBmcmFnbWVudEZ1bmN0aW9uOworCisgICAg
cmVhZG9ubHkgYXR0cmlidXRlIHNlcXVlbmNlPFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcj4gY29sb3JBdHRhY2htZW50czsKKworICAgIGF0dHJpYnV0ZSB1bnNp
Z25lZCBsb25nIGRlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0OworCisgICAgdm9pZCByZXNldCgp
OworCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVu
ZGVyUGlwZWxpbmVTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVS
ZW5kZXJQaXBlbGluZVN0YXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uYjFmMzM1NjAyZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcApAQCAtMCwwICsxLDcyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaCIKKworI2lmIEVO
QUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmgiCisjaW5j
bHVkZSAiV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXZWJHUFVS
ZW5kZXJQaXBlbGluZVN0YXRlPiBXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlOjpjcmVhdGUoV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yKiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVJlbmRl
clBpcGVsaW5lU3RhdGUoY29udGV4dCwgZGVzY3JpcHRvcikpOworfQorCitXZWJHUFVSZW5kZXJQ
aXBlbGluZVN0YXRlOjpXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlKFdlYkdQVVJlbmRlcmluZ0Nv
bnRleHQqIGNvbnRleHQsIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRv
cikKKyAgICA6IFdlYkdQVU9iamVjdChjb250ZXh0KQoreworICAgIGlmICghY29udGV4dCB8fCAh
ZGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOworICAgIG1fcmVuZGVyUGlwZWxpbmVTdGF0ZSA9
IE1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZTo6Y3JlYXRlKGNvbnRleHQtPmRldmljZSgpLmdldCgp
LCBkZXNjcmlwdG9yLT5yZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoKSk7Cit9CisKK1dlYkdQVVJl
bmRlclBpcGVsaW5lU3RhdGU6On5XZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlKCkKK3sKK30KKwor
U3RyaW5nIFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGU6OmxhYmVsKCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1fcmVuZGVyUGlwZWxpbmVTdGF0ZSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CisKKyAgICByZXR1cm4gbV9yZW5kZXJQaXBlbGluZVN0YXRlLT5sYWJlbCgpOworfQorCit2b2lk
IFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGU6OnNldExhYmVsKGNvbnN0IFN0cmluZyYgbGFiZWwp
Cit7CisgICAgaWYgKCFtX3JlbmRlclBpcGVsaW5lU3RhdGUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fcmVuZGVyUGlwZWxpbmVTdGF0ZS0+c2V0TGFiZWwobGFiZWwpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi40YzViMDgwYWRkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaApAQCAtMCww
ICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BVT2Jq
ZWN0LmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZTsKK2NsYXNzIFdlYkdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcjsKKworY2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZSA6IHB1Ymxp
YyBXZWJHUFVPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVVJlbmRlclBpcGVs
aW5lU3RhdGUoKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGU+IGNy
ZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yKik7CisKKyAgICBTdHJpbmcgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkIHNldExhYmVsKGNv
bnN0IFN0cmluZyYpOworCisgICAgTWV0YWxSZW5kZXJQaXBlbGluZVN0YXRlKiByZW5kZXJQaXBl
bGluZVN0YXRlKCkgeyByZXR1cm4gbV9yZW5kZXJQaXBlbGluZVN0YXRlLmdldCgpOyB9CisKK3By
aXZhdGU6CisgICAgV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZShXZWJHUFVSZW5kZXJpbmdDb250
ZXh0KiwgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKik7CisKKyAgICBSZWZQdHI8TWV0
YWxSZW5kZXJQaXBlbGluZVN0YXRlPiBtX3JlbmRlclBpcGVsaW5lU3RhdGU7Cit9OworICAgIAor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaWRsIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5pZGwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjRlZDM0ZDI4Y2E1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0
ZS5pZGwKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVu
dGltZT1XZWJHUFUKK10gaW50ZXJmYWNlIFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUgeworCisg
ICAgYXR0cmlidXRlIERPTVN0cmluZyBsYWJlbDsKKworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjlhZjE5ZjFjMGJhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAK
QEAgLTAsMCArMSwyMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dC5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiR1BVRGV2aWNlLmgiCisjaW5jbHVkZSAi
V2ViR1BVQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR1BVQ29tbWFuZFF1ZXVlLmgiCisjaW5jbHVk
ZSAiV2ViR1BVTGlicmFyeS5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9y
LmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCisjaW5jbHVk
ZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oIgorI2luY2x1ZGUgIldlYkdQVURlcHRoU3Rl
bmNpbERlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oIgor
I2luY2x1ZGUgIldlYkdQVURyYXdhYmxlLmgiCisjaW5jbHVkZSAiV2ViR1BVVGV4dHVyZURlc2Ny
aXB0b3IuaCIKKyNpbmNsdWRlICJXZWJHUFVUZXh0dXJlLmgiCisKKyNpbmNsdWRlIDxydW50aW1l
L0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVk
ZSA8cnVudGltZS9UeXBlZEFycmF5SW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDMy
QXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFt
ZXNwYWNlIHsKKworaW50IGNsYW1wKGludCB2YWx1ZSwgaW50IG1pbiwgaW50IG1heCkKK3sKKyAg
ICBpZiAodmFsdWUgPCBtaW4pCisgICAgICAgIHZhbHVlID0gbWluOworICAgIGlmICh2YWx1ZSA+
IG1heCkKKyAgICAgICAgdmFsdWUgPSBtYXg7CisgICAgcmV0dXJuIHZhbHVlOworfQorCit9CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IGludCBrTWF4VGV4dHVyZVNpemUg
PSA0MDk2OworCisKK3N0ZDo6dW5pcXVlX3B0cjxXZWJHUFVSZW5kZXJpbmdDb250ZXh0PiBXZWJH
UFVSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcykKK3sK
KyAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBjYW52YXMuZG9jdW1lbnQoKTsKKyAgICBGcmFtZSog
ZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisvLyAgICBNZXRhbERldmljZTo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzID0g
YXR0cnMgPyBhdHRycy0+YXR0cmlidXRlcygpIDogR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0
ZXMoKTsKKyAgICBNZXRhbERldmljZTo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzOworCisgICAgYXR0
cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKKworLy8gICAgICAgIGlmIChwYWdlKQorLy8gICAg
ICAgICAgICBhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW8gPSBwYWdlLT5kZXZpY2VTY2FsZUZh
Y3RvcigpOworCisgICAgSG9zdFdpbmRvdyogaG9zdFdpbmRvdyA9IGRvY3VtZW50LnZpZXcoKS0+
cm9vdCgpLT5ob3N0V2luZG93KCk7CisgICAgUmVmUHRyPE1ldGFsRGV2aWNlPiBkZXZpY2UoTWV0
YWxEZXZpY2U6OmNyZWF0ZShhdHRyaWJ1dGVzLCBob3N0V2luZG93KSk7CisKKyAgICBpZiAoIWRl
dmljZSkgeyAvLyB8fCAhY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpIHsKKyAgICAgICAg
Ly8gY2FudmFzLT5kaXNwYXRjaEV2ZW50KFdlYkdMQ29udGV4dEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3JFdmVudCwgZmFsc2UsIHRydWUsICJDb3Vs
ZCBub3QgY3JlYXRlIGEgV2ViR0wgY29udGV4dC4iKSk7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJHUFVSZW5kZXJpbmdDb250ZXh0PiBy
ZW5kZXJpbmdDb250ZXh0ID0gbnVsbHB0cjsKKyAgICByZW5kZXJpbmdDb250ZXh0ID0gc3RkOjp1
bmlxdWVfcHRyPFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ+KG5ldyBXZWJHUFVSZW5kZXJpbmdDb250
ZXh0KGNhbnZhcywgZGV2aWNlKSk7CisgICAgcmVuZGVyaW5nQ29udGV4dC0+c3VzcGVuZElmTmVl
ZGVkKCk7CisKKyAgICByZXR1cm4gcmVuZGVyaW5nQ29udGV4dDsKK30KKworV2ViR1BVUmVuZGVy
aW5nQ29udGV4dDo6V2ViR1BVUmVuZGVyaW5nQ29udGV4dChIVE1MQ2FudmFzRWxlbWVudCYgY2Fu
dmFzLCBQYXNzUmVmUHRyPE1ldGFsRGV2aWNlPiBkZXZpY2UpCisgICAgOiBDYW52YXNSZW5kZXJp
bmdDb250ZXh0KGNhbnZhcykKKyAgICAsIEFjdGl2ZURPTU9iamVjdCgmY2FudmFzLmRvY3VtZW50
KCkpCisgICAgLCBtX2RldmljZShkZXZpY2UpCisgICAgLy8gLCBtX2F0dHJpYnV0ZXMoYXR0cmli
dXRlcykKK3sKKyAgICBpbml0aWFsaXplTmV3Q29udGV4dCgpOworfQorCit2b2lkIFdlYkdQVVJl
bmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVOZXdDb250ZXh0KCkKK3sKKyAgICAvLyBGSVhNRTog
TWF5YmUgd2Ugc2hvdWxkIHJlc2V0IGEgYnVuY2ggb2Ygc3R1ZmYgaGVyZS4KKworICAgIEludFNp
emUgY2FudmFzU2l6ZSA9IGNsYW1wZWRDYW52YXNTaXplKCk7CisgICAgbV9kZXZpY2UtPnJlc2hh
cGUoY2FudmFzU2l6ZS53aWR0aCgpLCBjYW52YXNTaXplLmhlaWdodCgpKTsKK30KKworSW50U2l6
ZSBXZWJHUFVSZW5kZXJpbmdDb250ZXh0OjpjbGFtcGVkQ2FudmFzU2l6ZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIEludFNpemUoY2xhbXAoY2FudmFzKCkud2lkdGgoKSwgMSwga01heFRleHR1cmVT
aXplKSwKKyAgICAgICAgICAgICAgICAgICBjbGFtcChjYW52YXMoKS5oZWlnaHQoKSwgMSwga01h
eFRleHR1cmVTaXplKSk7Cit9CisKK2Jvb2wgV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6aGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dDo6c3RvcCgpCit7Cit9CisKK2NvbnN0IGNoYXIqIFdlYkdQVVJl
bmRlcmluZ0NvbnRleHQ6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAgIHJldHVy
biAiV2ViR1BVUmVuZGVyaW5nQ29udGV4dCI7Cit9CisKK2Jvb2wgV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dDo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitQbGF0Zm9ybUxheWVyKiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0Ojpw
bGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kZXZpY2UtPnBsYXRmb3JtTGF5
ZXIoKTsKK30KKwordm9pZCBXZWJHUFVSZW5kZXJpbmdDb250ZXh0OjptYXJrTGF5ZXJDb21wb3Np
dGVkKCkKK3sKKyAgICBtX2RldmljZS0+bWFya0xheWVyQ29tcG9zaXRlZCgpOworfQorCit2b2lk
IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQor
eworICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIHJlc2V0IHN0dWZmIGhlcmU/CisgICAgbV9k
ZXZpY2UtPnJlc2hhcGUod2lkdGgsIGhlaWdodCk7Cit9CisKK1JlZlB0cjxXZWJHUFVMaWJyYXJ5
PiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVMaWJyYXJ5KGNvbnN0IFN0cmluZyBzb3Vy
Y2VDb2RlKQoreworICAgIFJlZlB0cjxXZWJHUFVMaWJyYXJ5PiBsaWJyYXJ5ID0gV2ViR1BVTGli
cmFyeTo6Y3JlYXRlKHRoaXMsIHNvdXJjZUNvZGUpOworICAgIHJldHVybiBsaWJyYXJ5OworfQor
CitSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZT4gV2ViR1BVUmVuZGVyaW5nQ29udGV4
dDo6Y3JlYXRlUmVuZGVyUGlwZWxpbmVTdGF0ZShXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpCit7CisgICAgUmVmUHRyPFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGU+
IHN0YXRlID0gV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZTo6Y3JlYXRlKHRoaXMsICZkZXNjcmlw
dG9yKTsKKyAgICByZXR1cm4gc3RhdGU7Cit9CisKK1JlZlB0cjxXZWJHUFVEZXB0aFN0ZW5jaWxT
dGF0ZT4gV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlRGVwdGhTdGVuY2lsU3RhdGUoV2Vi
R1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICBSZWZQdHI8V2Vi
R1BVRGVwdGhTdGVuY2lsU3RhdGU+IHN0YXRlID0gV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGU6OmNy
ZWF0ZSh0aGlzLCAmZGVzY3JpcHRvcik7CisgICAgcmV0dXJuIHN0YXRlOworfQorCitSZWZQdHI8
V2ViR1BVQ29tbWFuZFF1ZXVlPiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVDb21tYW5k
UXVldWUoKQoreworICAgIFJlZlB0cjxXZWJHUFVDb21tYW5kUXVldWU+IHF1ZXVlID0gV2ViR1BV
Q29tbWFuZFF1ZXVlOjpjcmVhdGUodGhpcyk7CisgICAgcmV0dXJuIHF1ZXVlOworfQorCitSZWZQ
dHI8V2ViR1BVRHJhd2FibGU+IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ6Om5leHREcmF3YWJsZSgp
Cit7CisgICAgUmVmUHRyPFdlYkdQVURyYXdhYmxlPiBkcmF3YWJsZSA9IFdlYkdQVURyYXdhYmxl
OjpjcmVhdGUodGhpcyk7CisgICAgcmV0dXJuIGRyYXdhYmxlOworfQorCitSZWZQdHI8V2ViR1BV
QnVmZmVyPiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVCdWZmZXIoQXJyYXlCdWZmZXJW
aWV3JiBkYXRhKQoreworICAgIFJlZlB0cjxXZWJHUFVCdWZmZXI+IGJ1ZmZlciA9IFdlYkdQVUJ1
ZmZlcjo6Y3JlYXRlKHRoaXMsICZkYXRhKTsKKyAgICByZXR1cm4gYnVmZmVyOworfQorCitSZWZQ
dHI8V2ViR1BVVGV4dHVyZT4gV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlVGV4dHVyZShX
ZWJHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICBSZWZQdHI8V2ViR1BV
VGV4dHVyZT4gdGV4dHVyZSA9IFdlYkdQVVRleHR1cmU6OmNyZWF0ZSh0aGlzLCAmZGVzY3JpcHRv
cik7CisgICAgcmV0dXJuIHRleHR1cmU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5k
ZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJp
bmdDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjk2M2Rk
NzQ1ZThlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dC5oCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
V0VCR1BVKQorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiQ2FudmFz
UmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIkdQVURldmljZS5oIgorI2luY2x1ZGUgPHJ1
bnRpbWUvQXJyYXlCdWZmZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJH
UFVDb21tYW5kUXVldWU7CitjbGFzcyBXZWJHUFVMaWJyYXJ5OworY2xhc3MgV2ViR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yOworY2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZTsKK2Ns
YXNzIFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3I7CitjbGFzcyBXZWJHUFVEZXB0aFN0ZW5j
aWxTdGF0ZTsKK2NsYXNzIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOworY2xhc3MgV2ViR1BV
RHJhd2FibGU7CitjbGFzcyBXZWJHUFVCdWZmZXI7CitjbGFzcyBXZWJHUFVUZXh0dXJlOworY2xh
c3MgV2ViR1BVVGV4dHVyZURlc2NyaXB0b3I7CisKK2NsYXNzIFdlYkdQVVJlbmRlcmluZ0NvbnRl
eHQgOiBwdWJsaWMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCwgcHVibGljIEFjdGl2ZURPTU9iamVj
dCB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJHUFVSZW5kZXJpbmdD
b250ZXh0PiBjcmVhdGUoSFRNTENhbnZhc0VsZW1lbnQmKTsKKy8vICAgIHZpcnR1YWwgfldlYkdQ
VVJlbmRlcmluZ0NvbnRleHQoKTsKKworICAgIGJvb2wgaXNHUFUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CisKKyAgICBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KTsKKworICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpOworCisgICAgUGxhdGZvcm1M
YXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlOworCisgICAgUmVmUHRyPE1ldGFs
RGV2aWNlPiBkZXZpY2UoKSB7IHJldHVybiBtX2RldmljZTsgfQorCisgICAgLy8gV2ViR1BVIGVu
dHJ5IHBvaW50cworCisgICAgUmVmUHRyPFdlYkdQVUxpYnJhcnk+IGNyZWF0ZUxpYnJhcnkoY29u
c3QgU3RyaW5nKTsKKworICAgIFJlZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlPiBjcmVh
dGVSZW5kZXJQaXBlbGluZVN0YXRlKFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYpOwor
CisgICAgUmVmUHRyPFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlPiBjcmVhdGVEZXB0aFN0ZW5jaWxT
dGF0ZShXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yJik7CisKKyAgICBSZWZQdHI8V2ViR1BV
Q29tbWFuZFF1ZXVlPiBjcmVhdGVDb21tYW5kUXVldWUoKTsKKworICAgIFJlZlB0cjxXZWJHUFVE
cmF3YWJsZT4gbmV4dERyYXdhYmxlKCk7CisKKyAgICBSZWZQdHI8V2ViR1BVQnVmZmVyPiBjcmVh
dGVCdWZmZXIoQXJyYXlCdWZmZXJWaWV3JiBkYXRhKTsKKworICAgIFJlZlB0cjxXZWJHUFVUZXh0
dXJlPiBjcmVhdGVUZXh0dXJlKFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yJik7CisKK3Byb3RlY3Rl
ZDoKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOworICAgIGNvbnN0IGNo
YXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNhblN1
c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBvdmVycmlkZTsKKworICAgIEludFNp
emUgY2xhbXBlZENhbnZhc1NpemUoKSBjb25zdDsKKyAgICB2b2lkIGluaXRpYWxpemVOZXdDb250
ZXh0KCk7CisKK3ByaXZhdGU6CisvLyAgICBXZWJHUFVSZW5kZXJpbmdDb250ZXh0KEhUTUxDYW52
YXNFbGVtZW50Kik7Ly8sIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzKTsKKyAgICBXZWJH
UFVSZW5kZXJpbmdDb250ZXh0KEhUTUxDYW52YXNFbGVtZW50JiwgUGFzc1JlZlB0cjxNZXRhbERl
dmljZT4pOworCisgICAgUmVmUHRyPE1ldGFsRGV2aWNlPiBtX2RldmljZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DQU5WQVNSRU5ERVJJ
TkdDT05URVhUKFdlYkNvcmU6OldlYkdQVVJlbmRlcmluZ0NvbnRleHQsIGlzR1BVKCkpCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVy
aW5nQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJp
bmdDb250ZXh0LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWE4
MTQzNDBiNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHUFVSZW5kZXJpbmdDb250ZXh0LmlkbApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJH
UFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUsCisgICAgSlNDdXN0b21NYXJrRnVuY3Rp
b24sCisgICAgRG9Ob3RDaGVja0NvbnN0YW50cworXSBpbnRlcmZhY2UgV2ViR1BVUmVuZGVyaW5n
Q29udGV4dCB7CisKKyAgICAvLyBQaXhlbCBmb3JtYXRzCisKKyAgICBjb25zdCB1bnNpZ25lZCBp
bnQgUGl4ZWxGb3JtYXRCR1JBOFVub3JtID0gODA7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFBp
eGVsRm9ybWF0RGVwdGgzMkZsb2F0ID0gMjUyOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBQaXhl
bEZvcm1hdFN0ZW5jaWw4ID0gMjUzOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBQaXhlbEZvcm1h
dEludmFsaWQgPSAwOworCisgICAgLy8gTG9hZCBhY3Rpb25zCisKKyAgICBjb25zdCB1bnNpZ25l
ZCBpbnQgTG9hZEFjdGlvbkRvbnRDYXJlID0gMDsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgTG9h
ZEFjdGlvbkxvYWQgPSAxOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBMb2FkQWN0aW9uQ2xlYXIg
PSAyOworCisgICAgLy8gU3RvcmUgYWN0aW9ucworCisgICAgY29uc3QgdW5zaWduZWQgaW50IFN0
b3JlQWN0aW9uRG9udENhcmUgPSAwOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBTdG9yZUFjdGlv
blN0b3JlID0gMTsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgU3RvcmVBY3Rpb25NdWx0aXNhbXBs
ZVJlc29sdmUgPSAyOworCisgICAgLy8gUHJpbWl0aXZlIHR5cGVzCisKKyAgICBjb25zdCB1bnNp
Z25lZCBpbnQgUHJpbWl0aXZlVHlwZVBvaW50ID0gMDsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQg
UHJpbWl0aXZlVHlwZUxpbmUgPSAxOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBQcmltaXRpdmVU
eXBlTGluZVN0cmlwID0gMjsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgUHJpbWl0aXZlVHlwZVRy
aWFuZ2xlID0gMzsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgUHJpbWl0aXZlVHlwZVRyaWFuZ2xl
U3RyaXAgPSA0OworCisgICAgLy8gQ29tcGFyaXNvbiBmdW5jdGlvbnMKKworICAgIGNvbnN0IHVu
c2lnbmVkIGludCBDb21wYXJlRnVuY3Rpb25OZXZlciA9IDA7CisgICAgY29uc3QgdW5zaWduZWQg
aW50IENvbXBhcmVGdW5jdGlvbkxlc3MgPSAxOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBDb21w
YXJlRnVuY3Rpb25FcXVhbCA9IDI7CisgICAgY29uc3QgdW5zaWduZWQgaW50IENvbXBhcmVGdW5j
dGlvbkxlc3NFcXVhbCA9IDM7CisgICAgY29uc3QgdW5zaWduZWQgaW50IENvbXBhcmVGdW5jdGlv
bkdyZWF0ZXIgPSA0OworICAgIGNvbnN0IHVuc2lnbmVkIGludCBDb21wYXJlRnVuY3Rpb25Ob3RF
cXVhbCA9IDU7CisgICAgY29uc3QgdW5zaWduZWQgaW50IENvbXBhcmVGdW5jdGlvbkdyZWF0ZXJF
cXVhbCA9IDY7CisgICAgY29uc3QgdW5zaWduZWQgaW50IENvbXBhcmVGdW5jdGlvbkFsd2F5cyA9
IDc7CisKKyAgICAvLyBUZXh0dXJlIFR5cGVzCisKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgVGV4
dHVyZVR5cGUxRCA9IDA7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVUeXBlMURBcnJh
eSA9IDE7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVUeXBlMkQgPSAyOworICAgIGNv
bnN0IHVuc2lnbmVkIGludCBUZXh0dXJlVHlwZTJEQXJyYXkgPSAzOworICAgIGNvbnN0IHVuc2ln
bmVkIGludCBUZXh0dXJlVHlwZTJETXVsdGlzYW1wbGUgPSA0OworICAgIGNvbnN0IHVuc2lnbmVk
IGludCBUZXh0dXJlVHlwZUN1YmUgPSA1OworICAgIGNvbnN0IHVuc2lnbmVkIGludCBUZXh0dXJl
VHlwZUN1YmVBcnJheSA9IDY7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVUeXBlM0Qg
PSA3OworCisgICAgLy8gU3RvcmFnZSBtb2RlcworCisgICAgY29uc3QgdW5zaWduZWQgaW50IFN0
b3JhZ2VNb2RlU2hhcmVkICA9IDA7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFN0b3JhZ2VNb2Rl
TWFuYWdlZCA9IDE7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFN0b3JhZ2VNb2RlUHJpdmF0ZSA9
IDI7CisKKyAgICAvLyBVc2FnZQorCisgICAgY29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVVc2Fn
ZVVua25vd24gPSAweDAwMDA7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVVc2FnZVNo
YWRlclJlYWQgPSAweDAwMDE7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVVc2FnZVNo
YWRlcldyaXRlID0gMHgwMDAyOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBUZXh0dXJlVXNhZ2VS
ZW5kZXJUYXJnZXQgPSAweDAwMDQ7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVVc2Fn
ZVBpeGVsRm9ybWF0VmlldyA9IDB4MDAxMDsKKworICAgIC8vIEVudHJ5IHBvaW50cworCisgICAg
V2ViR1BVTGlicmFyeSBjcmVhdGVMaWJyYXJ5KERPTVN0cmluZyBzb3VyY2VDb2RlKTsKKworICAg
IFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGU/IGNyZWF0ZVJlbmRlclBpcGVsaW5lU3RhdGUoV2Vi
R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOworICAgIFdlYkdQVURlcHRo
U3RlbmNpbFN0YXRlPyBjcmVhdGVEZXB0aFN0ZW5jaWxTdGF0ZShXZWJHUFVEZXB0aFN0ZW5jaWxE
ZXNjcmlwdG9yIGRlc2NyaXB0b3IpOworCisgICAgV2ViR1BVQ29tbWFuZFF1ZXVlPyBjcmVhdGVD
b21tYW5kUXVldWUoKTsKKworICAgIFdlYkdQVURyYXdhYmxlPyBuZXh0RHJhd2FibGUoKTsKKwor
ICAgIFdlYkdQVUJ1ZmZlcj8gY3JlYXRlQnVmZmVyKEFycmF5QnVmZmVyVmlldyBkYXRhKTsKKwor
ICAgIFdlYkdQVVRleHR1cmU/IGNyZWF0ZVRleHR1cmUoV2ViR1BVVGV4dHVyZURlc2NyaXB0b3Ig
ZGVzY3JpcHRvcik7CisKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRl
eHR1cmUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iMmQ0MzU3
MDBlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VVRleHR1cmUuY3BwCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BV
VGV4dHVyZS5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVVRleHR1cmUu
aCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BV
VGV4dHVyZURlc2NyaXB0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8V2ViR1BV
VGV4dHVyZT4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlRnJvbURyYXdhYmxlVGV4dHVyZShXZWJHUFVS
ZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPE1ldGFsVGV4dHVyZT4gZHJhd2Fi
bGVUZXh0dXJlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVRleHR1cmUoY29u
dGV4dCwgZHJhd2FibGVUZXh0dXJlKSk7Cit9CisKK1JlZjxXZWJHUFVUZXh0dXJlPiBXZWJHUFVU
ZXh0dXJlOjpjcmVhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgV2ViR1BVVGV4
dHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViR1BVVGV4dHVyZShjb250ZXh0LCBkZXNjcmlwdG9yKSk7Cit9CisKK1dlYkdQVVRleHR1cmU6
OldlYkdQVVRleHR1cmUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0
cjxNZXRhbFRleHR1cmU+IGRyYXdhYmxlVGV4dHVyZSkKKyAgICA6IFdlYkdQVU9iamVjdChjb250
ZXh0KQorICAgICwgbV90ZXh0dXJlKGRyYXdhYmxlVGV4dHVyZSkKK3sKK30KKworV2ViR1BVVGV4
dHVyZTo6V2ViR1BVVGV4dHVyZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBXZWJH
UFVUZXh0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKKyAgICA6IFdlYkdQVU9iamVjdChjb250
ZXh0KQoreworICAgIG1fdGV4dHVyZSA9IGNvbnRleHQtPmRldmljZSgpLT5jcmVhdGVUZXh0dXJl
KGRlc2NyaXB0b3ItPnRleHR1cmVEZXNjcmlwdG9yKCkpOworfQorCitXZWJHUFVUZXh0dXJlOjp+
V2ViR1BVVGV4dHVyZSgpCit7Cit9CisKK3Vuc2lnbmVkIGxvbmcgV2ViR1BVVGV4dHVyZTo6d2lk
dGgoKSBjb25zdAoreworICAgIGlmICghbV90ZXh0dXJlKQorICAgICAgICByZXR1cm4gMDsKKyAg
ICAKKyAgICByZXR1cm4gbV90ZXh0dXJlLT53aWR0aCgpOworfQorCit1bnNpZ25lZCBsb25nIFdl
YkdQVVRleHR1cmU6OmhlaWdodCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3RleHR1cmUpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIG1fdGV4dHVyZS0+aGVpZ2h0KCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVUZXh0dXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
LmNkN2U3YWFhY2U3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVVGV4dHVyZS5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJH
UFUpCisKKyNpbmNsdWRlICJXZWJHUFVPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBHUFVUZXh0dXJlOworY2xhc3MgV2ViR1BVVGV4dHVyZURlc2NyaXB0b3I7CisKK2Ns
YXNzIFdlYkdQVVRleHR1cmUgOiBwdWJsaWMgV2ViR1BVT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5XZWJHUFVUZXh0dXJlKCk7CisgICAgc3RhdGljIFJlZjxXZWJHUFVUZXh0dXJlPiBj
cmVhdGVGcm9tRHJhd2FibGVUZXh0dXJlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBQYXNzUmVm
UHRyPE1ldGFsVGV4dHVyZT4pOworICAgIHN0YXRpYyBSZWY8V2ViR1BVVGV4dHVyZT4gY3JlYXRl
KFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvciopOworCisg
ICAgdW5zaWduZWQgbG9uZyB3aWR0aCgpIGNvbnN0OworICAgIHVuc2lnbmVkIGxvbmcgaGVpZ2h0
KCkgY29uc3Q7CisKKyAgICBNZXRhbFRleHR1cmUqIHRleHR1cmUoKSBjb25zdCB7IHJldHVybiBt
X3RleHR1cmUuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWJHUFVUZXh0dXJlKFdlYkdQVVJl
bmRlcmluZ0NvbnRleHQqLCBQYXNzUmVmUHRyPE1ldGFsVGV4dHVyZT4pOworICAgIFdlYkdQVVRl
eHR1cmUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yKik7
CisKKyAgICBSZWZQdHI8TWV0YWxUZXh0dXJlPiBtX3RleHR1cmU7Cit9OworICAgIAorfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVVRleHR1cmUuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVVGV4dHVyZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
LjVjZWRiMDZjYmU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVVGV4dHVyZS5pZGwKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisg
ICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gaW50ZXJmYWNlIFdlYkdQVVRleHR1cmUgewor
CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgd2lkdGg7CisgICAgcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgaGVpZ2h0OworCit9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41N2Y2YjM1OTE3NwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmVEZXNjcmlw
dG9yLmNwcApAQCAtMCwwICsxLDE0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHUFVUZXh0
dXJlRGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVVRl
eHR1cmVEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcj4gV2Vi
R1BVVGV4dHVyZURlc2NyaXB0b3I6OmNyZWF0ZSh1bnNpZ25lZCBsb25nIHBpeGVsRm9ybWF0LCB1
bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCwgYm9vbCBtaXBtYXBwZWQp
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IocGl4
ZWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIG1pcG1hcHBlZCkpOworfQorCitXZWJHUFVUZXh0dXJl
RGVzY3JpcHRvcjo6V2ViR1BVVGV4dHVyZURlc2NyaXB0b3IodW5zaWduZWQgbG9uZyBwaXhlbEZv
cm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQsIGJvb2wgbWlw
bWFwcGVkKQorICAgIDogV2ViR1BVT2JqZWN0KCkKK3sKKyAgICBtX3RleHR1cmVEZXNjcmlwdG9y
ID0gTWV0YWxUZXh0dXJlRGVzY3JpcHRvcjo6Y3JlYXRlKHBpeGVsRm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBtaXBtYXBwZWQpOworfQorCitXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcjo6fldlYkdQVVRl
eHR1cmVEZXNjcmlwdG9yKCkKK3sKK30KKwordW5zaWduZWQgbG9uZyBXZWJHUFVUZXh0dXJlRGVz
Y3JpcHRvcjo6d2lkdGgoKSBjb25zdAoreworICAgIGlmICghbV90ZXh0dXJlRGVzY3JpcHRvcikK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gbV90ZXh0dXJlRGVzY3JpcHRvci0+d2lk
dGgoKTsKK30KKwordm9pZCBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcjo6c2V0V2lkdGgodW5zaWdu
ZWQgbG9uZyB3aWR0aCkKK3sKKyAgICAgIGlmICghbV90ZXh0dXJlRGVzY3JpcHRvcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV90ZXh0dXJlRGVzY3JpcHRvci0+c2V0V2lkdGgod2lkdGgpOwor
fQorCit1bnNpZ25lZCBsb25nIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yOjpoZWlnaHQoKSBjb25z
dAoreworICAgIGlmICghbV90ZXh0dXJlRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICByZXR1cm4gbV90ZXh0dXJlRGVzY3JpcHRvci0+aGVpZ2h0KCk7Cit9CisKK3ZvaWQgV2Vi
R1BVVGV4dHVyZURlc2NyaXB0b3I6OnNldEhlaWdodCh1bnNpZ25lZCBsb25nIGhlaWdodCkKK3sK
KyAgICBpZiAoIW1fdGV4dHVyZURlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICBtX3RleHR1cmVEZXNjcmlwdG9yLT5zZXRIZWlnaHQoaGVpZ2h0KTsKK30KKwordW5zaWduZWQg
bG9uZyBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcjo6c2FtcGxlQ291bnQoKSBjb25zdAoreworICAg
IGlmICghbV90ZXh0dXJlRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1
cm4gbV90ZXh0dXJlRGVzY3JpcHRvci0+c2FtcGxlQ291bnQoKTsKK30KKwordm9pZCBXZWJHUFVU
ZXh0dXJlRGVzY3JpcHRvcjo6c2V0U2FtcGxlQ291bnQodW5zaWduZWQgbG9uZyBzYW1wbGVDb3Vu
dCkKK3sKKyAgICBpZiAoIW1fdGV4dHVyZURlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBtX3RleHR1cmVEZXNjcmlwdG9yLT5zZXRTYW1wbGVDb3VudChzYW1wbGVDb3VudCk7
Cit9CisKK3Vuc2lnbmVkIGxvbmcgV2ViR1BVVGV4dHVyZURlc2NyaXB0b3I6OnRleHR1cmVUeXBl
KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fdGV4dHVyZURlc2NyaXB0b3IpCisgICAgICAgIHJldHVy
biAwOworCisgICAgcmV0dXJuIG1fdGV4dHVyZURlc2NyaXB0b3ItPnRleHR1cmVUeXBlKCk7Cit9
CisKK3ZvaWQgV2ViR1BVVGV4dHVyZURlc2NyaXB0b3I6OnNldFRleHR1cmVUeXBlKHVuc2lnbmVk
IGxvbmcgdGV4dHVyZVR5cGUpCit7CisgICAgaWYgKCFtX3RleHR1cmVEZXNjcmlwdG9yKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgbV90ZXh0dXJlRGVzY3JpcHRvci0+c2V0VGV4dHVyZVR5
cGUodGV4dHVyZVR5cGUpOworfQorCit1bnNpZ25lZCBsb25nIFdlYkdQVVRleHR1cmVEZXNjcmlw
dG9yOjpzdG9yYWdlTW9kZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3RleHR1cmVEZXNjcmlwdG9y
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBtX3RleHR1cmVEZXNjcmlwdG9yLT5z
dG9yYWdlTW9kZSgpOworfQorCit2b2lkIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yOjpzZXRTdG9y
YWdlTW9kZSh1bnNpZ25lZCBsb25nIHN0b3JhZ2VNb2RlKQoreworICAgIGlmICghbV90ZXh0dXJl
RGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fdGV4dHVyZURlc2NyaXB0
b3ItPnNldFN0b3JhZ2VNb2RlKHN0b3JhZ2VNb2RlKTsKK30KKwordW5zaWduZWQgbG9uZyBXZWJH
UFVUZXh0dXJlRGVzY3JpcHRvcjo6dXNhZ2UoKSBjb25zdAoreworICAgIGlmICghbV90ZXh0dXJl
RGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gbV90ZXh0dXJlRGVz
Y3JpcHRvci0+dXNhZ2UoKTsKK30KKwordm9pZCBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcjo6c2V0
VXNhZ2UodW5zaWduZWQgbG9uZyB1c2FnZSkKK3sKKyAgICBpZiAoIW1fdGV4dHVyZURlc2NyaXB0
b3IpCisgICAgICAgIHJldHVybjsKKworICAgIG1fdGV4dHVyZURlc2NyaXB0b3ItPnNldFVzYWdl
KHVzYWdlKTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlRGVzY3JpcHRv
ci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3Iu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNjBlMDczOGFiYjEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJl
RGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisK
KyNpbmNsdWRlICJXZWJHUFVFbnVtcy5oIgorI2luY2x1ZGUgIldlYkdQVU9iamVjdC5oIgorCisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQ
VVRleHR1cmVEZXNjcmlwdG9yOworCitjbGFzcyBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvciA6IHB1
YmxpYyBXZWJHUFVPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVVRleHR1cmVE
ZXNjcmlwdG9yKCk7CisgICAgc3RhdGljIFJlZjxXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcj4gY3Jl
YXRlKHVuc2lnbmVkIGxvbmcgcGl4ZWxGb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2ln
bmVkIGxvbmcgaGVpZ2h0LCBib29sIG1pcG1hcHBlZCk7CisKKyAgICB1bnNpZ25lZCBsb25nIHdp
ZHRoKCkgY29uc3Q7CisgICAgdm9pZCBzZXRXaWR0aCh1bnNpZ25lZCBsb25nKTsKKworICAgIHVu
c2lnbmVkIGxvbmcgaGVpZ2h0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRIZWlnaHQodW5zaWduZWQg
bG9uZyk7CisKKyAgICB1bnNpZ25lZCBsb25nIHNhbXBsZUNvdW50KCkgY29uc3Q7CisgICAgdm9p
ZCBzZXRTYW1wbGVDb3VudCh1bnNpZ25lZCBsb25nKTsKKworICAgIHVuc2lnbmVkIGxvbmcgdGV4
dHVyZVR5cGUoKSBjb25zdDsKKyAgICB2b2lkIHNldFRleHR1cmVUeXBlKHVuc2lnbmVkIGxvbmcp
OworCisgICAgdW5zaWduZWQgbG9uZyBzdG9yYWdlTW9kZSgpIGNvbnN0OworICAgIHZvaWQgc2V0
U3RvcmFnZU1vZGUodW5zaWduZWQgbG9uZyk7CisKKyAgICB1bnNpZ25lZCBsb25nIHVzYWdlKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRVc2FnZSh1bnNpZ25lZCBsb25nKTsKKworICAgIE1ldGFsVGV4
dHVyZURlc2NyaXB0b3IqIHRleHR1cmVEZXNjcmlwdG9yKCkgeyByZXR1cm4gbV90ZXh0dXJlRGVz
Y3JpcHRvci5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9y
KHVuc2lnbmVkIGxvbmcgcGl4ZWxGb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVk
IGxvbmcgaGVpZ2h0LCBib29sIG1pcG1hcHBlZCk7CisKKyAgICBSZWZQdHI8TWV0YWxUZXh0dXJl
RGVzY3JpcHRvcj4gbV90ZXh0dXJlRGVzY3JpcHRvcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLmUyYWQyNjRkNGRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsCkBAIC0wLDAgKzEsNDIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29u
c3RydWN0b3IodW5zaWduZWQgbG9uZyBwaXhlbEZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwg
dW5zaWduZWQgbG9uZyBoZWlnaHQsIGJvb2xlYW4gbWlwbWFwcGVkKSwKKyAgICBDb25kaXRpb25h
bD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gaW50ZXJmYWNlIFdlYkdQ
VVRleHR1cmVEZXNjcmlwdG9yIHsKKworICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHRleHR1
cmVUeXBlOworCisgICAgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgd2lkdGg7CisgICAgYXR0cmli
dXRlIHVuc2lnbmVkIGxvbmcgaGVpZ2h0OworICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHNh
bXBsZUNvdW50OworCisgICAgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgc3RvcmFnZU1vZGU7CisK
KyAgICBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB1c2FnZTsKKworfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304108</attachid>
            <date>2017-03-10 18:03:09 -0800</date>
            <delta_ts>2017-03-10 20:38:14 -0800</delta_ts>
            <desc>Frontend patch that should build when WEBGPU not defined</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>260227</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcKaW5kZXggZTU1N2NlMDBjZDQuLjZhMWYyZGMxMzY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9T
b3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAt
MjE2LDcgKzIxNiw3IEBAIEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBID0gOwogRU5BQkxFX1dF
QkFTU0VNQkxZID0gOwogRU5BQkxFX1dFQkdMID0gRU5BQkxFX1dFQkdMOwogRU5BQkxFX1dFQkdM
MiA9IEVOQUJMRV9XRUJHTDI7Ci1FTkFCTEVfV0VCR1BVID0gRU5BQkxFX1dFQkdQVTsKK0VOQUJM
RV9XRUJHUFUgPSA7CiBFTkFCTEVfV0VCR1BVW3Nkaz1pcGhvbmVzaW11bGF0b3IqXSA9IDsKIEVO
QUJMRV9XRUJfQU5JTUFUSU9OUyA9IEVOQUJMRV9XRUJfQU5JTUFUSU9OUzsKIEVOQUJMRV9XRUJf
QVVESU8gPSBFTkFCTEVfV0VCX0FVRElPOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5k
ZXggNzY1NTA0YzlkNjkuLjUzMzlkN2YwMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAwNi0yMDA4LCAyMDEyLCAyMDE0
LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIw
MDYtMjAwOCwgMjAxMiwgMjAxNC0yMDE1LCAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21h
aWwuY29tPgogIyBDb3B5cmlnaHQgKEMpIDIwMDkgQ2FtZXJvbiBNY0Nvcm1hY2sgPGNhbUBtY2Mu
aWQuYXU+CiAjCkBAIC01NjIsNiArNTYyLDI1IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAk
KFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0LmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmlkbCBcCisgICAg
JChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHUFVCdWZmZXIuaWRsIFwKKyAgICAkKFdlYkNvcmUp
L2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRCdWZmZXIuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0
bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRRdWV1ZS5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9j
YW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5pZGwgXAorICAgICQoV2ViQ29yZSkv
aHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaWRsIFwKKyAgICAkKFdlYkNvcmUp
L2h0bWwvY2FudmFzL1dlYkdQVURyYXdhYmxlLmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL2Nh
bnZhcy9XZWJHUFVGdW5jdGlvbi5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2Vi
R1BVTGlicmFyeS5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVy
Q29tbWFuZEVuY29kZXIuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdQVVJl
bmRlcmluZ0NvbnRleHQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdQVVJl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9j
YW52YXMvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaWRsIFwKKyAg
ICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQ
YXNzRGVzY3JpcHRvci5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR1BVUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmlkbCBcCisgICAgJChXZWJDb3Jl
KS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsIFwKKyAgICAk
KFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaWRsIFwKKyAg
ICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmUuaWRsIFwKKyAgICAkKFdlYkNv
cmUpL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvdHJh
Y2svQXVkaW9UcmFja0xpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svRGF0YUN1
ZS5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGI4MTRkMzE1YTYwLi40ODc4ZjIzNzhlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQwNSw2ICsxNDA1
LDY3IEBACiAJCTMxOUFFMDYzMTQyRDZCMjQwMDY1NjNBMSAvKiBTdHlsZUZpbHRlckRhdGEuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE5QUUwNjEx
NDJENkIyNDAwNjU2M0ExIC8qIFN0eWxlRmlsdGVyRGF0YS5jcHAgKi87IH07CiAJCTMxOUFFMDY0
MTQyRDZCMjQwMDY1NjNBMSAvKiBTdHlsZUZpbHRlckRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxOUFFMDYyMTQyRDZCMjQwMDY1NjNBMSAvKiBT
dHlsZUZpbHRlckRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkzMTlGQkQ1RjE1RDJGNDY0MDA5NjQwQTYgLyogQ2FjaGVkSW1hZ2VDbGllbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxOUZCRDVE
MTVEMkY0NDQwMDk2NDBBNiAvKiBDYWNoZWRJbWFnZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTMxQTA4OTA0MUU3MzdENTEwMDNCNjYw
OSAvKiBXZWJHUFVCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzFBMDg4QzYxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUJ1ZmZlci5jcHAg
Ki87IH07CisJCTMxQTA4OTA1MUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVDb21tYW5kQnVmZmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4
OEM5MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVDb21tYW5kQnVmZmVyLmNwcCAqLzsgfTsKKwkJ
MzFBMDg5MDYxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVUNvbW1hbmRRdWV1ZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODhDQzFFNzM3QjRE
MDAzQjY2MDkgLyogV2ViR1BVQ29tbWFuZFF1ZXVlLmNwcCAqLzsgfTsKKwkJMzFBMDg5MDcxRTcz
N0Q1MTAwM0I2NjA5IC8qIFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg4Q0YxRTczN0I0RDAw
M0I2NjA5IC8qIFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwICovOyB9OworCQkzMUEw
ODkwODFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg4RDIxRTczN0I0
RDAwM0I2NjA5IC8qIFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcCAqLzsgfTsKKwkJMzFBMDg5
MDkxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVURyYXdhYmxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OEQ1MUU3MzdCNEQwMDNCNjYwOSAv
KiBXZWJHUFVEcmF3YWJsZS5jcHAgKi87IH07CisJCTMxQTA4OTBBMUU3MzdENTEwMDNCNjYwOSAv
KiBXZWJHUFVFbnVtcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMUEwODhEODFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRW51bXMuY3BwICovOyB9
OworCQkzMUEwODkwQjFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVRnVuY3Rpb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg4REIxRTczN0I0
RDAwM0I2NjA5IC8qIFdlYkdQVUZ1bmN0aW9uLmNwcCAqLzsgfTsKKwkJMzFBMDg5MEMxRTczN0Q1
MTAwM0I2NjA5IC8qIFdlYkdQVUxpYnJhcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg4REUxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUxp
YnJhcnkuY3BwICovOyB9OworCQkzMUEwODkwRDFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVT2Jq
ZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
QTA4OEUxMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVPYmplY3QuY3BwICovOyB9OworCQkzMUEw
ODkwRTFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg4RTMxRTcz
N0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcCAqLzsgfTsKKwkJ
MzFBMDg5MEYxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg4RTYxRTcz
N0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwICovOyB9OworCQkzMUEw
ODkxMDFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
QTA4OEU5MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3IuY3BwICovOyB9OworCQkzMUEwODkxMTFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVUmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg4RUMxRTczN0I0RDAwM0I2NjA5IC8qIFdl
YkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLzsgfTsKKwkJMzFB
MDg5MTIxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMxQTA4OEVGMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvci5jcHAgKi87IH07CisJCTMxQTA4OTEzMUU3MzdENTEwMDNCNjYwOSAv
KiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODhGMjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwICovOyB9OworCQkzMUEwODkxNDFFNzM3RDUxMDAzQjY2
MDkgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OEY1MUU3
MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IuY3BwICovOyB9OworCQkzMUEwODkxNTFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMxQTA4OEY4MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IuY3BwICovOyB9OworCQkzMUEwODkxNjFFNzM3RDUxMDAzQjY2MDkg
LyogV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODhGQjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BV
UmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHAgKi87IH07CisJCTMxQTA4OTE3MUU3MzdENTEwMDNCNjYw
OSAvKiBXZWJHUFVUZXh0dXJlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMxQTA4OEZFMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVUZXh0dXJlLmNw
cCAqLzsgfTsKKwkJMzFBMDg5MTgxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVVRleHR1cmVEZXNj
cmlwdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMxQTA4OTAxMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHAg
Ki87IH07CisJCTMxQTA4OTE5MUU3MzdENTUwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlcmluZ0Nv
bnRleHRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzFBMDg4QzQxRTczN0IyQzAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4
dEN1c3RvbS5jcHAgKi87IH07CisJCTMxQTA4OTFBMUU3MzdENTUwMDNCNjYwOSAvKiBKU1dlYkdQ
VVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODhDNTFFNzM3QjJDMDAzQjY2MDkg
LyogSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3JDdXN0b20uY3BwICovOyB9
OworCQkzMUEwODk1NDFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVCdWZmZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5MUIxRTczOEQ1
OTAwM0I2NjA5IC8qIEpTV2ViR1BVQnVmZmVyLmNwcCAqLzsgfTsKKwkJMzFBMDg5NTYxRTczOEQ1
OTAwM0I2NjA5IC8qIEpTV2ViR1BVQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODkxRDFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVC
dWZmZXIuaCAqLzsgfTsKKwkJMzFBMDg5NTcxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVQ29t
bWFuZEJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMUEwODkxRTFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVDb21tYW5kQnVmZmVyLmNw
cCAqLzsgfTsKKwkJMzFBMDg5NTkxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVQ29tbWFuZEJ1
ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFB
MDg5MjAxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVQ29tbWFuZEJ1ZmZlci5oICovOyB9Owor
CQkzMUEwODk1QTFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVDb21tYW5kUXVldWUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5MjExRTcz
OEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVQ29tbWFuZFF1ZXVlLmNwcCAqLzsgfTsKKwkJMzFBMDg5
NUMxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVQ29tbWFuZFF1ZXVlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODkyMzFFNzM4RDU5MDAzQjY2
MDkgLyogSlNXZWJHUFVDb21tYW5kUXVldWUuaCAqLzsgfTsKKwkJMzFBMDg5NUQxRTczOEQ1OTAw
M0I2NjA5IC8qIEpTV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODkyNDFFNzM4RDU5MDAzQjY2
MDkgLyogSlNXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcCAqLzsgfTsKKwkJMzFBMDg5
NUYxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5MjYxRTcz
OEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oICovOyB9Owor
CQkzMUEwODk2MDFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODky
NzFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgKi87IH07
CisJCTMxQTA4OTYyMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVURlcHRoU3RlbmNpbFN0YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODky
OTFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oICovOyB9Owor
CQkzMUEwODk2MzFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVEcmF3YWJsZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODkyQTFFNzM4RDU5
MDAzQjY2MDkgLyogSlNXZWJHUFVEcmF3YWJsZS5jcHAgKi87IH07CisJCTMxQTA4OTY1MUU3MzhE
NTkwMDNCNjYwOSAvKiBKU1dlYkdQVURyYXdhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODkyQzFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJH
UFVEcmF3YWJsZS5oICovOyB9OworCQkzMUEwODk2NjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJH
UFVGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMUEwODkyRDFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVGdW5jdGlvbi5jcHAgKi87
IH07CisJCTMxQTA4OTY4MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUZ1bmN0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODkyRjFFNzM4
RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVGdW5jdGlvbi5oICovOyB9OworCQkzMUEwODk2OTFFNzM4
RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVMaWJyYXJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTMwMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dl
YkdQVUxpYnJhcnkuY3BwICovOyB9OworCQkzMUEwODk2QjFFNzM4RDU5MDAzQjY2MDkgLyogSlNX
ZWJHUFVMaWJyYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMUEwODkzMjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVMaWJyYXJ5LmggKi87IH07
CisJCTMxQTA4OTZDMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlckNvbW1hbmRFbmNv
ZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
QTA4OTMzMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmNw
cCAqLzsgfTsKKwkJMzFBMDg5NkUxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyQ29t
bWFuZEVuY29kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMxQTA4OTM1MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlckNvbW1hbmRFbmNv
ZGVyLmggKi87IH07CisJCTMxQTA4OTZGMUU3MzhENUEwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRl
cmluZ0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzFBMDg5MzYxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4
dC5jcHAgKi87IH07CisJCTMxQTA4OTcxMUU3MzhENUEwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRl
cmluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMxQTA4OTM4MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlcmluZ0NvbnRleHQu
aCAqLzsgfTsKKwkJMzFBMDg5NzIxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMxQTA4OTM5MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi87IH07CisJCTMxQTA4OTc0MUU3MzhENUEw
MDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5M0IxRTczOEQ1
OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmggKi87
IH07CisJCTMxQTA4OTc1MUU3MzhENUEwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMxQTA4OTNDMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLzsgfTsKKwkJMzFBMDg5NzcxRTcz
OEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4
OTNFMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmggKi87IH07CisJCTMxQTA4OTc4MUU3MzhENUEwMDNCNjYwOSAvKiBKU1dlYkdQ
VVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTNGMUU3MzhENTkwMDNCNjYwOSAv
KiBKU1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLzsgfTsK
KwkJMzFBMDg5N0ExRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0
YWNobWVudERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxQTA4OTQxMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBhc3NE
ZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi87IH07CisJCTMxQTA4OTdCMUU3MzhENUEwMDNC
NjYwOSAvKiBKU1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTQyMUU3MzhENTkwMDNCNjYwOSAv
KiBKU1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcCAqLzsgfTsKKwkJMzFBMDg5N0QxRTcz
OEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTQ0MUU3MzhENTkwMDNC
NjYwOSAvKiBKU1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmggKi87IH07CisJCTMxQTA4OTdF
MUU3MzhENUEwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMUEwODk0NTFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovOyB9OworCQkzMUEwODk4MDFFNzM4RDVBMDAz
QjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTQ3
MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvci5oICovOyB9OworCQkzMUEwODk4MTFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5NDgxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCAqLzsgfTsKKwkJMzFBMDg5ODMxRTczOEQ1QTAw
M0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODk0QTFFNzM4RDU5MDAzQjY2
MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLzsgfTsKKwkJMzFBMDg5
ODQxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODk0QjFFNzM4
RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcCAqLzsgfTsKKwkJ
MzFBMDg5ODYxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5NEQx
RTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oICovOyB9Owor
CQkzMUEwODk4NzFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVUZXh0dXJlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTRFMUU3MzhENTkw
MDNCNjYwOSAvKiBKU1dlYkdQVVRleHR1cmUuY3BwICovOyB9OworCQkzMUEwODk4OTFFNzM4RDVB
MDAzQjY2MDkgLyogSlNXZWJHUFVUZXh0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODk1MDFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVU
ZXh0dXJlLmggKi87IH07CisJCTMxQTA4OThBMUU3MzhENUEwMDNCNjYwOSAvKiBKU1dlYkdQVVRl
eHR1cmVEZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxQTA4OTUxMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVRleHR1cmVEZXNj
cmlwdG9yLmNwcCAqLzsgfTsKKwkJMzFBMDg5OEMxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BV
VGV4dHVyZURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxQTA4OTUzMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVRleHR1cmVEZXNj
cmlwdG9yLmggKi87IH07CiAJCTMxQTc5NUM2MTg4OEJBREMwMDM4MkY5MCAvKiBKU0FOR0xFSW5z
dGFuY2VkQXJyYXlzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxQTc5NUM0MTg4OEJBRDEwMDM4MkY5MCAvKiBKU0FOR0xFSW5zdGFuY2VkQXJyYXlz
LmNwcCAqLzsgfTsKIAkJMzFBNzk1QzcxODg4QkNCMjAwMzgyRjkwIC8qIEFOR0xFSW5zdGFuY2Vk
QXJyYXlzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MUE3OTVDMjE4ODhCNzI0MDAzODJGOTAgLyogQU5HTEVJbnN0YW5jZWRBcnJheXMuaCAqLzsgfTsK
IAkJMzFBNzk1QzgxODg4QkNCNTAwMzgyRjkwIC8qIEFOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTc5NUMxMTg4
OEI3MjQwMDM4MkY5MCAvKiBBTkdMRUluc3RhbmNlZEFycmF5cy5jcHAgKi87IH07CkBAIC04Nzc3
LDYgKzg4MzgsMTA4IEBACiAJCTMxOUFFMDYxMTQyRDZCMjQwMDY1NjNBMSAvKiBTdHlsZUZpbHRl
ckRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3R5bGVGaWx0
ZXJEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE5QUUwNjIxNDJENkIy
NDAwNjU2M0ExIC8qIFN0eWxlRmlsdGVyRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdHlsZUZpbHRlckRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MzE5RkJENUQxNUQyRjQ0NDAwOTY0MEE2IC8qIENhY2hlZEltYWdlQ2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZEltYWdlQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEM0MUU3MzdCMkMwMDNCNjYwOSAvKiBKU1dlYkdQVVJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzFBMDg4QzUxRTczN0IyQzAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yQ3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4QzYxRTczN0I0RDAw
M0I2NjA5IC8qIFdlYkdQVUJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJHUFVCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkz
MUEwODhDNzFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVQnVmZmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzMUEwODhDODFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVQnVmZmVyLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVCdWZmZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzMUEwODhDOTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVQ29tbWFuZEJ1ZmZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVDb21tYW5k
QnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4Q0ExRTczN0I0
RDAwM0I2NjA5IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViR1BVQ29tbWFuZEJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzMUEwODhDQjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OENDMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJH
UFVDb21tYW5kUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViR1BVQ29tbWFuZFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFB
MDg4Q0QxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUNvbW1hbmRRdWV1ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVDb21tYW5kUXVldWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4Q0UxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUNvbW1h
bmRRdWV1ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVQ29tbWFuZFF1ZXVlLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4Q0YxRTczN0I0RDAwM0I2NjA5
IC8qIFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEQwMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJH
UFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMzFBMDg4RDExRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVURlcHRoU3RlbmNpbERl
c2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVURlcHRoU3RlbmNpbERl
c2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhEMjFFNzM3
QjREMDAzQjY2MDkgLyogV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhEMzFFNzM3QjREMDAzQjY2MDkgLyogV2Vi
R1BVRGVwdGhTdGVuY2lsU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MzFBMDg4RDQxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEQ1MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJH
UFVEcmF3YWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJH
UFVEcmF3YWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEQ2MUU3
MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVEcmF3YWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJHUFVEcmF3YWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzMUEwODhENzFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRHJhd2FibGUuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYkdQVURyYXdhYmxlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMzFBMDg4RDgxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUVudW1zLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUVudW1zLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RDkxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQ
VUVudW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUVudW1zLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OERBMUU3MzdCNEQwMDNCNjYwOSAv
KiBXZWJHUFVFbnVtcy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVRW51bXMuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhEQjFFNzM3QjREMDAzQjY2MDkg
LyogV2ViR1BVRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViR1BVRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEw
ODhEQzFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMzFBMDg4REQxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUZ1bmN0aW9uLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVGdW5jdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTMxQTA4OERFMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVMaWJyYXJ5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUxpYnJhcnku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhERjFFNzM3QjREMDAzQjY2
MDkgLyogV2ViR1BVTGlicmFyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJHUFVMaWJyYXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEUwMUU3
MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVMaWJyYXJ5LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJHUFVMaWJyYXJ5LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4
RTExRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzMUEwODhFMjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVT2JqZWN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVU9iamVjdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkzMUEwODhFMzFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVu
ZGVyQ29tbWFuZEVuY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzMUEwODhFNDFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyQ29tbWFuZEVu
Y29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVuZGVyQ29t
bWFuZEVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RTUxRTcz
N0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEU2MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkz
MUEwODhFNzFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVSZW5kZXJpbmdDb250ZXh0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEU4MUU3MzdCNEQwMDNCNjYwOSAvKiBX
ZWJHUFVSZW5kZXJpbmdDb250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVS
ZW5kZXJpbmdDb250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4
RTkxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzMUEwODhFQTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnRE
ZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzMUEwODhFQjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnRE
ZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEw
ODhFQzFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BV
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzMUEwODhFRDFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RUUxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQ
VVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEVGMUU3MzdCNEQwMDNCNjYwOSAvKiBX
ZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEYwMUU3
MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkz
MUEwODhGMTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVu
dERlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlclBhc3NE
ZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzFBMDg4RjIxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9y
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RjMx
RTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEY0MUU3MzdCNEQwMDNCNjYwOSAvKiBX
ZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2Vi
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzMUEwODhGNTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEY2MUU3MzdCNEQwMDNCNjYwOSAvKiBX
ZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEY3MUU3
MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTMxQTA4OEY4MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFB
MDg4RjkxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RkExRTczN0I0
RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RkIxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQ
VVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTMxQTA4OEZDMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQaXBlbGlu
ZVN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlclBp
cGVsaW5lU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RkQxRTcz
N0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkzMUEwODhGRTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVVGV4dHVy
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVUZXh0dXJl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RkYxRTczN0I0RDAwM0I2
NjA5IC8qIFdlYkdQVVRleHR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViR1BVVGV4dHVyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODkwMDFF
NzM3QjREMDAzQjY2MDkgLyogV2ViR1BVVGV4dHVyZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gV2ViR1BVVGV4dHVyZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4
OTAxMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTAyMUU3MzdCNEQwMDNCNjYw
OSAvKiBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzMUEwODkwMzFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVVGV4dHVyZURlc2NyaXB0
b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5MUIxRTczOEQ1OTAwM0I2NjA5
IC8qIEpTV2ViR1BVQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEpTV2ViR1BVQnVmZmVyLmNwcDsgcGF0aCA9IEpTV2ViR1BVQnVmZmVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5MUQxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2Vi
R1BVQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2ViR1BVQnVm
ZmVyLmg7IHBhdGggPSBKU1dlYkdQVUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzMUEwODkxRTFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVDb21tYW5kQnVmZmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTV2ViR1BVQ29tbWFuZEJ1
ZmZlci5jcHA7IHBhdGggPSBKU1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkzMUEwODkyMDFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVDb21t
YW5kQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2ViR1BVQ29t
bWFuZEJ1ZmZlci5oOyBwYXRoID0gSlNXZWJHUFVDb21tYW5kQnVmZmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTIxMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUNv
bW1hbmRRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU1dl
YkdQVUNvbW1hbmRRdWV1ZS5jcHA7IHBhdGggPSBKU1dlYkdQVUNvbW1hbmRRdWV1ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTIzMUU3MzhENTkwMDNCNjYwOSAvKiBK
U1dlYkdQVUNvbW1hbmRRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBK
U1dlYkdQVUNvbW1hbmRRdWV1ZS5oOyBwYXRoID0gSlNXZWJHUFVDb21tYW5kUXVldWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5MjQxRTczOEQ1OTAwM0I2NjA5IC8qIEpT
V2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBKU1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwOyBwYXRoID0g
SlNXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMzFBMDg5MjYxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVRGVwdGhTdGVuY2ls
RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU1dlYkdQVURl
cHRoU3RlbmNpbERlc2NyaXB0b3IuaDsgcGF0aCA9IEpTV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3Jp
cHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODkyNzFFNzM4RDU5MDAz
QjY2MDkgLyogSlNXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBKU1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcDsgcGF0aCA9
IEpTV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzMUEwODkyOTFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU1dlYkdQVURlcHRoU3RlbmNp
bFN0YXRlLmg7IHBhdGggPSBKU1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTJBMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVURy
YXdhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTV2ViR1BV
RHJhd2FibGUuY3BwOyBwYXRoID0gSlNXZWJHUFVEcmF3YWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTMxQTA4OTJDMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVURyYXdh
YmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2ViR1BVRHJhd2FibGUu
aDsgcGF0aCA9IEpTV2ViR1BVRHJhd2FibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzFBMDg5MkQxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVRnVuY3Rpb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNXZWJHUFVGdW5jdGlvbi5jcHA7IHBh
dGggPSBKU1dlYkdQVUZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MzFBMDg5MkYxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVRnVuY3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJHUFVGdW5jdGlvbi5oOyBwYXRoID0gSlNXZWJH
UFVGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODkzMDFFNzM4
RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVMaWJyYXJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEpTV2ViR1BVTGlicmFyeS5jcHA7IHBhdGggPSBKU1dlYkdQVUxpYnJh
cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODkzMjFFNzM4RDU5MDAz
QjY2MDkgLyogSlNXZWJHUFVMaWJyYXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEpTV2ViR1BVTGlicmFyeS5oOyBwYXRoID0gSlNXZWJHUFVMaWJyYXJ5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTMzMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQ
VVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEpTV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwOyBwYXRoID0gSlNXZWJHUFVS
ZW5kZXJDb21tYW5kRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMx
QTA4OTM1MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2ViR1BVUmVuZGVyQ29tbWFuZEVu
Y29kZXIuaDsgcGF0aCA9IEpTV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5MzYxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BV
UmVuZGVyaW5nQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBKU1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwOyBwYXRoID0gSlNXZWJHUFVSZW5kZXJpbmdD
b250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5MzgxRTczOEQ1
OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBKU1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuaDsgcGF0aCA9IEpTV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEw
ODkzOTFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNXZWJHUFVS
ZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuY3BwOyBwYXRoID0gSlNXZWJHUFVSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzMUEwODkzQjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVu
dERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJHUFVS
ZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaDsgcGF0aCA9IEpTV2ViR1BVUmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMx
QTA4OTNDMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpT
V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwOyBwYXRoID0gSlNX
ZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTNFMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEpTV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3Iu
aDsgcGF0aCA9IEpTV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5M0YxRTczOEQ1OTAwM0I2NjA5IC8q
IEpTV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvci5jcHA7IHBhdGggPSBKU1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5
NDExRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJHUFVSZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oOyBwYXRoID0gSlNXZWJHUFVSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzMUEwODk0MjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVzY3Jp
cHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU1dlYkdQVVJl
bmRlclBhc3NEZXNjcmlwdG9yLmNwcDsgcGF0aCA9IEpTV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODk0NDFFNzM4RDU5MDAz
QjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBKU1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmg7IHBhdGggPSBK
U1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTMxQTA4OTQ1MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBKU1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5j
cHA7IHBhdGggPSBKU1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTQ3MUU3MzhENTkwMDNC
NjYwOSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU1dlYkdQVVJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oOyBwYXRoID0gSlNXZWJHUFVSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzFBMDg5NDgxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTV2ViR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcDsgcGF0aCA9IEpTV2ViR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5NEEx
RTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yLmg7IHBhdGggPSBKU1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODk0QjFFNzM4RDU5MDAzQjY2MDkgLyogSlNX
ZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHA7IHBhdGggPSBKU1dlYkdQ
VVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkz
MUEwODk0RDFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVT
dGF0ZS5oOyBwYXRoID0gSlNXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTRFMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVRl
eHR1cmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNXZWJHUFVU
ZXh0dXJlLmNwcDsgcGF0aCA9IEpTV2ViR1BVVGV4dHVyZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTMxQTA4OTUwMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVRleHR1cmUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJHUFVUZXh0dXJlLmg7IHBh
dGggPSBKU1dlYkdQVVRleHR1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFB
MDg5NTExRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNXZWJHUFVUZXh0dXJlRGVzY3Jp
cHRvci5jcHA7IHBhdGggPSBKU1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5NTMxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BV
VGV4dHVyZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNX
ZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oOyBwYXRoID0gSlNXZWJHUFVUZXh0dXJlRGVzY3JpcHRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUE3OTVDMTE4ODhCNzI0MDAzODJG
OTAgLyogQU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzMUE3OTVDMjE4ODhCNzI0MDAzODJGOTAgLyogQU5HTEVJbnN0YW5jZWRBcnJh
eXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQU5HTEVJbnN0YW5jZWRBcnJh
eXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFBNzk1QzMxODg4QjcyNDAwMzgy
RjkwIC8qIEFOR0xFSW5zdGFuY2VkQXJyYXlzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBB
TkdMRUluc3RhbmNlZEFycmF5cy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NzU0Myw2ICsxNzcwNiw2OCBAQAogCQkJCTc3QTE3QTc0MTJGMjg2NDIwMDRFMDJGNiAvKiBXZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcCAqLywKIAkJCQk3N0ExN0E3NTEyRjI4NjQyMDA0RTAy
RjYgLyogV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oICovLAogCQkJCTc3QTE3QTc2MTJGMjg2
NDIwMDRFMDJGNiAvKiBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmlkbCAqLywKKwkJCQkzMUEw
ODhDNjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVQnVmZmVyLmNwcCAqLywKKwkJCQkzMUEwODhD
NzFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVQnVmZmVyLmggKi8sCisJCQkJMzFBMDg4QzgxRTcz
N0I0RDAwM0I2NjA5IC8qIFdlYkdQVUJ1ZmZlci5pZGwgKi8sCisJCQkJMzFBMDg4QzkxRTczN0I0
RDAwM0I2NjA5IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuY3BwICovLAorCQkJCTMxQTA4OENBMUU3
MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVDb21tYW5kQnVmZmVyLmggKi8sCisJCQkJMzFBMDg4Q0Ix
RTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuaWRsICovLAorCQkJCTMxQTA4
OENDMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVDb21tYW5kUXVldWUuY3BwICovLAorCQkJCTMx
QTA4OENEMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVDb21tYW5kUXVldWUuaCAqLywKKwkJCQkz
MUEwODhDRTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVQ29tbWFuZFF1ZXVlLmlkbCAqLywKKwkJ
CQkzMUEwODhDRjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRv
ci5jcHAgKi8sCisJCQkJMzFBMDg4RDAxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVURlcHRoU3Rl
bmNpbERlc2NyaXB0b3IuaCAqLywKKwkJCQkzMUEwODhEMTFFNzM3QjREMDAzQjY2MDkgLyogV2Vi
R1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5pZGwgKi8sCisJCQkJMzFBMDg4RDIxRTczN0I0RDAw
M0I2NjA5IC8qIFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcCAqLywKKwkJCQkzMUEwODhEMzFF
NzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaCAqLywKKwkJCQkzMUEw
ODhENDFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaWRsICovLAor
CQkJCTMxQTA4OEQ1MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVEcmF3YWJsZS5jcHAgKi8sCisJ
CQkJMzFBMDg4RDYxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVURyYXdhYmxlLmggKi8sCisJCQkJ
MzFBMDg4RDcxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVURyYXdhYmxlLmlkbCAqLywKKwkJCQkz
MUEwODhEODFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRW51bXMuY3BwICovLAorCQkJCTMxQTA4
OEQ5MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVFbnVtcy5oICovLAorCQkJCTMxQTA4OERBMUU3
MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVFbnVtcy5pZGwgKi8sCisJCQkJMzFBMDg4REIxRTczN0I0
RDAwM0I2NjA5IC8qIFdlYkdQVUZ1bmN0aW9uLmNwcCAqLywKKwkJCQkzMUEwODhEQzFFNzM3QjRE
MDAzQjY2MDkgLyogV2ViR1BVRnVuY3Rpb24uaCAqLywKKwkJCQkzMUEwODhERDFFNzM3QjREMDAz
QjY2MDkgLyogV2ViR1BVRnVuY3Rpb24uaWRsICovLAorCQkJCTMxQTA4OERFMUU3MzdCNEQwMDNC
NjYwOSAvKiBXZWJHUFVMaWJyYXJ5LmNwcCAqLywKKwkJCQkzMUEwODhERjFFNzM3QjREMDAzQjY2
MDkgLyogV2ViR1BVTGlicmFyeS5oICovLAorCQkJCTMxQTA4OEUwMUU3MzdCNEQwMDNCNjYwOSAv
KiBXZWJHUFVMaWJyYXJ5LmlkbCAqLywKKwkJCQkzMUEwODhFMTFFNzM3QjREMDAzQjY2MDkgLyog
V2ViR1BVT2JqZWN0LmNwcCAqLywKKwkJCQkzMUEwODhFMjFFNzM3QjREMDAzQjY2MDkgLyogV2Vi
R1BVT2JqZWN0LmggKi8sCisJCQkJMzFBMDg4RTMxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJl
bmRlckNvbW1hbmRFbmNvZGVyLmNwcCAqLywKKwkJCQkzMUEwODhFNDFFNzM3QjREMDAzQjY2MDkg
LyogV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaCAqLywKKwkJCQkzMUEwODhFNTFFNzM3QjRE
MDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaWRsICovLAorCQkJCTMxQTA4
OEU2MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcCAqLywKKwkJ
CQkzMUEwODhFNzFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oICov
LAorCQkJCTMxQTA4OEU4MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0
LmlkbCAqLywKKwkJCQkzMUEwODhFOTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLywKKwkJCQkzMUEwODhFQTFFNzM3QjREMDAzQjY2
MDkgLyogV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8sCisJCQkJMzFB
MDg4RUIxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3Jp
cHRvci5pZGwgKi8sCisJCQkJMzFBMDg4RUMxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLywKKwkJCQkzMUEwODhFRDFFNzM3
QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3Iu
aCAqLywKKwkJCQkzMUEwODhFRTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IuaWRsICovLAorCQkJCTMxQTA4OEVGMUU3MzdCNEQwMDNC
NjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8s
CisJCQkJMzFBMDg4RjAxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0
dGFjaG1lbnREZXNjcmlwdG9yLmggKi8sCisJCQkJMzFBMDg4RjExRTczN0I0RDAwM0I2NjA5IC8q
IFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmlkbCAqLywKKwkJCQkz
MUEwODhGMjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3Bw
ICovLAorCQkJCTMxQTA4OEYzMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvci5oICovLAorCQkJCTMxQTA4OEY0MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5k
ZXJQYXNzRGVzY3JpcHRvci5pZGwgKi8sCisJCQkJMzFBMDg4RjUxRTczN0I0RDAwM0I2NjA5IC8q
IFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8sCisJ
CQkJMzFBMDg4RjYxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvci5oICovLAorCQkJCTMxQTA4OEY3MUU3MzdCNEQwMDNCNjYwOSAv
KiBXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaWRsICovLAor
CQkJCTMxQTA4OEY4MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IuY3BwICovLAorCQkJCTMxQTA4OEY5MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLywKKwkJCQkzMUEwODhGQTFFNzM3QjREMDAzQjY2MDkg
LyogV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbCAqLywKKwkJCQkzMUEwODhGQjFF
NzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHAgKi8sCisJCQkJ
MzFBMDg4RkMxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaCAq
LywKKwkJCQkzMUEwODhGRDFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVT
dGF0ZS5pZGwgKi8sCisJCQkJMzFBMDg4RkUxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVRleHR1
cmUuY3BwICovLAorCQkJCTMxQTA4OEZGMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVUZXh0dXJl
LmggKi8sCisJCQkJMzFBMDg5MDAxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVRleHR1cmUuaWRs
ICovLAorCQkJCTMxQTA4OTAxMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVUZXh0dXJlRGVzY3Jp
cHRvci5jcHAgKi8sCisJCQkJMzFBMDg5MDIxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVRleHR1
cmVEZXNjcmlwdG9yLmggKi8sCisJCQkJMzFBMDg5MDMxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQ
VVRleHR1cmVEZXNjcmlwdG9yLmlkbCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY2FudmFzOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIwODgxLDYgKzIxMTA2LDQ0IEBACiAJCQkJNkY5
OTVBMzAxQTcwODMzNzAwQTczNUY0IC8qIEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oICovLAog
CQkJCTc3RUY2MkYxMTJGOURCNzQwMEM3N0JEMiAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMuY3BwICovLAogCQkJCTc3RUY2MkYyMTJGOURCNzQwMEM3N0JEMiAvKiBKU1dlYkdMVmVydGV4
QXJyYXlPYmplY3RPRVMuaCAqLywKKwkJCQkzMUEwODkxQjFFNzM4RDU5MDAzQjY2MDkgLyogSlNX
ZWJHUFVCdWZmZXIuY3BwICovLAorCQkJCTMxQTA4OTFEMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dl
YkdQVUJ1ZmZlci5oICovLAorCQkJCTMxQTA4OTFFMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQ
VUNvbW1hbmRCdWZmZXIuY3BwICovLAorCQkJCTMxQTA4OTIwMUU3MzhENTkwMDNCNjYwOSAvKiBK
U1dlYkdQVUNvbW1hbmRCdWZmZXIuaCAqLywKKwkJCQkzMUEwODkyMTFFNzM4RDU5MDAzQjY2MDkg
LyogSlNXZWJHUFVDb21tYW5kUXVldWUuY3BwICovLAorCQkJCTMxQTA4OTIzMUU3MzhENTkwMDNC
NjYwOSAvKiBKU1dlYkdQVUNvbW1hbmRRdWV1ZS5oICovLAorCQkJCTMxQTA4OTI0MUU3MzhENTkw
MDNCNjYwOSAvKiBKU1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwICovLAorCQkJCTMx
QTA4OTI2MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3Iu
aCAqLywKKwkJCQkzMUEwODkyNzFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVEZXB0aFN0ZW5j
aWxTdGF0ZS5jcHAgKi8sCisJCQkJMzFBMDg5MjkxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BV
RGVwdGhTdGVuY2lsU3RhdGUuaCAqLywKKwkJCQkzMUEwODkyQTFFNzM4RDU5MDAzQjY2MDkgLyog
SlNXZWJHUFVEcmF3YWJsZS5jcHAgKi8sCisJCQkJMzFBMDg5MkMxRTczOEQ1OTAwM0I2NjA5IC8q
IEpTV2ViR1BVRHJhd2FibGUuaCAqLywKKwkJCQkzMUEwODkyRDFFNzM4RDU5MDAzQjY2MDkgLyog
SlNXZWJHUFVGdW5jdGlvbi5jcHAgKi8sCisJCQkJMzFBMDg5MkYxRTczOEQ1OTAwM0I2NjA5IC8q
IEpTV2ViR1BVRnVuY3Rpb24uaCAqLywKKwkJCQkzMUEwODkzMDFFNzM4RDU5MDAzQjY2MDkgLyog
SlNXZWJHUFVMaWJyYXJ5LmNwcCAqLywKKwkJCQkzMUEwODkzMjFFNzM4RDU5MDAzQjY2MDkgLyog
SlNXZWJHUFVMaWJyYXJ5LmggKi8sCisJCQkJMzFBMDg5MzMxRTczOEQ1OTAwM0I2NjA5IC8qIEpT
V2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwICovLAorCQkJCTMxQTA4OTM1MUU3MzhENTkw
MDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmggKi8sCisJCQkJMzFBMDg5
MzYxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAgKi8sCisJ
CQkJMzFBMDg5MzgxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5o
ICovLAorCQkJCTMxQTA4OTM5MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBhc3NB
dHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzFBMDg5M0IxRTczOEQ1OTAwM0I2NjA5
IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8sCisJCQkJMzFB
MDg5M0MxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IuY3BwICovLAorCQkJCTMxQTA4OTNFMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dl
YkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8sCisJCQkJMzFBMDg5
M0YxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3IuY3BwICovLAorCQkJCTMxQTA4OTQxMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQ
VVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8sCisJCQkJMzFBMDg5NDIx
RTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwICovLAor
CQkJCTMxQTA4OTQ0MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBhc3NEZXNjcmlw
dG9yLmggKi8sCisJCQkJMzFBMDg5NDUxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLywKKwkJCQkzMUEwODk0NzFF
NzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IuaCAqLywKKwkJCQkzMUEwODk0ODFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwICovLAorCQkJCTMxQTA4OTRBMUU3MzhENTkwMDNC
NjYwOSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovLAorCQkJCTMxQTA4
OTRCMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwICov
LAorCQkJCTMxQTA4OTREMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5l
U3RhdGUuaCAqLywKKwkJCQkzMUEwODk0RTFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVUZXh0
dXJlLmNwcCAqLywKKwkJCQkzMUEwODk1MDFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVUZXh0
dXJlLmggKi8sCisJCQkJMzFBMDg5NTExRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVVGV4dHVy
ZURlc2NyaXB0b3IuY3BwICovLAorCQkJCTMxQTA4OTUzMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dl
YkdQVVRleHR1cmVEZXNjcmlwdG9yLmggKi8sCiAJCQkJMEZEQTdDMjQxODgzMzMzMjAwQzk1NEI1
IC8qIEpTV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAgKi8sCiAJCQkJ
MEZEQTdDMjUxODgzMzMzMjAwQzk1NEI1IC8qIEpTV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFi
aWxpdHlFdmVudC5oICovLAogCQkJKTsKQEAgLTIyODQ3LDggKzIzMTEwLDggQEAKIAkJCQk3QTc0
RUNCQzEwMTgzOURBMDBCRjkzOUUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3Bw
ICovLAogCQkJCUJDRTFDNDNGMEQ5ODMwRjQwMDNCMDJGMiAvKiBKU0xvY2F0aW9uQ3VzdG9tLmNw
cCAqLywKIAkJCQkyRDlCRjc0ODFEQkZEREY4MDA3QTdEOTkgLyogSlNNZWRpYUtleVNlc3Npb25D
dXN0b20uY3BwICovLAotCQkJCTQxMEI3RTcxMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VF
dmVudEN1c3RvbS5jcHAgKi8sCiAJCQkJNDE1Q0RBRjYxRTZDRTBEMzAwNEYxMUVFIC8qIEpTTWVk
aWFTdHJlYW1UcmFja0N1c3RvbS5jcHAgKi8sCisJCQkJNDEwQjdFNzExMDQ1RkFCMDAwRDgyMjRG
IC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlBMUU1QjMxRDFBQUQxREE0MDA2
RUJFRkIgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ3VzdG9tLmNwcCAqLywKIAkJCQlD
NkYwOTE3RTE0M0EyQkI5MDA2ODU4NDkgLyogSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcCAq
LywKIAkJCQlCQ0Q5QzI2MDBDMTdBQTY3MDA1QzkwQTIgLyogSlNOb2RlQ3VzdG9tLmNwcCAqLywK
QEAgLTIyODYyLDYgKzIzMTI1LDggQEAKIAkJCQk3QzczRkIxNzE5MUVGODA4MDA3REUwNjEgLyog
SlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlQ3VzdG9tLmNwcCAqLywKIAkJCQlCRTZERjcw
ODE3MUNBMkM1MDBERDUyQjggLyogSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcCAqLywKIAkJCQlEM0Yz
RDM1QTFBNjlBM0IwMDA1OUZDMkIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlQ3VzdG9t
LmNwcCAqLywKKwkJCQkzMUEwODhDNDFFNzM3QjJDMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJp
bmdDb250ZXh0Q3VzdG9tLmNwcCAqLywKKwkJCQkzMUEwODhDNTFFNzM3QjJDMDAzQjY2MDkgLyog
SlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3JDdXN0b20uY3BwICovLAogCQkJ
CUUxRkY4RjY2MTgwNzQ2MDgwMDEzMjY3NCAvKiBKU1dlYktpdFN1YnRsZUNyeXB0b0N1c3RvbS5j
cHAgKi8sCiAJCQkJRTFDQTVDQkIwRThDRENBRjAwRThFRjkwIC8qIEpTV29ya2VyQ3VzdG9tLmNw
cCAqLywKIAkJCQlFMTgyNThBQjBFRjNDRDcwMDA5MzMyNDIgLyogSlNXb3JrZXJHbG9iYWxTY29w
ZUN1c3RvbS5jcHAgKi8sCkBAIC0yNTY3MSw2ICsyNTkzNiw3IEBACiAJCQkJN0M2NTIzMDExRTAw
RDAzNDAwNjc3RjIyIC8qIEFwcGxlUGF5UGF5bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4
QTY0NTIxRDE5RkNGQjAwRDBFMDBGIC8qIEFwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0M2NTIyRkIxRTAwQzkwOTAwNjc3RjIyIC8qIEFwcGxlUGF5
UGF5bWVudENvbnRhY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxQTA4OTU2MUU3MzhENTkwMDNC
NjYwOSAvKiBKU1dlYkdQVUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M2NTIyRUYxRTAw
QTRDNzAwNjc3RjIyIC8qIEFwcGxlUGF5UGF5bWVudE1ldGhvZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUE4QTY0NTYxRDE5RkNGQzAwRDBFMDBGIC8qIEFwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVj
dGVkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDNjUyMkY1MUUwMEE1MTcwMDY3N0YyMiAv
KiBBcHBsZVBheVBheW1lbnRQYXNzLmggaW4gSGVhZGVycyAqLywKQEAgLTI1NzAwLDYgKzI1OTY2
LDcgQEAKIAkJCQlGRDMxNjA3QTEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9BcnJheS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkQ2MjlFQTMxNTRCNDcxNjAwMDZEMDI2IC8qIEF1ZGlvQmFzaWNJbnNw
ZWN0b3JOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNUZGNzEyQjAyNjc2MDBDMUEzNTkg
LyogQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxQTA4OTg5
MUU3MzhENUEwMDNCNjYwOSAvKiBKU1dlYkdQVVRleHR1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZEMzE1RkY5MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0J1ZmZlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQ1Njg2Q0MxM0FDMTgxNDAwQjY5QzY4IC8qIEF1ZGlvQnVmZmVyQ2FsbGJhY2suaCBp
biBIZWFkZXJzICovLAogCQkJCUZEMzE1RkZDMTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0J1ZmZl
clNvdXJjZU5vZGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjU4MjUsNiArMjYwOTIsNyBAQAogCQkJ
CTFBNTY5Q0ZDMEQ3RTJCODIwMDdDMzk4MyAvKiBjX3J1bnRpbWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBNTY5Q0ZFMEQ3RTJCODIwMDdDMzk4MyAvKiBjX3V0aWxpdHkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTA3QzA0NkM0MUU0MjUwOEIwMDcyMDFFNyAvKiBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24uaCBpbiBIZWFkZXJzICovLAorCQkJCTMxQTA4OTY1MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dl
YkdQVURyYXdhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0IxNkMxQTA5NzlDM0JEMDA0Njc3
NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2NEI0Q0Mw
Q0I0Mjk1RDAwNUYyQjYyIC8qIENhY2hlZEZvbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRUY0
RTY3MTcwRTE2MDMwMEFCMjc5OSAvKiBDYWNoZWRGb250Q2xpZW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTI1OTM0LDYgKzI2MjAyLDcgQEAKIAkJCQk3OUYyRjVBMjEwOTE5MzlBMDAwRDg3Q0IgLyog
Q29tcG9zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwOEYxMkIwMjZGNzAw
QzFBMzU5IC8qIENvbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1Qzk3QUYzMDhFQTkwODgwMEFD
RDI3MyAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxQTA4OTZFMUU3MzhENUEwMDNC
NjYwOSAvKiBKU1dlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBODE4NzIxQzA5NzdEM0MwMDA1ODI2RDkgLyogQ29udGFpbmVyTm9kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTFBMTQ3MDgxMTEwMkIxNTAwRUVDMEYzIC8qIENvbnRhaW5lck5vZGVBbGdvcml0
aG1zLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjk4MTBFODIwNzI1MDBCMjU5NjUgLyogQ29u
dGVudERhdGEuaCBpbiBIZWFkZXJzICovLApAQCAtMjYxMzYsNiArMjY0MDUsNyBAQAogCQkJCUJD
N0Q4RkYwMUJEMDNCNjQwMEZGRTU0MCAvKiBDU1NVbnNldFZhbHVlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODBFNkNFRTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTVmFsdWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTY1NjU4MTUxMDlEMTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmggaW4g
SGVhZGVycyAqLywKKwkJCQkzMUEwODk1OTFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVDb21t
YW5kQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkNFOTBBMTk4OUNBMDA3RkI4QzUg
LyogQ1NTVmFsdWVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDlCRDlGQTEzMUZEMkVEMDAz
QzU2RjAgLyogQ1NTVmFsdWVQb29sLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NDQ0Q0JFODFEODg2
MUMyMDA3M0EwNzQgLyogQ1NTVmFyaWFibGVEYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTI2MTYx
LDEyICsyNjQzMSwxNCBAQAogCQkJCTk3QkM2QTMwMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFz
ZVRocmVhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCQzZBMzIxNTA1RjA4MTAwMUI3NEFDIC8q
IERhdGFiYXNlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkUyMzQ4MEQxOEE5ODcxNDAw
RTRCNkU4IC8qIERhdGFDdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxQTA4OTVDMUU3MzhENTkw
MDNCNjYwOSAvKiBKU1dlYkdQVUNvbW1hbmRRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzUy
MjdERjExQzNDNkRGMTAwRjVFRDU0IC8qIERhdGFEZXRlY3Rpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTdDNzk0MUU1MUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5r
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzVFMkI0RTFBRkYwNkNBMDA5NzZGOUYgLyogRGF0YURl
dGVjdG9yc0NvcmVTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENTlGMUJGMUEwMDQ0QzYwMDFG
M0QyOSAvKiBEYXRhRGV0ZWN0b3JzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREM0Q0Y3OTFE
MkREOTg5MDBFQ0NDOTQgLyogRGF0YURldGVjdG9yc1VJU1BJLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzIyNzQ2RjBFODM2NjQ1MDBFN0Y5NzUgLyogRGF0YVJlZi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMzFBMDg5NkIxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVTGlicmFyeS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkM2NDY0MUMxMUQ3RjQxNjAwNjQ1NUIwIC8qIERhdGFzZXRET01TdHJpbmdN
YXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjNFMEE0NEVGQzcwMEY5OTJFMCAvKiBEYXRh
VHJhbnNmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTRCOEFGNEFBMEIxQ0UwMkIwMDY4NzY5MCAv
KiBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3kuaCBpbiBIZWFkZXJzICovLApAQCAtMjY1MDYsNiAr
MjY3NzgsNyBAQAogCQkJCUNENjJGQjk2MUFGMDE4RTcwMDEyRUQ3RCAvKiBHZW5lcmljVGFza1F1
ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyNDE0RjREREU2MDAzRTdBNzAgLyogR2Vv
bG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NDZBRjI1MTRGNERERTYwMDNFN0E3MSAv
KiBHZW9sb2NhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFBMDg5NzQxRTczOEQ1
QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyNzE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb25D
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyODE0RjREREU2MDAzRTdBNzAg
LyogR2VvbG9jYXRpb25FcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMjkxNEY0RERF
NjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjY5
NjIsNiArMjcyMzUsNyBAQAogCQkJCTMxRkIxQTY2MTIwQTVEM0YwMERDMDJBMCAvKiBKU0Rldmlj
ZU1vdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1OUE4NjAwODExOURBRkExMDBERUYx
RUYgLyogSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTlE
REM4MzA5RTE5OEJBMDAxQkYzQzYgLyogSlNEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MzFBMDg5N0QxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTEyMjFFMDVFMUMwMkI0NDQwMDZBMUEwMCAvKiBKU0RvY3Vt
ZW50QW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRERBOTRDMjE5Njg3QUE1MDA0NTMw
MjkgLyogSlNEb2N1bWVudEN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0OTRFREYwQTEy
M0Y0QzAwRkRBRkMxIC8qIEpTRG9jdW1lbnRGcmFnbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
Njk4Nyw2ICsyNzI2MSw3IEBACiAJCQkJN0M4RTM0QjkxRTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9N
Q29udmVydEpTT04uaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOEUzNEJBMUU0QTMzQjAwMDU0Q0Uy
MyAvKiBKU0RPTUNvbnZlcnROdWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzhFMzRCQjFFNEEz
M0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0TnVsbGFibGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTMxQTA4OTgwMUU3MzhENUEwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4RTM0QkQxRTRBMzNC
MDAwNTRDRTIzIC8qIEpTRE9NQ29udmVydE51bWJlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdD
OEUzNEJFMUU0QTMzQjAwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRPYmplY3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDOEUzNEJGMUU0QTMzQjAwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRSZWNvcmQu
aCBpbiBIZWFkZXJzICovLApAQCAtMjc0MDEsNiArMjc2NzYsNyBAQAogCQkJCTg0ODUyMjdDMTE5
MDE2MkMwMDZFREM3RiAvKiBKU1NWR0hLZXJuRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjJGQTNEOUYwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHSW1hZ2VFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMkZBM0RBMTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdMZW5ndGguaCBpbiBI
ZWFkZXJzICovLAorCQkJCTMxQTA4OTYyMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVURlcHRo
U3RlbmNpbFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0RBMzBBQjc1QTZGMDAwRTVB
QzQgLyogSlNTVkdMZW5ndGhMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0RBNTBBQjc1
QTZGMDAwRTVBQzQgLyogSlNTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyRkEzREE3MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0xpbmVFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKQEAgLTI3NDg5LDYgKzI3NzY1LDcgQEAKIAkJCQk3QzczRkIwRDE5MUVGNUE4
MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxNUM3NzA5MzEwMEQzQ0E4MDA1QkEyNjcgLyogSlNWYWxpZGl0eVN0YXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCRThFRjA0QjE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNr
LmggaW4gSGVhZGVycyAqLywKKwkJCQkzMUEwODk4QzFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJH
UFVUZXh0dXJlRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkU4RUYwNEQxNzFDOTAx
NDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFja0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJFMjA1
MDgyMThBNDYwQzMwMDgwNjQ3RSAvKiBKU1ZUVEN1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0FG
OUIyMEQxOENGQjVGNDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uLmggaW4gSGVhZGVycyAqLywKQEAg
LTI3NTkxLDYgKzI3ODY4LDcgQEAKIAkJCQlCQ0U2NUJFQjBFQUNERjE2MDA3RTQ1MzMgLyogTGVu
Z3RoLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0ZGNjQ5MTBFQUQxNUMyMDBDMUQ2RjcgLyogTGVu
Z3RoQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNUJBN0Q2MzE1MTQzN0NBMDBGRTFFM0YgLyog
TGVuZ3RoRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMUEwODk3NzFFNzM4RDVBMDAz
QjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY4NzE2NzAxQzg2OUQ4MzAwNEZGMERFIC8qIExlbmd0aFBvaW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0ZGNjQ5MjBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3Ro
U2l6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE1MDgwMzcxRTNGMDBCMDAwNTFENzVEIC8qIExp
YldlYlJUQ0F1ZGlvTW9kdWxlLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NzcyLDYgKzI4MDUwLDcg
QEAKIAkJCQkzN0REQ0RBNTEzODQ1MDFDMDAwOEI3OTMgLyogTUhUTUxBcmNoaXZlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzN0REQ0RBNzEzODQ1MDFDMDAwOEI3OTMgLyogTUhUTUxQYXJzZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTUzQjg5NUFGMTlEQzdFRDkwMDlDQUE5MyAvKiBNaWNyb3Rhc2tz
LmggaW4gSGVhZGVycyAqLywKKwkJCQkzMUEwODk2ODFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJH
UFVGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdERENEOTUxMzg0NEZENTAwMDhCNzkz
IC8qIE1JTUVIZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNzcyQzRGMEM0RUIzMDQwMDgz
Mjg1RiAvKiBNSU1FVHlwZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MkYxMDg2NjE2
MkI2REE4MDA5QUM4MUUgLyogTWl4ZWRDb250ZW50Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNzk4NCw2ICsyODI2Myw3IEBACiAJCQkJQUQ1QTBDMjUxREVDQUNDQzAwNzA3MDU0IC8qIFBl
cmZvcm1hbmNlTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNGRTkwMjcxRTMwN0MzMDAw
M0U5MTk5IC8qIFBlcmZvcm1hbmNlTW9uaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEFGNEU1
NTYxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMzFBMDg5N0ExRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QTk5MzNEMUUz
N0ZCMTkwMDVCNUU0RCAvKiBQZXJmb3JtYW5jZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNUE5OTMzRjFFMzdGQjFGMDA1QjVFNEQgLyogUGVyZm9ybWFuY2VPYnNlcnZlckNhbGxiYWNr
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUE5OTM0MTFFMzdGQjI4MDA1QjVFNEQgLyogUGVyZm9y
bWFuY2VPYnNlcnZlckVudHJ5TGlzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODQxMiw2ICsyODY5
Miw3IEBACiAJCQkJMEZDNEU0MTExODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQzRBNDE1MTYyOURGNUEw
MEMzRUI2RSAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkM0RTQxMDE4N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nVHJlZUlPUy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMzFBMDg5ODYxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BV
UmVuZGVyUGlwZWxpbmVTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNTgwNjQxOTMyN0E2
MjAwREUzMkVCIC8qIFNjcm9sbGluZ1RyZWVNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUFE
REU0MTREQzhDOEYwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlTm9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZFQTNFODAxOTFCMzE2OTAwMEYxQjU1IC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjg1NTYsNiArMjg4MzcsNyBAQAogCQkJ
CTUxRTBCQjM4MERBNUFDQjYwMEE5RTQxNyAvKiBTdG9yYWdlTWFwLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDNTBEMEU4MzBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUEzNzYzNkMxQTJFNjhCQjAwOUE3RUUyIC8qIFN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFBMDg5ODMxRTczOEQ1QTAwM0I2NjA5
IC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTZFNkZFODFCQkQxMkRGMDAwQTYwMzMgLyogU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBp
biBIZWFkZXJzICovLAogCQkJCTgxQUM2QzM2MTMxQzU3RDMwMDA5QTdFMCAvKiBTdHJpbmdDYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIzNTQwRjMwRDAwNzgyRTAwMjM4MkZBIC8qIFN0
cmluZ1RydW5jYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODc3NCw2ICsyOTA1Niw3IEBACiAJ
CQkJODNDMUQ0MjYxNzhENUFCNDAwMTQxRTY4IC8qIFNWR1BhdGhTZWdBcmNSZWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIyMjI3QTYyMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoU2VnQ2xvc2VQ
YXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E2NTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
UGF0aFNlZ0N1cnZldG9DdWJpYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFBMDg5NzExRTczOEQ1
QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODNDMUQ0MjcxNzhENUFCNDAwMTQxRTY4IC8qIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzFENDI4MTc4RDVBQjQwMDE0MUU2OCAvKiBTVkdQYXRo
U2VnQ3VydmV0b0N1YmljUmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E2OTBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yOTEyMSw2ICsyOTQwNCw3IEBACiAJCQkJQTE5RDkzNDcxQTlGRUM3MjAwQjQ2QzI0IC8q
IFdlYkZpbHRlckV2YWx1YXRvclNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDNGM0QzNkUxQTY5
QjdFMDAwNTlGQzJCIC8qIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3RDIwRjZEMTA3RjQzOEIwMEE4MDM5MiAvKiBXZWJHTEFjdGl2ZUluZm8uaCBpbiBIZWFk
ZXJzICovLAorCQkJCTMxQTA4OTVGMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVURlcHRoU3Rl
bmNpbERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFNDdFNjYxMTBCNzk0NEIwMEIx
ODZDOCAvKiBXZWJHTEFueS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGRkM0NTgxRDVFODY1NTAw
MjY3QTY2IC8qIFdlYkdMQmxhY2tsaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlDOTEw
NDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xCdWZmZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjk2NzIs
NiArMjk5NTYsNyBAQAogCQkJCTI5MTRFMzA3MUNBQjVBNDQwMDQ5OTY2RiAvKiBBY2Nlc3NpYmls
aXR5QXR0YWNobWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzN0Y1N0FCQzFBNTA3Mjc3MDA4
NzZGOTggLyogQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGNTJBOEZENzFEMEE4RDBFMDA3M0NGNDIgLyogQWNjZXNzaWJpbGl0eUxhYmVsLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTMxQTA4OTE0MUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzdGNTdBQkQxQTUwNzI3QTAwODc2Rjk4IC8qIEFjY2Vzc2liaWxpdHlMaXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTM3RjU3QUJFMUE1MDcyN0UwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5TGlz
dEJveC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzN0Y1N0FCRjFBNTA3MjgxMDA4NzZGOTggLyog
QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTc5OSw2
ICszMDA4NCw3IEBACiAJCQkJQUFBNzI4RjkxNkQxRDhCQzAwRDNCQkM2IC8qIEFYT2JqZWN0Q2Fj
aGVJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOUE4MTI0QjBGQkI5Q0E5MDA1MTAyOTMgLyog
QVhPYmplY3RDYWNoZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDQThDODFGMTFFM0QzNjkw
MDgxMkZCNyAvKiBCYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MzFBMDg5MTYxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxMjRFRTcwQzI2NDFDRDAwOUUyMzQ5IC8qIEJhclByb3Au
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDYwQkI2MTUxRDBBMUJGMDAwMjIxODEyIC8qIEJhc2U2
NFV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzlFNjFDOTEyNkNBNUMzMDBCNjNF
OEQgLyogQmFzZUJ1dHRvbklucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5ODYwLDYg
KzMwMTQ2LDcgQEAKIAkJCQkxQzA5MzlFQTFBMTNFMTI5MDBCNzg4RTUgLyogQ2FjaGVkU1ZHRm9u
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzUzODYwMjE0NDg5RTk4MDBCNzg0NTIgLyogQ2Fj
aGVkVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQjE2QzI3MDk3OUMzQkQwMDQ2
Nzc0MSAvKiBDYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxQTA4
OTZDMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUU0M0FGOEU2MUFDNUI3RTgwMENBNzE3RSAvKiBDYWNoZVZhbGlk
YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlBRTJEOTYxMzRFRTVGOTAwNzI5MjBBIC8q
IENhbGN1bGF0aW9uVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk0ODRGQzExMDJDRjIz
QzAwMTg3REQzIC8qIENhbnZhc0dyYWRpZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk4ODEs
NiArMzAxNjgsNyBAQAogCQkJCUNEREUwMkYwMThCNTY1MTMwMENGN0ZGMSAvKiBDRE1TZXNzaW9u
QVZTdHJlYW1TZXNzaW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RFNTk1OUQxQkYyNzU3MTAw
QTFDQkU4IC8qIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1RjJEQkJFOTE3OEUzQzgxMDAxNDE0ODYgLyogQ2VydGlmaWNhdGVJbmZvTWFjLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5NzUxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTFBOEU1NjYxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTk3QkM2OURDMTUwNUYwNzYwMDFCNzRBQyAvKiBDaGFuZ2VWZXJzaW9uV3JhcHBlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNUZGRTEyQjAyNjc2MDBDMUEzNTkgLyogQ2hhbm5l
bE1lcmdlck5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTkxMiw2ICszMDIwMCw3IEBACiAJ
CQkJQTU4NEZFMkIxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTY1NTBCNkExMDk5REYwMjcwMDkwRDc4MSAvKiBDb21tZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUUxRkUxMzc0MTg0MDJBNjcwMDg5MkYxMyAvKiBDb21tb25D
cnlwdG9VdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5MEMxRTczN0Q1MTAw
M0I2NjA5IC8qIFdlYkdQVUxpYnJhcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2MEYzMkMx
REZCQjEwQjAwNDE2RDZDIC8qIENvbW1vblZNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDOTNG
MzQ5MUFBNkJBNUUwMEE5OEJBQiAvKiBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQzJGNEU3OEExRTQ1QkVBMTAwNkQ3MTA1IC8qIENvbXBsZXhUZXh0Q29u
dHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5OTUxLDYgKzMwMjQwLDcgQEAKIAkJCQkx
QUI0MEVFMTFCRjQyN0Q2MDBCQTgxQkUgLyogQ29udGV4dE1lbnVJdGVtLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUZEMzE2MDI4MTJCMDI2NzYwMEMxQTM1OSAvKiBDb252b2x2ZXJOb2RlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUUxNDI0QzkzMTY0QjUyQzgwMEYzMkQ0MCAvKiBDb29raWVKYXIu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5MEExRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQ
VUVudW1zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFRTY4NDYyMTJEMjZFMzgwMEU3OTQxNSAv
KiBDb29raWVKYXJDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTQyNEM5MDE2NEI0NjBC
MDBGMzJENDAgLyogQ29va2llSmFyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NjMx
MkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZVN0b3JhZ2VDRk5ldC5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTMwMjE3LDYgKzMwNTA3LDcgQEAKIAkJCQkxODg2MDRCMzBGMkU2NTRBMDAwQjY0NDMgLyog
RE9NVGltZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzZGQzJCMEIxMjM3MERBMDAwNkE5OTFB
IC8qIERPTVRva2VuTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRTM3REZEQTEyREJBRkI4
MDBBNkIyMzMgLyogRE9NVVJMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxQTA4OTE5MUU3MzdE
NTUwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0Q5REUxODExN0FBRDZBNDAwRUEzODZEIC8qIERPTVVSTE1lZGlhU291cmNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE1RkNDOUZDMUI0REY3RjIwMEU3MjMyNiAvKiBET01V
UkxNZWRpYVN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDAzQjk5ODA5RUIxM0FGMDA3
OTdDN0YgLyogRE9NV2luZG93LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzAzMzMsNiArMzA2MjQs
NyBAQAogCQkJCTA4QzkyNTE5MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMzEzMTNGNjUxNDQzQjM1RjAwNkUyQTkwIC8qIEZpbHRlckVmZmVj
dFJlbmRlcmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RUNFQjZEMTQ5OTc5MEQwMENERDNB
NCAvKiBGaWx0ZXJPcGVyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5MEQxRTcz
N0Q1MTAwM0I2NjA5IC8qIFdlYkdQVU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUVD
RUI2RjE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBOENGRjA0RDBBMTU0RjA5MDAwQTQyMzQgLyogRml4ZWRUYWJsZUxheW91dC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5QTUyOEU4MzE3RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdP
YmplY3RzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzA0MDgsNiArMzA3MDAsNyBAQAogCQkJCTE0
MzJFODQ5MEM1MTQ5M0YwMEIxNTAwRiAvKiBHQ0NvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNEZCMzkwQUQxNUVGNjFGMzAwN0FENTFGIC8qIEdlbmVyYXRlZEltYWdlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTgzMDAzMEY1MUI3RDMzQjUwMEVEM0FBQyAvKiBHZW5lcmljQ2FjaGVk
SFRNTENvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5MDkxRTczN0Q1MTAw
M0I2NjA5IC8qIFdlYkdQVURyYXdhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3MjBCMEEw
MTREMzMyMzUwMDY0Mjk1NSAvKiBHZW5lcmljRXZlbnRRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDRDRCRTUyQTFDRTEzNkVGMDA5RDg3REEgLyogR2VuZXJpY1Rhc2tRdWV1ZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5NzQ2QUYyMzE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDUyOCw3ICszMDgyMSw5IEBACiAJCQkJOTczRjQxOEIx
NjlCOTYwMzAwMDZCRjYwIC8qIEhUTUxQYXJzZXJPcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTk3N0IzODcwMTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MUGFyc2VyU2NoZWR1bGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDQzBFODc1MUJGRTcwRTkwMDhGN0Y1MCAvKiBIVE1MUGljdHVy
ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5NzgxRTczOEQ1QTAwM0I2NjA5
IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTg3MUQ0NTcwQTEyN0NCQzAwQjEyQTY4IC8qIEhUTUxQbHVnSW5FbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxQTA4OTEwMUU3MzdENTEwMDNCNjYwOSAvKiBX
ZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDQxNTI5MkYwRTFBRThBMDAwQzRBMkQwIC8qIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQThFQTdDQUQwQTE5MkI5QzAwQThFRjVGIC8qIEhUTUxQcmVF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0IzODcyMTIyODgzRTkwMEI4MUZGOCAv
KiBIVE1MUHJlbG9hZFNjYW5uZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDY3OSw2ICszMDk3
NCw3IEBACiAJCQkJN0ExRjJCNTIxMjZDNjFCMjAwMDZBN0U2IC8qIEluc3BlY3RvckNsaWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzgxQjk1QjBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4MkFCMTc0MzEyNEI5OUVDMDBD
NTA2OUQgLyogSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5
MTcxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVVRleHR1cmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNEE5Q0M4MjAxNkJGOUJCNDAwRUM2NDVBIC8qIEluc3BlY3RvckNTU09NV3JhcHBlcnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0FCMEIxQzAxMjExQTYyMjAwQTc2OTQwIC8qIEluc3BlY3Rv
ckRhdGFiYXNlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFGMDYyMTUwRjVGMTkyNjAw
QTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0zMDcyNyw2ICszMTAyMyw3IEBACiAJCQkJMzE5ODQ4MEIxQTFFNkNFNDAwQTEzMzE4IC8qIEpT
QW5pbWF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTIyMUUwNkMxQzAzRDIyNDAw
NkExQTAwIC8qIEpTQW5pbWF0aW9uVGltZWxpbmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTdC
NUY3RTIxRTU3REJDODAwRjM0RjkwIC8qIEpTU2l0ZUJvdW5kQ3JlZGVudGlhbERhdGEuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5ODcxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVVGV4
dHVyZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxMjIxRTA3MzFDMDNFNEMyMDA2QTFBMDAgLyog
SlNBbmltYXRpb25UaW1lbGluZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzY1NzlF
RjFFMDA4NTY2MDBFM0EyN0EgLyogSlNBcHBsZVBheUxpbmVJdGVtLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDNjUyMzFFMUUwMThCNUEwMDY3N0YyMiAvKiBKU0FwcGxlUGF5UGF5bWVudC5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTMwOTg1LDYgKzMxMjgyLDcgQEAKIAkJCQkxQUUyQUIyMTBBMUNF
NjNCMDBCNDJCMjUgLyogSlNIVE1MTGFiZWxFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTU3NjgxNDQ0MUU3MENCMUIwMEU3Nzc1NCAvKiBKU0Flc0tleVBhcmFtcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQUUyQUIyMzBBMUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTGVnZW5kRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODkxODFFNzM3RDUxMDAzQjY2MDkgLyogV2Vi
R1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFCMjUwQTFD
RTYzQjAwQjQyQjI1IC8qIEpTSFRNTExJRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
ODBFN0IxMDBBMTlENjA2MDA3RkI4QzUgLyogSlNIVE1MTGlua0VsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUFFMkFCMjcwQTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTE1hcEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTAxMiw2ICszMTMxMCw3IEBACiAJCQkJRTFFNkVFQTQw
QjYyOERBODAwNUYyRjcwIC8qIEpTSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkMxN0Y5NjYwQjY0RUJCODAwNEE2NUNCIC8qIEpTSFRNTFNlbGVjdEVsZW1lbnRDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUI2OUQzQjgxQjk5MTAwNzAwRTM1MTJCIC8qIEpT
SFRNTFNsb3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxQTA4OTEzMUU3MzdENTEw
MDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlFNDQ2MTQzQjBDRDY4OUNDMDBGQURBNzUgLyogSlNIVE1MU291cmNlRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5NzUyRDM4RDE0MTMxMDRCMDAzMzA1QkQgLyogSlNIVE1MU3Bh
bkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgwRTdCMEYwQTE5RDYwNjAwN0ZCOEM1
IC8qIEpTSFRNTFN0eWxlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxMTc4LDYgKzMx
NDc3LDcgQEAKIAkJCQk1N0UyMzM3MzFEQ0Q0NkI2MDBGMjhEMDEgLyogSlNSc2FIYXNoZWRJbXBv
cnRQYXJhbXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTc2OEU0MzYxREI3NTI3NDAwRDBBNEY3
IC8qIEpTUnNhSGFzaGVkS2V5R2VuUGFyYW1zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3RkVE
RDQzMURCNkQ3NjAwMEVCOTZGNSAvKiBKU1JzYUtleUdlblBhcmFtcy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkzMUEwODkwNjFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVQ29tbWFuZFF1ZXVlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTU3MDZBNjlBMURERTVFODUwMEEwM0IxNCAvKiBKU1JzYU9h
ZXBQYXJhbXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTdFMjMzNjExREM3RDZBQTAwRjI4RDAx
IC8qIEpTUnNhT3RoZXJQcmltZXNJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3Mzc5NEU1
MTlFRTJGRjIwMEU1QTA0NSAvKiBKU1JUQ0NvbmZpZ3VyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0zMTM5MSwxMSArMzE2OTEsMTMgQEAKIAkJCQkwRkRBN0MxQTE4ODMyMkVCMDBDOTU0QjUg
LyogSlNUb3VjaExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwMzM0RTkxNDVBMUYzNjAw
OEQ4RDQ1IC8qIEpTVHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc4NDYzNDIx
NDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkz
MUEwODk1QTFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVDb21tYW5kUXVldWUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTE3QjQ5MjIxNkE5QjhGRjAwMUM4ODM5IC8qIEpTVHJhbnNpdGlvbkV2
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNzUwRDVDMEE5MERFRTEwMDBGRjIxNSAvKiBK
U1RyZWVXYWxrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE2QkI3OTQwQ0U5MUU2ODAwNTEy
Rjc5IC8qIEpTVHJlZVdhbGtlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODY2MjlE
MDA5REEyQjQ4MDA5NjMzQTUgLyogSlNVSUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ2
NTMwN0QxMURCNkVFNEEwMEU0MTM3QyAvKiBKU1VJRXZlbnRJbml0LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTMxQTA4OTY5MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUxpYnJhcnkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUM1MzgxQjUxRDg3RTA4NzAwRTJFQkU2IC8qIEpTVVJMU2VhcmNo
UGFyYW1zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDNzNGQjExMTkxRUY2RjQwMDdERTA2MSAv
KiBKU1VzZXJNZXNzYWdlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzczRkIwQzE5
MUVGNUE4MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMzE0MTIsNiArMzE3MTQsNyBAQAogCQkJCTdBRjlCMjBFMThDRkI1RjQw
MEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbkxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ4MkQ3
RjcxM0Q0QzhCRDAwNEU0MzcyIC8qIEpTV2F2ZVNoYXBlck5vZGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTIwREUzRjkxQzg3QzVBQjAwQjZENEREIC8qIEpTV2ViQW5pbWF0aW9uLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTMxQTA4OTA4MUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVEZXB0aFN0
ZW5jaWxTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEM0YzRDM2MzFBNjlCMTkwMDA1OUZD
MkIgLyogSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQz
RjNEMzZDMUE2OUI3RDUwMDU5RkMyQiAvKiBKU1dlYkdMMlJlbmRlcmluZ0NvbnRleHRDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEMjBGNjIxMDdGNDA2OTAwQTgwMzkyIC8qIEpTV2Vi
R0xBY3RpdmVJbmZvLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzE0MzQsNiArMzE3MzcsNyBAQAog
CQkJCUQzRjNEMzY3MUE2OUIxQTUwMDU5RkMyQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDNGM0QzNkIxQTY5QjdDNTAwNTlGQzJCIC8qIEpT
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
OUVFRDE0RjEwNTE5NzFBMDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5OEExRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2Vi
R1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkY5OTVBMzMxQTcw
ODMzNzAwQTczNUY0IC8qIEpTV2ViR0xTYW1wbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5
QzdCOUEyMTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dlYkdMU2hhZGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUEwN0QzMzU1MTUyQjYzMEUwMDFCNjM5MyAvKiBKU1dlYkdMU2hhZGVyUHJlY2lzaW9u
Rm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzE1MDIsNiArMzE4MDYsNyBAQAogCQkJCTI5
MTdCNTYxMTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1bGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTI5MTdCNTY2MTQ3MzQ5OTUwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1
bGVyTWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBQTNBNjlGMTk0QjU5QjYwMDFDQkQyNCAv
KiBMYXllclBvb2wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5NjAxRTczOEQ1OTAwM0I2
NjA5IC8qIEpTV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEYzNkU3MzcxQkQxODM3QTAwMkRCODkxIC8qIExheW91dFBvaW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0MURDMDUyMTY0ODM0QjkwMDM3MUU1QSAvKiBMYXlvdXRSZWN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUExMjBBQ0E0MTNGOTk4Q0EwMEZFNEFDNyAvKiBMYXlvdXRSZXBhaW50ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTYzNiwxMSArMzE5NDEsMTMgQEAKIAkJCQk5NDkzQjZD
MDFENzRCNDEyMDA4OEU3ODAgLyogTWVkaWFRdWVyeVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDOTA4NDNDRjFCMThFNDdEMDBCNjg1NjQgLyogTWVkaWFSZW1vdGVDb250cm9scy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDRDhBQ0E4RTFEMjM5NzE5MDBFQ0M1OUUgLyogTWVkaWFSZW1v
dGVTb2Z0TGluay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODk3MjFFNzM4RDVBMDAzQjY2
MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0VFRkNENzkxOURCMzFGNzAwMzg3NkQ3IC8qIE1lZGlhUmVzb3VyY2VMb2Fk
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUIxMjREOEYxRDM4MEJCNjAwRUNERkIwIC8qIE1l
ZGlhU2FtcGxlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQkVBRUFDMTlEOTJCNkMw
MEJFQkE4OCAvKiBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUM5MDI3RjQxMUIxRDBBRDIwMEJGQkZFRiAvKiBNZWRpYVNlc3Npb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQzk2RjVFQzcxQjU4NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVy
cnVwdGlvblByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxQTA4OTVEMUU3MzhENTkw
MDNCNjYwOSAvKiBKU1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQzk2RjVFQzYxQjU4NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVycnVw
dGlvblByb3ZpZGVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTdCNUY4MEYxRTVFMkE0QjAw
RjM0RjkwIC8qIEpTQWVzR2NtUGFyYW1zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM5MEY2NTU1
MUIyMjUzQjEwMDIxNjNBMSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMzE3NzksNiArMzIwODYsNyBAQAogCQkJCTE0NzdFNzc2MEJGNDEzNEEwMDE1Mjg3MiAv
KiBQYWdlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q1RTVCNjExQTE1RjE1NjAwMEM2
MDlFIC8qIFBhZ2VDb25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUYzODIwODky
MTQ3RDM1RjkwMDEwQkMwNiAvKiBQYWdlQ29uc29sZUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTMxQTA4OTExMUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEQUVEMjAzMDE2RjI0NDJC
MDA3MEVDMEYgLyogUGFnZUNvbnNvbGVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVB
MkFGMEIxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUYzNDc0MkRDMTM0MzYyRjAwMDUzMUJDMiAvKiBQYWdlRGVidWdnZXJBZ2VudC5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTMxODA3LDYgKzMyMTE1LDcgQEAKIAkJCQlBODhERDQ4OTBCNDYy
OUIwMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTJENTAwMkZCMUI1NkQ3OTkwMDIwQUFGNyAvKiBQYXRoVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4RkE2RTVFMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTMxQTA4OTg0MUU3MzhENUEwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBp
cGVsaW5lU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgwQTM4RkUwRTUwQ0M4MjAwQTI1
RUJDIC8qIFBhdHRlcm5DRy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQThBNjQ2QzFEMTlGRjg3
MDBEMEUwMEYgLyogUGF5bWVudENvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4QTY0NkQx
RDE5RkY4NzAwRDBFMDBGIC8qIFBheW1lbnRDb250YWN0Q29jb2EubW0gaW4gU291cmNlcyAqLywK
QEAgLTMxODE2LDYgKzMyMTI1LDcgQEAKIAkJCQkxQThBNjQ2RTFEMTlGRjg3MDBEMEUwMEYgLyog
UGF5bWVudE1ldGhvZENvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1OEU4NjcxRDE5RDgw
RTAwQzBFQTczIC8qIFBheW1lbnRSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBOEE2
NDY3MUQxOUZERkYwMEQwRTAwRiAvKiBQYXltZW50UmVxdWVzdFZhbGlkYXRvci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkzMUEwODk2NjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU2NDBCMDUzODE0MDAyQ0U2NEYgLyogUERG
RG9jdW1lbnRJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDZFNDY4NDE3RDY2MEY1MDBF
Q0Y4QkIgLyogUERGRG9jdW1lbnRJbWFnZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxRTQw
ODM5MURDQjc0ODkwMEVGQ0UxOSAvKiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0zMTg1NSw2ICszMjE2NSw3IEBACiAJCQkJQkM5NEQxMDgwQzI3NEY4ODAwNkJD
NjE3IC8qIFBsYXRmb3JtU2NyZWVuTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjkzNDk0MEIx
NkMwMkMwQTAwOTAxMzE4IC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTI5MzQ5NDBBMTZDMDJDMDcwMDkwMTMxOCAvKiBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxQTA4OTgxMUU3MzhE
NUEwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyOTdCRTNEQTE2QzA0M0Q4MDAzMzE2QkQgLyogUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQTEyREY0OTE3NDNERjgzMDA0REFG
REYgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTI5N0JFM0Q4MTZDMDNDQ0UwMDMzMTZCRCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zMTkzOCw2ICszMjI0OSw3IEBACiAJCQkJMEY1QjdBNTQx
MEY2NUQ3QTAwMzc2MzAyIC8qIFJlbmRlckVtYmVkZGVkT2JqZWN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTA2NkM3NzMwMEFCNjAzRkQwMDIzOENDNCAvKiBSZW5kZXJGaWxlVXBsb2FkQ29udHJv
bC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1M0M4Mjk4RDEzRDhEOTI3MDBERTJERUIgLyogUmVu
ZGVyRmxleGlibGVCb3guY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5NkYxRTczOEQ1QTAw
M0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1MDhDQ0E1MDEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBODcxREVENDBBMTUzMEM3MDBCMTJBNjggLyogUmVuZGVyRnJhbWUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEMzA4MEUxMTdDRjdFNzAwQTc5MUY3IC8qIFJlbmRlckZy
YW1lQmFzZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxOTY3LDYgKzMyMjc5LDcgQEAKIAkJCQk0
MzkwNDZEOTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MRmVuY2VkLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQzOTA0NkQ5MTJEQTI1RTgwMEFGODFCMyAvKiBSZW5kZXJNYXRoTUxGZW5j
ZWRPcGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzkwNDZEQjEyREEyNUU4MDBBRjgw
QTIgLyogUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5
N0IxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDM5MDQ2REQxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhN
TE1hdGguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzU3MTg4M0VFRjYxODc5Mzc1MUU0MDg5IC8q
IFJlbmRlck1hdGhNTE1lbmNsb3NlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzOTA0NkRGMTJE
QTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTMyMDUwLDYgKzMyMzYzLDcgQEAKIAkJCQkyNkMxNUNGNjE4NTdFMTVEMDBGMTVDMDMgLyog
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUJBMDAzMTE2RkI5MkFDMDBCQTdBMzUgLyogUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0U0MjhDRTUxM0UzNDA3RjAw
M0I2NjFDIC8qIFJlc291cmNlSGFuZGxlSU9TLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5
MDUxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTE0Qzc2NTEwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlTWFjLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTNFMjI3RTMwQUY1ODlBRDAwRDQ4MzI0IC8qIFJlc291cmNl
TG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFRTY4NDc1MTJEMjZFNzAwMEU3OTQxNSAv
KiBSZXNvdXJjZUxvYWRlckNGTmV0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzIwNTgsNiArMzIz
NzIsNyBAQAogCQkJCTk3M0UzMjU2MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWROb3Rp
Zmllci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2QjY5M0EzNDFDNTFBOTVEMDBCMDNCRUYgLyog
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E5MjlDQTYxQzU5
OEE5RTAwNERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMzFBMDg5MEIxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVUZ1bmN0aW9uLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdBRDNDREQ5MUM4QTAwMkYwMEYxMjY5OCAvKiBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2N0MwQ0U5MjNBMTAw
N0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VF
Njg0NkUxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMzIxNDcsOCArMzI0NjIsMTAgQEAKIAkJCQkwRjYwNUFFQzE1Rjk0ODQ4MDA0
REYwQzAgLyogU2Nyb2xsaW5nQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFG
NjJFRTcxNERBMjJBNzAwNDE1NTZDIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGQzRFNDBFMTg3RjgyRTEwMDQ1ODgyQyAvKiBTY3JvbGxpbmdDb29yZGlu
YXRvcklPUy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTMxQTA4OTFBMUU3MzdENTUwMDNCNjYwOSAv
KiBKU1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvckN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQUY2MkVFNjE0REEyMkE3MDA0MTU1NkMgLyogU2Nyb2xsaW5nQ29vcmRp
bmF0b3JNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUM2MUIwQTFERTUzNkU3MDA4QTIxMkQg
LyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMx
QTA4OTU0MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUJ1ZmZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MTdERUVFNTFERTk0QURDMDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNDMzhCRkUxNjQ0NzNDNzAwMDkxRUIy
IC8qIFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEz
RTdDMTkxQjJGQzUwMDBGMUI1NSAvKiBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTMyMTgzLDkgKzMyNTAwLDExIEBACiAJCQkJRjU1QjNERDEx
MjUxRjEyRDAwM0VGMjY5IC8qIFNlYXJjaElucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRTcwNThFRTFCQzVCQzE5MDA0NUE1MDcgLyogU2VhcmNoUG9wdXBNZW51Q29jb2EubW0gaW4g
U291cmNlcyAqLywKIAkJCQk5NzZGMzZFQTE0Njg2MjI1MDA1RTkzQjQgLyogU2VjdXJpdHlDb250
ZXh0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxQTA4OTBFMUU3MzdENTEwMDNCNjYwOSAvKiBX
ZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0QwRTBG
QTBFOTcyQzM1MDAyNjVERUEgLyogU2VjdXJpdHlPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTFFM0FBMEExQjk4QkNBQjAwMzZBRDgxIC8qIFNlY3VyaXR5T3JpZ2luRGF0YS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQUY3QUZDNzFBNDhBOEJDMDBDOEU0RTcgLyogU2VjdXJpdHlPcmln
aW5Qb2xpY3kuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5MTIxRTczN0Q1MTAwM0I2NjA5
IC8qIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3NEQyREE0MTQ2QTUzNUQwMEQ1MUY4QiAvKiBTZWN1cml0eVBvbGljeS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5OUNDMEI1RDE4QkU5ODRBMDA2Q0VCQ0MgLyogU2VnbWVu
dGVkSW5wdXRTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQzNEQTJFMEQwMDZDMUQw
MEVGNkYyNiAvKiBTZWdtZW50ZWRTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMjI5Miw2
ICszMjYxMSw3IEBACiAJCQkJMUEzNzYzNkIxQTJFNjhCQjAwOUE3RUUyIC8qIFN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4MTAyQzU4ODEzMjVCQjExMDBE
REU2N0EgLyogU3RyaW5nQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIzNTQwRjIw
RDAwNzgyRTAwMjM4MkZBIC8qIFN0cmluZ1RydW5jYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkzMUEwODkwNDFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVQnVmZmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTQxNEI4MjA0MUQ2REYwREYwMDc3RUJFMyAvKiBTdHJ1Y3R1cmVkQ2xvbmUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1RUI2QTIwRTgxREM0RjAwQjI1OTY1IC8qIFN0eWxlQmFj
a2dyb3VuZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1RUI2N0QwRTgxRDQyMDAwQjI1
OTY1IC8qIFN0eWxlQm94RGF0YS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMyNTUzLDYgKzMyODcz
LDcgQEAKIAkJCQkyRDRGOTZGODFBMUVDQzI0MDA5OEJGODggLyogVGV4dEluZGljYXRvcldpbmRv
dy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY1NUIzREQ5MTI1MUYxMkQwMDNFRjI2OSAvKiBUZXh0
SW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNFQ0FERkNEMTUzNzc5MUQwMEUzNzA2
OCAvKiBUZXh0SW5zZXJ0aW9uQmFzZUNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFB
MDg5NjMxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVRHJhd2FibGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTMzMDlFMUIwOTlFNjQ5MjAwNTZFNTgxIC8qIFRleHRJdGVyYXRvci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFNEQ5ODhCNjE3QkZFQjIxMDA4NEZCODggLyogVGV4dE5vZGVUcmF2
ZXJzYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUMxOERBNTgxODFBRjZBNTAwQzRFRjIyIC8q
IFRleHRQYWludGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzI2MjAsNiArMzI5NDEsNyBAQAog
CQkJCUMzNzVEN0ZEMTY2Mzk1MTkwMDYxODRBQiAvKiBUeXBlQWhlYWQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTMzMDlFMTkwOTlFNjQ5MjAwNTZFNTgxIC8qIFR5cGluZ0NvbW1hbmQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODUwMzFCNEQwQTQ0RUZDNzAwRjk5MkUwIC8qIFVJRXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5N0UxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BV
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTkzMzU0QTNDMEIyNEY4QzkwMDNGNkRFQSAvKiBVSUV2ZW50V2l0aEtleVN0YXRlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUxODg2NEUwMUJCQUY1NzEwMEU1NDBDOSAvKiBVbmlxdWVJ
REJEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTk4RjdBNDFCQkRCNzkzMDBFMkND
NUYgLyogVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MzI2NjEsMTIgKzMyOTgzLDE0IEBACiAJCQkJNTJENUExOEYxQzU0NTkyMzAwREUzNEEzIC8qIFZp
ZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNERTgzREIx
MTgzQzQ0MDYwMDMxRUFBMyAvKiBWaWRlb1BsYXliYWNrUXVhbGl0eS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlDRDlEODI3OTFDN0I4RUUxMDA2RkYwNjYgLyogVmlkZW9UZXh0dXJlQ29waWVyQ1Yu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5MTUxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCRTg4RTBE
RTE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
RTg4RTBFMTE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQ0QzMzZGNjcxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZG
T2JqQy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDhCNUE0MjE4MEQxNDlBMDA4QjhFNjUgLyog
VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQlDRUY0MThDRTExNzk2NzhDMDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMjZGOUE4MzgxOEEwNDZBQzAwQUVCODhBIC8qIFZpZXdwb3J0Q29uZmln
dXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODkwNzFFNzM3RDUxMDAzQjY2MDkg
LyogV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkz
RkZGRjlBRDE1OUQ5QjA2MDAyMEJCRDUgLyogVmlld3BvcnRTdHlsZVJlc29sdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTkzMzA5RTFGMDk5RTY0OTIwMDU2RTU4MSAvKiBWaXNpYmxlUG9zaXRp
b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg4M0RGMjcwRjNEMDQ1RDAwRjE5QkY2IC8qIFZp
c2libGVTZWxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMjcwNiw2ICszMzAzMCw3IEBA
CiAJCQkJQ0QxMjdERUQxNEYzMDk3RDAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMzNDhCRDMwREI3RjgwNDAwNEFCQUJCIC8qIFdlYkNv
cmVKU0J1aWx0aW5JbnRlcm5hbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMzNDhCRDMwREI3
RjgwNDAwNEFCQUJBIC8qIFdlYkNvcmVKU0J1aWx0aW5zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTMxQTA4OTU3MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEY3REYxNDgxRTJCRjFCMTAwOTU5NTFCIC8qIFdlYkNvcmVKU0Ns
aWVudERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE0MDM3OUMxMjRCRUE3RjAwQUY0MEU0
IC8qIFdlYkNvcmVNb3Rpb25NYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RDOTc5RjQx
QzQ5OEMwOTAwREI1MEQ0IC8qIFdlYkNvcmVOU0Vycm9yRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8s
CkBAIC0zMjg0Niw2ICszMzE3MSw3IEBACiAJCQkJMkU0MzQ2NEYwRjU0NkE4MjAwQjBGMUJBIC8q
IFdvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMjcxQTE0MEVF
RUM4MDQwMEY2MTIxMyAvKiBXb3JrZXJOYXZpZ2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MkU0MzQ2NTIwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclJ1bkxvb3AuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMzFBMDg5MEYxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlcmluZ0NvbnRl
eHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU3RkQ3MUIxREI5NDIzRTAwNkFFMjRCIC8qIFdv
cmtlclJ1bnRpbWVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUE2NDNGRDBFQzA5N0Ew
MDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBNTRBMEM2NTFEQjgwNTM2MDAxN0E5MEIgLyogV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1l
bnRDdXN0b20uY3BwCmluZGV4IGE3OGIwMTg0NDM3Li41NjM3YzE0MDk4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDksIDIwMTEsIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDksIDIwMTEs
IDIwMTYsIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC00Miw2ICs0MiwxMCBAQAogI2luY2x1ZGUgIkpTV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCR1BVKQorI2luY2x1ZGUgIkpTV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dC5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQogI2luY2x1ZGUgIkpTVG91Y2guaCIKICNpbmNsdWRlICJKU1RvdWNoTGlzdC5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3Vz
dG9tLmNwcAppbmRleCAxNzJjMGQ5OTc5MS4uNTMxNjg5MmM4YjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTYsIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEw
IFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKQEAgLTM3LDYgKzM3LDEwIEBACiAjaW5jbHVkZSAiSlNXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJHUFUpCisjaW5jbHVk
ZSAiSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjQsNiArNjgsMTEgQEAgSlNWYWx1ZSBK
U0hUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgfQog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCR1BVKQorICAgIGlmIChIVE1MQ2FudmFzRWxlbWVudDo6
aXNXZWJHUFVUeXBlKGNvbnRleHRJZCkpCisgICAgICAgIHJldHVybiB0b0pTPElETE51bGxhYmxl
PElETEludGVyZmFjZTxXZWJHUFVSZW5kZXJpbmdDb250ZXh0Pj4+KHN0YXRlLCAqZ2xvYmFsT2Jq
ZWN0KCksIHN0YXRpY19jYXN0PFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqPih3cmFwcGVkKCkuZ2V0
Q29udGV4dFdlYkdQVShjb250ZXh0SWQpKSk7CisjZW5kaWYKKwogICAgIHJldHVybiBqc051bGwo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHUFVS
ZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3JDdXN0b20u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41YjBhMTM3ZTA4Ywot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR1BVUmVu
ZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yQ3VzdG9tLmNwcApAQCAtMCwwICsxLDUzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkpTV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
LmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisj
aW5jbHVkZSAiSlNXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgor
I2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNDOjpKU1Zh
bHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBSZWY8V2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yPiYm
IG9iamVjdCkKK3sKKyAgICBpZiAob2JqZWN0LT5pc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3Io
KSkKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3I+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShvYmplY3QpKTsKKyAgICBy
ZXR1cm4gY3JlYXRlV3JhcHBlcjxXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I+
KGdsb2JhbE9iamVjdCwgV1RGTW92ZShvYmplY3QpKTsKK30KKworSlNWYWx1ZSB0b0pTKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdlYkdQVVJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvciYgb2JqZWN0KQoreworICAgIHJldHVybiB3cmFwKHN0
YXRlLCBnbG9iYWxPYmplY3QsIG9iamVjdCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdQVVJlbmRlcmluZ0NvbnRleHRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHUFVSZW5kZXJpbmdDb250
ZXh0Q3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzNk
MWMzMjViMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dlYkdQVVJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCisKKyNpZiBFTkFCTEUo
V0VCR1BVKQorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3ZvaWQgSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihT
bG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QoJndyYXBw
ZWQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IDRiNTFlZmU5Yzc0Li40NTdiZTYy
Y2UwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2LCAyMDA3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwgMjAw
NywgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAxMCBU
b3JjaCBNb2JpbGUgKEJlaWppbmcpIENvLiBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpA
QCAtNjIsNiArNjIsMTAgQEAKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgi
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJHUFUpCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyaW5n
Q29udGV4dC5oIgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJNZWRp
YVNhbXBsZUFWRk9iakMuaCIKIApAQCAtMTk1LDYgKzE5OSwxMSBAQCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChjb25zdCBTdHJpbmcmIHR5cGUp
CiAgICAgaWYgKEhUTUxDYW52YXNFbGVtZW50OjppczJkVHlwZSh0eXBlKSkKICAgICAgICAgcmV0
dXJuIGdldENvbnRleHQyZCh0eXBlKTsKIAorI2lmIEVOQUJMRShXRUJHUFUpCisgICAgaWYgKEhU
TUxDYW52YXNFbGVtZW50Ojppc1dlYkdQVVR5cGUodHlwZSkpCisgICAgICAgIHJldHVybiBnZXRD
b250ZXh0V2ViR1BVKHR5cGUpOworI2VuZGlmCisKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgaWYg
KEhUTUxDYW52YXNFbGVtZW50OjppczNkVHlwZSh0eXBlKSkKICAgICAgICAgcmV0dXJuIGdldENv
bnRleHRXZWJHTCh0eXBlKTsKQEAgLTI5OCw2ICszMDcsMzEgQEAgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dCogSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHRXZWJHTChjb25zdCBTdHJpbmcmIHR5
cGUsIFcKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQkdQVSkKK2Jvb2wgSFRNTENhbnZhc0Vs
ZW1lbnQ6OmlzV2ViR1BVVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCit7CisgICAgcmV0dXJuIHR5
cGUgPT0gIndlYmdwdSI7Cit9CisKK0NhbnZhc1JlbmRlcmluZ0NvbnRleHQqIEhUTUxDYW52YXNF
bGVtZW50OjpnZXRDb250ZXh0V2ViR1BVKGNvbnN0IFN0cmluZyYgdHlwZSkKK3sKKyAgICBBU1NF
UlQoSFRNTENhbnZhc0VsZW1lbnQ6OmlzV2ViR1BVVHlwZSh0eXBlKSk7CisKKyAgICBpZiAobV9j
b250ZXh0ICYmICFtX2NvbnRleHQtPmlzR1BVKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgaWYgKCFtX2NvbnRleHQpIHsKKyAgICAgICAgbV9jb250ZXh0ID0gV2ViR1BVUmVuZGVy
aW5nQ29udGV4dDo6Y3JlYXRlKCp0aGlzKTsKKyAgICAgICAgaWYgKG1fY29udGV4dCkgeworICAg
ICAgICAgICAgLy8gTmVlZCB0byBtYWtlIHN1cmUgYSBSZW5kZXJMYXllciBhbmQgY29tcG9zaXRp
bmcgbGF5ZXIgZ2V0IGNyZWF0ZWQgZm9yIHRoZSBDYW52YXMKKyAgICAgICAgICAgIGludmFsaWRh
dGVTdHlsZUFuZExheWVyQ29tcG9zaXRpb24oKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJl
dHVybiBtX2NvbnRleHQuZ2V0KCk7Cit9CisjZW5kaWYKKwogdm9pZCBIVE1MQ2FudmFzRWxlbWVu
dDo6ZGlkRHJhdyhjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgY2xlYXJDb3BpZWRJbWFn
ZSgpOwpAQCAtMzU1LDYgKzM4OSwxMiBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpyZXNldCgp
CiAKICAgICBzZXRTdXJmYWNlU2l6ZShuZXdTaXplKTsKIAorI2lmIEVOQUJMRShXRUJHUFUpCisg
ICAgLy8gRklYTUU6IFdlYkdQVSBuZWVkcyBzb21ldGhpbmcgaGVyZSB0b28uCisgICAgaWYgKGlz
R1BVKCkgJiYgb2xkU2l6ZSAhPSBzaXplKCkpCisgICAgICAgIHN0YXRpY19jYXN0PFdlYkdQVVJl
bmRlcmluZ0NvbnRleHQqPihtX2NvbnRleHQuZ2V0KCkpLT5yZXNoYXBlKHdpZHRoKCksIGhlaWdo
dCgpKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIGlmIChpczNEKCkgJiYgb2xk
U2l6ZSAhPSBzaXplKCkpCiAgICAgICAgIHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UqPihtX2NvbnRleHQuZ2V0KCkpLT5yZXNoYXBlKHdpZHRoKCksIGhlaWdodCgpKTsKQEAg
LTQyMywxMiArNDYzLDI0IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcikKICAgICAgICAgfQogICAgIH0K
IAotI2lmIEVOQUJMRShXRUJHTCkgICAgCisjaWYgRU5BQkxFKFdFQkdQVSkKKyAgICBpZiAoaXNH
UFUoKSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8V2ViR1BVUmVuZGVyaW5nQ29udGV4dCo+KG1fY29u
dGV4dC5nZXQoKSktPm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKyNlbmRpZgorCisjaWYgRU5BQkxF
KFdFQkdMKQogICAgIGlmIChpczNEKCkpCiAgICAgICAgIHN0YXRpY19jYXN0PFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UqPihtX2NvbnRleHQuZ2V0KCkpLT5tYXJrTGF5ZXJDb21wb3NpdGVkKCk7
CiAjZW5kaWYKIH0KIAorI2lmIEVOQUJMRShXRUJHUFUpCitib29sIEhUTUxDYW52YXNFbGVtZW50
Ojppc0dQVSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGV4dCAmJiBtX2NvbnRleHQtPmlz
R1BVKCk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShXRUJHTCkKIGJvb2wgSFRNTENhbnZhc0Vs
ZW1lbnQ6OmlzM0QoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5oCmluZGV4IGNlMDZmZmIxYjU3Li4yMmNkZWY5M2ZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENhbnZhc0VsZW1lbnQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDYsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2LCAyMDA5LCAyMDEwLCAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFs
cEBhdG9rZXIuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDEwIFRvcmNoIE1vYmlsZSAoQmVpamlu
ZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0xMDAsNiArMTAwLDEwIEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpczNkVHlwZShjb25zdCBTdHJpbmcmKTsKICAgICBD
YW52YXNSZW5kZXJpbmdDb250ZXh0KiBnZXRDb250ZXh0V2ViR0woY29uc3QgU3RyaW5nJiwgV2Vi
R0xDb250ZXh0QXR0cmlidXRlcyYmID0geyB9KTsKICNlbmRpZgorI2lmIEVOQUJMRShXRUJHUFUp
CisgICAgc3RhdGljIGJvb2wgaXNXZWJHUFVUeXBlKGNvbnN0IFN0cmluZyYpOworICAgIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQqIGdldENvbnRleHRXZWJHUFUoY29uc3QgU3RyaW5nJik7CisjZW5k
aWYKIAogICAgIHN0YXRpYyBTdHJpbmcgdG9FbmNvZGluZ01pbWVUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFN0cmluZz4gdG9EYXRh
VVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5
KTsKQEAgLTE3Niw2ICsxODAsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShXRUJHTCkKICAgICBi
b29sIGlzM0QoKSBjb25zdDsKICNlbmRpZgorI2lmIEVOQUJMRShXRUJHUFUpCisgICAgYm9vbCBp
c0dQVSgpIGNvbnN0OworI2VuZGlmCiAKICAgICBIYXNoU2V0PENhbnZhc09ic2VydmVyKj4gbV9v
YnNlcnZlcnM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENhbnZhc1JlbmRlcmluZ0NvbnRleHQ+IG1f
Y29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuaAppbmRleCA3NTkwODBmNTMxZC4uY2I1MGM3Njg1MjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU0
LDYgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1dlYkdMMSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzV2ViR0wyKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICBib29sIGlzM2QoKSBjb25zdCB7IHJldHVybiBpc1dlYkdMMSgpIHx8
IGlzV2ViR0wyKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNHUFUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZh
cygpIHt9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVCdWZm
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQnVmZmVyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNmVmYzNkOTRlNmIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVCdWZmZXIuY3BwCkBA
IC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BVQnVmZmVyLmgiCisKKyNp
ZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiR1BVQnVmZmVyLmgiCisjaW5jbHVkZSAiV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8V2ViR1BVQnVmZmVyPiBXZWJHUFVCdWZmZXI6
OmNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBBcnJheUJ1ZmZlclZpZXcq
IGRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQnVmZmVyKGNvbnRleHQs
IGRhdGEpKTsKK30KKworV2ViR1BVQnVmZmVyOjpXZWJHUFVCdWZmZXIoV2ViR1BVUmVuZGVyaW5n
Q29udGV4dCogY29udGV4dCwgQXJyYXlCdWZmZXJWaWV3KiBkYXRhKQorICAgIDogV2ViR1BVT2Jq
ZWN0KGNvbnRleHQpCit7CisgICAgbV9idWZmZXIgPSBjb250ZXh0LT5kZXZpY2UoKS0+Y3JlYXRl
QnVmZmVyRnJvbURhdGEoZGF0YSk7Cit9CisKK1dlYkdQVUJ1ZmZlcjo6fldlYkdQVUJ1ZmZlcigp
Cit7Cit9CisKK3Vuc2lnbmVkIGxvbmcgV2ViR1BVQnVmZmVyOjpsZW5ndGgoKSBjb25zdAorewor
ICAgIGlmICghbV9idWZmZXIpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIG1fYnVm
ZmVyLT5sZW5ndGgoKTsKK30KKworUmVmUHRyPEFycmF5QnVmZmVyPiBXZWJHUFVCdWZmZXI6OmNv
bnRlbnRzKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIHJldHVybiBtX2J1ZmZlci0+Y29udGVudHMoKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
QnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU3MGViNDA3
ZDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
QnVmZmVyLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2lu
Y2x1ZGUgIldlYkdQVU9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQ
VUJ1ZmZlcjsKKworY2xhc3MgV2ViR1BVQnVmZmVyIDogcHVibGljIFdlYkdQVU9iamVjdCB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+V2ViR1BVQnVmZmVyKCk7CisgICAgc3RhdGljIFJlZjxXZWJH
UFVCdWZmZXI+IGNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgQXJyYXlCdWZmZXJWaWV3
Kik7CisKKyAgICB1bnNpZ25lZCBsb25nIGxlbmd0aCgpIGNvbnN0OworICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gY29udGVudHMoKSBjb25zdDsKKworICAgIE1ldGFsQnVmZmVyKiBidWZmZXIoKSB7
IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFdlYkdQVUJ1ZmZlcihX
ZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgQXJyYXlCdWZmZXJWaWV3Kik7CisgICAgUmVmUHRyPE1l
dGFsQnVmZmVyPiBtX2J1ZmZlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVCdWZmZXIu
aWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQnVmZmVyLmlkbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uN2JjODljZDdjYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVCdWZmZXIuaWRsCkBAIC0w
LDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BV
CitdIGludGVyZmFjZSBXZWJHUFVCdWZmZXIgeworCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgbGVuZ3RoOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBcnJheUJ1ZmZlclZp
ZXcgY29udGVudHM7CisKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdQVUNvbW1hbmRCdWZmZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi5mMjg0ZmQwMzBhOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViR1BVQ29tbWFuZEJ1ZmZlci5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkK
KworI2luY2x1ZGUgIkdQVUNvbW1hbmRCdWZmZXIuaCIKKyNpbmNsdWRlICJHUFVDb21tYW5kUXVl
dWUuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiV2ViR1BVQ29tbWFuZFF1ZXVl
LmgiCisjaW5jbHVkZSAiV2ViR1BVRHJhd2FibGUuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJD
b21tYW5kRW5jb2Rlci5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgi
CisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1JlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVh
dGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgV2ViR1BVQ29tbWFuZFF1ZXVlKiBx
dWV1ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVDb21tYW5kQnVmZmVyKGNv
bnRleHQsIHF1ZXVlKSk7Cit9CisKK1dlYkdQVUNvbW1hbmRCdWZmZXI6OldlYkdQVUNvbW1hbmRC
dWZmZXIoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgV2ViR1BVQ29tbWFuZFF1ZXVl
KiBxdWV1ZSkKKyAgICA6IFdlYkdQVU9iamVjdChjb250ZXh0KQoreworICAgIExPRyhXZWJHUFUs
ICItLSBXZWJHUFVDb21tYW5kQnVmZmVyOjpXZWJHUFVDb21tYW5kQnVmZmVyKCkgTkVXIik7Cisg
ICAgbV9jb21tYW5kQnVmZmVyID0gcXVldWUtPmNvbW1hbmRRdWV1ZSgpLT5jcmVhdGVDb21tYW5k
QnVmZmVyKCk7Cit9CisKK1dlYkdQVUNvbW1hbmRCdWZmZXI6On5XZWJHUFVDb21tYW5kQnVmZmVy
KCkKK3sKKyAgICBMT0coV2ViR1BVLCAiLS0gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6fldlYkdQVUNv
bW1hbmRCdWZmZXIoKSBERUxFVEUiKTsKK30KKwordm9pZCBXZWJHUFVDb21tYW5kQnVmZmVyOjpj
b21taXQoKQoreworICAgIExPRyhXZWJHUFUsICItLSBXZWJHUFVDb21tYW5kQnVmZmVyOjpjb21t
aXQoKSIpOworICAgIGlmICghbV9jb21tYW5kQnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICByZXR1cm4gbV9jb21tYW5kQnVmZmVyLT5jb21taXQoKTsKK30KKwordm9pZCBXZWJHUFVDb21t
YW5kQnVmZmVyOjpwcmVzZW50RHJhd2FibGUoV2ViR1BVRHJhd2FibGUmIGRyYXdhYmxlKQorewor
ICAgIExPRyhXZWJHUFUsICItLSBXZWJHUFVDb21tYW5kQnVmZmVyOjpwcmVzZW50RHJhd2FibGUo
KSIpOworICAgIGlmICghbV9jb21tYW5kQnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBy
ZXR1cm4gbV9jb21tYW5kQnVmZmVyLT5wcmVzZW50RHJhd2FibGUoZHJhd2FibGUuZHJhd2FibGUo
KSk7Cit9CisKK1JlZlB0cjxXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlcj4gV2ViR1BVQ29tbWFu
ZEJ1ZmZlcjo6Y3JlYXRlUmVuZGVyQ29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcihXZWJHUFVS
ZW5kZXJQYXNzRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICBSZWZQdHI8V2ViR1BVUmVu
ZGVyQ29tbWFuZEVuY29kZXI+IGNvbW1hbmRFbmNvZGVyID0gV2ViR1BVUmVuZGVyQ29tbWFuZEVu
Y29kZXI6OmNyZWF0ZSh0aGlzLT5jb250ZXh0KCksIHRoaXMsICZkZXNjcmlwdG9yKTsKKyAgICBy
ZXR1cm4gY29tbWFuZEVuY29kZXI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5k
QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kQnVmZmVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjllMTJkNWRiZjViCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQ29tbWFu
ZEJ1ZmZlci5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlICJXZWJHUFVPYmplY3QuaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVDb21tYW5kQnVmZmVyOworY2xhc3MgV2ViR1BV
Q29tbWFuZFF1ZXVlOworY2xhc3MgV2ViR1BVRHJhd2FibGU7CitjbGFzcyBXZWJHUFVGdW5jdGlv
bjsKK2NsYXNzIFdlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyOworY2xhc3MgV2ViR1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3I7CisKK2NsYXNzIFdlYkdQVUNvbW1hbmRCdWZmZXIgOiBwdWJsaWMgV2Vi
R1BVT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJHUFVDb21tYW5kQnVmZmVyKCk7
CisgICAgc3RhdGljIFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiBjcmVhdGUoV2ViR1BVUmVuZGVy
aW5nQ29udGV4dCosIFdlYkdQVUNvbW1hbmRRdWV1ZSopOworCisgICAgdm9pZCBjb21taXQoKTsK
KyAgICB2b2lkIHByZXNlbnREcmF3YWJsZShXZWJHUFVEcmF3YWJsZSYpOworCisgICAgUmVmUHRy
PFdlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyPiBjcmVhdGVSZW5kZXJDb21tYW5kRW5jb2Rlcldp
dGhEZXNjcmlwdG9yKFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yJik7CisKKyAgICBNZXRhbENv
bW1hbmRCdWZmZXIqIGNvbW1hbmRCdWZmZXIoKSB7IHJldHVybiBtX2NvbW1hbmRCdWZmZXIuZ2V0
KCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWJHUFVDb21tYW5kQnVmZmVyKFdlYkdQVVJlbmRlcmlu
Z0NvbnRleHQqLCBXZWJHUFVDb21tYW5kUXVldWUqKTsKKyAgICBSZWZQdHI8TWV0YWxDb21tYW5k
QnVmZmVyPiBtX2NvbW1hbmRCdWZmZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQ29t
bWFuZEJ1ZmZlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5k
QnVmZmVyLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOWRjMTc2
NDFiZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVDb21tYW5kQnVmZmVyLmlkbApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAg
ICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBpbnRlcmZhY2UgV2ViR1BVQ29tbWFuZEJ1ZmZl
ciB7CisKKyAgICBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2RlciBjcmVhdGVSZW5kZXJDb21tYW5k
RW5jb2RlcldpdGhEZXNjcmlwdG9yKFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yIGRlc2NyaXB0
b3IpOworICAgIHZvaWQgY29tbWl0KCk7CisgICAgdm9pZCBwcmVzZW50RHJhd2FibGUoV2ViR1BV
RHJhd2FibGUgZHJhd2FibGUpOworCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVQ29tbWFuZFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVUNvbW1hbmRRdWV1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLmNkNDQyMWE0Mjg1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVQ29tbWFuZFF1ZXVlLmNwcApAQCAtMCwwICsxLDc2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRRdWV1ZS5oIgorCisjaWYgRU5BQkxFKFdFQkdQ
VSkKKworI2luY2x1ZGUgIkdQVUNvbW1hbmRRdWV1ZS5oIgorI2luY2x1ZGUgIldlYkdQVUNvbW1h
bmRCdWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworUmVmPFdlYkdQVUNvbW1hbmRRdWV1ZT4gV2ViR1BVQ29tbWFuZFF1
ZXVlOjpjcmVhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVDb21tYW5kUXVldWUoY29udGV4dCkpOworfQorCitXZWJH
UFVDb21tYW5kUXVldWU6OldlYkdQVUNvbW1hbmRRdWV1ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0
KiBjb250ZXh0KQorICAgIDogV2ViR1BVT2JqZWN0KGNvbnRleHQpCit7CisgICAgbV9jb21tYW5k
UXVldWUgPSBjb250ZXh0LT5kZXZpY2UoKS0+Y3JlYXRlQ29tbWFuZFF1ZXVlKCk7Cit9CisKK1dl
YkdQVUNvbW1hbmRRdWV1ZTo6fldlYkdQVUNvbW1hbmRRdWV1ZSgpCit7Cit9CisKK1N0cmluZyBX
ZWJHUFVDb21tYW5kUXVldWU6OmxhYmVsKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fY29tbWFuZFF1
ZXVlKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIHJldHVybiBtX2NvbW1h
bmRRdWV1ZS0+bGFiZWwoKTsKK30KKwordm9pZCBXZWJHUFVDb21tYW5kUXVldWU6OnNldExhYmVs
KGNvbnN0IFN0cmluZyYgbGFiZWwpCit7CisgICAgaWYgKCFtX2NvbW1hbmRRdWV1ZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9jb21tYW5kUXVldWUtPnNldExhYmVsKGxhYmVsKTsKK30KKwor
UmVmUHRyPFdlYkdQVUNvbW1hbmRCdWZmZXI+IFdlYkdQVUNvbW1hbmRRdWV1ZTo6Y3JlYXRlQ29t
bWFuZEJ1ZmZlcigpCit7CisgICAgUmVmUHRyPFdlYkdQVUNvbW1hbmRCdWZmZXI+IGJ1ZmZlciA9
IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZSh0aGlzLT5jb250ZXh0KCksIHRoaXMpOworICAg
IHJldHVybiBidWZmZXI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kUXVldWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRRdWV1ZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jYWM2NmFkMDFhZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRRdWV1ZS5o
CkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJX
ZWJHUFVPYmplY3QuaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBHUFVDb21tYW5kUXVldWU7CitjbGFzcyBXZWJHUFVDb21tYW5kQnVm
ZmVyOworCitjbGFzcyBXZWJHUFVDb21tYW5kUXVldWUgOiBwdWJsaWMgV2ViR1BVT2JqZWN0IHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJHUFVDb21tYW5kUXVldWUoKTsKKyAgICBzdGF0aWMg
UmVmPFdlYkdQVUNvbW1hbmRRdWV1ZT4gY3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqKTsK
KworICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgU3Ry
aW5nJik7CisKKyAgICBSZWZQdHI8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gY3JlYXRlQ29tbWFuZEJ1
ZmZlcigpOworCisgICAgTWV0YWxDb21tYW5kUXVldWUqIGNvbW1hbmRRdWV1ZSgpIHsgcmV0dXJu
IG1fY29tbWFuZFF1ZXVlLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgV2ViR1BVQ29tbWFuZFF1
ZXVlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqKTsKKworICAgIFJlZlB0cjxNZXRhbENvbW1hbmRR
dWV1ZT4gbV9jb21tYW5kUXVldWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQ29tbWFu
ZFF1ZXVlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRRdWV1
ZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmMxNjg5Yjc2NjU4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQ29t
bWFuZFF1ZXVlLmlkbApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFi
bGVkQXRSdW50aW1lPVdlYkdQVQorXSBpbnRlcmZhY2UgV2ViR1BVQ29tbWFuZFF1ZXVlIHsKKwor
ICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7CisKKyAgICBXZWJHUFVDb21tYW5kQnVmZmVy
PyBjcmVhdGVDb21tYW5kQnVmZmVyKCk7CisKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42ZjhjOWEwOWM4ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbERl
c2NyaXB0b3IuY3BwCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdQ
VURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNs
dWRlICJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVy
aW5nQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXZWJHUFVEZXB0aFN0
ZW5jaWxEZXNjcmlwdG9yPiBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpjcmVhdGUoKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3Io
KSk7Cit9CisKK1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3I6OldlYkdQVURlcHRoU3RlbmNp
bERlc2NyaXB0b3IoKQorICAgIDogV2ViR1BVT2JqZWN0KCkKK3sKKyAgICBtX2RlcHRoU3RlbmNp
bERlc2NyaXB0b3IgPSBNZXRhbERlcHRoU3RlbmNpbERlc2NyaXB0b3I6OmNyZWF0ZSgpOworfQor
CitXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjp+V2ViR1BVRGVwdGhTdGVuY2lsRGVzY3Jp
cHRvcigpCit7Cit9CisKK1N0cmluZyBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpsYWJl
bCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2RlcHRoU3RlbmNpbERlc2NyaXB0b3IpCisgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgcmV0dXJuIG1fZGVwdGhTdGVuY2lsRGVzY3Jp
cHRvci0+bGFiZWwoKTsKK30KKwordm9pZCBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpz
ZXRMYWJlbChjb25zdCBTdHJpbmcmIGxhYmVsKQoreworICAgIGlmICghbV9kZXB0aFN0ZW5jaWxE
ZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RlcHRoU3RlbmNpbERlc2NyaXB0
b3ItPnNldExhYmVsKGxhYmVsKTsKK30KKworYm9vbCBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlw
dG9yOjpkZXB0aFdyaXRlRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2RlcHRoU3RlbmNp
bERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX2RlcHRo
U3RlbmNpbERlc2NyaXB0b3ItPmRlcHRoV3JpdGVFbmFibGVkKCk7Cit9CisKK3ZvaWQgV2ViR1BV
RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6c2V0RGVwdGhXcml0ZUVuYWJsZWQoYm9vbCBuZXdEZXB0
aFdyaXRlRW5hYmxlZCkKK3sKKyAgICBpZiAoIW1fZGVwdGhTdGVuY2lsRGVzY3JpcHRvcikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9kZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLT5zZXREZXB0aFdy
aXRlRW5hYmxlZChuZXdEZXB0aFdyaXRlRW5hYmxlZCk7Cit9CisKK2F1dG8gV2ViR1BVRGVwdGhT
dGVuY2lsRGVzY3JpcHRvcjo6ZGVwdGhDb21wYXJlRnVuY3Rpb24oKSBjb25zdCAtPiBXZWJHUFVD
b21wYXJlRnVuY3Rpb24KK3sKKyAgICByZXR1cm4gbV9kZXB0aENvbXBhcmVGdW5jdGlvbjsKK30K
Kwordm9pZCBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpzZXREZXB0aENvbXBhcmVGdW5j
dGlvbihDb21wYXJlRnVuY3Rpb24gbmV3RGVwdGhDb21wYXJlRnVuY3Rpb24pCit7CisgICAgbV9k
ZXB0aENvbXBhcmVGdW5jdGlvbiA9IG5ld0RlcHRoQ29tcGFyZUZ1bmN0aW9uOworICAgIG1fZGVw
dGhTdGVuY2lsRGVzY3JpcHRvci0+c2V0RGVwdGhDb21wYXJlRnVuY3Rpb24odG9NZXRhbENvbXBh
cmVGdW5jdGlvbihtX2RlcHRoQ29tcGFyZUZ1bmN0aW9uKSk7CisKKy8vICAgIGlmIChPcHRpb25h
bDxXZWJHUFVDb21wYXJlRnVuY3Rpb24+IGNvbXBhcmVGdW5jdGlvbiA9IHRvV2ViR1BVQ29tcGFy
ZUZ1bmN0aW9uKG5ld0RlcHRoQ29tcGFyZUZ1bmN0aW9uKSkgeworLy8gICAgICAgIG1fZGVwdGhD
b21wYXJlRnVuY3Rpb24gPSBjb21wYXJlRnVuY3Rpb24udmFsdWUoKTsKKy8vICAgICAgICBtX2Rl
cHRoU3RlbmNpbERlc2NyaXB0b3ItPnNldERlcHRoQ29tcGFyZUZ1bmN0aW9uKHRvTWV0YWxDb21w
YXJlRnVuY3Rpb24obV9kZXB0aENvbXBhcmVGdW5jdGlvbikpOworLy8gICAgfQorfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iYjRkMmIzM2ZlMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0
b3IuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVk
ZSAiV2ViR1BVRW51bXMuaCIKKyNpbmNsdWRlICJXZWJHUFVPYmplY3QuaCIKKworI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVEZXB0aFN0
ZW5jaWxEZXNjcmlwdG9yOworCitjbGFzcyBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yIDog
cHVibGljIFdlYkdQVU9iamVjdCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViR1BVRGVwdGhT
dGVuY2lsRGVzY3JpcHRvcigpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVRGVwdGhTdGVuY2lsRGVz
Y3JpcHRvcj4gY3JlYXRlKCk7CisKKyAgICBTdHJpbmcgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lk
IHNldExhYmVsKGNvbnN0IFN0cmluZyYpOworCisgICAgYm9vbCBkZXB0aFdyaXRlRW5hYmxlZCgp
IGNvbnN0OworICAgIHZvaWQgc2V0RGVwdGhXcml0ZUVuYWJsZWQoYm9vbCk7CisKKyAgICB1c2lu
ZyBDb21wYXJlRnVuY3Rpb24gPSBXZWJHUFVDb21wYXJlRnVuY3Rpb247CisgICAgQ29tcGFyZUZ1
bmN0aW9uIGRlcHRoQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBzZXREZXB0aENv
bXBhcmVGdW5jdGlvbihDb21wYXJlRnVuY3Rpb24pOworCisgICAgTWV0YWxEZXB0aFN0ZW5jaWxE
ZXNjcmlwdG9yKiBkZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCkgeyByZXR1cm4gbV9kZXB0aFN0ZW5j
aWxEZXNjcmlwdG9yLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgV2ViR1BVRGVwdGhTdGVuY2ls
RGVzY3JpcHRvcigpOworCisgICAgV2ViR1BVQ29tcGFyZUZ1bmN0aW9uIG1fZGVwdGhDb21wYXJl
RnVuY3Rpb247CisgICAgUmVmUHRyPE1ldGFsRGVwdGhTdGVuY2lsRGVzY3JpcHRvcj4gbV9kZXB0
aFN0ZW5jaWxEZXNjcmlwdG9yOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3Rl
bmNpbERlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRGVw
dGhTdGVuY2lsRGVzY3JpcHRvci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLjkzYjVmYzk5ZmNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5pZGwKQEAgLTAsMCArMSw1MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBD
b25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZW51bSBX
ZWJHUFVDb21wYXJlRnVuY3Rpb24geworICAgICJuZXZlciIsCisgICAgImxlc3MiLAorICAgICJl
cXVhbCIsCisgICAgImxlc3NlcXVhbCIsCisgICAgImdyZWF0ZXIiLAorICAgICJub3RlcXVhbCIs
CisgICAgImdyZWF0ZXJlcXVhbCIsCisgICAgImFsd2F5cyIKK307CisKK1sKKyAgICBDb25zdHJ1
Y3RvciwKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJH
UFUKK10gaW50ZXJmYWNlIFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IgeworCisgICAgYXR0
cmlidXRlIERPTVN0cmluZyBsYWJlbDsKKworICAgIGF0dHJpYnV0ZSBXZWJHUFVDb21wYXJlRnVu
Y3Rpb24gZGVwdGhDb21wYXJlRnVuY3Rpb247CisgICAgYXR0cmlidXRlIGJvb2xlYW4gZGVwdGhX
cml0ZUVuYWJsZWQ7CisKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLmExYjY2NTNlN2Q3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwCkBAIC0wLDAgKzEsNzIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaCIKKworI2lm
IEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oIgorI2lu
Y2x1ZGUgIldlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJXZWJHUFVS
ZW5kZXJpbmdDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFdlYkdQVURl
cHRoU3RlbmNpbFN0YXRlPiBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZTo6Y3JlYXRlKFdlYkdQVVJl
bmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IqIGRl
c2NyaXB0b3IpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVRGVwdGhTdGVuY2ls
U3RhdGUoY29udGV4dCwgZGVzY3JpcHRvcikpOworfQorCitXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0
ZTo6V2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4
dCwgV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvciogZGVzY3JpcHRvcikKKyAgICA6IFdlYkdQ
VU9iamVjdChjb250ZXh0KQoreworICAgIGlmICghY29udGV4dCB8fCAhZGVzY3JpcHRvcikKKyAg
ICAgICAgcmV0dXJuOworICAgIG1fZGVwdGhTdGVuY2lsU3RhdGUgPSBNZXRhbERlcHRoU3RlbmNp
bFN0YXRlOjpjcmVhdGUoY29udGV4dC0+ZGV2aWNlKCkuZ2V0KCksIGRlc2NyaXB0b3ItPmRlcHRo
U3RlbmNpbERlc2NyaXB0b3IoKSk7Cit9CisKK1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlOjp+V2Vi
R1BVRGVwdGhTdGVuY2lsU3RhdGUoKQoreworfQorCitTdHJpbmcgV2ViR1BVRGVwdGhTdGVuY2ls
U3RhdGU6OmxhYmVsKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZGVwdGhTdGVuY2lsU3RhdGUpCisg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgcmV0dXJuIG1fZGVwdGhTdGVuY2ls
U3RhdGUtPmxhYmVsKCk7Cit9CisKK3ZvaWQgV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGU6OnNldExh
YmVsKGNvbnN0IFN0cmluZyYgbGFiZWwpCit7CisgICAgaWYgKCFtX2RlcHRoU3RlbmNpbFN0YXRl
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RlcHRoU3RlbmNpbFN0YXRlLT5zZXRMYWJlbChs
YWJlbCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uY2JjMzdhM2Y3MTYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxT
dGF0ZS5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNs
dWRlICJXZWJHUFVPYmplY3QuaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVEZXB0aFN0ZW5jaWxTdGF0ZTsKK2NsYXNzIFdlYkdQ
VURlcHRoU3RlbmNpbERlc2NyaXB0b3I7CisKK2NsYXNzIFdlYkdQVURlcHRoU3RlbmNpbFN0YXRl
IDogcHVibGljIFdlYkdQVU9iamVjdCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViR1BVRGVw
dGhTdGVuY2lsU3RhdGUoKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVURlcHRoU3RlbmNpbFN0YXRl
PiBjcmVhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIFdlYkdQVURlcHRoU3RlbmNpbERlc2Ny
aXB0b3IqKTsKKworICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgc2V0TGFiZWwo
Y29uc3QgU3RyaW5nJik7CisKKyAgICBNZXRhbERlcHRoU3RlbmNpbFN0YXRlKiBkZXB0aFN0ZW5j
aWxTdGF0ZSgpIHsgcmV0dXJuIG1fZGVwdGhTdGVuY2lsU3RhdGUuZ2V0KCk7IH0KKworcHJpdmF0
ZToKKyAgICBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0Kiwg
V2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvciopOworCisgICAgUmVmUHRyPE1ldGFsRGVwdGhT
dGVuY2lsU3RhdGU+IG1fZGVwdGhTdGVuY2lsU3RhdGU7Cit9OworICAgIAorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uNTYxNWJkZjhjMzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5pZGwKQEAgLTAsMCArMSwz
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAg
ICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gaW50
ZXJmYWNlIFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlIHsKKworICAgIGF0dHJpYnV0ZSBET01TdHJp
bmcgbGFiZWw7CisKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHUFVEcmF3YWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEcmF3
YWJsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRmNTY4NmFi
ZDA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
RHJhd2FibGUuY3BwCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BV
RHJhd2FibGUuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVEcmF3YWJs
ZS5oIgorI2luY2x1ZGUgIkdQVVRleHR1cmUuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdD
b250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVVGV4dHVyZS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1JlZjxXZWJHUFVEcmF3YWJsZT4gV2ViR1BVRHJhd2FibGU6OmNyZWF0ZShXZWJHUFVS
ZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YkdQVURyYXdhYmxlKGNvbnRleHQpKTsKK30KKworV2ViR1BVRHJhd2FibGU6OldlYkdQVURyYXdh
YmxlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCisgICAgOiBXZWJHUFVPYmplY3Qo
Y29udGV4dCkKK3sKKyAgICBtX2RyYXdhYmxlID0gY29udGV4dC0+ZGV2aWNlKCktPmdldEZyYW1l
YnVmZmVyKCk7CisgICAgaWYgKCFtX2RyYXdhYmxlKQorICAgICAgICByZXR1cm47CisKKyAgICBS
ZWZQdHI8TWV0YWxUZXh0dXJlPiBkcmF3YWJsZVRleHR1cmUgPSBNZXRhbFRleHR1cmU6OmNyZWF0
ZUZyb21FeGlzdGluZ1RleHR1cmUobV9kcmF3YWJsZS0+dGV4dHVyZSgpKTsKKyAgICBtX3RleHR1
cmUgPSBXZWJHUFVUZXh0dXJlOjpjcmVhdGVGcm9tRHJhd2FibGVUZXh0dXJlKGNvbnRleHQsIGRy
YXdhYmxlVGV4dHVyZSk7Cit9CisKK1dlYkdQVURyYXdhYmxlOjp+V2ViR1BVRHJhd2FibGUoKQor
eworfQorCitXZWJHUFVUZXh0dXJlKiBXZWJHUFVEcmF3YWJsZTo6dGV4dHVyZSgpCit7CisgICAg
aWYgKCFtX3RleHR1cmUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIG1f
dGV4dHVyZS5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURyYXdhYmxlLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEcmF3YWJsZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hZTZmYjAxNGEwNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURyYXdhYmxlLmgKQEAgLTAsMCArMSw1
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldlYkdQVU9iamVjdC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVURyYXdhYmxlOworY2xhc3MgV2Vi
R1BVVGV4dHVyZTsKKworY2xhc3MgV2ViR1BVRHJhd2FibGUgOiBwdWJsaWMgV2ViR1BVT2JqZWN0
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJHUFVEcmF3YWJsZSgpOworICAgIHN0YXRpYyBS
ZWY8V2ViR1BVRHJhd2FibGU+IGNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0Kik7CisKKyAg
ICBXZWJHUFVUZXh0dXJlKiB0ZXh0dXJlKCk7CisKKyAgICBNZXRhbERyYXdhYmxlKiBkcmF3YWJs
ZSgpIHsgcmV0dXJuIG1fZHJhd2FibGUuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWJHUFVE
cmF3YWJsZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0Kik7CisgICAgUmVmUHRyPE1ldGFsRHJhd2Fi
bGU+IG1fZHJhd2FibGU7CisgICAgUmVmUHRyPFdlYkdQVVRleHR1cmU+IG1fdGV4dHVyZTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEcmF3YWJsZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHUFVEcmF3YWJsZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLmRjOTAxYzQyNGEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVRHJhd2FibGUuaWRsCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9u
YWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGludGVyZmFjZSBXZWJH
UFVEcmF3YWJsZSB7CisKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgV2ViR1BVVGV4dHVyZSB0ZXh0
dXJlOyAvLyBGSVhNRTogT25seSB0aGUgZnJhbWVidWZmZXIgc2hvdWxkIGhhdmUgdGhpcy4KKwor
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUVudW1zLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUVudW1zLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTFiYTY1Mzc2OGQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVFbnVtcy5jcHAKQEAgLTAsMCAr
MSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BVRW51bXMuaCIKKworI2lmIEVOQUJM
RShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVFbnVtcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0ZDo6b3B0aW9uYWw8V2ViR1BVQ29tcGFyZUZ1bmN0aW9uPiB0b1dlYkdQVUNvbXBhcmVG
dW5jdGlvbihjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKG5hbWUsICJuZXZlciIpKQorICAgICAgICByZXR1cm4gV2ViR1BVQ29tcGFy
ZUZ1bmN0aW9uOjpOZXZlcjsKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
bmFtZSwgImxlc3MiKSkKKyAgICAgICAgcmV0dXJuIFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6TGVz
czsKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgImVxdWFsIikp
CisgICAgICAgIHJldHVybiBXZWJHUFVDb21wYXJlRnVuY3Rpb246OkVxdWFsOworICAgIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAibGVzc2VxdWFsIikpCisgICAgICAg
IHJldHVybiBXZWJHUFVDb21wYXJlRnVuY3Rpb246Okxlc3NlcXVhbDsKKyAgICBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgImdyZWF0ZXIiKSkKKyAgICAgICAgcmV0dXJu
IFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6R3JlYXRlcjsKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UobmFtZSwgIm5vdGVxdWFsIikpCisgICAgICAgIHJldHVybiBXZWJHUFVD
b21wYXJlRnVuY3Rpb246Ok5vdGVxdWFsOworICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShuYW1lLCAiZ3JlYXRlcmVxdWFsIikpCisgICAgICAgIHJldHVybiBXZWJHUFVDb21w
YXJlRnVuY3Rpb246OkdyZWF0ZXJlcXVhbDsKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UobmFtZSwgImFsd2F5cyIpKQorICAgICAgICByZXR1cm4gV2ViR1BVQ29tcGFyZUZ1
bmN0aW9uOjpBbHdheXM7CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworfQorCitTdHJpbmcgd2ViM0RDb21wYXJlRnVuY3Rpb25OYW1lKGNvbnN0
IFdlYkdQVUNvbXBhcmVGdW5jdGlvbiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUgPT0gV2ViR1BV
Q29tcGFyZUZ1bmN0aW9uOjpOZXZlcikKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgibmV2
ZXIiKTsKKyAgICBpZiAodmFsdWUgPT0gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpMZXNzKQorICAg
ICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJsZXNzIik7CisgICAgaWYgKHZhbHVlID09IFdlYkdQ
VUNvbXBhcmVGdW5jdGlvbjo6RXF1YWwpCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImVx
dWFsIik7CisgICAgaWYgKHZhbHVlID09IFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6TGVzc2VxdWFs
KQorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJsZXNzZXF1YWwiKTsKKyAgICBpZiAodmFs
dWUgPT0gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpHcmVhdGVyKQorICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJncmVhdGVyIik7CisgICAgaWYgKHZhbHVlID09IFdlYkdQVUNvbXBhcmVGdW5j
dGlvbjo6Tm90ZXF1YWwpCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm5vdGVxdWFsIik7
CisgICAgaWYgKHZhbHVlID09IFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6R3JlYXRlcmVxdWFsKQor
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJncmVhdGVyZXF1YWwiKTsKKyAgICBpZiAodmFs
dWUgPT0gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpBbHdheXMpCisgICAgICAgIHJldHVybiBBU0NJ
SUxpdGVyYWwoImFsd2F5cyIpOworICAgIAorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBlbXB0eVN0cmluZygpOworfQorCitNZXRhbENvbXBhcmVGdW5jdGlvbiB0b01ldGFs
Q29tcGFyZUZ1bmN0aW9uKGNvbnN0IFdlYkdQVUNvbXBhcmVGdW5jdGlvbiB2YWx1ZSkKK3sKKyAg
ICBpZiAodmFsdWUgPT0gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpOZXZlcikKKyAgICAgICAgcmV0
dXJuIE1ldGFsQ29tcGFyZUZ1bmN0aW9uOjpOZXZlcjsKKyAgICBpZiAodmFsdWUgPT0gV2ViR1BV
Q29tcGFyZUZ1bmN0aW9uOjpMZXNzKQorICAgICAgICByZXR1cm4gTWV0YWxDb21wYXJlRnVuY3Rp
b246Okxlc3M7CisgICAgaWYgKHZhbHVlID09IFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6RXF1YWwp
CisgICAgICAgIHJldHVybiBNZXRhbENvbXBhcmVGdW5jdGlvbjo6RXF1YWw7CisgICAgaWYgKHZh
bHVlID09IFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6TGVzc2VxdWFsKQorICAgICAgICByZXR1cm4g
TWV0YWxDb21wYXJlRnVuY3Rpb246Okxlc3NFcXVhbDsKKyAgICBpZiAodmFsdWUgPT0gV2ViR1BV
Q29tcGFyZUZ1bmN0aW9uOjpHcmVhdGVyKQorICAgICAgICByZXR1cm4gTWV0YWxDb21wYXJlRnVu
Y3Rpb246OkdyZWF0ZXI7CisgICAgaWYgKHZhbHVlID09IFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6
Tm90ZXF1YWwpCisgICAgICAgIHJldHVybiBNZXRhbENvbXBhcmVGdW5jdGlvbjo6Tm90RXF1YWw7
CisgICAgaWYgKHZhbHVlID09IFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6R3JlYXRlcmVxdWFsKQor
ICAgICAgICByZXR1cm4gTWV0YWxDb21wYXJlRnVuY3Rpb246OkdyZWF0ZXJFcXVhbDsKKyAgICBp
ZiAodmFsdWUgPT0gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpBbHdheXMpCisgICAgICAgIHJldHVy
biBNZXRhbENvbXBhcmVGdW5jdGlvbjo6QWx3YXlzOworICAgIAorICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBNZXRhbENvbXBhcmVGdW5jdGlvbjo6TmV2ZXI7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHUFVFbnVtcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVRW51bXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uY2M0
ZTcyMGRjOWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHUFVFbnVtcy5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisK
KyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIFdlYkdQVUNvbXBhcmVGdW5j
dGlvbiB7CisgICAgTmV2ZXIsCisgICAgTGVzcywKKyAgICBFcXVhbCwKKyAgICBMZXNzZXF1YWws
CisgICAgR3JlYXRlciwKKyAgICBOb3RlcXVhbCwKKyAgICBHcmVhdGVyZXF1YWwsCisgICAgQWx3
YXlzCit9OworCitzdGQ6Om9wdGlvbmFsPFdlYkdQVUNvbXBhcmVGdW5jdGlvbj4gdG9XZWJHUFVD
b21wYXJlRnVuY3Rpb24oY29uc3QgU3RyaW5nJik7CitTdHJpbmcgd2ViM0RDb21wYXJlRnVuY3Rp
b25OYW1lKGNvbnN0IFdlYkdQVUNvbXBhcmVGdW5jdGlvbik7CisKK2VudW0gY2xhc3MgR1BVQ29t
cGFyZUZ1bmN0aW9uOworTWV0YWxDb21wYXJlRnVuY3Rpb24gdG9NZXRhbENvbXBhcmVGdW5jdGlv
bihjb25zdCBXZWJHUFVDb21wYXJlRnVuY3Rpb24pOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
RW51bXMuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRW51bXMuaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43MjFmYTE0ZDJlNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUVudW1zLmlkbApA
QCAtMCwwICsxLDI3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1X
ZWJHUFUKK10gZW51bSBXZWJHUFVQaXhlbEZvcm1hdCB7CisgICAgIkJHUkE4VW5vcm0iCit9Owor
CitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BV
CitdIGVudW0gV2ViR1BVTG9hZEFjdGlvbiB7CisgICAgImRvbnRjYXJlIiwKKyAgICAibG9hZCIs
CisgICAgImNsZWFyIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFi
bGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQVVN0b3JlQWN0aW9uIHsKKyAgICAiZG9u
dGNhcmUiLAorICAgICJzdG9yZSIsCisgICAgIm11bHRpc2FtcGxlcmVzb2x2ZSIKK307CisKK1sK
KyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10g
ZW51bSBXZWJHUFVQcmltaXRpdmVUeXBlIHsKKyAgICAicG9pbnQiLAorICAgICJsaW5lIiwKKyAg
ICAibGluZXN0cmlwIiwKKyAgICAidHJpYW5nbGUiLAorICAgICJ0cmlhbmdsZXN0cmlwIgorfTsK
KworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQ
VQorXSBlbnVtIFdlYkdQVUZ1bmN0aW9uVHlwZSB7CisgICAgImZyYWdtZW50IiwKKyAgICAidmVy
dGV4IgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50
aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQVVN0ZW5jaWxPcGVyYXRpb24geworICAgICJrZWVwIiwK
KyAgICAiemVybyIsCisgICAgInJlcGxhY2UiLAorICAgICJpbmNyZW1lbnRjbGFtcCIsCisgICAg
ImRlY3JlbWVudGNsYW1wIiwKKyAgICAiaW52ZXJ0IiwKKyAgICAiaW5jcmVtZW50d3JhcCIsCisg
ICAgImRlY3JlbWVudHdyYXAiCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAg
IEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVudW0gV2ViR1BVU3RhdHVzIHsKKyAgICAibm90
ZW5xdWV1ZWQiLAorICAgICJlbnF1ZXVlZCIsCisgICAgImNvbW1pdHRlZCIsCisgICAgInNjaGVk
dWxlZCIsCisgICAgImNvbXBsZXRlZCIsCisgICAgImVycm9yIgorfTsKKworWworICAgIENvbmRp
dGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQ
VVNhbXBsZXJBZGRyZXNzTW9kZSB7CisgICAgImNsYW1wdG9lZGdlIiwKKyAgICAibWlycm9yY2xh
bXB0b2VkZ2UiLAorICAgICJyZXBlYXQiLAorICAgICJtaXJyb3JyZXBlYXQiLAorICAgICJjbGFt
cHRvemVybyIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0
UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVTYW1wbGVyTWluTWFnRmlsdGVyIHsKKyAgICAi
bmVhcmVzdCIsCisgICAgImxpbmVhciIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUs
CisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVTYW1wbGVyTWlwRmls
dGVyIHsKKyAgICAibm90bWlwbWFwcGVkIiwKKyAgICAibmVhcmVzdCIsCisgICAgImxpbmVhciIK
K307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1X
ZWJHUFUKK10gZW51bSBXZWJHUFVDdWxsTW9kZSB7CisgICAgIm5vbmUiLAorICAgICJmcm9udCIs
CisgICAgImJhY2siCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJs
ZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVudW0gV2ViR1BVSW5kZXhUeXBlIHsKKyAgICAidWludDE2
IiwKKyAgICAidWludDMyIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBF
bmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQVVZpc2liaWxpdHlSZXN1bHRNb2Rl
IHsKKyAgICAiZGlzYWJsZWQiLAorICAgICJib29sZWFuIiwKKyAgICAiY291bnRpbmciCit9Owor
CitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BV
CitdIGVudW0gV2ViR1BVV2luZGluZyB7CisgICAgImNsb2Nrd2lzZSIsCisgICAgImNvdW50ZXJj
bG9ja3dpc2UiCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRB
dFJ1bnRpbWU9V2ViR1BVCitdIGVudW0gV2ViR1BVRGVwdGhDbGlwTW9kZSB7CisgICAgImNsaXAi
LAorICAgICJjbGFtcCIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5h
YmxlZEF0UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVUcmlhbmdsZUZpbGxNb2RlIHsKKyAg
ICAiZmlsbCIsCisgICAgImxpbmVzIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwK
KyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQVUNQVUNhY2hlTW9kZSB7
CisgICAgImRlZmF1bHRjYWNoZSIsCisgICAgIndyaXRlY29tYmluZWQiCit9OworCitbCisgICAg
Q29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVudW0g
V2ViR1BVU3RvcmFnZU1vZGUgeworICAgICJzaGFyZWQiLAorICAgICJtYW5hZ2VkIiwKKyAgICAi
cHJpdmF0ZSIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0
UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVSZXNvdXJjZU9wdGlvbnMgeworICAgICJjcHVj
YWNoZW1vZGVkZWZhdWx0Y2FjaGUiLAorICAgICJjcHVjYWNoZW1vZGV3cml0ZWNvbWJpbmVkIiwK
KyAgICAic3RvcmFnZW1vZGVzaGFyZWQiLAorICAgICJzdG9yYWdlbW9kZW1hbmFnZWQiLAorICAg
ICJzdG9yYWdlbW9kZXByaXZhdGUiLAorICAgICJvcHRpb25jcHVjYWNoZW1vZGVkZWZhdWx0Y2Fj
aGUiLAorICAgICJvcHRpb25jcHVjYWNoZW1vZGV3cml0ZWNvbWJpbmVkIgorfTsKKworWworICAg
IENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVt
IFdlYkdQVVRleHR1cmVVc2FnZSB7CisgICAgInVua25vd24iLAorICAgICJzaGFkZXJyZWFkIiwK
KyAgICAic2hhZGVyd3JpdGUiLAorICAgICJyZW5kZXJ0YXJnZXQiLAorICAgICJwaXhlbGZvcm1h
dHZpZXciCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1
bnRpbWU9V2ViR1BVCitdIGVudW0gV2ViR1BVQmxlbmRPcGVyYXRpb24geworICAgICJhZGQiLAor
ICAgICJzdWJ0cmFjdCIsCisgICAgInJldmVyc2VzdWJ0cmFjdCIsCisgICAgIm1pbiIsCisgICAg
Im1heCIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVu
dGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVCbGVuZEZhY3RvciB7CisgICAgInplcm8iLAorICAg
ICJvbmUiLAorICAgICJzb3VyY2Vjb2xvciIsCisgICAgIm9uZW1pbnVzc291cmNlY29sb3IiLAor
ICAgICJzb3VyY2VhbHBoYSIsCisgICAgIm9uZW1pbnVzc291cmNlYWxwaGEiLAorICAgICJkZXN0
aW5hdGlvbmNvbG9yIiwKKyAgICAib25lbWludXNkZXN0aW5hdGlvbmNvbG9yIiwKKyAgICAiZGVz
dGluYXRpb25hbHBoYSIsCisgICAgIm9uZW1pbnVzZGVzdGluYXRpb25hbHBoYSIsCisgICAgInNv
dXJjZWFscGhhc2F0dXJhdGVkIiwKKyAgICAiYmxlbmRjb2xvciIsCisgICAgIm9uZW1pbnVzYmxl
bmRjb2xvciIsCisgICAgImJsZW5kYWxwaGEiLAorICAgICJvbmVtaW51c2JsZW5kYWxwaGEiCit9
OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2Vi
R1BVCitdIGVudW0gV2ViR1BVQ29sb3JXcml0ZU1hc2sgeworICAgICJub25lIiwKKyAgICAicmVk
IiwKKyAgICAiZ3JlZW4iLAorICAgICJibHVlIiwKKyAgICAiYWxwaGEiLAorICAgICJhbGwiCit9
OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2Vi
R1BVCitdIGVudW0gV2ViR1BVTXVsdGlzYW1wbGVEZXB0aFJlc29sdmVGaWx0ZXIgeworICAgICJz
YW1wbGUwIiwKKyAgICAibWluIiwKKyAgICAibWF4IgorfTsKKworWworICAgIENvbmRpdGlvbmFs
PVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQVUZlYXR1
cmVTZXQgeworICAgICJsZXZlbDEiLAorICAgICJsZXZlbDIiCit9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwLi42M2U4YmY4MDIxMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUZ1bmN0aW9uLmNwcApAQCAtMCwwICsxLDYzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYkdQVUZ1bmN0aW9uLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BV
KQorCisjaW5jbHVkZSAiR1BVRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJHUFVMaWJyYXJ5LmgiCisj
aW5jbHVkZSAiV2ViR1BVTGlicmFyeS5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlcmluZ0NvbnRl
eHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8V2ViR1BVRnVuY3Rpb24+IFdlYkdQ
VUZ1bmN0aW9uOjpjcmVhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgV2ViR1BV
TGlicmFyeSogbGlicmFyeSwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYkdQVUZ1bmN0aW9uKGNvbnRleHQsIGxpYnJhcnksIG5hbWUpKTsKK30KKwor
V2ViR1BVRnVuY3Rpb246OldlYkdQVUZ1bmN0aW9uKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNv
bnRleHQsIFdlYkdQVUxpYnJhcnkqIGxpYnJhcnksIGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICA6
IFdlYkdQVU9iamVjdChjb250ZXh0KQoreworICAgIG1fZnVuY3Rpb24gPSBsaWJyYXJ5LT5saWJy
YXJ5KCktPmZ1bmN0aW9uV2l0aE5hbWUobmFtZSk7Cit9CisKK1dlYkdQVUZ1bmN0aW9uOjp+V2Vi
R1BVRnVuY3Rpb24oKQoreworfQorCitTdHJpbmcgV2ViR1BVRnVuY3Rpb246Om5hbWUoKSBjb25z
dAoreworICAgIGlmICghbV9mdW5jdGlvbikKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CisKKyAgICByZXR1cm4gbV9mdW5jdGlvbi0+bmFtZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVRnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUZ1bmN0
aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBhOTUxYTkzMDVj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRnVu
Y3Rpb24uaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5j
bHVkZSAiV2ViR1BVT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BV
RnVuY3Rpb247CitjbGFzcyBXZWJHUFVMaWJyYXJ5OworCitjbGFzcyBXZWJHUFVGdW5jdGlvbiA6
IHB1YmxpYyBXZWJHUFVPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVUZ1bmN0
aW9uKCk7CisgICAgc3RhdGljIFJlZjxXZWJHUFVGdW5jdGlvbj4gY3JlYXRlKFdlYkdQVVJlbmRl
cmluZ0NvbnRleHQqLCBXZWJHUFVMaWJyYXJ5KiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKworICAg
IFN0cmluZyBuYW1lKCkgY29uc3Q7CisKKyAgICBNZXRhbEZ1bmN0aW9uKiBmdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZnVuY3Rpb24uZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWJHUFVG
dW5jdGlvbihXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgV2ViR1BVTGlicmFyeSosIGNvbnN0IFN0
cmluZyYgbmFtZSk7CisKKyAgICBSZWZQdHI8TWV0YWxGdW5jdGlvbj4gbV9mdW5jdGlvbjsKK307
CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24uaWRsIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24uaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwLi4xNTYwMzY3MGNmYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUZ1bmN0aW9uLmlkbApAQCAtMCwwICsxLDMzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRp
dGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBpbnRlcmZhY2Ug
V2ViR1BVRnVuY3Rpb24geworCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBuYW1l
OworCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVTGli
cmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVMaWJyYXJ5LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNmQzNzU3OTM1YzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVMaWJyYXJ5LmNw
cApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdQVUxpYnJhcnkuaCIK
KworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVMaWJyYXJ5LmgiCisjaW5jbHVk
ZSAiV2ViR1BVRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFdlYkdQVUxpYnJhcnk+IFdlYkdQVUxpYnJh
cnk6OmNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IHNvdXJjZUNvZGUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVTGlicmFyeShj
b250ZXh0LCBzb3VyY2VDb2RlKSk7Cit9CisKK1dlYkdQVUxpYnJhcnk6OldlYkdQVUxpYnJhcnko
V2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2Rl
KQorICAgIDogV2ViR1BVT2JqZWN0KGNvbnRleHQpCisgICAgLCBtX3NvdXJjZUNvZGUoc291cmNl
Q29kZSkKK3sKKyAgICBtX2xpYnJhcnkgPSBjb250ZXh0LT5kZXZpY2UoKS0+Y3JlYXRlTGlicmFy
eShzb3VyY2VDb2RlKTsKK30KKworV2ViR1BVTGlicmFyeTo6fldlYkdQVUxpYnJhcnkoKQorewor
fQorCitTdHJpbmcgV2ViR1BVTGlicmFyeTo6bGFiZWwoKSBjb25zdAoreworICAgIGlmICghbV9s
aWJyYXJ5KQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIHJldHVybiBtX2xp
YnJhcnktPmxhYmVsKCk7Cit9CisKK3ZvaWQgV2ViR1BVTGlicmFyeTo6c2V0TGFiZWwoY29uc3Qg
U3RyaW5nJiBsYWJlbCkKK3sKKyAgICBpZiAoIW1fbGlicmFyeSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9saWJyYXJ5LT5zZXRMYWJlbChsYWJlbCk7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IFdl
YkdQVUxpYnJhcnk6OmZ1bmN0aW9uTmFtZXMoKQoreworICAgIGlmICghbV9saWJyYXJ5KQorICAg
ICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKKworICAgIHJldHVybiBtX2xpYnJhcnktPmZ1
bmN0aW9uTmFtZXMoKTsKK30KKworUmVmUHRyPFdlYkdQVUZ1bmN0aW9uPiBXZWJHUFVMaWJyYXJ5
OjpmdW5jdGlvbldpdGhOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpZiAoIW1fbGli
cmFyeSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBSZWZQdHI8V2ViR1BVRnVuY3Rp
b24+IGZ1bmN0aW9uID0gV2ViR1BVRnVuY3Rpb246OmNyZWF0ZSh0aGlzLT5jb250ZXh0KCksIHRo
aXMsIG5hbWUpOworICAgIGlmICghZnVuY3Rpb24tPmZ1bmN0aW9uKCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIHJldHVybiBmdW5jdGlvbjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdQVUxpYnJhcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUxpYnJhcnku
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTdmMWE0YWE0ODIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVMaWJyYXJ5
LmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUg
IldlYkdQVU9iamVjdC5oIgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEdQVUxpYnJhcnk7CitjbGFzcyBXZWJHUFVGdW5jdGlvbjsKKwor
Y2xhc3MgV2ViR1BVTGlicmFyeSA6IHB1YmxpYyBXZWJHUFVPYmplY3QgeworcHVibGljOgorICAg
IHZpcnR1YWwgfldlYkdQVUxpYnJhcnkoKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVUxpYnJhcnk+
IGNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2Rl
KTsKKworICAgIFN0cmluZyBzb3VyY2VDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2Rl
OyB9CisgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRMYWJlbChjb25zdCBT
dHJpbmcmKTsKKworICAgIFZlY3RvcjxTdHJpbmc+IGZ1bmN0aW9uTmFtZXMoKTsKKworICAgIFJl
ZlB0cjxXZWJHUFVGdW5jdGlvbj4gZnVuY3Rpb25XaXRoTmFtZShjb25zdCBTdHJpbmcmKTsKKwor
ICAgIE1ldGFsTGlicmFyeSogbGlicmFyeSgpIHsgcmV0dXJuIG1fbGlicmFyeS5nZXQoKTsgfQor
Citwcml2YXRlOgorICAgIFdlYkdQVUxpYnJhcnkoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgc291cmNlQ29kZSk7CisKKyAgICBTdHJpbmcgbV9zb3VyY2VDb2RlOworICAg
IFJlZlB0cjxNZXRhbExpYnJhcnk+IG1fbGlicmFyeTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHUFVMaWJyYXJ5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUxpYnJh
cnkuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kMzMwMzIyZmE3
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUxp
YnJhcnkuaWRsCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRB
dFJ1bnRpbWU9V2ViR1BVCitdIGludGVyZmFjZSBXZWJHUFVMaWJyYXJ5IHsKKworICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgc291cmNlQ29kZTsKKyAgICBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGxhYmVsOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBzZXF1ZW5jZTxET01TdHJpbmc+IGZ1
bmN0aW9uTmFtZXM7CisKKyAgICBXZWJHUFVGdW5jdGlvbj8gZnVuY3Rpb25XaXRoTmFtZShET01T
dHJpbmcgbmFtZSk7CisKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVT2Jq
ZWN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDFhNzM3NGNl
YTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVP
YmplY3QuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BVT2Jq
ZWN0LmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyaW5n
Q29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dlYkdQVU9iamVjdDo6V2ViR1BV
T2JqZWN0KFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQo
Y29udGV4dCkKK3sKK30KKworV2ViR1BVT2JqZWN0Ojp+V2ViR1BVT2JqZWN0KCkKK3sKK30KKwor
dm9pZCBXZWJHUFVPYmplY3Q6OmRlbGV0ZU9iamVjdChNZXRhbERldmljZSopCit7CisgICAgbV9k
ZWxldGVkID0gdHJ1ZTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVT2JqZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
LjE1OWZlZWQ1ZjgyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVT2JqZWN0LmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQ
VSkKKworI2luY2x1ZGUgIkdQVURldmljZS5oIgorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJHUFVSZW5kZXJpbmdDb250ZXh0
OworCitjbGFzcyBXZWJHUFVPYmplY3QgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVPYmplY3Q+
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJHUFVPYmplY3QoKTsKKworICAgIHZvaWQgZGVs
ZXRlT2JqZWN0KE1ldGFsRGV2aWNlKik7CisgICAgYm9vbCBpc0RlbGV0ZWQoKSBjb25zdCB7IHJl
dHVybiBtX2RlbGV0ZWQ7IH0KKworICAgIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQo
KSB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAgIFdlYkdQVU9i
amVjdChXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiA9IG51bGxwdHIpOworCisgICAgYm9vbCBoYXND
b250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0OyB9CisKK3ByaXZhdGU6CisgICAgUmVm
UHRyPFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ+IG1fY29udGV4dDsKKyAgICBib29sIG1fZGVsZXRl
ZCB7IGZhbHNlIH07Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlckNvbW1h
bmRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlckNv
bW1hbmRFbmNvZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
NWQzODQ2NzYxY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5jcHAKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaCIKKworI2lmIEVOQUJM
RShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgiCisjaW5jbHVkZSAiR1BV
UmVuZGVyQ29tbWFuZEVuY29kZXIuaCIKKyNpbmNsdWRlICJHUFVSZW5kZXJQYXNzRGVzY3JpcHRv
ci5oIgorI2luY2x1ZGUgIldlYkdQVUJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRC
dWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oIgorI2luY2x1ZGUg
IldlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlw
ZWxpbmVTdGF0ZS5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitSZWY8V2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI+IFdlYkdQ
VVJlbmRlckNvbW1hbmRFbmNvZGVyOjpjcmVhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29u
dGV4dCwgV2ViR1BVQ29tbWFuZEJ1ZmZlciogYnVmZmVyLCBXZWJHUFVSZW5kZXJQYXNzRGVzY3Jp
cHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVSZW5k
ZXJDb21tYW5kRW5jb2Rlcihjb250ZXh0LCBidWZmZXIsIGRlc2NyaXB0b3IpKTsKK30KKworV2Vi
R1BVUmVuZGVyQ29tbWFuZEVuY29kZXI6OldlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyKFdlYkdQ
VVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIFdlYkdQVUNvbW1hbmRCdWZmZXIqIGJ1ZmZlciwg
V2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCisgICAgOiBXZWJHUFVPYmpl
Y3QoY29udGV4dCkKK3sKKyAgICBtX3JlbmRlckNvbW1hbmRFbmNvZGVyID0gYnVmZmVyLT5jb21t
YW5kQnVmZmVyKCktPmNyZWF0ZVJlbmRlckNvbW1hbmRFbmNvZGVyKGRlc2NyaXB0b3ItPnJlbmRl
clBhc3NEZXNjcmlwdG9yKCkpOworfQorCitXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlcjo6fldl
YkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyKCkKK3sKK30KKwordm9pZCBXZWJHUFVSZW5kZXJDb21t
YW5kRW5jb2Rlcjo6c2V0UmVuZGVyUGlwZWxpbmVTdGF0ZShXZWJHUFVSZW5kZXJQaXBlbGluZVN0
YXRlJiBwaXBlbGluZVN0YXRlKQoreworICAgIGlmICghbV9yZW5kZXJDb21tYW5kRW5jb2RlcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9yZW5kZXJDb21tYW5kRW5jb2Rlci0+c2V0UmVuZGVy
UGlwZWxpbmVTdGF0ZShwaXBlbGluZVN0YXRlLnJlbmRlclBpcGVsaW5lU3RhdGUoKSk7Cit9CisK
K3ZvaWQgV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldERlcHRoU3RlbmNpbFN0YXRlKFdl
YkdQVURlcHRoU3RlbmNpbFN0YXRlJiBkZXB0aFN0ZW5jaWxTdGF0ZSkKK3sKKyAgICBpZiAoIW1f
cmVuZGVyQ29tbWFuZEVuY29kZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVuZGVyQ29t
bWFuZEVuY29kZXItPnNldERlcHRoU3RlbmNpbFN0YXRlKGRlcHRoU3RlbmNpbFN0YXRlLmRlcHRo
U3RlbmNpbFN0YXRlKCkpOworfQorCit2b2lkIFdlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyOjpz
ZXRWZXJ0ZXhCdWZmZXIoV2ViR1BVQnVmZmVyJiBidWZmZXIsIHVuc2lnbmVkIGludCBvZmZzZXQs
IHVuc2lnbmVkIGludCBpbmRleCkKK3sKKyAgICBpZiAoIW1fcmVuZGVyQ29tbWFuZEVuY29kZXIp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVuZGVyQ29tbWFuZEVuY29kZXItPnNldFZlcnRl
eEJ1ZmZlcihidWZmZXIuYnVmZmVyKCksIG9mZnNldCwgaW5kZXgpOworfQorCit2b2lkIFdlYkdQ
VVJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudEJ1ZmZlcihXZWJHUFVCdWZmZXImIGJ1
ZmZlciwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGluZGV4KQoreworICAgIGlm
ICghbV9yZW5kZXJDb21tYW5kRW5jb2RlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9yZW5k
ZXJDb21tYW5kRW5jb2Rlci0+c2V0RnJhZ21lbnRCdWZmZXIoYnVmZmVyLmJ1ZmZlcigpLCBvZmZz
ZXQsIGluZGV4KTsKK30KKwordm9pZCBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZHJhd1By
aW1pdGl2ZXModW5zaWduZWQgaW50IHR5cGUsIHVuc2lnbmVkIGludCBzdGFydCwgdW5zaWduZWQg
aW50IGNvdW50KQoreworICAgIGlmICghbV9yZW5kZXJDb21tYW5kRW5jb2RlcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9yZW5kZXJDb21tYW5kRW5jb2Rlci0+ZHJhd1ByaW1pdGl2ZXModHlw
ZSwgc3RhcnQsIGNvdW50KTsKK30KKwordm9pZCBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlcjo6
ZW5kRW5jb2RpbmcoKQoreworICAgIGlmICghbV9yZW5kZXJDb21tYW5kRW5jb2RlcikKKyAgICAg
ICAgcmV0dXJuOworICAgIHJldHVybiBtX3JlbmRlckNvbW1hbmRFbmNvZGVyLT5lbmRFbmNvZGlu
ZygpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJjYWVkZTc3MzIyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyQ29t
bWFuZEVuY29kZXIuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQor
CisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0LmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI7Citj
bGFzcyBXZWJHUFVDb21tYW5kQnVmZmVyOworY2xhc3MgV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGU7
CitjbGFzcyBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjsKK2NsYXNzIFdlYkdQVUZ1bmN0aW9u
OworY2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZTsKK2NsYXNzIFdlYkdQVUJ1ZmZlcjsK
KworY2xhc3MgV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIgOiBwdWJsaWMgV2ViR1BVT2JqZWN0
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJHUFVSZW5kZXJDb21tYW5kRW5jb2RlcigpOwor
ICAgIHN0YXRpYyBSZWY8V2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI+IGNyZWF0ZShXZWJHUFVS
ZW5kZXJpbmdDb250ZXh0KiwgV2ViR1BVQ29tbWFuZEJ1ZmZlciosIFdlYkdQVVJlbmRlclBhc3NE
ZXNjcmlwdG9yKik7CisKKyAgICB2b2lkIHNldFJlbmRlclBpcGVsaW5lU3RhdGUoV2ViR1BVUmVu
ZGVyUGlwZWxpbmVTdGF0ZSYpOworICAgIHZvaWQgc2V0RGVwdGhTdGVuY2lsU3RhdGUoV2ViR1BV
RGVwdGhTdGVuY2lsU3RhdGUmKTsKKyAgICB2b2lkIHNldFZlcnRleEJ1ZmZlcihXZWJHUFVCdWZm
ZXImLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgaW5kZXgpOworICAgIHZvaWQg
c2V0RnJhZ21lbnRCdWZmZXIoV2ViR1BVQnVmZmVyJiwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5z
aWduZWQgaW50IGluZGV4KTsKKyAgICB2b2lkIGRyYXdQcmltaXRpdmVzKHVuc2lnbmVkIGludCB0
eXBlLCB1bnNpZ25lZCBpbnQgc3RhcnQsIHVuc2lnbmVkIGludCBjb3VudCk7CisgICAgdm9pZCBl
bmRFbmNvZGluZygpOworCisgICAgTWV0YWxSZW5kZXJDb21tYW5kRW5jb2RlciogcmVuZGVyQ29t
bWFuZEVuY29kZXIoKSB7IHJldHVybiBtX3JlbmRlckNvbW1hbmRFbmNvZGVyLmdldCgpOyB9CisK
K3ByaXZhdGU6CisgICAgV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIoV2ViR1BVUmVuZGVyaW5n
Q29udGV4dCosIFdlYkdQVUNvbW1hbmRCdWZmZXIqLCBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRv
ciopOworICAgIFJlZlB0cjxNZXRhbFJlbmRlckNvbW1hbmRFbmNvZGVyPiBtX3JlbmRlckNvbW1h
bmRFbmNvZGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlckNvbW1hbmRFbmNv
ZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlckNvbW1hbmRF
bmNvZGVyLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzk5NDNj
NTk3NTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVSZW5kZXJDb21tYW5kRW5jb2Rlci5pZGwKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJH
UFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gaW50ZXJmYWNlIFdlYkdQVVJlbmRl
ckNvbW1hbmRFbmNvZGVyIHsKKworICAgIHZvaWQgc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZShXZWJH
UFVSZW5kZXJQaXBlbGluZVN0YXRlIHBpcGVsaW5lU3RhdGUpOworICAgIHZvaWQgc2V0RGVwdGhT
dGVuY2lsU3RhdGUoV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUgZGVwdGhTdGVuY2lsU3RhdGUpOwor
ICAgIHZvaWQgc2V0VmVydGV4QnVmZmVyKFdlYkdQVUJ1ZmZlciBidWZmZXIsIHVuc2lnbmVkIGxv
bmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICB2b2lkIHNldEZyYWdtZW50QnVm
ZmVyKFdlYkdQVUJ1ZmZlciBidWZmZXIsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBs
b25nIGluZGV4KTsKKyAgICB2b2lkIGRyYXdQcmltaXRpdmVzKHVuc2lnbmVkIGxvbmcgdHlwZSwg
dW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBjb3VudCk7CisKKyAgICB2b2lkIGVu
ZEVuY29kaW5nKCk7CisKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYWU0ZWZkNDhlM2EKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNz
QXR0YWNobWVudERlc2NyaXB0b3IuY3BwCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisKKyNpZiBFTkFC
TEUoV0VCR1BVKQorCisjaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
LmgiCisjaW5jbHVkZSAiR1BVVGV4dHVyZS5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlcmluZ0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVUZXh0dXJlLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpXZWJHUFVSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3IoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwg
TWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCisgICAgOiBX
ZWJHUFVPYmplY3QoY29udGV4dCkKKyAgICAsIG1fcmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yKGRlc2NyaXB0b3IpCit7Cit9CisKK1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3Jp
cHRvcjo6fldlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcigpCit7Cit9CisKK3Vu
c2lnbmVkIGxvbmcgV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpsb2FkQWN0
aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
KQorICAgICAgICByZXR1cm4gMDsgLy8gRklYTUU6IHByb2JhYmx5IGEgcmVhbCB2YWx1ZSBmb3Ig
dW5rbm93bgorCisgICAgcmV0dXJuIG1fcmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLT5s
b2FkQWN0aW9uKCk7Cit9CisKK3ZvaWQgV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yOjpzZXRMb2FkQWN0aW9uKHVuc2lnbmVkIGxvbmcgbmV3TG9hZEFjdGlvbikKK3sKKyAgICBp
ZiAoIW1fcmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX3JlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci0+c2V0TG9hZEFjdGlvbihuZXdM
b2FkQWN0aW9uKTsKK30KKwordW5zaWduZWQgbG9uZyBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVu
dERlc2NyaXB0b3I6OnN0b3JlQWN0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yKQorICAgICAgICByZXR1cm4gMDsgLy8gRklYTUU6IHByb2Jh
Ymx5IGEgcmVhbCB2YWx1ZSBmb3IgdW5rbm93bgorCisgICAgcmV0dXJuIG1fcmVuZGVyUGFzc0F0
dGFjaG1lbnREZXNjcmlwdG9yLT5zdG9yZUFjdGlvbigpOworfQorCit2b2lkIFdlYkdQVVJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0U3RvcmVBY3Rpb24odW5zaWduZWQgbG9uZyBu
ZXdTdG9yZUFjdGlvbikKK3sKKyAgICBpZiAoIW1fcmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3JlbmRlclBhc3NBdHRhY2htZW50RGVzY3Jp
cHRvci0+c2V0U3RvcmVBY3Rpb24obmV3U3RvcmVBY3Rpb24pOworfQorCitSZWZQdHI8V2ViR1BV
VGV4dHVyZT4gV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjp0ZXh0dXJlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV90ZXh0dXJlOworfQorCit2b2lkIFdlYkdQVVJlbmRlclBh
c3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0VGV4dHVyZShSZWZQdHI8V2ViR1BVVGV4dHVyZT4g
bmV3VGV4dHVyZSkKK3sKKyAgICBpZiAoIW5ld1RleHR1cmUpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBtX3RleHR1cmUgPSBuZXdUZXh0dXJlOworICAgIAorICAgIGlmIChtX3JlbmRlclBh
c3NBdHRhY2htZW50RGVzY3JpcHRvcikKKyAgICAgICAgbV9yZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3ItPnNldFRleHR1cmUobmV3VGV4dHVyZS0+dGV4dHVyZSgpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZlMGRmNWZkOTgzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldlYkdQVU9iamVjdC5oIgorCisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVVJlbmRlclBhc3NB
dHRhY2htZW50RGVzY3JpcHRvcjsKK2NsYXNzIFdlYkdQVVRleHR1cmU7CisKK2NsYXNzIFdlYkdQ
VVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBXZWJHUFVPYmplY3Qgewor
cHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRv
cigpOworCisgICAgdW5zaWduZWQgbG9uZyBsb2FkQWN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRMb2FkQWN0aW9uKHVuc2lnbmVkIGxvbmcpOworCisgICAgdW5zaWduZWQgbG9uZyBzdG9yZUFj
dGlvbigpIGNvbnN0OworICAgIHZvaWQgc2V0U3RvcmVBY3Rpb24odW5zaWduZWQgbG9uZyk7CisK
KyAgICBSZWZQdHI8V2ViR1BVVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0OworICAgIHZvaWQgc2V0
VGV4dHVyZShSZWZQdHI8V2ViR1BVVGV4dHVyZT4pOworCisgICAgTWV0YWxSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3IqIHJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcigpIGNvbnN0
IHsgcmV0dXJuIG1fcmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmdldCgpOyB9CisKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKworcHJvdGVjdGVkOgorCisgICAgV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBNZXRhbFJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvciopOworCisKK3ByaXZhdGU6CisKKyAgICBSZWZQdHI8TWV0YWxSZW5k
ZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I+IG1fcmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yOworICAgIFJlZlB0cjxXZWJHUFVUZXh0dXJlPiBtX3RleHR1cmU7Cit9OworICAgIAorfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3IuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kYjg4Y2Zj
YmRjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5pZGwKQEAgLTAsMCArMSwzOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRp
b25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUsCisgICAgQ3VzdG9tVG9K
U09iamVjdAorXQoraW50ZXJmYWNlIFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRv
ciB7CisKKyAgICBhdHRyaWJ1dGUgV2ViR1BVVGV4dHVyZT8gdGV4dHVyZTsKKworICAgIGF0dHJp
YnV0ZSB1bnNpZ25lZCBsb25nIGxvYWRBY3Rpb247IC8vIHNob3VsZCBiZSBXZWJHUFVMb2FkQWN0
aW9uCisgICAgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgc3RvcmVBY3Rpb247IC8vIHNob3VsZCBi
ZSBXZWJHUFVTdG9yZUFjdGlvbgorCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4x
MjQ0YmIzZDg4YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcApAQCAtMCwwICsx
LDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiR1BVUmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJHUFVUZXh0dXJl
LmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQ
VVRleHR1cmUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8V2ViR1BVUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yOjpjcmVhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgTWV0
YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvcihjb250ZXh0LCBkZXNjcmlwdG9yKSk7Cit9CisKK1dlYkdQVVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yOjpXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvcihXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBNZXRhbFJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorICAgIDogV2ViR1BVUmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKGNvbnRleHQsIGRlc2NyaXB0b3IpCit7Cit9CisKK1dl
YkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjp+V2ViR1BVUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKQoreworfQorCitNZXRhbFJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yKiBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvcjo6cmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKSBjb25zdAorewor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yKj4ocmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKCkpOworfQorCitWZWN0b3I8
ZmxvYXQ+IFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpjbGVhckNv
bG9yKCkgY29uc3QKK3sKKyAgICBNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yKiBkZXNjcmlwdG9yID0gcmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKTsK
KyAgICBpZiAoIWRlc2NyaXB0b3IpIHsKKyAgICAgICAgVmVjdG9yPGZsb2F0PiBibGFjayA9IHsg
MC4wLCAwLjAsIDAuMCwgMS4wIH07CisgICAgICAgIHJldHVybiBibGFjazsKKyAgICB9CisgICAg
cmV0dXJuIGRlc2NyaXB0b3ItPmNsZWFyQ29sb3IoKTsKK30KKwordm9pZCBXZWJHUFVSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0Q2xlYXJDb2xvcihjb25zdCBWZWN0b3I8
ZmxvYXQ+JiBuZXdDbGVhckNvbG9yKQoreworICAgIE1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IqIGRlc2NyaXB0b3IgPSByZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvcigpOworICAgIGlmICghZGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
ZGVzY3JpcHRvci0+c2V0Q2xlYXJDb2xvcihuZXdDbGVhckNvbG9yKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iMzIyNjYy
ZmY0MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw1OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldlYkdQVU9iamVjdC5oIgorI2lu
Y2x1ZGUgIldlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIgorCisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVVJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOworCitjbGFzcyBXZWJHUFVSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBXZWJHUFVSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3IgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVVJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCk7CisgICAgc3RhdGljIFJlZjxXZWJHUFVSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gY3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRl
eHQqLCBNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKik7CisKKyAgICBW
ZWN0b3I8ZmxvYXQ+IGNsZWFyQ29sb3IoKSBjb25zdDsKKyAgICB2b2lkIHNldENsZWFyQ29sb3Io
Y29uc3QgVmVjdG9yPGZsb2F0PiYpOworCisgICAgTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvciogcmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKSBjb25z
dDsKKworICAgIGJvb2wgaXNDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQorCitwcml2YXRlOgorICAgIFdlYkdQVVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBNZXRhbFJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKik7CisKK307CisgICAgCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaWRsIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hZDcx
ZDU2MjBhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmlkbApAQCAtMCwwICsxLDMz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAg
IENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBpbnRl
cmZhY2UgV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgOiBXZWJHUFVS
ZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IgeworCisgICAgYXR0cmlidXRlIHNlcXVlbmNl
PGZsb2F0PiBjbGVhckNvbG9yOworCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVu
dERlc2NyaXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42
MmQ2ZjI3NTM4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcApAQCAtMCwwICsx
LDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1l
bnREZXNjcmlwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiR1BVUmVu
ZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJHUFVUZXh0dXJl
LmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQ
VVRleHR1cmUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8V2ViR1BVUmVuZGVyUGFz
c0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I+IFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1l
bnREZXNjcmlwdG9yOjpjcmVhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgTWV0
YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvcihjb250ZXh0LCBkZXNjcmlwdG9yKSk7Cit9CisKK1dlYkdQVVJlbmRlclBhc3NEZXB0
aEF0dGFjaG1lbnREZXNjcmlwdG9yOjpXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvcihXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBNZXRhbFJlbmRlclBhc3NE
ZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorICAgIDogV2ViR1BVUmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKGNvbnRleHQsIGRlc2NyaXB0b3IpCit7Cit9CisKK1dl
YkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjp+V2ViR1BVUmVuZGVyUGFz
c0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoKQoreworfQorCitkb3VibGUgV2ViR1BVUmVuZGVy
UGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OmNsZWFyRGVwdGgoKSBjb25zdAoreworICAg
IE1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqIGRlc2NyaXB0b3IgPSBy
ZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcigpOworICAgIGlmICghZGVzY3JpcHRv
cikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gZGVzY3JpcHRvci0+Y2xlYXJEZXB0
aCgpOworfQorCit2b2lkIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9y
OjpzZXRDbGVhckRlcHRoKGRvdWJsZSBuZXdDbGVhckRlcHRoKQoreworICAgIE1ldGFsUmVuZGVy
UGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqIGRlc2NyaXB0b3IgPSByZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvcigpOworICAgIGlmICghZGVzY3JpcHRvcikKKyAgICAgICAg
cmV0dXJuOworICAgIAorICAgIGRlc2NyaXB0b3ItPnNldENsZWFyRGVwdGgobmV3Q2xlYXJEZXB0
aCk7Cit9CisKK01ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqIFdlYkdQ
VVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjpyZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1ldGFs
UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqPihyZW5kZXJQYXNzQXR0YWNobWVu
dERlc2NyaXB0b3IoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNzM4YWI0YzVhZjcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisK
KyNpbmNsdWRlICJXZWJHUFVPYmplY3QuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVS
ZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjsKKworY2xhc3MgV2ViR1BVUmVuZGVy
UGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgV2ViR1BVUmVuZGVyUGFzc0F0
dGFjaG1lbnREZXNjcmlwdG9yIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJHUFVSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcigpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVUmVu
ZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I+IGNyZWF0ZShXZWJHUFVSZW5kZXJpbmdD
b250ZXh0KiwgTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciopOworCisg
ICAgZG91YmxlIGNsZWFyRGVwdGgoKSBjb25zdDsKKyAgICB2b2lkIHNldENsZWFyRGVwdGgoZG91
YmxlKTsKKworICAgIE1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqIHJl
bmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKCkgY29uc3Q7CisKK3ByaXZhdGU6Cisg
ICAgV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoV2ViR1BVUmVuZGVy
aW5nQ29udGV4dCosIE1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqKTsK
KworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2ht
ZW50RGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjMwMDhiY2YzM2U4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2Ny
aXB0b3IuaWRsCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRB
dFJ1bnRpbWU9V2ViR1BVCitdIGludGVyZmFjZSBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2ht
ZW50RGVzY3JpcHRvciA6IFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7CisK
KyAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBjbGVhckRlcHRoOworCit9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yZjhi
MjM2ZDcyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VC
R1BVKQorCisjaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3Iu
aCIKKyNpbmNsdWRlICJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIgor
I2luY2x1ZGUgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRl
cmluZ0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8V2ViR1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3I+IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOjpjcmVhdGUoKQorewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yKCkpOwor
fQorCitXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjo6V2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3IoKQorICAgIDogV2ViR1BVT2JqZWN0KCkKK3sKKyAgICBtX3JlbmRlclBhc3NEZXNjcmlwdG9y
ID0gTWV0YWxSZW5kZXJQYXNzRGVzY3JpcHRvcjo6Y3JlYXRlKCk7Cit9CisKK1dlYkdQVVJlbmRl
clBhc3NEZXNjcmlwdG9yOjp+V2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IoKQoreworfQorCitS
ZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I+IFdlYkdQVVJl
bmRlclBhc3NEZXNjcmlwdG9yOjpkZXB0aEF0dGFjaG1lbnQoKQoreworICAgIGlmICghbV9yZW5k
ZXJQYXNzRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIW1f
ZGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcikgeworICAgICAgICBSZWZQdHI8TWV0YWxSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcj4gcGxhdGZvcm1EZXB0aEF0dGFjaG1lbnQgPSBt
X3JlbmRlclBhc3NEZXNjcmlwdG9yLT5kZXB0aEF0dGFjaG1lbnQoKTsKKyAgICAgICAgbV9kZXB0
aEF0dGFjaG1lbnREZXNjcmlwdG9yID0gV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3I6OmNyZWF0ZSh0aGlzLT5jb250ZXh0KCksIHBsYXRmb3JtRGVwdGhBdHRhY2htZW50
LmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIG1fZGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjsK
K30KKworVmVjdG9yPFJlZlB0cjxXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcj4+IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOjpjb2xvckF0dGFjaG1lbnRzKCkKK3sK
KyAgICBpZiAoIW1fcmVuZGVyUGFzc0Rlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiBWZWN0b3I8
UmVmUHRyPFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4oKTsKKwor
ICAgIGlmICghbV9jb2xvckF0dGFjaG1lbnREZXNjcmlwdG9ycy5zaXplKCkpIHsKKyAgICAgICAg
VmVjdG9yPFJlZlB0cjxNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4g
cGxhdGZvcm1Db2xvckF0dGFjaG1lbnRzID0gbV9yZW5kZXJQYXNzRGVzY3JpcHRvci0+Y29sb3JB
dHRhY2htZW50cygpOworICAgICAgICBmb3IgKGF1dG8mIGF0dGFjaG1lbnQgOiBwbGF0Zm9ybUNv
bG9yQXR0YWNobWVudHMpCisgICAgICAgICAgICBtX2NvbG9yQXR0YWNobWVudERlc2NyaXB0b3Jz
LmFwcGVuZChXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6Y3JlYXRl
KHRoaXMtPmNvbnRleHQoKSwgYXR0YWNobWVudC5nZXQoKSkpOworICAgIH0KKyAgICByZXR1cm4g
bV9jb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yczsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VVJlbmRlclBhc3NEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi44NGMwNTkyOWRjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw2MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldlYkdQVU9iamVjdC5oIgorCisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQ
VVJlbmRlclBhc3NEZXNjcmlwdG9yOworY2xhc3MgV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3I7CitjbGFzcyBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvcjsKKworY2xhc3MgV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IgOiBwdWJsaWMgV2Vi
R1BVT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJHUFVSZW5kZXJQYXNzRGVzY3Jp
cHRvcigpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I+IGNyZWF0
ZSgpOworCisgICAgUmVmUHRyPFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yPiBkZXB0aEF0dGFjaG1lbnQoKTsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYkdQVVJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4gY29sb3JBdHRhY2htZW50cygpOworCisgICAg
TWV0YWxSZW5kZXJQYXNzRGVzY3JpcHRvciogcmVuZGVyUGFzc0Rlc2NyaXB0b3IoKSB7IHJldHVy
biBtX3JlbmRlclBhc3NEZXNjcmlwdG9yLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgV2ViR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3IoKTsKKworICAgIFZlY3RvcjxSZWZQdHI8V2ViR1BVUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+PiBtX2NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3JzOworICAgIFJlZlB0cjxXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
cj4gbV9kZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOworCisgICAgUmVmUHRyPE1ldGFsUmVuZGVy
UGFzc0Rlc2NyaXB0b3I+IG1fcmVuZGVyUGFzc0Rlc2NyaXB0b3I7Cit9OworICAgIAorfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmlkbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTAyNjRiYTJkMWUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5p
ZGwKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK1sKKyAgICBDb25zdHJ1Y3RvciwKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisg
ICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gaW50ZXJmYWNlIFdlYkdQVVJlbmRlclBhc3NE
ZXNjcmlwdG9yIHsKKworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBzZXF1ZW5jZTxXZWJHUFVSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gY29sb3JBdHRhY2htZW50czsKKyAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0
b3IgZGVwdGhBdHRhY2htZW50OworICAgIC8vcmVhZG9ubHkgYXR0cmlidXRlIFdlYkdQVVJlbmRl
clBhc3NTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3Igc3RlbmNpbEF0dGFjaG1lbnQ7CisKKyAg
ICAvLyByZW5kZXJUYXJnZXRBcnJheUxlbmd0aAorICAgIC8vIHZpc2liaWxpdHlSZXN1bHRCdWZm
ZXIKKworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zZTA2OTMwOTIw
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKQEAgLTAsMCArMSw2OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJXZWJHUFVS
ZW5kZXJpbmdDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFdlYkdQVVJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gV2ViR1BVUmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpjcmVhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4
dCogY29udGV4dCwgTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3Iq
IGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKGNvbnRleHQsIGRlc2NyaXB0b3IpKTsKK30K
KworV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpXZWJHUFVS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dCogY29udGV4dCwgTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IqIGRlc2NyaXB0b3IpCisgICAgOiBXZWJHUFVPYmplY3QoY29udGV4dCkKKyAgICAsIG1fcmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKGRlc2NyaXB0b3IpCit7Cit9CisK
K1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6fldlYkdQVVJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpCit7Cit9CisKK3Vuc2lnbmVk
IGxvbmcgV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpwaXhl
bEZvcm1hdCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIDA7IC8vIEZJWE1FOiBwcm9iYWJseSBhIHJl
YWwgdmFsdWUgZm9yIHVua25vd24KKworICAgIHJldHVybiBtX3JlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvci0+cGl4ZWxGb3JtYXQoKTsKK30KKwordm9pZCBXZWJHUFVSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFBpeGVsRm9ybWF0KHVuc2ln
bmVkIGxvbmcgbmV3UGl4ZWxGb3JtYXQpCit7CisgICAgaWYgKCFtX3JlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9yZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3ItPnNldFBpeGVsRm9ybWF0KG5ld1BpeGVs
Rm9ybWF0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjNjY2ZmZmVlZTAyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQ
VSkKKworI2luY2x1ZGUgIldlYkdQVU9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjsKKworY2xh
c3MgV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yIDogcHVibGlj
IFdlYkdQVU9iamVjdCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViR1BVUmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCk7CisgICAgc3RhdGljIFJlZjxXZWJHUFVSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGNyZWF0ZShXZWJHUFVSZW5kZXJp
bmdDb250ZXh0KiwgTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3Iq
KTsKKworICAgIHVuc2lnbmVkIGxvbmcgcGl4ZWxGb3JtYXQoKSBjb25zdDsKKyAgICB2b2lkIHNl
dFBpeGVsRm9ybWF0KHVuc2lnbmVkIGxvbmcpOworCisgICAgTWV0YWxSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IqIHJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvcigpIHsgcmV0dXJuIG1fcmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBNZXRhbFJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciopOworCisgICAgUmVmUHRyPE1ldGFsUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBtX3JlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvcjsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZiOGJmMzYx
OWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmlkbApAQCAtMCwwICsxLDMz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAg
IENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBpbnRl
cmZhY2UgV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yIHsKKwor
ICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHBpeGVsRm9ybWF0OyAvLyBzaG91bGQgYmUgTVRM
UGl4ZWxGb3JtYXQKKworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41MWI2YWNhZDgyZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ci5jcHAKQEAgLTAsMCArMSwxNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAi
R1BVRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIK
KyNpbmNsdWRlICJXZWJHUFVGdW5jdGlvbi5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlcmlu
Z0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8V2ViR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yPiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmNyZWF0ZSgp
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yKCkpOworfQorCitXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OldlYkdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcigpCisgICAgOiBXZWJHUFVPYmplY3QoKQoreworICAgIG1fcmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0gTWV0YWxSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmNy
ZWF0ZSgpOworfQorCitXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6On5XZWJHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IoKQoreworfQorCitTdHJpbmcgV2ViR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4g
bV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3ItPmxhYmVsKCk7Cit9CisKK3ZvaWQgV2ViR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRMYWJlbChjb25zdCBTdHJpbmcmIGxhYmVsKQorewor
ICAgIGlmICghbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLT5zZXRMYWJlbChsYWJlbCk7Cit9CisKK1Jl
ZlB0cjxXZWJHUFVGdW5jdGlvbj4gV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp2ZXJ0
ZXhGdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdmVydGV4RnVuY3Rpb247Cit9CisK
K3ZvaWQgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRWZXJ0ZXhGdW5jdGlvbihS
ZWZQdHI8V2ViR1BVRnVuY3Rpb24+IG5ld1ZlcnRleEZ1bmN0aW9uKQoreworICAgIGlmICghbmV3
VmVydGV4RnVuY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1fdmVydGV4RnVuY3Rpb24g
PSBuZXdWZXJ0ZXhGdW5jdGlvbjsKKworICAgIGlmIChtX3JlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cikKKyAgICAgICAgbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3ItPnNldFZlcnRleEZ1bmN0aW9u
KG5ld1ZlcnRleEZ1bmN0aW9uLT5mdW5jdGlvbigpKTsKK30KKworUmVmUHRyPFdlYkdQVUZ1bmN0
aW9uPiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmZyYWdtZW50RnVuY3Rpb24oKSBj
b25zdAoreworICAgIHJldHVybiBtX2ZyYWdtZW50RnVuY3Rpb247Cit9CisKK3ZvaWQgV2ViR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRGcmFnbWVudEZ1bmN0aW9uKFJlZlB0cjxXZWJH
UFVGdW5jdGlvbj4gbmV3RnJhZ21lbnRGdW5jdGlvbikKK3sKKyAgICBpZiAoIW5ld0ZyYWdtZW50
RnVuY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1fZnJhZ21lbnRGdW5jdGlvbiA9IG5l
d0ZyYWdtZW50RnVuY3Rpb247CisKKyAgICBpZiAobV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3Ip
CisgICAgICAgIG1fcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLT5zZXRGcmFnbWVudEZ1bmN0aW9u
KG5ld0ZyYWdtZW50RnVuY3Rpb24tPmZ1bmN0aW9uKCkpOworfQorCitWZWN0b3I8UmVmUHRyPFdl
YkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4+IFdlYkdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcjo6Y29sb3JBdHRhY2htZW50cygpCit7CisgICAgaWYgKCFtX3Jl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxSZWZQdHI8V2Vi
R1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4oKTsKKworICAgIGlm
ICghbV9jb2xvckF0dGFjaG1lbnREZXNjcmlwdG9ycy5zaXplKCkpIHsKKyAgICAgICAgVmVjdG9y
PFJlZlB0cjxNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4+IHBs
YXRmb3JtQ29sb3JBdHRhY2htZW50cyA9IG1fcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLT5jb2xv
ckF0dGFjaG1lbnRzKCk7CisgICAgICAgIGZvciAoYXV0byYgYXR0YWNobWVudCA6IHBsYXRmb3Jt
Q29sb3JBdHRhY2htZW50cykKKyAgICAgICAgICAgIG1fY29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cnMuYXBwZW5kKFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6
Y3JlYXRlKHRoaXMtPmNvbnRleHQoKSwgYXR0YWNobWVudC5nZXQoKSkpOworICAgIH0KKyAgICBy
ZXR1cm4gbV9jb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yczsKK30KKwordW5zaWduZWQgbG9uZyBX
ZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmRlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0
KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKQorICAgICAg
ICByZXR1cm4gMDsgLy8gRklYTUU6IHByb2JhYmx5IGEgcmVhbCB2YWx1ZSBmb3IgdW5rbm93bgor
CisgICAgcmV0dXJuIG1fcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLT5kZXB0aEF0dGFjaG1lbnRQ
aXhlbEZvcm1hdCgpOworCit9CisKK3ZvaWQgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
OjpzZXREZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdCh1bnNpZ25lZCBsb25nIG5ld1BpeGVsRm9y
bWF0KQoreworICAgIGlmICghbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLT5zZXREZXB0aEF0dGFjaG1l
bnRQaXhlbEZvcm1hdChuZXdQaXhlbEZvcm1hdCk7Cit9CisKK3ZvaWQgV2ViR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yOjpyZXNldCgpCit7CisgICAgbV92ZXJ0ZXhGdW5jdGlvbiA9IG51bGxw
dHI7CisgICAgbV9mcmFnbWVudEZ1bmN0aW9uID0gbnVsbHB0cjsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjk5MTBlODUyZjg3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
LmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUg
IldlYkdQVU9iamVjdC5oIgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKK2NsYXNzIFdl
YkdQVUZ1bmN0aW9uOworY2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yOworCitjbGFzcyBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgOiBwdWJs
aWMgV2ViR1BVT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IoKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcj4gY3JlYXRlKCk7CisKKyAgICBTdHJpbmcgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lk
IHNldExhYmVsKGNvbnN0IFN0cmluZyYpOworCisgICAgUmVmUHRyPFdlYkdQVUZ1bmN0aW9uPiB2
ZXJ0ZXhGdW5jdGlvbigpIGNvbnN0OworICAgIHZvaWQgc2V0VmVydGV4RnVuY3Rpb24oUmVmUHRy
PFdlYkdQVUZ1bmN0aW9uPik7CisKKyAgICBSZWZQdHI8V2ViR1BVRnVuY3Rpb24+IGZyYWdtZW50
RnVuY3Rpb24oKSBjb25zdDsKKyAgICB2b2lkIHNldEZyYWdtZW50RnVuY3Rpb24oUmVmUHRyPFdl
YkdQVUZ1bmN0aW9uPik7CisKKyAgICBWZWN0b3I8UmVmUHRyPFdlYkdQVVJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4+IGNvbG9yQXR0YWNobWVudHMoKTsKKworICAgIHVu
c2lnbmVkIGxvbmcgZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQoKSBjb25zdDsKKyAgICB2b2lk
IHNldERlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0KHVuc2lnbmVkIGxvbmcpOworCisgICAgdm9p
ZCByZXNldCgpOworCisgICAgTWV0YWxSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIHJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcigpIHsgcmV0dXJuIG1fcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmdl
dCgpOyB9CisKK3ByaXZhdGU6CisgICAgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCk7
CisKKyAgICBSZWZQdHI8V2ViR1BVRnVuY3Rpb24+IG1fdmVydGV4RnVuY3Rpb247CisgICAgUmVm
UHRyPFdlYkdQVUZ1bmN0aW9uPiBtX2ZyYWdtZW50RnVuY3Rpb247CisKKyAgICBWZWN0b3I8UmVm
UHRyPFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4+IG1fY29s
b3JBdHRhY2htZW50RGVzY3JpcHRvcnM7CisKKyAgICBSZWZQdHI8TWV0YWxSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I+IG1fcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hOTg2ODNkZDk4OAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvci5pZGwKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25zdHJ1Y3RvciwKKyAgICBDb25kaXRpb25hbD1X
RUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gaW50ZXJmYWNlIFdlYkdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvciB7CisKKyAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVs
OworCisgICAgYXR0cmlidXRlIFdlYkdQVUZ1bmN0aW9uPyB2ZXJ0ZXhGdW5jdGlvbjsKKyAgICBh
dHRyaWJ1dGUgV2ViR1BVRnVuY3Rpb24/IGZyYWdtZW50RnVuY3Rpb247CisKKyAgICByZWFkb25s
eSBhdHRyaWJ1dGUgc2VxdWVuY2U8V2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yPiBjb2xvckF0dGFjaG1lbnRzOworCisgICAgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQ7CisKKyAgICB2b2lkIHJlc2V0KCk7CisKK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBl
bGluZVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBp
cGVsaW5lU3RhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5j
MjAxNDBiZTU3YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oIgorCisjaWYgRU5BQkxFKFdF
QkdQVSkKKworI2luY2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaCIKKyNpbmNsdWRlICJX
ZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJp
bmdDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFdlYkdQVVJlbmRlclBp
cGVsaW5lU3RhdGU+IFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGU6OmNyZWF0ZShXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0KiBjb250ZXh0LCBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRl
c2NyaXB0b3IpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVUmVuZGVyUGlwZWxp
bmVTdGF0ZShjb250ZXh0LCBkZXNjcmlwdG9yKSk7Cit9CisKK1dlYkdQVVJlbmRlclBpcGVsaW5l
U3RhdGU6OldlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCog
Y29udGV4dCwgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorICAg
IDogV2ViR1BVT2JqZWN0KGNvbnRleHQpCit7CisgICAgaWYgKCFjb250ZXh0IHx8ICFkZXNjcmlw
dG9yKQorICAgICAgICByZXR1cm47CisgICAgbV9yZW5kZXJQaXBlbGluZVN0YXRlID0gTWV0YWxS
ZW5kZXJQaXBlbGluZVN0YXRlOjpjcmVhdGUoY29udGV4dC0+ZGV2aWNlKCkuZ2V0KCksIGRlc2Ny
aXB0b3ItPnJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpKTsKK30KKworV2ViR1BVUmVuZGVyUGlw
ZWxpbmVTdGF0ZTo6fldlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUoKQoreworfQorCitTdHJpbmcg
V2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZTo6bGFiZWwoKSBjb25zdAoreworICAgIGlmICghbV9y
ZW5kZXJQaXBlbGluZVN0YXRlKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAg
IHJldHVybiBtX3JlbmRlclBpcGVsaW5lU3RhdGUtPmxhYmVsKCk7Cit9CisKK3ZvaWQgV2ViR1BV
UmVuZGVyUGlwZWxpbmVTdGF0ZTo6c2V0TGFiZWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKK3sKKyAg
ICBpZiAoIW1fcmVuZGVyUGlwZWxpbmVTdGF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9y
ZW5kZXJQaXBlbGluZVN0YXRlLT5zZXRMYWJlbChsYWJlbCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLjRjNWIwODBhZGQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oCkBAIC0wLDAgKzEsNTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXZWJHUFVPYmplY3QuaCIK
KworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBHUFVSZW5kZXJQaXBlbGluZVN0YXRlOworY2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yOworCitjbGFzcyBXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlIDogcHVibGljIFdlYkdQ
VU9iamVjdCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0
ZSgpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZT4gY3JlYXRlKFdl
YkdQVVJlbmRlcmluZ0NvbnRleHQqLCBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqKTsK
KworICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgU3Ry
aW5nJik7CisKKyAgICBNZXRhbFJlbmRlclBpcGVsaW5lU3RhdGUqIHJlbmRlclBpcGVsaW5lU3Rh
dGUoKSB7IHJldHVybiBtX3JlbmRlclBpcGVsaW5lU3RhdGUuZ2V0KCk7IH0KKworcHJpdmF0ZToK
KyAgICBXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBX
ZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqKTsKKworICAgIFJlZlB0cjxNZXRhbFJlbmRl
clBpcGVsaW5lU3RhdGU+IG1fcmVuZGVyUGlwZWxpbmVTdGF0ZTsKK307CisgICAgCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmlkbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNGVkMzRkMjhjYTUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmlkbApA
QCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdl
YkdQVQorXSBpbnRlcmZhY2UgV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZSB7CisKKyAgICBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGxhYmVsOworCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uNzJlNDFhZTQ5ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMCww
ICsxLDIwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0Lmgi
CisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHUFVEZXZpY2UuaCIKKyNpbmNsdWRlICJXZWJHUFVC
dWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHUFVDb21tYW5kUXVldWUuaCIKKyNpbmNsdWRlICJXZWJH
UFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiV2ViR1BVRGVwdGhTdGVuY2ls
U3RhdGUuaCIKKyNpbmNsdWRlICJXZWJHUFVEcmF3YWJsZS5oIgorI2luY2x1ZGUgIldlYkdQVUxp
YnJhcnkuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIgorI2luY2x1
ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIldlYkdQVVJl
bmRlclBpcGVsaW5lU3RhdGUuaCIKKyNpbmNsdWRlICJXZWJHUFVUZXh0dXJlLmgiCisjaW5jbHVk
ZSAiV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaCIKKworI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlC
dWZmZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxydW50
aW1lL1R5cGVkQXJyYXlJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9VaW50MzJBcnJheS5o
PgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCituYW1lc3BhY2Ug
eworCitpbnQgY2xhbXAoaW50IHZhbHVlLCBpbnQgbWluLCBpbnQgbWF4KQoreworICAgIGlmICh2
YWx1ZSA8IG1pbikKKyAgICAgICAgdmFsdWUgPSBtaW47CisgICAgaWYgKHZhbHVlID4gbWF4KQor
ICAgICAgICB2YWx1ZSA9IG1heDsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK30KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitzdGF0aWMgY29uc3QgaW50IGtNYXhUZXh0dXJlU2l6ZSA9IDQwOTY7
CisKKworc3RkOjp1bmlxdWVfcHRyPFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ+IFdlYkdQVVJlbmRl
cmluZ0NvbnRleHQ6OmNyZWF0ZShIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzKQoreworICAgIERv
Y3VtZW50JiBkb2N1bWVudCA9IGNhbnZhcy5kb2N1bWVudCgpOworICAgIEZyYW1lKiBmcmFtZSA9
IGRvY3VtZW50LmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKy8vICAgIE1ldGFsRGV2aWNlOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBhdHRycyA/
IGF0dHJzLT5hdHRyaWJ1dGVzKCkgOiBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcygpOwor
ICAgIE1ldGFsRGV2aWNlOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CisKKyAgICBhdHRyaWJ1dGVz
LmFudGlhbGlhcyA9IGZhbHNlOworCisvLyAgICAgICAgaWYgKHBhZ2UpCisvLyAgICAgICAgICAg
IGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbyA9IHBhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCk7
CisKKyAgICBIb3N0V2luZG93KiBob3N0V2luZG93ID0gZG9jdW1lbnQudmlldygpLT5yb290KCkt
Pmhvc3RXaW5kb3coKTsKKyAgICBSZWZQdHI8TWV0YWxEZXZpY2U+IGRldmljZShNZXRhbERldmlj
ZTo6Y3JlYXRlKGF0dHJpYnV0ZXMsIGhvc3RXaW5kb3cpKTsKKworICAgIGlmICghZGV2aWNlKSB7
IC8vIHx8ICFjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkgeworICAgICAgICAvLyBjYW52
YXMtPmRpc3BhdGNoRXZlbnQoV2ViR0xDb250ZXh0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
d2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvckV2ZW50LCBmYWxzZSwgdHJ1ZSwgIkNvdWxkIG5vdCBj
cmVhdGUgYSBXZWJHTCBjb250ZXh0LiIpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ+IHJlbmRlcmlu
Z0NvbnRleHQgPSBudWxscHRyOworICAgIHJlbmRlcmluZ0NvbnRleHQgPSBzdGQ6OnVuaXF1ZV9w
dHI8V2ViR1BVUmVuZGVyaW5nQ29udGV4dD4obmV3IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQoY2Fu
dmFzLCBkZXZpY2UpKTsKKyAgICByZW5kZXJpbmdDb250ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsK
KworICAgIHJldHVybiByZW5kZXJpbmdDb250ZXh0OworfQorCitXZWJHUFVSZW5kZXJpbmdDb250
ZXh0OjpXZWJHUFVSZW5kZXJpbmdDb250ZXh0KEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMsIFBh
c3NSZWZQdHI8TWV0YWxEZXZpY2U+IGRldmljZSkKKyAgICA6IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQoY2FudmFzKQorICAgICwgQWN0aXZlRE9NT2JqZWN0KCZjYW52YXMuZG9jdW1lbnQoKSkKKyAg
ICAsIG1fZGV2aWNlKGRldmljZSkKKyAgICAvLyAsIG1fYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQor
eworICAgIGluaXRpYWxpemVOZXdDb250ZXh0KCk7Cit9CisKK3ZvaWQgV2ViR1BVUmVuZGVyaW5n
Q29udGV4dDo6aW5pdGlhbGl6ZU5ld0NvbnRleHQoKQoreworICAgIC8vIEZJWE1FOiBNYXliZSB3
ZSBzaG91bGQgcmVzZXQgYSBidW5jaCBvZiBzdHVmZiBoZXJlLgorCisgICAgSW50U2l6ZSBjYW52
YXNTaXplID0gY2xhbXBlZENhbnZhc1NpemUoKTsKKyAgICBtX2RldmljZS0+cmVzaGFwZShjYW52
YXNTaXplLndpZHRoKCksIGNhbnZhc1NpemUuaGVpZ2h0KCkpOworfQorCitJbnRTaXplIFdlYkdQ
VVJlbmRlcmluZ0NvbnRleHQ6OmNsYW1wZWRDYW52YXNTaXplKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gSW50U2l6ZShjbGFtcChjYW52YXMoKS53aWR0aCgpLCAxLCBrTWF4VGV4dHVyZVNpemUpLAor
ICAgICAgICBjbGFtcChjYW52YXMoKS5oZWlnaHQoKSwgMSwga01heFRleHR1cmVTaXplKSk7Cit9
CisKK2Jvb2wgV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViR1BVUmVuZGVyaW5nQ29udGV4
dDo6c3RvcCgpCit7Cit9CisKK2NvbnN0IGNoYXIqIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ6OmFj
dGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiAiV2ViR1BVUmVuZGVyaW5n
Q29udGV4dCI7Cit9CisKK2Jvb2wgV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6Y2FuU3VzcGVuZEZv
ckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitQ
bGF0Zm9ybUxheWVyKiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0OjpwbGF0Zm9ybUxheWVyKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9kZXZpY2UtPnBsYXRmb3JtTGF5ZXIoKTsKK30KKwordm9pZCBX
ZWJHUFVSZW5kZXJpbmdDb250ZXh0OjptYXJrTGF5ZXJDb21wb3NpdGVkKCkKK3sKKyAgICBtX2Rl
dmljZS0+bWFya0xheWVyQ29tcG9zaXRlZCgpOworfQorCit2b2lkIFdlYkdQVVJlbmRlcmluZ0Nv
bnRleHQ6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIC8vIEZJWE1FOiBE
byB3ZSBuZWVkIHRvIHJlc2V0IHN0dWZmIGhlcmU/CisgICAgbV9kZXZpY2UtPnJlc2hhcGUod2lk
dGgsIGhlaWdodCk7Cit9CisKK1JlZlB0cjxXZWJHUFVMaWJyYXJ5PiBXZWJHUFVSZW5kZXJpbmdD
b250ZXh0OjpjcmVhdGVMaWJyYXJ5KGNvbnN0IFN0cmluZyBzb3VyY2VDb2RlKQoreworICAgIFJl
ZlB0cjxXZWJHUFVMaWJyYXJ5PiBsaWJyYXJ5ID0gV2ViR1BVTGlicmFyeTo6Y3JlYXRlKHRoaXMs
IHNvdXJjZUNvZGUpOworICAgIHJldHVybiBsaWJyYXJ5OworfQorCitSZWZQdHI8V2ViR1BVUmVu
ZGVyUGlwZWxpbmVTdGF0ZT4gV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlUmVuZGVyUGlw
ZWxpbmVTdGF0ZShXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7
CisgICAgUmVmUHRyPFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGU+IHN0YXRlID0gV2ViR1BVUmVu
ZGVyUGlwZWxpbmVTdGF0ZTo6Y3JlYXRlKHRoaXMsICZkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4g
c3RhdGU7Cit9CisKK1JlZlB0cjxXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZT4gV2ViR1BVUmVuZGVy
aW5nQ29udGV4dDo6Y3JlYXRlRGVwdGhTdGVuY2lsU3RhdGUoV2ViR1BVRGVwdGhTdGVuY2lsRGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICBSZWZQdHI8V2ViR1BVRGVwdGhTdGVuY2lsU3Rh
dGU+IHN0YXRlID0gV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGU6OmNyZWF0ZSh0aGlzLCAmZGVzY3Jp
cHRvcik7CisgICAgcmV0dXJuIHN0YXRlOworfQorCitSZWZQdHI8V2ViR1BVQ29tbWFuZFF1ZXVl
PiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVDb21tYW5kUXVldWUoKQoreworICAgIFJl
ZlB0cjxXZWJHUFVDb21tYW5kUXVldWU+IHF1ZXVlID0gV2ViR1BVQ29tbWFuZFF1ZXVlOjpjcmVh
dGUodGhpcyk7CisgICAgcmV0dXJuIHF1ZXVlOworfQorCitSZWZQdHI8V2ViR1BVRHJhd2FibGU+
IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ6Om5leHREcmF3YWJsZSgpCit7CisgICAgUmVmUHRyPFdl
YkdQVURyYXdhYmxlPiBkcmF3YWJsZSA9IFdlYkdQVURyYXdhYmxlOjpjcmVhdGUodGhpcyk7Cisg
ICAgcmV0dXJuIGRyYXdhYmxlOworfQorCitSZWZQdHI8V2ViR1BVQnVmZmVyPiBXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGVCdWZmZXIoQXJyYXlCdWZmZXJWaWV3JiBkYXRhKQoreworICAg
IFJlZlB0cjxXZWJHUFVCdWZmZXI+IGJ1ZmZlciA9IFdlYkdQVUJ1ZmZlcjo6Y3JlYXRlKHRoaXMs
ICZkYXRhKTsKKyAgICByZXR1cm4gYnVmZmVyOworfQorCitSZWZQdHI8V2ViR1BVVGV4dHVyZT4g
V2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlVGV4dHVyZShXZWJHUFVUZXh0dXJlRGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICBSZWZQdHI8V2ViR1BVVGV4dHVyZT4gdGV4dHVyZSA9
IFdlYkdQVVRleHR1cmU6OmNyZWF0ZSh0aGlzLCAmZGVzY3JpcHRvcik7CisgICAgcmV0dXJuIHRl
eHR1cmU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjk2M2RkNzQ1ZThlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyaW5nQ29udGV4
dC5oCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVk
ZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5o
IgorI2luY2x1ZGUgIkdQVURldmljZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJHUFVDb21tYW5kUXVldWU7Citj
bGFzcyBXZWJHUFVMaWJyYXJ5OworY2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
OworY2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZTsKK2NsYXNzIFdlYkdQVURlcHRoU3Rl
bmNpbERlc2NyaXB0b3I7CitjbGFzcyBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZTsKK2NsYXNzIFdl
YkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOworY2xhc3MgV2ViR1BVRHJhd2FibGU7CitjbGFzcyBX
ZWJHUFVCdWZmZXI7CitjbGFzcyBXZWJHUFVUZXh0dXJlOworY2xhc3MgV2ViR1BVVGV4dHVyZURl
c2NyaXB0b3I7CisKK2NsYXNzIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQgOiBwdWJsaWMgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CitwdWJsaWM6CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJHUFVSZW5kZXJpbmdDb250ZXh0PiBjcmVhdGUoSFRN
TENhbnZhc0VsZW1lbnQmKTsKKy8vICAgIHZpcnR1YWwgfldlYkdQVVJlbmRlcmluZ0NvbnRleHQo
KTsKKworICAgIGJvb2wgaXNHUFUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisK
KyAgICBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CisKKyAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKworICAgIHZvaWQg
bWFya0xheWVyQ29tcG9zaXRlZCgpOworCisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0IG92ZXJyaWRlOworCisgICAgUmVmUHRyPE1ldGFsRGV2aWNlPiBkZXZpY2UoKSB7
IHJldHVybiBtX2RldmljZTsgfQorCisgICAgLy8gV2ViR1BVIGVudHJ5IHBvaW50cworCisgICAg
UmVmUHRyPFdlYkdQVUxpYnJhcnk+IGNyZWF0ZUxpYnJhcnkoY29uc3QgU3RyaW5nKTsKKworICAg
IFJlZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlPiBjcmVhdGVSZW5kZXJQaXBlbGluZVN0
YXRlKFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYpOworCisgICAgUmVmUHRyPFdlYkdQ
VURlcHRoU3RlbmNpbFN0YXRlPiBjcmVhdGVEZXB0aFN0ZW5jaWxTdGF0ZShXZWJHUFVEZXB0aFN0
ZW5jaWxEZXNjcmlwdG9yJik7CisKKyAgICBSZWZQdHI8V2ViR1BVQ29tbWFuZFF1ZXVlPiBjcmVh
dGVDb21tYW5kUXVldWUoKTsKKworICAgIFJlZlB0cjxXZWJHUFVEcmF3YWJsZT4gbmV4dERyYXdh
YmxlKCk7CisKKyAgICBSZWZQdHI8V2ViR1BVQnVmZmVyPiBjcmVhdGVCdWZmZXIoQXJyYXlCdWZm
ZXJWaWV3JiBkYXRhKTsKKworICAgIFJlZlB0cjxXZWJHUFVUZXh0dXJlPiBjcmVhdGVUZXh0dXJl
KFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yJik7CisKK3Byb3RlY3RlZDoKKyAgICAvLyBBY3RpdmVE
T01PYmplY3QKKyAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOworICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVj
dE5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1
c3BlbnNpb24oKSBjb25zdCBvdmVycmlkZTsKKworICAgIEludFNpemUgY2xhbXBlZENhbnZhc1Np
emUoKSBjb25zdDsKKyAgICB2b2lkIGluaXRpYWxpemVOZXdDb250ZXh0KCk7CisKK3ByaXZhdGU6
CisvLyAgICBXZWJHUFVSZW5kZXJpbmdDb250ZXh0KEhUTUxDYW52YXNFbGVtZW50Kik7Ly8sIEdy
YXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzKTsKKyAgICBXZWJHUFVSZW5kZXJpbmdDb250ZXh0
KEhUTUxDYW52YXNFbGVtZW50JiwgUGFzc1JlZlB0cjxNZXRhbERldmljZT4pOworCisgICAgUmVm
UHRyPE1ldGFsRGV2aWNlPiBtX2RldmljZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DQU5WQVNSRU5ERVJJTkdDT05URVhUKFdlYkNvcmU6
OldlYkdQVVJlbmRlcmluZ0NvbnRleHQsIGlzR1BVKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmlkbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWE4MTQzNDBiNjMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJpbmdDb250
ZXh0LmlkbApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0
UnVudGltZT1XZWJHUFUsCisgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCisgICAgRG9Ob3RDaGVj
a0NvbnN0YW50cworXSBpbnRlcmZhY2UgV2ViR1BVUmVuZGVyaW5nQ29udGV4dCB7CisKKyAgICAv
LyBQaXhlbCBmb3JtYXRzCisKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgUGl4ZWxGb3JtYXRCR1JB
OFVub3JtID0gODA7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFBpeGVsRm9ybWF0RGVwdGgzMkZs
b2F0ID0gMjUyOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBQaXhlbEZvcm1hdFN0ZW5jaWw4ID0g
MjUzOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBQaXhlbEZvcm1hdEludmFsaWQgPSAwOworCisg
ICAgLy8gTG9hZCBhY3Rpb25zCisKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgTG9hZEFjdGlvbkRv
bnRDYXJlID0gMDsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgTG9hZEFjdGlvbkxvYWQgPSAxOwor
ICAgIGNvbnN0IHVuc2lnbmVkIGludCBMb2FkQWN0aW9uQ2xlYXIgPSAyOworCisgICAgLy8gU3Rv
cmUgYWN0aW9ucworCisgICAgY29uc3QgdW5zaWduZWQgaW50IFN0b3JlQWN0aW9uRG9udENhcmUg
PSAwOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBTdG9yZUFjdGlvblN0b3JlID0gMTsKKyAgICBj
b25zdCB1bnNpZ25lZCBpbnQgU3RvcmVBY3Rpb25NdWx0aXNhbXBsZVJlc29sdmUgPSAyOworCisg
ICAgLy8gUHJpbWl0aXZlIHR5cGVzCisKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgUHJpbWl0aXZl
VHlwZVBvaW50ID0gMDsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgUHJpbWl0aXZlVHlwZUxpbmUg
PSAxOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBQcmltaXRpdmVUeXBlTGluZVN0cmlwID0gMjsK
KyAgICBjb25zdCB1bnNpZ25lZCBpbnQgUHJpbWl0aXZlVHlwZVRyaWFuZ2xlID0gMzsKKyAgICBj
b25zdCB1bnNpZ25lZCBpbnQgUHJpbWl0aXZlVHlwZVRyaWFuZ2xlU3RyaXAgPSA0OworCisgICAg
Ly8gQ29tcGFyaXNvbiBmdW5jdGlvbnMKKworICAgIGNvbnN0IHVuc2lnbmVkIGludCBDb21wYXJl
RnVuY3Rpb25OZXZlciA9IDA7CisgICAgY29uc3QgdW5zaWduZWQgaW50IENvbXBhcmVGdW5jdGlv
bkxlc3MgPSAxOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBDb21wYXJlRnVuY3Rpb25FcXVhbCA9
IDI7CisgICAgY29uc3QgdW5zaWduZWQgaW50IENvbXBhcmVGdW5jdGlvbkxlc3NFcXVhbCA9IDM7
CisgICAgY29uc3QgdW5zaWduZWQgaW50IENvbXBhcmVGdW5jdGlvbkdyZWF0ZXIgPSA0OworICAg
IGNvbnN0IHVuc2lnbmVkIGludCBDb21wYXJlRnVuY3Rpb25Ob3RFcXVhbCA9IDU7CisgICAgY29u
c3QgdW5zaWduZWQgaW50IENvbXBhcmVGdW5jdGlvbkdyZWF0ZXJFcXVhbCA9IDY7CisgICAgY29u
c3QgdW5zaWduZWQgaW50IENvbXBhcmVGdW5jdGlvbkFsd2F5cyA9IDc7CisKKyAgICAvLyBUZXh0
dXJlIFR5cGVzCisKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgVGV4dHVyZVR5cGUxRCA9IDA7Cisg
ICAgY29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVUeXBlMURBcnJheSA9IDE7CisgICAgY29uc3Qg
dW5zaWduZWQgaW50IFRleHR1cmVUeXBlMkQgPSAyOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBU
ZXh0dXJlVHlwZTJEQXJyYXkgPSAzOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBUZXh0dXJlVHlw
ZTJETXVsdGlzYW1wbGUgPSA0OworICAgIGNvbnN0IHVuc2lnbmVkIGludCBUZXh0dXJlVHlwZUN1
YmUgPSA1OworICAgIGNvbnN0IHVuc2lnbmVkIGludCBUZXh0dXJlVHlwZUN1YmVBcnJheSA9IDY7
CisgICAgY29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVUeXBlM0QgPSA3OworCisgICAgLy8gU3Rv
cmFnZSBtb2RlcworCisgICAgY29uc3QgdW5zaWduZWQgaW50IFN0b3JhZ2VNb2RlU2hhcmVkICA9
IDA7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFN0b3JhZ2VNb2RlTWFuYWdlZCA9IDE7CisgICAg
Y29uc3QgdW5zaWduZWQgaW50IFN0b3JhZ2VNb2RlUHJpdmF0ZSA9IDI7CisKKyAgICAvLyBVc2Fn
ZQorCisgICAgY29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVVc2FnZVVua25vd24gPSAweDAwMDA7
CisgICAgY29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVVc2FnZVNoYWRlclJlYWQgPSAweDAwMDE7
CisgICAgY29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVVc2FnZVNoYWRlcldyaXRlID0gMHgwMDAy
OworICAgIGNvbnN0IHVuc2lnbmVkIGludCBUZXh0dXJlVXNhZ2VSZW5kZXJUYXJnZXQgPSAweDAw
MDQ7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVVc2FnZVBpeGVsRm9ybWF0VmlldyA9
IDB4MDAxMDsKKworICAgIC8vIEVudHJ5IHBvaW50cworCisgICAgV2ViR1BVTGlicmFyeSBjcmVh
dGVMaWJyYXJ5KERPTVN0cmluZyBzb3VyY2VDb2RlKTsKKworICAgIFdlYkdQVVJlbmRlclBpcGVs
aW5lU3RhdGU/IGNyZWF0ZVJlbmRlclBpcGVsaW5lU3RhdGUoV2ViR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yIGRlc2NyaXB0b3IpOworICAgIFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlPyBjcmVh
dGVEZXB0aFN0ZW5jaWxTdGF0ZShXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yIGRlc2NyaXB0
b3IpOworCisgICAgV2ViR1BVQ29tbWFuZFF1ZXVlPyBjcmVhdGVDb21tYW5kUXVldWUoKTsKKwor
ICAgIFdlYkdQVURyYXdhYmxlPyBuZXh0RHJhd2FibGUoKTsKKworICAgIFdlYkdQVUJ1ZmZlcj8g
Y3JlYXRlQnVmZmVyKEFycmF5QnVmZmVyVmlldyBkYXRhKTsKKworICAgIFdlYkdQVVRleHR1cmU/
IGNyZWF0ZVRleHR1cmUoV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7CisKK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmUuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iMmQ0MzU3MDBlMQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmUuY3BwCkBAIC0w
LDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BVVGV4dHVyZS5oIgorCisjaWYg
RU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVVRleHR1cmUuaCIKKyNpbmNsdWRlICJXZWJH
UFVSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVVGV4dHVyZURlc2NyaXB0b3Iu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8V2ViR1BVVGV4dHVyZT4gV2ViR1BVVGV4
dHVyZTo6Y3JlYXRlRnJvbURyYXdhYmxlVGV4dHVyZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBj
b250ZXh0LCBQYXNzUmVmUHRyPE1ldGFsVGV4dHVyZT4gZHJhd2FibGVUZXh0dXJlKQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVRleHR1cmUoY29udGV4dCwgZHJhd2FibGVUZXh0
dXJlKSk7Cit9CisKK1JlZjxXZWJHUFVUZXh0dXJlPiBXZWJHUFVUZXh0dXJlOjpjcmVhdGUoV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IqIGRl
c2NyaXB0b3IpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVVGV4dHVyZShjb250
ZXh0LCBkZXNjcmlwdG9yKSk7Cit9CisKK1dlYkdQVVRleHR1cmU6OldlYkdQVVRleHR1cmUoV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxNZXRhbFRleHR1cmU+IGRy
YXdhYmxlVGV4dHVyZSkKKyAgICA6IFdlYkdQVU9iamVjdChjb250ZXh0KQorICAgICwgbV90ZXh0
dXJlKGRyYXdhYmxlVGV4dHVyZSkKK3sKK30KKworV2ViR1BVVGV4dHVyZTo6V2ViR1BVVGV4dHVy
ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBXZWJHUFVUZXh0dXJlRGVzY3JpcHRv
ciogZGVzY3JpcHRvcikKKyAgICA6IFdlYkdQVU9iamVjdChjb250ZXh0KQoreworICAgIG1fdGV4
dHVyZSA9IGNvbnRleHQtPmRldmljZSgpLT5jcmVhdGVUZXh0dXJlKGRlc2NyaXB0b3ItPnRleHR1
cmVEZXNjcmlwdG9yKCkpOworfQorCitXZWJHUFVUZXh0dXJlOjp+V2ViR1BVVGV4dHVyZSgpCit7
Cit9CisKK3Vuc2lnbmVkIGxvbmcgV2ViR1BVVGV4dHVyZTo6d2lkdGgoKSBjb25zdAoreworICAg
IGlmICghbV90ZXh0dXJlKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICByZXR1cm4gbV90
ZXh0dXJlLT53aWR0aCgpOworfQorCit1bnNpZ25lZCBsb25nIFdlYkdQVVRleHR1cmU6OmhlaWdo
dCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3RleHR1cmUpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgcmV0dXJuIG1fdGV4dHVyZS0+aGVpZ2h0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmNkN2U3YWFhY2U3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZS5o
CkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJX
ZWJHUFVPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVUZXh0dXJl
OworY2xhc3MgV2ViR1BVVGV4dHVyZURlc2NyaXB0b3I7CisKK2NsYXNzIFdlYkdQVVRleHR1cmUg
OiBwdWJsaWMgV2ViR1BVT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJHUFVUZXh0
dXJlKCk7CisgICAgc3RhdGljIFJlZjxXZWJHUFVUZXh0dXJlPiBjcmVhdGVGcm9tRHJhd2FibGVU
ZXh0dXJlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBQYXNzUmVmUHRyPE1ldGFsVGV4dHVyZT4p
OworICAgIHN0YXRpYyBSZWY8V2ViR1BVVGV4dHVyZT4gY3JlYXRlKFdlYkdQVVJlbmRlcmluZ0Nv
bnRleHQqLCBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvciopOworCisgICAgdW5zaWduZWQgbG9uZyB3
aWR0aCgpIGNvbnN0OworICAgIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KCkgY29uc3Q7CisKKyAgICBN
ZXRhbFRleHR1cmUqIHRleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0K
KworcHJpdmF0ZToKKyAgICBXZWJHUFVUZXh0dXJlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBQ
YXNzUmVmUHRyPE1ldGFsVGV4dHVyZT4pOworICAgIFdlYkdQVVRleHR1cmUoV2ViR1BVUmVuZGVy
aW5nQ29udGV4dCosIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yKik7CisKKyAgICBSZWZQdHI8TWV0
YWxUZXh0dXJlPiBtX3RleHR1cmU7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRl
eHR1cmUuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZS5pZGwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjVjZWRiMDZjYmU2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZS5p
ZGwKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGlt
ZT1XZWJHUFUKK10gaW50ZXJmYWNlIFdlYkdQVVRleHR1cmUgeworCisgICAgcmVhZG9ubHkgYXR0
cmlidXRlIHVuc2lnbmVkIGxvbmcgd2lkdGg7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgaGVpZ2h0OworCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwLi45OTIzNzUxNDQ5NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmNwcApAQCAtMCwwICsx
LDE0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oIgor
CisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVVRleHR1cmVEZXNjcmlwdG9yLmgi
CisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1JlZjxXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcj4gV2ViR1BVVGV4dHVyZURlc2NyaXB0
b3I6OmNyZWF0ZSh1bnNpZ25lZCBsb25nIHBpeGVsRm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRo
LCB1bnNpZ25lZCBsb25nIGhlaWdodCwgYm9vbCBtaXBtYXBwZWQpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IocGl4ZWxGb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIG1pcG1hcHBlZCkpOworfQorCitXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcjo6V2ViR1BV
VGV4dHVyZURlc2NyaXB0b3IodW5zaWduZWQgbG9uZyBwaXhlbEZvcm1hdCwgdW5zaWduZWQgbG9u
ZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQsIGJvb2wgbWlwbWFwcGVkKQorICAgIDogV2Vi
R1BVT2JqZWN0KCkKK3sKKyAgICBtX3RleHR1cmVEZXNjcmlwdG9yID0gTWV0YWxUZXh0dXJlRGVz
Y3JpcHRvcjo6Y3JlYXRlKHBpeGVsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBtaXBtYXBwZWQpOwor
fQorCitXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcjo6fldlYkdQVVRleHR1cmVEZXNjcmlwdG9yKCkK
K3sKK30KKwordW5zaWduZWQgbG9uZyBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcjo6d2lkdGgoKSBj
b25zdAoreworICAgIGlmICghbV90ZXh0dXJlRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICByZXR1cm4gbV90ZXh0dXJlRGVzY3JpcHRvci0+d2lkdGgoKTsKK30KKwordm9pZCBX
ZWJHUFVUZXh0dXJlRGVzY3JpcHRvcjo6c2V0V2lkdGgodW5zaWduZWQgbG9uZyB3aWR0aCkKK3sK
KyAgICBpZiAoIW1fdGV4dHVyZURlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
dGV4dHVyZURlc2NyaXB0b3ItPnNldFdpZHRoKHdpZHRoKTsKK30KKwordW5zaWduZWQgbG9uZyBX
ZWJHUFVUZXh0dXJlRGVzY3JpcHRvcjo6aGVpZ2h0KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fdGV4
dHVyZURlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIG1fdGV4dHVy
ZURlc2NyaXB0b3ItPmhlaWdodCgpOworfQorCit2b2lkIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9y
OjpzZXRIZWlnaHQodW5zaWduZWQgbG9uZyBoZWlnaHQpCit7CisgICAgaWYgKCFtX3RleHR1cmVE
ZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV90ZXh0dXJlRGVzY3JpcHRv
ci0+c2V0SGVpZ2h0KGhlaWdodCk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgV2ViR1BVVGV4dHVyZURl
c2NyaXB0b3I6OnNhbXBsZUNvdW50KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fdGV4dHVyZURlc2Ny
aXB0b3IpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIG1fdGV4dHVyZURlc2NyaXB0
b3ItPnNhbXBsZUNvdW50KCk7Cit9CisKK3ZvaWQgV2ViR1BVVGV4dHVyZURlc2NyaXB0b3I6OnNl
dFNhbXBsZUNvdW50KHVuc2lnbmVkIGxvbmcgc2FtcGxlQ291bnQpCit7CisgICAgaWYgKCFtX3Rl
eHR1cmVEZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV90ZXh0dXJlRGVz
Y3JpcHRvci0+c2V0U2FtcGxlQ291bnQoc2FtcGxlQ291bnQpOworfQorCit1bnNpZ25lZCBsb25n
IFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yOjp0ZXh0dXJlVHlwZSgpIGNvbnN0Cit7CisgICAgaWYg
KCFtX3RleHR1cmVEZXNjcmlwdG9yKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBt
X3RleHR1cmVEZXNjcmlwdG9yLT50ZXh0dXJlVHlwZSgpOworfQorCit2b2lkIFdlYkdQVVRleHR1
cmVEZXNjcmlwdG9yOjpzZXRUZXh0dXJlVHlwZSh1bnNpZ25lZCBsb25nIHRleHR1cmVUeXBlKQor
eworICAgIGlmICghbV90ZXh0dXJlRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOworICAgIAor
ICAgIG1fdGV4dHVyZURlc2NyaXB0b3ItPnNldFRleHR1cmVUeXBlKHRleHR1cmVUeXBlKTsKK30K
KwordW5zaWduZWQgbG9uZyBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcjo6c3RvcmFnZU1vZGUoKSBj
b25zdAoreworICAgIGlmICghbV90ZXh0dXJlRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICByZXR1cm4gbV90ZXh0dXJlRGVzY3JpcHRvci0+c3RvcmFnZU1vZGUoKTsKK30KKwor
dm9pZCBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcjo6c2V0U3RvcmFnZU1vZGUodW5zaWduZWQgbG9u
ZyBzdG9yYWdlTW9kZSkKK3sKKyAgICBpZiAoIW1fdGV4dHVyZURlc2NyaXB0b3IpCisgICAgICAg
IHJldHVybjsKKyAgICAKKyAgICBtX3RleHR1cmVEZXNjcmlwdG9yLT5zZXRTdG9yYWdlTW9kZShz
dG9yYWdlTW9kZSk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgV2ViR1BVVGV4dHVyZURlc2NyaXB0b3I6
OnVzYWdlKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fdGV4dHVyZURlc2NyaXB0b3IpCisgICAgICAg
IHJldHVybiAwOworCisgICAgcmV0dXJuIG1fdGV4dHVyZURlc2NyaXB0b3ItPnVzYWdlKCk7Cit9
CisKK3ZvaWQgV2ViR1BVVGV4dHVyZURlc2NyaXB0b3I6OnNldFVzYWdlKHVuc2lnbmVkIGxvbmcg
dXNhZ2UpCit7CisgICAgaWYgKCFtX3RleHR1cmVEZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX3RleHR1cmVEZXNjcmlwdG9yLT5zZXRVc2FnZSh1c2FnZSk7Cit9CisgICAgCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLjYwZTA3MzhhYmIxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaApAQCAtMCww
ICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BVRW51
bXMuaCIKKyNpbmNsdWRlICJXZWJHUFVPYmplY3QuaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVUZXh0dXJlRGVzY3JpcHRvcjsK
KworY2xhc3MgV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IgOiBwdWJsaWMgV2ViR1BVT2JqZWN0IHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJHUFVUZXh0dXJlRGVzY3JpcHRvcigpOworICAgIHN0
YXRpYyBSZWY8V2ViR1BVVGV4dHVyZURlc2NyaXB0b3I+IGNyZWF0ZSh1bnNpZ25lZCBsb25nIHBp
eGVsRm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCwgYm9v
bCBtaXBtYXBwZWQpOworCisgICAgdW5zaWduZWQgbG9uZyB3aWR0aCgpIGNvbnN0OworICAgIHZv
aWQgc2V0V2lkdGgodW5zaWduZWQgbG9uZyk7CisKKyAgICB1bnNpZ25lZCBsb25nIGhlaWdodCgp
IGNvbnN0OworICAgIHZvaWQgc2V0SGVpZ2h0KHVuc2lnbmVkIGxvbmcpOworCisgICAgdW5zaWdu
ZWQgbG9uZyBzYW1wbGVDb3VudCgpIGNvbnN0OworICAgIHZvaWQgc2V0U2FtcGxlQ291bnQodW5z
aWduZWQgbG9uZyk7CisKKyAgICB1bnNpZ25lZCBsb25nIHRleHR1cmVUeXBlKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXRUZXh0dXJlVHlwZSh1bnNpZ25lZCBsb25nKTsKKworICAgIHVuc2lnbmVkIGxv
bmcgc3RvcmFnZU1vZGUoKSBjb25zdDsKKyAgICB2b2lkIHNldFN0b3JhZ2VNb2RlKHVuc2lnbmVk
IGxvbmcpOworCisgICAgdW5zaWduZWQgbG9uZyB1c2FnZSgpIGNvbnN0OworICAgIHZvaWQgc2V0
VXNhZ2UodW5zaWduZWQgbG9uZyk7CisKKyAgICBNZXRhbFRleHR1cmVEZXNjcmlwdG9yKiB0ZXh0
dXJlRGVzY3JpcHRvcigpIHsgcmV0dXJuIG1fdGV4dHVyZURlc2NyaXB0b3IuZ2V0KCk7IH0KKwor
cHJpdmF0ZToKKyAgICBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcih1bnNpZ25lZCBsb25nIHBpeGVs
Rm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCwgYm9vbCBt
aXBtYXBwZWQpOworCisgICAgUmVmUHRyPE1ldGFsVGV4dHVyZURlc2NyaXB0b3I+IG1fdGV4dHVy
ZURlc2NyaXB0b3I7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0
b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0
b3IuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lMmFkMjY0ZDRk
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRl
eHR1cmVEZXNjcmlwdG9yLmlkbApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbnN0cnVjdG9yKHVuc2lnbmVkIGxv
bmcgcGl4ZWxGb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0
LCBib29sZWFuIG1pcG1hcHBlZCksCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJs
ZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGludGVyZmFjZSBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvciB7
CisKKyAgICBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB0ZXh0dXJlVHlwZTsKKworICAgIGF0dHJp
YnV0ZSB1bnNpZ25lZCBsb25nIHdpZHRoOworICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGhl
aWdodDsKKyAgICBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBzYW1wbGVDb3VudDsKKworICAgIGF0
dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHN0b3JhZ2VNb2RlOworCisgICAgYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgdXNhZ2U7CisKK307Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304121</attachid>
            <date>2017-03-10 20:38:14 -0800</date>
            <delta_ts>2017-03-10 20:38:14 -0800</delta_ts>
            <desc>1. Frontend patch that should build when WEBGPU not defined</desc>
            <filename>0001-WebGPU-prototype-Front-End.patch</filename>
            <type>text/plain</type>
            <size>274860</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSAwMjZmZmU5ODQ0OGQ3ZDY5ZDVmMGU0ODIyY2FmZTY2NmUzYjQ3ZjRkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBGcmks
IDEwIE1hciAyMDE3IDE4OjE2OjU0IC0wODAwClN1YmplY3Q6IFtQQVRDSF0gV2ViR1BVIHByb3Rv
dHlwZSAtIEZyb250LUVuZAogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2Nzk1MgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpUaGlzIHBhdGNoIGFkZHMgYWxs
IG9mIHRoZSByZWxldmFudCBmcm9udC1lbmQgZmlsZXMsIGFuZCBidWlsZHMgc3VjY2Vzc2Z1bGx5
IHdoZW4KRU5BQkxFKFdFQkdQVSkgaXMgb2ZmLgoKKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZzogRm9yIEVXUywgdHVybiBvZiBXZWJHUFUgaW4gV2ViQ29yZS4gVGhpcwpz
aG91bGQgbm90IGJlIGNoZWNrZWQgaW4uCgoqIERlcml2ZWRTb3VyY2VzLm1ha2U6IEFkZCBXZWJH
UFUgSURMcy4KKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBXZWJHUFUg
ZmlsZXMuCgpKUyBjdXN0b20gYmluZGluZ3MuCiogYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3Rv
bS5jcHA6IFRoaXMgZmlsZSBpcyBtaXNzaW5nIGEgV2ViR1BVIGNsYXVzZSBvZiBnZXRDU1NDYW52
YXNDb250ZXh0KCkKd2hpY2ggaXMgaW5jbHVkZWQgaW4gYSBsYXRlciBwYXRjaC4KKiBiaW5kaW5n
cy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcDoKKFdlYkNvcmU6OkpTSFRNTENhbnZh
c0VsZW1lbnQ6OmdldENvbnRleHQpOgoqIGJpbmRpbmdzL2pzL0pTV2ViR1BVUmVuZGVyUGFzc0F0
dGFjaG1lbnREZXNjcmlwdG9yQ3VzdG9tLmNwcDogQWRkZWQuCiogYmluZGluZ3MvanMvSlNXZWJH
UFVSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDogQWRkZWQuCgoqIGh0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwOgooV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQpOgooV2Vi
Q29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmlzV2ViR1BVVHlwZSk6CihXZWJDb3JlOjpIVE1MQ2Fu
dmFzRWxlbWVudDo6Z2V0Q29udGV4dFdlYkdQVSk6CihXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVu
dDo6cmVzZXQpOgooV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KToKKFdlYkNvcmU6
OkhUTUxDYW52YXNFbGVtZW50Ojppc0dQVSk6CiogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgoq
IGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKFdlYkNvcmU6OkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQ6OmlzR1BVKToKCi5jcHAsIC5oLCAuaWRsIGZpbGVzLCB3cmFwcGVkIGlu
IFdFQkdQVSBjb25kaXRpb25hbCwgYW5kIGVuYWJsZWQgYXQgcnVudGltZS4KKiBodG1sL2NhbnZh
cy9XZWJHUFVCdWZmZXIKKiBodG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kQnVmZmVyCiogaHRtbC9j
YW52YXMvV2ViR1BVQ29tbWFuZFF1ZXVlCiogaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2ls
RGVzY3JpcHRvcgoqIGh0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlCiogaHRtbC9j
YW52YXMvV2ViR1BVRHJhd2FibGUKKiBodG1sL2NhbnZhcy9XZWJHUFVFbnVtcwoqIGh0bWwvY2Fu
dmFzL1dlYkdQVUZ1bmN0aW9uCiogaHRtbC9jYW52YXMvV2ViR1BVTGlicmFyeQoqIGh0bWwvY2Fu
dmFzL1dlYkdQVU9iamVjdCAobm8gSURMKQoqIGh0bWwvY2FudmFzL1dlYkdQVVJlbmRlckNvbW1h
bmRFbmNvZGVyCiogaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yCiogaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IKKiBodG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
cgoqIGh0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yCiogaHRtbC9jYW52YXMv
V2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yCiogaHRtbC9jYW52
YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yCiogaHRtbC9jYW52YXMvV2ViR1BVUmVu
ZGVyUGlwZWxpbmVTdGF0ZQoqIGh0bWwvY2FudmFzL1dlYkdQVVJlbmRlcmluZ0NvbnRleHQKKiBo
dG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlCiogaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZURlc2Ny
aXB0b3IKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICA1OCArKysrCiAuLi4vV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZyB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSAg
ICAgICAgICAgICAgICAgfCAgMjEgKy0KIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiAgIHwgMzI4ICsrKysrKysrKysrKysrKysrKysrLQogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAgICAgfCAgIDYgKy0KIC4uLi9i
aW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCAgICAgIHwgIDExICstCiAu
Li5TV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yQ3VzdG9tLmNwcCB8ICA1MyAr
KysrCiAuLi4vYmluZGluZ3MvanMvSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCB8
ICA0MiArKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwICAgICAg
ICAgIHwgIDU2ICsrKy0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaCAg
ICAgICAgICAgIHwgICA5ICstCiAuLi4vV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0LmggICB8ICAgMyArLQogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
QnVmZmVyLmNwcCAgICAgICAgfCAgNzAgKysrKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVUJ1ZmZlci5oICAgICAgICAgIHwgIDUzICsrKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVUJ1ZmZlci5pZGwgICAgICAgIHwgIDM0ICsrKwogU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgfCAgODUgKysrKysrCiBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kQnVmZmVyLmggICB8ICA2MiArKysrCiBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kQnVmZmVyLmlkbCB8ICAzNSAr
KysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRRdWV1ZS5jcHAgIHwg
IDc2ICsrKysrCiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kUXVldWUu
aCAgICB8ICA1OSArKysrCiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5k
UXVldWUuaWRsICB8ICAzNSArKysKIC4uLi9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxE
ZXNjcmlwdG9yLmNwcCAgIHwgMTAxICsrKysrKysKIC4uLi9odG1sL2NhbnZhcy9XZWJHUFVEZXB0
aFN0ZW5jaWxEZXNjcmlwdG9yLmggICAgIHwgIDY1ICsrKysKIC4uLi9odG1sL2NhbnZhcy9XZWJH
UFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmlkbCAgIHwgIDUxICsrKysKIC4uLi9odG1sL2NhbnZh
cy9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgICAgICAgIHwgIDcyICsrKysrCiAuLi4vV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oICB8ICA1NyArKysrCiAu
Li4vaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaWRsICAgICAgICB8ICAzMyAr
KysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURyYXdhYmxlLmNwcCAgICAgIHwg
IDY4ICsrKysrCiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEcmF3YWJsZS5oICAg
ICAgICB8ICA1NCArKysrCiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEcmF3YWJs
ZS5pZGwgICAgICB8ICAzMyArKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUVu
dW1zLmNwcCAgICAgICAgIHwgMTA2ICsrKysrKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVUVudW1zLmggICAgICAgICAgIHwgIDU0ICsrKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVUVudW1zLmlkbCAgICAgICAgIHwgMjc0ICsrKysrKysrKysrKysrKysrCiBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVGdW5jdGlvbi5jcHAgICAgICB8ICA2MyAr
KysrCiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVGdW5jdGlvbi5oICAgICAgICB8
ICA1NCArKysrCiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVGdW5jdGlvbi5pZGwg
ICAgICB8ICAzMyArKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUxpYnJhcnku
Y3BwICAgICAgIHwgIDkwICsrKysrKwogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
TGlicmFyeS5oICAgICAgICAgfCAgNjMgKysrKwogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVTGlicmFyeS5pZGwgICAgICAgfCAgMzcgKysrCiBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHUFVPYmplY3QuY3BwICAgICAgICB8ICA1MSArKysrCiBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHUFVPYmplY3QuaCAgICAgICAgICB8ICA1OSArKysrCiAuLi4vaHRtbC9j
YW52YXMvV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwICAgICB8IDEwNyArKysrKysrCiAu
Li4vaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaCAgICAgICB8ICA2NSAr
KysrCiAuLi4vaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaWRsICAgICB8
ICAzOSArKysKIC4uLi9XZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICAg
ICAgIHwgIDk4ICsrKysrKwogLi4uL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3IuaCAgfCAgNjkgKysrKysKIC4uLi9XZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3IuaWRsICAgICAgIHwgIDM4ICsrKwogLi4uL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAgfCAgNzggKysrKysKIC4uLi9XZWJHUFVSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oICAgIHwgIDU4ICsrKysKIC4uLi9XZWJHUFVSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5pZGwgIHwgIDMzICsrKwogLi4uL1dlYkdQ
VVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAgfCAgNzcgKysrKysKIC4u
Li9XZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oICAgIHwgIDU0ICsr
KysKIC4uLi9XZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5pZGwgIHwg
IDMzICsrKwogLi4uL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcCAg
ICAgfCAgODIgKysrKysrCiAuLi4vaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3IuaCAgICAgICB8ICA2MSArKysrCiAuLi4vaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3IuaWRsICAgICB8ICAzOSArKysKIC4uLmJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IuY3BwIHwgIDY5ICsrKysrCiAuLi5XZWJHUFVSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCB8ICA1NCArKysrCiAuLi5iR1BVUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmlkbCB8ICAzMyArKysKIC4uLi9odG1sL2Nh
bnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwIHwgMTQxICsrKysrKysrKwog
Li4uL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICAgfCAgNzYg
KysrKysKIC4uLi9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRs
IHwgIDQzICsrKwogLi4uL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuY3Bw
ICAgICAgfCAgNzIgKysrKysKIC4uLi9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZVN0
YXRlLmggICAgICAgIHwgIDU3ICsrKysKIC4uLi9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBl
bGluZVN0YXRlLmlkbCAgICAgIHwgIDMzICsrKwogLi4uL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dC5jcHAgfCAyMDQgKysrKysrKysrKysrKwogLi4uL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oICAgfCAxMDMgKysrKysrKwogLi4u
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5pZGwgfCAxMTEgKysr
KysrKwogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZS5jcHAgICAgICAg
fCAgODEgKysrKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmUuaCAg
ICAgICAgIHwgIDU3ICsrKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1
cmUuaWRsICAgICAgIHwgIDM0ICsrKwogLi4uL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmVEZXNj
cmlwdG9yLmNwcCAgICAgICAgfCAxNDkgKysrKysrKysrKwogLi4uL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaCAgfCAgNzIgKysrKysKIC4uLi9odG1sL2NhbnZh
cy9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5pZGwgICAgICAgIHwgIDQyICsrKwogNzMgZmlsZXMg
Y2hhbmdlZCwgNDg2OSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR1BVUmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yQ3VzdG9tLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV2ViR1BVUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVCdWZmZXIuY3Bw
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQnVm
ZmVyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVCdWZmZXIuaWRsCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kQnVmZmVyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kQnVmZmVyLmlkbAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRR
dWV1ZS5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHUFVDb21tYW5kUXVldWUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRRdWV1ZS5pZGwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRo
U3RlbmNpbERlc2NyaXB0b3IuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaWRsCiBjcmVhdGUgbW9kZSAx
MDA2NDQgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUu
Y3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
RGVwdGhTdGVuY2lsU3RhdGUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmlkbAogY3JlYXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURyYXdhYmxlLmNwcAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURyYXdhYmxlLmgKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEcmF3YWJs
ZS5pZGwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVFbnVtcy5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVFbnVtcy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR1BVRW51bXMuaWRsCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24uY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24uaAogY3JlYXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUZ1bmN0aW9uLmlkbAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUxpYnJhcnkuY3BwCiBj
cmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVTGlicmFy
eS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
TGlicmFyeS5pZGwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVPYmplY3QuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVT2JqZWN0LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5jcHAKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJDb21tYW5kRW5j
b2Rlci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaWRsCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNw
cAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
LmlkbAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcAogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5pZGwKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaWRsCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3IuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmlkbAogY3JlYXRl
IG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5pZGwKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IuaWRsCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmgKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBl
bGluZVN0YXRlLmlkbAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyaW5nQ29udGV4
dC5pZGwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVUZXh0dXJlLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVVRleHR1cmUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVVRleHR1cmUuaWRsCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0
b3IuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VVRleHR1cmVEZXNjcmlwdG9yLmlkbAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxNWM2YWJlMzE1MC4uZmFlOTg4
MzFhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAxNy0wMy0xMCAgSm9uIExlZSAg
PGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR1BVIHByb3RvdHlwZSAtIEZyb250LUVu
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3OTUy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBhZGRzIGFsbCBvZiB0aGUgcmVsZXZhbnQgZnJvbnQtZW5kIGZpbGVzLCBhbmQgYnVpbGRz
IHN1Y2Nlc3NmdWxseSB3aGVuCisgICAgICAgIEVOQUJMRShXRUJHUFUpIGlzIG9mZi4KKworICAg
ICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOiBGb3IgRVdTLCB0
dXJuIG9mIFdlYkdQVSBpbiBXZWJDb3JlLiBUaGlzCisgICAgICAgIHNob3VsZCBub3QgYmUgY2hl
Y2tlZCBpbi4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6IEFkZCBXZWJHUFUgSURM
cy4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBXZWJH
UFUgZmlsZXMuCisKKyAgICAgICAgSlMgY3VzdG9tIGJpbmRpbmdzLgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwOiBUaGlzIGZpbGUgaXMgbWlzc2luZyBhIFdlYkdQ
VSBjbGF1c2Ugb2YgZ2V0Q1NTQ2FudmFzQ29udGV4dCgpCisgICAgICAgIHdoaWNoIGlzIGluY2x1
ZGVkIGluIGEgbGF0ZXIgcGF0Y2guCisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQ2FudmFz
RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxDYW52YXNFbGVtZW50
OjpnZXRDb250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYkdQVVJlbmRlclBhc3NB
dHRhY2htZW50RGVzY3JpcHRvckN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTV2ViR1BVUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6IEFkZGVkLgorCisgICAgICAg
ICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2Fu
dmFzRWxlbWVudDo6Z2V0Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxl
bWVudDo6aXNXZWJHUFVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50
OjpnZXRDb250ZXh0V2ViR1BVKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50
OjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmlzR1BVKToKKyAgICAgICAgKiBo
dG1sL0hUTUxDYW52YXNFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6aXNHUFUpOgorCisgICAgICAgIC5jcHAsIC5oLCAuaWRsIGZpbGVzLCB3cmFwcGVkIGluIFdF
QkdQVSBjb25kaXRpb25hbCwgYW5kIGVuYWJsZWQgYXQgcnVudGltZS4KKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHUFVCdWZmZXIKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHUFVDb21tYW5k
QnVmZmVyCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR1BVQ29tbWFuZFF1ZXVlCisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlCisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR1BVRHJhd2FibGUKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHUFVFbnVtcworICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdQVUZ1bmN0aW9uCisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R1BVTGlicmFyeQorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdQVU9iamVjdCAobm8gSURMKQor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyCisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yCisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvcgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXNjcmlw
dG9yCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVT
dGF0ZQorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdQVVJlbmRlcmluZ0NvbnRleHQKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlCisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R1BVVGV4dHVyZURlc2NyaXB0b3IKKwogMjAxNy0wMy0xMCAgRGVhbiBKYWNrc29uICA8ZGlub0Bh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViR1BVOiBCYWNrZW5kIC0gVGV4dHVyZXMgYW5kIFRleHR1
cmVEZXNjcmlwdG9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBlNTU3Y2UwMGNkNC4uNmExZjJkYzEzNjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCkBAIC0yMTYsNyArMjE2LDcgQEAgRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEg
PSA7CiBFTkFCTEVfV0VCQVNTRU1CTFkgPSA7CiBFTkFCTEVfV0VCR0wgPSBFTkFCTEVfV0VCR0w7
CiBFTkFCTEVfV0VCR0wyID0gRU5BQkxFX1dFQkdMMjsKLUVOQUJMRV9XRUJHUFUgPSBFTkFCTEVf
V0VCR1BVOworRU5BQkxFX1dFQkdQVSA9IDsKIEVOQUJMRV9XRUJHUFVbc2RrPWlwaG9uZXNpbXVs
YXRvcipdID0gOwogRU5BQkxFX1dFQl9BTklNQVRJT05TID0gRU5BQkxFX1dFQl9BTklNQVRJT05T
OwogRU5BQkxFX1dFQl9BVURJTyA9IEVOQUJMRV9XRUJfQVVESU87CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQppbmRleCA3NjU1MDRjOWQ2OS4uNTMzOWQ3ZjAwNTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDA2LTIw
MDgsIDIwMTIsIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENv
cHlyaWdodCAoQykgMjAwNi0yMDA4LCAyMDEyLCAyMDE0LTIwMTUsIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8
c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAjIENvcHlyaWdodCAoQykgMjAwOSBDYW1lcm9uIE1jQ29y
bWFjayA8Y2FtQG1jYy5pZC5hdT4KICMKQEAgLTU2Miw2ICs1NjIsMjUgQEAgSlNfQklORElOR19J
RExTID0gXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24u
aWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3Qu
aWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdQVUJ1ZmZlci5pZGwgXAor
ICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwgXAorICAg
ICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR1BVQ29tbWFuZFF1ZXVlLmlkbCBcCisgICAgJChX
ZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmlkbCBcCisg
ICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5pZGwgXAor
ICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR1BVRHJhd2FibGUuaWRsIFwKKyAgICAkKFdl
YkNvcmUpL2h0bWwvY2FudmFzL1dlYkdQVUZ1bmN0aW9uLmlkbCBcCisgICAgJChXZWJDb3JlKS9o
dG1sL2NhbnZhcy9XZWJHUFVMaWJyYXJ5LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL2NhbnZh
cy9XZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9j
YW52YXMvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9j
YW52YXMvV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmlkbCBcCisgICAgJChX
ZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvci5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3IuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFz
L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL2Nh
bnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaWRsIFwK
KyAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ci5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVT
dGF0ZS5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZS5pZGwg
XAorICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRs
IFwKICAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svQXVkaW9UcmFjay5pZGwgXAogICAgICQoV2Vi
Q29yZSkvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRt
bC90cmFjay9EYXRhQ3VlLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjgxNGQzMTVhNjAuLjQ4NzhmMjM3OGU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xNDA1LDYgKzE0MDUsNjcgQEAKIAkJMzE5QUUwNjMxNDJENkIyNDAwNjU2M0ExIC8qIFN0eWxl
RmlsdGVyRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMTlBRTA2MTE0MkQ2QjI0MDA2NTYzQTEgLyogU3R5bGVGaWx0ZXJEYXRhLmNwcCAqLzsg
fTsKIAkJMzE5QUUwNjQxNDJENkIyNDAwNjU2M0ExIC8qIFN0eWxlRmlsdGVyRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE5QUUwNjIxNDJENkIy
NDAwNjU2M0ExIC8qIFN0eWxlRmlsdGVyRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMxOUZCRDVGMTVEMkY0NjQwMDk2NDBBNiAvKiBDYWNo
ZWRJbWFnZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzE5RkJENUQxNUQyRjQ0NDAwOTY0MEE2IC8qIENhY2hlZEltYWdlQ2xpZW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzFBMDg5MDQx
RTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODhDNjFFNzM3QjREMDAzQjY2MDkgLyogV2Vi
R1BVQnVmZmVyLmNwcCAqLzsgfTsKKwkJMzFBMDg5MDUxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQ
VUNvbW1hbmRCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzFBMDg4QzkxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIu
Y3BwICovOyB9OworCQkzMUEwODkwNjFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVQ29tbWFuZFF1
ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
QTA4OENDMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVDb21tYW5kUXVldWUuY3BwICovOyB9Owor
CQkzMUEwODkwNzFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEw
ODhDRjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAg
Ki87IH07CisJCTMxQTA4OTA4MUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxT
dGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MUEwODhEMjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwICov
OyB9OworCQkzMUEwODkwOTFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVRHJhd2FibGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg4RDUxRTcz
N0I0RDAwM0I2NjA5IC8qIFdlYkdQVURyYXdhYmxlLmNwcCAqLzsgfTsKKwkJMzFBMDg5MEExRTcz
N0Q1MTAwM0I2NjA5IC8qIFdlYkdQVUVudW1zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OEQ4MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVF
bnVtcy5jcHAgKi87IH07CisJCTMxQTA4OTBCMUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVGdW5j
dGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MUEwODhEQjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRnVuY3Rpb24uY3BwICovOyB9OworCQkz
MUEwODkwQzFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVTGlicmFyeS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODhERTFFNzM3QjREMDAzQjY2
MDkgLyogV2ViR1BVTGlicmFyeS5jcHAgKi87IH07CisJCTMxQTA4OTBEMUU3MzdENTEwMDNCNjYw
OSAvKiBXZWJHUFVPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzFBMDg4RTExRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVU9iamVjdC5jcHAg
Ki87IH07CisJCTMxQTA4OTBFMUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJDb21tYW5k
RW5jb2Rlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMUEwODhFMzFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIu
Y3BwICovOyB9OworCQkzMUEwODkwRjFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyaW5n
Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMUEwODhFNjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAg
Ki87IH07CisJCTMxQTA4OTEwMUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzFBMDg4RTkxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NB
dHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi87IH07CisJCTMxQTA4OTExMUU3MzdENTEwMDNCNjYw
OSAvKiBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODhFQzFFNzM3QjRE
MDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3Bw
ICovOyB9OworCQkzMUEwODkxMjFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzFBMDg4RUYxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLzsgfTsKKwkJMzFBMDg5MTMxRTcz
N0Q1MTAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OEYyMUU3MzdCNEQwMDNC
NjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAgKi87IH07CisJCTMxQTA4OTE0
MUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzFBMDg4RjUxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi87IH07CisJCTMxQTA4OTE1MUU3MzdENTEwMDNCNjYw
OSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg4RjgxRTczN0I0RDAwM0I2NjA5IC8q
IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAgKi87IH07CisJCTMxQTA4OTE2MUU3
MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OEZCMUU3MzdCNEQwMDNC
NjYwOSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcCAqLzsgfTsKKwkJMzFBMDg5MTcx
RTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVVRleHR1cmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg4RkUxRTczN0I0RDAwM0I2NjA5IC8qIFdl
YkdQVVRleHR1cmUuY3BwICovOyB9OworCQkzMUEwODkxODFFNzM3RDUxMDAzQjY2MDkgLyogV2Vi
R1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzFBMDg5MDExRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVRleHR1cmVE
ZXNjcmlwdG9yLmNwcCAqLzsgfTsKKwkJMzFBMDg5MTkxRTczN0Q1NTAwM0I2NjA5IC8qIEpTV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODhDNDFFNzM3QjJDMDAzQjY2MDkgLyogSlNXZWJHUFVS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCAqLzsgfTsKKwkJMzFBMDg5MUExRTczN0Q1NTAwM0I2
NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yQ3VzdG9tLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OEM1MUU3
MzdCMkMwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvckN1
c3RvbS5jcHAgKi87IH07CisJCTMxQTA4OTU0MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUJ1
ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MUEwODkxQjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVCdWZmZXIuY3BwICovOyB9OworCQkz
MUEwODk1NjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVCdWZmZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTFEMUU3MzhENTkwMDNCNjYw
OSAvKiBKU1dlYkdQVUJ1ZmZlci5oICovOyB9OworCQkzMUEwODk1NzFFNzM4RDU5MDAzQjY2MDkg
LyogSlNXZWJHUFVDb21tYW5kQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTFFMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUNv
bW1hbmRCdWZmZXIuY3BwICovOyB9OworCQkzMUEwODk1OTFFNzM4RDU5MDAzQjY2MDkgLyogSlNX
ZWJHUFVDb21tYW5kQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMUEwODkyMDFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVDb21tYW5kQnVm
ZmVyLmggKi87IH07CisJCTMxQTA4OTVBMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUNvbW1h
bmRRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMUEwODkyMTFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVDb21tYW5kUXVldWUuY3BwICov
OyB9OworCQkzMUEwODk1QzFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVDb21tYW5kUXVldWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTIz
MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUNvbW1hbmRRdWV1ZS5oICovOyB9OworCQkzMUEw
ODk1RDFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTI0
MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwICov
OyB9OworCQkzMUEwODk1RjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVEZXB0aFN0ZW5jaWxE
ZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMUEwODkyNjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlw
dG9yLmggKi87IH07CisJCTMxQTA4OTYwMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVURlcHRo
U3RlbmNpbFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxQTA4OTI3MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVURlcHRoU3RlbmNpbFN0
YXRlLmNwcCAqLzsgfTsKKwkJMzFBMDg5NjIxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVRGVw
dGhTdGVuY2lsU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxQTA4OTI5MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVURlcHRoU3RlbmNpbFN0
YXRlLmggKi87IH07CisJCTMxQTA4OTYzMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVURyYXdh
YmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
QTA4OTJBMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVURyYXdhYmxlLmNwcCAqLzsgfTsKKwkJ
MzFBMDg5NjUxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVRHJhd2FibGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTJDMUU3MzhENTkwMDNC
NjYwOSAvKiBKU1dlYkdQVURyYXdhYmxlLmggKi87IH07CisJCTMxQTA4OTY2MUU3MzhENTkwMDNC
NjYwOSAvKiBKU1dlYkdQVUZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTJEMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUZ1
bmN0aW9uLmNwcCAqLzsgfTsKKwkJMzFBMDg5NjgxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BV
RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMxQTA4OTJGMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUZ1bmN0aW9uLmggKi87IH07CisJ
CTMxQTA4OTY5MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUxpYnJhcnkuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5MzAxRTczOEQ1OTAw
M0I2NjA5IC8qIEpTV2ViR1BVTGlicmFyeS5jcHAgKi87IH07CisJCTMxQTA4OTZCMUU3MzhENTkw
MDNCNjYwOSAvKiBKU1dlYkdQVUxpYnJhcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTMyMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUxp
YnJhcnkuaCAqLzsgfTsKKwkJMzFBMDg5NkMxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVu
ZGVyQ29tbWFuZEVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzFBMDg5MzMxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyQ29t
bWFuZEVuY29kZXIuY3BwICovOyB9OworCQkzMUEwODk2RTFFNzM4RDVBMDAzQjY2MDkgLyogSlNX
ZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5MzUxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVu
ZGVyQ29tbWFuZEVuY29kZXIuaCAqLzsgfTsKKwkJMzFBMDg5NkYxRTczOEQ1QTAwM0I2NjA5IC8q
IEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODkzNjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVS
ZW5kZXJpbmdDb250ZXh0LmNwcCAqLzsgfTsKKwkJMzFBMDg5NzExRTczOEQ1QTAwM0I2NjA5IC8q
IEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5MzgxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVu
ZGVyaW5nQ29udGV4dC5oICovOyB9OworCQkzMUEwODk3MjFFNzM4RDVBMDAzQjY2MDkgLyogSlNX
ZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5MzkxRTczOEQ1OTAwM0I2NjA5IC8q
IEpTV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLzsgfTsKKwkJMzFB
MDg5NzQxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MUEwODkzQjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3IuaCAqLzsgfTsKKwkJMzFBMDg5NzUxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BV
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5M0MxRTczOEQ1OTAwM0I2NjA5IC8q
IEpTV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovOyB9Owor
CQkzMUEwODk3NzFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzFBMDg5M0UxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLzsgfTsKKwkJMzFBMDg5NzgxRTczOEQ1QTAwM0I2
NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5M0YxRTcz
OEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0
b3IuY3BwICovOyB9OworCQkzMUEwODk3QTFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5NDExRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2Vi
R1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLzsgfTsKKwkJMzFBMDg5
N0IxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5NDIxRTcz
OEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwICovOyB9Owor
CQkzMUEwODk3RDFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5
NDQxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLzsg
fTsKKwkJMzFBMDg5N0UxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTQ1MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi87IH07CisJCTMxQTA4
OTgwMUU3MzhENUEwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzFBMDg5NDcxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi87IH07CisJCTMxQTA4OTgxMUU3MzhENUEwMDNC
NjYwOSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODk0ODFFNzM4RDU5MDAzQjY2
MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwICovOyB9OworCQkzMUEw
ODk4MzFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTRB
MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICov
OyB9OworCQkzMUEwODk4NDFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGlu
ZVN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMxQTA4OTRCMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUu
Y3BwICovOyB9OworCQkzMUEwODk4NjFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQ
aXBlbGluZVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMUEwODk0RDFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZVN0
YXRlLmggKi87IH07CisJCTMxQTA4OTg3MUU3MzhENUEwMDNCNjYwOSAvKiBKU1dlYkdQVVRleHR1
cmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFB
MDg5NEUxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVVGV4dHVyZS5jcHAgKi87IH07CisJCTMx
QTA4OTg5MUU3MzhENUEwMDNCNjYwOSAvKiBKU1dlYkdQVVRleHR1cmUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTUwMUU3MzhENTkwMDNCNjYw
OSAvKiBKU1dlYkdQVVRleHR1cmUuaCAqLzsgfTsKKwkJMzFBMDg5OEExRTczOEQ1QTAwM0I2NjA5
IC8qIEpTV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5NTExRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2Vi
R1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwICovOyB9OworCQkzMUEwODk4QzFFNzM4RDVBMDAzQjY2
MDkgLyogSlNXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5NTMxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2Vi
R1BVVGV4dHVyZURlc2NyaXB0b3IuaCAqLzsgfTsKIAkJMzFBNzk1QzYxODg4QkFEQzAwMzgyRjkw
IC8qIEpTQU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBNzk1QzQxODg4QkFEMTAwMzgyRjkwIC8qIEpTQU5HTEVJ
bnN0YW5jZWRBcnJheXMuY3BwICovOyB9OwogCQkzMUE3OTVDNzE4ODhCQ0IyMDAzODJGOTAgLyog
QU5HTEVJbnN0YW5jZWRBcnJheXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMxQTc5NUMyMTg4OEI3MjQwMDM4MkY5MCAvKiBBTkdMRUluc3RhbmNlZEFy
cmF5cy5oICovOyB9OwogCQkzMUE3OTVDODE4ODhCQ0I1MDAzODJGOTAgLyogQU5HTEVJbnN0YW5j
ZWRBcnJheXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzFBNzk1QzExODg4QjcyNDAwMzgyRjkwIC8qIEFOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcCAq
LzsgfTsKQEAgLTg3NzcsNiArODgzOCwxMDggQEAKIAkJMzE5QUUwNjExNDJENkIyNDAwNjU2M0Ex
IC8qIFN0eWxlRmlsdGVyRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTdHlsZUZpbHRlckRhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
MTlBRTA2MjE0MkQ2QjI0MDA2NTYzQTEgLyogU3R5bGVGaWx0ZXJEYXRhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlRmlsdGVyRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMTlGQkQ1RDE1RDJGNDQ0MDA5NjQwQTYgLyogQ2FjaGVkSW1hZ2VDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkSW1hZ2VDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4QzQxRTczN0IyQzAwM0I2NjA5
IC8qIEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdQVVJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhDNTFFNzM3QjJDMDAzQjY2MDkgLyog
SlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3JDdXN0b20uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVu
dERlc2NyaXB0b3JDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEw
ODhDNjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTMxQTA4OEM3MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVCdWZmZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVQnVmZmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEM4MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVC
dWZmZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVUJ1ZmZlci5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEM5MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJH
UFVDb21tYW5kQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkdQVUNvbW1hbmRCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkz
MUEwODhDQTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVDb21tYW5kQnVmZmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OENCMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVD
b21tYW5kQnVmZmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVDb21tYW5kQnVm
ZmVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4Q0MxRTczN0I0RDAw
M0I2NjA5IC8qIFdlYkdQVUNvbW1hbmRRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJHUFVDb21tYW5kUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzMUEwODhDRDFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVQ29tbWFuZFF1ZXVl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUNvbW1hbmRRdWV1ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhDRTFFNzM3QjREMDAzQjY2MDkg
LyogV2ViR1BVQ29tbWFuZFF1ZXVlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVD
b21tYW5kUXVldWUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhDRjFF
NzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlw
dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RDAxRTczN0I0RDAw
M0I2NjA5IC8qIFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhEMTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BV
RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BV
RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTMxQTA4OEQyMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVEZXB0aFN0ZW5jaWxT
dGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEQzMUU3MzdCNEQw
MDNCNjYwOSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzMUEwODhENDFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRGVwdGhTdGVu
Y2lsU3RhdGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVURlcHRoU3RlbmNpbFN0
YXRlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RDUxRTczN0I0RDAw
M0I2NjA5IC8qIFdlYkdQVURyYXdhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYkdQVURyYXdhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzFBMDg4RDYxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVURyYXdhYmxlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVURyYXdhYmxlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTMxQTA4OEQ3MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVEcmF3YWJs
ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVRHJhd2FibGUuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhEODFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BV
RW51bXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVRW51
bXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhEOTFFNzM3QjREMDAz
QjY2MDkgLyogV2ViR1BVRW51bXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViR1BVRW51bXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4REExRTcz
N0I0RDAwM0I2NjA5IC8qIFdlYkdQVUVudW1zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBX
ZWJHUFVFbnVtcy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OERCMUU3
MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJHUFVGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTMxQTA4OERDMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVGdW5jdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVGdW5jdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhERDFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BV
RnVuY3Rpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVUZ1bmN0aW9uLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4REUxRTczN0I0RDAwM0I2NjA5IC8q
IFdlYkdQVUxpYnJhcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViR1BVTGlicmFyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OERG
MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVMaWJyYXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkdQVUxpYnJhcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzFBMDg4RTAxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUxpYnJhcnkuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYkdQVUxpYnJhcnkuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzMUEwODhFMTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVT2JqZWN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVU9iamVjdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEUyMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJH
UFVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVT2JqZWN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEUzMUU3MzdCNEQwMDNCNjYw
OSAvKiBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEU0MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVS
ZW5kZXJDb21tYW5kRW5jb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzMUEwODhFNTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RTYxRTczN0I0RDAwM0I2NjA5
IC8qIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTMxQTA4OEU3MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJpbmdD
b250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlcmlu
Z0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RTgxRTczN0I0
RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzMUEwODhFOTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTMxQTA4OEVBMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTMxQTA4OEVCMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQ
VVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTMxQTA4OEVDMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEVEMUU3MzdCNEQwMDNCNjYwOSAvKiBX
ZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhFRTFFNzM3QjREMDAz
QjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RUYxRTczN0I0
RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVJlbmRlclBhc3NE
ZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzFBMDg4RjAxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQ
VVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTMxQTA4OEYxMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2Vi
R1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkzMUEwODhGMjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzMUEwODhGMzFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RjQxRTczN0I0
RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTMxQTA4OEY1MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RjYxRTczN0I0
RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzFBMDg4RjcxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RjgxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzMUEwODhGOTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkz
MUEwODhGQTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhGQjFFNzM3QjREMDAz
QjY2MDkgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RkMxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQ
VVJlbmRlclBpcGVsaW5lU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzMUEwODhGRDFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEZFMUU3MzdCNEQwMDNCNjYwOSAv
KiBXZWJHUFVUZXh0dXJlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkdQVVRleHR1cmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhG
RjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVVGV4dHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJHUFVUZXh0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTMxQTA4OTAwMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVUZXh0dXJlLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVUZXh0dXJlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMzFBMDg5MDExRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVRleHR1cmVEZXNjcmlw
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVRleHR1
cmVEZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5MDIx
RTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTAzMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVU
ZXh0dXJlRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVVGV4dHVy
ZURlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODkxQjFF
NzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gSlNXZWJHUFVCdWZmZXIuY3BwOyBwYXRoID0gSlNXZWJHUFVCdWZm
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODkxRDFFNzM4RDU5MDAz
QjY2MDkgLyogSlNXZWJHUFVCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gSlNXZWJHUFVCdWZmZXIuaDsgcGF0aCA9IEpTV2ViR1BVQnVmZmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTFFMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUNv
bW1hbmRCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNX
ZWJHUFVDb21tYW5kQnVmZmVyLmNwcDsgcGF0aCA9IEpTV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTIwMUU3MzhENTkwMDNCNjYwOSAv
KiBKU1dlYkdQVUNvbW1hbmRCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gSlNXZWJHUFVDb21tYW5kQnVmZmVyLmg7IHBhdGggPSBKU1dlYkdQVUNvbW1hbmRCdWZmZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5MjExRTczOEQ1OTAwM0I2NjA5
IC8qIEpTV2ViR1BVQ29tbWFuZFF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEpTV2ViR1BVQ29tbWFuZFF1ZXVlLmNwcDsgcGF0aCA9IEpTV2ViR1BVQ29tbWFu
ZFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5MjMxRTczOEQ1
OTAwM0I2NjA5IC8qIEpTV2ViR1BVQ29tbWFuZFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEpTV2ViR1BVQ29tbWFuZFF1ZXVlLmg7IHBhdGggPSBKU1dlYkdQVUNvbW1h
bmRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODkyNDFFNzM4RDU5
MDAzQjY2MDkgLyogSlNXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRv
ci5jcHA7IHBhdGggPSBKU1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODkyNjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJH
UFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEpTV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oOyBwYXRoID0gSlNXZWJHUFVEZXB0
aFN0ZW5jaWxEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4
OTI3MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTV2ViR1BVRGVwdGhTdGVuY2lsU3Rh
dGUuY3BwOyBwYXRoID0gSlNXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTI5MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVURl
cHRoU3RlbmNpbFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2Vi
R1BVRGVwdGhTdGVuY2lsU3RhdGUuaDsgcGF0aCA9IEpTV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5MkExRTczOEQ1OTAwM0I2NjA5
IC8qIEpTV2ViR1BVRHJhd2FibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gSlNXZWJHUFVEcmF3YWJsZS5jcHA7IHBhdGggPSBKU1dlYkdQVURyYXdhYmxlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5MkMxRTczOEQ1OTAwM0I2NjA5IC8q
IEpTV2ViR1BVRHJhd2FibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNX
ZWJHUFVEcmF3YWJsZS5oOyBwYXRoID0gSlNXZWJHUFVEcmF3YWJsZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkzMUEwODkyRDFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVGdW5j
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU1dlYkdQVUZ1
bmN0aW9uLmNwcDsgcGF0aCA9IEpTV2ViR1BVRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzMUEwODkyRjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVGdW5jdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU1dlYkdQVUZ1bmN0aW9uLmg7
IHBhdGggPSBKU1dlYkdQVUZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTMxQTA4OTMwMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUxpYnJhcnkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNXZWJHUFVMaWJyYXJ5LmNwcDsgcGF0aCA9
IEpTV2ViR1BVTGlicmFyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4
OTMyMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUxpYnJhcnkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJHUFVMaWJyYXJ5Lmg7IHBhdGggPSBKU1dlYkdQVUxpYnJh
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5MzMxRTczOEQ1OTAwM0I2
NjA5IC8qIEpTV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gSlNXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5jcHA7IHBh
dGggPSBKU1dlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMzFBMDg5MzUxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyQ29t
bWFuZEVuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJHUFVS
ZW5kZXJDb21tYW5kRW5jb2Rlci5oOyBwYXRoID0gSlNXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODkzNjFFNzM4RDU5MDAzQjY2
MDkgLyogSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHA7IHBhdGggPSBKU1dl
YkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkz
MUEwODkzODFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5o
OyBwYXRoID0gSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTMxQTA4OTM5MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBhc3NB
dHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBKU1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHA7IHBhdGggPSBK
U1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTMxQTA4OTNCMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBKU1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oOyBwYXRoID0gSlNX
ZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMzFBMDg5M0MxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gSlNXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5j
cHA7IHBhdGggPSBKU1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5M0UxRTczOEQ1OTAwM0I2NjA5
IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvci5oOyBwYXRoID0gSlNXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODkzRjFFNzM4
RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU1dlYkdQVVJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcDsgcGF0aCA9IEpTV2ViR1BVUmVuZGVy
UGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzMUEwODk0MTFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBKU1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmg7IHBhdGggPSBK
U1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTQyMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJl
bmRlclBhc3NEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEpTV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwOyBwYXRoID0gSlNXZWJHUFVSZW5k
ZXJQYXNzRGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4
OTQ0MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3IuaDsgcGF0aCA9IEpTV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5NDUxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yLmNwcDsgcGF0aCA9IEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5
NDcxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2ViR1BV
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmg7IHBhdGggPSBKU1dlYkdQ
VVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkzMUEwODk0ODFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gSlNXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwOyBwYXRoID0gSlNXZWJH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzMUEwODk0QTFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IuaDsgcGF0aCA9IEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTRCMUU3MzhENTkw
MDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcDsg
cGF0aCA9IEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTMxQTA4OTREMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBp
cGVsaW5lU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJHUFVS
ZW5kZXJQaXBlbGluZVN0YXRlLmg7IHBhdGggPSBKU1dlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5NEUxRTczOEQ1OTAwM0I2NjA5
IC8qIEpTV2ViR1BVVGV4dHVyZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBKU1dlYkdQVVRleHR1cmUuY3BwOyBwYXRoID0gSlNXZWJHUFVUZXh0dXJlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5NTAxRTczOEQ1OTAwM0I2NjA5IC8qIEpT
V2ViR1BVVGV4dHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU1dlYkdQ
VVRleHR1cmUuaDsgcGF0aCA9IEpTV2ViR1BVVGV4dHVyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzMUEwODk1MTFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVUZXh0dXJlRGVz
Y3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU1dlYkdQ
VVRleHR1cmVEZXNjcmlwdG9yLmNwcDsgcGF0aCA9IEpTV2ViR1BVVGV4dHVyZURlc2NyaXB0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODk1MzFFNzM4RDU5MDAzQjY2
MDkgLyogSlNXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBKU1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmg7IHBhdGggPSBKU1dlYkdQVVRl
eHR1cmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxQTc5NUMx
MTg4OEI3MjQwMDM4MkY5MCAvKiBBTkdMRUluc3RhbmNlZEFycmF5cy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBTkdMRUluc3RhbmNlZEFycmF5cy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxQTc5NUMyMTg4OEI3MjQwMDM4MkY5MCAvKiBBTkdM
RUluc3RhbmNlZEFycmF5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBTkdM
RUluc3RhbmNlZEFycmF5cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUE3OTVD
MzE4ODhCNzI0MDAzODJGOTAgLyogQU5HTEVJbnN0YW5jZWRBcnJheXMuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEFOR0xFSW5zdGFuY2VkQXJyYXlzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE3NTQzLDYgKzE3NzA2LDY4IEBACiAJCQkJNzdBMTdBNzQxMkYyODY0MjAw
NEUwMkY2IC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwICovLAogCQkJCTc3QTE3QTc1
MTJGMjg2NDIwMDRFMDJGNiAvKiBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmggKi8sCiAJCQkJ
NzdBMTdBNzYxMkYyODY0MjAwNEUwMkY2IC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaWRs
ICovLAorCQkJCTMxQTA4OEM2MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVCdWZmZXIuY3BwICov
LAorCQkJCTMxQTA4OEM3MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVCdWZmZXIuaCAqLywKKwkJ
CQkzMUEwODhDODFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVQnVmZmVyLmlkbCAqLywKKwkJCQkz
MUEwODhDOTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgKi8sCisJ
CQkJMzFBMDg4Q0ExRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuaCAqLywK
KwkJCQkzMUEwODhDQjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwg
Ki8sCisJCQkJMzFBMDg4Q0MxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUNvbW1hbmRRdWV1ZS5j
cHAgKi8sCisJCQkJMzFBMDg4Q0QxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUNvbW1hbmRRdWV1
ZS5oICovLAorCQkJCTMxQTA4OENFMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVDb21tYW5kUXVl
dWUuaWRsICovLAorCQkJCTMxQTA4OENGMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVEZXB0aFN0
ZW5jaWxEZXNjcmlwdG9yLmNwcCAqLywKKwkJCQkzMUEwODhEMDFFNzM3QjREMDAzQjY2MDkgLyog
V2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oICovLAorCQkJCTMxQTA4OEQxMUU3MzdCNEQw
MDNCNjYwOSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmlkbCAqLywKKwkJCQkzMUEw
ODhEMjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwICovLAor
CQkJCTMxQTA4OEQzMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5o
ICovLAorCQkJCTMxQTA4OEQ0MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxT
dGF0ZS5pZGwgKi8sCisJCQkJMzFBMDg4RDUxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVURyYXdh
YmxlLmNwcCAqLywKKwkJCQkzMUEwODhENjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRHJhd2Fi
bGUuaCAqLywKKwkJCQkzMUEwODhENzFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRHJhd2FibGUu
aWRsICovLAorCQkJCTMxQTA4OEQ4MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVFbnVtcy5jcHAg
Ki8sCisJCQkJMzFBMDg4RDkxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUVudW1zLmggKi8sCisJ
CQkJMzFBMDg4REExRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUVudW1zLmlkbCAqLywKKwkJCQkz
MUEwODhEQjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRnVuY3Rpb24uY3BwICovLAorCQkJCTMx
QTA4OERDMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVGdW5jdGlvbi5oICovLAorCQkJCTMxQTA4
OEREMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVGdW5jdGlvbi5pZGwgKi8sCisJCQkJMzFBMDg4
REUxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUxpYnJhcnkuY3BwICovLAorCQkJCTMxQTA4OERG
MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVMaWJyYXJ5LmggKi8sCisJCQkJMzFBMDg4RTAxRTcz
N0I0RDAwM0I2NjA5IC8qIFdlYkdQVUxpYnJhcnkuaWRsICovLAorCQkJCTMxQTA4OEUxMUU3MzdC
NEQwMDNCNjYwOSAvKiBXZWJHUFVPYmplY3QuY3BwICovLAorCQkJCTMxQTA4OEUyMUU3MzdCNEQw
MDNCNjYwOSAvKiBXZWJHUFVPYmplY3QuaCAqLywKKwkJCQkzMUEwODhFMzFFNzM3QjREMDAzQjY2
MDkgLyogV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwICovLAorCQkJCTMxQTA4OEU0MUU3
MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5oICovLAorCQkJCTMx
QTA4OEU1MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5pZGwg
Ki8sCisJCQkJMzFBMDg4RTYxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlcmluZ0NvbnRl
eHQuY3BwICovLAorCQkJCTMxQTA4OEU3MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJp
bmdDb250ZXh0LmggKi8sCisJCQkJMzFBMDg4RTgxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJl
bmRlcmluZ0NvbnRleHQuaWRsICovLAorCQkJCTMxQTA4OEU5MUU3MzdCNEQwMDNCNjYwOSAvKiBX
ZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovLAorCQkJCTMxQTA4OEVB
MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3Iu
aCAqLywKKwkJCQkzMUEwODhFQjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0F0
dGFjaG1lbnREZXNjcmlwdG9yLmlkbCAqLywKKwkJCQkzMUEwODhFQzFFNzM3QjREMDAzQjY2MDkg
LyogV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovLAorCQkJ
CTMxQTA4OEVEMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvci5oICovLAorCQkJCTMxQTA4OEVFMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJH
UFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5pZGwgKi8sCisJCQkJMzFBMDg4
RUYxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNj
cmlwdG9yLmNwcCAqLywKKwkJCQkzMUEwODhGMDFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVu
ZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLywKKwkJCQkzMUEwODhGMTFFNzM3
QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3Iu
aWRsICovLAorCQkJCTMxQTA4OEYyMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNz
RGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzFBMDg4RjMxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQ
VVJlbmRlclBhc3NEZXNjcmlwdG9yLmggKi8sCisJCQkJMzFBMDg4RjQxRTczN0I0RDAwM0I2NjA5
IC8qIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmlkbCAqLywKKwkJCQkzMUEwODhGNTFFNzM3
QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yLmNwcCAqLywKKwkJCQkzMUEwODhGNjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8sCisJCQkJMzFBMDg4RjcxRTcz
N0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvci5pZGwgKi8sCisJCQkJMzFBMDg4RjgxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzFBMDg4RjkxRTczN0I0RDAwM0I2NjA5
IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovLAorCQkJCTMxQTA4OEZBMUU3
MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsICovLAor
CQkJCTMxQTA4OEZCMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRl
LmNwcCAqLywKKwkJCQkzMUEwODhGQzFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGlw
ZWxpbmVTdGF0ZS5oICovLAorCQkJCTMxQTA4OEZEMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVS
ZW5kZXJQaXBlbGluZVN0YXRlLmlkbCAqLywKKwkJCQkzMUEwODhGRTFFNzM3QjREMDAzQjY2MDkg
LyogV2ViR1BVVGV4dHVyZS5jcHAgKi8sCisJCQkJMzFBMDg4RkYxRTczN0I0RDAwM0I2NjA5IC8q
IFdlYkdQVVRleHR1cmUuaCAqLywKKwkJCQkzMUEwODkwMDFFNzM3QjREMDAzQjY2MDkgLyogV2Vi
R1BVVGV4dHVyZS5pZGwgKi8sCisJCQkJMzFBMDg5MDExRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQ
VVRleHR1cmVEZXNjcmlwdG9yLmNwcCAqLywKKwkJCQkzMUEwODkwMjFFNzM3QjREMDAzQjY2MDkg
LyogV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaCAqLywKKwkJCQkzMUEwODkwMzFFNzM3QjREMDAz
QjY2MDkgLyogV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsICovLAogCQkJKTsKIAkJCXBhdGgg
PSBjYW52YXM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjA4ODEsNiArMjExMDYs
NDQgQEAKIAkJCQk2Rjk5NUEzMDFBNzA4MzM3MDBBNzM1RjQgLyogSlNXZWJHTFZlcnRleEFycmF5
T2JqZWN0LmggKi8sCiAJCQkJNzdFRjYyRjExMkY5REI3NDAwQzc3QkQyIC8qIEpTV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdE9FUy5jcHAgKi8sCiAJCQkJNzdFRjYyRjIxMkY5REI3NDAwQzc3QkQyIC8q
IEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oICovLAorCQkJCTMxQTA4OTFCMUU3MzhENTkw
MDNCNjYwOSAvKiBKU1dlYkdQVUJ1ZmZlci5jcHAgKi8sCisJCQkJMzFBMDg5MUQxRTczOEQ1OTAw
M0I2NjA5IC8qIEpTV2ViR1BVQnVmZmVyLmggKi8sCisJCQkJMzFBMDg5MUUxRTczOEQ1OTAwM0I2
NjA5IC8qIEpTV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgKi8sCisJCQkJMzFBMDg5MjAxRTczOEQ1
OTAwM0I2NjA5IC8qIEpTV2ViR1BVQ29tbWFuZEJ1ZmZlci5oICovLAorCQkJCTMxQTA4OTIxMUU3
MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUNvbW1hbmRRdWV1ZS5jcHAgKi8sCisJCQkJMzFBMDg5
MjMxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVQ29tbWFuZFF1ZXVlLmggKi8sCisJCQkJMzFB
MDg5MjQxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5j
cHAgKi8sCisJCQkJMzFBMDg5MjYxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVRGVwdGhTdGVu
Y2lsRGVzY3JpcHRvci5oICovLAorCQkJCTMxQTA4OTI3MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dl
YkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcCAqLywKKwkJCQkzMUEwODkyOTFFNzM4RDU5MDAzQjY2
MDkgLyogSlNXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oICovLAorCQkJCTMxQTA4OTJBMUU3MzhE
NTkwMDNCNjYwOSAvKiBKU1dlYkdQVURyYXdhYmxlLmNwcCAqLywKKwkJCQkzMUEwODkyQzFFNzM4
RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVEcmF3YWJsZS5oICovLAorCQkJCTMxQTA4OTJEMUU3MzhE
NTkwMDNCNjYwOSAvKiBKU1dlYkdQVUZ1bmN0aW9uLmNwcCAqLywKKwkJCQkzMUEwODkyRjFFNzM4
RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVGdW5jdGlvbi5oICovLAorCQkJCTMxQTA4OTMwMUU3MzhE
NTkwMDNCNjYwOSAvKiBKU1dlYkdQVUxpYnJhcnkuY3BwICovLAorCQkJCTMxQTA4OTMyMUU3MzhE
NTkwMDNCNjYwOSAvKiBKU1dlYkdQVUxpYnJhcnkuaCAqLywKKwkJCQkzMUEwODkzMzFFNzM4RDU5
MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5jcHAgKi8sCisJCQkJMzFB
MDg5MzUxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaCAq
LywKKwkJCQkzMUEwODkzNjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJpbmdDb250
ZXh0LmNwcCAqLywKKwkJCQkzMUEwODkzODFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0LmggKi8sCisJCQkJMzFBMDg5MzkxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2Vi
R1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLywKKwkJCQkzMUEwODkzQjFF
NzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3Iu
aCAqLywKKwkJCQkzMUEwODkzQzFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzFBMDg5M0UxRTczOEQ1OTAw
M0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCAq
LywKKwkJCQkzMUEwODkzRjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzFBMDg5NDExRTczOEQ1OTAwM0I2
NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLywK
KwkJCQkzMUEwODk0MjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVzY3Jp
cHRvci5jcHAgKi8sCisJCQkJMzFBMDg5NDQxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVu
ZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLywKKwkJCQkzMUEwODk0NTFFNzM4RDU5MDAzQjY2MDkgLyog
SlNXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovLAor
CQkJCTMxQTA4OTQ3MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvci5oICovLAorCQkJCTMxQTA4OTQ4MUU3MzhENTkwMDNCNjYw
OSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzFBMDg5
NEExRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgg
Ki8sCisJCQkJMzFBMDg5NEIxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxp
bmVTdGF0ZS5jcHAgKi8sCisJCQkJMzFBMDg5NEQxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BV
UmVuZGVyUGlwZWxpbmVTdGF0ZS5oICovLAorCQkJCTMxQTA4OTRFMUU3MzhENTkwMDNCNjYwOSAv
KiBKU1dlYkdQVVRleHR1cmUuY3BwICovLAorCQkJCTMxQTA4OTUwMUU3MzhENTkwMDNCNjYwOSAv
KiBKU1dlYkdQVVRleHR1cmUuaCAqLywKKwkJCQkzMUEwODk1MTFFNzM4RDU5MDAzQjY2MDkgLyog
SlNXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzFBMDg5NTMxRTczOEQ1OTAw
M0I2NjA5IC8qIEpTV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaCAqLywKIAkJCQkwRkRBN0MyNDE4
ODMzMzMyMDBDOTU0QjUgLyogSlNXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50
LmNwcCAqLywKIAkJCQkwRkRBN0MyNTE4ODMzMzMyMDBDOTU0QjUgLyogSlNXZWJLaXRQbGF5YmFj
a1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmggKi8sCiAJCQkpOwpAQCAtMjI4NDcsOCArMjMxMTAs
OCBAQAogCQkJCTdBNzRFQ0JDMTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckZyb250ZW5k
SG9zdEN1c3RvbS5jcHAgKi8sCiAJCQkJQkNFMUM0M0YwRDk4MzBGNDAwM0IwMkYyIC8qIEpTTG9j
YXRpb25DdXN0b20uY3BwICovLAogCQkJCTJEOUJGNzQ4MURCRkRERjgwMDdBN0Q5OSAvKiBKU01l
ZGlhS2V5U2Vzc2lvbkN1c3RvbS5jcHAgKi8sCi0JCQkJNDEwQjdFNzExMDQ1RkFCMDAwRDgyMjRG
IC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQk0MTVDREFGNjFFNkNFMEQzMDA0
RjExRUUgLyogSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcCAqLywKKwkJCQk0MTBCN0U3MTEw
NDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovLAogCQkJCUExRTVC
MzFEMUFBRDFEQTQwMDZFQkVGQiAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDdXN0b20u
Y3BwICovLAogCQkJCUM2RjA5MTdFMTQzQTJCQjkwMDY4NTg0OSAvKiBKU011dGF0aW9uT2JzZXJ2
ZXJDdXN0b20uY3BwICovLAogCQkJCUJDRDlDMjYwMEMxN0FBNjcwMDVDOTBBMiAvKiBKU05vZGVD
dXN0b20uY3BwICovLApAQCAtMjI4NjIsNiArMjMxMjUsOCBAQAogCQkJCTdDNzNGQjE3MTkxRUY4
MDgwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwICov
LAogCQkJCUJFNkRGNzA4MTcxQ0EyQzUwMERENTJCOCAvKiBKU1ZpZGVvVHJhY2tDdXN0b20uY3Bw
ICovLAogCQkJCUQzRjNEMzVBMUE2OUEzQjAwMDU5RkMyQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2VDdXN0b20uY3BwICovLAorCQkJCTMxQTA4OEM0MUU3MzdCMkMwMDNCNjYwOSAvKiBK
U1dlYkdQVVJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwICovLAorCQkJCTMxQTA4OEM1MUU3MzdC
MkMwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvckN1c3Rv
bS5jcHAgKi8sCiAJCQkJRTFGRjhGNjYxODA3NDYwODAwMTMyNjc0IC8qIEpTV2ViS2l0U3VidGxl
Q3J5cHRvQ3VzdG9tLmNwcCAqLywKIAkJCQlFMUNBNUNCQjBFOENEQ0FGMDBFOEVGOTAgLyogSlNX
b3JrZXJDdXN0b20uY3BwICovLAogCQkJCUUxODI1OEFCMEVGM0NENzAwMDkzMzI0MiAvKiBKU1dv
cmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcCAqLywKQEAgLTI1NjcxLDYgKzI1OTM2LDcgQEAKIAkJ
CQk3QzY1MjMwMTFFMDBEMDM0MDA2NzdGMjIgLyogQXBwbGVQYXlQYXltZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQThBNjQ1MjFEMTlGQ0ZCMDBEMEUwMEYgLyogQXBwbGVQYXlQYXltZW50QXV0
aG9yaXplZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzY1MjJGQjFFMDBDOTA5MDA2NzdG
MjIgLyogQXBwbGVQYXlQYXltZW50Q29udGFjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFBMDg5
NTYxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QzY1MjJFRjFFMDBBNEM3MDA2NzdGMjIgLyogQXBwbGVQYXlQYXltZW50TWV0aG9kLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQThBNjQ1NjFEMTlGQ0ZDMDBEMEUwMEYgLyogQXBwbGVQYXlQYXlt
ZW50TWV0aG9kU2VsZWN0ZWRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M2NTIyRjUxRTAw
QTUxNzAwNjc3RjIyIC8qIEFwcGxlUGF5UGF5bWVudFBhc3MuaCBpbiBIZWFkZXJzICovLApAQCAt
MjU3MDAsNiArMjU5NjYsNyBAQAogCQkJCUZEMzE2MDdBMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRp
b0FycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDYyOUVBMzE1NEI0NzE2MDAwNkQwMjYgLyog
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE1RkY3MTJC
MDI2NzYwMEMxQTM1OSAvKiBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMzFBMDg5ODkxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVVGV4dHVyZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkQzMTVGRjkxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvQnVmZmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRDU2ODZDQzEzQUMxODE0MDBCNjlDNjggLyogQXVkaW9CdWZm
ZXJDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTVGRkMxMkIwMjY3NjAwQzFBMzU5
IC8qIEF1ZGlvQnVmZmVyU291cmNlTm9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTgyNSw2ICsy
NjA5Miw3IEBACiAJCQkJMUE1NjlDRkMwRDdFMkI4MjAwN0MzOTgzIC8qIGNfcnVudGltZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlDRkUwRDdFMkI4MjAwN0MzOTgzIC8qIGNfdXRpbGl0eS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDdDMDQ2QzQxRTQyNTA4QjAwNzIwMUU3IC8qIENBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFBMDg5NjUxRTczOEQ1OTAw
M0I2NjA5IC8qIEpTV2ViR1BVRHJhd2FibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQjE2QzFB
MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzY0QjRDQzBDQjQyOTVEMDA1RjJCNjIgLyogQ2FjaGVkRm9udC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFFRjRFNjcxNzBFMTYwMzAwQUIyNzk5IC8qIENhY2hlZEZvbnRDbGllbnQuaCBp
biBIZWFkZXJzICovLApAQCAtMjU5MzQsNiArMjYyMDIsNyBAQAogCQkJCTc5RjJGNUEyMTA5MTkz
OUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMx
NjA4RjEyQjAyNkY3MDBDMUEzNTkgLyogQ29uZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVDOTdB
RjMwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFBMDg5
NkUxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4MTg3MjFDMDk3N0QzQzAwMDU4MjZEOSAvKiBDb250YWluZXJOb2Rl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUExNDcwODExMTAyQjE1MDBFRUMwRjMgLyogQ29udGFp
bmVyTm9kZUFsZ29yaXRobXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCOTgxMEU4MjA3MjUw
MEIyNTk2NSAvKiBDb250ZW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjEzNiw2ICsyNjQw
NSw3IEBACiAJCQkJQkM3RDhGRjAxQkQwM0I2NDAwRkZFNTQwIC8qIENTU1Vuc2V0VmFsdWUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0VFMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjU2NTgxNTEwOUQxMzA0MzAwMEU2MUQ3IC8qIENTU1ZhbHVl
S2V5d29yZHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxQTA4OTU5MUU3MzhENTkwMDNCNjYwOSAv
KiBKU1dlYkdQVUNvbW1hbmRCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0U5MEEx
OTg5Q0EwMDdGQjhDNSAvKiBDU1NWYWx1ZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0OUJE
OUZBMTMxRkQyRUQwMDNDNTZGMCAvKiBDU1NWYWx1ZVBvb2wuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk0NDRDQkU4MUQ4ODYxQzIwMDczQTA3NCAvKiBDU1NWYXJpYWJsZURhdGEuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjYxNjEsMTIgKzI2NDMxLDE0IEBACiAJCQkJOTdCQzZBMzAxNTA1RjA4MTAwMUI3
NEFDIC8qIERhdGFiYXNlVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNkEzMjE1MDVG
MDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCRTIz
NDgwRDE4QTk4NzE0MDBFNEI2RTggLyogRGF0YUN1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFB
MDg5NUMxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVQ29tbWFuZFF1ZXVlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDNTIyN0RGMTFDM0M2REYxMDBGNUVENTQgLyogRGF0YURldGVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJN0M3OTQxRTUxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3Rv
cnNDb3JlU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNUUyQjRFMUFGRjA2Q0EwMDk3
NkY5RiAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1OUYx
QkYxQTAwNDRDNjAwMUYzRDI5IC8qIERhdGFEZXRlY3RvcnNTUEkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJEQzRDRjc5MUQyREQ5ODkwMEVDQ0M5NCAvKiBEYXRhRGV0ZWN0b3JzVUlTUEkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMjI3NDZGMEU4MzY2NDUwMEU3Rjk3NSAvKiBEYXRhUmVmLmggaW4g
SGVhZGVycyAqLywKKwkJCQkzMUEwODk2QjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVMaWJy
YXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzY0NjQxQzExRDdGNDE2MDA2NDU1QjAgLyogRGF0
YXNldERPTVN0cmluZ01hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCM0UwQTQ0RUZDNzAw
Rjk5MkUwIC8qIERhdGFUcmFuc2Zlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEI4QUY0QUEwQjFD
RTAyQjAwNjg3NjkwIC8qIERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeS5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yNjUwNiw2ICsyNjc3OCw3IEBACiAJCQkJQ0Q2MkZCOTYxQUYwMThFNzAwMTJFRDdEIC8q
IEdlbmVyaWNUYXNrUXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NDZBRjI0MTRGNERERTYw
MDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMjUxNEY0
RERFNjAwM0U3QTcxIC8qIEdlb2xvY2F0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkz
MUEwODk3NDFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NDZBRjI3MTRGNERERTYwMDNFN0E3MCAv
KiBHZW9sb2NhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NDZBRjI4MTRG
NERERTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbkVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
NzQ2QUYyOTE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbi5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNjk2Miw2ICsyNzIzNSw3IEBACiAJCQkJMzFGQjFBNjYxMjBBNUQzRjAwREMw
MkEwIC8qIEpTRGV2aWNlTW90aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU5QTg2MDA4
MTE5REFGQTEwMERFRjFFRiAvKiBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTY1OUREQzgzMDlFMTk4QkEwMDFCRjNDNiAvKiBKU0RvY3VtZW50LmggaW4gSGVh
ZGVycyAqLywKKwkJCQkzMUEwODk3RDFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQ
YXNzRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTIyMUUwNUUxQzAyQjQ0NDAwNkEx
QTAwIC8qIEpTRG9jdW1lbnRBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUFEREE5NEMy
MTk2ODdBQTUwMDQ1MzAyOSAvKiBKU0RvY3VtZW50Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTQ5NEVERjBBMTIzRjRDMDBGREFGQzEgLyogSlNEb2N1bWVudEZyYWdtZW50LmggaW4gSGVh
ZGVycyAqLywKQEAgLTI2OTg3LDYgKzI3MjYxLDcgQEAKIAkJCQk3QzhFMzRCOTFFNEEzM0IwMDA1
NENFMjMgLyogSlNET01Db252ZXJ0SlNPTi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4RTM0QkEx
RTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9NQ29udmVydE51bGwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTdDOEUzNEJCMUU0QTMzQjAwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnROdWxsYWJsZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMzFBMDg5ODAxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk3
QzhFMzRCRDFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0TnVtYmVycy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJN0M4RTM0QkUxRTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9NQ29udmVydE9iamVj
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4RTM0QkYxRTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9N
Q29udmVydFJlY29yZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzQwMSw2ICsyNzY3Niw3IEBACiAJ
CQkJODQ4NTIyN0MxMTkwMTYyQzAwNkVEQzdGIC8qIEpTU1ZHSEtlcm5FbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMkZBM0Q5RjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdJbWFnZUVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREExMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NW
R0xlbmd0aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFBMDg5NjIxRTczOEQ1OTAwM0I2NjA5IC8q
IEpTV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREEz
MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0xlbmd0aExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyRkEzREE1MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEQTcwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHTGlu
ZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjc0ODksNiArMjc3NjUsNyBAQAogCQkJCTdD
NzNGQjBEMTkxRUY1QTgwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTE1Qzc3MDkzMTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlk
aXR5U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJFOEVGMDRCMTcxQzkwMTQwMDlCNDhDMyAv
KiBKU1ZpZGVvVHJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTMxQTA4OThDMUU3MzhENUEwMDNC
NjYwOSAvKiBKU1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
RThFRjA0RDE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrTGlzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkUyMDUwODIxOEE0NjBDMzAwODA2NDdFIC8qIEpTVlRUQ3VlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3QUY5QjIwRDE4Q0ZCNUY0MDBDNjRCRUYgLyogSlNWVFRSZWdpb24uaCBpbiBI
ZWFkZXJzICovLApAQCAtMjc1OTEsNiArMjc4NjgsNyBAQAogCQkJCUJDRTY1QkVCMEVBQ0RGMTYw
MDdFNDUzMyAvKiBMZW5ndGguaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkY2NDkxMEVBRDE1QzIw
MEMxRDZGNyAvKiBMZW5ndGhCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUU1QkE3RDYzMTUxNDM3
Q0EwMEZFMUUzRiAvKiBMZW5ndGhGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxQTA4
OTc3MUU3MzhENUEwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjg3MTY3MDFDODY5RDgzMDA0RkYwREUg
LyogTGVuZ3RoUG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkY2NDkyMEVBRDE1QzIwMEMx
RDZGNyAvKiBMZW5ndGhTaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTUwODAzNzFFM0YwMEIw
MDA1MUQ3NUQgLyogTGliV2ViUlRDQXVkaW9Nb2R1bGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjc3
NzIsNiArMjgwNTAsNyBAQAogCQkJCTM3RERDREE1MTM4NDUwMUMwMDA4Qjc5MyAvKiBNSFRNTEFy
Y2hpdmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3RERDREE3MTM4NDUwMUMwMDA4Qjc5MyAvKiBN
SFRNTFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTNCODk1QUYxOURDN0VEOTAwOUNBQTkz
IC8qIE1pY3JvdGFza3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxQTA4OTY4MUU3MzhENTkwMDNC
NjYwOSAvKiBKU1dlYkdQVUZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0REQ0Q5NTEz
ODQ0RkQ1MDAwOEI3OTMgLyogTUlNRUhlYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3NzJD
NEYwQzRFQjMwNDAwODMyODVGIC8qIE1JTUVUeXBlUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUyRjEwODY2MTYyQjZEQTgwMDlBQzgxRSAvKiBNaXhlZENvbnRlbnRDaGVja2VyLmggaW4g
SGVhZGVycyAqLywKQEAgLTI3OTg0LDYgKzI4MjYzLDcgQEAKIAkJCQlBRDVBMEMyNTFERUNBQ0ND
MDA3MDcwNTQgLyogUGVyZm9ybWFuY2VMb2dnaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0ZF
OTAyNzFFMzA3QzMwMDAzRTkxOTkgLyogUGVyZm9ybWFuY2VNb25pdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4QUY0RTU1NjExREM1QTM2MDAwRUQzREUgLyogUGVyZm9ybWFuY2VOYXZpZ2F0aW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQkzMUEwODk3QTFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJH
UFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTVBOTkzM0QxRTM3RkIxOTAwNUI1RTREIC8qIFBlcmZvcm1hbmNlT2JzZXJ2ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1QTk5MzNGMUUzN0ZCMUYwMDVCNUU0RCAvKiBQZXJmb3JtYW5jZU9i
c2VydmVyQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QTk5MzQxMUUzN0ZCMjgwMDVC
NUU0RCAvKiBQZXJmb3JtYW5jZU9ic2VydmVyRW50cnlMaXN0LmggaW4gSGVhZGVycyAqLywKQEAg
LTI4NDEyLDYgKzI4NjkyLDcgQEAKIAkJCQkwRkM0RTQxMTE4N0Y4MkUxMDA0NTg4MkMgLyogU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTND
NEE0MTUxNjI5REY1QTAwQzNFQjZFIC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVN
YWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzRFNDEwMTg3RjgyRTEwMDQ1ODgyQyAvKiBTY3Jv
bGxpbmdUcmVlSU9TLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMUEwODk4NjFFNzM4RDVBMDAzQjY2
MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkU1ODA2NDE5MzI3QTYyMDBERTMyRUIgLyogU2Nyb2xsaW5nVHJlZU1hYy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFBQURERTQxNERDOEM4RjAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVOb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkVBM0U4MDE5MUIzMTY5MDAwRjFCNTUgLyogU2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODU1Niw2ICsy
ODgzNyw3IEBACiAJCQkJNTFFMEJCMzgwREE1QUNCNjAwQTlFNDE3IC8qIFN0b3JhZ2VNYXAuaCBp
biBIZWFkZXJzICovLAogCQkJCUM1MEQwRTgzMEZGNDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFt
ZXNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTM3NjM2QzFBMkU2OEJCMDA5QTdFRTIgLyog
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMUEwODk4MzFF
NzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjAzMyAvKiBTdHJlYW1JbnRlcm5h
bHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODFBQzZDMzYxMzFDNTdEMzAwMDlBN0Uw
IC8qIFN0cmluZ0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjM1NDBGMzBEMDA3ODJF
MDAyMzgyRkEgLyogU3RyaW5nVHJ1bmNhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTI4Nzc0LDYg
KzI5MDU2LDcgQEAKIAkJCQk4M0MxRDQyNjE3OEQ1QUI0MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0Fy
Y1JlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBNjIwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R1BhdGhTZWdDbG9zZVBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTY1MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdQYXRoU2VnQ3VydmV0b0N1YmljLmggaW4gSGVhZGVycyAqLywKKwkJCQkz
MUEwODk3MTFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk4M0MxRDQyNzE3OEQ1QUI0MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0N1
cnZldG9DdWJpY0Ficy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUQ0MjgxNzhENUFCNDAwMTQx
RTY4IC8qIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
MjI3QTY5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI5MTIxLDYgKzI5NDA0LDcgQEAKIAkJCQlBMTlEOTM0NzFBOUZF
QzcyMDBCNDZDMjQgLyogV2ViRmlsdGVyRXZhbHVhdG9yU1BJLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlEM0YzRDM2RTFBNjlCN0UwMDA1OUZDMkIgLyogV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTdEMjBGNkQxMDdGNDM4QjAwQTgwMzkyIC8qIFdlYkdMQWN0aXZl
SW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFBMDg5NUYxRTczOEQ1OTAwM0I2NjA5IC8qIEpT
V2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkU0N0U2
NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUZG
QzQ1ODFENUU4NjU1MDAyNjdBNjYgLyogV2ViR0xCbGFja2xpc3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ5QzdCOUM5MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTEJ1ZmZlci5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yOTY3Miw2ICsyOTk1Niw3IEBACiAJCQkJMjkxNEUzMDcxQ0FCNUE0NDAwNDk5NjZG
IC8qIEFjY2Vzc2liaWxpdHlBdHRhY2htZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3RjU3
QUJDMUE1MDcyNzcwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUY1MkE4RkQ3MUQwQThEMEUwMDczQ0Y0MiAvKiBBY2Nlc3NpYmlsaXR5
TGFiZWwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5MTQxRTczN0Q1MTAwM0I2NjA5IC8q
IFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkzN0Y1N0FCRDFBNTA3MjdBMDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eUxp
c3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdGNTdBQkUxQTUwNzI3RTAwODc2Rjk4IC8qIEFj
Y2Vzc2liaWxpdHlMaXN0Qm94LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3RjU3QUJGMUE1MDcy
ODEwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTI5Nzk5LDYgKzMwMDg0LDcgQEAKIAkJCQlBQUE3MjhGOTE2RDFEOEJDMDBEM0JCQzYg
LyogQVhPYmplY3RDYWNoZUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI5QTgxMjRCMEZCQjlD
QTkwMDUxMDI5MyAvKiBBWE9iamVjdENhY2hlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNB
OEM4MUYxMUUzRDM2OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkzMUEwODkxNjFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGlw
ZWxpbmVTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzEyNEVFNzBDMjY0MUNEMDA5RTIz
NDkgLyogQmFyUHJvcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0NjBCQjYxNTFEMEExQkYwMDAy
MjE4MTIgLyogQmFzZTY0VXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3OUU2MUM5
MTI2Q0E1QzMwMEI2M0U4RCAvKiBCYXNlQnV0dG9uSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMjk4NjAsNiArMzAxNDYsNyBAQAogCQkJCTFDMDkzOUVBMUExM0UxMjkwMEI3ODhFNSAv
KiBDYWNoZWRTVkdGb250LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3NTM4NjAyMTQ0ODlFOTgw
MEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNCMTZD
MjcwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMzFBMDg5NkMxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyQ29tbWFu
ZEVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQzQUY4RTYxQUM1QjdFODAwQ0E3MTdF
IC8qIENhY2hlVmFsaWRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUFFMkQ5NjEzNEVF
NUY5MDA3MjkyMEEgLyogQ2FsY3VsYXRpb25WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
OTQ4NEZDMTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzR3JhZGllbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0yOTg4MSw2ICszMDE2OCw3IEBACiAJCQkJQ0RERTAyRjAxOEI1NjUxMzAwQ0Y3RkYx
IC8qIENETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREU1
OTU5RDFCRjI3NTcxMDBBMUNCRTggLyogQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTVGMkRCQkU5MTc4RTNDODEwMDE0MTQ4NiAvKiBDZXJ0aWZpY2F0
ZUluZm9NYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODk3NTFFNzM4RDVBMDAzQjY2MDkg
LyogSlNXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFMUE4RTU2NjE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCQzY5REMxNTA1RjA3NjAwMUI3NEFDIC8qIENoYW5nZVZl
cnNpb25XcmFwcGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE1RkZFMTJCMDI2NzYwMEMx
QTM1OSAvKiBDaGFubmVsTWVyZ2VyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5OTEyLDYg
KzMwMjAwLDcgQEAKIAkJCQlBNTg0RkUyQjE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVB
UElNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU1MEI2QTEwOTlERjAyNzAwOTBENzgx
IC8qIENvbW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFGRTEzNzQxODQwMkE2NzAwODky
RjEzIC8qIENvbW1vbkNyeXB0b1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEw
ODkwQzFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVTGlicmFyeS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjYwRjMyQzFERkJCMTBCMDA0MTZENkMgLyogQ29tbW9uVk0uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0M5M0YzNDkxQUE2QkE1RTAwQTk4QkFCIC8qIENvbXBpbGVkQ29udGVudEV4dGVu
c2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkY0RTc4QTFFNDVCRUExMDA2RDcxMDUgLyog
Q29tcGxleFRleHRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk5NTEsNiArMzAy
NDAsNyBAQAogCQkJCTFBQjQwRUUxMUJGNDI3RDYwMEJBODFCRSAvKiBDb250ZXh0TWVudUl0ZW0u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwMjgxMkIwMjY3NjAwQzFBMzU5IC8qIENvbnZv
bHZlck5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE0MjRDOTMxNjRCNTJDODAwRjMyRDQw
IC8qIENvb2tpZUphci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODkwQTFFNzM3RDUxMDAz
QjY2MDkgLyogV2ViR1BVRW51bXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NjIxMkQy
NkUzODAwRTc5NDE1IC8qIENvb2tpZUphckNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUx
NDI0QzkwMTY0QjQ2MEIwMEYzMkQ0MCAvKiBDb29raWVKYXJNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQk3RUU2ODQ2MzEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0LmNwcCBp
biBTb3VyY2VzICovLApAQCAtMzAyMTcsNiArMzA1MDcsNyBAQAogCQkJCTE4ODYwNEIzMEYyRTY1
NEEwMDBCNjQ0MyAvKiBET01UaW1lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3NkZDMkIwQjEy
MzcwREEwMDA2QTk5MUEgLyogRE9NVG9rZW5MaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJF
MzdERkRBMTJEQkFGQjgwMEE2QjIzMyAvKiBET01VUkwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MzFBMDg5MTkxRTczN0Q1NTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dEN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDlERTE4MTE3QUFENkE0MDBFQTM4NkQgLyogRE9N
VVJMTWVkaWFTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTVGQ0M5RkMxQjRERjdGMjAw
RTcyMzI2IC8qIERPTVVSTE1lZGlhU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MDNC
OTk4MDlFQjEzQUYwMDc5N0M3RiAvKiBET01XaW5kb3cuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0z
MDMzMyw2ICszMDYyNCw3IEBACiAJCQkJMDhDOTI1MTkwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRl
ckVmZmVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTMxM0Y2NTE0NDNCMzVGMDA2RTJBOTAg
LyogRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFQ0VCNkQx
NDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkzMUEwODkwRDFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVT2JqZWN0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTQ5RUNFQjZGMTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb25zLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE4Q0ZGMDREMEExNTRGMDkwMDBBNDIzNCAvKiBGaXhlZFRh
YmxlTGF5b3V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlBNTI4RTgzMTdEN0Y1MkYwMEFBOTUx
OCAvKiBGbG9hdGluZ09iamVjdHMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDQwOCw2ICszMDcw
MCw3IEBACiAJCQkJMTQzMkU4NDkwQzUxNDkzRjAwQjE1MDBGIC8qIEdDQ29udHJvbGxlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0RkIzOTBBRDE1RUY2MUYzMDA3QUQ1MUYgLyogR2VuZXJhdGVk
SW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODMwMDMwRjUxQjdEMzNCNTAwRUQzQUFDIC8q
IEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEw
ODkwOTFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVRHJhd2FibGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMDcyMEIwQTAxNEQzMzIzNTAwNjQyOTU1IC8qIEdlbmVyaWNFdmVudFF1ZXVlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUNENEJFNTJBMUNFMTM2RUYwMDlEODdEQSAvKiBHZW5lcmljVGFz
a1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NDZBRjIzMTRGNERERTYwMDNFN0E3MCAv
KiBHZW9sb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwNTI4LDcgKzMwODIxLDkgQEAK
IAkJCQk5NzNGNDE4QjE2OUI5NjAzMDAwNkJGNjAgLyogSFRNTFBhcnNlck9wdGlvbnMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTc3QjM4NzAxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxQYXJzZXJT
Y2hlZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNDMEU4NzUxQkZFNzBFOTAwOEY3RjUw
IC8qIEhUTUxQaWN0dXJlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODk3ODFF
NzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3Jp
cHRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODcxRDQ1NzBBMTI3Q0JDMDBCMTJBNjggLyog
SFRNTFBsdWdJbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5MTAxRTczN0Q1
MTAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0NDE1MjkyRjBFMUFFOEEwMDBDNEEyRDAgLyogSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEVBN0NBRDBBMTkyQjlDMDBBOEVG
NUYgLyogSFRNTFByZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3QjM4NzIxMjI4
ODNFOTAwQjgxRkY4IC8qIEhUTUxQcmVsb2FkU2Nhbm5lci5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTMwNjc5LDYgKzMwOTc0LDcgQEAKIAkJCQk3QTFGMkI1MjEyNkM2MUIyMDAwNkE3RTYgLyogSW5z
cGVjdG9yQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDODFCOTVCMEU5NzMzMDgwMDI2
NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgyQUIx
NzQzMTI0Qjk5RUMwMEM1MDY5RCAvKiBJbnNwZWN0b3JDU1NBZ2VudC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkzMUEwODkxNzFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVVGV4dHVyZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0QTlDQzgyMDE2QkY5QkI0MDBFQzY0NUEgLyogSW5zcGVjdG9yQ1NT
T01XcmFwcGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QUIwQjFDMDEyMTFBNjIyMDBBNzY5
NDAgLyogSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUYw
NjIxNTBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTMwNzI3LDYgKzMxMDIzLDcgQEAKIAkJCQkzMTk4NDgwQjFBMUU2Q0U0
MDBBMTMzMTggLyogSlNBbmltYXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxMjIx
RTA2QzFDMDNEMjI0MDA2QTFBMDAgLyogSlNBbmltYXRpb25UaW1lbGluZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1N0I1RjdFMjFFNTdEQkM4MDBGMzRGOTAgLyogSlNTaXRlQm91bmRDcmVkZW50
aWFsRGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODk4NzFFNzM4RDVBMDAzQjY2MDkg
LyogSlNXZWJHUFVUZXh0dXJlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTEyMjFFMDczMUMwM0U0
QzIwMDZBMUEwMCAvKiBKU0FuaW1hdGlvblRpbWVsaW5lQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDNjU3OUVGMUUwMDg1NjYwMEUzQTI3QSAvKiBKU0FwcGxlUGF5TGluZUl0ZW0uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0M2NTIzMUUxRTAxOEI1QTAwNjc3RjIyIC8qIEpTQXBwbGVQ
YXlQYXltZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzA5ODUsNiArMzEyODIsNyBAQAogCQkJ
CTFBRTJBQjIxMEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxMYWJlbEVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTc2ODE0NDQxRTcwQ0IxQjAwRTc3NzU0IC8qIEpTQWVzS2V5UGFyYW1z
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTJBQjIzMEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hU
TUxMZWdlbmRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxQTA4OTE4MUU3MzdENTEw
MDNCNjYwOSAvKiBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQUUyQUIyNTBBMUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTElFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE4MEU3QjEwMEExOUQ2MDYwMDdGQjhDNSAvKiBKU0hUTUxMaW5rRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUUyQUIyNzBBMUNFNjNCMDBCNDJCMjUgLyogSlNI
VE1MTWFwRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxMDEyLDYgKzMxMzEwLDcgQEAK
IAkJCQlFMUU2RUVBNDBCNjI4REE4MDA1RjJGNzAgLyogSlNIVE1MU2VsZWN0RWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQzE3Rjk2NjBCNjRFQkI4MDA0QTY1Q0IgLyogSlNIVE1MU2Vs
ZWN0RWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5QjY5RDNCODFCOTkxMDA3
MDBFMzUxMkIgLyogSlNIVE1MU2xvdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFB
MDg5MTMxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUU0NDYxNDNCMENENjg5Q0MwMEZBREE3NSAvKiBKU0hUTUxTb3Vy
Y2VFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NTJEMzhEMTQxMzEwNEIwMDMzMDVC
RCAvKiBKU0hUTUxTcGFuRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBFN0IwRjBB
MTlENjA2MDA3RkI4QzUgLyogSlNIVE1MU3R5bGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMzExNzgsNiArMzE0NzcsNyBAQAogCQkJCTU3RTIzMzczMURDRDQ2QjYwMEYyOEQwMSAvKiBK
U1JzYUhhc2hlZEltcG9ydFBhcmFtcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1NzY4RTQzNjFE
Qjc1Mjc0MDBEMEE0RjcgLyogSlNSc2FIYXNoZWRLZXlHZW5QYXJhbXMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTdGRURENDMxREI2RDc2MDAwRUI5NkY1IC8qIEpTUnNhS2V5R2VuUGFyYW1zLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTMxQTA4OTA2MUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVD
b21tYW5kUXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTcwNkE2OUExRERFNUU4NTAwQTAz
QjE0IC8qIEpTUnNhT2FlcFBhcmFtcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1N0UyMzM2MTFE
QzdENkFBMDBGMjhEMDEgLyogSlNSc2FPdGhlclByaW1lc0luZm8uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMDczNzk0RTUxOUVFMkZGMjAwRTVBMDQ1IC8qIEpTUlRDQ29uZmlndXJhdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTMxMzkxLDExICszMTY5MSwxMyBAQAogCQkJCTBGREE3QzFBMTg4
MzIyRUIwMEM5NTRCNSAvKiBKU1RvdWNoTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzAz
MzRFOTE0NUExRjM2MDA4RDhENDUgLyogSlNUcmFja0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwNzg0NjM0MjE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTMxQTA4OTVBMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUNvbW1hbmRR
dWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTdCNDkyMjE2QTlCOEZGMDAxQzg4MzkgLyog
SlNUcmFuc2l0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3NTBENUMwQTkwREVF
MTAwMEZGMjE1IC8qIEpTVHJlZVdhbGtlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTZCQjc5
NDBDRTkxRTY4MDA1MTJGNzkgLyogSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4NjYyOUQwMDlEQTJCNDgwMDk2MzNBNSAvKiBKU1VJRXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDY1MzA3RDExREI2RUU0QTAwRTQxMzdDIC8qIEpTVUlFdmVudEluaXQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5NjkxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BV
TGlicmFyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzUzODFCNTFEODdFMDg3MDBFMkVCRTYg
LyogSlNVUkxTZWFyY2hQYXJhbXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M3M0ZCMTExOTFF
RjZGNDAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdDNzNGQjBDMTkxRUY1QTgwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1l
c3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTQxMiw2ICszMTcxNCw3IEBACiAJCQkJN0FG
OUIyMEUxOENGQjVGNDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlGRDgyRDdGNzEzRDRDOEJEMDA0RTQzNzIgLyogSlNXYXZlU2hhcGVyTm9kZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxMjBERTNGOTFDODdDNUFCMDBCNkQ0REQgLyogSlNXZWJBbmlt
YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5MDgxRTczN0Q1MTAwM0I2NjA5IC8q
IFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQzRjNEMzYz
MUE2OUIxOTAwMDU5RkMyQiAvKiBKU1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRDNGM0QzNkMxQTY5QjdENTAwNTlGQzJCIC8qIEpTV2ViR0wyUmVuZGVyaW5n
Q29udGV4dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0QyMEY2MjEwN0Y0MDY5MDBB
ODAzOTIgLyogSlNXZWJHTEFjdGl2ZUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTQzNCw2
ICszMTczNyw3IEBACiAJCQkJRDNGM0QzNjcxQTY5QjFBNTAwNTlGQzJCIC8qIEpTV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEM0YzRDM2QjFBNjlCN0M1
MDA1OUZDMkIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQ5RUVEMTRGMTA1MTk3MUEwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5n
Q29udGV4dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODk4QTFFNzM4RDVBMDAz
QjY2MDkgLyogSlNXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk2Rjk5NUEzMzFBNzA4MzM3MDBBNzM1RjQgLyogSlNXZWJHTFNhbXBsZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDlDN0I5QTIxMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xTaGFkZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTA3RDMzNTUxNTJCNjMwRTAwMUI2MzkzIC8qIEpTV2ViR0xT
aGFkZXJQcmVjaXNpb25Gb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTUwMiw2ICszMTgw
Niw3IEBACiAJCQkJMjkxN0I1NjExNDczNDk2QzAwNTJDOUQwIC8qIExheWVyRmx1c2hTY2hlZHVs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjkxN0I1NjYxNDczNDk5NTAwNTJDOUQwIC8qIExh
eWVyRmx1c2hTY2hlZHVsZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FBM0E2OUYxOTRC
NTlCNjAwMUNCRDI0IC8qIExheWVyUG9vbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODk2
MDFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjM2RTczNzFCRDE4MzdBMDAyREI4OTEgLyogTGF5b3V0UG9pbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMTQxREMwNTIxNjQ4MzRCOTAwMzcxRTVBIC8qIExheW91dFJl
Y3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEyMEFDQTQxM0Y5OThDQTAwRkU0QUM3IC8qIExh
eW91dFJlcGFpbnRlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxNjM2LDExICszMTk0MSwxMyBA
QAogCQkJCTk0OTNCNkMwMUQ3NEI0MTIwMDg4RTc4MCAvKiBNZWRpYVF1ZXJ5UGFyc2VyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUM5MDg0M0NGMUIxOEU0N0QwMEI2ODU2NCAvKiBNZWRpYVJlbW90
ZUNvbnRyb2xzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEOEFDQThFMUQyMzk3MTkwMEVDQzU5
RSAvKiBNZWRpYVJlbW90ZVNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxQTA4OTcy
MUU3MzhENUEwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRUVGQ0Q3OTE5REIzMUY3MDAzODc2RDcgLyogTWVk
aWFSZXNvdXJjZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQjEyNEQ4RjFEMzgwQkI2
MDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RC
RUFFQUMxOUQ5MkI2QzAwQkVCQTg4IC8qIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQzkwMjdGNDExQjFEMEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDOTZGNUVDNzFCNTg3MjI2MDA5MUVBOUQgLyogTWVk
aWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFB
MDg5NUQxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDOTZGNUVDNjFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFT
ZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1N0I1
RjgwRjFFNUUyQTRCMDBGMzRGOTAgLyogSlNBZXNHY21QYXJhbXMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQzkwRjY1NTUxQjIyNTNCMTAwMjE2M0ExIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0zMTc3OSw2ICszMjA4Niw3IEBACiAJCQkJMTQ3N0U3NzYwQkY0
MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDVFNUI2
MTFBMTVGMTU2MDAwQzYwOUUgLyogUGFnZUNvbmZpZ3VyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRjM4MjA4OTIxNDdEMzVGOTAwMTBCQzA2IC8qIFBhZ2VDb25zb2xlQWdlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5MTExRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVVJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURB
RUQyMDMwMTZGMjQ0MkIwMDcwRUMwRiAvKiBQYWdlQ29uc29sZUNsaWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNUEyQUYwQjE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRjM0NzQyREMxMzQzNjJGMDAwNTMxQkMyIC8qIFBhZ2VEZWJ1
Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzE4MDcsNiArMzIxMTUsNyBAQAogCQkJ
CUE4OERENDg5MEI0NjI5QjAwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2FsU3RhdGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkQ1MDAyRkIxQjU2RDc5OTAwMjBBQUY3IC8qIFBhdGhVdGlsaXRpZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThGQTZFNUUwRTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRl
cm4uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5ODQxRTczOEQ1QTAwM0I2NjA5IC8qIEpT
V2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBBMzhG
RTBFNTBDQzgyMDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
OEE2NDZDMUQxOUZGODcwMEQwRTAwRiAvKiBQYXltZW50Q29jb2EubW0gaW4gU291cmNlcyAqLywK
IAkJCQkxQThBNjQ2RDFEMTlGRjg3MDBEMEUwMEYgLyogUGF5bWVudENvbnRhY3RDb2NvYS5tbSBp
biBTb3VyY2VzICovLApAQCAtMzE4MTYsNiArMzIxMjUsNyBAQAogCQkJCTFBOEE2NDZFMUQxOUZG
ODcwMEQwRTAwRiAvKiBQYXltZW50TWV0aG9kQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkx
QTU4RTg2NzFEMTlEODBFMDBDMEVBNzMgLyogUGF5bWVudFJlcXVlc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUE4QTY0NjcxRDE5RkRGRjAwRDBFMDBGIC8qIFBheW1lbnRSZXF1ZXN0VmFsaWRh
dG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxQTA4OTY2MUU3MzhENTkwMDNCNjYwOSAvKiBK
U1dlYkdQVUZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzUzNTY0MEIwNTM4MTQw
MDJDRTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJENkU0
Njg0MTdENjYwRjUwMEVDRjhCQiAvKiBQREZEb2N1bWVudEltYWdlTWFjLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDFFNDA4MzkxRENCNzQ4OTAwRUZDRTE5IC8qIFBlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxODU1LDYgKzMyMTY1LDcgQEAKIAkJCQlCQzk0RDEw
ODBDMjc0Rjg4MDA2QkM2MTcgLyogUGxhdGZvcm1TY3JlZW5NYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQkyOTM0OTQwQjE2QzAyQzBBMDA5MDEzMTggLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjkzNDk0MEExNkMwMkMwNzAwOTAxMzE4
IC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MzFBMDg5ODExRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI5N0JFM0RBMTZDMDQzRDgwMDMzMTZCRCAvKiBQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFBMTJERjQ5
MTc0M0RGODMwMDREQUZERiAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMjk3QkUzRDgxNkMwM0NDRTAwMzMxNkJEIC8qIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJNYWMubW0gaW4gU291cmNlcyAqLywKQEAgLTMxOTM4LDYgKzMyMjQ5LDcgQEAK
IAkJCQkwRjVCN0E1NDEwRjY1RDdBMDAzNzYzMDIgLyogUmVuZGVyRW1iZWRkZWRPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMDY2Qzc3MzAwQUI2MDNGRDAwMjM4Q0M0IC8qIFJlbmRlckZp
bGVVcGxvYWRDb250cm9sLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzQzgyOThEMTNEOEQ5Mjcw
MERFMkRFQiAvKiBSZW5kZXJGbGV4aWJsZUJveC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEw
ODk2RjFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUwOENDQTUwMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhy
ZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NzFERUQ0MEExNTMwQzcwMEIxMkE2OCAvKiBS
ZW5kZXJGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQzMDgwRTExN0NGN0U3MDBBNzkx
RjcgLyogUmVuZGVyRnJhbWVCYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzE5NjcsNiArMzIy
NzksNyBAQAogCQkJCTQzOTA0NkQ5MTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxGZW5j
ZWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDM5MDQ2RDkxMkRBMjVFODAwQUY4MUIzIC8qIFJl
bmRlck1hdGhNTEZlbmNlZE9wZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzOTA0NkRC
MTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkzMUEwODk3QjFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzkwNDZERDEyREEyNUU4MDBBRjgwQTIg
LyogUmVuZGVyTWF0aE1MTWF0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNTcxODgzRUVGNjE4
NzkzNzUxRTQwODkgLyogUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDM5MDQ2REYxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTE9wZXJhdG9yLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMzIwNTAsNiArMzIzNjMsNyBAQAogCQkJCTI2QzE1Q0Y2MTg1N0Ux
NUQwMEYxNUMwMyAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQkEwMDMxMTZGQjkyQUMwMEJB
N0EzNSAvKiBSZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RTQy
OENFNTEzRTM0MDdGMDAzQjY2MUMgLyogUmVzb3VyY2VIYW5kbGVJT1MubW0gaW4gU291cmNlcyAq
LywKKwkJCQkzMUEwODkwNTFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTRDNzY1MTBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3Vy
Y2VIYW5kbGVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0UyMjdFMzBBRjU4OUFEMDBENDgz
MjQgLyogUmVzb3VyY2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NzUxMkQy
NkU3MDAwRTc5NDE1IC8qIFJlc291cmNlTG9hZGVyQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0zMjA1OCw2ICszMjM3Miw3IEBACiAJCQkJOTczRTMyNTYxMDg4M0I3QzAwNUJDNDkzIC8qIFJl
c291cmNlTG9hZE5vdGlmaWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZCNjkzQTM0MUM1MUE5
NUQwMEIwM0JFRiAvKiBSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3QTkyOUNBNjFDNTk4QTlFMDA0REYyMjYgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkzMUEwODkwQjFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVRnVu
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FEM0NERDkxQzhBMDAyRjAwRjEyNjk4IC8q
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTRD
NzY3QzBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3RUU2ODQ2RTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZO
ZXQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMjE0Nyw4ICszMjQ2MiwxMCBAQAogCQkJCTBGNjA1
QUVDMTVGOTQ4NDgwMDRERjBDMCAvKiBTY3JvbGxpbmdDb25zdHJhaW50cy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQUY2MkVFNzE0REEyMkE3MDA0MTU1NkMgLyogU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDNEU0MEUxODdGODJFMTAwNDU4ODJDIC8qIFNj
cm9sbGluZ0Nvb3JkaW5hdG9ySU9TLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5MUExRTcz
N0Q1NTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yQ3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRjYyRUU2MTREQTIyQTcwMDQxNTU2QyAvKiBT
Y3JvbGxpbmdDb29yZGluYXRvck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxQzYxQjBBMURF
NTM2RTcwMDhBMjEyRCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMzFBMDg5NTQxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVQnVmZmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUxN0RFRUU1MURFOTRBREMwMEI5MTY0NCAvKiBTY3JvbGxp
bmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0MzOEJGRTE2
NDQ3M0M3MDAwOTFFQjIgLyogU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZFQTNFN0MxOTFCMkZDNTAwMEYxQjU1IC8qIFNjcm9sbGluZ1N0YXRlRnJhbWVT
Y3JvbGxpbmdOb2RlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzIxODMsOSArMzI1MDAsMTEgQEAK
IAkJCQlGNTVCM0REMTEyNTFGMTJEMDAzRUYyNjkgLyogU2VhcmNoSW5wdXRUeXBlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBFNzA1OEVFMUJDNUJDMTkwMDQ1QTUwNyAvKiBTZWFyY2hQb3B1cE1l
bnVDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTk3NkYzNkVBMTQ2ODYyMjUwMDVFOTNCNCAv
KiBTZWN1cml0eUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5MEUxRTczN0Q1
MTAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDRDBFMEZBMEU5NzJDMzUwMDI2NURFQSAvKiBTZWN1cml0eU9yaWdpbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MUUzQUEwQTFCOThCQ0FCMDAzNkFEODEgLyogU2VjdXJpdHlPcmln
aW5EYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRjdBRkM3MUE0OEE4QkMwMEM4RTRFNyAv
KiBTZWN1cml0eU9yaWdpblBvbGljeS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODkxMjFF
NzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc0RDJEQTQxNDZBNTM1RDAwRDUxRjhCIC8qIFNl
Y3VyaXR5UG9saWN5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk5Q0MwQjVEMThCRTk4NEEwMDZD
RUJDQyAvKiBTZWdtZW50ZWRJbnB1dFN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJD
M0RBMkUwRDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTMyMjkyLDYgKzMyNjExLDcgQEAKIAkJCQkxQTM3NjM2QjFBMkU2OEJCMDA5QTdFRTIg
LyogU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgxMDJD
NTg4MTMyNUJCMTEwMERERTY3QSAvKiBTdHJpbmdDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCMjM1NDBGMjBEMDA3ODJFMDAyMzgyRkEgLyogU3RyaW5nVHJ1bmNhdG9yLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTMxQTA4OTA0MUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVCdWZmZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE0QjgyMDQxRDZERjBERjAwNzdFQkUzIC8qIFN0cnVj
dHVyZWRDbG9uZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzVFQjZBMjBFODFEQzRGMDBCMjU5
NjUgLyogU3R5bGVCYWNrZ3JvdW5kRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzVFQjY3
RDBFODFENDIwMDBCMjU5NjUgLyogU3R5bGVCb3hEYXRhLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MzI1NTMsNiArMzI4NzMsNyBAQAogCQkJCTJENEY5NkY4MUExRUNDMjQwMDk4QkY4OCAvKiBUZXh0
SW5kaWNhdG9yV2luZG93Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjU1QjNERDkxMjUxRjEyRDAw
M0VGMjY5IC8qIFRleHRJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0VDQURGQ0Qx
NTM3NzkxRDAwRTM3MDY4IC8qIFRleHRJbnNlcnRpb25CYXNlQ29tbWFuZC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkzMUEwODk2MzFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVEcmF3YWJsZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUxQjA5OUU2NDkyMDA1NkU1ODEgLyogVGV4dEl0
ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0RDk4OEI2MTdCRkVCMjEwMDg0RkI4OCAv
KiBUZXh0Tm9kZVRyYXZlcnNhbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzE4REE1ODE4MUFG
NkE1MDBDNEVGMjIgLyogVGV4dFBhaW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMjYyMCw2
ICszMjk0MSw3IEBACiAJCQkJQzM3NUQ3RkQxNjYzOTUxOTAwNjE4NEFCIC8qIFR5cGVBaGVhZC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUxOTA5OUU2NDkyMDA1NkU1ODEgLyogVHlwaW5n
Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMUI0RDBBNDRFRkM3MDBGOTkyRTAg
LyogVUlFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODk3RTFFNzM4RDVBMDAzQjY2
MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzNTRBM0MwQjI0RjhDOTAwM0Y2REVBIC8qIFVJRXZlbnRX
aXRoS2V5U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE4ODY0RTAxQkJBRjU3MTAwRTU0
MEM5IC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxOThGN0E0
MUJCREI3OTMwMEUyQ0M1RiAvKiBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0zMjY2MSwxMiArMzI5ODMsMTQgQEAKIAkJCQk1MkQ1QTE4RjFDNTQ1OTIz
MDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQ0RFODNEQjExODNDNDQwNjAwMzFFQUEzIC8qIFZpZGVvUGxheWJhY2tRdWFsaXR5LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUNEOUQ4Mjc5MUM3QjhFRTEwMDZGRjA2NiAvKiBWaWRlb1Rl
eHR1cmVDb3BpZXJDVi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODkxNTFFNzM3RDUxMDAz
QjY2MDkgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJFODhFMERFMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJFODhFMEUxMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDMzNkY2NzE3RkEwQUM2MDBERERDRDAgLyogVmlkZW9U
cmFja1ByaXZhdGVBVkZPYmpDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEOEI1QTQyMTgwRDE0
OUEwMDhCOEU2NSAvKiBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUNFRjQxOENFMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3Vt
ZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNkY5QTgzODE4QTA0NkFDMDBBRUI4OEEgLyog
Vmlld3BvcnRDb25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxQTA4OTA3MUU3
MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTNGRkZGOUFEMTU5RDlCMDYwMDIwQkJENSAvKiBWaWV3cG9ydFN0eWxlUmVz
b2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMUYwOTlFNjQ5MjAwNTZFNTgxIC8q
IFZpc2libGVQb3NpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODgzREYyNzBGM0QwNDVE
MDBGMTlCRjYgLyogVmlzaWJsZVNlbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMyNzA2
LDYgKzMzMDMwLDcgQEAKIAkJCQlDRDEyN0RFRDE0RjMwOTdEMDBFODQ3NzkgLyogV2ViQ29yZUZ1
bGxTY3JlZW5XaW5kb3cubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzM0OEJEMzBEQjdGODA0MDA0
QUJBQkIgLyogV2ViQ29yZUpTQnVpbHRpbkludGVybmFscy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzM0OEJEMzBEQjdGODA0MDA0QUJBQkEgLyogV2ViQ29yZUpTQnVpbHRpbnMuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMzFBMDg5NTcxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVQ29tbWFu
ZEJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjdERjE0ODFFMkJGMUIxMDA5NTk1MUIg
LyogV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTQwMzc5QzEy
NEJFQTdGMDBBRjQwRTQgLyogV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0gaW4gU291cmNlcyAqLywK
IAkJCQlDREM5NzlGNDFDNDk4QzA5MDBEQjUwRDQgLyogV2ViQ29yZU5TRXJyb3JFeHRyYXMubW0g
aW4gU291cmNlcyAqLywKQEAgLTMyODQ2LDYgKzMzMTcxLDcgQEAKIAkJCQkyRTQzNDY0RjBGNTQ2
QTgyMDBCMEYxQkEgLyogV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTEyNzFBMTQwRUVFQzgwNDAwRjYxMjEzIC8qIFdvcmtlck5hdmlnYXRvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyRTQzNDY1MjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyUnVuTG9vcC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODkwRjFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BV
UmVuZGVyaW5nQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTdGRDcxQjFEQjk0MjNF
MDA2QUUyNEIgLyogV29ya2VyUnVudGltZUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUx
QTY0M0ZEMEVDMDk3QTAwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE1NEEwQzY1MURCODA1MzYwMDE3QTkwQiAvKiBXb3JrZXJTY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggYTc4YjAxODQ0MzcuLjU2MzdjMTQwOTg0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSwgMjAxMSwg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDctMjAwOSwgMjAxMSwgMjAxNiwgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQyLDYgKzQyLDEwIEBACiAjaW5jbHVkZSAiSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJHUFUpCisj
aW5jbHVkZSAiSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCisjZW5kaWYKKwogI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCiAjaW5jbHVkZSAiSlNUb3VjaC5oIgogI2luY2x1ZGUgIkpTVG91Y2hM
aXN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52
YXNFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENh
bnZhc0VsZW1lbnRDdXN0b20uY3BwCmluZGV4IDE3MmMwZDk5NzkxLi41MzE2ODkyYzhiMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxl
bWVudEN1c3RvbS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3
LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNywgMjAxNiwgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzcsNiArMzcsMTAgQEAKICNpbmNsdWRl
ICJKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFdF
QkdQVSkKKyNpbmNsdWRlICJKU1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKKyNlbmRpZgorCiB1
c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02NCw2ICs2OCwx
MSBAQCBKU1ZhbHVlIEpTSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQoRXhlY1N0YXRlJiBz
dGF0ZSkKICAgICB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJHUFUpCisgICAgaWYgKEhUTUxD
YW52YXNFbGVtZW50Ojppc1dlYkdQVVR5cGUoY29udGV4dElkKSkKKyAgICAgICAgcmV0dXJuIHRv
SlM8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ+Pj4oc3Rh
dGUsICpnbG9iYWxPYmplY3QoKSwgc3RhdGljX2Nhc3Q8V2ViR1BVUmVuZGVyaW5nQ29udGV4dCo+
KHdyYXBwZWQoKS5nZXRDb250ZXh0V2ViR1BVKGNvbnRleHRJZCkpKTsKKyNlbmRpZgorCiAgICAg
cmV0dXJuIGpzTnVsbCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvckN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvckN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
LjViMGExMzdlMDhjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3JDdXN0b20uY3BwCkBAIC0w
LDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3IuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJKU0RP
TUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVu
dERlc2NyaXB0b3I+JiYgb2JqZWN0KQoreworICAgIGlmIChvYmplY3QtPmlzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvcigpKQorICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxXZWJHUFVSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG9i
amVjdCkpOworICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFdlYkdQVVJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvcj4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG9iamVjdCkpOworfQorCitKU1Zh
bHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yJiBvYmplY3QpCit7CisgICAg
cmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgb2JqZWN0KTsKK30KKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR1BVUmVuZGVy
aW5nQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdQ
VVJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi5jM2QxYzMyNWIyMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2ViR1BVUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKQEAgLTAsMCAr
MSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCIK
KworI2lmIEVOQUJMRShXRUJHUFUpCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKwordm9pZCBKU1dlYkdQVVJlbmRlcmluZ0NvbnRleHQ6OnZpc2l0QWRkaXRp
b25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIHZpc2l0b3IuYWRkT3Bh
cXVlUm9vdCgmd3JhcHBlZCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggNGI1MWVm
ZTljNzQuLjQ1N2JlNjJjZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYs
IDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA2LCAyMDA3LCAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgogICogQ29weXJp
Z2h0IChDKSAyMDEwIFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCkBAIC02Miw2ICs2MiwxMCBAQAogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQkdQVSkKKyNpbmNsdWRlICJX
ZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQog
I2luY2x1ZGUgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgogCkBAIC0xOTUsNiArMTk5LDExIEBAIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQqIEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KGNvbnN0
IFN0cmluZyYgdHlwZSkKICAgICBpZiAoSFRNTENhbnZhc0VsZW1lbnQ6OmlzMmRUeXBlKHR5cGUp
KQogICAgICAgICByZXR1cm4gZ2V0Q29udGV4dDJkKHR5cGUpOwogCisjaWYgRU5BQkxFKFdFQkdQ
VSkKKyAgICBpZiAoSFRNTENhbnZhc0VsZW1lbnQ6OmlzV2ViR1BVVHlwZSh0eXBlKSkKKyAgICAg
ICAgcmV0dXJuIGdldENvbnRleHRXZWJHUFUodHlwZSk7CisjZW5kaWYKKwogI2lmIEVOQUJMRShX
RUJHTCkKICAgICBpZiAoSFRNTENhbnZhc0VsZW1lbnQ6OmlzM2RUeXBlKHR5cGUpKQogICAgICAg
ICByZXR1cm4gZ2V0Q29udGV4dFdlYkdMKHR5cGUpOwpAQCAtMjk4LDYgKzMwNywzMSBAQCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dFdlYkdMKGNv
bnN0IFN0cmluZyYgdHlwZSwgVwogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCR1BVKQorYm9v
bCBIVE1MQ2FudmFzRWxlbWVudDo6aXNXZWJHUFVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKK3sK
KyAgICByZXR1cm4gdHlwZSA9PSAid2ViZ3B1IjsKK30KKworQ2FudmFzUmVuZGVyaW5nQ29udGV4
dCogSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHRXZWJHUFUoY29uc3QgU3RyaW5nJiB0eXBl
KQoreworICAgIEFTU0VSVChIVE1MQ2FudmFzRWxlbWVudDo6aXNXZWJHUFVUeXBlKHR5cGUpKTsK
KworICAgIGlmIChtX2NvbnRleHQgJiYgIW1fY29udGV4dC0+aXNHUFUoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIW1fY29udGV4dCkgeworICAgICAgICBtX2NvbnRleHQg
PSBXZWJHUFVSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoKnRoaXMpOworICAgICAgICBpZiAobV9j
b250ZXh0KSB7CisgICAgICAgICAgICAvLyBOZWVkIHRvIG1ha2Ugc3VyZSBhIFJlbmRlckxheWVy
IGFuZCBjb21wb3NpdGluZyBsYXllciBnZXQgY3JlYXRlZCBmb3IgdGhlIENhbnZhcworICAgICAg
ICAgICAgaW52YWxpZGF0ZVN0eWxlQW5kTGF5ZXJDb21wb3NpdGlvbigpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsKK30KKyNlbmRpZgorCiB2b2lkIEhU
TUxDYW52YXNFbGVtZW50OjpkaWREcmF3KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBj
bGVhckNvcGllZEltYWdlKCk7CkBAIC0zNTUsNiArMzg5LDEyIEBAIHZvaWQgSFRNTENhbnZhc0Vs
ZW1lbnQ6OnJlc2V0KCkKIAogICAgIHNldFN1cmZhY2VTaXplKG5ld1NpemUpOwogCisjaWYgRU5B
QkxFKFdFQkdQVSkKKyAgICAvLyBGSVhNRTogV2ViR1BVIG5lZWRzIHNvbWV0aGluZyBoZXJlIHRv
by4KKyAgICBpZiAoaXNHUFUoKSAmJiBvbGRTaXplICE9IHNpemUoKSkKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8V2ViR1BVUmVuZGVyaW5nQ29udGV4dCo+KG1fY29udGV4dC5nZXQoKSktPnJlc2hhcGUo
d2lkdGgoKSwgaGVpZ2h0KCkpOworI2VuZGlmCisKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgaWYg
KGlzM0QoKSAmJiBvbGRTaXplICE9IHNpemUoKSkKICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSo+KG1fY29udGV4dC5nZXQoKSktPnJlc2hhcGUod2lkdGgoKSwg
aGVpZ2h0KCkpOwpAQCAtNDIzLDEyICs0NjMsMjQgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiByKQogICAg
ICAgICB9CiAgICAgfQogCi0jaWYgRU5BQkxFKFdFQkdMKSAgICAKKyNpZiBFTkFCTEUoV0VCR1BV
KQorICAgIGlmIChpc0dQVSgpKQorICAgICAgICBzdGF0aWNfY2FzdDxXZWJHUFVSZW5kZXJpbmdD
b250ZXh0Kj4obV9jb250ZXh0LmdldCgpKS0+bWFya0xheWVyQ29tcG9zaXRlZCgpOworI2VuZGlm
CisKKyNpZiBFTkFCTEUoV0VCR0wpCiAgICAgaWYgKGlzM0QoKSkKICAgICAgICAgc3RhdGljX2Nh
c3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSo+KG1fY29udGV4dC5nZXQoKSktPm1hcmtMYXll
ckNvbXBvc2l0ZWQoKTsKICNlbmRpZgogfQogCisjaWYgRU5BQkxFKFdFQkdQVSkKK2Jvb2wgSFRN
TENhbnZhc0VsZW1lbnQ6OmlzR1BVKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZXh0ICYm
IG1fY29udGV4dC0+aXNHUFUoKTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdFQkdMKQogYm9v
bCBIVE1MQ2FudmFzRWxlbWVudDo6aXMzRCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDYW52YXNFbGVtZW50LmgKaW5kZXggY2UwNmZmYjFiNTcuLjIyY2RlZjkzZmNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMDksIDIwMTAsIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3
IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVG9yY2gg
TW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTEw
MCw2ICsxMDAsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzM2RUeXBlKGNvbnN0IFN0
cmluZyYpOwogICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGdldENvbnRleHRXZWJHTChjb25z
dCBTdHJpbmcmLCBXZWJHTENvbnRleHRBdHRyaWJ1dGVzJiYgPSB7IH0pOwogI2VuZGlmCisjaWYg
RU5BQkxFKFdFQkdQVSkKKyAgICBzdGF0aWMgYm9vbCBpc1dlYkdQVVR5cGUoY29uc3QgU3RyaW5n
Jik7CisgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogZ2V0Q29udGV4dFdlYkdQVShjb25zdCBT
dHJpbmcmKTsKKyNlbmRpZgogCiAgICAgc3RhdGljIFN0cmluZyB0b0VuY29kaW5nTWltZVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8
U3RyaW5nPiB0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxk
b3VibGU+IHF1YWxpdHkpOwpAQCAtMTc2LDYgKzE4MCw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxF
KFdFQkdMKQogICAgIGJvb2wgaXMzRCgpIGNvbnN0OwogI2VuZGlmCisjaWYgRU5BQkxFKFdFQkdQ
VSkKKyAgICBib29sIGlzR1BVKCkgY29uc3Q7CisjZW5kaWYKIAogICAgIEhhc2hTZXQ8Q2FudmFz
T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FudmFzUmVuZGVy
aW5nQ29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDc1OTA4MGY1MzFkLi5jYjUwYzc2ODUy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNTQsNiArNTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzV2Vi
R0wxKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNXZWJHTDIo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXMzZCgpIGNvbnN0IHsgcmV0dXJu
IGlzV2ViR0wxKCkgfHwgaXNXZWJHTDIoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0dQVSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQWNjZWxlcmF0ZWQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvQ2FudmFzKCkge30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVC
dWZmZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42ZWZjM2Q5
NGU2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VUJ1ZmZlci5jcHAKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHUFVC
dWZmZXIuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVCdWZmZXIuaCIK
KyNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSA8cnVudGltZS9B
cnJheUJ1ZmZlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXZWJHUFVCdWZmZXI+
IFdlYkdQVUJ1ZmZlcjo6Y3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIEFy
cmF5QnVmZmVyVmlldyogZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVC
dWZmZXIoY29udGV4dCwgZGF0YSkpOworfQorCitXZWJHUFVCdWZmZXI6OldlYkdQVUJ1ZmZlcihX
ZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEpCisg
ICAgOiBXZWJHUFVPYmplY3QoY29udGV4dCkKK3sKKyAgICBtX2J1ZmZlciA9IGNvbnRleHQtPmRl
dmljZSgpLT5jcmVhdGVCdWZmZXJGcm9tRGF0YShkYXRhKTsKK30KKworV2ViR1BVQnVmZmVyOjp+
V2ViR1BVQnVmZmVyKCkKK3sKK30KKwordW5zaWduZWQgbG9uZyBXZWJHUFVCdWZmZXI6Omxlbmd0
aCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICByZXR1cm4gbV9idWZmZXItPmxlbmd0aCgpOworfQorCitSZWZQdHI8QXJyYXlCdWZmZXI+IFdl
YkdQVUJ1ZmZlcjo6Y29udGVudHMoKSBjb25zdAoreworICAgIGlmICghbV9idWZmZXIpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIG1fYnVmZmVyLT5jb250ZW50cygpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHUFVCdWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uZTcwZWI0MDdkNDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHUFVCdWZmZXIuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
V0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgR1BVQnVmZmVyOworCitjbGFzcyBXZWJHUFVCdWZmZXIgOiBwdWJsaWMgV2Vi
R1BVT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJHUFVCdWZmZXIoKTsKKyAgICBz
dGF0aWMgUmVmPFdlYkdQVUJ1ZmZlcj4gY3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBB
cnJheUJ1ZmZlclZpZXcqKTsKKworICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKCkgY29uc3Q7Cisg
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBjb250ZW50cygpIGNvbnN0OworCisgICAgTWV0YWxCdWZm
ZXIqIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAg
V2ViR1BVQnVmZmVyKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBBcnJheUJ1ZmZlclZpZXcqKTsK
KyAgICBSZWZQdHI8TWV0YWxCdWZmZXI+IG1fYnVmZmVyOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVUJ1ZmZlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVCdWZm
ZXIuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43YmM4OWNkN2Nj
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUJ1
ZmZlci5pZGwKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0
UnVudGltZT1XZWJHUFUKK10gaW50ZXJmYWNlIFdlYkdQVUJ1ZmZlciB7CisKKyAgICByZWFkb25s
eSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CisgICAgcmVhZG9ubHkgYXR0cmlidXRl
IEFycmF5QnVmZmVyVmlldyBjb250ZW50czsKKworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLmYyODRmZDAzMGE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKQEAgLTAsMCArMSw4
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHUFVDb21tYW5kQnVmZmVyLmgiCisKKyNpZiBF
TkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiR1BVQ29tbWFuZEJ1ZmZlci5oIgorI2luY2x1ZGUg
IkdQVUNvbW1hbmRRdWV1ZS5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJXZWJH
UFVDb21tYW5kUXVldWUuaCIKKyNpbmNsdWRlICJXZWJHUFVEcmF3YWJsZS5oIgorI2luY2x1ZGUg
IldlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IFdlYkdQVUNvbW1h
bmRCdWZmZXI6OmNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBXZWJHUFVD
b21tYW5kUXVldWUqIHF1ZXVlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUNv
bW1hbmRCdWZmZXIoY29udGV4dCwgcXVldWUpKTsKK30KKworV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6
V2ViR1BVQ29tbWFuZEJ1ZmZlcihXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBXZWJH
UFVDb21tYW5kUXVldWUqIHF1ZXVlKQorICAgIDogV2ViR1BVT2JqZWN0KGNvbnRleHQpCit7Cisg
ICAgTE9HKFdlYkdQVSwgIi0tIFdlYkdQVUNvbW1hbmRCdWZmZXI6OldlYkdQVUNvbW1hbmRCdWZm
ZXIoKSBORVciKTsKKyAgICBtX2NvbW1hbmRCdWZmZXIgPSBxdWV1ZS0+Y29tbWFuZFF1ZXVlKCkt
PmNyZWF0ZUNvbW1hbmRCdWZmZXIoKTsKK30KKworV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6fldlYkdQ
VUNvbW1hbmRCdWZmZXIoKQoreworICAgIExPRyhXZWJHUFUsICItLSBXZWJHUFVDb21tYW5kQnVm
ZmVyOjp+V2ViR1BVQ29tbWFuZEJ1ZmZlcigpIERFTEVURSIpOworfQorCit2b2lkIFdlYkdQVUNv
bW1hbmRCdWZmZXI6OmNvbW1pdCgpCit7CisgICAgTE9HKFdlYkdQVSwgIi0tIFdlYkdQVUNvbW1h
bmRCdWZmZXI6OmNvbW1pdCgpIik7CisgICAgaWYgKCFtX2NvbW1hbmRCdWZmZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIHJldHVybiBtX2NvbW1hbmRCdWZmZXItPmNvbW1pdCgpOworfQorCit2
b2lkIFdlYkdQVUNvbW1hbmRCdWZmZXI6OnByZXNlbnREcmF3YWJsZShXZWJHUFVEcmF3YWJsZSYg
ZHJhd2FibGUpCit7CisgICAgTE9HKFdlYkdQVSwgIi0tIFdlYkdQVUNvbW1hbmRCdWZmZXI6OnBy
ZXNlbnREcmF3YWJsZSgpIik7CisgICAgaWYgKCFtX2NvbW1hbmRCdWZmZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIHJldHVybiBtX2NvbW1hbmRCdWZmZXItPnByZXNlbnREcmF3YWJsZShkcmF3
YWJsZS5kcmF3YWJsZSgpKTsKK30KKworUmVmUHRyPFdlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVy
PiBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGVSZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNj
cmlwdG9yKFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIFJl
ZlB0cjxXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlcj4gY29tbWFuZEVuY29kZXIgPSBXZWJHUFVS
ZW5kZXJDb21tYW5kRW5jb2Rlcjo6Y3JlYXRlKHRoaXMtPmNvbnRleHQoKSwgdGhpcywgJmRlc2Ny
aXB0b3IpOworICAgIHJldHVybiBjb21tYW5kRW5jb2RlcjsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVUNvbW1hbmRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VUNvbW1hbmRCdWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
OWUxMmQ1ZGJmNWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVDb21tYW5kQnVmZmVyLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KFdFQkdQVSkKKworI2luY2x1ZGUgIldlYkdQVU9iamVjdC5oIgorCisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVUNvbW1hbmRCdWZmZXI7
CitjbGFzcyBXZWJHUFVDb21tYW5kUXVldWU7CitjbGFzcyBXZWJHUFVEcmF3YWJsZTsKK2NsYXNz
IFdlYkdQVUZ1bmN0aW9uOworY2xhc3MgV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI7CitjbGFz
cyBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjsKKworY2xhc3MgV2ViR1BVQ29tbWFuZEJ1ZmZl
ciA6IHB1YmxpYyBXZWJHUFVPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVUNv
bW1hbmRCdWZmZXIoKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IGNyZWF0
ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgV2ViR1BVQ29tbWFuZFF1ZXVlKik7CisKKyAgICB2
b2lkIGNvbW1pdCgpOworICAgIHZvaWQgcHJlc2VudERyYXdhYmxlKFdlYkdQVURyYXdhYmxlJik7
CisKKyAgICBSZWZQdHI8V2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI+IGNyZWF0ZVJlbmRlckNv
bW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3IoV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3ImKTsK
KworICAgIE1ldGFsQ29tbWFuZEJ1ZmZlciogY29tbWFuZEJ1ZmZlcigpIHsgcmV0dXJuIG1fY29t
bWFuZEJ1ZmZlci5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFdlYkdQVUNvbW1hbmRCdWZmZXIo
V2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIFdlYkdQVUNvbW1hbmRRdWV1ZSopOworICAgIFJlZlB0
cjxNZXRhbENvbW1hbmRCdWZmZXI+IG1fY29tbWFuZEJ1ZmZlcjsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHUFVDb21tYW5kQnVmZmVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVUNvbW1hbmRCdWZmZXIuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi45ZGMxNzY0MWJlNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRCdWZmZXIuaWRsCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9u
YWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGludGVyZmFjZSBXZWJH
UFVDb21tYW5kQnVmZmVyIHsKKworICAgIFdlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyIGNyZWF0
ZVJlbmRlckNvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3IoV2ViR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3IgZGVzY3JpcHRvcik7CisgICAgdm9pZCBjb21taXQoKTsKKyAgICB2b2lkIHByZXNlbnRE
cmF3YWJsZShXZWJHUFVEcmF3YWJsZSBkcmF3YWJsZSk7CisKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kUXVldWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQ29tbWFuZFF1ZXVlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uY2Q0NDIxYTQyODUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kUXVldWUuY3BwCkBAIC0wLDAg
KzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BVQ29tbWFuZFF1ZXVlLmgiCisKKyNp
ZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiR1BVQ29tbWFuZFF1ZXVlLmgiCisjaW5jbHVk
ZSAiV2ViR1BVQ29tbWFuZEJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlcmluZ0NvbnRl
eHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8V2ViR1BVQ29tbWFuZFF1ZXVlPiBX
ZWJHUFVDb21tYW5kUXVldWU6OmNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUNvbW1hbmRRdWV1ZShjb250ZXh0
KSk7Cit9CisKK1dlYkdQVUNvbW1hbmRRdWV1ZTo6V2ViR1BVQ29tbWFuZFF1ZXVlKFdlYkdQVVJl
bmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCisgICAgOiBXZWJHUFVPYmplY3QoY29udGV4dCkKK3sK
KyAgICBtX2NvbW1hbmRRdWV1ZSA9IGNvbnRleHQtPmRldmljZSgpLT5jcmVhdGVDb21tYW5kUXVl
dWUoKTsKK30KKworV2ViR1BVQ29tbWFuZFF1ZXVlOjp+V2ViR1BVQ29tbWFuZFF1ZXVlKCkKK3sK
K30KKworU3RyaW5nIFdlYkdQVUNvbW1hbmRRdWV1ZTo6bGFiZWwoKSBjb25zdAoreworICAgIGlm
ICghbV9jb21tYW5kUXVldWUpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAg
cmV0dXJuIG1fY29tbWFuZFF1ZXVlLT5sYWJlbCgpOworfQorCit2b2lkIFdlYkdQVUNvbW1hbmRR
dWV1ZTo6c2V0TGFiZWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKK3sKKyAgICBpZiAoIW1fY29tbWFu
ZFF1ZXVlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NvbW1hbmRRdWV1ZS0+c2V0TGFiZWwo
bGFiZWwpOworfQorCitSZWZQdHI8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BVQ29tbWFuZFF1
ZXVlOjpjcmVhdGVDb21tYW5kQnVmZmVyKCkKK3sKKyAgICBSZWZQdHI8V2ViR1BVQ29tbWFuZEJ1
ZmZlcj4gYnVmZmVyID0gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKHRoaXMtPmNvbnRleHQo
KSwgdGhpcyk7CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VUNvbW1hbmRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQ29tbWFu
ZFF1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmNhYzY2YWQw
MWFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
Q29tbWFuZFF1ZXVlLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkK
KworI2luY2x1ZGUgIldlYkdQVU9iamVjdC5oIgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVUNvbW1hbmRRdWV1ZTsKK2NsYXNzIFdl
YkdQVUNvbW1hbmRCdWZmZXI7CisKK2NsYXNzIFdlYkdQVUNvbW1hbmRRdWV1ZSA6IHB1YmxpYyBX
ZWJHUFVPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVUNvbW1hbmRRdWV1ZSgp
OworICAgIHN0YXRpYyBSZWY8V2ViR1BVQ29tbWFuZFF1ZXVlPiBjcmVhdGUoV2ViR1BVUmVuZGVy
aW5nQ29udGV4dCopOworCisgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRM
YWJlbChjb25zdCBTdHJpbmcmKTsKKworICAgIFJlZlB0cjxXZWJHUFVDb21tYW5kQnVmZmVyPiBj
cmVhdGVDb21tYW5kQnVmZmVyKCk7CisKKyAgICBNZXRhbENvbW1hbmRRdWV1ZSogY29tbWFuZFF1
ZXVlKCkgeyByZXR1cm4gbV9jb21tYW5kUXVldWUuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBX
ZWJHUFVDb21tYW5kUXVldWUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCopOworCisgICAgUmVmUHRy
PE1ldGFsQ29tbWFuZFF1ZXVlPiBtX2NvbW1hbmRRdWV1ZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVDb21tYW5kUXVldWUuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R1BVQ29tbWFuZFF1ZXVlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uYzE2ODliNzY2NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHUFVDb21tYW5kUXVldWUuaWRsCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VC
R1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGludGVyZmFjZSBXZWJHUFVDb21t
YW5kUXVldWUgeworCisgICAgYXR0cmlidXRlIERPTVN0cmluZyBsYWJlbDsKKworICAgIFdlYkdQ
VUNvbW1hbmRCdWZmZXI/IGNyZWF0ZUNvbW1hbmRCdWZmZXIoKTsKKworfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3Jp
cHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjZmOGM5YTA5
YzhkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdF
QkdQVSkKKworI2luY2x1ZGUgIkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCIKKyNpbmNsdWRl
ICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVm
PFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3I+IFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0
b3I6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVRGVwdGhTdGVu
Y2lsRGVzY3JpcHRvcigpKTsKK30KKworV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6V2Vi
R1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcigpCisgICAgOiBXZWJHUFVPYmplY3QoKQoreworICAg
IG1fZGVwdGhTdGVuY2lsRGVzY3JpcHRvciA9IE1ldGFsRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6
Y3JlYXRlKCk7Cit9CisKK1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3I6On5XZWJHUFVEZXB0
aFN0ZW5jaWxEZXNjcmlwdG9yKCkKK3sKK30KKworU3RyaW5nIFdlYkdQVURlcHRoU3RlbmNpbERl
c2NyaXB0b3I6OmxhYmVsKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZGVwdGhTdGVuY2lsRGVzY3Jp
cHRvcikKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4gbV9kZXB0
aFN0ZW5jaWxEZXNjcmlwdG9yLT5sYWJlbCgpOworfQorCit2b2lkIFdlYkdQVURlcHRoU3RlbmNp
bERlc2NyaXB0b3I6OnNldExhYmVsKGNvbnN0IFN0cmluZyYgbGFiZWwpCit7CisgICAgaWYgKCFt
X2RlcHRoU3RlbmNpbERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZGVwdGhT
dGVuY2lsRGVzY3JpcHRvci0+c2V0TGFiZWwobGFiZWwpOworfQorCitib29sIFdlYkdQVURlcHRo
U3RlbmNpbERlc2NyaXB0b3I6OmRlcHRoV3JpdGVFbmFibGVkKCkgY29uc3QKK3sKKyAgICBpZiAo
IW1fZGVwdGhTdGVuY2lsRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmV0dXJuIG1fZGVwdGhTdGVuY2lsRGVzY3JpcHRvci0+ZGVwdGhXcml0ZUVuYWJsZWQoKTsKK30K
Kwordm9pZCBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpzZXREZXB0aFdyaXRlRW5hYmxl
ZChib29sIG5ld0RlcHRoV3JpdGVFbmFibGVkKQoreworICAgIGlmICghbV9kZXB0aFN0ZW5jaWxE
ZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RlcHRoU3RlbmNpbERlc2NyaXB0
b3ItPnNldERlcHRoV3JpdGVFbmFibGVkKG5ld0RlcHRoV3JpdGVFbmFibGVkKTsKK30KKworYXV0
byBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpkZXB0aENvbXBhcmVGdW5jdGlvbigpIGNv
bnN0IC0+IFdlYkdQVUNvbXBhcmVGdW5jdGlvbgoreworICAgIHJldHVybiBtX2RlcHRoQ29tcGFy
ZUZ1bmN0aW9uOworfQorCit2b2lkIFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3I6OnNldERl
cHRoQ29tcGFyZUZ1bmN0aW9uKENvbXBhcmVGdW5jdGlvbiBuZXdEZXB0aENvbXBhcmVGdW5jdGlv
bikKK3sKKyAgICBtX2RlcHRoQ29tcGFyZUZ1bmN0aW9uID0gbmV3RGVwdGhDb21wYXJlRnVuY3Rp
b247CisgICAgbV9kZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLT5zZXREZXB0aENvbXBhcmVGdW5jdGlv
bih0b01ldGFsQ29tcGFyZUZ1bmN0aW9uKG1fZGVwdGhDb21wYXJlRnVuY3Rpb24pKTsKKworLy8g
ICAgaWYgKE9wdGlvbmFsPFdlYkdQVUNvbXBhcmVGdW5jdGlvbj4gY29tcGFyZUZ1bmN0aW9uID0g
dG9XZWJHUFVDb21wYXJlRnVuY3Rpb24obmV3RGVwdGhDb21wYXJlRnVuY3Rpb24pKSB7CisvLyAg
ICAgICAgbV9kZXB0aENvbXBhcmVGdW5jdGlvbiA9IGNvbXBhcmVGdW5jdGlvbi52YWx1ZSgpOwor
Ly8gICAgICAgIG1fZGVwdGhTdGVuY2lsRGVzY3JpcHRvci0+c2V0RGVwdGhDb21wYXJlRnVuY3Rp
b24odG9NZXRhbENvbXBhcmVGdW5jdGlvbihtX2RlcHRoQ29tcGFyZUZ1bmN0aW9uKSk7CisvLyAg
ICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9y
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmJiNGQyYjMzZmUzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhT
dGVuY2lsRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJH
UFUpCisKKyNpbmNsdWRlICJXZWJHUFVFbnVtcy5oIgorI2luY2x1ZGUgIldlYkdQVU9iamVjdC5o
IgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3I7CisKK2NsYXNzIFdlYkdQVURlcHRoU3RlbmNp
bERlc2NyaXB0b3IgOiBwdWJsaWMgV2ViR1BVT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5XZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCk7CisgICAgc3RhdGljIFJlZjxXZWJHUFVE
ZXB0aFN0ZW5jaWxEZXNjcmlwdG9yPiBjcmVhdGUoKTsKKworICAgIFN0cmluZyBsYWJlbCgpIGNv
bnN0OworICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgU3RyaW5nJik7CisKKyAgICBib29sIGRlcHRo
V3JpdGVFbmFibGVkKCkgY29uc3Q7CisgICAgdm9pZCBzZXREZXB0aFdyaXRlRW5hYmxlZChib29s
KTsKKworICAgIHVzaW5nIENvbXBhcmVGdW5jdGlvbiA9IFdlYkdQVUNvbXBhcmVGdW5jdGlvbjsK
KyAgICBDb21wYXJlRnVuY3Rpb24gZGVwdGhDb21wYXJlRnVuY3Rpb24oKSBjb25zdDsKKyAgICB2
b2lkIHNldERlcHRoQ29tcGFyZUZ1bmN0aW9uKENvbXBhcmVGdW5jdGlvbik7CisKKyAgICBNZXRh
bERlcHRoU3RlbmNpbERlc2NyaXB0b3IqIGRlcHRoU3RlbmNpbERlc2NyaXB0b3IoKSB7IHJldHVy
biBtX2RlcHRoU3RlbmNpbERlc2NyaXB0b3IuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWJH
UFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCk7CisKKyAgICBXZWJHUFVDb21wYXJlRnVuY3Rpb24g
bV9kZXB0aENvbXBhcmVGdW5jdGlvbjsKKyAgICBSZWZQdHI8TWV0YWxEZXB0aFN0ZW5jaWxEZXNj
cmlwdG9yPiBtX2RlcHRoU3RlbmNpbERlc2NyaXB0b3I7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uOTNiNWZjOTlmY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmlkbApA
QCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdl
YkdQVQorXSBlbnVtIFdlYkdQVUNvbXBhcmVGdW5jdGlvbiB7CisgICAgIm5ldmVyIiwKKyAgICAi
bGVzcyIsCisgICAgImVxdWFsIiwKKyAgICAibGVzc2VxdWFsIiwKKyAgICAiZ3JlYXRlciIsCisg
ICAgIm5vdGVxdWFsIiwKKyAgICAiZ3JlYXRlcmVxdWFsIiwKKyAgICAiYWx3YXlzIgorfTsKKwor
WworICAgIENvbnN0cnVjdG9yLAorICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVk
QXRSdW50aW1lPVdlYkdQVQorXSBpbnRlcmZhY2UgV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRv
ciB7CisKKyAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOworCisgICAgYXR0cmlidXRlIFdl
YkdQVUNvbXBhcmVGdW5jdGlvbiBkZXB0aENvbXBhcmVGdW5jdGlvbjsKKyAgICBhdHRyaWJ1dGUg
Ym9vbGVhbiBkZXB0aFdyaXRlRW5hYmxlZDsKKworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTFiNjY1M2U3ZDcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAK
QEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHUFVEZXB0aFN0ZW5jaWxT
dGF0ZS5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVURlcHRoU3RlbmNp
bFN0YXRlLmgiCisjaW5jbHVkZSAiV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oIgorI2lu
Y2x1ZGUgIldlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitSZWY8V2ViR1BVRGVwdGhTdGVuY2lsU3RhdGU+IFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlOjpj
cmVhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgV2ViR1BVRGVwdGhTdGVuY2ls
RGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJH
UFVEZXB0aFN0ZW5jaWxTdGF0ZShjb250ZXh0LCBkZXNjcmlwdG9yKSk7Cit9CisKK1dlYkdQVURl
cHRoU3RlbmNpbFN0YXRlOjpXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZShXZWJHUFVSZW5kZXJpbmdD
b250ZXh0KiBjb250ZXh0LCBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKiBkZXNjcmlwdG9y
KQorICAgIDogV2ViR1BVT2JqZWN0KGNvbnRleHQpCit7CisgICAgaWYgKCFjb250ZXh0IHx8ICFk
ZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisgICAgbV9kZXB0aFN0ZW5jaWxTdGF0ZSA9IE1l
dGFsRGVwdGhTdGVuY2lsU3RhdGU6OmNyZWF0ZShjb250ZXh0LT5kZXZpY2UoKS5nZXQoKSwgZGVz
Y3JpcHRvci0+ZGVwdGhTdGVuY2lsRGVzY3JpcHRvcigpKTsKK30KKworV2ViR1BVRGVwdGhTdGVu
Y2lsU3RhdGU6On5XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZSgpCit7Cit9CisKK1N0cmluZyBXZWJH
UFVEZXB0aFN0ZW5jaWxTdGF0ZTo6bGFiZWwoKSBjb25zdAoreworICAgIGlmICghbV9kZXB0aFN0
ZW5jaWxTdGF0ZSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4g
bV9kZXB0aFN0ZW5jaWxTdGF0ZS0+bGFiZWwoKTsKK30KKwordm9pZCBXZWJHUFVEZXB0aFN0ZW5j
aWxTdGF0ZTo6c2V0TGFiZWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKK3sKKyAgICBpZiAoIW1fZGVw
dGhTdGVuY2lsU3RhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZGVwdGhTdGVuY2lsU3Rh
dGUtPnNldExhYmVsKGxhYmVsKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3Rl
bmNpbFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5j
aWxTdGF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jYmMzN2Ez
ZjcxNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VURlcHRoU3RlbmNpbFN0YXRlLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
QkdQVSkKKworI2luY2x1ZGUgIldlYkdQVU9iamVjdC5oIgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVURlcHRoU3RlbmNpbFN0YXRl
OworY2xhc3MgV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjsKKworY2xhc3MgV2ViR1BVRGVw
dGhTdGVuY2lsU3RhdGUgOiBwdWJsaWMgV2ViR1BVT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZSgpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVRGVw
dGhTdGVuY2lsU3RhdGU+IGNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgV2ViR1BVRGVw
dGhTdGVuY2lsRGVzY3JpcHRvciopOworCisgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7CisgICAg
dm9pZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKTsKKworICAgIE1ldGFsRGVwdGhTdGVuY2lsU3Rh
dGUqIGRlcHRoU3RlbmNpbFN0YXRlKCkgeyByZXR1cm4gbV9kZXB0aFN0ZW5jaWxTdGF0ZS5nZXQo
KTsgfQorCitwcml2YXRlOgorICAgIFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlKFdlYkdQVVJlbmRl
cmluZ0NvbnRleHQqLCBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKik7CisKKyAgICBSZWZQ
dHI8TWV0YWxEZXB0aFN0ZW5jaWxTdGF0ZT4gbV9kZXB0aFN0ZW5jaWxTdGF0ZTsKK307CisgICAg
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaWRsIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaWRsCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41NjE1YmRmOGMzOAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmlk
bApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1l
PVdlYkdQVQorXSBpbnRlcmZhY2UgV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUgeworCisgICAgYXR0
cmlidXRlIERPTVN0cmluZyBsYWJlbDsKKworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdQVURyYXdhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVURyYXdhYmxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uZGY1Njg2YWJkMDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHUFVEcmF3YWJsZS5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJHUFVEcmF3YWJsZS5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1
ZGUgIkdQVURyYXdhYmxlLmgiCisjaW5jbHVkZSAiR1BVVGV4dHVyZS5oIgorI2luY2x1ZGUgIldl
YkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVUZXh0dXJlLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFdlYkdQVURyYXdhYmxlPiBXZWJHUFVEcmF3YWJsZTo6
Y3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViR1BVRHJhd2FibGUoY29udGV4dCkpOworfQorCitXZWJHUFVEcmF3YWJs
ZTo6V2ViR1BVRHJhd2FibGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKKyAgICA6
IFdlYkdQVU9iamVjdChjb250ZXh0KQoreworICAgIG1fZHJhd2FibGUgPSBjb250ZXh0LT5kZXZp
Y2UoKS0+Z2V0RnJhbWVidWZmZXIoKTsKKyAgICBpZiAoIW1fZHJhd2FibGUpCisgICAgICAgIHJl
dHVybjsKKworICAgIFJlZlB0cjxNZXRhbFRleHR1cmU+IGRyYXdhYmxlVGV4dHVyZSA9IE1ldGFs
VGV4dHVyZTo6Y3JlYXRlRnJvbUV4aXN0aW5nVGV4dHVyZShtX2RyYXdhYmxlLT50ZXh0dXJlKCkp
OworICAgIG1fdGV4dHVyZSA9IFdlYkdQVVRleHR1cmU6OmNyZWF0ZUZyb21EcmF3YWJsZVRleHR1
cmUoY29udGV4dCwgZHJhd2FibGVUZXh0dXJlKTsKK30KKworV2ViR1BVRHJhd2FibGU6On5XZWJH
UFVEcmF3YWJsZSgpCit7Cit9CisKK1dlYkdQVVRleHR1cmUqIFdlYkdQVURyYXdhYmxlOjp0ZXh0
dXJlKCkKK3sKKyAgICBpZiAoIW1fdGV4dHVyZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICByZXR1cm4gbV90ZXh0dXJlLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
RHJhd2FibGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURyYXdhYmxlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmFlNmZiMDE0YTA2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRHJhd2FibGUu
aApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAi
V2ViR1BVT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVRHJhd2Fi
bGU7CitjbGFzcyBXZWJHUFVUZXh0dXJlOworCitjbGFzcyBXZWJHUFVEcmF3YWJsZSA6IHB1Ymxp
YyBXZWJHUFVPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVURyYXdhYmxlKCk7
CisgICAgc3RhdGljIFJlZjxXZWJHUFVEcmF3YWJsZT4gY3JlYXRlKFdlYkdQVVJlbmRlcmluZ0Nv
bnRleHQqKTsKKworICAgIFdlYkdQVVRleHR1cmUqIHRleHR1cmUoKTsKKworICAgIE1ldGFsRHJh
d2FibGUqIGRyYXdhYmxlKCkgeyByZXR1cm4gbV9kcmF3YWJsZS5nZXQoKTsgfQorCitwcml2YXRl
OgorICAgIFdlYkdQVURyYXdhYmxlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqKTsKKyAgICBSZWZQ
dHI8TWV0YWxEcmF3YWJsZT4gbV9kcmF3YWJsZTsKKyAgICBSZWZQdHI8V2ViR1BVVGV4dHVyZT4g
bV90ZXh0dXJlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURyYXdhYmxlLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURyYXdhYmxlLmlkbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZGM5MDFjNDI0YTMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEcmF3YWJsZS5pZGwKQEAgLTAsMCAr
MSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sK
KyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10g
aW50ZXJmYWNlIFdlYkdQVURyYXdhYmxlIHsKKworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJH
UFVUZXh0dXJlIHRleHR1cmU7IC8vIEZJWE1FOiBPbmx5IHRoZSBmcmFtZWJ1ZmZlciBzaG91bGQg
aGF2ZSB0aGlzLgorCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVRW51bXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRW51bXMu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hMWJhNjUzNzY4ZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUVudW1z
LmNwcApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHUFVFbnVtcy5o
IgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVUVudW1zLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RkOjpvcHRpb25hbDxXZWJHUFVDb21wYXJlRnVuY3Rpb24+IHRv
V2ViR1BVQ29tcGFyZUZ1bmN0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIm5ldmVyIikpCisgICAgICAgIHJldHVy
biBXZWJHUFVDb21wYXJlRnVuY3Rpb246Ok5ldmVyOworICAgIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShuYW1lLCAibGVzcyIpKQorICAgICAgICByZXR1cm4gV2ViR1BVQ29tcGFy
ZUZ1bmN0aW9uOjpMZXNzOworICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShu
YW1lLCAiZXF1YWwiKSkKKyAgICAgICAgcmV0dXJuIFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6RXF1
YWw7CisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJsZXNzZXF1
YWwiKSkKKyAgICAgICAgcmV0dXJuIFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6TGVzc2VxdWFsOwor
ICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiZ3JlYXRlciIpKQor
ICAgICAgICByZXR1cm4gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpHcmVhdGVyOworICAgIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAibm90ZXF1YWwiKSkKKyAgICAgICAg
cmV0dXJuIFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6Tm90ZXF1YWw7CisgICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJncmVhdGVyZXF1YWwiKSkKKyAgICAgICAgcmV0
dXJuIFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6R3JlYXRlcmVxdWFsOworICAgIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiYWx3YXlzIikpCisgICAgICAgIHJldHVybiBX
ZWJHUFVDb21wYXJlRnVuY3Rpb246OkFsd2F5czsKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK1N0cmluZyB3ZWIzRENvbXBhcmVGdW5j
dGlvbk5hbWUoY29uc3QgV2ViR1BVQ29tcGFyZUZ1bmN0aW9uIHZhbHVlKQoreworICAgIGlmICh2
YWx1ZSA9PSBXZWJHUFVDb21wYXJlRnVuY3Rpb246Ok5ldmVyKQorICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJuZXZlciIpOworICAgIGlmICh2YWx1ZSA9PSBXZWJHUFVDb21wYXJlRnVuY3Rp
b246Okxlc3MpCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImxlc3MiKTsKKyAgICBpZiAo
dmFsdWUgPT0gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpFcXVhbCkKKyAgICAgICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbCgiZXF1YWwiKTsKKyAgICBpZiAodmFsdWUgPT0gV2ViR1BVQ29tcGFyZUZ1bmN0
aW9uOjpMZXNzZXF1YWwpCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImxlc3NlcXVhbCIp
OworICAgIGlmICh2YWx1ZSA9PSBXZWJHUFVDb21wYXJlRnVuY3Rpb246OkdyZWF0ZXIpCisgICAg
ICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImdyZWF0ZXIiKTsKKyAgICBpZiAodmFsdWUgPT0gV2Vi
R1BVQ29tcGFyZUZ1bmN0aW9uOjpOb3RlcXVhbCkKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bCgibm90ZXF1YWwiKTsKKyAgICBpZiAodmFsdWUgPT0gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpH
cmVhdGVyZXF1YWwpCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImdyZWF0ZXJlcXVhbCIp
OworICAgIGlmICh2YWx1ZSA9PSBXZWJHUFVDb21wYXJlRnVuY3Rpb246OkFsd2F5cykKKyAgICAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiYWx3YXlzIik7CisgICAgCisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cit9CisKK01ldGFsQ29tcGFyZUZ1
bmN0aW9uIHRvTWV0YWxDb21wYXJlRnVuY3Rpb24oY29uc3QgV2ViR1BVQ29tcGFyZUZ1bmN0aW9u
IHZhbHVlKQoreworICAgIGlmICh2YWx1ZSA9PSBXZWJHUFVDb21wYXJlRnVuY3Rpb246Ok5ldmVy
KQorICAgICAgICByZXR1cm4gTWV0YWxDb21wYXJlRnVuY3Rpb246Ok5ldmVyOworICAgIGlmICh2
YWx1ZSA9PSBXZWJHUFVDb21wYXJlRnVuY3Rpb246Okxlc3MpCisgICAgICAgIHJldHVybiBNZXRh
bENvbXBhcmVGdW5jdGlvbjo6TGVzczsKKyAgICBpZiAodmFsdWUgPT0gV2ViR1BVQ29tcGFyZUZ1
bmN0aW9uOjpFcXVhbCkKKyAgICAgICAgcmV0dXJuIE1ldGFsQ29tcGFyZUZ1bmN0aW9uOjpFcXVh
bDsKKyAgICBpZiAodmFsdWUgPT0gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpMZXNzZXF1YWwpCisg
ICAgICAgIHJldHVybiBNZXRhbENvbXBhcmVGdW5jdGlvbjo6TGVzc0VxdWFsOworICAgIGlmICh2
YWx1ZSA9PSBXZWJHUFVDb21wYXJlRnVuY3Rpb246OkdyZWF0ZXIpCisgICAgICAgIHJldHVybiBN
ZXRhbENvbXBhcmVGdW5jdGlvbjo6R3JlYXRlcjsKKyAgICBpZiAodmFsdWUgPT0gV2ViR1BVQ29t
cGFyZUZ1bmN0aW9uOjpOb3RlcXVhbCkKKyAgICAgICAgcmV0dXJuIE1ldGFsQ29tcGFyZUZ1bmN0
aW9uOjpOb3RFcXVhbDsKKyAgICBpZiAodmFsdWUgPT0gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpH
cmVhdGVyZXF1YWwpCisgICAgICAgIHJldHVybiBNZXRhbENvbXBhcmVGdW5jdGlvbjo6R3JlYXRl
ckVxdWFsOworICAgIGlmICh2YWx1ZSA9PSBXZWJHUFVDb21wYXJlRnVuY3Rpb246OkFsd2F5cykK
KyAgICAgICAgcmV0dXJuIE1ldGFsQ29tcGFyZUZ1bmN0aW9uOjpBbHdheXM7CisgICAgCisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIE1ldGFsQ29tcGFyZUZ1bmN0aW9uOjpO
ZXZlcjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUVudW1zLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHUFVFbnVtcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi5jYzRlNzIwZGM5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdQVUVudW1zLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFdFQkdQVSkKKworI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3MgV2Vi
R1BVQ29tcGFyZUZ1bmN0aW9uIHsKKyAgICBOZXZlciwKKyAgICBMZXNzLAorICAgIEVxdWFsLAor
ICAgIExlc3NlcXVhbCwKKyAgICBHcmVhdGVyLAorICAgIE5vdGVxdWFsLAorICAgIEdyZWF0ZXJl
cXVhbCwKKyAgICBBbHdheXMKK307CisKK3N0ZDo6b3B0aW9uYWw8V2ViR1BVQ29tcGFyZUZ1bmN0
aW9uPiB0b1dlYkdQVUNvbXBhcmVGdW5jdGlvbihjb25zdCBTdHJpbmcmKTsKK1N0cmluZyB3ZWIz
RENvbXBhcmVGdW5jdGlvbk5hbWUoY29uc3QgV2ViR1BVQ29tcGFyZUZ1bmN0aW9uKTsKKworZW51
bSBjbGFzcyBHUFVDb21wYXJlRnVuY3Rpb247CitNZXRhbENvbXBhcmVGdW5jdGlvbiB0b01ldGFs
Q29tcGFyZUZ1bmN0aW9uKGNvbnN0IFdlYkdQVUNvbXBhcmVGdW5jdGlvbik7CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHUFVFbnVtcy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVFbnVtcy5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjcyMWZh
MTRkMmU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R1BVRW51bXMuaWRsCkBAIC0wLDAgKzEsMjc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFi
bGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQVVBpeGVsRm9ybWF0IHsKKyAgICAiQkdS
QThVbm9ybSIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0
UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVMb2FkQWN0aW9uIHsKKyAgICAiZG9udGNhcmUi
LAorICAgICJsb2FkIiwKKyAgICAiY2xlYXIiCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VC
R1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVudW0gV2ViR1BVU3RvcmVBY3Rp
b24geworICAgICJkb250Y2FyZSIsCisgICAgInN0b3JlIiwKKyAgICAibXVsdGlzYW1wbGVyZXNv
bHZlIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50
aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQVVByaW1pdGl2ZVR5cGUgeworICAgICJwb2ludCIsCisg
ICAgImxpbmUiLAorICAgICJsaW5lc3RyaXAiLAorICAgICJ0cmlhbmdsZSIsCisgICAgInRyaWFu
Z2xlc3RyaXAiCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRB
dFJ1bnRpbWU9V2ViR1BVCitdIGVudW0gV2ViR1BVRnVuY3Rpb25UeXBlIHsKKyAgICAiZnJhZ21l
bnQiLAorICAgICJ2ZXJ0ZXgiCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAg
IEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVudW0gV2ViR1BVU3RlbmNpbE9wZXJhdGlvbiB7
CisgICAgImtlZXAiLAorICAgICJ6ZXJvIiwKKyAgICAicmVwbGFjZSIsCisgICAgImluY3JlbWVu
dGNsYW1wIiwKKyAgICAiZGVjcmVtZW50Y2xhbXAiLAorICAgICJpbnZlcnQiLAorICAgICJpbmNy
ZW1lbnR3cmFwIiwKKyAgICAiZGVjcmVtZW50d3JhcCIKK307CisKK1sKKyAgICBDb25kaXRpb25h
bD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVTdGF0
dXMgeworICAgICJub3RlbnF1ZXVlZCIsCisgICAgImVucXVldWVkIiwKKyAgICAiY29tbWl0dGVk
IiwKKyAgICAic2NoZWR1bGVkIiwKKyAgICAiY29tcGxldGVkIiwKKyAgICAiZXJyb3IiCit9Owor
CitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BV
CitdIGVudW0gV2ViR1BVU2FtcGxlckFkZHJlc3NNb2RlIHsKKyAgICAiY2xhbXB0b2VkZ2UiLAor
ICAgICJtaXJyb3JjbGFtcHRvZWRnZSIsCisgICAgInJlcGVhdCIsCisgICAgIm1pcnJvcnJlcGVh
dCIsCisgICAgImNsYW1wdG96ZXJvIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwK
KyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQVVNhbXBsZXJNaW5NYWdG
aWx0ZXIgeworICAgICJuZWFyZXN0IiwKKyAgICAibGluZWFyIgorfTsKKworWworICAgIENvbmRp
dGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQ
VVNhbXBsZXJNaXBGaWx0ZXIgeworICAgICJub3RtaXBtYXBwZWQiLAorICAgICJuZWFyZXN0IiwK
KyAgICAibGluZWFyIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFi
bGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQVUN1bGxNb2RlIHsKKyAgICAibm9uZSIs
CisgICAgImZyb250IiwKKyAgICAiYmFjayIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJH
UFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVJbmRleFR5cGUg
eworICAgICJ1aW50MTYiLAorICAgICJ1aW50MzIiCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9
V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVudW0gV2ViR1BVVmlzaWJp
bGl0eVJlc3VsdE1vZGUgeworICAgICJkaXNhYmxlZCIsCisgICAgImJvb2xlYW4iLAorICAgICJj
b3VudGluZyIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0
UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVXaW5kaW5nIHsKKyAgICAiY2xvY2t3aXNlIiwK
KyAgICAiY291bnRlcmNsb2Nrd2lzZSIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUs
CisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVEZXB0aENsaXBNb2Rl
IHsKKyAgICAiY2xpcCIsCisgICAgImNsYW1wIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVdF
QkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQVVRyaWFuZ2xl
RmlsbE1vZGUgeworICAgICJmaWxsIiwKKyAgICAibGluZXMiCit9OworCitbCisgICAgQ29uZGl0
aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVudW0gV2ViR1BV
Q1BVQ2FjaGVNb2RlIHsKKyAgICAiZGVmYXVsdGNhY2hlIiwKKyAgICAid3JpdGVjb21iaW5lZCIK
K307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1X
ZWJHUFUKK10gZW51bSBXZWJHUFVTdG9yYWdlTW9kZSB7CisgICAgInNoYXJlZCIsCisgICAgIm1h
bmFnZWQiLAorICAgICJwcml2YXRlIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwK
KyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQVVJlc291cmNlT3B0aW9u
cyB7CisgICAgImNwdWNhY2hlbW9kZWRlZmF1bHRjYWNoZSIsCisgICAgImNwdWNhY2hlbW9kZXdy
aXRlY29tYmluZWQiLAorICAgICJzdG9yYWdlbW9kZXNoYXJlZCIsCisgICAgInN0b3JhZ2Vtb2Rl
bWFuYWdlZCIsCisgICAgInN0b3JhZ2Vtb2RlcHJpdmF0ZSIsCisgICAgIm9wdGlvbmNwdWNhY2hl
bW9kZWRlZmF1bHRjYWNoZSIsCisgICAgIm9wdGlvbmNwdWNhY2hlbW9kZXdyaXRlY29tYmluZWQi
Cit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9
V2ViR1BVCitdIGVudW0gV2ViR1BVVGV4dHVyZVVzYWdlIHsKKyAgICAidW5rbm93biIsCisgICAg
InNoYWRlcnJlYWQiLAorICAgICJzaGFkZXJ3cml0ZSIsCisgICAgInJlbmRlcnRhcmdldCIsCisg
ICAgInBpeGVsZm9ybWF0dmlldyIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisg
ICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVCbGVuZE9wZXJhdGlvbiB7
CisgICAgImFkZCIsCisgICAgInN1YnRyYWN0IiwKKyAgICAicmV2ZXJzZXN1YnRyYWN0IiwKKyAg
ICAibWluIiwKKyAgICAibWF4IgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAg
ICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQVUJsZW5kRmFjdG9yIHsKKyAg
ICAiemVybyIsCisgICAgIm9uZSIsCisgICAgInNvdXJjZWNvbG9yIiwKKyAgICAib25lbWludXNz
b3VyY2Vjb2xvciIsCisgICAgInNvdXJjZWFscGhhIiwKKyAgICAib25lbWludXNzb3VyY2VhbHBo
YSIsCisgICAgImRlc3RpbmF0aW9uY29sb3IiLAorICAgICJvbmVtaW51c2Rlc3RpbmF0aW9uY29s
b3IiLAorICAgICJkZXN0aW5hdGlvbmFscGhhIiwKKyAgICAib25lbWludXNkZXN0aW5hdGlvbmFs
cGhhIiwKKyAgICAic291cmNlYWxwaGFzYXR1cmF0ZWQiLAorICAgICJibGVuZGNvbG9yIiwKKyAg
ICAib25lbWludXNibGVuZGNvbG9yIiwKKyAgICAiYmxlbmRhbHBoYSIsCisgICAgIm9uZW1pbnVz
YmxlbmRhbHBoYSIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxl
ZEF0UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVDb2xvcldyaXRlTWFzayB7CisgICAgIm5v
bmUiLAorICAgICJyZWQiLAorICAgICJncmVlbiIsCisgICAgImJsdWUiLAorICAgICJhbHBoYSIs
CisgICAgImFsbCIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxl
ZEF0UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVNdWx0aXNhbXBsZURlcHRoUmVzb2x2ZUZp
bHRlciB7CisgICAgInNhbXBsZTAiLAorICAgICJtaW4iLAorICAgICJtYXgiCit9OworCitbCisg
ICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVu
dW0gV2ViR1BVRmVhdHVyZVNldCB7CisgICAgImxldmVsMSIsCisgICAgImxldmVsMiIKK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVGdW5jdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVGdW5jdGlvbi5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjYzZThiZjgwMjExCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24uY3BwCkBAIC0w
LDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BVRnVuY3Rpb24uaCIKKworI2lm
IEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkdQ
VUxpYnJhcnkuaCIKKyNpbmNsdWRlICJXZWJHUFVMaWJyYXJ5LmgiCisjaW5jbHVkZSAiV2ViR1BV
UmVuZGVyaW5nQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXZWJHUFVG
dW5jdGlvbj4gV2ViR1BVRnVuY3Rpb246OmNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBj
b250ZXh0LCBXZWJHUFVMaWJyYXJ5KiBsaWJyYXJ5LCBjb25zdCBTdHJpbmcmIG5hbWUpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVRnVuY3Rpb24oY29udGV4dCwgbGlicmFyeSwg
bmFtZSkpOworfQorCitXZWJHUFVGdW5jdGlvbjo6V2ViR1BVRnVuY3Rpb24oV2ViR1BVUmVuZGVy
aW5nQ29udGV4dCogY29udGV4dCwgV2ViR1BVTGlicmFyeSogbGlicmFyeSwgY29uc3QgU3RyaW5n
JiBuYW1lKQorICAgIDogV2ViR1BVT2JqZWN0KGNvbnRleHQpCit7CisgICAgbV9mdW5jdGlvbiA9
IGxpYnJhcnktPmxpYnJhcnkoKS0+ZnVuY3Rpb25XaXRoTmFtZShuYW1lKTsKK30KKworV2ViR1BV
RnVuY3Rpb246On5XZWJHUFVGdW5jdGlvbigpCit7Cit9CisKK1N0cmluZyBXZWJHUFVGdW5jdGlv
bjo6bmFtZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2Z1bmN0aW9uKQorICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKKworICAgIHJldHVybiBtX2Z1bmN0aW9uLT5uYW1lKCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHUFVGdW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVRnVuY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uMGE5NTFhOTMwNWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHUFVGdW5jdGlvbi5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShX
RUJHUFUpCisKKyNpbmNsdWRlICJXZWJHUFVPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBHUFVGdW5jdGlvbjsKK2NsYXNzIFdlYkdQVUxpYnJhcnk7CisKK2NsYXNzIFdl
YkdQVUZ1bmN0aW9uIDogcHVibGljIFdlYkdQVU9iamVjdCB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+V2ViR1BVRnVuY3Rpb24oKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVUZ1bmN0aW9uPiBjcmVh
dGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIFdlYkdQVUxpYnJhcnkqLCBjb25zdCBTdHJpbmcm
IG5hbWUpOworCisgICAgU3RyaW5nIG5hbWUoKSBjb25zdDsKKworICAgIE1ldGFsRnVuY3Rpb24q
IGZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbi5nZXQoKTsgfQorCitwcml2YXRl
OgorICAgIFdlYkdQVUZ1bmN0aW9uKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBXZWJHUFVMaWJy
YXJ5KiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKworICAgIFJlZlB0cjxNZXRhbEZ1bmN0aW9uPiBt
X2Z1bmN0aW9uOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVGdW5jdGlvbi5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVGdW5jdGlvbi5pZGwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjE1NjAzNjcwY2ZhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24uaWRsCkBAIC0w
LDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BV
CitdIGludGVyZmFjZSBXZWJHUFVGdW5jdGlvbiB7CisKKyAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIG5hbWU7CisKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHUFVMaWJyYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VUxpYnJhcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42ZDM3
NTc5MzVjNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdQVUxpYnJhcnkuY3BwCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vi
R1BVTGlicmFyeS5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVUxpYnJh
cnkuaCIKKyNpbmNsdWRlICJXZWJHUFVGdW5jdGlvbi5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRl
cmluZ0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8V2ViR1BVTGlicmFy
eT4gV2ViR1BVTGlicmFyeTo6Y3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJHUFVMaWJyYXJ5KGNvbnRleHQsIHNvdXJjZUNvZGUpKTsKK30KKworV2ViR1BVTGlicmFyeTo6
V2ViR1BVTGlicmFyeShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIHNvdXJjZUNvZGUpCisgICAgOiBXZWJHUFVPYmplY3QoY29udGV4dCkKKyAgICAsIG1fc291
cmNlQ29kZShzb3VyY2VDb2RlKQoreworICAgIG1fbGlicmFyeSA9IGNvbnRleHQtPmRldmljZSgp
LT5jcmVhdGVMaWJyYXJ5KHNvdXJjZUNvZGUpOworfQorCitXZWJHUFVMaWJyYXJ5Ojp+V2ViR1BV
TGlicmFyeSgpCit7Cit9CisKK1N0cmluZyBXZWJHUFVMaWJyYXJ5OjpsYWJlbCgpIGNvbnN0Cit7
CisgICAgaWYgKCFtX2xpYnJhcnkpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisg
ICAgcmV0dXJuIG1fbGlicmFyeS0+bGFiZWwoKTsKK30KKwordm9pZCBXZWJHUFVMaWJyYXJ5Ojpz
ZXRMYWJlbChjb25zdCBTdHJpbmcmIGxhYmVsKQoreworICAgIGlmICghbV9saWJyYXJ5KQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2xpYnJhcnktPnNldExhYmVsKGxhYmVsKTsKK30KKworVmVj
dG9yPFN0cmluZz4gV2ViR1BVTGlicmFyeTo6ZnVuY3Rpb25OYW1lcygpCit7CisgICAgaWYgKCFt
X2xpYnJhcnkpCisgICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOworCisgICAgcmV0dXJu
IG1fbGlicmFyeS0+ZnVuY3Rpb25OYW1lcygpOworfQorCitSZWZQdHI8V2ViR1BVRnVuY3Rpb24+
IFdlYkdQVUxpYnJhcnk6OmZ1bmN0aW9uV2l0aE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQorewor
ICAgIGlmICghbV9saWJyYXJ5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlZlB0
cjxXZWJHUFVGdW5jdGlvbj4gZnVuY3Rpb24gPSBXZWJHUFVGdW5jdGlvbjo6Y3JlYXRlKHRoaXMt
PmNvbnRleHQoKSwgdGhpcywgbmFtZSk7CisgICAgaWYgKCFmdW5jdGlvbi0+ZnVuY3Rpb24oKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGZ1bmN0aW9uOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVTGlicmFyeS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVTGlicmFyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45
N2YxYTRhYTQ4MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVUxpYnJhcnkuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BV
KQorCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0LmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVTGlicmFyeTsKK2NsYXNzIFdlYkdQ
VUZ1bmN0aW9uOworCitjbGFzcyBXZWJHUFVMaWJyYXJ5IDogcHVibGljIFdlYkdQVU9iamVjdCB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViR1BVTGlicmFyeSgpOworICAgIHN0YXRpYyBSZWY8
V2ViR1BVTGlicmFyeT4gY3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBjb25zdCBTdHJp
bmcmIHNvdXJjZUNvZGUpOworCisgICAgU3RyaW5nIHNvdXJjZUNvZGUoKSBjb25zdCB7IHJldHVy
biBtX3NvdXJjZUNvZGU7IH0KKyAgICBTdHJpbmcgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkIHNl
dExhYmVsKGNvbnN0IFN0cmluZyYpOworCisgICAgVmVjdG9yPFN0cmluZz4gZnVuY3Rpb25OYW1l
cygpOworCisgICAgUmVmUHRyPFdlYkdQVUZ1bmN0aW9uPiBmdW5jdGlvbldpdGhOYW1lKGNvbnN0
IFN0cmluZyYpOworCisgICAgTWV0YWxMaWJyYXJ5KiBsaWJyYXJ5KCkgeyByZXR1cm4gbV9saWJy
YXJ5LmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgV2ViR1BVTGlicmFyeShXZWJHUFVSZW5kZXJp
bmdDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKTsKKworICAgIFN0cmluZyBtX3Nv
dXJjZUNvZGU7CisgICAgUmVmUHRyPE1ldGFsTGlicmFyeT4gbV9saWJyYXJ5OworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdQVUxpYnJhcnkuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVTGlicmFyeS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLmQzMzAzMjJmYTdlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR1BVTGlicmFyeS5pZGwKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUs
CisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gaW50ZXJmYWNlIFdlYkdQVUxpYnJhcnkg
eworCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBzb3VyY2VDb2RlOworICAgIGF0
dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHNlcXVlbmNl
PERPTVN0cmluZz4gZnVuY3Rpb25OYW1lczsKKworICAgIFdlYkdQVUZ1bmN0aW9uPyBmdW5jdGlv
bldpdGhOYW1lKERPTVN0cmluZyBuYW1lKTsKKworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHUFVPYmplY3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi5kMWE3Mzc0Y2VhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVU9iamVjdC5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJHUFVPYmplY3QuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJX
ZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2ViR1BV
T2JqZWN0OjpXZWJHUFVPYmplY3QoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKKyAg
ICA6IG1fY29udGV4dChjb250ZXh0KQoreworfQorCitXZWJHUFVPYmplY3Q6On5XZWJHUFVPYmpl
Y3QoKQoreworfQorCit2b2lkIFdlYkdQVU9iamVjdDo6ZGVsZXRlT2JqZWN0KE1ldGFsRGV2aWNl
KikKK3sKKyAgICBtX2RlbGV0ZWQgPSB0cnVlOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVT2JqZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVPYmplY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uMTU5ZmVlZDVmODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVPYmplY3QuaApAQCAtMCwwICsxLDU5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiR1BVRGV2aWNlLmgiCisKKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYkdQVVJl
bmRlcmluZ0NvbnRleHQ7CisKK2NsYXNzIFdlYkdQVU9iamVjdCA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYkdQVU9iamVjdD4geworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVU9iamVjdCgpOwor
CisgICAgdm9pZCBkZWxldGVPYmplY3QoTWV0YWxEZXZpY2UqKTsKKyAgICBib29sIGlzRGVsZXRl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsZXRlZDsgfQorCisgICAgV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dCogY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6
CisgICAgV2ViR1BVT2JqZWN0KFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqID0gbnVsbHB0cik7CisK
KyAgICBib29sIGhhc0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQ7IH0KKworcHJp
dmF0ZToKKyAgICBSZWZQdHI8V2ViR1BVUmVuZGVyaW5nQ29udGV4dD4gbV9jb250ZXh0OworICAg
IGJvb2wgbV9kZWxldGVkIHsgZmFsc2UgfTsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwLi41ZDM4NDY3NjFjYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcApAQCAtMCwwICsx
LDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5o
IgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVUNvbW1hbmRCdWZmZXIuaCIK
KyNpbmNsdWRlICJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5oIgorI2luY2x1ZGUgIkdQVVJlbmRl
clBhc3NEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiV2ViR1BVQnVmZmVyLmgiCisjaW5jbHVkZSAi
V2ViR1BVQ29tbWFuZEJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkdQVURlcHRoU3RlbmNpbFN0YXRl
LmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJX
ZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXZWJHUFVSZW5kZXJDb21tYW5k
RW5jb2Rlcj4gV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI6OmNyZWF0ZShXZWJHUFVSZW5kZXJp
bmdDb250ZXh0KiBjb250ZXh0LCBXZWJHUFVDb21tYW5kQnVmZmVyKiBidWZmZXIsIFdlYkdQVVJl
bmRlclBhc3NEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyKGNvbnRleHQsIGJ1ZmZlciwgZGVzY3JpcHRv
cikpOworfQorCitXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlcjo6V2ViR1BVUmVuZGVyQ29tbWFu
ZEVuY29kZXIoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgV2ViR1BVQ29tbWFuZEJ1
ZmZlciogYnVmZmVyLCBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciogZGVzY3JpcHRvcikKKyAg
ICA6IFdlYkdQVU9iamVjdChjb250ZXh0KQoreworICAgIG1fcmVuZGVyQ29tbWFuZEVuY29kZXIg
PSBidWZmZXItPmNvbW1hbmRCdWZmZXIoKS0+Y3JlYXRlUmVuZGVyQ29tbWFuZEVuY29kZXIoZGVz
Y3JpcHRvci0+cmVuZGVyUGFzc0Rlc2NyaXB0b3IoKSk7Cit9CisKK1dlYkdQVVJlbmRlckNvbW1h
bmRFbmNvZGVyOjp+V2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIoKQoreworfQorCit2b2lkIFdl
YkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRSZW5kZXJQaXBlbGluZVN0YXRlKFdlYkdQVVJl
bmRlclBpcGVsaW5lU3RhdGUmIHBpcGVsaW5lU3RhdGUpCit7CisgICAgaWYgKCFtX3JlbmRlckNv
bW1hbmRFbmNvZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3JlbmRlckNvbW1hbmRFbmNv
ZGVyLT5zZXRSZW5kZXJQaXBlbGluZVN0YXRlKHBpcGVsaW5lU3RhdGUucmVuZGVyUGlwZWxpbmVT
dGF0ZSgpKTsKK30KKwordm9pZCBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RGVwdGhT
dGVuY2lsU3RhdGUoV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUmIGRlcHRoU3RlbmNpbFN0YXRlKQor
eworICAgIGlmICghbV9yZW5kZXJDb21tYW5kRW5jb2RlcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9yZW5kZXJDb21tYW5kRW5jb2Rlci0+c2V0RGVwdGhTdGVuY2lsU3RhdGUoZGVwdGhTdGVu
Y2lsU3RhdGUuZGVwdGhTdGVuY2lsU3RhdGUoKSk7Cit9CisKK3ZvaWQgV2ViR1BVUmVuZGVyQ29t
bWFuZEVuY29kZXI6OnNldFZlcnRleEJ1ZmZlcihXZWJHUFVCdWZmZXImIGJ1ZmZlciwgdW5zaWdu
ZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGluZGV4KQoreworICAgIGlmICghbV9yZW5kZXJD
b21tYW5kRW5jb2RlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9yZW5kZXJDb21tYW5kRW5j
b2Rlci0+c2V0VmVydGV4QnVmZmVyKGJ1ZmZlci5idWZmZXIoKSwgb2Zmc2V0LCBpbmRleCk7Cit9
CisKK3ZvaWQgV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50QnVmZmVyKFdl
YkdQVUJ1ZmZlciYgYnVmZmVyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgaW5k
ZXgpCit7CisgICAgaWYgKCFtX3JlbmRlckNvbW1hbmRFbmNvZGVyKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX3JlbmRlckNvbW1hbmRFbmNvZGVyLT5zZXRGcmFnbWVudEJ1ZmZlcihidWZmZXIu
YnVmZmVyKCksIG9mZnNldCwgaW5kZXgpOworfQorCit2b2lkIFdlYkdQVVJlbmRlckNvbW1hbmRF
bmNvZGVyOjpkcmF3UHJpbWl0aXZlcyh1bnNpZ25lZCBpbnQgdHlwZSwgdW5zaWduZWQgaW50IHN0
YXJ0LCB1bnNpZ25lZCBpbnQgY291bnQpCit7CisgICAgaWYgKCFtX3JlbmRlckNvbW1hbmRFbmNv
ZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3JlbmRlckNvbW1hbmRFbmNvZGVyLT5kcmF3
UHJpbWl0aXZlcyh0eXBlLCBzdGFydCwgY291bnQpOworfQorCit2b2lkIFdlYkdQVVJlbmRlckNv
bW1hbmRFbmNvZGVyOjplbmRFbmNvZGluZygpCit7CisgICAgaWYgKCFtX3JlbmRlckNvbW1hbmRF
bmNvZGVyKQorICAgICAgICByZXR1cm47CisgICAgcmV0dXJuIG1fcmVuZGVyQ29tbWFuZEVuY29k
ZXItPmVuZEVuY29kaW5nKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJDb21t
YW5kRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyQ29t
bWFuZEVuY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMmNh
ZWRlNzczMjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXZWJHUFVPYmplY3QuaCIKKworI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVSZW5kZXJDb21t
YW5kRW5jb2RlcjsKK2NsYXNzIFdlYkdQVUNvbW1hbmRCdWZmZXI7CitjbGFzcyBXZWJHUFVEZXB0
aFN0ZW5jaWxTdGF0ZTsKK2NsYXNzIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOworY2xhc3Mg
V2ViR1BVRnVuY3Rpb247CitjbGFzcyBXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlOworY2xhc3Mg
V2ViR1BVQnVmZmVyOworCitjbGFzcyBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2RlciA6IHB1Ymxp
YyBXZWJHUFVPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVVJlbmRlckNvbW1h
bmRFbmNvZGVyKCk7CisgICAgc3RhdGljIFJlZjxXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlcj4g
Y3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBXZWJHUFVDb21tYW5kQnVmZmVyKiwgV2Vi
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IqKTsKKworICAgIHZvaWQgc2V0UmVuZGVyUGlwZWxpbmVT
dGF0ZShXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlJik7CisgICAgdm9pZCBzZXREZXB0aFN0ZW5j
aWxTdGF0ZShXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZSYpOworICAgIHZvaWQgc2V0VmVydGV4QnVm
ZmVyKFdlYkdQVUJ1ZmZlciYsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBpbmRl
eCk7CisgICAgdm9pZCBzZXRGcmFnbWVudEJ1ZmZlcihXZWJHUFVCdWZmZXImLCB1bnNpZ25lZCBp
bnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgaW5kZXgpOworICAgIHZvaWQgZHJhd1ByaW1pdGl2ZXMo
dW5zaWduZWQgaW50IHR5cGUsIHVuc2lnbmVkIGludCBzdGFydCwgdW5zaWduZWQgaW50IGNvdW50
KTsKKyAgICB2b2lkIGVuZEVuY29kaW5nKCk7CisKKyAgICBNZXRhbFJlbmRlckNvbW1hbmRFbmNv
ZGVyKiByZW5kZXJDb21tYW5kRW5jb2RlcigpIHsgcmV0dXJuIG1fcmVuZGVyQ29tbWFuZEVuY29k
ZXIuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2RlcihX
ZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgV2ViR1BVQ29tbWFuZEJ1ZmZlciosIFdlYkdQVVJlbmRl
clBhc3NEZXNjcmlwdG9yKik7CisgICAgUmVmUHRyPE1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXI+
IG1fcmVuZGVyQ29tbWFuZEVuY29kZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVu
ZGVyQ29tbWFuZEVuY29kZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
UmVuZGVyQ29tbWFuZEVuY29kZXIuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi5jOTk0M2M1OTc1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmlkbApAQCAtMCwwICsxLDM5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENv
bmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBpbnRlcmZh
Y2UgV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIgeworCisgICAgdm9pZCBzZXRSZW5kZXJQaXBl
bGluZVN0YXRlKFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUgcGlwZWxpbmVTdGF0ZSk7CisgICAg
dm9pZCBzZXREZXB0aFN0ZW5jaWxTdGF0ZShXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZSBkZXB0aFN0
ZW5jaWxTdGF0ZSk7CisgICAgdm9pZCBzZXRWZXJ0ZXhCdWZmZXIoV2ViR1BVQnVmZmVyIGJ1ZmZl
ciwgdW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIHZvaWQg
c2V0RnJhZ21lbnRCdWZmZXIoV2ViR1BVQnVmZmVyIGJ1ZmZlciwgdW5zaWduZWQgbG9uZyBvZmZz
ZXQsIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIHZvaWQgZHJhd1ByaW1pdGl2ZXModW5zaWdu
ZWQgbG9uZyB0eXBlLCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGNvdW50KTsK
KworICAgIHZvaWQgZW5kRW5jb2RpbmcoKTsKKworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hZTRl
ZmQ0OGUzYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKQEAgLTAsMCArMSw5OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3Iu
aCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJHUFVUZXh0dXJlLmgiCisjaW5jbHVkZSAiV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVVRleHR1cmUuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6
OldlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcihXZWJHUFVSZW5kZXJpbmdDb250
ZXh0KiBjb250ZXh0LCBNZXRhbFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciogZGVzY3Jp
cHRvcikKKyAgICA6IFdlYkdQVU9iamVjdChjb250ZXh0KQorICAgICwgbV9yZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3IoZGVzY3JpcHRvcikKK3sKK30KKworV2ViR1BVUmVuZGVyUGFzc0F0
dGFjaG1lbnREZXNjcmlwdG9yOjp+V2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
KCkKK3sKK30KKwordW5zaWduZWQgbG9uZyBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3I6OmxvYWRBY3Rpb24oKSBjb25zdAoreworICAgIGlmICghbV9yZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiAwOyAvLyBGSVhNRTogcHJvYmFibHkgYSBy
ZWFsIHZhbHVlIGZvciB1bmtub3duCisKKyAgICByZXR1cm4gbV9yZW5kZXJQYXNzQXR0YWNobWVu
dERlc2NyaXB0b3ItPmxvYWRBY3Rpb24oKTsKK30KKwordm9pZCBXZWJHUFVSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3I6OnNldExvYWRBY3Rpb24odW5zaWduZWQgbG9uZyBuZXdMb2FkQWN0
aW9uKQoreworICAgIGlmICghbV9yZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fcmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLT5zZXRM
b2FkQWN0aW9uKG5ld0xvYWRBY3Rpb24pOworfQorCit1bnNpZ25lZCBsb25nIFdlYkdQVVJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c3RvcmVBY3Rpb24oKSBjb25zdAoreworICAgIGlm
ICghbV9yZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiAwOyAv
LyBGSVhNRTogcHJvYmFibHkgYSByZWFsIHZhbHVlIGZvciB1bmtub3duCisKKyAgICByZXR1cm4g
bV9yZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3ItPnN0b3JlQWN0aW9uKCk7Cit9CisKK3Zv
aWQgV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTdG9yZUFjdGlvbih1
bnNpZ25lZCBsb25nIG5ld1N0b3JlQWN0aW9uKQoreworICAgIGlmICghbV9yZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVuZGVyUGFzc0F0
dGFjaG1lbnREZXNjcmlwdG9yLT5zZXRTdG9yZUFjdGlvbihuZXdTdG9yZUFjdGlvbik7Cit9CisK
K1JlZlB0cjxXZWJHUFVUZXh0dXJlPiBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0
b3I6OnRleHR1cmUoKSBjb25zdAoreworICAgIHJldHVybiBtX3RleHR1cmU7Cit9CisKK3ZvaWQg
V2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRUZXh0dXJlKFJlZlB0cjxX
ZWJHUFVUZXh0dXJlPiBuZXdUZXh0dXJlKQoreworICAgIGlmICghbmV3VGV4dHVyZSkKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIG1fdGV4dHVyZSA9IG5ld1RleHR1cmU7CisgICAgCisgICAg
aWYgKG1fcmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKQorICAgICAgICBtX3JlbmRlclBh
c3NBdHRhY2htZW50RGVzY3JpcHRvci0+c2V0VGV4dHVyZShuZXdUZXh0dXJlLT50ZXh0dXJlKCkp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
ZmUwZGY1ZmQ5ODMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaApAQCAtMCwwICsxLDY5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0LmgiCisK
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
R1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOworY2xhc3MgV2ViR1BVVGV4dHVyZTsK
KworY2xhc3MgV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yIDogcHVibGljIFdl
YkdQVU9iamVjdCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViR1BVUmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yKCk7CisKKyAgICB1bnNpZ25lZCBsb25nIGxvYWRBY3Rpb24oKSBjb25z
dDsKKyAgICB2b2lkIHNldExvYWRBY3Rpb24odW5zaWduZWQgbG9uZyk7CisKKyAgICB1bnNpZ25l
ZCBsb25nIHN0b3JlQWN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTdG9yZUFjdGlvbih1bnNp
Z25lZCBsb25nKTsKKworICAgIFJlZlB0cjxXZWJHUFVUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Q7
CisgICAgdm9pZCBzZXRUZXh0dXJlKFJlZlB0cjxXZWJHUFVUZXh0dXJlPik7CisKKyAgICBNZXRh
bFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciogcmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3Iu
Z2V0KCk7IH0KKworICAgIHZpcnR1YWwgYm9vbCBpc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3Io
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCitwcm90ZWN0ZWQ6CisKKyAgICBXZWJHUFVSZW5k
ZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIE1ldGFs
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKik7CisKKworcHJpdmF0ZToKKworICAgIFJl
ZlB0cjxNZXRhbFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcj4gbV9yZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3I7CisgICAgUmVmUHRyPFdlYkdQVVRleHR1cmU+IG1fdGV4dHVyZTsK
K307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NB
dHRhY2htZW50RGVzY3JpcHRvci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLmRiODhjZmNiZGM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmlkbApAQCAtMCww
ICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
WworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVSwK
KyAgICBDdXN0b21Ub0pTT2JqZWN0CitdCitpbnRlcmZhY2UgV2ViR1BVUmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yIHsKKworICAgIGF0dHJpYnV0ZSBXZWJHUFVUZXh0dXJlPyB0ZXh0dXJl
OworCisgICAgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9hZEFjdGlvbjsgLy8gc2hvdWxkIGJl
IFdlYkdQVUxvYWRBY3Rpb24KKyAgICBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBzdG9yZUFjdGlv
bjsgLy8gc2hvdWxkIGJlIFdlYkdQVVN0b3JlQWN0aW9uCisKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLjEyNDRiYjNkODhhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3Iu
Y3BwCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlICJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgorI2luY2x1
ZGUgIkdQVVRleHR1cmUuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCisj
aW5jbHVkZSAiV2ViR1BVVGV4dHVyZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxX
ZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gV2ViR1BVUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0
KiBjb250ZXh0LCBNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNj
cmlwdG9yKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yKGNvbnRleHQsIGRlc2NyaXB0b3IpKTsKK30KKworV2ViR1BV
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OldlYkdQVVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIE1l
dGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCisgICAg
OiBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoY29udGV4dCwgZGVzY3JpcHRv
cikKK3sKK30KKworV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6On5X
ZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpCit7Cit9CisKK01ldGFs
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIFdlYkdQVVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yOjpyZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1ldGFsUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IqPihyZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoKSk7
Cit9CisKK1ZlY3RvcjxmbG9hdD4gV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3I6OmNsZWFyQ29sb3IoKSBjb25zdAoreworICAgIE1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IqIGRlc2NyaXB0b3IgPSByZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvcigpOworICAgIGlmICghZGVzY3JpcHRvcikgeworICAgICAgICBWZWN0b3I8Zmxv
YXQ+IGJsYWNrID0geyAwLjAsIDAuMCwgMC4wLCAxLjAgfTsKKyAgICAgICAgcmV0dXJuIGJsYWNr
OworICAgIH0KKyAgICByZXR1cm4gZGVzY3JpcHRvci0+Y2xlYXJDb2xvcigpOworfQorCit2b2lk
IFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRDbGVhckNvbG9y
KGNvbnN0IFZlY3RvcjxmbG9hdD4mIG5ld0NsZWFyQ29sb3IpCit7CisgICAgTWV0YWxSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogZGVzY3JpcHRvciA9IHJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yKCk7CisgICAgaWYgKCFkZXNjcmlwdG9yKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBkZXNjcmlwdG9yLT5zZXRDbGVhckNvbG9yKG5ld0NsZWFyQ29sb3IpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLmIzMjI2NjJmZjQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaApAQCAt
MCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BV
T2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
LmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I7CisKK2NsYXNzIFdl
YkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yIDogcHVibGljIFdlYkdQVVJl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2Vi
R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKTsKKyAgICBzdGF0aWMgUmVm
PFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBjcmVhdGUoV2ViR1BV
UmVuZGVyaW5nQ29udGV4dCosIE1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IqKTsKKworICAgIFZlY3RvcjxmbG9hdD4gY2xlYXJDb2xvcigpIGNvbnN0OworICAgIHZvaWQg
c2V0Q2xlYXJDb2xvcihjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CisKKyAgICBNZXRhbFJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiByZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvcigpIGNvbnN0OworCisgICAgYm9vbCBpc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3Io
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKK3ByaXZhdGU6CisgICAgV2ViR1BV
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoV2ViR1BVUmVuZGVyaW5nQ29udGV4
dCosIE1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqKTsKKworfTsKKyAg
ICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLmFkNzFkNTYyMGFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaWRs
CkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9
V2ViR1BVCitdIGludGVyZmFjZSBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvciA6IFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7CisKKyAgICBhdHRy
aWJ1dGUgc2VxdWVuY2U8ZmxvYXQ+IGNsZWFyQ29sb3I7CisKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLjYyZDZmMjc1Mzg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3Iu
Y3BwCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFz
c0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlICJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIgorI2luY2x1
ZGUgIkdQVVRleHR1cmUuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCisj
aW5jbHVkZSAiV2ViR1BVVGV4dHVyZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxX
ZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcj4gV2ViR1BVUmVuZGVyUGFz
c0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OmNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0
KiBjb250ZXh0LCBNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNj
cmlwdG9yKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVJlbmRlclBhc3NEZXB0
aEF0dGFjaG1lbnREZXNjcmlwdG9yKGNvbnRleHQsIGRlc2NyaXB0b3IpKTsKK30KKworV2ViR1BV
UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OldlYkdQVVJlbmRlclBhc3NEZXB0
aEF0dGFjaG1lbnREZXNjcmlwdG9yKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIE1l
dGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCisgICAg
OiBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoY29udGV4dCwgZGVzY3JpcHRv
cikKK3sKK30KKworV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6On5X
ZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcigpCit7Cit9CisKK2RvdWJs
ZSBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6Y2xlYXJEZXB0aCgp
IGNvbnN0Cit7CisgICAgTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciog
ZGVzY3JpcHRvciA9IHJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKCk7CisgICAg
aWYgKCFkZXNjcmlwdG9yKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBkZXNjcmlw
dG9yLT5jbGVhckRlcHRoKCk7Cit9CisKK3ZvaWQgV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNo
bWVudERlc2NyaXB0b3I6OnNldENsZWFyRGVwdGgoZG91YmxlIG5ld0NsZWFyRGVwdGgpCit7Cisg
ICAgTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogZGVzY3JpcHRvciA9
IHJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKCk7CisgICAgaWYgKCFkZXNjcmlw
dG9yKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgZGVzY3JpcHRvci0+c2V0Q2xlYXJEZXB0
aChuZXdDbGVhckRlcHRoKTsKK30KKworTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvciogV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OnJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8TWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcio+KHJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvcigpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43MzhhYjRjNWFmNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NE
ZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldlYkdQVU9iamVjdC5oIgorI2luY2x1ZGUgIldlYkdQ
VVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOworCitjbGFz
cyBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBXZWJH
UFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IgeworcHVibGljOgorICAgIHZpcnR1YWwg
fldlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKCk7CisgICAgc3RhdGlj
IFJlZjxXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcj4gY3JlYXRlKFdl
YkdQVVJlbmRlcmluZ0NvbnRleHQqLCBNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNj
cmlwdG9yKik7CisKKyAgICBkb3VibGUgY2xlYXJEZXB0aCgpIGNvbnN0OworICAgIHZvaWQgc2V0
Q2xlYXJEZXB0aChkb3VibGUpOworCisgICAgTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvciogcmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoKSBjb25zdDsK
KworcHJpdmF0ZToKKyAgICBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
cihXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvciopOworCit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmlkbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzAwOGJjZjMzZTgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVwdGhB
dHRhY2htZW50RGVzY3JpcHRvci5pZGwKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUs
CisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gaW50ZXJmYWNlIFdlYkdQVVJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yIDogV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnRE
ZXNjcmlwdG9yIHsKKworICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGNsZWFyRGVw
dGg7CisKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVS
ZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjJmOGIyMzZkNzJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCkBAIC0wLDAgKzEsODIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKKwor
I2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKKyNpbmNs
dWRlICJXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgorI2luY2x1
ZGUgIldlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisjaW5jbHVk
ZSAiV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Jl
ZjxXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcj4gV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I6
OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3IoKSk7Cit9CisKK1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOjpXZWJHUFVSZW5k
ZXJQYXNzRGVzY3JpcHRvcigpCisgICAgOiBXZWJHUFVPYmplY3QoKQoreworICAgIG1fcmVuZGVy
UGFzc0Rlc2NyaXB0b3IgPSBNZXRhbFJlbmRlclBhc3NEZXNjcmlwdG9yOjpjcmVhdGUoKTsKK30K
KworV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I6On5XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRv
cigpCit7Cit9CisKK1JlZlB0cjxXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3Jp
cHRvcj4gV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I6OmRlcHRoQXR0YWNobWVudCgpCit7Cisg
ICAgaWYgKCFtX3JlbmRlclBhc3NEZXNjcmlwdG9yKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIGlmICghbV9kZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKSB7CisgICAgICAgIFJlZlB0
cjxNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yPiBwbGF0Zm9ybURlcHRo
QXR0YWNobWVudCA9IG1fcmVuZGVyUGFzc0Rlc2NyaXB0b3ItPmRlcHRoQXR0YWNobWVudCgpOwor
ICAgICAgICBtX2RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgPSBXZWJHUFVSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvcjo6Y3JlYXRlKHRoaXMtPmNvbnRleHQoKSwgcGxhdGZvcm1E
ZXB0aEF0dGFjaG1lbnQuZ2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gbV9kZXB0aEF0dGFjaG1l
bnREZXNjcmlwdG9yOworfQorCitWZWN0b3I8UmVmUHRyPFdlYkdQVVJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yPj4gV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I6OmNvbG9yQXR0
YWNobWVudHMoKQoreworICAgIGlmICghbV9yZW5kZXJQYXNzRGVzY3JpcHRvcikKKyAgICAgICAg
cmV0dXJuIFZlY3RvcjxSZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3I+PigpOworCisgICAgaWYgKCFtX2NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JzLnNpemUo
KSkgeworICAgICAgICBWZWN0b3I8UmVmUHRyPE1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3I+PiBwbGF0Zm9ybUNvbG9yQXR0YWNobWVudHMgPSBtX3JlbmRlclBhc3NEZXNj
cmlwdG9yLT5jb2xvckF0dGFjaG1lbnRzKCk7CisgICAgICAgIGZvciAoYXV0byYgYXR0YWNobWVu
dCA6IHBsYXRmb3JtQ29sb3JBdHRhY2htZW50cykKKyAgICAgICAgICAgIG1fY29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvcnMuYXBwZW5kKFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yOjpjcmVhdGUodGhpcy0+Y29udGV4dCgpLCBhdHRhY2htZW50LmdldCgpKSk7CisgICAg
fQorICAgIHJldHVybiBtX2NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JzOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLjg0YzA1OTI5ZGM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaApAQCAt
MCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BV
T2JqZWN0LmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I7CitjbGFzcyBXZWJHUFVSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjsKK2NsYXNzIFdlYkdQVVJlbmRlclBhc3NEZXB0
aEF0dGFjaG1lbnREZXNjcmlwdG9yOworCitjbGFzcyBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRv
ciA6IHB1YmxpYyBXZWJHUFVPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVVJl
bmRlclBhc3NEZXNjcmlwdG9yKCk7CisgICAgc3RhdGljIFJlZjxXZWJHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvcj4gY3JlYXRlKCk7CisKKyAgICBSZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0
YWNobWVudERlc2NyaXB0b3I+IGRlcHRoQXR0YWNobWVudCgpOworICAgIFZlY3RvcjxSZWZQdHI8
V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+PiBjb2xvckF0dGFjaG1l
bnRzKCk7CisKKyAgICBNZXRhbFJlbmRlclBhc3NEZXNjcmlwdG9yKiByZW5kZXJQYXNzRGVzY3Jp
cHRvcigpIHsgcmV0dXJuIG1fcmVuZGVyUGFzc0Rlc2NyaXB0b3IuZ2V0KCk7IH0KKworcHJpdmF0
ZToKKyAgICBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcigpOworCisgICAgVmVjdG9yPFJlZlB0
cjxXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4+IG1fY29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcnM7CisgICAgUmVmUHRyPFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yPiBtX2RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I7CisKKyAgICBSZWZQ
dHI8TWV0YWxSZW5kZXJQYXNzRGVzY3JpcHRvcj4gbV9yZW5kZXJQYXNzRGVzY3JpcHRvcjsKK307
CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaWRsIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaWRs
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hMDI2NGJhMmQxZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yLmlkbApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbnN0cnVjdG9yLAorICAgIENvbmRpdGlv
bmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBpbnRlcmZhY2UgV2Vi
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IgeworCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHNlcXVl
bmNlPFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBjb2xvckF0dGFj
aG1lbnRzOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvciBkZXB0aEF0dGFjaG1lbnQ7CisgICAgLy9yZWFkb25seSBhdHRyaWJ1
dGUgV2ViR1BVUmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciBzdGVuY2lsQXR0
YWNobWVudDsKKworICAgIC8vIHJlbmRlclRhcmdldEFycmF5TGVuZ3RoCisgICAgLy8gdmlzaWJp
bGl0eVJlc3VsdEJ1ZmZlcgorCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjNlMDY5MzA5MjAyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcApA
QCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2lu
Y2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgorI2lu
Y2x1ZGUgIldlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitSZWY8V2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBXZWJH
UFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmNyZWF0ZShXZWJHUFVS
ZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoY29udGV4dCwgZGVz
Y3JpcHRvcikpOworfQorCitXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3I6OldlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcihXZWJH
UFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvciogZGVzY3JpcHRvcikKKyAgICA6IFdlYkdQVU9iamVjdChjb250ZXh0
KQorICAgICwgbV9yZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoZGVzY3Jp
cHRvcikKK3sKK30KKworV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yOjp+V2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCkKK3sK
K30KKwordW5zaWduZWQgbG9uZyBXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3I6OnBpeGVsRm9ybWF0KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKQorICAgICAgICByZXR1cm4gMDsgLy8gRklYTUU6
IHByb2JhYmx5IGEgcmVhbCB2YWx1ZSBmb3IgdW5rbm93bgorCisgICAgcmV0dXJuIG1fcmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLT5waXhlbEZvcm1hdCgpOworfQorCit2
b2lkIFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0UGl4
ZWxGb3JtYXQodW5zaWduZWQgbG9uZyBuZXdQaXhlbEZvcm1hdCkKK3sKKyAgICBpZiAoIW1fcmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX3JlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci0+c2V0UGl4ZWxG
b3JtYXQobmV3UGl4ZWxGb3JtYXQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uM2NjZmZmZWVlMDIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaApAQCAtMCwwICsxLDU0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0LmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yOworCitjbGFzcyBXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IgOiBwdWJsaWMgV2ViR1BVT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJH
UFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKTsKKyAgICBzdGF0aWMg
UmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gY3JlYXRl
KFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvciopOworCisgICAgdW5zaWduZWQgbG9uZyBwaXhlbEZvcm1hdCgpIGNvbnN0
OworICAgIHZvaWQgc2V0UGl4ZWxGb3JtYXQodW5zaWduZWQgbG9uZyk7CisKKyAgICBNZXRhbFJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogcmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yKCkgeyByZXR1cm4gbV9yZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWJHUFVSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCos
IE1ldGFsUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKik7CisKKyAgICBS
ZWZQdHI8TWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IG1fcmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOworfTsKKyAgICAKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaWRs
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uZmI4YmYzNjE5ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaWRs
CkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9
V2ViR1BVCitdIGludGVyZmFjZSBXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IgeworCisgICAgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgcGl4ZWxGb3JtYXQ7IC8v
IHNob3VsZCBiZSBNVExQaXhlbEZvcm1hdAorCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjUxYjZhY2FkODJlCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yLmNwcApAQCAtMCwwICsxLDE0MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKKworI2lmIEVOQUJMRShXRUJHUFUp
CisKKyNpbmNsdWRlICJHUFVGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIldlYkdQVUZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiV2Vi
R1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAi
V2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxX
ZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcjo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IoKSk7Cit9CisKK1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cjo6V2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCkKKyAgICA6IFdlYkdQVU9iamVjdCgp
Cit7CisgICAgbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSBNZXRhbFJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcjo6Y3JlYXRlKCk7Cit9CisKK1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cjo6fldlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpCit7Cit9CisKK1N0cmluZyBXZWJH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmxhYmVsKCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
cmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
KworICAgIHJldHVybiBtX3JlbmRlclBpcGVsaW5lRGVzY3JpcHRvci0+bGFiZWwoKTsKK30KKwor
dm9pZCBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldExhYmVsKGNvbnN0IFN0cmlu
ZyYgbGFiZWwpCit7CisgICAgaWYgKCFtX3JlbmRlclBpcGVsaW5lRGVzY3JpcHRvcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3ItPnNldExhYmVsKGxh
YmVsKTsKK30KKworUmVmUHRyPFdlYkdQVUZ1bmN0aW9uPiBXZWJHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OnZlcnRleEZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV92ZXJ0ZXhG
dW5jdGlvbjsKK30KKwordm9pZCBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFZl
cnRleEZ1bmN0aW9uKFJlZlB0cjxXZWJHUFVGdW5jdGlvbj4gbmV3VmVydGV4RnVuY3Rpb24pCit7
CisgICAgaWYgKCFuZXdWZXJ0ZXhGdW5jdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV92
ZXJ0ZXhGdW5jdGlvbiA9IG5ld1ZlcnRleEZ1bmN0aW9uOworCisgICAgaWYgKG1fcmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yKQorICAgICAgICBtX3JlbmRlclBpcGVsaW5lRGVzY3JpcHRvci0+c2V0
VmVydGV4RnVuY3Rpb24obmV3VmVydGV4RnVuY3Rpb24tPmZ1bmN0aW9uKCkpOworfQorCitSZWZQ
dHI8V2ViR1BVRnVuY3Rpb24+IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6ZnJhZ21l
bnRGdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZnJhZ21lbnRGdW5jdGlvbjsKK30K
Kwordm9pZCBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldEZyYWdtZW50RnVuY3Rp
b24oUmVmUHRyPFdlYkdQVUZ1bmN0aW9uPiBuZXdGcmFnbWVudEZ1bmN0aW9uKQoreworICAgIGlm
ICghbmV3RnJhZ21lbnRGdW5jdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mcmFnbWVu
dEZ1bmN0aW9uID0gbmV3RnJhZ21lbnRGdW5jdGlvbjsKKworICAgIGlmIChtX3JlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcikKKyAgICAgICAgbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3ItPnNldEZy
YWdtZW50RnVuY3Rpb24obmV3RnJhZ21lbnRGdW5jdGlvbi0+ZnVuY3Rpb24oKSk7Cit9CisKK1Zl
Y3RvcjxSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
Pj4gV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpjb2xvckF0dGFjaG1lbnRzKCkKK3sK
KyAgICBpZiAoIW1fcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKQorICAgICAgICByZXR1cm4gVmVj
dG9yPFJlZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+
PigpOworCisgICAgaWYgKCFtX2NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JzLnNpemUoKSkgewor
ICAgICAgICBWZWN0b3I8UmVmUHRyPE1ldGFsUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yPj4gcGxhdGZvcm1Db2xvckF0dGFjaG1lbnRzID0gbV9yZW5kZXJQaXBlbGluZURl
c2NyaXB0b3ItPmNvbG9yQXR0YWNobWVudHMoKTsKKyAgICAgICAgZm9yIChhdXRvJiBhdHRhY2ht
ZW50IDogcGxhdGZvcm1Db2xvckF0dGFjaG1lbnRzKQorICAgICAgICAgICAgbV9jb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9ycy5hcHBlbmQoV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yOjpjcmVhdGUodGhpcy0+Y29udGV4dCgpLCBhdHRhY2htZW50LmdldCgpKSk7
CisgICAgfQorICAgIHJldHVybiBtX2NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JzOworfQorCit1
bnNpZ25lZCBsb25nIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6ZGVwdGhBdHRhY2ht
ZW50UGl4ZWxGb3JtYXQoKSBjb25zdAoreworICAgIGlmICghbV9yZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IpCisgICAgICAgIHJldHVybiAwOyAvLyBGSVhNRTogcHJvYmFibHkgYSByZWFsIHZhbHVl
IGZvciB1bmtub3duCisKKyAgICByZXR1cm4gbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3ItPmRl
cHRoQXR0YWNobWVudFBpeGVsRm9ybWF0KCk7CisKK30KKwordm9pZCBXZWJHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3I6OnNldERlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0KHVuc2lnbmVkIGxv
bmcgbmV3UGl4ZWxGb3JtYXQpCit7CisgICAgaWYgKCFtX3JlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3ItPnNl
dERlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0KG5ld1BpeGVsRm9ybWF0KTsKK30KKwordm9pZCBX
ZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnJlc2V0KCkKK3sKKyAgICBtX3ZlcnRleEZ1
bmN0aW9uID0gbnVsbHB0cjsKKyAgICBtX2ZyYWdtZW50RnVuY3Rpb24gPSBudWxscHRyOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTkxMGU4NTJmODcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IuaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BV
KQorCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0LmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yOworY2xhc3MgV2ViR1BVRnVuY3Rpb247CitjbGFzcyBXZWJHUFVSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3I7CisKK2NsYXNzIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciA6IHB1YmxpYyBXZWJHUFVPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldl
YkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiBjcmVhdGUoKTsKKworICAgIFN0cmluZyBsYWJlbCgpIGNv
bnN0OworICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgU3RyaW5nJik7CisKKyAgICBSZWZQdHI8V2Vi
R1BVRnVuY3Rpb24+IHZlcnRleEZ1bmN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBzZXRWZXJ0ZXhG
dW5jdGlvbihSZWZQdHI8V2ViR1BVRnVuY3Rpb24+KTsKKworICAgIFJlZlB0cjxXZWJHUFVGdW5j
dGlvbj4gZnJhZ21lbnRGdW5jdGlvbigpIGNvbnN0OworICAgIHZvaWQgc2V0RnJhZ21lbnRGdW5j
dGlvbihSZWZQdHI8V2ViR1BVRnVuY3Rpb24+KTsKKworICAgIFZlY3RvcjxSZWZQdHI8V2ViR1BV
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4gY29sb3JBdHRhY2htZW50
cygpOworCisgICAgdW5zaWduZWQgbG9uZyBkZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdCgpIGNv
bnN0OworICAgIHZvaWQgc2V0RGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQodW5zaWduZWQgbG9u
Zyk7CisKKyAgICB2b2lkIHJlc2V0KCk7CisKKyAgICBNZXRhbFJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciogcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCkgeyByZXR1cm4gbV9yZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWJHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IoKTsKKworICAgIFJlZlB0cjxXZWJHUFVGdW5jdGlvbj4gbV92ZXJ0ZXhGdW5j
dGlvbjsKKyAgICBSZWZQdHI8V2ViR1BVRnVuY3Rpb24+IG1fZnJhZ21lbnRGdW5jdGlvbjsKKwor
ICAgIFZlY3RvcjxSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yPj4gbV9jb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yczsKKworICAgIFJlZlB0cjxNZXRh
bFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3I7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmE5ODY4M2RkOTg4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbnN0cnVjdG9yLAorICAg
IENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBpbnRl
cmZhY2UgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIHsKKworICAgIGF0dHJpYnV0ZSBE
T01TdHJpbmcgbGFiZWw7CisKKyAgICBhdHRyaWJ1dGUgV2ViR1BVRnVuY3Rpb24/IHZlcnRleEZ1
bmN0aW9uOworICAgIGF0dHJpYnV0ZSBXZWJHUFVGdW5jdGlvbj8gZnJhZ21lbnRGdW5jdGlvbjsK
KworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBzZXF1ZW5jZTxXZWJHUFVSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGNvbG9yQXR0YWNobWVudHM7CisKKyAgICBhdHRyaWJ1
dGUgdW5zaWduZWQgbG9uZyBkZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdDsKKworICAgIHZvaWQg
cmVzZXQoKTsKKworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLmMyMDE0MGJlNTdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHAKQEAgLTAsMCArMSw3
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmgiCisK
KyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5o
IgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgorI2luY2x1ZGUg
IldlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8
V2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZT4gV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZTo6Y3Jl
YXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIFdlYkdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJH
UFVSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnRleHQsIGRlc2NyaXB0b3IpKTsKK30KKworV2ViR1BV
UmVuZGVyUGlwZWxpbmVTdGF0ZTo6V2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZShXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0KiBjb250ZXh0LCBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRl
c2NyaXB0b3IpCisgICAgOiBXZWJHUFVPYmplY3QoY29udGV4dCkKK3sKKyAgICBpZiAoIWNvbnRl
eHQgfHwgIWRlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKyAgICBtX3JlbmRlclBpcGVsaW5l
U3RhdGUgPSBNZXRhbFJlbmRlclBpcGVsaW5lU3RhdGU6OmNyZWF0ZShjb250ZXh0LT5kZXZpY2Uo
KS5nZXQoKSwgZGVzY3JpcHRvci0+cmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCkpOworfQorCitX
ZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlOjp+V2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZSgpCit7
Cit9CisKK1N0cmluZyBXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlOjpsYWJlbCgpIGNvbnN0Cit7
CisgICAgaWYgKCFtX3JlbmRlclBpcGVsaW5lU3RhdGUpCisgICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOworCisgICAgcmV0dXJuIG1fcmVuZGVyUGlwZWxpbmVTdGF0ZS0+bGFiZWwoKTsKK30K
Kwordm9pZCBXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlOjpzZXRMYWJlbChjb25zdCBTdHJpbmcm
IGxhYmVsKQoreworICAgIGlmICghbV9yZW5kZXJQaXBlbGluZVN0YXRlKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX3JlbmRlclBpcGVsaW5lU3RhdGUtPnNldExhYmVsKGxhYmVsKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNGM1YjA4MGFkZDkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmgK
QEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldl
YkdQVU9iamVjdC5oIgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEdQVVJlbmRlclBpcGVsaW5lU3RhdGU7CitjbGFzcyBXZWJHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3I7CisKK2NsYXNzIFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUg
OiBwdWJsaWMgV2ViR1BVT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJHUFVSZW5k
ZXJQaXBlbGluZVN0YXRlKCk7CisgICAgc3RhdGljIFJlZjxXZWJHUFVSZW5kZXJQaXBlbGluZVN0
YXRlPiBjcmVhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIFdlYkdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciopOworCisgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRM
YWJlbChjb25zdCBTdHJpbmcmKTsKKworICAgIE1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZSogcmVu
ZGVyUGlwZWxpbmVTdGF0ZSgpIHsgcmV0dXJuIG1fcmVuZGVyUGlwZWxpbmVTdGF0ZS5nZXQoKTsg
fQorCitwcml2YXRlOgorICAgIFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUoV2ViR1BVUmVuZGVy
aW5nQ29udGV4dCosIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciopOworCisgICAgUmVm
UHRyPE1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZT4gbV9yZW5kZXJQaXBlbGluZVN0YXRlOworfTsK
KyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40ZWQzNGQyOGNhNQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVs
aW5lU3RhdGUuaWRsCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJs
ZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGludGVyZmFjZSBXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRl
IHsKKworICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7CisKK307CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43MmU0MWFlNDlkYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlcmluZ0NvbnRl
eHQuY3BwCkBAIC0wLDAgKzEsMjA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRl
cmluZ0NvbnRleHQuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJEb2N1bWVu
dC5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdQVURldmljZS5oIgorI2lu
Y2x1ZGUgIldlYkdQVUJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRRdWV1ZS5oIgor
I2luY2x1ZGUgIldlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJXZWJH
UFVEZXB0aFN0ZW5jaWxTdGF0ZS5oIgorI2luY2x1ZGUgIldlYkdQVURyYXdhYmxlLmgiCisjaW5j
bHVkZSAiV2ViR1BVTGlicmFyeS5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NEZXNjcmlw
dG9yLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCisjaW5j
bHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oIgorI2luY2x1ZGUgIldlYkdQVVRleHR1
cmUuaCIKKyNpbmNsdWRlICJXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oIgorCisjaW5jbHVkZSA8
cnVudGltZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSW5saW5lcy5oPgor
I2luY2x1ZGUgPHJ1bnRpbWUvVHlwZWRBcnJheUlubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1l
L1VpbnQzMkFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CisKK25hbWVzcGFjZSB7CisKK2ludCBjbGFtcChpbnQgdmFsdWUsIGludCBtaW4sIGludCBtYXgp
Cit7CisgICAgaWYgKHZhbHVlIDwgbWluKQorICAgICAgICB2YWx1ZSA9IG1pbjsKKyAgICBpZiAo
dmFsdWUgPiBtYXgpCisgICAgICAgIHZhbHVlID0gbWF4OworICAgIHJldHVybiB2YWx1ZTsKK30K
KworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBjb25zdCBpbnQga01heFRleHR1
cmVTaXplID0gNDA5NjsKKworCitzdGQ6OnVuaXF1ZV9wdHI8V2ViR1BVUmVuZGVyaW5nQ29udGV4
dD4gV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKEhUTUxDYW52YXNFbGVtZW50JiBjYW52
YXMpCit7CisgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gY2FudmFzLmRvY3VtZW50KCk7CisgICAg
RnJhbWUqIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworLy8gICAgTWV0YWxEZXZpY2U6OkF0dHJpYnV0ZXMgYXR0cmli
dXRlcyA9IGF0dHJzID8gYXR0cnMtPmF0dHJpYnV0ZXMoKSA6IEdyYXBoaWNzQ29udGV4dDNEOjpB
dHRyaWJ1dGVzKCk7CisgICAgTWV0YWxEZXZpY2U6OkF0dHJpYnV0ZXMgYXR0cmlidXRlczsKKwor
ICAgIGF0dHJpYnV0ZXMuYW50aWFsaWFzID0gZmFsc2U7CisKKy8vICAgICAgICBpZiAocGFnZSkK
Ky8vICAgICAgICAgICAgYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvID0gcGFnZS0+ZGV2aWNl
U2NhbGVGYWN0b3IoKTsKKworICAgIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cgPSBkb2N1bWVudC52
aWV3KCktPnJvb3QoKS0+aG9zdFdpbmRvdygpOworICAgIFJlZlB0cjxNZXRhbERldmljZT4gZGV2
aWNlKE1ldGFsRGV2aWNlOjpjcmVhdGUoYXR0cmlidXRlcywgaG9zdFdpbmRvdykpOworCisgICAg
aWYgKCFkZXZpY2UpIHsgLy8gfHwgIWNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKSB7Cisg
ICAgICAgIC8vIGNhbnZhcy0+ZGlzcGF0Y2hFdmVudChXZWJHTENvbnRleHRFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS53ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yRXZlbnQsIGZhbHNlLCB0cnVl
LCAiQ291bGQgbm90IGNyZWF0ZSBhIFdlYkdMIGNvbnRleHQuIikpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViR1BVUmVuZGVyaW5nQ29u
dGV4dD4gcmVuZGVyaW5nQ29udGV4dCA9IG51bGxwdHI7CisgICAgcmVuZGVyaW5nQ29udGV4dCA9
IHN0ZDo6dW5pcXVlX3B0cjxXZWJHUFVSZW5kZXJpbmdDb250ZXh0PihuZXcgV2ViR1BVUmVuZGVy
aW5nQ29udGV4dChjYW52YXMsIGRldmljZSkpOworICAgIHJlbmRlcmluZ0NvbnRleHQtPnN1c3Bl
bmRJZk5lZWRlZCgpOworCisgICAgcmV0dXJuIHJlbmRlcmluZ0NvbnRleHQ7Cit9CisKK1dlYkdQ
VVJlbmRlcmluZ0NvbnRleHQ6OldlYkdQVVJlbmRlcmluZ0NvbnRleHQoSFRNTENhbnZhc0VsZW1l
bnQmIGNhbnZhcywgUGFzc1JlZlB0cjxNZXRhbERldmljZT4gZGV2aWNlKQorICAgIDogQ2FudmFz
UmVuZGVyaW5nQ29udGV4dChjYW52YXMpCisgICAgLCBBY3RpdmVET01PYmplY3QoJmNhbnZhcy5k
b2N1bWVudCgpKQorICAgICwgbV9kZXZpY2UoZGV2aWNlKQorICAgIC8vICwgbV9hdHRyaWJ1dGVz
KGF0dHJpYnV0ZXMpCit7CisgICAgaW5pdGlhbGl6ZU5ld0NvbnRleHQoKTsKK30KKwordm9pZCBX
ZWJHUFVSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplTmV3Q29udGV4dCgpCit7CisgICAgLy8g
RklYTUU6IE1heWJlIHdlIHNob3VsZCByZXNldCBhIGJ1bmNoIG9mIHN0dWZmIGhlcmUuCisKKyAg
ICBJbnRTaXplIGNhbnZhc1NpemUgPSBjbGFtcGVkQ2FudmFzU2l6ZSgpOworICAgIG1fZGV2aWNl
LT5yZXNoYXBlKGNhbnZhc1NpemUud2lkdGgoKSwgY2FudmFzU2l6ZS5oZWlnaHQoKSk7Cit9CisK
K0ludFNpemUgV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6Y2xhbXBlZENhbnZhc1NpemUoKSBjb25z
dAoreworICAgIHJldHVybiBJbnRTaXplKGNsYW1wKGNhbnZhcygpLndpZHRoKCksIDEsIGtNYXhU
ZXh0dXJlU2l6ZSksCisgICAgICAgIGNsYW1wKGNhbnZhcygpLmhlaWdodCgpLCAxLCBrTWF4VGV4
dHVyZVNpemUpKTsKK30KKworYm9vbCBXZWJHUFVSZW5kZXJpbmdDb250ZXh0OjpoYXNQZW5kaW5n
QWN0aXZpdHkoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJHUFVS
ZW5kZXJpbmdDb250ZXh0OjpzdG9wKCkKK3sKK30KKworY29uc3QgY2hhciogV2ViR1BVUmVuZGVy
aW5nQ29udGV4dDo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICJX
ZWJHUFVSZW5kZXJpbmdDb250ZXh0IjsKK30KKworYm9vbCBXZWJHUFVSZW5kZXJpbmdDb250ZXh0
OjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ6OnBsYXRm
b3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2RldmljZS0+cGxhdGZvcm1MYXllcigp
OworfQorCit2b2lkIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ6Om1hcmtMYXllckNvbXBvc2l0ZWQo
KQoreworICAgIG1fZGV2aWNlLT5tYXJrTGF5ZXJDb21wb3NpdGVkKCk7Cit9CisKK3ZvaWQgV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7Cisg
ICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gcmVzZXQgc3R1ZmYgaGVyZT8KKyAgICBtX2Rldmlj
ZS0+cmVzaGFwZSh3aWR0aCwgaGVpZ2h0KTsKK30KKworUmVmUHRyPFdlYkdQVUxpYnJhcnk+IFdl
YkdQVVJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUxpYnJhcnkoY29uc3QgU3RyaW5nIHNvdXJjZUNv
ZGUpCit7CisgICAgUmVmUHRyPFdlYkdQVUxpYnJhcnk+IGxpYnJhcnkgPSBXZWJHUFVMaWJyYXJ5
OjpjcmVhdGUodGhpcywgc291cmNlQ29kZSk7CisgICAgcmV0dXJuIGxpYnJhcnk7Cit9CisKK1Jl
ZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlPiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0Ojpj
cmVhdGVSZW5kZXJQaXBlbGluZVN0YXRlKFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYg
ZGVzY3JpcHRvcikKK3sKKyAgICBSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZT4gc3Rh
dGUgPSBXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlOjpjcmVhdGUodGhpcywgJmRlc2NyaXB0b3Ip
OworICAgIHJldHVybiBzdGF0ZTsKK30KKworUmVmUHRyPFdlYkdQVURlcHRoU3RlbmNpbFN0YXRl
PiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVEZXB0aFN0ZW5jaWxTdGF0ZShXZWJHUFVE
ZXB0aFN0ZW5jaWxEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIFJlZlB0cjxXZWJHUFVE
ZXB0aFN0ZW5jaWxTdGF0ZT4gc3RhdGUgPSBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZTo6Y3JlYXRl
KHRoaXMsICZkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4gc3RhdGU7Cit9CisKK1JlZlB0cjxXZWJH
UFVDb21tYW5kUXVldWU+IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUNvbW1hbmRRdWV1
ZSgpCit7CisgICAgUmVmUHRyPFdlYkdQVUNvbW1hbmRRdWV1ZT4gcXVldWUgPSBXZWJHUFVDb21t
YW5kUXVldWU6OmNyZWF0ZSh0aGlzKTsKKyAgICByZXR1cm4gcXVldWU7Cit9CisKK1JlZlB0cjxX
ZWJHUFVEcmF3YWJsZT4gV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6bmV4dERyYXdhYmxlKCkKK3sK
KyAgICBSZWZQdHI8V2ViR1BVRHJhd2FibGU+IGRyYXdhYmxlID0gV2ViR1BVRHJhd2FibGU6OmNy
ZWF0ZSh0aGlzKTsKKyAgICByZXR1cm4gZHJhd2FibGU7Cit9CisKK1JlZlB0cjxXZWJHUFVCdWZm
ZXI+IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlclZpZXcm
IGRhdGEpCit7CisgICAgUmVmUHRyPFdlYkdQVUJ1ZmZlcj4gYnVmZmVyID0gV2ViR1BVQnVmZmVy
OjpjcmVhdGUodGhpcywgJmRhdGEpOworICAgIHJldHVybiBidWZmZXI7Cit9CisKK1JlZlB0cjxX
ZWJHUFVUZXh0dXJlPiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVUZXh0dXJlKFdlYkdQ
VVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIFJlZlB0cjxXZWJHUFVUZXh0
dXJlPiB0ZXh0dXJlID0gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlKHRoaXMsICZkZXNjcmlwdG9yKTsK
KyAgICByZXR1cm4gdGV4dHVyZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlcmlu
Z0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlcmluZ0Nv
bnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTYzZGQ3NDVl
OGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVS
ZW5kZXJpbmdDb250ZXh0LmgKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJH
UFUpCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJDYW52YXNSZW5k
ZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiR1BVRGV2aWNlLmgiCisjaW5jbHVkZSA8cnVudGlt
ZS9BcnJheUJ1ZmZlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYkdQVUNv
bW1hbmRRdWV1ZTsKK2NsYXNzIFdlYkdQVUxpYnJhcnk7CitjbGFzcyBXZWJHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3I7CitjbGFzcyBXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlOworY2xhc3Mg
V2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjsKK2NsYXNzIFdlYkdQVURlcHRoU3RlbmNpbFN0
YXRlOworY2xhc3MgV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I7CitjbGFzcyBXZWJHUFVEcmF3
YWJsZTsKK2NsYXNzIFdlYkdQVUJ1ZmZlcjsKK2NsYXNzIFdlYkdQVVRleHR1cmU7CitjbGFzcyBX
ZWJHUFVUZXh0dXJlRGVzY3JpcHRvcjsKKworY2xhc3MgV2ViR1BVUmVuZGVyaW5nQ29udGV4dCA6
IHB1YmxpYyBDYW52YXNSZW5kZXJpbmdDb250ZXh0LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYkdQVVJlbmRlcmluZ0NvbnRl
eHQ+IGNyZWF0ZShIVE1MQ2FudmFzRWxlbWVudCYpOworLy8gICAgdmlydHVhbCB+V2ViR1BVUmVu
ZGVyaW5nQ29udGV4dCgpOworCisgICAgYm9vbCBpc0dQVSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KKworICAgIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KKworICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQp
OworCisgICAgdm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7CisKKyAgICBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBSZWZQdHI8TWV0YWxEZXZp
Y2U+IGRldmljZSgpIHsgcmV0dXJuIG1fZGV2aWNlOyB9CisKKyAgICAvLyBXZWJHUFUgZW50cnkg
cG9pbnRzCisKKyAgICBSZWZQdHI8V2ViR1BVTGlicmFyeT4gY3JlYXRlTGlicmFyeShjb25zdCBT
dHJpbmcpOworCisgICAgUmVmUHRyPFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGU+IGNyZWF0ZVJl
bmRlclBpcGVsaW5lU3RhdGUoV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJik7CisKKyAg
ICBSZWZQdHI8V2ViR1BVRGVwdGhTdGVuY2lsU3RhdGU+IGNyZWF0ZURlcHRoU3RlbmNpbFN0YXRl
KFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3ImKTsKKworICAgIFJlZlB0cjxXZWJHUFVDb21t
YW5kUXVldWU+IGNyZWF0ZUNvbW1hbmRRdWV1ZSgpOworCisgICAgUmVmUHRyPFdlYkdQVURyYXdh
YmxlPiBuZXh0RHJhd2FibGUoKTsKKworICAgIFJlZlB0cjxXZWJHUFVCdWZmZXI+IGNyZWF0ZUJ1
ZmZlcihBcnJheUJ1ZmZlclZpZXcmIGRhdGEpOworCisgICAgUmVmUHRyPFdlYkdQVVRleHR1cmU+
IGNyZWF0ZVRleHR1cmUoV2ViR1BVVGV4dHVyZURlc2NyaXB0b3ImKTsKKworcHJvdGVjdGVkOgor
ICAgIC8vIEFjdGl2ZURPTU9iamVjdAorICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CisgICAgY29uc3QgY2hhciog
YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY2FuU3VzcGVu
ZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlOworCisgICAgSW50U2l6ZSBj
bGFtcGVkQ2FudmFzU2l6ZSgpIGNvbnN0OworICAgIHZvaWQgaW5pdGlhbGl6ZU5ld0NvbnRleHQo
KTsKKworcHJpdmF0ZToKKy8vICAgIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQoSFRNTENhbnZhc0Vs
ZW1lbnQqKTsvLywgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMpOworICAgIFdlYkdQVVJl
bmRlcmluZ0NvbnRleHQoSFRNTENhbnZhc0VsZW1lbnQmLCBQYXNzUmVmUHRyPE1ldGFsRGV2aWNl
Pik7CisKKyAgICBSZWZQdHI8TWV0YWxEZXZpY2U+IG1fZGV2aWNlOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NBTlZBU1JFTkRFUklOR0NP
TlRFWFQoV2ViQ29yZTo6V2ViR1BVUmVuZGVyaW5nQ29udGV4dCwgaXNHUFUoKSkKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJpbmdD
b250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlcmluZ0Nv
bnRleHQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41YTgxNDM0
MGI2MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VVJlbmRlcmluZ0NvbnRleHQuaWRsCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwK
KyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVSwKKyAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwK
KyAgICBEb05vdENoZWNrQ29uc3RhbnRzCitdIGludGVyZmFjZSBXZWJHUFVSZW5kZXJpbmdDb250
ZXh0IHsKKworICAgIC8vIFBpeGVsIGZvcm1hdHMKKworICAgIGNvbnN0IHVuc2lnbmVkIGludCBQ
aXhlbEZvcm1hdEJHUkE4VW5vcm0gPSA4MDsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgUGl4ZWxG
b3JtYXREZXB0aDMyRmxvYXQgPSAyNTI7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFBpeGVsRm9y
bWF0U3RlbmNpbDggPSAyNTM7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFBpeGVsRm9ybWF0SW52
YWxpZCA9IDA7CisKKyAgICAvLyBMb2FkIGFjdGlvbnMKKworICAgIGNvbnN0IHVuc2lnbmVkIGlu
dCBMb2FkQWN0aW9uRG9udENhcmUgPSAwOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBMb2FkQWN0
aW9uTG9hZCA9IDE7CisgICAgY29uc3QgdW5zaWduZWQgaW50IExvYWRBY3Rpb25DbGVhciA9IDI7
CisKKyAgICAvLyBTdG9yZSBhY3Rpb25zCisKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgU3RvcmVB
Y3Rpb25Eb250Q2FyZSA9IDA7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFN0b3JlQWN0aW9uU3Rv
cmUgPSAxOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBTdG9yZUFjdGlvbk11bHRpc2FtcGxlUmVz
b2x2ZSA9IDI7CisKKyAgICAvLyBQcmltaXRpdmUgdHlwZXMKKworICAgIGNvbnN0IHVuc2lnbmVk
IGludCBQcmltaXRpdmVUeXBlUG9pbnQgPSAwOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBQcmlt
aXRpdmVUeXBlTGluZSA9IDE7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFByaW1pdGl2ZVR5cGVM
aW5lU3RyaXAgPSAyOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBQcmltaXRpdmVUeXBlVHJpYW5n
bGUgPSAzOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBQcmltaXRpdmVUeXBlVHJpYW5nbGVTdHJp
cCA9IDQ7CisKKyAgICAvLyBDb21wYXJpc29uIGZ1bmN0aW9ucworCisgICAgY29uc3QgdW5zaWdu
ZWQgaW50IENvbXBhcmVGdW5jdGlvbk5ldmVyID0gMDsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQg
Q29tcGFyZUZ1bmN0aW9uTGVzcyA9IDE7CisgICAgY29uc3QgdW5zaWduZWQgaW50IENvbXBhcmVG
dW5jdGlvbkVxdWFsID0gMjsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgQ29tcGFyZUZ1bmN0aW9u
TGVzc0VxdWFsID0gMzsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgQ29tcGFyZUZ1bmN0aW9uR3Jl
YXRlciA9IDQ7CisgICAgY29uc3QgdW5zaWduZWQgaW50IENvbXBhcmVGdW5jdGlvbk5vdEVxdWFs
ID0gNTsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgQ29tcGFyZUZ1bmN0aW9uR3JlYXRlckVxdWFs
ID0gNjsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgQ29tcGFyZUZ1bmN0aW9uQWx3YXlzID0gNzsK
KworICAgIC8vIFRleHR1cmUgVHlwZXMKKworICAgIGNvbnN0IHVuc2lnbmVkIGludCBUZXh0dXJl
VHlwZTFEID0gMDsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgVGV4dHVyZVR5cGUxREFycmF5ID0g
MTsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgVGV4dHVyZVR5cGUyRCA9IDI7CisgICAgY29uc3Qg
dW5zaWduZWQgaW50IFRleHR1cmVUeXBlMkRBcnJheSA9IDM7CisgICAgY29uc3QgdW5zaWduZWQg
aW50IFRleHR1cmVUeXBlMkRNdWx0aXNhbXBsZSA9IDQ7CisgICAgY29uc3QgdW5zaWduZWQgaW50
IFRleHR1cmVUeXBlQ3ViZSA9IDU7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVUeXBl
Q3ViZUFycmF5ID0gNjsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgVGV4dHVyZVR5cGUzRCA9IDc7
CisKKyAgICAvLyBTdG9yYWdlIG1vZGVzCisKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgU3RvcmFn
ZU1vZGVTaGFyZWQgID0gMDsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgU3RvcmFnZU1vZGVNYW5h
Z2VkID0gMTsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgU3RvcmFnZU1vZGVQcml2YXRlID0gMjsK
KworICAgIC8vIFVzYWdlCisKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgVGV4dHVyZVVzYWdlVW5r
bm93biA9IDB4MDAwMDsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgVGV4dHVyZVVzYWdlU2hhZGVy
UmVhZCA9IDB4MDAwMTsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgVGV4dHVyZVVzYWdlU2hhZGVy
V3JpdGUgPSAweDAwMDI7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVVc2FnZVJlbmRl
clRhcmdldCA9IDB4MDAwNDsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgVGV4dHVyZVVzYWdlUGl4
ZWxGb3JtYXRWaWV3ID0gMHgwMDEwOworCisgICAgLy8gRW50cnkgcG9pbnRzCisKKyAgICBXZWJH
UFVMaWJyYXJ5IGNyZWF0ZUxpYnJhcnkoRE9NU3RyaW5nIHNvdXJjZUNvZGUpOworCisgICAgV2Vi
R1BVUmVuZGVyUGlwZWxpbmVTdGF0ZT8gY3JlYXRlUmVuZGVyUGlwZWxpbmVTdGF0ZShXZWJHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7CisgICAgV2ViR1BVRGVwdGhTdGVu
Y2lsU3RhdGU/IGNyZWF0ZURlcHRoU3RlbmNpbFN0YXRlKFdlYkdQVURlcHRoU3RlbmNpbERlc2Ny
aXB0b3IgZGVzY3JpcHRvcik7CisKKyAgICBXZWJHUFVDb21tYW5kUXVldWU/IGNyZWF0ZUNvbW1h
bmRRdWV1ZSgpOworCisgICAgV2ViR1BVRHJhd2FibGU/IG5leHREcmF3YWJsZSgpOworCisgICAg
V2ViR1BVQnVmZmVyPyBjcmVhdGVCdWZmZXIoQXJyYXlCdWZmZXJWaWV3IGRhdGEpOworCisgICAg
V2ViR1BVVGV4dHVyZT8gY3JlYXRlVGV4dHVyZShXZWJHUFVUZXh0dXJlRGVzY3JpcHRvciBkZXNj
cmlwdG9yKTsKKworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdQVVRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVy
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmIyZDQzNTcwMGUx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4
dHVyZS5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHUFVUZXh0
dXJlLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiR1BVVGV4dHVyZS5oIgor
I2luY2x1ZGUgIldlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVUZXh0
dXJlRGVzY3JpcHRvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXZWJHUFVUZXh0
dXJlPiBXZWJHUFVUZXh0dXJlOjpjcmVhdGVGcm9tRHJhd2FibGVUZXh0dXJlKFdlYkdQVVJlbmRl
cmluZ0NvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8TWV0YWxUZXh0dXJlPiBkcmF3YWJsZVRl
eHR1cmUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVVGV4dHVyZShjb250ZXh0
LCBkcmF3YWJsZVRleHR1cmUpKTsKK30KKworUmVmPFdlYkdQVVRleHR1cmU+IFdlYkdQVVRleHR1
cmU6OmNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBXZWJHUFVUZXh0dXJl
RGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJH
UFVUZXh0dXJlKGNvbnRleHQsIGRlc2NyaXB0b3IpKTsKK30KKworV2ViR1BVVGV4dHVyZTo6V2Vi
R1BVVGV4dHVyZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPE1l
dGFsVGV4dHVyZT4gZHJhd2FibGVUZXh0dXJlKQorICAgIDogV2ViR1BVT2JqZWN0KGNvbnRleHQp
CisgICAgLCBtX3RleHR1cmUoZHJhd2FibGVUZXh0dXJlKQoreworfQorCitXZWJHUFVUZXh0dXJl
OjpXZWJHUFVUZXh0dXJlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIFdlYkdQVVRl
eHR1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorICAgIDogV2ViR1BVT2JqZWN0KGNvbnRleHQp
Cit7CisgICAgbV90ZXh0dXJlID0gY29udGV4dC0+ZGV2aWNlKCktPmNyZWF0ZVRleHR1cmUoZGVz
Y3JpcHRvci0+dGV4dHVyZURlc2NyaXB0b3IoKSk7Cit9CisKK1dlYkdQVVRleHR1cmU6On5XZWJH
UFVUZXh0dXJlKCkKK3sKK30KKwordW5zaWduZWQgbG9uZyBXZWJHUFVUZXh0dXJlOjp3aWR0aCgp
IGNvbnN0Cit7CisgICAgaWYgKCFtX3RleHR1cmUpCisgICAgICAgIHJldHVybiAwOworICAgIAor
ICAgIHJldHVybiBtX3RleHR1cmUtPndpZHRoKCk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgV2ViR1BV
VGV4dHVyZTo6aGVpZ2h0KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fdGV4dHVyZSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICByZXR1cm4gbV90ZXh0dXJlLT5oZWlnaHQoKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVVRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdQVVRleHR1cmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uY2Q3
ZTdhYWFjZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHUFVUZXh0dXJlLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkK
KworI2luY2x1ZGUgIldlYkdQVU9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEdQVVRleHR1cmU7CitjbGFzcyBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcjsKKworY2xhc3Mg
V2ViR1BVVGV4dHVyZSA6IHB1YmxpYyBXZWJHUFVPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1
YWwgfldlYkdQVVRleHR1cmUoKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVRleHR1cmU+IGNyZWF0
ZUZyb21EcmF3YWJsZVRleHR1cmUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIFBhc3NSZWZQdHI8
TWV0YWxUZXh0dXJlPik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVUZXh0dXJlPiBjcmVhdGUoV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dCosIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yKik7CisKKyAgICB1
bnNpZ25lZCBsb25nIHdpZHRoKCkgY29uc3Q7CisgICAgdW5zaWduZWQgbG9uZyBoZWlnaHQoKSBj
b25zdDsKKworICAgIE1ldGFsVGV4dHVyZSogdGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4
dHVyZS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFdlYkdQVVRleHR1cmUoV2ViR1BVUmVuZGVy
aW5nQ29udGV4dCosIFBhc3NSZWZQdHI8TWV0YWxUZXh0dXJlPik7CisgICAgV2ViR1BVVGV4dHVy
ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IqKTsKKwor
ICAgIFJlZlB0cjxNZXRhbFRleHR1cmU+IG1fdGV4dHVyZTsKK307CisgICAgCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR1BVVGV4dHVyZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVUZXh0dXJlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWNl
ZGIwNmNiZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHUFVUZXh0dXJlLmlkbApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBF
bmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBpbnRlcmZhY2UgV2ViR1BVVGV4dHVyZSB7CisKKyAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB3aWR0aDsKKyAgICByZWFkb25seSBh
dHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBoZWlnaHQ7CisKK307CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjk5MjM3NTE0NDk0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3Iu
Y3BwCkBAIC0wLDAgKzEsMTQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdQVVRleHR1cmVE
ZXNjcmlwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiR1BVVGV4dHVy
ZURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yPiBXZWJHUFVU
ZXh0dXJlRGVzY3JpcHRvcjo6Y3JlYXRlKHVuc2lnbmVkIGxvbmcgcGl4ZWxGb3JtYXQsIHVuc2ln
bmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0LCBib29sIG1pcG1hcHBlZCkKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcihwaXhlbEZv
cm1hdCwgd2lkdGgsIGhlaWdodCwgbWlwbWFwcGVkKSk7Cit9CisKK1dlYkdQVVRleHR1cmVEZXNj
cmlwdG9yOjpXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcih1bnNpZ25lZCBsb25nIHBpeGVsRm9ybWF0
LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCwgYm9vbCBtaXBtYXBw
ZWQpCisgICAgOiBXZWJHUFVPYmplY3QoKQoreworICAgIG1fdGV4dHVyZURlc2NyaXB0b3IgPSBN
ZXRhbFRleHR1cmVEZXNjcmlwdG9yOjpjcmVhdGUocGl4ZWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IG1pcG1hcHBlZCk7Cit9CisKK1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yOjp+V2ViR1BVVGV4dHVy
ZURlc2NyaXB0b3IoKQoreworfQorCit1bnNpZ25lZCBsb25nIFdlYkdQVVRleHR1cmVEZXNjcmlw
dG9yOjp3aWR0aCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3RleHR1cmVEZXNjcmlwdG9yKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBtX3RleHR1cmVEZXNjcmlwdG9yLT53aWR0aCgp
OworfQorCit2b2lkIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yOjpzZXRXaWR0aCh1bnNpZ25lZCBs
b25nIHdpZHRoKQoreworICAgIGlmICghbV90ZXh0dXJlRGVzY3JpcHRvcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV90ZXh0dXJlRGVzY3JpcHRvci0+c2V0V2lkdGgod2lkdGgpOworfQorCit1
bnNpZ25lZCBsb25nIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yOjpoZWlnaHQoKSBjb25zdAorewor
ICAgIGlmICghbV90ZXh0dXJlRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBy
ZXR1cm4gbV90ZXh0dXJlRGVzY3JpcHRvci0+aGVpZ2h0KCk7Cit9CisKK3ZvaWQgV2ViR1BVVGV4
dHVyZURlc2NyaXB0b3I6OnNldEhlaWdodCh1bnNpZ25lZCBsb25nIGhlaWdodCkKK3sKKyAgICBp
ZiAoIW1fdGV4dHVyZURlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX3Rl
eHR1cmVEZXNjcmlwdG9yLT5zZXRIZWlnaHQoaGVpZ2h0KTsKK30KKwordW5zaWduZWQgbG9uZyBX
ZWJHUFVUZXh0dXJlRGVzY3JpcHRvcjo6c2FtcGxlQ291bnQoKSBjb25zdAoreworICAgIGlmICgh
bV90ZXh0dXJlRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gbV90
ZXh0dXJlRGVzY3JpcHRvci0+c2FtcGxlQ291bnQoKTsKK30KKwordm9pZCBXZWJHUFVUZXh0dXJl
RGVzY3JpcHRvcjo6c2V0U2FtcGxlQ291bnQodW5zaWduZWQgbG9uZyBzYW1wbGVDb3VudCkKK3sK
KyAgICBpZiAoIW1fdGV4dHVyZURlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICBtX3RleHR1cmVEZXNjcmlwdG9yLT5zZXRTYW1wbGVDb3VudChzYW1wbGVDb3VudCk7Cit9CisK
K3Vuc2lnbmVkIGxvbmcgV2ViR1BVVGV4dHVyZURlc2NyaXB0b3I6OnRleHR1cmVUeXBlKCkgY29u
c3QKK3sKKyAgICBpZiAoIW1fdGV4dHVyZURlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgcmV0dXJuIG1fdGV4dHVyZURlc2NyaXB0b3ItPnRleHR1cmVUeXBlKCk7Cit9CisKK3Zv
aWQgV2ViR1BVVGV4dHVyZURlc2NyaXB0b3I6OnNldFRleHR1cmVUeXBlKHVuc2lnbmVkIGxvbmcg
dGV4dHVyZVR5cGUpCit7CisgICAgaWYgKCFtX3RleHR1cmVEZXNjcmlwdG9yKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgbV90ZXh0dXJlRGVzY3JpcHRvci0+c2V0VGV4dHVyZVR5cGUodGV4
dHVyZVR5cGUpOworfQorCit1bnNpZ25lZCBsb25nIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yOjpz
dG9yYWdlTW9kZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3RleHR1cmVEZXNjcmlwdG9yKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBtX3RleHR1cmVEZXNjcmlwdG9yLT5zdG9yYWdl
TW9kZSgpOworfQorCit2b2lkIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yOjpzZXRTdG9yYWdlTW9k
ZSh1bnNpZ25lZCBsb25nIHN0b3JhZ2VNb2RlKQoreworICAgIGlmICghbV90ZXh0dXJlRGVzY3Jp
cHRvcikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fdGV4dHVyZURlc2NyaXB0b3ItPnNl
dFN0b3JhZ2VNb2RlKHN0b3JhZ2VNb2RlKTsKK30KKwordW5zaWduZWQgbG9uZyBXZWJHUFVUZXh0
dXJlRGVzY3JpcHRvcjo6dXNhZ2UoKSBjb25zdAoreworICAgIGlmICghbV90ZXh0dXJlRGVzY3Jp
cHRvcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gbV90ZXh0dXJlRGVzY3JpcHRv
ci0+dXNhZ2UoKTsKK30KKwordm9pZCBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcjo6c2V0VXNhZ2Uo
dW5zaWduZWQgbG9uZyB1c2FnZSkKK3sKKyAgICBpZiAoIW1fdGV4dHVyZURlc2NyaXB0b3IpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fdGV4dHVyZURlc2NyaXB0b3ItPnNldFVzYWdlKHVzYWdl
KTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNjBlMDczOGFiYjEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlRGVzY3Jp
cHRvci5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNs
dWRlICJXZWJHUFVFbnVtcy5oIgorI2luY2x1ZGUgIldlYkdQVU9iamVjdC5oIgorCisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVVRleHR1
cmVEZXNjcmlwdG9yOworCitjbGFzcyBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvciA6IHB1YmxpYyBX
ZWJHUFVPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVVRleHR1cmVEZXNjcmlw
dG9yKCk7CisgICAgc3RhdGljIFJlZjxXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcj4gY3JlYXRlKHVu
c2lnbmVkIGxvbmcgcGl4ZWxGb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxv
bmcgaGVpZ2h0LCBib29sIG1pcG1hcHBlZCk7CisKKyAgICB1bnNpZ25lZCBsb25nIHdpZHRoKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRXaWR0aCh1bnNpZ25lZCBsb25nKTsKKworICAgIHVuc2lnbmVk
IGxvbmcgaGVpZ2h0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRIZWlnaHQodW5zaWduZWQgbG9uZyk7
CisKKyAgICB1bnNpZ25lZCBsb25nIHNhbXBsZUNvdW50KCkgY29uc3Q7CisgICAgdm9pZCBzZXRT
YW1wbGVDb3VudCh1bnNpZ25lZCBsb25nKTsKKworICAgIHVuc2lnbmVkIGxvbmcgdGV4dHVyZVR5
cGUoKSBjb25zdDsKKyAgICB2b2lkIHNldFRleHR1cmVUeXBlKHVuc2lnbmVkIGxvbmcpOworCisg
ICAgdW5zaWduZWQgbG9uZyBzdG9yYWdlTW9kZSgpIGNvbnN0OworICAgIHZvaWQgc2V0U3RvcmFn
ZU1vZGUodW5zaWduZWQgbG9uZyk7CisKKyAgICB1bnNpZ25lZCBsb25nIHVzYWdlKCkgY29uc3Q7
CisgICAgdm9pZCBzZXRVc2FnZSh1bnNpZ25lZCBsb25nKTsKKworICAgIE1ldGFsVGV4dHVyZURl
c2NyaXB0b3IqIHRleHR1cmVEZXNjcmlwdG9yKCkgeyByZXR1cm4gbV90ZXh0dXJlRGVzY3JpcHRv
ci5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yKHVuc2ln
bmVkIGxvbmcgcGl4ZWxGb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcg
aGVpZ2h0LCBib29sIG1pcG1hcHBlZCk7CisKKyAgICBSZWZQdHI8TWV0YWxUZXh0dXJlRGVzY3Jp
cHRvcj4gbV90ZXh0dXJlRGVzY3JpcHRvcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVU
ZXh0dXJlRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVU
ZXh0dXJlRGVzY3JpcHRvci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLmUyYWQyNjRkNGRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uc3RydWN0
b3IodW5zaWduZWQgbG9uZyBwaXhlbEZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWdu
ZWQgbG9uZyBoZWlnaHQsIGJvb2xlYW4gbWlwbWFwcGVkKSwKKyAgICBDb25kaXRpb25hbD1XRUJH
UFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gaW50ZXJmYWNlIFdlYkdQVVRleHR1
cmVEZXNjcmlwdG9yIHsKKworICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHRleHR1cmVUeXBl
OworCisgICAgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgd2lkdGg7CisgICAgYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgaGVpZ2h0OworICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHNhbXBsZUNv
dW50OworCisgICAgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgc3RvcmFnZU1vZGU7CisKKyAgICBh
dHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB1c2FnZTsKKworfTsKLS0gCjIuMTEuMCAoQXBwbGUgR2l0
LTgwKQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304122</attachid>
            <date>2017-03-10 20:39:01 -0800</date>
            <delta_ts>2017-03-10 22:35:47 -0800</delta_ts>
            <desc>2. Adjust Front-End classes to build with platform stubs</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>52578</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
CmluZGV4IDY3NTQ1MGY4ZDVhLi40NTQ3OThhYTIwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0xMjYsNiArMTI2LDI1IEBA
CiAgICAgbWFjcm8oV2Vha1NldClcCiAgICAgbWFjcm8oV2ViR0wyUmVuZGVyaW5nQ29udGV4dCkg
XAogICAgIG1hY3JvKFdlYkdMVmVydGV4QXJyYXlPYmplY3QpIFwKKyAgICBtYWNybyhXZWJHUFVC
dWZmZXIpIFwKKyAgICBtYWNybyhXZWJHUFVDb21tYW5kQnVmZmVyKSBcCisgICAgbWFjcm8oV2Vi
R1BVQ29tbWFuZFF1ZXVlKSBcCisgICAgbWFjcm8oV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRv
cikgXAorICAgIG1hY3JvKFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlKSBcCisgICAgbWFjcm8oV2Vi
R1BVRHJhd2FibGUpIFwKKyAgICBtYWNybyhXZWJHUFVGdW5jdGlvbikgXAorICAgIG1hY3JvKFdl
YkdQVUxpYnJhcnkpIFwKKyAgICBtYWNybyhXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2RlcikgXAor
ICAgIG1hY3JvKFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcikgXAorICAgIG1h
Y3JvKFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKSBcCisgICAgbWFj
cm8oV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IpIFwKKyAgICBtYWNy
byhXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcikgXAorICAgIG1hY3JvKFdlYkdQVVJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcikgXAorICAgIG1hY3JvKFdlYkdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcikgXAorICAgIG1hY3JvKFdlYkdQVVJlbmRlclBpcGVsaW5lU3Rh
dGUpIFwKKyAgICBtYWNybyhXZWJHUFVSZW5kZXJpbmdDb250ZXh0KSBcCisgICAgbWFjcm8oV2Vi
R1BVVGV4dHVyZSkgXAorICAgIG1hY3JvKFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yKSBcCiAgICAg
bWFjcm8oV2ViU29ja2V0KSBcCiAgICAgbWFjcm8oX19kZWZpbmVHZXR0ZXJfXykgXAogICAgIG1h
Y3JvKF9fZGVmaW5lU2V0dGVyX18pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggNmExZjJkYzEzNjQuLmU1NTdj
ZTAwY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMjE2LDcgKzIxNiw3IEBAIEVOQUJMRV9WSUVXX01PREVf
Q1NTX01FRElBID0gOwogRU5BQkxFX1dFQkFTU0VNQkxZID0gOwogRU5BQkxFX1dFQkdMID0gRU5B
QkxFX1dFQkdMOwogRU5BQkxFX1dFQkdMMiA9IEVOQUJMRV9XRUJHTDI7Ci1FTkFCTEVfV0VCR1BV
ID0gOworRU5BQkxFX1dFQkdQVSA9IEVOQUJMRV9XRUJHUFU7CiBFTkFCTEVfV0VCR1BVW3Nkaz1p
cGhvbmVzaW11bGF0b3IqXSA9IDsKIEVOQUJMRV9XRUJfQU5JTUFUSU9OUyA9IEVOQUJMRV9XRUJf
QU5JTUFUSU9OUzsKIEVOQUJMRV9XRUJfQVVESU8gPSBFTkFCTEVfV0VCX0FVRElPOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAppbmRleCA1NjM3
YzE0MDk4NC4uYTkwYmQxYTNlMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRG9jdW1lbnRDdXN0b20uY3BwCkBAIC0xNTQsNiArMTU0LDEwIEBAIEpTVmFsdWUgSlNEb2N1
bWVudDo6Z2V0Q1NTQ2FudmFzQ29udGV4dChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYg
KGlzPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+KCpjb250ZXh0KSkKICAgICAgICAgcmV0dXJu
IHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgZG93bmNhc3Q8V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZT4oKmNvbnRleHQpKTsKICNlbmRpZgorI2lmIEVOQUJMRShXRUJHUFUpCisgICAgaWYg
KGlzPFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ+KCpjb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIHRv
SlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgZG93bmNhc3Q8V2ViR1BVUmVuZGVyaW5nQ29udGV4
dD4oKmNvbnRleHQpKTsKKyNlbmRpZgogCiAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxP
YmplY3QoKSwgZG93bmNhc3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPigqY29udGV4dCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVCdWZmZXIuaAppbmRleCBlNzBlYjQw
N2Q0NS4uNjhiY2QzMDU4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUJ1
ZmZlci5oCkBAIC00MSwxMSArNDEsMTEgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGxvbmcgbGVu
Z3RoKCkgY29uc3Q7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBjb250ZW50cygpIGNvbnN0Owog
Ci0gICAgTWV0YWxCdWZmZXIqIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9Cisg
ICAgR1BVQnVmZmVyKiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQogCiBwcml2
YXRlOgogICAgIFdlYkdQVUJ1ZmZlcihXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgQXJyYXlCdWZm
ZXJWaWV3Kik7Ci0gICAgUmVmUHRyPE1ldGFsQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8
R1BVQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRCdWZmZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKaW5k
ZXggZjI4NGZkMDMwYTkuLmFlMDRjMWMyNjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcApAQCAtMjgsOCArMjgsMTAgQEAKIAog
I2lmIEVOQUJMRShXRUJHUFUpCiAKKy8qKioKICNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgi
CiAjaW5jbHVkZSAiR1BVQ29tbWFuZFF1ZXVlLmgiCisqLwogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJXZWJHUFVDb21tYW5kUXVldWUuaCIKICNpbmNsdWRlICJXZWJHUFVEcmF3YWJs
ZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQ29tbWFu
ZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQ29tbWFuZEJ1ZmZl
ci5oCmluZGV4IDllMTJkNWRiZjViLi5kMDA3YjlhNzY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRCdWZmZXIuaApAQCAtMzMsNyArMzMsMTUgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBHUFVDb21tYW5kQnVmZmVyOworLyoqKiBz
dHViICovCisvLyBjbGFzcyBHUFVDb21tYW5kQnVmZmVyOworY2xhc3MgR1BVRHJhd2FibGU7Citj
bGFzcyBHUFVDb21tYW5kQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVQ29tbWFuZEJ1ZmZl
cj4geworcHVibGljOgorICAgIHZvaWQgY29tbWl0KCkge30KKyAgICB2b2lkIHByZXNlbnREcmF3
YWJsZShHUFVEcmF3YWJsZSopIHt9Cit9OworLyoqKiBlbmQgc3R1YiAqLwogY2xhc3MgV2ViR1BV
Q29tbWFuZFF1ZXVlOwogY2xhc3MgV2ViR1BVRHJhd2FibGU7CiBjbGFzcyBXZWJHUFVGdW5jdGlv
bjsKQEAgLTUwLDExICs1OCwxMSBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8V2ViR1BVUmVuZGVy
Q29tbWFuZEVuY29kZXI+IGNyZWF0ZVJlbmRlckNvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3Io
V2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3ImKTsKIAotICAgIE1ldGFsQ29tbWFuZEJ1ZmZlciog
Y29tbWFuZEJ1ZmZlcigpIHsgcmV0dXJuIG1fY29tbWFuZEJ1ZmZlci5nZXQoKTsgfQorICAgIEdQ
VUNvbW1hbmRCdWZmZXIqIGNvbW1hbmRCdWZmZXIoKSB7IHJldHVybiBtX2NvbW1hbmRCdWZmZXIu
Z2V0KCk7IH0KIAogcHJpdmF0ZToKICAgICBXZWJHUFVDb21tYW5kQnVmZmVyKFdlYkdQVVJlbmRl
cmluZ0NvbnRleHQqLCBXZWJHUFVDb21tYW5kUXVldWUqKTsKLSAgICBSZWZQdHI8TWV0YWxDb21t
YW5kQnVmZmVyPiBtX2NvbW1hbmRCdWZmZXI7CisgICAgUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+
IG1fY29tbWFuZEJ1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRRdWV1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kUXVldWUuY3BwCmluZGV4IGNk
NDQyMWE0Mjg1Li5mZDYwNjJiNjUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR1BVQ29tbWFuZFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHUFVDb21tYW5kUXVldWUuY3BwCkBAIC0yOCw3ICsyOCw5IEBACiAKICNpZiBFTkFC
TEUoV0VCR1BVKQogCisvKioqCiAjaW5jbHVkZSAiR1BVQ29tbWFuZFF1ZXVlLmgiCisqLwogI2lu
Y2x1ZGUgIldlYkdQVUNvbW1hbmRCdWZmZXIuaCIKICNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdD
b250ZXh0LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VUNvbW1hbmRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQ29tbWFu
ZFF1ZXVlLmgKaW5kZXggY2FjNjZhZDAxYWUuLjYzMTE0MGFkYjIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kUXVldWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kUXVldWUuaApAQCAtMzMsNyArMzMsMTQg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBHUFVDb21tYW5kUXVldWU7CisvKioq
IHN0dWIgKi8KKy8vIGNsYXNzIEdQVUNvbW1hbmRRdWV1ZTsKK2NsYXNzIEdQVUNvbW1hbmRRdWV1
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVUNvbW1hbmRRdWV1ZT4geworcHVibGljOgorICAgIFN0
cmluZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KKyAgICB2b2lkIHNl
dExhYmVsKGNvbnN0IFN0cmluZyYpIHt9Cit9OworLyoqKiBlbmQgc3R1YiAqLwogY2xhc3MgV2Vi
R1BVQ29tbWFuZEJ1ZmZlcjsKIAogY2xhc3MgV2ViR1BVQ29tbWFuZFF1ZXVlIDogcHVibGljIFdl
YkdQVU9iamVjdCB7CkBAIC00NiwxMiArNTMsMTIgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPFdl
YkdQVUNvbW1hbmRCdWZmZXI+IGNyZWF0ZUNvbW1hbmRCdWZmZXIoKTsKIAotICAgIE1ldGFsQ29t
bWFuZFF1ZXVlKiBjb21tYW5kUXVldWUoKSB7IHJldHVybiBtX2NvbW1hbmRRdWV1ZS5nZXQoKTsg
fQorICAgIEdQVUNvbW1hbmRRdWV1ZSogY29tbWFuZFF1ZXVlKCkgeyByZXR1cm4gbV9jb21tYW5k
UXVldWUuZ2V0KCk7IH0KIAogcHJpdmF0ZToKICAgICBXZWJHUFVDb21tYW5kUXVldWUoV2ViR1BV
UmVuZGVyaW5nQ29udGV4dCopOwogCi0gICAgUmVmUHRyPE1ldGFsQ29tbWFuZFF1ZXVlPiBtX2Nv
bW1hbmRRdWV1ZTsKKyAgICBSZWZQdHI8R1BVQ29tbWFuZFF1ZXVlPiBtX2NvbW1hbmRRdWV1ZTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAKaW5kZXgg
NmY4YzlhMDljOGQuLjM5MzNlMGQ0MGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcApAQCAtNDEs
NyArNDEsNyBAQCBSZWY8V2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcj4gV2ViR1BVRGVwdGhT
dGVuY2lsRGVzY3JpcHRvcjo6Y3JlYXRlKCkKIFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3I6
OldlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IoKQogICAgIDogV2ViR1BVT2JqZWN0KCkKIHsK
LSAgICBtX2RlcHRoU3RlbmNpbERlc2NyaXB0b3IgPSBNZXRhbERlcHRoU3RlbmNpbERlc2NyaXB0
b3I6OmNyZWF0ZSgpOworICAgIG1fZGVwdGhTdGVuY2lsRGVzY3JpcHRvciA9IEdQVURlcHRoU3Rl
bmNpbERlc2NyaXB0b3I6OmNyZWF0ZSgpOwogfQogCiBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlw
dG9yOjp+V2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcigpCkBAIC04OCwxMSArODgsMTEgQEAg
YXV0byBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpkZXB0aENvbXBhcmVGdW5jdGlvbigp
IGNvbnN0IC0+IFdlYkdQVUNvbXBhcmUKIHZvaWQgV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRv
cjo6c2V0RGVwdGhDb21wYXJlRnVuY3Rpb24oQ29tcGFyZUZ1bmN0aW9uIG5ld0RlcHRoQ29tcGFy
ZUZ1bmN0aW9uKQogewogICAgIG1fZGVwdGhDb21wYXJlRnVuY3Rpb24gPSBuZXdEZXB0aENvbXBh
cmVGdW5jdGlvbjsKLSAgICBtX2RlcHRoU3RlbmNpbERlc2NyaXB0b3ItPnNldERlcHRoQ29tcGFy
ZUZ1bmN0aW9uKHRvTWV0YWxDb21wYXJlRnVuY3Rpb24obV9kZXB0aENvbXBhcmVGdW5jdGlvbikp
OworICAgIG1fZGVwdGhTdGVuY2lsRGVzY3JpcHRvci0+c2V0RGVwdGhDb21wYXJlRnVuY3Rpb24o
dG9HUFVDb21wYXJlRnVuY3Rpb24obV9kZXB0aENvbXBhcmVGdW5jdGlvbikpOwogCiAvLyAgICBp
ZiAoT3B0aW9uYWw8V2ViR1BVQ29tcGFyZUZ1bmN0aW9uPiBjb21wYXJlRnVuY3Rpb24gPSB0b1dl
YkdQVUNvbXBhcmVGdW5jdGlvbihuZXdEZXB0aENvbXBhcmVGdW5jdGlvbikpIHsKIC8vICAgICAg
ICBtX2RlcHRoQ29tcGFyZUZ1bmN0aW9uID0gY29tcGFyZUZ1bmN0aW9uLnZhbHVlKCk7Ci0vLyAg
ICAgICAgbV9kZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLT5zZXREZXB0aENvbXBhcmVGdW5jdGlvbih0
b01ldGFsQ29tcGFyZUZ1bmN0aW9uKG1fZGVwdGhDb21wYXJlRnVuY3Rpb24pKTsKKy8vICAgICAg
ICBtX2RlcHRoU3RlbmNpbERlc2NyaXB0b3ItPnNldERlcHRoQ29tcGFyZUZ1bmN0aW9uKHRvR1BV
Q29tcGFyZUZ1bmN0aW9uKG1fZGVwdGhDb21wYXJlRnVuY3Rpb24pKTsKIC8vICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2ls
RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVu
Y2lsRGVzY3JpcHRvci5oCmluZGV4IGJiNGQyYjMzZmUzLi45ZjAzYjkzNzdmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbERl
c2NyaXB0b3IuaApAQCAtNTEsMTMgKzUxLDEzIEBAIHB1YmxpYzoKICAgICBDb21wYXJlRnVuY3Rp
b24gZGVwdGhDb21wYXJlRnVuY3Rpb24oKSBjb25zdDsKICAgICB2b2lkIHNldERlcHRoQ29tcGFy
ZUZ1bmN0aW9uKENvbXBhcmVGdW5jdGlvbik7CiAKLSAgICBNZXRhbERlcHRoU3RlbmNpbERlc2Ny
aXB0b3IqIGRlcHRoU3RlbmNpbERlc2NyaXB0b3IoKSB7IHJldHVybiBtX2RlcHRoU3RlbmNpbERl
c2NyaXB0b3IuZ2V0KCk7IH0KKyAgICBHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKiBkZXB0aFN0
ZW5jaWxEZXNjcmlwdG9yKCkgeyByZXR1cm4gbV9kZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmdldCgp
OyB9CiAKIHByaXZhdGU6CiAgICAgV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcigpOwogCiAg
ICAgV2ViR1BVQ29tcGFyZUZ1bmN0aW9uIG1fZGVwdGhDb21wYXJlRnVuY3Rpb247Ci0gICAgUmVm
UHRyPE1ldGFsRGVwdGhTdGVuY2lsRGVzY3JpcHRvcj4gbV9kZXB0aFN0ZW5jaWxEZXNjcmlwdG9y
OworICAgIFJlZlB0cjxHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yPiBtX2RlcHRoU3RlbmNpbERl
c2NyaXB0b3I7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAKaW5kZXgg
YTFiNjY1M2U3ZDcuLjA0OGNlZDdjZTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwCkBAIC0yOCw3ICsyOCw5IEBA
CiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCisvKioqCiAjaW5jbHVkZSAiR1BVRGVwdGhTdGVuY2ls
U3RhdGUuaCIKKyAqLwogI2luY2x1ZGUgIldlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCIK
ICNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCiAKQEAgLTQ0LDcgKzQ2LDcgQEAg
V2ViR1BVRGVwdGhTdGVuY2lsU3RhdGU6OldlYkdQVURlcHRoU3RlbmNpbFN0YXRlKFdlYkdQVVJl
bmRlcmluZ0NvbnRleHQqIGNvbnRleHQKIHsKICAgICBpZiAoIWNvbnRleHQgfHwgIWRlc2NyaXB0
b3IpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2RlcHRoU3RlbmNpbFN0YXRlID0gTWV0YWxEZXB0
aFN0ZW5jaWxTdGF0ZTo6Y3JlYXRlKGNvbnRleHQtPmRldmljZSgpLmdldCgpLCBkZXNjcmlwdG9y
LT5kZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCkpOworICAgIG1fZGVwdGhTdGVuY2lsU3RhdGUgPSBH
UFVEZXB0aFN0ZW5jaWxTdGF0ZTo6Y3JlYXRlKGNvbnRleHQtPmRldmljZSgpLmdldCgpLCBkZXNj
cmlwdG9yLT5kZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCkpOwogfQogCiBXZWJHUFVEZXB0aFN0ZW5j
aWxTdGF0ZTo6fldlYkdQVURlcHRoU3RlbmNpbFN0YXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oCmluZGV4IGNiYzM3YTNm
NzE2Li4xMzI5ZDQzMDQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oCkBAIC0zMyw3ICszMywxNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdQVURlcHRoU3RlbmNpbFN0YXRlOworLyoqKiBzdHViICov
CisvLyBjbGFzcyBHUFVEZXB0aFN0ZW5jaWxTdGF0ZTsKK2NsYXNzIEdQVURldmljZTsKK2NsYXNz
IEdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3I7CitjbGFzcyBHUFVEZXB0aFN0ZW5jaWxTdGF0ZSA6
IHB1YmxpYyBSZWZDb3VudGVkPEdQVURlcHRoU3RlbmNpbFN0YXRlPiB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZlB0cjxHUFVEZXB0aFN0ZW5jaWxTdGF0ZT4gY3JlYXRlKEdQVURldmljZSosIEdQ
VURlcHRoU3RlbmNpbERlc2NyaXB0b3IqKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgU3RyaW5n
IGxhYmVsKCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQorICAgIHZvaWQgc2V0TGFi
ZWwoY29uc3QgU3RyaW5nJikge30KK307CisvKioqIGVuZCBzdHViICovCiBjbGFzcyBXZWJHUFVE
ZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOwogCiBjbGFzcyBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZSA6
IHB1YmxpYyBXZWJHUFVPYmplY3QgewpAQCAtNDQsMTIgKzU0LDEyIEBAIHB1YmxpYzoKICAgICBT
dHJpbmcgbGFiZWwoKSBjb25zdDsKICAgICB2b2lkIHNldExhYmVsKGNvbnN0IFN0cmluZyYpOwog
Ci0gICAgTWV0YWxEZXB0aFN0ZW5jaWxTdGF0ZSogZGVwdGhTdGVuY2lsU3RhdGUoKSB7IHJldHVy
biBtX2RlcHRoU3RlbmNpbFN0YXRlLmdldCgpOyB9CisgICAgR1BVRGVwdGhTdGVuY2lsU3RhdGUq
IGRlcHRoU3RlbmNpbFN0YXRlKCkgeyByZXR1cm4gbV9kZXB0aFN0ZW5jaWxTdGF0ZS5nZXQoKTsg
fQogCiBwcml2YXRlOgogICAgIFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlKFdlYkdQVVJlbmRlcmlu
Z0NvbnRleHQqLCBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKik7CiAKLSAgICBSZWZQdHI8
TWV0YWxEZXB0aFN0ZW5jaWxTdGF0ZT4gbV9kZXB0aFN0ZW5jaWxTdGF0ZTsKKyAgICBSZWZQdHI8
R1BVRGVwdGhTdGVuY2lsU3RhdGU+IG1fZGVwdGhTdGVuY2lsU3RhdGU7CiB9OwogICAgIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVRHJhd2FibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
RHJhd2FibGUuY3BwCmluZGV4IGRmNTY4NmFiZDA1Li44ZjJhYWM2YmJjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRHJhd2FibGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURyYXdhYmxlLmNwcApAQCAtMjgsNyArMjgsOSBA
QAogCiAjaWYgRU5BQkxFKFdFQkdQVSkKIAorLyoqKgogI2luY2x1ZGUgIkdQVURyYXdhYmxlLmgi
CisgKi8KICNpbmNsdWRlICJHUFVUZXh0dXJlLmgiCiAjaW5jbHVkZSAiV2ViR1BVUmVuZGVyaW5n
Q29udGV4dC5oIgogI2luY2x1ZGUgIldlYkdQVVRleHR1cmUuaCIKQEAgLTQ3LDcgKzQ5LDcgQEAg
V2ViR1BVRHJhd2FibGU6OldlYkdQVURyYXdhYmxlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNv
bnRleHQpCiAgICAgaWYgKCFtX2RyYXdhYmxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQ
dHI8TWV0YWxUZXh0dXJlPiBkcmF3YWJsZVRleHR1cmUgPSBNZXRhbFRleHR1cmU6OmNyZWF0ZUZy
b21FeGlzdGluZ1RleHR1cmUobV9kcmF3YWJsZS0+dGV4dHVyZSgpKTsKKyAgICBSZWZQdHI8R1BV
VGV4dHVyZT4gZHJhd2FibGVUZXh0dXJlID0gR1BVVGV4dHVyZTo6Y3JlYXRlRnJvbUV4aXN0aW5n
VGV4dHVyZShtX2RyYXdhYmxlLT50ZXh0dXJlKCkpOwogICAgIG1fdGV4dHVyZSA9IFdlYkdQVVRl
eHR1cmU6OmNyZWF0ZUZyb21EcmF3YWJsZVRleHR1cmUoY29udGV4dCwgZHJhd2FibGVUZXh0dXJl
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRHJh
d2FibGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURyYXdhYmxlLmgKaW5k
ZXggYWU2ZmIwMTRhMDYuLmNkZDE5MmMwYTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHUFVEcmF3YWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVURyYXdhYmxlLmgKQEAgLTMxLDcgKzMxLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgR1BVRHJhd2FibGU7CisvKioqIHN0dWIgKi8KKy8vIGNsYXNzIEdQVURy
YXdhYmxlOworY2xhc3MgR1BVRHJhd2FibGUgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVEcmF3YWJs
ZT4geworcHVibGljOgorICAgIEdQVVRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBudWxscHRy
OyB9Cit9OworLyoqKiBlbmQgc3R1YiAqLwogY2xhc3MgV2ViR1BVVGV4dHVyZTsKIAogY2xhc3Mg
V2ViR1BVRHJhd2FibGUgOiBwdWJsaWMgV2ViR1BVT2JqZWN0IHsKQEAgLTQxLDExICs0NywxMSBA
QCBwdWJsaWM6CiAKICAgICBXZWJHUFVUZXh0dXJlKiB0ZXh0dXJlKCk7CiAKLSAgICBNZXRhbERy
YXdhYmxlKiBkcmF3YWJsZSgpIHsgcmV0dXJuIG1fZHJhd2FibGUuZ2V0KCk7IH0KKyAgICBHUFVE
cmF3YWJsZSogZHJhd2FibGUoKSB7IHJldHVybiBtX2RyYXdhYmxlLmdldCgpOyB9CiAKIHByaXZh
dGU6CiAgICAgV2ViR1BVRHJhd2FibGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCopOwotICAgIFJl
ZlB0cjxNZXRhbERyYXdhYmxlPiBtX2RyYXdhYmxlOworICAgIFJlZlB0cjxHUFVEcmF3YWJsZT4g
bV9kcmF3YWJsZTsKICAgICBSZWZQdHI8V2ViR1BVVGV4dHVyZT4gbV90ZXh0dXJlOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRW51bXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRW51bXMuY3BwCmluZGV4IGExYmE2NTM3
NjhkLi41YjA0OTI5MWRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVRW51bXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUVu
dW1zLmNwcApAQCAtMjgsNyArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFdFQkdQVSkKIAorLyoqKgog
I2luY2x1ZGUgIkdQVUVudW1zLmgiCisgKi8KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03
OCwyNyArODAsMjcgQEAgU3RyaW5nIHdlYjNEQ29tcGFyZUZ1bmN0aW9uTmFtZShjb25zdCBXZWJH
UFVDb21wYXJlRnVuY3Rpb24gdmFsdWUpCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAK
LU1ldGFsQ29tcGFyZUZ1bmN0aW9uIHRvTWV0YWxDb21wYXJlRnVuY3Rpb24oY29uc3QgV2ViR1BV
Q29tcGFyZUZ1bmN0aW9uIHZhbHVlKQorR1BVQ29tcGFyZUZ1bmN0aW9uIHRvR1BVQ29tcGFyZUZ1
bmN0aW9uKGNvbnN0IFdlYkdQVUNvbXBhcmVGdW5jdGlvbiB2YWx1ZSkKIHsKICAgICBpZiAodmFs
dWUgPT0gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpOZXZlcikKLSAgICAgICAgcmV0dXJuIE1ldGFs
Q29tcGFyZUZ1bmN0aW9uOjpOZXZlcjsKKyAgICAgICAgcmV0dXJuIEdQVUNvbXBhcmVGdW5jdGlv
bjo6TmV2ZXI7CiAgICAgaWYgKHZhbHVlID09IFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6TGVzcykK
LSAgICAgICAgcmV0dXJuIE1ldGFsQ29tcGFyZUZ1bmN0aW9uOjpMZXNzOworICAgICAgICByZXR1
cm4gR1BVQ29tcGFyZUZ1bmN0aW9uOjpMZXNzOwogICAgIGlmICh2YWx1ZSA9PSBXZWJHUFVDb21w
YXJlRnVuY3Rpb246OkVxdWFsKQotICAgICAgICByZXR1cm4gTWV0YWxDb21wYXJlRnVuY3Rpb246
OkVxdWFsOworICAgICAgICByZXR1cm4gR1BVQ29tcGFyZUZ1bmN0aW9uOjpFcXVhbDsKICAgICBp
ZiAodmFsdWUgPT0gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpMZXNzZXF1YWwpCi0gICAgICAgIHJl
dHVybiBNZXRhbENvbXBhcmVGdW5jdGlvbjo6TGVzc0VxdWFsOworICAgICAgICByZXR1cm4gR1BV
Q29tcGFyZUZ1bmN0aW9uOjpMZXNzRXF1YWw7CiAgICAgaWYgKHZhbHVlID09IFdlYkdQVUNvbXBh
cmVGdW5jdGlvbjo6R3JlYXRlcikKLSAgICAgICAgcmV0dXJuIE1ldGFsQ29tcGFyZUZ1bmN0aW9u
OjpHcmVhdGVyOworICAgICAgICByZXR1cm4gR1BVQ29tcGFyZUZ1bmN0aW9uOjpHcmVhdGVyOwog
ICAgIGlmICh2YWx1ZSA9PSBXZWJHUFVDb21wYXJlRnVuY3Rpb246Ok5vdGVxdWFsKQotICAgICAg
ICByZXR1cm4gTWV0YWxDb21wYXJlRnVuY3Rpb246Ok5vdEVxdWFsOworICAgICAgICByZXR1cm4g
R1BVQ29tcGFyZUZ1bmN0aW9uOjpOb3RFcXVhbDsKICAgICBpZiAodmFsdWUgPT0gV2ViR1BVQ29t
cGFyZUZ1bmN0aW9uOjpHcmVhdGVyZXF1YWwpCi0gICAgICAgIHJldHVybiBNZXRhbENvbXBhcmVG
dW5jdGlvbjo6R3JlYXRlckVxdWFsOworICAgICAgICByZXR1cm4gR1BVQ29tcGFyZUZ1bmN0aW9u
OjpHcmVhdGVyRXF1YWw7CiAgICAgaWYgKHZhbHVlID09IFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6
QWx3YXlzKQotICAgICAgICByZXR1cm4gTWV0YWxDb21wYXJlRnVuY3Rpb246OkFsd2F5czsKKyAg
ICAgICAgcmV0dXJuIEdQVUNvbXBhcmVGdW5jdGlvbjo6QWx3YXlzOwogICAgIAogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBNZXRhbENvbXBhcmVGdW5jdGlvbjo6TmV2ZXI7
CisgICAgcmV0dXJuIEdQVUNvbXBhcmVGdW5jdGlvbjo6TmV2ZXI7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VUVudW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVFbnVtcy5oCmluZGV4
IGNjNGU3MjBkYzliLi44ZWU2M2QxY2RlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVRW51bXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHUFVFbnVtcy5oCkBAIC00Niw4ICs0NiwyMCBAQCBlbnVtIGNsYXNzIFdlYkdQVUNvbXBhcmVG
dW5jdGlvbiB7CiBzdGQ6Om9wdGlvbmFsPFdlYkdQVUNvbXBhcmVGdW5jdGlvbj4gdG9XZWJHUFVD
b21wYXJlRnVuY3Rpb24oY29uc3QgU3RyaW5nJik7CiBTdHJpbmcgd2ViM0RDb21wYXJlRnVuY3Rp
b25OYW1lKGNvbnN0IFdlYkdQVUNvbXBhcmVGdW5jdGlvbik7CiAKLWVudW0gY2xhc3MgR1BVQ29t
cGFyZUZ1bmN0aW9uOwotTWV0YWxDb21wYXJlRnVuY3Rpb24gdG9NZXRhbENvbXBhcmVGdW5jdGlv
bihjb25zdCBXZWJHUFVDb21wYXJlRnVuY3Rpb24pOworLyoqKiBzdHViICovCisvLyBlbnVtIGNs
YXNzIEdQVUNvbXBhcmVGdW5jdGlvbjsKK2VudW0gY2xhc3MgR1BVQ29tcGFyZUZ1bmN0aW9uIHsK
KyAgICBOZXZlciwKKyAgICBMZXNzLAorICAgIEVxdWFsLAorICAgIExlc3NFcXVhbCwKKyAgICBH
cmVhdGVyLAorICAgIE5vdEVxdWFsLAorICAgIEdyZWF0ZXJFcXVhbCwKKyAgICBBbHdheXMKK307
CisvKioqIGVuZCBzdHViICovCitHUFVDb21wYXJlRnVuY3Rpb24gdG9HUFVDb21wYXJlRnVuY3Rp
b24oY29uc3QgV2ViR1BVQ29tcGFyZUZ1bmN0aW9uKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVGdW5jdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24uaAppbmRleCAw
YTk1MWE5MzA1Yy4uOWYxN2Q0ODRhYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVUZ1bmN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVRnVuY3Rpb24uaApAQCAtNDEsMTIgKzQxLDEyIEBAIHB1YmxpYzoKIAogICAgIFN0cmlu
ZyBuYW1lKCkgY29uc3Q7CiAKLSAgICBNZXRhbEZ1bmN0aW9uKiBmdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fZnVuY3Rpb24uZ2V0KCk7IH0KKyAgICBHUFVGdW5jdGlvbiogZnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX2Z1bmN0aW9uLmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgV2ViR1BV
RnVuY3Rpb24oV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIFdlYkdQVUxpYnJhcnkqLCBjb25zdCBT
dHJpbmcmIG5hbWUpOwogCi0gICAgUmVmUHRyPE1ldGFsRnVuY3Rpb24+IG1fZnVuY3Rpb247Cisg
ICAgUmVmUHRyPEdQVUZ1bmN0aW9uPiBtX2Z1bmN0aW9uOwogfTsKICAgICAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VUxpYnJhcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUxpYnJhcnkuaApp
bmRleCA5N2YxYTRhYTQ4Mi4uOWUzYzNmMjcyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdQVUxpYnJhcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHUFVMaWJyYXJ5LmgKQEAgLTQ5LDEzICs0OSwxMyBAQCBwdWJsaWM6CiAKICAgICBS
ZWZQdHI8V2ViR1BVRnVuY3Rpb24+IGZ1bmN0aW9uV2l0aE5hbWUoY29uc3QgU3RyaW5nJik7CiAK
LSAgICBNZXRhbExpYnJhcnkqIGxpYnJhcnkoKSB7IHJldHVybiBtX2xpYnJhcnkuZ2V0KCk7IH0K
KyAgICBHUFVMaWJyYXJ5KiBsaWJyYXJ5KCkgeyByZXR1cm4gbV9saWJyYXJ5LmdldCgpOyB9CiAK
IHByaXZhdGU6CiAgICAgV2ViR1BVTGlicmFyeShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgY29u
c3QgU3RyaW5nJiBzb3VyY2VDb2RlKTsKIAogICAgIFN0cmluZyBtX3NvdXJjZUNvZGU7Ci0gICAg
UmVmUHRyPE1ldGFsTGlicmFyeT4gbV9saWJyYXJ5OworICAgIFJlZlB0cjxHUFVMaWJyYXJ5PiBt
X2xpYnJhcnk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVT2JqZWN0LmNwcAppbmRleCBkMWE3Mzc0Y2VhNy4uYjE3MmJlYzA1
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVU9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVT2JqZWN0LmNwcApAQCAt
NDEsNyArNDEsNyBAQCBXZWJHUFVPYmplY3Q6On5XZWJHUFVPYmplY3QoKQogewogfQogCi12b2lk
IFdlYkdQVU9iamVjdDo6ZGVsZXRlT2JqZWN0KE1ldGFsRGV2aWNlKikKK3ZvaWQgV2ViR1BVT2Jq
ZWN0OjpkZWxldGVPYmplY3QoR1BVRGV2aWNlKikKIHsKICAgICBtX2RlbGV0ZWQgPSB0cnVlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVT2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVPYmplY3QuaAppbmRleCAxNTlmZWVk
NWY4Mi4uZGUyYTczMjAxYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVU9i
amVjdC5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFdlYkdQVU9iamVjdCA6IHB1YmxpYyBSZWZD
b3VudGVkPFdlYkdQVU9iamVjdD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYkdQVU9iamVj
dCgpOwogCi0gICAgdm9pZCBkZWxldGVPYmplY3QoTWV0YWxEZXZpY2UqKTsKKyAgICB2b2lkIGRl
bGV0ZU9iamVjdChHUFVEZXZpY2UqKTsKICAgICBib29sIGlzRGVsZXRlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZGVsZXRlZDsgfQogCiAgICAgV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCgp
IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwCmluZGV4IDVkMzg0
Njc2MWNiLi5jOTg5YmY1YjIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcApAQCAtMjgsOSArMjgsMTEg
QEAKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAKKy8qKioKICNpbmNsdWRlICJHUFVDb21tYW5kQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaCIKICNpbmNsdWRlICJH
UFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIgorKi8KICNpbmNsdWRlICJXZWJHUFVCdWZmZXIuaCIK
ICNpbmNsdWRlICJXZWJHUFVDb21tYW5kQnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR1BVRGVwdGhT
dGVuY2lsU3RhdGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5oCmluZGV4IDJjYWVkZTc3MzIyLi5iNTI5YWE4Mjlh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyQ29t
bWFuZEVuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5k
ZXJDb21tYW5kRW5jb2Rlci5oCkBAIC0zMyw3ICszMywyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEdQVVJlbmRlckNvbW1hbmRFbmNvZGVyOworLyoqKiBzdHViICovCisvLyBj
bGFzcyBHUFVSZW5kZXJDb21tYW5kRW5jb2RlcjsKK2NsYXNzIEdQVUJ1ZmZlcjsKK2NsYXNzIEdQ
VVJlbmRlclBpcGVsaW5lU3RhdGU7CitjbGFzcyBHUFVEZXB0aFN0ZW5jaWxTdGF0ZTsKK2NsYXNz
IEdQVVJlbmRlckNvbW1hbmRFbmNvZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVUmVuZGVyQ29t
bWFuZEVuY29kZXI+IHsKK3B1YmxpYzoKKyAgICB2b2lkIHNldFJlbmRlclBpcGVsaW5lU3RhdGUo
R1BVUmVuZGVyUGlwZWxpbmVTdGF0ZSYpIHt9CisgICAgdm9pZCBzZXREZXB0aFN0ZW5jaWxTdGF0
ZShHUFVEZXB0aFN0ZW5jaWxTdGF0ZSYpIHt9CisgICAgdm9pZCBzZXRWZXJ0ZXhCdWZmZXIoR1BV
QnVmZmVyJiwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQpIHt9CisgICAgdm9pZCBzZXRGcmFn
bWVudEJ1ZmZlcihHUFVCdWZmZXImLCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCkge30KKyAg
ICB2b2lkIGRyYXdQcmltaXRpdmVzKHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50LCB1bnNpZ25l
ZCBpbnQpIHt9CisgICAgdm9pZCBlbmRFbmNvZGluZygpIHt9Cit9OworLyoqKiBlbmQgc3R1YiAq
LwogY2xhc3MgV2ViR1BVQ29tbWFuZEJ1ZmZlcjsKIGNsYXNzIFdlYkdQVURlcHRoU3RlbmNpbFN0
YXRlOwogY2xhc3MgV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I7CkBAIC01MywxMSArNjcsMTEg
QEAgcHVibGljOgogICAgIHZvaWQgZHJhd1ByaW1pdGl2ZXModW5zaWduZWQgaW50IHR5cGUsIHVu
c2lnbmVkIGludCBzdGFydCwgdW5zaWduZWQgaW50IGNvdW50KTsKICAgICB2b2lkIGVuZEVuY29k
aW5nKCk7CiAKLSAgICBNZXRhbFJlbmRlckNvbW1hbmRFbmNvZGVyKiByZW5kZXJDb21tYW5kRW5j
b2RlcigpIHsgcmV0dXJuIG1fcmVuZGVyQ29tbWFuZEVuY29kZXIuZ2V0KCk7IH0KKyAgICBHUFVS
ZW5kZXJDb21tYW5kRW5jb2RlciogcmVuZGVyQ29tbWFuZEVuY29kZXIoKSB7IHJldHVybiBtX3Jl
bmRlckNvbW1hbmRFbmNvZGVyLmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgV2ViR1BVUmVuZGVy
Q29tbWFuZEVuY29kZXIoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIFdlYkdQVUNvbW1hbmRCdWZm
ZXIqLCBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciopOwotICAgIFJlZlB0cjxNZXRhbFJlbmRl
ckNvbW1hbmRFbmNvZGVyPiBtX3JlbmRlckNvbW1hbmRFbmNvZGVyOworICAgIFJlZlB0cjxHUFVS
ZW5kZXJDb21tYW5kRW5jb2Rlcj4gbV9yZW5kZXJDb21tYW5kRW5jb2RlcjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCmlu
ZGV4IGFlNGVmZDQ4ZTNhLi40YmI1MDkyMmMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3IuY3BwCkBAIC0yOCwxNCArMjgsMTYgQEAKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAK
Ky8qKioKICNpbmNsdWRlICJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCIKKyAq
LwogI2luY2x1ZGUgIkdQVVRleHR1cmUuaCIKICNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250
ZXh0LmgiCiAjaW5jbHVkZSAiV2ViR1BVVGV4dHVyZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6V2ViR1BVUmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIE1l
dGFsUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorV2ViR1BVUmVu
ZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3IoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgR1BVUmVuZGVyUGFzc0F0
dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogICAgIDogV2ViR1BVT2JqZWN0KGNvbnRl
eHQpCiAgICAgLCBtX3JlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcihkZXNjcmlwdG9yKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaAppbmRleCBmZTBkZjVmZDk4My4uZDFh
MGY3NjllYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oCkBAIC0zMyw3ICsz
MywxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdQVVJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvcjsKKy8qKiogc3R1YiAqLworLy8gY2xhc3MgR1BVUmVuZGVyUGFzc0F0
dGFjaG1lbnREZXNjcmlwdG9yOworY2xhc3MgR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
PiB7CitwdWJsaWM6CisgICAgdW5zaWduZWQgbG9uZyBsb2FkQWN0aW9uKCkgY29uc3QgeyByZXR1
cm4gMDsgfQorICAgIHZvaWQgc2V0TG9hZEFjdGlvbih1bnNpZ25lZCBsb25nKSB7fQorICAgIHVu
c2lnbmVkIGxvbmcgc3RvcmVBY3Rpb24oKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdm9pZCBz
ZXRTdG9yZUFjdGlvbih1bnNpZ25lZCBsb25nKSB7fQorICAgIHZvaWQgc2V0VGV4dHVyZShHUFVU
ZXh0dXJlKikge30KK307CisvKioqIGVuZCBzdHViICovCiBjbGFzcyBXZWJHUFVUZXh0dXJlOwog
CiBjbGFzcyBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgV2Vi
R1BVT2JqZWN0IHsKQEAgLTQ5LDE4ICs1OSwxOCBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdlYkdQ
VVRleHR1cmU+IHRleHR1cmUoKSBjb25zdDsKICAgICB2b2lkIHNldFRleHR1cmUoUmVmUHRyPFdl
YkdQVVRleHR1cmU+KTsKIAotICAgIE1ldGFsUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
KiByZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5nZXQoKTsgfQorICAgIEdQVVJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvciogcmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9yZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuZ2V0KCk7IH0KIAogICAg
IHZpcnR1YWwgYm9vbCBpc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogCiBwcm90ZWN0ZWQ6CiAKLSAgICBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVu
dERlc2NyaXB0b3IoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIE1ldGFsUmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yKik7CisgICAgV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3IqKTsKIAogCiBwcml2YXRlOgogCi0gICAgUmVmUHRyPE1ldGFsUmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yPiBtX3JlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjsKKyAgICBS
ZWZQdHI8R1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yPiBtX3JlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvcjsKICAgICBSZWZQdHI8V2ViR1BVVGV4dHVyZT4gbV90ZXh0dXJlOwog
fTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcApp
bmRleCAxMjQ0YmIzZDg4YS4uNDUzZmIzMWRmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvci5jcHAKQEAgLTI4LDE5ICsyOCwyMSBAQAogCiAjaWYgRU5BQkxF
KFdFQkdQVSkKIAorLyoqKgogI2luY2x1ZGUgIkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmgiCisgKi8KICNpbmNsdWRlICJHUFVUZXh0dXJlLmgiCiAjaW5jbHVkZSAiV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkdQVVRleHR1cmUuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3I+IFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpjcmVh
dGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgTWV0YWxSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvciogZGVzY3JpcHRvcikKK1JlZjxXZWJHUFVSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvcj4gV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3I6OmNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBHUFVSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cihjb250ZXh0LCBkZXNjcmlwdG9yKSk7CiB9CiAKLVdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yOjpXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cihXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBNZXRhbFJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3I6OldlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIEdQVVJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogICAgIDogV2ViR1BVUmVuZGVyUGFzc0F0
dGFjaG1lbnREZXNjcmlwdG9yKGNvbnRleHQsIGRlc2NyaXB0b3IpCiB7CiB9CkBAIC00OSwxNCAr
NTEsMTQgQEAgV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6On5XZWJH
UFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3IKIHsKIH0KIAotTWV0YWxSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3I6OnJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCkgY29uc3QK
K0dQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBXZWJHUFVSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6cmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IoKSBjb25zdAogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxNZXRhbFJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKj4ocmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvcio+KHJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcigpKTsKIH0KIAogVmVj
dG9yPGZsb2F0PiBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6Y2xl
YXJDb2xvcigpIGNvbnN0CiB7Ci0gICAgTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvciogZGVzY3JpcHRvciA9IHJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
KCk7CisgICAgR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIGRlc2NyaXB0
b3IgPSByZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpOwogICAgIGlmICghZGVz
Y3JpcHRvcikgewogICAgICAgICBWZWN0b3I8ZmxvYXQ+IGJsYWNrID0geyAwLjAsIDAuMCwgMC4w
LCAxLjAgfTsKICAgICAgICAgcmV0dXJuIGJsYWNrOwpAQCAtNjYsNyArNjgsNyBAQCBWZWN0b3I8
ZmxvYXQ+IFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpjbGVhckNv
bG9yKCkgY29uc3QKIAogdm9pZCBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcjo6c2V0Q2xlYXJDb2xvcihjb25zdCBWZWN0b3I8ZmxvYXQ+JiBuZXdDbGVhckNvbG9yKQog
ewotICAgIE1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIGRlc2NyaXB0
b3IgPSByZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpOworICAgIEdQVVJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNjcmlwdG9yID0gcmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IoKTsKICAgICBpZiAoIWRlc2NyaXB0b3IpCiAgICAgICAg
IHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgKaW5k
ZXggYjMyMjY2MmZmNDEuLjE4YmIwMjA2MzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yLmgKQEAgLTM0LDIyICszNCwyOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOworLyoq
KiBzdHViICovCisvLyBjbGFzcyBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cjsKK2NsYXNzIEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yIDogcHVibGlj
IEdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7CitwdWJsaWM6CisgICAgVmVjdG9y
PGZsb2F0PiBjbGVhckNvbG9yKCkgY29uc3QgeyByZXR1cm4gVmVjdG9yPGZsb2F0PigpOyB9Cisg
ICAgdm9pZCBzZXRDbGVhckNvbG9yKGNvbnN0IFZlY3RvcjxmbG9hdD4mKSB7fQorfTsKKy8qKiog
ZW5kIHN0dWIgKi8KIAogY2xhc3MgV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IgOiBwdWJsaWMgV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yIHsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcigpOwotICAgIHN0YXRpYyBSZWY8V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3I+IGNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgTWV0YWxSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvciopOworICAgIHN0YXRpYyBSZWY8V2ViR1BVUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250
ZXh0KiwgR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqKTsKIAogICAgIFZl
Y3RvcjxmbG9hdD4gY2xlYXJDb2xvcigpIGNvbnN0OwogICAgIHZvaWQgc2V0Q2xlYXJDb2xvcihj
b25zdCBWZWN0b3I8ZmxvYXQ+Jik7CiAKLSAgICBNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yKiByZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpIGNvbnN0
OworICAgIEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiByZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpIGNvbnN0OwogCiAgICAgYm9vbCBpc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKIHBy
aXZhdGU6Ci0gICAgV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dCosIE1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IqKTsKKyAgICBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcihX
ZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IqKTsKIAogfTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNj
cmlwdG9yLmNwcAppbmRleCA2MmQ2ZjI3NTM4OS4uMDI1ZDE3ZGQwODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKQEAgLTM1LDEyICszNSwxMiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2ht
ZW50RGVzY3JpcHRvcj4gV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6
OmNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBNZXRhbFJlbmRlclBhc3NE
ZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorUmVmPFdlYkdQVVJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yPiBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6Y3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIEdQ
VVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNj
cmlwdG9yKGNvbnRleHQsIGRlc2NyaXB0b3IpKTsKIH0KIAotV2ViR1BVUmVuZGVyUGFzc0RlcHRo
QXR0YWNobWVudERlc2NyaXB0b3I6OldlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNj
cmlwdG9yKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIE1ldGFsUmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCitXZWJHUFVSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvcjo6V2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3IoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgR1BVUmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiAgICAgOiBXZWJHUFVSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3IoY29udGV4dCwgZGVzY3JpcHRvcikKIHsKIH0KQEAgLTUx
LDcgKzUxLDcgQEAgV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6On5X
ZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3IKIAogZG91YmxlIFdlYkdQVVJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjpjbGVhckRlcHRoKCkgY29uc3QKIHsKLSAg
ICBNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNjcmlwdG9yID0g
cmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoKTsKKyAgICBHUFVSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogZGVzY3JpcHRvciA9IHJlbmRlclBhc3NEZXB0aEF0
dGFjaG1lbnREZXNjcmlwdG9yKCk7CiAgICAgaWYgKCFkZXNjcmlwdG9yKQogICAgICAgICByZXR1
cm4gMDsKIApAQCAtNjAsMTYgKzYwLDE2IEBAIGRvdWJsZSBXZWJHUFVSZW5kZXJQYXNzRGVwdGhB
dHRhY2htZW50RGVzY3JpcHRvcjo6Y2xlYXJEZXB0aCgpIGNvbnN0CiAKIHZvaWQgV2ViR1BVUmVu
ZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OnNldENsZWFyRGVwdGgoZG91YmxlIG5l
d0NsZWFyRGVwdGgpCiB7Ci0gICAgTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3Jp
cHRvciogZGVzY3JpcHRvciA9IHJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKCk7
CisgICAgR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqIGRlc2NyaXB0b3Ig
PSByZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcigpOwogICAgIGlmICghZGVzY3Jp
cHRvcikKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGRlc2NyaXB0b3ItPnNldENsZWFyRGVw
dGgobmV3Q2xlYXJEZXB0aCk7CiB9CiAKLU1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3IqIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjpyZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcigpIGNvbnN0CitHUFVSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvciogV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3I6OnJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvcio+KHJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcigpKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8R1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqPihyZW5k
ZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oCmluZGV4IDczOGFi
NGM1YWY3Li43M2FjODg4MDBlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvci5oCkBAIC0zMiwyMCArMzIsMjcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjsKKy8qKiogc3R1YiAq
LworLy8gY2xhc3MgR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I7CitjbGFz
cyBHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBHUFVSZW5k
ZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IgeworcHVibGljOgorICAgIGRvdWJsZSBjbGVhckRl
cHRoKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZvaWQgc2V0Q2xlYXJEZXB0aChkb3VibGUp
IHt9Cit9OworLyoqKiBlbmQgc3R1YiAqLwogCiBjbGFzcyBXZWJHUFVSZW5kZXJQYXNzRGVwdGhB
dHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3IgewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYkdQVVJlbmRlclBhc3NEZXB0aEF0
dGFjaG1lbnREZXNjcmlwdG9yKCk7Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvcj4gY3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBN
ZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKik7CisgICAgc3RhdGljIFJl
ZjxXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcj4gY3JlYXRlKFdlYkdQ
VVJlbmRlcmluZ0NvbnRleHQqLCBHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
ciopOwogCiAgICAgZG91YmxlIGNsZWFyRGVwdGgoKSBjb25zdDsKICAgICB2b2lkIHNldENsZWFy
RGVwdGgoZG91YmxlKTsKIAotICAgIE1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2Ny
aXB0b3IqIHJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKCkgY29uc3Q7CisgICAg
R1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqIHJlbmRlclBhc3NEZXB0aEF0
dGFjaG1lbnREZXNjcmlwdG9yKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgV2ViR1BVUmVuZGVy
UGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIE1l
dGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqKTsKKyAgICBXZWJHUFVSZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcihXZWJHUFVSZW5kZXJpbmdDb250ZXh0Kiwg
R1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqKTsKIAogfTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXNj
cmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NE
ZXNjcmlwdG9yLmNwcAppbmRleCAyZjhiMjM2ZDcyYy4uNjEyNTlkYWQxYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVzY3Jp
cHRvci5jcHAKQEAgLTI4LDkgKzI4LDExIEBACiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCisvKioq
CiAjaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCIKICNp
bmNsdWRlICJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIgogI2luY2x1
ZGUgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCisqLwogI2luY2x1ZGUgIldlYkdQVVJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiV2ViR1BVUmVuZGVy
UGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJXZWJHUFVSZW5kZXJp
bmdDb250ZXh0LmgiCkBAIC00NSw3ICs0Nyw3IEBAIFJlZjxXZWJHUFVSZW5kZXJQYXNzRGVzY3Jp
cHRvcj4gV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I6OmNyZWF0ZSgpCiBXZWJHUFVSZW5kZXJQ
YXNzRGVzY3JpcHRvcjo6V2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IoKQogICAgIDogV2ViR1BV
T2JqZWN0KCkKIHsKLSAgICBtX3JlbmRlclBhc3NEZXNjcmlwdG9yID0gTWV0YWxSZW5kZXJQYXNz
RGVzY3JpcHRvcjo6Y3JlYXRlKCk7CisgICAgbV9yZW5kZXJQYXNzRGVzY3JpcHRvciA9IEdQVVJl
bmRlclBhc3NEZXNjcmlwdG9yOjpjcmVhdGUoKTsKIH0KIAogV2ViR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3I6On5XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcigpCkBAIC01OCw3ICs2MCw3IEBAIFJl
ZlB0cjxXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcj4gV2ViR1BVUmVu
ZGVyUGFzc0Rlc2NyaXB0b3I6OmRlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYg
KCFtX2RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IpIHsKLSAgICAgICAgUmVmUHRyPE1ldGFsUmVu
ZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I+IHBsYXRmb3JtRGVwdGhBdHRhY2htZW50
ID0gbV9yZW5kZXJQYXNzRGVzY3JpcHRvci0+ZGVwdGhBdHRhY2htZW50KCk7CisgICAgICAgIFJl
ZlB0cjxHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcj4gcGxhdGZvcm1EZXB0
aEF0dGFjaG1lbnQgPSBtX3JlbmRlclBhc3NEZXNjcmlwdG9yLT5kZXB0aEF0dGFjaG1lbnQoKTsK
ICAgICAgICAgbV9kZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yID0gV2ViR1BVUmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3I6OmNyZWF0ZSh0aGlzLT5jb250ZXh0KCksIHBsYXRmb3Jt
RGVwdGhBdHRhY2htZW50LmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIG1fZGVwdGhBdHRhY2ht
ZW50RGVzY3JpcHRvcjsKQEAgLTcwLDcgKzcyLDcgQEAgVmVjdG9yPFJlZlB0cjxXZWJHUFVSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4+IFdlYkdQVVJlbmRlclBhc3NEZXNjcmkK
ICAgICAgICAgcmV0dXJuIFZlY3RvcjxSZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3I+PigpOwogCiAgICAgaWYgKCFtX2NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3JzLnNpemUoKSkgewotICAgICAgICBWZWN0b3I8UmVmUHRyPE1ldGFsUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3I+PiBwbGF0Zm9ybUNvbG9yQXR0YWNobWVudHMgPSBtX3JlbmRl
clBhc3NEZXNjcmlwdG9yLT5jb2xvckF0dGFjaG1lbnRzKCk7CisgICAgICAgIFZlY3RvcjxSZWZQ
dHI8R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+PiBwbGF0Zm9ybUNvbG9y
QXR0YWNobWVudHMgPSBtX3JlbmRlclBhc3NEZXNjcmlwdG9yLT5jb2xvckF0dGFjaG1lbnRzKCk7
CiAgICAgICAgIGZvciAoYXV0byYgYXR0YWNobWVudCA6IHBsYXRmb3JtQ29sb3JBdHRhY2htZW50
cykKICAgICAgICAgICAgIG1fY29sb3JBdHRhY2htZW50RGVzY3JpcHRvcnMuYXBwZW5kKFdlYkdQ
VVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpjcmVhdGUodGhpcy0+Y29udGV4
dCgpLCBhdHRhY2htZW50LmdldCgpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgKaW5kZXggODRjMDU5
MjlkYzYuLmMyN2E0NWM2ZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgKQEAgLTMzLDcgKzMzLDE3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I7Cisv
KioqIHN0dWIgKi8KKy8vIGNsYXNzIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOworY2xhc3MgR1BV
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I7CitjbGFzcyBHUFVSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjsKK2NsYXNzIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9y
IDogcHVibGljIFJlZkNvdW50ZWQ8R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I+IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmUHRyPEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yPiBjcmVhdGUoKSB7IHJl
dHVybiBudWxscHRyOyB9CisgICAgR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0
b3IqIGRlcHRoQXR0YWNobWVudCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBWZWN0b3I8UmVm
UHRyPEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4gY29sb3JBdHRhY2ht
ZW50cygpIHsgcmV0dXJuIFZlY3RvcjxSZWZQdHI8R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3I+PigpOyB9Cit9OworLyoqKiBlbmQgc3R1YiAqLwogY2xhc3MgV2ViR1BVUmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I7CiBjbGFzcyBXZWJHUFVSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjsKIApAQCAtNDUsNyArNTUsNyBAQCBwdWJsaWM6CiAg
ICAgUmVmUHRyPFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yPiBkZXB0
aEF0dGFjaG1lbnQoKTsKICAgICBWZWN0b3I8UmVmUHRyPFdlYkdQVVJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yPj4gY29sb3JBdHRhY2htZW50cygpOwogCi0gICAgTWV0YWxSZW5k
ZXJQYXNzRGVzY3JpcHRvciogcmVuZGVyUGFzc0Rlc2NyaXB0b3IoKSB7IHJldHVybiBtX3JlbmRl
clBhc3NEZXNjcmlwdG9yLmdldCgpOyB9CisgICAgR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IqIHJl
bmRlclBhc3NEZXNjcmlwdG9yKCkgeyByZXR1cm4gbV9yZW5kZXJQYXNzRGVzY3JpcHRvci5nZXQo
KTsgfQogCiBwcml2YXRlOgogICAgIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yKCk7CkBAIC01
Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJHUFVSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4+IG1fY29sb3JBdHRhY2htZW50RGVzY3JpcHRvcnM7
CiAgICAgUmVmUHRyPFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yPiBt
X2RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I7CiAKLSAgICBSZWZQdHI8TWV0YWxSZW5kZXJQYXNz
RGVzY3JpcHRvcj4gbV9yZW5kZXJQYXNzRGVzY3JpcHRvcjsKKyAgICBSZWZQdHI8R1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3I+IG1fcmVuZGVyUGFzc0Rlc2NyaXB0b3I7CiB9OwogICAgIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvci5jcHAKaW5kZXggM2UwNjkzMDkyMDIuLjY0MTU3N2ViOTg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKQEAgLTI4LDE3
ICsyOCwxOSBAQAogCiAjaWYgRU5BQkxFKFdFQkdQVSkKIAorLyoqKgogI2luY2x1ZGUgIkdQVVJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgorKi8KICNpbmNsdWRlICJX
ZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFdl
YkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gV2ViR1BVUmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpjcmVhdGUoV2ViR1BVUmVuZGVyaW5n
Q29udGV4dCogY29udGV4dCwgTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IqIGRlc2NyaXB0b3IpCitSZWY8V2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yPiBXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3I6OmNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBHUFVSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yKGNvbnRleHQsIGRlc2NyaXB0b3IpKTsKIH0KIAotV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yOjpXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgTWV0YWxSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCitXZWJHUFVSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OldlYkdQVVJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcihXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0
LCBHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIGRlc2NyaXB0b3Ip
CiAgICAgOiBXZWJHUFVPYmplY3QoY29udGV4dCkKICAgICAsIG1fcmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yKGRlc2NyaXB0b3IpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oCmluZGV4IDNjY2ZmZmVlZTAyLi40Y2YyMTdj
MDQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
LmgKQEAgLTI5LDI0ICsyOSwzMiBAQAogCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0LmgiCiAKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3I7CisvKioqIHN0dWIgKi8KKy8vIGNsYXNzIEdQVVJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjsKK2NsYXNzIEdQVVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4geworcHVibGljOgorICAgIHVuc2lnbmVkIGxvbmcg
cGl4ZWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdm9pZCBzZXRQaXhlbEZvcm1h
dCh1bnNpZ25lZCBsb25nKSB7fQorfTsKKy8qKiogZW5kIHN0dWIgKi8KIAogY2xhc3MgV2ViR1BV
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yIDogcHVibGljIFdlYkdQVU9i
amVjdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yKCk7Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0
KiwgTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqKTsKKyAgICBz
dGF0aWMgUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4g
Y3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IqKTsKIAogICAgIHVuc2lnbmVkIGxvbmcgcGl4ZWxGb3JtYXQoKSBj
b25zdDsKICAgICB2b2lkIHNldFBpeGVsRm9ybWF0KHVuc2lnbmVkIGxvbmcpOwogCi0gICAgTWV0
YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIHJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpIHsgcmV0dXJuIG1fcmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yLmdldCgpOyB9CisgICAgR1BVUmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yKiByZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IoKSB7IHJldHVybiBtX3JlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ci5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcihXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgTWV0YWxSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqKTsKKyAgICBXZWJHUFVSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIEdQVVJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciopOwogCi0gICAgUmVmUHRyPE1l
dGFsUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBtX3JlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjsKKyAgICBSZWZQdHI8R1BVUmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBtX3JlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvcjsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yLmNwcAppbmRleCA1MWI2YWNhZDgyZS4uYjcyZmFlYTQ1NWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yLmNwcApAQCAtMjksOCArMjksMTAgQEAKICNpZiBFTkFCTEUoV0VCR1BV
KQogCiAjaW5jbHVkZSAiR1BVRnVuY3Rpb24uaCIKKy8qKioKICNpbmNsdWRlICJHUFVSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IuaCIKKyovCiAjaW5jbHVkZSAiV2ViR1BVRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCIK
ICNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCkBAIC00NSw3ICs0Nyw3IEBAIFJl
ZjxXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcjo6Y3JlYXRlKCkKIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6V2ViR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCkKICAgICA6IFdlYkdQVU9iamVjdCgpCiB7Ci0gICAg
bV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSBNZXRhbFJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cjo6Y3JlYXRlKCk7CisgICAgbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSBHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I6OmNyZWF0ZSgpOwogfQogCiBXZWJHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6On5XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoKQpAQCAtMTA2LDcgKzEw
OCw3IEBAIFZlY3RvcjxSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yPj4gV2ViR1BVUmVuZGVyUGlwZWxpCiAgICAgICAgIHJldHVybiBWZWN0b3I8UmVm
UHRyPFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4+KCk7CiAK
ICAgICBpZiAoIW1fY29sb3JBdHRhY2htZW50RGVzY3JpcHRvcnMuc2l6ZSgpKSB7Ci0gICAgICAg
IFZlY3RvcjxSZWZQdHI8TWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3I+PiBwbGF0Zm9ybUNvbG9yQXR0YWNobWVudHMgPSBtX3JlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ci0+Y29sb3JBdHRhY2htZW50cygpOworICAgICAgICBWZWN0b3I8UmVmUHRyPEdQVVJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4+IHBsYXRmb3JtQ29sb3JBdHRhY2htZW50
cyA9IG1fcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLT5jb2xvckF0dGFjaG1lbnRzKCk7CiAgICAg
ICAgIGZvciAoYXV0byYgYXR0YWNobWVudCA6IHBsYXRmb3JtQ29sb3JBdHRhY2htZW50cykKICAg
ICAgICAgICAgIG1fY29sb3JBdHRhY2htZW50RGVzY3JpcHRvcnMuYXBwZW5kKFdlYkdQVVJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6Y3JlYXRlKHRoaXMtPmNvbnRleHQo
KSwgYXR0YWNobWVudC5nZXQoKSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKaW5kZXgg
OTkxMGU4NTJmODcuLjI3NjllZDkyYjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaApAQCAtMzMs
NyArMzMsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3I7CisvKioqIHN0dWIgKi8KKy8vIGNsYXNzIEdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcjsKK2NsYXNzIEdQVUZ1bmN0aW9uOworY2xhc3MgR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yIDogUmVmQ291bnRlZDxHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+Cit7Citw
dWJsaWM6CisgICAgU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsg
fQorICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgU3RyaW5nJikge30KKyAgICB2b2lkIHNldFZlcnRl
eEZ1bmN0aW9uKEdQVUZ1bmN0aW9uKikge30KKyAgICB2b2lkIHNldEZyYWdtZW50RnVuY3Rpb24o
R1BVRnVuY3Rpb24qKSB7fQorfTsKKworLyoqKiBlbmQgc3R1YiAqLworCiBjbGFzcyBXZWJHUFVG
dW5jdGlvbjsKIGNsYXNzIFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcjsKIApAQCAtNTgsNyArNzEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc2V0KCk7CiAK
LSAgICBNZXRhbFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogcmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yKCkgeyByZXR1cm4gbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuZ2V0KCk7IH0KKyAgICBH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpIHsg
cmV0dXJuIG1fcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmdldCgpOyB9CiAKIHByaXZhdGU6CiAg
ICAgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCk7CkBAIC02OCw3ICs4MSw3IEBAIHBy
aXZhdGU6CiAKICAgICBWZWN0b3I8UmVmUHRyPFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcj4+IG1fY29sb3JBdHRhY2htZW50RGVzY3JpcHRvcnM7CiAKLSAgICBS
ZWZQdHI8TWV0YWxSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IG1fcmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yOworICAgIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IG1fcmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZVN0
YXRlLmNwcAppbmRleCBjMjAxNDBiZTU3YS4uNzkzYTA1OTdiMTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuY3Bw
CkBAIC0yOCw3ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCisvKioqCiAjaW5jbHVk
ZSAiR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oIgorICovCiAjaW5jbHVkZSAiV2ViR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5o
IgogCkBAIC00NCw3ICs0Niw3IEBAIFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGU6OldlYkdQVVJl
bmRlclBpcGVsaW5lU3RhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29uCiB7CiAgICAgaWYg
KCFjb250ZXh0IHx8ICFkZXNjcmlwdG9yKQogICAgICAgICByZXR1cm47Ci0gICAgbV9yZW5kZXJQ
aXBlbGluZVN0YXRlID0gTWV0YWxSZW5kZXJQaXBlbGluZVN0YXRlOjpjcmVhdGUoY29udGV4dC0+
ZGV2aWNlKCkuZ2V0KCksIGRlc2NyaXB0b3ItPnJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpKTsK
KyAgICBtX3JlbmRlclBpcGVsaW5lU3RhdGUgPSBHUFVSZW5kZXJQaXBlbGluZVN0YXRlOjpjcmVh
dGUoY29udGV4dC0+ZGV2aWNlKCkuZ2V0KCksIGRlc2NyaXB0b3ItPnJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcigpKTsKIH0KIAogV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZTo6fldlYkdQVVJlbmRl
clBpcGVsaW5lU3RhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oCmluZGV4IDRjNWIwODBhZGQ5Li4xMjcwMWQxYTA2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlw
ZWxpbmVTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRl
clBpcGVsaW5lU3RhdGUuaApAQCAtMzMsNyArMzMsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBHUFVSZW5kZXJQaXBlbGluZVN0YXRlOworLyoqKiBzdHViICovCisvLyBjbGFz
cyBHUFVSZW5kZXJQaXBlbGluZVN0YXRlOworY2xhc3MgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yOworY2xhc3MgR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQ
VVJlbmRlclBpcGVsaW5lU3RhdGU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPEdQVVJl
bmRlclBpcGVsaW5lU3RhdGU+IGNyZWF0ZShHUFVEZXZpY2UqLCBHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IqKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Qg
eyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQorICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgU3RyaW5n
Jikge30KK307CisvKioqIGVuZCBzdHViICovCisKIGNsYXNzIFdlYkdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcjsKIAogY2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZSA6IHB1YmxpYyBX
ZWJHUFVPYmplY3QgewpAQCAtNDQsMTIgKzU0LDEyIEBAIHB1YmxpYzoKICAgICBTdHJpbmcgbGFi
ZWwoKSBjb25zdDsKICAgICB2b2lkIHNldExhYmVsKGNvbnN0IFN0cmluZyYpOwogCi0gICAgTWV0
YWxSZW5kZXJQaXBlbGluZVN0YXRlKiByZW5kZXJQaXBlbGluZVN0YXRlKCkgeyByZXR1cm4gbV9y
ZW5kZXJQaXBlbGluZVN0YXRlLmdldCgpOyB9CisgICAgR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZSog
cmVuZGVyUGlwZWxpbmVTdGF0ZSgpIHsgcmV0dXJuIG1fcmVuZGVyUGlwZWxpbmVTdGF0ZS5nZXQo
KTsgfQogCiBwcml2YXRlOgogICAgIFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUoV2ViR1BVUmVu
ZGVyaW5nQ29udGV4dCosIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciopOwogCi0gICAg
UmVmUHRyPE1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZT4gbV9yZW5kZXJQaXBlbGluZVN0YXRlOwor
ICAgIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZVN0YXRlPiBtX3JlbmRlclBpcGVsaW5lU3RhdGU7
CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA3MmU0MWFl
NDlkYy4uMjVjZjI3YWI3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC03MSwxMyArNzEsMTQgQEAgc3RhdGlj
IGNvbnN0IGludCBrTWF4VGV4dHVyZVNpemUgPSA0MDk2OwogCiBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
R1BVUmVuZGVyaW5nQ29udGV4dD4gV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKEhUTUxD
YW52YXNFbGVtZW50JiBjYW52YXMpCiB7CisvKioqCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0g
Y2FudmFzLmRvY3VtZW50KCk7CiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsK
ICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotLy8gICAgTWV0YWxE
ZXZpY2U6OkF0dHJpYnV0ZXMgYXR0cmlidXRlcyA9IGF0dHJzID8gYXR0cnMtPmF0dHJpYnV0ZXMo
KSA6IEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzKCk7Ci0gICAgTWV0YWxEZXZpY2U6OkF0
dHJpYnV0ZXMgYXR0cmlidXRlczsKKy8vICAgIEdQVURldmljZTo6QXR0cmlidXRlcyBhdHRyaWJ1
dGVzID0gYXR0cnMgPyBhdHRycy0+YXR0cmlidXRlcygpIDogR3JhcGhpY3NDb250ZXh0M0Q6OkF0
dHJpYnV0ZXMoKTsKKyAgICBHUFVEZXZpY2U6OkF0dHJpYnV0ZXMgYXR0cmlidXRlczsKIAogICAg
IGF0dHJpYnV0ZXMuYW50aWFsaWFzID0gZmFsc2U7CiAKQEAgLTg1LDcgKzg2LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ+IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ6
OmNyZWF0ZShIVE1MQ2FudmEKIC8vICAgICAgICAgICAgYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJh
dGlvID0gcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKIAogICAgIEhvc3RXaW5kb3cqIGhvc3RX
aW5kb3cgPSBkb2N1bWVudC52aWV3KCktPnJvb3QoKS0+aG9zdFdpbmRvdygpOwotICAgIFJlZlB0
cjxNZXRhbERldmljZT4gZGV2aWNlKE1ldGFsRGV2aWNlOjpjcmVhdGUoYXR0cmlidXRlcywgaG9z
dFdpbmRvdykpOworICAgIFJlZlB0cjxHUFVEZXZpY2U+IGRldmljZShHUFVEZXZpY2U6OmNyZWF0
ZShhdHRyaWJ1dGVzLCBob3N0V2luZG93KSk7CiAKICAgICBpZiAoIWRldmljZSkgeyAvLyB8fCAh
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpIHsKICAgICAgICAgLy8gY2FudmFzLT5kaXNw
YXRjaEV2ZW50KFdlYkdMQ29udGV4dEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmdsY29u
dGV4dGNyZWF0aW9uZXJyb3JFdmVudCwgZmFsc2UsIHRydWUsICJDb3VsZCBub3QgY3JlYXRlIGEg
V2ViR0wgY29udGV4dC4iKSk7CkBAIC05Nyw5ICs5OCwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
R1BVUmVuZGVyaW5nQ29udGV4dD4gV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKEhUTUxD
YW52YQogICAgIHJlbmRlcmluZ0NvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgpOwogCiAgICAgcmV0
dXJuIHJlbmRlcmluZ0NvbnRleHQ7CisqLworICAgIHJldHVybiBudWxscHRyOwogfQogCi1XZWJH
UFVSZW5kZXJpbmdDb250ZXh0OjpXZWJHUFVSZW5kZXJpbmdDb250ZXh0KEhUTUxDYW52YXNFbGVt
ZW50JiBjYW52YXMsIFBhc3NSZWZQdHI8TWV0YWxEZXZpY2U+IGRldmljZSkKK1dlYkdQVVJlbmRl
cmluZ0NvbnRleHQ6OldlYkdQVVJlbmRlcmluZ0NvbnRleHQoSFRNTENhbnZhc0VsZW1lbnQmIGNh
bnZhcywgUGFzc1JlZlB0cjxHUFVEZXZpY2U+IGRldmljZSkKICAgICA6IENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQoY2FudmFzKQogICAgICwgQWN0aXZlRE9NT2JqZWN0KCZjYW52YXMuZG9jdW1lbnQo
KSkKICAgICAsIG1fZGV2aWNlKGRldmljZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuaAppbmRleCA5NjNkZDc0NWU4ZS4uZWFhMDc3
YWY2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRl
cmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5k
ZXJpbmdDb250ZXh0LmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogCiAgICAgUGxhdGZvcm1M
YXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgUmVmUHRyPE1ldGFs
RGV2aWNlPiBkZXZpY2UoKSB7IHJldHVybiBtX2RldmljZTsgfQorICAgIFJlZlB0cjxHUFVEZXZp
Y2U+IGRldmljZSgpIHsgcmV0dXJuIG1fZGV2aWNlOyB9CiAKICAgICAvLyBXZWJHUFUgZW50cnkg
cG9pbnRzCiAKQEAgLTkxLDkgKzkxLDkgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogLy8gICAg
V2ViR1BVUmVuZGVyaW5nQ29udGV4dChIVE1MQ2FudmFzRWxlbWVudCopOy8vLCBHcmFwaGljc0Nv
bnRleHQzRDo6QXR0cmlidXRlcyk7Ci0gICAgV2ViR1BVUmVuZGVyaW5nQ29udGV4dChIVE1MQ2Fu
dmFzRWxlbWVudCYsIFBhc3NSZWZQdHI8TWV0YWxEZXZpY2U+KTsKKyAgICBXZWJHUFVSZW5kZXJp
bmdDb250ZXh0KEhUTUxDYW52YXNFbGVtZW50JiwgUGFzc1JlZlB0cjxHUFVEZXZpY2U+KTsKIAot
ICAgIFJlZlB0cjxNZXRhbERldmljZT4gbV9kZXZpY2U7CisgICAgUmVmUHRyPEdQVURldmljZT4g
bV9kZXZpY2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmUuY3BwCmluZGV4IGIyZDQzNTcwMGUxLi4yOTAwYjI0
ZWE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVy
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZS5jcHAK
QEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8V2ViR1BVVGV4
dHVyZT4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlRnJvbURyYXdhYmxlVGV4dHVyZShXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPE1ldGFsVGV4dHVyZT4gZHJhd2FibGVU
ZXh0dXJlKQorUmVmPFdlYkdQVVRleHR1cmU+IFdlYkdQVVRleHR1cmU6OmNyZWF0ZUZyb21EcmF3
YWJsZVRleHR1cmUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxH
UFVUZXh0dXJlPiBkcmF3YWJsZVRleHR1cmUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViR1BVVGV4dHVyZShjb250ZXh0LCBkcmF3YWJsZVRleHR1cmUpKTsKIH0KQEAgLTQ0LDcgKzQ0
LDcgQEAgUmVmPFdlYkdQVVRleHR1cmU+IFdlYkdQVVRleHR1cmU6OmNyZWF0ZShXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0KiBjb250ZXh0LCBXZWJHUFUKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJHUFVUZXh0dXJlKGNvbnRleHQsIGRlc2NyaXB0b3IpKTsKIH0KIAotV2ViR1BVVGV4dHVyZTo6
V2ViR1BVVGV4dHVyZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRy
PE1ldGFsVGV4dHVyZT4gZHJhd2FibGVUZXh0dXJlKQorV2ViR1BVVGV4dHVyZTo6V2ViR1BVVGV4
dHVyZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPEdQVVRleHR1
cmU+IGRyYXdhYmxlVGV4dHVyZSkKICAgICA6IFdlYkdQVU9iamVjdChjb250ZXh0KQogICAgICwg
bV90ZXh0dXJlKGRyYXdhYmxlVGV4dHVyZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVVRleHR1cmUuaAppbmRleCBjZDdlN2FhYWNlNy4uZDI1YjBiYmU0MzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlLmgKQEAgLTM3LDE5ICszNywxOSBA
QCBjbGFzcyBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcjsKIGNsYXNzIFdlYkdQVVRleHR1cmUgOiBw
dWJsaWMgV2ViR1BVT2JqZWN0IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJHUFVUZXh0dXJl
KCk7Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVUZXh0dXJlPiBjcmVhdGVGcm9tRHJhd2FibGVUZXh0
dXJlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBQYXNzUmVmUHRyPE1ldGFsVGV4dHVyZT4pOwor
ICAgIHN0YXRpYyBSZWY8V2ViR1BVVGV4dHVyZT4gY3JlYXRlRnJvbURyYXdhYmxlVGV4dHVyZShX
ZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgUGFzc1JlZlB0cjxHUFVUZXh0dXJlPik7CiAgICAgc3Rh
dGljIFJlZjxXZWJHUFVUZXh0dXJlPiBjcmVhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIFdl
YkdQVVRleHR1cmVEZXNjcmlwdG9yKik7CiAKICAgICB1bnNpZ25lZCBsb25nIHdpZHRoKCkgY29u
c3Q7CiAgICAgdW5zaWduZWQgbG9uZyBoZWlnaHQoKSBjb25zdDsKIAotICAgIE1ldGFsVGV4dHVy
ZSogdGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorICAgIEdQVVRl
eHR1cmUqIHRleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KIAogcHJp
dmF0ZToKLSAgICBXZWJHUFVUZXh0dXJlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBQYXNzUmVm
UHRyPE1ldGFsVGV4dHVyZT4pOworICAgIFdlYkdQVVRleHR1cmUoV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dCosIFBhc3NSZWZQdHI8R1BVVGV4dHVyZT4pOwogICAgIFdlYkdQVVRleHR1cmUoV2ViR1BV
UmVuZGVyaW5nQ29udGV4dCosIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yKik7CiAKLSAgICBSZWZQ
dHI8TWV0YWxUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgUmVmUHRyPEdQVVRleHR1cmU+IG1fdGV4
dHVyZTsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHAKaW5kZXgg
OTkyMzc1MTQ0OTQuLjgwNjc5MzlhYjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwCkBAIC00MSw3ICs0MSw3IEBA
IFJlZjxXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcj4gV2ViR1BVVGV4dHVyZURlc2NyaXB0b3I6OmNy
ZWF0ZSh1bnNpZ25lZCBsb25nIHBpeGVsCiBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcjo6V2ViR1BV
VGV4dHVyZURlc2NyaXB0b3IodW5zaWduZWQgbG9uZyBwaXhlbEZvcm1hdCwgdW5zaWduZWQgbG9u
ZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQsIGJvb2wgbWlwbWFwcGVkKQogICAgIDogV2Vi
R1BVT2JqZWN0KCkKIHsKLSAgICBtX3RleHR1cmVEZXNjcmlwdG9yID0gTWV0YWxUZXh0dXJlRGVz
Y3JpcHRvcjo6Y3JlYXRlKHBpeGVsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBtaXBtYXBwZWQpOwor
ICAgIG1fdGV4dHVyZURlc2NyaXB0b3IgPSBHUFVUZXh0dXJlRGVzY3JpcHRvcjo6Y3JlYXRlKHBp
eGVsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBtaXBtYXBwZWQpOwogfQogCiBXZWJHUFVUZXh0dXJl
RGVzY3JpcHRvcjo6fldlYkdQVVRleHR1cmVEZXNjcmlwdG9yKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oCmluZGV4IDYwZTA3
MzhhYmIxLi44YWUyNjRlNjFhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oCkBAIC01OSwxMiArNTksMTIgQEAgcHVibGlj
OgogICAgIHVuc2lnbmVkIGxvbmcgdXNhZ2UoKSBjb25zdDsKICAgICB2b2lkIHNldFVzYWdlKHVu
c2lnbmVkIGxvbmcpOwogCi0gICAgTWV0YWxUZXh0dXJlRGVzY3JpcHRvciogdGV4dHVyZURlc2Ny
aXB0b3IoKSB7IHJldHVybiBtX3RleHR1cmVEZXNjcmlwdG9yLmdldCgpOyB9CisgICAgR1BVVGV4
dHVyZURlc2NyaXB0b3IqIHRleHR1cmVEZXNjcmlwdG9yKCkgeyByZXR1cm4gbV90ZXh0dXJlRGVz
Y3JpcHRvci5nZXQoKTsgfQogCiBwcml2YXRlOgogICAgIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9y
KHVuc2lnbmVkIGxvbmcgcGl4ZWxGb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVk
IGxvbmcgaGVpZ2h0LCBib29sIG1pcG1hcHBlZCk7CiAKLSAgICBSZWZQdHI8TWV0YWxUZXh0dXJl
RGVzY3JpcHRvcj4gbV90ZXh0dXJlRGVzY3JpcHRvcjsKKyAgICBSZWZQdHI8R1BVVGV4dHVyZURl
c2NyaXB0b3I+IG1fdGV4dHVyZURlc2NyaXB0b3I7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
RGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNl
LmgKaW5kZXggYTI0MGY3OWE0M2QuLmFkZTA2MWRmYzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5oCkBAIC00Nyw2ICs0NywxMCBAQCB0
eXBlZGVmIHZvaWQgUGxhdGZvcm1HUFVEZXZpY2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEdQVUJ1ZmZlcjsKKy8qKiogc3R1YiAqLworY2xhc3MgR1BVQ29tbWFuZFF1ZXVlOworY2xh
c3MgR1BVRHJhd2FibGU7CisvKioqIGVuZCBzdHViICovCiBjbGFzcyBHUFVMaWJyYXJ5OwogY2xh
c3MgR1BVVGV4dHVyZTsKIGNsYXNzIEdQVVRleHR1cmVEZXNjcmlwdG9yOwpAQCAtNjksNiArNzMs
MTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxHUFVCdWZmZXI+IGNyZWF0
ZUJ1ZmZlckZyb21EYXRhKEFycmF5QnVmZmVyVmlldyogZGF0YSk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgUmVmUHRyPEdQVVRleHR1cmU+IGNyZWF0ZVRleHR1cmUoR1BVVGV4dHVyZURlc2NyaXB0b3Iq
KTsKIAorICAgIC8qKiogc3R1YiAqLworICAgIEdQVUNvbW1hbmRRdWV1ZSogY3JlYXRlQ29tbWFu
ZFF1ZXVlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEdQVURyYXdhYmxlKiBnZXRGcmFtZWJ1
ZmZlcigpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICAvKioqIGVuZCBzdHViICovCisKIHByaXZh
dGU6CiAgICAgR1BVRGV2aWNlKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304136</attachid>
            <date>2017-03-10 22:35:47 -0800</date>
            <delta_ts>2017-03-10 22:35:47 -0800</delta_ts>
            <desc>2. Adjust Front-End classes to build with platform stubs</desc>
            <filename>0001-WebGPU-prototype-Front-End.patch</filename>
            <type>text/plain</type>
            <size>60477</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSAzNDAyMjI0NmY3ODI3NDBiMTcyODFlYTllMTJhNjgwMWM4YTA5Y2Y4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBGcmks
IDEwIE1hciAyMDE3IDIyOjM0OjUzIC0wODAwClN1YmplY3Q6IFtQQVRDSF0gV2ViR1BVIHByb3Rv
dHlwZSAtIEZyb250LUVuZAogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2Nzk1MgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpTb3VyY2UvSmF2YVNjcmlwdENv
cmU6CgoqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDogQWRkIFdlYkdQVSBvYmplY3RzLgoK
U291cmNlL1dlYkNvcmU6CgpDb252ZXJ0IE1ldGFsKiB0byBHUFUqLiBBZGQgc3R1YnMsIHN1cnJv
dW5kZWQgYnkgLyoqKiAqLyBtYXJrZXJzLgoKKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZzogUmUtZW5hYmxlIFdFQkdQVSBzaW5jZSBwYXRjaCAxLgoKKiBiaW5kaW5ncy9q
cy9KU0RvY3VtZW50Q3VzdG9tLmNwcDoKKFdlYkNvcmU6OkpTRG9jdW1lbnQ6OmdldENTU0NhbnZh
c0NvbnRleHQpOiBBZGQgbWlzc2luZyBjbGF1c2UuCgoqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwOgooV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHRXZWJHUFUpOiBGb3Ig
cmVsZWFzZSBidWlsZHMsIHN3aXRjaCB0byBBU1NFUlRfVU5VU0VELgotLS0KIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgIHwgIDkgKysrKysrKysKIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggIHwgMTkgKysr
KysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAxNyArKysrKysrKysrKysrKysKIC4uLi9XZWJDb3JlL0NvbmZpZ3VyYXRpb25z
L0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwICAgIHwgIDQgKysrKwogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgICAgICAgICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVQnVmZmVyLmggICAgICAgICAgfCAgNCArKy0tCiBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcCB8ICAyICsrCiBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kQnVmZmVyLmggICB8IDE3ICsrKysrKysr
KysrKy0tLQogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQ29tbWFuZFF1ZXVlLmNw
cCAgfCAgMiArKwogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQ29tbWFuZFF1ZXVl
LmggICAgfCAxNSArKysrKysrKysrLS0tCiAuLi4vaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVu
Y2lsRGVzY3JpcHRvci5jcHAgICB8ICA4ICsrKystLS0KIC4uLi9odG1sL2NhbnZhcy9XZWJHUFVE
ZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmggICAgIHwgMTcgKysrKysrKysrKysrLS0tCiAuLi4vaHRt
bC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwICAgICAgICB8ICA0ICsrKy0KIC4u
Li9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmggIHwgMTYgKysr
KysrKysrKystLS0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURyYXdhYmxlLmNw
cCAgICAgIHwgIDQgKysrLQogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRHJhd2Fi
bGUuaCAgICAgICAgfCAxMiArKysrKysrKy0tLQogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVRW51bXMuY3BwICAgICAgICAgfCAyMiArKysrKysrKysrLS0tLS0tLS0tCiBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVFbnVtcy5oICAgICAgICAgICB8IDE2ICsrKysrKysr
KysrKy0tCiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVGdW5jdGlvbi5oICAgICAg
ICB8ICA0ICsrLS0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUxpYnJhcnkuaCAg
ICAgICAgIHwgIDQgKystLQogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVT2JqZWN0
LmNwcCAgICAgICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVT2Jq
ZWN0LmggICAgICAgICAgfCAgMiArLQogLi4uL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlckNvbW1h
bmRFbmNvZGVyLmNwcCAgICAgfCAgMiArKwogLi4uL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlckNv
bW1hbmRFbmNvZGVyLmggICAgICAgfCAyMCArKysrKysrKysrKysrKy0tLQogLi4uL1dlYkdQVVJl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgICAgICAgfCAgNCArKystCiAuLi4vY2Fu
dmFzL1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oICB8IDE4ICsrKysrKysr
KysrKy0tLS0KIC4uLi9XZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5j
cHAgIHwgMTQgKysrKysrLS0tLS0tCiAuLi4vV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IuaCAgICB8IDE1ICsrKysrKysrKy0tLS0KIC4uLi9XZWJHUFVSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgIHwgMTQgKysrKysrLS0tLS0tCiAuLi4vV2Vi
R1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCAgICB8IDE1ICsrKysrKysr
Ky0tLS0KIC4uLi9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAgICAg
IHwgIDggKysrKy0tLQogLi4uL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9y
LmggICAgICAgfCAxOCArKysrKysrKysrKysrLS0tCiAuLi5iR1BVUmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCB8ICA2ICsrKystLQogLi4uV2ViR1BVUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggfCAxOCArKysrKysrKysrKy0tLS0tCiAu
Li4vaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCB8ICA2ICsr
KystLQogLi4uL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICAg
fCAyNSArKysrKysrKysrKysrKysrKysrLS0tCiAuLi4vaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVy
UGlwZWxpbmVTdGF0ZS5jcHAgICAgICB8ICA0ICsrKy0KIC4uLi9odG1sL2NhbnZhcy9XZWJHUFVS
ZW5kZXJQaXBlbGluZVN0YXRlLmggICAgICAgIHwgMTYgKysrKysrKysrKystLS0KIC4uLi9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwIHwgMTIgKysrKysrKy0t
LS0KIC4uLi9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCAgIHwg
IDYgKysrLS0tCiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlLmNwcCAg
ICAgICB8ICA0ICsrLS0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmUu
aCAgICAgICAgIHwgIDggKysrLS0tLQogLi4uL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmVEZXNj
cmlwdG9yLmNwcCAgICAgICAgfCAgMiArLQogLi4uL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
VGV4dHVyZURlc2NyaXB0b3IuaCAgfCAgNCArKy0tCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVRGV2aWNlLmggICB8IDEwICsrKysrKysrKwogNDYgZmlsZXMgY2hhbmdl
ZCwgMzQ1IGluc2VydGlvbnMoKyksIDEwOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwppbmRleCBiNDM1MmNmZTU4MS4uMjEwMTI1Mjk0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE3LTAzLTEwICBKb24gTGVlICA8am9ubGVlQGFwcGxl
LmNvbT4KKworICAgICAgICBXZWJHUFUgcHJvdG90eXBlIC0gRnJvbnQtRW5kCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjc5NTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaDogQWRkIFdlYkdQVSBvYmplY3RzLgorCiAyMDE3LTAzLTEwICBTYWFtIEJhcmF0
aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYkFzc2VtYmx5OiBNYWtlIG1vcmUg
ZGVtb3MgcnVuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaAppbmRleCA2NzU0NTBmOGQ1YS4uNDU0Nzk4YWEyMDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMTI2LDYg
KzEyNiwyNSBAQAogICAgIG1hY3JvKFdlYWtTZXQpXAogICAgIG1hY3JvKFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQpIFwKICAgICBtYWNybyhXZWJHTFZlcnRleEFycmF5T2JqZWN0KSBcCisgICAgbWFj
cm8oV2ViR1BVQnVmZmVyKSBcCisgICAgbWFjcm8oV2ViR1BVQ29tbWFuZEJ1ZmZlcikgXAorICAg
IG1hY3JvKFdlYkdQVUNvbW1hbmRRdWV1ZSkgXAorICAgIG1hY3JvKFdlYkdQVURlcHRoU3RlbmNp
bERlc2NyaXB0b3IpIFwKKyAgICBtYWNybyhXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZSkgXAorICAg
IG1hY3JvKFdlYkdQVURyYXdhYmxlKSBcCisgICAgbWFjcm8oV2ViR1BVRnVuY3Rpb24pIFwKKyAg
ICBtYWNybyhXZWJHUFVMaWJyYXJ5KSBcCisgICAgbWFjcm8oV2ViR1BVUmVuZGVyQ29tbWFuZEVu
Y29kZXIpIFwKKyAgICBtYWNybyhXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3Ip
IFwKKyAgICBtYWNybyhXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcikg
XAorICAgIG1hY3JvKFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKSBc
CisgICAgbWFjcm8oV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IpIFwKKyAgICBtYWNybyhXZWJH
UFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IpIFwKKyAgICBtYWNybyhX
ZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpIFwKKyAgICBtYWNybyhXZWJHUFVSZW5kZXJQ
aXBlbGluZVN0YXRlKSBcCisgICAgbWFjcm8oV2ViR1BVUmVuZGVyaW5nQ29udGV4dCkgXAorICAg
IG1hY3JvKFdlYkdQVVRleHR1cmUpIFwKKyAgICBtYWNybyhXZWJHUFVUZXh0dXJlRGVzY3JpcHRv
cikgXAogICAgIG1hY3JvKFdlYlNvY2tldCkgXAogICAgIG1hY3JvKF9fZGVmaW5lR2V0dGVyX18p
IFwKICAgICBtYWNybyhfX2RlZmluZVNldHRlcl9fKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGVkNmU4ODU2
OGQuLjU0ODA0MzMxMWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTctMDMtMTAg
IEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIFdlYkdQVSBwcm90b3R5cGUg
LSBGcm9udC1FbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2Nzk1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENvbnZlcnQgTWV0YWwqIHRvIEdQVSouIEFkZCBzdHVicywgc3Vycm91bmRlZCBieSAvKioq
ICovIG1hcmtlcnMuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZzogUmUtZW5hYmxlIFdFQkdQVSBzaW5jZSBwYXRjaCAxLgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RvY3Vt
ZW50OjpnZXRDU1NDYW52YXNDb250ZXh0KTogQWRkIG1pc3NpbmcgY2xhdXNlLgorCisgICAgICAg
ICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2Fu
dmFzRWxlbWVudDo6Z2V0Q29udGV4dFdlYkdQVSk6IEZvciByZWxlYXNlIGJ1aWxkcywgc3dpdGNo
IHRvIEFTU0VSVF9VTlVTRUQuCisKIDIwMTctMDMtMTAgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBs
ZS5jb20+CiAKICAgICAgICAgUGVyY2VudGFnZSBjb25zdHJhaW5lZCBpbWFnZXMgc2hyaW5raW5n
IGluc2lkZSBibG9ja3MgaW5zaWRlIG5lc3RlZCBmbGV4IGJveGVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJj
ZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IDZh
MWYyZGMxMzY0Li5lNTU3Y2UwMGNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYkNvcmUvQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTIxNiw3ICsyMTYsNyBAQCBF
TkFCTEVfVklFV19NT0RFX0NTU19NRURJQSA9IDsKIEVOQUJMRV9XRUJBU1NFTUJMWSA9IDsKIEVO
QUJMRV9XRUJHTCA9IEVOQUJMRV9XRUJHTDsKIEVOQUJMRV9XRUJHTDIgPSBFTkFCTEVfV0VCR0wy
OwotRU5BQkxFX1dFQkdQVSA9IDsKK0VOQUJMRV9XRUJHUFUgPSBFTkFCTEVfV0VCR1BVOwogRU5B
QkxFX1dFQkdQVVtzZGs9aXBob25lc2ltdWxhdG9yKl0gPSA7CiBFTkFCTEVfV0VCX0FOSU1BVElP
TlMgPSBFTkFCTEVfV0VCX0FOSU1BVElPTlM7CiBFTkFCTEVfV0VCX0FVRElPID0gRU5BQkxFX1dF
Ql9BVURJTzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1l
bnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3Rv
bS5jcHAKaW5kZXggNTYzN2MxNDA5ODQuLmE5MGJkMWEzZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcApAQCAtMTU0LDYgKzE1NCwxMCBA
QCBKU1ZhbHVlIEpTRG9jdW1lbnQ6OmdldENTU0NhbnZhc0NvbnRleHQoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlKQogICAgIGlmIChpczxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPigqY29udGV4dCkp
CiAgICAgICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIGRvd25jYXN0PFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+KCpjb250ZXh0KSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUo
V0VCR1BVKQorICAgIGlmIChpczxXZWJHUFVSZW5kZXJpbmdDb250ZXh0PigqY29udGV4dCkpCisg
ICAgICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIGRvd25jYXN0PFdlYkdQ
VVJlbmRlcmluZ0NvbnRleHQ+KCpjb250ZXh0KSk7CisjZW5kaWYKIAogICAgIHJldHVybiB0b0pT
KCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIGRvd25jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RD4oKmNvbnRleHQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENh
bnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHAKaW5kZXggNDU3YmU2MmNlMDUuLjRmMTI1NjliYzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wgSFRNTENhbnZh
c0VsZW1lbnQ6OmlzV2ViR1BVVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAKIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQqIEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0V2ViR1BVKGNvbnN0IFN0
cmluZyYgdHlwZSkKIHsKLSAgICBBU1NFUlQoSFRNTENhbnZhc0VsZW1lbnQ6OmlzV2ViR1BVVHlw
ZSh0eXBlKSk7CisgICAgQVNTRVJUX1VOVVNFRCh0eXBlLCBIVE1MQ2FudmFzRWxlbWVudDo6aXNX
ZWJHUFVUeXBlKHR5cGUpKTsKIAogICAgIGlmIChtX2NvbnRleHQgJiYgIW1fY29udGV4dC0+aXNH
UFUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHUFVCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVUJ1ZmZlci5oCmluZGV4IGU3MGViNDA3ZDQ1Li42OGJjZDMwNTgxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQnVmZmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQnVmZmVyLmgKQEAgLTQxLDExICs0MSwxMSBAQCBw
dWJsaWM6CiAgICAgdW5zaWduZWQgbG9uZyBsZW5ndGgoKSBjb25zdDsKICAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IGNvbnRlbnRzKCkgY29uc3Q7CiAKLSAgICBNZXRhbEJ1ZmZlciogYnVmZmVyKCkg
eyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KKyAgICBHUFVCdWZmZXIqIGJ1ZmZlcigpIHsgcmV0
dXJuIG1fYnVmZmVyLmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgV2ViR1BVQnVmZmVyKFdlYkdQ
VVJlbmRlcmluZ0NvbnRleHQqLCBBcnJheUJ1ZmZlclZpZXcqKTsKLSAgICBSZWZQdHI8TWV0YWxC
dWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxHUFVCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcAppbmRleCBmMjg0ZmQwMzBhOS4uYWUwNGMxYzI2MGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRCdWZm
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRCdWZm
ZXIuY3BwCkBAIC0yOCw4ICsyOCwxMCBAQAogCiAjaWYgRU5BQkxFKFdFQkdQVSkKIAorLyoqKgog
I2luY2x1ZGUgIkdQVUNvbW1hbmRCdWZmZXIuaCIKICNpbmNsdWRlICJHUFVDb21tYW5kUXVldWUu
aCIKKyovCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRRdWV1
ZS5oIgogI2luY2x1ZGUgIldlYkdQVURyYXdhYmxlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kQnVmZmVyLmgKaW5kZXggOWUxMmQ1ZGJmNWIuLjAwYjdi
MGVmNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21t
YW5kQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQ29tbWFu
ZEJ1ZmZlci5oCkBAIC0zMyw3ICszMywxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIEdQVUNvbW1hbmRCdWZmZXI7CisvKioqIHN0dWIgKi8KKy8vIGNsYXNzIEdQVUNvbW1hbmRC
dWZmZXI7CitjbGFzcyBHUFVEcmF3YWJsZTsKK2NsYXNzIEdQVVJlbmRlckNvbW1hbmRFbmNvZGVy
OworY2xhc3MgR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I7CitjbGFzcyBHUFVDb21tYW5kQnVmZmVy
IDogcHVibGljIFJlZkNvdW50ZWQ8R1BVQ29tbWFuZEJ1ZmZlcj4geworcHVibGljOgorICAgIEdQ
VVJlbmRlckNvbW1hbmRFbmNvZGVyKiBjcmVhdGVSZW5kZXJDb21tYW5kRW5jb2RlcihHUFVSZW5k
ZXJQYXNzRGVzY3JpcHRvciopIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2b2lkIGNvbW1pdCgp
IHsgfQorICAgIHZvaWQgcHJlc2VudERyYXdhYmxlKEdQVURyYXdhYmxlKikgeyB9Cit9OworLyoq
KiBlbmQgc3R1YiAqLwogY2xhc3MgV2ViR1BVQ29tbWFuZFF1ZXVlOwogY2xhc3MgV2ViR1BVRHJh
d2FibGU7CiBjbGFzcyBXZWJHUFVGdW5jdGlvbjsKQEAgLTUwLDExICs2MSwxMSBAQCBwdWJsaWM6
CiAKICAgICBSZWZQdHI8V2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI+IGNyZWF0ZVJlbmRlckNv
bW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3IoV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3ImKTsK
IAotICAgIE1ldGFsQ29tbWFuZEJ1ZmZlciogY29tbWFuZEJ1ZmZlcigpIHsgcmV0dXJuIG1fY29t
bWFuZEJ1ZmZlci5nZXQoKTsgfQorICAgIEdQVUNvbW1hbmRCdWZmZXIqIGNvbW1hbmRCdWZmZXIo
KSB7IHJldHVybiBtX2NvbW1hbmRCdWZmZXIuZ2V0KCk7IH0KIAogcHJpdmF0ZToKICAgICBXZWJH
UFVDb21tYW5kQnVmZmVyKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBXZWJHUFVDb21tYW5kUXVl
dWUqKTsKLSAgICBSZWZQdHI8TWV0YWxDb21tYW5kQnVmZmVyPiBtX2NvbW1hbmRCdWZmZXI7Cisg
ICAgUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+IG1fY29tbWFuZEJ1ZmZlcjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVUNvbW1hbmRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVDb21tYW5kUXVldWUuY3BwCmluZGV4IGNkNDQyMWE0Mjg1Li5mZDYwNjJiNjUyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQ29tbWFuZFF1ZXVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kUXVldWUuY3BwCkBA
IC0yOCw3ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCisvKioqCiAjaW5jbHVkZSAi
R1BVQ29tbWFuZFF1ZXVlLmgiCisqLwogI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRCdWZmZXIuaCIK
ICNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRRdWV1ZS5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVQ29tbWFuZFF1ZXVlLmgKaW5kZXggY2FjNjZhZDAxYWUuLjBj
OTNiMWNiMmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVD
b21tYW5kUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21t
YW5kUXVldWUuaApAQCAtMzMsNyArMzMsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBHUFVDb21tYW5kUXVldWU7CisvKioqIHN0dWIgKi8KKy8vIGNsYXNzIEdQVUNvbW1hbmRR
dWV1ZTsKK2NsYXNzIEdQVUNvbW1hbmRCdWZmZXI7CitjbGFzcyBHUFVDb21tYW5kUXVldWUgOiBw
dWJsaWMgUmVmQ291bnRlZDxHUFVDb21tYW5kUXVldWU+IHsKK3B1YmxpYzoKKyAgICBHUFVDb21t
YW5kQnVmZmVyKiBjcmVhdGVDb21tYW5kQnVmZmVyKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAg
IFN0cmluZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KKyAgICB2b2lk
IHNldExhYmVsKGNvbnN0IFN0cmluZyYpIHsgfQorfTsKKy8qKiogZW5kIHN0dWIgKi8KIGNsYXNz
IFdlYkdQVUNvbW1hbmRCdWZmZXI7CiAKIGNsYXNzIFdlYkdQVUNvbW1hbmRRdWV1ZSA6IHB1Ymxp
YyBXZWJHUFVPYmplY3QgewpAQCAtNDYsMTIgKzU1LDEyIEBAIHB1YmxpYzoKIAogICAgIFJlZlB0
cjxXZWJHUFVDb21tYW5kQnVmZmVyPiBjcmVhdGVDb21tYW5kQnVmZmVyKCk7CiAKLSAgICBNZXRh
bENvbW1hbmRRdWV1ZSogY29tbWFuZFF1ZXVlKCkgeyByZXR1cm4gbV9jb21tYW5kUXVldWUuZ2V0
KCk7IH0KKyAgICBHUFVDb21tYW5kUXVldWUqIGNvbW1hbmRRdWV1ZSgpIHsgcmV0dXJuIG1fY29t
bWFuZFF1ZXVlLmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgV2ViR1BVQ29tbWFuZFF1ZXVlKFdl
YkdQVVJlbmRlcmluZ0NvbnRleHQqKTsKIAotICAgIFJlZlB0cjxNZXRhbENvbW1hbmRRdWV1ZT4g
bV9jb21tYW5kUXVldWU7CisgICAgUmVmUHRyPEdQVUNvbW1hbmRRdWV1ZT4gbV9jb21tYW5kUXVl
dWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwCmlu
ZGV4IDZmOGM5YTA5YzhkLi45MTM3MzI3OWEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAKQEAg
LTI4LDcgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAKKy8qKioKICNpbmNsdWRlICJH
UFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgiCisgKi8KICNpbmNsdWRlICJXZWJHUFVSZW5kZXJp
bmdDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQxLDcgKzQzLDcgQEAgUmVm
PFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3I+IFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0
b3I6OmNyZWF0ZSgpCiBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpXZWJHUFVEZXB0aFN0
ZW5jaWxEZXNjcmlwdG9yKCkKICAgICA6IFdlYkdQVU9iamVjdCgpCiB7Ci0gICAgbV9kZXB0aFN0
ZW5jaWxEZXNjcmlwdG9yID0gTWV0YWxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpjcmVhdGUoKTsK
KyAgICBtX2RlcHRoU3RlbmNpbERlc2NyaXB0b3IgPSBHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9y
OjpjcmVhdGUoKTsKIH0KIAogV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6fldlYkdQVURl
cHRoU3RlbmNpbERlc2NyaXB0b3IoKQpAQCAtODgsMTEgKzkwLDExIEBAIGF1dG8gV2ViR1BVRGVw
dGhTdGVuY2lsRGVzY3JpcHRvcjo6ZGVwdGhDb21wYXJlRnVuY3Rpb24oKSBjb25zdCAtPiBXZWJH
UFVDb21wYXJlCiB2b2lkIFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3I6OnNldERlcHRoQ29t
cGFyZUZ1bmN0aW9uKENvbXBhcmVGdW5jdGlvbiBuZXdEZXB0aENvbXBhcmVGdW5jdGlvbikKIHsK
ICAgICBtX2RlcHRoQ29tcGFyZUZ1bmN0aW9uID0gbmV3RGVwdGhDb21wYXJlRnVuY3Rpb247Ci0g
ICAgbV9kZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLT5zZXREZXB0aENvbXBhcmVGdW5jdGlvbih0b01l
dGFsQ29tcGFyZUZ1bmN0aW9uKG1fZGVwdGhDb21wYXJlRnVuY3Rpb24pKTsKKyAgICBtX2RlcHRo
U3RlbmNpbERlc2NyaXB0b3ItPnNldERlcHRoQ29tcGFyZUZ1bmN0aW9uKHRvR1BVQ29tcGFyZUZ1
bmN0aW9uKG1fZGVwdGhDb21wYXJlRnVuY3Rpb24pKTsKIAogLy8gICAgaWYgKE9wdGlvbmFsPFdl
YkdQVUNvbXBhcmVGdW5jdGlvbj4gY29tcGFyZUZ1bmN0aW9uID0gdG9XZWJHUFVDb21wYXJlRnVu
Y3Rpb24obmV3RGVwdGhDb21wYXJlRnVuY3Rpb24pKSB7CiAvLyAgICAgICAgbV9kZXB0aENvbXBh
cmVGdW5jdGlvbiA9IGNvbXBhcmVGdW5jdGlvbi52YWx1ZSgpOwotLy8gICAgICAgIG1fZGVwdGhT
dGVuY2lsRGVzY3JpcHRvci0+c2V0RGVwdGhDb21wYXJlRnVuY3Rpb24odG9NZXRhbENvbXBhcmVG
dW5jdGlvbihtX2RlcHRoQ29tcGFyZUZ1bmN0aW9uKSk7CisvLyAgICAgICAgbV9kZXB0aFN0ZW5j
aWxEZXNjcmlwdG9yLT5zZXREZXB0aENvbXBhcmVGdW5jdGlvbih0b0dQVUNvbXBhcmVGdW5jdGlv
bihtX2RlcHRoQ29tcGFyZUZ1bmN0aW9uKSk7CiAvLyAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3Iu
aAppbmRleCBiYjRkMmIzM2ZlMy4uZmIyOGI0ZDNiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgKQEAg
LTM0LDcgKzM0LDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR1BVRGVwdGhT
dGVuY2lsRGVzY3JpcHRvcjsKKy8qKiogc3R1YiAqLworLy8gY2xhc3MgR1BVRGVwdGhTdGVuY2ls
RGVzY3JpcHRvcjsKK2NsYXNzIEdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IgOiBwdWJsaWMgUmVm
Q291bnRlZDxHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yPiB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZlB0cjxHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yPiBjcmVhdGUoKSB7IHJldHVybiBudWxs
cHRyOyB9CisgICAgU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsg
fQorICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgU3RyaW5nJikgeyB9CisgICAgYm9vbCBkZXB0aFdy
aXRlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBzZXREZXB0aFdy
aXRlRW5hYmxlZChib29sKSB7IH0KKyAgICB2b2lkIHNldERlcHRoQ29tcGFyZUZ1bmN0aW9uKEdQ
VUNvbXBhcmVGdW5jdGlvbikgeyB9Cit9OworLyoqKiBlbmQgc3R1YiAqLwogCiBjbGFzcyBXZWJH
UFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yIDogcHVibGljIFdlYkdQVU9iamVjdCB7CiBwdWJsaWM6
CkBAIC01MSwxMyArNjIsMTMgQEAgcHVibGljOgogICAgIENvbXBhcmVGdW5jdGlvbiBkZXB0aENv
bXBhcmVGdW5jdGlvbigpIGNvbnN0OwogICAgIHZvaWQgc2V0RGVwdGhDb21wYXJlRnVuY3Rpb24o
Q29tcGFyZUZ1bmN0aW9uKTsKIAotICAgIE1ldGFsRGVwdGhTdGVuY2lsRGVzY3JpcHRvciogZGVw
dGhTdGVuY2lsRGVzY3JpcHRvcigpIHsgcmV0dXJuIG1fZGVwdGhTdGVuY2lsRGVzY3JpcHRvci5n
ZXQoKTsgfQorICAgIEdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IqIGRlcHRoU3RlbmNpbERlc2Ny
aXB0b3IoKSB7IHJldHVybiBtX2RlcHRoU3RlbmNpbERlc2NyaXB0b3IuZ2V0KCk7IH0KIAogcHJp
dmF0ZToKICAgICBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCk7CiAKICAgICBXZWJHUFVD
b21wYXJlRnVuY3Rpb24gbV9kZXB0aENvbXBhcmVGdW5jdGlvbjsKLSAgICBSZWZQdHI8TWV0YWxE
ZXB0aFN0ZW5jaWxEZXNjcmlwdG9yPiBtX2RlcHRoU3RlbmNpbERlc2NyaXB0b3I7CisgICAgUmVm
UHRyPEdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3I+IG1fZGVwdGhTdGVuY2lsRGVzY3JpcHRvcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcAppbmRleCBhMWI2NjUzZTdk
Ny4uMDQ4Y2VkN2NlNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAKQEAgLTI4LDcgKzI4LDkgQEAKIAogI2lmIEVO
QUJMRShXRUJHUFUpCiAKKy8qKioKICNpbmNsdWRlICJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oIgor
ICovCiAjaW5jbHVkZSAiV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oIgogI2luY2x1ZGUg
IldlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKIApAQCAtNDQsNyArNDYsNyBAQCBXZWJHUFVEZXB0
aFN0ZW5jaWxTdGF0ZTo6V2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUoV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dCogY29udGV4dAogewogICAgIGlmICghY29udGV4dCB8fCAhZGVzY3JpcHRvcikKICAgICAg
ICAgcmV0dXJuOwotICAgIG1fZGVwdGhTdGVuY2lsU3RhdGUgPSBNZXRhbERlcHRoU3RlbmNpbFN0
YXRlOjpjcmVhdGUoY29udGV4dC0+ZGV2aWNlKCkuZ2V0KCksIGRlc2NyaXB0b3ItPmRlcHRoU3Rl
bmNpbERlc2NyaXB0b3IoKSk7CisgICAgbV9kZXB0aFN0ZW5jaWxTdGF0ZSA9IEdQVURlcHRoU3Rl
bmNpbFN0YXRlOjpjcmVhdGUoY29udGV4dC0+ZGV2aWNlKCkuZ2V0KCksIGRlc2NyaXB0b3ItPmRl
cHRoU3RlbmNpbERlc2NyaXB0b3IoKSk7CiB9CiAKIFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlOjp+
V2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmgKaW5kZXggY2JjMzdhM2Y3MTYuLjE5N2Nh
MzIyYTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0
aFN0ZW5jaWxTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURl
cHRoU3RlbmNpbFN0YXRlLmgKQEAgLTMzLDcgKzMzLDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgR1BVRGVwdGhTdGVuY2lsU3RhdGU7CisvKioqIHN0dWIgKi8KKy8vIGNsYXNz
IEdQVURlcHRoU3RlbmNpbFN0YXRlOworY2xhc3MgR1BVRGV2aWNlOworY2xhc3MgR1BVRGVwdGhT
dGVuY2lsRGVzY3JpcHRvcjsKK2NsYXNzIEdQVURlcHRoU3RlbmNpbFN0YXRlIDogcHVibGljIFJl
ZkNvdW50ZWQ8R1BVRGVwdGhTdGVuY2lsU3RhdGU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
UHRyPEdQVURlcHRoU3RlbmNpbFN0YXRlPiBjcmVhdGUoR1BVRGV2aWNlKiwgR1BVRGVwdGhTdGVu
Y2lsRGVzY3JpcHRvciopIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBTdHJpbmcgbGFiZWwoKSBj
b25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CisgICAgdm9pZCBzZXRMYWJlbChjb25zdCBT
dHJpbmcmKSB7IH0KK307CisvKioqIGVuZCBzdHViICovCiBjbGFzcyBXZWJHUFVEZXB0aFN0ZW5j
aWxEZXNjcmlwdG9yOwogCiBjbGFzcyBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZSA6IHB1YmxpYyBX
ZWJHUFVPYmplY3QgewpAQCAtNDQsMTIgKzU0LDEyIEBAIHB1YmxpYzoKICAgICBTdHJpbmcgbGFi
ZWwoKSBjb25zdDsKICAgICB2b2lkIHNldExhYmVsKGNvbnN0IFN0cmluZyYpOwogCi0gICAgTWV0
YWxEZXB0aFN0ZW5jaWxTdGF0ZSogZGVwdGhTdGVuY2lsU3RhdGUoKSB7IHJldHVybiBtX2RlcHRo
U3RlbmNpbFN0YXRlLmdldCgpOyB9CisgICAgR1BVRGVwdGhTdGVuY2lsU3RhdGUqIGRlcHRoU3Rl
bmNpbFN0YXRlKCkgeyByZXR1cm4gbV9kZXB0aFN0ZW5jaWxTdGF0ZS5nZXQoKTsgfQogCiBwcml2
YXRlOgogICAgIFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQq
LCBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKik7CiAKLSAgICBSZWZQdHI8TWV0YWxEZXB0
aFN0ZW5jaWxTdGF0ZT4gbV9kZXB0aFN0ZW5jaWxTdGF0ZTsKKyAgICBSZWZQdHI8R1BVRGVwdGhT
dGVuY2lsU3RhdGU+IG1fZGVwdGhTdGVuY2lsU3RhdGU7CiB9OwogICAgIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
RHJhd2FibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRHJhd2FibGUu
Y3BwCmluZGV4IGRmNTY4NmFiZDA1Li44ZjJhYWM2YmJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRHJhd2FibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdQVURyYXdhYmxlLmNwcApAQCAtMjgsNyArMjgsOSBAQAogCiAjaWYg
RU5BQkxFKFdFQkdQVSkKIAorLyoqKgogI2luY2x1ZGUgIkdQVURyYXdhYmxlLmgiCisgKi8KICNp
bmNsdWRlICJHUFVUZXh0dXJlLmgiCiAjaW5jbHVkZSAiV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5o
IgogI2luY2x1ZGUgIldlYkdQVVRleHR1cmUuaCIKQEAgLTQ3LDcgKzQ5LDcgQEAgV2ViR1BVRHJh
d2FibGU6OldlYkdQVURyYXdhYmxlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCiAg
ICAgaWYgKCFtX2RyYXdhYmxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8TWV0YWxU
ZXh0dXJlPiBkcmF3YWJsZVRleHR1cmUgPSBNZXRhbFRleHR1cmU6OmNyZWF0ZUZyb21FeGlzdGlu
Z1RleHR1cmUobV9kcmF3YWJsZS0+dGV4dHVyZSgpKTsKKyAgICBSZWZQdHI8R1BVVGV4dHVyZT4g
ZHJhd2FibGVUZXh0dXJlID0gR1BVVGV4dHVyZTo6Y3JlYXRlRnJvbUV4aXN0aW5nVGV4dHVyZSht
X2RyYXdhYmxlLT50ZXh0dXJlKCkpOwogICAgIG1fdGV4dHVyZSA9IFdlYkdQVVRleHR1cmU6OmNy
ZWF0ZUZyb21EcmF3YWJsZVRleHR1cmUoY29udGV4dCwgZHJhd2FibGVUZXh0dXJlKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRHJhd2FibGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURyYXdhYmxlLmgKaW5kZXggYWU2ZmIw
MTRhMDYuLmNkZDE5MmMwYTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVEcmF3YWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VURyYXdhYmxlLmgKQEAgLTMxLDcgKzMxLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgR1BVRHJhd2FibGU7CisvKioqIHN0dWIgKi8KKy8vIGNsYXNzIEdQVURyYXdhYmxlOwor
Y2xhc3MgR1BVRHJhd2FibGUgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVEcmF3YWJsZT4geworcHVi
bGljOgorICAgIEdQVVRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBudWxscHRyOyB9Cit9Owor
LyoqKiBlbmQgc3R1YiAqLwogY2xhc3MgV2ViR1BVVGV4dHVyZTsKIAogY2xhc3MgV2ViR1BVRHJh
d2FibGUgOiBwdWJsaWMgV2ViR1BVT2JqZWN0IHsKQEAgLTQxLDExICs0NywxMSBAQCBwdWJsaWM6
CiAKICAgICBXZWJHUFVUZXh0dXJlKiB0ZXh0dXJlKCk7CiAKLSAgICBNZXRhbERyYXdhYmxlKiBk
cmF3YWJsZSgpIHsgcmV0dXJuIG1fZHJhd2FibGUuZ2V0KCk7IH0KKyAgICBHUFVEcmF3YWJsZSog
ZHJhd2FibGUoKSB7IHJldHVybiBtX2RyYXdhYmxlLmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAg
V2ViR1BVRHJhd2FibGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCopOwotICAgIFJlZlB0cjxNZXRh
bERyYXdhYmxlPiBtX2RyYXdhYmxlOworICAgIFJlZlB0cjxHUFVEcmF3YWJsZT4gbV9kcmF3YWJs
ZTsKICAgICBSZWZQdHI8V2ViR1BVVGV4dHVyZT4gbV90ZXh0dXJlOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRW51bXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRW51bXMuY3BwCmluZGV4IGExYmE2NTM3NjhkLi41YjA0
OTI5MWRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRW51
bXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUVudW1zLmNwcApA
QCAtMjgsNyArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFdFQkdQVSkKIAorLyoqKgogI2luY2x1ZGUg
IkdQVUVudW1zLmgiCisgKi8KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03OCwyNyArODAs
MjcgQEAgU3RyaW5nIHdlYjNEQ29tcGFyZUZ1bmN0aW9uTmFtZShjb25zdCBXZWJHUFVDb21wYXJl
RnVuY3Rpb24gdmFsdWUpCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLU1ldGFsQ29t
cGFyZUZ1bmN0aW9uIHRvTWV0YWxDb21wYXJlRnVuY3Rpb24oY29uc3QgV2ViR1BVQ29tcGFyZUZ1
bmN0aW9uIHZhbHVlKQorR1BVQ29tcGFyZUZ1bmN0aW9uIHRvR1BVQ29tcGFyZUZ1bmN0aW9uKGNv
bnN0IFdlYkdQVUNvbXBhcmVGdW5jdGlvbiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gV2Vi
R1BVQ29tcGFyZUZ1bmN0aW9uOjpOZXZlcikKLSAgICAgICAgcmV0dXJuIE1ldGFsQ29tcGFyZUZ1
bmN0aW9uOjpOZXZlcjsKKyAgICAgICAgcmV0dXJuIEdQVUNvbXBhcmVGdW5jdGlvbjo6TmV2ZXI7
CiAgICAgaWYgKHZhbHVlID09IFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6TGVzcykKLSAgICAgICAg
cmV0dXJuIE1ldGFsQ29tcGFyZUZ1bmN0aW9uOjpMZXNzOworICAgICAgICByZXR1cm4gR1BVQ29t
cGFyZUZ1bmN0aW9uOjpMZXNzOwogICAgIGlmICh2YWx1ZSA9PSBXZWJHUFVDb21wYXJlRnVuY3Rp
b246OkVxdWFsKQotICAgICAgICByZXR1cm4gTWV0YWxDb21wYXJlRnVuY3Rpb246OkVxdWFsOwor
ICAgICAgICByZXR1cm4gR1BVQ29tcGFyZUZ1bmN0aW9uOjpFcXVhbDsKICAgICBpZiAodmFsdWUg
PT0gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpMZXNzZXF1YWwpCi0gICAgICAgIHJldHVybiBNZXRh
bENvbXBhcmVGdW5jdGlvbjo6TGVzc0VxdWFsOworICAgICAgICByZXR1cm4gR1BVQ29tcGFyZUZ1
bmN0aW9uOjpMZXNzRXF1YWw7CiAgICAgaWYgKHZhbHVlID09IFdlYkdQVUNvbXBhcmVGdW5jdGlv
bjo6R3JlYXRlcikKLSAgICAgICAgcmV0dXJuIE1ldGFsQ29tcGFyZUZ1bmN0aW9uOjpHcmVhdGVy
OworICAgICAgICByZXR1cm4gR1BVQ29tcGFyZUZ1bmN0aW9uOjpHcmVhdGVyOwogICAgIGlmICh2
YWx1ZSA9PSBXZWJHUFVDb21wYXJlRnVuY3Rpb246Ok5vdGVxdWFsKQotICAgICAgICByZXR1cm4g
TWV0YWxDb21wYXJlRnVuY3Rpb246Ok5vdEVxdWFsOworICAgICAgICByZXR1cm4gR1BVQ29tcGFy
ZUZ1bmN0aW9uOjpOb3RFcXVhbDsKICAgICBpZiAodmFsdWUgPT0gV2ViR1BVQ29tcGFyZUZ1bmN0
aW9uOjpHcmVhdGVyZXF1YWwpCi0gICAgICAgIHJldHVybiBNZXRhbENvbXBhcmVGdW5jdGlvbjo6
R3JlYXRlckVxdWFsOworICAgICAgICByZXR1cm4gR1BVQ29tcGFyZUZ1bmN0aW9uOjpHcmVhdGVy
RXF1YWw7CiAgICAgaWYgKHZhbHVlID09IFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6QWx3YXlzKQot
ICAgICAgICByZXR1cm4gTWV0YWxDb21wYXJlRnVuY3Rpb246OkFsd2F5czsKKyAgICAgICAgcmV0
dXJuIEdQVUNvbXBhcmVGdW5jdGlvbjo6QWx3YXlzOwogICAgIAogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBNZXRhbENvbXBhcmVGdW5jdGlvbjo6TmV2ZXI7CisgICAgcmV0
dXJuIEdQVUNvbXBhcmVGdW5jdGlvbjo6TmV2ZXI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUVudW1zLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVFbnVtcy5oCmluZGV4IGNjNGU3MjBk
YzliLi44ZWU2M2QxY2RlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVRW51bXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVFbnVt
cy5oCkBAIC00Niw4ICs0NiwyMCBAQCBlbnVtIGNsYXNzIFdlYkdQVUNvbXBhcmVGdW5jdGlvbiB7
CiBzdGQ6Om9wdGlvbmFsPFdlYkdQVUNvbXBhcmVGdW5jdGlvbj4gdG9XZWJHUFVDb21wYXJlRnVu
Y3Rpb24oY29uc3QgU3RyaW5nJik7CiBTdHJpbmcgd2ViM0RDb21wYXJlRnVuY3Rpb25OYW1lKGNv
bnN0IFdlYkdQVUNvbXBhcmVGdW5jdGlvbik7CiAKLWVudW0gY2xhc3MgR1BVQ29tcGFyZUZ1bmN0
aW9uOwotTWV0YWxDb21wYXJlRnVuY3Rpb24gdG9NZXRhbENvbXBhcmVGdW5jdGlvbihjb25zdCBX
ZWJHUFVDb21wYXJlRnVuY3Rpb24pOworLyoqKiBzdHViICovCisvLyBlbnVtIGNsYXNzIEdQVUNv
bXBhcmVGdW5jdGlvbjsKK2VudW0gY2xhc3MgR1BVQ29tcGFyZUZ1bmN0aW9uIHsKKyAgICBOZXZl
ciwKKyAgICBMZXNzLAorICAgIEVxdWFsLAorICAgIExlc3NFcXVhbCwKKyAgICBHcmVhdGVyLAor
ICAgIE5vdEVxdWFsLAorICAgIEdyZWF0ZXJFcXVhbCwKKyAgICBBbHdheXMKK307CisvKioqIGVu
ZCBzdHViICovCitHUFVDb21wYXJlRnVuY3Rpb24gdG9HUFVDb21wYXJlRnVuY3Rpb24oY29uc3Qg
V2ViR1BVQ29tcGFyZUZ1bmN0aW9uKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVGdW5jdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24uaAppbmRleCAwYTk1MWE5MzA1
Yy4uOWYxN2Q0ODRhYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdQVUZ1bmN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRnVu
Y3Rpb24uaApAQCAtNDEsMTIgKzQxLDEyIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBuYW1lKCkg
Y29uc3Q7CiAKLSAgICBNZXRhbEZ1bmN0aW9uKiBmdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
ZnVuY3Rpb24uZ2V0KCk7IH0KKyAgICBHUFVGdW5jdGlvbiogZnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX2Z1bmN0aW9uLmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgV2ViR1BVRnVuY3Rpb24o
V2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIFdlYkdQVUxpYnJhcnkqLCBjb25zdCBTdHJpbmcmIG5h
bWUpOwogCi0gICAgUmVmUHRyPE1ldGFsRnVuY3Rpb24+IG1fZnVuY3Rpb247CisgICAgUmVmUHRy
PEdQVUZ1bmN0aW9uPiBtX2Z1bmN0aW9uOwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUxpYnJhcnku
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUxpYnJhcnkuaAppbmRleCA5N2Yx
YTRhYTQ4Mi4uOWUzYzNmMjcyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVUxpYnJhcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVMaWJyYXJ5LmgKQEAgLTQ5LDEzICs0OSwxMyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8V2Vi
R1BVRnVuY3Rpb24+IGZ1bmN0aW9uV2l0aE5hbWUoY29uc3QgU3RyaW5nJik7CiAKLSAgICBNZXRh
bExpYnJhcnkqIGxpYnJhcnkoKSB7IHJldHVybiBtX2xpYnJhcnkuZ2V0KCk7IH0KKyAgICBHUFVM
aWJyYXJ5KiBsaWJyYXJ5KCkgeyByZXR1cm4gbV9saWJyYXJ5LmdldCgpOyB9CiAKIHByaXZhdGU6
CiAgICAgV2ViR1BVTGlicmFyeShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgY29uc3QgU3RyaW5n
JiBzb3VyY2VDb2RlKTsKIAogICAgIFN0cmluZyBtX3NvdXJjZUNvZGU7Ci0gICAgUmVmUHRyPE1l
dGFsTGlicmFyeT4gbV9saWJyYXJ5OworICAgIFJlZlB0cjxHUFVMaWJyYXJ5PiBtX2xpYnJhcnk7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHUFVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVT2JqZWN0LmNwcAppbmRleCBkMWE3Mzc0Y2VhNy4uYjE3MmJlYzA1ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVU9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVT2JqZWN0LmNwcApAQCAtNDEsNyArNDEs
NyBAQCBXZWJHUFVPYmplY3Q6On5XZWJHUFVPYmplY3QoKQogewogfQogCi12b2lkIFdlYkdQVU9i
amVjdDo6ZGVsZXRlT2JqZWN0KE1ldGFsRGV2aWNlKikKK3ZvaWQgV2ViR1BVT2JqZWN0OjpkZWxl
dGVPYmplY3QoR1BVRGV2aWNlKikKIHsKICAgICBtX2RlbGV0ZWQgPSB0cnVlOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVT2JqZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVPYmplY3QuaAppbmRleCAxNTlmZWVkNWY4Mi4uZGUy
YTczMjAxYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVU9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVU9iamVjdC5oCkBA
IC0zOSw3ICszOSw3IEBAIGNsYXNzIFdlYkdQVU9iamVjdCA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YkdQVU9iamVjdD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYkdQVU9iamVjdCgpOwogCi0g
ICAgdm9pZCBkZWxldGVPYmplY3QoTWV0YWxEZXZpY2UqKTsKKyAgICB2b2lkIGRlbGV0ZU9iamVj
dChHUFVEZXZpY2UqKTsKICAgICBib29sIGlzRGVsZXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVs
ZXRlZDsgfQogCiAgICAgV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCgpIHsgcmV0dXJu
IG1fY29udGV4dC5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwCmluZGV4IDVkMzg0Njc2MWNiLi5j
OTg5YmY1YjIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
UmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcApAQCAtMjgsOSArMjgsMTEgQEAKIAogI2lm
IEVOQUJMRShXRUJHUFUpCiAKKy8qKioKICNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgiCiAj
aW5jbHVkZSAiR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaCIKICNpbmNsdWRlICJHUFVSZW5kZXJQ
YXNzRGVzY3JpcHRvci5oIgorKi8KICNpbmNsdWRlICJXZWJHUFVCdWZmZXIuaCIKICNpbmNsdWRl
ICJXZWJHUFVDb21tYW5kQnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR1BVRGVwdGhTdGVuY2lsU3Rh
dGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRl
ckNvbW1hbmRFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5k
ZXJDb21tYW5kRW5jb2Rlci5oCmluZGV4IDJjYWVkZTc3MzIyLi5lNjIyNWJlZWQ4MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29k
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJDb21tYW5k
RW5jb2Rlci5oCkBAIC0zMyw3ICszMywyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIEdQVVJlbmRlckNvbW1hbmRFbmNvZGVyOworLyoqKiBzdHViICovCisvLyBjbGFzcyBHUFVS
ZW5kZXJDb21tYW5kRW5jb2RlcjsKK2NsYXNzIEdQVUJ1ZmZlcjsKK2NsYXNzIEdQVVJlbmRlclBp
cGVsaW5lU3RhdGU7CitjbGFzcyBHUFVEZXB0aFN0ZW5jaWxTdGF0ZTsKK2NsYXNzIEdQVVJlbmRl
ckNvbW1hbmRFbmNvZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVUmVuZGVyQ29tbWFuZEVuY29k
ZXI+IHsKK3B1YmxpYzoKKyAgICB2b2lkIHNldFJlbmRlclBpcGVsaW5lU3RhdGUoR1BVUmVuZGVy
UGlwZWxpbmVTdGF0ZSopIHsgfQorICAgIHZvaWQgc2V0RGVwdGhTdGVuY2lsU3RhdGUoR1BVRGVw
dGhTdGVuY2lsU3RhdGUqKSB7IH0KKyAgICB2b2lkIHNldFZlcnRleEJ1ZmZlcihHUFVCdWZmZXIq
LCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCkgeyB9CisgICAgdm9pZCBzZXRGcmFnbWVudEJ1
ZmZlcihHUFVCdWZmZXIqLCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCkgeyB9CisgICAgdm9p
ZCBkcmF3UHJpbWl0aXZlcyh1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50
KSB7IH0KKyAgICB2b2lkIGVuZEVuY29kaW5nKCkgeyB9Cit9OworLyoqKiBlbmQgc3R1YiAqLwog
Y2xhc3MgV2ViR1BVQ29tbWFuZEJ1ZmZlcjsKIGNsYXNzIFdlYkdQVURlcHRoU3RlbmNpbFN0YXRl
OwogY2xhc3MgV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I7CkBAIC01MywxMSArNjcsMTEgQEAg
cHVibGljOgogICAgIHZvaWQgZHJhd1ByaW1pdGl2ZXModW5zaWduZWQgaW50IHR5cGUsIHVuc2ln
bmVkIGludCBzdGFydCwgdW5zaWduZWQgaW50IGNvdW50KTsKICAgICB2b2lkIGVuZEVuY29kaW5n
KCk7CiAKLSAgICBNZXRhbFJlbmRlckNvbW1hbmRFbmNvZGVyKiByZW5kZXJDb21tYW5kRW5jb2Rl
cigpIHsgcmV0dXJuIG1fcmVuZGVyQ29tbWFuZEVuY29kZXIuZ2V0KCk7IH0KKyAgICBHUFVSZW5k
ZXJDb21tYW5kRW5jb2RlciogcmVuZGVyQ29tbWFuZEVuY29kZXIoKSB7IHJldHVybiBtX3JlbmRl
ckNvbW1hbmRFbmNvZGVyLmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgV2ViR1BVUmVuZGVyQ29t
bWFuZEVuY29kZXIoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIFdlYkdQVUNvbW1hbmRCdWZmZXIq
LCBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciopOwotICAgIFJlZlB0cjxNZXRhbFJlbmRlckNv
bW1hbmRFbmNvZGVyPiBtX3JlbmRlckNvbW1hbmRFbmNvZGVyOworICAgIFJlZlB0cjxHUFVSZW5k
ZXJDb21tYW5kRW5jb2Rlcj4gbV9yZW5kZXJDb21tYW5kRW5jb2RlcjsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCmluZGV4
IGFlNGVmZDQ4ZTNhLi40YmI1MDkyMmMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3IuY3BwCkBAIC0yOCwxNCArMjgsMTYgQEAKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAKKy8q
KioKICNpbmNsdWRlICJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCIKKyAqLwog
I2luY2x1ZGUgIkdQVVRleHR1cmUuaCIKICNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSAiV2ViR1BVVGV4dHVyZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6V2ViR1BVUmVuZGVyUGFzc0F0
dGFjaG1lbnREZXNjcmlwdG9yKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIE1ldGFs
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorV2ViR1BVUmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3IoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgR1BVUmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogICAgIDogV2ViR1BVT2JqZWN0KGNvbnRleHQp
CiAgICAgLCBtX3JlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcihkZXNjcmlwdG9yKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0F0
dGFjaG1lbnREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVS
ZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaAppbmRleCBmZTBkZjVmZDk4My4uMjBmNWEw
MTNkMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oCkBAIC0zMyw3ICszMywx
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdQVVJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvcjsKKy8qKiogc3R1YiAqLworLy8gY2xhc3MgR1BVUmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yOworY2xhc3MgR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
IDogcHVibGljIFJlZkNvdW50ZWQ8R1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yPiB7
CitwdWJsaWM6CisgICAgdW5zaWduZWQgbG9uZyBsb2FkQWN0aW9uKCkgY29uc3QgeyByZXR1cm4g
MDsgfQorICAgIHZvaWQgc2V0TG9hZEFjdGlvbih1bnNpZ25lZCBsb25nKSB7IH0KKyAgICB1bnNp
Z25lZCBsb25nIHN0b3JlQWN0aW9uKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZvaWQgc2V0
U3RvcmVBY3Rpb24odW5zaWduZWQgbG9uZykgeyB9CisgICAgdm9pZCBzZXRUZXh0dXJlKEdQVVRl
eHR1cmUqKSB7IH0KK307CisvKioqIGVuZCBzdHViICovCiBjbGFzcyBXZWJHUFVUZXh0dXJlOwog
CiBjbGFzcyBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgV2Vi
R1BVT2JqZWN0IHsKQEAgLTQ5LDE4ICs1OSwxOCBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdlYkdQ
VVRleHR1cmU+IHRleHR1cmUoKSBjb25zdDsKICAgICB2b2lkIHNldFRleHR1cmUoUmVmUHRyPFdl
YkdQVVRleHR1cmU+KTsKIAotICAgIE1ldGFsUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
KiByZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5nZXQoKTsgfQorICAgIEdQVVJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvciogcmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9yZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuZ2V0KCk7IH0KIAogICAg
IHZpcnR1YWwgYm9vbCBpc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogCiBwcm90ZWN0ZWQ6CiAKLSAgICBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVu
dERlc2NyaXB0b3IoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIE1ldGFsUmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yKik7CisgICAgV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3IqKTsKIAogCiBwcml2YXRlOgogCi0gICAgUmVmUHRyPE1ldGFsUmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yPiBtX3JlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjsKKyAgICBS
ZWZQdHI8R1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yPiBtX3JlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvcjsKICAgICBSZWZQdHI8V2ViR1BVVGV4dHVyZT4gbV90ZXh0dXJlOwog
fTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcApp
bmRleCAxMjQ0YmIzZDg4YS4uNDUzZmIzMWRmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvci5jcHAKQEAgLTI4LDE5ICsyOCwyMSBAQAogCiAjaWYgRU5BQkxF
KFdFQkdQVSkKIAorLyoqKgogI2luY2x1ZGUgIkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmgiCisgKi8KICNpbmNsdWRlICJHUFVUZXh0dXJlLmgiCiAjaW5jbHVkZSAiV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkdQVVRleHR1cmUuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3I+IFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpjcmVh
dGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgTWV0YWxSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvciogZGVzY3JpcHRvcikKK1JlZjxXZWJHUFVSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvcj4gV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3I6OmNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBHUFVSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cihjb250ZXh0LCBkZXNjcmlwdG9yKSk7CiB9CiAKLVdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yOjpXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cihXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBNZXRhbFJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3I6OldlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIEdQVVJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogICAgIDogV2ViR1BVUmVuZGVyUGFzc0F0
dGFjaG1lbnREZXNjcmlwdG9yKGNvbnRleHQsIGRlc2NyaXB0b3IpCiB7CiB9CkBAIC00OSwxNCAr
NTEsMTQgQEAgV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6On5XZWJH
UFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3IKIHsKIH0KIAotTWV0YWxSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3I6OnJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCkgY29uc3QK
K0dQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBXZWJHUFVSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6cmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IoKSBjb25zdAogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxNZXRhbFJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKj4ocmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvcio+KHJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcigpKTsKIH0KIAogVmVj
dG9yPGZsb2F0PiBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6Y2xl
YXJDb2xvcigpIGNvbnN0CiB7Ci0gICAgTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvciogZGVzY3JpcHRvciA9IHJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
KCk7CisgICAgR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIGRlc2NyaXB0
b3IgPSByZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpOwogICAgIGlmICghZGVz
Y3JpcHRvcikgewogICAgICAgICBWZWN0b3I8ZmxvYXQ+IGJsYWNrID0geyAwLjAsIDAuMCwgMC4w
LCAxLjAgfTsKICAgICAgICAgcmV0dXJuIGJsYWNrOwpAQCAtNjYsNyArNjgsNyBAQCBWZWN0b3I8
ZmxvYXQ+IFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpjbGVhckNv
bG9yKCkgY29uc3QKIAogdm9pZCBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcjo6c2V0Q2xlYXJDb2xvcihjb25zdCBWZWN0b3I8ZmxvYXQ+JiBuZXdDbGVhckNvbG9yKQog
ewotICAgIE1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIGRlc2NyaXB0
b3IgPSByZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpOworICAgIEdQVVJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNjcmlwdG9yID0gcmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IoKTsKICAgICBpZiAoIWRlc2NyaXB0b3IpCiAgICAgICAg
IHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgKaW5k
ZXggYjMyMjY2MmZmNDEuLjlhZWIxZGIxZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yLmgKQEAgLTM0LDIyICszNCwyOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOworLyoq
KiBzdHViICovCisvLyBjbGFzcyBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cjsKK2NsYXNzIEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yIDogcHVibGlj
IEdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7CitwdWJsaWM6CisgICAgVmVjdG9y
PGZsb2F0PiBjbGVhckNvbG9yKCkgY29uc3QgeyByZXR1cm4gVmVjdG9yPGZsb2F0PigpOyB9Cisg
ICAgdm9pZCBzZXRDbGVhckNvbG9yKGNvbnN0IFZlY3RvcjxmbG9hdD4mKSB7IH0KK307CisvKioq
IGVuZCBzdHViICovCiAKIGNsYXNzIFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yIDogcHVibGljIFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IoKTsKLSAgICBzdGF0aWMgUmVmPFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yPiBjcmVhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIE1ldGFsUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBjcmVhdGUoV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dCosIEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKik7CiAKICAgICBW
ZWN0b3I8ZmxvYXQ+IGNsZWFyQ29sb3IoKSBjb25zdDsKICAgICB2b2lkIHNldENsZWFyQ29sb3Io
Y29uc3QgVmVjdG9yPGZsb2F0PiYpOwogCi0gICAgTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvciogcmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKSBjb25z
dDsKKyAgICBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogcmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKSBjb25zdDsKIAogICAgIGJvb2wgaXNDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiBw
cml2YXRlOgotICAgIFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKFdl
YkdQVVJlbmRlcmluZ0NvbnRleHQqLCBNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yKik7CisgICAgV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3Io
V2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yKik7CiAKIH07CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvci5jcHAKaW5kZXggNjJkNmYyNzUzODkuLjBhMzFjOWNkNzYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVu
ZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCkBAIC0yOCwxOSArMjgsMjEgQEAK
IAogI2lmIEVOQUJMRShXRUJHUFUpCiAKKy8qKioKICNpbmNsdWRlICJHUFVSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvci5oIgorICovCiAjaW5jbHVkZSAiR1BVVGV4dHVyZS5oIgog
I2luY2x1ZGUgIldlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJXZWJHUFVUZXh0
dXJlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFdlYkdQVVJlbmRlclBhc3NEZXB0
aEF0dGFjaG1lbnREZXNjcmlwdG9yPiBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvcjo6Y3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIE1ldGFsUmVu
ZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCitSZWY8V2ViR1BV
UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I+IFdlYkdQVVJlbmRlclBhc3NEZXB0
aEF0dGFjaG1lbnREZXNjcmlwdG9yOjpjcmVhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29u
dGV4dCwgR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqIGRlc2NyaXB0b3Ip
CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNo
bWVudERlc2NyaXB0b3IoY29udGV4dCwgZGVzY3JpcHRvcikpOwogfQogCi1XZWJHUFVSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6V2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNo
bWVudERlc2NyaXB0b3IoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgTWV0YWxSZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogZGVzY3JpcHRvcikKK1dlYkdQVVJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjpXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvcihXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBHUFVSZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogZGVzY3JpcHRvcikKICAgICA6IFdlYkdQ
VVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcihjb250ZXh0LCBkZXNjcmlwdG9yKQogewog
fQpAQCAtNTEsNyArNTMsNyBAQCBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3Jp
cHRvcjo6fldlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcgogCiBkb3VibGUgV2Vi
R1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OmNsZWFyRGVwdGgoKSBjb25z
dAogewotICAgIE1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqIGRlc2Ny
aXB0b3IgPSByZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcigpOworICAgIEdQVVJl
bmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNjcmlwdG9yID0gcmVuZGVyUGFz
c0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoKTsKICAgICBpZiAoIWRlc2NyaXB0b3IpCiAgICAg
ICAgIHJldHVybiAwOwogCkBAIC02MCwxNiArNjIsMTYgQEAgZG91YmxlIFdlYkdQVVJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjpjbGVhckRlcHRoKCkgY29uc3QKIAogdm9pZCBX
ZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0Q2xlYXJEZXB0aChk
b3VibGUgbmV3Q2xlYXJEZXB0aCkKIHsKLSAgICBNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1l
bnREZXNjcmlwdG9yKiBkZXNjcmlwdG9yID0gcmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2Ny
aXB0b3IoKTsKKyAgICBHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogZGVz
Y3JpcHRvciA9IHJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKCk7CiAgICAgaWYg
KCFkZXNjcmlwdG9yKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgZGVzY3JpcHRvci0+c2V0
Q2xlYXJEZXB0aChuZXdDbGVhckRlcHRoKTsKIH0KIAotTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvciogV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0
b3I6OnJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKCkgY29uc3QKK0dQVVJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvcjo6cmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoKSBj
b25zdAogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yKj4ocmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKCkpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
cio+KHJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcigpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgKaW5k
ZXggNzM4YWI0YzVhZjcuLjBlYWQ2ZDdhOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yLmgKQEAgLTMyLDIwICszMiwyNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOworLyoq
KiBzdHViICovCisvLyBjbGFzcyBHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
cjsKK2NsYXNzIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yIDogcHVibGlj
IEdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7CitwdWJsaWM6CisgICAgZG91Ymxl
IGNsZWFyRGVwdGgoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdm9pZCBzZXRDbGVhckRlcHRo
KGRvdWJsZSkgeyB9Cit9OworLyoqKiBlbmQgc3R1YiAqLwogCiBjbGFzcyBXZWJHUFVSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBXZWJHUFVSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3IgewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYkdQVVJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKCk7Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVSZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcj4gY3JlYXRlKFdlYkdQVVJlbmRlcmluZ0Nv
bnRleHQqLCBNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKik7CisgICAg
c3RhdGljIFJlZjxXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcj4gY3Jl
YXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvciopOwogCiAgICAgZG91YmxlIGNsZWFyRGVwdGgoKSBjb25zdDsKICAgICB2b2lk
IHNldENsZWFyRGVwdGgoZG91YmxlKTsKIAotICAgIE1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNo
bWVudERlc2NyaXB0b3IqIHJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKCkgY29u
c3Q7CisgICAgR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqIHJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgV2Vi
R1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dCosIE1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqKTsKKyAgICBX
ZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcihXZWJHUFVSZW5kZXJpbmdD
b250ZXh0KiwgR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqKTsKIAogfTsK
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRl
clBhc3NEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJl
bmRlclBhc3NEZXNjcmlwdG9yLmNwcAppbmRleCAyZjhiMjM2ZDcyYy4uNjEyNTlkYWQxYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXNj
cmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQ
YXNzRGVzY3JpcHRvci5jcHAKQEAgLTI4LDkgKzI4LDExIEBACiAKICNpZiBFTkFCTEUoV0VCR1BV
KQogCisvKioqCiAjaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IuaCIKICNpbmNsdWRlICJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5o
IgogI2luY2x1ZGUgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCisqLwogI2luY2x1ZGUgIldl
YkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiV2Vi
R1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJXZWJH
UFVSZW5kZXJpbmdDb250ZXh0LmgiCkBAIC00NSw3ICs0Nyw3IEBAIFJlZjxXZWJHUFVSZW5kZXJQ
YXNzRGVzY3JpcHRvcj4gV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I6OmNyZWF0ZSgpCiBXZWJH
UFVSZW5kZXJQYXNzRGVzY3JpcHRvcjo6V2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IoKQogICAg
IDogV2ViR1BVT2JqZWN0KCkKIHsKLSAgICBtX3JlbmRlclBhc3NEZXNjcmlwdG9yID0gTWV0YWxS
ZW5kZXJQYXNzRGVzY3JpcHRvcjo6Y3JlYXRlKCk7CisgICAgbV9yZW5kZXJQYXNzRGVzY3JpcHRv
ciA9IEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOjpjcmVhdGUoKTsKIH0KIAogV2ViR1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3I6On5XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcigpCkBAIC01OCw3ICs2
MCw3IEBAIFJlZlB0cjxXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcj4g
V2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I6OmRlCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgaWYgKCFtX2RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IpIHsKLSAgICAgICAgUmVmUHRy
PE1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I+IHBsYXRmb3JtRGVwdGhB
dHRhY2htZW50ID0gbV9yZW5kZXJQYXNzRGVzY3JpcHRvci0+ZGVwdGhBdHRhY2htZW50KCk7Cisg
ICAgICAgIFJlZlB0cjxHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcj4gcGxh
dGZvcm1EZXB0aEF0dGFjaG1lbnQgPSBtX3JlbmRlclBhc3NEZXNjcmlwdG9yLT5kZXB0aEF0dGFj
aG1lbnQoKTsKICAgICAgICAgbV9kZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yID0gV2ViR1BVUmVu
ZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OmNyZWF0ZSh0aGlzLT5jb250ZXh0KCks
IHBsYXRmb3JtRGVwdGhBdHRhY2htZW50LmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIG1fZGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvcjsKQEAgLTcwLDcgKzcyLDcgQEAgVmVjdG9yPFJlZlB0cjxX
ZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4+IFdlYkdQVVJlbmRlclBh
c3NEZXNjcmkKICAgICAgICAgcmV0dXJuIFZlY3RvcjxSZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3I+PigpOwogCiAgICAgaWYgKCFtX2NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3JzLnNpemUoKSkgewotICAgICAgICBWZWN0b3I8UmVmUHRyPE1ldGFsUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+PiBwbGF0Zm9ybUNvbG9yQXR0YWNobWVudHMg
PSBtX3JlbmRlclBhc3NEZXNjcmlwdG9yLT5jb2xvckF0dGFjaG1lbnRzKCk7CisgICAgICAgIFZl
Y3RvcjxSZWZQdHI8R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+PiBwbGF0
Zm9ybUNvbG9yQXR0YWNobWVudHMgPSBtX3JlbmRlclBhc3NEZXNjcmlwdG9yLT5jb2xvckF0dGFj
aG1lbnRzKCk7CiAgICAgICAgIGZvciAoYXV0byYgYXR0YWNobWVudCA6IHBsYXRmb3JtQ29sb3JB
dHRhY2htZW50cykKICAgICAgICAgICAgIG1fY29sb3JBdHRhY2htZW50RGVzY3JpcHRvcnMuYXBw
ZW5kKFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpjcmVhdGUodGhp
cy0+Y29udGV4dCgpLCBhdHRhY2htZW50LmdldCgpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgKaW5k
ZXggODRjMDU5MjlkYzYuLmZlOGU5MDJhMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgKQEAgLTI4LDEyICsy
OCwyNCBAQAogI2lmIEVOQUJMRShXRUJHUFUpCiAKICNpbmNsdWRlICJXZWJHUFVPYmplY3QuaCIK
Ky8qKiogZm9yIHN0dWIgKi8KKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1l
bnREZXNjcmlwdG9yLmgiCisvKioqIGVuZCBzdHViICovCiAKICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3I7CisvKioqIHN0dWIgKi8KKy8vIGNsYXNzIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOworY2xh
c3MgR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVSZW5kZXJQ
YXNzRGVzY3JpcHRvcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8R1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3I+IGNyZWF0ZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBHUFVSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogZGVwdGhBdHRhY2htZW50KCkgeyByZXR1cm4g
bnVsbHB0cjsgfQorICAgIFZlY3RvcjxSZWZQdHI8R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3I+PiBjb2xvckF0dGFjaG1lbnRzKCkgeyByZXR1cm4gVmVjdG9yPFJlZlB0cjxH
UFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4+KCk7IH0KK307CisvKioqIGVu
ZCBzdHViICovCiBjbGFzcyBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cjsKIGNsYXNzIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOwogCkBA
IC00NSw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0RlcHRo
QXR0YWNobWVudERlc2NyaXB0b3I+IGRlcHRoQXR0YWNobWVudCgpOwogICAgIFZlY3RvcjxSZWZQ
dHI8V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+PiBjb2xvckF0dGFj
aG1lbnRzKCk7CiAKLSAgICBNZXRhbFJlbmRlclBhc3NEZXNjcmlwdG9yKiByZW5kZXJQYXNzRGVz
Y3JpcHRvcigpIHsgcmV0dXJuIG1fcmVuZGVyUGFzc0Rlc2NyaXB0b3IuZ2V0KCk7IH0KKyAgICBH
UFVSZW5kZXJQYXNzRGVzY3JpcHRvciogcmVuZGVyUGFzc0Rlc2NyaXB0b3IoKSB7IHJldHVybiBt
X3JlbmRlclBhc3NEZXNjcmlwdG9yLmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgV2ViR1BVUmVu
ZGVyUGFzc0Rlc2NyaXB0b3IoKTsKQEAgLTUzLDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0
b3I8UmVmUHRyPFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4gbV9j
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yczsKICAgICBSZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3I+IG1fZGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjsKIAot
ICAgIFJlZlB0cjxNZXRhbFJlbmRlclBhc3NEZXNjcmlwdG9yPiBtX3JlbmRlclBhc3NEZXNjcmlw
dG9yOworICAgIFJlZlB0cjxHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcj4gbV9yZW5kZXJQYXNzRGVz
Y3JpcHRvcjsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcAppbmRleCAzZTA2OTMwOTIw
Mi4uNjQxNTc3ZWI5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yLmNwcApAQCAtMjgsMTcgKzI4LDE5IEBACiAKICNpZiBFTkFCTEUoV0VCR1BV
KQogCisvKioqCiAjaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yLmgiCisqLwogI2luY2x1ZGUgIldlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8V2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yPiBXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3I6OmNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBNZXRhbFJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogZGVzY3JpcHRvcikKK1JlZjxXZWJHUFVS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IFdlYkdQVVJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6Y3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRl
eHQqIGNvbnRleHQsIEdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciog
ZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoY29udGV4dCwgZGVzY3JpcHRvcikpOwogfQog
Ci1XZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OldlYkdQVVJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcihXZWJHUFVSZW5kZXJpbmdDb250
ZXh0KiBjb250ZXh0LCBNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ciogZGVzY3JpcHRvcikKK1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcjo6V2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKFdlYkdQ
VVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIEdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvciogZGVzY3JpcHRvcikKICAgICA6IFdlYkdQVU9iamVjdChjb250ZXh0KQog
ICAgICwgbV9yZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoZGVzY3JpcHRv
cikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgK
aW5kZXggM2NjZmZmZWVlMDIuLjM0YzJhZDNkNzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaApAQCAtMjksMjQgKzI5LDMyIEBACiAKICNpbmNs
dWRlICJXZWJHUFVPYmplY3QuaCIKIAorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdQ
VVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjsKKy8qKiogc3R1YiAqLwor
Ly8gY2xhc3MgR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOworY2xh
c3MgR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yIDogcHVibGljIFJl
ZkNvdW50ZWQ8R1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiB7Citw
dWJsaWM6CisgICAgdW5zaWduZWQgbG9uZyBwaXhlbEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KKyAgICB2b2lkIHNldFBpeGVsRm9ybWF0KHVuc2lnbmVkIGxvbmcpIHsgfQorfTsKKy8qKiog
ZW5kIHN0dWIgKi8KIAogY2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yIDogcHVibGljIFdlYkdQVU9iamVjdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
V2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCk7Ci0gICAgc3Rh
dGljIFJlZjxXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGNy
ZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IqKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gY3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQq
LCBHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqKTsKIAogICAgIHVu
c2lnbmVkIGxvbmcgcGl4ZWxGb3JtYXQoKSBjb25zdDsKICAgICB2b2lkIHNldFBpeGVsRm9ybWF0
KHVuc2lnbmVkIGxvbmcpOwogCi0gICAgTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IqIHJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpIHsg
cmV0dXJuIG1fcmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmdldCgpOyB9
CisgICAgR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiByZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKSB7IHJldHVybiBtX3JlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIFdl
YkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcihXZWJHUFVSZW5kZXJp
bmdDb250ZXh0KiwgTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3Iq
KTsKKyAgICBXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dCosIEdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvciopOwogCi0gICAgUmVmUHRyPE1ldGFsUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yPiBtX3JlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjsK
KyAgICBSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBt
X3JlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjsKIH07CiAgICAgCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAppbmRleCA1MWI2YWNh
ZDgyZS4uYjcyZmFlYTQ1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcApAQCAtMjksOCAr
MjksMTAgQEAKICNpZiBFTkFCTEUoV0VCR1BVKQogCiAjaW5jbHVkZSAiR1BVRnVuY3Rpb24uaCIK
Ky8qKioKICNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IuaCIKICNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKKyovCiAjaW5j
bHVkZSAiV2ViR1BVRnVuY3Rpb24uaCIKICNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250
ZXh0LmgiCkBAIC00NSw3ICs0Nyw3IEBAIFJlZjxXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3I+IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6Y3JlYXRlKCkKIFdlYkdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcjo6V2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCkKICAg
ICA6IFdlYkdQVU9iamVjdCgpCiB7Ci0gICAgbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSBN
ZXRhbFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6Y3JlYXRlKCk7CisgICAgbV9yZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IgPSBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmNyZWF0ZSgpOwog
fQogCiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6On5XZWJHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IoKQpAQCAtMTA2LDcgKzEwOCw3IEBAIFZlY3RvcjxSZWZQdHI8V2ViR1BVUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4gV2ViR1BVUmVuZGVyUGlwZWxp
CiAgICAgICAgIHJldHVybiBWZWN0b3I8UmVmUHRyPFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcj4+KCk7CiAKICAgICBpZiAoIW1fY29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvcnMuc2l6ZSgpKSB7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8TWV0YWxSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+PiBwbGF0Zm9ybUNvbG9yQXR0YWNobWVudHMg
PSBtX3JlbmRlclBpcGVsaW5lRGVzY3JpcHRvci0+Y29sb3JBdHRhY2htZW50cygpOworICAgICAg
ICBWZWN0b3I8UmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cj4+IHBsYXRmb3JtQ29sb3JBdHRhY2htZW50cyA9IG1fcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
LT5jb2xvckF0dGFjaG1lbnRzKCk7CiAgICAgICAgIGZvciAoYXV0byYgYXR0YWNobWVudCA6IHBs
YXRmb3JtQ29sb3JBdHRhY2htZW50cykKICAgICAgICAgICAgIG1fY29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvcnMuYXBwZW5kKFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcjo6Y3JlYXRlKHRoaXMtPmNvbnRleHQoKSwgYXR0YWNobWVudC5nZXQoKSkpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yLmgKaW5kZXggOTkxMGU4NTJmODcuLmVmNzY4MDAwMmI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IuaApAQCAtMjgsMTIgKzI4LDMxIEBACiAjaWYgRU5BQkxFKFdFQkdQ
VSkKIAogI2luY2x1ZGUgIldlYkdQVU9iamVjdC5oIgorLyoqKiBmb3Igc3R1YiAqLworI2luY2x1
ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgorLyoq
KiBlbmQgc3R1YiAqLwogCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKKy8qKiogc3R1YiAq
LworLy8gY2xhc3MgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOworY2xhc3MgR1BVRnVuY3Rp
b247CitjbGFzcyBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgOiBwdWJsaWMgUmVmQ291bnRl
ZDxHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
UHRyPEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gY3JlYXRlKCkgeyByZXR1cm4gbnVsbHB0
cjsgfQorICAgIFZlY3RvcjxSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yPj4gY29sb3JBdHRhY2htZW50cygpIHsgcmV0dXJuIFZlY3RvcjxSZWZQdHI8R1BV
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4oKTsgfQorICAgIFN0cmlu
ZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KKyAgICB2b2lkIHNldExh
YmVsKGNvbnN0IFN0cmluZyYpIHsgfQorICAgIHZvaWQgc2V0VmVydGV4RnVuY3Rpb24oR1BVRnVu
Y3Rpb24qKSB7IH0KKyAgICB2b2lkIHNldEZyYWdtZW50RnVuY3Rpb24oR1BVRnVuY3Rpb24qKSB7
IH0KKyAgICB1bnNpZ25lZCBsb25nIGRlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0KCkgY29uc3Qg
eyByZXR1cm4gMDsgfQorICAgIHZvaWQgc2V0RGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQodW5z
aWduZWQgbG9uZykgeyB9Cit9OworCisvKioqIGVuZCBzdHViICovCisKIGNsYXNzIFdlYkdQVUZ1
bmN0aW9uOwogY2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yOwogCkBAIC01OCw3ICs3Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVzZXQoKTsKIAot
ICAgIE1ldGFsUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiByZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IoKSB7IHJldHVybiBtX3JlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5nZXQoKTsgfQorICAgIEdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCkgeyBy
ZXR1cm4gbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuZ2V0KCk7IH0KIAogcHJpdmF0ZToKICAg
ICBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoKTsKQEAgLTY4LDcgKzg3LDcgQEAgcHJp
dmF0ZToKIAogICAgIFZlY3RvcjxSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yPj4gbV9jb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yczsKIAotICAgIFJl
ZlB0cjxNZXRhbFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gbV9yZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3I7CisgICAgUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gbV9yZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lU3Rh
dGUuY3BwCmluZGV4IGMyMDE0MGJlNTdhLi43OTNhMDU5N2IxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHAK
QEAgLTI4LDcgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAKKy8qKioKICNpbmNsdWRl
ICJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmgiCisgKi8KICNpbmNsdWRlICJXZWJHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0Lmgi
CiAKQEAgLTQ0LDcgKzQ2LDcgQEAgV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZTo6V2ViR1BVUmVu
ZGVyUGlwZWxpbmVTdGF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb24KIHsKICAgICBpZiAo
IWNvbnRleHQgfHwgIWRlc2NyaXB0b3IpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3JlbmRlclBp
cGVsaW5lU3RhdGUgPSBNZXRhbFJlbmRlclBpcGVsaW5lU3RhdGU6OmNyZWF0ZShjb250ZXh0LT5k
ZXZpY2UoKS5nZXQoKSwgZGVzY3JpcHRvci0+cmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCkpOwor
ICAgIG1fcmVuZGVyUGlwZWxpbmVTdGF0ZSA9IEdQVVJlbmRlclBpcGVsaW5lU3RhdGU6OmNyZWF0
ZShjb250ZXh0LT5kZXZpY2UoKS5nZXQoKSwgZGVzY3JpcHRvci0+cmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yKCkpOwogfQogCiBXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlOjp+V2ViR1BVUmVuZGVy
UGlwZWxpbmVTdGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmgKaW5kZXggNGM1YjA4MGFkZDkuLjA3M2IyYjY1OWQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBl
bGluZVN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVy
UGlwZWxpbmVTdGF0ZS5oCkBAIC0zMyw3ICszMywxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIEdQVVJlbmRlclBpcGVsaW5lU3RhdGU7CisvKioqIHN0dWIgKi8KKy8vIGNsYXNz
IEdQVVJlbmRlclBpcGVsaW5lU3RhdGU7CitjbGFzcyBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3I7CitjbGFzcyBHUFVSZW5kZXJQaXBlbGluZVN0YXRlIDogcHVibGljIFJlZkNvdW50ZWQ8R1BV
UmVuZGVyUGlwZWxpbmVTdGF0ZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8R1BVUmVu
ZGVyUGlwZWxpbmVTdGF0ZT4gY3JlYXRlKEdQVURldmljZSosIEdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciopIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBTdHJpbmcgbGFiZWwoKSBjb25zdCB7
IHJldHVybiBlbXB0eVN0cmluZygpOyB9CisgICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJpbmcm
KSB7IH0KK307CisvKioqIGVuZCBzdHViICovCisKIGNsYXNzIFdlYkdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcjsKIAogY2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZSA6IHB1YmxpYyBX
ZWJHUFVPYmplY3QgewpAQCAtNDQsMTIgKzU0LDEyIEBAIHB1YmxpYzoKICAgICBTdHJpbmcgbGFi
ZWwoKSBjb25zdDsKICAgICB2b2lkIHNldExhYmVsKGNvbnN0IFN0cmluZyYpOwogCi0gICAgTWV0
YWxSZW5kZXJQaXBlbGluZVN0YXRlKiByZW5kZXJQaXBlbGluZVN0YXRlKCkgeyByZXR1cm4gbV9y
ZW5kZXJQaXBlbGluZVN0YXRlLmdldCgpOyB9CisgICAgR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZSog
cmVuZGVyUGlwZWxpbmVTdGF0ZSgpIHsgcmV0dXJuIG1fcmVuZGVyUGlwZWxpbmVTdGF0ZS5nZXQo
KTsgfQogCiBwcml2YXRlOgogICAgIFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUoV2ViR1BVUmVu
ZGVyaW5nQ29udGV4dCosIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciopOwogCi0gICAg
UmVmUHRyPE1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZT4gbV9yZW5kZXJQaXBlbGluZVN0YXRlOwor
ICAgIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZVN0YXRlPiBtX3JlbmRlclBpcGVsaW5lU3RhdGU7
CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA3MmU0MWFl
NDlkYy4uYmRjNjVlN2JiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC03MSwxMyArNzEsMTUgQEAgc3RhdGlj
IGNvbnN0IGludCBrTWF4VGV4dHVyZVNpemUgPSA0MDk2OwogCiBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
R1BVUmVuZGVyaW5nQ29udGV4dD4gV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKEhUTUxD
YW52YXNFbGVtZW50JiBjYW52YXMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGNhbnZhcyk7CisvKioq
CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gY2FudmFzLmRvY3VtZW50KCk7CiAgICAgRnJhbWUq
IGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotLy8gICAgTWV0YWxEZXZpY2U6OkF0dHJpYnV0ZXMgYXR0cmlidXRlcyA9
IGF0dHJzID8gYXR0cnMtPmF0dHJpYnV0ZXMoKSA6IEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1
dGVzKCk7Ci0gICAgTWV0YWxEZXZpY2U6OkF0dHJpYnV0ZXMgYXR0cmlidXRlczsKKy8vICAgIEdQ
VURldmljZTo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gYXR0cnMgPyBhdHRycy0+YXR0cmlidXRl
cygpIDogR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMoKTsKKyAgICBHUFVEZXZpY2U6OkF0
dHJpYnV0ZXMgYXR0cmlidXRlczsKIAogICAgIGF0dHJpYnV0ZXMuYW50aWFsaWFzID0gZmFsc2U7
CiAKQEAgLTg1LDcgKzg3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkdQVVJlbmRlcmluZ0NvbnRl
eHQ+IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZShIVE1MQ2FudmEKIC8vICAgICAgICAg
ICAgYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvID0gcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3Io
KTsKIAogICAgIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cgPSBkb2N1bWVudC52aWV3KCktPnJvb3Qo
KS0+aG9zdFdpbmRvdygpOwotICAgIFJlZlB0cjxNZXRhbERldmljZT4gZGV2aWNlKE1ldGFsRGV2
aWNlOjpjcmVhdGUoYXR0cmlidXRlcywgaG9zdFdpbmRvdykpOworICAgIFJlZlB0cjxHUFVEZXZp
Y2U+IGRldmljZShHUFVEZXZpY2U6OmNyZWF0ZShhdHRyaWJ1dGVzLCBob3N0V2luZG93KSk7CiAK
ICAgICBpZiAoIWRldmljZSkgeyAvLyB8fCAhY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
IHsKICAgICAgICAgLy8gY2FudmFzLT5kaXNwYXRjaEV2ZW50KFdlYkdMQ29udGV4dEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3JFdmVudCwgZmFsc2Us
IHRydWUsICJDb3VsZCBub3QgY3JlYXRlIGEgV2ViR0wgY29udGV4dC4iKSk7CkBAIC05Nyw5ICs5
OSwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViR1BVUmVuZGVyaW5nQ29udGV4dD4gV2ViR1BVUmVu
ZGVyaW5nQ29udGV4dDo6Y3JlYXRlKEhUTUxDYW52YQogICAgIHJlbmRlcmluZ0NvbnRleHQtPnN1
c3BlbmRJZk5lZWRlZCgpOwogCiAgICAgcmV0dXJuIHJlbmRlcmluZ0NvbnRleHQ7CisqLworICAg
IHJldHVybiBudWxscHRyOwogfQogCi1XZWJHUFVSZW5kZXJpbmdDb250ZXh0OjpXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0KEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMsIFBhc3NSZWZQdHI8TWV0YWxE
ZXZpY2U+IGRldmljZSkKK1dlYkdQVVJlbmRlcmluZ0NvbnRleHQ6OldlYkdQVVJlbmRlcmluZ0Nv
bnRleHQoSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcywgUGFzc1JlZlB0cjxHUFVEZXZpY2U+IGRl
dmljZSkKICAgICA6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQoY2FudmFzKQogICAgICwgQWN0aXZl
RE9NT2JqZWN0KCZjYW52YXMuZG9jdW1lbnQoKSkKICAgICAsIG1fZGV2aWNlKGRldmljZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlcmluZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlcmluZ0NvbnRleHQu
aAppbmRleCA5NjNkZDc0NWU4ZS4uZWFhMDc3YWY2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTYxLDcgKzYxLDcg
QEAgcHVibGljOgogCiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgUmVmUHRyPE1ldGFsRGV2aWNlPiBkZXZpY2UoKSB7IHJldHVybiBtX2Rl
dmljZTsgfQorICAgIFJlZlB0cjxHUFVEZXZpY2U+IGRldmljZSgpIHsgcmV0dXJuIG1fZGV2aWNl
OyB9CiAKICAgICAvLyBXZWJHUFUgZW50cnkgcG9pbnRzCiAKQEAgLTkxLDkgKzkxLDkgQEAgcHJv
dGVjdGVkOgogCiBwcml2YXRlOgogLy8gICAgV2ViR1BVUmVuZGVyaW5nQ29udGV4dChIVE1MQ2Fu
dmFzRWxlbWVudCopOy8vLCBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyk7Ci0gICAgV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dChIVE1MQ2FudmFzRWxlbWVudCYsIFBhc3NSZWZQdHI8TWV0YWxE
ZXZpY2U+KTsKKyAgICBXZWJHUFVSZW5kZXJpbmdDb250ZXh0KEhUTUxDYW52YXNFbGVtZW50Jiwg
UGFzc1JlZlB0cjxHUFVEZXZpY2U+KTsKIAotICAgIFJlZlB0cjxNZXRhbERldmljZT4gbV9kZXZp
Y2U7CisgICAgUmVmUHRyPEdQVURldmljZT4gbV9kZXZpY2U7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVU
ZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmUuY3Bw
CmluZGV4IGIyZDQzNTcwMGUxLi4yOTAwYjI0ZWE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVVGV4dHVyZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZWY8V2ViR1BVVGV4dHVyZT4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlRnJv
bURyYXdhYmxlVGV4dHVyZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBQYXNzUmVm
UHRyPE1ldGFsVGV4dHVyZT4gZHJhd2FibGVUZXh0dXJlKQorUmVmPFdlYkdQVVRleHR1cmU+IFdl
YkdQVVRleHR1cmU6OmNyZWF0ZUZyb21EcmF3YWJsZVRleHR1cmUoV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxHUFVUZXh0dXJlPiBkcmF3YWJsZVRleHR1cmUpCiB7
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVVGV4dHVyZShjb250ZXh0LCBkcmF3YWJs
ZVRleHR1cmUpKTsKIH0KQEAgLTQ0LDcgKzQ0LDcgQEAgUmVmPFdlYkdQVVRleHR1cmU+IFdlYkdQ
VVRleHR1cmU6OmNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBXZWJHUFUK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVUZXh0dXJlKGNvbnRleHQsIGRlc2NyaXB0
b3IpKTsKIH0KIAotV2ViR1BVVGV4dHVyZTo6V2ViR1BVVGV4dHVyZShXZWJHUFVSZW5kZXJpbmdD
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPE1ldGFsVGV4dHVyZT4gZHJhd2FibGVUZXh0dXJl
KQorV2ViR1BVVGV4dHVyZTo6V2ViR1BVVGV4dHVyZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBj
b250ZXh0LCBQYXNzUmVmUHRyPEdQVVRleHR1cmU+IGRyYXdhYmxlVGV4dHVyZSkKICAgICA6IFdl
YkdQVU9iamVjdChjb250ZXh0KQogICAgICwgbV90ZXh0dXJlKGRyYXdhYmxlVGV4dHVyZSkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmUuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmUuaAppbmRleCBjZDdlN2Fh
YWNlNy4uZDI1YjBiYmU0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVVRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVU
ZXh0dXJlLmgKQEAgLTM3LDE5ICszNywxOSBAQCBjbGFzcyBXZWJHUFVUZXh0dXJlRGVzY3JpcHRv
cjsKIGNsYXNzIFdlYkdQVVRleHR1cmUgOiBwdWJsaWMgV2ViR1BVT2JqZWN0IHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5XZWJHUFVUZXh0dXJlKCk7Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVUZXh0
dXJlPiBjcmVhdGVGcm9tRHJhd2FibGVUZXh0dXJlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBQ
YXNzUmVmUHRyPE1ldGFsVGV4dHVyZT4pOworICAgIHN0YXRpYyBSZWY8V2ViR1BVVGV4dHVyZT4g
Y3JlYXRlRnJvbURyYXdhYmxlVGV4dHVyZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgUGFzc1Jl
ZlB0cjxHUFVUZXh0dXJlPik7CiAgICAgc3RhdGljIFJlZjxXZWJHUFVUZXh0dXJlPiBjcmVhdGUo
V2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yKik7CiAKICAg
ICB1bnNpZ25lZCBsb25nIHdpZHRoKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgbG9uZyBoZWlnaHQo
KSBjb25zdDsKIAotICAgIE1ldGFsVGV4dHVyZSogdGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dGV4dHVyZS5nZXQoKTsgfQorICAgIEdQVVRleHR1cmUqIHRleHR1cmUoKSBjb25zdCB7IHJldHVy
biBtX3RleHR1cmUuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJHUFVUZXh0dXJlKFdlYkdQ
VVJlbmRlcmluZ0NvbnRleHQqLCBQYXNzUmVmUHRyPE1ldGFsVGV4dHVyZT4pOworICAgIFdlYkdQ
VVRleHR1cmUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIFBhc3NSZWZQdHI8R1BVVGV4dHVyZT4p
OwogICAgIFdlYkdQVVRleHR1cmUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIFdlYkdQVVRleHR1
cmVEZXNjcmlwdG9yKik7CiAKLSAgICBSZWZQdHI8TWV0YWxUZXh0dXJlPiBtX3RleHR1cmU7Cisg
ICAgUmVmUHRyPEdQVVRleHR1cmU+IG1fdGV4dHVyZTsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVU
ZXh0dXJlRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVU
ZXh0dXJlRGVzY3JpcHRvci5jcHAKaW5kZXggOTkyMzc1MTQ0OTQuLjgwNjc5MzlhYjViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlRGVzY3JpcHRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZURlc2Ny
aXB0b3IuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFJlZjxXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcj4g
V2ViR1BVVGV4dHVyZURlc2NyaXB0b3I6OmNyZWF0ZSh1bnNpZ25lZCBsb25nIHBpeGVsCiBXZWJH
UFVUZXh0dXJlRGVzY3JpcHRvcjo6V2ViR1BVVGV4dHVyZURlc2NyaXB0b3IodW5zaWduZWQgbG9u
ZyBwaXhlbEZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQs
IGJvb2wgbWlwbWFwcGVkKQogICAgIDogV2ViR1BVT2JqZWN0KCkKIHsKLSAgICBtX3RleHR1cmVE
ZXNjcmlwdG9yID0gTWV0YWxUZXh0dXJlRGVzY3JpcHRvcjo6Y3JlYXRlKHBpeGVsRm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBtaXBtYXBwZWQpOworICAgIG1fdGV4dHVyZURlc2NyaXB0b3IgPSBHUFVU
ZXh0dXJlRGVzY3JpcHRvcjo6Y3JlYXRlKHBpeGVsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBtaXBt
YXBwZWQpOwogfQogCiBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcjo6fldlYkdQVVRleHR1cmVEZXNj
cmlwdG9yKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRl
eHR1cmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0
dXJlRGVzY3JpcHRvci5oCmluZGV4IDYwZTA3MzhhYmIxLi44YWUyNjRlNjFhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5o
CkBAIC01OSwxMiArNTksMTIgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGxvbmcgdXNhZ2UoKSBj
b25zdDsKICAgICB2b2lkIHNldFVzYWdlKHVuc2lnbmVkIGxvbmcpOwogCi0gICAgTWV0YWxUZXh0
dXJlRGVzY3JpcHRvciogdGV4dHVyZURlc2NyaXB0b3IoKSB7IHJldHVybiBtX3RleHR1cmVEZXNj
cmlwdG9yLmdldCgpOyB9CisgICAgR1BVVGV4dHVyZURlc2NyaXB0b3IqIHRleHR1cmVEZXNjcmlw
dG9yKCkgeyByZXR1cm4gbV90ZXh0dXJlRGVzY3JpcHRvci5nZXQoKTsgfQogCiBwcml2YXRlOgog
ICAgIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yKHVuc2lnbmVkIGxvbmcgcGl4ZWxGb3JtYXQsIHVu
c2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0LCBib29sIG1pcG1hcHBlZCk7
CiAKLSAgICBSZWZQdHI8TWV0YWxUZXh0dXJlRGVzY3JpcHRvcj4gbV90ZXh0dXJlRGVzY3JpcHRv
cjsKKyAgICBSZWZQdHI8R1BVVGV4dHVyZURlc2NyaXB0b3I+IG1fdGV4dHVyZURlc2NyaXB0b3I7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmgKaW5kZXggYTI0MGY3OWE0M2QuLjkzOTA2OGQw
MWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
RGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURl
dmljZS5oCkBAIC00Nyw2ICs0NywxMCBAQCB0eXBlZGVmIHZvaWQgUGxhdGZvcm1HUFVEZXZpY2U7
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdQVUJ1ZmZlcjsKKy8qKiogc3R1YiAqLwor
Y2xhc3MgR1BVQ29tbWFuZFF1ZXVlOworY2xhc3MgR1BVRHJhd2FibGU7CisvKioqIGVuZCBzdHVi
ICovCiBjbGFzcyBHUFVMaWJyYXJ5OwogY2xhc3MgR1BVVGV4dHVyZTsKIGNsYXNzIEdQVVRleHR1
cmVEZXNjcmlwdG9yOwpAQCAtNjksNiArNzMsMTIgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZlB0cjxHUFVCdWZmZXI+IGNyZWF0ZUJ1ZmZlckZyb21EYXRhKEFycmF5QnVmZmVyVmll
dyogZGF0YSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEdQVVRleHR1cmU+IGNyZWF0ZVRl
eHR1cmUoR1BVVGV4dHVyZURlc2NyaXB0b3IqKTsKIAorICAgIC8qKiogc3R1YiAqLworICAgIEdQ
VUNvbW1hbmRRdWV1ZSogY3JlYXRlQ29tbWFuZFF1ZXVlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQor
ICAgIEdQVURyYXdhYmxlKiBnZXRGcmFtZWJ1ZmZlcigpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAg
ICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKSB7IH0KKyAgICAvKioqIGVuZCBzdHViICovCisK
IHByaXZhdGU6CiAgICAgR1BVRGV2aWNlKCk7CiAKLS0gCjIuMTEuMCAoQXBwbGUgR2l0LTgwKQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304137</attachid>
            <date>2017-03-10 22:38:47 -0800</date>
            <delta_ts>2017-03-11 14:48:22 -0800</delta_ts>
            <desc>Complete patch (1+2)</desc>
            <filename>0001-WebGPU-prototype-Front-End.patch</filename>
            <type>text/plain</type>
            <size>283713</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSBiZGZmMjM2YWY0ZWYzYmZiN2JhNGQ3NDgzN2VmNzNmMmEyYmNkN2QwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBGcmks
IDEwIE1hciAyMDE3IDIyOjM4OjA0IC0wODAwClN1YmplY3Q6IFtQQVRDSF0gV2ViR1BVIHByb3Rv
dHlwZSAtIEZyb250LUVuZAogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2Nzk1MgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpTb3VyY2UvSmF2YVNjcmlwdENv
cmU6CgoqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDogQWRkIFdlYkdQVSBvYmplY3RzLgoK
U291cmNlL1dlYkNvcmU6CgpUaGlzIHBhdGNoIGFkZHMgYWxsIG9mIHRoZSByZWxldmFudCBmcm9u
dC1lbmQgZmlsZXMsIGFuZCBidWlsZHMgc3VjY2Vzc2Z1bGx5IHdoZW4KRU5BQkxFKFdFQkdQVSkg
aXMgb2ZmLgoKKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzogRm9yIEVX
UywgdHVybiBvZiBXZWJHUFUgaW4gV2ViQ29yZS4gVGhpcwpzaG91bGQgbm90IGJlIGNoZWNrZWQg
aW4uCgoqIERlcml2ZWRTb3VyY2VzLm1ha2U6IEFkZCBXZWJHUFUgSURMcy4KKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBXZWJHUFUgZmlsZXMuCgpKUyBjdXN0b20gYmlu
ZGluZ3MuCiogYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHA6IFRoaXMgZmlsZSBpcyBt
aXNzaW5nIGEgV2ViR1BVIGNsYXVzZSBvZiBnZXRDU1NDYW52YXNDb250CndoaWNoIGlzIGluY2x1
ZGVkIGluIGEgbGF0ZXIgcGF0Y2guCiogYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1
c3RvbS5jcHA6CihXZWJDb3JlOjpKU0hUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KToKKiBi
aW5kaW5ncy9qcy9KU1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvckN1c3RvbS5j
cHA6IEFkZGVkLgoqIGJpbmRpbmdzL2pzL0pTV2ViR1BVUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5j
cHA6IEFkZGVkLgoqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgooV2ViQ29yZTo6SFRNTENh
bnZhc0VsZW1lbnQ6OmdldENvbnRleHQpOgooV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6Omlz
V2ViR1BVVHlwZSk6CihXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dFdlYkdQ
VSk6CihXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cmVzZXQpOgooV2ViQ29yZTo6SFRNTENh
bnZhc0VsZW1lbnQ6OnBhaW50KToKKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50Ojppc0dQVSk6
CiogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgoqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQuaDoKKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmlzR1BVKToKCi5j
cHAsIC5oLCAuaWRsIGZpbGVzLCB3cmFwcGVkIGluIFdFQkdQVSBjb25kaXRpb25hbCwgYW5kIGVu
YWJsZWQgYXQgcnVudGltZS4KKiBodG1sL2NhbnZhcy9XZWJHUFVCdWZmZXIKKiBodG1sL2NhbnZh
cy9XZWJHUFVDb21tYW5kQnVmZmVyCiogaHRtbC9jYW52YXMvV2ViR1BVQ29tbWFuZFF1ZXVlCiog
aHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcgoqIGh0bWwvY2FudmFzL1dl
YkdQVURlcHRoU3RlbmNpbFN0YXRlCiogaHRtbC9jYW52YXMvV2ViR1BVRHJhd2FibGUKKiBodG1s
L2NhbnZhcy9XZWJHUFVFbnVtcwoqIGh0bWwvY2FudmFzL1dlYkdQVUZ1bmN0aW9uCiogaHRtbC9j
YW52YXMvV2ViR1BVTGlicmFyeQoqIGh0bWwvY2FudmFzL1dlYkdQVU9iamVjdCAobm8gSURMKQoq
IGh0bWwvY2FudmFzL1dlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyCiogaHRtbC9jYW52YXMvV2Vi
R1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yCiogaHRtbC9jYW52YXMvV2ViR1BVUmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IKKiBodG1sL2NhbnZhcy9XZWJHUFVSZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcgoqIGh0bWwvY2FudmFzL1dlYkdQVVJlbmRl
clBhc3NEZXNjcmlwdG9yCiogaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yCiogaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yCiogaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZQoqIGh0bWwvY2Fu
dmFzL1dlYkdQVVJlbmRlcmluZ0NvbnRleHQKKiBodG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlCiog
aHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IKCkNvbnZlcnQgTWV0YWwqIHRvIEdQ
VSouIEFkZCBzdHVicywgc3Vycm91bmRlZCBieSAvKioqICovIG1hcmtlcnMuCgoqIENvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOiBSZS1lbmFibGUgV0VCR1BVIHNpbmNlIHBh
dGNoIDEuCgoqIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwOgooV2ViQ29yZTo6SlNE
b2N1bWVudDo6Z2V0Q1NTQ2FudmFzQ29udGV4dCk6IEFkZCBtaXNzaW5nIGNsYXVzZS4KCiogaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6CihXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Z2V0
Q29udGV4dFdlYkdQVSk6IEZvciByZWxlYXNlIGJ1aWxkcywgc3dpdGNoIHRvIEFTU0VSVF9VTlVT
RUQuCi0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgfCAgIDkgKwogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaCAgfCAgMTkgKysKIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgIDY3ICsrKysrCiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
ICAgICAgICAgICAgICAgICB8ICAyMSArLQogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qICAgfCAzMjggKysrKysrKysrKysrKysrKysrKystCiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcCAgICB8ICAxMCArLQogLi4u
L2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwICAgICAgfCAgMTEgKy0K
IC4uLlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3JDdXN0b20uY3BwIHwgIDUz
ICsrKysKIC4uLi9iaW5kaW5ncy9qcy9KU1dlYkdQVVJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3Bw
IHwgIDQyICsrKwogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgICAg
ICAgICAgfCAgNTYgKysrLQogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5o
ICAgICAgICAgICAgfCAgIDkgKy0KIC4uLi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuaCAgIHwgICAzICstCiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVCdWZmZXIuY3BwICAgICAgICB8ICA3MCArKysrKwogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVQnVmZmVyLmggICAgICAgICAgfCAgNTMgKysrKwogU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVQnVmZmVyLmlkbCAgICAgICAgfCAgMzQgKysrCiBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcCB8ICA4NyArKysrKysKIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRCdWZmZXIuaCAgIHwgIDczICsrKysr
CiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kQnVmZmVyLmlkbCB8ICAz
NSArKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRRdWV1ZS5jcHAg
IHwgIDc4ICsrKysrCiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kUXVl
dWUuaCAgICB8ICA2OCArKysrKwogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQ29t
bWFuZFF1ZXVlLmlkbCAgfCAgMzUgKysrCiAuLi4vaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVu
Y2lsRGVzY3JpcHRvci5jcHAgICB8IDEwMyArKysrKysrCiAuLi4vaHRtbC9jYW52YXMvV2ViR1BV
RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oICAgICB8ICA3NiArKysrKwogLi4uL2h0bWwvY2FudmFz
L1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaWRsICAgfCAgNTEgKysrKwogLi4uL2h0bWwv
Y2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcCAgICAgICAgfCAgNzQgKysrKysKIC4u
Li9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmggIHwgIDY3ICsr
KysrCiAuLi4vaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaWRsICAgICAgICB8
ICAzMyArKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURyYXdhYmxlLmNwcCAg
ICAgIHwgIDcwICsrKysrCiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEcmF3YWJs
ZS5oICAgICAgICB8ICA2MCArKysrCiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVE
cmF3YWJsZS5pZGwgICAgICB8ICAzMyArKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdQVUVudW1zLmNwcCAgICAgICAgIHwgMTA4ICsrKysrKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVUVudW1zLmggICAgICAgICAgIHwgIDY2ICsrKysrCiBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHUFVFbnVtcy5pZGwgICAgICAgICB8IDI3NCArKysrKysrKysrKysr
KysrKwogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24uY3BwICAgICAg
fCAgNjMgKysrKwogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24uaCAg
ICAgICAgfCAgNTQgKysrKwogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rp
b24uaWRsICAgICAgfCAgMzMgKysrCiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVM
aWJyYXJ5LmNwcCAgICAgICB8ICA5MCArKysrKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVUxpYnJhcnkuaCAgICAgICAgIHwgIDYzICsrKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVUxpYnJhcnkuaWRsICAgICAgIHwgIDM3ICsrKwogU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVT2JqZWN0LmNwcCAgICAgICAgfCAgNTEgKysrKwogU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVT2JqZWN0LmggICAgICAgICAgfCAgNTkgKysrKwogLi4u
L2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcCAgICAgfCAxMDkgKysr
KysrKwogLi4uL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmggICAgICAg
fCAgNzkgKysrKysKIC4uLi9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5p
ZGwgICAgIHwgIDM5ICsrKwogLi4uL1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRv
ci5jcHAgICAgICAgfCAxMDAgKysrKysrKwogLi4uL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3IuaCAgfCAgNzkgKysrKysKIC4uLi9XZWJHUFVSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3IuaWRsICAgICAgIHwgIDM4ICsrKwogLi4uL1dlYkdQVVJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAgfCAgODAgKysrKysKIC4uLi9XZWJHUFVS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oICAgIHwgIDY1ICsrKysKIC4uLi9X
ZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5pZGwgIHwgIDMzICsrKwog
Li4uL1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAgfCAgNzkg
KysrKysKIC4uLi9XZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oICAg
IHwgIDYxICsrKysKIC4uLi9XZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
ci5pZGwgIHwgIDMzICsrKwogLi4uL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXNjcmlw
dG9yLmNwcCAgICAgfCAgODQgKysrKysrCiAuLi4vaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3IuaCAgICAgICB8ICA3MyArKysrKwogLi4uL2h0bWwvY2FudmFzL1dlYkdQVVJl
bmRlclBhc3NEZXNjcmlwdG9yLmlkbCAgICAgfCAgMzkgKysrCiAuLi5iR1BVUmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCB8ICA3MSArKysrKwogLi4uV2ViR1BVUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggfCAgNjIgKysrKwogLi4uYkdQ
VVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5pZGwgfCAgMzMgKysrCiAu
Li4vaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCB8IDE0MyAr
KysrKysrKysKIC4uLi9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iu
aCAgIHwgIDk1ICsrKysrKwogLi4uL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvci5pZGwgfCAgNDMgKysrCiAuLi4vaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxp
bmVTdGF0ZS5jcHAgICAgICB8ICA3NCArKysrKwogLi4uL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRl
clBpcGVsaW5lU3RhdGUuaCAgICAgICAgfCAgNjcgKysrKysKIC4uLi9odG1sL2NhbnZhcy9XZWJH
UFVSZW5kZXJQaXBlbGluZVN0YXRlLmlkbCAgICAgIHwgIDMzICsrKwogLi4uL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAgfCAyMDggKysrKysrKysrKysrKwog
Li4uL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oICAgfCAxMDMg
KysrKysrKwogLi4uL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5p
ZGwgfCAxMTEgKysrKysrKwogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVy
ZS5jcHAgICAgICAgfCAgODEgKysrKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VVRleHR1cmUuaCAgICAgICAgIHwgIDU3ICsrKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVVRleHR1cmUuaWRsICAgICAgIHwgIDM0ICsrKwogLi4uL2h0bWwvY2FudmFzL1dlYkdQ
VVRleHR1cmVEZXNjcmlwdG9yLmNwcCAgICAgICAgfCAxNDkgKysrKysrKysrKwogLi4uL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaCAgfCAgNzIgKysrKysKIC4u
Li9odG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5pZGwgICAgICAgIHwgIDQyICsr
KwogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5oICAgfCAg
MTAgKwogNzUgZmlsZXMgY2hhbmdlZCwgNTA5NyBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygt
KQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR1BV
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yQ3VzdG9tLmNwcAogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR1BVUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHUFVCdWZmZXIuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR1BVQnVmZmVyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHUFVCdWZmZXIuaWRsCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kQnVmZmVyLmgKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5k
QnVmZmVyLmlkbAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVUNvbW1hbmRRdWV1ZS5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kUXVldWUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRRdWV1ZS5pZGwKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxE
ZXNjcmlwdG9yLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaWRs
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRGVw
dGhTdGVuY2lsU3RhdGUuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmlkbAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURyYXdhYmxl
LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VURyYXdhYmxlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVEcmF3YWJsZS5pZGwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHUFVFbnVtcy5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVFbnVtcy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRW51bXMuaWRsCiBjcmVhdGUgbW9kZSAxMDA2NDQg
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24uY3BwCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24uaAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUZ1bmN0aW9u
LmlkbAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VUxpYnJhcnkuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVTGlicmFyeS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVTGlicmFyeS5pZGwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVPYmplY3QuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVT2JqZWN0LmgKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5j
cHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVS
ZW5kZXJDb21tYW5kRW5jb2Rlci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaWRsCiBjcmVhdGUgbW9kZSAx
MDA2NDQgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yLmlkbAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvci5pZGwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3Iu
aWRsCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaAogY3JlYXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXNjcmlw
dG9yLmlkbAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvci5pZGwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQg
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHAKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGlu
ZVN0YXRlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmlkbAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyaW5nQ29udGV4
dC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
UmVuZGVyaW5nQ29udGV4dC5pZGwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmUuaWRsCiBjcmVhdGUgbW9kZSAx
MDA2NDQgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3Iu
Y3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
VGV4dHVyZURlc2NyaXB0b3IuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmlkbAoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCmluZGV4IGI0MzUyY2ZlNTgxLi4yMTAxMjUyOTQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDMtMTAgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUu
Y29tPgorCisgICAgICAgIFdlYkdQVSBwcm90b3R5cGUgLSBGcm9udC1FbmQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Nzk1MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oOiBBZGQgV2ViR1BVIG9iamVjdHMuCisKIDIwMTctMDMtMTAgIFNhYW0gQmFyYXRp
ICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQXNzZW1ibHk6IE1ha2UgbW9yZSBk
ZW1vcyBydW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oCmluZGV4IDY3NTQ1MGY4ZDVhLi40NTQ3OThhYTIwMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0xMjYsNiAr
MTI2LDI1IEBACiAgICAgbWFjcm8oV2Vha1NldClcCiAgICAgbWFjcm8oV2ViR0wyUmVuZGVyaW5n
Q29udGV4dCkgXAogICAgIG1hY3JvKFdlYkdMVmVydGV4QXJyYXlPYmplY3QpIFwKKyAgICBtYWNy
byhXZWJHUFVCdWZmZXIpIFwKKyAgICBtYWNybyhXZWJHUFVDb21tYW5kQnVmZmVyKSBcCisgICAg
bWFjcm8oV2ViR1BVQ29tbWFuZFF1ZXVlKSBcCisgICAgbWFjcm8oV2ViR1BVRGVwdGhTdGVuY2ls
RGVzY3JpcHRvcikgXAorICAgIG1hY3JvKFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlKSBcCisgICAg
bWFjcm8oV2ViR1BVRHJhd2FibGUpIFwKKyAgICBtYWNybyhXZWJHUFVGdW5jdGlvbikgXAorICAg
IG1hY3JvKFdlYkdQVUxpYnJhcnkpIFwKKyAgICBtYWNybyhXZWJHUFVSZW5kZXJDb21tYW5kRW5j
b2RlcikgXAorICAgIG1hY3JvKFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcikg
XAorICAgIG1hY3JvKFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKSBc
CisgICAgbWFjcm8oV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IpIFwK
KyAgICBtYWNybyhXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcikgXAorICAgIG1hY3JvKFdlYkdQ
VVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcikgXAorICAgIG1hY3JvKFdl
YkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcikgXAorICAgIG1hY3JvKFdlYkdQVVJlbmRlclBp
cGVsaW5lU3RhdGUpIFwKKyAgICBtYWNybyhXZWJHUFVSZW5kZXJpbmdDb250ZXh0KSBcCisgICAg
bWFjcm8oV2ViR1BVVGV4dHVyZSkgXAorICAgIG1hY3JvKFdlYkdQVVRleHR1cmVEZXNjcmlwdG9y
KSBcCiAgICAgbWFjcm8oV2ViU29ja2V0KSBcCiAgICAgbWFjcm8oX19kZWZpbmVHZXR0ZXJfXykg
XAogICAgIG1hY3JvKF9fZGVmaW5lU2V0dGVyX18pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkZWQ2ZTg4NTY4
ZC4uOTJmZWIxMGI1MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MCBAQAorMjAxNy0wMy0xMCAg
Sm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR1BVIHByb3RvdHlwZSAt
IEZyb250LUVuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY3OTUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBhZGRzIGFsbCBvZiB0aGUgcmVsZXZhbnQgZnJvbnQtZW5kIGZpbGVzLCBh
bmQgYnVpbGRzIHN1Y2Nlc3NmdWxseSB3aGVuCisgICAgICAgIEVOQUJMRShXRUJHUFUpIGlzIG9m
Zi4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOiBG
b3IgRVdTLCB0dXJuIG9mIFdlYkdQVSBpbiBXZWJDb3JlLiBUaGlzCisgICAgICAgIHNob3VsZCBu
b3QgYmUgY2hlY2tlZCBpbi4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6IEFkZCBX
ZWJHUFUgSURMcy4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
IEFkZCBXZWJHUFUgZmlsZXMuCisKKyAgICAgICAgSlMgY3VzdG9tIGJpbmRpbmdzLgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwOiBUaGlzIGZpbGUgaXMgbWlzc2lu
ZyBhIFdlYkdQVSBjbGF1c2Ugb2YgZ2V0Q1NTQ2FudmFzQ29udAorICAgICAgICB3aGljaCBpcyBp
bmNsdWRlZCBpbiBhIGxhdGVyIHBhdGNoLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTENh
bnZhc0VsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ2FudmFzRWxl
bWVudDo6Z2V0Q29udGV4dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXZWJHUFVSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3JDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1dlYkdQVVJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxD
YW52YXNFbGVtZW50OjpnZXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNF
bGVtZW50Ojppc1dlYkdQVVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1l
bnQ6OmdldENvbnRleHRXZWJHUFUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1l
bnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpwYWludCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6aXNHUFUpOgorICAgICAgICAq
IGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0Ojppc0dQVSk6CisKKyAgICAgICAgLmNwcCwgLmgsIC5pZGwgZmlsZXMsIHdyYXBwZWQgaW4g
V0VCR1BVIGNvbmRpdGlvbmFsLCBhbmQgZW5hYmxlZCBhdCBydW50aW1lLgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdQVUJ1ZmZlcgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdQVUNvbW1h
bmRCdWZmZXIKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kUXVldWUKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yCisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHUFVEcmF3YWJsZQorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdQVUVudW1zCisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24KKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHUFVMaWJyYXJ5CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR1BVT2JqZWN0IChubyBJREwp
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1l
bnREZXNjcmlwdG9yCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3IKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGlu
ZVN0YXRlCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyaW5nQ29udGV4dAorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdQVVRleHR1cmUKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHUFVUZXh0dXJlRGVzY3JpcHRvcgorCisgICAgICAgIENvbnZlcnQgTWV0YWwqIHRvIEdQVSou
IEFkZCBzdHVicywgc3Vycm91bmRlZCBieSAvKioqICovIG1hcmtlcnMuCisKKyAgICAgICAgKiBD
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzogUmUtZW5hYmxlIFdFQkdQVSBz
aW5jZSBwYXRjaCAxLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50OjpnZXRDU1NDYW52YXNDb250ZXh0KTog
QWRkIG1pc3NpbmcgY2xhdXNlLgorCisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dFdlYkdQ
VSk6IEZvciByZWxlYXNlIGJ1aWxkcywgc3dpdGNoIHRvIEFTU0VSVF9VTlVTRUQuCisKIDIwMTct
MDMtMTAgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgUGVyY2VudGFn
ZSBjb25zdHJhaW5lZCBpbWFnZXMgc2hyaW5raW5nIGluc2lkZSBibG9ja3MgaW5zaWRlIG5lc3Rl
ZCBmbGV4IGJveGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA3NjU1MDRjOWQ2
OS4uNTMzOWQ3ZjAwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMSw0ICsx
LDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMDgsIDIwMTIsIDIwMTQtMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAwNi0yMDA4LCAyMDEy
LCAyMDE0LTIwMTUsIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5
cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAjIENv
cHlyaWdodCAoQykgMjAwOSBDYW1lcm9uIE1jQ29ybWFjayA8Y2FtQG1jYy5pZC5hdT4KICMKQEAg
LTU2Miw2ICs1NjIsMjUgQEAgSlNfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvaHRt
bC9jYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwv
Y2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwv
Y2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0
bWwvY2FudmFzL1dlYkdQVUJ1ZmZlci5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMv
V2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2Vi
R1BVQ29tbWFuZFF1ZXVlLmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHUFVE
ZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9X
ZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMv
V2ViR1BVRHJhd2FibGUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdQVUZ1
bmN0aW9uLmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHUFVMaWJyYXJ5Lmlk
bCBcCisgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rl
ci5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyaW5nQ29udGV4
dC5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yLmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHUFVS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5pZGwgXAorICAgICQoV2ViQ29yZSkv
aHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaWRs
IFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9y
LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFz
L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRt
bC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5pZGwgXAorICAgICQoV2ViQ29yZSkv
aHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZS5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9jYW52
YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvdHJh
Y2svQXVkaW9UcmFjay5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9BdWRpb1RyYWNr
TGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9EYXRhQ3VlLmlkbCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
YjgxNGQzMTVhNjAuLjQ4NzhmMjM3OGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDA1LDYgKzE0MDUsNjcgQEAKIAkJMzE5
QUUwNjMxNDJENkIyNDAwNjU2M0ExIC8qIFN0eWxlRmlsdGVyRGF0YS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTlBRTA2MTE0MkQ2QjI0MDA2NTYz
QTEgLyogU3R5bGVGaWx0ZXJEYXRhLmNwcCAqLzsgfTsKIAkJMzE5QUUwNjQxNDJENkIyNDAwNjU2
M0ExIC8qIFN0eWxlRmlsdGVyRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzE5QUUwNjIxNDJENkIyNDAwNjU2M0ExIC8qIFN0eWxlRmlsdGVyRGF0
YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMx
OUZCRDVGMTVEMkY0NjQwMDk2NDBBNiAvKiBDYWNoZWRJbWFnZUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE5RkJENUQxNUQyRjQ0NDAwOTY0
MEE2IC8qIENhY2hlZEltYWdlQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzFBMDg5MDQxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVUJ1
ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MUEwODhDNjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVQnVmZmVyLmNwcCAqLzsgfTsKKwkJMzFB
MDg5MDUxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg4QzkxRTczN0I0RDAw
M0I2NjA5IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuY3BwICovOyB9OworCQkzMUEwODkwNjFFNzM3
RDUxMDAzQjY2MDkgLyogV2ViR1BVQ29tbWFuZFF1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OENDMUU3MzdCNEQwMDNCNjYwOSAvKiBX
ZWJHUFVDb21tYW5kUXVldWUuY3BwICovOyB9OworCQkzMUEwODkwNzFFNzM3RDUxMDAzQjY2MDkg
LyogV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODhDRjFFNzM3QjREMDAzQjY2MDkgLyogV2Vi
R1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAgKi87IH07CisJCTMxQTA4OTA4MUU3MzdENTEw
MDNCNjYwOSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODhEMjFFNzM3QjREMDAzQjY2MDkgLyog
V2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwICovOyB9OworCQkzMUEwODkwOTFFNzM3RDUxMDAz
QjY2MDkgLyogV2ViR1BVRHJhd2FibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzFBMDg4RDUxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVURyYXdh
YmxlLmNwcCAqLzsgfTsKKwkJMzFBMDg5MEExRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVUVudW1z
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4
OEQ4MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVFbnVtcy5jcHAgKi87IH07CisJCTMxQTA4OTBC
MUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODhEQjFFNzM3QjREMDAzQjY2MDkgLyog
V2ViR1BVRnVuY3Rpb24uY3BwICovOyB9OworCQkzMUEwODkwQzFFNzM3RDUxMDAzQjY2MDkgLyog
V2ViR1BVTGlicmFyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMUEwODhERTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVTGlicmFyeS5jcHAgKi87
IH07CisJCTMxQTA4OTBEMUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVPYmplY3QuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg4RTExRTczN0I0
RDAwM0I2NjA5IC8qIFdlYkdQVU9iamVjdC5jcHAgKi87IH07CisJCTMxQTA4OTBFMUU3MzdENTEw
MDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODhFMzFFNzM3QjREMDAzQjY2MDkg
LyogV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwICovOyB9OworCQkzMUEwODkwRjFFNzM3
RDUxMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODhFNjFFNzM3QjREMDAzQjY2MDkg
LyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAgKi87IH07CisJCTMxQTA4OTEwMUU3MzdENTEw
MDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg4RTkxRTczN0I0
RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi87
IH07CisJCTMxQTA4OTExMUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMUEwODhFQzFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovOyB9OworCQkzMUEwODkxMjFFNzM3RDUx
MDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg4RUYx
RTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yLmNwcCAqLzsgfTsKKwkJMzFBMDg5MTMxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVVJlbmRl
clBhc3NEZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxQTA4OEYyMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvci5jcHAgKi87IH07CisJCTMxQTA4OTE0MUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg4RjUxRTczN0I0RDAwM0I2NjA5
IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi87
IH07CisJCTMxQTA4OTE1MUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzFBMDg4RjgxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvci5jcHAgKi87IH07CisJCTMxQTA4OTE2MUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVSZW5k
ZXJQaXBlbGluZVN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxQTA4OEZCMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQaXBlbGlu
ZVN0YXRlLmNwcCAqLzsgfTsKKwkJMzFBMDg5MTcxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVVRl
eHR1cmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzFBMDg4RkUxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVRleHR1cmUuY3BwICovOyB9OworCQkz
MUEwODkxODFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5MDExRTcz
N0I0RDAwM0I2NjA5IC8qIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmNwcCAqLzsgfTsKKwkJMzFB
MDg5MTkxRTczN0Q1NTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODhD
NDFFNzM3QjJDMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCAq
LzsgfTsKKwkJMzFBMDg5MUExRTczN0Q1NTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0F0
dGFjaG1lbnREZXNjcmlwdG9yQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OEM1MUU3MzdCMkMwMDNCNjYwOSAvKiBKU1dlYkdQVVJl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvckN1c3RvbS5jcHAgKi87IH07CisJCTMxQTA4OTU0
MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODkxQjFFNzM4RDU5MDAzQjY2MDkgLyog
SlNXZWJHUFVCdWZmZXIuY3BwICovOyB9OworCQkzMUEwODk1NjFFNzM4RDU5MDAzQjY2MDkgLyog
SlNXZWJHUFVCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxQTA4OTFEMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUJ1ZmZlci5oICovOyB9
OworCQkzMUEwODk1NzFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVDb21tYW5kQnVmZmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTFF
MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwICovOyB9OworCQkz
MUEwODk1OTFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVDb21tYW5kQnVmZmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODkyMDFFNzM4RDU5
MDAzQjY2MDkgLyogSlNXZWJHUFVDb21tYW5kQnVmZmVyLmggKi87IH07CisJCTMxQTA4OTVBMUU3
MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUNvbW1hbmRRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODkyMTFFNzM4RDU5MDAzQjY2MDkg
LyogSlNXZWJHUFVDb21tYW5kUXVldWUuY3BwICovOyB9OworCQkzMUEwODk1QzFFNzM4RDU5MDAz
QjY2MDkgLyogSlNXZWJHUFVDb21tYW5kUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTIzMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQ
VUNvbW1hbmRRdWV1ZS5oICovOyB9OworCQkzMUEwODk1RDFFNzM4RDU5MDAzQjY2MDkgLyogSlNX
ZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTI0MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQ
VURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwICovOyB9OworCQkzMUEwODk1RjFFNzM4RDU5MDAz
QjY2MDkgLyogSlNXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODkyNjFFNzM4RDU5MDAzQjY2MDkg
LyogSlNXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmggKi87IH07CisJCTMxQTA4OTYwMUU3
MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTI3MUU3MzhENTkwMDNC
NjYwOSAvKiBKU1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcCAqLzsgfTsKKwkJMzFBMDg5NjIx
RTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTI5MUU3MzhENTkwMDNC
NjYwOSAvKiBKU1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmggKi87IH07CisJCTMxQTA4OTYzMUU3
MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVURyYXdhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTJBMUU3MzhENTkwMDNCNjYwOSAvKiBK
U1dlYkdQVURyYXdhYmxlLmNwcCAqLzsgfTsKKwkJMzFBMDg5NjUxRTczOEQ1OTAwM0I2NjA5IC8q
IEpTV2ViR1BVRHJhd2FibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxQTA4OTJDMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVURyYXdhYmxlLmgg
Ki87IH07CisJCTMxQTA4OTY2MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUZ1bmN0aW9uLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTJE
MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUZ1bmN0aW9uLmNwcCAqLzsgfTsKKwkJMzFBMDg5
NjgxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTJGMUU3MzhENTkwMDNCNjYwOSAv
KiBKU1dlYkdQVUZ1bmN0aW9uLmggKi87IH07CisJCTMxQTA4OTY5MUU3MzhENTkwMDNCNjYwOSAv
KiBKU1dlYkdQVUxpYnJhcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzFBMDg5MzAxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVTGlicmFyeS5j
cHAgKi87IH07CisJCTMxQTA4OTZCMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUxpYnJhcnku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTMy
MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUxpYnJhcnkuaCAqLzsgfTsKKwkJMzFBMDg5NkMx
RTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5MzMxRTczOEQ1
OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwICovOyB9OworCQkz
MUEwODk2RTFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5MzUx
RTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaCAqLzsgfTsK
KwkJMzFBMDg5NkYxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODkz
NjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcCAqLzsgfTsK
KwkJMzFBMDg5NzExRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5Mzgx
RTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oICovOyB9OworCQkz
MUEwODk3MjFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzFBMDg5MzkxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yLmNwcCAqLzsgfTsKKwkJMzFBMDg5NzQxRTczOEQ1QTAwM0I2NjA5IC8qIEpT
V2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODkzQjFFNzM4RDU5MDAzQjY2MDkgLyog
SlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLzsgfTsKKwkJMzFBMDg5
NzUxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzFBMDg5M0MxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IuY3BwICovOyB9OworCQkzMUEwODk3NzFFNzM4RDVBMDAzQjY2MDkg
LyogSlNXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5M0UxRTczOEQ1OTAw
M0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCAq
LzsgfTsKKwkJMzFBMDg5NzgxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5M0YxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVu
ZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovOyB9OworCQkzMUEwODk3QTFF
NzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3Jp
cHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFB
MDg5NDExRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVu
dERlc2NyaXB0b3IuaCAqLzsgfTsKKwkJMzFBMDg5N0IxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2Vi
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5NDIxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVu
ZGVyUGFzc0Rlc2NyaXB0b3IuY3BwICovOyB9OworCQkzMUEwODk3RDFFNzM4RDVBMDAzQjY2MDkg
LyogSlNXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5NDQxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2Vi
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLzsgfTsKKwkJMzFBMDg5N0UxRTczOEQ1QTAwM0I2
NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTQ1
MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvci5jcHAgKi87IH07CisJCTMxQTA4OTgwMUU3MzhENUEwMDNCNjYwOSAvKiBKU1dl
YkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5NDcxRTczOEQ1OTAwM0I2
NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgg
Ki87IH07CisJCTMxQTA4OTgxMUU3MzhENUEwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMUEwODk0ODFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IuY3BwICovOyB9OworCQkzMUEwODk4MzFFNzM4RDVBMDAzQjY2MDkgLyogSlNX
ZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTRBMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovOyB9OworCQkzMUEwODk4NDFFNzM4RDVBMDAz
QjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTRCMUU3MzhENTkwMDNCNjYwOSAv
KiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwICovOyB9OworCQkzMUEwODk4NjFFNzM4
RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODk0RDFFNzM4RDU5MDAzQjY2
MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmggKi87IH07CisJCTMxQTA4OTg3MUU3
MzhENUEwMDNCNjYwOSAvKiBKU1dlYkdQVVRleHR1cmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5NEUxRTczOEQ1OTAwM0I2NjA5IC8qIEpT
V2ViR1BVVGV4dHVyZS5jcHAgKi87IH07CisJCTMxQTA4OTg5MUU3MzhENUEwMDNCNjYwOSAvKiBK
U1dlYkdQVVRleHR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxQTA4OTUwMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVRleHR1cmUuaCAqLzsg
fTsKKwkJMzFBMDg5OEExRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVVGV4dHVyZURlc2NyaXB0
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFB
MDg5NTExRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwICov
OyB9OworCQkzMUEwODk4QzFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVUZXh0dXJlRGVzY3Jp
cHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFB
MDg5NTMxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaCAqLzsg
fTsKIAkJMzFBNzk1QzYxODg4QkFEQzAwMzgyRjkwIC8qIEpTQU5HTEVJbnN0YW5jZWRBcnJheXMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBNzk1
QzQxODg4QkFEMTAwMzgyRjkwIC8qIEpTQU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwICovOyB9Owog
CQkzMUE3OTVDNzE4ODhCQ0IyMDAzODJGOTAgLyogQU5HTEVJbnN0YW5jZWRBcnJheXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTc5NUMyMTg4OEI3
MjQwMDM4MkY5MCAvKiBBTkdMRUluc3RhbmNlZEFycmF5cy5oICovOyB9OwogCQkzMUE3OTVDODE4
ODhCQ0I1MDAzODJGOTAgLyogQU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBNzk1QzExODg4QjcyNDAwMzgyRjkw
IC8qIEFOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcCAqLzsgfTsKQEAgLTg3NzcsNiArODgzOCwxMDgg
QEAKIAkJMzE5QUUwNjExNDJENkIyNDAwNjU2M0ExIC8qIFN0eWxlRmlsdGVyRGF0YS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZUZpbHRlckRhdGEuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTlBRTA2MjE0MkQ2QjI0MDA2NTYzQTEgLyog
U3R5bGVGaWx0ZXJEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxl
RmlsdGVyRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTlGQkQ1RDE1RDJG
NDQ0MDA5NjQwQTYgLyogQ2FjaGVkSW1hZ2VDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ2FjaGVkSW1hZ2VDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzFBMDg4QzQxRTczN0IyQzAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4
dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdQ
VVJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzMUEwODhDNTFFNzM3QjJDMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVu
dERlc2NyaXB0b3JDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3JDdXN0b20uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhDNjFFNzM3QjREMDAzQjY2MDkgLyogV2Vi
R1BVQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQ
VUJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEM3MUU3MzdC
NEQwMDNCNjYwOSAvKiBXZWJHUFVCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViR1BVQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4
OEM4MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVCdWZmZXIuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFdlYkdQVUJ1ZmZlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMx
QTA4OEM5MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVDb21tYW5kQnVmZmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUNvbW1hbmRCdWZmZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhDQTFFNzM3QjREMDAzQjY2MDkgLyog
V2ViR1BVQ29tbWFuZEJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJHUFVDb21tYW5kQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4
OENCMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVDb21tYW5kQnVmZmVyLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXZWJHUFVDb21tYW5kQnVmZmVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMzFBMDg4Q0MxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUNvbW1hbmRRdWV1
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVDb21tYW5k
UXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhDRDFFNzM3QjRE
MDAzQjY2MDkgLyogV2ViR1BVQ29tbWFuZFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYkdQVUNvbW1hbmRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzMUEwODhDRTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVQ29tbWFuZFF1ZXVlLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVDb21tYW5kUXVldWUuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkzMUEwODhDRjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRGVw
dGhTdGVuY2lsRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMzFBMDg4RDAxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVURlcHRoU3RlbmNp
bERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVRGVw
dGhTdGVuY2lsRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEw
ODhEMTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEQyMUU3MzdCNEQwMDNCNjYwOSAv
KiBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTMxQTA4OEQzMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVEZXB0aFN0ZW5j
aWxTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVEZXB0aFN0
ZW5jaWxTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhENDFFNzM3
QjREMDAzQjY2MDkgLyogV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMzFBMDg4RDUxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVURyYXdhYmxlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVURyYXdhYmxlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RDYxRTczN0I0RDAwM0I2NjA5
IC8qIFdlYkdQVURyYXdhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkdQVURyYXdhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEQ3MUU3
MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVEcmF3YWJsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gV2ViR1BVRHJhd2FibGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEw
ODhEODFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRW51bXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVRW51bXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzMUEwODhEOTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRW51bXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVRW51bXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4REExRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUVudW1z
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVFbnVtcy5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OERCMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVGdW5j
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVGdW5j
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OERDMUU3MzdCNEQw
MDNCNjYwOSAvKiBXZWJHUFVGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJHUFVGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEw
ODhERDFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRnVuY3Rpb24uaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYkdQVUZ1bmN0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzFBMDg4REUxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUxpYnJhcnkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVTGlicmFyeS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OERGMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVM
aWJyYXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUxpYnJhcnku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RTAxRTczN0I0RDAwM0I2NjA5
IC8qIFdlYkdQVUxpYnJhcnkuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVUxpYnJh
cnkuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhFMTFFNzM3QjREMDAz
QjY2MDkgLyogV2ViR1BVT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkdQVU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMx
QTA4OEUyMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMxQTA4OEUzMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJDb21tYW5kRW5j
b2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5k
ZXJDb21tYW5kRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4
OEU0MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhFNTFFNzM3QjREMDAzQjY2MDkg
LyogV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFdlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzFBMDg4RTYxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVUmVuZGVyaW5n
Q29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEU3MUU3MzdC
NEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RTgxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlcmlu
Z0NvbnRleHQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlcmluZ0NvbnRl
eHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhFOTFFNzM3QjREMDAz
QjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50
RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEVBMUU3
MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEVCMUU3
MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3Jp
cHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEVDMUU3MzdCNEQw
MDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTMxQTA4OEVEMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzMUEwODhFRTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQ
VVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RUYxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RjAxRTczN0I0RDAwM0I2NjA5
IC8qIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEYxMUU3MzdC
NEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVu
dERlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhGMjFF
NzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhGMzFFNzM3QjREMDAzQjY2
MDkgLyogV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RjQxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVSZW5kZXJQYXNz
RGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEY1MUU3
MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RjYxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RjcxRTczN0I0RDAwM0I2NjA5
IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RjgxRTcz
N0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhGOTFFNzM3QjRE
MDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhGQTFFNzM3QjREMDAzQjY2MDkgLyog
V2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzMUEwODhGQjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGlwZWxp
bmVTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVS
ZW5kZXJQaXBlbGluZVN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFB
MDg4RkMxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhGRDFFNzM3QjREMDAzQjY2MDkg
LyogV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
V2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTMxQTA4OEZFMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVUZXh0dXJlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVRleHR1cmUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhGRjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BV
VGV4dHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVUZXh0dXJl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTAwMUU3MzdCNEQwMDNCNjYw
OSAvKiBXZWJHUFVUZXh0dXJlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVUZXh0
dXJlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5MDExRTczN0I0RDAw
M0I2NjA5IC8qIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5MDIxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVRl
eHR1cmVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQ
VVRleHR1cmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4
OTAzMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkzMUEwODkxQjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVC
dWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNXZWJHUFVC
dWZmZXIuY3BwOyBwYXRoID0gSlNXZWJHUFVCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzMUEwODkxRDFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVCdWZmZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJHUFVCdWZmZXIuaDsgcGF0aCA9
IEpTV2ViR1BVQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTFF
MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNXZWJHUFVDb21tYW5kQnVmZmVyLmNwcDsgcGF0
aCA9IEpTV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTMxQTA4OTIwMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUNvbW1hbmRCdWZmZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJHUFVDb21tYW5kQnVmZmVyLmg7
IHBhdGggPSBKU1dlYkdQVUNvbW1hbmRCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzFBMDg5MjExRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVQ29tbWFuZFF1ZXVlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTV2ViR1BVQ29tbWFuZFF1
ZXVlLmNwcDsgcGF0aCA9IEpTV2ViR1BVQ29tbWFuZFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzFBMDg5MjMxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVQ29tbWFu
ZFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2ViR1BVQ29tbWFu
ZFF1ZXVlLmg7IHBhdGggPSBKU1dlYkdQVUNvbW1hbmRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzMUEwODkyNDFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVEZXB0aFN0
ZW5jaWxEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IEpTV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHA7IHBhdGggPSBKU1dlYkdQVURlcHRo
U3RlbmNpbERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEw
ODkyNjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2ViR1BVRGVwdGhTdGVuY2lsRGVz
Y3JpcHRvci5oOyBwYXRoID0gSlNXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTI3MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dl
YkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEpTV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwOyBwYXRoID0gSlNXZWJHUFVEZXB0
aFN0ZW5jaWxTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTI5
MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaDsgcGF0
aCA9IEpTV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzFBMDg5MkExRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVRHJhd2FibGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNXZWJHUFVEcmF3YWJsZS5jcHA7
IHBhdGggPSBKU1dlYkdQVURyYXdhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzFBMDg5MkMxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVRHJhd2FibGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJHUFVEcmF3YWJsZS5oOyBwYXRoID0gSlNX
ZWJHUFVEcmF3YWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODkyRDFF
NzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBKU1dlYkdQVUZ1bmN0aW9uLmNwcDsgcGF0aCA9IEpTV2ViR1BV
RnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODkyRjFFNzM4
RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBKU1dlYkdQVUZ1bmN0aW9uLmg7IHBhdGggPSBKU1dlYkdQVUZ1bmN0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTMwMUU3MzhENTkwMDNCNjYwOSAv
KiBKU1dlYkdQVUxpYnJhcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gSlNXZWJHUFVMaWJyYXJ5LmNwcDsgcGF0aCA9IEpTV2ViR1BVTGlicmFyeS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTMyMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dl
YkdQVUxpYnJhcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJHUFVM
aWJyYXJ5Lmg7IHBhdGggPSBKU1dlYkdQVUxpYnJhcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMzFBMDg5MzMxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyQ29tbWFu
ZEVuY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNXZWJH
UFVSZW5kZXJDb21tYW5kRW5jb2Rlci5jcHA7IHBhdGggPSBKU1dlYkdQVVJlbmRlckNvbW1hbmRF
bmNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5MzUxRTczOEQ1
OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5oOyBwYXRo
ID0gSlNXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzMUEwODkzNjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJpbmdDb250
ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTV2ViR1BVUmVu
ZGVyaW5nQ29udGV4dC5jcHA7IHBhdGggPSBKU1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODkzODFFNzM4RDU5MDAzQjY2MDkgLyog
SlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oOyBwYXRoID0gSlNXZWJHUFVSZW5kZXJpbmdD
b250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTM5MUU3MzhENTkw
MDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU1dlYkdQVVJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvci5jcHA7IHBhdGggPSBKU1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50
RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTNCMUU3
MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU1dlYkdQVVJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvci5oOyBwYXRoID0gSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5M0MxRTczOEQ1
OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNXZWJHUFVSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHA7IHBhdGggPSBKU1dlYkdQVVJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzFBMDg5M0UxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
SlNXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oOyBwYXRoID0gSlNX
ZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkzMUEwODkzRjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBKU1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yLmNwcDsgcGF0aCA9IEpTV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODk0MTFFNzM4RDU5MDAz
QjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0
dGFjaG1lbnREZXNjcmlwdG9yLmg7IHBhdGggPSBKU1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTQy
MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTV2ViR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3IuY3BwOyBwYXRoID0gSlNXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTQ0MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dl
YkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEpTV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaDsgcGF0aCA9IEpTV2ViR1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5NDUx
RTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTV2Vi
R1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcDsgcGF0aCA9IEpT
V2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5NDcxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2Vi
R1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yLmg7IHBhdGggPSBKU1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODk0ODFF
NzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNXZWJHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IuY3BwOyBwYXRoID0gSlNXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODk0QTFFNzM4RDU5MDAzQjY2
MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaDsgcGF0
aCA9IEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTMxQTA4OTRCMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBp
cGVsaW5lU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNX
ZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcDsgcGF0aCA9IEpTV2ViR1BVUmVuZGVyUGlwZWxp
bmVTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTREMUU3MzhE
NTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmg7IHBhdGgg
PSBKU1dlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzFBMDg5NEUxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVVGV4dHVyZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU1dlYkdQVVRleHR1cmUuY3BwOyBw
YXRoID0gSlNXZWJHUFVUZXh0dXJlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MzFBMDg5NTAxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVVGV4dHVyZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBKU1dlYkdQVVRleHR1cmUuaDsgcGF0aCA9IEpTV2ViR1BV
VGV4dHVyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODk1MTFFNzM4RDU5
MDAzQjY2MDkgLyogSlNXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmNwcDsgcGF0
aCA9IEpTV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzMUEwODk1MzFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVUZXh0dXJlRGVzY3Jp
cHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU1dlYkdQVVRleHR1cmVE
ZXNjcmlwdG9yLmg7IHBhdGggPSBKU1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxQTc5NUMxMTg4OEI3MjQwMDM4MkY5MCAvKiBBTkdMRUlu
c3RhbmNlZEFycmF5cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
TkdMRUluc3RhbmNlZEFycmF5cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMx
QTc5NUMyMTg4OEI3MjQwMDM4MkY5MCAvKiBBTkdMRUluc3RhbmNlZEFycmF5cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBTkdMRUluc3RhbmNlZEFycmF5cy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzMUE3OTVDMzE4ODhCNzI0MDAzODJGOTAgLyogQU5HTEVJ
bnN0YW5jZWRBcnJheXMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEFOR0xFSW5zdGFuY2Vk
QXJyYXlzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NTQzLDYgKzE3NzA2
LDY4IEBACiAJCQkJNzdBMTdBNzQxMkYyODY0MjAwNEUwMkY2IC8qIFdlYkdMVmVydGV4QXJyYXlP
YmplY3RPRVMuY3BwICovLAogCQkJCTc3QTE3QTc1MTJGMjg2NDIwMDRFMDJGNiAvKiBXZWJHTFZl
cnRleEFycmF5T2JqZWN0T0VTLmggKi8sCiAJCQkJNzdBMTdBNzYxMkYyODY0MjAwNEUwMkY2IC8q
IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaWRsICovLAorCQkJCTMxQTA4OEM2MUU3MzdCNEQw
MDNCNjYwOSAvKiBXZWJHUFVCdWZmZXIuY3BwICovLAorCQkJCTMxQTA4OEM3MUU3MzdCNEQwMDNC
NjYwOSAvKiBXZWJHUFVCdWZmZXIuaCAqLywKKwkJCQkzMUEwODhDODFFNzM3QjREMDAzQjY2MDkg
LyogV2ViR1BVQnVmZmVyLmlkbCAqLywKKwkJCQkzMUEwODhDOTFFNzM3QjREMDAzQjY2MDkgLyog
V2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgKi8sCisJCQkJMzFBMDg4Q0ExRTczN0I0RDAwM0I2NjA5
IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuaCAqLywKKwkJCQkzMUEwODhDQjFFNzM3QjREMDAzQjY2
MDkgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwgKi8sCisJCQkJMzFBMDg4Q0MxRTczN0I0RDAw
M0I2NjA5IC8qIFdlYkdQVUNvbW1hbmRRdWV1ZS5jcHAgKi8sCisJCQkJMzFBMDg4Q0QxRTczN0I0
RDAwM0I2NjA5IC8qIFdlYkdQVUNvbW1hbmRRdWV1ZS5oICovLAorCQkJCTMxQTA4OENFMUU3MzdC
NEQwMDNCNjYwOSAvKiBXZWJHUFVDb21tYW5kUXVldWUuaWRsICovLAorCQkJCTMxQTA4OENGMUU3
MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcCAqLywKKwkJ
CQkzMUEwODhEMDFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRv
ci5oICovLAorCQkJCTMxQTA4OEQxMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVEZXB0aFN0ZW5j
aWxEZXNjcmlwdG9yLmlkbCAqLywKKwkJCQkzMUEwODhEMjFFNzM3QjREMDAzQjY2MDkgLyogV2Vi
R1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwICovLAorCQkJCTMxQTA4OEQzMUU3MzdCNEQwMDNCNjYw
OSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oICovLAorCQkJCTMxQTA4OEQ0MUU3MzdCNEQw
MDNCNjYwOSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5pZGwgKi8sCisJCQkJMzFBMDg4RDUx
RTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVURyYXdhYmxlLmNwcCAqLywKKwkJCQkzMUEwODhENjFF
NzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRHJhd2FibGUuaCAqLywKKwkJCQkzMUEwODhENzFFNzM3
QjREMDAzQjY2MDkgLyogV2ViR1BVRHJhd2FibGUuaWRsICovLAorCQkJCTMxQTA4OEQ4MUU3MzdC
NEQwMDNCNjYwOSAvKiBXZWJHUFVFbnVtcy5jcHAgKi8sCisJCQkJMzFBMDg4RDkxRTczN0I0RDAw
M0I2NjA5IC8qIFdlYkdQVUVudW1zLmggKi8sCisJCQkJMzFBMDg4REExRTczN0I0RDAwM0I2NjA5
IC8qIFdlYkdQVUVudW1zLmlkbCAqLywKKwkJCQkzMUEwODhEQjFFNzM3QjREMDAzQjY2MDkgLyog
V2ViR1BVRnVuY3Rpb24uY3BwICovLAorCQkJCTMxQTA4OERDMUU3MzdCNEQwMDNCNjYwOSAvKiBX
ZWJHUFVGdW5jdGlvbi5oICovLAorCQkJCTMxQTA4OEREMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJH
UFVGdW5jdGlvbi5pZGwgKi8sCisJCQkJMzFBMDg4REUxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQ
VUxpYnJhcnkuY3BwICovLAorCQkJCTMxQTA4OERGMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVM
aWJyYXJ5LmggKi8sCisJCQkJMzFBMDg4RTAxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUxpYnJh
cnkuaWRsICovLAorCQkJCTMxQTA4OEUxMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVPYmplY3Qu
Y3BwICovLAorCQkJCTMxQTA4OEUyMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVPYmplY3QuaCAq
LywKKwkJCQkzMUEwODhFMzFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyQ29tbWFuZEVu
Y29kZXIuY3BwICovLAorCQkJCTMxQTA4OEU0MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5k
ZXJDb21tYW5kRW5jb2Rlci5oICovLAorCQkJCTMxQTA4OEU1MUU3MzdCNEQwMDNCNjYwOSAvKiBX
ZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5pZGwgKi8sCisJCQkJMzFBMDg4RTYxRTczN0I0RDAw
M0I2NjA5IC8qIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwICovLAorCQkJCTMxQTA4OEU3MUU3
MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmggKi8sCisJCQkJMzFBMDg4
RTgxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuaWRsICovLAorCQkJ
CTMxQTA4OEU5MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3IuY3BwICovLAorCQkJCTMxQTA4OEVBMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVS
ZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLywKKwkJCQkzMUEwODhFQjFFNzM3QjRE
MDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmlkbCAqLywK
KwkJCQkzMUEwODhFQzFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IuY3BwICovLAorCQkJCTMxQTA4OEVEMUU3MzdCNEQwMDNCNjYwOSAv
KiBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oICovLAorCQkJCTMx
QTA4OEVFMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvci5pZGwgKi8sCisJCQkJMzFBMDg4RUYxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQ
VVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLywKKwkJCQkzMUEwODhG
MDFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2Ny
aXB0b3IuaCAqLywKKwkJCQkzMUEwODhGMTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVy
UGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaWRsICovLAorCQkJCTMxQTA4OEYyMUU3MzdC
NEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzFB
MDg4RjMxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmggKi8s
CisJCQkJMzFBMDg4RjQxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlw
dG9yLmlkbCAqLywKKwkJCQkzMUEwODhGNTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLywKKwkJCQkzMUEwODhGNjFF
NzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yLmggKi8sCisJCQkJMzFBMDg4RjcxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5pZGwgKi8sCisJCQkJMzFBMDg4Rjgx
RTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAgKi8s
CisJCQkJMzFBMDg4RjkxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvci5oICovLAorCQkJCTMxQTA4OEZBMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsICovLAorCQkJCTMxQTA4OEZCMUU3MzdCNEQwMDNCNjYw
OSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcCAqLywKKwkJCQkzMUEwODhGQzFFNzM3
QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oICovLAorCQkJCTMxQTA4
OEZEMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmlkbCAqLywK
KwkJCQkzMUEwODhGRTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVVGV4dHVyZS5jcHAgKi8sCisJ
CQkJMzFBMDg4RkYxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVRleHR1cmUuaCAqLywKKwkJCQkz
MUEwODkwMDFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVVGV4dHVyZS5pZGwgKi8sCisJCQkJMzFB
MDg5MDExRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmNwcCAqLywK
KwkJCQkzMUEwODkwMjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVVGV4dHVyZURlc2NyaXB0b3Iu
aCAqLywKKwkJCQkzMUEwODkwMzFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVVGV4dHVyZURlc2Ny
aXB0b3IuaWRsICovLAogCQkJKTsKIAkJCXBhdGggPSBjYW52YXM7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtMjA4ODEsNiArMjExMDYsNDQgQEAKIAkJCQk2Rjk5NUEzMDFBNzA4MzM3
MDBBNzM1RjQgLyogSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0LmggKi8sCiAJCQkJNzdFRjYyRjEx
MkY5REI3NDAwQzc3QkQyIC8qIEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAgKi8sCiAJ
CQkJNzdFRjYyRjIxMkY5REI3NDAwQzc3QkQyIC8qIEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9F
Uy5oICovLAorCQkJCTMxQTA4OTFCMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUJ1ZmZlci5j
cHAgKi8sCisJCQkJMzFBMDg5MUQxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVQnVmZmVyLmgg
Ki8sCisJCQkJMzFBMDg5MUUxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVQ29tbWFuZEJ1ZmZl
ci5jcHAgKi8sCisJCQkJMzFBMDg5MjAxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVQ29tbWFu
ZEJ1ZmZlci5oICovLAorCQkJCTMxQTA4OTIxMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUNv
bW1hbmRRdWV1ZS5jcHAgKi8sCisJCQkJMzFBMDg5MjMxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2Vi
R1BVQ29tbWFuZFF1ZXVlLmggKi8sCisJCQkJMzFBMDg5MjQxRTczOEQ1OTAwM0I2NjA5IC8qIEpT
V2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzFBMDg5MjYxRTczOEQ1
OTAwM0I2NjA5IC8qIEpTV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oICovLAorCQkJCTMx
QTA4OTI3MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcCAq
LywKKwkJCQkzMUEwODkyOTFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVEZXB0aFN0ZW5jaWxT
dGF0ZS5oICovLAorCQkJCTMxQTA4OTJBMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVURyYXdh
YmxlLmNwcCAqLywKKwkJCQkzMUEwODkyQzFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVEcmF3
YWJsZS5oICovLAorCQkJCTMxQTA4OTJEMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUZ1bmN0
aW9uLmNwcCAqLywKKwkJCQkzMUEwODkyRjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVGdW5j
dGlvbi5oICovLAorCQkJCTMxQTA4OTMwMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUxpYnJh
cnkuY3BwICovLAorCQkJCTMxQTA4OTMyMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUxpYnJh
cnkuaCAqLywKKwkJCQkzMUEwODkzMzFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJD
b21tYW5kRW5jb2Rlci5jcHAgKi8sCisJCQkJMzFBMDg5MzUxRTczOEQ1OTAwM0I2NjA5IC8qIEpT
V2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaCAqLywKKwkJCQkzMUEwODkzNjFFNzM4RDU5MDAz
QjY2MDkgLyogSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcCAqLywKKwkJCQkzMUEwODkzODFF
NzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmggKi8sCisJCQkJMzFB
MDg5MzkxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yLmNwcCAqLywKKwkJCQkzMUEwODkzQjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVS
ZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLywKKwkJCQkzMUEwODkzQzFFNzM4RDU5
MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5j
cHAgKi8sCisJCQkJMzFBMDg5M0UxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLywKKwkJCQkzMUEwODkzRjFFNzM4RDU5MDAz
QjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAg
Ki8sCisJCQkJMzFBMDg5NDExRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLywKKwkJCQkzMUEwODk0MjFFNzM4RDU5MDAzQjY2
MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzFBMDg5NDQx
RTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLywKKwkJ
CQkzMUEwODk0NTFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovLAorCQkJCTMxQTA4OTQ3MUU3MzhENTkwMDNCNjYw
OSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oICov
LAorCQkJCTMxQTA4OTQ4MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzFBMDg5NEExRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2Vi
R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8sCisJCQkJMzFBMDg5NEIxRTczOEQ1OTAw
M0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHAgKi8sCisJCQkJMzFBMDg5
NEQxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oICovLAor
CQkJCTMxQTA4OTRFMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVRleHR1cmUuY3BwICovLAor
CQkJCTMxQTA4OTUwMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVRleHR1cmUuaCAqLywKKwkJ
CQkzMUEwODk1MTFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5j
cHAgKi8sCisJCQkJMzFBMDg5NTMxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVVGV4dHVyZURl
c2NyaXB0b3IuaCAqLywKIAkJCQkwRkRBN0MyNDE4ODMzMzMyMDBDOTU0QjUgLyogSlNXZWJLaXRQ
bGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcCAqLywKIAkJCQkwRkRBN0MyNTE4ODMz
MzMyMDBDOTU0QjUgLyogSlNXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50Lmgg
Ki8sCiAJCQkpOwpAQCAtMjI4NDcsOCArMjMxMTAsOCBAQAogCQkJCTdBNzRFQ0JDMTAxODM5REEw
MEJGOTM5RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgKi8sCiAJCQkJQkNF
MUM0M0YwRDk4MzBGNDAwM0IwMkYyIC8qIEpTTG9jYXRpb25DdXN0b20uY3BwICovLAogCQkJCTJE
OUJGNzQ4MURCRkRERjgwMDdBN0Q5OSAvKiBKU01lZGlhS2V5U2Vzc2lvbkN1c3RvbS5jcHAgKi8s
Ci0JCQkJNDEwQjdFNzExMDQ1RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNw
cCAqLywKIAkJCQk0MTVDREFGNjFFNkNFMEQzMDA0RjExRUUgLyogSlNNZWRpYVN0cmVhbVRyYWNr
Q3VzdG9tLmNwcCAqLywKKwkJCQk0MTBCN0U3MTEwNDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdl
RXZlbnRDdXN0b20uY3BwICovLAogCQkJCUExRTVCMzFEMUFBRDFEQTQwMDZFQkVGQiAvKiBKU01v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3NDdXN0b20uY3BwICovLAogCQkJCUM2RjA5MTdFMTQzQTJC
QjkwMDY4NTg0OSAvKiBKU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwICovLAogCQkJCUJDRDlD
MjYwMEMxN0FBNjcwMDVDOTBBMiAvKiBKU05vZGVDdXN0b20uY3BwICovLApAQCAtMjI4NjIsNiAr
MjMxMjUsOCBAQAogCQkJCTdDNzNGQjE3MTkxRUY4MDgwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdl
SGFuZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwICovLAogCQkJCUJFNkRGNzA4MTcxQ0EyQzUwMERE
NTJCOCAvKiBKU1ZpZGVvVHJhY2tDdXN0b20uY3BwICovLAogCQkJCUQzRjNEMzVBMUE2OUEzQjAw
MDU5RkMyQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2VDdXN0b20uY3BwICovLAorCQkJ
CTMxQTA4OEM0MUU3MzdCMkMwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlcmluZ0NvbnRleHRDdXN0
b20uY3BwICovLAorCQkJCTMxQTA4OEM1MUU3MzdCMkMwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvckN1c3RvbS5jcHAgKi8sCiAJCQkJRTFGRjhGNjYxODA3
NDYwODAwMTMyNjc0IC8qIEpTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcCAqLywKIAkJCQlF
MUNBNUNCQjBFOENEQ0FGMDBFOEVGOTAgLyogSlNXb3JrZXJDdXN0b20uY3BwICovLAogCQkJCUUx
ODI1OEFCMEVGM0NENzAwMDkzMzI0MiAvKiBKU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcCAq
LywKQEAgLTI1NjcxLDYgKzI1OTM2LDcgQEAKIAkJCQk3QzY1MjMwMTFFMDBEMDM0MDA2NzdGMjIg
LyogQXBwbGVQYXlQYXltZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQThBNjQ1MjFEMTlGQ0ZC
MDBEMEUwMEYgLyogQXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2ZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk3QzY1MjJGQjFFMDBDOTA5MDA2NzdGMjIgLyogQXBwbGVQYXlQYXltZW50Q29udGFj
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFBMDg5NTYxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2Vi
R1BVQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzY1MjJFRjFFMDBBNEM3MDA2NzdGMjIg
LyogQXBwbGVQYXlQYXltZW50TWV0aG9kLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQThBNjQ1NjFE
MTlGQ0ZDMDBEMEUwMEYgLyogQXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0ZWRFdmVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJN0M2NTIyRjUxRTAwQTUxNzAwNjc3RjIyIC8qIEFwcGxlUGF5UGF5
bWVudFBhc3MuaCBpbiBIZWFkZXJzICovLApAQCAtMjU3MDAsNiArMjU5NjYsNyBAQAogCQkJCUZE
MzE2MDdBMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0FycmF5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGRDYyOUVBMzE1NEI0NzE2MDAwNkQwMjYgLyogQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUZEMzE1RkY3MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0Jhc2lj
UHJvY2Vzc29yTm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFBMDg5ODkxRTczOEQ1QTAwM0I2
NjA5IC8qIEpTV2ViR1BVVGV4dHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTVGRjkxMkIw
MjY3NjAwQzFBMzU5IC8qIEF1ZGlvQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDU2ODZD
QzEzQUMxODE0MDBCNjlDNjggLyogQXVkaW9CdWZmZXJDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQzMTVGRkMxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvQnVmZmVyU291cmNlTm9kZS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNTgyNSw2ICsyNjA5Miw3IEBACiAJCQkJMUE1NjlDRkMwRDdF
MkI4MjAwN0MzOTgzIC8qIGNfcnVudGltZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlDRkUw
RDdFMkI4MjAwN0MzOTgzIC8qIGNfdXRpbGl0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdDMDQ2
QzQxRTQyNTA4QjAwNzIwMUU3IC8qIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMzFBMDg5NjUxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVRHJhd2FibGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDQjE2QzFBMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRD
U1NTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzY0QjRDQzBDQjQyOTVEMDA1RjJC
NjIgLyogQ2FjaGVkRm9udC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFRjRFNjcxNzBFMTYwMzAw
QUIyNzk5IC8qIENhY2hlZEZvbnRDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjU5MzQsNiAr
MjYyMDIsNyBAQAogCQkJCTc5RjJGNUEyMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA4RjEyQjAyNkY3MDBDMUEzNTkgLyogQ29u
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVDOTdBRjMwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZp
Zy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFBMDg5NkUxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2Vi
R1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg3MjFDMDk3
N0QzQzAwMDU4MjZEOSAvKiBDb250YWluZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUEx
NDcwODExMTAyQjE1MDBFRUMwRjMgLyogQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDNUVCOTgxMEU4MjA3MjUwMEIyNTk2NSAvKiBDb250ZW50RGF0YS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yNjEzNiw2ICsyNjQwNSw3IEBACiAJCQkJQkM3RDhGRjAxQkQwM0I2
NDAwRkZFNTQwIC8qIENTU1Vuc2V0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0VF
MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU2NTgx
NTEwOUQxMzA0MzAwMEU2MUQ3IC8qIENTU1ZhbHVlS2V5d29yZHMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTMxQTA4OTU5MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUNvbW1hbmRCdWZmZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0U5MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NWYWx1ZUxp
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0OUJEOUZBMTMxRkQyRUQwMDNDNTZGMCAvKiBDU1NW
YWx1ZVBvb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0NDRDQkU4MUQ4ODYxQzIwMDczQTA3NCAv
KiBDU1NWYXJpYWJsZURhdGEuaCBpbiBIZWFkZXJzICovLApAQCAtMjYxNjEsMTIgKzI2NDMxLDE0
IEBACiAJCQkJOTdCQzZBMzAxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlVGhyZWFkLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5N0JDNkEzMjE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFj
a2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCRTIzNDgwRDE4QTk4NzE0MDBFNEI2RTggLyogRGF0
YUN1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFBMDg5NUMxRTczOEQ1OTAwM0I2NjA5IC8qIEpT
V2ViR1BVQ29tbWFuZFF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTIyN0RGMTFDM0M2REYx
MDBGNUVENTQgLyogRGF0YURldGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M3OTQxRTUx
QzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTkzNUUyQjRFMUFGRjA2Q0EwMDk3NkY5RiAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNQ
SS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1OUYxQkYxQTAwNDRDNjAwMUYzRDI5IC8qIERhdGFE
ZXRlY3RvcnNTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQzRDRjc5MUQyREQ5ODkwMEVDQ0M5
NCAvKiBEYXRhRGV0ZWN0b3JzVUlTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMjI3NDZGMEU4
MzY2NDUwMEU3Rjk3NSAvKiBEYXRhUmVmLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMUEwODk2QjFF
NzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVMaWJyYXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzY0NjQxQzExRDdGNDE2MDA2NDU1QjAgLyogRGF0YXNldERPTVN0cmluZ01hcC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODUwMzFCM0UwQTQ0RUZDNzAwRjk5MkUwIC8qIERhdGFUcmFuc2Zlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNEI4QUY0QUEwQjFDRTAyQjAwNjg3NjkwIC8qIERhdGFUcmFuc2Zl
ckFjY2Vzc1BvbGljeS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjUwNiw2ICsyNjc3OCw3IEBACiAJ
CQkJQ0Q2MkZCOTYxQUYwMThFNzAwMTJFRDdEIC8qIEdlbmVyaWNUYXNrUXVldWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk3NDZBRjI0MTRGNERERTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMjUxNEY0RERFNjAwM0U3QTcxIC8qIEdlb2xvY2F0aW9u
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkzMUEwODk3NDFFNzM4RDVBMDAzQjY2MDkgLyog
SlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk3NDZBRjI3MTRGNERERTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbkNvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTk3NDZBRjI4MTRGNERERTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlv
bkVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyOTE0RjREREU2MDAzRTdBNzAgLyog
R2VvbG9jYXRpb25Qb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjk2Miw2ICsyNzIzNSw3
IEBACiAJCQkJMzFGQjFBNjYxMjBBNUQzRjAwREMwMkEwIC8qIEpTRGV2aWNlTW90aW9uRXZlbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTU5QTg2MDA4MTE5REFGQTEwMERFRjFFRiAvKiBKU0Rldmlj
ZU9yaWVudGF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1OUREQzgzMDlFMTk4QkEw
MDFCRjNDNiAvKiBKU0RvY3VtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkzMUEwODk3RDFFNzM4
RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTIyMUUwNUUxQzAyQjQ0NDAwNkExQTAwIC8qIEpTRG9jdW1lbnRBbmltYXRpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCUFEREE5NEMyMTk2ODdBQTUwMDQ1MzAyOSAvKiBKU0RvY3Vt
ZW50Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQ5NEVERjBBMTIzRjRDMDBGREFGQzEg
LyogSlNEb2N1bWVudEZyYWdtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI2OTg3LDYgKzI3MjYx
LDcgQEAKIAkJCQk3QzhFMzRCOTFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0SlNPTi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4RTM0QkExRTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9NQ29u
dmVydE51bGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOEUzNEJCMUU0QTMzQjAwMDU0Q0UyMyAv
KiBKU0RPTUNvbnZlcnROdWxsYWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFBMDg5ODAxRTcz
OEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzhFMzRCRDFFNEEzM0IwMDA1NENFMjMgLyog
SlNET01Db252ZXJ0TnVtYmVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4RTM0QkUxRTRBMzNC
MDAwNTRDRTIzIC8qIEpTRE9NQ29udmVydE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4
RTM0QkYxRTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9NQ29udmVydFJlY29yZC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNzQwMSw2ICsyNzY3Niw3IEBACiAJCQkJODQ4NTIyN0MxMTkwMTYyQzAwNkVEQzdG
IC8qIEpTU1ZHSEtlcm5FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q5RjBBQjc1
QTZGMDAwRTVBQzQgLyogSlNTVkdJbWFnZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
RkEzREExMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0xlbmd0aC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMzFBMDg5NjIxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREEzMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0xl
bmd0aExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREE1MEFCNzVBNkYwMDBFNUFDNCAv
KiBKU1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNE
QTcwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHTGluZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApA
QCAtMjc0ODksNiArMjc3NjUsNyBAQAogCQkJCTdDNzNGQjBEMTkxRUY1QTgwMDdERTA2MSAvKiBK
U1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTE1Qzc3
MDkzMTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5U3RhdGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJFOEVGMDRCMTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2suaCBpbiBIZWFkZXJz
ICovLAorCQkJCTMxQTA4OThDMUU3MzhENUEwMDNCNjYwOSAvKiBKU1dlYkdQVVRleHR1cmVEZXNj
cmlwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCRThFRjA0RDE3MUM5MDE0MDA5QjQ4QzMgLyog
SlNWaWRlb1RyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkUyMDUwODIxOEE0NjBDMzAw
ODA2NDdFIC8qIEpTVlRUQ3VlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QUY5QjIwRDE4Q0ZCNUY0
MDBDNjRCRUYgLyogSlNWVFRSZWdpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjc1OTEsNiArMjc4
NjgsNyBAQAogCQkJCUJDRTY1QkVCMEVBQ0RGMTYwMDdFNDUzMyAvKiBMZW5ndGguaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDRkY2NDkxMEVBRDE1QzIwMEMxRDZGNyAvKiBMZW5ndGhCb3guaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU1QkE3RDYzMTUxNDM3Q0EwMEZFMUUzRiAvKiBMZW5ndGhGdW5jdGlv
bnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxQTA4OTc3MUU3MzhENUEwMDNCNjYwOSAvKiBKU1dl
YkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjg3MTY3MDFDODY5RDgzMDA0RkYwREUgLyogTGVuZ3RoUG9pbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDRkY2NDkyMEVBRDE1QzIwMEMxRDZGNyAvKiBMZW5ndGhTaXplLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTUwODAzNzFFM0YwMEIwMDA1MUQ3NUQgLyogTGliV2ViUlRDQXVkaW9N
b2R1bGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjc3NzIsNiArMjgwNTAsNyBAQAogCQkJCTM3RERD
REE1MTM4NDUwMUMwMDA4Qjc5MyAvKiBNSFRNTEFyY2hpdmUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTM3RERDREE3MTM4NDUwMUMwMDA4Qjc5MyAvKiBNSFRNTFBhcnNlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTNCODk1QUYxOURDN0VEOTAwOUNBQTkzIC8qIE1pY3JvdGFza3MuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTMxQTA4OTY4MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUZ1bmN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzN0REQ0Q5NTEzODQ0RkQ1MDAwOEI3OTMgLyogTUlNRUhlYWRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3NzJDNEYwQzRFQjMwNDAwODMyODVGIC8qIE1JTUVU
eXBlUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyRjEwODY2MTYyQjZEQTgwMDlBQzgx
RSAvKiBNaXhlZENvbnRlbnRDaGVja2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTI3OTg0LDYgKzI4
MjYzLDcgQEAKIAkJCQlBRDVBMEMyNTFERUNBQ0NDMDA3MDcwNTQgLyogUGVyZm9ybWFuY2VMb2dn
aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0ZFOTAyNzFFMzA3QzMwMDAzRTkxOTkgLyogUGVy
Zm9ybWFuY2VNb25pdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QUY0RTU1NjExREM1QTM2MDAw
RUQzREUgLyogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMUEw
ODk3QTFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVBOTkzM0QxRTM3RkIxOTAwNUI1RTRE
IC8qIFBlcmZvcm1hbmNlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QTk5MzNGMUUz
N0ZCMUYwMDVCNUU0RCAvKiBQZXJmb3JtYW5jZU9ic2VydmVyQ2FsbGJhY2suaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE1QTk5MzQxMUUzN0ZCMjgwMDVCNUU0RCAvKiBQZXJmb3JtYW5jZU9ic2VydmVy
RW50cnlMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTI4NDEyLDYgKzI4NjkyLDcgQEAKIAkJCQkw
RkM0RTQxMTE4N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZUlPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDNEE0MTUxNjI5REY1QTAwQzNFQjZFIC8qIFNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
QzRFNDEwMTg3RjgyRTEwMDQ1ODgyQyAvKiBTY3JvbGxpbmdUcmVlSU9TLmggaW4gSGVhZGVycyAq
LywKKwkJCQkzMUEwODk4NjFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGlu
ZVN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1ODA2NDE5MzI3QTYyMDBERTMyRUIgLyog
U2Nyb2xsaW5nVHJlZU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBQURERTQxNERDOEM4RjAw
QUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBM0U4
MDE5MUIzMTY5MDAwRjFCNTUgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yODU1Niw2ICsyODgzNyw3IEBACiAJCQkJNTFFMEJCMzgwREE1
QUNCNjAwQTlFNDE3IC8qIFN0b3JhZ2VNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1MEQwRTgz
MEZGNDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTM3NjM2QzFBMkU2OEJCMDA5QTdFRTIgLyogU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkzMUEwODk4MzFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNkU2RkU4MUJC
RDEyREYwMDBBNjAzMyAvKiBTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODFBQzZDMzYxMzFDNTdEMzAwMDlBN0UwIC8qIFN0cmluZ0NhbGxiYWNrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMjM1NDBGMzBEMDA3ODJFMDAyMzgyRkEgLyogU3RyaW5nVHJ1bmNhdG9y
LmggaW4gSGVhZGVycyAqLywKQEAgLTI4Nzc0LDYgKzI5MDU2LDcgQEAKIAkJCQk4M0MxRDQyNjE3
OEQ1QUI0MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0FyY1JlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjIyMjdBNjIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdDbG9zZVBhdGguaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIyMjI3QTY1MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoU2VnQ3VydmV0
b0N1YmljLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMUEwODk3MTFFNzM4RDVBMDAzQjY2MDkgLyog
SlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0MxRDQyNzE3
OEQ1QUI0MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODNDMUQ0MjgxNzhENUFCNDAwMTQxRTY4IC8qIFNWR1BhdGhTZWdDdXJ2ZXRvQ3Vi
aWNSZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTY5MEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoLmggaW4gSGVhZGVycyAqLywKQEAgLTI5MTIxLDYg
KzI5NDA0LDcgQEAKIAkJCQlBMTlEOTM0NzFBOUZFQzcyMDBCNDZDMjQgLyogV2ViRmlsdGVyRXZh
bHVhdG9yU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlEM0YzRDM2RTFBNjlCN0UwMDA1OUZDMkIg
LyogV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEMjBGNkQx
MDdGNDM4QjAwQTgwMzkyIC8qIFdlYkdMQWN0aXZlSW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MzFBMDg5NUYxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkU0N0U2NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdM
QW55LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUZGQzQ1ODFENUU4NjU1MDAyNjdBNjYgLyogV2Vi
R0xCbGFja2xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUM5MTA0MkQzMkYwMDA5RDQ0
NyAvKiBXZWJHTEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTY3Miw2ICsyOTk1Niw3IEBA
CiAJCQkJMjkxNEUzMDcxQ0FCNUE0NDAwNDk5NjZGIC8qIEFjY2Vzc2liaWxpdHlBdHRhY2htZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3RjU3QUJDMUE1MDcyNzcwMDg3NkY5OCAvKiBBY2Nl
c3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY1MkE4RkQ3MUQw
QThEMEUwMDczQ0Y0MiAvKiBBY2Nlc3NpYmlsaXR5TGFiZWwuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMzFBMDg5MTQxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzN0Y1N0FCRDFBNTA3
MjdBMDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzdGNTdBQkUxQTUwNzI3RTAwODc2Rjk4IC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTM3RjU3QUJGMUE1MDcyODEwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5
TGlzdEJveE9wdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5Nzk5LDYgKzMwMDg0LDcgQEAK
IAkJCQlBQUE3MjhGOTE2RDFEOEJDMDBEM0JCQzYgLyogQVhPYmplY3RDYWNoZUlPUy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTI5QTgxMjRCMEZCQjlDQTkwMDUxMDI5MyAvKiBBWE9iamVjdENhY2hl
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBOEM4MUYxMUUzRDM2OTAwODEyRkI3IC8qIEJh
Y2tGb3J3YXJkQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODkxNjFFNzM3
RDUxMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQzEyNEVFNzBDMjY0MUNEMDA5RTIzNDkgLyogQmFyUHJvcC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk0NjBCQjYxNTFEMEExQkYwMDAyMjE4MTIgLyogQmFzZTY0VXRpbGl0aWVzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTM3OUU2MUM5MTI2Q0E1QzMwMEI2M0U4RCAvKiBCYXNlQnV0
dG9uSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk4NjAsNiArMzAxNDYsNyBAQAog
CQkJCTFDMDkzOUVBMUExM0UxMjkwMEI3ODhFNSAvKiBDYWNoZWRTVkdGb250LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTA3NTM4NjAyMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2su
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNCMTZDMjcwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hl
ZFhTTFN0eWxlU2hlZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5NkMxRTczOEQ1OTAw
M0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRTQzQUY4RTYxQUM1QjdFODAwQ0E3MTdFIC8qIENhY2hlVmFsaWRhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0OUFFMkQ5NjEzNEVFNUY5MDA3MjkyMEEgLyogQ2FsY3VsYXRpb25W
YWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTQ4NEZDMTEwMkNGMjNDMDAxODdERDMgLyog
Q2FudmFzR3JhZGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTg4MSw2ICszMDE2OCw3IEBA
CiAJCQkJQ0RERTAyRjAxOEI1NjUxMzAwQ0Y3RkYxIC8qIENETVNlc3Npb25BVlN0cmVhbVNlc3Np
b24ubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREU1OTU5RDFCRjI3NTcxMDBBMUNCRTggLyogQ0RN
U2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVGMkRCQkU5
MTc4RTNDODEwMDE0MTQ4NiAvKiBDZXJ0aWZpY2F0ZUluZm9NYWMubW0gaW4gU291cmNlcyAqLywK
KwkJCQkzMUEwODk3NTFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUE4RTU2NjE3NTUy
QjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCQzY5
REMxNTA1RjA3NjAwMUI3NEFDIC8qIENoYW5nZVZlcnNpb25XcmFwcGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUZEMzE1RkZFMTJCMDI2NzYwMEMxQTM1OSAvKiBDaGFubmVsTWVyZ2VyTm9kZS5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTI5OTEyLDYgKzMwMjAwLDcgQEAKIAkJCQlBNTg0RkUyQjE4
NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNjU1MEI2QTEwOTlERjAyNzAwOTBENzgxIC8qIENvbW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTFGRTEzNzQxODQwMkE2NzAwODkyRjEzIC8qIENvbW1vbkNyeXB0b1V0aWxpdGll
cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODkwQzFFNzM3RDUxMDAzQjY2MDkgLyogV2Vi
R1BVTGlicmFyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjYwRjMyQzFERkJCMTBCMDA0MTZE
NkMgLyogQ29tbW9uVk0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M5M0YzNDkxQUE2QkE1RTAw
QTk4QkFCIC8qIENvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDMkY0RTc4QTFFNDVCRUExMDA2RDcxMDUgLyogQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMjk5NTEsNiArMzAyNDAsNyBAQAogCQkJCTFBQjQwRUUxMUJGNDI3
RDYwMEJBODFCRSAvKiBDb250ZXh0TWVudUl0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQz
MTYwMjgxMkIwMjY3NjAwQzFBMzU5IC8qIENvbnZvbHZlck5vZGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRTE0MjRDOTMxNjRCNTJDODAwRjMyRDQwIC8qIENvb2tpZUphci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkzMUEwODkwQTFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVRW51bXMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NjIxMkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZUphckNG
TmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNDI0QzkwMTY0QjQ2MEIwMEYzMkQ0MCAvKiBD
b29raWVKYXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3RUU2ODQ2MzEyRDI2RTM4MDBFNzk0
MTUgLyogQ29va2llU3RvcmFnZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzAyMTcsNiAr
MzA1MDcsNyBAQAogCQkJCTE4ODYwNEIzMEYyRTY1NEEwMDBCNjQ0MyAvKiBET01UaW1lci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3NkZDMkIwQjEyMzcwREEwMDA2QTk5MUEgLyogRE9NVG9rZW5M
aXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFMzdERkRBMTJEQkFGQjgwMEE2QjIzMyAvKiBE
T01VUkwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5MTkxRTczN0Q1NTAwM0I2NjA5IC8q
IEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlD
RDlERTE4MTE3QUFENkE0MDBFQTM4NkQgLyogRE9NVVJMTWVkaWFTb3VyY2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMTVGQ0M5RkMxQjRERjdGMjAwRTcyMzI2IC8qIERPTVVSTE1lZGlhU3RyZWFt
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MDNCOTk4MDlFQjEzQUYwMDc5N0M3RiAvKiBET01X
aW5kb3cuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDMzMyw2ICszMDYyNCw3IEBACiAJCQkJMDhD
OTI1MTkwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkzMTMxM0Y2NTE0NDNCMzVGMDA2RTJBOTAgLyogRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFQ0VCNkQxNDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9w
ZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODkwRDFFNzM3RDUxMDAzQjY2MDkg
LyogV2ViR1BVT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RUNFQjZGMTQ5OTc5MEQw
MENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4Q0ZG
MDREMEExNTRGMDkwMDBBNDIzNCAvKiBGaXhlZFRhYmxlTGF5b3V0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTlBNTI4RTgzMTdEN0Y1MkYwMEFBOTUxOCAvKiBGbG9hdGluZ09iamVjdHMuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0zMDQwOCw2ICszMDcwMCw3IEBACiAJCQkJMTQzMkU4NDkwQzUxNDkz
RjAwQjE1MDBGIC8qIEdDQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0RkIzOTBB
RDE1RUY2MUYzMDA3QUQ1MUYgLyogR2VuZXJhdGVkSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODMwMDMwRjUxQjdEMzNCNTAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODkwOTFFNzM3RDUxMDAzQjY2MDkgLyogV2Vi
R1BVRHJhd2FibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcyMEIwQTAxNEQzMzIzNTAwNjQy
OTU1IC8qIEdlbmVyaWNFdmVudFF1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENEJFNTJB
MUNFMTM2RUYwMDlEODdEQSAvKiBHZW5lcmljVGFza1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTk3NDZBRjIzMTRGNERERTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTMwNTI4LDcgKzMwODIxLDkgQEAKIAkJCQk5NzNGNDE4QjE2OUI5NjAzMDAwNkJG
NjAgLyogSFRNTFBhcnNlck9wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3QjM4NzAx
MjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxQYXJzZXJTY2hlZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkNDMEU4NzUxQkZFNzBFOTAwOEY3RjUwIC8qIEhUTUxQaWN0dXJlRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkzMUEwODk3ODFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVS
ZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBODcxRDQ1NzBBMTI3Q0JDMDBCMTJBNjggLyogSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMzFBMDg5MTAxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBh
c3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0NDE1MjkyRjBF
MUFFOEEwMDBDNEEyRDAgLyogSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBOEVBN0NBRDBBMTkyQjlDMDBBOEVGNUYgLyogSFRNTFByZUVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTc3QjM4NzIxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxQcmVsb2Fk
U2Nhbm5lci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwNjc5LDYgKzMwOTc0LDcgQEAKIAkJCQk3
QTFGMkI1MjEyNkM2MUIyMDAwNkE3RTYgLyogSW5zcGVjdG9yQ2xpZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFDODFCOTVCMEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgyQUIxNzQzMTI0Qjk5RUMwMEM1MDY5RCAvKiBJbnNw
ZWN0b3JDU1NBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODkxNzFFNzM3RDUxMDAz
QjY2MDkgLyogV2ViR1BVVGV4dHVyZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0QTlDQzgyMDE2
QkY5QkI0MDBFQzY0NUEgLyogSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3QUIwQjFDMDEyMTFBNjIyMDBBNzY5NDAgLyogSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUYwNjIxNTBGNUYxOTI2MDBBMDdFQUMgLyogSW5z
cGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwNzI3LDYgKzMx
MDIzLDcgQEAKIAkJCQkzMTk4NDgwQjFBMUU2Q0U0MDBBMTMzMTggLyogSlNBbmltYXRpb25FdmVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxMjIxRTA2QzFDMDNEMjI0MDA2QTFBMDAgLyogSlNB
bmltYXRpb25UaW1lbGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1N0I1RjdFMjFFNTdEQkM4
MDBGMzRGOTAgLyogSlNTaXRlQm91bmRDcmVkZW50aWFsRGF0YS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkzMUEwODk4NzFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVUZXh0dXJlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTEyMjFFMDczMUMwM0U0QzIwMDZBMUEwMCAvKiBKU0FuaW1hdGlvblRp
bWVsaW5lQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDNjU3OUVGMUUwMDg1NjYwMEUz
QTI3QSAvKiBKU0FwcGxlUGF5TGluZUl0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M2NTIz
MUUxRTAxOEI1QTAwNjc3RjIyIC8qIEpTQXBwbGVQYXlQYXltZW50LmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMzA5ODUsNiArMzEyODIsNyBAQAogCQkJCTFBRTJBQjIxMEExQ0U2M0IwMEI0MkIyNSAv
KiBKU0hUTUxMYWJlbEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTc2ODE0NDQxRTcw
Q0IxQjAwRTc3NzU0IC8qIEpTQWVzS2V5UGFyYW1zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
RTJBQjIzMEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxMZWdlbmRFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTMxQTA4OTE4MUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVUZXh0dXJlRGVz
Y3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUUyQUIyNTBBMUNFNjNCMDBCNDJCMjUg
LyogSlNIVE1MTElFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU3QjEwMEExOUQ2
MDYwMDdGQjhDNSAvKiBKU0hUTUxMaW5rRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QUUyQUIyNzBBMUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTWFwRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTMxMDEyLDYgKzMxMzEwLDcgQEAKIAkJCQlFMUU2RUVBNDBCNjI4REE4MDA1RjJG
NzAgLyogSlNIVE1MU2VsZWN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzE3Rjk2
NjBCNjRFQkI4MDA0QTY1Q0IgLyogSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5QjY5RDNCODFCOTkxMDA3MDBFMzUxMkIgLyogSlNIVE1MU2xvdEVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5MTMxRTczN0Q1MTAwM0I2NjA5IC8qIFdl
YkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0NDYxNDNC
MENENjg5Q0MwMEZBREE3NSAvKiBKU0hUTUxTb3VyY2VFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTk3NTJEMzhEMTQxMzEwNEIwMDMzMDVCRCAvKiBKU0hUTUxTcGFuRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBODBFN0IwRjBBMTlENjA2MDA3RkI4QzUgLyogSlNIVE1MU3R5
bGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzExNzgsNiArMzE0NzcsNyBAQAogCQkJ
CTU3RTIzMzczMURDRDQ2QjYwMEYyOEQwMSAvKiBKU1JzYUhhc2hlZEltcG9ydFBhcmFtcy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1NzY4RTQzNjFEQjc1Mjc0MDBEMEE0RjcgLyogSlNSc2FIYXNo
ZWRLZXlHZW5QYXJhbXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTdGRURENDMxREI2RDc2MDAw
RUI5NkY1IC8qIEpTUnNhS2V5R2VuUGFyYW1zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxQTA4
OTA2MUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVDb21tYW5kUXVldWUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTcwNkE2OUExRERFNUU4NTAwQTAzQjE0IC8qIEpTUnNhT2FlcFBhcmFtcy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1N0UyMzM2MTFEQzdENkFBMDBGMjhEMDEgLyogSlNSc2FPdGhl
clByaW1lc0luZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDczNzk0RTUxOUVFMkZGMjAwRTVB
MDQ1IC8qIEpTUlRDQ29uZmlndXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxMzkxLDEx
ICszMTY5MSwxMyBAQAogCQkJCTBGREE3QzFBMTg4MzIyRUIwMEM5NTRCNSAvKiBKU1RvdWNoTGlz
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzAzMzRFOTE0NUExRjM2MDA4RDhENDUgLyogSlNU
cmFja0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzg0NjM0MjE0NUIxNTFBMDBBNThE
RjEgLyogSlNUcmFja0V2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxQTA4OTVBMUU3MzhE
NTkwMDNCNjYwOSAvKiBKU1dlYkdQVUNvbW1hbmRRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlFMTdCNDkyMjE2QTlCOEZGMDAxQzg4MzkgLyogSlNUcmFuc2l0aW9uRXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUE3NTBENUMwQTkwREVFMTAwMEZGMjE1IC8qIEpTVHJlZVdhbGtlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTZCQjc5NDBDRTkxRTY4MDA1MTJGNzkgLyogSlNUcmVl
V2Fsa2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NjYyOUQwMDlEQTJCNDgwMDk2
MzNBNSAvKiBKU1VJRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDY1MzA3RDExREI2RUU0
QTAwRTQxMzdDIC8qIEpTVUlFdmVudEluaXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5
NjkxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVTGlicmFyeS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1QzUzODFCNTFEODdFMDg3MDBFMkVCRTYgLyogSlNVUkxTZWFyY2hQYXJhbXMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0M3M0ZCMTExOTFFRjZGNDAwN0RFMDYxIC8qIEpTVXNlck1lc3Nh
Z2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDNzNGQjBDMTkxRUY1QTgwMDdERTA2
MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0zMTQxMiw2ICszMTcxNCw3IEBACiAJCQkJN0FGOUIyMEUxOENGQjVGNDAwQzY0QkVGIC8qIEpT
VlRUUmVnaW9uTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDgyRDdGNzEzRDRDOEJEMDA0
RTQzNzIgLyogSlNXYXZlU2hhcGVyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxMjBERTNG
OTFDODdDNUFCMDBCNkQ0REQgLyogSlNXZWJBbmltYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMzFBMDg5MDgxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUQzRjNEMzYzMUE2OUIxOTAwMDU5RkMyQiAvKiBKU1dlYkdM
MlJlbmRlcmluZ0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDNGM0QzNkMxQTY5QjdE
NTAwNTlGQzJCIC8qIEpTV2ViR0wyUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBN0QyMEY2MjEwN0Y0MDY5MDBBODAzOTIgLyogSlNXZWJHTEFjdGl2ZUluZm8u
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTQzNCw2ICszMTczNyw3IEBACiAJCQkJRDNGM0QzNjcx
QTY5QjFBNTAwNTlGQzJCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlEM0YzRDM2QjFBNjlCN0M1MDA1OUZDMkIgLyogSlNXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RUVEMTRGMTA1MTk3
MUEwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkzMUEwODk4QTFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVUZXh0dXJlRGVz
Y3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2Rjk5NUEzMzFBNzA4MzM3MDBBNzM1RjQg
LyogSlNXZWJHTFNhbXBsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlDN0I5QTIxMDQyRDJE
MzAwMDlENDQ3IC8qIEpTV2ViR0xTaGFkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTA3RDMz
NTUxNTJCNjMwRTAwMUI2MzkzIC8qIEpTV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0zMTUwMiw2ICszMTgwNiw3IEBACiAJCQkJMjkxN0I1NjExNDczNDk2
QzAwNTJDOUQwIC8qIExheWVyRmx1c2hTY2hlZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MjkxN0I1NjYxNDczNDk5NTAwNTJDOUQwIC8qIExheWVyRmx1c2hTY2hlZHVsZXJNYWMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0FBM0E2OUYxOTRCNTlCNjAwMUNCRDI0IC8qIExheWVyUG9vbC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODk2MDFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJH
UFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjM2RTczNzFCRDE4
MzdBMDAyREI4OTEgLyogTGF5b3V0UG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQxREMw
NTIxNjQ4MzRCOTAwMzcxRTVBIC8qIExheW91dFJlY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTEyMEFDQTQxM0Y5OThDQTAwRkU0QUM3IC8qIExheW91dFJlcGFpbnRlci5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTMxNjM2LDExICszMTk0MSwxMyBAQAogCQkJCTk0OTNCNkMwMUQ3NEI0MTIwMDg4
RTc4MCAvKiBNZWRpYVF1ZXJ5UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM5MDg0M0NG
MUIxOEU0N0QwMEI2ODU2NCAvKiBNZWRpYVJlbW90ZUNvbnRyb2xzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUNEOEFDQThFMUQyMzk3MTkwMEVDQzU5RSAvKiBNZWRpYVJlbW90ZVNvZnRMaW5rLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTMxQTA4OTcyMUU3MzhENUEwMDNCNjYwOSAvKiBKU1dlYkdQ
VVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlD
RUVGQ0Q3OTE5REIzMUY3MDAzODc2RDcgLyogTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQjEyNEQ4RjFEMzgwQkI2MDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZP
YmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RCRUFFQUMxOUQ5MkI2QzAwQkVCQTg4IC8qIE1l
ZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzkwMjdGNDEx
QjFEMEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlD
OTZGNUVDNzFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlk
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5NUQxRTczOEQ1OTAwM0I2NjA5IC8qIEpT
V2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDOTZG
NUVDNjFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJN
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1N0I1RjgwRjFFNUUyQTRCMDBGMzRGOTAgLyogSlNB
ZXNHY21QYXJhbXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzkwRjY1NTUxQjIyNTNCMTAwMjE2
M0ExIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTc3OSw2
ICszMjA4Niw3IEBACiAJCQkJMTQ3N0U3NzYwQkY0MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDVFNUI2MTFBMTVGMTU2MDAwQzYwOUUgLyogUGFnZUNv
bmZpZ3VyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjM4MjA4OTIxNDdEMzVGOTAwMTBC
QzA2IC8qIFBhZ2VDb25zb2xlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5MTEx
RTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURBRUQyMDMwMTZGMjQ0MkIwMDcwRUMwRiAvKiBQ
YWdlQ29uc29sZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUEyQUYwQjE4Mjk3MzQz
MDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjM0NzQy
REMxMzQzNjJGMDAwNTMxQkMyIC8qIFBhZ2VEZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMzE4MDcsNiArMzIxMTUsNyBAQAogCQkJCUE4OERENDg5MEI0NjI5QjAwMEMwMjk5MCAv
KiBQYXRoVHJhdmVyc2FsU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ1MDAyRkIxQjU2
RDc5OTAwMjBBQUY3IC8qIFBhdGhVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThG
QTZFNUUwRTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MzFBMDg5ODQxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBBMzhGRTBFNTBDQzgyMDBBMjVFQkMgLyogUGF0dGVy
bkNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBOEE2NDZDMUQxOUZGODcwMEQwRTAwRiAvKiBQ
YXltZW50Q29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQThBNjQ2RDFEMTlGRjg3MDBEMEUw
MEYgLyogUGF5bWVudENvbnRhY3RDb2NvYS5tbSBpbiBTb3VyY2VzICovLApAQCAtMzE4MTYsNiAr
MzIxMjUsNyBAQAogCQkJCTFBOEE2NDZFMUQxOUZGODcwMEQwRTAwRiAvKiBQYXltZW50TWV0aG9k
Q29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTU4RTg2NzFEMTlEODBFMDBDMEVBNzMgLyog
UGF5bWVudFJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4QTY0NjcxRDE5RkRGRjAw
RDBFMDBGIC8qIFBheW1lbnRSZXF1ZXN0VmFsaWRhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTMxQTA4OTY2MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUZ1bmN0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyNzUzNTY0MEIwNTM4MTQwMDJDRTY0RiAvKiBQREZEb2N1bWVudEltYWdl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJENkU0Njg0MTdENjYwRjUwMEVDRjhCQiAvKiBQREZE
b2N1bWVudEltYWdlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFFNDA4MzkxRENCNzQ4OTAw
RUZDRTE5IC8qIFBlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMx
ODU1LDYgKzMyMTY1LDcgQEAKIAkJCQlCQzk0RDEwODBDMjc0Rjg4MDA2QkM2MTcgLyogUGxhdGZv
cm1TY3JlZW5NYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOTM0OTQwQjE2QzAyQzBBMDA5MDEz
MTggLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMjkzNDk0MEExNkMwMkMwNzAwOTAxMzE4IC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
Vm9pY2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5ODExRTczOEQ1QTAwM0I2NjA5IC8q
IEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTI5N0JFM0RBMTZDMDQzRDgwMDMzMTZCRCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUFBMTJERjQ5MTc0M0RGODMwMDREQUZERiAvKiBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjk3QkUzRDgxNkMw
M0NDRTAwMzMxNkJEIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0gaW4gU291cmNl
cyAqLywKQEAgLTMxOTM4LDYgKzMyMjQ5LDcgQEAKIAkJCQkwRjVCN0E1NDEwRjY1RDdBMDAzNzYz
MDIgLyogUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDY2Qzc3
MzAwQUI2MDNGRDAwMjM4Q0M0IC8qIFJlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUzQzgyOThEMTNEOEQ5MjcwMERFMkRFQiAvKiBSZW5kZXJGbGV4aWJsZUJv
eC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODk2RjFFNzM4RDVBMDAzQjY2MDkgLyogSlNX
ZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUwOENDQTUwMTND
RjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4NzFERUQ0MEExNTMwQzcwMEIxMkE2OCAvKiBSZW5kZXJGcmFtZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkQzMDgwRTExN0NGN0U3MDBBNzkxRjcgLyogUmVuZGVyRnJhbWVCYXNlLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMzE5NjcsNiArMzIyNzksNyBAQAogCQkJCTQzOTA0NkQ5MTJEQTI1
RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxGZW5jZWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDM5MDQ2RDkxMkRBMjVFODAwQUY4MUIzIC8qIFJlbmRlck1hdGhNTEZlbmNlZE9wZXJhdG9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTQzOTA0NkRCMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJN
YXRoTUxGcmFjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODk3QjFFNzM4RDVBMDAz
QjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0MzkwNDZERDEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MTWF0aC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkzNTcxODgzRUVGNjE4NzkzNzUxRTQwODkgLyogUmVuZGVyTWF0aE1M
TWVuY2xvc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDM5MDQ2REYxMkRBMjVFODAwQUY4MEEy
IC8qIFJlbmRlck1hdGhNTE9wZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzIwNTAsNiAr
MzIzNjMsNyBAQAogCQkJCTI2QzE1Q0Y2MTg1N0UxNUQwMEYxNUMwMyAvKiBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxQkEwMDMxMTZGQjkyQUMwMEJBN0EzNSAvKiBSZXNvdXJjZUhhbmRsZUNsaWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RTQyOENFNTEzRTM0MDdGMDAzQjY2MUMgLyogUmVz
b3VyY2VIYW5kbGVJT1MubW0gaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODkwNTFFNzM3RDUxMDAz
QjY2MDkgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTRD
NzY1MTBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVNYWMubW0gaW4gU291cmNlcyAq
LywKIAkJCQk5M0UyMjdFMzBBRjU4OUFEMDBENDgzMjQgLyogUmVzb3VyY2VMb2FkZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NzUxMkQyNkU3MDAwRTc5NDE1IC8qIFJlc291cmNlTG9h
ZGVyQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMjA1OCw2ICszMjM3Miw3IEBACiAJCQkJ
OTczRTMyNTYxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTZCNjkzQTM0MUM1MUE5NUQwMEIwM0JFRiAvKiBSZXNvdXJjZUxvYWRP
YnNlcnZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTkyOUNBNjFDNTk4QTlFMDA0REYyMjYg
LyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODkw
QjFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0FEM0NERDkxQzhBMDAyRjAwRjEyNjk4IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTRDNzY3QzBDRTkyM0ExMDA3RUYzQ0QgLyogUmVz
b3VyY2VSZXF1ZXN0QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RUU2ODQ2RTEyRDI2RTM4
MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0z
MjE0Nyw4ICszMjQ2MiwxMCBAQAogCQkJCTBGNjA1QUVDMTVGOTQ4NDgwMDRERjBDMCAvKiBTY3Jv
bGxpbmdDb25zdHJhaW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUY2MkVFNzE0REEyMkE3
MDA0MTU1NkMgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZDNEU0MEUxODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5MUExRTczN0Q1NTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVu
ZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBRjYyRUU2MTREQTIyQTcwMDQxNTU2QyAvKiBTY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTUxQzYxQjBBMURFNTM2RTcwMDhBMjEyRCAvKiBTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5NTQxRTczOEQ1
OTAwM0I2NjA5IC8qIEpTV2ViR1BVQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxN0RF
RUU1MURFOTRBREMwMEI5MTY0NCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0g
aW4gU291cmNlcyAqLywKIAkJCQk5M0MzOEJGRTE2NDQ3M0M3MDAwOTFFQjIgLyogU2Nyb2xsaW5n
U3RhdGVGaXhlZE5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTNFN0MxOTFCMkZDNTAw
MEYxQjU1IC8qIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMzIxODMsOSArMzI1MDAsMTEgQEAKIAkJCQlGNTVCM0REMTEyNTFGMTJEMDAzRUYy
NjkgLyogU2VhcmNoSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBFNzA1OEVFMUJD
NUJDMTkwMDQ1QTUwNyAvKiBTZWFyY2hQb3B1cE1lbnVDb2NvYS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTk3NkYzNkVBMTQ2ODYyMjUwMDVFOTNCNCAvKiBTZWN1cml0eUNvbnRleHQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMzFBMDg5MEUxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlckNv
bW1hbmRFbmNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRDBFMEZBMEU5NzJDMzUwMDI2
NURFQSAvKiBTZWN1cml0eU9yaWdpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUUzQUEwQTFC
OThCQ0FCMDAzNkFEODEgLyogU2VjdXJpdHlPcmlnaW5EYXRhLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBRjdBRkM3MUE0OEE4QkMwMEM4RTRFNyAvKiBTZWN1cml0eU9yaWdpblBvbGljeS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkzMUEwODkxMjFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVUmVu
ZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTc0RDJEQTQxNDZBNTM1RDAwRDUxRjhCIC8qIFNlY3VyaXR5UG9saWN5LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTk5Q0MwQjVEMThCRTk4NEEwMDZDRUJDQyAvKiBTZWdtZW50ZWRJbnB1dFN0b3Jh
Z2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJDM0RBMkUwRDAwNkMxRDAwRUY2RjI2IC8qIFNl
Z21lbnRlZFN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMyMjkyLDYgKzMyNjExLDcgQEAK
IAkJCQkxQTM3NjM2QjFBMkU2OEJCMDA5QTdFRTIgLyogU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgxMDJDNTg4MTMyNUJCMTEwMERERTY3QSAvKiBTdHJp
bmdDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjM1NDBGMjBEMDA3ODJFMDAyMzgy
RkEgLyogU3RyaW5nVHJ1bmNhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxQTA4OTA0MUU3
MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE0
QjgyMDQxRDZERjBERjAwNzdFQkUzIC8qIFN0cnVjdHVyZWRDbG9uZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQzVFQjZBMjBFODFEQzRGMDBCMjU5NjUgLyogU3R5bGVCYWNrZ3JvdW5kRGF0YS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzVFQjY3RDBFODFENDIwMDBCMjU5NjUgLyogU3R5bGVC
b3hEYXRhLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzI1NTMsNiArMzI4NzMsNyBAQAogCQkJCTJE
NEY5NkY4MUExRUNDMjQwMDk4QkY4OCAvKiBUZXh0SW5kaWNhdG9yV2luZG93Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRjU1QjNERDkxMjUxRjEyRDAwM0VGMjY5IC8qIFRleHRJbnB1dFR5cGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0VDQURGQ0QxNTM3NzkxRDAwRTM3MDY4IC8qIFRleHRJbnNl
cnRpb25CYXNlQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODk2MzFFNzM4RDU5
MDAzQjY2MDkgLyogSlNXZWJHUFVEcmF3YWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMw
OUUxQjA5OUU2NDkyMDA1NkU1ODEgLyogVGV4dEl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUU0RDk4OEI2MTdCRkVCMjEwMDg0RkI4OCAvKiBUZXh0Tm9kZVRyYXZlcnNhbC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQzE4REE1ODE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMjYyMCw2ICszMjk0MSw3IEBACiAJCQkJQzM3NUQ3RkQx
NjYzOTUxOTAwNjE4NEFCIC8qIFR5cGVBaGVhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMw
OUUxOTA5OUU2NDkyMDA1NkU1ODEgLyogVHlwaW5nQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4NTAzMUI0RDBBNDRFRkM3MDBGOTkyRTAgLyogVUlFdmVudC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkzMUEwODk3RTFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzNTRB
M0MwQjI0RjhDOTAwM0Y2REVBIC8qIFVJRXZlbnRXaXRoS2V5U3RhdGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTE4ODY0RTAxQkJBRjU3MTAwRTU0MEM5IC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUxOThGN0E0MUJCREI3OTMwMEUyQ0M1RiAvKiBVbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMjY2MSwxMiArMzI5
ODMsMTQgQEAKIAkJCQk1MkQ1QTE4RjFDNTQ1OTIzMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVu
TGF5ZXJNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RFODNEQjExODNDNDQwNjAwMzFF
QUEzIC8qIFZpZGVvUGxheWJhY2tRdWFsaXR5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEOUQ4
Mjc5MUM3QjhFRTEwMDZGRjA2NiAvKiBWaWRlb1RleHR1cmVDb3BpZXJDVi5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkzMUEwODkxNTFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMERFMTcxNUQyQTIwMDY1
OEQ5OCAvKiBWaWRlb1RyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMEUxMTcxNUQy
QTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDMz
NkY2NzE3RkEwQUM2MDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUNEOEI1QTQyMTgwRDE0OUEwMDhCOEU2NSAvKiBWaWRlb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNFRjQxOENFMTE3
OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkyNkY5QTgzODE4QTA0NkFDMDBBRUI4OEEgLyogVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTMxQTA4OTA3MUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVEZXB0
aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTNGRkZGOUFEMTU5RDlC
MDYwMDIwQkJENSAvKiBWaWV3cG9ydFN0eWxlUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTMzMDlFMUYwOTlFNjQ5MjAwNTZFNTgxIC8qIFZpc2libGVQb3NpdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBODgzREYyNzBGM0QwNDVEMDBGMTlCRjYgLyogVmlzaWJsZVNlbGVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMyNzA2LDYgKzMzMDMwLDcgQEAKIAkJCQlDRDEyN0RF
RDE0RjMwOTdEMDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cubW0gaW4gU291cmNl
cyAqLywKIAkJCQlCQzM0OEJEMzBEQjdGODA0MDA0QUJBQkIgLyogV2ViQ29yZUpTQnVpbHRpbklu
dGVybmFscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzM0OEJEMzBEQjdGODA0MDA0QUJBQkEg
LyogV2ViQ29yZUpTQnVpbHRpbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5NTcxRTcz
OEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjdERjE0ODFFMkJGMUIxMDA5NTk1MUIgLyogV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzMTQwMzc5QzEyNEJFQTdGMDBBRjQwRTQgLyogV2ViQ29yZU1v
dGlvbk1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREM5NzlGNDFDNDk4QzA5MDBEQjUw
RDQgLyogV2ViQ29yZU5TRXJyb3JFeHRyYXMubW0gaW4gU291cmNlcyAqLywKQEAgLTMyODQ2LDYg
KzMzMTcxLDcgQEAKIAkJCQkyRTQzNDY0RjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyTWVzc2Fn
aW5nUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEyNzFBMTQwRUVFQzgwNDAwRjYxMjEz
IC8qIFdvcmtlck5hdmlnYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRTQzNDY1MjBGNTQ2
QTgyMDBCMEYxQkEgLyogV29ya2VyUnVuTG9vcC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEw
ODkwRjFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBNTdGRDcxQjFEQjk0MjNFMDA2QUUyNEIgLyogV29ya2VyUnVudGltZUFn
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQTY0M0ZEMEVDMDk3QTAwMDc3OTY2OCAvKiBX
b3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1NEEwQzY1MURC
ODA1MzYwMDE3QTkwQiAvKiBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHAgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAK
aW5kZXggYTc4YjAxODQ0MzcuLmE5MGJkMWEzZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDctMjAwOSwgMjAxMSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSwgMjAxMSwgMjAxNiwgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQy
LDYgKzQyLDEwIEBACiAjaW5jbHVkZSAiSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShXRUJHUFUpCisjaW5jbHVkZSAiSlNXZWJHUFVSZW5kZXJpbmdD
b250ZXh0LmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAjaW5jbHVkZSAi
SlNUb3VjaC5oIgogI2luY2x1ZGUgIkpTVG91Y2hMaXN0LmgiCkBAIC0xNTAsNiArMTU0LDEwIEBA
IEpTVmFsdWUgSlNEb2N1bWVudDo6Z2V0Q1NTQ2FudmFzQ29udGV4dChKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUpCiAgICAgaWYgKGlzPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+KCpjb250ZXh0KSkK
ICAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgZG93bmNhc3Q8V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZT4oKmNvbnRleHQpKTsKICNlbmRpZgorI2lmIEVOQUJMRShX
RUJHUFUpCisgICAgaWYgKGlzPFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ+KCpjb250ZXh0KSkKKyAg
ICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgZG93bmNhc3Q8V2ViR1BV
UmVuZGVyaW5nQ29udGV4dD4oKmNvbnRleHQpKTsKKyNlbmRpZgogCiAgICAgcmV0dXJuIHRvSlMo
JnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgZG93bmNhc3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
PigqY29udGV4dCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAppbmRleCAxNzJjMGQ5OTc5MS4uNTMxNjg5
MmM4YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZh
c0VsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRN
TENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDcsIDIwMTYsIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDEwIFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTM3LDYgKzM3LDEwIEBA
CiAjaW5jbHVkZSAiSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCiAjZW5kaWYKIAorI2lm
IEVOQUJMRShXRUJHUFUpCisjaW5jbHVkZSAiSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCisj
ZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NjQsNiArNjgsMTEgQEAgSlNWYWx1ZSBKU0hUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEV4
ZWNTdGF0ZSYgc3RhdGUpCiAgICAgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCR1BVKQorICAg
IGlmIChIVE1MQ2FudmFzRWxlbWVudDo6aXNXZWJHUFVUeXBlKGNvbnRleHRJZCkpCisgICAgICAg
IHJldHVybiB0b0pTPElETE51bGxhYmxlPElETEludGVyZmFjZTxXZWJHUFVSZW5kZXJpbmdDb250
ZXh0Pj4+KHN0YXRlLCAqZ2xvYmFsT2JqZWN0KCksIHN0YXRpY19jYXN0PFdlYkdQVVJlbmRlcmlu
Z0NvbnRleHQqPih3cmFwcGVkKCkuZ2V0Q29udGV4dFdlYkdQVShjb250ZXh0SWQpKSk7CisjZW5k
aWYKKwogICAgIHJldHVybiBqc051bGwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3JDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHUFVSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3JDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi41YjBhMTM3ZTA4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yQ3VzdG9t
LmNwcApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTV2ViR1BVUmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5j
bHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNXZWJHUFVSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3Rh
dGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8V2ViR1BVUmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yPiYmIG9iamVjdCkKK3sKKyAgICBpZiAob2JqZWN0LT5pc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IoKSkKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8
V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+KGdsb2JhbE9iamVjdCwg
V1RGTW92ZShvYmplY3QpKTsKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxXZWJHUFVSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3I+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShvYmplY3QpKTsK
K30KKworSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciYgb2JqZWN0
KQoreworICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIG9iamVjdCk7Cit9CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dl
YkdQVVJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uYzNkMWMzMjViMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdQVVJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3Bw
CkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNXZWJHUFVSZW5kZXJpbmdD
b250ZXh0LmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCit1c2luZyBuYW1lc3BhY2UgSlNDOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0Ojp2
aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICB2aXNp
dG9yLmFkZE9wYXF1ZVJvb3QoJndyYXBwZWQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmlu
ZGV4IDRiNTFlZmU5Yzc0Li40ZjEyNTY5YmM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNiwgMjAwNywgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4K
ICAqIENvcHlyaWdodCAoQykgMjAxMCBUb3JjaCBNb2JpbGUgKEJlaWppbmcpIENvLiBMdGQuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNjIsNiArNjIsMTAgQEAKICNpbmNsdWRlICJXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJHUFUpCisj
aW5jbHVkZSAiV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oIgorI2VuZGlmCisKICNpZiBQTEFURk9S
TShDT0NPQSkKICNpbmNsdWRlICJNZWRpYVNhbXBsZUFWRk9iakMuaCIKIApAQCAtMTk1LDYgKzE5
OSwxMSBAQCBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29u
dGV4dChjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgaWYgKEhUTUxDYW52YXNFbGVtZW50OjppczJk
VHlwZSh0eXBlKSkKICAgICAgICAgcmV0dXJuIGdldENvbnRleHQyZCh0eXBlKTsKIAorI2lmIEVO
QUJMRShXRUJHUFUpCisgICAgaWYgKEhUTUxDYW52YXNFbGVtZW50Ojppc1dlYkdQVVR5cGUodHlw
ZSkpCisgICAgICAgIHJldHVybiBnZXRDb250ZXh0V2ViR1BVKHR5cGUpOworI2VuZGlmCisKICNp
ZiBFTkFCTEUoV0VCR0wpCiAgICAgaWYgKEhUTUxDYW52YXNFbGVtZW50OjppczNkVHlwZSh0eXBl
KSkKICAgICAgICAgcmV0dXJuIGdldENvbnRleHRXZWJHTCh0eXBlKTsKQEAgLTI5OCw2ICszMDcs
MzEgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRl
eHRXZWJHTChjb25zdCBTdHJpbmcmIHR5cGUsIFcKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdF
QkdQVSkKK2Jvb2wgSFRNTENhbnZhc0VsZW1lbnQ6OmlzV2ViR1BVVHlwZShjb25zdCBTdHJpbmcm
IHR5cGUpCit7CisgICAgcmV0dXJuIHR5cGUgPT0gIndlYmdwdSI7Cit9CisKK0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQqIEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0V2ViR1BVKGNvbnN0IFN0
cmluZyYgdHlwZSkKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHR5cGUsIEhUTUxDYW52YXNFbGVtZW50
Ojppc1dlYkdQVVR5cGUodHlwZSkpOworCisgICAgaWYgKG1fY29udGV4dCAmJiAhbV9jb250ZXh0
LT5pc0dQVSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmICghbV9jb250ZXh0
KSB7CisgICAgICAgIG1fY29udGV4dCA9IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZSgq
dGhpcyk7CisgICAgICAgIGlmIChtX2NvbnRleHQpIHsKKyAgICAgICAgICAgIC8vIE5lZWQgdG8g
bWFrZSBzdXJlIGEgUmVuZGVyTGF5ZXIgYW5kIGNvbXBvc2l0aW5nIGxheWVyIGdldCBjcmVhdGVk
IGZvciB0aGUgQ2FudmFzCisgICAgICAgICAgICBpbnZhbGlkYXRlU3R5bGVBbmRMYXllckNvbXBv
c2l0aW9uKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbV9jb250ZXh0LmdldCgp
OworfQorI2VuZGlmCisKIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OmRpZERyYXcoY29uc3QgRmxv
YXRSZWN0JiByZWN0KQogewogICAgIGNsZWFyQ29waWVkSW1hZ2UoKTsKQEAgLTM1NSw2ICszODks
MTIgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6cmVzZXQoKQogCiAgICAgc2V0U3VyZmFjZVNp
emUobmV3U2l6ZSk7CiAKKyNpZiBFTkFCTEUoV0VCR1BVKQorICAgIC8vIEZJWE1FOiBXZWJHUFUg
bmVlZHMgc29tZXRoaW5nIGhlcmUgdG9vLgorICAgIGlmIChpc0dQVSgpICYmIG9sZFNpemUgIT0g
c2l6ZSgpKQorICAgICAgICBzdGF0aWNfY2FzdDxXZWJHUFVSZW5kZXJpbmdDb250ZXh0Kj4obV9j
b250ZXh0LmdldCgpKS0+cmVzaGFwZSh3aWR0aCgpLCBoZWlnaHQoKSk7CisjZW5kaWYKKwogI2lm
IEVOQUJMRShXRUJHTCkKICAgICBpZiAoaXMzRCgpICYmIG9sZFNpemUgIT0gc2l6ZSgpKQogICAg
ICAgICBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKj4obV9jb250ZXh0Lmdl
dCgpKS0+cmVzaGFwZSh3aWR0aCgpLCBoZWlnaHQoKSk7CkBAIC00MjMsMTIgKzQ2MywyNCBAQCB2
b2lkIEhUTUxDYW52YXNFbGVtZW50OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IExheW91dFJlY3QmIHIpCiAgICAgICAgIH0KICAgICB9CiAKLSNpZiBFTkFCTEUoV0VCR0wp
ICAgIAorI2lmIEVOQUJMRShXRUJHUFUpCisgICAgaWYgKGlzR1BVKCkpCisgICAgICAgIHN0YXRp
Y19jYXN0PFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqPihtX2NvbnRleHQuZ2V0KCkpLT5tYXJrTGF5
ZXJDb21wb3NpdGVkKCk7CisjZW5kaWYKKworI2lmIEVOQUJMRShXRUJHTCkKICAgICBpZiAoaXMz
RCgpKQogICAgICAgICBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKj4obV9j
b250ZXh0LmdldCgpKS0+bWFya0xheWVyQ29tcG9zaXRlZCgpOwogI2VuZGlmCiB9CiAKKyNpZiBF
TkFCTEUoV0VCR1BVKQorYm9vbCBIVE1MQ2FudmFzRWxlbWVudDo6aXNHUFUoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2NvbnRleHQgJiYgbV9jb250ZXh0LT5pc0dQVSgpOworfQorI2VuZGlmCisK
ICNpZiBFTkFCTEUoV0VCR0wpCiBib29sIEhUTUxDYW52YXNFbGVtZW50OjppczNEKCkgY29uc3QK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAppbmRleCBjZTA2ZmZiMWI1
Ny4uMjJjZGVmOTNmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZh
c0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2LCAyMDA5LCAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNiwgMjAwOSwgMjAxMCwgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KICAqIENv
cHlyaWdodCAoQykgMjAxMCBUb3JjaCBNb2JpbGUgKEJlaWppbmcpIENvLiBMdGQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgpAQCAtMTAwLDYgKzEwMCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IGJvb2wgaXMzZFR5cGUoY29uc3QgU3RyaW5nJik7CiAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dCogZ2V0Q29udGV4dFdlYkdMKGNvbnN0IFN0cmluZyYsIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMm
JiA9IHsgfSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCR1BVKQorICAgIHN0YXRpYyBib29sIGlz
V2ViR1BVVHlwZShjb25zdCBTdHJpbmcmKTsKKyAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBn
ZXRDb250ZXh0V2ViR1BVKGNvbnN0IFN0cmluZyYpOworI2VuZGlmCiAKICAgICBzdGF0aWMgU3Ry
aW5nIHRvRW5jb2RpbmdNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBFeGNlcHRpb25PcjxTdHJpbmc+IHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSk7CkBAIC0xNzYsNiArMTgwLDkg
QEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgYm9vbCBpczNEKCkgY29uc3Q7CiAj
ZW5kaWYKKyNpZiBFTkFCTEUoV0VCR1BVKQorICAgIGJvb2wgaXNHUFUoKSBjb25zdDsKKyNlbmRp
ZgogCiAgICAgSGFzaFNldDxDYW52YXNPYnNlcnZlcio+IG1fb2JzZXJ2ZXJzOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxDYW52YXNSZW5kZXJpbmdDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXgg
NzU5MDgwZjUzMWQuLmNiNTBjNzY4NTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDksIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NCw2ICs1NCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgaXNXZWJHTDEoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBpc1dlYkdMMigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9v
bCBpczNkKCkgY29uc3QgeyByZXR1cm4gaXNXZWJHTDEoKSB8fCBpc1dlYkdMMigpOyB9CisgICAg
dmlydHVhbCBib29sIGlzR1BVKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKSB7fQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVUJ1ZmZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLjZlZmMzZDk0ZTZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQnVmZmVyLmNwcApAQCAtMCwwICsxLDcwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYkdQVUJ1ZmZlci5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKwor
I2luY2x1ZGUgIkdQVUJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlcmluZ0NvbnRleHQu
aCIKKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworUmVmPFdlYkdQVUJ1ZmZlcj4gV2ViR1BVQnVmZmVyOjpjcmVhdGUoV2ViR1BVUmVuZGVy
aW5nQ29udGV4dCogY29udGV4dCwgQXJyYXlCdWZmZXJWaWV3KiBkYXRhKQoreworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYkdQVUJ1ZmZlcihjb250ZXh0LCBkYXRhKSk7Cit9CisKK1dlYkdQ
VUJ1ZmZlcjo6V2ViR1BVQnVmZmVyKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIEFy
cmF5QnVmZmVyVmlldyogZGF0YSkKKyAgICA6IFdlYkdQVU9iamVjdChjb250ZXh0KQoreworICAg
IG1fYnVmZmVyID0gY29udGV4dC0+ZGV2aWNlKCktPmNyZWF0ZUJ1ZmZlckZyb21EYXRhKGRhdGEp
OworfQorCitXZWJHUFVCdWZmZXI6On5XZWJHUFVCdWZmZXIoKQoreworfQorCit1bnNpZ25lZCBs
b25nIFdlYkdQVUJ1ZmZlcjo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fYnVmZmVyKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBtX2J1ZmZlci0+bGVuZ3RoKCk7Cit9CisK
K1JlZlB0cjxBcnJheUJ1ZmZlcj4gV2ViR1BVQnVmZmVyOjpjb250ZW50cygpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4g
bV9idWZmZXItPmNvbnRlbnRzKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVCdWZmZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUJ1ZmZlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42OGJjZDMwNTgxNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUJ1ZmZlci5oCkBAIC0wLDAgKzEs
NTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXZWJHUFVPYmplY3Qu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVCdWZmZXI7CisKK2NsYXNzIFdl
YkdQVUJ1ZmZlciA6IHB1YmxpYyBXZWJHUFVPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwg
fldlYkdQVUJ1ZmZlcigpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVQnVmZmVyPiBjcmVhdGUoV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dCosIEFycmF5QnVmZmVyVmlldyopOworCisgICAgdW5zaWduZWQg
bG9uZyBsZW5ndGgoKSBjb25zdDsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGNvbnRlbnRzKCkg
Y29uc3Q7CisKKyAgICBHUFVCdWZmZXIqIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyLmdldCgp
OyB9CisKK3ByaXZhdGU6CisgICAgV2ViR1BVQnVmZmVyKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQq
LCBBcnJheUJ1ZmZlclZpZXcqKTsKKyAgICBSZWZQdHI8R1BVQnVmZmVyPiBtX2J1ZmZlcjsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVCdWZmZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVQnVmZmVyLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uN2JjODljZDdjYzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHUFVCdWZmZXIuaWRsCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VC
R1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGludGVyZmFjZSBXZWJHUFVCdWZm
ZXIgeworCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBBcnJheUJ1ZmZlclZpZXcgY29udGVudHM7CisKK307CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kQnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hZTA0YzFjMjYwYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRCdWZm
ZXIuY3BwCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BVQ29tbWFu
ZEJ1ZmZlci5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworLyoqKgorI2luY2x1ZGUgIkdQVUNv
bW1hbmRCdWZmZXIuaCIKKyNpbmNsdWRlICJHUFVDb21tYW5kUXVldWUuaCIKKyovCisjaW5jbHVk
ZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRRdWV1ZS5oIgorI2luY2x1ZGUg
IldlYkdQVURyYXdhYmxlLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIu
aCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIldl
YkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8V2Vi
R1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKFdlYkdQVVJlbmRl
cmluZ0NvbnRleHQqIGNvbnRleHQsIFdlYkdQVUNvbW1hbmRRdWV1ZSogcXVldWUpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQ29tbWFuZEJ1ZmZlcihjb250ZXh0LCBxdWV1ZSkp
OworfQorCitXZWJHUFVDb21tYW5kQnVmZmVyOjpXZWJHUFVDb21tYW5kQnVmZmVyKFdlYkdQVVJl
bmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIFdlYkdQVUNvbW1hbmRRdWV1ZSogcXVldWUpCisgICAg
OiBXZWJHUFVPYmplY3QoY29udGV4dCkKK3sKKyAgICBMT0coV2ViR1BVLCAiLS0gV2ViR1BVQ29t
bWFuZEJ1ZmZlcjo6V2ViR1BVQ29tbWFuZEJ1ZmZlcigpIE5FVyIpOworICAgIG1fY29tbWFuZEJ1
ZmZlciA9IHF1ZXVlLT5jb21tYW5kUXVldWUoKS0+Y3JlYXRlQ29tbWFuZEJ1ZmZlcigpOworfQor
CitXZWJHUFVDb21tYW5kQnVmZmVyOjp+V2ViR1BVQ29tbWFuZEJ1ZmZlcigpCit7CisgICAgTE9H
KFdlYkdQVSwgIi0tIFdlYkdQVUNvbW1hbmRCdWZmZXI6On5XZWJHUFVDb21tYW5kQnVmZmVyKCkg
REVMRVRFIik7Cit9CisKK3ZvaWQgV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y29tbWl0KCkKK3sKKyAg
ICBMT0coV2ViR1BVLCAiLS0gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y29tbWl0KCkiKTsKKyAgICBp
ZiAoIW1fY29tbWFuZEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgcmV0dXJuIG1fY29t
bWFuZEJ1ZmZlci0+Y29tbWl0KCk7Cit9CisKK3ZvaWQgV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6cHJl
c2VudERyYXdhYmxlKFdlYkdQVURyYXdhYmxlJiBkcmF3YWJsZSkKK3sKKyAgICBMT0coV2ViR1BV
LCAiLS0gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6cHJlc2VudERyYXdhYmxlKCkiKTsKKyAgICBpZiAo
IW1fY29tbWFuZEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgcmV0dXJuIG1fY29tbWFu
ZEJ1ZmZlci0+cHJlc2VudERyYXdhYmxlKGRyYXdhYmxlLmRyYXdhYmxlKCkpOworfQorCitSZWZQ
dHI8V2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI+IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0
ZVJlbmRlckNvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3IoV2ViR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgUmVmUHRyPFdlYkdQVVJlbmRlckNvbW1hbmRFbmNv
ZGVyPiBjb21tYW5kRW5jb2RlciA9IFdlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyOjpjcmVhdGUo
dGhpcy0+Y29udGV4dCgpLCB0aGlzLCAmZGVzY3JpcHRvcik7CisgICAgcmV0dXJuIGNvbW1hbmRF
bmNvZGVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wMGI3YjBlZjc5MwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRCdWZmZXIuaApAQCAt
MCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BV
T2JqZWN0LmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworLyoqKiBzdHViICovCisvLyBjbGFzcyBHUFVDb21tYW5kQnVmZmVyOworY2xhc3MgR1BV
RHJhd2FibGU7CitjbGFzcyBHUFVSZW5kZXJDb21tYW5kRW5jb2RlcjsKK2NsYXNzIEdQVVJlbmRl
clBhc3NEZXNjcmlwdG9yOworY2xhc3MgR1BVQ29tbWFuZEJ1ZmZlciA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEdQVUNvbW1hbmRCdWZmZXI+IHsKK3B1YmxpYzoKKyAgICBHUFVSZW5kZXJDb21tYW5kRW5j
b2RlciogY3JlYXRlUmVuZGVyQ29tbWFuZEVuY29kZXIoR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Iq
KSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdm9pZCBjb21taXQoKSB7IH0KKyAgICB2b2lkIHBy
ZXNlbnREcmF3YWJsZShHUFVEcmF3YWJsZSopIHsgfQorfTsKKy8qKiogZW5kIHN0dWIgKi8KK2Ns
YXNzIFdlYkdQVUNvbW1hbmRRdWV1ZTsKK2NsYXNzIFdlYkdQVURyYXdhYmxlOworY2xhc3MgV2Vi
R1BVRnVuY3Rpb247CitjbGFzcyBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2RlcjsKK2NsYXNzIFdl
YkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOworCitjbGFzcyBXZWJHUFVDb21tYW5kQnVmZmVyIDog
cHVibGljIFdlYkdQVU9iamVjdCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViR1BVQ29tbWFu
ZEJ1ZmZlcigpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gY3JlYXRlKFdl
YkdQVVJlbmRlcmluZ0NvbnRleHQqLCBXZWJHUFVDb21tYW5kUXVldWUqKTsKKworICAgIHZvaWQg
Y29tbWl0KCk7CisgICAgdm9pZCBwcmVzZW50RHJhd2FibGUoV2ViR1BVRHJhd2FibGUmKTsKKwor
ICAgIFJlZlB0cjxXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlcj4gY3JlYXRlUmVuZGVyQ29tbWFu
ZEVuY29kZXJXaXRoRGVzY3JpcHRvcihXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciYpOworCisg
ICAgR1BVQ29tbWFuZEJ1ZmZlciogY29tbWFuZEJ1ZmZlcigpIHsgcmV0dXJuIG1fY29tbWFuZEJ1
ZmZlci5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFdlYkdQVUNvbW1hbmRCdWZmZXIoV2ViR1BV
UmVuZGVyaW5nQ29udGV4dCosIFdlYkdQVUNvbW1hbmRRdWV1ZSopOworICAgIFJlZlB0cjxHUFVD
b21tYW5kQnVmZmVyPiBtX2NvbW1hbmRCdWZmZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R1BVQ29tbWFuZEJ1ZmZlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVD
b21tYW5kQnVmZmVyLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
OWRjMTc2NDFiZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVDb21tYW5kQnVmZmVyLmlkbApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQ
VSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBpbnRlcmZhY2UgV2ViR1BVQ29tbWFu
ZEJ1ZmZlciB7CisKKyAgICBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2RlciBjcmVhdGVSZW5kZXJD
b21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yKFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yIGRl
c2NyaXB0b3IpOworICAgIHZvaWQgY29tbWl0KCk7CisgICAgdm9pZCBwcmVzZW50RHJhd2FibGUo
V2ViR1BVRHJhd2FibGUgZHJhd2FibGUpOworCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVQ29tbWFuZFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRRdWV1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLmZkNjA2MmI2NTJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQ29tbWFuZFF1ZXVlLmNwcApAQCAtMCwwICsxLDc4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRRdWV1ZS5oIgorCisjaWYgRU5BQkxF
KFdFQkdQVSkKKworLyoqKgorI2luY2x1ZGUgIkdQVUNvbW1hbmRRdWV1ZS5oIgorKi8KKyNpbmNs
dWRlICJXZWJHUFVDb21tYW5kQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXZWJHUFVDb21tYW5kUXVldWU+
IFdlYkdQVUNvbW1hbmRRdWV1ZTo6Y3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRl
eHQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQ29tbWFuZFF1ZXVlKGNvbnRl
eHQpKTsKK30KKworV2ViR1BVQ29tbWFuZFF1ZXVlOjpXZWJHUFVDb21tYW5kUXVldWUoV2ViR1BV
UmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKKyAgICA6IFdlYkdQVU9iamVjdChjb250ZXh0KQor
eworICAgIG1fY29tbWFuZFF1ZXVlID0gY29udGV4dC0+ZGV2aWNlKCktPmNyZWF0ZUNvbW1hbmRR
dWV1ZSgpOworfQorCitXZWJHUFVDb21tYW5kUXVldWU6On5XZWJHUFVDb21tYW5kUXVldWUoKQor
eworfQorCitTdHJpbmcgV2ViR1BVQ29tbWFuZFF1ZXVlOjpsYWJlbCgpIGNvbnN0Cit7CisgICAg
aWYgKCFtX2NvbW1hbmRRdWV1ZSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAg
ICByZXR1cm4gbV9jb21tYW5kUXVldWUtPmxhYmVsKCk7Cit9CisKK3ZvaWQgV2ViR1BVQ29tbWFu
ZFF1ZXVlOjpzZXRMYWJlbChjb25zdCBTdHJpbmcmIGxhYmVsKQoreworICAgIGlmICghbV9jb21t
YW5kUXVldWUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29tbWFuZFF1ZXVlLT5zZXRMYWJl
bChsYWJlbCk7Cit9CisKK1JlZlB0cjxXZWJHUFVDb21tYW5kQnVmZmVyPiBXZWJHUFVDb21tYW5k
UXVldWU6OmNyZWF0ZUNvbW1hbmRCdWZmZXIoKQoreworICAgIFJlZlB0cjxXZWJHUFVDb21tYW5k
QnVmZmVyPiBidWZmZXIgPSBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUodGhpcy0+Y29udGV4
dCgpLCB0aGlzKTsKKyAgICByZXR1cm4gYnVmZmVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R1BVQ29tbWFuZFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21t
YW5kUXVldWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMGM5M2Ix
Y2IyZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVDb21tYW5kUXVldWUuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BV
KQorCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0LmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLyoqKiBzdHViICovCisvLyBjbGFzcyBHUFVDb21t
YW5kUXVldWU7CitjbGFzcyBHUFVDb21tYW5kQnVmZmVyOworY2xhc3MgR1BVQ29tbWFuZFF1ZXVl
IDogcHVibGljIFJlZkNvdW50ZWQ8R1BVQ29tbWFuZFF1ZXVlPiB7CitwdWJsaWM6CisgICAgR1BV
Q29tbWFuZEJ1ZmZlciogY3JlYXRlQ29tbWFuZEJ1ZmZlcigpIHsgcmV0dXJuIG51bGxwdHI7IH0K
KyAgICBTdHJpbmcgbGFiZWwoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CisgICAg
dm9pZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKSB7IH0KK307CisvKioqIGVuZCBzdHViICovCitj
bGFzcyBXZWJHUFVDb21tYW5kQnVmZmVyOworCitjbGFzcyBXZWJHUFVDb21tYW5kUXVldWUgOiBw
dWJsaWMgV2ViR1BVT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJHUFVDb21tYW5k
UXVldWUoKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVUNvbW1hbmRRdWV1ZT4gY3JlYXRlKFdlYkdQ
VVJlbmRlcmluZ0NvbnRleHQqKTsKKworICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0OworICAgIHZv
aWQgc2V0TGFiZWwoY29uc3QgU3RyaW5nJik7CisKKyAgICBSZWZQdHI8V2ViR1BVQ29tbWFuZEJ1
ZmZlcj4gY3JlYXRlQ29tbWFuZEJ1ZmZlcigpOworCisgICAgR1BVQ29tbWFuZFF1ZXVlKiBjb21t
YW5kUXVldWUoKSB7IHJldHVybiBtX2NvbW1hbmRRdWV1ZS5nZXQoKTsgfQorCitwcml2YXRlOgor
ICAgIFdlYkdQVUNvbW1hbmRRdWV1ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0Kik7CisKKyAgICBS
ZWZQdHI8R1BVQ29tbWFuZFF1ZXVlPiBtX2NvbW1hbmRRdWV1ZTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHUFVDb21tYW5kUXVldWUuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVQ29tbWFuZFF1ZXVlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uYzE2ODliNzY2NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHUFVDb21tYW5kUXVldWUuaWRsCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9
V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGludGVyZmFjZSBXZWJHUFVD
b21tYW5kUXVldWUgeworCisgICAgYXR0cmlidXRlIERPTVN0cmluZyBsYWJlbDsKKworICAgIFdl
YkdQVUNvbW1hbmRCdWZmZXI/IGNyZWF0ZUNvbW1hbmRCdWZmZXIoKTsKKworfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsRGVz
Y3JpcHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjkxMzcz
Mjc5YTA4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxF
KFdFQkdQVSkKKworLyoqKgorI2luY2x1ZGUgIkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCIK
KyAqLworI2luY2x1ZGUgIldlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitSZWY8V2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcj4gV2ViR1BVRGVwdGhT
dGVuY2lsRGVzY3JpcHRvcjo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCkpOworfQorCitXZWJHUFVEZXB0aFN0ZW5jaWxE
ZXNjcmlwdG9yOjpXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCkKKyAgICA6IFdlYkdQVU9i
amVjdCgpCit7CisgICAgbV9kZXB0aFN0ZW5jaWxEZXNjcmlwdG9yID0gR1BVRGVwdGhTdGVuY2ls
RGVzY3JpcHRvcjo6Y3JlYXRlKCk7Cit9CisKK1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3I6
On5XZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCkKK3sKK30KKworU3RyaW5nIFdlYkdQVURl
cHRoU3RlbmNpbERlc2NyaXB0b3I6OmxhYmVsKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZGVwdGhT
dGVuY2lsRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICBy
ZXR1cm4gbV9kZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLT5sYWJlbCgpOworfQorCit2b2lkIFdlYkdQ
VURlcHRoU3RlbmNpbERlc2NyaXB0b3I6OnNldExhYmVsKGNvbnN0IFN0cmluZyYgbGFiZWwpCit7
CisgICAgaWYgKCFtX2RlcHRoU3RlbmNpbERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fZGVwdGhTdGVuY2lsRGVzY3JpcHRvci0+c2V0TGFiZWwobGFiZWwpOworfQorCitib29s
IFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3I6OmRlcHRoV3JpdGVFbmFibGVkKCkgY29uc3QK
K3sKKyAgICBpZiAoIW1fZGVwdGhTdGVuY2lsRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIG1fZGVwdGhTdGVuY2lsRGVzY3JpcHRvci0+ZGVwdGhXcml0ZUVu
YWJsZWQoKTsKK30KKwordm9pZCBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpzZXREZXB0
aFdyaXRlRW5hYmxlZChib29sIG5ld0RlcHRoV3JpdGVFbmFibGVkKQoreworICAgIGlmICghbV9k
ZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RlcHRoU3Rl
bmNpbERlc2NyaXB0b3ItPnNldERlcHRoV3JpdGVFbmFibGVkKG5ld0RlcHRoV3JpdGVFbmFibGVk
KTsKK30KKworYXV0byBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpkZXB0aENvbXBhcmVG
dW5jdGlvbigpIGNvbnN0IC0+IFdlYkdQVUNvbXBhcmVGdW5jdGlvbgoreworICAgIHJldHVybiBt
X2RlcHRoQ29tcGFyZUZ1bmN0aW9uOworfQorCit2b2lkIFdlYkdQVURlcHRoU3RlbmNpbERlc2Ny
aXB0b3I6OnNldERlcHRoQ29tcGFyZUZ1bmN0aW9uKENvbXBhcmVGdW5jdGlvbiBuZXdEZXB0aENv
bXBhcmVGdW5jdGlvbikKK3sKKyAgICBtX2RlcHRoQ29tcGFyZUZ1bmN0aW9uID0gbmV3RGVwdGhD
b21wYXJlRnVuY3Rpb247CisgICAgbV9kZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLT5zZXREZXB0aENv
bXBhcmVGdW5jdGlvbih0b0dQVUNvbXBhcmVGdW5jdGlvbihtX2RlcHRoQ29tcGFyZUZ1bmN0aW9u
KSk7CisKKy8vICAgIGlmIChPcHRpb25hbDxXZWJHUFVDb21wYXJlRnVuY3Rpb24+IGNvbXBhcmVG
dW5jdGlvbiA9IHRvV2ViR1BVQ29tcGFyZUZ1bmN0aW9uKG5ld0RlcHRoQ29tcGFyZUZ1bmN0aW9u
KSkgeworLy8gICAgICAgIG1fZGVwdGhDb21wYXJlRnVuY3Rpb24gPSBjb21wYXJlRnVuY3Rpb24u
dmFsdWUoKTsKKy8vICAgICAgICBtX2RlcHRoU3RlbmNpbERlc2NyaXB0b3ItPnNldERlcHRoQ29t
cGFyZUZ1bmN0aW9uKHRvR1BVQ29tcGFyZUZ1bmN0aW9uKG1fZGVwdGhDb21wYXJlRnVuY3Rpb24p
KTsKKy8vICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbERlc2Ny
aXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbERl
c2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZmIyOGI0
ZDNiYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldlYkdQVUVudW1zLmgiCisjaW5jbHVkZSAiV2ViR1BV
T2JqZWN0LmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworLyoqKiBzdHViICovCisvLyBjbGFzcyBHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOwor
Y2xhc3MgR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvciA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVURl
cHRoU3RlbmNpbERlc2NyaXB0b3I+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPEdQVURl
cHRoU3RlbmNpbERlc2NyaXB0b3I+IGNyZWF0ZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBT
dHJpbmcgbGFiZWwoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CisgICAgdm9pZCBz
ZXRMYWJlbChjb25zdCBTdHJpbmcmKSB7IH0KKyAgICBib29sIGRlcHRoV3JpdGVFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIHNldERlcHRoV3JpdGVFbmFibGVkKGJv
b2wpIHsgfQorICAgIHZvaWQgc2V0RGVwdGhDb21wYXJlRnVuY3Rpb24oR1BVQ29tcGFyZUZ1bmN0
aW9uKSB7IH0KK307CisvKioqIGVuZCBzdHViICovCisKK2NsYXNzIFdlYkdQVURlcHRoU3RlbmNp
bERlc2NyaXB0b3IgOiBwdWJsaWMgV2ViR1BVT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5XZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCk7CisgICAgc3RhdGljIFJlZjxXZWJHUFVE
ZXB0aFN0ZW5jaWxEZXNjcmlwdG9yPiBjcmVhdGUoKTsKKworICAgIFN0cmluZyBsYWJlbCgpIGNv
bnN0OworICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgU3RyaW5nJik7CisKKyAgICBib29sIGRlcHRo
V3JpdGVFbmFibGVkKCkgY29uc3Q7CisgICAgdm9pZCBzZXREZXB0aFdyaXRlRW5hYmxlZChib29s
KTsKKworICAgIHVzaW5nIENvbXBhcmVGdW5jdGlvbiA9IFdlYkdQVUNvbXBhcmVGdW5jdGlvbjsK
KyAgICBDb21wYXJlRnVuY3Rpb24gZGVwdGhDb21wYXJlRnVuY3Rpb24oKSBjb25zdDsKKyAgICB2
b2lkIHNldERlcHRoQ29tcGFyZUZ1bmN0aW9uKENvbXBhcmVGdW5jdGlvbik7CisKKyAgICBHUFVE
ZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKiBkZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCkgeyByZXR1cm4g
bV9kZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgV2ViR1BV
RGVwdGhTdGVuY2lsRGVzY3JpcHRvcigpOworCisgICAgV2ViR1BVQ29tcGFyZUZ1bmN0aW9uIG1f
ZGVwdGhDb21wYXJlRnVuY3Rpb247CisgICAgUmVmUHRyPEdQVURlcHRoU3RlbmNpbERlc2NyaXB0
b3I+IG1fZGVwdGhTdGVuY2lsRGVzY3JpcHRvcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwLi45M2I1ZmM5OWZjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaWRsCkBAIC0w
LDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BV
CitdIGVudW0gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uIHsKKyAgICAibmV2ZXIiLAorICAgICJsZXNz
IiwKKyAgICAiZXF1YWwiLAorICAgICJsZXNzZXF1YWwiLAorICAgICJncmVhdGVyIiwKKyAgICAi
bm90ZXF1YWwiLAorICAgICJncmVhdGVyZXF1YWwiLAorICAgICJhbHdheXMiCit9OworCitbCisg
ICAgQ29uc3RydWN0b3IsCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1
bnRpbWU9V2ViR1BVCitdIGludGVyZmFjZSBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yIHsK
KworICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7CisKKyAgICBhdHRyaWJ1dGUgV2ViR1BV
Q29tcGFyZUZ1bmN0aW9uIGRlcHRoQ29tcGFyZUZ1bmN0aW9uOworICAgIGF0dHJpYnV0ZSBib29s
ZWFuIGRlcHRoV3JpdGVFbmFibGVkOworCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wNDhjZWQ3Y2U3NQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcApAQCAt
MCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdQVURlcHRoU3RlbmNpbFN0YXRl
LmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisvKioqCisjaW5jbHVkZSAiR1BVRGVwdGhTdGVu
Y2lsU3RhdGUuaCIKKyAqLworI2luY2x1ZGUgIldlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3Iu
aCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworUmVmPFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlPiBXZWJHUFVEZXB0aFN0ZW5jaWxT
dGF0ZTo6Y3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIFdlYkdQVURlcHRo
U3RlbmNpbERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUoY29udGV4dCwgZGVzY3JpcHRvcikpOworfQorCitX
ZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZTo6V2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUoV2ViR1BVUmVu
ZGVyaW5nQ29udGV4dCogY29udGV4dCwgV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvciogZGVz
Y3JpcHRvcikKKyAgICA6IFdlYkdQVU9iamVjdChjb250ZXh0KQoreworICAgIGlmICghY29udGV4
dCB8fCAhZGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOworICAgIG1fZGVwdGhTdGVuY2lsU3Rh
dGUgPSBHUFVEZXB0aFN0ZW5jaWxTdGF0ZTo6Y3JlYXRlKGNvbnRleHQtPmRldmljZSgpLmdldCgp
LCBkZXNjcmlwdG9yLT5kZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCkpOworfQorCitXZWJHUFVEZXB0
aFN0ZW5jaWxTdGF0ZTo6fldlYkdQVURlcHRoU3RlbmNpbFN0YXRlKCkKK3sKK30KKworU3RyaW5n
IFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2Rl
cHRoU3RlbmNpbFN0YXRlKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIHJl
dHVybiBtX2RlcHRoU3RlbmNpbFN0YXRlLT5sYWJlbCgpOworfQorCit2b2lkIFdlYkdQVURlcHRo
U3RlbmNpbFN0YXRlOjpzZXRMYWJlbChjb25zdCBTdHJpbmcmIGxhYmVsKQoreworICAgIGlmICgh
bV9kZXB0aFN0ZW5jaWxTdGF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kZXB0aFN0ZW5j
aWxTdGF0ZS0+c2V0TGFiZWwobGFiZWwpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRGVw
dGhTdGVuY2lsU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRo
U3RlbmNpbFN0YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjE5
N2NhMzIyYTFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0LmgiCisKKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLyoqKiBzdHViICovCisvLyBjbGFz
cyBHUFVEZXB0aFN0ZW5jaWxTdGF0ZTsKK2NsYXNzIEdQVURldmljZTsKK2NsYXNzIEdQVURlcHRo
U3RlbmNpbERlc2NyaXB0b3I7CitjbGFzcyBHUFVEZXB0aFN0ZW5jaWxTdGF0ZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPEdQVURlcHRoU3RlbmNpbFN0YXRlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZlB0cjxHUFVEZXB0aFN0ZW5jaWxTdGF0ZT4gY3JlYXRlKEdQVURldmljZSosIEdQVURlcHRoU3Rl
bmNpbERlc2NyaXB0b3IqKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgU3RyaW5nIGxhYmVsKCkg
Y29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQorICAgIHZvaWQgc2V0TGFiZWwoY29uc3Qg
U3RyaW5nJikgeyB9Cit9OworLyoqKiBlbmQgc3R1YiAqLworY2xhc3MgV2ViR1BVRGVwdGhTdGVu
Y2lsRGVzY3JpcHRvcjsKKworY2xhc3MgV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUgOiBwdWJsaWMg
V2ViR1BVT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJHUFVEZXB0aFN0ZW5jaWxT
dGF0ZSgpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVRGVwdGhTdGVuY2lsU3RhdGU+IGNyZWF0ZShX
ZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvciopOwor
CisgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJp
bmcmKTsKKworICAgIEdQVURlcHRoU3RlbmNpbFN0YXRlKiBkZXB0aFN0ZW5jaWxTdGF0ZSgpIHsg
cmV0dXJuIG1fZGVwdGhTdGVuY2lsU3RhdGUuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWJH
UFVEZXB0aFN0ZW5jaWxTdGF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgV2ViR1BVRGVwdGhT
dGVuY2lsRGVzY3JpcHRvciopOworCisgICAgUmVmUHRyPEdQVURlcHRoU3RlbmNpbFN0YXRlPiBt
X2RlcHRoU3RlbmNpbFN0YXRlOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0
aFN0ZW5jaWxTdGF0ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0
aFN0ZW5jaWxTdGF0ZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
LjU2MTViZGY4YzM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaWRsCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9
V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGludGVyZmFjZSBXZWJHUFVE
ZXB0aFN0ZW5jaWxTdGF0ZSB7CisKKyAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOworCit9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRHJhd2FibGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRHJhd2FibGUuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44ZjJhYWM2YmJjNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURyYXdhYmxlLmNwcApA
QCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdQVURyYXdhYmxlLmgiCisK
KyNpZiBFTkFCTEUoV0VCR1BVKQorCisvKioqCisjaW5jbHVkZSAiR1BVRHJhd2FibGUuaCIKKyAq
LworI2luY2x1ZGUgIkdQVVRleHR1cmUuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250
ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVVGV4dHVyZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1JlZjxXZWJHUFVEcmF3YWJsZT4gV2ViR1BVRHJhd2FibGU6OmNyZWF0ZShXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0KiBjb250ZXh0KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQ
VURyYXdhYmxlKGNvbnRleHQpKTsKK30KKworV2ViR1BVRHJhd2FibGU6OldlYkdQVURyYXdhYmxl
KFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCisgICAgOiBXZWJHUFVPYmplY3QoY29u
dGV4dCkKK3sKKyAgICBtX2RyYXdhYmxlID0gY29udGV4dC0+ZGV2aWNlKCktPmdldEZyYW1lYnVm
ZmVyKCk7CisgICAgaWYgKCFtX2RyYXdhYmxlKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQ
dHI8R1BVVGV4dHVyZT4gZHJhd2FibGVUZXh0dXJlID0gR1BVVGV4dHVyZTo6Y3JlYXRlRnJvbUV4
aXN0aW5nVGV4dHVyZShtX2RyYXdhYmxlLT50ZXh0dXJlKCkpOworICAgIG1fdGV4dHVyZSA9IFdl
YkdQVVRleHR1cmU6OmNyZWF0ZUZyb21EcmF3YWJsZVRleHR1cmUoY29udGV4dCwgZHJhd2FibGVU
ZXh0dXJlKTsKK30KKworV2ViR1BVRHJhd2FibGU6On5XZWJHUFVEcmF3YWJsZSgpCit7Cit9CisK
K1dlYkdQVVRleHR1cmUqIFdlYkdQVURyYXdhYmxlOjp0ZXh0dXJlKCkKK3sKKyAgICBpZiAoIW1f
dGV4dHVyZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gbV90ZXh0dXJl
LmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRHJhd2FibGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURyYXdhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLmNkZDE5MmMwYTE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRHJhd2FibGUuaApAQCAtMCwwICsxLDYwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworLyoqKiBzdHViICovCisvLyBjbGFzcyBHUFVEcmF3YWJsZTsK
K2NsYXNzIEdQVURyYXdhYmxlIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVRHJhd2FibGU+IHsKK3B1
YmxpYzoKKyAgICBHUFVUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorfTsK
Ky8qKiogZW5kIHN0dWIgKi8KK2NsYXNzIFdlYkdQVVRleHR1cmU7CisKK2NsYXNzIFdlYkdQVURy
YXdhYmxlIDogcHVibGljIFdlYkdQVU9iamVjdCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2Vi
R1BVRHJhd2FibGUoKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVURyYXdhYmxlPiBjcmVhdGUoV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dCopOworCisgICAgV2ViR1BVVGV4dHVyZSogdGV4dHVyZSgpOwor
CisgICAgR1BVRHJhd2FibGUqIGRyYXdhYmxlKCkgeyByZXR1cm4gbV9kcmF3YWJsZS5nZXQoKTsg
fQorCitwcml2YXRlOgorICAgIFdlYkdQVURyYXdhYmxlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQq
KTsKKyAgICBSZWZQdHI8R1BVRHJhd2FibGU+IG1fZHJhd2FibGU7CisgICAgUmVmUHRyPFdlYkdQ
VVRleHR1cmU+IG1fdGV4dHVyZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEcmF3YWJs
ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEcmF3YWJsZS5pZGwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRjOTAxYzQyNGEzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRHJhd2FibGUuaWRs
CkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9
V2ViR1BVCitdIGludGVyZmFjZSBXZWJHUFVEcmF3YWJsZSB7CisKKyAgICByZWFkb25seSBhdHRy
aWJ1dGUgV2ViR1BVVGV4dHVyZSB0ZXh0dXJlOyAvLyBGSVhNRTogT25seSB0aGUgZnJhbWVidWZm
ZXIgc2hvdWxkIGhhdmUgdGhpcy4KKworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVUVudW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdQVUVudW1zLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWIw
NDkyOTFkZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHUFVFbnVtcy5jcHAKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vi
R1BVRW51bXMuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKy8qKioKKyNpbmNsdWRlICJHUFVF
bnVtcy5oIgorICovCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RkOjpvcHRpb25hbDxXZWJH
UFVDb21wYXJlRnVuY3Rpb24+IHRvV2ViR1BVQ29tcGFyZUZ1bmN0aW9uKGNvbnN0IFN0cmluZyYg
bmFtZSkKK3sKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIm5l
dmVyIikpCisgICAgICAgIHJldHVybiBXZWJHUFVDb21wYXJlRnVuY3Rpb246Ok5ldmVyOworICAg
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAibGVzcyIpKQorICAgICAg
ICByZXR1cm4gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpMZXNzOworICAgIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiZXF1YWwiKSkKKyAgICAgICAgcmV0dXJuIFdlYkdQ
VUNvbXBhcmVGdW5jdGlvbjo6RXF1YWw7CisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKG5hbWUsICJsZXNzZXF1YWwiKSkKKyAgICAgICAgcmV0dXJuIFdlYkdQVUNvbXBhcmVG
dW5jdGlvbjo6TGVzc2VxdWFsOworICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShuYW1lLCAiZ3JlYXRlciIpKQorICAgICAgICByZXR1cm4gV2ViR1BVQ29tcGFyZUZ1bmN0aW9u
OjpHcmVhdGVyOworICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAi
bm90ZXF1YWwiKSkKKyAgICAgICAgcmV0dXJuIFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6Tm90ZXF1
YWw7CisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJncmVhdGVy
ZXF1YWwiKSkKKyAgICAgICAgcmV0dXJuIFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6R3JlYXRlcmVx
dWFsOworICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiYWx3YXlz
IikpCisgICAgICAgIHJldHVybiBXZWJHUFVDb21wYXJlRnVuY3Rpb246OkFsd2F5czsKKworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK1N0
cmluZyB3ZWIzRENvbXBhcmVGdW5jdGlvbk5hbWUoY29uc3QgV2ViR1BVQ29tcGFyZUZ1bmN0aW9u
IHZhbHVlKQoreworICAgIGlmICh2YWx1ZSA9PSBXZWJHUFVDb21wYXJlRnVuY3Rpb246Ok5ldmVy
KQorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJuZXZlciIpOworICAgIGlmICh2YWx1ZSA9
PSBXZWJHUFVDb21wYXJlRnVuY3Rpb246Okxlc3MpCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVy
YWwoImxlc3MiKTsKKyAgICBpZiAodmFsdWUgPT0gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpFcXVh
bCkKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiZXF1YWwiKTsKKyAgICBpZiAodmFsdWUg
PT0gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpMZXNzZXF1YWwpCisgICAgICAgIHJldHVybiBBU0NJ
SUxpdGVyYWwoImxlc3NlcXVhbCIpOworICAgIGlmICh2YWx1ZSA9PSBXZWJHUFVDb21wYXJlRnVu
Y3Rpb246OkdyZWF0ZXIpCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImdyZWF0ZXIiKTsK
KyAgICBpZiAodmFsdWUgPT0gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpOb3RlcXVhbCkKKyAgICAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgibm90ZXF1YWwiKTsKKyAgICBpZiAodmFsdWUgPT0gV2Vi
R1BVQ29tcGFyZUZ1bmN0aW9uOjpHcmVhdGVyZXF1YWwpCisgICAgICAgIHJldHVybiBBU0NJSUxp
dGVyYWwoImdyZWF0ZXJlcXVhbCIpOworICAgIGlmICh2YWx1ZSA9PSBXZWJHUFVDb21wYXJlRnVu
Y3Rpb246OkFsd2F5cykKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiYWx3YXlzIik7Cisg
ICAgCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
Cit9CisKK0dQVUNvbXBhcmVGdW5jdGlvbiB0b0dQVUNvbXBhcmVGdW5jdGlvbihjb25zdCBXZWJH
UFVDb21wYXJlRnVuY3Rpb24gdmFsdWUpCit7CisgICAgaWYgKHZhbHVlID09IFdlYkdQVUNvbXBh
cmVGdW5jdGlvbjo6TmV2ZXIpCisgICAgICAgIHJldHVybiBHUFVDb21wYXJlRnVuY3Rpb246Ok5l
dmVyOworICAgIGlmICh2YWx1ZSA9PSBXZWJHUFVDb21wYXJlRnVuY3Rpb246Okxlc3MpCisgICAg
ICAgIHJldHVybiBHUFVDb21wYXJlRnVuY3Rpb246Okxlc3M7CisgICAgaWYgKHZhbHVlID09IFdl
YkdQVUNvbXBhcmVGdW5jdGlvbjo6RXF1YWwpCisgICAgICAgIHJldHVybiBHUFVDb21wYXJlRnVu
Y3Rpb246OkVxdWFsOworICAgIGlmICh2YWx1ZSA9PSBXZWJHUFVDb21wYXJlRnVuY3Rpb246Okxl
c3NlcXVhbCkKKyAgICAgICAgcmV0dXJuIEdQVUNvbXBhcmVGdW5jdGlvbjo6TGVzc0VxdWFsOwor
ICAgIGlmICh2YWx1ZSA9PSBXZWJHUFVDb21wYXJlRnVuY3Rpb246OkdyZWF0ZXIpCisgICAgICAg
IHJldHVybiBHUFVDb21wYXJlRnVuY3Rpb246OkdyZWF0ZXI7CisgICAgaWYgKHZhbHVlID09IFdl
YkdQVUNvbXBhcmVGdW5jdGlvbjo6Tm90ZXF1YWwpCisgICAgICAgIHJldHVybiBHUFVDb21wYXJl
RnVuY3Rpb246Ok5vdEVxdWFsOworICAgIGlmICh2YWx1ZSA9PSBXZWJHUFVDb21wYXJlRnVuY3Rp
b246OkdyZWF0ZXJlcXVhbCkKKyAgICAgICAgcmV0dXJuIEdQVUNvbXBhcmVGdW5jdGlvbjo6R3Jl
YXRlckVxdWFsOworICAgIGlmICh2YWx1ZSA9PSBXZWJHUFVDb21wYXJlRnVuY3Rpb246OkFsd2F5
cykKKyAgICAgICAgcmV0dXJuIEdQVUNvbXBhcmVGdW5jdGlvbjo6QWx3YXlzOworICAgIAorICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBHUFVDb21wYXJlRnVuY3Rpb246Ok5l
dmVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRW51bXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdQVUVudW1zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjhlZTYzZDFjZGU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVRW51bXMuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoV0VCR1BVKQorCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBXZWJH
UFVDb21wYXJlRnVuY3Rpb24geworICAgIE5ldmVyLAorICAgIExlc3MsCisgICAgRXF1YWwsCisg
ICAgTGVzc2VxdWFsLAorICAgIEdyZWF0ZXIsCisgICAgTm90ZXF1YWwsCisgICAgR3JlYXRlcmVx
dWFsLAorICAgIEFsd2F5cworfTsKKworc3RkOjpvcHRpb25hbDxXZWJHUFVDb21wYXJlRnVuY3Rp
b24+IHRvV2ViR1BVQ29tcGFyZUZ1bmN0aW9uKGNvbnN0IFN0cmluZyYpOworU3RyaW5nIHdlYjNE
Q29tcGFyZUZ1bmN0aW9uTmFtZShjb25zdCBXZWJHUFVDb21wYXJlRnVuY3Rpb24pOworCisvKioq
IHN0dWIgKi8KKy8vIGVudW0gY2xhc3MgR1BVQ29tcGFyZUZ1bmN0aW9uOworZW51bSBjbGFzcyBH
UFVDb21wYXJlRnVuY3Rpb24geworICAgIE5ldmVyLAorICAgIExlc3MsCisgICAgRXF1YWwsCisg
ICAgTGVzc0VxdWFsLAorICAgIEdyZWF0ZXIsCisgICAgTm90RXF1YWwsCisgICAgR3JlYXRlckVx
dWFsLAorICAgIEFsd2F5cworfTsKKy8qKiogZW5kIHN0dWIgKi8KK0dQVUNvbXBhcmVGdW5jdGlv
biB0b0dQVUNvbXBhcmVGdW5jdGlvbihjb25zdCBXZWJHUFVDb21wYXJlRnVuY3Rpb24pOworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVRW51bXMuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVRW51bXMuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li43MjFmYTE0ZDJlNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVUVudW1zLmlkbApAQCAtMCwwICsxLDI3NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisg
ICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVQaXhlbEZvcm1hdCB7Cisg
ICAgIkJHUkE4VW5vcm0iCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVu
YWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVudW0gV2ViR1BVTG9hZEFjdGlvbiB7CisgICAgImRv
bnRjYXJlIiwKKyAgICAibG9hZCIsCisgICAgImNsZWFyIgorfTsKKworWworICAgIENvbmRpdGlv
bmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQVVN0
b3JlQWN0aW9uIHsKKyAgICAiZG9udGNhcmUiLAorICAgICJzdG9yZSIsCisgICAgIm11bHRpc2Ft
cGxlcmVzb2x2ZSIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxl
ZEF0UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVQcmltaXRpdmVUeXBlIHsKKyAgICAicG9p
bnQiLAorICAgICJsaW5lIiwKKyAgICAibGluZXN0cmlwIiwKKyAgICAidHJpYW5nbGUiLAorICAg
ICJ0cmlhbmdsZXN0cmlwIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBF
bmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQVUZ1bmN0aW9uVHlwZSB7CisgICAg
ImZyYWdtZW50IiwKKyAgICAidmVydGV4IgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQ
VSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQVVN0ZW5jaWxPcGVy
YXRpb24geworICAgICJrZWVwIiwKKyAgICAiemVybyIsCisgICAgInJlcGxhY2UiLAorICAgICJp
bmNyZW1lbnRjbGFtcCIsCisgICAgImRlY3JlbWVudGNsYW1wIiwKKyAgICAiaW52ZXJ0IiwKKyAg
ICAiaW5jcmVtZW50d3JhcCIsCisgICAgImRlY3JlbWVudHdyYXAiCit9OworCitbCisgICAgQ29u
ZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVudW0gV2Vi
R1BVU3RhdHVzIHsKKyAgICAibm90ZW5xdWV1ZWQiLAorICAgICJlbnF1ZXVlZCIsCisgICAgImNv
bW1pdHRlZCIsCisgICAgInNjaGVkdWxlZCIsCisgICAgImNvbXBsZXRlZCIsCisgICAgImVycm9y
IgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1l
PVdlYkdQVQorXSBlbnVtIFdlYkdQVVNhbXBsZXJBZGRyZXNzTW9kZSB7CisgICAgImNsYW1wdG9l
ZGdlIiwKKyAgICAibWlycm9yY2xhbXB0b2VkZ2UiLAorICAgICJyZXBlYXQiLAorICAgICJtaXJy
b3JyZXBlYXQiLAorICAgICJjbGFtcHRvemVybyIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1X
RUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVTYW1wbGVy
TWluTWFnRmlsdGVyIHsKKyAgICAibmVhcmVzdCIsCisgICAgImxpbmVhciIKK307CisKK1sKKyAg
ICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZW51
bSBXZWJHUFVTYW1wbGVyTWlwRmlsdGVyIHsKKyAgICAibm90bWlwbWFwcGVkIiwKKyAgICAibmVh
cmVzdCIsCisgICAgImxpbmVhciIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisg
ICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVDdWxsTW9kZSB7CisgICAg
Im5vbmUiLAorICAgICJmcm9udCIsCisgICAgImJhY2siCit9OworCitbCisgICAgQ29uZGl0aW9u
YWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVudW0gV2ViR1BVSW5k
ZXhUeXBlIHsKKyAgICAidWludDE2IiwKKyAgICAidWludDMyIgorfTsKKworWworICAgIENvbmRp
dGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQ
VVZpc2liaWxpdHlSZXN1bHRNb2RlIHsKKyAgICAiZGlzYWJsZWQiLAorICAgICJib29sZWFuIiwK
KyAgICAiY291bnRpbmciCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVu
YWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVudW0gV2ViR1BVV2luZGluZyB7CisgICAgImNsb2Nr
d2lzZSIsCisgICAgImNvdW50ZXJjbG9ja3dpc2UiCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9
V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVudW0gV2ViR1BVRGVwdGhD
bGlwTW9kZSB7CisgICAgImNsaXAiLAorICAgICJjbGFtcCIKK307CisKK1sKKyAgICBDb25kaXRp
b25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVU
cmlhbmdsZUZpbGxNb2RlIHsKKyAgICAiZmlsbCIsCisgICAgImxpbmVzIgorfTsKKworWworICAg
IENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVt
IFdlYkdQVUNQVUNhY2hlTW9kZSB7CisgICAgImRlZmF1bHRjYWNoZSIsCisgICAgIndyaXRlY29t
YmluZWQiCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1
bnRpbWU9V2ViR1BVCitdIGVudW0gV2ViR1BVU3RvcmFnZU1vZGUgeworICAgICJzaGFyZWQiLAor
ICAgICJtYW5hZ2VkIiwKKyAgICAicHJpdmF0ZSIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1X
RUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVSZXNvdXJj
ZU9wdGlvbnMgeworICAgICJjcHVjYWNoZW1vZGVkZWZhdWx0Y2FjaGUiLAorICAgICJjcHVjYWNo
ZW1vZGV3cml0ZWNvbWJpbmVkIiwKKyAgICAic3RvcmFnZW1vZGVzaGFyZWQiLAorICAgICJzdG9y
YWdlbW9kZW1hbmFnZWQiLAorICAgICJzdG9yYWdlbW9kZXByaXZhdGUiLAorICAgICJvcHRpb25j
cHVjYWNoZW1vZGVkZWZhdWx0Y2FjaGUiLAorICAgICJvcHRpb25jcHVjYWNoZW1vZGV3cml0ZWNv
bWJpbmVkIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRS
dW50aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQVVRleHR1cmVVc2FnZSB7CisgICAgInVua25vd24i
LAorICAgICJzaGFkZXJyZWFkIiwKKyAgICAic2hhZGVyd3JpdGUiLAorICAgICJyZW5kZXJ0YXJn
ZXQiLAorICAgICJwaXhlbGZvcm1hdHZpZXciCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VC
R1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVudW0gV2ViR1BVQmxlbmRPcGVy
YXRpb24geworICAgICJhZGQiLAorICAgICJzdWJ0cmFjdCIsCisgICAgInJldmVyc2VzdWJ0cmFj
dCIsCisgICAgIm1pbiIsCisgICAgIm1heCIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJH
UFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVCbGVuZEZhY3Rv
ciB7CisgICAgInplcm8iLAorICAgICJvbmUiLAorICAgICJzb3VyY2Vjb2xvciIsCisgICAgIm9u
ZW1pbnVzc291cmNlY29sb3IiLAorICAgICJzb3VyY2VhbHBoYSIsCisgICAgIm9uZW1pbnVzc291
cmNlYWxwaGEiLAorICAgICJkZXN0aW5hdGlvbmNvbG9yIiwKKyAgICAib25lbWludXNkZXN0aW5h
dGlvbmNvbG9yIiwKKyAgICAiZGVzdGluYXRpb25hbHBoYSIsCisgICAgIm9uZW1pbnVzZGVzdGlu
YXRpb25hbHBoYSIsCisgICAgInNvdXJjZWFscGhhc2F0dXJhdGVkIiwKKyAgICAiYmxlbmRjb2xv
ciIsCisgICAgIm9uZW1pbnVzYmxlbmRjb2xvciIsCisgICAgImJsZW5kYWxwaGEiLAorICAgICJv
bmVtaW51c2JsZW5kYWxwaGEiCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAg
IEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVudW0gV2ViR1BVQ29sb3JXcml0ZU1hc2sgewor
ICAgICJub25lIiwKKyAgICAicmVkIiwKKyAgICAiZ3JlZW4iLAorICAgICJibHVlIiwKKyAgICAi
YWxwaGEiLAorICAgICJhbGwiCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAg
IEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVudW0gV2ViR1BVTXVsdGlzYW1wbGVEZXB0aFJl
c29sdmVGaWx0ZXIgeworICAgICJzYW1wbGUwIiwKKyAgICAibWluIiwKKyAgICAibWF4IgorfTsK
KworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQ
VQorXSBlbnVtIFdlYkdQVUZlYXR1cmVTZXQgeworICAgICJsZXZlbDEiLAorICAgICJsZXZlbDIi
Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24uY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42M2U4YmY4MDIxMQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUZ1bmN0aW9uLmNw
cApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdQVUZ1bmN0aW9uLmgi
CisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiR1BVRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJHUFVMaWJyYXJ5LmgiCisjaW5jbHVkZSAiV2ViR1BVTGlicmFyeS5oIgorI2luY2x1ZGUg
IldlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8
V2ViR1BVRnVuY3Rpb24+IFdlYkdQVUZ1bmN0aW9uOjpjcmVhdGUoV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dCogY29udGV4dCwgV2ViR1BVTGlicmFyeSogbGlicmFyeSwgY29uc3QgU3RyaW5nJiBuYW1l
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUZ1bmN0aW9uKGNvbnRleHQsIGxp
YnJhcnksIG5hbWUpKTsKK30KKworV2ViR1BVRnVuY3Rpb246OldlYkdQVUZ1bmN0aW9uKFdlYkdQ
VVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIFdlYkdQVUxpYnJhcnkqIGxpYnJhcnksIGNvbnN0
IFN0cmluZyYgbmFtZSkKKyAgICA6IFdlYkdQVU9iamVjdChjb250ZXh0KQoreworICAgIG1fZnVu
Y3Rpb24gPSBsaWJyYXJ5LT5saWJyYXJ5KCktPmZ1bmN0aW9uV2l0aE5hbWUobmFtZSk7Cit9CisK
K1dlYkdQVUZ1bmN0aW9uOjp+V2ViR1BVRnVuY3Rpb24oKQoreworfQorCitTdHJpbmcgV2ViR1BV
RnVuY3Rpb246Om5hbWUoKSBjb25zdAoreworICAgIGlmICghbV9mdW5jdGlvbikKKyAgICAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4gbV9mdW5jdGlvbi0+bmFtZSgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVUZ1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjlmMTdkNDg0YWIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24uaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgR1BVRnVuY3Rpb247CitjbGFzcyBXZWJHUFVMaWJyYXJ5OworCitj
bGFzcyBXZWJHUFVGdW5jdGlvbiA6IHB1YmxpYyBXZWJHUFVPYmplY3QgeworcHVibGljOgorICAg
IHZpcnR1YWwgfldlYkdQVUZ1bmN0aW9uKCk7CisgICAgc3RhdGljIFJlZjxXZWJHUFVGdW5jdGlv
bj4gY3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBXZWJHUFVMaWJyYXJ5KiwgY29uc3Qg
U3RyaW5nJiBuYW1lKTsKKworICAgIFN0cmluZyBuYW1lKCkgY29uc3Q7CisKKyAgICBHUFVGdW5j
dGlvbiogZnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uLmdldCgpOyB9CisKK3By
aXZhdGU6CisgICAgV2ViR1BVRnVuY3Rpb24oV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIFdlYkdQ
VUxpYnJhcnkqLCBjb25zdCBTdHJpbmcmIG5hbWUpOworCisgICAgUmVmUHRyPEdQVUZ1bmN0aW9u
PiBtX2Z1bmN0aW9uOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVGdW5jdGlvbi5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVGdW5jdGlvbi5pZGwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjE1NjAzNjcwY2ZhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24uaWRsCkBA
IC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2Vi
R1BVCitdIGludGVyZmFjZSBXZWJHUFVGdW5jdGlvbiB7CisKKyAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIG5hbWU7CisKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHUFVMaWJyYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdQVUxpYnJhcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42
ZDM3NTc5MzVjNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVUxpYnJhcnkuY3BwCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViR1BVTGlicmFyeS5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVUxp
YnJhcnkuaCIKKyNpbmNsdWRlICJXZWJHUFVGdW5jdGlvbi5oIgorI2luY2x1ZGUgIldlYkdQVVJl
bmRlcmluZ0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8V2ViR1BVTGli
cmFyeT4gV2ViR1BVTGlicmFyeTo6Y3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJHUFVMaWJyYXJ5KGNvbnRleHQsIHNvdXJjZUNvZGUpKTsKK30KKworV2ViR1BVTGlicmFy
eTo6V2ViR1BVTGlicmFyeShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHNvdXJjZUNvZGUpCisgICAgOiBXZWJHUFVPYmplY3QoY29udGV4dCkKKyAgICAsIG1f
c291cmNlQ29kZShzb3VyY2VDb2RlKQoreworICAgIG1fbGlicmFyeSA9IGNvbnRleHQtPmRldmlj
ZSgpLT5jcmVhdGVMaWJyYXJ5KHNvdXJjZUNvZGUpOworfQorCitXZWJHUFVMaWJyYXJ5Ojp+V2Vi
R1BVTGlicmFyeSgpCit7Cit9CisKK1N0cmluZyBXZWJHUFVMaWJyYXJ5OjpsYWJlbCgpIGNvbnN0
Cit7CisgICAgaWYgKCFtX2xpYnJhcnkpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwor
CisgICAgcmV0dXJuIG1fbGlicmFyeS0+bGFiZWwoKTsKK30KKwordm9pZCBXZWJHUFVMaWJyYXJ5
OjpzZXRMYWJlbChjb25zdCBTdHJpbmcmIGxhYmVsKQoreworICAgIGlmICghbV9saWJyYXJ5KQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX2xpYnJhcnktPnNldExhYmVsKGxhYmVsKTsKK30KKwor
VmVjdG9yPFN0cmluZz4gV2ViR1BVTGlicmFyeTo6ZnVuY3Rpb25OYW1lcygpCit7CisgICAgaWYg
KCFtX2xpYnJhcnkpCisgICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOworCisgICAgcmV0
dXJuIG1fbGlicmFyeS0+ZnVuY3Rpb25OYW1lcygpOworfQorCitSZWZQdHI8V2ViR1BVRnVuY3Rp
b24+IFdlYkdQVUxpYnJhcnk6OmZ1bmN0aW9uV2l0aE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQor
eworICAgIGlmICghbV9saWJyYXJ5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJl
ZlB0cjxXZWJHUFVGdW5jdGlvbj4gZnVuY3Rpb24gPSBXZWJHUFVGdW5jdGlvbjo6Y3JlYXRlKHRo
aXMtPmNvbnRleHQoKSwgdGhpcywgbmFtZSk7CisgICAgaWYgKCFmdW5jdGlvbi0+ZnVuY3Rpb24o
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGZ1bmN0aW9uOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVTGlicmFyeS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVTGlicmFyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li45ZTNjM2YyNzI4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVUxpYnJhcnkuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VC
R1BVKQorCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0LmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVTGlicmFyeTsKK2NsYXNzIFdl
YkdQVUZ1bmN0aW9uOworCitjbGFzcyBXZWJHUFVMaWJyYXJ5IDogcHVibGljIFdlYkdQVU9iamVj
dCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViR1BVTGlicmFyeSgpOworICAgIHN0YXRpYyBS
ZWY8V2ViR1BVTGlicmFyeT4gY3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBjb25zdCBT
dHJpbmcmIHNvdXJjZUNvZGUpOworCisgICAgU3RyaW5nIHNvdXJjZUNvZGUoKSBjb25zdCB7IHJl
dHVybiBtX3NvdXJjZUNvZGU7IH0KKyAgICBTdHJpbmcgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lk
IHNldExhYmVsKGNvbnN0IFN0cmluZyYpOworCisgICAgVmVjdG9yPFN0cmluZz4gZnVuY3Rpb25O
YW1lcygpOworCisgICAgUmVmUHRyPFdlYkdQVUZ1bmN0aW9uPiBmdW5jdGlvbldpdGhOYW1lKGNv
bnN0IFN0cmluZyYpOworCisgICAgR1BVTGlicmFyeSogbGlicmFyeSgpIHsgcmV0dXJuIG1fbGli
cmFyeS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFdlYkdQVUxpYnJhcnkoV2ViR1BVUmVuZGVy
aW5nQ29udGV4dCosIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSk7CisKKyAgICBTdHJpbmcgbV9z
b3VyY2VDb2RlOworICAgIFJlZlB0cjxHUFVMaWJyYXJ5PiBtX2xpYnJhcnk7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVTGlicmFyeS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVMaWJyYXJ5LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uZDMzMDMyMmZhN2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHUFVMaWJyYXJ5LmlkbApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwK
KyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBpbnRlcmZhY2UgV2ViR1BVTGlicmFyeSB7
CisKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNvdXJjZUNvZGU7CisgICAgYXR0
cmlidXRlIERPTVN0cmluZyBsYWJlbDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgc2VxdWVuY2U8
RE9NU3RyaW5nPiBmdW5jdGlvbk5hbWVzOworCisgICAgV2ViR1BVRnVuY3Rpb24/IGZ1bmN0aW9u
V2l0aE5hbWUoRE9NU3RyaW5nIG5hbWUpOworCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVU9iamVjdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLmIxNzJiZWMwNWY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR1BVT2JqZWN0LmNwcApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldlYkdQVU9iamVjdC5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldl
YkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXZWJHUFVP
YmplY3Q6OldlYkdQVU9iamVjdChXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0KQorICAg
IDogbV9jb250ZXh0KGNvbnRleHQpCit7Cit9CisKK1dlYkdQVU9iamVjdDo6fldlYkdQVU9iamVj
dCgpCit7Cit9CisKK3ZvaWQgV2ViR1BVT2JqZWN0OjpkZWxldGVPYmplY3QoR1BVRGV2aWNlKikK
K3sKKyAgICBtX2RlbGV0ZWQgPSB0cnVlOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHUFVPYmplY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uZGUyYTczMjAxYmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHUFVPYmplY3QuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiR1BVRGV2aWNlLmgiCisKKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYkdQVVJlbmRl
cmluZ0NvbnRleHQ7CisKK2NsYXNzIFdlYkdQVU9iamVjdCA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YkdQVU9iamVjdD4geworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVU9iamVjdCgpOworCisg
ICAgdm9pZCBkZWxldGVPYmplY3QoR1BVRGV2aWNlKik7CisgICAgYm9vbCBpc0RlbGV0ZWQoKSBj
b25zdCB7IHJldHVybiBtX2RlbGV0ZWQ7IH0KKworICAgIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQq
IGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAg
IFdlYkdQVU9iamVjdChXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiA9IG51bGxwdHIpOworCisgICAg
Ym9vbCBoYXNDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0OyB9CisKK3ByaXZhdGU6
CisgICAgUmVmUHRyPFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ+IG1fY29udGV4dDsKKyAgICBib29s
IG1fZGVsZXRlZCB7IGZhbHNlIH07Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJl
bmRlckNvbW1hbmRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uYzk4OWJmNWIyMDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5jcHAKQEAgLTAsMCArMSwxMDkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaCIKKwor
I2lmIEVOQUJMRShXRUJHUFUpCisKKy8qKioKKyNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgi
CisjaW5jbHVkZSAiR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaCIKKyNpbmNsdWRlICJHUFVSZW5k
ZXJQYXNzRGVzY3JpcHRvci5oIgorKi8KKyNpbmNsdWRlICJXZWJHUFVCdWZmZXIuaCIKKyNpbmNs
dWRlICJXZWJHUFVDb21tYW5kQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR1BVRGVwdGhTdGVuY2ls
U3RhdGUuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIgorI2luY2x1
ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJp
bmdDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFdlYkdQVVJlbmRlckNv
bW1hbmRFbmNvZGVyPiBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlcjo6Y3JlYXRlKFdlYkdQVVJl
bmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIFdlYkdQVUNvbW1hbmRCdWZmZXIqIGJ1ZmZlciwgV2Vi
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIoY29udGV4dCwgYnVmZmVyLCBkZXNj
cmlwdG9yKSk7Cit9CisKK1dlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyOjpXZWJHUFVSZW5kZXJD
b21tYW5kRW5jb2RlcihXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBXZWJHUFVDb21t
YW5kQnVmZmVyKiBidWZmZXIsIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yKiBkZXNjcmlwdG9y
KQorICAgIDogV2ViR1BVT2JqZWN0KGNvbnRleHQpCit7CisgICAgbV9yZW5kZXJDb21tYW5kRW5j
b2RlciA9IGJ1ZmZlci0+Y29tbWFuZEJ1ZmZlcigpLT5jcmVhdGVSZW5kZXJDb21tYW5kRW5jb2Rl
cihkZXNjcmlwdG9yLT5yZW5kZXJQYXNzRGVzY3JpcHRvcigpKTsKK30KKworV2ViR1BVUmVuZGVy
Q29tbWFuZEVuY29kZXI6On5XZWJHUFVSZW5kZXJDb21tYW5kRW5jb2RlcigpCit7Cit9CisKK3Zv
aWQgV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFJlbmRlclBpcGVsaW5lU3RhdGUoV2Vi
R1BVUmVuZGVyUGlwZWxpbmVTdGF0ZSYgcGlwZWxpbmVTdGF0ZSkKK3sKKyAgICBpZiAoIW1fcmVu
ZGVyQ29tbWFuZEVuY29kZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVuZGVyQ29tbWFu
ZEVuY29kZXItPnNldFJlbmRlclBpcGVsaW5lU3RhdGUocGlwZWxpbmVTdGF0ZS5yZW5kZXJQaXBl
bGluZVN0YXRlKCkpOworfQorCit2b2lkIFdlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRE
ZXB0aFN0ZW5jaWxTdGF0ZShXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZSYgZGVwdGhTdGVuY2lsU3Rh
dGUpCit7CisgICAgaWYgKCFtX3JlbmRlckNvbW1hbmRFbmNvZGVyKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX3JlbmRlckNvbW1hbmRFbmNvZGVyLT5zZXREZXB0aFN0ZW5jaWxTdGF0ZShkZXB0
aFN0ZW5jaWxTdGF0ZS5kZXB0aFN0ZW5jaWxTdGF0ZSgpKTsKK30KKwordm9pZCBXZWJHUFVSZW5k
ZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVyKFdlYkdQVUJ1ZmZlciYgYnVmZmVyLCB1
bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgaW5kZXgpCit7CisgICAgaWYgKCFtX3Jl
bmRlckNvbW1hbmRFbmNvZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3JlbmRlckNvbW1h
bmRFbmNvZGVyLT5zZXRWZXJ0ZXhCdWZmZXIoYnVmZmVyLmJ1ZmZlcigpLCBvZmZzZXQsIGluZGV4
KTsKK30KKwordm9pZCBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21lbnRCdWZm
ZXIoV2ViR1BVQnVmZmVyJiBidWZmZXIsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGlu
dCBpbmRleCkKK3sKKyAgICBpZiAoIW1fcmVuZGVyQ29tbWFuZEVuY29kZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fcmVuZGVyQ29tbWFuZEVuY29kZXItPnNldEZyYWdtZW50QnVmZmVyKGJ1
ZmZlci5idWZmZXIoKSwgb2Zmc2V0LCBpbmRleCk7Cit9CisKK3ZvaWQgV2ViR1BVUmVuZGVyQ29t
bWFuZEVuY29kZXI6OmRyYXdQcmltaXRpdmVzKHVuc2lnbmVkIGludCB0eXBlLCB1bnNpZ25lZCBp
bnQgc3RhcnQsIHVuc2lnbmVkIGludCBjb3VudCkKK3sKKyAgICBpZiAoIW1fcmVuZGVyQ29tbWFu
ZEVuY29kZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVuZGVyQ29tbWFuZEVuY29kZXIt
PmRyYXdQcmltaXRpdmVzKHR5cGUsIHN0YXJ0LCBjb3VudCk7Cit9CisKK3ZvaWQgV2ViR1BVUmVu
ZGVyQ29tbWFuZEVuY29kZXI6OmVuZEVuY29kaW5nKCkKK3sKKyAgICBpZiAoIW1fcmVuZGVyQ29t
bWFuZEVuY29kZXIpCisgICAgICAgIHJldHVybjsKKyAgICByZXR1cm4gbV9yZW5kZXJDb21tYW5k
RW5jb2Rlci0+ZW5kRW5jb2RpbmcoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRl
ckNvbW1hbmRFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5k
ZXJDb21tYW5kRW5jb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li5lNjIyNWJlZWQ4MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldlYkdQVU9iamVjdC5oIgorCisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8qKiogc3R1YiAqLwor
Ly8gY2xhc3MgR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI7CitjbGFzcyBHUFVCdWZmZXI7CitjbGFz
cyBHUFVSZW5kZXJQaXBlbGluZVN0YXRlOworY2xhc3MgR1BVRGVwdGhTdGVuY2lsU3RhdGU7Citj
bGFzcyBHUFVSZW5kZXJDb21tYW5kRW5jb2RlciA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVJlbmRl
ckNvbW1hbmRFbmNvZGVyPiB7CitwdWJsaWM6CisgICAgdm9pZCBzZXRSZW5kZXJQaXBlbGluZVN0
YXRlKEdQVVJlbmRlclBpcGVsaW5lU3RhdGUqKSB7IH0KKyAgICB2b2lkIHNldERlcHRoU3RlbmNp
bFN0YXRlKEdQVURlcHRoU3RlbmNpbFN0YXRlKikgeyB9CisgICAgdm9pZCBzZXRWZXJ0ZXhCdWZm
ZXIoR1BVQnVmZmVyKiwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQpIHsgfQorICAgIHZvaWQg
c2V0RnJhZ21lbnRCdWZmZXIoR1BVQnVmZmVyKiwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQp
IHsgfQorICAgIHZvaWQgZHJhd1ByaW1pdGl2ZXModW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQs
IHVuc2lnbmVkIGludCkgeyB9CisgICAgdm9pZCBlbmRFbmNvZGluZygpIHsgfQorfTsKKy8qKiog
ZW5kIHN0dWIgKi8KK2NsYXNzIFdlYkdQVUNvbW1hbmRCdWZmZXI7CitjbGFzcyBXZWJHUFVEZXB0
aFN0ZW5jaWxTdGF0ZTsKK2NsYXNzIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOworY2xhc3Mg
V2ViR1BVRnVuY3Rpb247CitjbGFzcyBXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlOworY2xhc3Mg
V2ViR1BVQnVmZmVyOworCitjbGFzcyBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2RlciA6IHB1Ymxp
YyBXZWJHUFVPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVVJlbmRlckNvbW1h
bmRFbmNvZGVyKCk7CisgICAgc3RhdGljIFJlZjxXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlcj4g
Y3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBXZWJHUFVDb21tYW5kQnVmZmVyKiwgV2Vi
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IqKTsKKworICAgIHZvaWQgc2V0UmVuZGVyUGlwZWxpbmVT
dGF0ZShXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlJik7CisgICAgdm9pZCBzZXREZXB0aFN0ZW5j
aWxTdGF0ZShXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZSYpOworICAgIHZvaWQgc2V0VmVydGV4QnVm
ZmVyKFdlYkdQVUJ1ZmZlciYsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBpbmRl
eCk7CisgICAgdm9pZCBzZXRGcmFnbWVudEJ1ZmZlcihXZWJHUFVCdWZmZXImLCB1bnNpZ25lZCBp
bnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgaW5kZXgpOworICAgIHZvaWQgZHJhd1ByaW1pdGl2ZXMo
dW5zaWduZWQgaW50IHR5cGUsIHVuc2lnbmVkIGludCBzdGFydCwgdW5zaWduZWQgaW50IGNvdW50
KTsKKyAgICB2b2lkIGVuZEVuY29kaW5nKCk7CisKKyAgICBHUFVSZW5kZXJDb21tYW5kRW5jb2Rl
ciogcmVuZGVyQ29tbWFuZEVuY29kZXIoKSB7IHJldHVybiBtX3JlbmRlckNvbW1hbmRFbmNvZGVy
LmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIoV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dCosIFdlYkdQVUNvbW1hbmRCdWZmZXIqLCBXZWJHUFVSZW5kZXJQ
YXNzRGVzY3JpcHRvciopOworICAgIFJlZlB0cjxHUFVSZW5kZXJDb21tYW5kRW5jb2Rlcj4gbV9y
ZW5kZXJDb21tYW5kRW5jb2RlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJD
b21tYW5kRW5jb2Rlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5k
ZXJDb21tYW5kRW5jb2Rlci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLmM5OTQzYzU5NzUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaWRsCkBAIC0wLDAgKzEsMzkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0
aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGludGVyZmFjZSBX
ZWJHUFVSZW5kZXJDb21tYW5kRW5jb2RlciB7CisKKyAgICB2b2lkIHNldFJlbmRlclBpcGVsaW5l
U3RhdGUoV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZSBwaXBlbGluZVN0YXRlKTsKKyAgICB2b2lk
IHNldERlcHRoU3RlbmNpbFN0YXRlKFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlIGRlcHRoU3RlbmNp
bFN0YXRlKTsKKyAgICB2b2lkIHNldFZlcnRleEJ1ZmZlcihXZWJHUFVCdWZmZXIgYnVmZmVyLCB1
bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgdm9pZCBzZXRG
cmFnbWVudEJ1ZmZlcihXZWJHUFVCdWZmZXIgYnVmZmVyLCB1bnNpZ25lZCBsb25nIG9mZnNldCwg
dW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgdm9pZCBkcmF3UHJpbWl0aXZlcyh1bnNpZ25lZCBs
b25nIHR5cGUsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgY291bnQpOworCisg
ICAgdm9pZCBlbmRFbmNvZGluZygpOworCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3Jp
cHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjRiYjUwOTIy
YzMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcApAQCAtMCwwICsxLDEwMCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCIK
KworI2lmIEVOQUJMRShXRUJHUFUpCisKKy8qKioKKyNpbmNsdWRlICJHUFVSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3IuaCIKKyAqLworI2luY2x1ZGUgIkdQVVRleHR1cmUuaCIKKyNpbmNs
dWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVVGV4dHVyZS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvcjo6V2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKFdlYkdQVVJlbmRl
cmluZ0NvbnRleHQqIGNvbnRleHQsIEdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciog
ZGVzY3JpcHRvcikKKyAgICA6IFdlYkdQVU9iamVjdChjb250ZXh0KQorICAgICwgbV9yZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3IoZGVzY3JpcHRvcikKK3sKK30KKworV2ViR1BVUmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjp+V2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yKCkKK3sKK30KKwordW5zaWduZWQgbG9uZyBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVu
dERlc2NyaXB0b3I6OmxvYWRBY3Rpb24oKSBjb25zdAoreworICAgIGlmICghbV9yZW5kZXJQYXNz
QXR0YWNobWVudERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiAwOyAvLyBGSVhNRTogcHJvYmFi
bHkgYSByZWFsIHZhbHVlIGZvciB1bmtub3duCisKKyAgICByZXR1cm4gbV9yZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3ItPmxvYWRBY3Rpb24oKTsKK30KKwordm9pZCBXZWJHUFVSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnNldExvYWRBY3Rpb24odW5zaWduZWQgbG9uZyBuZXdM
b2FkQWN0aW9uKQoreworICAgIGlmICghbV9yZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3Ip
CisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
LT5zZXRMb2FkQWN0aW9uKG5ld0xvYWRBY3Rpb24pOworfQorCit1bnNpZ25lZCBsb25nIFdlYkdQ
VVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c3RvcmVBY3Rpb24oKSBjb25zdAorewor
ICAgIGlmICghbV9yZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IpCisgICAgICAgIHJldHVy
biAwOyAvLyBGSVhNRTogcHJvYmFibHkgYSByZWFsIHZhbHVlIGZvciB1bmtub3duCisKKyAgICBy
ZXR1cm4gbV9yZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3ItPnN0b3JlQWN0aW9uKCk7Cit9
CisKK3ZvaWQgV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTdG9yZUFj
dGlvbih1bnNpZ25lZCBsb25nIG5ld1N0b3JlQWN0aW9uKQoreworICAgIGlmICghbV9yZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLT5zZXRTdG9yZUFjdGlvbihuZXdTdG9yZUFjdGlvbik7
Cit9CisKK1JlZlB0cjxXZWJHUFVUZXh0dXJlPiBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3I6OnRleHR1cmUoKSBjb25zdAoreworICAgIHJldHVybiBtX3RleHR1cmU7Cit9CisK
K3ZvaWQgV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRUZXh0dXJlKFJl
ZlB0cjxXZWJHUFVUZXh0dXJlPiBuZXdUZXh0dXJlKQoreworICAgIGlmICghbmV3VGV4dHVyZSkK
KyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fdGV4dHVyZSA9IG5ld1RleHR1cmU7CisgICAg
CisgICAgaWYgKG1fcmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKQorICAgICAgICBtX3Jl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci0+c2V0VGV4dHVyZShuZXdUZXh0dXJlLT50ZXh0
dXJlKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnRE
ZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNz
QXR0YWNobWVudERlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uMjBmNWEwMTNkMDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaApAQCAtMCwwICsx
LDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0
LmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
LyoqKiBzdHViICovCisvLyBjbGFzcyBHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I7
CitjbGFzcyBHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgUmVmQ291
bnRlZDxHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I+IHsKK3B1YmxpYzoKKyAgICB1
bnNpZ25lZCBsb25nIGxvYWRBY3Rpb24oKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdm9pZCBz
ZXRMb2FkQWN0aW9uKHVuc2lnbmVkIGxvbmcpIHsgfQorICAgIHVuc2lnbmVkIGxvbmcgc3RvcmVB
Y3Rpb24oKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdm9pZCBzZXRTdG9yZUFjdGlvbih1bnNp
Z25lZCBsb25nKSB7IH0KKyAgICB2b2lkIHNldFRleHR1cmUoR1BVVGV4dHVyZSopIHsgfQorfTsK
Ky8qKiogZW5kIHN0dWIgKi8KK2NsYXNzIFdlYkdQVVRleHR1cmU7CisKK2NsYXNzIFdlYkdQVVJl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBXZWJHUFVPYmplY3QgeworcHVi
bGljOgorICAgIHZpcnR1YWwgfldlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcigp
OworCisgICAgdW5zaWduZWQgbG9uZyBsb2FkQWN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBzZXRM
b2FkQWN0aW9uKHVuc2lnbmVkIGxvbmcpOworCisgICAgdW5zaWduZWQgbG9uZyBzdG9yZUFjdGlv
bigpIGNvbnN0OworICAgIHZvaWQgc2V0U3RvcmVBY3Rpb24odW5zaWduZWQgbG9uZyk7CisKKyAg
ICBSZWZQdHI8V2ViR1BVVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0OworICAgIHZvaWQgc2V0VGV4
dHVyZShSZWZQdHI8V2ViR1BVVGV4dHVyZT4pOworCisgICAgR1BVUmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yKiByZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoKSBjb25zdCB7IHJl
dHVybiBtX3JlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5nZXQoKTsgfQorCisgICAgdmly
dHVhbCBib29sIGlzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisKK3Byb3RlY3RlZDoKKworICAgIFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvcihXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnRE
ZXNjcmlwdG9yKik7CisKKworcHJpdmF0ZToKKworICAgIFJlZlB0cjxHUFVSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3I+IG1fcmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOworICAg
IFJlZlB0cjxXZWJHUFVUZXh0dXJlPiBtX3RleHR1cmU7Cit9OworICAgIAorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaWRs
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kYjg4Y2ZjYmRjNAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBh
c3NBdHRhY2htZW50RGVzY3JpcHRvci5pZGwKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJH
UFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUsCisgICAgQ3VzdG9tVG9KU09iamVjdAor
XQoraW50ZXJmYWNlIFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7CisKKyAg
ICBhdHRyaWJ1dGUgV2ViR1BVVGV4dHVyZT8gdGV4dHVyZTsKKworICAgIGF0dHJpYnV0ZSB1bnNp
Z25lZCBsb25nIGxvYWRBY3Rpb247IC8vIHNob3VsZCBiZSBXZWJHUFVMb2FkQWN0aW9uCisgICAg
YXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgc3RvcmVBY3Rpb247IC8vIHNob3VsZCBiZSBXZWJHUFVT
dG9yZUFjdGlvbgorCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40NTNmYjMxZGZk
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcApAQCAtMCwwICsxLDgwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisvKioqCisjaW5jbHVkZSAiR1BVUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCIKKyAqLworI2luY2x1ZGUgIkdQVVRleHR1
cmUuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2Vi
R1BVVGV4dHVyZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXZWJHUFVSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3I6OmNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBH
UFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvcihjb250ZXh0LCBkZXNjcmlwdG9yKSk7Cit9CisKK1dlYkdQVVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yOjpXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvcihXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBHUFVSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvciogZGVzY3JpcHRvcikKKyAgICA6IFdlYkdQVVJlbmRlclBh
c3NBdHRhY2htZW50RGVzY3JpcHRvcihjb250ZXh0LCBkZXNjcmlwdG9yKQoreworfQorCitXZWJH
UFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6fldlYkdQVVJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCkKK3sKK30KKworR1BVUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IqIFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yOjpyZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
Kj4ocmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKCkpOworfQorCitWZWN0b3I8ZmxvYXQ+
IFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpjbGVhckNvbG9yKCkg
Y29uc3QKK3sKKyAgICBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogZGVz
Y3JpcHRvciA9IHJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCk7CisgICAgaWYg
KCFkZXNjcmlwdG9yKSB7CisgICAgICAgIFZlY3RvcjxmbG9hdD4gYmxhY2sgPSB7IDAuMCwgMC4w
LCAwLjAsIDEuMCB9OworICAgICAgICByZXR1cm4gYmxhY2s7CisgICAgfQorICAgIHJldHVybiBk
ZXNjcmlwdG9yLT5jbGVhckNvbG9yKCk7Cit9CisKK3ZvaWQgV2ViR1BVUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3I6OnNldENsZWFyQ29sb3IoY29uc3QgVmVjdG9yPGZsb2F0PiYg
bmV3Q2xlYXJDb2xvcikKK3sKKyAgICBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvciogZGVzY3JpcHRvciA9IHJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCk7
CisgICAgaWYgKCFkZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBkZXNjcmlwdG9y
LT5zZXRDbGVhckNvbG9yKG5ld0NsZWFyQ29sb3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjlhZWIxZGIxZTM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0LmgiCisjaW5jbHVkZSAiV2Vi
R1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisKKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLyoqKiBzdHViICovCisvLyBjbGFzcyBH
UFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjsKK2NsYXNzIEdQVVJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yIDogcHVibGljIEdQVVJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvciB7CitwdWJsaWM6CisgICAgVmVjdG9yPGZsb2F0PiBjbGVhckNvbG9yKCkg
Y29uc3QgeyByZXR1cm4gVmVjdG9yPGZsb2F0PigpOyB9CisgICAgdm9pZCBzZXRDbGVhckNvbG9y
KGNvbnN0IFZlY3RvcjxmbG9hdD4mKSB7IH0KK307CisvKioqIGVuZCBzdHViICovCisKK2NsYXNz
IFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yIDogcHVibGljIFdlYkdQ
VVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKTsKKyAgICBzdGF0aWMg
UmVmPFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBjcmVhdGUoV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dCosIEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yKik7CisKKyAgICBWZWN0b3I8ZmxvYXQ+IGNsZWFyQ29sb3IoKSBjb25zdDsKKyAgICB2b2lk
IHNldENsZWFyQ29sb3IoY29uc3QgVmVjdG9yPGZsb2F0PiYpOworCisgICAgR1BVUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIHJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yKCkgY29uc3Q7CisKKyAgICBib29sIGlzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworcHJpdmF0ZToKKyAgICBXZWJHUFVS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcihXZWJHUFVSZW5kZXJpbmdDb250ZXh0
KiwgR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqKTsKKworfTsKKyAgICAK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLmFkNzFkNTYyMGFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaWRsCkBA
IC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2Vi
R1BVCitdIGludGVyZmFjZSBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ciA6IFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7CisKKyAgICBhdHRyaWJ1
dGUgc2VxdWVuY2U8ZmxvYXQ+IGNsZWFyQ29sb3I7CisKK307CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3Jp
cHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjBhMzFjOWNkNzYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3Bw
CkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKy8qKioK
KyNpbmNsdWRlICJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIgorICov
CisjaW5jbHVkZSAiR1BVVGV4dHVyZS5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlcmluZ0NvbnRl
eHQuaCIKKyNpbmNsdWRlICJXZWJHUFVUZXh0dXJlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworUmVmPFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yPiBXZWJHUFVS
ZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6Y3JlYXRlKFdlYkdQVVJlbmRlcmlu
Z0NvbnRleHQqIGNvbnRleHQsIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9y
KiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKGNvbnRleHQsIGRlc2NyaXB0b3IpKTsKK30KKwor
V2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OldlYkdQVVJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRl
eHQsIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQor
ICAgIDogV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKGNvbnRleHQsIGRlc2Ny
aXB0b3IpCit7Cit9CisKK1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9y
Ojp+V2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoKQoreworfQorCitk
b3VibGUgV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OmNsZWFyRGVw
dGgoKSBjb25zdAoreworICAgIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9y
KiBkZXNjcmlwdG9yID0gcmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoKTsKKyAg
ICBpZiAoIWRlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGRlc2Ny
aXB0b3ItPmNsZWFyRGVwdGgoKTsKK30KKwordm9pZCBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvcjo6c2V0Q2xlYXJEZXB0aChkb3VibGUgbmV3Q2xlYXJEZXB0aCkKK3sK
KyAgICBHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogZGVzY3JpcHRvciA9
IHJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKCk7CisgICAgaWYgKCFkZXNjcmlw
dG9yKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgZGVzY3JpcHRvci0+c2V0Q2xlYXJEZXB0
aChuZXdDbGVhckRlcHRoKTsKK30KKworR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2Ny
aXB0b3IqIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjpyZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKj4ocmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVu
ZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBlYWQ2ZDdhOTA1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0RlcHRo
QXR0YWNobWVudERlc2NyaXB0b3IuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
V0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViR1BVUmVu
ZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
LyoqKiBzdHViICovCisvLyBjbGFzcyBHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3Jp
cHRvcjsKK2NsYXNzIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yIDogcHVi
bGljIEdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7CitwdWJsaWM6CisgICAgZG91
YmxlIGNsZWFyRGVwdGgoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdm9pZCBzZXRDbGVhckRl
cHRoKGRvdWJsZSkgeyB9Cit9OworLyoqKiBlbmQgc3R1YiAqLworCitjbGFzcyBXZWJHUFVSZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBXZWJHUFVSZW5kZXJQYXNz
QXR0YWNobWVudERlc2NyaXB0b3IgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVVJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKCk7CisgICAgc3RhdGljIFJlZjxXZWJHUFVS
ZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcj4gY3JlYXRlKFdlYkdQVVJlbmRlcmlu
Z0NvbnRleHQqLCBHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciopOworCisg
ICAgZG91YmxlIGNsZWFyRGVwdGgoKSBjb25zdDsKKyAgICB2b2lkIHNldENsZWFyRGVwdGgoZG91
YmxlKTsKKworICAgIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiByZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcigpIGNvbnN0OworCitwcml2YXRlOgorICAg
IFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKFdlYkdQVVJlbmRlcmlu
Z0NvbnRleHQqLCBHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciopOworCit9
OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uMzAwOGJjZjMzZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
ci5pZGwKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVu
dGltZT1XZWJHUFUKK10gaW50ZXJmYWNlIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnRE
ZXNjcmlwdG9yIDogV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yIHsKKworICAg
IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGNsZWFyRGVwdGg7CisKK307CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVzY3Jp
cHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjYxMjU5ZGFk
MWFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKKworI2lmIEVOQUJMRShXRUJHUFUp
CisKKy8qKioKKyNpbmNsdWRlICJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ci5oIgorI2luY2x1ZGUgIkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgi
CisjaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKKyovCisjaW5jbHVkZSAiV2Vi
R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJXZWJH
UFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIldlYkdQ
VVJlbmRlcmluZ0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8V2ViR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3I+IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOjpjcmVhdGUo
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9y
KCkpOworfQorCitXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjo6V2ViR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3IoKQorICAgIDogV2ViR1BVT2JqZWN0KCkKK3sKKyAgICBtX3JlbmRlclBhc3NEZXNj
cmlwdG9yID0gR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I6OmNyZWF0ZSgpOworfQorCitXZWJHUFVS
ZW5kZXJQYXNzRGVzY3JpcHRvcjo6fldlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yKCkKK3sKK30K
KworUmVmUHRyPFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yPiBXZWJH
UFVSZW5kZXJQYXNzRGVzY3JpcHRvcjo6ZGVwdGhBdHRhY2htZW50KCkKK3sKKyAgICBpZiAoIW1f
cmVuZGVyUGFzc0Rlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYg
KCFtX2RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IpIHsKKyAgICAgICAgUmVmUHRyPEdQVVJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yPiBwbGF0Zm9ybURlcHRoQXR0YWNobWVudCA9
IG1fcmVuZGVyUGFzc0Rlc2NyaXB0b3ItPmRlcHRoQXR0YWNobWVudCgpOworICAgICAgICBtX2Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3IgPSBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvcjo6Y3JlYXRlKHRoaXMtPmNvbnRleHQoKSwgcGxhdGZvcm1EZXB0aEF0dGFjaG1l
bnQuZ2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gbV9kZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9y
OworfQorCitWZWN0b3I8UmVmUHRyPFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yPj4gV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I6OmNvbG9yQXR0YWNobWVudHMoKQor
eworICAgIGlmICghbV9yZW5kZXJQYXNzRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIFZlY3Rv
cjxSZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+PigpOwor
CisgICAgaWYgKCFtX2NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JzLnNpemUoKSkgeworICAgICAg
ICBWZWN0b3I8UmVmUHRyPEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4g
cGxhdGZvcm1Db2xvckF0dGFjaG1lbnRzID0gbV9yZW5kZXJQYXNzRGVzY3JpcHRvci0+Y29sb3JB
dHRhY2htZW50cygpOworICAgICAgICBmb3IgKGF1dG8mIGF0dGFjaG1lbnQgOiBwbGF0Zm9ybUNv
bG9yQXR0YWNobWVudHMpCisgICAgICAgICAgICBtX2NvbG9yQXR0YWNobWVudERlc2NyaXB0b3Jz
LmFwcGVuZChXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6Y3JlYXRl
KHRoaXMtPmNvbnRleHQoKSwgYXR0YWNobWVudC5nZXQoKSkpOworICAgIH0KKyAgICByZXR1cm4g
bV9jb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yczsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VVJlbmRlclBhc3NEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi5mZThlOTAyYTFiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw3MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldlYkdQVU9iamVjdC5oIgorLyoq
KiBmb3Igc3R1YiAqLworI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3IuaCIKKy8qKiogZW5kIHN0dWIgKi8KKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvKioqIHN0dWIgKi8KKy8vIGNsYXNzIEdQVVJlbmRl
clBhc3NEZXNjcmlwdG9yOworY2xhc3MgR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IgOiBwdWJsaWMg
UmVmQ291bnRlZDxHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcj4geworcHVibGljOgorICAgIHN0YXRp
YyBSZWZQdHI8R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I+IGNyZWF0ZSgpIHsgcmV0dXJuIG51bGxw
dHI7IH0KKyAgICBHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogZGVwdGhB
dHRhY2htZW50KCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIFZlY3RvcjxSZWZQdHI8R1BVUmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+PiBjb2xvckF0dGFjaG1lbnRzKCkgeyBy
ZXR1cm4gVmVjdG9yPFJlZlB0cjxHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cj4+KCk7IH0KK307CisvKioqIGVuZCBzdHViICovCitjbGFzcyBXZWJHUFVSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvcjsKK2NsYXNzIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yOworCitjbGFzcyBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciA6IHB1
YmxpYyBXZWJHUFVPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yKCk7CisgICAgc3RhdGljIFJlZjxXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRv
cj4gY3JlYXRlKCk7CisKKyAgICBSZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVu
dERlc2NyaXB0b3I+IGRlcHRoQXR0YWNobWVudCgpOworICAgIFZlY3RvcjxSZWZQdHI8V2ViR1BV
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+PiBjb2xvckF0dGFjaG1lbnRzKCk7
CisKKyAgICBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciogcmVuZGVyUGFzc0Rlc2NyaXB0b3IoKSB7
IHJldHVybiBtX3JlbmRlclBhc3NEZXNjcmlwdG9yLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAg
V2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IoKTsKKworICAgIFZlY3RvcjxSZWZQdHI8V2ViR1BV
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+PiBtX2NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3JzOworICAgIFJlZlB0cjxXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvcj4gbV9kZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOworCisgICAgUmVmUHRyPEdQVVJl
bmRlclBhc3NEZXNjcmlwdG9yPiBtX3JlbmRlclBhc3NEZXNjcmlwdG9yOworfTsKKyAgICAKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmEwMjY0YmEyZDFlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3IuaWRsCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCitbCisgICAgQ29uc3RydWN0b3IsCisgICAgQ29uZGl0aW9uYWw9V0VCR1BV
LAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGludGVyZmFjZSBXZWJHUFVSZW5kZXJQ
YXNzRGVzY3JpcHRvciB7CisKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgc2VxdWVuY2U8V2ViR1BV
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGNvbG9yQXR0YWNobWVudHM7Cisg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNj
cmlwdG9yIGRlcHRoQXR0YWNobWVudDsKKyAgICAvL3JlYWRvbmx5IGF0dHJpYnV0ZSBXZWJHUFVS
ZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yIHN0ZW5jaWxBdHRhY2htZW50Owor
CisgICAgLy8gcmVuZGVyVGFyZ2V0QXJyYXlMZW5ndGgKKyAgICAvLyB2aXNpYmlsaXR5UmVzdWx0
QnVmZmVyCisKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNjQxNTc3
ZWI5ODgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCkBAIC0wLDAgKzEs
NzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisvKioqCisjaW5jbHVk
ZSAiR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisqLworI2lu
Y2x1ZGUgIldlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitSZWY8V2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBXZWJH
UFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmNyZWF0ZShXZWJHUFVS
ZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
R1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKGNvbnRleHQsIGRlc2Ny
aXB0b3IpKTsKK30KKworV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yOjpXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoV2ViR1BV
UmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorICAgIDogV2ViR1BVT2JqZWN0KGNvbnRleHQpCisg
ICAgLCBtX3JlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcihkZXNjcmlwdG9y
KQoreworfQorCitXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6
On5XZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKQoreworfQor
Cit1bnNpZ25lZCBsb25nIFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcjo6cGl4ZWxGb3JtYXQoKSBjb25zdAoreworICAgIGlmICghbV9yZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiAwOyAvLyBGSVhNRTogcHJv
YmFibHkgYSByZWFsIHZhbHVlIGZvciB1bmtub3duCisKKyAgICByZXR1cm4gbV9yZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3ItPnBpeGVsRm9ybWF0KCk7Cit9CisKK3ZvaWQg
V2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRQaXhlbEZv
cm1hdCh1bnNpZ25lZCBsb25nIG5ld1BpeGVsRm9ybWF0KQoreworICAgIGlmICghbV9yZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fcmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLT5zZXRQaXhlbEZvcm1h
dChuZXdQaXhlbEZvcm1hdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zNGMyYWQzZDc0OQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXZWJHUFVPYmplY3QuaCIKKworCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKy8qKiogc3R1YiAqLworLy8gY2xhc3MgR1BVUmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yOworY2xhc3MgR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVUmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yPiB7CitwdWJsaWM6CisgICAgdW5zaWduZWQgbG9uZyBwaXhl
bEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2b2lkIHNldFBpeGVsRm9ybWF0KHVu
c2lnbmVkIGxvbmcpIHsgfQorfTsKKy8qKiogZW5kIHN0dWIgKi8KKworY2xhc3MgV2ViR1BVUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yIDogcHVibGljIFdlYkdQVU9iamVj
dCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yKCk7CisgICAgc3RhdGljIFJlZjxXZWJHUFVSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0Kiwg
R1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKik7CisKKyAgICB1bnNp
Z25lZCBsb25nIHBpeGVsRm9ybWF0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRQaXhlbEZvcm1hdCh1
bnNpZ25lZCBsb25nKTsKKworICAgIEdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvciogcmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCkgeyByZXR1
cm4gbV9yZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuZ2V0KCk7IH0KKwor
cHJpdmF0ZToKKyAgICBXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIEdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvciopOworCisgICAgUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcj4gbV9yZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3I7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaWRsCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mYjhiZjM2MTlkOAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvci5pZGwKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUs
CisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gaW50ZXJmYWNlIFdlYkdQVVJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciB7CisKKyAgICBhdHRyaWJ1dGUgdW5zaWdu
ZWQgbG9uZyBwaXhlbEZvcm1hdDsgLy8gc2hvdWxkIGJlIE1UTFBpeGVsRm9ybWF0CisKK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uYjcyZmFlYTQ1NWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCkBAIC0wLDAgKzEsMTQz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5o
IgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVUZ1bmN0aW9uLmgiCisvKioq
CisjaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgi
CisjaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCisqLworI2luY2x1ZGUg
IldlYkdQVUZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXZWJHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3I+IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6Y3JlYXRlKCkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoKSk7Cit9
CisKK1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6V2ViR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yKCkKKyAgICA6IFdlYkdQVU9iamVjdCgpCit7CisgICAgbV9yZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IgPSBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmNyZWF0ZSgpOworfQor
CitXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6On5XZWJHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IoKQoreworfQorCitTdHJpbmcgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
OjpsYWJlbCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRlclBpcGVsaW5lRGVzY3JpcHRvcikK
KyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4gbV9yZW5kZXJQaXBl
bGluZURlc2NyaXB0b3ItPmxhYmVsKCk7Cit9CisKK3ZvaWQgV2ViR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yOjpzZXRMYWJlbChjb25zdCBTdHJpbmcmIGxhYmVsKQoreworICAgIGlmICghbV9y
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yLT5zZXRMYWJlbChsYWJlbCk7Cit9CisKK1JlZlB0cjxXZWJHUFVG
dW5jdGlvbj4gV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp2ZXJ0ZXhGdW5jdGlvbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdmVydGV4RnVuY3Rpb247Cit9CisKK3ZvaWQgV2ViR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRWZXJ0ZXhGdW5jdGlvbihSZWZQdHI8V2ViR1BV
RnVuY3Rpb24+IG5ld1ZlcnRleEZ1bmN0aW9uKQoreworICAgIGlmICghbmV3VmVydGV4RnVuY3Rp
b24pCisgICAgICAgIHJldHVybjsKKworICAgIG1fdmVydGV4RnVuY3Rpb24gPSBuZXdWZXJ0ZXhG
dW5jdGlvbjsKKworICAgIGlmIChtX3JlbmRlclBpcGVsaW5lRGVzY3JpcHRvcikKKyAgICAgICAg
bV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3ItPnNldFZlcnRleEZ1bmN0aW9uKG5ld1ZlcnRleEZ1
bmN0aW9uLT5mdW5jdGlvbigpKTsKK30KKworUmVmUHRyPFdlYkdQVUZ1bmN0aW9uPiBXZWJHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmZyYWdtZW50RnVuY3Rpb24oKSBjb25zdAoreworICAg
IHJldHVybiBtX2ZyYWdtZW50RnVuY3Rpb247Cit9CisKK3ZvaWQgV2ViR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yOjpzZXRGcmFnbWVudEZ1bmN0aW9uKFJlZlB0cjxXZWJHUFVGdW5jdGlvbj4g
bmV3RnJhZ21lbnRGdW5jdGlvbikKK3sKKyAgICBpZiAoIW5ld0ZyYWdtZW50RnVuY3Rpb24pCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fZnJhZ21lbnRGdW5jdGlvbiA9IG5ld0ZyYWdtZW50RnVu
Y3Rpb247CisKKyAgICBpZiAobV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpCisgICAgICAgIG1f
cmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLT5zZXRGcmFnbWVudEZ1bmN0aW9uKG5ld0ZyYWdtZW50
RnVuY3Rpb24tPmZ1bmN0aW9uKCkpOworfQorCitWZWN0b3I8UmVmUHRyPFdlYkdQVVJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4+IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcjo6Y29sb3JBdHRhY2htZW50cygpCit7CisgICAgaWYgKCFtX3JlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxSZWZQdHI8V2ViR1BVUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4oKTsKKworICAgIGlmICghbV9jb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9ycy5zaXplKCkpIHsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxHUFVS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+PiBwbGF0Zm9ybUNvbG9yQXR0
YWNobWVudHMgPSBtX3JlbmRlclBpcGVsaW5lRGVzY3JpcHRvci0+Y29sb3JBdHRhY2htZW50cygp
OworICAgICAgICBmb3IgKGF1dG8mIGF0dGFjaG1lbnQgOiBwbGF0Zm9ybUNvbG9yQXR0YWNobWVu
dHMpCisgICAgICAgICAgICBtX2NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JzLmFwcGVuZChXZWJH
UFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmNyZWF0ZSh0aGlzLT5j
b250ZXh0KCksIGF0dGFjaG1lbnQuZ2V0KCkpKTsKKyAgICB9CisgICAgcmV0dXJuIG1fY29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcnM7Cit9CisKK3Vuc2lnbmVkIGxvbmcgV2ViR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yOjpkZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdCgpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX3JlbmRlclBpcGVsaW5lRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIDA7IC8v
IEZJWE1FOiBwcm9iYWJseSBhIHJlYWwgdmFsdWUgZm9yIHVua25vd24KKworICAgIHJldHVybiBt
X3JlbmRlclBpcGVsaW5lRGVzY3JpcHRvci0+ZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQoKTsK
KworfQorCit2b2lkIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0RGVwdGhBdHRh
Y2htZW50UGl4ZWxGb3JtYXQodW5zaWduZWQgbG9uZyBuZXdQaXhlbEZvcm1hdCkKK3sKKyAgICBp
ZiAoIW1fcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X3JlbmRlclBpcGVsaW5lRGVzY3JpcHRvci0+c2V0RGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQo
bmV3UGl4ZWxGb3JtYXQpOworfQorCit2b2lkIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cjo6cmVzZXQoKQoreworICAgIG1fdmVydGV4RnVuY3Rpb24gPSBudWxscHRyOworICAgIG1fZnJh
Z21lbnRGdW5jdGlvbiA9IG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi5lZjc2ODAwMDJiOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEs
OTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXZWJHUFVPYmplY3Qu
aCIKKy8qKiogZm9yIHN0dWIgKi8KKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IuaCIKKy8qKiogZW5kIHN0dWIgKi8KKworI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvKioqIHN0dWIgKi8KKy8vIGNs
YXNzIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKK2NsYXNzIEdQVUZ1bmN0aW9uOworY2xh
c3MgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IGNyZWF0ZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAg
ICBWZWN0b3I8UmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cj4+IGNvbG9yQXR0YWNobWVudHMoKSB7IHJldHVybiBWZWN0b3I8UmVmUHRyPEdQVVJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4+KCk7IH0KKyAgICBTdHJpbmcgbGFiZWwo
KSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CisgICAgdm9pZCBzZXRMYWJlbChjb25z
dCBTdHJpbmcmKSB7IH0KKyAgICB2b2lkIHNldFZlcnRleEZ1bmN0aW9uKEdQVUZ1bmN0aW9uKikg
eyB9CisgICAgdm9pZCBzZXRGcmFnbWVudEZ1bmN0aW9uKEdQVUZ1bmN0aW9uKikgeyB9CisgICAg
dW5zaWduZWQgbG9uZyBkZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJu
IDA7IH0KKyAgICB2b2lkIHNldERlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0KHVuc2lnbmVkIGxv
bmcpIHsgfQorfTsKKworLyoqKiBlbmQgc3R1YiAqLworCitjbGFzcyBXZWJHUFVGdW5jdGlvbjsK
K2NsYXNzIFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjsKKwor
Y2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIDogcHVibGljIFdlYkdQVU9iamVj
dCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
KCk7CisgICAgc3RhdGljIFJlZjxXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IGNyZWF0
ZSgpOworCisgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRMYWJlbChjb25z
dCBTdHJpbmcmKTsKKworICAgIFJlZlB0cjxXZWJHUFVGdW5jdGlvbj4gdmVydGV4RnVuY3Rpb24o
KSBjb25zdDsKKyAgICB2b2lkIHNldFZlcnRleEZ1bmN0aW9uKFJlZlB0cjxXZWJHUFVGdW5jdGlv
bj4pOworCisgICAgUmVmUHRyPFdlYkdQVUZ1bmN0aW9uPiBmcmFnbWVudEZ1bmN0aW9uKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRGcmFnbWVudEZ1bmN0aW9uKFJlZlB0cjxXZWJHUFVGdW5jdGlvbj4p
OworCisgICAgVmVjdG9yPFJlZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3I+PiBjb2xvckF0dGFjaG1lbnRzKCk7CisKKyAgICB1bnNpZ25lZCBsb25nIGRl
cHRoQXR0YWNobWVudFBpeGVsRm9ybWF0KCkgY29uc3Q7CisgICAgdm9pZCBzZXREZXB0aEF0dGFj
aG1lbnRQaXhlbEZvcm1hdCh1bnNpZ25lZCBsb25nKTsKKworICAgIHZvaWQgcmVzZXQoKTsKKwor
ICAgIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
KCkgeyByZXR1cm4gbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuZ2V0KCk7IH0KKworcHJpdmF0
ZToKKyAgICBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoKTsKKworICAgIFJlZlB0cjxX
ZWJHUFVGdW5jdGlvbj4gbV92ZXJ0ZXhGdW5jdGlvbjsKKyAgICBSZWZQdHI8V2ViR1BVRnVuY3Rp
b24+IG1fZnJhZ21lbnRGdW5jdGlvbjsKKworICAgIFZlY3RvcjxSZWZQdHI8V2ViR1BVUmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4gbV9jb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yczsKKworICAgIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IG1fcmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwLi5hOTg2ODNkZDk4OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwKQEAgLTAs
MCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
K1sKKyAgICBDb25zdHJ1Y3RvciwKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxl
ZEF0UnVudGltZT1XZWJHUFUKK10gaW50ZXJmYWNlIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciB7CisKKyAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOworCisgICAgYXR0cmlidXRl
IFdlYkdQVUZ1bmN0aW9uPyB2ZXJ0ZXhGdW5jdGlvbjsKKyAgICBhdHRyaWJ1dGUgV2ViR1BVRnVu
Y3Rpb24/IGZyYWdtZW50RnVuY3Rpb247CisKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgc2VxdWVu
Y2U8V2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBjb2xvckF0
dGFjaG1lbnRzOworCisgICAgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgZGVwdGhBdHRhY2htZW50
UGl4ZWxGb3JtYXQ7CisKKyAgICB2b2lkIHJlc2V0KCk7CisKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43OTNhMDU5N2IxOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVs
aW5lU3RhdGUuY3BwCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BV
UmVuZGVyUGlwZWxpbmVTdGF0ZS5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworLyoqKgorI2lu
Y2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaCIKKyAqLworI2luY2x1ZGUgIldlYkdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlcmluZ0NvbnRl
eHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8V2ViR1BVUmVuZGVyUGlwZWxpbmVT
dGF0ZT4gV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZTo6Y3JlYXRlKFdlYkdQVVJlbmRlcmluZ0Nv
bnRleHQqIGNvbnRleHQsIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRv
cikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRl
KGNvbnRleHQsIGRlc2NyaXB0b3IpKTsKK30KKworV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZTo6
V2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0
LCBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCisgICAgOiBXZWJH
UFVPYmplY3QoY29udGV4dCkKK3sKKyAgICBpZiAoIWNvbnRleHQgfHwgIWRlc2NyaXB0b3IpCisg
ICAgICAgIHJldHVybjsKKyAgICBtX3JlbmRlclBpcGVsaW5lU3RhdGUgPSBHUFVSZW5kZXJQaXBl
bGluZVN0YXRlOjpjcmVhdGUoY29udGV4dC0+ZGV2aWNlKCkuZ2V0KCksIGRlc2NyaXB0b3ItPnJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcigpKTsKK30KKworV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0
ZTo6fldlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUoKQoreworfQorCitTdHJpbmcgV2ViR1BVUmVu
ZGVyUGlwZWxpbmVTdGF0ZTo6bGFiZWwoKSBjb25zdAoreworICAgIGlmICghbV9yZW5kZXJQaXBl
bGluZVN0YXRlKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIHJldHVybiBt
X3JlbmRlclBpcGVsaW5lU3RhdGUtPmxhYmVsKCk7Cit9CisKK3ZvaWQgV2ViR1BVUmVuZGVyUGlw
ZWxpbmVTdGF0ZTo6c2V0TGFiZWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKK3sKKyAgICBpZiAoIW1f
cmVuZGVyUGlwZWxpbmVTdGF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9yZW5kZXJQaXBl
bGluZVN0YXRlLT5zZXRMYWJlbChsYWJlbCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVS
ZW5kZXJQaXBlbGluZVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVS
ZW5kZXJQaXBlbGluZVN0YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjA3M2IyYjY1OWQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXZWJHUFVPYmplY3QuaCIKKworI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvKioqIHN0dWIgKi8K
Ky8vIGNsYXNzIEdQVVJlbmRlclBpcGVsaW5lU3RhdGU7CitjbGFzcyBHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I7CitjbGFzcyBHUFVSZW5kZXJQaXBlbGluZVN0YXRlIDogcHVibGljIFJlZkNv
dW50ZWQ8R1BVUmVuZGVyUGlwZWxpbmVTdGF0ZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWZQ
dHI8R1BVUmVuZGVyUGlwZWxpbmVTdGF0ZT4gY3JlYXRlKEdQVURldmljZSosIEdQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvciopIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBTdHJpbmcgbGFiZWwo
KSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CisgICAgdm9pZCBzZXRMYWJlbChjb25z
dCBTdHJpbmcmKSB7IH0KK307CisvKioqIGVuZCBzdHViICovCisKK2NsYXNzIFdlYkdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcjsKKworY2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZSA6
IHB1YmxpYyBXZWJHUFVPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVVJlbmRl
clBpcGVsaW5lU3RhdGUoKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lU3Rh
dGU+IGNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgV2ViR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yKik7CisKKyAgICBTdHJpbmcgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkIHNldExh
YmVsKGNvbnN0IFN0cmluZyYpOworCisgICAgR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZSogcmVuZGVy
UGlwZWxpbmVTdGF0ZSgpIHsgcmV0dXJuIG1fcmVuZGVyUGlwZWxpbmVTdGF0ZS5nZXQoKTsgfQor
Citwcml2YXRlOgorICAgIFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUoV2ViR1BVUmVuZGVyaW5n
Q29udGV4dCosIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciopOworCisgICAgUmVmUHRy
PEdQVVJlbmRlclBpcGVsaW5lU3RhdGU+IG1fcmVuZGVyUGlwZWxpbmVTdGF0ZTsKK307CisgICAg
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmlkbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNGVkMzRkMjhjYTUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZVN0
YXRlLmlkbApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRS
dW50aW1lPVdlYkdQVQorXSBpbnRlcmZhY2UgV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZSB7CisK
KyAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOworCit9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYmRjNjVlN2JiYTkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNw
cApAQCAtMCwwICsxLDIwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdD
b250ZXh0LmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
KyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHUFVEZXZpY2UuaCIKKyNpbmNsdWRl
ICJXZWJHUFVCdWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHUFVDb21tYW5kUXVldWUuaCIKKyNpbmNs
dWRlICJXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiV2ViR1BVRGVw
dGhTdGVuY2lsU3RhdGUuaCIKKyNpbmNsdWRlICJXZWJHUFVEcmF3YWJsZS5oIgorI2luY2x1ZGUg
IldlYkdQVUxpYnJhcnkuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5o
IgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgorI2luY2x1ZGUg
IldlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaCIKKyNpbmNsdWRlICJXZWJHUFVUZXh0dXJlLmgi
CisjaW5jbHVkZSAiV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaCIKKworI2luY2x1ZGUgPHJ1bnRp
bWUvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ0lubGluZXMuaD4KKyNpbmNs
dWRlIDxydW50aW1lL1R5cGVkQXJyYXlJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9VaW50
MzJBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCitu
YW1lc3BhY2UgeworCitpbnQgY2xhbXAoaW50IHZhbHVlLCBpbnQgbWluLCBpbnQgbWF4KQorewor
ICAgIGlmICh2YWx1ZSA8IG1pbikKKyAgICAgICAgdmFsdWUgPSBtaW47CisgICAgaWYgKHZhbHVl
ID4gbWF4KQorICAgICAgICB2YWx1ZSA9IG1heDsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK30K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgY29uc3QgaW50IGtNYXhUZXh0dXJlU2l6
ZSA9IDQwOTY7CisKKworc3RkOjp1bmlxdWVfcHRyPFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ+IFdl
YkdQVVJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZShIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzKQor
eworICAgIFVOVVNFRF9QQVJBTShjYW52YXMpOworLyoqKgorICAgIERvY3VtZW50JiBkb2N1bWVu
dCA9IGNhbnZhcy5kb2N1bWVudCgpOworICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1l
KCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKy8vICAgIEdQ
VURldmljZTo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gYXR0cnMgPyBhdHRycy0+YXR0cmlidXRl
cygpIDogR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMoKTsKKyAgICBHUFVEZXZpY2U6OkF0
dHJpYnV0ZXMgYXR0cmlidXRlczsKKworICAgIGF0dHJpYnV0ZXMuYW50aWFsaWFzID0gZmFsc2U7
CisKKy8vICAgICAgICBpZiAocGFnZSkKKy8vICAgICAgICAgICAgYXR0cmlidXRlcy5kZXZpY2VQ
aXhlbFJhdGlvID0gcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKKworICAgIEhvc3RXaW5kb3cq
IGhvc3RXaW5kb3cgPSBkb2N1bWVudC52aWV3KCktPnJvb3QoKS0+aG9zdFdpbmRvdygpOworICAg
IFJlZlB0cjxHUFVEZXZpY2U+IGRldmljZShHUFVEZXZpY2U6OmNyZWF0ZShhdHRyaWJ1dGVzLCBo
b3N0V2luZG93KSk7CisKKyAgICBpZiAoIWRldmljZSkgeyAvLyB8fCAhY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCkpIHsKKyAgICAgICAgLy8gY2FudmFzLT5kaXNwYXRjaEV2ZW50KFdlYkdM
Q29udGV4dEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmdsY29udGV4dGNyZWF0aW9uZXJy
b3JFdmVudCwgZmFsc2UsIHRydWUsICJDb3VsZCBub3QgY3JlYXRlIGEgV2ViR0wgY29udGV4dC4i
KSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJHUFVSZW5kZXJpbmdDb250ZXh0PiByZW5kZXJpbmdDb250ZXh0ID0gbnVsbHB0cjsKKyAg
ICByZW5kZXJpbmdDb250ZXh0ID0gc3RkOjp1bmlxdWVfcHRyPFdlYkdQVVJlbmRlcmluZ0NvbnRl
eHQ+KG5ldyBXZWJHUFVSZW5kZXJpbmdDb250ZXh0KGNhbnZhcywgZGV2aWNlKSk7CisgICAgcmVu
ZGVyaW5nQ29udGV4dC0+c3VzcGVuZElmTmVlZGVkKCk7CisKKyAgICByZXR1cm4gcmVuZGVyaW5n
Q29udGV4dDsKKyovCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1dlYkdQVVJlbmRlcmluZ0Nv
bnRleHQ6OldlYkdQVVJlbmRlcmluZ0NvbnRleHQoSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcywg
UGFzc1JlZlB0cjxHUFVEZXZpY2U+IGRldmljZSkKKyAgICA6IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQoY2FudmFzKQorICAgICwgQWN0aXZlRE9NT2JqZWN0KCZjYW52YXMuZG9jdW1lbnQoKSkKKyAg
ICAsIG1fZGV2aWNlKGRldmljZSkKKyAgICAvLyAsIG1fYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQor
eworICAgIGluaXRpYWxpemVOZXdDb250ZXh0KCk7Cit9CisKK3ZvaWQgV2ViR1BVUmVuZGVyaW5n
Q29udGV4dDo6aW5pdGlhbGl6ZU5ld0NvbnRleHQoKQoreworICAgIC8vIEZJWE1FOiBNYXliZSB3
ZSBzaG91bGQgcmVzZXQgYSBidW5jaCBvZiBzdHVmZiBoZXJlLgorCisgICAgSW50U2l6ZSBjYW52
YXNTaXplID0gY2xhbXBlZENhbnZhc1NpemUoKTsKKyAgICBtX2RldmljZS0+cmVzaGFwZShjYW52
YXNTaXplLndpZHRoKCksIGNhbnZhc1NpemUuaGVpZ2h0KCkpOworfQorCitJbnRTaXplIFdlYkdQ
VVJlbmRlcmluZ0NvbnRleHQ6OmNsYW1wZWRDYW52YXNTaXplKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gSW50U2l6ZShjbGFtcChjYW52YXMoKS53aWR0aCgpLCAxLCBrTWF4VGV4dHVyZVNpemUpLAor
ICAgICAgICBjbGFtcChjYW52YXMoKS5oZWlnaHQoKSwgMSwga01heFRleHR1cmVTaXplKSk7Cit9
CisKK2Jvb2wgV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViR1BVUmVuZGVyaW5nQ29udGV4
dDo6c3RvcCgpCit7Cit9CisKK2NvbnN0IGNoYXIqIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ6OmFj
dGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiAiV2ViR1BVUmVuZGVyaW5n
Q29udGV4dCI7Cit9CisKK2Jvb2wgV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6Y2FuU3VzcGVuZEZv
ckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitQ
bGF0Zm9ybUxheWVyKiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0OjpwbGF0Zm9ybUxheWVyKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9kZXZpY2UtPnBsYXRmb3JtTGF5ZXIoKTsKK30KKwordm9pZCBX
ZWJHUFVSZW5kZXJpbmdDb250ZXh0OjptYXJrTGF5ZXJDb21wb3NpdGVkKCkKK3sKKyAgICBtX2Rl
dmljZS0+bWFya0xheWVyQ29tcG9zaXRlZCgpOworfQorCit2b2lkIFdlYkdQVVJlbmRlcmluZ0Nv
bnRleHQ6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIC8vIEZJWE1FOiBE
byB3ZSBuZWVkIHRvIHJlc2V0IHN0dWZmIGhlcmU/CisgICAgbV9kZXZpY2UtPnJlc2hhcGUod2lk
dGgsIGhlaWdodCk7Cit9CisKK1JlZlB0cjxXZWJHUFVMaWJyYXJ5PiBXZWJHUFVSZW5kZXJpbmdD
b250ZXh0OjpjcmVhdGVMaWJyYXJ5KGNvbnN0IFN0cmluZyBzb3VyY2VDb2RlKQoreworICAgIFJl
ZlB0cjxXZWJHUFVMaWJyYXJ5PiBsaWJyYXJ5ID0gV2ViR1BVTGlicmFyeTo6Y3JlYXRlKHRoaXMs
IHNvdXJjZUNvZGUpOworICAgIHJldHVybiBsaWJyYXJ5OworfQorCitSZWZQdHI8V2ViR1BVUmVu
ZGVyUGlwZWxpbmVTdGF0ZT4gV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlUmVuZGVyUGlw
ZWxpbmVTdGF0ZShXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7
CisgICAgUmVmUHRyPFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGU+IHN0YXRlID0gV2ViR1BVUmVu
ZGVyUGlwZWxpbmVTdGF0ZTo6Y3JlYXRlKHRoaXMsICZkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4g
c3RhdGU7Cit9CisKK1JlZlB0cjxXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZT4gV2ViR1BVUmVuZGVy
aW5nQ29udGV4dDo6Y3JlYXRlRGVwdGhTdGVuY2lsU3RhdGUoV2ViR1BVRGVwdGhTdGVuY2lsRGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICBSZWZQdHI8V2ViR1BVRGVwdGhTdGVuY2lsU3Rh
dGU+IHN0YXRlID0gV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGU6OmNyZWF0ZSh0aGlzLCAmZGVzY3Jp
cHRvcik7CisgICAgcmV0dXJuIHN0YXRlOworfQorCitSZWZQdHI8V2ViR1BVQ29tbWFuZFF1ZXVl
PiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVDb21tYW5kUXVldWUoKQoreworICAgIFJl
ZlB0cjxXZWJHUFVDb21tYW5kUXVldWU+IHF1ZXVlID0gV2ViR1BVQ29tbWFuZFF1ZXVlOjpjcmVh
dGUodGhpcyk7CisgICAgcmV0dXJuIHF1ZXVlOworfQorCitSZWZQdHI8V2ViR1BVRHJhd2FibGU+
IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ6Om5leHREcmF3YWJsZSgpCit7CisgICAgUmVmUHRyPFdl
YkdQVURyYXdhYmxlPiBkcmF3YWJsZSA9IFdlYkdQVURyYXdhYmxlOjpjcmVhdGUodGhpcyk7Cisg
ICAgcmV0dXJuIGRyYXdhYmxlOworfQorCitSZWZQdHI8V2ViR1BVQnVmZmVyPiBXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGVCdWZmZXIoQXJyYXlCdWZmZXJWaWV3JiBkYXRhKQoreworICAg
IFJlZlB0cjxXZWJHUFVCdWZmZXI+IGJ1ZmZlciA9IFdlYkdQVUJ1ZmZlcjo6Y3JlYXRlKHRoaXMs
ICZkYXRhKTsKKyAgICByZXR1cm4gYnVmZmVyOworfQorCitSZWZQdHI8V2ViR1BVVGV4dHVyZT4g
V2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlVGV4dHVyZShXZWJHUFVUZXh0dXJlRGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICBSZWZQdHI8V2ViR1BVVGV4dHVyZT4gdGV4dHVyZSA9
IFdlYkdQVVRleHR1cmU6OmNyZWF0ZSh0aGlzLCAmZGVzY3JpcHRvcik7CisgICAgcmV0dXJuIHRl
eHR1cmU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVhYTA3N2FmNjdkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyaW5nQ29udGV4
dC5oCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVk
ZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5o
IgorI2luY2x1ZGUgIkdQVURldmljZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJHUFVDb21tYW5kUXVldWU7Citj
bGFzcyBXZWJHUFVMaWJyYXJ5OworY2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
OworY2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZTsKK2NsYXNzIFdlYkdQVURlcHRoU3Rl
bmNpbERlc2NyaXB0b3I7CitjbGFzcyBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZTsKK2NsYXNzIFdl
YkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOworY2xhc3MgV2ViR1BVRHJhd2FibGU7CitjbGFzcyBX
ZWJHUFVCdWZmZXI7CitjbGFzcyBXZWJHUFVUZXh0dXJlOworY2xhc3MgV2ViR1BVVGV4dHVyZURl
c2NyaXB0b3I7CisKK2NsYXNzIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQgOiBwdWJsaWMgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CitwdWJsaWM6CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJHUFVSZW5kZXJpbmdDb250ZXh0PiBjcmVhdGUoSFRN
TENhbnZhc0VsZW1lbnQmKTsKKy8vICAgIHZpcnR1YWwgfldlYkdQVVJlbmRlcmluZ0NvbnRleHQo
KTsKKworICAgIGJvb2wgaXNHUFUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisK
KyAgICBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CisKKyAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKworICAgIHZvaWQg
bWFya0xheWVyQ29tcG9zaXRlZCgpOworCisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0IG92ZXJyaWRlOworCisgICAgUmVmUHRyPEdQVURldmljZT4gZGV2aWNlKCkgeyBy
ZXR1cm4gbV9kZXZpY2U7IH0KKworICAgIC8vIFdlYkdQVSBlbnRyeSBwb2ludHMKKworICAgIFJl
ZlB0cjxXZWJHUFVMaWJyYXJ5PiBjcmVhdGVMaWJyYXJ5KGNvbnN0IFN0cmluZyk7CisKKyAgICBS
ZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZT4gY3JlYXRlUmVuZGVyUGlwZWxpbmVTdGF0
ZShXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImKTsKKworICAgIFJlZlB0cjxXZWJHUFVE
ZXB0aFN0ZW5jaWxTdGF0ZT4gY3JlYXRlRGVwdGhTdGVuY2lsU3RhdGUoV2ViR1BVRGVwdGhTdGVu
Y2lsRGVzY3JpcHRvciYpOworCisgICAgUmVmUHRyPFdlYkdQVUNvbW1hbmRRdWV1ZT4gY3JlYXRl
Q29tbWFuZFF1ZXVlKCk7CisKKyAgICBSZWZQdHI8V2ViR1BVRHJhd2FibGU+IG5leHREcmF3YWJs
ZSgpOworCisgICAgUmVmUHRyPFdlYkdQVUJ1ZmZlcj4gY3JlYXRlQnVmZmVyKEFycmF5QnVmZmVy
VmlldyYgZGF0YSk7CisKKyAgICBSZWZQdHI8V2ViR1BVVGV4dHVyZT4gY3JlYXRlVGV4dHVyZShX
ZWJHUFVUZXh0dXJlRGVzY3JpcHRvciYpOworCitwcm90ZWN0ZWQ6CisgICAgLy8gQWN0aXZlRE9N
T2JqZWN0CisgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3RO
YW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNw
ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBJbnRTaXplIGNsYW1wZWRDYW52YXNTaXpl
KCkgY29uc3Q7CisgICAgdm9pZCBpbml0aWFsaXplTmV3Q29udGV4dCgpOworCitwcml2YXRlOgor
Ly8gICAgV2ViR1BVUmVuZGVyaW5nQ29udGV4dChIVE1MQ2FudmFzRWxlbWVudCopOy8vLCBHcmFw
aGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyk7CisgICAgV2ViR1BVUmVuZGVyaW5nQ29udGV4dChI
VE1MQ2FudmFzRWxlbWVudCYsIFBhc3NSZWZQdHI8R1BVRGV2aWNlPik7CisKKyAgICBSZWZQdHI8
R1BVRGV2aWNlPiBtX2RldmljZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19DQU5WQVNSRU5ERVJJTkdDT05URVhUKFdlYkNvcmU6OldlYkdQ
VVJlbmRlcmluZ0NvbnRleHQsIGlzR1BVKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmlkbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWE4MTQzNDBiNjMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJpbmdDb250ZXh0Lmlk
bApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGlt
ZT1XZWJHUFUsCisgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCisgICAgRG9Ob3RDaGVja0NvbnN0
YW50cworXSBpbnRlcmZhY2UgV2ViR1BVUmVuZGVyaW5nQ29udGV4dCB7CisKKyAgICAvLyBQaXhl
bCBmb3JtYXRzCisKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgUGl4ZWxGb3JtYXRCR1JBOFVub3Jt
ID0gODA7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFBpeGVsRm9ybWF0RGVwdGgzMkZsb2F0ID0g
MjUyOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBQaXhlbEZvcm1hdFN0ZW5jaWw4ID0gMjUzOwor
ICAgIGNvbnN0IHVuc2lnbmVkIGludCBQaXhlbEZvcm1hdEludmFsaWQgPSAwOworCisgICAgLy8g
TG9hZCBhY3Rpb25zCisKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgTG9hZEFjdGlvbkRvbnRDYXJl
ID0gMDsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgTG9hZEFjdGlvbkxvYWQgPSAxOworICAgIGNv
bnN0IHVuc2lnbmVkIGludCBMb2FkQWN0aW9uQ2xlYXIgPSAyOworCisgICAgLy8gU3RvcmUgYWN0
aW9ucworCisgICAgY29uc3QgdW5zaWduZWQgaW50IFN0b3JlQWN0aW9uRG9udENhcmUgPSAwOwor
ICAgIGNvbnN0IHVuc2lnbmVkIGludCBTdG9yZUFjdGlvblN0b3JlID0gMTsKKyAgICBjb25zdCB1
bnNpZ25lZCBpbnQgU3RvcmVBY3Rpb25NdWx0aXNhbXBsZVJlc29sdmUgPSAyOworCisgICAgLy8g
UHJpbWl0aXZlIHR5cGVzCisKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgUHJpbWl0aXZlVHlwZVBv
aW50ID0gMDsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgUHJpbWl0aXZlVHlwZUxpbmUgPSAxOwor
ICAgIGNvbnN0IHVuc2lnbmVkIGludCBQcmltaXRpdmVUeXBlTGluZVN0cmlwID0gMjsKKyAgICBj
b25zdCB1bnNpZ25lZCBpbnQgUHJpbWl0aXZlVHlwZVRyaWFuZ2xlID0gMzsKKyAgICBjb25zdCB1
bnNpZ25lZCBpbnQgUHJpbWl0aXZlVHlwZVRyaWFuZ2xlU3RyaXAgPSA0OworCisgICAgLy8gQ29t
cGFyaXNvbiBmdW5jdGlvbnMKKworICAgIGNvbnN0IHVuc2lnbmVkIGludCBDb21wYXJlRnVuY3Rp
b25OZXZlciA9IDA7CisgICAgY29uc3QgdW5zaWduZWQgaW50IENvbXBhcmVGdW5jdGlvbkxlc3Mg
PSAxOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBDb21wYXJlRnVuY3Rpb25FcXVhbCA9IDI7Cisg
ICAgY29uc3QgdW5zaWduZWQgaW50IENvbXBhcmVGdW5jdGlvbkxlc3NFcXVhbCA9IDM7CisgICAg
Y29uc3QgdW5zaWduZWQgaW50IENvbXBhcmVGdW5jdGlvbkdyZWF0ZXIgPSA0OworICAgIGNvbnN0
IHVuc2lnbmVkIGludCBDb21wYXJlRnVuY3Rpb25Ob3RFcXVhbCA9IDU7CisgICAgY29uc3QgdW5z
aWduZWQgaW50IENvbXBhcmVGdW5jdGlvbkdyZWF0ZXJFcXVhbCA9IDY7CisgICAgY29uc3QgdW5z
aWduZWQgaW50IENvbXBhcmVGdW5jdGlvbkFsd2F5cyA9IDc7CisKKyAgICAvLyBUZXh0dXJlIFR5
cGVzCisKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgVGV4dHVyZVR5cGUxRCA9IDA7CisgICAgY29u
c3QgdW5zaWduZWQgaW50IFRleHR1cmVUeXBlMURBcnJheSA9IDE7CisgICAgY29uc3QgdW5zaWdu
ZWQgaW50IFRleHR1cmVUeXBlMkQgPSAyOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBUZXh0dXJl
VHlwZTJEQXJyYXkgPSAzOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBUZXh0dXJlVHlwZTJETXVs
dGlzYW1wbGUgPSA0OworICAgIGNvbnN0IHVuc2lnbmVkIGludCBUZXh0dXJlVHlwZUN1YmUgPSA1
OworICAgIGNvbnN0IHVuc2lnbmVkIGludCBUZXh0dXJlVHlwZUN1YmVBcnJheSA9IDY7CisgICAg
Y29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVUeXBlM0QgPSA3OworCisgICAgLy8gU3RvcmFnZSBt
b2RlcworCisgICAgY29uc3QgdW5zaWduZWQgaW50IFN0b3JhZ2VNb2RlU2hhcmVkICA9IDA7Cisg
ICAgY29uc3QgdW5zaWduZWQgaW50IFN0b3JhZ2VNb2RlTWFuYWdlZCA9IDE7CisgICAgY29uc3Qg
dW5zaWduZWQgaW50IFN0b3JhZ2VNb2RlUHJpdmF0ZSA9IDI7CisKKyAgICAvLyBVc2FnZQorCisg
ICAgY29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVVc2FnZVVua25vd24gPSAweDAwMDA7CisgICAg
Y29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVVc2FnZVNoYWRlclJlYWQgPSAweDAwMDE7CisgICAg
Y29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVVc2FnZVNoYWRlcldyaXRlID0gMHgwMDAyOworICAg
IGNvbnN0IHVuc2lnbmVkIGludCBUZXh0dXJlVXNhZ2VSZW5kZXJUYXJnZXQgPSAweDAwMDQ7Cisg
ICAgY29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVVc2FnZVBpeGVsRm9ybWF0VmlldyA9IDB4MDAx
MDsKKworICAgIC8vIEVudHJ5IHBvaW50cworCisgICAgV2ViR1BVTGlicmFyeSBjcmVhdGVMaWJy
YXJ5KERPTVN0cmluZyBzb3VyY2VDb2RlKTsKKworICAgIFdlYkdQVVJlbmRlclBpcGVsaW5lU3Rh
dGU/IGNyZWF0ZVJlbmRlclBpcGVsaW5lU3RhdGUoV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yIGRlc2NyaXB0b3IpOworICAgIFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlPyBjcmVhdGVEZXB0
aFN0ZW5jaWxTdGF0ZShXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwor
CisgICAgV2ViR1BVQ29tbWFuZFF1ZXVlPyBjcmVhdGVDb21tYW5kUXVldWUoKTsKKworICAgIFdl
YkdQVURyYXdhYmxlPyBuZXh0RHJhd2FibGUoKTsKKworICAgIFdlYkdQVUJ1ZmZlcj8gY3JlYXRl
QnVmZmVyKEFycmF5QnVmZmVyVmlldyBkYXRhKTsKKworICAgIFdlYkdQVVRleHR1cmU/IGNyZWF0
ZVRleHR1cmUoV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7CisKK307CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmUuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yOTAwYjI0ZWE4YgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmUuY3BwCkBAIC0wLDAgKzEs
ODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BVVGV4dHVyZS5oIgorCisjaWYgRU5BQkxF
KFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVVRleHR1cmUuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8V2ViR1BVVGV4dHVyZT4gV2ViR1BVVGV4dHVyZTo6
Y3JlYXRlRnJvbURyYXdhYmxlVGV4dHVyZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0
LCBQYXNzUmVmUHRyPEdQVVRleHR1cmU+IGRyYXdhYmxlVGV4dHVyZSkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJHUFVUZXh0dXJlKGNvbnRleHQsIGRyYXdhYmxlVGV4dHVyZSkpOwor
fQorCitSZWY8V2ViR1BVVGV4dHVyZT4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlKFdlYkdQVVJlbmRl
cmluZ0NvbnRleHQqIGNvbnRleHQsIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9y
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVRleHR1cmUoY29udGV4dCwgZGVz
Y3JpcHRvcikpOworfQorCitXZWJHUFVUZXh0dXJlOjpXZWJHUFVUZXh0dXJlKFdlYkdQVVJlbmRl
cmluZ0NvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8R1BVVGV4dHVyZT4gZHJhd2FibGVUZXh0
dXJlKQorICAgIDogV2ViR1BVT2JqZWN0KGNvbnRleHQpCisgICAgLCBtX3RleHR1cmUoZHJhd2Fi
bGVUZXh0dXJlKQoreworfQorCitXZWJHUFVUZXh0dXJlOjpXZWJHUFVUZXh0dXJlKFdlYkdQVVJl
bmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yKiBkZXNjcmlw
dG9yKQorICAgIDogV2ViR1BVT2JqZWN0KGNvbnRleHQpCit7CisgICAgbV90ZXh0dXJlID0gY29u
dGV4dC0+ZGV2aWNlKCktPmNyZWF0ZVRleHR1cmUoZGVzY3JpcHRvci0+dGV4dHVyZURlc2NyaXB0
b3IoKSk7Cit9CisKK1dlYkdQVVRleHR1cmU6On5XZWJHUFVUZXh0dXJlKCkKK3sKK30KKwordW5z
aWduZWQgbG9uZyBXZWJHUFVUZXh0dXJlOjp3aWR0aCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3Rl
eHR1cmUpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBtX3RleHR1cmUtPndp
ZHRoKCk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgV2ViR1BVVGV4dHVyZTo6aGVpZ2h0KCkgY29uc3QK
K3sKKyAgICBpZiAoIW1fdGV4dHVyZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4g
bV90ZXh0dXJlLT5oZWlnaHQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmUu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDI1YjBiYmU0MzYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlLmgKQEAgLTAsMCAr
MSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldlYkdQVU9iamVj
dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVVRleHR1cmU7CitjbGFzcyBX
ZWJHUFVUZXh0dXJlRGVzY3JpcHRvcjsKKworY2xhc3MgV2ViR1BVVGV4dHVyZSA6IHB1YmxpYyBX
ZWJHUFVPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVVRleHR1cmUoKTsKKyAg
ICBzdGF0aWMgUmVmPFdlYkdQVVRleHR1cmU+IGNyZWF0ZUZyb21EcmF3YWJsZVRleHR1cmUoV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dCosIFBhc3NSZWZQdHI8R1BVVGV4dHVyZT4pOworICAgIHN0YXRp
YyBSZWY8V2ViR1BVVGV4dHVyZT4gY3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBXZWJH
UFVUZXh0dXJlRGVzY3JpcHRvciopOworCisgICAgdW5zaWduZWQgbG9uZyB3aWR0aCgpIGNvbnN0
OworICAgIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KCkgY29uc3Q7CisKKyAgICBHUFVUZXh0dXJlKiB0
ZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CisKK3ByaXZhdGU6Cisg
ICAgV2ViR1BVVGV4dHVyZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgUGFzc1JlZlB0cjxHUFVU
ZXh0dXJlPik7CisgICAgV2ViR1BVVGV4dHVyZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgV2Vi
R1BVVGV4dHVyZURlc2NyaXB0b3IqKTsKKworICAgIFJlZlB0cjxHUFVUZXh0dXJlPiBtX3RleHR1
cmU7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmUuaWRsIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLjVjZWRiMDZjYmU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZS5pZGwKQEAgLTAsMCArMSwzNCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBD
b25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gaW50ZXJm
YWNlIFdlYkdQVVRleHR1cmUgeworCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgd2lkdGg7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgaGVpZ2h0Owor
Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVy
ZURlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVy
ZURlc2NyaXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44
MDY3OTM5YWI1YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmNwcApAQCAtMCwwICsxLDE0OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQkdQ
VSkKKworI2luY2x1ZGUgIkdQVVRleHR1cmVEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiV2ViR1BV
UmVuZGVyaW5nQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXZWJHUFVU
ZXh0dXJlRGVzY3JpcHRvcj4gV2ViR1BVVGV4dHVyZURlc2NyaXB0b3I6OmNyZWF0ZSh1bnNpZ25l
ZCBsb25nIHBpeGVsRm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhl
aWdodCwgYm9vbCBtaXBtYXBwZWQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BV
VGV4dHVyZURlc2NyaXB0b3IocGl4ZWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIG1pcG1hcHBlZCkp
OworfQorCitXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcjo6V2ViR1BVVGV4dHVyZURlc2NyaXB0b3Io
dW5zaWduZWQgbG9uZyBwaXhlbEZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQg
bG9uZyBoZWlnaHQsIGJvb2wgbWlwbWFwcGVkKQorICAgIDogV2ViR1BVT2JqZWN0KCkKK3sKKyAg
ICBtX3RleHR1cmVEZXNjcmlwdG9yID0gR1BVVGV4dHVyZURlc2NyaXB0b3I6OmNyZWF0ZShwaXhl
bEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgbWlwbWFwcGVkKTsKK30KKworV2ViR1BVVGV4dHVyZURl
c2NyaXB0b3I6On5XZWJHUFVUZXh0dXJlRGVzY3JpcHRvcigpCit7Cit9CisKK3Vuc2lnbmVkIGxv
bmcgV2ViR1BVVGV4dHVyZURlc2NyaXB0b3I6OndpZHRoKCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
dGV4dHVyZURlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIG1fdGV4
dHVyZURlc2NyaXB0b3ItPndpZHRoKCk7Cit9CisKK3ZvaWQgV2ViR1BVVGV4dHVyZURlc2NyaXB0
b3I6OnNldFdpZHRoKHVuc2lnbmVkIGxvbmcgd2lkdGgpCit7CisgICAgaWYgKCFtX3RleHR1cmVE
ZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3RleHR1cmVEZXNjcmlwdG9yLT5z
ZXRXaWR0aCh3aWR0aCk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgV2ViR1BVVGV4dHVyZURlc2NyaXB0
b3I6OmhlaWdodCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3RleHR1cmVEZXNjcmlwdG9yKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBtX3RleHR1cmVEZXNjcmlwdG9yLT5oZWlnaHQo
KTsKK30KKwordm9pZCBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcjo6c2V0SGVpZ2h0KHVuc2lnbmVk
IGxvbmcgaGVpZ2h0KQoreworICAgIGlmICghbV90ZXh0dXJlRGVzY3JpcHRvcikKKyAgICAgICAg
cmV0dXJuOworICAgIAorICAgIG1fdGV4dHVyZURlc2NyaXB0b3ItPnNldEhlaWdodChoZWlnaHQp
OworfQorCit1bnNpZ25lZCBsb25nIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yOjpzYW1wbGVDb3Vu
dCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3RleHR1cmVEZXNjcmlwdG9yKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIHJldHVybiBtX3RleHR1cmVEZXNjcmlwdG9yLT5zYW1wbGVDb3VudCgpOwor
fQorCit2b2lkIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yOjpzZXRTYW1wbGVDb3VudCh1bnNpZ25l
ZCBsb25nIHNhbXBsZUNvdW50KQoreworICAgIGlmICghbV90ZXh0dXJlRGVzY3JpcHRvcikKKyAg
ICAgICAgcmV0dXJuOworICAgIAorICAgIG1fdGV4dHVyZURlc2NyaXB0b3ItPnNldFNhbXBsZUNv
dW50KHNhbXBsZUNvdW50KTsKK30KKwordW5zaWduZWQgbG9uZyBXZWJHUFVUZXh0dXJlRGVzY3Jp
cHRvcjo6dGV4dHVyZVR5cGUoKSBjb25zdAoreworICAgIGlmICghbV90ZXh0dXJlRGVzY3JpcHRv
cikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gbV90ZXh0dXJlRGVzY3JpcHRvci0+
dGV4dHVyZVR5cGUoKTsKK30KKwordm9pZCBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcjo6c2V0VGV4
dHVyZVR5cGUodW5zaWduZWQgbG9uZyB0ZXh0dXJlVHlwZSkKK3sKKyAgICBpZiAoIW1fdGV4dHVy
ZURlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX3RleHR1cmVEZXNjcmlw
dG9yLT5zZXRUZXh0dXJlVHlwZSh0ZXh0dXJlVHlwZSk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgV2Vi
R1BVVGV4dHVyZURlc2NyaXB0b3I6OnN0b3JhZ2VNb2RlKCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
dGV4dHVyZURlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIG1fdGV4
dHVyZURlc2NyaXB0b3ItPnN0b3JhZ2VNb2RlKCk7Cit9CisKK3ZvaWQgV2ViR1BVVGV4dHVyZURl
c2NyaXB0b3I6OnNldFN0b3JhZ2VNb2RlKHVuc2lnbmVkIGxvbmcgc3RvcmFnZU1vZGUpCit7Cisg
ICAgaWYgKCFtX3RleHR1cmVEZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisgICAgCisgICAg
bV90ZXh0dXJlRGVzY3JpcHRvci0+c2V0U3RvcmFnZU1vZGUoc3RvcmFnZU1vZGUpOworfQorCit1
bnNpZ25lZCBsb25nIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yOjp1c2FnZSgpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX3RleHR1cmVEZXNjcmlwdG9yKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJl
dHVybiBtX3RleHR1cmVEZXNjcmlwdG9yLT51c2FnZSgpOworfQorCit2b2lkIFdlYkdQVVRleHR1
cmVEZXNjcmlwdG9yOjpzZXRVc2FnZSh1bnNpZ25lZCBsb25nIHVzYWdlKQoreworICAgIGlmICgh
bV90ZXh0dXJlRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV90ZXh0dXJlRGVz
Y3JpcHRvci0+c2V0VXNhZ2UodXNhZ2UpOworfQorICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VVRleHR1cmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVU
ZXh0dXJlRGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li44YWUyNjRlNjFhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldlYkdQVUVudW1zLmgiCisjaW5jbHVkZSAiV2Vi
R1BVT2JqZWN0LmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgR1BVVGV4dHVyZURlc2NyaXB0b3I7CisKK2NsYXNzIFdlYkdQVVRleHR1
cmVEZXNjcmlwdG9yIDogcHVibGljIFdlYkdQVU9iamVjdCB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+V2ViR1BVVGV4dHVyZURlc2NyaXB0b3IoKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVRleHR1
cmVEZXNjcmlwdG9yPiBjcmVhdGUodW5zaWduZWQgbG9uZyBwaXhlbEZvcm1hdCwgdW5zaWduZWQg
bG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQsIGJvb2wgbWlwbWFwcGVkKTsKKworICAg
IHVuc2lnbmVkIGxvbmcgd2lkdGgoKSBjb25zdDsKKyAgICB2b2lkIHNldFdpZHRoKHVuc2lnbmVk
IGxvbmcpOworCisgICAgdW5zaWduZWQgbG9uZyBoZWlnaHQoKSBjb25zdDsKKyAgICB2b2lkIHNl
dEhlaWdodCh1bnNpZ25lZCBsb25nKTsKKworICAgIHVuc2lnbmVkIGxvbmcgc2FtcGxlQ291bnQo
KSBjb25zdDsKKyAgICB2b2lkIHNldFNhbXBsZUNvdW50KHVuc2lnbmVkIGxvbmcpOworCisgICAg
dW5zaWduZWQgbG9uZyB0ZXh0dXJlVHlwZSgpIGNvbnN0OworICAgIHZvaWQgc2V0VGV4dHVyZVR5
cGUodW5zaWduZWQgbG9uZyk7CisKKyAgICB1bnNpZ25lZCBsb25nIHN0b3JhZ2VNb2RlKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRTdG9yYWdlTW9kZSh1bnNpZ25lZCBsb25nKTsKKworICAgIHVuc2ln
bmVkIGxvbmcgdXNhZ2UoKSBjb25zdDsKKyAgICB2b2lkIHNldFVzYWdlKHVuc2lnbmVkIGxvbmcp
OworCisgICAgR1BVVGV4dHVyZURlc2NyaXB0b3IqIHRleHR1cmVEZXNjcmlwdG9yKCkgeyByZXR1
cm4gbV90ZXh0dXJlRGVzY3JpcHRvci5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFdlYkdQVVRl
eHR1cmVEZXNjcmlwdG9yKHVuc2lnbmVkIGxvbmcgcGl4ZWxGb3JtYXQsIHVuc2lnbmVkIGxvbmcg
d2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0LCBib29sIG1pcG1hcHBlZCk7CisKKyAgICBSZWZQ
dHI8R1BVVGV4dHVyZURlc2NyaXB0b3I+IG1fdGV4dHVyZURlc2NyaXB0b3I7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lMmFkMjY0ZDRkZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmlkbApAQCAt
MCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworWworICAgIENvbnN0cnVjdG9yKHVuc2lnbmVkIGxvbmcgcGl4ZWxGb3JtYXQsIHVuc2lnbmVk
IGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0LCBib29sZWFuIG1pcG1hcHBlZCksCisg
ICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGlu
dGVyZmFjZSBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvciB7CisKKyAgICBhdHRyaWJ1dGUgdW5zaWdu
ZWQgbG9uZyB0ZXh0dXJlVHlwZTsKKworICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHdpZHRo
OworICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGhlaWdodDsKKyAgICBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyBzYW1wbGVDb3VudDsKKworICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHN0
b3JhZ2VNb2RlOworCisgICAgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgdXNhZ2U7CisKK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmgKaW5k
ZXggYTI0MGY3OWE0M2QuLjkzOTA2OGQwMWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5oCkBAIC00Nyw2ICs0NywxMCBAQCB0eXBlZGVm
IHZvaWQgUGxhdGZvcm1HUFVEZXZpY2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdQ
VUJ1ZmZlcjsKKy8qKiogc3R1YiAqLworY2xhc3MgR1BVQ29tbWFuZFF1ZXVlOworY2xhc3MgR1BV
RHJhd2FibGU7CisvKioqIGVuZCBzdHViICovCiBjbGFzcyBHUFVMaWJyYXJ5OwogY2xhc3MgR1BV
VGV4dHVyZTsKIGNsYXNzIEdQVVRleHR1cmVEZXNjcmlwdG9yOwpAQCAtNjksNiArNzMsMTIgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxHUFVCdWZmZXI+IGNyZWF0ZUJ1ZmZl
ckZyb21EYXRhKEFycmF5QnVmZmVyVmlldyogZGF0YSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPEdQVVRleHR1cmU+IGNyZWF0ZVRleHR1cmUoR1BVVGV4dHVyZURlc2NyaXB0b3IqKTsKIAor
ICAgIC8qKiogc3R1YiAqLworICAgIEdQVUNvbW1hbmRRdWV1ZSogY3JlYXRlQ29tbWFuZFF1ZXVl
KCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEdQVURyYXdhYmxlKiBnZXRGcmFtZWJ1ZmZlcigp
IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKSB7IH0K
KyAgICAvKioqIGVuZCBzdHViICovCisKIHByaXZhdGU6CiAgICAgR1BVRGV2aWNlKCk7CiAKLS0g
CjIuMTEuMCAoQXBwbGUgR2l0LTgwKQoK
</data>
<flag name="review"
          id="325742"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304179</attachid>
            <date>2017-03-11 15:04:42 -0800</date>
            <delta_ts>2017-03-11 15:04:42 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-167952-20170312100350.patch</filename>
            <type>text/plain</type>
            <size>276674</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNzYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NDAxODQ4ZDFjMGZlNWE0OTczMWVjNDgyYTJlMTg1YzhjOGM0ODEzLi45Njc2MWM4MDYwZWQxOWZh
MGMzOWYyOTEyY2I4OTk4NWI5MDUwMzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxNy0wMy0xMSAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAg
ICAgICAgV2ViR1BVIHByb3RvdHlwZSAtIEZyb250LUVuZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3OTUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGVhbiBKYWNrc29uLgorCisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOiBB
ZGQgV2ViR1BVIG9iamVjdHMuCisKIDIwMTctMDMtMTAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBUaGUgSklUcyBzaG91bGQgYmUgYWJsZSB0byBlbWl0IGZhc3Qg
VExTIGxvYWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM5OWI1YzEzODU2ODM5M2FjMDFmMDM5M2IxZWFjMjVh
ZWExYWM0ZS4uM2UzMmYyYzFiYmY1YTY3YjZjNTE2MDhhMjI1MDhkMmY2NzVhNmUzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE3LTAzLTExICBKb24gTGVlICA8am9ubGVlQGFwcGxl
LmNvbT4KKworICAgICAgICBXZWJHUFUgcHJvdG90eXBlIC0gRnJvbnQtRW5kCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjc5NTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGFsbCBv
ZiB0aGUgcmVsZXZhbnQgZnJvbnQtZW5kIGZpbGVzLCBhbmQgYnVpbGRzIHN1Y2Nlc3NmdWxseSB3
aGVuCisgICAgICAgIEVOQUJMRShXRUJHUFUpIGlzIG9mZi4gRm9yIHRoZSBiYWNrLWVuZCBjb21w
b25lbnRzIHRoYXQgYXJlIG5vdCB5ZXQKKyAgICAgICAgaW1wbGVtZW50ZWQsIGEgc3R1YiB3YXMg
YWRkZWQgd2l0aCBhIEZJWE1FLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZTogQWRk
IGFsbCB0aGUgbmV3IElETCBmaWxlcy4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IE5ldyBJREwsIGZyb250LWVuZCBhbmQgZ2VuZXJhdGVkIGZpbGVzLgorCisg
ICAgICAgIEpTIGN1c3RvbSBiaW5kaW5ncy4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RvY3Vt
ZW50Q3VzdG9tLmNwcDogQWRkIFdlYkdQVSBjbGF1c2UgZm9yIGdldENTU0NhbnZhc0NvbnRleHQu
CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0hUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvckN1
c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViR1BVUmVuZGVyaW5n
Q29udGV4dEN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmlzV2ViR1BVVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dFdlYkdQVSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cmVzZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxD
YW52YXNFbGVtZW50Ojppc0dQVSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVu
dDo6Z2V0Q29udGV4dFdlYkdQVSk6IEZvciByZWxlYXNlIGJ1aWxkcywgc3dpdGNoIHRvIEFTU0VS
VF9VTlVTRUQuCisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmlzR1BVKToKKworICAgICAgICAuY3BwLCAuaCwgLmlk
bCBmaWxlcywgd3JhcHBlZCBpbiBXRUJHUFUgY29uZGl0aW9uYWwsIGFuZCBlbmFibGVkIGF0IHJ1
bnRpbWUuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR1BVQnVmZmVyOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRCdWZmZXI6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R1BVQ29tbWFuZFF1ZXVlOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNp
bERlc2NyaXB0b3I6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsU3Rh
dGU6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR1BVRHJhd2FibGU6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR1BVRW51bXM6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rp
b246CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR1BVTGlicmFyeToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHUFVPYmplY3QgKG5vIElETCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R1BVUmVuZGVyQ29tbWFuZEVuY29kZXI6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR1BVUmVu
ZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdQ
VVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJpbmdDb250ZXh0OgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdQVVRleHR1cmU6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZURlc2Ny
aXB0b3I6ICBBZGQgc3R1YnMuCisKIDIwMTctMDMtMTEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgogCiAgICAgICAgIENsZWFudXAgImFkZENvb2tpZSIgYW5kIGl0cyBzb2xlIHVz
ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaAppbmRleCA2NzU0NTBmOGQ1YTVmZTYwOWUyNDhlZmFiZDZkMjZmYzQ4MDMzYzA1Li40NTQ3
OThhYTIwMTk4NWVlMjQ5MjBjZWRmMjBlYzY2Y2EyMzU4N2IxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTEyNiw2ICsxMjYs
MjUgQEAKICAgICBtYWNybyhXZWFrU2V0KVwKICAgICBtYWNybyhXZWJHTDJSZW5kZXJpbmdDb250
ZXh0KSBcCiAgICAgbWFjcm8oV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCkgXAorICAgIG1hY3JvKFdl
YkdQVUJ1ZmZlcikgXAorICAgIG1hY3JvKFdlYkdQVUNvbW1hbmRCdWZmZXIpIFwKKyAgICBtYWNy
byhXZWJHUFVDb21tYW5kUXVldWUpIFwKKyAgICBtYWNybyhXZWJHUFVEZXB0aFN0ZW5jaWxEZXNj
cmlwdG9yKSBcCisgICAgbWFjcm8oV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUpIFwKKyAgICBtYWNy
byhXZWJHUFVEcmF3YWJsZSkgXAorICAgIG1hY3JvKFdlYkdQVUZ1bmN0aW9uKSBcCisgICAgbWFj
cm8oV2ViR1BVTGlicmFyeSkgXAorICAgIG1hY3JvKFdlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVy
KSBcCisgICAgbWFjcm8oV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKSBcCisg
ICAgbWFjcm8oV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IpIFwKKyAg
ICBtYWNybyhXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcikgXAorICAg
IG1hY3JvKFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yKSBcCisgICAgbWFjcm8oV2ViR1BVUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKSBcCisgICAgbWFjcm8oV2ViR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKSBcCisgICAgbWFjcm8oV2ViR1BVUmVuZGVyUGlwZWxp
bmVTdGF0ZSkgXAorICAgIG1hY3JvKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQpIFwKKyAgICBtYWNy
byhXZWJHUFVUZXh0dXJlKSBcCisgICAgbWFjcm8oV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IpIFwK
ICAgICBtYWNybyhXZWJTb2NrZXQpIFwKICAgICBtYWNybyhfX2RlZmluZUdldHRlcl9fKSBcCiAg
ICAgbWFjcm8oX19kZWZpbmVTZXR0ZXJfXykgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggNzY1NTA0YzlkNjlkOTQ4M2JmYzlhYjg2MzllNGQwZmY5ZmY2MGI4ZC4uNTMzOWQ3ZjAw
NTUxMzBhOTY0ODYzMTIxZGFiMDRiMTE4YjRlODA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwOCwgMjAxMiwg
MjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChD
KSAyMDA2LTIwMDgsIDIwMTIsIDIwMTQtMjAxNSwgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2Vpbmln
QGdtYWlsLmNvbT4KICMgQ29weXJpZ2h0IChDKSAyMDA5IENhbWVyb24gTWNDb3JtYWNrIDxjYW1A
bWNjLmlkLmF1PgogIwpAQCAtNTYyLDYgKzU2MiwyNSBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAg
ICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTFVuaWZvcm1Mb2NhdGlvbi5pZGwgXAogICAg
ICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5pZGwgXAogICAg
ICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5pZGwgXAor
ICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR1BVQnVmZmVyLmlkbCBcCisgICAgJChXZWJD
b3JlKS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kQnVmZmVyLmlkbCBcCisgICAgJChXZWJDb3Jl
KS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kUXVldWUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0
bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaWRsIFwKKyAgICAkKFdlYkNv
cmUpL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmlkbCBcCisgICAgJChXZWJD
b3JlKS9odG1sL2NhbnZhcy9XZWJHUFVEcmF3YWJsZS5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRt
bC9jYW52YXMvV2ViR1BVRnVuY3Rpb24uaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFz
L1dlYkdQVUxpYnJhcnkuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdQVVJl
bmRlckNvbW1hbmRFbmNvZGVyLmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJH
UFVSZW5kZXJpbmdDb250ZXh0LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJH
UFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0
bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmlkbCBc
CisgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2ht
ZW50RGVzY3JpcHRvci5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR1BVUmVu
ZGVyUGFzc0Rlc2NyaXB0b3IuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdQ
VVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5pZGwgXAorICAgICQoV2Vi
Q29yZSkvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbCBcCisg
ICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmlkbCBc
CisgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlLmlkbCBcCisgICAgJChX
ZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5pZGwgXAogICAgICQo
V2ViQ29yZSkvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1s
L3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL0Rh
dGFDdWUuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBmYjQ1MTk3NjEzZDhkODNiY2I0NmZjOTcwOTZlYmZjNDYzZjI5MDhm
Li5kODQxNmI5MWIyNzEzZTk0YjIwMDA3MDk1YjZmYjE3YWJiY2UzZmZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDA1LDYg
KzE0MDUsNjcgQEAKIAkJMzE5QUUwNjMxNDJENkIyNDAwNjU2M0ExIC8qIFN0eWxlRmlsdGVyRGF0
YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTlB
RTA2MTE0MkQ2QjI0MDA2NTYzQTEgLyogU3R5bGVGaWx0ZXJEYXRhLmNwcCAqLzsgfTsKIAkJMzE5
QUUwNjQxNDJENkIyNDAwNjU2M0ExIC8qIFN0eWxlRmlsdGVyRGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE5QUUwNjIxNDJENkIyNDAwNjU2M0Ex
IC8qIFN0eWxlRmlsdGVyRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTMxOUZCRDVGMTVEMkY0NjQwMDk2NDBBNiAvKiBDYWNoZWRJbWFnZUNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE5
RkJENUQxNUQyRjQ0NDAwOTY0MEE2IC8qIENhY2hlZEltYWdlQ2xpZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzFBMDg5MDQxRTczN0Q1MTAw
M0I2NjA5IC8qIFdlYkdQVUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzMUEwODhDNjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVQnVmZmVy
LmNwcCAqLzsgfTsKKwkJMzFBMDg5MDUxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVUNvbW1hbmRC
dWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzFBMDg4QzkxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuY3BwICovOyB9
OworCQkzMUEwODkwNjFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVQ29tbWFuZFF1ZXVlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OENDMUU3
MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVDb21tYW5kUXVldWUuY3BwICovOyB9OworCQkzMUEwODkw
NzFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODhDRjFFNzM3
QjREMDAzQjY2MDkgLyogV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAgKi87IH07CisJ
CTMxQTA4OTA4MUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODhEMjFF
NzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwICovOyB9OworCQkz
MUEwODkwOTFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVRHJhd2FibGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg4RDUxRTczN0I0RDAwM0I2
NjA5IC8qIFdlYkdQVURyYXdhYmxlLmNwcCAqLzsgfTsKKwkJMzFBMDg5MEExRTczN0Q1MTAwM0I2
NjA5IC8qIFdlYkdQVUVudW1zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMxQTA4OEQ4MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVFbnVtcy5jcHAg
Ki87IH07CisJCTMxQTA4OTBCMUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVGdW5jdGlvbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODhEQjFF
NzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRnVuY3Rpb24uY3BwICovOyB9OworCQkzMUEwODkwQzFF
NzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVTGlicmFyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODhERTFFNzM3QjREMDAzQjY2MDkgLyogV2Vi
R1BVTGlicmFyeS5jcHAgKi87IH07CisJCTMxQTA4OTBEMUU3MzdENTEwMDNCNjYwOSAvKiBXZWJH
UFVPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzFBMDg4RTExRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVU9iamVjdC5jcHAgKi87IH07CisJ
CTMxQTA4OTBFMUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODhF
MzFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwICovOyB9
OworCQkzMUEwODkwRjFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODhF
NjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAgKi87IH07CisJ
CTMxQTA4OTEwMUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzFBMDg4RTkxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50
RGVzY3JpcHRvci5jcHAgKi87IH07CisJCTMxQTA4OTExMUU3MzdENTEwMDNCNjYwOSAvKiBXZWJH
UFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODhFQzFFNzM3QjREMDAzQjY2MDkg
LyogV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovOyB9Owor
CQkzMUEwODkxMjFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNo
bWVudERlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzFBMDg4RUYxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NEZXB0
aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLzsgfTsKKwkJMzFBMDg5MTMxRTczN0Q1MTAwM0I2
NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OEYyMUU3MzdCNEQwMDNCNjYwOSAvKiBX
ZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAgKi87IH07CisJCTMxQTA4OTE0MUU3MzdENTEw
MDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg4
RjUxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvci5jcHAgKi87IH07CisJCTMxQTA4OTE1MUU3MzdENTEwMDNCNjYwOSAvKiBXZWJH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg4RjgxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAgKi87IH07CisJCTMxQTA4OTE2MUU3MzdENTEwMDNC
NjYwOSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OEZCMUU3MzdCNEQwMDNCNjYwOSAvKiBX
ZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcCAqLzsgfTsKKwkJMzFBMDg5MTcxRTczN0Q1MTAw
M0I2NjA5IC8qIFdlYkdQVVRleHR1cmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzFBMDg4RkUxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVRleHR1
cmUuY3BwICovOyB9OworCQkzMUEwODkxODFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVVGV4dHVy
ZURlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzFBMDg5MDExRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9y
LmNwcCAqLzsgfTsKKwkJMzFBMDg5MTkxRTczN0Q1NTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVy
aW5nQ29udGV4dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMUEwODhDNDFFNzM3QjJDMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJpbmdD
b250ZXh0Q3VzdG9tLmNwcCAqLzsgfTsKKwkJMzFBMDg5MUExRTczN0Q1NTAwM0I2NjA5IC8qIEpT
V2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yQ3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OEM1MUU3MzdCMkMwMDNC
NjYwOSAvKiBKU1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvckN1c3RvbS5jcHAg
Ki87IH07CisJCTMxQTA4OTU0MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUJ1ZmZlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODkxQjFF
NzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVCdWZmZXIuY3BwICovOyB9OworCQkzMUEwODk1NjFF
NzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTFEMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dl
YkdQVUJ1ZmZlci5oICovOyB9OworCQkzMUEwODk1NzFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJH
UFVDb21tYW5kQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxQTA4OTFFMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUNvbW1hbmRCdWZm
ZXIuY3BwICovOyB9OworCQkzMUEwODk1OTFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVDb21t
YW5kQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMUEwODkyMDFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVDb21tYW5kQnVmZmVyLmggKi87
IH07CisJCTMxQTA4OTVBMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUNvbW1hbmRRdWV1ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODky
MTFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVDb21tYW5kUXVldWUuY3BwICovOyB9OworCQkz
MUEwODk1QzFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVDb21tYW5kUXVldWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTIzMUU3MzhENTkw
MDNCNjYwOSAvKiBKU1dlYkdQVUNvbW1hbmRRdWV1ZS5oICovOyB9OworCQkzMUEwODk1RDFFNzM4
RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTI0MUU3MzhENTkw
MDNCNjYwOSAvKiBKU1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwICovOyB9OworCQkz
MUEwODk1RjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODky
NjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmggKi87
IH07CisJCTMxQTA4OTYwMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVURlcHRoU3RlbmNpbFN0
YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
QTA4OTI3MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcCAq
LzsgfTsKKwkJMzFBMDg5NjIxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVRGVwdGhTdGVuY2ls
U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
QTA4OTI5MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmggKi87
IH07CisJCTMxQTA4OTYzMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVURyYXdhYmxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTJBMUU3
MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVURyYXdhYmxlLmNwcCAqLzsgfTsKKwkJMzFBMDg5NjUx
RTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVRHJhd2FibGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTJDMUU3MzhENTkwMDNCNjYwOSAvKiBK
U1dlYkdQVURyYXdhYmxlLmggKi87IH07CisJCTMxQTA4OTY2MUU3MzhENTkwMDNCNjYwOSAvKiBK
U1dlYkdQVUZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxQTA4OTJEMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUZ1bmN0aW9uLmNw
cCAqLzsgfTsKKwkJMzFBMDg5NjgxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVRnVuY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTJG
MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUZ1bmN0aW9uLmggKi87IH07CisJCTMxQTA4OTY5
MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUxpYnJhcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5MzAxRTczOEQ1OTAwM0I2NjA5IC8q
IEpTV2ViR1BVTGlicmFyeS5jcHAgKi87IH07CisJCTMxQTA4OTZCMUU3MzhENTkwMDNCNjYwOSAv
KiBKU1dlYkdQVUxpYnJhcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxQTA4OTMyMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUxpYnJhcnkuaCAq
LzsgfTsKKwkJMzFBMDg5NkMxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyQ29tbWFu
ZEVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzFBMDg5MzMxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29k
ZXIuY3BwICovOyB9OworCQkzMUEwODk2RTFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5k
ZXJDb21tYW5kRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzFBMDg5MzUxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyQ29tbWFu
ZEVuY29kZXIuaCAqLzsgfTsKKwkJMzFBMDg5NkYxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BV
UmVuZGVyaW5nQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMUEwODkzNjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJpbmdD
b250ZXh0LmNwcCAqLzsgfTsKKwkJMzFBMDg5NzExRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BV
UmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzFBMDg5MzgxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dC5oICovOyB9OworCQkzMUEwODk3MjFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5k
ZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5MzkxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BV
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLzsgfTsKKwkJMzFBMDg5NzQxRTcz
OEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODkzQjFF
NzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3Iu
aCAqLzsgfTsKKwkJMzFBMDg5NzUxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5M0MxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BV
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovOyB9OworCQkzMUEwODk3
NzFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzFBMDg5M0UxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IuaCAqLzsgfTsKKwkJMzFBMDg5NzgxRTczOEQ1QTAwM0I2NjA5IC8qIEpT
V2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5M0YxRTczOEQ1OTAwM0I2
NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICov
OyB9OworCQkzMUEwODk3QTFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzFBMDg5NDExRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVy
UGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLzsgfTsKKwkJMzFBMDg5N0IxRTczOEQ1
QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5NDIxRTczOEQ1OTAwM0I2
NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwICovOyB9OworCQkzMUEwODk3
RDFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5NDQxRTczOEQ1
OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLzsgfTsKKwkJMzFB
MDg5N0UxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxQTA4OTQ1MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi87IH07CisJCTMxQTA4OTgwMUU3MzhE
NUEwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFB
MDg5NDcxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yLmggKi87IH07CisJCTMxQTA4OTgxMUU3MzhENUEwMDNCNjYwOSAvKiBK
U1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEwODk0ODFFNzM4RDU5MDAzQjY2MDkgLyogSlNX
ZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwICovOyB9OworCQkzMUEwODk4MzFFNzM4
RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTRBMUU3MzhENTkw
MDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovOyB9OworCQkz
MUEwODk4NDFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTRC
MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwICovOyB9
OworCQkzMUEwODk4NjFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZVN0
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEw
ODk0RDFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmggKi87
IH07CisJCTMxQTA4OTg3MUU3MzhENUEwMDNCNjYwOSAvKiBKU1dlYkdQVVRleHR1cmUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5NEUxRTcz
OEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVVGV4dHVyZS5jcHAgKi87IH07CisJCTMxQTA4OTg5MUU3
MzhENUEwMDNCNjYwOSAvKiBKU1dlYkdQVVRleHR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTA4OTUwMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dl
YkdQVVRleHR1cmUuaCAqLzsgfTsKKwkJMzFBMDg5OEExRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2Vi
R1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzFBMDg5NTExRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVVGV4dHVy
ZURlc2NyaXB0b3IuY3BwICovOyB9OworCQkzMUEwODk4QzFFNzM4RDVBMDAzQjY2MDkgLyogSlNX
ZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzFBMDg5NTMxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVVGV4dHVy
ZURlc2NyaXB0b3IuaCAqLzsgfTsKIAkJMzFBNzk1QzYxODg4QkFEQzAwMzgyRjkwIC8qIEpTQU5H
TEVJbnN0YW5jZWRBcnJheXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzFBNzk1QzQxODg4QkFEMTAwMzgyRjkwIC8qIEpTQU5HTEVJbnN0YW5jZWRB
cnJheXMuY3BwICovOyB9OwogCQkzMUE3OTVDNzE4ODhCQ0IyMDAzODJGOTAgLyogQU5HTEVJbnN0
YW5jZWRBcnJheXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMxQTc5NUMyMTg4OEI3MjQwMDM4MkY5MCAvKiBBTkdMRUluc3RhbmNlZEFycmF5cy5oICov
OyB9OwogCQkzMUE3OTVDODE4ODhCQ0I1MDAzODJGOTAgLyogQU5HTEVJbnN0YW5jZWRBcnJheXMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBNzk1
QzExODg4QjcyNDAwMzgyRjkwIC8qIEFOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcCAqLzsgfTsKQEAg
LTg3NzksNiArODg0MCwxMDggQEAKIAkJMzE5QUUwNjExNDJENkIyNDAwNjU2M0ExIC8qIFN0eWxl
RmlsdGVyRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHls
ZUZpbHRlckRhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTlBRTA2MjE0
MkQ2QjI0MDA2NTYzQTEgLyogU3R5bGVGaWx0ZXJEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0eWxlRmlsdGVyRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzMTlGQkQ1RDE1RDJGNDQ0MDA5NjQwQTYgLyogQ2FjaGVkSW1hZ2VDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkSW1hZ2VDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4QzQxRTczN0IyQzAwM0I2NjA5IC8qIEpTV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1dlYkdQVVJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkzMUEwODhDNTFFNzM3QjJDMDAzQjY2MDkgLyogSlNXZWJHUFVS
ZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3JDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0
b3JDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhDNjFFNzM3
QjREMDAzQjY2MDkgLyogV2ViR1BVQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYkdQVUJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTMxQTA4OEM3MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVCdWZmZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTMxQTA4OEM4MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVCdWZmZXIuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVUJ1ZmZlci5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTMxQTA4OEM5MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVDb21tYW5k
QnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUNv
bW1hbmRCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhDQTFF
NzM3QjREMDAzQjY2MDkgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJHUFVDb21tYW5kQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTMxQTA4OENCMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVDb21tYW5kQnVm
ZmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVDb21tYW5kQnVmZmVyLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4Q0MxRTczN0I0RDAwM0I2NjA5IC8q
IFdlYkdQVUNvbW1hbmRRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJHUFVDb21tYW5kUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzMUEwODhDRDFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVQ29tbWFuZFF1ZXVlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUNvbW1hbmRRdWV1ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhDRTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BV
Q29tbWFuZFF1ZXVlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVDb21tYW5kUXVl
dWUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhDRjFFNzM3QjREMDAz
QjY2MDkgLyogV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RDAxRTczN0I0RDAwM0I2NjA5IC8q
IFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzMUEwODhEMTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRGVwdGhTdGVu
Y2lsRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVRGVwdGhTdGVu
Y2lsRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEQy
MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEQzMUU3MzdCNEQwMDNCNjYwOSAv
KiBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzMUEwODhENDFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RDUxRTczN0I0RDAwM0I2NjA5IC8q
IFdlYkdQVURyYXdhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkdQVURyYXdhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4
RDYxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVURyYXdhYmxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkdQVURyYXdhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMxQTA4OEQ3MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVEcmF3YWJsZS5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVRHJhd2FibGUuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzMUEwODhEODFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRW51bXMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVRW51bXMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhEOTFFNzM3QjREMDAzQjY2MDkgLyog
V2ViR1BVRW51bXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVRW51
bXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4REExRTczN0I0RDAwM0I2
NjA5IC8qIFdlYkdQVUVudW1zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVFbnVt
cy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OERCMUU3MzdCNEQwMDNC
NjYwOSAvKiBXZWJHUFVGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJHUFVGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTMxQTA4OERDMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVGdW5jdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzMUEwODhERDFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRnVuY3Rpb24u
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVUZ1bmN0aW9uLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4REUxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUxp
YnJhcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVTGli
cmFyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OERGMUU3MzdCNEQw
MDNCNjYwOSAvKiBXZWJHUFVMaWJyYXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkdQVUxpYnJhcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4
RTAxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUxpYnJhcnkuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFdlYkdQVUxpYnJhcnkuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkz
MUEwODhFMTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTMxQTA4OEUyMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVPYmplY3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVT2JqZWN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEUzMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJH
UFVSZW5kZXJDb21tYW5kRW5jb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTMxQTA4OEU0MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJDb21t
YW5kRW5jb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVSZW5k
ZXJDb21tYW5kRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhF
NTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RTYxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQ
VVJlbmRlcmluZ0NvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTMxQTA4OEU3MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RTgxRTczN0I0RDAwM0I2NjA5
IC8qIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdl
YkdQVVJlbmRlcmluZ0NvbnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkz
MUEwODhFOTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVJl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMxQTA4OEVBMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BV
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMxQTA4OEVCMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlclBh
c3NBdHRhY2htZW50RGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTMxQTA4OEVDMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEVEMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhFRTFFNzM3QjREMDAzQjY2MDkgLyog
V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RUYxRTczN0I0RDAwM0I2NjA5
IC8qIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4
RjAxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNj
cmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTMxQTA4OEYxMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVy
UGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzMUEwODhGMjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVUmVu
ZGVyUGFzc0Rlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEw
ODhGMzFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RjQxRTczN0I0RDAwM0I2NjA5
IC8qIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMxQTA4OEY1MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RjYxRTczN0I0RDAwM0I2NjA5
IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg4
RjcxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzFBMDg4RjgxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzMUEwODhGOTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhGQTFF
NzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhGQjFFNzM3QjREMDAzQjY2MDkgLyog
V2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzFBMDg4RkMxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBp
cGVsaW5lU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVu
ZGVyUGlwZWxpbmVTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhG
RDFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OEZFMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVU
ZXh0dXJlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVRl
eHR1cmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODhGRjFFNzM3QjRE
MDAzQjY2MDkgLyogV2ViR1BVVGV4dHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJHUFVUZXh0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4
OTAwMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVUZXh0dXJlLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBXZWJHUFVUZXh0dXJlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MzFBMDg5MDExRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVRleHR1cmVEZXNjcmlw
dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5MDIxRTczN0I0RDAw
M0I2NjA5IC8qIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTMxQTA4OTAzMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVUZXh0dXJlRGVz
Y3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVVGV4dHVyZURlc2NyaXB0
b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODkxQjFFNzM4RDU5MDAz
QjY2MDkgLyogSlNXZWJHUFVCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gSlNXZWJHUFVCdWZmZXIuY3BwOyBwYXRoID0gSlNXZWJHUFVCdWZmZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODkxRDFFNzM4RDU5MDAzQjY2MDkgLyog
SlNXZWJHUFVCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJH
UFVCdWZmZXIuaDsgcGF0aCA9IEpTV2ViR1BVQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTMxQTA4OTFFMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUNvbW1hbmRCdWZm
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNXZWJHUFVDb21t
YW5kQnVmZmVyLmNwcDsgcGF0aCA9IEpTV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTIwMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQ
VUNvbW1hbmRCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJH
UFVDb21tYW5kQnVmZmVyLmg7IHBhdGggPSBKU1dlYkdQVUNvbW1hbmRCdWZmZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5MjExRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2Vi
R1BVQ29tbWFuZFF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IEpTV2ViR1BVQ29tbWFuZFF1ZXVlLmNwcDsgcGF0aCA9IEpTV2ViR1BVQ29tbWFuZFF1ZXVlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5MjMxRTczOEQ1OTAwM0I2NjA5
IC8qIEpTV2ViR1BVQ29tbWFuZFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEpTV2ViR1BVQ29tbWFuZFF1ZXVlLmg7IHBhdGggPSBKU1dlYkdQVUNvbW1hbmRRdWV1ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODkyNDFFNzM4RDU5MDAzQjY2MDkg
LyogSlNXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEpTV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHA7IHBh
dGggPSBKU1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzMUEwODkyNjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVEZXB0aFN0
ZW5jaWxEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2Vi
R1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oOyBwYXRoID0gSlNXZWJHUFVEZXB0aFN0ZW5jaWxE
ZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTI3MUU3MzhE
NTkwMDNCNjYwOSAvKiBKU1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwOyBw
YXRoID0gSlNXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTMxQTA4OTI5MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVURlcHRoU3RlbmNp
bFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2ViR1BVRGVwdGhT
dGVuY2lsU3RhdGUuaDsgcGF0aCA9IEpTV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5MkExRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2Vi
R1BVRHJhd2FibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNX
ZWJHUFVEcmF3YWJsZS5jcHA7IHBhdGggPSBKU1dlYkdQVURyYXdhYmxlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5MkMxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BV
RHJhd2FibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJHUFVEcmF3
YWJsZS5oOyBwYXRoID0gSlNXZWJHUFVEcmF3YWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzMUEwODkyRDFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVGdW5jdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU1dlYkdQVUZ1bmN0aW9uLmNw
cDsgcGF0aCA9IEpTV2ViR1BVRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzMUEwODkyRjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVGdW5jdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU1dlYkdQVUZ1bmN0aW9uLmg7IHBhdGggPSBK
U1dlYkdQVUZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTMw
MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUxpYnJhcnkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gSlNXZWJHUFVMaWJyYXJ5LmNwcDsgcGF0aCA9IEpTV2ViR1BV
TGlicmFyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTMyMUU3MzhE
NTkwMDNCNjYwOSAvKiBKU1dlYkdQVUxpYnJhcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gSlNXZWJHUFVMaWJyYXJ5Lmg7IHBhdGggPSBKU1dlYkdQVUxpYnJhcnkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5MzMxRTczOEQ1OTAwM0I2NjA5IC8qIEpT
V2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gSlNXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5jcHA7IHBhdGggPSBKU1dl
YkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzFBMDg5MzUxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29k
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJHUFVSZW5kZXJDb21t
YW5kRW5jb2Rlci5oOyBwYXRoID0gSlNXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODkzNjFFNzM4RDU5MDAzQjY2MDkgLyogSlNX
ZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHA7IHBhdGggPSBKU1dlYkdQVVJlbmRl
cmluZ0NvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODkzODFF
NzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oOyBwYXRoID0g
SlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTMxQTA4OTM5MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50
RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU1dl
YkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHA7IHBhdGggPSBKU1dlYkdQVVJl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMxQTA4OTNCMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU1dl
YkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oOyBwYXRoID0gSlNXZWJHUFVSZW5k
ZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzFBMDg5M0MxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gSlNXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHA7IHBhdGgg
PSBKU1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5M0UxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2Vi
R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvci5oOyBwYXRoID0gSlNXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODkzRjFFNzM4RDU5MDAzQjY2
MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU1dlYkdQVVJlbmRlclBhc3NEZXB0
aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcDsgcGF0aCA9IEpTV2ViR1BVUmVuZGVyUGFzc0RlcHRo
QXR0YWNobWVudERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkz
MUEwODk0MTFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2ht
ZW50RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU1dlYkdQ
VVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmg7IHBhdGggPSBKU1dlYkdQVVJl
bmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTMxQTA4OTQyMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBhc3NE
ZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTV2Vi
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwOyBwYXRoID0gSlNXZWJHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTQ0MUU3MzhE
NTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaDsgcGF0
aCA9IEpTV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMzFBMDg5NDUxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yLmNwcDsgcGF0aCA9IEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5NDcxRTczOEQ1
OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2ViR1BVUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmg7IHBhdGggPSBKU1dlYkdQVVJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzMUEwODk0ODFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNX
ZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwOyBwYXRoID0gSlNXZWJHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEw
ODk0QTFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IuaDsgcGF0aCA9IEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTA4OTRCMUU3MzhENTkwMDNCNjYwOSAv
KiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gSlNXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcDsgcGF0aCA9IEpT
V2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTMxQTA4OTREMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lU3Rh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJHUFVSZW5kZXJQaXBl
bGluZVN0YXRlLmg7IHBhdGggPSBKU1dlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5NEUxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2Vi
R1BVVGV4dHVyZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU1dl
YkdQVVRleHR1cmUuY3BwOyBwYXRoID0gSlNXZWJHUFVUZXh0dXJlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMDg5NTAxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVVGV4
dHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU1dlYkdQVVRleHR1cmUu
aDsgcGF0aCA9IEpTV2ViR1BVVGV4dHVyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzMUEwODk1MTFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU1dlYkdQVVRleHR1cmVE
ZXNjcmlwdG9yLmNwcDsgcGF0aCA9IEpTV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEwODk1MzFFNzM4RDU5MDAzQjY2MDkgLyogSlNX
ZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBKU1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmg7IHBhdGggPSBKU1dlYkdQVVRleHR1cmVEZXNj
cmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxQTc5NUMxMTg4OEI3MjQw
MDM4MkY5MCAvKiBBTkdMRUluc3RhbmNlZEFycmF5cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBTkdMRUluc3RhbmNlZEFycmF5cy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMxQTc5NUMyMTg4OEI3MjQwMDM4MkY5MCAvKiBBTkdMRUluc3RhbmNl
ZEFycmF5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBTkdMRUluc3RhbmNl
ZEFycmF5cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUE3OTVDMzE4ODhCNzI0
MDAzODJGOTAgLyogQU5HTEVJbnN0YW5jZWRBcnJheXMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IEFOR0xFSW5zdGFuY2VkQXJyYXlzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE3NTQ3LDYgKzE3NzEwLDY4IEBACiAJCQkJNzdBMTdBNzQxMkYyODY0MjAwNEUwMkY2IC8q
IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwICovLAogCQkJCTc3QTE3QTc1MTJGMjg2NDIw
MDRFMDJGNiAvKiBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmggKi8sCiAJCQkJNzdBMTdBNzYx
MkYyODY0MjAwNEUwMkY2IC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaWRsICovLAorCQkJ
CTMxQTA4OEM2MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVCdWZmZXIuY3BwICovLAorCQkJCTMx
QTA4OEM3MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVCdWZmZXIuaCAqLywKKwkJCQkzMUEwODhD
ODFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVQnVmZmVyLmlkbCAqLywKKwkJCQkzMUEwODhDOTFF
NzM3QjREMDAzQjY2MDkgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgKi8sCisJCQkJMzFBMDg4
Q0ExRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuaCAqLywKKwkJCQkzMUEw
ODhDQjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwgKi8sCisJCQkJ
MzFBMDg4Q0MxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUNvbW1hbmRRdWV1ZS5jcHAgKi8sCisJ
CQkJMzFBMDg4Q0QxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUNvbW1hbmRRdWV1ZS5oICovLAor
CQkJCTMxQTA4OENFMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVDb21tYW5kUXVldWUuaWRsICov
LAorCQkJCTMxQTA4OENGMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNj
cmlwdG9yLmNwcCAqLywKKwkJCQkzMUEwODhEMDFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRGVw
dGhTdGVuY2lsRGVzY3JpcHRvci5oICovLAorCQkJCTMxQTA4OEQxMUU3MzdCNEQwMDNCNjYwOSAv
KiBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmlkbCAqLywKKwkJCQkzMUEwODhEMjFFNzM3
QjREMDAzQjY2MDkgLyogV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwICovLAorCQkJCTMxQTA4
OEQzMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oICovLAorCQkJ
CTMxQTA4OEQ0MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5pZGwg
Ki8sCisJCQkJMzFBMDg4RDUxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVURyYXdhYmxlLmNwcCAq
LywKKwkJCQkzMUEwODhENjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRHJhd2FibGUuaCAqLywK
KwkJCQkzMUEwODhENzFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRHJhd2FibGUuaWRsICovLAor
CQkJCTMxQTA4OEQ4MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVFbnVtcy5jcHAgKi8sCisJCQkJ
MzFBMDg4RDkxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUVudW1zLmggKi8sCisJCQkJMzFBMDg4
REExRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVUVudW1zLmlkbCAqLywKKwkJCQkzMUEwODhEQjFF
NzM3QjREMDAzQjY2MDkgLyogV2ViR1BVRnVuY3Rpb24uY3BwICovLAorCQkJCTMxQTA4OERDMUU3
MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVGdW5jdGlvbi5oICovLAorCQkJCTMxQTA4OEREMUU3MzdC
NEQwMDNCNjYwOSAvKiBXZWJHUFVGdW5jdGlvbi5pZGwgKi8sCisJCQkJMzFBMDg4REUxRTczN0I0
RDAwM0I2NjA5IC8qIFdlYkdQVUxpYnJhcnkuY3BwICovLAorCQkJCTMxQTA4OERGMUU3MzdCNEQw
MDNCNjYwOSAvKiBXZWJHUFVMaWJyYXJ5LmggKi8sCisJCQkJMzFBMDg4RTAxRTczN0I0RDAwM0I2
NjA5IC8qIFdlYkdQVUxpYnJhcnkuaWRsICovLAorCQkJCTMxQTA4OEUxMUU3MzdCNEQwMDNCNjYw
OSAvKiBXZWJHUFVPYmplY3QuY3BwICovLAorCQkJCTMxQTA4OEUyMUU3MzdCNEQwMDNCNjYwOSAv
KiBXZWJHUFVPYmplY3QuaCAqLywKKwkJCQkzMUEwODhFMzFFNzM3QjREMDAzQjY2MDkgLyogV2Vi
R1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwICovLAorCQkJCTMxQTA4OEU0MUU3MzdCNEQwMDNC
NjYwOSAvKiBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5oICovLAorCQkJCTMxQTA4OEU1MUU3
MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5pZGwgKi8sCisJCQkJ
MzFBMDg4RTYxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwICov
LAorCQkJCTMxQTA4OEU3MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0
LmggKi8sCisJCQkJMzFBMDg4RTgxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlcmluZ0Nv
bnRleHQuaWRsICovLAorCQkJCTMxQTA4OEU5MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5k
ZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovLAorCQkJCTMxQTA4OEVBMUU3MzdCNEQw
MDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLywKKwkJ
CQkzMUEwODhFQjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnRE
ZXNjcmlwdG9yLmlkbCAqLywKKwkJCQkzMUEwODhFQzFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BV
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovLAorCQkJCTMxQTA4OEVE
MUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvci5oICovLAorCQkJCTMxQTA4OEVFMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5pZGwgKi8sCisJCQkJMzFBMDg4RUYxRTczN0I0
RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNw
cCAqLywKKwkJCQkzMUEwODhGMDFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLywKKwkJCQkzMUEwODhGMTFFNzM3QjREMDAzQjY2
MDkgLyogV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaWRsICovLAor
CQkJCTMxQTA4OEYyMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRv
ci5jcHAgKi8sCisJCQkJMzFBMDg4RjMxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yLmggKi8sCisJCQkJMzFBMDg4RjQxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQ
VVJlbmRlclBhc3NEZXNjcmlwdG9yLmlkbCAqLywKKwkJCQkzMUEwODhGNTFFNzM3QjREMDAzQjY2
MDkgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAq
LywKKwkJCQkzMUEwODhGNjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8sCisJCQkJMzFBMDg4RjcxRTczN0I0RDAwM0I2
NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5pZGwg
Ki8sCisJCQkJMzFBMDg4RjgxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzFBMDg4RjkxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovLAorCQkJCTMxQTA4OEZBMUU3MzdCNEQwMDNC
NjYwOSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsICovLAorCQkJCTMxQTA4
OEZCMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcCAqLywK
KwkJCQkzMUEwODhGQzFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0
ZS5oICovLAorCQkJCTMxQTA4OEZEMUU3MzdCNEQwMDNCNjYwOSAvKiBXZWJHUFVSZW5kZXJQaXBl
bGluZVN0YXRlLmlkbCAqLywKKwkJCQkzMUEwODhGRTFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BV
VGV4dHVyZS5jcHAgKi8sCisJCQkJMzFBMDg4RkYxRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVRl
eHR1cmUuaCAqLywKKwkJCQkzMUEwODkwMDFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BVVGV4dHVy
ZS5pZGwgKi8sCisJCQkJMzFBMDg5MDExRTczN0I0RDAwM0I2NjA5IC8qIFdlYkdQVVRleHR1cmVE
ZXNjcmlwdG9yLmNwcCAqLywKKwkJCQkzMUEwODkwMjFFNzM3QjREMDAzQjY2MDkgLyogV2ViR1BV
VGV4dHVyZURlc2NyaXB0b3IuaCAqLywKKwkJCQkzMUEwODkwMzFFNzM3QjREMDAzQjY2MDkgLyog
V2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsICovLAogCQkJKTsKIAkJCXBhdGggPSBjYW52YXM7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjA4ODcsNiArMjExMTIsNDQgQEAKIAkJ
CQk2Rjk5NUEzMDFBNzA4MzM3MDBBNzM1RjQgLyogSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0Lmgg
Ki8sCiAJCQkJNzdFRjYyRjExMkY5REI3NDAwQzc3QkQyIC8qIEpTV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUy5jcHAgKi8sCiAJCQkJNzdFRjYyRjIxMkY5REI3NDAwQzc3QkQyIC8qIEpTV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUy5oICovLAorCQkJCTMxQTA4OTFCMUU3MzhENTkwMDNCNjYwOSAv
KiBKU1dlYkdQVUJ1ZmZlci5jcHAgKi8sCisJCQkJMzFBMDg5MUQxRTczOEQ1OTAwM0I2NjA5IC8q
IEpTV2ViR1BVQnVmZmVyLmggKi8sCisJCQkJMzFBMDg5MUUxRTczOEQ1OTAwM0I2NjA5IC8qIEpT
V2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgKi8sCisJCQkJMzFBMDg5MjAxRTczOEQ1OTAwM0I2NjA5
IC8qIEpTV2ViR1BVQ29tbWFuZEJ1ZmZlci5oICovLAorCQkJCTMxQTA4OTIxMUU3MzhENTkwMDNC
NjYwOSAvKiBKU1dlYkdQVUNvbW1hbmRRdWV1ZS5jcHAgKi8sCisJCQkJMzFBMDg5MjMxRTczOEQ1
OTAwM0I2NjA5IC8qIEpTV2ViR1BVQ29tbWFuZFF1ZXVlLmggKi8sCisJCQkJMzFBMDg5MjQxRTcz
OEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAgKi8sCisJ
CQkJMzFBMDg5MjYxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3Jp
cHRvci5oICovLAorCQkJCTMxQTA4OTI3MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVURlcHRo
U3RlbmNpbFN0YXRlLmNwcCAqLywKKwkJCQkzMUEwODkyOTFFNzM4RDU5MDAzQjY2MDkgLyogSlNX
ZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oICovLAorCQkJCTMxQTA4OTJBMUU3MzhENTkwMDNCNjYw
OSAvKiBKU1dlYkdQVURyYXdhYmxlLmNwcCAqLywKKwkJCQkzMUEwODkyQzFFNzM4RDU5MDAzQjY2
MDkgLyogSlNXZWJHUFVEcmF3YWJsZS5oICovLAorCQkJCTMxQTA4OTJEMUU3MzhENTkwMDNCNjYw
OSAvKiBKU1dlYkdQVUZ1bmN0aW9uLmNwcCAqLywKKwkJCQkzMUEwODkyRjFFNzM4RDU5MDAzQjY2
MDkgLyogSlNXZWJHUFVGdW5jdGlvbi5oICovLAorCQkJCTMxQTA4OTMwMUU3MzhENTkwMDNCNjYw
OSAvKiBKU1dlYkdQVUxpYnJhcnkuY3BwICovLAorCQkJCTMxQTA4OTMyMUU3MzhENTkwMDNCNjYw
OSAvKiBKU1dlYkdQVUxpYnJhcnkuaCAqLywKKwkJCQkzMUEwODkzMzFFNzM4RDU5MDAzQjY2MDkg
LyogSlNXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5jcHAgKi8sCisJCQkJMzFBMDg5MzUxRTcz
OEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaCAqLywKKwkJCQkz
MUEwODkzNjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcCAq
LywKKwkJCQkzMUEwODkzODFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJpbmdDb250
ZXh0LmggKi8sCisJCQkJMzFBMDg5MzkxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLywKKwkJCQkzMUEwODkzQjFFNzM4RDU5MDAz
QjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLywKKwkJ
CQkzMUEwODkzQzFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzFBMDg5M0UxRTczOEQ1OTAwM0I2NjA5IC8q
IEpTV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLywKKwkJCQkz
MUEwODkzRjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2ht
ZW50RGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzFBMDg5NDExRTczOEQ1OTAwM0I2NjA5IC8qIEpT
V2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLywKKwkJCQkzMUEw
ODk0MjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAg
Ki8sCisJCQkJMzFBMDg5NDQxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3IuaCAqLywKKwkJCQkzMUEwODk0NTFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovLAorCQkJCTMxQTA4
OTQ3MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvci5oICovLAorCQkJCTMxQTA4OTQ4MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dl
YkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzFBMDg5NEExRTczOEQ1
OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8sCisJCQkJ
MzFBMDg5NEIxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5j
cHAgKi8sCisJCQkJMzFBMDg5NEQxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGlw
ZWxpbmVTdGF0ZS5oICovLAorCQkJCTMxQTA4OTRFMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQ
VVRleHR1cmUuY3BwICovLAorCQkJCTMxQTA4OTUwMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQ
VVRleHR1cmUuaCAqLywKKwkJCQkzMUEwODk1MTFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVU
ZXh0dXJlRGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzFBMDg5NTMxRTczOEQ1OTAwM0I2NjA5IC8q
IEpTV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaCAqLywKIAkJCQkwRkRBN0MyNDE4ODMzMzMyMDBD
OTU0QjUgLyogSlNXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcCAqLywK
IAkJCQkwRkRBN0MyNTE4ODMzMzMyMDBDOTU0QjUgLyogSlNXZWJLaXRQbGF5YmFja1RhcmdldEF2
YWlsYWJpbGl0eUV2ZW50LmggKi8sCiAJCQkpOwpAQCAtMjI4NTMsOCArMjMxMTYsOCBAQAogCQkJ
CTdBNzRFQ0JDMTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3Rv
bS5jcHAgKi8sCiAJCQkJQkNFMUM0M0YwRDk4MzBGNDAwM0IwMkYyIC8qIEpTTG9jYXRpb25DdXN0
b20uY3BwICovLAogCQkJCTJEOUJGNzQ4MURCRkRERjgwMDdBN0Q5OSAvKiBKU01lZGlhS2V5U2Vz
c2lvbkN1c3RvbS5jcHAgKi8sCi0JCQkJNDEwQjdFNzExMDQ1RkFCMDAwRDgyMjRGIC8qIEpTTWVz
c2FnZUV2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQk0MTVDREFGNjFFNkNFMEQzMDA0RjExRUUgLyog
SlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcCAqLywKKwkJCQk0MTBCN0U3MTEwNDVGQUIwMDBE
ODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovLAogCQkJCUExRTVCMzFEMUFBRDFE
QTQwMDZFQkVGQiAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDdXN0b20uY3BwICovLAog
CQkJCUM2RjA5MTdFMTQzQTJCQjkwMDY4NTg0OSAvKiBKU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20u
Y3BwICovLAogCQkJCUJDRDlDMjYwMEMxN0FBNjcwMDVDOTBBMiAvKiBKU05vZGVDdXN0b20uY3Bw
ICovLApAQCAtMjI4NjgsNiArMjMxMzEsOCBAQAogCQkJCTdDNzNGQjE3MTkxRUY4MDgwMDdERTA2
MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwICovLAogCQkJCUJF
NkRGNzA4MTcxQ0EyQzUwMERENTJCOCAvKiBKU1ZpZGVvVHJhY2tDdXN0b20uY3BwICovLAogCQkJ
CUQzRjNEMzVBMUE2OUEzQjAwMDU5RkMyQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2VD
dXN0b20uY3BwICovLAorCQkJCTMxQTA4OEM0MUU3MzdCMkMwMDNCNjYwOSAvKiBKU1dlYkdQVVJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwICovLAorCQkJCTMxQTA4OEM1MUU3MzdCMkMwMDNCNjYw
OSAvKiBKU1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvckN1c3RvbS5jcHAgKi8s
CiAJCQkJRTFGRjhGNjYxODA3NDYwODAwMTMyNjc0IC8qIEpTV2ViS2l0U3VidGxlQ3J5cHRvQ3Vz
dG9tLmNwcCAqLywKIAkJCQlFMUNBNUNCQjBFOENEQ0FGMDBFOEVGOTAgLyogSlNXb3JrZXJDdXN0
b20uY3BwICovLAogCQkJCUUxODI1OEFCMEVGM0NENzAwMDkzMzI0MiAvKiBKU1dvcmtlckdsb2Jh
bFNjb3BlQ3VzdG9tLmNwcCAqLywKQEAgLTI1Njc3LDYgKzI1OTQyLDcgQEAKIAkJCQk3QzY1MjMw
MTFFMDBEMDM0MDA2NzdGMjIgLyogQXBwbGVQYXlQYXltZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQThBNjQ1MjFEMTlGQ0ZCMDBEMEUwMEYgLyogQXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzY1MjJGQjFFMDBDOTA5MDA2NzdGMjIgLyogQXBw
bGVQYXlQYXltZW50Q29udGFjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFBMDg5NTYxRTczOEQ1
OTAwM0I2NjA5IC8qIEpTV2ViR1BVQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzY1MjJF
RjFFMDBBNEM3MDA2NzdGMjIgLyogQXBwbGVQYXlQYXltZW50TWV0aG9kLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQThBNjQ1NjFEMTlGQ0ZDMDBEMEUwMEYgLyogQXBwbGVQYXlQYXltZW50TWV0aG9k
U2VsZWN0ZWRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M2NTIyRjUxRTAwQTUxNzAwNjc3
RjIyIC8qIEFwcGxlUGF5UGF5bWVudFBhc3MuaCBpbiBIZWFkZXJzICovLApAQCAtMjU3MDYsNiAr
MjU5NzIsNyBAQAogCQkJCUZEMzE2MDdBMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0FycmF5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRDYyOUVBMzE1NEI0NzE2MDAwNkQwMjYgLyogQXVkaW9CYXNp
Y0luc3BlY3Rvck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE1RkY3MTJCMDI2NzYwMEMx
QTM1OSAvKiBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFB
MDg5ODkxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVVGV4dHVyZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQzMTVGRjkxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvQnVmZmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDU2ODZDQzEzQUMxODE0MDBCNjlDNjggLyogQXVkaW9CdWZmZXJDYWxsYmFj
ay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTVGRkMxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlv
QnVmZmVyU291cmNlTm9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTgzMSw2ICsyNjA5OCw3IEBA
CiAJCQkJMUE1NjlDRkMwRDdFMkI4MjAwN0MzOTgzIC8qIGNfcnVudGltZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE1NjlDRkUwRDdFMkI4MjAwN0MzOTgzIC8qIGNfdXRpbGl0eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDdDMDQ2QzQxRTQyNTA4QjAwNzIwMUU3IC8qIENBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFBMDg5NjUxRTczOEQ1OTAwM0I2NjA5IC8q
IEpTV2ViR1BVRHJhd2FibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQjE2QzFBMDk3OUMzQkQw
MDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzY0
QjRDQzBDQjQyOTVEMDA1RjJCNjIgLyogQ2FjaGVkRm9udC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFFRjRFNjcxNzBFMTYwMzAwQUIyNzk5IC8qIENhY2hlZEZvbnRDbGllbnQuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjU5NDAsNiArMjYyMDgsNyBAQAogCQkJCTc5RjJGNUEyMTA5MTkzOUEwMDBEODdD
QiAvKiBDb21wb3NpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA4RjEyQjAy
NkY3MDBDMUEzNTkgLyogQ29uZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVDOTdBRjMwOEVBOTA4
ODAwQUNEMjczIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFBMDg5NkUxRTczOEQ1
QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE4MTg3MjFDMDk3N0QzQzAwMDU4MjZEOSAvKiBDb250YWluZXJOb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFMUExNDcwODExMTAyQjE1MDBFRUMwRjMgLyogQ29udGFpbmVyTm9kZUFs
Z29yaXRobXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCOTgxMEU4MjA3MjUwMEIyNTk2NSAv
KiBDb250ZW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjE0Miw2ICsyNjQxMSw3IEBACiAJ
CQkJQkM3RDhGRjAxQkQwM0I2NDAwRkZFNTQwIC8qIENTU1Vuc2V0VmFsdWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4MEU2Q0VFMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NWYWx1ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNjU2NTgxNTEwOUQxMzA0MzAwMEU2MUQ3IC8qIENTU1ZhbHVlS2V5d29yZHMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTMxQTA4OTU5MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQ
VUNvbW1hbmRCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0U5MEExOTg5Q0EwMDdG
QjhDNSAvKiBDU1NWYWx1ZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0OUJEOUZBMTMxRkQy
RUQwMDNDNTZGMCAvKiBDU1NWYWx1ZVBvb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0NDRDQkU4
MUQ4ODYxQzIwMDczQTA3NCAvKiBDU1NWYXJpYWJsZURhdGEuaCBpbiBIZWFkZXJzICovLApAQCAt
MjYxNjcsMTIgKzI2NDM3LDE0IEBACiAJCQkJOTdCQzZBMzAxNTA1RjA4MTAwMUI3NEFDIC8qIERh
dGFiYXNlVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNkEzMjE1MDVGMDgxMDAxQjc0
QUMgLyogRGF0YWJhc2VUcmFja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCRTIzNDgwRDE4QTk4
NzE0MDBFNEI2RTggLyogRGF0YUN1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFBMDg5NUMxRTcz
OEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVQ29tbWFuZFF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDNTIyN0RGMTFDM0M2REYxMDBGNUVENTQgLyogRGF0YURldGVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0M3OTQxRTUxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29m
dExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNUUyQjRFMUFGRjA2Q0EwMDk3NkY5RiAvKiBE
YXRhRGV0ZWN0b3JzQ29yZVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1OUYxQkYxQTAwNDRD
NjAwMUYzRDI5IC8qIERhdGFEZXRlY3RvcnNTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQzRD
Rjc5MUQyREQ5ODkwMEVDQ0M5NCAvKiBEYXRhRGV0ZWN0b3JzVUlTUEkuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMjI3NDZGMEU4MzY2NDUwMEU3Rjk3NSAvKiBEYXRhUmVmLmggaW4gSGVhZGVycyAq
LywKKwkJCQkzMUEwODk2QjFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVMaWJyYXJ5LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzY0NjQxQzExRDdGNDE2MDA2NDU1QjAgLyogRGF0YXNldERPTVN0
cmluZ01hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCM0UwQTQ0RUZDNzAwRjk5MkUwIC8q
IERhdGFUcmFuc2Zlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEI4QUY0QUEwQjFDRTAyQjAwNjg3
NjkwIC8qIERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjUx
Miw2ICsyNjc4NCw3IEBACiAJCQkJQ0Q2MkZCOTYxQUYwMThFNzAwMTJFRDdEIC8qIEdlbmVyaWNU
YXNrUXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NDZBRjI0MTRGNERERTYwMDNFN0E3MCAv
KiBHZW9sb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMjUxNEY0RERFNjAwM0U3
QTcxIC8qIEdlb2xvY2F0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkzMUEwODk3NDFF
NzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk3NDZBRjI3MTRGNERERTYwMDNFN0E3MCAvKiBHZW9sb2Nh
dGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NDZBRjI4MTRGNERERTYwMDNF
N0E3MCAvKiBHZW9sb2NhdGlvbkVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyOTE0
RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNjk2OCw2ICsyNzI0MSw3IEBACiAJCQkJMzFGQjFBNjYxMjBBNUQzRjAwREMwMkEwIC8qIEpT
RGV2aWNlTW90aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU5QTg2MDA4MTE5REFGQTEw
MERFRjFFRiAvKiBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTY1OUREQzgzMDlFMTk4QkEwMDFCRjNDNiAvKiBKU0RvY3VtZW50LmggaW4gSGVhZGVycyAqLywK
KwkJCQkzMUEwODk3RDFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVzY3Jp
cHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTIyMUUwNUUxQzAyQjQ0NDAwNkExQTAwIC8qIEpT
RG9jdW1lbnRBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUFEREE5NEMyMTk2ODdBQTUw
MDQ1MzAyOSAvKiBKU0RvY3VtZW50Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQ5NEVE
RjBBMTIzRjRDMDBGREFGQzEgLyogSlNEb2N1bWVudEZyYWdtZW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTI2OTkzLDYgKzI3MjY3LDcgQEAKIAkJCQk3QzhFMzRCOTFFNEEzM0IwMDA1NENFMjMgLyog
SlNET01Db252ZXJ0SlNPTi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4RTM0QkExRTRBMzNCMDAw
NTRDRTIzIC8qIEpTRE9NQ29udmVydE51bGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOEUzNEJC
MUU0QTMzQjAwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnROdWxsYWJsZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMzFBMDg5ODAxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzhFMzRCRDFF
NEEzM0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0TnVtYmVycy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJN0M4RTM0QkUxRTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9NQ29udmVydE9iamVjdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJN0M4RTM0QkYxRTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9NQ29udmVydFJl
Y29yZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzQwNyw2ICsyNzY4Miw3IEBACiAJCQkJODQ4NTIy
N0MxMTkwMTYyQzAwNkVEQzdGIC8qIEpTU1ZHSEtlcm5FbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMkZBM0Q5RjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdJbWFnZUVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyRkEzREExMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0xlbmd0aC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMzFBMDg5NjIxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BV
RGVwdGhTdGVuY2lsU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREEzMEFCNzVBNkYw
MDBFNUFDNCAvKiBKU1NWR0xlbmd0aExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREE1
MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjJGQTNEQTcwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHTGluZUVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLApAQCAtMjc0OTUsNiArMjc3NzEsNyBAQAogCQkJCTdDNzNGQjBEMTkx
RUY1QTgwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE1Qzc3MDkzMTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5U3RhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJFOEVGMDRCMTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVv
VHJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTMxQTA4OThDMUU3MzhENUEwMDNCNjYwOSAvKiBK
U1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCRThFRjA0RDE3
MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkUyMDUwODIxOEE0NjBDMzAwODA2NDdFIC8qIEpTVlRUQ3VlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QUY5QjIwRDE4Q0ZCNUY0MDBDNjRCRUYgLyogSlNWVFRSZWdpb24uaCBpbiBIZWFkZXJzICov
LApAQCAtMjc1OTcsNiArMjc4NzQsNyBAQAogCQkJCUJDRTY1QkVCMEVBQ0RGMTYwMDdFNDUzMyAv
KiBMZW5ndGguaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkY2NDkxMEVBRDE1QzIwMEMxRDZGNyAv
KiBMZW5ndGhCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUU1QkE3RDYzMTUxNDM3Q0EwMEZFMUUz
RiAvKiBMZW5ndGhGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxQTA4OTc3MUU3MzhE
NUEwMDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjg3MTY3MDFDODY5RDgzMDA0RkYwREUgLyogTGVuZ3Ro
UG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkY2NDkyMEVBRDE1QzIwMEMxRDZGNyAvKiBM
ZW5ndGhTaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTUwODAzNzFFM0YwMEIwMDA1MUQ3NUQg
LyogTGliV2ViUlRDQXVkaW9Nb2R1bGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjc3NzgsNiArMjgw
NTYsNyBAQAogCQkJCTM3RERDREE1MTM4NDUwMUMwMDA4Qjc5MyAvKiBNSFRNTEFyY2hpdmUuaCBp
biBIZWFkZXJzICovLAogCQkJCTM3RERDREE3MTM4NDUwMUMwMDA4Qjc5MyAvKiBNSFRNTFBhcnNl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTNCODk1QUYxOURDN0VEOTAwOUNBQTkzIC8qIE1pY3Jv
dGFza3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxQTA4OTY4MUU3MzhENTkwMDNCNjYwOSAvKiBK
U1dlYkdQVUZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0REQ0Q5NTEzODQ0RkQ1MDAw
OEI3OTMgLyogTUlNRUhlYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3NzJDNEYwQzRFQjMw
NDAwODMyODVGIC8qIE1JTUVUeXBlUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyRjEw
ODY2MTYyQjZEQTgwMDlBQzgxRSAvKiBNaXhlZENvbnRlbnRDaGVja2VyLmggaW4gSGVhZGVycyAq
LywKQEAgLTI3OTkwLDYgKzI4MjY5LDcgQEAKIAkJCQlBRDVBMEMyNTFERUNBQ0NDMDA3MDcwNTQg
LyogUGVyZm9ybWFuY2VMb2dnaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0ZFOTAyNzFFMzA3
QzMwMDAzRTkxOTkgLyogUGVyZm9ybWFuY2VNb25pdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
QUY0RTU1NjExREM1QTM2MDAwRUQzREUgLyogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkzMUEwODk3QTFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVBOTkz
M0QxRTM3RkIxOTAwNUI1RTREIC8qIFBlcmZvcm1hbmNlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE1QTk5MzNGMUUzN0ZCMUYwMDVCNUU0RCAvKiBQZXJmb3JtYW5jZU9ic2VydmVyQ2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QTk5MzQxMUUzN0ZCMjgwMDVCNUU0RCAvKiBQ
ZXJmb3JtYW5jZU9ic2VydmVyRW50cnlMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTI4NDE4LDYg
KzI4Njk4LDcgQEAKIAkJCQkwRkM0RTQxMTE4N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDNEE0MTUxNjI5
REY1QTAwQzNFQjZFIC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQzRFNDEwMTg3RjgyRTEwMDQ1ODgyQyAvKiBTY3JvbGxpbmdUcmVl
SU9TLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMUEwODk4NjFFNzM4RDVBMDAzQjY2MDkgLyogSlNX
ZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1ODA2NDE5
MzI3QTYyMDBERTMyRUIgLyogU2Nyb2xsaW5nVHJlZU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFBQURERTQxNERDOEM4RjAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVOb2RlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkVBM0U4MDE5MUIzMTY5MDAwRjFCNTUgLyogU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODU2Miw2ICsyODg0Myw3IEBA
CiAJCQkJNTFFMEJCMzgwREE1QUNCNjAwQTlFNDE3IC8qIFN0b3JhZ2VNYXAuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUM1MEQwRTgzMEZGNDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTM3NjM2QzFBMkU2OEJCMDA5QTdFRTIgLyogU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMUEwODk4MzFFNzM4RDVBMDAz
QjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjAzMyAvKiBTdHJlYW1JbnRlcm5hbHNCdWlsdGlu
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODFBQzZDMzYxMzFDNTdEMzAwMDlBN0UwIC8qIFN0cmlu
Z0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjM1NDBGMzBEMDA3ODJFMDAyMzgyRkEg
LyogU3RyaW5nVHJ1bmNhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NzgwLDYgKzI5MDYyLDcg
QEAKIAkJCQk4M0MxRDQyNjE3OEQ1QUI0MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0FyY1JlbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBNjIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdD
bG9zZVBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTY1MEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdQYXRoU2VnQ3VydmV0b0N1YmljLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMUEwODk3MTFF
NzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk4M0MxRDQyNzE3OEQ1QUI0MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0N1cnZldG9DdWJp
Y0Ficy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUQ0MjgxNzhENUFCNDAwMTQxRTY4IC8qIFNW
R1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTY5MEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoLmggaW4gSGVhZGVy
cyAqLywKQEAgLTI5MTI3LDYgKzI5NDEwLDcgQEAKIAkJCQlBMTlEOTM0NzFBOUZFQzcyMDBCNDZD
MjQgLyogV2ViRmlsdGVyRXZhbHVhdG9yU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlEM0YzRDM2
RTFBNjlCN0UwMDA1OUZDMkIgLyogV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTdEMjBGNkQxMDdGNDM4QjAwQTgwMzkyIC8qIFdlYkdMQWN0aXZlSW5mby5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMzFBMDg5NUYxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVRGVw
dGhTdGVuY2lsRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkU0N0U2NjExMEI3OTQ0
QjAwQjE4NkM4IC8qIFdlYkdMQW55LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUZGQzQ1ODFENUU4
NjU1MDAyNjdBNjYgLyogV2ViR0xCbGFja2xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QzdC
OUM5MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
OTY3OCw2ICsyOTk2Miw3IEBACiAJCQkJMjkxNEUzMDcxQ0FCNUE0NDAwNDk5NjZGIC8qIEFjY2Vz
c2liaWxpdHlBdHRhY2htZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3RjU3QUJDMUE1MDcy
NzcwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUY1MkE4RkQ3MUQwQThEMEUwMDczQ0Y0MiAvKiBBY2Nlc3NpYmlsaXR5TGFiZWwuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5MTQxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVVJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkzN0Y1N0FCRDFBNTA3MjdBMDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eUxpc3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMzdGNTdBQkUxQTUwNzI3RTAwODc2Rjk4IC8qIEFjY2Vzc2liaWxp
dHlMaXN0Qm94LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3RjU3QUJGMUE1MDcyODEwMDg3NkY5
OCAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5
ODA1LDYgKzMwMDkwLDcgQEAKIAkJCQlBQUE3MjhGOTE2RDFEOEJDMDBEM0JCQzYgLyogQVhPYmpl
Y3RDYWNoZUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI5QTgxMjRCMEZCQjlDQTkwMDUxMDI5
MyAvKiBBWE9iamVjdENhY2hlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBOEM4MUYxMUUz
RDM2OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkzMUEwODkxNjFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzEyNEVFNzBDMjY0MUNEMDA5RTIzNDkgLyogQmFy
UHJvcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0NjBCQjYxNTFEMEExQkYwMDAyMjE4MTIgLyog
QmFzZTY0VXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3OUU2MUM5MTI2Q0E1QzMw
MEI2M0U4RCAvKiBCYXNlQnV0dG9uSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk4
NjYsNiArMzAxNTIsNyBAQAogCQkJCTFDMDkzOUVBMUExM0UxMjkwMEI3ODhFNSAvKiBDYWNoZWRT
VkdGb250LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3NTM4NjAyMTQ0ODlFOTgwMEI3ODQ1MiAv
KiBDYWNoZWRUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNCMTZDMjcwOTc5QzNC
RDAwNDY3NzQxIC8qIENhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MzFBMDg5NkMxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQzQUY4RTYxQUM1QjdFODAwQ0E3MTdFIC8qIENhY2hl
VmFsaWRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUFFMkQ5NjEzNEVFNUY5MDA3Mjky
MEEgLyogQ2FsY3VsYXRpb25WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTQ4NEZDMTEw
MkNGMjNDMDAxODdERDMgLyogQ2FudmFzR3JhZGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0y
OTg4Nyw2ICszMDE3NCw3IEBACiAJCQkJQ0RERTAyRjAxOEI1NjUxMzAwQ0Y3RkYxIC8qIENETVNl
c3Npb25BVlN0cmVhbVNlc3Npb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREU1OTU5RDFCRjI3
NTcxMDBBMUNCRTggLyogQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTVGMkRCQkU5MTc4RTNDODEwMDE0MTQ4NiAvKiBDZXJ0aWZpY2F0ZUluZm9NYWMu
bW0gaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODk3NTFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJH
UFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlFMUE4RTU2NjE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTdCQzY5REMxNTA1RjA3NjAwMUI3NEFDIC8qIENoYW5nZVZlcnNpb25XcmFw
cGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE1RkZFMTJCMDI2NzYwMEMxQTM1OSAvKiBD
aGFubmVsTWVyZ2VyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5OTE4LDYgKzMwMjA2LDcg
QEAKIAkJCQlBNTg0RkUyQjE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU1MEI2QTEwOTlERjAyNzAwOTBENzgxIC8qIENvbW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFGRTEzNzQxODQwMkE2NzAwODkyRjEzIC8qIENv
bW1vbkNyeXB0b1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODkwQzFFNzM3
RDUxMDAzQjY2MDkgLyogV2ViR1BVTGlicmFyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjYw
RjMyQzFERkJCMTBCMDA0MTZENkMgLyogQ29tbW9uVk0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0M5M0YzNDkxQUE2QkE1RTAwQTk4QkFCIC8qIENvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDMkY0RTc4QTFFNDVCRUExMDA2RDcxMDUgLyogQ29tcGxleFRl
eHRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk5NTcsNiArMzAyNDYsNyBAQAog
CQkJCTFBQjQwRUUxMUJGNDI3RDYwMEJBODFCRSAvKiBDb250ZXh0TWVudUl0ZW0uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkQzMTYwMjgxMkIwMjY3NjAwQzFBMzU5IC8qIENvbnZvbHZlck5vZGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE0MjRDOTMxNjRCNTJDODAwRjMyRDQwIC8qIENvb2tp
ZUphci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODkwQTFFNzM3RDUxMDAzQjY2MDkgLyog
V2ViR1BVRW51bXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NjIxMkQyNkUzODAwRTc5
NDE1IC8qIENvb2tpZUphckNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNDI0QzkwMTY0
QjQ2MEIwMEYzMkQ0MCAvKiBDb29raWVKYXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3RUU2
ODQ2MzEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0LmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMzAyMjQsNiArMzA1MTQsNyBAQAogCQkJCTE4ODYwNEIzMEYyRTY1NEEwMDBCNjQ0
MyAvKiBET01UaW1lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3NkZDMkIwQjEyMzcwREEwMDA2
QTk5MUEgLyogRE9NVG9rZW5MaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFMzdERkRBMTJE
QkFGQjgwMEE2QjIzMyAvKiBET01VUkwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5MTkx
RTczN0Q1NTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDRDlERTE4MTE3QUFENkE0MDBFQTM4NkQgLyogRE9NVVJMTWVkaWFT
b3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTVGQ0M5RkMxQjRERjdGMjAwRTcyMzI2IC8q
IERPTVVSTE1lZGlhU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MDNCOTk4MDlFQjEz
QUYwMDc5N0M3RiAvKiBET01XaW5kb3cuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDM0MCw2ICsz
MDYzMSw3IEBACiAJCQkJMDhDOTI1MTkwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTMxM0Y2NTE0NDNCMzVGMDA2RTJBOTAgLyogRmlsdGVy
RWZmZWN0UmVuZGVyZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFQ0VCNkQxNDk5NzkwRDAw
Q0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODkw
RDFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTQ5RUNFQjZGMTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb25zLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE4Q0ZGMDREMEExNTRGMDkwMDBBNDIzNCAvKiBGaXhlZFRhYmxlTGF5b3V0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlBNTI4RTgzMTdEN0Y1MkYwMEFBOTUxOCAvKiBGbG9h
dGluZ09iamVjdHMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDQxNSw2ICszMDcwNyw3IEBACiAJ
CQkJMTQzMkU4NDkwQzUxNDkzRjAwQjE1MDBGIC8qIEdDQ29udHJvbGxlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk0RkIzOTBBRDE1RUY2MUYzMDA3QUQ1MUYgLyogR2VuZXJhdGVkSW1hZ2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJODMwMDMwRjUxQjdEMzNCNTAwRUQzQUFDIC8qIEdlbmVyaWND
YWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODkwOTFFNzM3
RDUxMDAzQjY2MDkgLyogV2ViR1BVRHJhd2FibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcy
MEIwQTAxNEQzMzIzNTAwNjQyOTU1IC8qIEdlbmVyaWNFdmVudFF1ZXVlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUNENEJFNTJBMUNFMTM2RUYwMDlEODdEQSAvKiBHZW5lcmljVGFza1F1ZXVlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTk3NDZBRjIzMTRGNERERTYwMDNFN0E3MCAvKiBHZW9sb2Nh
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwNTM1LDcgKzMwODI4LDkgQEAKIAkJCQk5NzNG
NDE4QjE2OUI5NjAzMDAwNkJGNjAgLyogSFRNTFBhcnNlck9wdGlvbnMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTc3QjM4NzAxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxQYXJzZXJTY2hlZHVsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNDMEU4NzUxQkZFNzBFOTAwOEY3RjUwIC8qIEhUTUxQ
aWN0dXJlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODk3ODFFNzM4RDVBMDAz
QjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBODcxRDQ1NzBBMTI3Q0JDMDBCMTJBNjggLyogSFRNTFBsdWdJ
bkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5MTAxRTczN0Q1MTAwM0I2NjA5
IC8qIFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0NDE1MjkyRjBFMUFFOEEwMDBDNEEyRDAgLyogSFRNTFBsdWdJbkltYWdlRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEVBN0NBRDBBMTkyQjlDMDBBOEVGNUYgLyogSFRN
TFByZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3QjM4NzIxMjI4ODNFOTAwQjgx
RkY4IC8qIEhUTUxQcmVsb2FkU2Nhbm5lci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwNjg2LDYg
KzMwOTgxLDcgQEAKIAkJCQk3QTFGMkI1MjEyNkM2MUIyMDAwNkE3RTYgLyogSW5zcGVjdG9yQ2xp
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDODFCOTVCMEU5NzMzMDgwMDI2NkUwNyAvKiBJ
bnNwZWN0b3JDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgyQUIxNzQzMTI0Qjk5
RUMwMEM1MDY5RCAvKiBJbnNwZWN0b3JDU1NBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkz
MUEwODkxNzFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVVGV4dHVyZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0QTlDQzgyMDE2QkY5QkI0MDBFQzY0NUEgLyogSW5zcGVjdG9yQ1NTT01XcmFwcGVy
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QUIwQjFDMDEyMTFBNjIyMDBBNzY5NDAgLyogSW5z
cGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUYwNjIxNTBGNUYx
OTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTMwNzM0LDYgKzMxMDMwLDcgQEAKIAkJCQkzMTk4NDgwQjFBMUU2Q0U0MDBBMTMzMTgg
LyogSlNBbmltYXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxMjIxRTA2QzFDMDNE
MjI0MDA2QTFBMDAgLyogSlNBbmltYXRpb25UaW1lbGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1N0I1RjdFMjFFNTdEQkM4MDBGMzRGOTAgLyogSlNTaXRlQm91bmRDcmVkZW50aWFsRGF0YS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODk4NzFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJH
UFVUZXh0dXJlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTEyMjFFMDczMUMwM0U0QzIwMDZBMUEw
MCAvKiBKU0FuaW1hdGlvblRpbWVsaW5lQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdD
NjU3OUVGMUUwMDg1NjYwMEUzQTI3QSAvKiBKU0FwcGxlUGF5TGluZUl0ZW0uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0M2NTIzMUUxRTAxOEI1QTAwNjc3RjIyIC8qIEpTQXBwbGVQYXlQYXltZW50
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzA5OTIsNiArMzEyODksNyBAQAogCQkJCTFBRTJBQjIx
MEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxMYWJlbEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTc2ODE0NDQxRTcwQ0IxQjAwRTc3NzU0IC8qIEpTQWVzS2V5UGFyYW1zLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBRTJBQjIzMEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxMZWdlbmRF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxQTA4OTE4MUU3MzdENTEwMDNCNjYwOSAv
KiBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUUyQUIy
NTBBMUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTElFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4MEU3QjEwMEExOUQ2MDYwMDdGQjhDNSAvKiBKU0hUTUxMaW5rRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQUUyQUIyNzBBMUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTWFwRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxMDE5LDYgKzMxMzE3LDcgQEAKIAkJCQlFMUU2
RUVBNDBCNjI4REE4MDA1RjJGNzAgLyogSlNIVE1MU2VsZWN0RWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQzE3Rjk2NjBCNjRFQkI4MDA0QTY1Q0IgLyogSlNIVE1MU2VsZWN0RWxlbWVu
dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5QjY5RDNCODFCOTkxMDA3MDBFMzUxMkIg
LyogSlNIVE1MU2xvdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5MTMxRTcz
N0Q1MTAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUU0NDYxNDNCMENENjg5Q0MwMEZBREE3NSAvKiBKU0hUTUxTb3VyY2VFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NTJEMzhEMTQxMzEwNEIwMDMzMDVCRCAvKiBKU0hU
TUxTcGFuRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBFN0IwRjBBMTlENjA2MDA3
RkI4QzUgLyogSlNIVE1MU3R5bGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzExODUs
NiArMzE0ODQsNyBAQAogCQkJCTU3RTIzMzczMURDRDQ2QjYwMEYyOEQwMSAvKiBKU1JzYUhhc2hl
ZEltcG9ydFBhcmFtcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1NzY4RTQzNjFEQjc1Mjc0MDBE
MEE0RjcgLyogSlNSc2FIYXNoZWRLZXlHZW5QYXJhbXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTdGRURENDMxREI2RDc2MDAwRUI5NkY1IC8qIEpTUnNhS2V5R2VuUGFyYW1zLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTMxQTA4OTA2MUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVDb21tYW5kUXVl
dWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTcwNkE2OUExRERFNUU4NTAwQTAzQjE0IC8qIEpT
UnNhT2FlcFBhcmFtcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1N0UyMzM2MTFEQzdENkFBMDBG
MjhEMDEgLyogSlNSc2FPdGhlclByaW1lc0luZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcz
Nzk0RTUxOUVFMkZGMjAwRTVBMDQ1IC8qIEpTUlRDQ29uZmlndXJhdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTMxMzk4LDExICszMTY5OCwxMyBAQAogCQkJCTBGREE3QzFBMTg4MzIyRUIwMEM5
NTRCNSAvKiBKU1RvdWNoTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzAzMzRFOTE0NUEx
RjM2MDA4RDhENDUgLyogSlNUcmFja0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzg0
NjM0MjE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTMxQTA4OTVBMUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUNvbW1hbmRRdWV1ZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlFMTdCNDkyMjE2QTlCOEZGMDAxQzg4MzkgLyogSlNUcmFuc2l0
aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3NTBENUMwQTkwREVFMTAwMEZGMjE1
IC8qIEpTVHJlZVdhbGtlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTZCQjc5NDBDRTkxRTY4
MDA1MTJGNzkgLyogSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
NjYyOUQwMDlEQTJCNDgwMDk2MzNBNSAvKiBKU1VJRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDY1MzA3RDExREI2RUU0QTAwRTQxMzdDIC8qIEpTVUlFdmVudEluaXQuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMzFBMDg5NjkxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVTGlicmFyeS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzUzODFCNTFEODdFMDg3MDBFMkVCRTYgLyogSlNVUkxT
ZWFyY2hQYXJhbXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M3M0ZCMTExOTFFRjZGNDAwN0RF
MDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDNzNG
QjBDMTkxRUY1QTgwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0zMTQxOSw2ICszMTcyMSw3IEBACiAJCQkJN0FGOUIyMEUxOENG
QjVGNDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
RDgyRDdGNzEzRDRDOEJEMDA0RTQzNzIgLyogSlNXYXZlU2hhcGVyTm9kZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxMjBERTNGOTFDODdDNUFCMDBCNkQ0REQgLyogSlNXZWJBbmltYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5MDgxRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVURl
cHRoU3RlbmNpbFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQzRjNEMzYzMUE2OUIxOTAw
MDU5RkMyQiAvKiBKU1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRDNGM0QzNkMxQTY5QjdENTAwNTlGQzJCIC8qIEpTV2ViR0wyUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0QyMEY2MjEwN0Y0MDY5MDBBODAzOTIgLyog
SlNXZWJHTEFjdGl2ZUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTQ0MSw2ICszMTc0NCw3
IEBACiAJCQkJRDNGM0QzNjcxQTY5QjFBNTAwNTlGQzJCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEM0YzRDM2QjFBNjlCN0M1MDA1OUZDMkIg
LyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQ5RUVEMTRGMTA1MTk3MUEwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODk4QTFFNzM4RDVBMDAzQjY2MDkgLyog
SlNXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2Rjk5NUEz
MzFBNzA4MzM3MDBBNzM1RjQgLyogSlNXZWJHTFNhbXBsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDlDN0I5QTIxMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xTaGFkZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTA3RDMzNTUxNTJCNjMwRTAwMUI2MzkzIC8qIEpTV2ViR0xTaGFkZXJQcmVj
aXNpb25Gb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTUwOSw2ICszMTgxMyw3IEBACiAJ
CQkJMjkxN0I1NjExNDczNDk2QzAwNTJDOUQwIC8qIExheWVyRmx1c2hTY2hlZHVsZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMjkxN0I1NjYxNDczNDk5NTAwNTJDOUQwIC8qIExheWVyRmx1c2hT
Y2hlZHVsZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FBM0E2OUYxOTRCNTlCNjAwMUNC
RDI0IC8qIExheWVyUG9vbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODk2MDFFNzM4RDU5
MDAzQjY2MDkgLyogSlNXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjM2RTczNzFCRDE4MzdBMDAyREI4OTEgLyogTGF5b3V0UG9pbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMTQxREMwNTIxNjQ4MzRCOTAwMzcxRTVBIC8qIExheW91dFJlY3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTEyMEFDQTQxM0Y5OThDQTAwRkU0QUM3IC8qIExheW91dFJlcGFp
bnRlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxNjQzLDExICszMTk0OCwxMyBAQAogCQkJCTk0
OTNCNkMwMUQ3NEI0MTIwMDg4RTc4MCAvKiBNZWRpYVF1ZXJ5UGFyc2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUM5MDg0M0NGMUIxOEU0N0QwMEI2ODU2NCAvKiBNZWRpYVJlbW90ZUNvbnRyb2xz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEOEFDQThFMUQyMzk3MTkwMEVDQzU5RSAvKiBNZWRp
YVJlbW90ZVNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxQTA4OTcyMUU3MzhENUEw
MDNCNjYwOSAvKiBKU1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDRUVGQ0Q3OTE5REIzMUY3MDAzODc2RDcgLyogTWVkaWFSZXNvdXJj
ZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQjEyNEQ4RjFEMzgwQkI2MDBFQ0RGQjAg
LyogTWVkaWFTYW1wbGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RCRUFFQUMxOUQ5
MkI2QzAwQkVCQTg4IC8qIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQzkwMjdGNDExQjFEMEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDOTZGNUVDNzFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9u
SW50ZXJydXB0aW9uUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5NUQxRTcz
OEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDOTZGNUVDNjFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50
ZXJydXB0aW9uUHJvdmlkZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1N0I1RjgwRjFFNUUy
QTRCMDBGMzRGOTAgLyogSlNBZXNHY21QYXJhbXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzkw
RjY1NTUxQjIyNTNCMTAwMjE2M0ExIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0zMTc4Niw2ICszMjA5Myw3IEBACiAJCQkJMTQ3N0U3NzYwQkY0MTM0QTAwMTUy
ODcyIC8qIFBhZ2VDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDVFNUI2MTFBMTVGMTU2
MDAwQzYwOUUgLyogUGFnZUNvbmZpZ3VyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjM4
MjA4OTIxNDdEMzVGOTAwMTBCQzA2IC8qIFBhZ2VDb25zb2xlQWdlbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMzFBMDg5MTExRTczN0Q1MTAwM0I2NjA5IC8qIFdlYkdQVVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURBRUQyMDMwMTZG
MjQ0MkIwMDcwRUMwRiAvKiBQYWdlQ29uc29sZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBNUEyQUYwQjE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRjM0NzQyREMxMzQzNjJGMDAwNTMxQkMyIC8qIFBhZ2VEZWJ1Z2dlckFnZW50
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzE4MTQsNiArMzIxMjIsNyBAQAogCQkJCUE4OERENDg5
MEI0NjI5QjAwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2FsU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkQ1MDAyRkIxQjU2RDc5OTAwMjBBQUY3IC8qIFBhdGhVdGlsaXRpZXMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQThGQTZFNUUwRTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5ODQxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVu
ZGVyUGlwZWxpbmVTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBBMzhGRTBFNTBDQzgy
MDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBOEE2NDZDMUQx
OUZGODcwMEQwRTAwRiAvKiBQYXltZW50Q29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQThB
NjQ2RDFEMTlGRjg3MDBEMEUwMEYgLyogUGF5bWVudENvbnRhY3RDb2NvYS5tbSBpbiBTb3VyY2Vz
ICovLApAQCAtMzE4MjMsNiArMzIxMzIsNyBAQAogCQkJCTFBOEE2NDZFMUQxOUZGODcwMEQwRTAw
RiAvKiBQYXltZW50TWV0aG9kQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTU4RTg2NzFE
MTlEODBFMDBDMEVBNzMgLyogUGF5bWVudFJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUE4QTY0NjcxRDE5RkRGRjAwRDBFMDBGIC8qIFBheW1lbnRSZXF1ZXN0VmFsaWRhdG9yLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTMxQTA4OTY2MUU3MzhENTkwMDNCNjYwOSAvKiBKU1dlYkdQVUZ1
bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzUzNTY0MEIwNTM4MTQwMDJDRTY0RiAv
KiBQREZEb2N1bWVudEltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJENkU0Njg0MTdENjYw
RjUwMEVDRjhCQiAvKiBQREZEb2N1bWVudEltYWdlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDFFNDA4MzkxRENCNzQ4OTAwRUZDRTE5IC8qIFBlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTMxODYyLDYgKzMyMTcyLDcgQEAKIAkJCQlCQzk0RDEwODBDMjc0Rjg4
MDA2QkM2MTcgLyogUGxhdGZvcm1TY3JlZW5NYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOTM0
OTQwQjE2QzAyQzBBMDA5MDEzMTggLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjkzNDk0MEExNkMwMkMwNzAwOTAxMzE4IC8qIFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5ODEx
RTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTI5N0JFM0RBMTZDMDQzRDgwMDMzMTZCRCAvKiBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFBMTJERjQ5MTc0M0RGODMw
MDREQUZERiAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMjk3QkUzRDgxNkMwM0NDRTAwMzMxNkJEIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXJNYWMubW0gaW4gU291cmNlcyAqLywKQEAgLTMxOTQ1LDYgKzMyMjU2LDcgQEAKIAkJCQkwRjVC
N0E1NDEwRjY1RDdBMDAzNzYzMDIgLyogUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMDY2Qzc3MzAwQUI2MDNGRDAwMjM4Q0M0IC8qIFJlbmRlckZpbGVVcGxvYWRD
b250cm9sLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzQzgyOThEMTNEOEQ5MjcwMERFMkRFQiAv
KiBSZW5kZXJGbGV4aWJsZUJveC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODk2RjFFNzM4
RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUwOENDQTUwMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE4NzFERUQ0MEExNTMwQzcwMEIxMkE2OCAvKiBSZW5kZXJGcmFt
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQzMDgwRTExN0NGN0U3MDBBNzkxRjcgLyogUmVu
ZGVyRnJhbWVCYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzE5NzQsNiArMzIyODYsNyBAQAog
CQkJCTQzOTA0NkQ5MTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxGZW5jZWQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDM5MDQ2RDkxMkRBMjVFODAwQUY4MUIzIC8qIFJlbmRlck1hdGhN
TEZlbmNlZE9wZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzOTA0NkRCMTJEQTI1RTgw
MEFGODBBMiAvKiBSZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkz
MUEwODk3QjFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzkwNDZERDEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVy
TWF0aE1MTWF0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNTcxODgzRUVGNjE4NzkzNzUxRTQw
ODkgLyogUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDM5MDQ2
REYxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTE9wZXJhdG9yLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMzIwNTcsNiArMzIzNzAsNyBAQAogCQkJCTI2QzE1Q0Y2MTg1N0UxNUQwMEYxNUMw
MyAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1
ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQkEwMDMxMTZGQjkyQUMwMEJBN0EzNSAvKiBS
ZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RTQyOENFNTEzRTM0
MDdGMDAzQjY2MUMgLyogUmVzb3VyY2VIYW5kbGVJT1MubW0gaW4gU291cmNlcyAqLywKKwkJCQkz
MUEwODkwNTFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MTRDNzY1MTBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVN
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0UyMjdFMzBBRjU4OUFEMDBENDgzMjQgLyogUmVz
b3VyY2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NzUxMkQyNkU3MDAwRTc5
NDE1IC8qIFJlc291cmNlTG9hZGVyQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMjA2NSw2
ICszMjM3OSw3IEBACiAJCQkJOTczRTMyNTYxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9h
ZE5vdGlmaWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZCNjkzQTM0MUM1MUE5NUQwMEIwM0JF
RiAvKiBSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTkyOUNB
NjFDNTk4QTlFMDA0REYyMjYgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkzMUEwODkwQjFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVRnVuY3Rpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0FEM0NERDkxQzhBMDAyRjAwRjEyNjk4IC8qIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTRDNzY3QzBDRTky
M0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3RUU2ODQ2RTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0zMjE1NSw4ICszMjQ3MCwxMCBAQAogCQkJCTBGNjA1QUVDMTVGOTQ4
NDgwMDRERjBDMCAvKiBTY3JvbGxpbmdDb25zdHJhaW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQUY2MkVFNzE0REEyMkE3MDA0MTU1NkMgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZDNEU0MEUxODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ0Nv
b3JkaW5hdG9ySU9TLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5MUExRTczN0Q1NTAwM0I2
NjA5IC8qIEpTV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yQ3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBRjYyRUU2MTREQTIyQTcwMDQxNTU2QyAvKiBTY3JvbGxpbmdD
b29yZGluYXRvck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxQzYxQjBBMURFNTM2RTcwMDhB
MjEyRCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMzFBMDg5NTQxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVQnVmZmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxN0RFRUU1MURFOTRBREMwMEI5MTY0NCAvKiBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3JNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0MzOEJGRTE2NDQ3M0M3MDAw
OTFFQjIgLyogU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZFQTNFN0MxOTFCMkZDNTAwMEYxQjU1IC8qIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdO
b2RlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzIxOTEsOSArMzI1MDgsMTEgQEAKIAkJCQlGNTVC
M0REMTEyNTFGMTJEMDAzRUYyNjkgLyogU2VhcmNoSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBFNzA1OEVFMUJDNUJDMTkwMDQ1QTUwNyAvKiBTZWFyY2hQb3B1cE1lbnVDb2NvYS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTk3NkYzNkVBMTQ2ODYyMjUwMDVFOTNCNCAvKiBTZWN1cml0
eUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMDg5MEUxRTczN0Q1MTAwM0I2NjA5
IC8qIFdlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
RDBFMEZBMEU5NzJDMzUwMDI2NURFQSAvKiBTZWN1cml0eU9yaWdpbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MUUzQUEwQTFCOThCQ0FCMDAzNkFEODEgLyogU2VjdXJpdHlPcmlnaW5EYXRhLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBRjdBRkM3MUE0OEE4QkMwMEM4RTRFNyAvKiBTZWN1cml0
eU9yaWdpblBvbGljeS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODkxMjFFNzM3RDUxMDAz
QjY2MDkgLyogV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTc0RDJEQTQxNDZBNTM1RDAwRDUxRjhCIC8qIFNlY3VyaXR5UG9s
aWN5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk5Q0MwQjVEMThCRTk4NEEwMDZDRUJDQyAvKiBT
ZWdtZW50ZWRJbnB1dFN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJDM0RBMkUwRDAw
NkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMy
MzAwLDYgKzMyNjE5LDcgQEAKIAkJCQkxQTM3NjM2QjFBMkU2OEJCMDA5QTdFRTIgLyogU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgxMDJDNTg4MTMyNUJC
MTEwMERERTY3QSAvKiBTdHJpbmdDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjM1
NDBGMjBEMDA3ODJFMDAyMzgyRkEgLyogU3RyaW5nVHJ1bmNhdG9yLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTMxQTA4OTA0MUU3MzdENTEwMDNCNjYwOSAvKiBXZWJHUFVCdWZmZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNDE0QjgyMDQxRDZERjBERjAwNzdFQkUzIC8qIFN0cnVjdHVyZWRDbG9u
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzVFQjZBMjBFODFEQzRGMDBCMjU5NjUgLyogU3R5
bGVCYWNrZ3JvdW5kRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzVFQjY3RDBFODFENDIw
MDBCMjU5NjUgLyogU3R5bGVCb3hEYXRhLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzI1NjEsNiAr
MzI4ODEsNyBAQAogCQkJCTJENEY5NkY4MUExRUNDMjQwMDk4QkY4OCAvKiBUZXh0SW5kaWNhdG9y
V2luZG93Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjU1QjNERDkxMjUxRjEyRDAwM0VGMjY5IC8q
IFRleHRJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0VDQURGQ0QxNTM3NzkxRDAw
RTM3MDY4IC8qIFRleHRJbnNlcnRpb25CYXNlQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkzMUEwODk2MzFFNzM4RDU5MDAzQjY2MDkgLyogSlNXZWJHUFVEcmF3YWJsZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5MzMwOUUxQjA5OUU2NDkyMDA1NkU1ODEgLyogVGV4dEl0ZXJhdG9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUU0RDk4OEI2MTdCRkVCMjEwMDg0RkI4OCAvKiBUZXh0Tm9k
ZVRyYXZlcnNhbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzE4REE1ODE4MUFGNkE1MDBDNEVG
MjIgLyogVGV4dFBhaW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMjYyOCw2ICszMjk0OSw3
IEBACiAJCQkJQzM3NUQ3RkQxNjYzOTUxOTAwNjE4NEFCIC8qIFR5cGVBaGVhZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5MzMwOUUxOTA5OUU2NDkyMDA1NkU1ODEgLyogVHlwaW5nQ29tbWFuZC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMUI0RDBBNDRFRkM3MDBGOTkyRTAgLyogVUlFdmVu
dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODk3RTFFNzM4RDVBMDAzQjY2MDkgLyogSlNX
ZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTMzNTRBM0MwQjI0RjhDOTAwM0Y2REVBIC8qIFVJRXZlbnRXaXRoS2V5U3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE4ODY0RTAxQkJBRjU3MTAwRTU0MEM5IC8qIFVu
aXF1ZUlEQkRhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxOThGN0E0MUJCREI3OTMw
MEUyQ0M1RiAvKiBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0zMjY2OSwxMiArMzI5OTEsMTQgQEAKIAkJCQk1MkQ1QTE4RjFDNTQ1OTIzMDBERTM0QTMg
LyogVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RF
ODNEQjExODNDNDQwNjAwMzFFQUEzIC8qIFZpZGVvUGxheWJhY2tRdWFsaXR5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUNEOUQ4Mjc5MUM3QjhFRTEwMDZGRjA2NiAvKiBWaWRlb1RleHR1cmVDb3Bp
ZXJDVi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEwODkxNTFFNzM3RDUxMDAzQjY2MDkgLyog
V2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJF
ODhFMERFMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJFODhFMEUxMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDRDMzNkY2NzE3RkEwQUM2MDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZh
dGVBVkZPYmpDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEOEI1QTQyMTgwRDE0OUEwMDhCOEU2
NSAvKiBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUNFRjQxOENFMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkyNkY5QTgzODE4QTA0NkFDMDBBRUI4OEEgLyogVmlld3BvcnRD
b25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxQTA4OTA3MUU3MzdENTEwMDNC
NjYwOSAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTNGRkZGOUFEMTU5RDlCMDYwMDIwQkJENSAvKiBWaWV3cG9ydFN0eWxlUmVzb2x2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMUYwOTlFNjQ5MjAwNTZFNTgxIC8qIFZpc2libGVQ
b3NpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODgzREYyNzBGM0QwNDVEMDBGMTlCRjYg
LyogVmlzaWJsZVNlbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMyNzE0LDYgKzMzMDM4
LDcgQEAKIAkJCQlDRDEyN0RFRDE0RjMwOTdEMDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5X
aW5kb3cubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzM0OEJEMzBEQjdGODA0MDA0QUJBQkIgLyog
V2ViQ29yZUpTQnVpbHRpbkludGVybmFscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzM0OEJE
MzBEQjdGODA0MDA0QUJBQkEgLyogV2ViQ29yZUpTQnVpbHRpbnMuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMzFBMDg5NTcxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVQ29tbWFuZEJ1ZmZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjdERjE0ODFFMkJGMUIxMDA5NTk1MUIgLyogV2ViQ29y
ZUpTQ2xpZW50RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTQwMzc5QzEyNEJFQTdGMDBB
RjQwRTQgLyogV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREM5
NzlGNDFDNDk4QzA5MDBEQjUwRDQgLyogV2ViQ29yZU5TRXJyb3JFeHRyYXMubW0gaW4gU291cmNl
cyAqLywKQEAgLTMyODU0LDYgKzMzMTc5LDcgQEAKIAkJCQkyRTQzNDY0RjBGNTQ2QTgyMDBCMEYx
QkEgLyogV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEyNzFB
MTQwRUVFQzgwNDAwRjYxMjEzIC8qIFdvcmtlck5hdmlnYXRvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyRTQzNDY1MjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyUnVuTG9vcC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkzMUEwODkwRjFFNzM3RDUxMDAzQjY2MDkgLyogV2ViR1BVUmVuZGVyaW5n
Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTdGRDcxQjFEQjk0MjNFMDA2QUUyNEIg
LyogV29ya2VyUnVudGltZUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQTY0M0ZEMEVD
MDk3QTAwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE1NEEwQzY1MURCODA1MzYwMDE3QTkwQiAvKiBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZl
ci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
b2N1bWVudEN1c3RvbS5jcHAKaW5kZXggYTc4YjAxODQ0Mzc5NjI5NzYzZDBhNmFjMTA3MzBiMjdh
MTRhYTJmNS4uYTkwYmQxYTNlMzBkMGRmODU5ZmY1MzI2MTg5OTZmYWM0OWE0MmY1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDksIDIwMTEsIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDks
IDIwMTEsIDIwMTYsIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC00Miw2ICs0MiwxMCBAQAogI2luY2x1ZGUgIkpTV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCR1BVKQorI2luY2x1ZGUg
IkpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQogI2luY2x1ZGUgIkpTVG91Y2guaCIKICNpbmNsdWRlICJKU1RvdWNoTGlzdC5oIgpA
QCAtMTUwLDYgKzE1NCwxMCBAQCBKU1ZhbHVlIEpTRG9jdW1lbnQ6OmdldENTU0NhbnZhc0NvbnRl
eHQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogICAgIGlmIChpczxXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlPigqY29udGV4dCkpCiAgICAgICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2Jq
ZWN0KCksIGRvd25jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+KCpjb250ZXh0KSk7CiAj
ZW5kaWYKKyNpZiBFTkFCTEUoV0VCR1BVKQorICAgIGlmIChpczxXZWJHUFVSZW5kZXJpbmdDb250
ZXh0PigqY29udGV4dCkpCisgICAgICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0
KCksIGRvd25jYXN0PFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ+KCpjb250ZXh0KSk7CisjZW5kaWYK
IAogICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIGRvd25jYXN0PENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRD4oKmNvbnRleHQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKaW5kZXgg
MTcyYzBkOTk3OTFmNDY0Nzk3ZTdmZDk5YTdiNGVjMjY4ZjEwNDdiMS4uNTMxNjg5MmM4YjM1Yzk3
ZjcwNzU5ZjEwYjRmNDk0MjhiMTkzZjU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxNiwgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9iaWxl
IChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dApAQCAtMzcsNiArMzcsMTAgQEAKICNpbmNsdWRlICJKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQkdQVSkKKyNpbmNsdWRlICJKU1dlYkdQVVJl
bmRlcmluZ0NvbnRleHQuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC02NCw2ICs2OCwxMSBAQCBKU1ZhbHVlIEpTSFRNTENhbnZhc0Vs
ZW1lbnQ6OmdldENvbnRleHQoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICB9CiAjZW5kaWYKIAorI2lm
IEVOQUJMRShXRUJHUFUpCisgICAgaWYgKEhUTUxDYW52YXNFbGVtZW50Ojppc1dlYkdQVVR5cGUo
Y29udGV4dElkKSkKKyAgICAgICAgcmV0dXJuIHRvSlM8SURMTnVsbGFibGU8SURMSW50ZXJmYWNl
PFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ+Pj4oc3RhdGUsICpnbG9iYWxPYmplY3QoKSwgc3RhdGlj
X2Nhc3Q8V2ViR1BVUmVuZGVyaW5nQ29udGV4dCo+KHdyYXBwZWQoKS5nZXRDb250ZXh0V2ViR1BV
KGNvbnRleHRJZCkpKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIGpzTnVsbCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdQVVJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvckN1c3RvbS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNWIwYTEzN2UwOGM3NzUyYzJjMWM1YjkwZmY4ZWRiZGU0MmE2NmQ4OAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR1BVUmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yQ3VzdG9tLmNwcApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkpTV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisKKyNpZiBF
TkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNX
ZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIldl
YkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisKK3VzaW5nIG5hbWVz
cGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNDOjpKU1ZhbHVlIHRvSlNOZXds
eUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBSZWY8V2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yPiYmIG9iamVjdCkKK3sK
KyAgICBpZiAob2JqZWN0LT5pc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKSkKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZVdyYXBwZXI8V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3I+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShvYmplY3QpKTsKKyAgICByZXR1cm4gY3JlYXRl
V3JhcHBlcjxXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I+KGdsb2JhbE9iamVj
dCwgV1RGTW92ZShvYmplY3QpKTsKK30KKworSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdlYkdQVVJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvciYgb2JqZWN0KQoreworICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxP
YmplY3QsIG9iamVjdCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dlYkdQVVJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jM2QxYzMyNWIyMTA5YzRjMjdkMmUwOWFjYjc3NjhhNTU5YjM2ODg0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0Q3VzdG9tLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKwor
dXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEpTV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KCZ3cmFwcGVkKCkpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDYW52YXNFbGVtZW50LmNwcAppbmRleCA0YjUxZWZlOWM3NGY5ODkyYzBlMmFkNGZhZjMwZDkx
NWFjNzY1ZmE4Li40ZjEyNTY5YmM3ZTEwMjM0YTc5ZGI4OTYxMzY0MzYxOGNkMzQ0NDdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2LCAyMDA3LCAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAg
VG9rZXIgPGFscEBhdG9rZXIuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDEwIFRvcmNoIE1vYmls
ZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC02Miw2ICs2
MiwxMCBAQAogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKICNlbmRpZgog
CisjaWYgRU5BQkxFKFdFQkdQVSkKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0Lmgi
CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIk1lZGlhU2FtcGxlQVZG
T2JqQy5oIgogCkBAIC0xOTUsNiArMTk5LDExIEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIEhU
TUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICBpZiAo
SFRNTENhbnZhc0VsZW1lbnQ6OmlzMmRUeXBlKHR5cGUpKQogICAgICAgICByZXR1cm4gZ2V0Q29u
dGV4dDJkKHR5cGUpOwogCisjaWYgRU5BQkxFKFdFQkdQVSkKKyAgICBpZiAoSFRNTENhbnZhc0Vs
ZW1lbnQ6OmlzV2ViR1BVVHlwZSh0eXBlKSkKKyAgICAgICAgcmV0dXJuIGdldENvbnRleHRXZWJH
UFUodHlwZSk7CisjZW5kaWYKKwogI2lmIEVOQUJMRShXRUJHTCkKICAgICBpZiAoSFRNTENhbnZh
c0VsZW1lbnQ6OmlzM2RUeXBlKHR5cGUpKQogICAgICAgICByZXR1cm4gZ2V0Q29udGV4dFdlYkdM
KHR5cGUpOwpAQCAtMjk4LDYgKzMwNywzMSBAQCBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBIVE1M
Q2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dFdlYkdMKGNvbnN0IFN0cmluZyYgdHlwZSwgVwogfQog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCR1BVKQorYm9vbCBIVE1MQ2FudmFzRWxlbWVudDo6aXNX
ZWJHUFVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKK3sKKyAgICByZXR1cm4gdHlwZSA9PSAid2Vi
Z3B1IjsKK30KKworQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogSFRNTENhbnZhc0VsZW1lbnQ6Omdl
dENvbnRleHRXZWJHUFUoY29uc3QgU3RyaW5nJiB0eXBlKQoreworICAgIEFTU0VSVF9VTlVTRUQo
dHlwZSwgSFRNTENhbnZhc0VsZW1lbnQ6OmlzV2ViR1BVVHlwZSh0eXBlKSk7CisKKyAgICBpZiAo
bV9jb250ZXh0ICYmICFtX2NvbnRleHQtPmlzR1BVKCkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgaWYgKCFtX2NvbnRleHQpIHsKKyAgICAgICAgbV9jb250ZXh0ID0gV2ViR1BVUmVu
ZGVyaW5nQ29udGV4dDo6Y3JlYXRlKCp0aGlzKTsKKyAgICAgICAgaWYgKG1fY29udGV4dCkgewor
ICAgICAgICAgICAgLy8gTmVlZCB0byBtYWtlIHN1cmUgYSBSZW5kZXJMYXllciBhbmQgY29tcG9z
aXRpbmcgbGF5ZXIgZ2V0IGNyZWF0ZWQgZm9yIHRoZSBDYW52YXMKKyAgICAgICAgICAgIGludmFs
aWRhdGVTdHlsZUFuZExheWVyQ29tcG9zaXRpb24oKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7Cit9CisjZW5kaWYKKwogdm9pZCBIVE1MQ2FudmFzRWxl
bWVudDo6ZGlkRHJhdyhjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgY2xlYXJDb3BpZWRJ
bWFnZSgpOwpAQCAtMzU1LDYgKzM4OSwxMiBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpyZXNl
dCgpCiAKICAgICBzZXRTdXJmYWNlU2l6ZShuZXdTaXplKTsKIAorI2lmIEVOQUJMRShXRUJHUFUp
CisgICAgLy8gRklYTUU6IFdlYkdQVSBuZWVkcyBzb21ldGhpbmcgaGVyZSB0b28uCisgICAgaWYg
KGlzR1BVKCkgJiYgb2xkU2l6ZSAhPSBzaXplKCkpCisgICAgICAgIHN0YXRpY19jYXN0PFdlYkdQ
VVJlbmRlcmluZ0NvbnRleHQqPihtX2NvbnRleHQuZ2V0KCkpLT5yZXNoYXBlKHdpZHRoKCksIGhl
aWdodCgpKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIGlmIChpczNEKCkgJiYg
b2xkU2l6ZSAhPSBzaXplKCkpCiAgICAgICAgIHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UqPihtX2NvbnRleHQuZ2V0KCkpLT5yZXNoYXBlKHdpZHRoKCksIGhlaWdodCgpKTsK
QEAgLTQyMywxMiArNDYzLDI0IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcikKICAgICAgICAgfQogICAg
IH0KIAotI2lmIEVOQUJMRShXRUJHTCkgICAgCisjaWYgRU5BQkxFKFdFQkdQVSkKKyAgICBpZiAo
aXNHUFUoKSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8V2ViR1BVUmVuZGVyaW5nQ29udGV4dCo+KG1f
Y29udGV4dC5nZXQoKSktPm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKyNlbmRpZgorCisjaWYgRU5B
QkxFKFdFQkdMKQogICAgIGlmIChpczNEKCkpCiAgICAgICAgIHN0YXRpY19jYXN0PFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UqPihtX2NvbnRleHQuZ2V0KCkpLT5tYXJrTGF5ZXJDb21wb3NpdGVk
KCk7CiAjZW5kaWYKIH0KIAorI2lmIEVOQUJMRShXRUJHUFUpCitib29sIEhUTUxDYW52YXNFbGVt
ZW50Ojppc0dQVSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGV4dCAmJiBtX2NvbnRleHQt
PmlzR1BVKCk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShXRUJHTCkKIGJvb2wgSFRNTENhbnZh
c0VsZW1lbnQ6OmlzM0QoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5oCmluZGV4IGNlMDZmZmIxYjU3MjgwZThmMDI1ZGY3NjgxMWViNjRmYzgyMTZkMzguLjIy
Y2RlZjkzZmNiYjRmYjVkZTUyOWNjNzlmOGIwYTM1NWZlMjY3MjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA2LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwgMjAwOSwgMjAxMCwgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2Vy
IDxhbHBAYXRva2VyLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAxMCBUb3JjaCBNb2JpbGUgKEJl
aWppbmcpIENvLiBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtMTAwLDYgKzEwMCwx
MCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXMzZFR5cGUoY29uc3QgU3RyaW5nJik7CiAg
ICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogZ2V0Q29udGV4dFdlYkdMKGNvbnN0IFN0cmluZyYs
IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMmJiA9IHsgfSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VC
R1BVKQorICAgIHN0YXRpYyBib29sIGlzV2ViR1BVVHlwZShjb25zdCBTdHJpbmcmKTsKKyAgICBD
YW52YXNSZW5kZXJpbmdDb250ZXh0KiBnZXRDb250ZXh0V2ViR1BVKGNvbnN0IFN0cmluZyYpOwor
I2VuZGlmCiAKICAgICBzdGF0aWMgU3RyaW5nIHRvRW5jb2RpbmdNaW1lVHlwZShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxTdHJpbmc+IHRv
RGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVh
bGl0eSk7CkBAIC0xNzYsNiArMTgwLDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoV0VCR0wpCiAg
ICAgYm9vbCBpczNEKCkgY29uc3Q7CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCR1BVKQorICAgIGJv
b2wgaXNHUFUoKSBjb25zdDsKKyNlbmRpZgogCiAgICAgSGFzaFNldDxDYW52YXNPYnNlcnZlcio+
IG1fb2JzZXJ2ZXJzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDYW52YXNSZW5kZXJpbmdDb250ZXh0
PiBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggNzU5MDgwZjUzMWQxYjBlZTU2ZDhlNjhkNjI1NDU5NTYw
YzZhMmYxYS4uY2I1MGM3Njg1MjlhOTU1ZDUyOGEzZjNhY2NlMjEyNTI2YTFjZTVlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNTQsNiArNTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzV2ViR0wxKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNXZWJHTDIoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXMzZCgpIGNvbnN0IHsgcmV0dXJuIGlzV2ViR0wx
KCkgfHwgaXNXZWJHTDIoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0dQVSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKCkge30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVCdWZmZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlZmMzZDk0ZTZiYjI1YTVmMGJkODZjZTQwZjRiZDA3ZmJhMTMyOGIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVCdWZmZXIu
Y3BwCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BVQnVmZmVyLmgi
CisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiR1BVQnVmZmVyLmgiCisjaW5jbHVk
ZSAiV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZm
ZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8V2ViR1BVQnVmZmVyPiBXZWJHUFVC
dWZmZXI6OmNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBBcnJheUJ1ZmZl
clZpZXcqIGRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQnVmZmVyKGNv
bnRleHQsIGRhdGEpKTsKK30KKworV2ViR1BVQnVmZmVyOjpXZWJHUFVCdWZmZXIoV2ViR1BVUmVu
ZGVyaW5nQ29udGV4dCogY29udGV4dCwgQXJyYXlCdWZmZXJWaWV3KiBkYXRhKQorICAgIDogV2Vi
R1BVT2JqZWN0KGNvbnRleHQpCit7CisgICAgbV9idWZmZXIgPSBjb250ZXh0LT5kZXZpY2UoKS0+
Y3JlYXRlQnVmZmVyRnJvbURhdGEoZGF0YSk7Cit9CisKK1dlYkdQVUJ1ZmZlcjo6fldlYkdQVUJ1
ZmZlcigpCit7Cit9CisKK3Vuc2lnbmVkIGxvbmcgV2ViR1BVQnVmZmVyOjpsZW5ndGgoKSBjb25z
dAoreworICAgIGlmICghbV9idWZmZXIpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJu
IG1fYnVmZmVyLT5sZW5ndGgoKTsKK30KKworUmVmUHRyPEFycmF5QnVmZmVyPiBXZWJHUFVCdWZm
ZXI6OmNvbnRlbnRzKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBtX2J1ZmZlci0+Y29udGVudHMoKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdQVUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVQnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjhiY2QzMDU4MTZmMTJhMjZlNTBiNzkzZWUzOTRl
MDlmYjdkZjU3NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVUJ1ZmZlci5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUp
CisKKyNpbmNsdWRlICJXZWJHUFVPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBHUFVCdWZmZXI7CisKK2NsYXNzIFdlYkdQVUJ1ZmZlciA6IHB1YmxpYyBXZWJHUFVPYmpl
Y3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVUJ1ZmZlcigpOworICAgIHN0YXRpYyBS
ZWY8V2ViR1BVQnVmZmVyPiBjcmVhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIEFycmF5QnVm
ZmVyVmlldyopOworCisgICAgdW5zaWduZWQgbG9uZyBsZW5ndGgoKSBjb25zdDsKKyAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IGNvbnRlbnRzKCkgY29uc3Q7CisKKyAgICBHUFVCdWZmZXIqIGJ1ZmZl
cigpIHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgV2ViR1BVQnVm
ZmVyKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBBcnJheUJ1ZmZlclZpZXcqKTsKKyAgICBSZWZQ
dHI8R1BVQnVmZmVyPiBtX2J1ZmZlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVCdWZm
ZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQnVmZmVyLmlkbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43YmM4OWNkN2NjNTJkYTJkZmEyZDliNjA4NGI3MmJlNmQyNTIyZDY3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQnVmZmVyLmlkbApA
QCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdl
YkdQVQorXSBpbnRlcmZhY2UgV2ViR1BVQnVmZmVyIHsKKworICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgQXJyYXlCdWZm
ZXJWaWV3IGNvbnRlbnRzOworCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMGVhZjgxOWQyNTY5YTk1ZDNk
ZTE5ZTQ2Mjg0NzUxYjgyYzNjMTkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKQEAgLTAsMCArMSw4NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJHUFVDb21tYW5kQnVmZmVyLmgiCisKKyNpZiBFTkFCTEUoV0VC
R1BVKQorCisvKiBGSVhNRTogV2ViR1BVIC0gTm90IGltcGxlbWVudGVkIHlldC4KKyNpbmNsdWRl
ICJHUFVDb21tYW5kQnVmZmVyLmgiCisjaW5jbHVkZSAiR1BVQ29tbWFuZFF1ZXVlLmgiCisqLwor
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJXZWJHUFVDb21tYW5kUXVldWUuaCIKKyNp
bmNsdWRlICJXZWJHUFVEcmF3YWJsZS5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlckNvbW1hbmRF
bmNvZGVyLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKKyNpbmNs
dWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
UmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShXZWJH
UFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBXZWJHUFVDb21tYW5kUXVldWUqIHF1ZXVlKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUNvbW1hbmRCdWZmZXIoY29udGV4dCwg
cXVldWUpKTsKK30KKworV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6V2ViR1BVQ29tbWFuZEJ1ZmZlcihX
ZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBXZWJHUFVDb21tYW5kUXVldWUqIHF1ZXVl
KQorICAgIDogV2ViR1BVT2JqZWN0KGNvbnRleHQpCit7CisgICAgTE9HKFdlYkdQVSwgIldlYkdQ
VUNvbW1hbmRCdWZmZXI6OldlYkdQVUNvbW1hbmRCdWZmZXIoKSIpOworICAgIG1fY29tbWFuZEJ1
ZmZlciA9IHF1ZXVlLT5jb21tYW5kUXVldWUoKS0+Y3JlYXRlQ29tbWFuZEJ1ZmZlcigpOworfQor
CitXZWJHUFVDb21tYW5kQnVmZmVyOjp+V2ViR1BVQ29tbWFuZEJ1ZmZlcigpCit7CisgICAgTE9H
KFdlYkdQVSwgIldlYkdQVUNvbW1hbmRCdWZmZXI6On5XZWJHUFVDb21tYW5kQnVmZmVyKCkiKTsK
K30KKwordm9pZCBXZWJHUFVDb21tYW5kQnVmZmVyOjpjb21taXQoKQoreworICAgIExPRyhXZWJH
UFUsICJXZWJHUFVDb21tYW5kQnVmZmVyOjpjb21taXQoKSIpOworICAgIGlmICghbV9jb21tYW5k
QnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICByZXR1cm4gbV9jb21tYW5kQnVmZmVyLT5j
b21taXQoKTsKK30KKwordm9pZCBXZWJHUFVDb21tYW5kQnVmZmVyOjpwcmVzZW50RHJhd2FibGUo
V2ViR1BVRHJhd2FibGUmIGRyYXdhYmxlKQoreworICAgIExPRyhXZWJHUFUsICJXZWJHUFVDb21t
YW5kQnVmZmVyOjpwcmVzZW50RHJhd2FibGUoKSIpOworICAgIGlmICghbV9jb21tYW5kQnVmZmVy
KQorICAgICAgICByZXR1cm47CisKKyAgICByZXR1cm4gbV9jb21tYW5kQnVmZmVyLT5wcmVzZW50
RHJhd2FibGUoZHJhd2FibGUuZHJhd2FibGUoKSk7Cit9CisKK1JlZlB0cjxXZWJHUFVSZW5kZXJD
b21tYW5kRW5jb2Rlcj4gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlUmVuZGVyQ29tbWFuZEVu
Y29kZXJXaXRoRGVzY3JpcHRvcihXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciYgZGVzY3JpcHRv
cikKK3sKKyAgICBSZWZQdHI8V2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI+IGNvbW1hbmRFbmNv
ZGVyID0gV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI6OmNyZWF0ZSh0aGlzLT5jb250ZXh0KCks
IHRoaXMsICZkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4gY29tbWFuZEVuY29kZXI7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHUFVDb21tYW5kQnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWYyNmE0ZTFhMWEyMDBi
ZWM5Zjk3NzcxZTQ0OTMzMmZjN2Q1YzI0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRCdWZmZXIuaApAQCAtMCwwICsxLDczIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0LmgiCisKKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gRklYTUU6
IFdlYkdQVSAtIFN0dWIgaW1wbGVtZW50YXRpb24gLSBub3QgaW1wbGVtZW50ZWQgeWV0LgorLy8g
Y2xhc3MgR1BVQ29tbWFuZEJ1ZmZlcjsKK2NsYXNzIEdQVURyYXdhYmxlOworY2xhc3MgR1BVUmVu
ZGVyQ29tbWFuZEVuY29kZXI7CitjbGFzcyBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjsKK2NsYXNz
IEdQVUNvbW1hbmRCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVDb21tYW5kQnVmZmVyPiB7
CitwdWJsaWM6CisgICAgR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIqIGNyZWF0ZVJlbmRlckNvbW1h
bmRFbmNvZGVyKEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yKikgeyByZXR1cm4gbnVsbHB0cjsgfQor
ICAgIHZvaWQgY29tbWl0KCkgeyB9CisgICAgdm9pZCBwcmVzZW50RHJhd2FibGUoR1BVRHJhd2Fi
bGUqKSB7IH0KK307CisvLyBGSVhNRTogV2ViR1BVIC0gRW5kIHN0dWIuCitjbGFzcyBXZWJHUFVD
b21tYW5kUXVldWU7CitjbGFzcyBXZWJHUFVEcmF3YWJsZTsKK2NsYXNzIFdlYkdQVUZ1bmN0aW9u
OworY2xhc3MgV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI7CitjbGFzcyBXZWJHUFVSZW5kZXJQ
YXNzRGVzY3JpcHRvcjsKKworY2xhc3MgV2ViR1BVQ29tbWFuZEJ1ZmZlciA6IHB1YmxpYyBXZWJH
UFVPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVUNvbW1hbmRCdWZmZXIoKTsK
KyAgICBzdGF0aWMgUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IGNyZWF0ZShXZWJHUFVSZW5kZXJp
bmdDb250ZXh0KiwgV2ViR1BVQ29tbWFuZFF1ZXVlKik7CisKKyAgICB2b2lkIGNvbW1pdCgpOwor
ICAgIHZvaWQgcHJlc2VudERyYXdhYmxlKFdlYkdQVURyYXdhYmxlJik7CisKKyAgICBSZWZQdHI8
V2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI+IGNyZWF0ZVJlbmRlckNvbW1hbmRFbmNvZGVyV2l0
aERlc2NyaXB0b3IoV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3ImKTsKKworICAgIEdQVUNvbW1h
bmRCdWZmZXIqIGNvbW1hbmRCdWZmZXIoKSB7IHJldHVybiBtX2NvbW1hbmRCdWZmZXIuZ2V0KCk7
IH0KKworcHJpdmF0ZToKKyAgICBXZWJHUFVDb21tYW5kQnVmZmVyKFdlYkdQVVJlbmRlcmluZ0Nv
bnRleHQqLCBXZWJHUFVDb21tYW5kUXVldWUqKTsKKyAgICBSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZl
cj4gbV9jb21tYW5kQnVmZmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRC
dWZmZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVQ29tbWFuZEJ1ZmZl
ci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOWRjMTc2NDFiZTRlOTA1NDIyZGY0NjZkY2FjNGI4ODIwYWMxNDA4
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUNv
bW1hbmRCdWZmZXIuaWRsCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVu
YWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGludGVyZmFjZSBXZWJHUFVDb21tYW5kQnVmZmVyIHsK
KworICAgIFdlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyIGNyZWF0ZVJlbmRlckNvbW1hbmRFbmNv
ZGVyV2l0aERlc2NyaXB0b3IoV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IgZGVzY3JpcHRvcik7
CisgICAgdm9pZCBjb21taXQoKTsKKyAgICB2b2lkIHByZXNlbnREcmF3YWJsZShXZWJHUFVEcmF3
YWJsZSBkcmF3YWJsZSk7CisKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHUFVDb21tYW5kUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVQ29tbWFuZFF1ZXVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjU3Y2YzOGU1YjY2YWYwYzQ0Zjkx
YjU0YWEwZjQ3MjZmNzZhNzdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVQ29tbWFuZFF1ZXVlLmNwcApAQCAtMCwwICsxLDc4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRRdWV1ZS5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkK
KworLyogRklYTUU6IFdlYkdQVSAtIE5vdCBpbXBsZW1lbnRlZCB5ZXQuCisjaW5jbHVkZSAiR1BV
Q29tbWFuZFF1ZXVlLmgiCisqLworI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRCdWZmZXIuaCIKKyNp
bmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworUmVmPFdlYkdQVUNvbW1hbmRRdWV1ZT4gV2ViR1BVQ29tbWFuZFF1ZXVlOjpjcmVhdGUoV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJHUFVDb21tYW5kUXVldWUoY29udGV4dCkpOworfQorCitXZWJHUFVDb21tYW5kUXVldWU6
OldlYkdQVUNvbW1hbmRRdWV1ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0KQorICAg
IDogV2ViR1BVT2JqZWN0KGNvbnRleHQpCit7CisgICAgbV9jb21tYW5kUXVldWUgPSBjb250ZXh0
LT5kZXZpY2UoKS0+Y3JlYXRlQ29tbWFuZFF1ZXVlKCk7Cit9CisKK1dlYkdQVUNvbW1hbmRRdWV1
ZTo6fldlYkdQVUNvbW1hbmRRdWV1ZSgpCit7Cit9CisKK1N0cmluZyBXZWJHUFVDb21tYW5kUXVl
dWU6OmxhYmVsKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fY29tbWFuZFF1ZXVlKQorICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIHJldHVybiBtX2NvbW1hbmRRdWV1ZS0+bGFiZWwo
KTsKK30KKwordm9pZCBXZWJHUFVDb21tYW5kUXVldWU6OnNldExhYmVsKGNvbnN0IFN0cmluZyYg
bGFiZWwpCit7CisgICAgaWYgKCFtX2NvbW1hbmRRdWV1ZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9jb21tYW5kUXVldWUtPnNldExhYmVsKGxhYmVsKTsKK30KKworUmVmUHRyPFdlYkdQVUNv
bW1hbmRCdWZmZXI+IFdlYkdQVUNvbW1hbmRRdWV1ZTo6Y3JlYXRlQ29tbWFuZEJ1ZmZlcigpCit7
CisgICAgUmVmUHRyPFdlYkdQVUNvbW1hbmRCdWZmZXI+IGJ1ZmZlciA9IFdlYkdQVUNvbW1hbmRC
dWZmZXI6OmNyZWF0ZSh0aGlzLT5jb250ZXh0KCksIHRoaXMpOworICAgIHJldHVybiBidWZmZXI7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kUXVldWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRRdWV1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmMzk1OWZi
MzUxODVhNDg4MzIxNDA4ODc5YmRjNzhjOGU0MDRmZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kUXVldWUuaApAQCAtMCwwICsxLDcw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0Lmgi
CisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgR1BVQ29tbWFuZEJ1ZmZlcjsKKworLy8gRklYTUU6IFdlYkdQVSAtIFN0dWIgaW1wbGVtZW50
YXRpb24gLSBub3QgaW1wbGVtZW50ZWQgeWV0LgorLy8gY2xhc3MgR1BVQ29tbWFuZFF1ZXVlOwor
Y2xhc3MgR1BVQ29tbWFuZFF1ZXVlIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVQ29tbWFuZFF1ZXVl
PiB7CitwdWJsaWM6CisgICAgR1BVQ29tbWFuZEJ1ZmZlciogY3JlYXRlQ29tbWFuZEJ1ZmZlcigp
IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBTdHJpbmcgbGFiZWwoKSBjb25zdCB7IHJldHVybiBl
bXB0eVN0cmluZygpOyB9CisgICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKSB7IH0KK307
CisvLyBGSVhNRTogV2ViR1BVIC0gRW5kIHN0dWIuCisKK2NsYXNzIFdlYkdQVUNvbW1hbmRCdWZm
ZXI7CisKK2NsYXNzIFdlYkdQVUNvbW1hbmRRdWV1ZSA6IHB1YmxpYyBXZWJHUFVPYmplY3Qgewor
cHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVUNvbW1hbmRRdWV1ZSgpOworICAgIHN0YXRpYyBS
ZWY8V2ViR1BVQ29tbWFuZFF1ZXVlPiBjcmVhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCopOwor
CisgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJp
bmcmKTsKKworICAgIFJlZlB0cjxXZWJHUFVDb21tYW5kQnVmZmVyPiBjcmVhdGVDb21tYW5kQnVm
ZmVyKCk7CisKKyAgICBHUFVDb21tYW5kUXVldWUqIGNvbW1hbmRRdWV1ZSgpIHsgcmV0dXJuIG1f
Y29tbWFuZFF1ZXVlLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgV2ViR1BVQ29tbWFuZFF1ZXVl
KFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqKTsKKworICAgIFJlZlB0cjxHUFVDb21tYW5kUXVldWU+
IG1fY29tbWFuZFF1ZXVlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUNvbW1hbmRRdWV1
ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5kUXVldWUuaWRs
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmMxNjg5Yjc2NjU4NmVlY2M0YzA2MjQ2MTRjOGYwNDdlOTI3ZDE4ZDAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVDb21tYW5k
UXVldWUuaWRsCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRB
dFJ1bnRpbWU9V2ViR1BVCitdIGludGVyZmFjZSBXZWJHUFVDb21tYW5kUXVldWUgeworCisgICAg
YXR0cmlidXRlIERPTVN0cmluZyBsYWJlbDsKKworICAgIFdlYkdQVUNvbW1hbmRCdWZmZXI/IGNy
ZWF0ZUNvbW1hbmRCdWZmZXIoKTsKKworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzUzNGI3MzY4YmIyNjA0N2FmOWNhYWYxNzUwNDAyZjdkNmYxZTJkNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbERlc2Ny
aXB0b3IuY3BwCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdQVURl
cHRoU3RlbmNpbERlc2NyaXB0b3IuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKy8qIEZJWE1F
OiBXZWJHUFUgLSBOb3QgaW1wbGVtZW50ZWQgeWV0LgorI2luY2x1ZGUgIkdQVURlcHRoU3RlbmNp
bERlc2NyaXB0b3IuaCIKKyovCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9y
PiBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpjcmVhdGUoKQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IoKSk7Cit9CisKK1dlYkdQ
VURlcHRoU3RlbmNpbERlc2NyaXB0b3I6OldlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IoKQor
ICAgIDogV2ViR1BVT2JqZWN0KCkKK3sKKyAgICBtX2RlcHRoU3RlbmNpbERlc2NyaXB0b3IgPSBH
UFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpjcmVhdGUoKTsKK30KKworV2ViR1BVRGVwdGhTdGVu
Y2lsRGVzY3JpcHRvcjo6fldlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IoKQoreworfQorCitT
dHJpbmcgV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6bGFiZWwoKSBjb25zdAoreworICAg
IGlmICghbV9kZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKKworICAgIHJldHVybiBtX2RlcHRoU3RlbmNpbERlc2NyaXB0b3ItPmxhYmVsKCk7Cit9
CisKK3ZvaWQgV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6c2V0TGFiZWwoY29uc3QgU3Ry
aW5nJiBsYWJlbCkKK3sKKyAgICBpZiAoIW1fZGVwdGhTdGVuY2lsRGVzY3JpcHRvcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9kZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLT5zZXRMYWJlbChsYWJl
bCk7Cit9CisKK2Jvb2wgV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6ZGVwdGhXcml0ZUVu
YWJsZWQoKSBjb25zdAoreworICAgIGlmICghbV9kZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbV9kZXB0aFN0ZW5jaWxEZXNjcmlwdG9y
LT5kZXB0aFdyaXRlRW5hYmxlZCgpOworfQorCit2b2lkIFdlYkdQVURlcHRoU3RlbmNpbERlc2Ny
aXB0b3I6OnNldERlcHRoV3JpdGVFbmFibGVkKGJvb2wgbmV3RGVwdGhXcml0ZUVuYWJsZWQpCit7
CisgICAgaWYgKCFtX2RlcHRoU3RlbmNpbERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fZGVwdGhTdGVuY2lsRGVzY3JpcHRvci0+c2V0RGVwdGhXcml0ZUVuYWJsZWQobmV3RGVw
dGhXcml0ZUVuYWJsZWQpOworfQorCithdXRvIFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3I6
OmRlcHRoQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3QgLT4gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uCit7
CisgICAgcmV0dXJuIG1fZGVwdGhDb21wYXJlRnVuY3Rpb247Cit9CisKK3ZvaWQgV2ViR1BVRGVw
dGhTdGVuY2lsRGVzY3JpcHRvcjo6c2V0RGVwdGhDb21wYXJlRnVuY3Rpb24oQ29tcGFyZUZ1bmN0
aW9uIG5ld0RlcHRoQ29tcGFyZUZ1bmN0aW9uKQoreworICAgIG1fZGVwdGhDb21wYXJlRnVuY3Rp
b24gPSBuZXdEZXB0aENvbXBhcmVGdW5jdGlvbjsKKyAgICBtX2RlcHRoU3RlbmNpbERlc2NyaXB0
b3ItPnNldERlcHRoQ29tcGFyZUZ1bmN0aW9uKHRvR1BVQ29tcGFyZUZ1bmN0aW9uKG1fZGVwdGhD
b21wYXJlRnVuY3Rpb24pKTsKKworLy8gRklYTUU6IFdlYkdQVSAtIG5vdCBpbXBsZW1lbnRlZCB5
ZXQuCisvLyAgICBpZiAoT3B0aW9uYWw8V2ViR1BVQ29tcGFyZUZ1bmN0aW9uPiBjb21wYXJlRnVu
Y3Rpb24gPSB0b1dlYkdQVUNvbXBhcmVGdW5jdGlvbihuZXdEZXB0aENvbXBhcmVGdW5jdGlvbikp
IHsKKy8vICAgICAgICBtX2RlcHRoQ29tcGFyZUZ1bmN0aW9uID0gY29tcGFyZUZ1bmN0aW9uLnZh
bHVlKCk7CisvLyAgICAgICAgbV9kZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLT5zZXREZXB0aENvbXBh
cmVGdW5jdGlvbih0b0dQVUNvbXBhcmVGdW5jdGlvbihtX2RlcHRoQ29tcGFyZUZ1bmN0aW9uKSk7
CisvLyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlw
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxEZXNj
cmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Y1NmI5YzcxNDVmYzI1MTBmYzY4ZGI1ODMzY2U2OTQwNWI5
NTk1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BVRW51bXMuaCIKKyNpbmNsdWRlICJXZWJHUFVP
YmplY3QuaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisvLyBGSVhNRTogV2ViR1BVIC0gU3R1YiBpbXBsZW1lbnRhdGlvbiAtIG5vdCBpbXBsZW1l
bnRlZCB5ZXQuCisvLyBjbGFzcyBHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOworY2xhc3MgR1BV
RGVwdGhTdGVuY2lsRGVzY3JpcHRvciA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVURlcHRoU3RlbmNp
bERlc2NyaXB0b3I+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPEdQVURlcHRoU3RlbmNp
bERlc2NyaXB0b3I+IGNyZWF0ZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBTdHJpbmcgbGFi
ZWwoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CisgICAgdm9pZCBzZXRMYWJlbChj
b25zdCBTdHJpbmcmKSB7IH0KKyAgICBib29sIGRlcHRoV3JpdGVFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIHNldERlcHRoV3JpdGVFbmFibGVkKGJvb2wpIHsgfQor
ICAgIHZvaWQgc2V0RGVwdGhDb21wYXJlRnVuY3Rpb24oR1BVQ29tcGFyZUZ1bmN0aW9uKSB7IH0K
K307CisvLyBGSVhNRTogV2ViR1BVIC0gRW5kIHN0dWIuCisKK2NsYXNzIFdlYkdQVURlcHRoU3Rl
bmNpbERlc2NyaXB0b3IgOiBwdWJsaWMgV2ViR1BVT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5XZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCk7CisgICAgc3RhdGljIFJlZjxXZWJH
UFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yPiBjcmVhdGUoKTsKKworICAgIFN0cmluZyBsYWJlbCgp
IGNvbnN0OworICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgU3RyaW5nJik7CisKKyAgICBib29sIGRl
cHRoV3JpdGVFbmFibGVkKCkgY29uc3Q7CisgICAgdm9pZCBzZXREZXB0aFdyaXRlRW5hYmxlZChi
b29sKTsKKworICAgIHVzaW5nIENvbXBhcmVGdW5jdGlvbiA9IFdlYkdQVUNvbXBhcmVGdW5jdGlv
bjsKKyAgICBDb21wYXJlRnVuY3Rpb24gZGVwdGhDb21wYXJlRnVuY3Rpb24oKSBjb25zdDsKKyAg
ICB2b2lkIHNldERlcHRoQ29tcGFyZUZ1bmN0aW9uKENvbXBhcmVGdW5jdGlvbik7CisKKyAgICBH
UFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKiBkZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCkgeyByZXR1
cm4gbV9kZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgV2Vi
R1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcigpOworCisgICAgV2ViR1BVQ29tcGFyZUZ1bmN0aW9u
IG1fZGVwdGhDb21wYXJlRnVuY3Rpb247CisgICAgUmVmUHRyPEdQVURlcHRoU3RlbmNpbERlc2Ny
aXB0b3I+IG1fZGVwdGhTdGVuY2lsRGVzY3JpcHRvcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzYjVmYzk5
ZmNkNzc2ZDA2ZGVmMzFhOWRmNWQ3NWI3Nzk5NDRhZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmlkbApA
QCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdl
YkdQVQorXSBlbnVtIFdlYkdQVUNvbXBhcmVGdW5jdGlvbiB7CisgICAgIm5ldmVyIiwKKyAgICAi
bGVzcyIsCisgICAgImVxdWFsIiwKKyAgICAibGVzc2VxdWFsIiwKKyAgICAiZ3JlYXRlciIsCisg
ICAgIm5vdGVxdWFsIiwKKyAgICAiZ3JlYXRlcmVxdWFsIiwKKyAgICAiYWx3YXlzIgorfTsKKwor
WworICAgIENvbnN0cnVjdG9yLAorICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVk
QXRSdW50aW1lPVdlYkdQVQorXSBpbnRlcmZhY2UgV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRv
ciB7CisKKyAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOworCisgICAgYXR0cmlidXRlIFdl
YkdQVUNvbXBhcmVGdW5jdGlvbiBkZXB0aENvbXBhcmVGdW5jdGlvbjsKKyAgICBhdHRyaWJ1dGUg
Ym9vbGVhbiBkZXB0aFdyaXRlRW5hYmxlZDsKKworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
ZjNmMmFkZTE1ZDA3NGY5ZTNkMTQ4ZWJjNDMwMWJiOTdiOWY3MjYxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3Bw
CkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BVRGVwdGhTdGVuY2ls
U3RhdGUuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKy8qIEZJWE1FOiBXZWJHUFUgLSBOb3Qg
aW1wbGVtZW50ZWQgeWV0LgorI2luY2x1ZGUgIkdQVURlcHRoU3RlbmNpbFN0YXRlLmgiCisgKi8K
KyNpbmNsdWRlICJXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXZWJH
UFVEZXB0aFN0ZW5jaWxTdGF0ZT4gV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGU6OmNyZWF0ZShXZWJH
UFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9y
KiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVURlcHRoU3Rl
bmNpbFN0YXRlKGNvbnRleHQsIGRlc2NyaXB0b3IpKTsKK30KKworV2ViR1BVRGVwdGhTdGVuY2ls
U3RhdGU6OldlYkdQVURlcHRoU3RlbmNpbFN0YXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNv
bnRleHQsIFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCisgICAgOiBX
ZWJHUFVPYmplY3QoY29udGV4dCkKK3sKKyAgICBpZiAoIWNvbnRleHQgfHwgIWRlc2NyaXB0b3Ip
CisgICAgICAgIHJldHVybjsKKyAgICBtX2RlcHRoU3RlbmNpbFN0YXRlID0gR1BVRGVwdGhTdGVu
Y2lsU3RhdGU6OmNyZWF0ZShjb250ZXh0LT5kZXZpY2UoKS5nZXQoKSwgZGVzY3JpcHRvci0+ZGVw
dGhTdGVuY2lsRGVzY3JpcHRvcigpKTsKK30KKworV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGU6On5X
ZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZSgpCit7Cit9CisKK1N0cmluZyBXZWJHUFVEZXB0aFN0ZW5j
aWxTdGF0ZTo6bGFiZWwoKSBjb25zdAoreworICAgIGlmICghbV9kZXB0aFN0ZW5jaWxTdGF0ZSkK
KyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4gbV9kZXB0aFN0ZW5j
aWxTdGF0ZS0+bGFiZWwoKTsKK30KKwordm9pZCBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZTo6c2V0
TGFiZWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKK3sKKyAgICBpZiAoIW1fZGVwdGhTdGVuY2lsU3Rh
dGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZGVwdGhTdGVuY2lsU3RhdGUtPnNldExhYmVs
KGxhYmVsKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjNkNDU5MWVmYzJiMWE0OTUxMWExMjM0MmI2NWEzM2RhYTg1YTczOGYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5j
aWxTdGF0ZS5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlICJXZWJHUFVPYmplY3QuaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCisvLyBGSVhNRTogV2ViR1BVIC0gU3R1YiBpbXBsZW1lbnRhdGlv
biAtIG5vdCBpbXBsZW1lbnRlZCB5ZXQuCisvLyBjbGFzcyBHUFVEZXB0aFN0ZW5jaWxTdGF0ZTsK
K2NsYXNzIEdQVURldmljZTsKK2NsYXNzIEdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3I7CitjbGFz
cyBHUFVEZXB0aFN0ZW5jaWxTdGF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVURlcHRoU3RlbmNp
bFN0YXRlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxHUFVEZXB0aFN0ZW5jaWxTdGF0
ZT4gY3JlYXRlKEdQVURldmljZSosIEdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IqKSB7IHJldHVy
biBudWxscHRyOyB9CisgICAgU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJp
bmcoKTsgfQorICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgU3RyaW5nJikgeyB9Cit9OworLy8gRklY
TUU6IFdlYkdQVSAtIEVuZCBzdHViLgorY2xhc3MgV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRv
cjsKKworY2xhc3MgV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUgOiBwdWJsaWMgV2ViR1BVT2JqZWN0
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZSgpOworICAg
IHN0YXRpYyBSZWY8V2ViR1BVRGVwdGhTdGVuY2lsU3RhdGU+IGNyZWF0ZShXZWJHUFVSZW5kZXJp
bmdDb250ZXh0KiwgV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvciopOworCisgICAgU3RyaW5n
IGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKTsKKworICAg
IEdQVURlcHRoU3RlbmNpbFN0YXRlKiBkZXB0aFN0ZW5jaWxTdGF0ZSgpIHsgcmV0dXJuIG1fZGVw
dGhTdGVuY2lsU3RhdGUuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWJHUFVEZXB0aFN0ZW5j
aWxTdGF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3Jp
cHRvciopOworCisgICAgUmVmUHRyPEdQVURlcHRoU3RlbmNpbFN0YXRlPiBtX2RlcHRoU3RlbmNp
bFN0YXRlOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0
ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0
ZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTYxNWJkZjhjMzhkMDM1ZDU5ZTQ5ZWE3ZjQ3YzQ1YjQ0MmFkN2Zi
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURl
cHRoU3RlbmNpbFN0YXRlLmlkbApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAg
ICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBpbnRlcmZhY2UgV2ViR1BVRGVwdGhTdGVuY2ls
U3RhdGUgeworCisgICAgYXR0cmlidXRlIERPTVN0cmluZyBsYWJlbDsKKworfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURyYXdhYmxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVURyYXdhYmxlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZjNj
ZjhlYmVjYTVhNGRhODliOTk4ZWM1MDgzMzA0MzdkOWZlOGU5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRHJhd2FibGUuY3BwCkBAIC0wLDAgKzEs
NzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BVRHJhd2FibGUuaCIKKworI2lmIEVOQUJM
RShXRUJHUFUpCisKKy8qIEZJWE1FOiBXZWJHUFUgLSBOb3QgaW1wbGVtZW50ZWQgeWV0LgorI2lu
Y2x1ZGUgIkdQVURyYXdhYmxlLmgiCisgKi8KKyNpbmNsdWRlICJHUFVUZXh0dXJlLmgiCisjaW5j
bHVkZSAiV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVVRleHR1cmUu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8V2ViR1BVRHJhd2FibGU+IFdlYkdQVURy
YXdhYmxlOjpjcmVhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVEcmF3YWJsZShjb250ZXh0KSk7Cit9CisKK1dlYkdQ
VURyYXdhYmxlOjpXZWJHUFVEcmF3YWJsZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0
KQorICAgIDogV2ViR1BVT2JqZWN0KGNvbnRleHQpCit7CisgICAgbV9kcmF3YWJsZSA9IGNvbnRl
eHQtPmRldmljZSgpLT5nZXRGcmFtZWJ1ZmZlcigpOworICAgIGlmICghbV9kcmF3YWJsZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPEdQVVRleHR1cmU+IGRyYXdhYmxlVGV4dHVyZSA9
IEdQVVRleHR1cmU6OmNyZWF0ZUZyb21FeGlzdGluZ1RleHR1cmUobV9kcmF3YWJsZS0+dGV4dHVy
ZSgpKTsKKyAgICBtX3RleHR1cmUgPSBXZWJHUFVUZXh0dXJlOjpjcmVhdGVGcm9tRHJhd2FibGVU
ZXh0dXJlKGNvbnRleHQsIGRyYXdhYmxlVGV4dHVyZSk7Cit9CisKK1dlYkdQVURyYXdhYmxlOjp+
V2ViR1BVRHJhd2FibGUoKQoreworfQorCitXZWJHUFVUZXh0dXJlKiBXZWJHUFVEcmF3YWJsZTo6
dGV4dHVyZSgpCit7CisgICAgaWYgKCFtX3RleHR1cmUpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdQVURyYXdhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEcmF3YWJs
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjYxMzBiOTk3ZmZhN2U2NmNhYWUxNmYwZDc0ZjM2YjU2MmRhN2E3ZWEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVEcmF3
YWJsZS5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNs
dWRlICJXZWJHUFVPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBGSVhNRTog
V2ViR1BVIC0gU3R1YiBpbXBsZW1lbnRhdGlvbiAtIG5vdCBpbXBsZW1lbnRlZCB5ZXQuCisvLyBj
bGFzcyBHUFVEcmF3YWJsZTsKK2NsYXNzIEdQVURyYXdhYmxlIDogcHVibGljIFJlZkNvdW50ZWQ8
R1BVRHJhd2FibGU+IHsKK3B1YmxpYzoKKyAgICBHUFVUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1
cm4gbnVsbHB0cjsgfQorfTsKKy8vIEZJWE1FOiBXZWJHUFUgLSBFbmQgc3R1Yi4KK2NsYXNzIFdl
YkdQVVRleHR1cmU7CisKK2NsYXNzIFdlYkdQVURyYXdhYmxlIDogcHVibGljIFdlYkdQVU9iamVj
dCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViR1BVRHJhd2FibGUoKTsKKyAgICBzdGF0aWMg
UmVmPFdlYkdQVURyYXdhYmxlPiBjcmVhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCopOworCisg
ICAgV2ViR1BVVGV4dHVyZSogdGV4dHVyZSgpOworCisgICAgR1BVRHJhd2FibGUqIGRyYXdhYmxl
KCkgeyByZXR1cm4gbV9kcmF3YWJsZS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFdlYkdQVURy
YXdhYmxlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqKTsKKyAgICBSZWZQdHI8R1BVRHJhd2FibGU+
IG1fZHJhd2FibGU7CisgICAgUmVmUHRyPFdlYkdQVVRleHR1cmU+IG1fdGV4dHVyZTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVEcmF3YWJsZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHUFVEcmF3YWJsZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM5MDFjNDI0YTM0ZjE0MGEz
OTc4ZmY3MTkyZmVhYjEyOTA2MzEyMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdQVURyYXdhYmxlLmlkbApAQCAtMCwwICsxLDMzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFs
PVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBpbnRlcmZhY2UgV2ViR1BV
RHJhd2FibGUgeworCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdlYkdQVVRleHR1cmUgdGV4dHVy
ZTsgLy8gRklYTUU6IE9ubHkgdGhlIGZyYW1lYnVmZmVyIHNob3VsZCBoYXZlIHRoaXMuCisKK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVFbnVtcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVFbnVtcy5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTZkYjEzZTg5ZDA2MTQ5OThlODczYjQ4NWE2YWNjOGUzYzJlMzc1NwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUVudW1zLmNwcApAQCAtMCwwICsx
LDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHUFVFbnVtcy5oIgorCisjaWYgRU5BQkxF
KFdFQkdQVSkKKworLyogRklYTUU6IFdlYkdQVSAtIE5vdCBpbXBsZW1lbnRlZCB5ZXQuCisjaW5j
bHVkZSAiR1BVRW51bXMuaCIKKyAqLworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0ZDo6b3B0
aW9uYWw8V2ViR1BVQ29tcGFyZUZ1bmN0aW9uPiB0b1dlYkdQVUNvbXBhcmVGdW5jdGlvbihjb25z
dCBTdHJpbmcmIG5hbWUpCit7CisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KG5hbWUsICJuZXZlciIpKQorICAgICAgICByZXR1cm4gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpO
ZXZlcjsKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgImxlc3Mi
KSkKKyAgICAgICAgcmV0dXJuIFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6TGVzczsKKyAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgImVxdWFsIikpCisgICAgICAgIHJl
dHVybiBXZWJHUFVDb21wYXJlRnVuY3Rpb246OkVxdWFsOworICAgIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAibGVzc2VxdWFsIikpCisgICAgICAgIHJldHVybiBXZWJH
UFVDb21wYXJlRnVuY3Rpb246Okxlc3NlcXVhbDsKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UobmFtZSwgImdyZWF0ZXIiKSkKKyAgICAgICAgcmV0dXJuIFdlYkdQVUNvbXBh
cmVGdW5jdGlvbjo6R3JlYXRlcjsKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobmFtZSwgIm5vdGVxdWFsIikpCisgICAgICAgIHJldHVybiBXZWJHUFVDb21wYXJlRnVuY3Rp
b246Ok5vdGVxdWFsOworICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1l
LCAiZ3JlYXRlcmVxdWFsIikpCisgICAgICAgIHJldHVybiBXZWJHUFVDb21wYXJlRnVuY3Rpb246
OkdyZWF0ZXJlcXVhbDsKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFt
ZSwgImFsd2F5cyIpKQorICAgICAgICByZXR1cm4gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpBbHdh
eXM7CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworfQorCitTdHJpbmcgd2ViM0RDb21wYXJlRnVuY3Rpb25OYW1lKGNvbnN0IFdlYkdQVUNvbXBh
cmVGdW5jdGlvbiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUgPT0gV2ViR1BVQ29tcGFyZUZ1bmN0
aW9uOjpOZXZlcikKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgibmV2ZXIiKTsKKyAgICBp
ZiAodmFsdWUgPT0gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpMZXNzKQorICAgICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsKCJsZXNzIik7CisgICAgaWYgKHZhbHVlID09IFdlYkdQVUNvbXBhcmVGdW5j
dGlvbjo6RXF1YWwpCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImVxdWFsIik7CisgICAg
aWYgKHZhbHVlID09IFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6TGVzc2VxdWFsKQorICAgICAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsKCJsZXNzZXF1YWwiKTsKKyAgICBpZiAodmFsdWUgPT0gV2ViR1BV
Q29tcGFyZUZ1bmN0aW9uOjpHcmVhdGVyKQorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJn
cmVhdGVyIik7CisgICAgaWYgKHZhbHVlID09IFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6Tm90ZXF1
YWwpCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm5vdGVxdWFsIik7CisgICAgaWYgKHZh
bHVlID09IFdlYkdQVUNvbXBhcmVGdW5jdGlvbjo6R3JlYXRlcmVxdWFsKQorICAgICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsKCJncmVhdGVyZXF1YWwiKTsKKyAgICBpZiAodmFsdWUgPT0gV2ViR1BV
Q29tcGFyZUZ1bmN0aW9uOjpBbHdheXMpCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImFs
d2F5cyIpOworICAgIAorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBlbXB0
eVN0cmluZygpOworfQorCitHUFVDb21wYXJlRnVuY3Rpb24gdG9HUFVDb21wYXJlRnVuY3Rpb24o
Y29uc3QgV2ViR1BVQ29tcGFyZUZ1bmN0aW9uIHZhbHVlKQoreworICAgIGlmICh2YWx1ZSA9PSBX
ZWJHUFVDb21wYXJlRnVuY3Rpb246Ok5ldmVyKQorICAgICAgICByZXR1cm4gR1BVQ29tcGFyZUZ1
bmN0aW9uOjpOZXZlcjsKKyAgICBpZiAodmFsdWUgPT0gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpM
ZXNzKQorICAgICAgICByZXR1cm4gR1BVQ29tcGFyZUZ1bmN0aW9uOjpMZXNzOworICAgIGlmICh2
YWx1ZSA9PSBXZWJHUFVDb21wYXJlRnVuY3Rpb246OkVxdWFsKQorICAgICAgICByZXR1cm4gR1BV
Q29tcGFyZUZ1bmN0aW9uOjpFcXVhbDsKKyAgICBpZiAodmFsdWUgPT0gV2ViR1BVQ29tcGFyZUZ1
bmN0aW9uOjpMZXNzZXF1YWwpCisgICAgICAgIHJldHVybiBHUFVDb21wYXJlRnVuY3Rpb246Okxl
c3NFcXVhbDsKKyAgICBpZiAodmFsdWUgPT0gV2ViR1BVQ29tcGFyZUZ1bmN0aW9uOjpHcmVhdGVy
KQorICAgICAgICByZXR1cm4gR1BVQ29tcGFyZUZ1bmN0aW9uOjpHcmVhdGVyOworICAgIGlmICh2
YWx1ZSA9PSBXZWJHUFVDb21wYXJlRnVuY3Rpb246Ok5vdGVxdWFsKQorICAgICAgICByZXR1cm4g
R1BVQ29tcGFyZUZ1bmN0aW9uOjpOb3RFcXVhbDsKKyAgICBpZiAodmFsdWUgPT0gV2ViR1BVQ29t
cGFyZUZ1bmN0aW9uOjpHcmVhdGVyZXF1YWwpCisgICAgICAgIHJldHVybiBHUFVDb21wYXJlRnVu
Y3Rpb246OkdyZWF0ZXJFcXVhbDsKKyAgICBpZiAodmFsdWUgPT0gV2ViR1BVQ29tcGFyZUZ1bmN0
aW9uOjpBbHdheXMpCisgICAgICAgIHJldHVybiBHUFVDb21wYXJlRnVuY3Rpb246OkFsd2F5czsK
KyAgICAKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gR1BVQ29tcGFyZUZ1
bmN0aW9uOjpOZXZlcjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUVudW1zLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVFbnVtcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5NGNhMmM2
OTEzZWI4MjFiMDM2NTgzM2Q4MDg4MDRiZDI4Y2FiOTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVFbnVtcy5oCkBAIC0wLDAgKzEsNjYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVt
IGNsYXNzIFdlYkdQVUNvbXBhcmVGdW5jdGlvbiB7CisgICAgTmV2ZXIsCisgICAgTGVzcywKKyAg
ICBFcXVhbCwKKyAgICBMZXNzZXF1YWwsCisgICAgR3JlYXRlciwKKyAgICBOb3RlcXVhbCwKKyAg
ICBHcmVhdGVyZXF1YWwsCisgICAgQWx3YXlzCit9OworCitzdGQ6Om9wdGlvbmFsPFdlYkdQVUNv
bXBhcmVGdW5jdGlvbj4gdG9XZWJHUFVDb21wYXJlRnVuY3Rpb24oY29uc3QgU3RyaW5nJik7CitT
dHJpbmcgd2ViM0RDb21wYXJlRnVuY3Rpb25OYW1lKGNvbnN0IFdlYkdQVUNvbXBhcmVGdW5jdGlv
bik7CisKKy8vIEZJWE1FOiBXZWJHUFUgLSBTdHViIGltcGxlbWVudGF0aW9uIC0gbm90IGltcGxl
bWVudGVkIHlldC4KKy8vIGVudW0gY2xhc3MgR1BVQ29tcGFyZUZ1bmN0aW9uOworZW51bSBjbGFz
cyBHUFVDb21wYXJlRnVuY3Rpb24geworICAgIE5ldmVyLAorICAgIExlc3MsCisgICAgRXF1YWws
CisgICAgTGVzc0VxdWFsLAorICAgIEdyZWF0ZXIsCisgICAgTm90RXF1YWwsCisgICAgR3JlYXRl
ckVxdWFsLAorICAgIEFsd2F5cworfTsKKy8vIEZJWE1FOiBXZWJHUFUgLSBFbmQgc3R1Yi4KK0dQ
VUNvbXBhcmVGdW5jdGlvbiB0b0dQVUNvbXBhcmVGdW5jdGlvbihjb25zdCBXZWJHUFVDb21wYXJl
RnVuY3Rpb24pOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRW51bXMuaWRsIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRW51bXMuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyMWZhMTRkMmU0
MzI3MDQxZWEwYTQyZmE3ZmIwOWFhODhkMTY1NmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVFbnVtcy5pZGwKQEAgLTAsMCArMSwyNzQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0
aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVudW0gV2ViR1BV
UGl4ZWxGb3JtYXQgeworICAgICJCR1JBOFVub3JtIgorfTsKKworWworICAgIENvbmRpdGlvbmFs
PVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQVUxvYWRB
Y3Rpb24geworICAgICJkb250Y2FyZSIsCisgICAgImxvYWQiLAorICAgICJjbGVhciIKK307CisK
K1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUK
K10gZW51bSBXZWJHUFVTdG9yZUFjdGlvbiB7CisgICAgImRvbnRjYXJlIiwKKyAgICAic3RvcmUi
LAorICAgICJtdWx0aXNhbXBsZXJlc29sdmUiCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VC
R1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVudW0gV2ViR1BVUHJpbWl0aXZl
VHlwZSB7CisgICAgInBvaW50IiwKKyAgICAibGluZSIsCisgICAgImxpbmVzdHJpcCIsCisgICAg
InRyaWFuZ2xlIiwKKyAgICAidHJpYW5nbGVzdHJpcCIKK307CisKK1sKKyAgICBDb25kaXRpb25h
bD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVGdW5j
dGlvblR5cGUgeworICAgICJmcmFnbWVudCIsCisgICAgInZlcnRleCIKK307CisKK1sKKyAgICBD
b25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZW51bSBX
ZWJHUFVTdGVuY2lsT3BlcmF0aW9uIHsKKyAgICAia2VlcCIsCisgICAgInplcm8iLAorICAgICJy
ZXBsYWNlIiwKKyAgICAiaW5jcmVtZW50Y2xhbXAiLAorICAgICJkZWNyZW1lbnRjbGFtcCIsCisg
ICAgImludmVydCIsCisgICAgImluY3JlbWVudHdyYXAiLAorICAgICJkZWNyZW1lbnR3cmFwIgor
fTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdl
YkdQVQorXSBlbnVtIFdlYkdQVVN0YXR1cyB7CisgICAgIm5vdGVucXVldWVkIiwKKyAgICAiZW5x
dWV1ZWQiLAorICAgICJjb21taXR0ZWQiLAorICAgICJzY2hlZHVsZWQiLAorICAgICJjb21wbGV0
ZWQiLAorICAgICJlcnJvciIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAg
RW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVTYW1wbGVyQWRkcmVzc01vZGUg
eworICAgICJjbGFtcHRvZWRnZSIsCisgICAgIm1pcnJvcmNsYW1wdG9lZGdlIiwKKyAgICAicmVw
ZWF0IiwKKyAgICAibWlycm9ycmVwZWF0IiwKKyAgICAiY2xhbXB0b3plcm8iCit9OworCitbCisg
ICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVu
dW0gV2ViR1BVU2FtcGxlck1pbk1hZ0ZpbHRlciB7CisgICAgIm5lYXJlc3QiLAorICAgICJsaW5l
YXIiCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRp
bWU9V2ViR1BVCitdIGVudW0gV2ViR1BVU2FtcGxlck1pcEZpbHRlciB7CisgICAgIm5vdG1pcG1h
cHBlZCIsCisgICAgIm5lYXJlc3QiLAorICAgICJsaW5lYXIiCit9OworCitbCisgICAgQ29uZGl0
aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVudW0gV2ViR1BV
Q3VsbE1vZGUgeworICAgICJub25lIiwKKyAgICAiZnJvbnQiLAorICAgICJiYWNrIgorfTsKKwor
WworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQor
XSBlbnVtIFdlYkdQVUluZGV4VHlwZSB7CisgICAgInVpbnQxNiIsCisgICAgInVpbnQzMiIKK307
CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJH
UFUKK10gZW51bSBXZWJHUFVWaXNpYmlsaXR5UmVzdWx0TW9kZSB7CisgICAgImRpc2FibGVkIiwK
KyAgICAiYm9vbGVhbiIsCisgICAgImNvdW50aW5nIgorfTsKKworWworICAgIENvbmRpdGlvbmFs
PVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQVVdpbmRp
bmcgeworICAgICJjbG9ja3dpc2UiLAorICAgICJjb3VudGVyY2xvY2t3aXNlIgorfTsKKworWwor
ICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBl
bnVtIFdlYkdQVURlcHRoQ2xpcE1vZGUgeworICAgICJjbGlwIiwKKyAgICAiY2xhbXAiCit9Owor
CitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BV
CitdIGVudW0gV2ViR1BVVHJpYW5nbGVGaWxsTW9kZSB7CisgICAgImZpbGwiLAorICAgICJsaW5l
cyIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGlt
ZT1XZWJHUFUKK10gZW51bSBXZWJHUFVDUFVDYWNoZU1vZGUgeworICAgICJkZWZhdWx0Y2FjaGUi
LAorICAgICJ3cml0ZWNvbWJpbmVkIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwK
KyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQVVN0b3JhZ2VNb2RlIHsK
KyAgICAic2hhcmVkIiwKKyAgICAibWFuYWdlZCIsCisgICAgInByaXZhdGUiCit9OworCitbCisg
ICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVu
dW0gV2ViR1BVUmVzb3VyY2VPcHRpb25zIHsKKyAgICAiY3B1Y2FjaGVtb2RlZGVmYXVsdGNhY2hl
IiwKKyAgICAiY3B1Y2FjaGVtb2Rld3JpdGVjb21iaW5lZCIsCisgICAgInN0b3JhZ2Vtb2Rlc2hh
cmVkIiwKKyAgICAic3RvcmFnZW1vZGVtYW5hZ2VkIiwKKyAgICAic3RvcmFnZW1vZGVwcml2YXRl
IiwKKyAgICAib3B0aW9uY3B1Y2FjaGVtb2RlZGVmYXVsdGNhY2hlIiwKKyAgICAib3B0aW9uY3B1
Y2FjaGVtb2Rld3JpdGVjb21iaW5lZCIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUs
CisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVUZXh0dXJlVXNhZ2Ug
eworICAgICJ1bmtub3duIiwKKyAgICAic2hhZGVycmVhZCIsCisgICAgInNoYWRlcndyaXRlIiwK
KyAgICAicmVuZGVydGFyZ2V0IiwKKyAgICAicGl4ZWxmb3JtYXR2aWV3IgorfTsKKworWworICAg
IENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVt
IFdlYkdQVUJsZW5kT3BlcmF0aW9uIHsKKyAgICAiYWRkIiwKKyAgICAic3VidHJhY3QiLAorICAg
ICJyZXZlcnNlc3VidHJhY3QiLAorICAgICJtaW4iLAorICAgICJtYXgiCit9OworCitbCisgICAg
Q29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGVudW0g
V2ViR1BVQmxlbmRGYWN0b3IgeworICAgICJ6ZXJvIiwKKyAgICAib25lIiwKKyAgICAic291cmNl
Y29sb3IiLAorICAgICJvbmVtaW51c3NvdXJjZWNvbG9yIiwKKyAgICAic291cmNlYWxwaGEiLAor
ICAgICJvbmVtaW51c3NvdXJjZWFscGhhIiwKKyAgICAiZGVzdGluYXRpb25jb2xvciIsCisgICAg
Im9uZW1pbnVzZGVzdGluYXRpb25jb2xvciIsCisgICAgImRlc3RpbmF0aW9uYWxwaGEiLAorICAg
ICJvbmVtaW51c2Rlc3RpbmF0aW9uYWxwaGEiLAorICAgICJzb3VyY2VhbHBoYXNhdHVyYXRlZCIs
CisgICAgImJsZW5kY29sb3IiLAorICAgICJvbmVtaW51c2JsZW5kY29sb3IiLAorICAgICJibGVu
ZGFscGhhIiwKKyAgICAib25lbWludXNibGVuZGFscGhhIgorfTsKKworWworICAgIENvbmRpdGlv
bmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQVUNv
bG9yV3JpdGVNYXNrIHsKKyAgICAibm9uZSIsCisgICAgInJlZCIsCisgICAgImdyZWVuIiwKKyAg
ICAiYmx1ZSIsCisgICAgImFscGhhIiwKKyAgICAiYWxsIgorfTsKKworWworICAgIENvbmRpdGlv
bmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBlbnVtIFdlYkdQVU11
bHRpc2FtcGxlRGVwdGhSZXNvbHZlRmlsdGVyIHsKKyAgICAic2FtcGxlMCIsCisgICAgIm1pbiIs
CisgICAgIm1heCIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxl
ZEF0UnVudGltZT1XZWJHUFUKK10gZW51bSBXZWJHUFVGZWF0dXJlU2V0IHsKKyAgICAibGV2ZWwx
IiwKKyAgICAibGV2ZWwyIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VUZ1bmN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42M2U4YmY4MDIxMWYwMjJmNmJmZTg1NDFkZTkzZWM0
MmY2ODAyMTE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVRnVuY3Rpb24uY3BwCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViR1BVRnVuY3Rpb24uaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIkdQVUxpYnJhcnkuaCIKKyNpbmNsdWRlICJXZWJHUFVMaWJy
YXJ5LmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1JlZjxXZWJHUFVGdW5jdGlvbj4gV2ViR1BVRnVuY3Rpb246OmNyZWF0ZShX
ZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBXZWJHUFVMaWJyYXJ5KiBsaWJyYXJ5LCBj
b25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVRnVu
Y3Rpb24oY29udGV4dCwgbGlicmFyeSwgbmFtZSkpOworfQorCitXZWJHUFVGdW5jdGlvbjo6V2Vi
R1BVRnVuY3Rpb24oV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgV2ViR1BVTGlicmFy
eSogbGlicmFyeSwgY29uc3QgU3RyaW5nJiBuYW1lKQorICAgIDogV2ViR1BVT2JqZWN0KGNvbnRl
eHQpCit7CisgICAgbV9mdW5jdGlvbiA9IGxpYnJhcnktPmxpYnJhcnkoKS0+ZnVuY3Rpb25XaXRo
TmFtZShuYW1lKTsKK30KKworV2ViR1BVRnVuY3Rpb246On5XZWJHUFVGdW5jdGlvbigpCit7Cit9
CisKK1N0cmluZyBXZWJHUFVGdW5jdGlvbjo6bmFtZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2Z1
bmN0aW9uKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIHJldHVybiBtX2Z1
bmN0aW9uLT5uYW1lKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVGdW5jdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
ZjE3ZDQ4NGFiMTViMTBkMWRjMzIxMTgxYzIyNTBkN2Q4YWU4ZDFlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVRnVuY3Rpb24uaApAQCAtMCwwICsx
LDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVRnVuY3Rpb247CitjbGFzcyBX
ZWJHUFVMaWJyYXJ5OworCitjbGFzcyBXZWJHUFVGdW5jdGlvbiA6IHB1YmxpYyBXZWJHUFVPYmpl
Y3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVUZ1bmN0aW9uKCk7CisgICAgc3RhdGlj
IFJlZjxXZWJHUFVGdW5jdGlvbj4gY3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBXZWJH
UFVMaWJyYXJ5KiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKworICAgIFN0cmluZyBuYW1lKCkgY29u
c3Q7CisKKyAgICBHUFVGdW5jdGlvbiogZnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0
aW9uLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgV2ViR1BVRnVuY3Rpb24oV2ViR1BVUmVuZGVy
aW5nQ29udGV4dCosIFdlYkdQVUxpYnJhcnkqLCBjb25zdCBTdHJpbmcmIG5hbWUpOworCisgICAg
UmVmUHRyPEdQVUZ1bmN0aW9uPiBtX2Z1bmN0aW9uOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVGdW5jdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVG
dW5jdGlvbi5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTU2MDM2NzBjZmE4MGEzZGMxMTg1OTllN2M5OGQ1OTBj
ZGMwZmY0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdQVUZ1bmN0aW9uLmlkbApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBF
bmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBpbnRlcmZhY2UgV2ViR1BVRnVuY3Rpb24geworCisg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOworCit9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVTGlicmFyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVMaWJyYXJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDM3NTc5MzVj
NWI0YTEzYzI2ZjQ3ZWZhMDM4OWRlOTVhNGUyZGY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVTGlicmFyeS5jcHAKQEAgLTAsMCArMSw5MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJHUFVMaWJyYXJ5LmgiCisKKyNpZiBFTkFCTEUoV0VCR1BV
KQorCisjaW5jbHVkZSAiR1BVTGlicmFyeS5oIgorI2luY2x1ZGUgIldlYkdQVUZ1bmN0aW9uLmgi
CisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1JlZjxXZWJHUFVMaWJyYXJ5PiBXZWJHUFVMaWJyYXJ5OjpjcmVhdGUoV2ViR1BVUmVu
ZGVyaW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUxpYnJhcnkoY29udGV4dCwgc291cmNlQ29kZSkp
OworfQorCitXZWJHUFVMaWJyYXJ5OjpXZWJHUFVMaWJyYXJ5KFdlYkdQVVJlbmRlcmluZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSkKKyAgICA6IFdlYkdQVU9iamVj
dChjb250ZXh0KQorICAgICwgbV9zb3VyY2VDb2RlKHNvdXJjZUNvZGUpCit7CisgICAgbV9saWJy
YXJ5ID0gY29udGV4dC0+ZGV2aWNlKCktPmNyZWF0ZUxpYnJhcnkoc291cmNlQ29kZSk7Cit9CisK
K1dlYkdQVUxpYnJhcnk6On5XZWJHUFVMaWJyYXJ5KCkKK3sKK30KKworU3RyaW5nIFdlYkdQVUxp
YnJhcnk6OmxhYmVsKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbGlicmFyeSkKKyAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4gbV9saWJyYXJ5LT5sYWJlbCgpOworfQor
Cit2b2lkIFdlYkdQVUxpYnJhcnk6OnNldExhYmVsKGNvbnN0IFN0cmluZyYgbGFiZWwpCit7Cisg
ICAgaWYgKCFtX2xpYnJhcnkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbGlicmFyeS0+c2V0
TGFiZWwobGFiZWwpOworfQorCitWZWN0b3I8U3RyaW5nPiBXZWJHUFVMaWJyYXJ5OjpmdW5jdGlv
bk5hbWVzKCkKK3sKKyAgICBpZiAoIW1fbGlicmFyeSkKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxT
dHJpbmc+KCk7CisKKyAgICByZXR1cm4gbV9saWJyYXJ5LT5mdW5jdGlvbk5hbWVzKCk7Cit9CisK
K1JlZlB0cjxXZWJHUFVGdW5jdGlvbj4gV2ViR1BVTGlicmFyeTo6ZnVuY3Rpb25XaXRoTmFtZShj
b25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgaWYgKCFtX2xpYnJhcnkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgUmVmUHRyPFdlYkdQVUZ1bmN0aW9uPiBmdW5jdGlvbiA9IFdlYkdQ
VUZ1bmN0aW9uOjpjcmVhdGUodGhpcy0+Y29udGV4dCgpLCB0aGlzLCBuYW1lKTsKKyAgICBpZiAo
IWZ1bmN0aW9uLT5mdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gZnVuY3Rpb247Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVMaWJyYXJ5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVMaWJyYXJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWUzYzNm
MjcyODk3OTFhNTUxNDQ1N2JhNWNjMTEwOGJjMDhiZDk5MQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVUxpYnJhcnkuaApAQCAtMCwwICsxLDYzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0LmgiCisK
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
R1BVTGlicmFyeTsKK2NsYXNzIFdlYkdQVUZ1bmN0aW9uOworCitjbGFzcyBXZWJHUFVMaWJyYXJ5
IDogcHVibGljIFdlYkdQVU9iamVjdCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViR1BVTGli
cmFyeSgpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVTGlicmFyeT4gY3JlYXRlKFdlYkdQVVJlbmRl
cmluZ0NvbnRleHQqLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUpOworCisgICAgU3RyaW5nIHNv
dXJjZUNvZGUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGU7IH0KKyAgICBTdHJpbmcgbGFi
ZWwoKSBjb25zdDsKKyAgICB2b2lkIHNldExhYmVsKGNvbnN0IFN0cmluZyYpOworCisgICAgVmVj
dG9yPFN0cmluZz4gZnVuY3Rpb25OYW1lcygpOworCisgICAgUmVmUHRyPFdlYkdQVUZ1bmN0aW9u
PiBmdW5jdGlvbldpdGhOYW1lKGNvbnN0IFN0cmluZyYpOworCisgICAgR1BVTGlicmFyeSogbGli
cmFyeSgpIHsgcmV0dXJuIG1fbGlicmFyeS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFdlYkdQ
VUxpYnJhcnkoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIGNvbnN0IFN0cmluZyYgc291cmNlQ29k
ZSk7CisKKyAgICBTdHJpbmcgbV9zb3VyY2VDb2RlOworICAgIFJlZlB0cjxHUFVMaWJyYXJ5PiBt
X2xpYnJhcnk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVTGlicmFyeS5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVMaWJyYXJ5LmlkbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzMw
MzIyZmE3ZTg4YWJlZmE4YjkzODZhNjJjYjZiN2I1MDhiY2YxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVTGlicmFyeS5pZGwKQEAgLTAsMCArMSwz
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAg
ICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gaW50
ZXJmYWNlIFdlYkdQVUxpYnJhcnkgeworCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyBzb3VyY2VDb2RlOworICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7CisgICAgcmVhZG9u
bHkgYXR0cmlidXRlIHNlcXVlbmNlPERPTVN0cmluZz4gZnVuY3Rpb25OYW1lczsKKworICAgIFdl
YkdQVUZ1bmN0aW9uPyBmdW5jdGlvbldpdGhOYW1lKERPTVN0cmluZyBuYW1lKTsKKworfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVU9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVPYmplY3QuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIx
NzJiZWMwNWY1NjkzMzc5ZWUyMTkxYThmNGUyZDM4MmU1MGMwNDUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVPYmplY3QuY3BwCkBAIC0wLDAgKzEs
NTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0LmgiCisKKyNpZiBFTkFCTEUo
V0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1dlYkdQVU9iamVjdDo6V2ViR1BVT2JqZWN0KFdlYkdQVVJlbmRlcmlu
Z0NvbnRleHQqIGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKK3sKK30KKworV2Vi
R1BVT2JqZWN0Ojp+V2ViR1BVT2JqZWN0KCkKK3sKK30KKwordm9pZCBXZWJHUFVPYmplY3Q6OmRl
bGV0ZU9iamVjdChHUFVEZXZpY2UqKQoreworICAgIG1fZGVsZXRlZCA9IHRydWU7Cit9CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVP
YmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVU9iamVjdC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRlMmE3MzIwMWJlMTQ0YWY1NDQwNDg3MzVkYzk3ZTUyMDQzNzM2ZTcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVPYmplY3QuaApAQCAt
MCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiR1BVRGV2
aWNlLmgiCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ7CisKK2NsYXNzIFdlYkdQVU9iamVj
dCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVU9iamVjdD4geworcHVibGljOgorICAgIHZpcnR1
YWwgfldlYkdQVU9iamVjdCgpOworCisgICAgdm9pZCBkZWxldGVPYmplY3QoR1BVRGV2aWNlKik7
CisgICAgYm9vbCBpc0RlbGV0ZWQoKSBjb25zdCB7IHJldHVybiBtX2RlbGV0ZWQ7IH0KKworICAg
IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQuZ2V0
KCk7IH0KKworcHJvdGVjdGVkOgorICAgIFdlYkdQVU9iamVjdChXZWJHUFVSZW5kZXJpbmdDb250
ZXh0KiA9IG51bGxwdHIpOworCisgICAgYm9vbCBoYXNDb250ZXh0KCkgY29uc3QgeyByZXR1cm4g
bV9jb250ZXh0OyB9CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPFdlYkdQVVJlbmRlcmluZ0NvbnRl
eHQ+IG1fY29udGV4dDsKKyAgICBib29sIG1fZGVsZXRlZCB7IGZhbHNlIH07Cit9OworICAgIAor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43MDI2MzNkOWYxOTgzZjZkMjJiNmI1Y2RiM2RmYmZiNjM0ZWQyMjcxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyQ29tbWFuZEVu
Y29kZXIuY3BwCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdQVVJl
bmRlckNvbW1hbmRFbmNvZGVyLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisvKiBGSVhNRTog
V2ViR1BVIC0gTm90IGltcGxlbWVudGVkIHlldC4KKyNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVy
LmgiCisjaW5jbHVkZSAiR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaCIKKyNpbmNsdWRlICJHUFVS
ZW5kZXJQYXNzRGVzY3JpcHRvci5oIgorKi8KKyNpbmNsdWRlICJXZWJHUFVCdWZmZXIuaCIKKyNp
bmNsdWRlICJXZWJHUFVDb21tYW5kQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR1BVRGVwdGhTdGVu
Y2lsU3RhdGUuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIgorI2lu
Y2x1ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFdlYkdQVVJlbmRl
ckNvbW1hbmRFbmNvZGVyPiBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlcjo6Y3JlYXRlKFdlYkdQ
VVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIFdlYkdQVUNvbW1hbmRCdWZmZXIqIGJ1ZmZlciwg
V2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIoY29udGV4dCwgYnVmZmVyLCBk
ZXNjcmlwdG9yKSk7Cit9CisKK1dlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyOjpXZWJHUFVSZW5k
ZXJDb21tYW5kRW5jb2RlcihXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBXZWJHUFVD
b21tYW5kQnVmZmVyKiBidWZmZXIsIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yKiBkZXNjcmlw
dG9yKQorICAgIDogV2ViR1BVT2JqZWN0KGNvbnRleHQpCit7CisgICAgbV9yZW5kZXJDb21tYW5k
RW5jb2RlciA9IGJ1ZmZlci0+Y29tbWFuZEJ1ZmZlcigpLT5jcmVhdGVSZW5kZXJDb21tYW5kRW5j
b2RlcihkZXNjcmlwdG9yLT5yZW5kZXJQYXNzRGVzY3JpcHRvcigpKTsKK30KKworV2ViR1BVUmVu
ZGVyQ29tbWFuZEVuY29kZXI6On5XZWJHUFVSZW5kZXJDb21tYW5kRW5jb2RlcigpCit7Cit9CisK
K3ZvaWQgV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFJlbmRlclBpcGVsaW5lU3RhdGUo
V2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZSYgcGlwZWxpbmVTdGF0ZSkKK3sKKyAgICBpZiAoIW1f
cmVuZGVyQ29tbWFuZEVuY29kZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVuZGVyQ29t
bWFuZEVuY29kZXItPnNldFJlbmRlclBpcGVsaW5lU3RhdGUocGlwZWxpbmVTdGF0ZS5yZW5kZXJQ
aXBlbGluZVN0YXRlKCkpOworfQorCit2b2lkIFdlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyOjpz
ZXREZXB0aFN0ZW5jaWxTdGF0ZShXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZSYgZGVwdGhTdGVuY2ls
U3RhdGUpCit7CisgICAgaWYgKCFtX3JlbmRlckNvbW1hbmRFbmNvZGVyKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX3JlbmRlckNvbW1hbmRFbmNvZGVyLT5zZXREZXB0aFN0ZW5jaWxTdGF0ZShk
ZXB0aFN0ZW5jaWxTdGF0ZS5kZXB0aFN0ZW5jaWxTdGF0ZSgpKTsKK30KKwordm9pZCBXZWJHUFVS
ZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVyKFdlYkdQVUJ1ZmZlciYgYnVmZmVy
LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGluZGV4KQoreworICAgIGlmICghbV9yZW5kZXJD
b21tYW5kRW5jb2RlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9yZW5kZXJDb21tYW5kRW5j
b2Rlci0+c2V0VmVydGV4QnVmZmVyKGJ1ZmZlci5idWZmZXIoKSwgb2Zmc2V0LCBpbmRleCk7Cit9
CisKK3ZvaWQgV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50QnVmZmVyKFdl
YkdQVUJ1ZmZlciYgYnVmZmVyLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGluZGV4KQorewor
ICAgIGlmICghbV9yZW5kZXJDb21tYW5kRW5jb2RlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9yZW5kZXJDb21tYW5kRW5jb2Rlci0+c2V0RnJhZ21lbnRCdWZmZXIoYnVmZmVyLmJ1ZmZlcigp
LCBvZmZzZXQsIGluZGV4KTsKK30KKwordm9pZCBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlcjo6
ZHJhd1ByaW1pdGl2ZXModW5zaWduZWQgdHlwZSwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGNv
dW50KQoreworICAgIGlmICghbV9yZW5kZXJDb21tYW5kRW5jb2RlcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9yZW5kZXJDb21tYW5kRW5jb2Rlci0+ZHJhd1ByaW1pdGl2ZXModHlwZSwgc3Rh
cnQsIGNvdW50KTsKK30KKwordm9pZCBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZW5kRW5j
b2RpbmcoKQoreworICAgIGlmICghbV9yZW5kZXJDb21tYW5kRW5jb2RlcikKKyAgICAgICAgcmV0
dXJuOworICAgIHJldHVybiBtX3JlbmRlckNvbW1hbmRFbmNvZGVyLT5lbmRFbmNvZGluZygpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDY4MWI0ZjA1MjYyNzNjZTY3YzBhNTZhN2QyZDU5YWZiODE4MTk4OQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlckNvbW1hbmRF
bmNvZGVyLmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2lu
Y2x1ZGUgIldlYkdQVU9iamVjdC5oIgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKy8vIEZJWE1FOiBXZWJHUFUgLSBTdHViIGltcGxlbWVudGF0aW9u
IC0gbm90IGltcGxlbWVudGVkIHlldC4KKy8vIGNsYXNzIEdQVVJlbmRlckNvbW1hbmRFbmNvZGVy
OworY2xhc3MgR1BVQnVmZmVyOworY2xhc3MgR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZTsKK2NsYXNz
IEdQVURlcHRoU3RlbmNpbFN0YXRlOworY2xhc3MgR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIgOiBw
dWJsaWMgUmVmQ291bnRlZDxHUFVSZW5kZXJDb21tYW5kRW5jb2Rlcj4geworcHVibGljOgorICAg
IHZvaWQgc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZShHUFVSZW5kZXJQaXBlbGluZVN0YXRlKikgeyB9
CisgICAgdm9pZCBzZXREZXB0aFN0ZW5jaWxTdGF0ZShHUFVEZXB0aFN0ZW5jaWxTdGF0ZSopIHsg
fQorICAgIHZvaWQgc2V0VmVydGV4QnVmZmVyKEdQVUJ1ZmZlciosIHVuc2lnbmVkLCB1bnNpZ25l
ZCkgeyB9CisgICAgdm9pZCBzZXRGcmFnbWVudEJ1ZmZlcihHUFVCdWZmZXIqLCB1bnNpZ25lZCwg
dW5zaWduZWQpIHsgfQorICAgIHZvaWQgZHJhd1ByaW1pdGl2ZXModW5zaWduZWQsIHVuc2lnbmVk
LCB1bnNpZ25lZCkgeyB9CisgICAgdm9pZCBlbmRFbmNvZGluZygpIHsgfQorfTsKKy8vIEZJWE1F
OiBXZWJHUFUgLSBFbmQgc3R1Yi4KK2NsYXNzIFdlYkdQVUNvbW1hbmRCdWZmZXI7CitjbGFzcyBX
ZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZTsKK2NsYXNzIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9y
OworY2xhc3MgV2ViR1BVRnVuY3Rpb247CitjbGFzcyBXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRl
OworY2xhc3MgV2ViR1BVQnVmZmVyOworCitjbGFzcyBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2Rl
ciA6IHB1YmxpYyBXZWJHUFVPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVVJl
bmRlckNvbW1hbmRFbmNvZGVyKCk7CisgICAgc3RhdGljIFJlZjxXZWJHUFVSZW5kZXJDb21tYW5k
RW5jb2Rlcj4gY3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBXZWJHUFVDb21tYW5kQnVm
ZmVyKiwgV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IqKTsKKworICAgIHZvaWQgc2V0UmVuZGVy
UGlwZWxpbmVTdGF0ZShXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlJik7CisgICAgdm9pZCBzZXRE
ZXB0aFN0ZW5jaWxTdGF0ZShXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZSYpOworICAgIHZvaWQgc2V0
VmVydGV4QnVmZmVyKFdlYkdQVUJ1ZmZlciYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgaW5k
ZXgpOworICAgIHZvaWQgc2V0RnJhZ21lbnRCdWZmZXIoV2ViR1BVQnVmZmVyJiwgdW5zaWduZWQg
b2Zmc2V0LCB1bnNpZ25lZCBpbmRleCk7CisgICAgdm9pZCBkcmF3UHJpbWl0aXZlcyh1bnNpZ25l
ZCB0eXBlLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgY291bnQpOworICAgIHZvaWQgZW5kRW5j
b2RpbmcoKTsKKworICAgIEdQVVJlbmRlckNvbW1hbmRFbmNvZGVyKiByZW5kZXJDb21tYW5kRW5j
b2RlcigpIHsgcmV0dXJuIG1fcmVuZGVyQ29tbWFuZEVuY29kZXIuZ2V0KCk7IH0KKworcHJpdmF0
ZToKKyAgICBXZWJHUFVSZW5kZXJDb21tYW5kRW5jb2RlcihXZWJHUFVSZW5kZXJpbmdDb250ZXh0
KiwgV2ViR1BVQ29tbWFuZEJ1ZmZlciosIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yKik7Cisg
ICAgUmVmUHRyPEdQVVJlbmRlckNvbW1hbmRFbmNvZGVyPiBtX3JlbmRlckNvbW1hbmRFbmNvZGVy
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmlk
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jOTk0M2M1OTc1MTU5MDMxZmEyODUzYTVkZDJjMjJlZWQzMDQxNzk2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVy
Q29tbWFuZEVuY29kZXIuaWRsCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAg
IEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGludGVyZmFjZSBXZWJHUFVSZW5kZXJDb21tYW5k
RW5jb2RlciB7CisKKyAgICB2b2lkIHNldFJlbmRlclBpcGVsaW5lU3RhdGUoV2ViR1BVUmVuZGVy
UGlwZWxpbmVTdGF0ZSBwaXBlbGluZVN0YXRlKTsKKyAgICB2b2lkIHNldERlcHRoU3RlbmNpbFN0
YXRlKFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlIGRlcHRoU3RlbmNpbFN0YXRlKTsKKyAgICB2b2lk
IHNldFZlcnRleEJ1ZmZlcihXZWJHUFVCdWZmZXIgYnVmZmVyLCB1bnNpZ25lZCBsb25nIG9mZnNl
dCwgdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgdm9pZCBzZXRGcmFnbWVudEJ1ZmZlcihXZWJH
UFVCdWZmZXIgYnVmZmVyLCB1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBpbmRl
eCk7CisgICAgdm9pZCBkcmF3UHJpbWl0aXZlcyh1bnNpZ25lZCBsb25nIHR5cGUsIHVuc2lnbmVk
IGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgY291bnQpOworCisgICAgdm9pZCBlbmRFbmNvZGlu
ZygpOworCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BV
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjUxOWE2NWQzYzExMmU5NWI1MmU5ZDZiOGMzNmNkZmQ0MTc5NzBkMwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvci5jcHAKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VC
R1BVKQorCisvKiBGSVhNRTogV2ViR1BVIC0gTm90IGltcGxlbWVudGVkIHlldC4KKyNpbmNsdWRl
ICJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCIKKyAqLworI2luY2x1ZGUgIkdQ
VVRleHR1cmUuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVk
ZSAiV2ViR1BVVGV4dHVyZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dlYkdQVVJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6V2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIEdQVVJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvciogZGVzY3JpcHRvcikKKyAgICA6IFdlYkdQVU9iamVjdChjb250ZXh0
KQorICAgICwgbV9yZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoZGVzY3JpcHRvcikKK3sK
K30KKworV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjp+V2ViR1BVUmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKCkKK3sKK30KKwordW5zaWduZWQgbG9uZyBXZWJHUFVS
ZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OmxvYWRBY3Rpb24oKSBjb25zdAoreworICAg
IGlmICghbV9yZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiAw
OyAvLyBGSVhNRTogcHJvYmFibHkgYSByZWFsIHZhbHVlIGZvciB1bmtub3duCisKKyAgICByZXR1
cm4gbV9yZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3ItPmxvYWRBY3Rpb24oKTsKK30KKwor
dm9pZCBXZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnNldExvYWRBY3Rpb24o
dW5zaWduZWQgbG9uZyBuZXdMb2FkQWN0aW9uKQoreworICAgIGlmICghbV9yZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVuZGVyUGFzc0F0
dGFjaG1lbnREZXNjcmlwdG9yLT5zZXRMb2FkQWN0aW9uKG5ld0xvYWRBY3Rpb24pOworfQorCit1
bnNpZ25lZCBsb25nIFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c3RvcmVB
Y3Rpb24oKSBjb25zdAoreworICAgIGlmICghbV9yZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0
b3IpCisgICAgICAgIHJldHVybiAwOyAvLyBGSVhNRTogcHJvYmFibHkgYSByZWFsIHZhbHVlIGZv
ciB1bmtub3duCisKKyAgICByZXR1cm4gbV9yZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3It
PnN0b3JlQWN0aW9uKCk7Cit9CisKK3ZvaWQgV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yOjpzZXRTdG9yZUFjdGlvbih1bnNpZ25lZCBsb25nIG5ld1N0b3JlQWN0aW9uKQorewor
ICAgIGlmICghbV9yZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fcmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLT5zZXRTdG9yZUFjdGlv
bihuZXdTdG9yZUFjdGlvbik7Cit9CisKK1JlZlB0cjxXZWJHUFVUZXh0dXJlPiBXZWJHUFVSZW5k
ZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnRleHR1cmUoKSBjb25zdAoreworICAgIHJldHVy
biBtX3RleHR1cmU7Cit9CisKK3ZvaWQgV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yOjpzZXRUZXh0dXJlKFJlZlB0cjxXZWJHUFVUZXh0dXJlPiBuZXdUZXh0dXJlKQoreworICAg
IGlmICghbmV3VGV4dHVyZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fdGV4dHVyZSA9
IG5ld1RleHR1cmU7CisgICAgCisgICAgaWYgKG1fcmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yKQorICAgICAgICBtX3JlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci0+c2V0VGV4dHVy
ZShuZXdUZXh0dXJlLT50ZXh0dXJlKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVu
ZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YWRl
MGQ0MGE2ZTcyNWUwNjNmZTljOTRmZWNjNzY1MDc0NGI2ZmE4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yLmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2lu
Y2x1ZGUgIldlYkdQVU9iamVjdC5oIgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKy8vIEZJWE1FOiBXZWJHUFUgLSBTdHViIGltcGxlbWVudGF0aW9u
IC0gbm90IGltcGxlbWVudGVkIHlldC4KKy8vIGNsYXNzIEdQVVJlbmRlclBhc3NBdHRhY2htZW50
RGVzY3JpcHRvcjsKK2NsYXNzIEdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1
YmxpYyBSZWZDb3VudGVkPEdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcj4geworcHVi
bGljOgorICAgIHVuc2lnbmVkIGxvbmcgbG9hZEFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
KyAgICB2b2lkIHNldExvYWRBY3Rpb24odW5zaWduZWQgbG9uZykgeyB9CisgICAgdW5zaWduZWQg
bG9uZyBzdG9yZUFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2b2lkIHNldFN0b3Jl
QWN0aW9uKHVuc2lnbmVkIGxvbmcpIHsgfQorICAgIHZvaWQgc2V0VGV4dHVyZShHUFVUZXh0dXJl
KikgeyB9Cit9OworLy8gRklYTUU6IFdlYkdQVSAtIEVuZCBzdHViLgorY2xhc3MgV2ViR1BVVGV4
dHVyZTsKKworY2xhc3MgV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yIDogcHVi
bGljIFdlYkdQVU9iamVjdCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViR1BVUmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yKCk7CisKKyAgICB1bnNpZ25lZCBsb25nIGxvYWRBY3Rpb24o
KSBjb25zdDsKKyAgICB2b2lkIHNldExvYWRBY3Rpb24odW5zaWduZWQgbG9uZyk7CisKKyAgICB1
bnNpZ25lZCBsb25nIHN0b3JlQWN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTdG9yZUFjdGlv
bih1bnNpZ25lZCBsb25nKTsKKworICAgIFJlZlB0cjxXZWJHUFVUZXh0dXJlPiB0ZXh0dXJlKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRUZXh0dXJlKFJlZlB0cjxXZWJHUFVUZXh0dXJlPik7CisKKyAg
ICBHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IqIHJlbmRlclBhc3NBdHRhY2htZW50
RGVzY3JpcHRvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yLmdldCgpOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworcHJvdGVjdGVkOgorCisgICAgV2ViR1BV
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBH
UFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IqKTsKKworCitwcml2YXRlOgorCisgICAg
UmVmUHRyPEdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcj4gbV9yZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3I7CisgICAgUmVmUHRyPFdlYkdQVVRleHR1cmU+IG1fdGV4dHVyZTsK
K307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NB
dHRhY2htZW50RGVzY3JpcHRvci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGI4OGNmY2JkYzRiMzAwNGM2ZDdl
MGMwMTA5ZDhiOWJiNmQ1NGIzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5pZGwKQEAgLTAs
MCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
K1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUs
CisgICAgQ3VzdG9tVG9KU09iamVjdAorXQoraW50ZXJmYWNlIFdlYkdQVVJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvciB7CisKKyAgICBhdHRyaWJ1dGUgV2ViR1BVVGV4dHVyZT8gdGV4dHVy
ZTsKKworICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxvYWRBY3Rpb247IC8vIHNob3VsZCBi
ZSBXZWJHUFVMb2FkQWN0aW9uCisgICAgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgc3RvcmVBY3Rp
b247IC8vIHNob3VsZCBiZSBXZWJHUFVTdG9yZUFjdGlvbgorCit9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2Njk2NDM0YmMxYTdj
NjM4ZjNjOWM0NGM1ODZkYmI4MWY1MGI3ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ci5jcHAKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKwor
LyogRklYTUU6IFdlYkdQVSAtIE5vdCBpbXBsZW1lbnRlZCB5ZXQuCisjaW5jbHVkZSAiR1BVUmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCIKKyAqLworI2luY2x1ZGUgIkdQVVRl
eHR1cmUuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAi
V2ViR1BVVGV4dHVyZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXZWJHUFVSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3I6OmNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0
LCBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvcihjb250ZXh0LCBkZXNjcmlwdG9yKSk7Cit9CisKK1dlYkdQVVJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvcihXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBHUFVSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogZGVzY3JpcHRvcikKKyAgICA6IFdlYkdQVVJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvcihjb250ZXh0LCBkZXNjcmlwdG9yKQoreworfQorCitX
ZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6fldlYkdQVVJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCkKK3sKK30KKworR1BVUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IqIFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yOjpyZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yKj4ocmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKCkpOworfQorCitWZWN0b3I8Zmxv
YXQ+IFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpjbGVhckNvbG9y
KCkgY29uc3QKK3sKKyAgICBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciog
ZGVzY3JpcHRvciA9IHJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCk7CisgICAg
aWYgKCFkZXNjcmlwdG9yKSB7CisgICAgICAgIFZlY3RvcjxmbG9hdD4gYmxhY2sgPSB7IDAuMCwg
MC4wLCAwLjAsIDEuMCB9OworICAgICAgICByZXR1cm4gYmxhY2s7CisgICAgfQorICAgIHJldHVy
biBkZXNjcmlwdG9yLT5jbGVhckNvbG9yKCk7Cit9CisKK3ZvaWQgV2ViR1BVUmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnNldENsZWFyQ29sb3IoY29uc3QgVmVjdG9yPGZsb2F0
PiYgbmV3Q2xlYXJDb2xvcikKK3sKKyAgICBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvciogZGVzY3JpcHRvciA9IHJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
KCk7CisgICAgaWYgKCFkZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBkZXNjcmlw
dG9yLT5zZXRDbGVhckNvbG9yKG5ld0NsZWFyQ29sb3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzM5OWE5ZDg4YjhiZTkwMGQzMGQyMWFjMmM1ZTRmZGNmNmZiNjhjYwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldlYkdQVU9iamVjdC5oIgorI2luY2x1ZGUg
IldlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIgorCisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEZJWE1FOiBXZWJHUFUgLSBT
dHViIGltcGxlbWVudGF0aW9uIC0gbm90IGltcGxlbWVudGVkIHlldC4KKy8vIGNsYXNzIEdQVVJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOworY2xhc3MgR1BVUmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnRE
ZXNjcmlwdG9yIHsKK3B1YmxpYzoKKyAgICBWZWN0b3I8ZmxvYXQ+IGNsZWFyQ29sb3IoKSBjb25z
dCB7IHJldHVybiBWZWN0b3I8ZmxvYXQ+KCk7IH0KKyAgICB2b2lkIHNldENsZWFyQ29sb3IoY29u
c3QgVmVjdG9yPGZsb2F0PiYpIHsgfQorfTsKKy8vIEZJWE1FOiBXZWJHUFUgLSBFbmQgc3R1Yi4K
KworY2xhc3MgV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJs
aWMgV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yIHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5XZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpOworICAg
IHN0YXRpYyBSZWY8V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGNy
ZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IqKTsKKworICAgIFZlY3RvcjxmbG9hdD4gY2xlYXJDb2xvcigpIGNvbnN0Owor
ICAgIHZvaWQgc2V0Q2xlYXJDb2xvcihjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CisKKyAgICBHUFVS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogcmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IoKSBjb25zdDsKKworICAgIGJvb2wgaXNDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCitwcml2YXRlOgorICAg
IFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKFdlYkdQVVJlbmRlcmlu
Z0NvbnRleHQqLCBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciopOworCit9
OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDcxZDU2MjBhY2Qy
YzU1MjU3YmE2MDJhZjJiOGRhMTU4YTE3OTNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IuaWRsCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1
bnRpbWU9V2ViR1BVCitdIGludGVyZmFjZSBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvciA6IFdlYkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7CisKKyAg
ICBhdHRyaWJ1dGUgc2VxdWVuY2U8ZmxvYXQ+IGNsZWFyQ29sb3I7CisKK307CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2ht
ZW50RGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjgzMzVlYTU0
NjY2Y2Q0ZThjMjUwOTlkNWQxNTZjMGQyODM3NzVjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNj
cmlwdG9yLmNwcApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdQVVJl
bmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BV
KQorCisvKiBGSVhNRTogV2ViR1BVIC0gTm90IGltcGxlbWVudGVkIHlldC4KKyNpbmNsdWRlICJH
UFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIgorICovCisjaW5jbHVkZSAi
R1BVVGV4dHVyZS5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKKyNpbmNs
dWRlICJXZWJHUFVUZXh0dXJlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFdlYkdQ
VVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yPiBXZWJHUFVSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvcjo6Y3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNv
bnRleHQsIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNjcmlwdG9y
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yKGNvbnRleHQsIGRlc2NyaXB0b3IpKTsKK30KKworV2ViR1BVUmVuZGVy
UGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OldlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIEdQVVJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorICAgIDogV2ViR1BV
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKGNvbnRleHQsIGRlc2NyaXB0b3IpCit7Cit9
CisKK1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjp+V2ViR1BVUmVu
ZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoKQoreworfQorCitkb3VibGUgV2ViR1BV
UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OmNsZWFyRGVwdGgoKSBjb25zdAor
eworICAgIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBkZXNjcmlwdG9y
ID0gcmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoKTsKKyAgICBpZiAoIWRlc2Ny
aXB0b3IpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGRlc2NyaXB0b3ItPmNsZWFy
RGVwdGgoKTsKK30KKwordm9pZCBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3Jp
cHRvcjo6c2V0Q2xlYXJEZXB0aChkb3VibGUgbmV3Q2xlYXJEZXB0aCkKK3sKKyAgICBHUFVSZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogZGVzY3JpcHRvciA9IHJlbmRlclBhc3NE
ZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKCk7CisgICAgaWYgKCFkZXNjcmlwdG9yKQorICAgICAg
ICByZXR1cm47CisgICAgCisgICAgZGVzY3JpcHRvci0+c2V0Q2xlYXJEZXB0aChuZXdDbGVhckRl
cHRoKTsKK30KKworR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqIFdlYkdQ
VVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjpyZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQVVJl
bmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKj4ocmVuZGVyUGFzc0F0dGFjaG1lbnRE
ZXNjcmlwdG9yKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0RlcHRo
QXR0YWNobWVudERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQ
VVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzg2NDc5
NGIwZThmNjI0MTI1OTFiYzcxYWExYzY5MzdkMTUzZmRkMAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKwor
I2luY2x1ZGUgIldlYkdQVU9iamVjdC5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEZJWE1FOiBX
ZWJHUFUgLSBTdHViIGltcGxlbWVudGF0aW9uIC0gbm90IGltcGxlbWVudGVkIHlldC4KKy8vIGNs
YXNzIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOworY2xhc3MgR1BVUmVu
ZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgR1BVUmVuZGVyUGFzc0F0
dGFjaG1lbnREZXNjcmlwdG9yIHsKK3B1YmxpYzoKKyAgICBkb3VibGUgY2xlYXJEZXB0aCgpIGNv
bnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2b2lkIHNldENsZWFyRGVwdGgoZG91YmxlKSB7IH0KK307
CisvLyBGSVhNRTogV2ViR1BVIC0gRW5kIHN0dWIuCisKK2NsYXNzIFdlYkdQVVJlbmRlclBhc3NE
ZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yIDogcHVibGljIFdlYkdQVVJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViR1BVUmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3IoKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yPiBjcmVhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4
dCosIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKik7CisKKyAgICBkb3Vi
bGUgY2xlYXJEZXB0aCgpIGNvbnN0OworICAgIHZvaWQgc2V0Q2xlYXJEZXB0aChkb3VibGUpOwor
CisgICAgR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqIHJlbmRlclBhc3NE
ZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgV2ViR1BV
UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoV2ViR1BVUmVuZGVyaW5nQ29udGV4
dCosIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKik7CisKK307CisgICAg
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0
b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0RlcHRo
QXR0YWNobWVudERlc2NyaXB0b3IuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwMDhiY2YzM2U4NjgxZmNiZTNi
MTY1ZDI4NWY1YTc1MzQzMjE3MDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5pZGwK
QEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1X
ZWJHUFUKK10gaW50ZXJmYWNlIFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yIDogV2ViR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yIHsKKworICAgIGF0dHJp
YnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGNsZWFyRGVwdGg7CisKK307CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZWU5YzE2ZjM0MDVlOTdlNWI0YzhkMzczZDRhYjk4YzI4YmFiNTg0Nwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRl
clBhc3NEZXNjcmlwdG9yLmNwcApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisv
KiBGSVhNRTogV2ViR1BVIC0gTm90IGltcGxlbWVudGVkIHlldC4KKyNpbmNsdWRlICJHUFVSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIkdQVVJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3IuaCIKKyovCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitSZWY8V2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I+IFdlYkdQ
VVJlbmRlclBhc3NEZXNjcmlwdG9yOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yKCkpOworfQorCitXZWJHUFVSZW5kZXJQYXNz
RGVzY3JpcHRvcjo6V2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IoKQorICAgIDogV2ViR1BVT2Jq
ZWN0KCkKK3sKKyAgICBtX3JlbmRlclBhc3NEZXNjcmlwdG9yID0gR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3I6OmNyZWF0ZSgpOworfQorCitXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjo6fldlYkdQ
VVJlbmRlclBhc3NEZXNjcmlwdG9yKCkKK3sKK30KKworUmVmUHRyPFdlYkdQVVJlbmRlclBhc3NE
ZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yPiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjo6ZGVw
dGhBdHRhY2htZW50KCkKK3sKKyAgICBpZiAoIW1fcmVuZGVyUGFzc0Rlc2NyaXB0b3IpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKCFtX2RlcHRoQXR0YWNobWVudERlc2NyaXB0
b3IpIHsKKyAgICAgICAgUmVmUHRyPEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yPiBwbGF0Zm9ybURlcHRoQXR0YWNobWVudCA9IG1fcmVuZGVyUGFzc0Rlc2NyaXB0b3ItPmRl
cHRoQXR0YWNobWVudCgpOworICAgICAgICBtX2RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgPSBX
ZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6Y3JlYXRlKHRoaXMtPmNv
bnRleHQoKSwgcGxhdGZvcm1EZXB0aEF0dGFjaG1lbnQuZ2V0KCkpOworICAgIH0KKyAgICByZXR1
cm4gbV9kZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOworfQorCitWZWN0b3I8UmVmUHRyPFdlYkdQ
VVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4gV2ViR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3I6OmNvbG9yQXR0YWNobWVudHMoKQoreworICAgIGlmICghbV9yZW5kZXJQYXNzRGVz
Y3JpcHRvcikKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxSZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3I+PigpOworCisgICAgaWYgKCFtX2NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3JzLnNpemUoKSkgeworICAgICAgICAvLyBGSVhNRTogV2ViR1BVIC0gR1BVUmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3Igbm90IGltcGxlbWVudGVkIHlldC4KKyAg
ICAgICAgLy8gICAgICAgIFZlY3RvcjxSZWZQdHI8R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3I+PiBwbGF0Zm9ybUNvbG9yQXR0YWNobWVudHMgPSBtX3JlbmRlclBhc3NEZXNj
cmlwdG9yLT5jb2xvckF0dGFjaG1lbnRzKCk7CisgICAgICAgIC8vICAgICAgICBmb3IgKGF1dG8m
IGF0dGFjaG1lbnQgOiBwbGF0Zm9ybUNvbG9yQXR0YWNobWVudHMpCisgICAgICAgIC8vICAgICAg
ICAgICAgbV9jb2xvckF0dGFjaG1lbnREZXNjcmlwdG9ycy5hcHBlbmQoV2ViR1BVUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmNyZWF0ZSh0aGlzLT5jb250ZXh0KCksIGF0dGFj
aG1lbnQuZ2V0KCkpKTsKKyAgICB9CisgICAgcmV0dXJuIG1fY29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcnM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43ZDU0ODkwNTVlMDQ0NzA5NWE1MmNmMzQwNTJjNDIxNWMzNTA4ODM4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3IuaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BV
KQorCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0LmgiCisvKiBGSVhNRTogV2ViR1BVIC0gTm90IGlt
cGxlbWVudGVkIHlldC4KKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmgiCisqLworCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKy8vIEZJWE1FOiBXZWJHUFUgLSBTdHViIGltcGxlbWVudGF0aW9uIC0gbm90
IGltcGxlbWVudGVkIHlldC4KKy8vIGNsYXNzIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOworY2xh
c3MgR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I7CitjbGFzcyBHUFVSZW5k
ZXJQYXNzRGVzY3JpcHRvciA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVJlbmRlclBhc3NEZXNjcmlw
dG9yPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxHUFVSZW5kZXJQYXNzRGVzY3JpcHRv
cj4gY3JlYXRlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEdQVVJlbmRlclBhc3NEZXB0aEF0
dGFjaG1lbnREZXNjcmlwdG9yKiBkZXB0aEF0dGFjaG1lbnQoKSB7IHJldHVybiBudWxscHRyOyB9
CisgICAgLy8gVmVjdG9yPFJlZlB0cjxHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcj4+IGNvbG9yQXR0YWNobWVudHMoKSB7IHJldHVybiBWZWN0b3I8UmVmUHRyPEdQVVJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4oKTsgfQorfTsKKy8vIEZJWE1FOiBXZWJH
UFUgLSBFbmQgc3R1Yi4KKworY2xhc3MgV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3I7CitjbGFzcyBXZWJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
cjsKKworY2xhc3MgV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IgOiBwdWJsaWMgV2ViR1BVT2Jq
ZWN0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcigp
OworICAgIHN0YXRpYyBSZWY8V2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I+IGNyZWF0ZSgpOwor
CisgICAgUmVmUHRyPFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yPiBk
ZXB0aEF0dGFjaG1lbnQoKTsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYkdQVVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yPj4gY29sb3JBdHRhY2htZW50cygpOworCisgICAgR1BVUmVu
ZGVyUGFzc0Rlc2NyaXB0b3IqIHJlbmRlclBhc3NEZXNjcmlwdG9yKCkgeyByZXR1cm4gbV9yZW5k
ZXJQYXNzRGVzY3JpcHRvci5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFdlYkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yKCk7CisKKyAgICBWZWN0b3I8UmVmUHRyPFdlYkdQVVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yPj4gbV9jb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yczsKKyAg
ICBSZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I+IG1fZGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvcjsKKworICAgIFJlZlB0cjxHUFVSZW5kZXJQYXNzRGVzY3Jp
cHRvcj4gbV9yZW5kZXJQYXNzRGVzY3JpcHRvcjsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEwMjY0YmEyZDFl
ODFmOWY0ZDAwMDc5MDE0ODVmN2QxYTdkMWFiNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwKQEAgLTAs
MCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
K1sKKyAgICBDb25zdHJ1Y3RvciwKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxl
ZEF0UnVudGltZT1XZWJHUFUKK10gaW50ZXJmYWNlIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9y
IHsKKworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBzZXF1ZW5jZTxXZWJHUFVSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvcj4gY29sb3JBdHRhY2htZW50czsKKyAgICByZWFkb25seSBh
dHRyaWJ1dGUgV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgZGVwdGhB
dHRhY2htZW50OworICAgIC8vcmVhZG9ubHkgYXR0cmlidXRlIFdlYkdQVVJlbmRlclBhc3NTdGVu
Y2lsQXR0YWNobWVudERlc2NyaXB0b3Igc3RlbmNpbEF0dGFjaG1lbnQ7CisKKyAgICAvLyByZW5k
ZXJUYXJnZXRBcnJheUxlbmd0aAorICAgIC8vIHZpc2liaWxpdHlSZXN1bHRCdWZmZXIKKworfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjY3M2QzNGE0OTg4MjBhZTBmNTI5Y2RhMzExYzYwNWY0YjNjNDliN2QKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisvKiBGSVhNRTogV2ViR1BVIC0gTm90IGlt
cGxlbWVudGVkIHlldC4KKyNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IuaCIKKyovCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3I+IFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvcjo6Y3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIEdQVVJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IoY29udGV4dCwgZGVzY3JpcHRvcikpOworfQorCitXZWJHUFVSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OldlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcihXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBHUFVSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCisgICAgOiBX
ZWJHUFVPYmplY3QoY29udGV4dCkKKyAgICAsIG1fcmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yKGRlc2NyaXB0b3IpCit7Cit9CisKK1dlYkdQVVJlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvcjo6fldlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvcigpCit7Cit9CisKK3Vuc2lnbmVkIGxvbmcgV2ViR1BVUmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpwaXhlbEZvcm1hdCgpIGNvbnN0Cit7CisgICAg
aWYgKCFtX3JlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcikKKyAgICAgICAg
cmV0dXJuIDA7IC8vIEZJWE1FOiBwcm9iYWJseSBhIHJlYWwgdmFsdWUgZm9yIHVua25vd24KKwor
ICAgIHJldHVybiBtX3JlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci0+cGl4
ZWxGb3JtYXQoKTsKK30KKwordm9pZCBXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3I6OnNldFBpeGVsRm9ybWF0KHVuc2lnbmVkIGxvbmcgbmV3UGl4ZWxGb3JtYXQp
Cit7CisgICAgaWYgKCFtX3JlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9yZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3ItPnNldFBpeGVsRm9ybWF0KG5ld1BpeGVsRm9ybWF0KTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRiYTJiOTA1NmEwNjBhY2U1MDE1M2ZlNjhm
YmRlZDI2MDcwZDVjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oCkBAIC0w
LDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXZWJHUFVP
YmplY3QuaCIKKworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEZJWE1FOiBXZWJHUFUgLSBT
dHViIGltcGxlbWVudGF0aW9uIC0gbm90IGltcGxlbWVudGVkIHlldC4KKy8vIGNsYXNzIEdQVVJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjsKK2NsYXNzIEdQVVJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4geworcHVibGljOgorICAgIHVu
c2lnbmVkIGxvbmcgcGl4ZWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdm9pZCBz
ZXRQaXhlbEZvcm1hdCh1bnNpZ25lZCBsb25nKSB7IH0KK307CisvLyBGSVhNRTogV2ViR1BVIC0g
RW5kIHN0dWIuCisKK2NsYXNzIFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvciA6IHB1YmxpYyBXZWJHUFVPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldl
YkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpOworICAgIHN0YXRp
YyBSZWY8V2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBjcmVh
dGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIEdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvciopOworCisgICAgdW5zaWduZWQgbG9uZyBwaXhlbEZvcm1hdCgpIGNvbnN0
OworICAgIHZvaWQgc2V0UGl4ZWxGb3JtYXQodW5zaWduZWQgbG9uZyk7CisKKyAgICBHUFVSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIHJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcigpIHsgcmV0dXJuIG1fcmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgV2ViR1BVUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqLCBH
UFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqKTsKKworICAgIFJlZlB0
cjxHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IG1fcmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaWRsIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYjhiZjM2MTlkODk3YTQ3MzhlNjA1YjNjYjRk
YTkyOGI1ZTJhYmZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmlkbApAQCAt
MCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQ
VQorXSBpbnRlcmZhY2UgV2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yIHsKKworICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHBpeGVsRm9ybWF0OyAvLyBzaG91
bGQgYmUgTVRMUGl4ZWxGb3JtYXQKKworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmViNGViMTgxOGY2YTgyMWU5NDkyN2E4NTI3OGUxYWQ1YTdiOGNmMGEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IuY3BwCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldl
YkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKwor
I2luY2x1ZGUgIkdQVUZ1bmN0aW9uLmgiCisvKiBGSVhNRTogV2ViR1BVIC0gTm90IGltcGxlbWVu
dGVkIHlldC4KKyNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IuaCIKKyNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKKyovCisj
aW5jbHVkZSAiV2ViR1BVRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdD
b250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFdlYkdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcj4gV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpjcmVhdGUoKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cigpKTsKK30KKworV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpXZWJHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IoKQorICAgIDogV2ViR1BVT2JqZWN0KCkKK3sKKyAgICBtX3JlbmRl
clBpcGVsaW5lRGVzY3JpcHRvciA9IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6Y3JlYXRl
KCk7Cit9CisKK1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6fldlYkdQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcigpCit7Cit9CisKK1N0cmluZyBXZWJHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OmxhYmVsKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIHJldHVybiBtX3Jl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci0+bGFiZWwoKTsKK30KKwordm9pZCBXZWJHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I6OnNldExhYmVsKGNvbnN0IFN0cmluZyYgbGFiZWwpCit7CisgICAg
aWYgKCFtX3JlbmRlclBpcGVsaW5lRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3ItPnNldExhYmVsKGxhYmVsKTsKK30KKworUmVmUHRy
PFdlYkdQVUZ1bmN0aW9uPiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnZlcnRleEZ1
bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV92ZXJ0ZXhGdW5jdGlvbjsKK30KKwordm9p
ZCBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFZlcnRleEZ1bmN0aW9uKFJlZlB0
cjxXZWJHUFVGdW5jdGlvbj4gbmV3VmVydGV4RnVuY3Rpb24pCit7CisgICAgaWYgKCFuZXdWZXJ0
ZXhGdW5jdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV92ZXJ0ZXhGdW5jdGlvbiA9IG5l
d1ZlcnRleEZ1bmN0aW9uOworCisgICAgaWYgKG1fcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKQor
ICAgICAgICBtX3JlbmRlclBpcGVsaW5lRGVzY3JpcHRvci0+c2V0VmVydGV4RnVuY3Rpb24obmV3
VmVydGV4RnVuY3Rpb24tPmZ1bmN0aW9uKCkpOworfQorCitSZWZQdHI8V2ViR1BVRnVuY3Rpb24+
IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6ZnJhZ21lbnRGdW5jdGlvbigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fZnJhZ21lbnRGdW5jdGlvbjsKK30KKwordm9pZCBXZWJHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldEZyYWdtZW50RnVuY3Rpb24oUmVmUHRyPFdlYkdQVUZ1
bmN0aW9uPiBuZXdGcmFnbWVudEZ1bmN0aW9uKQoreworICAgIGlmICghbmV3RnJhZ21lbnRGdW5j
dGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mcmFnbWVudEZ1bmN0aW9uID0gbmV3RnJh
Z21lbnRGdW5jdGlvbjsKKworICAgIGlmIChtX3JlbmRlclBpcGVsaW5lRGVzY3JpcHRvcikKKyAg
ICAgICAgbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3ItPnNldEZyYWdtZW50RnVuY3Rpb24obmV3
RnJhZ21lbnRGdW5jdGlvbi0+ZnVuY3Rpb24oKSk7Cit9CisKK1ZlY3RvcjxSZWZQdHI8V2ViR1BV
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4gV2ViR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yOjpjb2xvckF0dGFjaG1lbnRzKCkKK3sKKyAgICBpZiAoIW1fcmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yKQorICAgICAgICByZXR1cm4gVmVjdG9yPFJlZlB0cjxXZWJHUFVS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+PigpOworCisgICAgaWYgKCFt
X2NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JzLnNpemUoKSkgeworICAgICAgICBWZWN0b3I8UmVm
UHRyPEdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4+IHBsYXRmb3Jt
Q29sb3JBdHRhY2htZW50cyA9IG1fcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLT5jb2xvckF0dGFj
aG1lbnRzKCk7CisgICAgICAgIGZvciAoYXV0byYgYXR0YWNobWVudCA6IHBsYXRmb3JtQ29sb3JB
dHRhY2htZW50cykKKyAgICAgICAgICAgIG1fY29sb3JBdHRhY2htZW50RGVzY3JpcHRvcnMuYXBw
ZW5kKFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6Y3JlYXRl
KHRoaXMtPmNvbnRleHQoKSwgYXR0YWNobWVudC5nZXQoKSkpOworICAgIH0KKyAgICByZXR1cm4g
bV9jb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yczsKK30KKwordW5zaWduZWQgbG9uZyBXZWJHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmRlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0KCkgY29u
c3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKQorICAgICAgICByZXR1
cm4gMDsgLy8gRklYTUU6IHByb2JhYmx5IGEgcmVhbCB2YWx1ZSBmb3IgdW5rbm93bgorCisgICAg
cmV0dXJuIG1fcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLT5kZXB0aEF0dGFjaG1lbnRQaXhlbEZv
cm1hdCgpOworCit9CisKK3ZvaWQgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRE
ZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdCh1bnNpZ25lZCBsb25nIG5ld1BpeGVsRm9ybWF0KQor
eworICAgIGlmICghbV9yZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLT5zZXREZXB0aEF0dGFjaG1lbnRQaXhl
bEZvcm1hdChuZXdQaXhlbEZvcm1hdCk7Cit9CisKK3ZvaWQgV2ViR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yOjpyZXNldCgpCit7CisgICAgbV92ZXJ0ZXhGdW5jdGlvbiA9IG51bGxwdHI7Cisg
ICAgbV9mcmFnbWVudEZ1bmN0aW9uID0gbnVsbHB0cjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTdjOTUzYTVl
YWM4NGE4YjRkZDFhZDY1ZTdkYThlMmQ4ZTZhNjc5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCkBA
IC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXZWJH
UFVPYmplY3QuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IuaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBHUFVGdW5jdGlvbjsKKworLy8gRklYTUU6IFdlYkdQVSAtIHN0dWIg
aW1wbGVtZW50YXRpb24uCitjbGFzcyBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgOiBwdWJs
aWMgUmVmQ291bnRlZDxHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gY3JlYXRlKCkgeyBy
ZXR1cm4gbnVsbHB0cjsgfQorICAgIFZlY3RvcjxSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yPj4gY29sb3JBdHRhY2htZW50cygpIHsgcmV0dXJuIFZlY3Rv
cjxSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4oKTsg
fQorICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KKyAg
ICB2b2lkIHNldExhYmVsKGNvbnN0IFN0cmluZyYpIHsgfQorICAgIHZvaWQgc2V0VmVydGV4RnVu
Y3Rpb24oR1BVRnVuY3Rpb24qKSB7IH0KKyAgICB2b2lkIHNldEZyYWdtZW50RnVuY3Rpb24oR1BV
RnVuY3Rpb24qKSB7IH0KKyAgICB1bnNpZ25lZCBsb25nIGRlcHRoQXR0YWNobWVudFBpeGVsRm9y
bWF0KCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZvaWQgc2V0RGVwdGhBdHRhY2htZW50UGl4
ZWxGb3JtYXQodW5zaWduZWQgbG9uZykgeyB9Cit9OworLy8gRklYTUU6IFdlYkdQVSAtIGVuZCBz
dHViLgorCitjbGFzcyBXZWJHUFVGdW5jdGlvbjsKK2NsYXNzIFdlYkdQVVJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjsKKworY2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yIDogcHVibGljIFdlYkdQVU9iamVjdCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
V2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCk7CisgICAgc3RhdGljIFJlZjxXZWJHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IGNyZWF0ZSgpOworCisgICAgU3RyaW5nIGxhYmVsKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKTsKKworICAgIFJlZlB0cjxX
ZWJHUFVGdW5jdGlvbj4gdmVydGV4RnVuY3Rpb24oKSBjb25zdDsKKyAgICB2b2lkIHNldFZlcnRl
eEZ1bmN0aW9uKFJlZlB0cjxXZWJHUFVGdW5jdGlvbj4pOworCisgICAgUmVmUHRyPFdlYkdQVUZ1
bmN0aW9uPiBmcmFnbWVudEZ1bmN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBzZXRGcmFnbWVudEZ1
bmN0aW9uKFJlZlB0cjxXZWJHUFVGdW5jdGlvbj4pOworCisgICAgVmVjdG9yPFJlZlB0cjxXZWJH
UFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+PiBjb2xvckF0dGFjaG1l
bnRzKCk7CisKKyAgICB1bnNpZ25lZCBsb25nIGRlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0KCkg
Y29uc3Q7CisgICAgdm9pZCBzZXREZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdCh1bnNpZ25lZCBs
b25nKTsKKworICAgIHZvaWQgcmVzZXQoKTsKKworICAgIEdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciogcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCkgeyByZXR1cm4gbV9yZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWJHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IoKTsKKworICAgIFJlZlB0cjxXZWJHUFVGdW5jdGlvbj4gbV92ZXJ0ZXhGdW5j
dGlvbjsKKyAgICBSZWZQdHI8V2ViR1BVRnVuY3Rpb24+IG1fZnJhZ21lbnRGdW5jdGlvbjsKKwor
ICAgIFZlY3RvcjxSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yPj4gbV9jb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yczsKKworICAgIFJlZlB0cjxHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IG1fcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iu
aWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmE5ODY4M2RkOTg4NDAxYmZjNjNmYWQ5OWFiMmQ5ODY4YzE0NDU5OTUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uc3RydWN0b3IsCisgICAg
Q29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGludGVy
ZmFjZSBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgeworCisgICAgYXR0cmlidXRlIERP
TVN0cmluZyBsYWJlbDsKKworICAgIGF0dHJpYnV0ZSBXZWJHUFVGdW5jdGlvbj8gdmVydGV4RnVu
Y3Rpb247CisgICAgYXR0cmlidXRlIFdlYkdQVUZ1bmN0aW9uPyBmcmFnbWVudEZ1bmN0aW9uOwor
CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHNlcXVlbmNlPFdlYkdQVVJlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvcj4gY29sb3JBdHRhY2htZW50czsKKworICAgIGF0dHJpYnV0
ZSB1bnNpZ25lZCBsb25nIGRlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0OworCisgICAgdm9pZCBy
ZXNldCgpOworCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDIxMjNmZTJjNDBiZTVi
ZjNiODc0ZmI5YmY0MmM4YTI4MTgzODM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHAKQEAgLTAsMCArMSw3
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmgiCisK
KyNpZiBFTkFCTEUoV0VCR1BVKQorCisvKiBGSVhNRTogV2ViR1BVIC0gTm90IGltcGxlbWVudGVk
IHlldC5GSVhNRTogV2ViR1BVIC0gTm90IGltcGxlbWVudGVkIHlldC4KKyNpbmNsdWRlICJHUFVS
ZW5kZXJQaXBlbGluZVN0YXRlLmgiCisgKi8KKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGU+IFdlYkdQ
VVJlbmRlclBpcGVsaW5lU3RhdGU6OmNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250
ZXh0LCBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZShjb250ZXh0LCBk
ZXNjcmlwdG9yKSk7Cit9CisKK1dlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGU6OldlYkdQVVJlbmRl
clBpcGVsaW5lU3RhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgV2ViR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorICAgIDogV2ViR1BVT2JqZWN0KGNv
bnRleHQpCit7CisgICAgaWYgKCFjb250ZXh0IHx8ICFkZXNjcmlwdG9yKQorICAgICAgICByZXR1
cm47CisgICAgbV9yZW5kZXJQaXBlbGluZVN0YXRlID0gR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZTo6
Y3JlYXRlKGNvbnRleHQtPmRldmljZSgpLmdldCgpLCBkZXNjcmlwdG9yLT5yZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IoKSk7Cit9CisKK1dlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGU6On5XZWJHUFVS
ZW5kZXJQaXBlbGluZVN0YXRlKCkKK3sKK30KKworU3RyaW5nIFdlYkdQVVJlbmRlclBpcGVsaW5l
U3RhdGU6OmxhYmVsKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyUGlwZWxpbmVTdGF0ZSkK
KyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4gbV9yZW5kZXJQaXBl
bGluZVN0YXRlLT5sYWJlbCgpOworfQorCit2b2lkIFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGU6
OnNldExhYmVsKGNvbnN0IFN0cmluZyYgbGFiZWwpCit7CisgICAgaWYgKCFtX3JlbmRlclBpcGVs
aW5lU3RhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVuZGVyUGlwZWxpbmVTdGF0ZS0+
c2V0TGFiZWwobGFiZWwpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxp
bmVTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxp
bmVTdGF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0Y2M2NGI5MGQzMzI0OWZjMDE2YzZkOWQ4ZGNlNGE2NzZm
ZGE4ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
UFVSZW5kZXJQaXBlbGluZVN0YXRlLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KFdFQkdQVSkKKworI2luY2x1ZGUgIldlYkdQVU9iamVjdC5oIgorCisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEZJWE1FOiBXZWJHUFUgLSBTdHVi
IGltcGxlbWVudGF0aW9uIC0gbm90IGltcGxlbWVudGVkIHlldC4KKy8vIGNsYXNzIEdQVVJlbmRl
clBpcGVsaW5lU3RhdGU7CitjbGFzcyBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I7CitjbGFz
cyBHUFVSZW5kZXJQaXBlbGluZVN0YXRlIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVUmVuZGVyUGlw
ZWxpbmVTdGF0ZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8R1BVUmVuZGVyUGlwZWxp
bmVTdGF0ZT4gY3JlYXRlKEdQVURldmljZSosIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciop
IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBTdHJpbmcgbGFiZWwoKSBjb25zdCB7IHJldHVybiBl
bXB0eVN0cmluZygpOyB9CisgICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKSB7IH0KK307
CisvLyBGSVhNRTogV2ViR1BVIC0gRW5kIHN0dWIuCisKK2NsYXNzIFdlYkdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcjsKKworY2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZSA6IHB1Ymxp
YyBXZWJHUFVPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVVJlbmRlclBpcGVs
aW5lU3RhdGUoKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGU+IGNy
ZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yKik7CisKKyAgICBTdHJpbmcgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkIHNldExhYmVsKGNv
bnN0IFN0cmluZyYpOworCisgICAgR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZSogcmVuZGVyUGlwZWxp
bmVTdGF0ZSgpIHsgcmV0dXJuIG1fcmVuZGVyUGlwZWxpbmVTdGF0ZS5nZXQoKTsgfQorCitwcml2
YXRlOgorICAgIFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUoV2ViR1BVUmVuZGVyaW5nQ29udGV4
dCosIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciopOworCisgICAgUmVmUHRyPEdQVVJl
bmRlclBpcGVsaW5lU3RhdGU+IG1fcmVuZGVyUGlwZWxpbmVTdGF0ZTsKK307CisgICAgCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmlkbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZWQzNGQyOGNhNTU0MjI3YjUzZmQxOTczMDhkMGY1YzFlYmIyNmQxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5p
ZGwKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGlt
ZT1XZWJHUFUKK10gaW50ZXJmYWNlIFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUgeworCisgICAg
YXR0cmlidXRlIERPTVN0cmluZyBsYWJlbDsKKworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDUw
Y2NmNGM0MGI5ODU5ZTY5NjEwY2MxZDJiNWU5YzdhMTExYjAyZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwCkBA
IC0wLDAgKzEsMjA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlcmluZ0NvbnRl
eHQuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdQVURldmljZS5oIgorI2luY2x1ZGUgIldl
YkdQVUJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRRdWV1ZS5oIgorI2luY2x1ZGUg
IldlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJXZWJHUFVEZXB0aFN0
ZW5jaWxTdGF0ZS5oIgorI2luY2x1ZGUgIldlYkdQVURyYXdhYmxlLmgiCisjaW5jbHVkZSAiV2Vi
R1BVTGlicmFyeS5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCisj
aW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiV2Vi
R1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oIgorI2luY2x1ZGUgIldlYkdQVVRleHR1cmUuaCIKKyNp
bmNsdWRlICJXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oIgorCisjaW5jbHVkZSA8cnVudGltZS9B
cnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUg
PHJ1bnRpbWUvVHlwZWRBcnJheUlubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQzMkFy
cmF5Lmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK25hbWVz
cGFjZSB7CisKK2ludCBjbGFtcChpbnQgdmFsdWUsIGludCBtaW4sIGludCBtYXgpCit7CisgICAg
aWYgKHZhbHVlIDwgbWluKQorICAgICAgICB2YWx1ZSA9IG1pbjsKKyAgICBpZiAodmFsdWUgPiBt
YXgpCisgICAgICAgIHZhbHVlID0gbWF4OworICAgIHJldHVybiB2YWx1ZTsKK30KKworfQorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBjb25zdCBpbnQga01heFRleHR1cmVTaXplID0g
NDA5NjsKKworCitzdGQ6OnVuaXF1ZV9wdHI8V2ViR1BVUmVuZGVyaW5nQ29udGV4dD4gV2ViR1BV
UmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKGNhbnZhcyk7CisvKiBGSVhNRTogV2ViR1BVIC0gVG8gYmUgaW1wbGVt
ZW50ZWQuCisgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gY2FudmFzLmRvY3VtZW50KCk7CisgICAg
RnJhbWUqIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIEdQVURldmljZTo6QXR0cmlidXRlcyBhdHRyaWJ1dGVz
OworCisgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKKworICAgIC8vIEZJWE1FOiBX
ZWJHUFUgLSBoYW5kbGUgcmV0aW5hLgorICAgIC8vIGlmIChwYWdlKQorICAgIC8vICAgICBhdHRy
aWJ1dGVzLmRldmljZVBpeGVsUmF0aW8gPSBwYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpOworCisg
ICAgSG9zdFdpbmRvdyogaG9zdFdpbmRvdyA9IGRvY3VtZW50LnZpZXcoKS0+cm9vdCgpLT5ob3N0
V2luZG93KCk7CisgICAgUmVmUHRyPEdQVURldmljZT4gZGV2aWNlKEdQVURldmljZTo6Y3JlYXRl
KGF0dHJpYnV0ZXMsIGhvc3RXaW5kb3cpKTsKKworICAgIGlmICghZGV2aWNlKSB7CisgICAgICAg
IC8vIEZJWE1FOiBXZWJHUFUgLSBkaXNwYXRjaCBhbiBldmVudCBoZXJlIGZvciB0aGUgZmFpbHVy
ZS4KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ+IHJlbmRlcmluZ0NvbnRleHQgPSBudWxscHRyOworICAg
IHJlbmRlcmluZ0NvbnRleHQgPSBzdGQ6OnVuaXF1ZV9wdHI8V2ViR1BVUmVuZGVyaW5nQ29udGV4
dD4obmV3IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQoY2FudmFzLCBkZXZpY2UpKTsKKyAgICByZW5k
ZXJpbmdDb250ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsKKworICAgIHJldHVybiByZW5kZXJpbmdD
b250ZXh0OworKi8KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dDo6V2ViR1BVUmVuZGVyaW5nQ29udGV4dChIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzLCBQ
YXNzUmVmUHRyPEdQVURldmljZT4gZGV2aWNlKQorICAgIDogQ2FudmFzUmVuZGVyaW5nQ29udGV4
dChjYW52YXMpCisgICAgLCBBY3RpdmVET01PYmplY3QoJmNhbnZhcy5kb2N1bWVudCgpKQorICAg
ICwgbV9kZXZpY2UoZGV2aWNlKQoreworICAgIGluaXRpYWxpemVOZXdDb250ZXh0KCk7Cit9CisK
K3ZvaWQgV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZU5ld0NvbnRleHQoKQorewor
ICAgIC8vIEZJWE1FOiBXZWJHUFUgLSBNYXliZSB3ZSBzaG91bGQgcmVzZXQgYSBidW5jaCBvZiBz
dHVmZiBoZXJlLgorCisgICAgSW50U2l6ZSBjYW52YXNTaXplID0gY2xhbXBlZENhbnZhc1NpemUo
KTsKKyAgICBtX2RldmljZS0+cmVzaGFwZShjYW52YXNTaXplLndpZHRoKCksIGNhbnZhc1NpemUu
aGVpZ2h0KCkpOworfQorCitJbnRTaXplIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ6OmNsYW1wZWRD
YW52YXNTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gSW50U2l6ZShjbGFtcChjYW52YXMoKS53
aWR0aCgpLCAxLCBrTWF4VGV4dHVyZVNpemUpLAorICAgICAgICBjbGFtcChjYW52YXMoKS5oZWln
aHQoKSwgMSwga01heFRleHR1cmVTaXplKSk7Cit9CisKK2Jvb2wgV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6c3RvcCgpCit7Cit9CisKK2NvbnN0IGNo
YXIqIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAor
eworICAgIHJldHVybiAiV2ViR1BVUmVuZGVyaW5nQ29udGV4dCI7Cit9CisKK2Jvb2wgV2ViR1BV
UmVuZGVyaW5nQ29udGV4dDo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitQbGF0Zm9ybUxheWVyKiBXZWJHUFVSZW5kZXJp
bmdDb250ZXh0OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kZXZpY2Ut
PnBsYXRmb3JtTGF5ZXIoKTsKK30KKwordm9pZCBXZWJHUFVSZW5kZXJpbmdDb250ZXh0OjptYXJr
TGF5ZXJDb21wb3NpdGVkKCkKK3sKKyAgICBtX2RldmljZS0+bWFya0xheWVyQ29tcG9zaXRlZCgp
OworfQorCit2b2lkIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ6OnJlc2hhcGUoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KQoreworICAgIC8vIEZJWE1FOiBXZWJHUFUgLSBEbyB3ZSBuZWVkIHRvIHJlc2V0
IHN0dWZmIGhlcmU/CisgICAgbV9kZXZpY2UtPnJlc2hhcGUod2lkdGgsIGhlaWdodCk7Cit9CisK
K1JlZlB0cjxXZWJHUFVMaWJyYXJ5PiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVMaWJy
YXJ5KGNvbnN0IFN0cmluZyBzb3VyY2VDb2RlKQoreworICAgIFJlZlB0cjxXZWJHUFVMaWJyYXJ5
PiBsaWJyYXJ5ID0gV2ViR1BVTGlicmFyeTo6Y3JlYXRlKHRoaXMsIHNvdXJjZUNvZGUpOworICAg
IHJldHVybiBsaWJyYXJ5OworfQorCitSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZT4g
V2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlUmVuZGVyUGlwZWxpbmVTdGF0ZShXZWJHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgUmVmUHRyPFdlYkdQ
VVJlbmRlclBpcGVsaW5lU3RhdGU+IHN0YXRlID0gV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZTo6
Y3JlYXRlKHRoaXMsICZkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4gc3RhdGU7Cit9CisKK1JlZlB0
cjxXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZT4gV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRl
RGVwdGhTdGVuY2lsU3RhdGUoV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvciYgZGVzY3JpcHRv
cikKK3sKKyAgICBSZWZQdHI8V2ViR1BVRGVwdGhTdGVuY2lsU3RhdGU+IHN0YXRlID0gV2ViR1BV
RGVwdGhTdGVuY2lsU3RhdGU6OmNyZWF0ZSh0aGlzLCAmZGVzY3JpcHRvcik7CisgICAgcmV0dXJu
IHN0YXRlOworfQorCitSZWZQdHI8V2ViR1BVQ29tbWFuZFF1ZXVlPiBXZWJHUFVSZW5kZXJpbmdD
b250ZXh0OjpjcmVhdGVDb21tYW5kUXVldWUoKQoreworICAgIFJlZlB0cjxXZWJHUFVDb21tYW5k
UXVldWU+IHF1ZXVlID0gV2ViR1BVQ29tbWFuZFF1ZXVlOjpjcmVhdGUodGhpcyk7CisgICAgcmV0
dXJuIHF1ZXVlOworfQorCitSZWZQdHI8V2ViR1BVRHJhd2FibGU+IFdlYkdQVVJlbmRlcmluZ0Nv
bnRleHQ6Om5leHREcmF3YWJsZSgpCit7CisgICAgUmVmUHRyPFdlYkdQVURyYXdhYmxlPiBkcmF3
YWJsZSA9IFdlYkdQVURyYXdhYmxlOjpjcmVhdGUodGhpcyk7CisgICAgcmV0dXJuIGRyYXdhYmxl
OworfQorCitSZWZQdHI8V2ViR1BVQnVmZmVyPiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0OjpjcmVh
dGVCdWZmZXIoQXJyYXlCdWZmZXJWaWV3JiBkYXRhKQoreworICAgIFJlZlB0cjxXZWJHUFVCdWZm
ZXI+IGJ1ZmZlciA9IFdlYkdQVUJ1ZmZlcjo6Y3JlYXRlKHRoaXMsICZkYXRhKTsKKyAgICByZXR1
cm4gYnVmZmVyOworfQorCitSZWZQdHI8V2ViR1BVVGV4dHVyZT4gV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dDo6Y3JlYXRlVGV4dHVyZShXZWJHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
K3sKKyAgICBSZWZQdHI8V2ViR1BVVGV4dHVyZT4gdGV4dHVyZSA9IFdlYkdQVVRleHR1cmU6OmNy
ZWF0ZSh0aGlzLCAmZGVzY3JpcHRvcik7CisgICAgcmV0dXJuIHRleHR1cmU7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWFhMDc3YWY2N2Q0
YWRkYThkZTQ5ODUxYjRmMDg1ZTZmNTZkZWM4YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuaApAQCAtMCwwICsxLDEw
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVj
dC5oIgorI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJHUFVE
ZXZpY2UuaCIKKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgV2ViR1BVQ29tbWFuZFF1ZXVlOworY2xhc3MgV2ViR1BVTGlicmFy
eTsKK2NsYXNzIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKK2NsYXNzIFdlYkdQVVJl
bmRlclBpcGVsaW5lU3RhdGU7CitjbGFzcyBXZWJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOwor
Y2xhc3MgV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGU7CitjbGFzcyBXZWJHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvcjsKK2NsYXNzIFdlYkdQVURyYXdhYmxlOworY2xhc3MgV2ViR1BVQnVmZmVyOworY2xh
c3MgV2ViR1BVVGV4dHVyZTsKK2NsYXNzIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yOworCitjbGFz
cyBXZWJHUFVSZW5kZXJpbmdDb250ZXh0IDogcHVibGljIENhbnZhc1JlbmRlcmluZ0NvbnRleHQs
IHB1YmxpYyBBY3RpdmVET01PYmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8V2ViR1BVUmVuZGVyaW5nQ29udGV4dD4gY3JlYXRlKEhUTUxDYW52YXNFbGVtZW50Jik7
CisvLyAgICB2aXJ0dWFsIH5XZWJHUFVSZW5kZXJpbmdDb250ZXh0KCk7CisKKyAgICBib29sIGlz
R1BVKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgYm9vbCBpc0FjY2Vs
ZXJhdGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdm9pZCByZXNo
YXBlKGludCB3aWR0aCwgaW50IGhlaWdodCk7CisKKyAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0
ZWQoKTsKKworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlk
ZTsKKworICAgIFJlZlB0cjxHUFVEZXZpY2U+IGRldmljZSgpIHsgcmV0dXJuIG1fZGV2aWNlOyB9
CisKKyAgICAvLyBXZWJHUFUgZW50cnkgcG9pbnRzCisKKyAgICBSZWZQdHI8V2ViR1BVTGlicmFy
eT4gY3JlYXRlTGlicmFyeShjb25zdCBTdHJpbmcpOworCisgICAgUmVmUHRyPFdlYkdQVVJlbmRl
clBpcGVsaW5lU3RhdGU+IGNyZWF0ZVJlbmRlclBpcGVsaW5lU3RhdGUoV2ViR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yJik7CisKKyAgICBSZWZQdHI8V2ViR1BVRGVwdGhTdGVuY2lsU3RhdGU+
IGNyZWF0ZURlcHRoU3RlbmNpbFN0YXRlKFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3ImKTsK
KworICAgIFJlZlB0cjxXZWJHUFVDb21tYW5kUXVldWU+IGNyZWF0ZUNvbW1hbmRRdWV1ZSgpOwor
CisgICAgUmVmUHRyPFdlYkdQVURyYXdhYmxlPiBuZXh0RHJhd2FibGUoKTsKKworICAgIFJlZlB0
cjxXZWJHUFVCdWZmZXI+IGNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlclZpZXcmIGRhdGEpOworCisg
ICAgUmVmUHRyPFdlYkdQVVRleHR1cmU+IGNyZWF0ZVRleHR1cmUoV2ViR1BVVGV4dHVyZURlc2Ny
aXB0b3ImKTsKKworcHJvdGVjdGVkOgorICAgIC8vIEFjdGl2ZURPTU9iamVjdAorICAgIGJvb2wg
aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzdG9wKCkgb3Zl
cnJpZGU7CisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IG92
ZXJyaWRlOworCisgICAgSW50U2l6ZSBjbGFtcGVkQ2FudmFzU2l6ZSgpIGNvbnN0OworICAgIHZv
aWQgaW5pdGlhbGl6ZU5ld0NvbnRleHQoKTsKKworcHJpdmF0ZToKKy8vICAgIFdlYkdQVVJlbmRl
cmluZ0NvbnRleHQoSFRNTENhbnZhc0VsZW1lbnQqKTsvLywgR3JhcGhpY3NDb250ZXh0M0Q6OkF0
dHJpYnV0ZXMpOworICAgIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQoSFRNTENhbnZhc0VsZW1lbnQm
LCBQYXNzUmVmUHRyPEdQVURldmljZT4pOworCisgICAgUmVmUHRyPEdQVURldmljZT4gbV9kZXZp
Y2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfQ0FOVkFTUkVOREVSSU5HQ09OVEVYVChXZWJDb3JlOjpXZWJHUFVSZW5kZXJpbmdDb250ZXh0
LCBpc0dQVSgpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWE4MTQzNDBiNjMxMzg1
MWQ3YjMzYmRjODczOTJjNjA3OGI5ODkwYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuaWRsCkBAIC0wLDAgKzEsMTEx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAg
IENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVSwKKyAgICBK
U0N1c3RvbU1hcmtGdW5jdGlvbiwKKyAgICBEb05vdENoZWNrQ29uc3RhbnRzCitdIGludGVyZmFj
ZSBXZWJHUFVSZW5kZXJpbmdDb250ZXh0IHsKKworICAgIC8vIFBpeGVsIGZvcm1hdHMKKworICAg
IGNvbnN0IHVuc2lnbmVkIGludCBQaXhlbEZvcm1hdEJHUkE4VW5vcm0gPSA4MDsKKyAgICBjb25z
dCB1bnNpZ25lZCBpbnQgUGl4ZWxGb3JtYXREZXB0aDMyRmxvYXQgPSAyNTI7CisgICAgY29uc3Qg
dW5zaWduZWQgaW50IFBpeGVsRm9ybWF0U3RlbmNpbDggPSAyNTM7CisgICAgY29uc3QgdW5zaWdu
ZWQgaW50IFBpeGVsRm9ybWF0SW52YWxpZCA9IDA7CisKKyAgICAvLyBMb2FkIGFjdGlvbnMKKwor
ICAgIGNvbnN0IHVuc2lnbmVkIGludCBMb2FkQWN0aW9uRG9udENhcmUgPSAwOworICAgIGNvbnN0
IHVuc2lnbmVkIGludCBMb2FkQWN0aW9uTG9hZCA9IDE7CisgICAgY29uc3QgdW5zaWduZWQgaW50
IExvYWRBY3Rpb25DbGVhciA9IDI7CisKKyAgICAvLyBTdG9yZSBhY3Rpb25zCisKKyAgICBjb25z
dCB1bnNpZ25lZCBpbnQgU3RvcmVBY3Rpb25Eb250Q2FyZSA9IDA7CisgICAgY29uc3QgdW5zaWdu
ZWQgaW50IFN0b3JlQWN0aW9uU3RvcmUgPSAxOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBTdG9y
ZUFjdGlvbk11bHRpc2FtcGxlUmVzb2x2ZSA9IDI7CisKKyAgICAvLyBQcmltaXRpdmUgdHlwZXMK
KworICAgIGNvbnN0IHVuc2lnbmVkIGludCBQcmltaXRpdmVUeXBlUG9pbnQgPSAwOworICAgIGNv
bnN0IHVuc2lnbmVkIGludCBQcmltaXRpdmVUeXBlTGluZSA9IDE7CisgICAgY29uc3QgdW5zaWdu
ZWQgaW50IFByaW1pdGl2ZVR5cGVMaW5lU3RyaXAgPSAyOworICAgIGNvbnN0IHVuc2lnbmVkIGlu
dCBQcmltaXRpdmVUeXBlVHJpYW5nbGUgPSAzOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBQcmlt
aXRpdmVUeXBlVHJpYW5nbGVTdHJpcCA9IDQ7CisKKyAgICAvLyBDb21wYXJpc29uIGZ1bmN0aW9u
cworCisgICAgY29uc3QgdW5zaWduZWQgaW50IENvbXBhcmVGdW5jdGlvbk5ldmVyID0gMDsKKyAg
ICBjb25zdCB1bnNpZ25lZCBpbnQgQ29tcGFyZUZ1bmN0aW9uTGVzcyA9IDE7CisgICAgY29uc3Qg
dW5zaWduZWQgaW50IENvbXBhcmVGdW5jdGlvbkVxdWFsID0gMjsKKyAgICBjb25zdCB1bnNpZ25l
ZCBpbnQgQ29tcGFyZUZ1bmN0aW9uTGVzc0VxdWFsID0gMzsKKyAgICBjb25zdCB1bnNpZ25lZCBp
bnQgQ29tcGFyZUZ1bmN0aW9uR3JlYXRlciA9IDQ7CisgICAgY29uc3QgdW5zaWduZWQgaW50IENv
bXBhcmVGdW5jdGlvbk5vdEVxdWFsID0gNTsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgQ29tcGFy
ZUZ1bmN0aW9uR3JlYXRlckVxdWFsID0gNjsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgQ29tcGFy
ZUZ1bmN0aW9uQWx3YXlzID0gNzsKKworICAgIC8vIFRleHR1cmUgVHlwZXMKKworICAgIGNvbnN0
IHVuc2lnbmVkIGludCBUZXh0dXJlVHlwZTFEID0gMDsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQg
VGV4dHVyZVR5cGUxREFycmF5ID0gMTsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgVGV4dHVyZVR5
cGUyRCA9IDI7CisgICAgY29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVUeXBlMkRBcnJheSA9IDM7
CisgICAgY29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVUeXBlMkRNdWx0aXNhbXBsZSA9IDQ7Cisg
ICAgY29uc3QgdW5zaWduZWQgaW50IFRleHR1cmVUeXBlQ3ViZSA9IDU7CisgICAgY29uc3QgdW5z
aWduZWQgaW50IFRleHR1cmVUeXBlQ3ViZUFycmF5ID0gNjsKKyAgICBjb25zdCB1bnNpZ25lZCBp
bnQgVGV4dHVyZVR5cGUzRCA9IDc7CisKKyAgICAvLyBTdG9yYWdlIG1vZGVzCisKKyAgICBjb25z
dCB1bnNpZ25lZCBpbnQgU3RvcmFnZU1vZGVTaGFyZWQgID0gMDsKKyAgICBjb25zdCB1bnNpZ25l
ZCBpbnQgU3RvcmFnZU1vZGVNYW5hZ2VkID0gMTsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgU3Rv
cmFnZU1vZGVQcml2YXRlID0gMjsKKworICAgIC8vIFVzYWdlCisKKyAgICBjb25zdCB1bnNpZ25l
ZCBpbnQgVGV4dHVyZVVzYWdlVW5rbm93biA9IDB4MDAwMDsKKyAgICBjb25zdCB1bnNpZ25lZCBp
bnQgVGV4dHVyZVVzYWdlU2hhZGVyUmVhZCA9IDB4MDAwMTsKKyAgICBjb25zdCB1bnNpZ25lZCBp
bnQgVGV4dHVyZVVzYWdlU2hhZGVyV3JpdGUgPSAweDAwMDI7CisgICAgY29uc3QgdW5zaWduZWQg
aW50IFRleHR1cmVVc2FnZVJlbmRlclRhcmdldCA9IDB4MDAwNDsKKyAgICBjb25zdCB1bnNpZ25l
ZCBpbnQgVGV4dHVyZVVzYWdlUGl4ZWxGb3JtYXRWaWV3ID0gMHgwMDEwOworCisgICAgLy8gRW50
cnkgcG9pbnRzCisKKyAgICBXZWJHUFVMaWJyYXJ5IGNyZWF0ZUxpYnJhcnkoRE9NU3RyaW5nIHNv
dXJjZUNvZGUpOworCisgICAgV2ViR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZT8gY3JlYXRlUmVuZGVy
UGlwZWxpbmVTdGF0ZShXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7
CisgICAgV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGU/IGNyZWF0ZURlcHRoU3RlbmNpbFN0YXRlKFdl
YkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IgZGVzY3JpcHRvcik7CisKKyAgICBXZWJHUFVDb21t
YW5kUXVldWU/IGNyZWF0ZUNvbW1hbmRRdWV1ZSgpOworCisgICAgV2ViR1BVRHJhd2FibGU/IG5l
eHREcmF3YWJsZSgpOworCisgICAgV2ViR1BVQnVmZmVyPyBjcmVhdGVCdWZmZXIoQXJyYXlCdWZm
ZXJWaWV3IGRhdGEpOworCisgICAgV2ViR1BVVGV4dHVyZT8gY3JlYXRlVGV4dHVyZShXZWJHUFVU
ZXh0dXJlRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKKworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR1BVVGV4dHVyZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjkwMGIyNGVhOGI0OTg1MTYw
NzdhZDhlZTU4ZDQ2OGQ4YjhjYThkOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmUuY3BwCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViR1BVVGV4dHVyZS5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2lu
Y2x1ZGUgIkdQVVRleHR1cmUuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJpbmdDb250ZXh0Lmgi
CisjaW5jbHVkZSAiV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitSZWY8V2ViR1BVVGV4dHVyZT4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlRnJvbURyYXdh
YmxlVGV4dHVyZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPEdQ
VVRleHR1cmU+IGRyYXdhYmxlVGV4dHVyZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJHUFVUZXh0dXJlKGNvbnRleHQsIGRyYXdhYmxlVGV4dHVyZSkpOworfQorCitSZWY8V2ViR1BV
VGV4dHVyZT4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNv
bnRleHQsIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYkdQVVRleHR1cmUoY29udGV4dCwgZGVzY3JpcHRvcikpOworfQor
CitXZWJHUFVUZXh0dXJlOjpXZWJHUFVUZXh0dXJlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQqIGNv
bnRleHQsIFBhc3NSZWZQdHI8R1BVVGV4dHVyZT4gZHJhd2FibGVUZXh0dXJlKQorICAgIDogV2Vi
R1BVT2JqZWN0KGNvbnRleHQpCisgICAgLCBtX3RleHR1cmUoZHJhd2FibGVUZXh0dXJlKQorewor
fQorCitXZWJHUFVUZXh0dXJlOjpXZWJHUFVUZXh0dXJlKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQq
IGNvbnRleHQsIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorICAgIDogV2Vi
R1BVT2JqZWN0KGNvbnRleHQpCit7CisgICAgbV90ZXh0dXJlID0gY29udGV4dC0+ZGV2aWNlKCkt
PmNyZWF0ZVRleHR1cmUoZGVzY3JpcHRvci0+dGV4dHVyZURlc2NyaXB0b3IoKSk7Cit9CisKK1dl
YkdQVVRleHR1cmU6On5XZWJHUFVUZXh0dXJlKCkKK3sKK30KKwordW5zaWduZWQgbG9uZyBXZWJH
UFVUZXh0dXJlOjp3aWR0aCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3RleHR1cmUpCisgICAgICAg
IHJldHVybiAwOworICAgIAorICAgIHJldHVybiBtX3RleHR1cmUtPndpZHRoKCk7Cit9CisKK3Vu
c2lnbmVkIGxvbmcgV2ViR1BVVGV4dHVyZTo6aGVpZ2h0KCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
dGV4dHVyZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gbV90ZXh0dXJlLT5oZWln
aHQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmUuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjViMGJiZTQzNjA4
MTAwODY1NDJiYWIyOWY4ZmMwNTI2Zjc5MWNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZS5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXZWJHUFVPYmplY3QuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVUZXh0dXJlOworY2xhc3MgV2ViR1BVVGV4dHVyZURl
c2NyaXB0b3I7CisKK2NsYXNzIFdlYkdQVVRleHR1cmUgOiBwdWJsaWMgV2ViR1BVT2JqZWN0IHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJHUFVUZXh0dXJlKCk7CisgICAgc3RhdGljIFJlZjxX
ZWJHUFVUZXh0dXJlPiBjcmVhdGVGcm9tRHJhd2FibGVUZXh0dXJlKFdlYkdQVVJlbmRlcmluZ0Nv
bnRleHQqLCBQYXNzUmVmUHRyPEdQVVRleHR1cmU+KTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVRl
eHR1cmU+IGNyZWF0ZShXZWJHUFVSZW5kZXJpbmdDb250ZXh0KiwgV2ViR1BVVGV4dHVyZURlc2Ny
aXB0b3IqKTsKKworICAgIHVuc2lnbmVkIGxvbmcgd2lkdGgoKSBjb25zdDsKKyAgICB1bnNpZ25l
ZCBsb25nIGhlaWdodCgpIGNvbnN0OworCisgICAgR1BVVGV4dHVyZSogdGV4dHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFdlYkdQVVRleHR1
cmUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIFBhc3NSZWZQdHI8R1BVVGV4dHVyZT4pOworICAg
IFdlYkdQVVRleHR1cmUoV2ViR1BVUmVuZGVyaW5nQ29udGV4dCosIFdlYkdQVVRleHR1cmVEZXNj
cmlwdG9yKik7CisKKyAgICBSZWZQdHI8R1BVVGV4dHVyZT4gbV90ZXh0dXJlOworfTsKKyAgICAK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdQVVRleHR1cmUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjZWRiMDZjYmU2MWY2Y2Q4MzM3
NGQzZWJhMTY1ODVjYzg1Zjg5ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlLmlkbApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdF
QkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBpbnRlcmZhY2UgV2ViR1BVVGV4
dHVyZSB7CisKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB3aWR0aDsKKyAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBoZWlnaHQ7CisKK307CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODA2NzkzOWFiNWIzMjAyYzk4YzU4YTI5NDFhNTFmMDU2NTU5M2E3Nwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1
cmVEZXNjcmlwdG9yLmNwcApAQCAtMCwwICsxLDE0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
ZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1
ZGUgIkdQVVRleHR1cmVEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXZWJHUFVUZXh0dXJlRGVzY3Jp
cHRvcj4gV2ViR1BVVGV4dHVyZURlc2NyaXB0b3I6OmNyZWF0ZSh1bnNpZ25lZCBsb25nIHBpeGVs
Rm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCwgYm9vbCBt
aXBtYXBwZWQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVVGV4dHVyZURlc2Ny
aXB0b3IocGl4ZWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIG1pcG1hcHBlZCkpOworfQorCitXZWJH
UFVUZXh0dXJlRGVzY3JpcHRvcjo6V2ViR1BVVGV4dHVyZURlc2NyaXB0b3IodW5zaWduZWQgbG9u
ZyBwaXhlbEZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQs
IGJvb2wgbWlwbWFwcGVkKQorICAgIDogV2ViR1BVT2JqZWN0KCkKK3sKKyAgICBtX3RleHR1cmVE
ZXNjcmlwdG9yID0gR1BVVGV4dHVyZURlc2NyaXB0b3I6OmNyZWF0ZShwaXhlbEZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgbWlwbWFwcGVkKTsKK30KKworV2ViR1BVVGV4dHVyZURlc2NyaXB0b3I6On5X
ZWJHUFVUZXh0dXJlRGVzY3JpcHRvcigpCit7Cit9CisKK3Vuc2lnbmVkIGxvbmcgV2ViR1BVVGV4
dHVyZURlc2NyaXB0b3I6OndpZHRoKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fdGV4dHVyZURlc2Ny
aXB0b3IpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIG1fdGV4dHVyZURlc2NyaXB0
b3ItPndpZHRoKCk7Cit9CisKK3ZvaWQgV2ViR1BVVGV4dHVyZURlc2NyaXB0b3I6OnNldFdpZHRo
KHVuc2lnbmVkIGxvbmcgd2lkdGgpCit7CisgICAgaWYgKCFtX3RleHR1cmVEZXNjcmlwdG9yKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX3RleHR1cmVEZXNjcmlwdG9yLT5zZXRXaWR0aCh3aWR0
aCk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgV2ViR1BVVGV4dHVyZURlc2NyaXB0b3I6OmhlaWdodCgp
IGNvbnN0Cit7CisgICAgaWYgKCFtX3RleHR1cmVEZXNjcmlwdG9yKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIHJldHVybiBtX3RleHR1cmVEZXNjcmlwdG9yLT5oZWlnaHQoKTsKK30KKwordm9p
ZCBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcjo6c2V0SGVpZ2h0KHVuc2lnbmVkIGxvbmcgaGVpZ2h0
KQoreworICAgIGlmICghbV90ZXh0dXJlRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIG1fdGV4dHVyZURlc2NyaXB0b3ItPnNldEhlaWdodChoZWlnaHQpOworfQorCit1bnNp
Z25lZCBsb25nIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yOjpzYW1wbGVDb3VudCgpIGNvbnN0Cit7
CisgICAgaWYgKCFtX3RleHR1cmVEZXNjcmlwdG9yKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IHJldHVybiBtX3RleHR1cmVEZXNjcmlwdG9yLT5zYW1wbGVDb3VudCgpOworfQorCit2b2lkIFdl
YkdQVVRleHR1cmVEZXNjcmlwdG9yOjpzZXRTYW1wbGVDb3VudCh1bnNpZ25lZCBsb25nIHNhbXBs
ZUNvdW50KQoreworICAgIGlmICghbV90ZXh0dXJlRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJu
OworICAgIAorICAgIG1fdGV4dHVyZURlc2NyaXB0b3ItPnNldFNhbXBsZUNvdW50KHNhbXBsZUNv
dW50KTsKK30KKwordW5zaWduZWQgbG9uZyBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcjo6dGV4dHVy
ZVR5cGUoKSBjb25zdAoreworICAgIGlmICghbV90ZXh0dXJlRGVzY3JpcHRvcikKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICByZXR1cm4gbV90ZXh0dXJlRGVzY3JpcHRvci0+dGV4dHVyZVR5cGUo
KTsKK30KKwordm9pZCBXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcjo6c2V0VGV4dHVyZVR5cGUodW5z
aWduZWQgbG9uZyB0ZXh0dXJlVHlwZSkKK3sKKyAgICBpZiAoIW1fdGV4dHVyZURlc2NyaXB0b3Ip
CisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX3RleHR1cmVEZXNjcmlwdG9yLT5zZXRUZXh0
dXJlVHlwZSh0ZXh0dXJlVHlwZSk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgV2ViR1BVVGV4dHVyZURl
c2NyaXB0b3I6OnN0b3JhZ2VNb2RlKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fdGV4dHVyZURlc2Ny
aXB0b3IpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIG1fdGV4dHVyZURlc2NyaXB0
b3ItPnN0b3JhZ2VNb2RlKCk7Cit9CisKK3ZvaWQgV2ViR1BVVGV4dHVyZURlc2NyaXB0b3I6OnNl
dFN0b3JhZ2VNb2RlKHVuc2lnbmVkIGxvbmcgc3RvcmFnZU1vZGUpCit7CisgICAgaWYgKCFtX3Rl
eHR1cmVEZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV90ZXh0dXJlRGVz
Y3JpcHRvci0+c2V0U3RvcmFnZU1vZGUoc3RvcmFnZU1vZGUpOworfQorCit1bnNpZ25lZCBsb25n
IFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yOjp1c2FnZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3Rl
eHR1cmVEZXNjcmlwdG9yKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBtX3RleHR1
cmVEZXNjcmlwdG9yLT51c2FnZSgpOworfQorCit2b2lkIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9y
OjpzZXRVc2FnZSh1bnNpZ25lZCBsb25nIHVzYWdlKQoreworICAgIGlmICghbV90ZXh0dXJlRGVz
Y3JpcHRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV90ZXh0dXJlRGVzY3JpcHRvci0+c2V0
VXNhZ2UodXNhZ2UpOworfQorICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdQVVRleHR1cmVEZXNj
cmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVUZXh0dXJlRGVzY3Jp
cHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhhZTI2NGU2MWFkMThlYzBjNmYwNDY5OTAyNzczZDE1NDBiYmM0
MWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHUFVU
ZXh0dXJlRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJH
UFUpCisKKyNpbmNsdWRlICJXZWJHUFVFbnVtcy5oIgorI2luY2x1ZGUgIldlYkdQVU9iamVjdC5o
IgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEdQVVRleHR1cmVEZXNjcmlwdG9yOworCitjbGFzcyBXZWJHUFVUZXh0dXJlRGVzY3JpcHRv
ciA6IHB1YmxpYyBXZWJHUFVPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdQVVRl
eHR1cmVEZXNjcmlwdG9yKCk7CisgICAgc3RhdGljIFJlZjxXZWJHUFVUZXh0dXJlRGVzY3JpcHRv
cj4gY3JlYXRlKHVuc2lnbmVkIGxvbmcgcGl4ZWxGb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgs
IHVuc2lnbmVkIGxvbmcgaGVpZ2h0LCBib29sIG1pcG1hcHBlZCk7CisKKyAgICB1bnNpZ25lZCBs
b25nIHdpZHRoKCkgY29uc3Q7CisgICAgdm9pZCBzZXRXaWR0aCh1bnNpZ25lZCBsb25nKTsKKwor
ICAgIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRIZWlnaHQodW5z
aWduZWQgbG9uZyk7CisKKyAgICB1bnNpZ25lZCBsb25nIHNhbXBsZUNvdW50KCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXRTYW1wbGVDb3VudCh1bnNpZ25lZCBsb25nKTsKKworICAgIHVuc2lnbmVkIGxv
bmcgdGV4dHVyZVR5cGUoKSBjb25zdDsKKyAgICB2b2lkIHNldFRleHR1cmVUeXBlKHVuc2lnbmVk
IGxvbmcpOworCisgICAgdW5zaWduZWQgbG9uZyBzdG9yYWdlTW9kZSgpIGNvbnN0OworICAgIHZv
aWQgc2V0U3RvcmFnZU1vZGUodW5zaWduZWQgbG9uZyk7CisKKyAgICB1bnNpZ25lZCBsb25nIHVz
YWdlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRVc2FnZSh1bnNpZ25lZCBsb25nKTsKKworICAgIEdQ
VVRleHR1cmVEZXNjcmlwdG9yKiB0ZXh0dXJlRGVzY3JpcHRvcigpIHsgcmV0dXJuIG1fdGV4dHVy
ZURlc2NyaXB0b3IuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWJHUFVUZXh0dXJlRGVzY3Jp
cHRvcih1bnNpZ25lZCBsb25nIHBpeGVsRm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNp
Z25lZCBsb25nIGhlaWdodCwgYm9vbCBtaXBtYXBwZWQpOworCisgICAgUmVmUHRyPEdQVVRleHR1
cmVEZXNjcmlwdG9yPiBtX3RleHR1cmVEZXNjcmlwdG9yOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMmFkMjY0ZDRkZWNkZGQ0
OTdmODIyZDJmMzAyZDdiNzdjZmVjZTk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsCkBAIC0wLDAgKzEsNDIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAg
Q29uc3RydWN0b3IodW5zaWduZWQgbG9uZyBwaXhlbEZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0
aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQsIGJvb2xlYW4gbWlwbWFwcGVkKSwKKyAgICBDb25kaXRp
b25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gaW50ZXJmYWNlIFdl
YkdQVVRleHR1cmVEZXNjcmlwdG9yIHsKKworICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHRl
eHR1cmVUeXBlOworCisgICAgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgd2lkdGg7CisgICAgYXR0
cmlidXRlIHVuc2lnbmVkIGxvbmcgaGVpZ2h0OworICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25n
IHNhbXBsZUNvdW50OworCisgICAgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgc3RvcmFnZU1vZGU7
CisKKyAgICBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB1c2FnZTsKKworfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuaAppbmRleCBhMjQwZjc5
YTQzZDJkYmEwN2VhZWFkODA1ZjRhMTc5NmNlNjk0ZWQ2Li5lOGNhM2E2OGQ4MTcwYzZkNWYwNTQ2
ZDg1NjBiOWQwYWMyZjJjZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVURldmljZS5oCkBAIC00Nyw2ICs0NywxMCBAQCB0eXBlZGVmIHZvaWQgUGxh
dGZvcm1HUFVEZXZpY2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdQVUJ1ZmZlcjsK
Ky8vIEZJWE1FOiBXZWJHUFUgLSBTdHViIGltcGxlbWVudGF0aW9uIC0gbm90IGltcGxlbWVudGVk
IHlldC4KK2NsYXNzIEdQVUNvbW1hbmRRdWV1ZTsKK2NsYXNzIEdQVURyYXdhYmxlOworLy8gRklY
TUU6IFdlYkdQVSAtIEVuZCBzdHViLgogY2xhc3MgR1BVTGlicmFyeTsKIGNsYXNzIEdQVVRleHR1
cmU7CiBjbGFzcyBHUFVUZXh0dXJlRGVzY3JpcHRvcjsKQEAgLTY5LDYgKzczLDEyIEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8R1BVQnVmZmVyPiBjcmVhdGVCdWZmZXJGcm9t
RGF0YShBcnJheUJ1ZmZlclZpZXcqIGRhdGEpOwogICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxH
UFVUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKEdQVVRleHR1cmVEZXNjcmlwdG9yKik7CiAKKyAgICAv
LyBGSVhNRTogV2ViR1BVIC0gU3R1YiBpbXBsZW1lbnRhdGlvbiAtIG5vdCBpbXBsZW1lbnRlZCB5
ZXQuCisgICAgR1BVQ29tbWFuZFF1ZXVlKiBjcmVhdGVDb21tYW5kUXVldWUoKSB7IHJldHVybiBu
dWxscHRyOyB9CisgICAgR1BVRHJhd2FibGUqIGdldEZyYW1lYnVmZmVyKCkgeyByZXR1cm4gbnVs
bHB0cjsgfQorICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIHsgfQorICAgIC8vIEZJWE1F
OiBXZWJHUFUgLSBFbmQgc3R1Yi4KKwogcHJpdmF0ZToKICAgICBHUFVEZXZpY2UoKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>