<?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>39557</bug_id>
          
          <creation_ts>2010-05-22 21:11:47 -0700</creation_ts>
          <short_desc>Full screen doesn&apos;t work for video elements</short_desc>
          <delta_ts>2010-05-25 15:31:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://diveintohtml5.org/video.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aroben</cc>
    
    <cc>cmarrin</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>229395</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-05-22 21:11:47 -0700</bug_when>
    <thetext>full screen doesn&apos;t work for video elements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229399</commentid>
    <comment_count>1</comment_count>
      <attachid>56808</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-05-22 22:04:43 -0700</bug_when>
    <thetext>Created attachment 56808
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229400</commentid>
    <comment_count>2</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-05-22 22:06:47 -0700</bug_when>
    <thetext>Will attach a new patch made against an updated tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229411</commentid>
    <comment_count>3</comment_count>
      <attachid>56811</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-05-22 23:51:48 -0700</bug_when>
    <thetext>Created attachment 56811
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229421</commentid>
    <comment_count>4</comment_count>
      <attachid>56811</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-05-23 01:04:45 -0700</bug_when>
    <thetext>Comment on attachment 56811
Patch

There seem to be a lot of project file changes in WebCore.vcproj relating to JSIDBDatabase files. I assume these are not intended.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229422</commentid>
    <comment_count>5</comment_count>
      <attachid>56811</attachid>
    <who name="">mitz</who>
    <bug_when>2010-05-23 01:04:58 -0700</bug_when>
    <thetext>Comment on attachment 56811
Patch

&gt; +        * platform/graphics/win/MediaPlayerPrivateFullscreenWindow.cpp: Added.
&gt; +        * platform/graphics/win/MediaPlayerPrivateFullscreenWindow.h: Added.

Are these files new or are they being restored? If the latter, then you should use svn cp to preserve history.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229482</commentid>
    <comment_count>6</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-05-23 09:36:55 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 56811 [details])
&gt; There seem to be a lot of project file changes in WebCore.vcproj relating to JSIDBDatabase files. I assume these are not intended.

Visual Studio will arbitrarily re-arrange the order of files in .vcproj files when other source files are added.  I can try to undo the damage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229483</commentid>
    <comment_count>7</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-05-23 09:37:49 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 56811 [details])
&gt; &gt; +        * platform/graphics/win/MediaPlayerPrivateFullscreenWindow.cpp: Added.
&gt; &gt; +        * platform/graphics/win/MediaPlayerPrivateFullscreenWindow.h: Added.
&gt; 
&gt; Are these files new or are they being restored? If the latter, then you should use svn cp to preserve history.

They are brand new.  I&apos;m not entirely happy with the name; they could as easily been named platform/graphics/win/FullscreenWindow.cpp/h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229491</commentid>
    <comment_count>8</comment_count>
      <attachid>56826</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-05-23 12:49:27 -0700</bug_when>
    <thetext>Created attachment 56826
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229492</commentid>
    <comment_count>9</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-05-23 12:50:22 -0700</bug_when>
    <thetext>Updated the copyright notices in MediaPlayerPrivateFullscreenWindow.h/cpp.  Removed the extraneous changes to the WebCore.vcproj.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229507</commentid>
    <comment_count>10</comment_count>
      <attachid>56830</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-05-23 14:14:26 -0700</bug_when>
    <thetext>Created attachment 56830
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229578</commentid>
    <comment_count>11</comment_count>
      <attachid>56830</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-05-23 20:03:47 -0700</bug_when>
    <thetext>Comment on attachment 56830
Patch

This is an unofficial review - no status change

&gt; Index: WebCore/ChangeLog
&gt; ===================================================================
&gt; --- WebCore/ChangeLog	(revision 60048)
&gt; +++ WebCore/ChangeLog	(working copy)
&gt; @@ -1,3 +1,31 @@
&gt; +2010-05-22  Jer Noble  &lt;jer.noble@apple.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        full screen doesn&apos;t work for video elements
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=39557
&gt; +        rdar://problem/8011813
&gt; +        
&gt; +        Add fullscreen support for MediaPlayerPrivateVisualContext.  A new class, MediaPlayerPrivateFullscreenWindow,
&gt; +        provides the fullscreen hwnd and layer renderer.  Any WKCACFLayer can be provided to MediaPlayerPrivateFullscreenWindow
&gt; +        so future additional MediaPlayerPrivate implementations can use the fullscreen window.
&gt; +        
&gt; +        Minor additions have been made to the FloatSize and IntSize classes.

It would be nice to note the reason for the changes

&gt; Index: WebCore/platform/graphics/FloatSize.h
&gt; ===================================================================
&gt; --- WebCore/platform/graphics/FloatSize.h	(revision 60048)
&gt; +++ WebCore/platform/graphics/FloatSize.h	(working copy)
&gt; @@ -63,6 +63,14 @@ public:
&gt;  
&gt;      bool isEmpty() const { return m_width &lt;= 0 || m_height &lt;= 0; }
&gt;  
&gt; +    float aspectRatio() const { return m_width / m_height; }

You should zero check m_height here to avoid divide by 0

&gt; Index: WebCore/platform/graphics/IntSize.h
&gt; ===================================================================
&gt; --- WebCore/platform/graphics/IntSize.h	(revision 60048)
&gt; +++ WebCore/platform/graphics/IntSize.h	(working copy)
&gt; @@ -72,6 +72,8 @@ public:
&gt;  
&gt;      bool isEmpty() const { return m_width &lt;= 0 || m_height &lt;= 0; }
&gt;      bool isZero() const { return !m_width &amp;&amp; !m_height; }
&gt; +
&gt; +    float aspectRatio() const { return static_cast&lt;float&gt;(m_width) / static_cast&lt;float&gt;(m_height); }

Same as above

&gt; Index: WebCore/platform/graphics/win/MediaPlayerPrivateFullscreenWindow.cpp
&gt; ===================================================================
&gt; 
&gt; +void MediaPlayerPrivateFullscreenWindow::createWindow()
&gt; +{
&gt; +    static ATOM windowAtom = 0;
&gt; +    if (!windowAtom) {
&gt; +        WNDCLASSEX wcex = {0};
&gt; +        wcex.cbSize         = sizeof(WNDCLASSEX);
&gt; +        wcex.style          = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
&gt; +        wcex.lpfnWndProc    = &amp;staticWndProc;
&gt; +        wcex.hInstance      = WebCore::instanceHandle();
&gt; +        wcex.lpszClassName  = L&quot;MediaPlayerPrivateFullscreenWindowClass&quot;;
&gt; +        windowAtom = ::RegisterClassEx(&amp;wcex);

WebKit style is to not align equal signs, I believe

&gt; +    }
&gt; +
&gt; +    if (m_hwnd)
&gt; +        close();
&gt; +
&gt; +    MONITORINFO mi = {0};
&gt; +    mi.cbSize = sizeof(MONITORINFO);
&gt; +    GetMonitorInfo(MonitorFromWindow(0, MONITOR_DEFAULTTOPRIMARY), &amp;mi);
&gt; +    IntRect monitorRect = mi.rcMonitor;
&gt; +
&gt; +    CREATESTRUCTW cs = {0};
&gt; +    cs.x = 0;
&gt; +    cs.y = 0;
&gt; +    cs.cx = monitorRect.width();
&gt; +    cs.cy = monitorRect.height();
&gt; +    cs.style = WS_POPUP | WS_VISIBLE;
&gt; +    cs.dwExStyle = 0;
&gt; +    cs.lpszClass = L&quot;MediaPlayerPrivateFullscreenWindowClass&quot;;
&gt; +    cs.lpszName = L&quot;&quot;;
&gt; +    cs.lpCreateParams = (LPVOID)this;
&gt; +    
&gt; +    m_hwnd = ::CreateWindowExW(cs.dwExStyle, 
&gt; +                            cs.lpszClass, 
&gt; +                            cs.lpszName, 
&gt; +                            cs.style, 
&gt; +                            cs.x, 
&gt; +                            cs.y, 
&gt; +                            cs.cx, 
&gt; +                            cs.cy, 
&gt; +                            cs.hwndParent, 
&gt; +                            cs.hMenu, 
&gt; +                            cs.hInstance, 
&gt; +                            cs.lpCreateParams);

Webkit style is also to put params on one line, only splitting when lines are really long

&gt; +}
&gt; +
&gt; +void MediaPlayerPrivateFullscreenWindow::close()
&gt; +{
&gt; +    ::DestroyWindow(m_hwnd);
&gt; +    m_hwnd = 0;
&gt; +}
&gt; +
&gt; +HWND MediaPlayerPrivateFullscreenWindow::hwnd() const
&gt; +{
&gt; +    return m_hwnd;
&gt; +}
&gt; +
&gt; +WKCACFLayerRenderer* MediaPlayerPrivateFullscreenWindow::layerRenderer()
&gt; +{
&gt; +    return m_layerRenderer.get();
&gt; +}

This method can be const

&gt; +
&gt; +WKCACFLayer* MediaPlayerPrivateFullscreenWindow::rootChildLayer()
&gt; +{
&gt; +    return m_rootChild.get();
&gt; +}

As can this one.

&gt; +
&gt; +void MediaPlayerPrivateFullscreenWindow::setRootChildLayer(PassRefPtr&lt;WKCACFLayer&gt; rootChild)
&gt; +{
&gt; +    if (m_rootChild != rootChild) {
&gt; +
&gt; +        if (m_rootChild) {
&gt; +            m_rootChild-&gt;removeFromSuperlayer();
&gt; +            m_rootChild.clear();
&gt; +        }
&gt; +
&gt; +        m_rootChild = rootChild;
&gt; +    }
&gt; +
&gt; +    if (m_rootChild) {
&gt; +        m_layerRenderer-&gt;setRootChildLayer(m_rootChild.get());
&gt; +        WKCACFLayer* rootLayer = m_rootChild-&gt;rootLayer();
&gt; +        CGRect rootBounds = m_rootChild-&gt;rootLayer()-&gt;bounds();
&gt; +        m_rootChild-&gt;setFrame(rootBounds);

WKCACFLayer no longer has a setFrame() API. I removed it to simplify the API. Frame is always so confusing because it&apos;s nothing more than a composite of bounds.size and position. So you can replace this with calls to setBounds and setPosition.

&gt; +        m_layerRenderer-&gt;setScrollFrame(IntPoint(rootBounds.origin), IntSize(rootBounds.size));
&gt; +        m_rootChild-&gt;setBackgroundColor(CGColorGetConstantColor(kCGColorBlack));
&gt; +        rootLayer-&gt;setBackgroundColor(CGColorGetConstantColor(kCGColorBlack));

The background of the rootChild should never be seen (always covered by the video) right? You might want to make it&apos;s background red (at least in debug mode) to make it easier to spot problems. But maybe video needs to show the background before it&apos;s started rendering?

&gt; +    }
&gt; +}

Since you&apos;re doing fullscreen video with a fullscreen window, it seems like you should be able to animate it like we do on Mac right? Not for now of course, but is there a bug open about this?

&gt; +
&gt; +LRESULT CALLBACK MediaPlayerPrivateFullscreenWindow::staticWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
&gt; +{
&gt; +    LONG_PTR longPtr = GetWindowLongPtr(hWnd, GWLP_USERDATA);
&gt; +
&gt; +    if (!longPtr &amp;&amp; message == WM_CREATE) {
&gt; +        LPCREATESTRUCT lpcs = reinterpret_cast&lt;LPCREATESTRUCT&gt;(lParam);
&gt; +        longPtr = (LONG_PTR)lpcs-&gt;lpCreateParams;
&gt; +        ::SetWindowLongPtr(hWnd, GWLP_USERDATA, longPtr);
&gt; +    }
&gt; +
&gt; +    if (MediaPlayerPrivateFullscreenWindow* window = reinterpret_cast&lt;MediaPlayerPrivateFullscreenWindow*&gt;(longPtr))
&gt; +        return window-&gt;wndProc(hWnd, message, wParam, lParam);
&gt; +
&gt; +    return ::DefWindowProc(hWnd, message, wParam, lParam);    
&gt; +}
&gt; +
&gt; +LRESULT MediaPlayerPrivateFullscreenWindow::wndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
&gt; +{
&gt; +    LRESULT lResult = 0;
&gt; +    switch (message) {
&gt; +    case WM_CREATE:
&gt; +        m_hwnd = hWnd;
&gt; +        m_layerRenderer-&gt;setHostWindow(m_hwnd);
&gt; +        m_layerRenderer-&gt;createRenderer();
&gt; +        m_layerRenderer-&gt;setNeedsDisplay();
&gt; +        break;
&gt; +    case WM_DESTROY:
&gt; +        m_hwnd = 0;
&gt; +        m_layerRenderer-&gt;destroyRenderer();
&gt; +        m_layerRenderer-&gt;setHostWindow(0);
&gt; +    case WM_WINDOWPOSCHANGED:
&gt; +        {
&gt; +            LPWINDOWPOS wp = (LPWINDOWPOS)lParam;
&gt; +            if (!(wp-&gt;flags &amp; SWP_NOMOVE)) {
&gt; +                m_layerRenderer-&gt;resize();
&gt; +                WKCACFLayer* rootLayer = m_rootChild-&gt;rootLayer();
&gt; +                CGRect rootBounds = m_rootChild-&gt;rootLayer()-&gt;bounds();
&gt; +                m_rootChild-&gt;setFrame(rootBounds);

Same as above

&gt; +                m_rootChild-&gt;setNeedsLayout();
&gt; +                m_layerRenderer-&gt;setScrollFrame(IntPoint(rootBounds.origin), IntSize(rootBounds.size));
&gt; +            }
&gt; +        }
&gt; +        break;
&gt; +    case WM_PAINT:
&gt; +        m_layerRenderer-&gt;renderSoon();
&gt; +        break;
&gt; +    }
&gt; +
&gt; +    if (m_client)
&gt; +        lResult = m_client-&gt;fullscreenClientWndProc(hWnd, message, wParam, lParam);
&gt; +
&gt; +    return lResult;
&gt; +}
&gt; +
&gt; +}
&gt; Index: WebCore/platform/graphics/win/MediaPlayerPrivateFullscreenWindow.h
&gt; ===================================================================
&gt; --- WebCore/platform/graphics/win/MediaPlayerPrivateFullscreenWindow.h	(revision 0)
&gt; +++ WebCore/platform/graphics/win/MediaPlayerPrivateFullscreenWindow.h	(revision 0)
&gt; @@ -0,0 +1,68 @@
&gt; +/*
&gt; + * Copyright (C) 2010 Apple Inc. All rights reserved.
&gt; + * 
&gt; + * Redistribution and use in source and binary forms, with or without 
&gt; + * modification, are permitted provided that the following conditions 
&gt; + * are met:
&gt; + * 1. Redistributions of source code must retain the above copyright 
&gt; + *    notice, this list of conditions and the following disclaimer.
&gt; + * 2. Redistributions in binary form must reproduce the above copyright
&gt; + *    notice, this list of conditions and the following disclaimer in the 
&gt; + *    documentation and/or other materials provided with the distribution.
&gt; + * 
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS AS IS 
&gt; + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
&gt; + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
&gt; + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
&gt; + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
&gt; + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
&gt; + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
&gt; + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
&gt; + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
&gt; + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 
&gt; + * THE POSSIBILITY OF SUCH DAMAGE.
&gt; + */
&gt; +
&gt; +#ifndef MediaPlayerPrivateFullscreenWindow_h
&gt; +#define MediaPlayerPrivateFullscreenWindow_h
&gt; +
&gt; +#include &quot;WKCACFLayer.h&quot;
&gt; +#include &quot;WKCACFLayerRenderer.h&quot;
&gt; +#include &lt;windows.h&gt;
&gt; +#include &lt;wtf/OwnPtr.h&gt;
&gt; +
&gt; +namespace WebCore {
&gt; +
&gt; +class MediaPlayerPrivateFullscreenClient {
&gt; +public:
&gt; +    virtual LRESULT fullscreenClientWndProc(HWND, UINT message, WPARAM, LPARAM) = 0;
&gt; +};
&gt; +
&gt; +class MediaPlayerPrivateFullscreenWindow {
&gt; +public:
&gt; +    MediaPlayerPrivateFullscreenWindow(MediaPlayerPrivateFullscreenClient*);
&gt; +    virtual ~MediaPlayerPrivateFullscreenWindow();
&gt; +
&gt; +    void createWindow();
&gt; +    void close();
&gt; +    
&gt; +    HWND hwnd() const;
&gt; +
&gt; +    WKCACFLayerRenderer* layerRenderer();
&gt; +
&gt; +    WKCACFLayer* rootChildLayer();

Const for these two

&gt; +    void setRootChildLayer(PassRefPtr&lt;WKCACFLayer&gt;);
&gt; +
&gt; +protected:
&gt; +    static LRESULT CALLBACK staticWndProc(HWND, UINT message, WPARAM, LPARAM);
&gt; +    LRESULT wndProc(HWND, UINT message, WPARAM, LPARAM);
&gt; +
&gt; +    MediaPlayerPrivateFullscreenClient* m_client;
&gt; +    OwnPtr&lt;WKCACFLayerRenderer&gt; m_layerRenderer;
&gt; +    RefPtr&lt;WKCACFLayer&gt; m_rootChild;
&gt; +    HWND m_hwnd;
&gt; +};
&gt; +
&gt; +}
&gt; +
&gt; +#endif
&gt; Index: WebCore/platform/graphics/win/MediaPlayerPrivateQuickTimeVisualContext.cpp
&gt; ===================================================================
&gt; --- WebCore/platform/graphics/win/MediaPlayerPrivateQuickTimeVisualContext.cpp	(revision 60048)
&gt; +++ WebCore/platform/graphics/win/MediaPlayerPrivateQuickTimeVisualContext.cpp	(working copy)
&gt; @@ -150,7 +150,7 @@ MediaPlayerPrivateQuickTimeVisualContext
&gt;  
&gt;  bool MediaPlayerPrivateQuickTimeVisualContext::supportsFullscreen() const
&gt;  {
&gt; -    return false;
&gt; +    return true;
&gt;  }
&gt;  
&gt;  PlatformMedia MediaPlayerPrivateQuickTimeVisualContext::platformMedia() const
&gt; @@ -765,7 +765,7 @@ void MediaPlayerPrivateQuickTimeVisualCo
&gt;  
&gt;                  buffer.unlockBaseAddress();
&gt;                  layer-&gt;rootLayer()-&gt;setNeedsRender();
&gt; -            }
&gt; +                }

This looks odd. Why the change in indent? Hard to see whether or not it&apos;s right out of context

&gt;      } else
&gt;  #endif
&gt;          m_player-&gt;repaint();
&gt; @@ -939,6 +939,10 @@ void MediaPlayerPrivateQuickTimeVisualCo
&gt;  #endif
&gt;      // The layer will get hooked up via RenderLayerBacking::updateGraphicsLayerConfiguration().
&gt;  #endif
&gt; +
&gt; +    // fill the newly created layer with image data
&gt; +    if (m_visualContext)
&gt; +        retrieveCurrentImage();
&gt;  }
&gt;  
&gt;  void MediaPlayerPrivateQuickTimeVisualContext::destroyLayerForMovie()
&gt; Index: WebCore/platform/graphics/win/WKCACFLayer.cpp
&gt; ===================================================================
&gt; --- WebCore/platform/graphics/win/WKCACFLayer.cpp	(revision 60048)
&gt; +++ WebCore/platform/graphics/win/WKCACFLayer.cpp	(working copy)
&gt; @@ -154,6 +154,7 @@ PassRefPtr&lt;WKCACFLayer&gt; WKCACFLayer::cre
&gt;  
&gt;  WKCACFLayer::WKCACFLayer(LayerType type)
&gt;      : m_layer(AdoptCF, CACFLayerCreate(toCACFLayerType(type)))
&gt; +    , m_layoutClient(0)
&gt;      , m_needsDisplayOnBoundsChange(false)
&gt;  {
&gt;      CACFLayerSetUserData(layer(), this);
&gt; @@ -286,11 +287,10 @@ void  WKCACFLayer::adoptSublayers(WKCACF
&gt;  void WKCACFLayer::removeFromSuperlayer()
&gt;  {
&gt;      WKCACFLayer* superlayer = this-&gt;superlayer();
&gt; -    if (!superlayer)
&gt; -        return;
&gt; -
&gt;      CACFLayerRemoveFromSuperlayer(layer());
&gt; -    superlayer-&gt;setNeedsCommit();
&gt; +
&gt; +    if (superlayer)
&gt; +        superlayer-&gt;setNeedsCommit();
&gt;  }
&gt;  
&gt;  WKCACFLayer* WKCACFLayer::internalSublayerAtIndex(int index) const
&gt; @@ -343,6 +343,19 @@ void WKCACFLayer::setBounds(const CGRect
&gt;          setNeedsDisplay();
&gt;  }
&gt;  
&gt; +void WKCACFLayer::setFrame(const CGRect&amp; rect)
&gt; +{
&gt; +    CGRect oldFrame = frame();
&gt; +    if (CGRectEqualToRect(rect, oldFrame))
&gt; +        return;
&gt; +
&gt; +    CACFLayerSetFrame(layer(), rect);
&gt; +    setNeedsCommit();
&gt; +
&gt; +    if (m_needsDisplayOnBoundsChange)
&gt; +        setNeedsDisplay();
&gt; +}
&gt; +

Ah, I see. You&apos;ve added back setFrame! I&apos;d really like to leave it out if we can.

&gt;  void WKCACFLayer::setContentsGravity(ContentsGravityType type)
&gt;  {
&gt;      CACFLayerSetContentsGravity(layer(), toCACFContentsGravityType(type));
&gt; @@ -418,6 +431,32 @@ void WKCACFLayer::internalSetNeedsDispla
&gt;      CACFLayerSetNeedsDisplay(layer(), dirtyRect);
&gt;  }
&gt;  
&gt; +void WKCACFLayer::setLayoutClient(WKCACFLayerLayoutClient* layoutClient)
&gt; +{
&gt; +    if (layoutClient == m_layoutClient)
&gt; +        return;
&gt; +
&gt; +    m_layoutClient = layoutClient;
&gt; +    CACFLayerSetLayoutCallback(layer(), m_layoutClient ? &amp;layoutSublayersProc : 0);    
&gt; +}
&gt; +
&gt; +void WKCACFLayer::layoutSublayersProc(CACFLayerRef caLayer) 
&gt; +{
&gt; +    WKCACFLayer* layer = WKCACFLayer::layer(caLayer);
&gt; +    if (layer &amp;&amp; layer-&gt;m_layoutClient)
&gt; +        layer-&gt;m_layoutClient-&gt;layoutSublayersOfLayer(layer);
&gt; +}
&gt; +
&gt; +WKCACFLayerLayoutClient* WKCACFLayer::layoutClient() const
&gt; +{
&gt; +    return m_layoutClient;
&gt; +}
&gt; +
&gt; +void WKCACFLayer::setNeedsLayout()
&gt; +{
&gt; +    CACFLayerSetNeedsLayout(layer());
&gt; +}
&gt; +
&gt;  #ifndef NDEBUG
&gt;  static void printIndent(int indent)
&gt;  {
&gt; @@ -500,9 +539,9 @@ void WKCACFLayer::printLayer(int indent)
&gt;      CGImageRef layerContents = contents();
&gt;      if (layerContents) {
&gt;          printIndent(indent + 1);
&gt; -        fprintf(stderr, &quot;(contents (image [%d %d]))\n&quot;,
&gt; +            fprintf(stderr, &quot;(contents (image [%d %d]))\n&quot;,
&gt;              CGImageGetWidth(layerContents), CGImageGetHeight(layerContents));
&gt; -    }
&gt; +        }

More odd indenting

&gt;  
&gt;      // Print sublayers if needed
&gt;      int n = sublayerCount();
&gt; Index: WebCore/platform/graphics/win/WKCACFLayer.h
&gt; ===================================================================
&gt; --- WebCore/platform/graphics/win/WKCACFLayer.h	(revision 60048)
&gt; +++ WebCore/platform/graphics/win/WKCACFLayer.h	(working copy)
&gt; @@ -44,9 +44,15 @@
&gt;  
&gt;  namespace WebCore {
&gt;  
&gt; +class WKCACFLayer;
&gt;  class WKCACFAnimation;
&gt;  class WKCACFTimingFunction;

Hmmm. I see spurious class declarations here (obviously from when I first implemented this). Probably best to get rid of them while we&apos;re here.

&gt;  
&gt; +class WKCACFLayerLayoutClient {
&gt; +public:
&gt; +    virtual void layoutSublayersOfLayer(WKCACFLayer*) = 0;
&gt; +};
&gt; +
&gt;  class WKCACFLayer : public RefCounted&lt;WKCACFLayer&gt; {
&gt;  public:
&gt;      enum LayerType { Layer, TransformLayer };
&gt; @@ -63,6 +69,10 @@ public:
&gt;  
&gt;      virtual void drawInContext(PlatformGraphicsContext*) { }
&gt;  
&gt; +    virtual void setLayoutClient(WKCACFLayerLayoutClient*);
&gt; +    virtual WKCACFLayerLayoutClient* layoutClient() const;
&gt; +    virtual void setNeedsLayout();
&gt; +
&gt;      void setNeedsDisplay(const CGRect* dirtyRect = 0)
&gt;      {
&gt;          internalSetNeedsDisplay(dirtyRect);
&gt; @@ -173,6 +183,9 @@ public:
&gt;      void setFilters(CFArrayRef filters) { CACFLayerSetFilters(layer(), filters); setNeedsCommit(); }
&gt;      CFArrayRef filters() const { return CACFLayerGetFilters(layer()); }
&gt;  
&gt; +    void setFrame(const CGRect&amp;);
&gt; +    CGRect frame() const { return CACFLayerGetFrame(layer()); }

It would be really great if we could axe this.

&gt; +
&gt;      void setHidden(bool hidden) { CACFLayerSetHidden(layer(), hidden); setNeedsCommit(); }
&gt;      bool isHidden() const { return CACFLayerIsHidden(layer()); }
&gt;  
&gt; @@ -260,8 +273,11 @@ protected:
&gt;      void printLayer(int indent) const;
&gt;  #endif
&gt;  
&gt; +    static void layoutSublayersProc(CACFLayerRef);
&gt; +
&gt;  private:
&gt;      RetainPtr&lt;CACFLayerRef&gt; m_layer;
&gt; +    WKCACFLayerLayoutClient* m_layoutClient;
&gt;      bool m_needsDisplayOnBoundsChange;
&gt;  };
&gt;  
&gt; Index: WebCore/platform/graphics/win/WebTiledLayer.cpp
&gt; ===================================================================
&gt; --- WebCore/platform/graphics/win/WebTiledLayer.cpp	(revision 60048)
&gt; +++ WebCore/platform/graphics/win/WebTiledLayer.cpp	(working copy)
&gt; @@ -73,6 +73,15 @@ void WebTiledLayer::setBounds(const CGRe
&gt;      updateTiles();
&gt;  }
&gt;  
&gt; +void WebTiledLayer::setFrame(const CGRect&amp; rect)
&gt; +{
&gt; +    if (CGRectEqualToRect(rect, frame()))
&gt; +        return;
&gt; +
&gt; +    WebLayer::setFrame(rect);
&gt; +    updateTiles();
&gt; +}
&gt; +

See above

&gt;  void WebTiledLayer::internalSetNeedsDisplay(const CGRect* dirtyRect)
&gt;  {
&gt;      // FIXME: Only setNeedsDisplay for tiles that are currently visible
&gt; Index: WebCore/platform/graphics/win/WebTiledLayer.h
&gt; ===================================================================
&gt; --- WebCore/platform/graphics/win/WebTiledLayer.h	(revision 60048)
&gt; +++ WebCore/platform/graphics/win/WebTiledLayer.h	(working copy)
&gt; @@ -39,6 +39,7 @@ public:
&gt;      virtual ~WebTiledLayer();
&gt;  
&gt;      virtual void setBounds(const CGRect&amp;);
&gt; +    virtual void setFrame(const CGRect&amp;);

See above

&gt;  
&gt;  protected:
&gt;      WebTiledLayer(const CGSize&amp; tileSize, GraphicsLayer* owner);
&gt; Index: WebKit/win/ChangeLog
&gt; ===================================================================
&gt; --- WebKit/win/ChangeLog	(revision 60027)
&gt; +++ WebKit/win/ChangeLog	(working copy)
&gt; @@ -1,3 +1,24 @@
&gt; +2010-05-22  Jer Noble  &lt;jer.noble@apple.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        full screen doesn&apos;t work for video elements

Capitalize the start of sentences

&gt; +        https://bugs.webkit.org/show_bug.cgi?id=39557
&gt; +        rdar://problem/8011813
&gt; +        
&gt; +        Modified FullscreenVideoController to work with MediaPlayerPrivateFullscreenWindow.  The FullscreenVideoController
&gt; +        is now MediaPlayerPrivate agnostic.
&gt; +
&gt; +        * FullscreenVideoController.cpp:
&gt; +        (FullscreenVideoController::LayoutClient::LayoutClient):  
&gt; +        (FullscreenVideoController::LayoutClient::layoutSublayersOfLayer):
&gt; +        (FullscreenVideoController::FullscreenVideoController):
&gt; +        (FullscreenVideoController::~FullscreenVideoController):
&gt; +        (FullscreenVideoController::enterFullscreen):
&gt; +        (FullscreenVideoController::exitFullscreen):
&gt; +        (FullscreenVideoController::createHUDWindow):
&gt; +        * FullscreenVideoController.h:
&gt; +
&gt;  2010-05-21  Steve Block  &lt;steveblock@google.com&gt;
&gt;  
&gt;          Reviewed by Jeremy Orlow.
&gt; Index: LayoutTests/ChangeLog
&gt; ===================================================================
&gt; --- LayoutTests/ChangeLog	(revision 60028)
&gt; +++ LayoutTests/ChangeLog	(working copy)
&gt; @@ -1,3 +1,17 @@
&gt; +2010-05-22  Jer Noble  &lt;jer.noble@apple.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Re-enabled fullscreen support on windows, and modified tests to match.

You should add the bug number here like in the other Changelog

&gt; +
&gt; +        * platform/win/media/controls-after-reload-expected.txt:
&gt; +        * platform/win/media/controls-drag-timebar-expected.txt:
&gt; +        * platform/win/media/controls-strict-expected.txt:
&gt; +        * platform/win/media/controls-styling-expected.txt:
&gt; +        * platform/win/media/video-controls-rendering-expected.txt:
&gt; +        * platform/win/media/video-display-toggle-expected.txt:
&gt; +        * platform/win/media/video-no-audio-expected.txt:
&gt; +
&gt;  2010-05-22  Maciej Stachowiak  &lt;mjs@apple.com&gt;
&gt;  
&gt;          Reviewed by Dan Bernstein.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229594</commentid>
    <comment_count>12</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-05-23 21:20:26 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; +    float aspectRatio() const { return m_width / m_height; }
&gt; 
&gt; You should zero check m_height here to avoid divide by 0

Why? If m_height is 0, it will return either +INF or -INF, which is a true answer for the size&apos;s aspect ratio.

&gt; &gt; +    float aspectRatio() const { return static_cast&lt;float&gt;(m_width) / static_cast&lt;float&gt;(m_height); }
&gt; 
&gt; Same as above

Same question as above.

&gt; &gt; +        WNDCLASSEX wcex = {0};
&gt; &gt; +        wcex.cbSize         = sizeof(WNDCLASSEX);
&gt; &gt; +        wcex.style          = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
&gt; &gt; +        wcex.lpfnWndProc    = &amp;staticWndProc;
&gt; &gt; +        wcex.hInstance      = WebCore::instanceHandle();
&gt; &gt; +        wcex.lpszClassName  = L&quot;MediaPlayerPrivateFullscreenWindowClass&quot;;
&gt; &gt; +        windowAtom = ::RegisterClassEx(&amp;wcex);
&gt; 
&gt; WebKit style is to not align equal signs, I believe

In WNDCLASS  initializers in the WebKit source code, the equals are aligned much more ofter than the opposite.  It&apos;s not called out specifically in the style guidelines, so I went with what seemed used most often.

&gt; Webkit style is also to put params on one line, only splitting when lines are really long

Changed.

&gt; &gt; +WKCACFLayerRenderer* MediaPlayerPrivateFullscreenWindow::layerRenderer()
&gt; &gt; +{
&gt; &gt; +    return m_layerRenderer.get();
&gt; &gt; +}
&gt; 
&gt; This method can be const

Changed.

&gt; &gt; +
&gt; &gt; +WKCACFLayer* MediaPlayerPrivateFullscreenWindow::rootChildLayer()
&gt; &gt; +{
&gt; &gt; +    return m_rootChild.get();
&gt; &gt; +}
&gt; 
&gt; As can this one.

Changed.

&gt; &gt; +    if (m_rootChild) {
&gt; &gt; +        m_layerRenderer-&gt;setRootChildLayer(m_rootChild.get());
&gt; &gt; +        WKCACFLayer* rootLayer = m_rootChild-&gt;rootLayer();
&gt; &gt; +        CGRect rootBounds = m_rootChild-&gt;rootLayer()-&gt;bounds();
&gt; &gt; +        m_rootChild-&gt;setFrame(rootBounds);
&gt; 
&gt; WKCACFLayer no longer has a setFrame() API. I removed it to simplify the API. Frame is always so confusing because it&apos;s nothing more than a composite of bounds.size and position. So you can replace this with calls to setBounds and setPosition.

In order to reproduce the setFrame() API, the caller would need to get the anchorPoint, multiply the result by the destination bounds width and height, and add the result to the intended bottom-left corner position, and then call setBounds() and setPosition().  This turns one line of code into 7 or 8 lines of code.  Why should we remove an API that just wraps CACFLayerSetFrame()?

&gt; &gt; +        m_layerRenderer-&gt;setScrollFrame(IntPoint(rootBounds.origin), IntSize(rootBounds.size));
&gt; &gt; +        m_rootChild-&gt;setBackgroundColor(CGColorGetConstantColor(kCGColorBlack));
&gt; &gt; +        rootLayer-&gt;setBackgroundColor(CGColorGetConstantColor(kCGColorBlack));
&gt; 
&gt; The background of the rootChild should never be seen (always covered by the video) right? You might want to make it&apos;s background red (at least in debug mode) to make it easier to spot problems. But maybe video needs to show the background before it&apos;s started rendering?

m_rootChild doesn&apos;t always occupy it&apos;s parent&apos;s entire bounds.  So its parent, rootLayer, must have a background color set.  Setting that color to red will just mean the &quot;letterbox&quot; bars will always be red in debug builds.

&gt; Since you&apos;re doing fullscreen video with a fullscreen window, it seems like you should be able to animate it like we do on Mac right? Not for now of course, but is there a bug open about this?

There isn&apos;t a bug yet, but we should be able to do this.

&gt; &gt; +    WKCACFLayerRenderer* layerRenderer();
&gt; &gt; +
&gt; &gt; +    WKCACFLayer* rootChildLayer();
&gt; 
&gt; Const for these two

Changed.

&gt; &gt;  PlatformMedia MediaPlayerPrivateQuickTimeVisualContext::platformMedia() const
&gt; &gt; @@ -765,7 +765,7 @@ void MediaPlayerPrivateQuickTimeVisualCo
&gt; &gt;  
&gt; &gt;                  buffer.unlockBaseAddress();
&gt; &gt;                  layer-&gt;rootLayer()-&gt;setNeedsRender();
&gt; &gt; -            }
&gt; &gt; +                }
&gt; 
&gt; This looks odd. Why the change in indent? Hard to see whether or not it&apos;s right out of context

No, it&apos;s totally wrong.  Changed.


&gt; Ah, I see. You&apos;ve added back setFrame! I&apos;d really like to leave it out if we can.

I don&apos;t really understand why.

&gt; &gt; -    }
&gt; &gt; +        }
&gt; 
&gt; More odd indenting

Changed.

&gt; &gt; +class WKCACFLayer;
&gt; &gt;  class WKCACFAnimation;
&gt; &gt;  class WKCACFTimingFunction;
&gt; 
&gt; Hmmm. I see spurious class declarations here (obviously from when I first implemented this). Probably best to get rid of them while we&apos;re here.

Removed.

&gt; &gt; +    void setFrame(const CGRect&amp;);
&gt; &gt; +    CGRect frame() const { return CACFLayerGetFrame(layer()); }
&gt; 
&gt; It would be really great if we could axe this.

Why?

&gt; &gt; +        Reviewed by NOBODY (OOPS!).
&gt; &gt; +
&gt; &gt; +        full screen doesn&apos;t work for video elements
&gt; 
&gt; Capitalize the start of sentences

This is the title of the bug, both in Radar and Bugzilla.  I&apos;ll change the titles of the bugs.

&gt; &gt; +        Reviewed by NOBODY (OOPS!).
&gt; &gt; +
&gt; &gt; +        Re-enabled fullscreen support on windows, and modified tests to match.
&gt; 
&gt; You should add the bug number here like in the other Changelog

Whoops, looks like webkit-patch didn&apos;t do that here.  Added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229596</commentid>
    <comment_count>13</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-05-23 21:25:45 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; The background of the rootChild should never be seen (always covered by the video) right? You might want to make it&apos;s background red (at least in debug mode) to make it easier to spot problems. But maybe video needs to show the background before it&apos;s started rendering?
&gt; 
&gt; m_rootChild doesn&apos;t always occupy it&apos;s parent&apos;s entire bounds.  So its parent, rootLayer, must have a background color set.  Setting that color to red will just mean the &quot;letterbox&quot; bars will always be red in debug builds.

Whoops, disregard.  m_rootChild always occupies the entire window bounds.  We could set the background color to red in debug builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229619</commentid>
    <comment_count>14</comment_count>
      <attachid>56850</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-05-24 00:20:21 -0700</bug_when>
    <thetext>Created attachment 56850
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229634</commentid>
    <comment_count>15</comment_count>
      <attachid>56856</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-05-24 01:02:15 -0700</bug_when>
    <thetext>Created attachment 56856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229718</commentid>
    <comment_count>16</comment_count>
      <attachid>56830</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-05-24 06:23:48 -0700</bug_when>
    <thetext>Comment on attachment 56830
Patch

This is an unofficial review - no status change

&gt; Index: WebCore/ChangeLog
&gt; ===================================================================
&gt; --- WebCore/ChangeLog	(revision 60048)
&gt; +++ WebCore/ChangeLog	(working copy)
&gt; @@ -1,3 +1,31 @@
&gt; +2010-05-22  Jer Noble  &lt;jer.noble@apple.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        full screen doesn&apos;t work for video elements
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=39557
&gt; +        rdar://problem/8011813
&gt; +        
&gt; +        Add fullscreen support for MediaPlayerPrivateVisualContext.  A new class, MediaPlayerPrivateFullscreenWindow,
&gt; +        provides the fullscreen hwnd and layer renderer.  Any WKCACFLayer can be provided to MediaPlayerPrivateFullscreenWindow
&gt; +        so future additional MediaPlayerPrivate implementations can use the fullscreen window.
&gt; +        
&gt; +        Minor additions have been made to the FloatSize and IntSize classes.

It would be nice to note the reason for the changes

&gt; Index: WebCore/platform/graphics/FloatSize.h
&gt; ===================================================================
&gt; --- WebCore/platform/graphics/FloatSize.h	(revision 60048)
&gt; +++ WebCore/platform/graphics/FloatSize.h	(working copy)
&gt; @@ -63,6 +63,14 @@ public:
&gt;  
&gt;      bool isEmpty() const { return m_width &lt;= 0 || m_height &lt;= 0; }
&gt;  
&gt; +    float aspectRatio() const { return m_width / m_height; }

You should zero check m_height here to avoid divide by 0

&gt; Index: WebCore/platform/graphics/IntSize.h
&gt; ===================================================================
&gt; --- WebCore/platform/graphics/IntSize.h	(revision 60048)
&gt; +++ WebCore/platform/graphics/IntSize.h	(working copy)
&gt; @@ -72,6 +72,8 @@ public:
&gt;  
&gt;      bool isEmpty() const { return m_width &lt;= 0 || m_height &lt;= 0; }
&gt;      bool isZero() const { return !m_width &amp;&amp; !m_height; }
&gt; +
&gt; +    float aspectRatio() const { return static_cast&lt;float&gt;(m_width) / static_cast&lt;float&gt;(m_height); }

Same as above

&gt; Index: WebCore/platform/graphics/win/MediaPlayerPrivateFullscreenWindow.cpp
&gt; ===================================================================
&gt; 
&gt; +void MediaPlayerPrivateFullscreenWindow::createWindow()
&gt; +{
&gt; +    static ATOM windowAtom = 0;
&gt; +    if (!windowAtom) {
&gt; +        WNDCLASSEX wcex = {0};
&gt; +        wcex.cbSize         = sizeof(WNDCLASSEX);
&gt; +        wcex.style          = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
&gt; +        wcex.lpfnWndProc    = &amp;staticWndProc;
&gt; +        wcex.hInstance      = WebCore::instanceHandle();
&gt; +        wcex.lpszClassName  = L&quot;MediaPlayerPrivateFullscreenWindowClass&quot;;
&gt; +        windowAtom = ::RegisterClassEx(&amp;wcex);

WebKit style is to not align equal signs, I believe

&gt; +    }
&gt; +
&gt; +    if (m_hwnd)
&gt; +        close();
&gt; +
&gt; +    MONITORINFO mi = {0};
&gt; +    mi.cbSize = sizeof(MONITORINFO);
&gt; +    GetMonitorInfo(MonitorFromWindow(0, MONITOR_DEFAULTTOPRIMARY), &amp;mi);
&gt; +    IntRect monitorRect = mi.rcMonitor;
&gt; +
&gt; +    CREATESTRUCTW cs = {0};
&gt; +    cs.x = 0;
&gt; +    cs.y = 0;
&gt; +    cs.cx = monitorRect.width();
&gt; +    cs.cy = monitorRect.height();
&gt; +    cs.style = WS_POPUP | WS_VISIBLE;
&gt; +    cs.dwExStyle = 0;
&gt; +    cs.lpszClass = L&quot;MediaPlayerPrivateFullscreenWindowClass&quot;;
&gt; +    cs.lpszName = L&quot;&quot;;
&gt; +    cs.lpCreateParams = (LPVOID)this;
&gt; +    
&gt; +    m_hwnd = ::CreateWindowExW(cs.dwExStyle, 
&gt; +                            cs.lpszClass, 
&gt; +                            cs.lpszName, 
&gt; +                            cs.style, 
&gt; +                            cs.x, 
&gt; +                            cs.y, 
&gt; +                            cs.cx, 
&gt; +                            cs.cy, 
&gt; +                            cs.hwndParent, 
&gt; +                            cs.hMenu, 
&gt; +                            cs.hInstance, 
&gt; +                            cs.lpCreateParams);

Webkit style is also to put params on one line, only splitting when lines are really long

&gt; +}
&gt; +
&gt; +void MediaPlayerPrivateFullscreenWindow::close()
&gt; +{
&gt; +    ::DestroyWindow(m_hwnd);
&gt; +    m_hwnd = 0;
&gt; +}
&gt; +
&gt; +HWND MediaPlayerPrivateFullscreenWindow::hwnd() const
&gt; +{
&gt; +    return m_hwnd;
&gt; +}
&gt; +
&gt; +WKCACFLayerRenderer* MediaPlayerPrivateFullscreenWindow::layerRenderer()
&gt; +{
&gt; +    return m_layerRenderer.get();
&gt; +}

This method can be const

&gt; +
&gt; +WKCACFLayer* MediaPlayerPrivateFullscreenWindow::rootChildLayer()
&gt; +{
&gt; +    return m_rootChild.get();
&gt; +}

As can this one.

&gt; +
&gt; +void MediaPlayerPrivateFullscreenWindow::setRootChildLayer(PassRefPtr&lt;WKCACFLayer&gt; rootChild)
&gt; +{
&gt; +    if (m_rootChild != rootChild) {
&gt; +
&gt; +        if (m_rootChild) {
&gt; +            m_rootChild-&gt;removeFromSuperlayer();
&gt; +            m_rootChild.clear();
&gt; +        }
&gt; +
&gt; +        m_rootChild = rootChild;
&gt; +    }
&gt; +
&gt; +    if (m_rootChild) {
&gt; +        m_layerRenderer-&gt;setRootChildLayer(m_rootChild.get());
&gt; +        WKCACFLayer* rootLayer = m_rootChild-&gt;rootLayer();
&gt; +        CGRect rootBounds = m_rootChild-&gt;rootLayer()-&gt;bounds();
&gt; +        m_rootChild-&gt;setFrame(rootBounds);

WKCACFLayer no longer has a setFrame() API. I removed it to simplify the API. Frame is always so confusing because it&apos;s nothing more than a composite of bounds.size and position. So you can replace this with calls to setBounds and setPosition.

&gt; +        m_layerRenderer-&gt;setScrollFrame(IntPoint(rootBounds.origin), IntSize(rootBounds.size));
&gt; +        m_rootChild-&gt;setBackgroundColor(CGColorGetConstantColor(kCGColorBlack));
&gt; +        rootLayer-&gt;setBackgroundColor(CGColorGetConstantColor(kCGColorBlack));

The background of the rootChild should never be seen (always covered by the video) right? You might want to make it&apos;s background red (at least in debug mode) to make it easier to spot problems. But maybe video needs to show the background before it&apos;s started rendering?

&gt; +    }
&gt; +}

Since you&apos;re doing fullscreen video with a fullscreen window, it seems like you should be able to animate it like we do on Mac right? Not for now of course, but is there a bug open about this?

&gt; +
&gt; +LRESULT CALLBACK MediaPlayerPrivateFullscreenWindow::staticWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
&gt; +{
&gt; +    LONG_PTR longPtr = GetWindowLongPtr(hWnd, GWLP_USERDATA);
&gt; +
&gt; +    if (!longPtr &amp;&amp; message == WM_CREATE) {
&gt; +        LPCREATESTRUCT lpcs = reinterpret_cast&lt;LPCREATESTRUCT&gt;(lParam);
&gt; +        longPtr = (LONG_PTR)lpcs-&gt;lpCreateParams;
&gt; +        ::SetWindowLongPtr(hWnd, GWLP_USERDATA, longPtr);
&gt; +    }
&gt; +
&gt; +    if (MediaPlayerPrivateFullscreenWindow* window = reinterpret_cast&lt;MediaPlayerPrivateFullscreenWindow*&gt;(longPtr))
&gt; +        return window-&gt;wndProc(hWnd, message, wParam, lParam);
&gt; +
&gt; +    return ::DefWindowProc(hWnd, message, wParam, lParam);    
&gt; +}
&gt; +
&gt; +LRESULT MediaPlayerPrivateFullscreenWindow::wndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
&gt; +{
&gt; +    LRESULT lResult = 0;
&gt; +    switch (message) {
&gt; +    case WM_CREATE:
&gt; +        m_hwnd = hWnd;
&gt; +        m_layerRenderer-&gt;setHostWindow(m_hwnd);
&gt; +        m_layerRenderer-&gt;createRenderer();
&gt; +        m_layerRenderer-&gt;setNeedsDisplay();
&gt; +        break;
&gt; +    case WM_DESTROY:
&gt; +        m_hwnd = 0;
&gt; +        m_layerRenderer-&gt;destroyRenderer();
&gt; +        m_layerRenderer-&gt;setHostWindow(0);
&gt; +    case WM_WINDOWPOSCHANGED:
&gt; +        {
&gt; +            LPWINDOWPOS wp = (LPWINDOWPOS)lParam;
&gt; +            if (!(wp-&gt;flags &amp; SWP_NOMOVE)) {
&gt; +                m_layerRenderer-&gt;resize();
&gt; +                WKCACFLayer* rootLayer = m_rootChild-&gt;rootLayer();
&gt; +                CGRect rootBounds = m_rootChild-&gt;rootLayer()-&gt;bounds();
&gt; +                m_rootChild-&gt;setFrame(rootBounds);

Same as above

&gt; +                m_rootChild-&gt;setNeedsLayout();
&gt; +                m_layerRenderer-&gt;setScrollFrame(IntPoint(rootBounds.origin), IntSize(rootBounds.size));
&gt; +            }
&gt; +        }
&gt; +        break;
&gt; +    case WM_PAINT:
&gt; +        m_layerRenderer-&gt;renderSoon();
&gt; +        break;
&gt; +    }
&gt; +
&gt; +    if (m_client)
&gt; +        lResult = m_client-&gt;fullscreenClientWndProc(hWnd, message, wParam, lParam);
&gt; +
&gt; +    return lResult;
&gt; +}
&gt; +
&gt; +}
&gt; Index: WebCore/platform/graphics/win/MediaPlayerPrivateFullscreenWindow.h
&gt; ===================================================================
&gt; --- WebCore/platform/graphics/win/MediaPlayerPrivateFullscreenWindow.h	(revision 0)
&gt; +++ WebCore/platform/graphics/win/MediaPlayerPrivateFullscreenWindow.h	(revision 0)
&gt; @@ -0,0 +1,68 @@
&gt; +/*
&gt; + * Copyright (C) 2010 Apple Inc. All rights reserved.
&gt; + * 
&gt; + * Redistribution and use in source and binary forms, with or without 
&gt; + * modification, are permitted provided that the following conditions 
&gt; + * are met:
&gt; + * 1. Redistributions of source code must retain the above copyright 
&gt; + *    notice, this list of conditions and the following disclaimer.
&gt; + * 2. Redistributions in binary form must reproduce the above copyright
&gt; + *    notice, this list of conditions and the following disclaimer in the 
&gt; + *    documentation and/or other materials provided with the distribution.
&gt; + * 
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS AS IS 
&gt; + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
&gt; + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
&gt; + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
&gt; + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
&gt; + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
&gt; + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
&gt; + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
&gt; + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
&gt; + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 
&gt; + * THE POSSIBILITY OF SUCH DAMAGE.
&gt; + */
&gt; +
&gt; +#ifndef MediaPlayerPrivateFullscreenWindow_h
&gt; +#define MediaPlayerPrivateFullscreenWindow_h
&gt; +
&gt; +#include &quot;WKCACFLayer.h&quot;
&gt; +#include &quot;WKCACFLayerRenderer.h&quot;
&gt; +#include &lt;windows.h&gt;
&gt; +#include &lt;wtf/OwnPtr.h&gt;
&gt; +
&gt; +namespace WebCore {
&gt; +
&gt; +class MediaPlayerPrivateFullscreenClient {
&gt; +public:
&gt; +    virtual LRESULT fullscreenClientWndProc(HWND, UINT message, WPARAM, LPARAM) = 0;
&gt; +};
&gt; +
&gt; +class MediaPlayerPrivateFullscreenWindow {
&gt; +public:
&gt; +    MediaPlayerPrivateFullscreenWindow(MediaPlayerPrivateFullscreenClient*);
&gt; +    virtual ~MediaPlayerPrivateFullscreenWindow();
&gt; +
&gt; +    void createWindow();
&gt; +    void close();
&gt; +    
&gt; +    HWND hwnd() const;
&gt; +
&gt; +    WKCACFLayerRenderer* layerRenderer();
&gt; +
&gt; +    WKCACFLayer* rootChildLayer();

Const for these two

&gt; +    void setRootChildLayer(PassRefPtr&lt;WKCACFLayer&gt;);
&gt; +
&gt; +protected:
&gt; +    static LRESULT CALLBACK staticWndProc(HWND, UINT message, WPARAM, LPARAM);
&gt; +    LRESULT wndProc(HWND, UINT message, WPARAM, LPARAM);
&gt; +
&gt; +    MediaPlayerPrivateFullscreenClient* m_client;
&gt; +    OwnPtr&lt;WKCACFLayerRenderer&gt; m_layerRenderer;
&gt; +    RefPtr&lt;WKCACFLayer&gt; m_rootChild;
&gt; +    HWND m_hwnd;
&gt; +};
&gt; +
&gt; +}
&gt; +
&gt; +#endif
&gt; Index: WebCore/platform/graphics/win/MediaPlayerPrivateQuickTimeVisualContext.cpp
&gt; ===================================================================
&gt; --- WebCore/platform/graphics/win/MediaPlayerPrivateQuickTimeVisualContext.cpp	(revision 60048)
&gt; +++ WebCore/platform/graphics/win/MediaPlayerPrivateQuickTimeVisualContext.cpp	(working copy)
&gt; @@ -150,7 +150,7 @@ MediaPlayerPrivateQuickTimeVisualContext
&gt;  
&gt;  bool MediaPlayerPrivateQuickTimeVisualContext::supportsFullscreen() const
&gt;  {
&gt; -    return false;
&gt; +    return true;
&gt;  }
&gt;  
&gt;  PlatformMedia MediaPlayerPrivateQuickTimeVisualContext::platformMedia() const
&gt; @@ -765,7 +765,7 @@ void MediaPlayerPrivateQuickTimeVisualCo
&gt;  
&gt;                  buffer.unlockBaseAddress();
&gt;                  layer-&gt;rootLayer()-&gt;setNeedsRender();
&gt; -            }
&gt; +                }

This looks odd. Why the change in indent? Hard to see whether or not it&apos;s right out of context

&gt;      } else
&gt;  #endif
&gt;          m_player-&gt;repaint();
&gt; @@ -939,6 +939,10 @@ void MediaPlayerPrivateQuickTimeVisualCo
&gt;  #endif
&gt;      // The layer will get hooked up via RenderLayerBacking::updateGraphicsLayerConfiguration().
&gt;  #endif
&gt; +
&gt; +    // fill the newly created layer with image data
&gt; +    if (m_visualContext)
&gt; +        retrieveCurrentImage();
&gt;  }
&gt;  
&gt;  void MediaPlayerPrivateQuickTimeVisualContext::destroyLayerForMovie()
&gt; Index: WebCore/platform/graphics/win/WKCACFLayer.cpp
&gt; ===================================================================
&gt; --- WebCore/platform/graphics/win/WKCACFLayer.cpp	(revision 60048)
&gt; +++ WebCore/platform/graphics/win/WKCACFLayer.cpp	(working copy)
&gt; @@ -154,6 +154,7 @@ PassRefPtr&lt;WKCACFLayer&gt; WKCACFLayer::cre
&gt;  
&gt;  WKCACFLayer::WKCACFLayer(LayerType type)
&gt;      : m_layer(AdoptCF, CACFLayerCreate(toCACFLayerType(type)))
&gt; +    , m_layoutClient(0)
&gt;      , m_needsDisplayOnBoundsChange(false)
&gt;  {
&gt;      CACFLayerSetUserData(layer(), this);
&gt; @@ -286,11 +287,10 @@ void  WKCACFLayer::adoptSublayers(WKCACF
&gt;  void WKCACFLayer::removeFromSuperlayer()
&gt;  {
&gt;      WKCACFLayer* superlayer = this-&gt;superlayer();
&gt; -    if (!superlayer)
&gt; -        return;
&gt; -
&gt;      CACFLayerRemoveFromSuperlayer(layer());
&gt; -    superlayer-&gt;setNeedsCommit();
&gt; +
&gt; +    if (superlayer)
&gt; +        superlayer-&gt;setNeedsCommit();
&gt;  }
&gt;  
&gt;  WKCACFLayer* WKCACFLayer::internalSublayerAtIndex(int index) const
&gt; @@ -343,6 +343,19 @@ void WKCACFLayer::setBounds(const CGRect
&gt;          setNeedsDisplay();
&gt;  }
&gt;  
&gt; +void WKCACFLayer::setFrame(const CGRect&amp; rect)
&gt; +{
&gt; +    CGRect oldFrame = frame();
&gt; +    if (CGRectEqualToRect(rect, oldFrame))
&gt; +        return;
&gt; +
&gt; +    CACFLayerSetFrame(layer(), rect);
&gt; +    setNeedsCommit();
&gt; +
&gt; +    if (m_needsDisplayOnBoundsChange)
&gt; +        setNeedsDisplay();
&gt; +}
&gt; +

Ah, I see. You&apos;ve added back setFrame! I&apos;d really like to leave it out if we can.

&gt;  void WKCACFLayer::setContentsGravity(ContentsGravityType type)
&gt;  {
&gt;      CACFLayerSetContentsGravity(layer(), toCACFContentsGravityType(type));
&gt; @@ -418,6 +431,32 @@ void WKCACFLayer::internalSetNeedsDispla
&gt;      CACFLayerSetNeedsDisplay(layer(), dirtyRect);
&gt;  }
&gt;  
&gt; +void WKCACFLayer::setLayoutClient(WKCACFLayerLayoutClient* layoutClient)
&gt; +{
&gt; +    if (layoutClient == m_layoutClient)
&gt; +        return;
&gt; +
&gt; +    m_layoutClient = layoutClient;
&gt; +    CACFLayerSetLayoutCallback(layer(), m_layoutClient ? &amp;layoutSublayersProc : 0);    
&gt; +}
&gt; +
&gt; +void WKCACFLayer::layoutSublayersProc(CACFLayerRef caLayer) 
&gt; +{
&gt; +    WKCACFLayer* layer = WKCACFLayer::layer(caLayer);
&gt; +    if (layer &amp;&amp; layer-&gt;m_layoutClient)
&gt; +        layer-&gt;m_layoutClient-&gt;layoutSublayersOfLayer(layer);
&gt; +}
&gt; +
&gt; +WKCACFLayerLayoutClient* WKCACFLayer::layoutClient() const
&gt; +{
&gt; +    return m_layoutClient;
&gt; +}
&gt; +
&gt; +void WKCACFLayer::setNeedsLayout()
&gt; +{
&gt; +    CACFLayerSetNeedsLayout(layer());
&gt; +}
&gt; +
&gt;  #ifndef NDEBUG
&gt;  static void printIndent(int indent)
&gt;  {
&gt; @@ -500,9 +539,9 @@ void WKCACFLayer::printLayer(int indent)
&gt;      CGImageRef layerContents = contents();
&gt;      if (layerContents) {
&gt;          printIndent(indent + 1);
&gt; -        fprintf(stderr, &quot;(contents (image [%d %d]))\n&quot;,
&gt; +            fprintf(stderr, &quot;(contents (image [%d %d]))\n&quot;,
&gt;              CGImageGetWidth(layerContents), CGImageGetHeight(layerContents));
&gt; -    }
&gt; +        }

More odd indenting

&gt;  
&gt;      // Print sublayers if needed
&gt;      int n = sublayerCount();
&gt; Index: WebCore/platform/graphics/win/WKCACFLayer.h
&gt; ===================================================================
&gt; --- WebCore/platform/graphics/win/WKCACFLayer.h	(revision 60048)
&gt; +++ WebCore/platform/graphics/win/WKCACFLayer.h	(working copy)
&gt; @@ -44,9 +44,15 @@
&gt;  
&gt;  namespace WebCore {
&gt;  
&gt; +class WKCACFLayer;
&gt;  class WKCACFAnimation;
&gt;  class WKCACFTimingFunction;

Hmmm. I see spurious class declarations here (obviously from when I first implemented this). Probably best to get rid of them while we&apos;re here.

&gt;  
&gt; +class WKCACFLayerLayoutClient {
&gt; +public:
&gt; +    virtual void layoutSublayersOfLayer(WKCACFLayer*) = 0;
&gt; +};
&gt; +
&gt;  class WKCACFLayer : public RefCounted&lt;WKCACFLayer&gt; {
&gt;  public:
&gt;      enum LayerType { Layer, TransformLayer };
&gt; @@ -63,6 +69,10 @@ public:
&gt;  
&gt;      virtual void drawInContext(PlatformGraphicsContext*) { }
&gt;  
&gt; +    virtual void setLayoutClient(WKCACFLayerLayoutClient*);
&gt; +    virtual WKCACFLayerLayoutClient* layoutClient() const;
&gt; +    virtual void setNeedsLayout();
&gt; +
&gt;      void setNeedsDisplay(const CGRect* dirtyRect = 0)
&gt;      {
&gt;          internalSetNeedsDisplay(dirtyRect);
&gt; @@ -173,6 +183,9 @@ public:
&gt;      void setFilters(CFArrayRef filters) { CACFLayerSetFilters(layer(), filters); setNeedsCommit(); }
&gt;      CFArrayRef filters() const { return CACFLayerGetFilters(layer()); }
&gt;  
&gt; +    void setFrame(const CGRect&amp;);
&gt; +    CGRect frame() const { return CACFLayerGetFrame(layer()); }

It would be really great if we could axe this.

&gt; +
&gt;      void setHidden(bool hidden) { CACFLayerSetHidden(layer(), hidden); setNeedsCommit(); }
&gt;      bool isHidden() const { return CACFLayerIsHidden(layer()); }
&gt;  
&gt; @@ -260,8 +273,11 @@ protected:
&gt;      void printLayer(int indent) const;
&gt;  #endif
&gt;  
&gt; +    static void layoutSublayersProc(CACFLayerRef);
&gt; +
&gt;  private:
&gt;      RetainPtr&lt;CACFLayerRef&gt; m_layer;
&gt; +    WKCACFLayerLayoutClient* m_layoutClient;
&gt;      bool m_needsDisplayOnBoundsChange;
&gt;  };
&gt;  
&gt; Index: WebCore/platform/graphics/win/WebTiledLayer.cpp
&gt; ===================================================================
&gt; --- WebCore/platform/graphics/win/WebTiledLayer.cpp	(revision 60048)
&gt; +++ WebCore/platform/graphics/win/WebTiledLayer.cpp	(working copy)
&gt; @@ -73,6 +73,15 @@ void WebTiledLayer::setBounds(const CGRe
&gt;      updateTiles();
&gt;  }
&gt;  
&gt; +void WebTiledLayer::setFrame(const CGRect&amp; rect)
&gt; +{
&gt; +    if (CGRectEqualToRect(rect, frame()))
&gt; +        return;
&gt; +
&gt; +    WebLayer::setFrame(rect);
&gt; +    updateTiles();
&gt; +}
&gt; +

See above

&gt;  void WebTiledLayer::internalSetNeedsDisplay(const CGRect* dirtyRect)
&gt;  {
&gt;      // FIXME: Only setNeedsDisplay for tiles that are currently visible
&gt; Index: WebCore/platform/graphics/win/WebTiledLayer.h
&gt; ===================================================================
&gt; --- WebCore/platform/graphics/win/WebTiledLayer.h	(revision 60048)
&gt; +++ WebCore/platform/graphics/win/WebTiledLayer.h	(working copy)
&gt; @@ -39,6 +39,7 @@ public:
&gt;      virtual ~WebTiledLayer();
&gt;  
&gt;      virtual void setBounds(const CGRect&amp;);
&gt; +    virtual void setFrame(const CGRect&amp;);

See above

&gt;  
&gt;  protected:
&gt;      WebTiledLayer(const CGSize&amp; tileSize, GraphicsLayer* owner);
&gt; Index: WebKit/win/ChangeLog
&gt; ===================================================================
&gt; --- WebKit/win/ChangeLog	(revision 60027)
&gt; +++ WebKit/win/ChangeLog	(working copy)
&gt; @@ -1,3 +1,24 @@
&gt; +2010-05-22  Jer Noble  &lt;jer.noble@apple.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        full screen doesn&apos;t work for video elements

Capitalize the start of sentences

&gt; +        https://bugs.webkit.org/show_bug.cgi?id=39557
&gt; +        rdar://problem/8011813
&gt; +        
&gt; +        Modified FullscreenVideoController to work with MediaPlayerPrivateFullscreenWindow.  The FullscreenVideoController
&gt; +        is now MediaPlayerPrivate agnostic.
&gt; +
&gt; +        * FullscreenVideoController.cpp:
&gt; +        (FullscreenVideoController::LayoutClient::LayoutClient):  
&gt; +        (FullscreenVideoController::LayoutClient::layoutSublayersOfLayer):
&gt; +        (FullscreenVideoController::FullscreenVideoController):
&gt; +        (FullscreenVideoController::~FullscreenVideoController):
&gt; +        (FullscreenVideoController::enterFullscreen):
&gt; +        (FullscreenVideoController::exitFullscreen):
&gt; +        (FullscreenVideoController::createHUDWindow):
&gt; +        * FullscreenVideoController.h:
&gt; +
&gt;  2010-05-21  Steve Block  &lt;steveblock@google.com&gt;
&gt;  
&gt;          Reviewed by Jeremy Orlow.
&gt; Index: LayoutTests/ChangeLog
&gt; ===================================================================
&gt; --- LayoutTests/ChangeLog	(revision 60028)
&gt; +++ LayoutTests/ChangeLog	(working copy)
&gt; @@ -1,3 +1,17 @@
&gt; +2010-05-22  Jer Noble  &lt;jer.noble@apple.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Re-enabled fullscreen support on windows, and modified tests to match.

You should add the bug number here like in the other Changelog

&gt; +
&gt; +        * platform/win/media/controls-after-reload-expected.txt:
&gt; +        * platform/win/media/controls-drag-timebar-expected.txt:
&gt; +        * platform/win/media/controls-strict-expected.txt:
&gt; +        * platform/win/media/controls-styling-expected.txt:
&gt; +        * platform/win/media/video-controls-rendering-expected.txt:
&gt; +        * platform/win/media/video-display-toggle-expected.txt:
&gt; +        * platform/win/media/video-no-audio-expected.txt:
&gt; +
&gt;  2010-05-22  Maciej Stachowiak  &lt;mjs@apple.com&gt;
&gt;  
&gt;          Reviewed by Dan Bernstein.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229719</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-05-24 06:25:49 -0700</bug_when>
    <thetext>Ugh, sorry about reposting the same review. Please disregard!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229727</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-05-24 06:54:35 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; &gt; +    float aspectRatio() const { return m_width / m_height; }
&gt; &gt; 
&gt; &gt; You should zero check m_height here to avoid divide by 0
&gt; 
&gt; Why? If m_height is 0, it will return either +INF or -INF, which is a true answer for the size&apos;s aspect ratio.

Are we sure no platform will throw a divide by 0 exception? If so, then it&apos;s fine. I&apos;m just not aware of code elsewhere in WebKit that allows these sorts of shenanigans.

...
&gt; &gt; &gt; +    if (m_rootChild) {
&gt; &gt; &gt; +        m_layerRenderer-&gt;setRootChildLayer(m_rootChild.get());
&gt; &gt; &gt; +        WKCACFLayer* rootLayer = m_rootChild-&gt;rootLayer();
&gt; &gt; &gt; +        CGRect rootBounds = m_rootChild-&gt;rootLayer()-&gt;bounds();
&gt; &gt; &gt; +        m_rootChild-&gt;setFrame(rootBounds);
&gt; &gt; 
&gt; &gt; WKCACFLayer no longer has a setFrame() API. I removed it to simplify the API. Frame is always so confusing because it&apos;s nothing more than a composite of bounds.size and position. So you can replace this with calls to setBounds and setPosition.
&gt; 
&gt; In order to reproduce the setFrame() API, the caller would need to get the anchorPoint, multiply the result by the destination bounds width and height, and add the result to the intended bottom-left corner position, and then call setBounds() and setPosition().  This turns one line of code into 7 or 8 lines of code.  Why should we remove an API that just wraps CACFLayerSetFrame()?

We never use this API in GraphicsLayer. We have to do lots of logic to flip Y and do other conversions so we always do that at the higher levels anyway. I had a couple of places where it was done in WKCACFLayer. Because my position is always(0,0), I could set the anchor point to (0,0) on creation and then just return setFrame with setBounds. If your anchor point never changes (and I assume that&apos;s the case) you can simply set the anchor point to (0,0) and then call setBounds(CGRectMake(0,0, rootBounds.size.width, rootBounds.size.height); setPosition(rootBounds.origin).

I removed setFrame to avoid needing to deal with its complexities in my tiled layer logic. It&apos;s long been the source of confusion and bugs, and since it is used so rarely, I felt (and still do) that avoiding its use is the best approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229743</commentid>
    <comment_count>19</comment_count>
      <attachid>56856</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-05-24 08:06:36 -0700</bug_when>
    <thetext>Comment on attachment 56856
Patch

By relying on WKCACFLayer and friends, we&apos;re making full-screen not work on machines that don&apos;t support accelerated compositing. Is that OK?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229753</commentid>
    <comment_count>20</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-05-24 08:20:31 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 56856 [details])
&gt; By relying on WKCACFLayer and friends, we&apos;re making full-screen not work on machines that don&apos;t support accelerated compositing. Is that OK?

I was told that we disable fullscreen for machines which do not support accelerated compositing, but I can&apos;t find anywhere in the code which ensures that.  

We could modify the fullscreen window code to fall back to CGContext rendering if acceleration isn&apos;t available.  It won&apos;t be fast, as the scaling and color correction will have to occur on the CPU.   And given the time pressure, I would argue that enhancement could wait.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229761</commentid>
    <comment_count>21</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-05-24 08:50:52 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Are we sure no platform will throw a divide by 0 exception? If so, then it&apos;s fine. I&apos;m just not aware of code elsewhere in WebKit that allows these sorts of shenanigans.

Float div by 0 will always return either +INF or -INF.

&gt; We never use this API in GraphicsLayer. We have to do lots of logic to flip Y and do other conversions so we always do that at the higher levels anyway. I had a couple of places where it was done in WKCACFLayer. Because my position is always(0,0), I could set the anchor point to (0,0) on creation and then just return setFrame with setBounds. If your anchor point never changes (and I assume that&apos;s the case) you can simply set the anchor point to (0,0) and then call setBounds(CGRectMake(0,0, rootBounds.size.width, rootBounds.size.height); setPosition(rootBounds.origin).

Right, I could, assuming I want an anchor point of (0,0).  But how is all of that less error prone than just calling setFrame()?

&gt; I removed setFrame to avoid needing to deal with its complexities in my tiled layer logic. It&apos;s long been the source of confusion and bugs, and since it is used so rarely, I felt (and still do) that avoiding its use is the best approach.

If anything, setFrame() is less confusing than setPosition(), setAnchorPoint(), and setBounds().  It has valid use cases, and like any API, its invalid ones.  But if it&apos;s exposed by CALayer/CACFLayer, I don&apos;t see why it should be disallowed in WKCACFLayer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229830</commentid>
    <comment_count>22</comment_count>
      <attachid>56856</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-05-24 11:38:12 -0700</bug_when>
    <thetext>Comment on attachment 56856
Patch

&gt; +        Minor additions have been made to the FloatSize and IntSize classes: added aspectRatio() to both; added scale(float) to IntSize.

You must mean that you added scale(float) to FloatSize. But I don&apos;t think you need to mention these low-level changes here, since the exact same information is included in the list of changed files below.

&gt; +    void scale(float scale)
&gt; +    {
&gt; +        m_width = m_width * scale;
&gt; +        m_height = m_height * scale;
&gt; +    }

Why not use *= ?

&gt; +#include &quot;config.h&quot;
&gt; +
&gt; +#include &quot;MediaPlayerPrivateFullscreenWindow.h&quot;

You have an extra blank line in there.

&gt; +MediaPlayerPrivateFullscreenWindow::MediaPlayerPrivateFullscreenWindow(MediaPlayerPrivateFullscreenClient* client)
&gt; +    : m_client(client)
&gt; +    , m_hwnd(0)
&gt; +{
&gt; +    m_layerRenderer = WKCACFLayerRenderer::create(0);
&gt; +}

You can initialize m_layerRenderer in the initializer list.

It seems like there&apos;s nothing about this class that&apos;s specific to its use in conjunction with MediaPlayerPrivate. Maybe we should call it something like FullscreenLayerWindow?

&gt; +MediaPlayerPrivateFullscreenWindow::~MediaPlayerPrivateFullscreenWindow()
&gt; +{
&gt; +    m_client = 0;
&gt; +}

Why is this needed?

&gt; +{
&gt; +    static ATOM windowAtom = 0;

No need to initialize to 0; C++ does that for you.

&gt; +    if (!windowAtom) {
&gt; +        WNDCLASSEX wcex = {0};
&gt; +        wcex.cbSize = sizeof(WNDCLASSEX);
&gt; +        wcex.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;

Why are you passing CS_OWNDC here?

&gt; +        wcex.lpfnWndProc = &amp;staticWndProc;

No need for the &amp; in C++.

&gt; +        wcex.hInstance = WebCore::instanceHandle();
&gt; +        wcex.lpszClassName = L&quot;MediaPlayerPrivateFullscreenWindowClass&quot;;

It would be good to put this class name in a constant.

&gt; +    MONITORINFO mi = {0};
&gt; +    mi.cbSize = sizeof(MONITORINFO);
&gt; +    GetMonitorInfo(MonitorFromWindow(0, MONITOR_DEFAULTTOPRIMARY), &amp;mi);
&gt; +    IntRect monitorRect = mi.rcMonitor;

Seems like we should be passing the WebView&apos;s HWND to MonitorFromWindow so that the fullscreen video will appear on the same monitor as the webpage.

Should we check the return value of GetMonitorInfo?

&gt; +    cs.x = 0;
&gt; +    cs.y = 0;
&gt; +    cs.cx = monitorRect.width();
&gt; +    cs.cy = monitorRect.height();

Shouldn&apos;t we be setting cs.x and cs.y to monitorRect.x() and monitorRect.y()?

&gt; +    cs.style = WS_POPUP | WS_VISIBLE;
&gt; +    cs.dwExStyle = 0;
&gt; +    cs.lpszClass = L&quot;MediaPlayerPrivateFullscreenWindowClass&quot;;
&gt; +    cs.lpszName = L&quot;&quot;;
&gt; +    cs.lpCreateParams = (LPVOID)this;
&gt; +    
&gt; +    m_hwnd = ::CreateWindowExW(cs.dwExStyle, cs.lpszClass, cs.lpszName, cs.style, cs.x, cs.y, cs.cx, cs.cy, cs.hwndParent, cs.hMenu, cs.hInstance, cs.lpCreateParams);
&gt; +}

Using a CREATESTRUCTW just to pass the parameters to CreateWindowExW doesn&apos;t seem all that useful.

&gt; +void MediaPlayerPrivateFullscreenWindow::setRootChildLayer(PassRefPtr&lt;WKCACFLayer&gt; rootChild)
&gt; +{
&gt; +    if (m_rootChild != rootChild) {
&gt; +
&gt; +        if (m_rootChild) {

Extra blank line here.

&gt; +            m_rootChild-&gt;removeFromSuperlayer();
&gt; +            m_rootChild.clear();
&gt; +        }
&gt; +
&gt; +        m_rootChild = rootChild;
&gt; +    }

No need to call .clear() right before assigning m_rootChild.

&gt; +    if (m_rootChild) {
&gt; +        m_layerRenderer-&gt;setRootChildLayer(m_rootChild.get());
&gt; +        WKCACFLayer* rootLayer = m_rootChild-&gt;rootLayer();
&gt; +        CGRect rootBounds = m_rootChild-&gt;rootLayer()-&gt;bounds();
&gt; +        m_rootChild-&gt;setFrame(rootBounds);
&gt; +        m_layerRenderer-&gt;setScrollFrame(IntPoint(rootBounds.origin), IntSize(rootBounds.size));
&gt; +        m_rootChild-&gt;setBackgroundColor(CGColorGetConstantColor(kCGColorBlack));
&gt; +        rootLayer-&gt;setBackgroundColor(CGColorGetConstantColor(kCGColorBlack));
&gt; +    }
&gt; +}

Do we really want to do all this work if m_rootChild hasn&apos;t changed?

An early return would make this a little easier to read.

I like Chris&apos;s idea of using a red background color in debug builds.

&gt; +LRESULT CALLBACK MediaPlayerPrivateFullscreenWindow::staticWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
&gt; +{
&gt; +    LONG_PTR longPtr = GetWindowLongPtr(hWnd, GWLP_USERDATA);
&gt; +
&gt; +    if (!longPtr &amp;&amp; message == WM_CREATE) {
&gt; +        LPCREATESTRUCT lpcs = reinterpret_cast&lt;LPCREATESTRUCT&gt;(lParam);
&gt; +        longPtr = (LONG_PTR)lpcs-&gt;lpCreateParams;

reinterpret_cast would be nice instead of a C-style cast.

&gt; +LRESULT MediaPlayerPrivateFullscreenWindow::wndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
&gt; +{
&gt; +    LRESULT lResult = 0;
&gt; +    switch (message) {
&gt; +    case WM_CREATE:
&gt; +        m_hwnd = hWnd;

This assignment will be overwritten (with the same value) as soon as CreateWindowExW returns. Why do we assign in both places?

&gt; +        m_layerRenderer-&gt;setHostWindow(m_hwnd);
&gt; +        m_layerRenderer-&gt;createRenderer();
&gt; +        m_layerRenderer-&gt;setNeedsDisplay();

Why do we call setNeedsDisplay here? We don&apos;t have a root child layer yet, right?

&gt; +    case WM_WINDOWPOSCHANGED:
&gt; +        {
&gt; +            LPWINDOWPOS wp = (LPWINDOWPOS)lParam;

reinterpret_cast would be better here.

&gt; +            if (!(wp-&gt;flags &amp; SWP_NOMOVE)) {

You could turn this into an &quot;early break&quot;.

If we only care about when the window has moved, we could listen for WM_MOVE instead.

&gt; +                m_layerRenderer-&gt;resize();
&gt; +                WKCACFLayer* rootLayer = m_rootChild-&gt;rootLayer();
&gt; +                CGRect rootBounds = m_rootChild-&gt;rootLayer()-&gt;bounds();
&gt; +                m_rootChild-&gt;setFrame(rootBounds);
&gt; +                m_rootChild-&gt;setNeedsLayout();
&gt; +                m_layerRenderer-&gt;setScrollFrame(IntPoint(rootBounds.origin), IntSize(rootBounds.size));
&gt; +            }

I don&apos;t understand why we resize the renderer when we get a message that tells us the window has moved. (What could cause the window to move?)

&gt; +#ifndef MediaPlayerPrivateFullscreenWindow_h
&gt; +#define MediaPlayerPrivateFullscreenWindow_h
&gt; +
&gt; +#include &quot;WKCACFLayer.h&quot;
&gt; +#include &quot;WKCACFLayerRenderer.h&quot;
&gt; +#include &lt;windows.h&gt;

It would be nice to avoid pulling in windows.h to a header file like this. Can we use forward-declarations instead?

&gt; +class MediaPlayerPrivateFullscreenClient {
&gt; +public:
&gt; +    virtual LRESULT fullscreenClientWndProc(HWND, UINT message, WPARAM, LPARAM) = 0;
&gt; +};

We normally add an empty, protected, virtual destructor for client classes like this. (GCC will complain if there&apos;s no virtual destructor, but MSVC won&apos;t.)

I also personally think it&apos;s nice to put client interfaces into their own header files to reduce recompilations when changing MediaPlayerPrivateFullscreenWindow&apos;s declaration in a way that doesn&apos;t affect the declarations of classes that implement the client interface.

&gt;  bool MediaPlayerPrivateQuickTimeVisualContext::supportsFullscreen() const
&gt;  {
&gt; -    return false;
&gt; +    return true;
&gt;  }

Don&apos;t we still want to return false when USE(ACCELERATED_COMPOSITING) is disabled or when Settings::acceleratedCompositingEnabled() is false?

&gt; @@ -939,6 +939,10 @@ void MediaPlayerPrivateQuickTimeVisualCo
&gt;  #endif
&gt;      // The layer will get hooked up via RenderLayerBacking::updateGraphicsLayerConfiguration().
&gt;  #endif
&gt; +
&gt; +    // fill the newly created layer with image data
&gt; +    if (m_visualContext)
&gt; +        retrieveCurrentImage();
&gt;  }

Why is this now needed? (Both the comment here and the ChangeLog say *what* this does, but not *why*.)

&gt; +void WKCACFLayer::setFrame(const CGRect&amp; rect)
&gt; +{
&gt; +    CGRect oldFrame = frame();
&gt; +    if (CGRectEqualToRect(rect, oldFrame))
&gt; +        return;
&gt; +
&gt; +    CACFLayerSetFrame(layer(), rect);
&gt; +    setNeedsCommit();
&gt; +
&gt; +    if (m_needsDisplayOnBoundsChange)
&gt; +        setNeedsDisplay();
&gt; +}

If the size of the frame hasn&apos;t changed, should we not call setNeedsDisplay()?

&gt; +void WKCACFLayer::setLayoutClient(WKCACFLayerLayoutClient* layoutClient)
&gt; +{
&gt; +    if (layoutClient == m_layoutClient)
&gt; +        return;
&gt; +
&gt; +    m_layoutClient = layoutClient;
&gt; +    CACFLayerSetLayoutCallback(layer(), m_layoutClient ? &amp;layoutSublayersProc : 0);    
&gt; +}

Again, no need for the &amp; in C++.

&gt; @@ -500,7 +539,7 @@ void WKCACFLayer::printLayer(int indent)
&gt;      CGImageRef layerContents = contents();
&gt;      if (layerContents) {
&gt;          printIndent(indent + 1);
&gt; -        fprintf(stderr, &quot;(contents (image [%d %d]))\n&quot;,
&gt; +            fprintf(stderr, &quot;(contents (image [%d %d]))\n&quot;,
&gt;              CGImageGetWidth(layerContents), CGImageGetHeight(layerContents));
&gt;      }

This seems like a step in the wrong direction.

&gt; +class WKCACFLayerLayoutClient {
&gt; +public:
&gt; +    virtual void layoutSublayersOfLayer(WKCACFLayer*) = 0;
&gt; +};

Same comments here that I had about the other client interface.

&gt;  class WKCACFLayer : public RefCounted&lt;WKCACFLayer&gt; {
&gt;  public:
&gt; @@ -63,6 +67,10 @@ public:
&gt;  
&gt;      virtual void drawInContext(PlatformGraphicsContext*) { }
&gt;  
&gt; +    virtual void setLayoutClient(WKCACFLayerLayoutClient*);
&gt; +    virtual WKCACFLayerLayoutClient* layoutClient() const;
&gt; +    virtual void setNeedsLayout();

I don&apos;t see why these need to be virtual.

&gt; +    void setFrame(const CGRect&amp;);

But this definitely *does* need to be virtual!

&gt; +class FullscreenVideoController::LayoutClient : public WebCore::WKCACFLayerLayoutClient {

You should remove all instances of &quot;WebCore::&quot; from the .cpp file.

&gt; +    void layoutSublayersOfLayer(WKCACFLayer* layer) 
&gt; +    {
&gt; +        if (layer != m_parent-&gt;m_rootChild) 
&gt; +            return;

Should we also assert that these two layers are the same?

I think this would be easier to read if you didn&apos;t put this function inline in the class declaration.

&gt; +        float scaleFactor = 0;
&gt; +        if (naturalSize.aspectRatio() &gt; layerBounds.size().aspectRatio())
&gt; +            scaleFactor = layerBounds.width() / naturalSize.width();
&gt; +        else
&gt; +            scaleFactor = layerBounds.height() / naturalSize.height();

No need to initialize scaleFactor to 0.

&gt; +        // Calculate the centered position based on the videoAnchor, videoBounds, and layerBounds:
&gt; +        FloatPoint videoPosition;
&gt; +        videoPosition.setX(layerCenter.x() - (0.5 - videoAnchor.x()) * videoBounds.width());
&gt; +        videoPosition.setY(layerCenter.y() - (0.5 - videoAnchor.y()) * videoBounds.height());
&gt; +        videoLayer-&gt;setPosition(videoPosition);
&gt; +
&gt; +        videoLayer-&gt;setBounds(FloatRect(FloatPoint(), naturalSize));
&gt; +    }

Why not use setFrame instead of setPosition/setBounds?

&gt; @@ -183,25 +229,20 @@ FullscreenVideoController::FullscreenVid
&gt;      , m_hitWidget(0)
&gt;      , m_movingWindow(false)
&gt;      , m_timer(this, &amp;FullscreenVideoController::timerFired)
&gt; +    , m_rootChild(WebCore::WKCACFLayer::create(WebCore::WKCACFLayer::Layer))
&gt; +    , m_layoutClient(new FullscreenVideoController::LayoutClient(this))

You can just say &quot;new LayoutClient(this)&quot; here.

It seems a little strange that we create m_rootChild and m_layoutClient here when we wait until enterFullscreen is called to create m_fullscreenWindow. Why not create them all in the same place?

&gt;  void FullscreenVideoController::exitFullscreen()
&gt;  {
&gt; -    SetWindowLongPtr(m_hudWindow, 0, 0);
&gt; -    if (movie())
&gt; -        movie()-&gt;exitFullscreen();
&gt; -
&gt; -    ASSERT(!IsWindow(m_hudWindow));
&gt; -    m_videoWindow = 0;
&gt; -    m_hudWindow = 0;
&gt; +    if (m_fullscreenWindow) {
&gt; +        m_fullscreenWindow-&gt;close();
&gt; +        m_fullscreenWindow-&gt;setRootChildLayer(0);
&gt; +        m_fullscreenWindow = 0;
&gt; +    }
&gt; +
&gt; +    if (m_hudWindow) {
&gt; +        SetWindowLongPtr(m_hudWindow, 0, 0);
&gt; +        ::DestroyWindow(m_hudWindow);
&gt; +        m_hudWindow = 0;
&gt; +    }

Why is it now possible for m_hudWindow to be null when it wasn&apos;t possible before? Or was it possible before? (If so, you should mention it in your ChangeLog.)

&gt; +    // As a side effect of setting the player to invisible/visible,
&gt; +    // the player&apos;s layer will be recreated, and will be picked up 
&gt; +    // the next time the layer tree is synched.
&gt; +    m_mediaElement-&gt;player()-&gt;setVisible(0);
&gt; +    m_mediaElement-&gt;player()-&gt;setVisible(1);
&gt;  }

Is this needed because putting the player&apos;s layer into the fullscreen window ripped it out of the page? I think this could be explained more thoroughly.

&gt; @@ -316,6 +372,9 @@ LRESULT FullscreenVideoController::fulls
&gt;          break;
&gt;      case WM_LBUTTONUP:
&gt;          onMouseUp(IntPoint(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)));
&gt; +    case WM_ACTIVATEAPP:
&gt; +        if (!wParam)
&gt; +            m_mediaElement-&gt;exitFullscreen();
&gt;          break;
&gt;      }

Why was this added? The ChangeLog doesn&apos;t mention it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229838</commentid>
    <comment_count>23</comment_count>
      <attachid>56856</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-05-24 11:49:45 -0700</bug_when>
    <thetext>Comment on attachment 56856
Patch

&gt; Index: WebCore/platform/graphics/FloatSize.h
&gt; ===================================================================

&gt; +    void scale(float scale)
&gt; +    {
&gt; +        m_width = m_width * scale;
&gt; +        m_height = m_height * scale;
&gt; +    }

I don&apos;t like scale() as a method name. The name is ambiguous. Are you asking
about a property called &quot;scale&quot;, or doing a scaling?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229916</commentid>
    <comment_count>24</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-05-24 14:46:49 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; --- Comment #22 from Adam Roben (aroben) &lt;aroben@apple.com&gt;  2010-05-24 11:38:12
PST ---
&gt; (From update of attachment 56856)
&gt;&gt; +        Minor additions have been made to the FloatSize and IntSize classes:
added aspectRatio() to both; added scale(float) to IntSize.
&gt; 
&gt; You must mean that you added scale(float) to FloatSize. But I don&apos;t think you need
to mention these low-level changes here, since the exact same information is
included in the list of changed files below.

Chris asked for them specifically, but I agree; I&apos;ll remove the specifics here.

&gt;&gt; +    void scale(float scale)
&gt;&gt; +    {
&gt;&gt; +        m_width = m_width * scale;
&gt;&gt; +        m_height = m_height * scale;
&gt;&gt; +    }
&gt; 
&gt; Why not use *= ?

No good reason. :)  Changed.

&gt;&gt; +#include &quot;config.h&quot;
&gt;&gt; +
&gt;&gt; +#include &quot;MediaPlayerPrivateFullscreenWindow.h&quot;
&gt; 
&gt; You have an extra blank line in there.

Removed.

&gt;&gt; +MediaPlayerPrivateFullscreenWindow::MediaPlayerPrivateFullscreenWindow(MediaPlayerPrivateFullscreenClient*
client)
&gt;&gt; +    : m_client(client)
&gt;&gt; +    , m_hwnd(0)
&gt;&gt; +{
&gt;&gt; +    m_layerRenderer = WKCACFLayerRenderer::create(0);
&gt;&gt; +}
&gt; 
&gt; You can initialize m_layerRenderer in the initializer list.

Changed.

&gt; It seems like there&apos;s nothing about this class that&apos;s specific to its use in
conjunction with MediaPlayerPrivate. Maybe we should call it something like
FullscreenLayerWindow?

I wasn&apos;t entirely happy with the name.  I&apos;d be happy to rename it
FullscreenLayerWindow.

&gt;&gt; +MediaPlayerPrivateFullscreenWindow::~MediaPlayerPrivateFullscreenWindow()
&gt;&gt; +{
&gt;&gt; +    m_client = 0;
&gt;&gt; +}
&gt; 
&gt; Why is this needed?

Extreme paranoia.  Force of habit.  I can remove it. 

&gt;&gt; +{
&gt;&gt; +    static ATOM windowAtom = 0;
&gt; 
&gt; No need to initialize to 0; C++ does that for you.

Removed.

&gt;&gt; +    if (!windowAtom) {
&gt;&gt; +        WNDCLASSEX wcex = {0};
&gt;&gt; +        wcex.cbSize = sizeof(WNDCLASSEX);
&gt;&gt; +        wcex.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
&gt; 
&gt; Why are you passing CS_OWNDC here?

I stole some code from a previous CoreMedia player demo, where I was using it for no
good reason.  Removed.

&gt;&gt; +        wcex.lpfnWndProc = &amp;staticWndProc;
&gt; 
&gt; No need for the &amp; in C++.

Habit.  Removed.

&gt;&gt; +        wcex.hInstance = WebCore::instanceHandle();
&gt;&gt; +        wcex.lpszClassName = L&quot;MediaPlayerPrivateFullscreenWindowClass&quot;;
&gt; 
&gt; It would be good to put this class name in a constant.

Constanted.

&gt;&gt; +    MONITORINFO mi = {0};
&gt;&gt; +    mi.cbSize = sizeof(MONITORINFO);
&gt;&gt; +    GetMonitorInfo(MonitorFromWindow(0, MONITOR_DEFAULTTOPRIMARY), &amp;mi);
&gt;&gt; +    IntRect monitorRect = mi.rcMonitor;
&gt; 
&gt; Seems like we should be passing the WebView&apos;s HWND to MonitorFromWindow so that
the fullscreen video will appear on the same monitor as the webpage.

I thought of that, but wasn&apos;t sure how to pipe that information through to the
FullscreenWindow class.  Perhaps a method added to FullscreenWindowClient?

&gt; Should we check the return value of GetMonitorInfo?

And bail out early?  

&gt;&gt; +    cs.x = 0;
&gt;&gt; +    cs.y = 0;
&gt;&gt; +    cs.cx = monitorRect.width();
&gt;&gt; +    cs.cy = monitorRect.height();
&gt; 
&gt; Shouldn&apos;t we be setting cs.x and cs.y to monitorRect.x() and monitorRect.y()?

When the only monitor we ask for is the Primary one, those will always be zero.  Now
that we&apos;ll be asking for (possibly) other ones, yes, yes we should be. :)

&gt;&gt; +    m_hwnd = ::CreateWindowExW(cs.dwExStyle, cs.lpszClass, cs.lpszName,
cs.style, cs.x, cs.y, cs.cx, cs.cy, cs.hwndParent, cs.hMenu, cs.hInstance,
cs.lpCreateParams);
&gt;&gt; +}
&gt; 
&gt; Using a CREATESTRUCTW just to pass the parameters to CreateWindowExW doesn&apos;t seem
all that useful.
&gt; 

True, removed.

&gt;&gt; +void
MediaPlayerPrivateFullscreenWindow::setRootChildLayer(PassRefPtr&lt;WKCACFLayer&gt;
rootChild)
&gt;&gt; +{
&gt;&gt; +    if (m_rootChild != rootChild) {
&gt;&gt; +
&gt;&gt; +        if (m_rootChild) {
&gt; 
&gt; Extra blank line here.

Removed.

&gt;&gt; +            m_rootChild-&gt;removeFromSuperlayer();
&gt;&gt; +            m_rootChild.clear();
&gt;&gt; +        }
&gt;&gt; +
&gt;&gt; +        m_rootChild = rootChild;
&gt;&gt; +    }
&gt; 
&gt; No need to call .clear() right before assigning m_rootChild.

Paranoia removed.

&gt;&gt; +    if (m_rootChild) {
&gt;&gt; +        m_layerRenderer-&gt;setRootChildLayer(m_rootChild.get());
&gt;&gt; +        WKCACFLayer* rootLayer = m_rootChild-&gt;rootLayer();
&gt;&gt; +        CGRect rootBounds = m_rootChild-&gt;rootLayer()-&gt;bounds();
&gt;&gt; +        m_rootChild-&gt;setFrame(rootBounds);
&gt;&gt; +        m_layerRenderer-&gt;setScrollFrame(IntPoint(rootBounds.origin),
IntSize(rootBounds.size));
&gt;&gt; +        m_rootChild-&gt;setBackgroundColor(CGColorGetConstantColor(kCGColorBlack));
&gt;&gt; +        rootLayer-&gt;setBackgroundColor(CGColorGetConstantColor(kCGColorBlack));
&gt;&gt; +    }
&gt;&gt; +}
&gt; 
&gt; Do we really want to do all this work if m_rootChild hasn&apos;t changed?
&gt; 
&gt; An early return would make this a little easier to read.

I had that in an earlier version, but there was a case where this all needed to be
happen even when m_rootChild hadn&apos;t changed.  I can&apos;t remember off the top of my
head why that would be.

&gt; I like Chris&apos;s idea of using a red background color in debug builds.

Added.

&gt;&gt; +LRESULT CALLBACK MediaPlayerPrivateFullscreenWindow::staticWndProc(HWND hWnd,
UINT message, WPARAM wParam, LPARAM lParam)
&gt;&gt; +{
&gt;&gt; +    LONG_PTR longPtr = GetWindowLongPtr(hWnd, GWLP_USERDATA);
&gt;&gt; +
&gt;&gt; +    if (!longPtr &amp;&amp; message == WM_CREATE) {
&gt;&gt; +        LPCREATESTRUCT lpcs = reinterpret_cast&lt;LPCREATESTRUCT&gt;(lParam);
&gt;&gt; +        longPtr = (LONG_PTR)lpcs-&gt;lpCreateParams;
&gt; 
&gt; reinterpret_cast would be nice instead of a C-style cast.

Changed.

&gt;&gt; +LRESULT MediaPlayerPrivateFullscreenWindow::wndProc(HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam)
&gt;&gt; +{
&gt;&gt; +    LRESULT lResult = 0;
&gt;&gt; +    switch (message) {
&gt;&gt; +    case WM_CREATE:
&gt;&gt; +        m_hwnd = hWnd;
&gt; 
&gt; This assignment will be overwritten (with the same value) as soon as
CreateWindowExW returns. Why do we assign in both places?

The assignment here is probably the necessary one, and the one which catches the
return from CreateWindowExW is the extraneous one.  If we set m_hwnd here (rather
than later) then it will be valid inside all the future wndProc calls happening as a
result of CreateWindowExW.

We could probably add an ASSERT(IsWindow(m_hwnd)); after CreateWindowExW returns.

&gt;&gt; +        m_layerRenderer-&gt;setHostWindow(m_hwnd);
&gt;&gt; +        m_layerRenderer-&gt;createRenderer();
&gt;&gt; +        m_layerRenderer-&gt;setNeedsDisplay();
&gt; 
&gt; Why do we call setNeedsDisplay here? We don&apos;t have a root child layer yet, right?

That&apos;s true in this case, but it&apos;s not guaranteed that clients will call in that
order.  Maybe we should check to see if we have a rootLayer before calling
setNeedsDisplay?

&gt;&gt; +    case WM_WINDOWPOSCHANGED:
&gt;&gt; +        {
&gt;&gt; +            LPWINDOWPOS wp = (LPWINDOWPOS)lParam;
&gt; 
&gt; reinterpret_cast would be better here.

Changed.

&gt;&gt; +            if (!(wp-&gt;flags &amp; SWP_NOMOVE)) {
&gt; 
&gt; You could turn this into an &quot;early break&quot;.
&gt; 
&gt; If we only care about when the window has moved, we could listen for WM_MOVE instead.

Gah!  No, this is totally wrong.  This should be checking against SWP_NOSIZE
instead.  And we can&apos;t handle WM_SIZE, because WKCACFLayerRenderer::resize() checks
the hwnd&apos;s size, which hasn&apos;t changed yet.

Added the &quot;early break&quot;.

&gt;&gt; +                m_layerRenderer-&gt;resize();
&gt;&gt; +                WKCACFLayer* rootLayer = m_rootChild-&gt;rootLayer();
&gt;&gt; +                CGRect rootBounds = m_rootChild-&gt;rootLayer()-&gt;bounds();
&gt;&gt; +                m_rootChild-&gt;setFrame(rootBounds);
&gt;&gt; +                m_rootChild-&gt;setNeedsLayout();
&gt;&gt; +                m_layerRenderer-&gt;setScrollFrame(IntPoint(rootBounds.origin),
IntSize(rootBounds.size));
&gt;&gt; +            }
&gt; 
&gt; I don&apos;t understand why we resize the renderer when we get a message that tells us
the window has moved. (What could cause the window to move?)

Yeah, that&apos;s because I was doing it wrong. :-D

&gt; 
&gt;&gt; +#ifndef MediaPlayerPrivateFullscreenWindow_h
&gt;&gt; +#define MediaPlayerPrivateFullscreenWindow_h
&gt;&gt; +
&gt;&gt; +#include &quot;WKCACFLayer.h&quot;
&gt;&gt; +#include &quot;WKCACFLayerRenderer.h&quot;
&gt;&gt; +#include &lt;windows.h&gt;
&gt; 
&gt; It would be nice to avoid pulling in windows.h to a header file like this. Can we
use forward-declarations instead?

Sure. Added.

&gt;&gt; +class MediaPlayerPrivateFullscreenClient {
&gt;&gt; +public:
&gt;&gt; +    virtual LRESULT fullscreenClientWndProc(HWND, UINT message, WPARAM, LPARAM)
= 0;
&gt;&gt; +};
&gt; 
&gt; We normally add an empty, protected, virtual destructor for client classes like
this. (GCC will complain if there&apos;s no virtual destructor, but MSVC won&apos;t.)

Will do.

&gt; I also personally think it&apos;s nice to put client interfaces into their own header
files to reduce recompilations when changing MediaPlayerPrivateFullscreenWindow&apos;s
declaration in a way that doesn&apos;t affect the declarations of classes that
implement the client interface.

Sounds like a good idea.

&gt;&gt; bool MediaPlayerPrivateQuickTimeVisualContext::supportsFullscreen() const
&gt;&gt; {
&gt;&gt; -    return false;
&gt;&gt; +    return true;
&gt;&gt; }
&gt; 
&gt; Don&apos;t we still want to return false when USE(ACCELERATED_COMPOSITING) is disabled
or when Settings::acceleratedCompositingEnabled() is false?

Yes, we do.  Changed. 

&gt;&gt; @@ -939,6 +939,10 @@ void MediaPlayerPrivateQuickTimeVisualCo
&gt;&gt; #endif
&gt;&gt;     // The layer will get hooked up via
RenderLayerBacking::updateGraphicsLayerConfiguration().
&gt;&gt; #endif
&gt;&gt; +
&gt;&gt; +    // fill the newly created layer with image data
&gt;&gt; +    if (m_visualContext)
&gt;&gt; +        retrieveCurrentImage();
&gt;&gt; }
&gt; 
&gt; Why is this now needed? (Both the comment here and the ChangeLog say *what* this
does, but not *why*.)

I&apos;ll update the comment to read:

        // fill the newly created layer with image data, so we&apos;re not looking at an empty
layer until the next time 
        // a new image is available, which could be a long time if we&apos;re paused.

... or something. :)

&gt;&gt; +void WKCACFLayer::setFrame(const CGRect&amp; rect)
&gt;&gt; +{
&gt;&gt; +    CGRect oldFrame = frame();
&gt;&gt; +    if (CGRectEqualToRect(rect, oldFrame))
&gt;&gt; +        return;
&gt;&gt; +
&gt;&gt; +    CACFLayerSetFrame(layer(), rect);
&gt;&gt; +    setNeedsCommit();
&gt;&gt; +
&gt;&gt; +    if (m_needsDisplayOnBoundsChange)
&gt;&gt; +        setNeedsDisplay();
&gt;&gt; +}
&gt; 
&gt; If the size of the frame hasn&apos;t changed, should we not call setNeedsDisplay()?

If the size of the frame hasn&apos;t changed, the second statement should bail us out
early.  Or did I miss something?

&gt;&gt; +void WKCACFLayer::setLayoutClient(WKCACFLayerLayoutClient* layoutClient)
&gt;&gt; +{
&gt;&gt; +    if (layoutClient == m_layoutClient)
&gt;&gt; +        return;
&gt;&gt; +
&gt;&gt; +    m_layoutClient = layoutClient;
&gt;&gt; +    CACFLayerSetLayoutCallback(layer(), m_layoutClient ? &amp;layoutSublayersProc :
0);    
&gt;&gt; +}
&gt; 
&gt; Again, no need for the &amp; in C++.

Changed.

&gt; 
&gt;&gt; @@ -500,7 +539,7 @@ void WKCACFLayer::printLayer(int indent)
&gt;&gt;     CGImageRef layerContents = contents();
&gt;&gt;     if (layerContents) {
&gt;&gt;         printIndent(indent + 1);
&gt;&gt; -        fprintf(stderr, &quot;(contents (image [%d %d]))\n&quot;,
&gt;&gt; +            fprintf(stderr, &quot;(contents (image [%d %d]))\n&quot;,
&gt;&gt;             CGImageGetWidth(layerContents), CGImageGetHeight(layerContents));
&gt;&gt;     }
&gt; 
&gt; This seems like a step in the wrong direction.

I&apos;m really hoping this was in reference to the indenting change. :-D  Undone.

&gt;&gt; +class WKCACFLayerLayoutClient {
&gt;&gt; +public:
&gt;&gt; +    virtual void layoutSublayersOfLayer(WKCACFLayer*) = 0;
&gt;&gt; +};
&gt; 
&gt; Same comments here that I had about the other client interface.

Same response.

&gt;&gt; class WKCACFLayer : public RefCounted&lt;WKCACFLayer&gt; {
&gt;&gt; public:
&gt;&gt; @@ -63,6 +67,10 @@ public:
&gt;&gt; 
&gt;&gt;     virtual void drawInContext(PlatformGraphicsContext*) { }
&gt;&gt; 
&gt;&gt; +    virtual void setLayoutClient(WKCACFLayerLayoutClient*);
&gt;&gt; +    virtual WKCACFLayerLayoutClient* layoutClient() const;
&gt;&gt; +    virtual void setNeedsLayout();
&gt; 
&gt; I don&apos;t see why these need to be virtual.

Hmm; if a subclass wants to do something in response to having the client set?

&gt; 
&gt;&gt; +    void setFrame(const CGRect&amp;);
&gt; 
&gt; But this definitely *does* need to be virtual!

When Chris removed it, it wasn&apos;t virtual then.  But it can be virtual now.

&gt;&gt; +class FullscreenVideoController::LayoutClient : public
WebCore::WKCACFLayerLayoutClient {
&gt; 
&gt; You should remove all instances of &quot;WebCore::&quot; from the .cpp file.

Done.

&gt;&gt; +    void layoutSublayersOfLayer(WKCACFLayer* layer) 
&gt;&gt; +    {
&gt;&gt; +        if (layer != m_parent-&gt;m_rootChild) 
&gt;&gt; +            return;
&gt; 
&gt; Should we also assert that these two layers are the same?

Yes, that sounds like a good idea.

&gt; I think this would be easier to read if you didn&apos;t put this function inline in the
class declaration.

Sure.

&gt;&gt; +        float scaleFactor = 0;
&gt;&gt; +        if (naturalSize.aspectRatio() &gt; layerBounds.size().aspectRatio())
&gt;&gt; +            scaleFactor = layerBounds.width() / naturalSize.width();
&gt;&gt; +        else
&gt;&gt; +            scaleFactor = layerBounds.height() / naturalSize.height();
&gt; 
&gt; No need to initialize scaleFactor to 0.

Changed.

&gt;&gt; +        // Calculate the centered position based on the videoAnchor,
videoBounds, and layerBounds:
&gt;&gt; +        FloatPoint videoPosition;
&gt;&gt; +        videoPosition.setX(layerCenter.x() - (0.5 - videoAnchor.x()) *
videoBounds.width());
&gt;&gt; +        videoPosition.setY(layerCenter.y() - (0.5 - videoAnchor.y()) *
videoBounds.height());
&gt;&gt; +        videoLayer-&gt;setPosition(videoPosition);
&gt;&gt; +
&gt;&gt; +        videoLayer-&gt;setBounds(FloatRect(FloatPoint(), naturalSize));
&gt;&gt; +    }
&gt; 
&gt; Why not use setFrame instead of setPosition/setBounds?

Hah!  I totally could.  

&gt; 
&gt;&gt; @@ -183,25 +229,20 @@ FullscreenVideoController::FullscreenVid
&gt;&gt;     , m_hitWidget(0)
&gt;&gt;     , m_movingWindow(false)
&gt;&gt;     , m_timer(this, &amp;FullscreenVideoController::timerFired)
&gt;&gt; +    , m_rootChild(WebCore::WKCACFLayer::create(WebCore::WKCACFLayer::Layer))
&gt;&gt; +    , m_layoutClient(new FullscreenVideoController::LayoutClient(this))
&gt; 
&gt; You can just say &quot;new LayoutClient(this)&quot; here.

Changed.

&gt; It seems a little strange that we create m_rootChild and m_layoutClient here when
we wait until enterFullscreen is called to create m_fullscreenWindow. Why not
create them all in the same place?

No good reason.  But if we create them in the constructor, and delete them from the
destructor, they can be exempted from NULL checks.

&gt;&gt; void FullscreenVideoController::exitFullscreen()
&gt;&gt; {
&gt;&gt; -    SetWindowLongPtr(m_hudWindow, 0, 0);
&gt;&gt; -    if (movie())
&gt;&gt; -        movie()-&gt;exitFullscreen();
&gt;&gt; -
&gt;&gt; -    ASSERT(!IsWindow(m_hudWindow));
&gt;&gt; -    m_videoWindow = 0;
&gt;&gt; -    m_hudWindow = 0;
&gt;&gt; +    if (m_fullscreenWindow) {
&gt;&gt; +        m_fullscreenWindow-&gt;close();
&gt;&gt; +        m_fullscreenWindow-&gt;setRootChildLayer(0);
&gt;&gt; +        m_fullscreenWindow = 0;
&gt;&gt; +    }
&gt;&gt; +
&gt;&gt; +    if (m_hudWindow) {
&gt;&gt; +        SetWindowLongPtr(m_hudWindow, 0, 0);
&gt;&gt; +        ::DestroyWindow(m_hudWindow);
&gt;&gt; +        m_hudWindow = 0;
&gt;&gt; +    }
&gt; 
&gt; Why is it now possible for m_hudWindow to be null when it wasn&apos;t possible before?
Or was it possible before? (If so, you should mention it in your ChangeLog.)

It was always possible, if a client called &quot;enterFullscreen()/exitFullscreen()&quot; out
of order.  It&apos;s probably safe to call SetWindowLongPtr() and DestroyWindow() with
NULL, but its also unnecessary.

&gt;&gt; +    // As a side effect of setting the player to invisible/visible,
&gt;&gt; +    // the player&apos;s layer will be recreated, and will be picked up 
&gt;&gt; +    // the next time the layer tree is synched.
&gt;&gt; +    m_mediaElement-&gt;player()-&gt;setVisible(0);
&gt;&gt; +    m_mediaElement-&gt;player()-&gt;setVisible(1);
&gt;&gt; }
&gt; 
&gt; Is this needed because putting the player&apos;s layer into the fullscreen window
ripped it out of the page? I think this could be explained more thoroughly.

Yes, that&apos;s why.  I&apos;ll add more comments.

&gt;&gt; @@ -316,6 +372,9 @@ LRESULT FullscreenVideoController::fulls
&gt;&gt;         break;
&gt;&gt;     case WM_LBUTTONUP:
&gt;&gt;         onMouseUp(IntPoint(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)));
&gt;&gt; +    case WM_ACTIVATEAPP:
&gt;&gt; +        if (!wParam)
&gt;&gt; +            m_mediaElement-&gt;exitFullscreen();
&gt;&gt;         break;
&gt;&gt;     }
&gt; 
&gt; Why was this added? The ChangeLog doesn&apos;t mention it.

I didn&apos;t want to make the Fullscreen window WS_EX_TOPMOST, as that can really screw
over developers (and users) if the app hits a breakpoint while the fullscreen window
is up.  And this matches the current behavior of the QuickTime Player fullscreen
window, when the user switches apps with Alt-Tab.  I&apos;ll make a note in the
ChangeLog.

I don&apos;t particularly agree with the HI decision to exit fullscreen mode when the app
loses focus, but we should probably try to be consistent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229959</commentid>
    <comment_count>25</comment_count>
      <attachid>56937</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-05-24 15:49:43 -0700</bug_when>
    <thetext>Created attachment 56937
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229962</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-24 15:53:09 -0700</bug_when>
    <thetext>Attachment 56937 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
Last 3072 characters of output:
[3]
WebKitLibraries/win/include/WebKitSystemInterface/WebKitSystemInterface.h:116:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebKitLibraries/win/include/WebKitSystemInterface/WebKitSystemInterface.h:120:  This { should be at the end of the previous line  [whitespace/braces] [4]
WebKitLibraries/win/include/WebKitSystemInterface/WebKitSystemInterface.h:121:  Tab found; better to use spaces  [whitespace/tab] [1]
WebKitLibraries/win/include/WebKitSystemInterface/WebKitSystemInterface.h:121:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebKitLibraries/win/include/WebKitSystemInterface/WebKitSystemInterface.h:122:  Tab found; better to use spaces  [whitespace/tab] [1]
WebKitLibraries/win/include/WebKitSystemInterface/WebKitSystemInterface.h:122:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebKitLibraries/win/include/WebKitSystemInterface/WebKitSystemInterface.h:123:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebKitLibraries/win/include/WebKitSystemInterface/WebKitSystemInterface.h:124:  Tab found; better to use spaces  [whitespace/tab] [1]
WebKitLibraries/win/include/WebKitSystemInterface/WebKitSystemInterface.h:124:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebKitLibraries/win/include/WebKitSystemInterface/WebKitSystemInterface.h:125:  Tab found; better to use spaces  [whitespace/tab] [1]
WebKitLibraries/win/include/WebKitSystemInterface/WebKitSystemInterface.h:125:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebKitLibraries/win/include/WebKitSystemInterface/WebKitSystemInterface.h:129:  Extra space before ( in function call  [whitespace/parens] [4]
WebKitLibraries/win/include/WebKitSystemInterface/WebKitSystemInterface.h:134:  Extra space before ( in function call  [whitespace/parens] [4]
WebKitLibraries/win/include/WebKitSystemInterface/WebKitSystemInterface.h:135:  Extra space before ( in function call  [whitespace/parens] [4]
WebKitLibraries/win/include/WebKitSystemInterface/WebKitSystemInterface.h:136:  Extra space before ( in function call  [whitespace/parens] [4]
WebKitLibraries/win/include/WebKitSystemInterface/WebKitSystemInterface.h:137:  Extra space before ( in function call  [whitespace/parens] [4]
WebKitLibraries/win/include/WebKitSystemInterface/WebKitSystemInterface.h:138:  Extra space before ( in function call  [whitespace/parens] [4]
WebKitLibraries/win/include/WebKitSystemInterface/WebKitSystemInterface.h:139:  Extra space before ( in function call  [whitespace/parens] [4]
WebKitLibraries/win/include/WebKitSystemInterface/WebKitSystemInterface.h:140:  Extra space before ( in function call  [whitespace/parens] [4]
WebKitLibraries/win/include/WebKitSystemInterface/WebKitSystemInterface.h:141:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 37 in 23 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>229971</commentid>
    <comment_count>27</comment_count>
      <attachid>56940</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-05-24 16:19:34 -0700</bug_when>
    <thetext>Created attachment 56940
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229976</commentid>
    <comment_count>28</comment_count>
      <attachid>56943</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-05-24 16:28:09 -0700</bug_when>
    <thetext>Created attachment 56943
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229977</commentid>
    <comment_count>29</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-05-24 16:29:35 -0700</bug_when>
    <thetext>Please ignore the extraneous check-in comment in WebCore/CommitLog.  It will be removed in the final checkin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230261</commentid>
    <comment_count>30</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-05-25 07:35:22 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #22)
&gt; &gt; --- Comment #22 from Adam Roben (aroben) &lt;aroben@apple.com&gt;  2010-05-24 11:38:12
&gt; PST ---
&gt; &gt; (From update of attachment 56856 [details])
&gt; &gt;&gt; +        Minor additions have been made to the FloatSize and IntSize classes:
&gt; added aspectRatio() to both; added scale(float) to IntSize.
&gt; &gt; 
&gt; &gt; You must mean that you added scale(float) to FloatSize. But I don&apos;t think you need
&gt; to mention these low-level changes here, since the exact same information is
&gt; included in the list of changed files below.
&gt; 
&gt; Chris asked for them specifically, but I agree; I&apos;ll remove the specifics here.

Just to be clear, I think it&apos;s great to have them specifically mentioned in the file-level changes.

&gt; &gt; It seems like there&apos;s nothing about this class that&apos;s specific to its use in
&gt; conjunction with MediaPlayerPrivate. Maybe we should call it something like
&gt; FullscreenLayerWindow?
&gt; 
&gt; I wasn&apos;t entirely happy with the name.  I&apos;d be happy to rename it
&gt; FullscreenLayerWindow.

I think I slightly prefer FullscreenLayerWindow, but I don&apos;t care too strongly.

&gt; &gt;&gt; +    MONITORINFO mi = {0};
&gt; &gt;&gt; +    mi.cbSize = sizeof(MONITORINFO);
&gt; &gt;&gt; +    GetMonitorInfo(MonitorFromWindow(0, MONITOR_DEFAULTTOPRIMARY), &amp;mi);
&gt; &gt;&gt; +    IntRect monitorRect = mi.rcMonitor;
&gt; &gt; 
&gt; &gt; Seems like we should be passing the WebView&apos;s HWND to MonitorFromWindow so that
&gt; the fullscreen video will appear on the same monitor as the webpage.
&gt; 
&gt; I thought of that, but wasn&apos;t sure how to pipe that information through to the
&gt; FullscreenWindow class.  Perhaps a method added to FullscreenWindowClient?

I think passing it in the constructor would be slightly better, since we don&apos;t want to support the parent window changing during the lifetime of the FullscreenLayerWindow.

&gt; &gt; Should we check the return value of GetMonitorInfo?
&gt; 
&gt; And bail out early?  

Yeah, sorry for being vague.

&gt; &gt;&gt; +    cs.x = 0;
&gt; &gt;&gt; +    cs.y = 0;
&gt; &gt;&gt; +    cs.cx = monitorRect.width();
&gt; &gt;&gt; +    cs.cy = monitorRect.height();
&gt; &gt; 
&gt; &gt; Shouldn&apos;t we be setting cs.x and cs.y to monitorRect.x() and monitorRect.y()?
&gt; 
&gt; When the only monitor we ask for is the Primary one, those will always be zero.  Now
&gt; that we&apos;ll be asking for (possibly) other ones, yes, yes we should be. :)

You can set your primary monitor to be to the right of a secondary monitor. In that case I&apos;d imagine the primary monitor&apos;s origin would not be at 0,0 (though maybe it is still at 0,0 and all the secondary monitor&apos;s coordinates are negative?).

As you said, when using non-primary monitors we obviously have to worry about this.

&gt; &gt;&gt; +    if (m_rootChild) {
&gt; &gt;&gt; +        m_layerRenderer-&gt;setRootChildLayer(m_rootChild.get());
&gt; &gt;&gt; +        WKCACFLayer* rootLayer = m_rootChild-&gt;rootLayer();
&gt; &gt;&gt; +        CGRect rootBounds = m_rootChild-&gt;rootLayer()-&gt;bounds();
&gt; &gt;&gt; +        m_rootChild-&gt;setFrame(rootBounds);
&gt; &gt;&gt; +        m_layerRenderer-&gt;setScrollFrame(IntPoint(rootBounds.origin),
&gt; IntSize(rootBounds.size));
&gt; &gt;&gt; +        m_rootChild-&gt;setBackgroundColor(CGColorGetConstantColor(kCGColorBlack));
&gt; &gt;&gt; +        rootLayer-&gt;setBackgroundColor(CGColorGetConstantColor(kCGColorBlack));
&gt; &gt;&gt; +    }
&gt; &gt;&gt; +}
&gt; &gt; 
&gt; &gt; Do we really want to do all this work if m_rootChild hasn&apos;t changed?
&gt; &gt; 
&gt; &gt; An early return would make this a little easier to read.
&gt; 
&gt; I had that in an earlier version, but there was a case where this all needed to be
&gt; happen even when m_rootChild hadn&apos;t changed.  I can&apos;t remember off the top of my
&gt; head why that would be.

I think it would be good to add a comment, even if you&apos;re not quite sure what the circumstances are. That way someone like me won&apos;t just change it without testing. :-)

&gt; &gt;&gt; +LRESULT MediaPlayerPrivateFullscreenWindow::wndProc(HWND hWnd, UINT message,
&gt; WPARAM wParam, LPARAM lParam)
&gt; &gt;&gt; +{
&gt; &gt;&gt; +    LRESULT lResult = 0;
&gt; &gt;&gt; +    switch (message) {
&gt; &gt;&gt; +    case WM_CREATE:
&gt; &gt;&gt; +        m_hwnd = hWnd;
&gt; &gt; 
&gt; &gt; This assignment will be overwritten (with the same value) as soon as
&gt; CreateWindowExW returns. Why do we assign in both places?
&gt; 
&gt; The assignment here is probably the necessary one, and the one which catches the
&gt; return from CreateWindowExW is the extraneous one.  If we set m_hwnd here (rather
&gt; than later) then it will be valid inside all the future wndProc calls happening as a
&gt; result of CreateWindowExW.
&gt; 
&gt; We could probably add an ASSERT(IsWindow(m_hwnd)); after CreateWindowExW returns.

That sounds good to me.

&gt; &gt;&gt; +        m_layerRenderer-&gt;setHostWindow(m_hwnd);
&gt; &gt;&gt; +        m_layerRenderer-&gt;createRenderer();
&gt; &gt;&gt; +        m_layerRenderer-&gt;setNeedsDisplay();
&gt; &gt; 
&gt; &gt; Why do we call setNeedsDisplay here? We don&apos;t have a root child layer yet, right?
&gt; 
&gt; That&apos;s true in this case, but it&apos;s not guaranteed that clients will call in that
&gt; order.  Maybe we should check to see if we have a rootLayer before calling
&gt; setNeedsDisplay?

Sure, that sounds good.

&gt; &gt;&gt; +void WKCACFLayer::setFrame(const CGRect&amp; rect)
&gt; &gt;&gt; +{
&gt; &gt;&gt; +    CGRect oldFrame = frame();
&gt; &gt;&gt; +    if (CGRectEqualToRect(rect, oldFrame))
&gt; &gt;&gt; +        return;
&gt; &gt;&gt; +
&gt; &gt;&gt; +    CACFLayerSetFrame(layer(), rect);
&gt; &gt;&gt; +    setNeedsCommit();
&gt; &gt;&gt; +
&gt; &gt;&gt; +    if (m_needsDisplayOnBoundsChange)
&gt; &gt;&gt; +        setNeedsDisplay();
&gt; &gt;&gt; +}
&gt; &gt; 
&gt; &gt; If the size of the frame hasn&apos;t changed, should we not call setNeedsDisplay()?
&gt; 
&gt; If the size of the frame hasn&apos;t changed, the second statement should bail us out
&gt; early.  Or did I miss something?

If only the origin of the frame changes, but not its size, you will call setNeedsDisplay(). But I don&apos;t think you need to in that case.

&gt; &gt;&gt; class WKCACFLayer : public RefCounted&lt;WKCACFLayer&gt; {
&gt; &gt;&gt; public:
&gt; &gt;&gt; @@ -63,6 +67,10 @@ public:
&gt; &gt;&gt; 
&gt; &gt;&gt;     virtual void drawInContext(PlatformGraphicsContext*) { }
&gt; &gt;&gt; 
&gt; &gt;&gt; +    virtual void setLayoutClient(WKCACFLayerLayoutClient*);
&gt; &gt;&gt; +    virtual WKCACFLayerLayoutClient* layoutClient() const;
&gt; &gt;&gt; +    virtual void setNeedsLayout();
&gt; &gt; 
&gt; &gt; I don&apos;t see why these need to be virtual.
&gt; 
&gt; Hmm; if a subclass wants to do something in response to having the client set?

Yes, they would need to be virtual in that case. But there is no such subclass currently. If/when we add one, we can make them virtual. Having them virtual now just slows things down.

&gt; &gt;&gt; +    void setFrame(const CGRect&amp;);
&gt; &gt; 
&gt; &gt; But this definitely *does* need to be virtual!
&gt; 
&gt; When Chris removed it, it wasn&apos;t virtual then.  But it can be virtual now.

It needs to be virtual now because you added an override of it in WebTiledLayer.

&gt; &gt; It seems a little strange that we create m_rootChild and m_layoutClient here when
&gt; we wait until enterFullscreen is called to create m_fullscreenWindow. Why not
&gt; create them all in the same place?
&gt; 
&gt; No good reason.  But if we create them in the constructor, and delete them from the
&gt; destructor, they can be exempted from NULL checks.

Seems like we could move the creation of m_fullscreenWindow into the constructor, too, then.

&gt; &gt;&gt; void FullscreenVideoController::exitFullscreen()
&gt; &gt;&gt; {
&gt; &gt;&gt; -    SetWindowLongPtr(m_hudWindow, 0, 0);
&gt; &gt;&gt; -    if (movie())
&gt; &gt;&gt; -        movie()-&gt;exitFullscreen();
&gt; &gt;&gt; -
&gt; &gt;&gt; -    ASSERT(!IsWindow(m_hudWindow));
&gt; &gt;&gt; -    m_videoWindow = 0;
&gt; &gt;&gt; -    m_hudWindow = 0;
&gt; &gt;&gt; +    if (m_fullscreenWindow) {
&gt; &gt;&gt; +        m_fullscreenWindow-&gt;close();
&gt; &gt;&gt; +        m_fullscreenWindow-&gt;setRootChildLayer(0);
&gt; &gt;&gt; +        m_fullscreenWindow = 0;
&gt; &gt;&gt; +    }
&gt; &gt;&gt; +
&gt; &gt;&gt; +    if (m_hudWindow) {
&gt; &gt;&gt; +        SetWindowLongPtr(m_hudWindow, 0, 0);
&gt; &gt;&gt; +        ::DestroyWindow(m_hudWindow);
&gt; &gt;&gt; +        m_hudWindow = 0;
&gt; &gt;&gt; +    }
&gt; &gt; 
&gt; &gt; Why is it now possible for m_hudWindow to be null when it wasn&apos;t possible before?
&gt; Or was it possible before? (If so, you should mention it in your ChangeLog.)
&gt; 
&gt; It was always possible, if a client called &quot;enterFullscreen()/exitFullscreen()&quot; out
&gt; of order.  It&apos;s probably safe to call SetWindowLongPtr() and DestroyWindow() with
&gt; NULL, but its also unnecessary.

OK, I think it would be good to mention this in the ChangeLog.

&gt; &gt;&gt; @@ -316,6 +372,9 @@ LRESULT FullscreenVideoController::fulls
&gt; &gt;&gt;         break;
&gt; &gt;&gt;     case WM_LBUTTONUP:
&gt; &gt;&gt;         onMouseUp(IntPoint(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)));
&gt; &gt;&gt; +    case WM_ACTIVATEAPP:
&gt; &gt;&gt; +        if (!wParam)
&gt; &gt;&gt; +            m_mediaElement-&gt;exitFullscreen();
&gt; &gt;&gt;         break;
&gt; &gt;&gt;     }
&gt; &gt; 
&gt; &gt; Why was this added? The ChangeLog doesn&apos;t mention it.
&gt; 
&gt; I didn&apos;t want to make the Fullscreen window WS_EX_TOPMOST, as that can really screw
&gt; over developers (and users) if the app hits a breakpoint while the fullscreen window
&gt; is up.  And this matches the current behavior of the QuickTime Player fullscreen
&gt; window, when the user switches apps with Alt-Tab.  I&apos;ll make a note in the
&gt; ChangeLog.
&gt; 
&gt; I don&apos;t particularly agree with the HI decision to exit fullscreen mode when the app
&gt; loses focus, but we should probably try to be consistent.

I think we previously decided to leave the fullscreen window up when switching to another app or window. See bug 33741. I think you should just revert this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230297</commentid>
    <comment_count>31</comment_count>
      <attachid>56943</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-05-25 09:03:54 -0700</bug_when>
    <thetext>Comment on attachment 56943
Patch

I&apos;ll try not to repeat comments from comment 30.

&gt; +MediaPlayerPrivateFullscreenWindow::~MediaPlayerPrivateFullscreenWindow()
&gt; +{
&gt; +}

Should we destroy our HWND here if that hasn&apos;t already happened?

&gt; +void MediaPlayerPrivateFullscreenWindow::createWindow()
&gt; +{
&gt; +    static ATOM windowAtom;
&gt; +    static LPCWSTR windowClassName = L&quot;MediaPlayerPrivateFullscreenWindowClass&quot;;
&gt; +    if (!windowAtom) {
&gt; +        WNDCLASSEX wcex = {0};
&gt; +        wcex.cbSize = sizeof(WNDCLASSEX);
&gt; +        wcex.style = CS_HREDRAW | CS_VREDRAW;
&gt; +        wcex.lpfnWndProc = &amp;staticWndProc;

No need for the &amp; here.

&gt; +        wcex.hInstance = WebCore::instanceHandle();

You shouldn&apos;t need the &quot;WebCore::&quot; here.

&gt; +void MediaPlayerPrivateFullscreenWindow::close()
&gt; +{
&gt; +    ::DestroyWindow(m_hwnd);
&gt; +    m_hwnd = 0;
&gt; +}

Looks like our WM_DESTROY code will set m_hwnd to 0. We could assert that that has happened here.

&gt; +HWND MediaPlayerPrivateFullscreenWindow::hwnd() const
&gt; +{
&gt; +    return m_hwnd;
&gt; +}
&gt; +
&gt; +WKCACFLayerRenderer* MediaPlayerPrivateFullscreenWindow::layerRenderer() const
&gt; +{
&gt; +    return m_layerRenderer.get();
&gt; +}
&gt; +
&gt; +WKCACFLayer* MediaPlayerPrivateFullscreenWindow::rootChildLayer() const
&gt; +{
&gt; +    return m_rootChild.get();
&gt; +}

We often put trivial getters like these inline in the class declaration.

&gt; +void MediaPlayerPrivateFullscreenWindow::setRootChildLayer(PassRefPtr&lt;WKCACFLayer&gt; rootChild)
&gt; +{
&gt; +    if (m_rootChild != rootChild) {
&gt; +        if (m_rootChild)
&gt; +            m_rootChild-&gt;removeFromSuperlayer();
&gt; +
&gt; +        m_rootChild = rootChild;
&gt; +    }
&gt; +
&gt; +    if (m_rootChild) {

I think it would be a little nicer if this were an early return.

&gt; +#if NDEBUG
&gt; +        rootLayer-&gt;setBackgroundColor(CGColorGetConstantColor(kCGColorBlack));
&gt; +#else
&gt; +        RetainPtr&lt;CGColorRef&gt; redColor(AdoptCF, CGColorCreateGenericRGB(1, 0, 0, 1));
&gt; +        rootLayer-&gt;setBackgroundColor(redColor.get());
&gt; +#endif

I think the normal idiom is &quot;#ifndef NDEBUG debug code #else release code #endif&quot;

&gt; +LRESULT CALLBACK MediaPlayerPrivateFullscreenWindow::staticWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

No need to specify CALLBACK here. Specifying it on the declaration is all that&apos;s required.

&gt; +    case WM_PAINT:
&gt; +        m_layerRenderer-&gt;renderSoon();
&gt; +        break;
&gt; +    }

Why do we only render soon, rather than immediately?

&gt; +class MediaPlayerPrivateFullscreenWindow {
&gt; +public:
&gt; +    MediaPlayerPrivateFullscreenWindow(MediaPlayerPrivateFullscreenClient*);
&gt; +    virtual ~MediaPlayerPrivateFullscreenWindow();

There&apos;s no need for this destructor to be virtual. (See &lt;http://www.parashift.com/c++-faq-lite/virtual-functions.html#faq-20.7&gt;.)

&gt; +protected:
&gt; +    static LRESULT CALLBACK staticWndProc(HWND, UINT message, WPARAM, LPARAM);
&gt; +    LRESULT wndProc(HWND, UINT message, WPARAM, LPARAM);
&gt; +
&gt; +    MediaPlayerPrivateFullscreenClient* m_client;
&gt; +    OwnPtr&lt;WKCACFLayerRenderer&gt; m_layerRenderer;
&gt; +    RefPtr&lt;WKCACFLayer&gt; m_rootChild;
&gt; +    HWND m_hwnd;
&gt; +};

I think you should use private instead of protected.

&gt;  bool MediaPlayerPrivateQuickTimeVisualContext::supportsFullscreen() const
&gt;  {
&gt; +#if USE(ACCELERATED_COMPOSITING)
&gt; +    Document* document = m_player-&gt;mediaPlayerClient()-&gt;mediaPlayerOwningDocument(); 
&gt; +    if (document)
&gt; +        return document-&gt;settings()-&gt;acceleratedCompositingEnabled();
&gt; +    return true;
&gt; +#else
&gt;      return false;
&gt; +#endif
&gt;  }

You need to null-check the result of document-&gt;settings().

It&apos;s a little surprising that we&apos;d allow a &lt;video&gt; element that has no document to go into fullscreen mode.

(Did you test that when you disable hardware acceleration in the DirectX Control Panel, fullscreen is no longer supported?)

&gt; @@ -939,6 +947,12 @@ void MediaPlayerPrivateQuickTimeVisualCo
&gt;  #endif
&gt;      // The layer will get hooked up via RenderLayerBacking::updateGraphicsLayerConfiguration().
&gt;  #endif
&gt; +
&gt; +    // fill the newly created layer with image data, so we&apos;re not looking at 
&gt; +    // an empty layer until the next time a new image is available, which could
&gt; +    // be a long time if we&apos;re paused.
&gt; +    if (m_visualContext)
&gt; +        retrieveCurrentImage();
&gt;  }

The comment here is pretty good (though the first letter of it should be capitalized). I think you should mention in the ChangeLog that this is a pre-existing bug you&apos;re fixing.

&gt; +void WKCACFLayer::setLayoutClient(WKCACFLayerLayoutClient* layoutClient)
&gt; +{
&gt; +    if (layoutClient == m_layoutClient)
&gt; +        return;
&gt; +
&gt; +    m_layoutClient = layoutClient;
&gt; +    CACFLayerSetLayoutCallback(layer(), m_layoutClient ? &amp;layoutSublayersProc : 0);    
&gt; +}

Still no need for the &amp; here.

&gt; +class WKCACFLayerLayoutClient {
&gt; +public:
&gt; +    virtual void layoutSublayersOfLayer(WKCACFLayer*) = 0;
&gt; +};

You should add a protected virtual destructor.

&gt; +void FullscreenVideoController::LayoutClient::layoutSublayersOfLayer(WKCACFLayer* layer) 
&gt; +{
&gt; +    if (layer != m_parent-&gt;m_rootChild) 
&gt; +        return;

I thought you were going to add an assertion here?

&gt; +    HTMLMediaElement* mediaElement = m_parent-&gt;m_mediaElement.get();
&gt; +    if (!mediaElement)
&gt; +        return;
&gt; +
&gt; +    WKCACFLayer* videoLayer = mediaElement-&gt;platformLayer();
&gt; +    if (!videoLayer || videoLayer-&gt;superlayer() != layer)
&gt; +        return;
&gt; +
&gt; +    FloatPoint videoAnchor = videoLayer-&gt;anchorPoint();

You don&apos;t use this variable anymore.

&gt; +    FloatRect layerBounds = layer-&gt;bounds();
&gt; +
&gt; +    FloatSize videoSize = mediaElement-&gt;player()-&gt;naturalSize();
&gt; +    float scaleFactor;
&gt; +    if (videoSize.aspectRatio() &gt; layerBounds.size().aspectRatio())
&gt; +        scaleFactor = layerBounds.width() / videoSize.width();
&gt; +    else
&gt; +        scaleFactor = layerBounds.height() / videoSize.height();
&gt; +    videoSize.scale(scaleFactor);
&gt; +
&gt; +    // Calculate the centered position based on the videoAnchor, videoBounds, and layerBounds:

Since videoAnchor isn&apos;t used, you shouldn&apos;t mention it.

&gt;  FullscreenVideoController::~FullscreenVideoController()
&gt;  {
&gt; -    if (movie())
&gt; -        movie()-&gt;exitFullscreen();
&gt; -}
&gt; +    m_rootChild-&gt;setLayoutClient(0);
&gt;  
&gt; -QTMovieGWorld* FullscreenVideoController::movie() const
&gt; -{
&gt; -    if (!m_mediaElement)
&gt; -        return 0;
&gt; -
&gt; -    PlatformMedia platformMedia = m_mediaElement-&gt;platformMedia();
&gt; -    if (platformMedia.type != PlatformMedia::QTMovieGWorldType)
&gt; -        return 0;
&gt; -
&gt; -    return platformMedia.media.qtMovieGWorld;
&gt; +    if (m_fullscreenWindow) {
&gt; +        m_fullscreenWindow-&gt;close();
&gt; +        m_fullscreenWindow = 0;
&gt; +    }
&gt;  }

If you teach MediaPlayerPrivateFullscreenWindow to close itself when it is destroyed, you won&apos;t have to call close() here. I don&apos;t think you even need to set m_fullscreenWindow to 0, since it will get destroyed automatically when your destructor returns.

&gt;  void FullscreenVideoController::exitFullscreen()
&gt;  {
&gt; -    SetWindowLongPtr(m_hudWindow, 0, 0);
&gt; -    if (movie())
&gt; -        movie()-&gt;exitFullscreen();
&gt; -
&gt; -    ASSERT(!IsWindow(m_hudWindow));
&gt; -    m_videoWindow = 0;
&gt; -    m_hudWindow = 0;
&gt; +    if (m_fullscreenWindow) {
&gt; +        m_fullscreenWindow-&gt;close();
&gt; +        m_fullscreenWindow-&gt;setRootChildLayer(0);
&gt; +        m_fullscreenWindow = 0;
&gt; +    }

...or here (and you don&apos;t need to call setRootChildLayer(0), either).

&gt; +    // We previously ripped the mediaElement&apos;s platform layer out
&gt; +    // of it&apos;s orginial layer tree to display it in our fullscreen

Typo: it&apos;s -&gt; its

&gt; +HWND FullscreenVideoController::parentHWND()
&gt; +{
&gt; +    if (m_mediaElement) {
&gt; +        WebView* webView = kit(m_mediaElement-&gt;document()-&gt;page());
&gt; +        if (webView)
&gt; +            return webView-&gt;topLevelParent();

Why not use the WebView&apos;s HWND? That way the fullscreen window will disappear if the user switches tabs.

This function could use some early-return lovin&apos;.

&gt; +void FullscreenVideoController::onKeyDown(int virtualKey)
&gt; +{
&gt; +    if (virtualKey == VK_ESCAPE) {
&gt; +        if (m_mediaElement)
&gt; +            m_mediaElement-&gt;exitFullscreen();
&gt; +    }
&gt; +}

This seems like a new behavior that&apos;s unrelated to the rest of this patch. I think it deserves its own bug report/patch. (It also isn&apos;t mentioned in the ChangeLog (not even the function name!).)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230321</commentid>
    <comment_count>32</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-05-25 09:51:09 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; (In reply to comment #24)
&gt; &gt; (In reply to comment #22)
&gt; &gt; &gt; --- Comment #22 from Adam Roben (aroben) &lt;aroben@apple.com&gt;  2010-05-24 11:38:12
&gt; &gt; I wasn&apos;t entirely happy with the name.  I&apos;d be happy to rename it
&gt; &gt; FullscreenLayerWindow.
&gt; 
&gt; I think I slightly prefer FullscreenLayerWindow, but I don&apos;t care too strongly.

In that case, I think I&apos;ll leave it as-is and rename it once something other than the &lt;video&gt; element uses the fullscreen code.

&gt; &gt; I thought of that, but wasn&apos;t sure how to pipe that information through to the
&gt; &gt; FullscreenWindow class.  Perhaps a method added to FullscreenWindowClient?
&gt; 
&gt; I think passing it in the constructor would be slightly better, since we don&apos;t want to support the parent window changing during the lifetime of the FullscreenLayerWindow.

Got it, this with jive with the change below about creating the fullscreen HWND in FullscreenLayerWindow&apos;s constructor.

&gt; &gt; &gt; Should we check the return value of GetMonitorInfo?
&gt; &gt; 
&gt; &gt; And bail out early?  
&gt; 
&gt; Yeah, sorry for being vague.

Changed.

&gt; &gt; When the only monitor we ask for is the Primary one, those will always be zero.  Now
&gt; &gt; that we&apos;ll be asking for (possibly) other ones, yes, yes we should be. :)
&gt; 
&gt; You can set your primary monitor to be to the right of a secondary monitor. In that case I&apos;d imagine the primary monitor&apos;s origin would not be at 0,0 (though maybe it is still at 0,0 and all the secondary monitor&apos;s coordinates are negative?).

Yes, they&apos;re negative.  But regardless, changed. :)

&gt; &gt; I had that in an earlier version, but there was a case where this all needed to be
&gt; &gt; happen even when m_rootChild hadn&apos;t changed.  I can&apos;t remember off the top of my
&gt; &gt; head why that would be.
&gt; 
&gt; I think it would be good to add a comment, even if you&apos;re not quite sure what the circumstances are. That way someone like me won&apos;t just change it without testing. :-)

Added.

&gt; &gt; &gt;&gt; +        m_layerRenderer-&gt;setHostWindow(m_hwnd);
&gt; &gt; &gt;&gt; +        m_layerRenderer-&gt;createRenderer();
&gt; &gt; &gt;&gt; +        m_layerRenderer-&gt;setNeedsDisplay();
&gt; &gt; &gt; 
&gt; &gt; &gt; Why do we call setNeedsDisplay here? We don&apos;t have a root child layer yet, right?
&gt; &gt; 
&gt; &gt; That&apos;s true in this case, but it&apos;s not guaranteed that clients will call in that
&gt; &gt; order.  Maybe we should check to see if we have a rootLayer before calling
&gt; &gt; setNeedsDisplay?
&gt; 
&gt; Sure, that sounds good.

Changed.

&gt; &gt; &gt;&gt; +void WKCACFLayer::setFrame(const CGRect&amp; rect)
&gt; &gt; &gt;&gt; +{
&gt; &gt; &gt;&gt; +    CGRect oldFrame = frame();
&gt; &gt; &gt;&gt; +    if (CGRectEqualToRect(rect, oldFrame))
&gt; &gt; &gt;&gt; +        return;
&gt; &gt; &gt;&gt; +
&gt; &gt; &gt;&gt; +    CACFLayerSetFrame(layer(), rect);
&gt; &gt; &gt;&gt; +    setNeedsCommit();
&gt; &gt; &gt;&gt; +
&gt; &gt; &gt;&gt; +    if (m_needsDisplayOnBoundsChange)
&gt; &gt; &gt;&gt; +        setNeedsDisplay();
&gt; &gt; &gt;&gt; +}
&gt; &gt; &gt; 
&gt; &gt; &gt; If the size of the frame hasn&apos;t changed, should we not call setNeedsDisplay()?
&gt; &gt; 
&gt; &gt; If the size of the frame hasn&apos;t changed, the second statement should bail us out
&gt; &gt; early.  Or did I miss something?
&gt; 
&gt; If only the origin of the frame changes, but not its size, you will call setNeedsDisplay(). But I don&apos;t think you need to in that case.

Changed.

&gt; &gt; &gt;&gt; class WKCACFLayer : public RefCounted&lt;WKCACFLayer&gt; {
&gt; &gt; &gt;&gt; public:
&gt; &gt; &gt;&gt; @@ -63,6 +67,10 @@ public:
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt;     virtual void drawInContext(PlatformGraphicsContext*) { }
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; +    virtual void setLayoutClient(WKCACFLayerLayoutClient*);
&gt; &gt; &gt;&gt; +    virtual WKCACFLayerLayoutClient* layoutClient() const;
&gt; &gt; &gt;&gt; +    virtual void setNeedsLayout();
&gt; &gt; &gt; 
&gt; &gt; &gt; I don&apos;t see why these need to be virtual.
&gt; &gt; 
&gt; &gt; Hmm; if a subclass wants to do something in response to having the client set?
&gt; 
&gt; Yes, they would need to be virtual in that case. But there is no such subclass currently. If/when we add one, we can make them virtual. Having them virtual now just slows things down.

Changed.

&gt; &gt; No good reason.  But if we create them in the constructor, and delete them from the
&gt; &gt; destructor, they can be exempted from NULL checks.
&gt; 
&gt; Seems like we could move the creation of m_fullscreenWindow into the constructor, too, then.

Moved.

&gt; &gt; &gt; Why is it now possible for m_hudWindow to be null when it wasn&apos;t possible before?
&gt; &gt; Or was it possible before? (If so, you should mention it in your ChangeLog.)
&gt; &gt; 
&gt; &gt; It was always possible, if a client called &quot;enterFullscreen()/exitFullscreen()&quot; out
&gt; &gt; of order.  It&apos;s probably safe to call SetWindowLongPtr() and DestroyWindow() with
&gt; &gt; NULL, but its also unnecessary.
&gt; 
&gt; OK, I think it would be good to mention this in the ChangeLog.

Oh, I finally get what you were originally asking! Yeah, we can put the assert back in.

&gt; I think we previously decided to leave the fullscreen window up when switching to another app or window. See bug 33741. I think you should just revert this change.

Sure thing!  Pulled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230370</commentid>
    <comment_count>33</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-05-25 11:13:28 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; (From update of attachment 56943 [details])
&gt; I&apos;ll try not to repeat comments from comment 30.
&gt; 
&gt; &gt; +MediaPlayerPrivateFullscreenWindow::~MediaPlayerPrivateFullscreenWindow()
&gt; &gt; +{
&gt; &gt; +}
&gt; 
&gt; Should we destroy our HWND here if that hasn&apos;t already happened?

Added! (in response to your last comment, actually)

&gt; &gt; +void MediaPlayerPrivateFullscreenWindow::createWindow()
&gt; &gt; +{
&gt; &gt; +    static ATOM windowAtom;
&gt; &gt; +    static LPCWSTR windowClassName = L&quot;MediaPlayerPrivateFullscreenWindowClass&quot;;
&gt; &gt; +    if (!windowAtom) {
&gt; &gt; +        WNDCLASSEX wcex = {0};
&gt; &gt; +        wcex.cbSize = sizeof(WNDCLASSEX);
&gt; &gt; +        wcex.style = CS_HREDRAW | CS_VREDRAW;
&gt; &gt; +        wcex.lpfnWndProc = &amp;staticWndProc;
&gt; 
&gt; No need for the &amp; here.

Removed!

&gt; &gt; +        wcex.hInstance = WebCore::instanceHandle();
&gt; 
&gt; You shouldn&apos;t need the &quot;WebCore::&quot; here.

Removed!

&gt; &gt; +void MediaPlayerPrivateFullscreenWindow::close()
&gt; &gt; +{
&gt; &gt; +    ::DestroyWindow(m_hwnd);
&gt; &gt; +    m_hwnd = 0;
&gt; &gt; +}
&gt; 
&gt; Looks like our WM_DESTROY code will set m_hwnd to 0. We could assert that that has happened here.

Asserted!

&gt; &gt; +HWND MediaPlayerPrivateFullscreenWindow::hwnd() const
&gt; &gt; +{
&gt; &gt; +    return m_hwnd;
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +WKCACFLayerRenderer* MediaPlayerPrivateFullscreenWindow::layerRenderer() const
&gt; &gt; +{
&gt; &gt; +    return m_layerRenderer.get();
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +WKCACFLayer* MediaPlayerPrivateFullscreenWindow::rootChildLayer() const
&gt; &gt; +{
&gt; &gt; +    return m_rootChild.get();
&gt; &gt; +}
&gt; 
&gt; We often put trivial getters like these inline in the class declaration.

Moved!

&gt; &gt; +void MediaPlayerPrivateFullscreenWindow::setRootChildLayer(PassRefPtr&lt;WKCACFLayer&gt; rootChild)
&gt; &gt; +{
&gt; &gt; +    if (m_rootChild != rootChild) {
&gt; &gt; +        if (m_rootChild)
&gt; &gt; +            m_rootChild-&gt;removeFromSuperlayer();
&gt; &gt; +
&gt; &gt; +        m_rootChild = rootChild;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    if (m_rootChild) {
&gt; 
&gt; I think it would be a little nicer if this were an early return.

This is the function that, in a previous comment, you had asked me to add a comment to saying why we don&apos;t return early so that, in your words: &quot;someone like me won&apos;t just change it without testing.&quot; :-D

That said, I&apos;m going to try doing and early return and discover what the corner case is and see if I can correct it.

&gt; &gt; +#if NDEBUG
&gt; &gt; +        rootLayer-&gt;setBackgroundColor(CGColorGetConstantColor(kCGColorBlack));
&gt; &gt; +#else
&gt; &gt; +        RetainPtr&lt;CGColorRef&gt; redColor(AdoptCF, CGColorCreateGenericRGB(1, 0, 0, 1));
&gt; &gt; +        rootLayer-&gt;setBackgroundColor(redColor.get());
&gt; &gt; +#endif
&gt; 
&gt; I think the normal idiom is &quot;#ifndef NDEBUG debug code #else release code #endif&quot;

Reversed!

&gt; &gt; +LRESULT CALLBACK MediaPlayerPrivateFullscreenWindow::staticWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
&gt; 
&gt; No need to specify CALLBACK here. Specifying it on the declaration is all that&apos;s required.

Deleted!

&gt; &gt; +    case WM_PAINT:
&gt; &gt; +        m_layerRenderer-&gt;renderSoon();
&gt; &gt; +        break;
&gt; &gt; +    }
&gt; 
&gt; Why do we only render soon, rather than immediately?

Because both the render() and paint() functions are declared as private.  Is it worth moving one of those into public?

&gt; &gt; +class MediaPlayerPrivateFullscreenWindow {
&gt; &gt; +public:
&gt; &gt; +    MediaPlayerPrivateFullscreenWindow(MediaPlayerPrivateFullscreenClient*);
&gt; &gt; +    virtual ~MediaPlayerPrivateFullscreenWindow();
&gt; 
&gt; There&apos;s no need for this destructor to be virtual. (See &lt;http://www.parashift.com/c++-faq-lite/virtual-functions.html#faq-20.7&gt;.)

Unvirtualized!

&gt; &gt; +protected:
&gt; &gt; +    static LRESULT CALLBACK staticWndProc(HWND, UINT message, WPARAM, LPARAM);
&gt; &gt; +    LRESULT wndProc(HWND, UINT message, WPARAM, LPARAM);
&gt; &gt; +
&gt; &gt; +    MediaPlayerPrivateFullscreenClient* m_client;
&gt; &gt; +    OwnPtr&lt;WKCACFLayerRenderer&gt; m_layerRenderer;
&gt; &gt; +    RefPtr&lt;WKCACFLayer&gt; m_rootChild;
&gt; &gt; +    HWND m_hwnd;
&gt; &gt; +};
&gt; 
&gt; I think you should use private instead of protected.

Privatized!

&gt; &gt;  bool MediaPlayerPrivateQuickTimeVisualContext::supportsFullscreen() const
&gt; &gt;  {
&gt; &gt; +#if USE(ACCELERATED_COMPOSITING)
&gt; &gt; +    Document* document = m_player-&gt;mediaPlayerClient()-&gt;mediaPlayerOwningDocument(); 
&gt; &gt; +    if (document)
&gt; &gt; +        return document-&gt;settings()-&gt;acceleratedCompositingEnabled();
&gt; &gt; +    return true;
&gt; &gt; +#else
&gt; &gt;      return false;
&gt; &gt; +#endif
&gt; &gt;  }
&gt; 
&gt; You need to null-check the result of document-&gt;settings().

Null checked!

&gt; It&apos;s a little surprising that we&apos;d allow a &lt;video&gt; element that has no document to go into fullscreen mode.

That&apos;s true.  Or, false.  Yes, it is now false.

&gt; (Did you test that when you disable hardware acceleration in the DirectX Control Panel, fullscreen is no longer supported?)

I tested by turning off the Debug menu &quot;Enable Accelerated Compositing&quot;.  I&apos;ll test again with the DXCPL.

&gt; The comment here is pretty good (though the first letter of it should be capitalized). I think you should mention in the ChangeLog that this is a pre-existing bug you&apos;re fixing.

I&apos;ll mention it.

&gt; &gt; +void WKCACFLayer::setLayoutClient(WKCACFLayerLayoutClient* layoutClient)
&gt; &gt; +{
&gt; &gt; +    if (layoutClient == m_layoutClient)
&gt; &gt; +        return;
&gt; &gt; +
&gt; &gt; +    m_layoutClient = layoutClient;
&gt; &gt; +    CACFLayerSetLayoutCallback(layer(), m_layoutClient ? &amp;layoutSublayersProc : 0);    
&gt; &gt; +}
&gt; 
&gt; Still no need for the &amp; here.

Remove!

&gt; &gt; +class WKCACFLayerLayoutClient {
&gt; &gt; +public:
&gt; &gt; +    virtual void layoutSublayersOfLayer(WKCACFLayer*) = 0;
&gt; &gt; +};
&gt; 
&gt; You should add a protected virtual destructor.

Added!

&gt; &gt; +void FullscreenVideoController::LayoutClient::layoutSublayersOfLayer(WKCACFLayer* layer) 
&gt; &gt; +{
&gt; &gt; +    if (layer != m_parent-&gt;m_rootChild) 
&gt; &gt; +        return;
&gt; 
&gt; I thought you were going to add an assertion here?

I was?  It sounds like a good idea.  I&apos;ll do that.

&gt; &gt; +    HTMLMediaElement* mediaElement = m_parent-&gt;m_mediaElement.get();
&gt; &gt; +    if (!mediaElement)
&gt; &gt; +        return;
&gt; &gt; +
&gt; &gt; +    WKCACFLayer* videoLayer = mediaElement-&gt;platformLayer();
&gt; &gt; +    if (!videoLayer || videoLayer-&gt;superlayer() != layer)
&gt; &gt; +        return;
&gt; &gt; +
&gt; &gt; +    FloatPoint videoAnchor = videoLayer-&gt;anchorPoint();
&gt; 
&gt; You don&apos;t use this variable anymore.

Removed!

&gt; Since videoAnchor isn&apos;t used, you shouldn&apos;t mention it.

Removed!

&gt; If you teach MediaPlayerPrivateFullscreenWindow to close itself when it is destroyed, you won&apos;t have to call close() here. I don&apos;t think you even need to set m_fullscreenWindow to 0, since it will get destroyed automatically when your destructor returns.

True.  Paranoia.  Removed!

&gt; ...or here (and you don&apos;t need to call setRootChildLayer(0), either).

Removed here also!

&gt; &gt; +    // We previously ripped the mediaElement&apos;s platform layer out
&gt; &gt; +    // of it&apos;s orginial layer tree to display it in our fullscreen
&gt; 
&gt; Typo: it&apos;s -&gt; its

Oh, I hate that typo!  Or the even worse typo, the non-posessive plural apostrophe, like &quot;stair&apos;s&quot;.

&gt; &gt; +HWND FullscreenVideoController::parentHWND()
&gt; &gt; +{
&gt; &gt; +    if (m_mediaElement) {
&gt; &gt; +        WebView* webView = kit(m_mediaElement-&gt;document()-&gt;page());
&gt; &gt; +        if (webView)
&gt; &gt; +            return webView-&gt;topLevelParent();
&gt; 
&gt; Why not use the WebView&apos;s HWND? That way the fullscreen window will disappear if the user switches tabs.

An excellent idea.  Oh wait, this doesn&apos;t really jive with passing the HWND into the FullscreenLayerWindow&apos;s constructor.  Hm.  A conundrum.  I think I prefer the m_client-&gt;parentHWND() technique.

&gt; This function could use some early-return lovin&apos;.

Totes.

&gt; &gt; +void FullscreenVideoController::onKeyDown(int virtualKey)
&gt; &gt; +{
&gt; &gt; +    if (virtualKey == VK_ESCAPE) {
&gt; &gt; +        if (m_mediaElement)
&gt; &gt; +            m_mediaElement-&gt;exitFullscreen();
&gt; &gt; +    }
&gt; &gt; +}
&gt; 
&gt; This seems like a new behavior that&apos;s unrelated to the rest of this patch. I think it deserves its own bug report/patch. (It also isn&apos;t mentioned in the ChangeLog (not even the function name!).)

Oh, yes, at the last moment and at great expense, I noticed that ESC was no longer causing fullscreen to exit.  The keydown event is posted, but never the WM_CHAR event.  I&apos;ll add a comment in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230379</commentid>
    <comment_count>34</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-05-25 11:30:00 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; (In reply to comment #31)
&gt; &gt; (From update of attachment 56943)
&gt; &gt; &gt; +void MediaPlayerPrivateFullscreenWindow::setRootChildLayer(PassRefPtr&lt;WKCACFLayer&gt; rootChild)
&gt; &gt; &gt; +{
&gt; &gt; &gt; +    if (m_rootChild != rootChild) {
&gt; &gt; &gt; +        if (m_rootChild)
&gt; &gt; &gt; +            m_rootChild-&gt;removeFromSuperlayer();
&gt; &gt; &gt; +
&gt; &gt; &gt; +        m_rootChild = rootChild;
&gt; &gt; &gt; +    }
&gt; &gt; &gt; +
&gt; &gt; &gt; +    if (m_rootChild) {
&gt; &gt; 
&gt; &gt; I think it would be a little nicer if this were an early return.
&gt; 
&gt; This is the function that, in a previous comment, you had asked me to add a comment to saying why we don&apos;t return early so that, in your words: &quot;someone like me won&apos;t just change it without testing.&quot; :-D
&gt; 
&gt; That said, I&apos;m going to try doing and early return and discover what the corner case is and see if I can correct it.

Sorry, what I meant to say was: &quot;I think it would be a little nicer if you reversed this if and made it into an early return, like this:

if (!m_rootChild)
    return;
&quot;

&gt; &gt; &gt; +    case WM_PAINT:
&gt; &gt; &gt; +        m_layerRenderer-&gt;renderSoon();
&gt; &gt; &gt; +        break;
&gt; &gt; &gt; +    }
&gt; &gt; 
&gt; &gt; Why do we only render soon, rather than immediately?
&gt; 
&gt; Because both the render() and paint() functions are declared as private.  Is it worth moving one of those into public?

Ah, interesting. I think making paint() public would be OK. You should talk to Chris, though, since he made that decision.

&gt; &gt; &gt; +HWND FullscreenVideoController::parentHWND()
&gt; &gt; &gt; +{
&gt; &gt; &gt; +    if (m_mediaElement) {
&gt; &gt; &gt; +        WebView* webView = kit(m_mediaElement-&gt;document()-&gt;page());
&gt; &gt; &gt; +        if (webView)
&gt; &gt; &gt; +            return webView-&gt;topLevelParent();
&gt; &gt; 
&gt; &gt; Why not use the WebView&apos;s HWND? That way the fullscreen window will disappear if the user switches tabs.
&gt; 
&gt; An excellent idea.  Oh wait, this doesn&apos;t really jive with passing the HWND into the FullscreenLayerWindow&apos;s constructor.  Hm.  A conundrum.  I think I prefer the m_client-&gt;parentHWND() technique.

Why does using the WebView&apos;s HWND not make it possible to pass the HWND to the constructor?

&gt; &gt; &gt; +void FullscreenVideoController::onKeyDown(int virtualKey)
&gt; &gt; &gt; +{
&gt; &gt; &gt; +    if (virtualKey == VK_ESCAPE) {
&gt; &gt; &gt; +        if (m_mediaElement)
&gt; &gt; &gt; +            m_mediaElement-&gt;exitFullscreen();
&gt; &gt; &gt; +    }
&gt; &gt; &gt; +}
&gt; &gt; 
&gt; &gt; This seems like a new behavior that&apos;s unrelated to the rest of this patch. I think it deserves its own bug report/patch. (It also isn&apos;t mentioned in the ChangeLog (not even the function name!).)
&gt; 
&gt; Oh, yes, at the last moment and at great expense, I noticed that ESC was no longer causing fullscreen to exit.  The keydown event is posted, but never the WM_CHAR event.  I&apos;ll add a comment in the ChangeLog.

Ah, excellent. Thanks for the clarification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230382</commentid>
    <comment_count>35</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-05-25 11:36:42 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (In reply to comment #33)
&gt; &gt; (In reply to comment #31)
&gt; &gt; That said, I&apos;m going to try doing and early return and discover what the corner case is and see if I can correct it.
&gt; 
&gt; Sorry, what I meant to say was: &quot;I think it would be a little nicer if you reversed this if and made it into an early return, like this:
&gt; 
&gt; if (!m_rootChild)
&gt;     return;

That makes way more sense.  Consider it done.

&gt; &gt; &gt; &gt; +    case WM_PAINT:
&gt; &gt; &gt; &gt; +        m_layerRenderer-&gt;renderSoon();
&gt; &gt; &gt; &gt; +        break;
&gt; &gt; &gt; &gt; +    }
&gt; &gt; &gt; 
&gt; &gt; &gt; Why do we only render soon, rather than immediately?
&gt; &gt; 
&gt; &gt; Because both the render() and paint() functions are declared as private.  Is it worth moving one of those into public?
&gt; 
&gt; Ah, interesting. I think making paint() public would be OK. You should talk to Chris, though, since he made that decision.

Will do.

&gt; &gt; &gt; &gt; +HWND FullscreenVideoController::parentHWND()
&gt; &gt; &gt; &gt; +{
&gt; &gt; &gt; &gt; +    if (m_mediaElement) {
&gt; &gt; &gt; &gt; +        WebView* webView = kit(m_mediaElement-&gt;document()-&gt;page());
&gt; &gt; &gt; &gt; +        if (webView)
&gt; &gt; &gt; &gt; +            return webView-&gt;topLevelParent();
&gt; &gt; &gt; 
&gt; &gt; &gt; Why not use the WebView&apos;s HWND? That way the fullscreen window will disappear if the user switches tabs.
&gt; &gt; 
&gt; &gt; An excellent idea.  Oh wait, this doesn&apos;t really jive with passing the HWND into the FullscreenLayerWindow&apos;s constructor.  Hm.  A conundrum.  I think I prefer the m_client-&gt;parentHWND() technique.
&gt; 
&gt; Why does using the WebView&apos;s HWND not make it possible to pass the HWND to the constructor?

Because here we are getting the WebView by way of the media element, and the media element is given to the FullscreenVideoController after it&apos;s been constructed, so at construct time, we&apos;ll have no HWND to give.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230397</commentid>
    <comment_count>36</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-05-25 12:29:00 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; &gt; Why does using the WebView&apos;s HWND not make it possible to pass the HWND to the constructor?
&gt; 
&gt; Because here we are getting the WebView by way of the media element, and the media element is given to the FullscreenVideoController after it&apos;s been constructed, so at construct time, we&apos;ll have no HWND to give.

I guess you&apos;re saying there&apos;s no way to get from the media element to the WebView at the time enterFullscreen() is called? That seems strange. (The WebView should certainly have an HWND by that point.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230402</commentid>
    <comment_count>37</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-05-25 12:48:22 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; I guess you&apos;re saying there&apos;s no way to get from the media element to the WebView at the time enterFullscreen() is called? That seems strange. (The WebView should certainly have an HWND by that point.)

No, I&apos;m saying there&apos;s no way to get from FullscreenVideoController to HTMLMediaElement at the time MediaPlayerPrivateFullscreenWindow is created.  (In FullscreenVideoController&apos;s constructor)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230404</commentid>
    <comment_count>38</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-05-25 12:50:33 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; (In reply to comment #36)
&gt; &gt; I guess you&apos;re saying there&apos;s no way to get from the media element to the WebView at the time enterFullscreen() is called? That seems strange. (The WebView should certainly have an HWND by that point.)
&gt; 
&gt; No, I&apos;m saying there&apos;s no way to get from FullscreenVideoController to HTMLMediaElement at the time MediaPlayerPrivateFullscreenWindow is created.  (In FullscreenVideoController&apos;s constructor)

I see. I was confused because in your last patch, MediaPlayerPrivateFullscreenWindow isn&apos;t created until enterFullscreen() is called.

What if we passed the parent window to MediaPlayerPrivateFullscreenWindow::createWindow?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230405</commentid>
    <comment_count>39</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-05-25 12:52:01 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; I see. I was confused because in your last patch, MediaPlayerPrivateFullscreenWindow isn&apos;t created until enterFullscreen() is called.
&gt; 
&gt; What if we passed the parent window to MediaPlayerPrivateFullscreenWindow::createWindow?

I&apos;ll try that, and submit a new patch with this and all the other changes integrated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230418</commentid>
    <comment_count>40</comment_count>
      <attachid>57040</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-05-25 13:34:39 -0700</bug_when>
    <thetext>Created attachment 57040
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230465</commentid>
    <comment_count>41</comment_count>
      <attachid>57040</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-05-25 14:31:39 -0700</bug_when>
    <thetext>Comment on attachment 57040
Patch

&gt; +void MediaPlayerPrivateFullscreenWindow::createWindow(HWND parentHwnd)

It would be more accurate to call this parameter &quot;ownerHwnd&quot;, since popup windows have owners, not parents. WebKit style says &quot;Hwnd&quot; should be in all-caps.

&gt; +    MONITORINFO mi = {0};
&gt; +    mi.cbSize = sizeof(MONITORINFO);
&gt; +    if (!GetMonitorInfo(MonitorFromWindow(parentHwnd, MONITOR_DEFAULTTONEAREST), &amp;mi))
&gt; +      return;

Funny indentation here.

&gt; +    ::CreateWindowExW(0, windowClassName, L&quot;&quot;, WS_POPUP | WS_VISIBLE, 
&gt; +        monitorRect.x(), monitorRect.y(), monitorRect.width(), monitorRect.height(),
&gt; +        parentHwnd, 0, WebCore::instanceHandle(), this);

Should we be passing WS_EX_TOOLWINDOW to avoid having a taskbar item created for this window?

&gt; +void MediaPlayerPrivateFullscreenWindow::setRootChildLayer(PassRefPtr&lt;WKCACFLayer&gt; rootChild)
&gt; +{
&gt; +    if (m_rootChild == rootChild)
&gt; +        return;

I guess you figured out this was OK after all.

&gt; +    void createWindow(HWND parentHwnd = 0);

I don&apos;t think there&apos;s any need for the default value for this parameter.

&gt; +    // fill the newly created layer with image data, so we&apos;re not looking at 
&gt; +    // an empty layer until the next time a new image is available, which could
&gt; +    // be a long time if we&apos;re paused.
&gt; +    if (m_visualContext)
&gt; +        retrieveCurrentImage();

Don&apos;t forget to capitalize &quot;fill&quot;!

&gt; +void WKCACFLayer::setFrame(const CGRect&amp; rect)
&gt; +{
&gt; +    CGRect oldFrame = frame();
&gt; +    if (CGRectEqualToRect(rect, oldFrame))
&gt; +        return;
&gt; +
&gt; +    CACFLayerSetFrame(layer(), rect);
&gt; +    setNeedsCommit();
&gt; +
&gt; +    if (m_needsDisplayOnBoundsChange &amp;&amp; CGSizeEqualToSize(rect.size, oldFrame.size))
&gt; +        setNeedsDisplay();
&gt; +}

I think you meant !CGSizeEqualToSize(...), right?

&gt; +WKCACFLayerLayoutClient* WKCACFLayer::layoutClient() const
&gt; +{
&gt; +    return m_layoutClient;
&gt; +}
&gt; +
&gt; +void WKCACFLayer::setNeedsLayout()
&gt; +{
&gt; +    CACFLayerSetNeedsLayout(layer());
&gt; +}

These could be inline in the class declaration.

&gt; @@ -260,8 +273,11 @@ protected:
&gt;      void printLayer(int indent) const;
&gt;  #endif
&gt;  
&gt; +    static void layoutSublayersProc(CACFLayerRef);
&gt; +

I think this can be private.

&gt; +        Modified FullscreenVideoController to work with MediaPlayerPrivateFullscreenWindow.  The FullscreenVideoController
&gt; +        is now MediaPlayerPrivate agnostic.  The new fullscreen window is not a topmost window, and so the behavior has
&gt; +        been changed to exit fullscreen mode when the application becomes inactive.

I think the last sentence is no longer true.

&gt; +void FullscreenVideoController::LayoutClient::layoutSublayersOfLayer(WKCACFLayer* layer) 
&gt; +{
&gt; +    ASSERT(layer == m_parent-&gt;m_rootChild);

You could use ASSERT_ARG here:

ASSERT_ARG(layer, layer == m_parent-&gt;m_rootChild);

&gt; Index: LayoutTests/platform/win/media/controls-drag-timebar-expected.txt
&gt; ===================================================================
&gt; --- LayoutTests/platform/win/media/controls-drag-timebar-expected.txt	(revision 60167)
&gt; +++ LayoutTests/platform/win/media/controls-drag-timebar-expected.txt	(working copy)
&gt; @@ -4,10 +4,10 @@ RUN(video.autoplay = true)
&gt;  RUN(video.src = &apos;content/test.mp4&apos;)
&gt;  EVENT(playing)
&gt;  EVENT(seeked)
&gt; -Time: 2.1
&gt; +Time: 2.3
&gt;  EVENT(seeked)
&gt; -Time: 2.6
&gt; +Time: 2.8
&gt;  EVENT(seeked)
&gt; -Time: 3.1
&gt; +Time: 3.4
&gt;  END OF TEST

Are these changes really correct? Maybe the re-addition of the full-screen button makes the positions on the timebar have different values?

I don&apos;t think I need to see this again before you check it in. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230488</commentid>
    <comment_count>42</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-05-25 15:10:57 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; (From update of attachment 57040 [details])
&gt; &gt; +void MediaPlayerPrivateFullscreenWindow::createWindow(HWND parentHwnd)
&gt; 
&gt; It would be more accurate to call this parameter &quot;ownerHwnd&quot;, since popup windows have owners, not parents. WebKit style says &quot;Hwnd&quot; should be in all-caps.

Changed to ownerWindow; no need to restate the type all the time. 
 
&gt; &gt; +    MONITORINFO mi = {0};
&gt; &gt; +    mi.cbSize = sizeof(MONITORINFO);
&gt; &gt; +    if (!GetMonitorInfo(MonitorFromWindow(parentHwnd, MONITOR_DEFAULTTONEAREST), &amp;mi))
&gt; &gt; +      return;
&gt; 
&gt; Funny indentation here.

Vi strikes again!  Fixed.

&gt; &gt; +    ::CreateWindowExW(0, windowClassName, L&quot;&quot;, WS_POPUP | WS_VISIBLE, 
&gt; &gt; +        monitorRect.x(), monitorRect.y(), monitorRect.width(), monitorRect.height(),
&gt; &gt; +        parentHwnd, 0, WebCore::instanceHandle(), this);
&gt; 
&gt; Should we be passing WS_EX_TOOLWINDOW to avoid having a taskbar item created for this window?

Good idea!  Changed.

&gt; &gt; +void MediaPlayerPrivateFullscreenWindow::setRootChildLayer(PassRefPtr&lt;WKCACFLayer&gt; rootChild)
&gt; &gt; +{
&gt; &gt; +    if (m_rootChild == rootChild)
&gt; &gt; +        return;
&gt; 
&gt; I guess you figured out this was OK after all.

Indeed.

&gt; &gt; +    void createWindow(HWND parentHwnd = 0);
&gt; 
&gt; I don&apos;t think there&apos;s any need for the default value for this parameter.

Removed.

&gt; &gt; +    // fill the newly created layer with image data, so we&apos;re not looking at 
&gt; &gt; +    // an empty layer until the next time a new image is available, which could
&gt; &gt; +    // be a long time if we&apos;re paused.
&gt; &gt; +    if (m_visualContext)
&gt; &gt; +        retrieveCurrentImage();
&gt; 
&gt; Don&apos;t forget to capitalize &quot;fill&quot;!

Capital!

&gt; &gt; +void WKCACFLayer::setFrame(const CGRect&amp; rect)
&gt; &gt; +{
&gt; &gt; +    CGRect oldFrame = frame();
&gt; &gt; +    if (CGRectEqualToRect(rect, oldFrame))
&gt; &gt; +        return;
&gt; &gt; +
&gt; &gt; +    CACFLayerSetFrame(layer(), rect);
&gt; &gt; +    setNeedsCommit();
&gt; &gt; +
&gt; &gt; +    if (m_needsDisplayOnBoundsChange &amp;&amp; CGSizeEqualToSize(rect.size, oldFrame.size))
&gt; &gt; +        setNeedsDisplay();
&gt; &gt; +}
&gt; 
&gt; I think you meant !CGSizeEqualToSize(...), right?

Indeed I did.  Changed.

&gt; &gt; +WKCACFLayerLayoutClient* WKCACFLayer::layoutClient() const
&gt; &gt; +{
&gt; &gt; +    return m_layoutClient;
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +void WKCACFLayer::setNeedsLayout()
&gt; &gt; +{
&gt; &gt; +    CACFLayerSetNeedsLayout(layer());
&gt; &gt; +}
&gt; 
&gt; These could be inline in the class declaration.

Inlined!

&gt; &gt; @@ -260,8 +273,11 @@ protected:
&gt; &gt;      void printLayer(int indent) const;
&gt; &gt;  #endif
&gt; &gt;  
&gt; &gt; +    static void layoutSublayersProc(CACFLayerRef);
&gt; &gt; +
&gt; 
&gt; I think this can be private.

Privatized!

&gt; &gt; +        Modified FullscreenVideoController to work with MediaPlayerPrivateFullscreenWindow.  The FullscreenVideoController
&gt; &gt; +        is now MediaPlayerPrivate agnostic.  The new fullscreen window is not a topmost window, and so the behavior has
&gt; &gt; +        been changed to exit fullscreen mode when the application becomes inactive.
&gt; 
&gt; I think the last sentence is no longer true.

Removed!

&gt; &gt; +void FullscreenVideoController::LayoutClient::layoutSublayersOfLayer(WKCACFLayer* layer) 
&gt; &gt; +{
&gt; &gt; +    ASSERT(layer == m_parent-&gt;m_rootChild);
&gt; 
&gt; You could use ASSERT_ARG here:
&gt; 
&gt; ASSERT_ARG(layer, layer == m_parent-&gt;m_rootChild);

Asserted!

&gt; &gt; Index: LayoutTests/platform/win/media/controls-drag-timebar-expected.txt
&gt; &gt; ===================================================================
&gt; &gt; --- LayoutTests/platform/win/media/controls-drag-timebar-expected.txt	(revision 60167)
&gt; &gt; +++ LayoutTests/platform/win/media/controls-drag-timebar-expected.txt	(working copy)
&gt; &gt; @@ -4,10 +4,10 @@ RUN(video.autoplay = true)
&gt; &gt;  RUN(video.src = &apos;content/test.mp4&apos;)
&gt; &gt;  EVENT(playing)
&gt; &gt;  EVENT(seeked)
&gt; &gt; -Time: 2.1
&gt; &gt; +Time: 2.3
&gt; &gt;  EVENT(seeked)
&gt; &gt; -Time: 2.6
&gt; &gt; +Time: 2.8
&gt; &gt;  EVENT(seeked)
&gt; &gt; -Time: 3.1
&gt; &gt; +Time: 3.4
&gt; &gt;  END OF TEST
&gt; 
&gt; Are these changes really correct? Maybe the re-addition of the full-screen button makes the positions on the timebar have different values?

Yes, since the scrubber bar is now shorter (because of the button) each pixel on the bar maps to a slightly different time than before.

&gt; I don&apos;t think I need to see this again before you check it in. r=me

Okay, but in addition to the above, I also added a bunch of #if USE(ACCELERATED_COMPOSITING) checks around references to WKCACFLayer/LayerRenderer, to make sure the above builds on the buildbots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230503</commentid>
    <comment_count>43</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-05-25 15:31:27 -0700</bug_when>
    <thetext>Committed r60190: &lt;http://trac.webkit.org/changeset/60190&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56808</attachid>
            <date>2010-05-22 22:04:43 -0700</date>
            <delta_ts>2010-05-22 22:12:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39557-20100522220445.patch</filename>
            <type>text/plain</type>
            <size>34527</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDAyNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMDUtMjIgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZnVs
bCBzY3JlZW4gZG9lc24ndCB3b3JrIGZvciB2aWRlbyBlbGVtZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk1NTcKKyAgICAgICAgcmRhcjovL3By
b2JsZW0vODAxMTgxMworICAgICAgICAKKyAgICAgICAgQWRkIGZ1bGxzY3JlZW4gc3VwcG9ydCBm
b3IgTWVkaWFQbGF5ZXJQcml2YXRlVmlzdWFsQ29udGV4dC4gIEEgbmV3IGNsYXNzLCBNZWRpYVBs
YXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LAorICAgICAgICBwcm92aWRlcyB0aGUgZnVsbHNj
cmVlbiBod25kIGFuZCBsYXllciByZW5kZXJlci4gIEFueSBXS0NBQ0ZMYXllciBjYW4gYmUgcHJv
dmlkZWQgdG8gTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdworICAgICAgICBzbyBm
dXR1cmUgYWRkaXRpb25hbCBNZWRpYVBsYXllclByaXZhdGUgaW1wbGVtZW50YXRpb25zIGNhbiB1
c2UgdGhlIGZ1bGxzY3JlZW4gd2luZG93LgorICAgICAgICAKKyAgICAgICAgTWlub3IgYWRkaXRp
b25zIGhhdmUgYmVlbiBtYWRlIHRvIHRoZSBGbG9hdFNpemUgYW5kIEludFNpemUgY2xhc3Nlcy4K
KworICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oOiBBZGRlZCBhc3BlY3RSYXRpbygpLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaDogQWRkZWQgYXNwZWN0UmF0aW8oKSBhbmQg
c2NhbGUoZmxvYXQpLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVGdWxsc2NyZWVuV2luZG93LmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNr
VGltZVZpc3VhbENvbnRleHQuY3BwOiBDYWxsIHJldHJpZXZlQ3VycmVudEltYWdlKCkgYWZ0ZXIg
Y3JlYXRpbmcgdGhlIHZpZGVvTGF5ZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1dLQ0FDRkxheWVyLmNwcDogCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FD
RkxheWVyLmg6IEFkZCBsYXlvdXQgY2xpZW50IGNsYXNzLgorCiAyMDEwLTA1LTIyICBNYWNpZWog
U3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBS
b3dlLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA1
OTg3MykKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTIzNzM1LDYgKzIzNzM1LDE0IEBACiAJCQkJCQk+DQogCQkJCQk8L0ZpbGU+DQog
CQkJCQk8RmlsZQ0KKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2lu
XE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuY3BwIg0KKwkJCQkJCT4NCisJCQkJ
CTwvRmlsZT4NCisJCQkJCTxGaWxlDQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1x3aW5cTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oIg0KKwkJCQkJ
CT4NCisJCQkJCTwvRmlsZT4NCisJCQkJCTxGaWxlDQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1x3aW5cTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29u
dGV4dC5jcHAiDQogCQkJCQkJPg0KIAkJCQkJPC9GaWxlPg0KQEAgLTM4MDI4LDcgKzM4MDM2LDcg
QEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9
IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJ
REJEYXRhYmFzZS5jcHAiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTSURC
QW55Q3VzdG9tLmNwcCINCiAJCQkJCT4NCiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJ
CU5hbWU9IkRlYnVnfFdpbjMyIg0KQEAgLTM4MDgwLDExICszODA4OCw3IEBACiAJCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZl
UGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xKU0lEQkRhdGFiYXNlLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0J
CQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xKU0lEQkRhdGFiYXNlRXJyb3IuY3BwIg0KKwkJCQkJUmVsYXRpdmVQYXRo
PSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpT
SURCRGF0YWJhc2UuY3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJ
CQkJTmFtZT0iRGVidWd8V2luMzIiDQpAQCAtMzgxMzYsMTEgKzM4MTQwLDExIEBACiAJCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0
aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xKU0lEQkRhdGFiYXNlRXJyb3IuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRP
dXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQkRhdGFiYXNl
LmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0
aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xK
U0lEQkRhdGFiYXNlRXhjZXB0aW9uLmNwcCINCisJCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRP
dXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQkRhdGFiYXNl
RXJyb3IuY3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQkJTmFt
ZT0iRGVidWd8V2luMzIiDQpAQCAtMzgxOTIsMTEgKzM4MTk2LDExIEBACiAJCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0
aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xK
U0lEQkRhdGFiYXNlRXhjZXB0aW9uLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0
cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJEYXRhYmFzZUVy
cm9yLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZl
UGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xKU0lEQkRhdGFiYXNlUmVxdWVzdC5jcHAiDQorCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0
T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5jcHAiDQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJ
CQlOYW1lPSJEZWJ1Z3xXaW4zMiINCkBAIC0zODI0OCwxMSArMzgyNTIsMTEgQEAKIAkJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRp
dmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTSURCRGF0YWJhc2VSZXF1ZXN0LmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0
T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlS
ZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSlNJREJFcnJvckV2ZW50LmNwcCINCisJCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJL
aXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQkRhdGFi
YXNlUmVxdWVzdC5jcHAiDQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJ
CQlOYW1lPSJEZWJ1Z3xXaW4zMiINCkBAIC0zODMwNCwxMSArMzgzMDgsMTEgQEAKIAkJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRp
dmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTSURCRXJyb3JFdmVudC5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1
dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSURCRGF0YWJhc2VSZXF1
ZXN0LmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZl
UGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xKU0lEQkV2ZW50LmNwcCINCisJCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIp
XG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQkVycm9yRXZlbnQuY3BwIg0K
IAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQkJTmFtZT0iRGVidWd8V2lu
MzIiDQpAQCAtMzgzNjAsMTEgKzM4MzY0LDExIEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRP
dXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQkV2ZW50Lmgi
DQorCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJFcnJvckV2ZW50LmgiDQogCQkJCQk+DQogCQkJCTwvRmls
ZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9i
alwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQlJlcXVlc3QuY3BwIg0KKwkJCQkJ
UmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEpTSURCRXZlbnQuY3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0
aW9uDQogCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQpAQCAtMzg0MTYsMTEgKzM4NDIwLDExIEBA
CiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0J
CQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xKU0lEQlJlcXVlc3QuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJL
aXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQkV2ZW50
LmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0
aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xK
U0lEQlN1Y2Nlc3NFdmVudC5jcHAiDQorCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0
RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJSZXF1ZXN0LmNwcCIN
CiAJCQkJCT4NCiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJCU5hbWU9IkRlYnVnfFdp
bjMyIg0KQEAgLTM4NDcyLDExICszODQ3NiwxMSBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
Pg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0
T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJTdWNjZXNz
RXZlbnQuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQlJlcXVlc3QuaCINCiAJCQkJCT4NCiAJCQkJ
PC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xK
U0lEQkFueUN1c3RvbS5jcHAiDQorCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGly
KVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJTdWNjZXNzRXZlbnQuY3Bw
Ig0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQkJTmFtZT0iRGVidWd8
V2luMzIiDQpAQCAtMzg1MjgsNiArMzg1MzIsMTAgQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktp
dE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSURCU3VjY2Vz
c0V2ZW50LmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0
aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNJbWFnZUNvbnN0cnVjdG9yLmNwcCINCiAJCQkJCT4N
CiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KQEAgLTQxOTI4LDE1ICs0MTkzNiwxNSBAQAogCQkJ
CQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmlu
ZGluZ3NcanNcU2NyaXB0SW5zdGFuY2UuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGlu
Z3NcanNcU2NyaXB0R0NFdmVudC5jcHAiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZp
bGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcU2NyaXB0R0NFdmVudC5jcHAi
DQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdEdDRXZlbnQuaCINCiAJ
CQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxi
aW5kaW5nc1xqc1xTY3JpcHRHQ0V2ZW50LmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRp
bmdzXGpzXFNjcmlwdEluc3RhbmNlLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZp
bGUNCkBAIC00Mzk5MywyMiArNDQwMDEsMjIgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9G
aWx0ZXI+DQotICAgICAgICA8RmlsdGVyDQotICAgICAgICAgICAgTmFtZT0ic3RyaW5ncyINCi0g
ICAgICAgICAgICA+DQotICAgICAgICAgICAgPEZpbGUNCi0gICAgICAgICAgICAgICAgUmVsYXRp
dmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3Jl
XEF0b21pY1N0cmluZy5jcHAiDQotICAgICAgICAgICAgICAgID4NCi0gICAgICAgICAgICA8L0Zp
bGU+DQotICAgICAgICAgICAgPEZpbGUNCi0gICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlXFN0cmluZ0lt
cGwuY3BwIg0KLSAgICAgICAgICAgICAgICA+DQotICAgICAgICAgICAgPC9GaWxlPg0KLSAgICAg
ICAgICAgIDxGaWxlDQotICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZVxXVEZTdHJpbmcuY3BwIg0KLSAg
ICAgICAgICAgICAgICA+DQotICAgICAgICAgICAgPC9GaWxlPg0KLSAgICAgICAgPC9GaWx0ZXI+
DQorCQk8RmlsdGVyDQorCQkJTmFtZT0ic3RyaW5ncyINCisJCQk+DQorCQkJPEZpbGUNCisJCQkJ
UmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3Jp
cHRDb3JlXEF0b21pY1N0cmluZy5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxwcml2YXRlXEph
dmFTY3JpcHRDb3JlXFN0cmluZ0ltcGwuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVccHJpdmF0
ZVxKYXZhU2NyaXB0Q29yZVxXVEZTdHJpbmcuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJ
PC9GaWx0ZXI+DQogCQk8RmlsdGVyDQogCQkJTmFtZT0iYnJpZGdlIg0KIAkJCT4NCkBAIC00NDQw
OCw2ICs0NDQxNiwxMCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxoZWxwU2NyZWVuLmNzcyINCisJ
CQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxp
bnNwZWN0b3JcZnJvbnQtZW5kXEhlbHBTY3JlZW4uanMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4N
CkBAIC00NDQyOCwxMCArNDQ0NDAsNiBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZp
bGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxoZWxwU2NyZWVu
LmNzcyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXGluc3BlY3Rvci5jc3MiDQogCQkJCQk+DQogCQkJ
CTwvRmlsZT4NCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgJKHJldmlz
aW9uIDU5ODczKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaAkod29y
a2luZyBjb3B5KQpAQCAtNjMsNiArNjMsMTQgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QgeyByZXR1cm4gbV93aWR0aCA8PSAwIHx8IG1faGVpZ2h0IDw9IDA7IH0KIAorICAg
IGZsb2F0IGFzcGVjdFJhdGlvKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aCAvIG1faGVpZ2h0OyB9
CisKKyAgICB2b2lkIHNjYWxlKGZsb2F0IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV93aWR0aCA9
IG1fd2lkdGggKiBzY2FsZTsKKyAgICAgICAgbV9oZWlnaHQgPSBtX2hlaWdodCAqIHNjYWxlOwor
ICAgIH0KKwogICAgIEZsb2F0U2l6ZSBleHBhbmRlZFRvKGNvbnN0IEZsb2F0U2l6ZSYgb3RoZXIp
IGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gRmxvYXRTaXplKG1fd2lkdGggPiBvdGhlci5t
X3dpZHRoID8gbV93aWR0aCA6IG90aGVyLm1fd2lkdGgsCkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ludFNpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ludFNpemUuaAkocmV2aXNpb24gNTk4NzMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ludFNpemUuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsOCBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoIDw9IDAgfHwgbV9oZWln
aHQgPD0gMDsgfQogICAgIGJvb2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4gIW1fd2lkdGggJiYg
IW1faGVpZ2h0OyB9CisKKyAgICBmbG9hdCBhc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PGZsb2F0PihtX3dpZHRoKSAvIHN0YXRpY19jYXN0PGZsb2F0PihtX2hlaWdodCk7
IH0KICAgICAKICAgICB2b2lkIGV4cGFuZChpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgewpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVs
bHNjcmVlbldpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJNZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgiCisKKyNpbmNsdWRlICJXZWJDb3JlSW5z
dGFuY2VIYW5kbGUuaCIKKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dDb2xvci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3coTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNj
cmVlbkNsaWVudCogY2xpZW50KQorICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9od25k
KDApCit7CisgICAgbV9sYXllclJlbmRlcmVyID0gV0tDQUNGTGF5ZXJSZW5kZXJlcjo6Y3JlYXRl
KCk7Cit9CisKK01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6On5NZWRpYVBsYXll
clByaXZhdGVGdWxsc2NyZWVuV2luZG93KCkKK3sKKyAgICBtX2NsaWVudCA9IDA7Cit9CisKK3Zv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6Y3JlYXRlV2luZG93KCkKK3sK
KyAgICBzdGF0aWMgQVRPTSB3aW5kb3dBdG9tID0gMDsKKyAgICBpZiAoIXdpbmRvd0F0b20pIHsK
KyAgICAgICAgV05EQ0xBU1NFWCB3Y2V4ID0gezB9OworICAgICAgICB3Y2V4LmNiU2l6ZSAgICAg
ICAgID0gc2l6ZW9mKFdORENMQVNTRVgpOworICAgICAgICB3Y2V4LnN0eWxlICAgICAgICAgID0g
Q1NfSFJFRFJBVyB8IENTX1ZSRURSQVcgfCBDU19PV05EQzsKKyAgICAgICAgd2NleC5scGZuV25k
UHJvYyAgICA9ICZzdGF0aWNXbmRQcm9jOworICAgICAgICB3Y2V4LmhJbnN0YW5jZSAgICAgID0g
V2ViQ29yZTo6aW5zdGFuY2VIYW5kbGUoKTsKKyAgICAgICAgd2NleC5scHN6Q2xhc3NOYW1lICA9
IEwiTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvd0NsYXNzIjsKKyAgICAgICAgd2lu
ZG93QXRvbSA9IDo6UmVnaXN0ZXJDbGFzc0V4KCZ3Y2V4KTsKKyAgICB9CisKKyAgICBpZiAobV9o
d25kKQorICAgICAgICBjbG9zZSgpOworCisgICAgTU9OSVRPUklORk8gbWkgPSB7MH07CisgICAg
bWkuY2JTaXplID0gc2l6ZW9mKE1PTklUT1JJTkZPKTsKKyAgICBHZXRNb25pdG9ySW5mbyhNb25p
dG9yRnJvbVdpbmRvdygwLCBNT05JVE9SX0RFRkFVTFRUT1BSSU1BUlkpLCAmbWkpOworICAgIElu
dFJlY3QgbW9uaXRvclJlY3QgPSBtaS5yY01vbml0b3I7CisKKyAgICBDUkVBVEVTVFJVQ1RXIGNz
ID0gezB9OworICAgIGNzLnggPSAwOworICAgIGNzLnkgPSAwOworICAgIGNzLmN4ID0gbW9uaXRv
clJlY3Qud2lkdGgoKTsKKyAgICBjcy5jeSA9IG1vbml0b3JSZWN0LmhlaWdodCgpOworICAgIGNz
LnN0eWxlID0gV1NfUE9QVVAgfCBXU19WSVNJQkxFOworICAgIGNzLmR3RXhTdHlsZSA9IDA7Cisg
ICAgY3MubHBzekNsYXNzID0gTCJNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93Q2xh
c3MiOworICAgIGNzLmxwc3pOYW1lID0gTCIiOworICAgIGNzLmxwQ3JlYXRlUGFyYW1zID0gKExQ
Vk9JRCl0aGlzOworICAgIAorICAgIG1faHduZCA9IDo6Q3JlYXRlV2luZG93RXhXKGNzLmR3RXhT
dHlsZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3MubHBzekNsYXNzLCAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcy5scHN6TmFtZSwgCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3Muc3R5bGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzLngsIAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzLnksIAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNzLmN4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcy5jeSwgCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3MuaHduZFBhcmVudCwgCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3MuaE1lbnUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzLmhJ
bnN0YW5jZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3MubHBDcmVhdGVQYXJhbXMp
OworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OmNsb3NlKCkK
K3sKKyAgICA6OkRlc3Ryb3lXaW5kb3cobV9od25kKTsKKyAgICBtX2h3bmQgPSAwOworfQorCitI
V05EIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6Omh3bmQoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2h3bmQ7Cit9CisKK1dLQ0FDRkxheWVyUmVuZGVyZXIqIE1lZGlhUGxheWVy
UHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OmxheWVyUmVuZGVyZXIoKQoreworICAgIHJldHVybiBt
X2xheWVyUmVuZGVyZXIuZ2V0KCk7Cit9CisKK1dLQ0FDRkxheWVyKiBNZWRpYVBsYXllclByaXZh
dGVGdWxsc2NyZWVuV2luZG93Ojpyb290Q2hpbGRMYXllcigpCit7CisgICAgcmV0dXJuIG1fcm9v
dENoaWxkLmdldCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5k
b3c6OnNldFJvb3RDaGlsZExheWVyKFBhc3NSZWZQdHI8V0tDQUNGTGF5ZXI+IHJvb3RDaGlsZCkK
K3sKKyAgICBpZiAobV9yb290Q2hpbGQgIT0gcm9vdENoaWxkKSB7CisKKyAgICAgICAgaWYgKG1f
cm9vdENoaWxkKSB7CisgICAgICAgICAgICBtX3Jvb3RDaGlsZC0+cmVtb3ZlRnJvbVN1cGVybGF5
ZXIoKTsKKyAgICAgICAgICAgIG1fcm9vdENoaWxkLmNsZWFyKCk7CisgICAgICAgIH0KKworICAg
ICAgICBtX3Jvb3RDaGlsZCA9IHJvb3RDaGlsZDsKKyAgICB9CisKKyAgICBpZiAobV9yb290Q2hp
bGQpIHsKKyAgICAgICAgbV9sYXllclJlbmRlcmVyLT5zZXRSb290Q2hpbGRMYXllcihtX3Jvb3RD
aGlsZC5nZXQoKSk7CisgICAgICAgIFdLQ0FDRkxheWVyKiByb290TGF5ZXIgPSBtX3Jvb3RDaGls
ZC0+cm9vdExheWVyKCk7CisgICAgICAgIENHUmVjdCByb290Qm91bmRzID0gbV9yb290Q2hpbGQt
PnJvb3RMYXllcigpLT5ib3VuZHMoKTsKKyAgICAgICAgbV9yb290Q2hpbGQtPnNldEZyYW1lKHJv
b3RCb3VuZHMpOworICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNldFNjcm9sbEZyYW1lKEludFBv
aW50KHJvb3RCb3VuZHMub3JpZ2luKSwgSW50U2l6ZShyb290Qm91bmRzLnNpemUpKTsKKyAgICAg
ICAgbV9yb290Q2hpbGQtPnNldEJhY2tncm91bmRDb2xvcihDR0NvbG9yR2V0Q29uc3RhbnRDb2xv
cihrQ0dDb2xvckJsYWNrKSk7CisgICAgICAgIHJvb3RMYXllci0+c2V0QmFja2dyb3VuZENvbG9y
KENHQ29sb3JHZXRDb25zdGFudENvbG9yKGtDR0NvbG9yQmxhY2spKTsKKyAgICB9Cit9CisKK0xS
RVNVTFQgQ0FMTEJBQ0sgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6c3RhdGlj
V25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQ
YXJhbSkKK3sKKyAgICBMT05HX1BUUiBsb25nUHRyID0gR2V0V2luZG93TG9uZ1B0cihoV25kLCBH
V0xQX1VTRVJEQVRBKTsKKworICAgIGlmICghbG9uZ1B0ciAmJiBtZXNzYWdlID09IFdNX0NSRUFU
RSkgeworICAgICAgICBMUENSRUFURVNUUlVDVCBscGNzID0gcmVpbnRlcnByZXRfY2FzdDxMUENS
RUFURVNUUlVDVD4obFBhcmFtKTsKKyAgICAgICAgbG9uZ1B0ciA9IChMT05HX1BUUilscGNzLT5s
cENyZWF0ZVBhcmFtczsKKyAgICAgICAgOjpTZXRXaW5kb3dMb25nUHRyKGhXbmQsIEdXTFBfVVNF
UkRBVEEsIGxvbmdQdHIpOworICAgIH0KKworICAgIGlmIChNZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93KiB3aW5kb3cgPSByZWludGVycHJldF9jYXN0PE1lZGlhUGxheWVyUHJpdmF0
ZUZ1bGxzY3JlZW5XaW5kb3cqPihsb25nUHRyKSkKKyAgICAgICAgcmV0dXJuIHdpbmRvdy0+d25k
UHJvYyhoV25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7CisKKyAgICByZXR1cm4gOjpEZWZX
aW5kb3dQcm9jKGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsgICAgCit9CisKK0xSRVNV
TFQgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6d25kUHJvYyhIV05EIGhXbmQs
IFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKK3sKKyAgICBMUkVT
VUxUIGxSZXN1bHQgPSAwOworICAgIGNhc2UgV01fQ1JFQVRFOgorICAgICAgICBtX2h3bmQgPSBo
V25kOworICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNldEhvc3RXaW5kb3cobV9od25kKTsKKyAg
ICAgICAgbV9sYXllclJlbmRlcmVyLT5jcmVhdGVSZW5kZXJlcigpOworICAgICAgICBtX2xheWVy
UmVuZGVyZXItPnNldE5lZWRzRGlzcGxheSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdN
X0RFU1RST1k6CisgICAgICAgIG1faHduZCA9IDA7CisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+
ZGVzdHJveVJlbmRlcmVyKCk7CisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0SG9zdFdpbmRv
dygwKTsKKyAgICBjYXNlIFdNX1dJTkRPV1BPU0NIQU5HRUQ6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIExQV0lORE9XUE9TIHdwID0gKExQV0lORE9XUE9TKWxQYXJhbTsKKyAgICAgICAgICAgIGlm
ICghKHdwLT5mbGFncyAmIFNXUF9OT01PVkUpKSB7CisgICAgICAgICAgICAgICAgbV9sYXllclJl
bmRlcmVyLT5yZXNpemUoKTsKKyAgICAgICAgICAgICAgICBXS0NBQ0ZMYXllciogcm9vdExheWVy
ID0gbV9yb290Q2hpbGQtPnJvb3RMYXllcigpOworICAgICAgICAgICAgICAgIENHUmVjdCByb290
Qm91bmRzID0gbV9yb290Q2hpbGQtPnJvb3RMYXllcigpLT5ib3VuZHMoKTsKKyAgICAgICAgICAg
ICAgICBtX3Jvb3RDaGlsZC0+c2V0RnJhbWUocm9vdEJvdW5kcyk7CisgICAgICAgICAgICAgICAg
bV9yb290Q2hpbGQtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgICAgICAgICAgICAgbV9sYXllclJl
bmRlcmVyLT5zZXRTY3JvbGxGcmFtZShJbnRQb2ludChyb290Qm91bmRzLm9yaWdpbiksIEludFNp
emUocm9vdEJvdW5kcy5zaXplKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBXTV9QQUlOVDoKKyAgICAgICAgbV9sYXllclJlbmRlcmVyLT5yZW5k
ZXJTb29uKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChtX2NsaWVudCkKKyAg
ICAgICAgbFJlc3VsdCA9IG1fY2xpZW50LT5mdWxsc2NyZWVuQ2xpZW50V25kUHJvYyhoV25kLCBt
ZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7CisKKyAgICByZXR1cm4gbFJlc3VsdDsKK30KKworfQpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVs
bHNjcmVlbldpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3Jl
ZW5XaW5kb3cuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvd19o
CisjZGVmaW5lIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3dfaAorCisjaW5jbHVk
ZSAiV0tDQUNGTGF5ZXIuaCIKKyNpbmNsdWRlICJXS0NBQ0ZMYXllclJlbmRlcmVyLmgiCisjaW5j
bHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50IHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIExSRVNVTFQgZnVsbHNjcmVlbkNsaWVudFduZFByb2MoSFdORCwg
VUlOVCBtZXNzYWdlLCBXUEFSQU0sIExQQVJBTSkgPSAwOworfTsKKworY2xhc3MgTWVkaWFQbGF5
ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdyB7CitwdWJsaWM6CisgICAgTWVkaWFQbGF5ZXJQcml2
YXRlRnVsbHNjcmVlbldpbmRvdyhNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50Kik7
CisgICAgdmlydHVhbCB+TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdygpOworCisg
ICAgdm9pZCBjcmVhdGVXaW5kb3coKTsKKyAgICB2b2lkIGNsb3NlKCk7CisgICAgCisgICAgSFdO
RCBod25kKCkgY29uc3Q7CisKKyAgICBXS0NBQ0ZMYXllclJlbmRlcmVyKiBsYXllclJlbmRlcmVy
KCk7CisKKyAgICBXS0NBQ0ZMYXllciogcm9vdENoaWxkTGF5ZXIoKTsKKyAgICB2b2lkIHNldFJv
b3RDaGlsZExheWVyKFBhc3NSZWZQdHI8V0tDQUNGTGF5ZXI+KTsKKworcHJvdGVjdGVkOgorICAg
IHN0YXRpYyBMUkVTVUxUIENBTExCQUNLIHN0YXRpY1duZFByb2MoSFdORCwgVUlOVCBtZXNzYWdl
LCBXUEFSQU0sIExQQVJBTSk7CisgICAgTFJFU1VMVCB3bmRQcm9jKEhXTkQsIFVJTlQgbWVzc2Fn
ZSwgV1BBUkFNLCBMUEFSQU0pOworCisgICAgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNs
aWVudCogbV9jbGllbnQ7CisgICAgT3duUHRyPFdLQ0FDRkxheWVyUmVuZGVyZXI+IG1fbGF5ZXJS
ZW5kZXJlcjsKKyAgICBSZWZQdHI8V0tDQUNGTGF5ZXI+IG1fcm9vdENoaWxkOworICAgIEhXTkQg
bV9od25kOworfTsKKworfQorCisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuY3BwCShyZXZpc2lvbiA1OTg3MykKKysrIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENv
bnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjUsNyArNzY1LDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDbwogCiAgICAgICAgICAgICAgICAgYnVmZmVyLnVu
bG9ja0Jhc2VBZGRyZXNzKCk7CiAgICAgICAgICAgICAgICAgbGF5ZXItPnJvb3RMYXllcigpLT5z
ZXROZWVkc1JlbmRlcigpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KICAgICB9
IGVsc2UKICNlbmRpZgogICAgICAgICBtX3BsYXllci0+cmVwYWludCgpOwpAQCAtOTM5LDYgKzkz
OSwxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvCiAjZW5kaWYK
ICAgICAvLyBUaGUgbGF5ZXIgd2lsbCBnZXQgaG9va2VkIHVwIHZpYSBSZW5kZXJMYXllckJhY2tp
bmc6OnVwZGF0ZUdyYXBoaWNzTGF5ZXJDb25maWd1cmF0aW9uKCkuCiAjZW5kaWYKKworICAgIC8v
IGZpbGwgdGhlIG5ld2x5IGNyZWF0ZWQgbGF5ZXIgd2l0aCBpbWFnZSBkYXRhCisgICAgaWYgKG1f
dmlzdWFsQ29udGV4dCkKKyAgICAgICAgcmV0cmlldmVDdXJyZW50SW1hZ2UoKTsKIH0KIAogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpkZXN0cm95TGF5ZXJG
b3JNb3ZpZSgpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXll
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNG
TGF5ZXIuY3BwCShyZXZpc2lvbiA1OTg3MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1dLQ0FDRkxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDYgKzE1NCw3IEBAIFBh
c3NSZWZQdHI8V0tDQUNGTGF5ZXI+IFdLQ0FDRkxheWVyOjpjcmUKIAogV0tDQUNGTGF5ZXI6OldL
Q0FDRkxheWVyKExheWVyVHlwZSB0eXBlKQogICAgIDogbV9sYXllcihBZG9wdENGLCBDQUNGTGF5
ZXJDcmVhdGUodG9DQUNGTGF5ZXJUeXBlKHR5cGUpKSkKKyAgICAsIG1fbGF5b3V0Q2xpZW50KDAp
CiAgICAgLCBtX25lZWRzRGlzcGxheU9uQm91bmRzQ2hhbmdlKGZhbHNlKQogewogICAgIENBQ0ZM
YXllclNldFVzZXJEYXRhKGxheWVyKCksIHRoaXMpOwpAQCAtMjY3LDExICsyNjgsMTAgQEAgdm9p
ZCBXS0NBQ0ZMYXllcjo6cmVwbGFjZVN1YmxheWVyKFdLQ0FDRgogdm9pZCBXS0NBQ0ZMYXllcjo6
cmVtb3ZlRnJvbVN1cGVybGF5ZXIoKQogewogICAgIFdLQ0FDRkxheWVyKiBzdXBlcmxheWVyID0g
dGhpcy0+c3VwZXJsYXllcigpOwotICAgIGlmICghc3VwZXJsYXllcikKLSAgICAgICAgcmV0dXJu
OwotCiAgICAgQ0FDRkxheWVyUmVtb3ZlRnJvbVN1cGVybGF5ZXIobGF5ZXIoKSk7Ci0gICAgc3Vw
ZXJsYXllci0+c2V0TmVlZHNDb21taXQoKTsKKworICAgIGlmIChzdXBlcmxheWVyKQorICAgICAg
ICBzdXBlcmxheWVyLT5zZXROZWVkc0NvbW1pdCgpOwogfQogCiBjb25zdCBXS0NBQ0ZMYXllciog
V0tDQUNGTGF5ZXI6OnN1YmxheWVyQXRJbmRleChpbnQgaW5kZXgpIGNvbnN0CkBAIC00MTUsNiAr
NDE1LDMyIEBAIHZvaWQgV0tDQUNGTGF5ZXI6OnNldE5lZWRzRGlzcGxheSgpCiAgICAgc2V0TmVl
ZHNEaXNwbGF5KDApOwogfQogCit2b2lkIFdLQ0FDRkxheWVyOjpzZXRMYXlvdXRDbGllbnQoV0tD
QUNGTGF5ZXJMYXlvdXRDbGllbnQqIGxheW91dENsaWVudCkKK3sKKyAgICBpZiAobGF5b3V0Q2xp
ZW50ID09IG1fbGF5b3V0Q2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xheW91dENs
aWVudCA9IGxheW91dENsaWVudDsKKyAgICBDQUNGTGF5ZXJTZXRMYXlvdXRDYWxsYmFjayhsYXll
cigpLCBtX2xheW91dENsaWVudCA/ICZsYXlvdXRTdWJsYXllcnNQcm9jIDogMCk7ICAgIAorfQor
Cit2b2lkIFdLQ0FDRkxheWVyOjpsYXlvdXRTdWJsYXllcnNQcm9jKENBQ0ZMYXllclJlZiBjYUxh
eWVyKSAKK3sKKyAgICBXS0NBQ0ZMYXllciogbGF5ZXIgPSBXS0NBQ0ZMYXllcjo6bGF5ZXIoY2FM
YXllcik7CisgICAgaWYgKGxheWVyICYmIGxheWVyLT5tX2xheW91dENsaWVudCkKKyAgICAgICAg
bGF5ZXItPm1fbGF5b3V0Q2xpZW50LT5sYXlvdXRTdWJsYXllcnNPZkxheWVyKGxheWVyKTsKK30K
KworV0tDQUNGTGF5ZXJMYXlvdXRDbGllbnQqIFdLQ0FDRkxheWVyOjpsYXlvdXRDbGllbnQoKSBj
b25zdAoreworICAgIHJldHVybiBtX2xheW91dENsaWVudDsKK30KKwordm9pZCBXS0NBQ0ZMYXll
cjo6c2V0TmVlZHNMYXlvdXQoKQoreworICAgIENBQ0ZMYXllclNldE5lZWRzTGF5b3V0KGxheWVy
KCkpOworfQorCiAjaWZuZGVmIE5ERUJVRwogc3RhdGljIHZvaWQgcHJpbnRJbmRlbnQoaW50IGlu
ZGVudCkKIHsKQEAgLTQ5Nyw5ICs1MjMsOSBAQCB2b2lkIFdLQ0FDRkxheWVyOjpwcmludExheWVy
KGludCBpbmRlbnQpCiAgICAgQ0dJbWFnZVJlZiBsYXllckNvbnRlbnRzID0gY29udGVudHMoKTsK
ICAgICBpZiAobGF5ZXJDb250ZW50cykgewogICAgICAgICBwcmludEluZGVudChpbmRlbnQgKyAx
KTsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIoY29udGVudHMgKGltYWdlIFslZCAlZF0pKVxu
IiwKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiKGNvbnRlbnRzIChpbWFnZSBbJWQgJWRd
KSlcbiIsCiAgICAgICAgICAgICBDR0ltYWdlR2V0V2lkdGgobGF5ZXJDb250ZW50cyksIENHSW1h
Z2VHZXRIZWlnaHQobGF5ZXJDb250ZW50cykpOwotICAgIH0KKyAgICAgICAgfQogCiAgICAgLy8g
UHJpbnQgc3VibGF5ZXJzIGlmIG5lZWRlZAogICAgIGludCBuID0gbnVtU3VibGF5ZXJzKCk7Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyLmgJKHJldmlz
aW9uIDU5ODczKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNGTGF5ZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNDQsOSArNDQsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBXS0NBQ0ZMYXllcjsKIGNsYXNzIFdLQ0FDRkFuaW1hdGlvbjsKIGNsYXNzIFdL
Q0FDRlRpbWluZ0Z1bmN0aW9uOwogCitjbGFzcyBXS0NBQ0ZMYXllckxheW91dENsaWVudCB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB2b2lkIGxheW91dFN1YmxheWVyc09mTGF5ZXIoV0tDQUNGTGF5
ZXIqKSA9IDA7Cit9OworCiBjbGFzcyBXS0NBQ0ZMYXllciA6IHB1YmxpYyBSZWZDb3VudGVkPFdL
Q0FDRkxheWVyPiB7CiBwdWJsaWM6CiAgICAgZW51bSBMYXllclR5cGUgeyBMYXllciwgVHJhbnNm
b3JtTGF5ZXIgfTsKQEAgLTY0LDYgKzcwLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2V0TmVlZHNEaXNwbGF5KGNvbnN0IENHUmVjdCogZGlydHlSZWN0KTsKICAgICB2b2lkIHNldE5l
ZWRzRGlzcGxheSgpOwogCisgICAgdmlydHVhbCB2b2lkIHNldExheW91dENsaWVudChXS0NBQ0ZM
YXllckxheW91dENsaWVudCopOworICAgIHZpcnR1YWwgV0tDQUNGTGF5ZXJMYXlvdXRDbGllbnQq
IGxheW91dENsaWVudCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0xheW91dCgp
OworCiAgICAgLy8gTWFrZXMgdGhpcyBsYXllciB0aGUgcm9vdCB3aGVuIHRoZSBwYXNzZWQgY29u
dGV4dCBpcyByZW5kZXJlZAogICAgIHZvaWQgYmVjb21lUm9vdExheWVyRm9yQ29udGV4dChDQUNG
Q29udGV4dFJlZik7CiAKQEAgLTI1Myw3ICsyNjMsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBy
aW50TGF5ZXIoaW50IGluZGVudCkgY29uc3Q7CiAjZW5kaWYKIAorICAgIHN0YXRpYyB2b2lkIGxh
eW91dFN1YmxheWVyc1Byb2MoQ0FDRkxheWVyUmVmKTsKKwogICAgIFJldGFpblB0cjxDQUNGTGF5
ZXJSZWY+IG1fbGF5ZXI7CisgICAgV0tDQUNGTGF5ZXJMYXlvdXRDbGllbnQqIG1fbGF5b3V0Q2xp
ZW50OwogICAgIGJvb2wgbV9uZWVkc0Rpc3BsYXlPbkJvdW5kc0NoYW5nZTsKIH07CiAKSW5kZXg6
IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDAyNykKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMDUtMjIgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
ZnVsbCBzY3JlZW4gZG9lc24ndCB3b3JrIGZvciB2aWRlbyBlbGVtZW50cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk1NTcKKyAgICAgICAgcmRhcjov
L3Byb2JsZW0vODAxMTgxMworICAgICAgICAKKyAgICAgICAgTW9kaWZpZWQgRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlciB0byB3b3JrIHdpdGggTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldp
bmRvdy4gIFRoZSBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyCisgICAgICAgIGlzIG5vdyBNZWRp
YVBsYXllclByaXZhdGUgYWdub3N0aWMuCisKKyAgICAgICAgKiBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyLmNwcDoKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheW91dENs
aWVudDo6TGF5b3V0Q2xpZW50KTogIAorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
cjo6TGF5b3V0Q2xpZW50OjpsYXlvdXRTdWJsYXllcnNPZkxheWVyKToKKyAgICAgICAgKEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXI6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpOgorICAgICAg
ICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6fkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIp
OgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVuKToK
KyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmV4aXRGdWxsc2NyZWVuKToKKyAg
ICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmNyZWF0ZUhVRFdpbmRvdyk6CisgICAg
ICAgICogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oOgorCiAyMDEwLTA1LTIxICBTdGV2ZSBC
bG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBKZXJl
bXkgT3Jsb3cuCkluZGV4OiBXZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAJ
KHJldmlzaW9uIDU5ODczKQorKysgV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
Rm9udFNlbGVjdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1RleHRSdW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dLQ0FDRkxheWVy
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFj
ZS5oPgogI2luY2x1ZGUgPHdpbmRvd3N4Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgpAQCAtMTY5LDkgKzE3MCw1NCBAQCB2b2lkIEhVRFNsaWRlcjo6ZHJhZyhjb25zdCBJbnRQb2lu
dCYgcG9pCiAgICAgbV9idXR0b25Qb3NpdGlvbiA9IG1heCgwLCBtaW4obV9yZWN0LndpZHRoKCkg
LSBtX2J1dHRvblNpemUsIHBvaW50LngoKSAtIG1fZHJhZ1N0YXJ0T2Zmc2V0KSk7CiB9CiAKK2Ns
YXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheW91dENsaWVudCA6IHB1YmxpYyBXZWJD
b3JlOjpXS0NBQ0ZMYXllckxheW91dENsaWVudCB7CitwdWJsaWM6CisgICAgTGF5b3V0Q2xpZW50
KEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIHBhcmVudCkKKyAgICAgICAgOiBtX3BhcmVudChw
YXJlbnQpCisgICAgeworICAgIH0KKworICAgIHZvaWQgbGF5b3V0U3VibGF5ZXJzT2ZMYXllcihX
S0NBQ0ZMYXllciogbGF5ZXIpIAorICAgIHsKKyAgICAgICAgaWYgKGxheWVyICE9IG1fcGFyZW50
LT5tX3Jvb3RDaGlsZCkgCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gbV9wYXJlbnQtPm1fbWVkaWFFbGVtZW50
LmdldCgpOworICAgICAgICBpZiAoIW1lZGlhRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBXS0NBQ0ZMYXllciogdmlkZW9MYXllciA9IG1lZGlhRWxlbWVudC0+cGxhdGZv
cm1MYXllcigpOworICAgICAgICBpZiAoIXZpZGVvTGF5ZXIgfHwgdmlkZW9MYXllci0+c3VwZXJs
YXllcigpICE9IGxheWVyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIEZsb2F0UG9p
bnQgdmlkZW9BbmNob3IgPSB2aWRlb0xheWVyLT5hbmNob3JQb2ludCgpOworICAgICAgICBGbG9h
dFJlY3QgbGF5ZXJCb3VuZHMgPSBsYXllci0+Ym91bmRzKCk7CisgICAgICAgIEZsb2F0UmVjdCB2
aWRlb0JvdW5kcyA9IHZpZGVvTGF5ZXItPmJvdW5kcygpOworICAgICAgICBGbG9hdFBvaW50IGxh
eWVyQ2VudGVyID0gbGF5ZXJCb3VuZHMuY2VudGVyKCk7CisKKyAgICAgICAgRmxvYXRTaXplIG5h
dHVyYWxTaXplID0gbWVkaWFFbGVtZW50LT5wbGF5ZXIoKS0+bmF0dXJhbFNpemUoKTsKKyAgICAg
ICAgZmxvYXQgc2NhbGVGYWN0b3IgPSAwOworICAgICAgICBpZiAobmF0dXJhbFNpemUuYXNwZWN0
UmF0aW8oKSA+IGxheWVyQm91bmRzLnNpemUoKS5hc3BlY3RSYXRpbygpKQorICAgICAgICAgICAg
c2NhbGVGYWN0b3IgPSBsYXllckJvdW5kcy53aWR0aCgpIC8gbmF0dXJhbFNpemUud2lkdGgoKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2NhbGVGYWN0b3IgPSBsYXllckJvdW5kcy5oZWln
aHQoKSAvIG5hdHVyYWxTaXplLmhlaWdodCgpOworICAgICAgICBuYXR1cmFsU2l6ZS5zY2FsZShz
Y2FsZUZhY3Rvcik7CisgICAgICAgIHZpZGVvQm91bmRzLnNldFNpemUobmF0dXJhbFNpemUpOwor
CisgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgY2VudGVyZWQgcG9zaXRpb24gYmFzZWQgb24gdGhl
IHZpZGVvQW5jaG9yLCB2aWRlb0JvdW5kcywgYW5kIGxheWVyQm91bmRzOgorICAgICAgICBGbG9h
dFBvaW50IHZpZGVvUG9zaXRpb247CisgICAgICAgIHZpZGVvUG9zaXRpb24uc2V0WChsYXllckNl
bnRlci54KCkgLSAoMC41IC0gdmlkZW9BbmNob3IueCgpKSAqIHZpZGVvQm91bmRzLndpZHRoKCkp
OworICAgICAgICB2aWRlb1Bvc2l0aW9uLnNldFkobGF5ZXJDZW50ZXIueSgpIC0gKDAuNSAtIHZp
ZGVvQW5jaG9yLnkoKSkgKiB2aWRlb0JvdW5kcy5oZWlnaHQoKSk7CisgICAgICAgIHZpZGVvTGF5
ZXItPnNldFBvc2l0aW9uKHZpZGVvUG9zaXRpb24pOworCisgICAgICAgIHZpZGVvTGF5ZXItPnNl
dEJvdW5kcyhGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBuYXR1cmFsU2l6ZSkpOworICAgIH0KKwor
ICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIG1fcGFyZW50OworfTsKKwogRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlcjo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcigpCiAgICAgOiBtX2h1
ZFdpbmRvdygwKQotICAgICwgbV92aWRlb1dpbmRvdygwKQogICAgICwgbV9wbGF5UGF1c2VCdXR0
b24oSFVEQnV0dG9uOjpQbGF5UGF1c2VCdXR0b24sIEludFBvaW50KCh3aW5kb3dXaWR0aCAtIGJ1
dHRvblNpemUpIC8gMiwgbWFyZ2luVG9wKSkKICAgICAsIG1fdGltZVNsaWRlckJ1dHRvbihIVURC
dXR0b246OlRpbWVTbGlkZXJCdXR0b24sIEludFBvaW50KDAsIDApKQogICAgICwgbV92b2x1bWVV
cEJ1dHRvbihIVURCdXR0b246OlZvbHVtZVVwQnV0dG9uLCBJbnRQb2ludChtYXJnaW4gKyBidXR0
b25NaW5pU2l6ZSArIHZvbHVtZVNsaWRlcldpZHRoICsgYnV0dG9uTWluaVNpemUgLyAyLCBtYXJn
aW5Ub3AgKyAoYnV0dG9uU2l6ZSAtIGJ1dHRvbk1pbmlTaXplKSAvIDIpKQpAQCAtMTgzLDI1ICsy
MjksMjAgQEAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6RnVsbHNjcmVlblZpZAogICAgICwg
bV9oaXRXaWRnZXQoMCkKICAgICAsIG1fbW92aW5nV2luZG93KGZhbHNlKQogICAgICwgbV90aW1l
cih0aGlzLCAmRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dGltZXJGaXJlZCkKKyAgICAsIG1f
cm9vdENoaWxkKFdlYkNvcmU6OldLQ0FDRkxheWVyOjpjcmVhdGUoV2ViQ29yZTo6V0tDQUNGTGF5
ZXI6OkxheWVyKSkKKyAgICAsIG1fbGF5b3V0Q2xpZW50KG5ldyBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyOjpMYXlvdXRDbGllbnQodGhpcykpCiB7CisgICAgbV9yb290Q2hpbGQtPnNldExheW91
dENsaWVudChtX2xheW91dENsaWVudC5nZXQoKSk7CiB9CiAKIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXI6On5GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCkKIHsKLSAgICBpZiAobW92aWUoKSkK
LSAgICAgICAgbW92aWUoKS0+ZXhpdEZ1bGxzY3JlZW4oKTsKLX0KLQotUVRNb3ZpZUdXb3JsZCog
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6bW92aWUoKSBjb25zdAotewotICAgIGlmICghbV9t
ZWRpYUVsZW1lbnQpCi0gICAgICAgIHJldHVybiAwOworICAgIG1fcm9vdENoaWxkLT5zZXRMYXlv
dXRDbGllbnQoMCk7CiAKLSAgICBQbGF0Zm9ybU1lZGlhIHBsYXRmb3JtTWVkaWEgPSBtX21lZGlh
RWxlbWVudC0+cGxhdGZvcm1NZWRpYSgpOwotICAgIGlmIChwbGF0Zm9ybU1lZGlhLnR5cGUgIT0g
UGxhdGZvcm1NZWRpYTo6UVRNb3ZpZUdXb3JsZFR5cGUpCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgcmV0dXJuIHBsYXRmb3JtTWVkaWEubWVkaWEucXRNb3ZpZUdXb3JsZDsKKyAgICBpZiAobV9m
dWxsc2NyZWVuV2luZG93KSB7CisgICAgICAgIG1fZnVsbHNjcmVlbldpbmRvdy0+Y2xvc2UoKTsK
KyAgICAgICAgbV9mdWxsc2NyZWVuV2luZG93ID0gMDsKKyAgICB9CiB9CiAKIHZvaWQgRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcjo6c2V0TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1l
ZGlhRWxlbWVudCkKQEAgLTIxOCwxMyArMjU5LDE4IEBAIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcjo6c2V0TWVkaWEKIAogdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjplbnRl
ckZ1bGxzY3JlZW4oKQogewotICAgIGlmICghbW92aWUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV92aWRlb1dpbmRvdyA9IG1vdmllKCktPmVudGVyRnVsbHNjcmVlbih0aGlzKTsKKyAgICBp
ZiAoIW1fZnVsbHNjcmVlbldpbmRvdykgeworICAgICAgICBtX2Z1bGxzY3JlZW5XaW5kb3cgPSBu
ZXcgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdyh0aGlzKTsKKyAgICAgICAgbV9m
dWxsc2NyZWVuV2luZG93LT5jcmVhdGVXaW5kb3coKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuV2lu
ZG93LT5zZXRSb290Q2hpbGRMYXllcihtX3Jvb3RDaGlsZCk7CisgICAgfQogCisgICAgV2ViQ29y
ZTo6V0tDQUNGTGF5ZXIqIHZpZGVvTGF5ZXIgPSBtX21lZGlhRWxlbWVudC0+cGxheWVyKCktPnBs
YXRmb3JtTGF5ZXIoKTsKKyAgICBtX3Jvb3RDaGlsZC0+YWRkU3VibGF5ZXIodmlkZW9MYXllcik7
CisgICAgbV9yb290Q2hpbGQtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgCiAgICAgUkVDVCB3aW5k
b3dSZWN0OwotICAgIEdldENsaWVudFJlY3QobV92aWRlb1dpbmRvdywgJndpbmRvd1JlY3QpOwor
ICAgIEdldENsaWVudFJlY3QobV9mdWxsc2NyZWVuV2luZG93LT5od25kKCksICZ3aW5kb3dSZWN0
KTsKICAgICBtX2Z1bGxzY3JlZW5TaXplLnNldFdpZHRoKHdpbmRvd1JlY3QucmlnaHQgLSB3aW5k
b3dSZWN0LmxlZnQpOwogICAgIG1fZnVsbHNjcmVlblNpemUuc2V0SGVpZ2h0KHdpbmRvd1JlY3Qu
Ym90dG9tIC0gd2luZG93UmVjdC50b3ApOwogCkBAIC0yMzMsMTMgKzI3OSwyMyBAQCB2b2lkIEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVudGVyRnVsCiAKIHZvaWQgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6ZXhpdEZ1bGxzY3JlZW4oKQogewotICAgIFNldFdpbmRvd0xvbmdQdHIobV9o
dWRXaW5kb3csIDAsIDApOwotICAgIGlmIChtb3ZpZSgpKQotICAgICAgICBtb3ZpZSgpLT5leGl0
RnVsbHNjcmVlbigpOwotCi0gICAgQVNTRVJUKCFJc1dpbmRvdyhtX2h1ZFdpbmRvdykpOwotICAg
IG1fdmlkZW9XaW5kb3cgPSAwOwotICAgIG1faHVkV2luZG93ID0gMDsKKyAgICBpZiAobV9mdWxs
c2NyZWVuV2luZG93KSB7CisgICAgICAgIG1fZnVsbHNjcmVlbldpbmRvdy0+Y2xvc2UoKTsKKyAg
ICAgICAgbV9mdWxsc2NyZWVuV2luZG93LT5zZXRSb290Q2hpbGRMYXllcigwKTsKKyAgICAgICAg
bV9mdWxsc2NyZWVuV2luZG93ID0gMDsKKyAgICB9CisKKyAgICBpZiAobV9odWRXaW5kb3cpIHsK
KyAgICAgICAgU2V0V2luZG93TG9uZ1B0cihtX2h1ZFdpbmRvdywgMCwgMCk7CisgICAgICAgIDo6
RGVzdHJveVdpbmRvdyhtX2h1ZFdpbmRvdyk7CisgICAgICAgIG1faHVkV2luZG93ID0gMDsKKyAg
ICB9CisKKyAgICAvLyBBcyBhIHNpZGUgZWZmZWN0IG9mIHNldHRpbmcgdGhlIHBsYXllciB0byBp
bnZpc2libGUvdmlzaWJsZSwKKyAgICAvLyB0aGUgcGxheWVyJ3MgbGF5ZXIgd2lsbCBiZSByZWNy
ZWF0ZWQsIGFuZCB3aWxsIGJlIHBpY2tlZCB1cCAKKyAgICAvLyB0aGUgbmV4dCB0aW1lIHRoZSBs
YXllciB0cmVlIGlzIHN5bmNoZWQuCisgICAgbV9tZWRpYUVsZW1lbnQtPnBsYXllcigpLT5zZXRW
aXNpYmxlKDApOworICAgIG1fbWVkaWFFbGVtZW50LT5wbGF5ZXIoKS0+c2V0VmlzaWJsZSgxKTsK
IH0KIAogYm9vbCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjYW5QbGF5KCkgY29uc3QKQEAg
LTMxNiw2ICszNzIsOSBAQCBMUkVTVUxUIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmZ1bGxz
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV01fTEJVVFRPTlVQOgogICAgICAgICBvbk1vdXNl
VXAoSW50UG9pbnQoR0VUX1hfTFBBUkFNKGxQYXJhbSksIEdFVF9ZX0xQQVJBTShsUGFyYW0pKSk7
CisgICAgY2FzZSBXTV9BQ1RJVkFURUFQUDoKKyAgICAgICAgaWYgKCF3UGFyYW0pCisgICAgICAg
ICAgICBtX21lZGlhRWxlbWVudC0+ZXhpdEZ1bGxzY3JlZW4oKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCkBAIC0zNjQsNyArNDIzLDcgQEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
OjpjcmVhdGVIVQogICAgIAogICAgIC8vIERpcnR5IHRoZSB3aW5kb3cgc28gdGhlIEhVRCBkcmF3
cwogICAgIFJFQ1QgY2xlYXJSZWN0ID0geyBtX2h1ZFBvc2l0aW9uLngoKSwgbV9odWRQb3NpdGlv
bi55KCksIG1faHVkUG9zaXRpb24ueCgpICsgd2luZG93V2lkdGgsIG1faHVkUG9zaXRpb24ueSgp
ICsgd2luZG93SGVpZ2h0IH07Ci0gICAgSW52YWxpZGF0ZVJlY3QobV92aWRlb1dpbmRvdywgJmNs
ZWFyUmVjdCwgdHJ1ZSk7CisgICAgSW52YWxpZGF0ZVJlY3QobV9mdWxsc2NyZWVuV2luZG93LT5o
d25kKCksICZjbGVhclJlY3QsIHRydWUpOwogCiAgICAgbV9wbGF5UGF1c2VCdXR0b24uc2V0U2hv
d0FsdEJ1dHRvbighY2FuUGxheSgpKTsKICAgICBtX3ZvbHVtZVNsaWRlci5zZXRWYWx1ZSh2b2x1
bWUoKSk7CkBAIC0zNzcsNyArNDM2LDcgQEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
OjpjcmVhdGVIVQogCiAgICAgbV9odWRXaW5kb3cgPSBDcmVhdGVXaW5kb3dFeChXU19FWF9MQVlF
UkVEIHwgV1NfRVhfVFJBTlNQQVJFTlQgfCBXU19FWF9UT09MV0lORE9XLCAKICAgICAgICAgZnVs
bHNjcmVlblZpZGVlb0hVRFdpbmRvd0NsYXNzTmFtZSwgMCwgV1NfUE9QVVAgfCBXU19WSVNJQkxF
LAotICAgICAgICBtX2h1ZFBvc2l0aW9uLngoKSwgbV9odWRQb3NpdGlvbi55KCksIDAsIDAsIG1f
dmlkZW9XaW5kb3csIDAsIGdJbnN0YW5jZSwgMCk7CisgICAgICAgIG1faHVkUG9zaXRpb24ueCgp
LCBtX2h1ZFBvc2l0aW9uLnkoKSwgMCwgMCwgbV9mdWxsc2NyZWVuV2luZG93LT5od25kKCksIDAs
IGdJbnN0YW5jZSwgMCk7CiAgICAgQVNTRVJUKDo6SXNXaW5kb3cobV9odWRXaW5kb3cpKTsKICAg
ICBTZXRXaW5kb3dMb25nUHRyKG1faHVkV2luZG93LCAwLCByZWludGVycHJldF9jYXN0PExPTkdf
UFRSPih0aGlzKSk7CiAKSW5kZXg6IFdlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5o
CShyZXZpc2lvbiA1OTg3MykKKysrIFdlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoVklERU8p
CiAKLSNpbmNsdWRlICJRVE1vdmllR1dvcmxkLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2
YXRlRnVsbHNjcmVlbldpbmRvdy5oIgogCiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTWVkaWFFbGVt
ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZS5oPgpAQCAtMzgsNiArMzgsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBXS0NBQ0ZM
YXllcjsKIH0KIAogY2xhc3MgSFVEV2lkZ2V0IHsKQEAgLTk5LDcgKzEwMCw3IEBAIHByaXZhdGU6
CiAgICAgaW50IG1fZHJhZ1N0YXJ0T2Zmc2V0OwogfTsKIAotY2xhc3MgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlciA6IFFUTW92aWVHV29ybGRGdWxsc2NyZWVuQ2xpZW50LCBwdWJsaWMgTm9uY29w
eWFibGUgeworY2xhc3MgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciA6IFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5DbGllbnQsIHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJs
aWM6CiAgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcigpOwogICAgIHZpcnR1YWwgfkZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXIoKTsKQEAgLTExMSwxMiArMTEyLDExIEBAIHB1YmxpYzoKICAg
ICB2b2lkIGV4aXRGdWxsc2NyZWVuKCk7CiAKIHByaXZhdGU6Ci0gICAgLy8gUVRNb3ZpZUdXb3Js
ZEZ1bGxzY3JlZW5DbGllbnQKKyAgICAvLyBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2lu
ZG93Q2xpZW50CiAgICAgdmlydHVhbCBMUkVTVUxUIGZ1bGxzY3JlZW5DbGllbnRXbmRQcm9jKEhX
TkQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNLCBMUEFSQU0pOwogCiAgICAgdm9pZCBlbnN1cmVXaW5k
b3coKTsKLSAgICBRVE1vdmllR1dvcmxkKiBtb3ZpZSgpIGNvbnN0OwotCisgICAgCiAgICAgYm9v
bCBjYW5QbGF5KCkgY29uc3Q7CiAgICAgdm9pZCBwbGF5KCk7CiAgICAgdm9pZCBwYXVzZSgpOwpA
QCAtMTQ4LDEwICsxNDgsMTYgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50PiBtX21lZGlhRWxlbWVudDsKIAotICAgIEhXTkQgbV9odWRXaW5kb3csIG1f
dmlkZW9XaW5kb3c7CisgICAgSFdORCBtX2h1ZFdpbmRvdzsKICAgICBPd25QdHI8SEJJVE1BUD4g
bV9iaXRtYXA7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2Z1bGxzY3JlZW5TaXplOwogICAgIFdl
YkNvcmU6OkludFBvaW50IG1faHVkUG9zaXRpb247CisgICAgT3duUHRyPFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c+IG1fZnVsbHNjcmVlbldpbmRvdzsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6V0tDQUNGTGF5ZXI+IG1fcm9vdENoaWxkOworCisgICAgY2xhc3MgTGF5
b3V0Q2xpZW50OworICAgIGZyaWVuZCBjbGFzcyBMYXlvdXRDbGllbnQ7CisgICAgT3duUHRyPExh
eW91dENsaWVudD4gbV9sYXlvdXRDbGllbnQ7CiAKICAgICBIVURCdXR0b24gbV9wbGF5UGF1c2VC
dXR0b247CiAgICAgSFVEQnV0dG9uIG1fdGltZVNsaWRlckJ1dHRvbjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56811</attachid>
            <date>2010-05-22 23:51:48 -0700</date>
            <delta_ts>2010-05-23 12:49:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39557-20100522235150.patch</filename>
            <type>text/plain</type>
            <size>46072</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDAyNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTAtMDUtMjIgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZnVs
bCBzY3JlZW4gZG9lc24ndCB3b3JrIGZvciB2aWRlbyBlbGVtZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk1NTcKKyAgICAgICAgcmRhcjovL3By
b2JsZW0vODAxMTgxMworICAgICAgICAKKyAgICAgICAgQWRkIGZ1bGxzY3JlZW4gc3VwcG9ydCBm
b3IgTWVkaWFQbGF5ZXJQcml2YXRlVmlzdWFsQ29udGV4dC4gIEEgbmV3IGNsYXNzLCBNZWRpYVBs
YXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LAorICAgICAgICBwcm92aWRlcyB0aGUgZnVsbHNj
cmVlbiBod25kIGFuZCBsYXllciByZW5kZXJlci4gIEFueSBXS0NBQ0ZMYXllciBjYW4gYmUgcHJv
dmlkZWQgdG8gTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdworICAgICAgICBzbyBm
dXR1cmUgYWRkaXRpb25hbCBNZWRpYVBsYXllclByaXZhdGUgaW1wbGVtZW50YXRpb25zIGNhbiB1
c2UgdGhlIGZ1bGxzY3JlZW4gd2luZG93LgorICAgICAgICAKKyAgICAgICAgTWlub3IgYWRkaXRp
b25zIGhhdmUgYmVlbiBtYWRlIHRvIHRoZSBGbG9hdFNpemUgYW5kIEludFNpemUgY2xhc3Nlcy4K
KworICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oOiBBZGRlZCBhc3BlY3RSYXRpbygpLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaDogQWRkZWQgYXNwZWN0UmF0aW8oKSBhbmQg
c2NhbGUoZmxvYXQpLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVGdWxsc2NyZWVuV2luZG93LmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNr
VGltZVZpc3VhbENvbnRleHQuY3BwOiBDYWxsIHJldHJpZXZlQ3VycmVudEltYWdlKCkgYWZ0ZXIg
Y3JlYXRpbmcgdGhlIHZpZGVvTGF5ZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1dLQ0FDRkxheWVyLmNwcDogCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FD
RkxheWVyLmg6IEFkZCBsYXlvdXQgY2xpZW50IGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6V0tD
QUNGTGF5ZXI6OmZyYW1lKTogQWRkZWQgYmFjayBmcmFtZSgpL3NldEZyYW1lKCkuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dlYlRpbGVkTGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViVGlsZWRMYXllcjo6c2V0RnJhbWUpOiBJbXBsYW1lbnRlZCBzZXRGcmFtZSgpIGlu
IHN1YmNsYXNzIG9mIFdLQ0FDRkxheWVyCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1dlYlRpbGVkTGF5ZXIuaDoKKworCiAyMDEwLTA1LTIyICBNYWNpZWogU3RhY2hvd2lhayAgPG1q
c0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dlLgpJbmRleDogV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA2MDAyNykKKysrIFdlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTIzNzkx
LDYgKzIzNzkxLDE0IEBACiAJCQkJCQk+DQogCQkJCQk8L0ZpbGU+DQogCQkJCQk8RmlsZQ0KKwkJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXE1lZGlhUGxheWVyUHJp
dmF0ZUZ1bGxzY3JlZW5XaW5kb3cuY3BwIg0KKwkJCQkJCT4NCisJCQkJCTwvRmlsZT4NCisJCQkJ
CTxGaWxlDQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cTWVk
aWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oIg0KKwkJCQkJCT4NCisJCQkJCTwvRmls
ZT4NCisJCQkJCTxGaWxlDQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1x3aW5cTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHAiDQogCQkJ
CQkJPg0KIAkJCQkJPC9GaWxlPg0KQEAgLTM4MTIwLDcgKzM4MTI4LDcgQEAKIAkJCQkJPg0KIAkJ
CQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0
RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJEYXRhYmFzZS5jcHAi
DQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTSURCQW55Q3VzdG9tLmNwcCIN
CiAJCQkJCT4NCiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJCU5hbWU9IkRlYnVnfFdp
bjMyIg0KQEAgLTM4MTcyLDExICszODE4MCw3IEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRP
dXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQkRhdGFiYXNl
LmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0
aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xK
U0lEQkRhdGFiYXNlRXJyb3IuY3BwIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1
dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSURCRGF0YWJhc2UuY3Bw
Ig0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQkJTmFtZT0iRGVidWd8
V2luMzIiDQpAQCAtMzgyMjgsMTEgKzM4MjMyLDExIEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJL
aXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQkRhdGFi
YXNlRXJyb3IuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQkRhdGFiYXNlLmgiDQogCQkJCQk+DQog
CQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRw
dXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQkRhdGFiYXNlRXhj
ZXB0aW9uLmNwcCINCisJCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQkRhdGFiYXNlRXJyb3IuY3BwIg0KIAkJ
CQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQkJTmFtZT0iRGVidWd8V2luMzIi
DQpAQCAtMzgyODQsMTEgKzM4Mjg4LDExIEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQog
CQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRw
dXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQkRhdGFiYXNlRXhj
ZXB0aW9uLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJEYXRhYmFzZUVycm9yLmgiDQogCQkJCQk+
DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRP
dXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQkRhdGFiYXNl
UmVxdWVzdC5jcHAiDQorCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJEYXRhYmFzZUV4Y2VwdGlvbi5jcHAi
DQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCQlOYW1lPSJEZWJ1Z3xX
aW4zMiINCkBAIC0zODM0MCwxMSArMzgzNDQsMTEgQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktp
dE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSURCRGF0YWJh
c2VSZXF1ZXN0LmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIg0K
IAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9IiQo
V2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJF
cnJvckV2ZW50LmNwcCINCisJCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9i
alwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQkRhdGFiYXNlUmVxdWVzdC5jcHAi
DQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCQlOYW1lPSJEZWJ1Z3xX
aW4zMiINCkBAIC0zODM5NiwxMSArMzg0MDAsMTEgQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktp
dE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSURCRXJyb3JF
dmVudC5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSURCRGF0YWJhc2VSZXF1ZXN0LmgiDQogCQkJCQk+
DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRP
dXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQkV2ZW50LmNw
cCINCisJCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQkVycm9yRXZlbnQuY3BwIg0KIAkJCQkJPg0KIAkJCQkJ
PEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQpAQCAtMzg0NTIs
MTEgKzM4NDU2LDExIEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCTwvRmlsZT4N
CiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQkV2ZW50LmgiDQorCQkJCQlSZWxhdGl2
ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJj
ZXNcSlNJREJFcnJvckV2ZW50LmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUN
Ci0JCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xKU0lEQlJlcXVlc3QuY3BwIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIk
KFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSURC
RXZlbnQuY3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQkJTmFt
ZT0iRGVidWd8V2luMzIiDQpAQCAtMzg1MDgsMTEgKzM4NTEyLDExIEBACiAJCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0
aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xK
U0lEQlJlcXVlc3QuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9i
alwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQkV2ZW50LmgiDQogCQkJCQk+DQog
CQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRw
dXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQlN1Y2Nlc3NFdmVu
dC5jcHAiDQorCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJSZXF1ZXN0LmNwcCINCiAJCQkJCT4NCiAJCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KQEAgLTM4NTY0
LDExICszODU2OCwxMSBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQk8L0ZpbGU+
DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJTdWNjZXNzRXZlbnQuaCINCisJCQkJ
CVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xKU0lEQlJlcXVlc3QuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8
RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0lEQkFueUN1c3RvbS5j
cHAiDQorCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJTdWNjZXNzRXZlbnQuY3BwIg0KIAkJCQkJPg0KIAkJ
CQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQpAQCAtMzg2
MjAsNiArMzg2MjQsMTAgQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJPC9GaWxl
Pg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2Jq
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSURCU3VjY2Vzc0V2ZW50LmgiDQorCQkJ
CQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmlu
ZGluZ3NcanNcSlNJbWFnZUNvbnN0cnVjdG9yLmNwcCINCiAJCQkJCT4NCiAJCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbg0KQEAgLTQyMDIwLDE1ICs0MjAyOCwxNSBAQAogCQkJCQk+DQogCQkJCTwvRmls
ZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcU2NyaXB0
SW5zdGFuY2UuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcU2NyaXB0R0NF
dmVudC5jcHAiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0
aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcU2NyaXB0R0NFdmVudC5jcHAiDQorCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdEdDRXZlbnQuaCINCiAJCQkJCT4NCiAJCQkJPC9G
aWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xTY3Jp
cHRHQ0V2ZW50LmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdElu
c3RhbmNlLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCkBAIC00NDA4NSwy
MiArNDQwOTMsMjIgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQotICAgICAg
ICA8RmlsdGVyDQotICAgICAgICAgICAgTmFtZT0ic3RyaW5ncyINCi0gICAgICAgICAgICA+DQot
ICAgICAgICAgICAgPEZpbGUNCi0gICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIkKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlXEF0b21pY1N0cmluZy5j
cHAiDQotICAgICAgICAgICAgICAgID4NCi0gICAgICAgICAgICA8L0ZpbGU+DQotICAgICAgICAg
ICAgPEZpbGUNCi0gICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlXFN0cmluZ0ltcGwuY3BwIg0KLSAgICAg
ICAgICAgICAgICA+DQotICAgICAgICAgICAgPC9GaWxlPg0KLSAgICAgICAgICAgIDxGaWxlDQot
ICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
cHJpdmF0ZVxKYXZhU2NyaXB0Q29yZVxXVEZTdHJpbmcuY3BwIg0KLSAgICAgICAgICAgICAgICA+
DQotICAgICAgICAgICAgPC9GaWxlPg0KLSAgICAgICAgPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQor
CQkJTmFtZT0ic3RyaW5ncyINCisJCQk+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlXEF0b21pY1N0
cmluZy5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQ
YXRoPSIkKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlXFN0
cmluZ0ltcGwuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29y
ZVxXVEZTdHJpbmcuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJPC9GaWx0ZXI+DQogCQk8
RmlsdGVyDQogCQkJTmFtZT0iYnJpZGdlIg0KIAkJCT4NCkBAIC00NDUwMCw2ICs0NDUwOCwxMCBA
QAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0i
Li5caW5zcGVjdG9yXGZyb250LWVuZFxoZWxwU2NyZWVuLmNzcyINCisJCQkJCT4NCisJCQkJPC9G
aWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQt
ZW5kXEhlbHBTY3JlZW4uanMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCkBAIC00NDUyMCwxMCAr
NDQ1MzIsNiBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0
aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxoZWxwU2NyZWVuLmNzcyINCi0JCQkJCT4N
Ci0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0
b3JcZnJvbnQtZW5kXGluc3BlY3Rvci5jc3MiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgJKHJldmlzaW9uIDYwMDI3KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaAkod29ya2luZyBjb3B5KQpAQCAt
NjMsNiArNjMsMTQgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gbV93aWR0aCA8PSAwIHx8IG1faGVpZ2h0IDw9IDA7IH0KIAorICAgIGZsb2F0IGFzcGVjdFJh
dGlvKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aCAvIG1faGVpZ2h0OyB9CisKKyAgICB2b2lkIHNj
YWxlKGZsb2F0IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV93aWR0aCA9IG1fd2lkdGggKiBzY2Fs
ZTsKKyAgICAgICAgbV9oZWlnaHQgPSBtX2hlaWdodCAqIHNjYWxlOworICAgIH0KKwogICAgIEZs
b2F0U2l6ZSBleHBhbmRlZFRvKGNvbnN0IEZsb2F0U2l6ZSYgb3RoZXIpIGNvbnN0CiAgICAgewog
ICAgICAgICByZXR1cm4gRmxvYXRTaXplKG1fd2lkdGggPiBvdGhlci5tX3dpZHRoID8gbV93aWR0
aCA6IG90aGVyLm1fd2lkdGgsCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNp
emUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAko
cmV2aXNpb24gNjAwMjcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAko
d29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRW1w
dHkoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoIDw9IDAgfHwgbV9oZWlnaHQgPD0gMDsgfQogICAg
IGJvb2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4gIW1fd2lkdGggJiYgIW1faGVpZ2h0OyB9CisK
KyAgICBmbG9hdCBhc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0
PihtX3dpZHRoKSAvIHN0YXRpY19jYXN0PGZsb2F0PihtX2hlaWdodCk7IH0KICAgICAKICAgICB2
b2lkIGV4cGFuZChpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgewpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5
ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVG
dWxsc2NyZWVuV2luZG93LmgiCisKKyNpbmNsdWRlICJXZWJDb3JlSW5zdGFuY2VIYW5kbGUuaCIK
KyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dDb2xvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6Ok1lZGlhUGxheWVyUHJpdmF0
ZUZ1bGxzY3JlZW5XaW5kb3coTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCogY2xp
ZW50KQorICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9od25kKDApCit7CisgICAgbV9s
YXllclJlbmRlcmVyID0gV0tDQUNGTGF5ZXJSZW5kZXJlcjo6Y3JlYXRlKDApOworfQorCitNZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93Ojp+TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNj
cmVlbldpbmRvdygpCit7CisgICAgbV9jbGllbnQgPSAwOworfQorCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OmNyZWF0ZVdpbmRvdygpCit7CisgICAgc3RhdGljIEFU
T00gd2luZG93QXRvbSA9IDA7CisgICAgaWYgKCF3aW5kb3dBdG9tKSB7CisgICAgICAgIFdORENM
QVNTRVggd2NleCA9IHswfTsKKyAgICAgICAgd2NleC5jYlNpemUgICAgICAgICA9IHNpemVvZihX
TkRDTEFTU0VYKTsKKyAgICAgICAgd2NleC5zdHlsZSAgICAgICAgICA9IENTX0hSRURSQVcgfCBD
U19WUkVEUkFXIHwgQ1NfT1dOREM7CisgICAgICAgIHdjZXgubHBmblduZFByb2MgICAgPSAmc3Rh
dGljV25kUHJvYzsKKyAgICAgICAgd2NleC5oSW5zdGFuY2UgICAgICA9IFdlYkNvcmU6Omluc3Rh
bmNlSGFuZGxlKCk7CisgICAgICAgIHdjZXgubHBzekNsYXNzTmFtZSAgPSBMIk1lZGlhUGxheWVy
UHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3dDbGFzcyI7CisgICAgICAgIHdpbmRvd0F0b20gPSA6OlJl
Z2lzdGVyQ2xhc3NFeCgmd2NleCk7CisgICAgfQorCisgICAgaWYgKG1faHduZCkKKyAgICAgICAg
Y2xvc2UoKTsKKworICAgIE1PTklUT1JJTkZPIG1pID0gezB9OworICAgIG1pLmNiU2l6ZSA9IHNp
emVvZihNT05JVE9SSU5GTyk7CisgICAgR2V0TW9uaXRvckluZm8oTW9uaXRvckZyb21XaW5kb3co
MCwgTU9OSVRPUl9ERUZBVUxUVE9QUklNQVJZKSwgJm1pKTsKKyAgICBJbnRSZWN0IG1vbml0b3JS
ZWN0ID0gbWkucmNNb25pdG9yOworCisgICAgQ1JFQVRFU1RSVUNUVyBjcyA9IHswfTsKKyAgICBj
cy54ID0gMDsKKyAgICBjcy55ID0gMDsKKyAgICBjcy5jeCA9IG1vbml0b3JSZWN0LndpZHRoKCk7
CisgICAgY3MuY3kgPSBtb25pdG9yUmVjdC5oZWlnaHQoKTsKKyAgICBjcy5zdHlsZSA9IFdTX1BP
UFVQIHwgV1NfVklTSUJMRTsKKyAgICBjcy5kd0V4U3R5bGUgPSAwOworICAgIGNzLmxwc3pDbGFz
cyA9IEwiTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvd0NsYXNzIjsKKyAgICBjcy5s
cHN6TmFtZSA9IEwiIjsKKyAgICBjcy5scENyZWF0ZVBhcmFtcyA9IChMUFZPSUQpdGhpczsKKyAg
ICAKKyAgICBtX2h3bmQgPSA6OkNyZWF0ZVdpbmRvd0V4Vyhjcy5kd0V4U3R5bGUsIAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNzLmxwc3pDbGFzcywgCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3MubHBzek5hbWUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzLnN0
eWxlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcy54LCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjcy55LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcy5jeCwg
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3MuY3ksIAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNzLmh3bmRQYXJlbnQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNz
LmhNZW51LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcy5oSW5zdGFuY2UsIAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNzLmxwQ3JlYXRlUGFyYW1zKTsKK30KKwordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93OjpjbG9zZSgpCit7CisgICAgOjpEZXN0
cm95V2luZG93KG1faHduZCk7CisgICAgbV9od25kID0gMDsKK30KKworSFdORCBNZWRpYVBsYXll
clByaXZhdGVGdWxsc2NyZWVuV2luZG93Ojpod25kKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9o
d25kOworfQorCitXS0NBQ0ZMYXllclJlbmRlcmVyKiBNZWRpYVBsYXllclByaXZhdGVGdWxsc2Ny
ZWVuV2luZG93OjpsYXllclJlbmRlcmVyKCkKK3sKKyAgICByZXR1cm4gbV9sYXllclJlbmRlcmVy
LmdldCgpOworfQorCitXS0NBQ0ZMYXllciogTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldp
bmRvdzo6cm9vdENoaWxkTGF5ZXIoKQoreworICAgIHJldHVybiBtX3Jvb3RDaGlsZC5nZXQoKTsK
K30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93OjpzZXRSb290Q2hp
bGRMYXllcihQYXNzUmVmUHRyPFdLQ0FDRkxheWVyPiByb290Q2hpbGQpCit7CisgICAgaWYgKG1f
cm9vdENoaWxkICE9IHJvb3RDaGlsZCkgeworCisgICAgICAgIGlmIChtX3Jvb3RDaGlsZCkgewor
ICAgICAgICAgICAgbV9yb290Q2hpbGQtPnJlbW92ZUZyb21TdXBlcmxheWVyKCk7CisgICAgICAg
ICAgICBtX3Jvb3RDaGlsZC5jbGVhcigpOworICAgICAgICB9CisKKyAgICAgICAgbV9yb290Q2hp
bGQgPSByb290Q2hpbGQ7CisgICAgfQorCisgICAgaWYgKG1fcm9vdENoaWxkKSB7CisgICAgICAg
IG1fbGF5ZXJSZW5kZXJlci0+c2V0Um9vdENoaWxkTGF5ZXIobV9yb290Q2hpbGQuZ2V0KCkpOwor
ICAgICAgICBXS0NBQ0ZMYXllciogcm9vdExheWVyID0gbV9yb290Q2hpbGQtPnJvb3RMYXllcigp
OworICAgICAgICBDR1JlY3Qgcm9vdEJvdW5kcyA9IG1fcm9vdENoaWxkLT5yb290TGF5ZXIoKS0+
Ym91bmRzKCk7CisgICAgICAgIG1fcm9vdENoaWxkLT5zZXRGcmFtZShyb290Qm91bmRzKTsKKyAg
ICAgICAgbV9sYXllclJlbmRlcmVyLT5zZXRTY3JvbGxGcmFtZShJbnRQb2ludChyb290Qm91bmRz
Lm9yaWdpbiksIEludFNpemUocm9vdEJvdW5kcy5zaXplKSk7CisgICAgICAgIG1fcm9vdENoaWxk
LT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ0dDb2xvckdldENvbnN0YW50Q29sb3Ioa0NHQ29sb3JCbGFj
aykpOworICAgICAgICByb290TGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihDR0NvbG9yR2V0Q29u
c3RhbnRDb2xvcihrQ0dDb2xvckJsYWNrKSk7CisgICAgfQorfQorCitMUkVTVUxUIENBTExCQUNL
IE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OnN0YXRpY1duZFByb2MoSFdORCBo
V25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCit7CisgICAg
TE9OR19QVFIgbG9uZ1B0ciA9IEdldFdpbmRvd0xvbmdQdHIoaFduZCwgR1dMUF9VU0VSREFUQSk7
CisKKyAgICBpZiAoIWxvbmdQdHIgJiYgbWVzc2FnZSA9PSBXTV9DUkVBVEUpIHsKKyAgICAgICAg
TFBDUkVBVEVTVFJVQ1QgbHBjcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8TFBDUkVBVEVTVFJVQ1Q+KGxQ
YXJhbSk7CisgICAgICAgIGxvbmdQdHIgPSAoTE9OR19QVFIpbHBjcy0+bHBDcmVhdGVQYXJhbXM7
CisgICAgICAgIDo6U2V0V2luZG93TG9uZ1B0cihoV25kLCBHV0xQX1VTRVJEQVRBLCBsb25nUHRy
KTsKKyAgICB9CisKKyAgICBpZiAoTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdyog
d2luZG93ID0gcmVpbnRlcnByZXRfY2FzdDxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2lu
ZG93Kj4obG9uZ1B0cikpCisgICAgICAgIHJldHVybiB3aW5kb3ctPnduZFByb2MoaFduZCwgbWVz
c2FnZSwgd1BhcmFtLCBsUGFyYW0pOworCisgICAgcmV0dXJuIDo6RGVmV2luZG93UHJvYyhoV25k
LCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7ICAgIAorfQorCitMUkVTVUxUIE1lZGlhUGxheWVy
UHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OnduZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2Us
IFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCit7CisgICAgTFJFU1VMVCBsUmVzdWx0ID0g
MDsKKyAgICBzd2l0Y2ggKG1lc3NhZ2UpIHsKKyAgICBjYXNlIFdNX0NSRUFURToKKyAgICAgICAg
bV9od25kID0gaFduZDsKKyAgICAgICAgbV9sYXllclJlbmRlcmVyLT5zZXRIb3N0V2luZG93KG1f
aHduZCk7CisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+Y3JlYXRlUmVuZGVyZXIoKTsKKyAgICAg
ICAgbV9sYXllclJlbmRlcmVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBXTV9ERVNUUk9ZOgorICAgICAgICBtX2h3bmQgPSAwOworICAgICAgICBtX2xheWVy
UmVuZGVyZXItPmRlc3Ryb3lSZW5kZXJlcigpOworICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNl
dEhvc3RXaW5kb3coMCk7CisgICAgY2FzZSBXTV9XSU5ET1dQT1NDSEFOR0VEOgorICAgICAgICB7
CisgICAgICAgICAgICBMUFdJTkRPV1BPUyB3cCA9IChMUFdJTkRPV1BPUylsUGFyYW07CisgICAg
ICAgICAgICBpZiAoISh3cC0+ZmxhZ3MgJiBTV1BfTk9NT1ZFKSkgeworICAgICAgICAgICAgICAg
IG1fbGF5ZXJSZW5kZXJlci0+cmVzaXplKCk7CisgICAgICAgICAgICAgICAgV0tDQUNGTGF5ZXIq
IHJvb3RMYXllciA9IG1fcm9vdENoaWxkLT5yb290TGF5ZXIoKTsKKyAgICAgICAgICAgICAgICBD
R1JlY3Qgcm9vdEJvdW5kcyA9IG1fcm9vdENoaWxkLT5yb290TGF5ZXIoKS0+Ym91bmRzKCk7Cisg
ICAgICAgICAgICAgICAgbV9yb290Q2hpbGQtPnNldEZyYW1lKHJvb3RCb3VuZHMpOworICAgICAg
ICAgICAgICAgIG1fcm9vdENoaWxkLT5zZXROZWVkc0xheW91dCgpOworICAgICAgICAgICAgICAg
IG1fbGF5ZXJSZW5kZXJlci0+c2V0U2Nyb2xsRnJhbWUoSW50UG9pbnQocm9vdEJvdW5kcy5vcmln
aW4pLCBJbnRTaXplKHJvb3RCb3VuZHMuc2l6ZSkpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV01fUEFJTlQ6CisgICAgICAgIG1fbGF5ZXJSZW5k
ZXJlci0+cmVuZGVyU29vbigpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAobV9j
bGllbnQpCisgICAgICAgIGxSZXN1bHQgPSBtX2NsaWVudC0+ZnVsbHNjcmVlbkNsaWVudFduZFBy
b2MoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOworCisgICAgcmV0dXJuIGxSZXN1bHQ7
Cit9CisKK30KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVy
UHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgJKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZh
dGVGdWxsc2NyZWVuV2luZG93LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3Jl
ZW5XaW5kb3dfaAorI2RlZmluZSBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93X2gK
KworI2luY2x1ZGUgIldLQ0FDRkxheWVyLmgiCisjaW5jbHVkZSAiV0tDQUNGTGF5ZXJSZW5kZXJl
ci5oIgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNs
aWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCBMUkVTVUxUIGZ1bGxzY3JlZW5DbGllbnRXbmRQ
cm9jKEhXTkQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNLCBMUEFSQU0pID0gMDsKK307CisKK2NsYXNz
IE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cgeworcHVibGljOgorICAgIE1lZGlh
UGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3coTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVl
bkNsaWVudCopOworICAgIHZpcnR1YWwgfk1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5k
b3coKTsKKworICAgIHZvaWQgY3JlYXRlV2luZG93KCk7CisgICAgdm9pZCBjbG9zZSgpOworICAg
IAorICAgIEhXTkQgaHduZCgpIGNvbnN0OworCisgICAgV0tDQUNGTGF5ZXJSZW5kZXJlciogbGF5
ZXJSZW5kZXJlcigpOworCisgICAgV0tDQUNGTGF5ZXIqIHJvb3RDaGlsZExheWVyKCk7CisgICAg
dm9pZCBzZXRSb290Q2hpbGRMYXllcihQYXNzUmVmUHRyPFdLQ0FDRkxheWVyPik7CisKK3Byb3Rl
Y3RlZDoKKyAgICBzdGF0aWMgTFJFU1VMVCBDQUxMQkFDSyBzdGF0aWNXbmRQcm9jKEhXTkQsIFVJ
TlQgbWVzc2FnZSwgV1BBUkFNLCBMUEFSQU0pOworICAgIExSRVNVTFQgd25kUHJvYyhIV05ELCBV
SU5UIG1lc3NhZ2UsIFdQQVJBTSwgTFBBUkFNKTsKKworICAgIE1lZGlhUGxheWVyUHJpdmF0ZUZ1
bGxzY3JlZW5DbGllbnQqIG1fY2xpZW50OworICAgIE93blB0cjxXS0NBQ0ZMYXllclJlbmRlcmVy
PiBtX2xheWVyUmVuZGVyZXI7CisgICAgUmVmUHRyPFdLQ0FDRkxheWVyPiBtX3Jvb3RDaGlsZDsK
KyAgICBIV05EIG1faHduZDsKK307CisKK30KKworI2VuZGlmCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBs
YXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcAkocmV2aXNpb24gNjAwMjcpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1Rp
bWVWaXN1YWxDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw3IEBAIE1l
ZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQKIAogYm9vbCBNZWRpYVBsYXll
clByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25z
dAogewotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogUGxhdGZvcm1N
ZWRpYSBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpwbGF0Zm9ybU1l
ZGlhKCkgY29uc3QKQEAgLTc2NSw3ICs3NjUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF1
aWNrVGltZVZpc3VhbENvCiAKICAgICAgICAgICAgICAgICBidWZmZXIudW5sb2NrQmFzZUFkZHJl
c3MoKTsKICAgICAgICAgICAgICAgICBsYXllci0+cm9vdExheWVyKCktPnNldE5lZWRzUmVuZGVy
KCk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQogICAgIH0gZWxzZQogI2VuZGlm
CiAgICAgICAgIG1fcGxheWVyLT5yZXBhaW50KCk7CkBAIC05MzksNiArOTM5LDEwIEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ28KICNlbmRpZgogICAgIC8vIFRoZSBs
YXllciB3aWxsIGdldCBob29rZWQgdXAgdmlhIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR3Jh
cGhpY3NMYXllckNvbmZpZ3VyYXRpb24oKS4KICNlbmRpZgorCisgICAgLy8gZmlsbCB0aGUgbmV3
bHkgY3JlYXRlZCBsYXllciB3aXRoIGltYWdlIGRhdGEKKyAgICBpZiAobV92aXN1YWxDb250ZXh0
KQorICAgICAgICByZXRyaWV2ZUN1cnJlbnRJbWFnZSgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OmRlc3Ryb3lMYXllckZvck1vdmllKCkKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllci5jcHAJKHJl
dmlzaW9uIDYwMDI3KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNGTGF5
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsNiArMTU0LDcgQEAgUGFzc1JlZlB0cjxXS0NB
Q0ZMYXllcj4gV0tDQUNGTGF5ZXI6OmNyZQogCiBXS0NBQ0ZMYXllcjo6V0tDQUNGTGF5ZXIoTGF5
ZXJUeXBlIHR5cGUpCiAgICAgOiBtX2xheWVyKEFkb3B0Q0YsIENBQ0ZMYXllckNyZWF0ZSh0b0NB
Q0ZMYXllclR5cGUodHlwZSkpKQorICAgICwgbV9sYXlvdXRDbGllbnQoMCkKICAgICAsIG1fbmVl
ZHNEaXNwbGF5T25Cb3VuZHNDaGFuZ2UoZmFsc2UpCiB7CiAgICAgQ0FDRkxheWVyU2V0VXNlckRh
dGEobGF5ZXIoKSwgdGhpcyk7CkBAIC0yODYsMTEgKzI4NywxMCBAQCB2b2lkICBXS0NBQ0ZMYXll
cjo6YWRvcHRTdWJsYXllcnMoV0tDQUNGCiB2b2lkIFdLQ0FDRkxheWVyOjpyZW1vdmVGcm9tU3Vw
ZXJsYXllcigpCiB7CiAgICAgV0tDQUNGTGF5ZXIqIHN1cGVybGF5ZXIgPSB0aGlzLT5zdXBlcmxh
eWVyKCk7Ci0gICAgaWYgKCFzdXBlcmxheWVyKQotICAgICAgICByZXR1cm47Ci0KICAgICBDQUNG
TGF5ZXJSZW1vdmVGcm9tU3VwZXJsYXllcihsYXllcigpKTsKLSAgICBzdXBlcmxheWVyLT5zZXRO
ZWVkc0NvbW1pdCgpOworCisgICAgaWYgKHN1cGVybGF5ZXIpCisgICAgICAgIHN1cGVybGF5ZXIt
PnNldE5lZWRzQ29tbWl0KCk7CiB9CiAKIFdLQ0FDRkxheWVyKiBXS0NBQ0ZMYXllcjo6aW50ZXJu
YWxTdWJsYXllckF0SW5kZXgoaW50IGluZGV4KSBjb25zdApAQCAtMzQzLDYgKzM0MywxOSBAQCB2
b2lkIFdLQ0FDRkxheWVyOjpzZXRCb3VuZHMoY29uc3QgQ0dSZWN0CiAgICAgICAgIHNldE5lZWRz
RGlzcGxheSgpOwogfQogCit2b2lkIFdLQ0FDRkxheWVyOjpzZXRGcmFtZShjb25zdCBDR1JlY3Qm
IHJlY3QpCit7CisgICAgQ0dSZWN0IG9sZEZyYW1lID0gZnJhbWUoKTsKKyAgICBpZiAoQ0dSZWN0
RXF1YWxUb1JlY3QocmVjdCwgb2xkRnJhbWUpKQorICAgICAgICByZXR1cm47CisKKyAgICBDQUNG
TGF5ZXJTZXRGcmFtZShsYXllcigpLCByZWN0KTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworCisg
ICAgaWYgKG1fbmVlZHNEaXNwbGF5T25Cb3VuZHNDaGFuZ2UpCisgICAgICAgIHNldE5lZWRzRGlz
cGxheSgpOworfQorCiB2b2lkIFdLQ0FDRkxheWVyOjpzZXRDb250ZW50c0dyYXZpdHkoQ29udGVu
dHNHcmF2aXR5VHlwZSB0eXBlKQogewogICAgIENBQ0ZMYXllclNldENvbnRlbnRzR3Jhdml0eShs
YXllcigpLCB0b0NBQ0ZDb250ZW50c0dyYXZpdHlUeXBlKHR5cGUpKTsKQEAgLTQxOCw2ICs0MzEs
MzIgQEAgdm9pZCBXS0NBQ0ZMYXllcjo6aW50ZXJuYWxTZXROZWVkc0Rpc3BsYQogICAgIENBQ0ZM
YXllclNldE5lZWRzRGlzcGxheShsYXllcigpLCBkaXJ0eVJlY3QpOwogfQogCit2b2lkIFdLQ0FD
RkxheWVyOjpzZXRMYXlvdXRDbGllbnQoV0tDQUNGTGF5ZXJMYXlvdXRDbGllbnQqIGxheW91dENs
aWVudCkKK3sKKyAgICBpZiAobGF5b3V0Q2xpZW50ID09IG1fbGF5b3V0Q2xpZW50KQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2xheW91dENsaWVudCA9IGxheW91dENsaWVudDsKKyAgICBDQUNG
TGF5ZXJTZXRMYXlvdXRDYWxsYmFjayhsYXllcigpLCBtX2xheW91dENsaWVudCA/ICZsYXlvdXRT
dWJsYXllcnNQcm9jIDogMCk7ICAgIAorfQorCit2b2lkIFdLQ0FDRkxheWVyOjpsYXlvdXRTdWJs
YXllcnNQcm9jKENBQ0ZMYXllclJlZiBjYUxheWVyKSAKK3sKKyAgICBXS0NBQ0ZMYXllciogbGF5
ZXIgPSBXS0NBQ0ZMYXllcjo6bGF5ZXIoY2FMYXllcik7CisgICAgaWYgKGxheWVyICYmIGxheWVy
LT5tX2xheW91dENsaWVudCkKKyAgICAgICAgbGF5ZXItPm1fbGF5b3V0Q2xpZW50LT5sYXlvdXRT
dWJsYXllcnNPZkxheWVyKGxheWVyKTsKK30KKworV0tDQUNGTGF5ZXJMYXlvdXRDbGllbnQqIFdL
Q0FDRkxheWVyOjpsYXlvdXRDbGllbnQoKSBjb25zdAoreworICAgIHJldHVybiBtX2xheW91dENs
aWVudDsKK30KKwordm9pZCBXS0NBQ0ZMYXllcjo6c2V0TmVlZHNMYXlvdXQoKQoreworICAgIENB
Q0ZMYXllclNldE5lZWRzTGF5b3V0KGxheWVyKCkpOworfQorCiAjaWZuZGVmIE5ERUJVRwogc3Rh
dGljIHZvaWQgcHJpbnRJbmRlbnQoaW50IGluZGVudCkKIHsKQEAgLTUwMCw5ICs1MzksOSBAQCB2
b2lkIFdLQ0FDRkxheWVyOjpwcmludExheWVyKGludCBpbmRlbnQpCiAgICAgQ0dJbWFnZVJlZiBs
YXllckNvbnRlbnRzID0gY29udGVudHMoKTsKICAgICBpZiAobGF5ZXJDb250ZW50cykgewogICAg
ICAgICBwcmludEluZGVudChpbmRlbnQgKyAxKTsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIo
Y29udGVudHMgKGltYWdlIFslZCAlZF0pKVxuIiwKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJy
LCAiKGNvbnRlbnRzIChpbWFnZSBbJWQgJWRdKSlcbiIsCiAgICAgICAgICAgICBDR0ltYWdlR2V0
V2lkdGgobGF5ZXJDb250ZW50cyksIENHSW1hZ2VHZXRIZWlnaHQobGF5ZXJDb250ZW50cykpOwot
ICAgIH0KKyAgICAgICAgfQogCiAgICAgLy8gUHJpbnQgc3VibGF5ZXJzIGlmIG5lZWRlZAogICAg
IGludCBuID0gc3VibGF5ZXJDb3VudCgpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vV0tDQUNGTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9XS0NBQ0ZMYXllci5oCShyZXZpc2lvbiA2MDAyNykKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDkgKzQ0
LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgV0tDQUNGTGF5ZXI7CiBjbGFz
cyBXS0NBQ0ZBbmltYXRpb247CiBjbGFzcyBXS0NBQ0ZUaW1pbmdGdW5jdGlvbjsKIAorY2xhc3Mg
V0tDQUNGTGF5ZXJMYXlvdXRDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXRTdWJsYXllcnNPZkxheWVyKFdLQ0FDRkxheWVyKikgPSAwOworfTsKKwogY2xhc3MgV0tDQUNG
TGF5ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXS0NBQ0ZMYXllcj4gewogcHVibGljOgogICAgIGVu
dW0gTGF5ZXJUeXBlIHsgTGF5ZXIsIFRyYW5zZm9ybUxheWVyIH07CkBAIC02Myw2ICs2OSwxMCBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0luQ29udGV4dChQbGF0Zm9ybUdyYXBo
aWNzQ29udGV4dCopIHsgfQogCisgICAgdmlydHVhbCB2b2lkIHNldExheW91dENsaWVudChXS0NB
Q0ZMYXllckxheW91dENsaWVudCopOworICAgIHZpcnR1YWwgV0tDQUNGTGF5ZXJMYXlvdXRDbGll
bnQqIGxheW91dENsaWVudCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0xheW91
dCgpOworCiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoY29uc3QgQ0dSZWN0KiBkaXJ0eVJlY3Qg
PSAwKQogICAgIHsKICAgICAgICAgaW50ZXJuYWxTZXROZWVkc0Rpc3BsYXkoZGlydHlSZWN0KTsK
QEAgLTE3Myw2ICsxODMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGaWx0ZXJzKENGQXJyYXlS
ZWYgZmlsdGVycykgeyBDQUNGTGF5ZXJTZXRGaWx0ZXJzKGxheWVyKCksIGZpbHRlcnMpOyBzZXRO
ZWVkc0NvbW1pdCgpOyB9CiAgICAgQ0ZBcnJheVJlZiBmaWx0ZXJzKCkgY29uc3QgeyByZXR1cm4g
Q0FDRkxheWVyR2V0RmlsdGVycyhsYXllcigpKTsgfQogCisgICAgdm9pZCBzZXRGcmFtZShjb25z
dCBDR1JlY3QmKTsKKyAgICBDR1JlY3QgZnJhbWUoKSBjb25zdCB7IHJldHVybiBDQUNGTGF5ZXJH
ZXRGcmFtZShsYXllcigpKTsgfQorCiAgICAgdm9pZCBzZXRIaWRkZW4oYm9vbCBoaWRkZW4pIHsg
Q0FDRkxheWVyU2V0SGlkZGVuKGxheWVyKCksIGhpZGRlbik7IHNldE5lZWRzQ29tbWl0KCk7IH0K
ICAgICBib29sIGlzSGlkZGVuKCkgY29uc3QgeyByZXR1cm4gQ0FDRkxheWVySXNIaWRkZW4obGF5
ZXIoKSk7IH0KIApAQCAtMjYwLDggKzI3MywxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwcmlu
dExheWVyKGludCBpbmRlbnQpIGNvbnN0OwogI2VuZGlmCiAKKyAgICBzdGF0aWMgdm9pZCBsYXlv
dXRTdWJsYXllcnNQcm9jKENBQ0ZMYXllclJlZik7CisKIHByaXZhdGU6CiAgICAgUmV0YWluUHRy
PENBQ0ZMYXllclJlZj4gbV9sYXllcjsKKyAgICBXS0NBQ0ZMYXllckxheW91dENsaWVudCogbV9s
YXlvdXRDbGllbnQ7CiAgICAgYm9vbCBtX25lZWRzRGlzcGxheU9uQm91bmRzQ2hhbmdlOwogfTsK
IApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV2ViVGlsZWRMYXllci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV2ViVGlsZWRMYXll
ci5jcHAJKHJldmlzaW9uIDYwMDI3KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
V2ViVGlsZWRMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDE1IEBAIHZvaWQg
V2ViVGlsZWRMYXllcjo6c2V0Qm91bmRzKGNvbnN0IENHUmUKICAgICB1cGRhdGVUaWxlcygpOwog
fQogCit2b2lkIFdlYlRpbGVkTGF5ZXI6OnNldEZyYW1lKGNvbnN0IENHUmVjdCYgcmVjdCkKK3sK
KyAgICBpZiAoQ0dSZWN0RXF1YWxUb1JlY3QocmVjdCwgZnJhbWUoKSkpCisgICAgICAgIHJldHVy
bjsKKworICAgIFdlYkxheWVyOjpzZXRGcmFtZShyZWN0KTsKKyAgICB1cGRhdGVUaWxlcygpOwor
fQorCiB2b2lkIFdlYlRpbGVkTGF5ZXI6OmludGVybmFsU2V0TmVlZHNEaXNwbGF5KGNvbnN0IENH
UmVjdCogZGlydHlSZWN0KQogewogICAgIC8vIEZJWE1FOiBPbmx5IHNldE5lZWRzRGlzcGxheSBm
b3IgdGlsZXMgdGhhdCBhcmUgY3VycmVudGx5IHZpc2libGUKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1dlYlRpbGVkTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9XZWJUaWxlZExheWVyLmgJKHJldmlzaW9uIDYwMDI3KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV2ViVGlsZWRMYXllci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw2ICszOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJUaWxlZExheWVy
KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Qm91bmRzKGNvbnN0IENHUmVjdCYpOworICAgIHZp
cnR1YWwgdm9pZCBzZXRGcmFtZShjb25zdCBDR1JlY3QmKTsKIAogcHJvdGVjdGVkOgogICAgIFdl
YlRpbGVkTGF5ZXIoY29uc3QgQ0dTaXplJiB0aWxlU2l6ZSwgR3JhcGhpY3NMYXllciogb3duZXIp
OwpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9D
aGFuZ2VMb2cJKHJldmlzaW9uIDYwMDI3KQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAxMC0wNS0yMiAgSmVyIE5vYmxlICA8amVyLm5v
YmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBmdWxsIHNjcmVlbiBkb2Vzbid0IHdvcmsgZm9yIHZpZGVvIGVsZW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTU1NworICAgICAg
ICByZGFyOi8vcHJvYmxlbS84MDExODEzCisgICAgICAgIAorICAgICAgICBNb2RpZmllZCBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyIHRvIHdvcmsgd2l0aCBNZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93LiAgVGhlIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIKKyAgICAgICAgaXMg
bm93IE1lZGlhUGxheWVyUHJpdmF0ZSBhZ25vc3RpYy4KKworICAgICAgICAqIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6
TGF5b3V0Q2xpZW50OjpMYXlvdXRDbGllbnQpOiAgCisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOjpMYXlvdXRDbGllbnQ6OmxheW91dFN1YmxheWVyc09mTGF5ZXIpOgorICAgICAg
ICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcik6
CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp+RnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcik6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjplbnRlckZ1bGxz
Y3JlZW4pOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZXhpdEZ1bGxzY3Jl
ZW4pOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Y3JlYXRlSFVEV2luZG93
KToKKyAgICAgICAgKiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmg6CisKIDIwMTAtMDUtMjEg
IFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEplcmVteSBPcmxvdy4KSW5kZXg6IFdlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyLmNwcAkocmV2aXNpb24gNjAwMjcpCisrKyBXZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9Gb250U2VsZWN0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dFJ1bi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV0tD
QUNGTGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVt
SW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8d2luZG93c3guaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CkBAIC0xNjksOSArMTcwLDU0IEBAIHZvaWQgSFVEU2xpZGVyOjpkcmFnKGNvbnN0
IEludFBvaW50JiBwb2kKICAgICBtX2J1dHRvblBvc2l0aW9uID0gbWF4KDAsIG1pbihtX3JlY3Qu
d2lkdGgoKSAtIG1fYnV0dG9uU2l6ZSwgcG9pbnQueCgpIC0gbV9kcmFnU3RhcnRPZmZzZXQpKTsK
IH0KIAorY2xhc3MgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6TGF5b3V0Q2xpZW50IDogcHVi
bGljIFdlYkNvcmU6OldLQ0FDRkxheWVyTGF5b3V0Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBMYXlv
dXRDbGllbnQoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogcGFyZW50KQorICAgICAgICA6IG1f
cGFyZW50KHBhcmVudCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBsYXlvdXRTdWJsYXllcnNP
ZkxheWVyKFdLQ0FDRkxheWVyKiBsYXllcikgCisgICAgeworICAgICAgICBpZiAobGF5ZXIgIT0g
bV9wYXJlbnQtPm1fcm9vdENoaWxkKSAKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSBtX3BhcmVudC0+bV9tZWRp
YUVsZW1lbnQuZ2V0KCk7CisgICAgICAgIGlmICghbWVkaWFFbGVtZW50KQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIFdLQ0FDRkxheWVyKiB2aWRlb0xheWVyID0gbWVkaWFFbGVtZW50
LT5wbGF0Zm9ybUxheWVyKCk7CisgICAgICAgIGlmICghdmlkZW9MYXllciB8fCB2aWRlb0xheWVy
LT5zdXBlcmxheWVyKCkgIT0gbGF5ZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
RmxvYXRQb2ludCB2aWRlb0FuY2hvciA9IHZpZGVvTGF5ZXItPmFuY2hvclBvaW50KCk7CisgICAg
ICAgIEZsb2F0UmVjdCBsYXllckJvdW5kcyA9IGxheWVyLT5ib3VuZHMoKTsKKyAgICAgICAgRmxv
YXRSZWN0IHZpZGVvQm91bmRzID0gdmlkZW9MYXllci0+Ym91bmRzKCk7CisgICAgICAgIEZsb2F0
UG9pbnQgbGF5ZXJDZW50ZXIgPSBsYXllckJvdW5kcy5jZW50ZXIoKTsKKworICAgICAgICBGbG9h
dFNpemUgbmF0dXJhbFNpemUgPSBtZWRpYUVsZW1lbnQtPnBsYXllcigpLT5uYXR1cmFsU2l6ZSgp
OworICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IDA7CisgICAgICAgIGlmIChuYXR1cmFsU2l6
ZS5hc3BlY3RSYXRpbygpID4gbGF5ZXJCb3VuZHMuc2l6ZSgpLmFzcGVjdFJhdGlvKCkpCisgICAg
ICAgICAgICBzY2FsZUZhY3RvciA9IGxheWVyQm91bmRzLndpZHRoKCkgLyBuYXR1cmFsU2l6ZS53
aWR0aCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzY2FsZUZhY3RvciA9IGxheWVyQm91
bmRzLmhlaWdodCgpIC8gbmF0dXJhbFNpemUuaGVpZ2h0KCk7CisgICAgICAgIG5hdHVyYWxTaXpl
LnNjYWxlKHNjYWxlRmFjdG9yKTsKKyAgICAgICAgdmlkZW9Cb3VuZHMuc2V0U2l6ZShuYXR1cmFs
U2l6ZSk7CisKKyAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBjZW50ZXJlZCBwb3NpdGlvbiBiYXNl
ZCBvbiB0aGUgdmlkZW9BbmNob3IsIHZpZGVvQm91bmRzLCBhbmQgbGF5ZXJCb3VuZHM6CisgICAg
ICAgIEZsb2F0UG9pbnQgdmlkZW9Qb3NpdGlvbjsKKyAgICAgICAgdmlkZW9Qb3NpdGlvbi5zZXRY
KGxheWVyQ2VudGVyLngoKSAtICgwLjUgLSB2aWRlb0FuY2hvci54KCkpICogdmlkZW9Cb3VuZHMu
d2lkdGgoKSk7CisgICAgICAgIHZpZGVvUG9zaXRpb24uc2V0WShsYXllckNlbnRlci55KCkgLSAo
MC41IC0gdmlkZW9BbmNob3IueSgpKSAqIHZpZGVvQm91bmRzLmhlaWdodCgpKTsKKyAgICAgICAg
dmlkZW9MYXllci0+c2V0UG9zaXRpb24odmlkZW9Qb3NpdGlvbik7CisKKyAgICAgICAgdmlkZW9M
YXllci0+c2V0Qm91bmRzKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG5hdHVyYWxTaXplKSk7Cisg
ICAgfQorCisgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogbV9wYXJlbnQ7Cit9OworCiBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCkKICAg
ICA6IG1faHVkV2luZG93KDApCi0gICAgLCBtX3ZpZGVvV2luZG93KDApCiAgICAgLCBtX3BsYXlQ
YXVzZUJ1dHRvbihIVURCdXR0b246OlBsYXlQYXVzZUJ1dHRvbiwgSW50UG9pbnQoKHdpbmRvd1dp
ZHRoIC0gYnV0dG9uU2l6ZSkgLyAyLCBtYXJnaW5Ub3ApKQogICAgICwgbV90aW1lU2xpZGVyQnV0
dG9uKEhVREJ1dHRvbjo6VGltZVNsaWRlckJ1dHRvbiwgSW50UG9pbnQoMCwgMCkpCiAgICAgLCBt
X3ZvbHVtZVVwQnV0dG9uKEhVREJ1dHRvbjo6Vm9sdW1lVXBCdXR0b24sIEludFBvaW50KG1hcmdp
biArIGJ1dHRvbk1pbmlTaXplICsgdm9sdW1lU2xpZGVyV2lkdGggKyBidXR0b25NaW5pU2l6ZSAv
IDIsIG1hcmdpblRvcCArIChidXR0b25TaXplIC0gYnV0dG9uTWluaVNpemUpIC8gMikpCkBAIC0x
ODMsMjUgKzIyOSwyMCBAQCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpGdWxsc2NyZWVuVmlk
CiAgICAgLCBtX2hpdFdpZGdldCgwKQogICAgICwgbV9tb3ZpbmdXaW5kb3coZmFsc2UpCiAgICAg
LCBtX3RpbWVyKHRoaXMsICZGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp0aW1lckZpcmVkKQor
ICAgICwgbV9yb290Q2hpbGQoV2ViQ29yZTo6V0tDQUNGTGF5ZXI6OmNyZWF0ZShXZWJDb3JlOjpX
S0NBQ0ZMYXllcjo6TGF5ZXIpKQorICAgICwgbV9sYXlvdXRDbGllbnQobmV3IEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OkxheW91dENsaWVudCh0aGlzKSkKIHsKKyAgICBtX3Jvb3RDaGlsZC0+
c2V0TGF5b3V0Q2xpZW50KG1fbGF5b3V0Q2xpZW50LmdldCgpKTsKIH0KIAogRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcjo6fkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIoKQogewotICAgIGlmICht
b3ZpZSgpKQotICAgICAgICBtb3ZpZSgpLT5leGl0RnVsbHNjcmVlbigpOwotfQotCi1RVE1vdmll
R1dvcmxkKiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjptb3ZpZSgpIGNvbnN0Ci17Ci0gICAg
aWYgKCFtX21lZGlhRWxlbWVudCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgbV9yb290Q2hpbGQt
PnNldExheW91dENsaWVudCgwKTsKIAotICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSA9
IG1fbWVkaWFFbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCk7Ci0gICAgaWYgKHBsYXRmb3JtTWVkaWEu
dHlwZSAhPSBQbGF0Zm9ybU1lZGlhOjpRVE1vdmllR1dvcmxkVHlwZSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICByZXR1cm4gcGxhdGZvcm1NZWRpYS5tZWRpYS5xdE1vdmllR1dvcmxkOworICAg
IGlmIChtX2Z1bGxzY3JlZW5XaW5kb3cpIHsKKyAgICAgICAgbV9mdWxsc2NyZWVuV2luZG93LT5j
bG9zZSgpOworICAgICAgICBtX2Z1bGxzY3JlZW5XaW5kb3cgPSAwOworICAgIH0KIH0KIAogdm9p
ZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxl
bWVudCogbWVkaWFFbGVtZW50KQpAQCAtMjE4LDEzICsyNTksMTggQEAgdm9pZCBGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyOjpzZXRNZWRpYQogCiB2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXI6OmVudGVyRnVsbHNjcmVlbigpCiB7Ci0gICAgaWYgKCFtb3ZpZSgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtX3ZpZGVvV2luZG93ID0gbW92aWUoKS0+ZW50ZXJGdWxsc2NyZWVuKHRoaXMp
OworICAgIGlmICghbV9mdWxsc2NyZWVuV2luZG93KSB7CisgICAgICAgIG1fZnVsbHNjcmVlbldp
bmRvdyA9IG5ldyBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93KHRoaXMpOworICAg
ICAgICBtX2Z1bGxzY3JlZW5XaW5kb3ctPmNyZWF0ZVdpbmRvdygpOworICAgICAgICBtX2Z1bGxz
Y3JlZW5XaW5kb3ctPnNldFJvb3RDaGlsZExheWVyKG1fcm9vdENoaWxkKTsKKyAgICB9CiAKKyAg
ICBXZWJDb3JlOjpXS0NBQ0ZMYXllciogdmlkZW9MYXllciA9IG1fbWVkaWFFbGVtZW50LT5wbGF5
ZXIoKS0+cGxhdGZvcm1MYXllcigpOworICAgIG1fcm9vdENoaWxkLT5hZGRTdWJsYXllcih2aWRl
b0xheWVyKTsKKyAgICBtX3Jvb3RDaGlsZC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICAKICAgICBS
RUNUIHdpbmRvd1JlY3Q7Ci0gICAgR2V0Q2xpZW50UmVjdChtX3ZpZGVvV2luZG93LCAmd2luZG93
UmVjdCk7CisgICAgR2V0Q2xpZW50UmVjdChtX2Z1bGxzY3JlZW5XaW5kb3ctPmh3bmQoKSwgJndp
bmRvd1JlY3QpOwogICAgIG1fZnVsbHNjcmVlblNpemUuc2V0V2lkdGgod2luZG93UmVjdC5yaWdo
dCAtIHdpbmRvd1JlY3QubGVmdCk7CiAgICAgbV9mdWxsc2NyZWVuU2l6ZS5zZXRIZWlnaHQod2lu
ZG93UmVjdC5ib3R0b20gLSB3aW5kb3dSZWN0LnRvcCk7CiAKQEAgLTIzMywxMyArMjc5LDIzIEBA
IHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZW50ZXJGdWwKIAogdm9pZCBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjpleGl0RnVsbHNjcmVlbigpCiB7Ci0gICAgU2V0V2luZG93TG9u
Z1B0cihtX2h1ZFdpbmRvdywgMCwgMCk7Ci0gICAgaWYgKG1vdmllKCkpCi0gICAgICAgIG1vdmll
KCktPmV4aXRGdWxsc2NyZWVuKCk7Ci0KLSAgICBBU1NFUlQoIUlzV2luZG93KG1faHVkV2luZG93
KSk7Ci0gICAgbV92aWRlb1dpbmRvdyA9IDA7Ci0gICAgbV9odWRXaW5kb3cgPSAwOworICAgIGlm
IChtX2Z1bGxzY3JlZW5XaW5kb3cpIHsKKyAgICAgICAgbV9mdWxsc2NyZWVuV2luZG93LT5jbG9z
ZSgpOworICAgICAgICBtX2Z1bGxzY3JlZW5XaW5kb3ctPnNldFJvb3RDaGlsZExheWVyKDApOwor
ICAgICAgICBtX2Z1bGxzY3JlZW5XaW5kb3cgPSAwOworICAgIH0KKworICAgIGlmIChtX2h1ZFdp
bmRvdykgeworICAgICAgICBTZXRXaW5kb3dMb25nUHRyKG1faHVkV2luZG93LCAwLCAwKTsKKyAg
ICAgICAgOjpEZXN0cm95V2luZG93KG1faHVkV2luZG93KTsKKyAgICAgICAgbV9odWRXaW5kb3cg
PSAwOworICAgIH0KKworICAgIC8vIEFzIGEgc2lkZSBlZmZlY3Qgb2Ygc2V0dGluZyB0aGUgcGxh
eWVyIHRvIGludmlzaWJsZS92aXNpYmxlLAorICAgIC8vIHRoZSBwbGF5ZXIncyBsYXllciB3aWxs
IGJlIHJlY3JlYXRlZCwgYW5kIHdpbGwgYmUgcGlja2VkIHVwIAorICAgIC8vIHRoZSBuZXh0IHRp
bWUgdGhlIGxheWVyIHRyZWUgaXMgc3luY2hlZC4KKyAgICBtX21lZGlhRWxlbWVudC0+cGxheWVy
KCktPnNldFZpc2libGUoMCk7CisgICAgbV9tZWRpYUVsZW1lbnQtPnBsYXllcigpLT5zZXRWaXNp
YmxlKDEpOwogfQogCiBib29sIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmNhblBsYXkoKSBj
b25zdApAQCAtMzE2LDYgKzM3Miw5IEBAIExSRVNVTFQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
cjo6ZnVsbHMKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXTV9MQlVUVE9OVVA6CiAgICAgICAg
IG9uTW91c2VVcChJbnRQb2ludChHRVRfWF9MUEFSQU0obFBhcmFtKSwgR0VUX1lfTFBBUkFNKGxQ
YXJhbSkpKTsKKyAgICBjYXNlIFdNX0FDVElWQVRFQVBQOgorICAgICAgICBpZiAoIXdQYXJhbSkK
KyAgICAgICAgICAgIG1fbWVkaWFFbGVtZW50LT5leGl0RnVsbHNjcmVlbigpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAKQEAgLTM2NCw3ICs0MjMsNyBAQCB2b2lkIEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXI6OmNyZWF0ZUhVCiAgICAgCiAgICAgLy8gRGlydHkgdGhlIHdpbmRvdyBzbyB0aGUg
SFVEIGRyYXdzCiAgICAgUkVDVCBjbGVhclJlY3QgPSB7IG1faHVkUG9zaXRpb24ueCgpLCBtX2h1
ZFBvc2l0aW9uLnkoKSwgbV9odWRQb3NpdGlvbi54KCkgKyB3aW5kb3dXaWR0aCwgbV9odWRQb3Np
dGlvbi55KCkgKyB3aW5kb3dIZWlnaHQgfTsKLSAgICBJbnZhbGlkYXRlUmVjdChtX3ZpZGVvV2lu
ZG93LCAmY2xlYXJSZWN0LCB0cnVlKTsKKyAgICBJbnZhbGlkYXRlUmVjdChtX2Z1bGxzY3JlZW5X
aW5kb3ctPmh3bmQoKSwgJmNsZWFyUmVjdCwgdHJ1ZSk7CiAKICAgICBtX3BsYXlQYXVzZUJ1dHRv
bi5zZXRTaG93QWx0QnV0dG9uKCFjYW5QbGF5KCkpOwogICAgIG1fdm9sdW1lU2xpZGVyLnNldFZh
bHVlKHZvbHVtZSgpKTsKQEAgLTM3Nyw3ICs0MzYsNyBAQCB2b2lkIEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXI6OmNyZWF0ZUhVCiAKICAgICBtX2h1ZFdpbmRvdyA9IENyZWF0ZVdpbmRvd0V4KFdT
X0VYX0xBWUVSRUQgfCBXU19FWF9UUkFOU1BBUkVOVCB8IFdTX0VYX1RPT0xXSU5ET1csIAogICAg
ICAgICBmdWxsc2NyZWVuVmlkZWVvSFVEV2luZG93Q2xhc3NOYW1lLCAwLCBXU19QT1BVUCB8IFdT
X1ZJU0lCTEUsCi0gICAgICAgIG1faHVkUG9zaXRpb24ueCgpLCBtX2h1ZFBvc2l0aW9uLnkoKSwg
MCwgMCwgbV92aWRlb1dpbmRvdywgMCwgZ0luc3RhbmNlLCAwKTsKKyAgICAgICAgbV9odWRQb3Np
dGlvbi54KCksIG1faHVkUG9zaXRpb24ueSgpLCAwLCAwLCBtX2Z1bGxzY3JlZW5XaW5kb3ctPmh3
bmQoKSwgMCwgZ0luc3RhbmNlLCAwKTsKICAgICBBU1NFUlQoOjpJc1dpbmRvdyhtX2h1ZFdpbmRv
dykpOwogICAgIFNldFdpbmRvd0xvbmdQdHIobV9odWRXaW5kb3csIDAsIHJlaW50ZXJwcmV0X2Nh
c3Q8TE9OR19QVFI+KHRoaXMpKTsKIApJbmRleDogV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyLmgJKHJldmlzaW9uIDYwMDI3KQorKysgV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJM
RShWSURFTykKIAotI2luY2x1ZGUgIlFUTW92aWVHV29ybGQuaCIKKyNpbmNsdWRlICJNZWRpYVBs
YXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgiCiAKICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxN
ZWRpYUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlLmg+CkBAIC0zOCw2ICszOCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKK2NsYXNz
IFdLQ0FDRkxheWVyOwogfQogCiBjbGFzcyBIVURXaWRnZXQgewpAQCAtOTksNyArMTAwLDcgQEAg
cHJpdmF0ZToKICAgICBpbnQgbV9kcmFnU3RhcnRPZmZzZXQ7CiB9OwogCi1jbGFzcyBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyIDogUVRNb3ZpZUdXb3JsZEZ1bGxzY3JlZW5DbGllbnQsIHB1Ymxp
YyBOb25jb3B5YWJsZSB7CitjbGFzcyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyIDogV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCwgcHVibGljIE5vbmNvcHlhYmxl
IHsKIHB1YmxpYzoKICAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCk7CiAgICAgdmlydHVh
bCB+RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcigpOwpAQCAtMTExLDEyICsxMTIsMTEgQEAgcHVi
bGljOgogICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsKIAogcHJpdmF0ZToKLSAgICAvLyBRVE1v
dmllR1dvcmxkRnVsbHNjcmVlbkNsaWVudAorICAgIC8vIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxz
Y3JlZW5XaW5kb3dDbGllbnQKICAgICB2aXJ0dWFsIExSRVNVTFQgZnVsbHNjcmVlbkNsaWVudFdu
ZFByb2MoSFdORCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0sIExQQVJBTSk7CiAKICAgICB2b2lkIGVu
c3VyZVdpbmRvdygpOwotICAgIFFUTW92aWVHV29ybGQqIG1vdmllKCkgY29uc3Q7Ci0KKyAgICAK
ICAgICBib29sIGNhblBsYXkoKSBjb25zdDsKICAgICB2b2lkIHBsYXkoKTsKICAgICB2b2lkIHBh
dXNlKCk7CkBAIC0xNDgsMTAgKzE0OCwxNiBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ+IG1fbWVkaWFFbGVtZW50OwogCi0gICAgSFdORCBtX2h1ZFdp
bmRvdywgbV92aWRlb1dpbmRvdzsKKyAgICBIV05EIG1faHVkV2luZG93OwogICAgIE93blB0cjxI
QklUTUFQPiBtX2JpdG1hcDsKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fZnVsbHNjcmVlblNpemU7
CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9odWRQb3NpdGlvbjsKKyAgICBPd25QdHI8V2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4gbV9mdWxsc2NyZWVuV2luZG93
OworICAgIFJlZlB0cjxXZWJDb3JlOjpXS0NBQ0ZMYXllcj4gbV9yb290Q2hpbGQ7CisKKyAgICBj
bGFzcyBMYXlvdXRDbGllbnQ7CisgICAgZnJpZW5kIGNsYXNzIExheW91dENsaWVudDsKKyAgICBP
d25QdHI8TGF5b3V0Q2xpZW50PiBtX2xheW91dENsaWVudDsKIAogICAgIEhVREJ1dHRvbiBtX3Bs
YXlQYXVzZUJ1dHRvbjsKICAgICBIVURCdXR0b24gbV90aW1lU2xpZGVyQnV0dG9uOwpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gNjAwMjgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wNS0yMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZS1lbmFibGVkIGZ1bGxzY3JlZW4gc3VwcG9ydCBvbiB3aW5kb3dzLCBhbmQgbW9kaWZpZWQg
dGVzdHMgdG8gbWF0Y2guCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vbWVkaWEvY29udHJvbHMt
YWZ0ZXItcmVsb2FkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vbWVkaWEv
Y29udHJvbHMtZHJhZy10aW1lYmFyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vbWVkaWEvY29udHJvbHMtc3RyaWN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9y
bS93aW4vbWVkaWEvY29udHJvbHMtc3R5bGluZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxh
dGZvcm0vd2luL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXJlbmRlcmluZy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL21lZGlhL3ZpZGVvLWRpc3BsYXktdG9nZ2xlLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vbWVkaWEvdmlkZW8tbm8tYXVkaW8tZXhwZWN0
ZWQudHh0OgorCiAyMDEwLTA1LTIyICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1hZnRlci1yZWxvYWQtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1hZnRl
ci1yZWxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MDAyNykKKysrIExheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1hZnRlci1yZWxvYWQtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNyw5ICsxNywxMCBAQCBsYXllciBhdCAoOCw0Mikgc2l6ZSAzMjB4MjQw
CiBsYXllciBhdCAoOCwyNjYpIHNpemUgMzIweDE2CiAgIFJlbmRlckZsZXhpYmxlQm94IChwb3Np
dGlvbmVkKSB7RElWfSBhdCAoMCwyMjQpIHNpemUgMzIweDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJ
TlBVVH0gYXQgKDAsMCkgc2l6ZSAxNngxNgotICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0
ICgxNiwwKSBzaXplIDI1NngxNgotICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkg
c2l6ZSAyNTZ4MTYKKyAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAy
NDB4MTYKKyAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjQweDE2CiAg
ICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDEpIHNpemUgMTN4MTQKKyAgICBSZW5kZXJC
dXR0b24ge0lOUFVUfSBhdCAoMjU2LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lO
UFVUfSBhdCAoMjcyLDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAo
Mjg4LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzA0LDApIHNp
emUgMTZ4MTYKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1k
cmFnLXRpbWViYXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9tZWRpYS9jb250cm9scy1kcmFnLXRpbWViYXItZXhwZWN0ZWQudHh0CShyZXZpc2lv
biA2MDAyNykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1kcmFn
LXRpbWViYXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDEwICs0LDEwIEBAIFJV
Tih2aWRlby5hdXRvcGxheSA9IHRydWUpCiBSVU4odmlkZW8uc3JjID0gJ2NvbnRlbnQvdGVzdC5t
cDQnKQogRVZFTlQocGxheWluZykKIEVWRU5UKHNlZWtlZCkKLVRpbWU6IDIuMQorVGltZTogMi4z
CiBFVkVOVChzZWVrZWQpCi1UaW1lOiAyLjYKK1RpbWU6IDIuOAogRVZFTlQoc2Vla2VkKQotVGlt
ZTogMy4xCitUaW1lOiAzLjQKIEVORCBPRiBURVNUCiAKSW5kZXg6IExheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9tZWRpYS9jb250cm9scy1zdHJpY3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1zdHJpY3QtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA2MDAyNykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS9j
b250cm9scy1zdHJpY3QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNyw5ICsxNywx
MCBAQCBsYXllciBhdCAoOCw1MCkgc2l6ZSAzMjB4MjQwCiBsYXllciBhdCAoOCwyNzQpIHNpemUg
MzIweDE2CiAgIFJlbmRlckZsZXhpYmxlQm94IChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCwyMjQp
IHNpemUgMzIweDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAxNngx
NgotICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI1NngxNgotICAg
ICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNTZ4MTYKKyAgICBSZW5kZXJG
bGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNDB4MTYKKyAgICAgIFJlbmRlclNsaWRl
ciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjQweDE2CiAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9
IGF0ICgyLDEpIHNpemUgMTN4MTQKKyAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjU2LDAp
IHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjcyLDApIHNpemUgMTZ4
MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjg4LDApIHNpemUgMTZ4MTYKICAgICBS
ZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzA0LDApIHNpemUgMTZ4MTYKSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1zdHlsaW5nLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvY29udHJvbHMtc3R5bGlu
Zy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYwMDI3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luL21lZGlhL2NvbnRyb2xzLXN0eWxpbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0yMSw5ICsyMSwxMCBAQCBsYXllciBhdCAoMTgsNDIpIHNpemUgMzIweDI0MAogbGF5ZXIgYXQg
KDE4LDI2Nikgc2l6ZSAzMjB4MTYKICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtE
SVZ9IGF0ICgwLDIyNCkgc2l6ZSAzMjB4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAo
MCwwKSBzaXplIDE2eDE2Ci0gICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNp
emUgMjU2eDE2Ci0gICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI1Nngx
NgorICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI0MHgxNgorICAg
ICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNDB4MTYKICAgICAgICAgUmVu
ZGVyQmxvY2sge0RJVn0gYXQgKDIsMSkgc2l6ZSAxM3gxNAorICAgIFJlbmRlckJ1dHRvbiB7SU5Q
VVR9IGF0ICgyNTYsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgy
NzIsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODgsMCkgc2l6
ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMDQsMCkgc2l6ZSAxNngxNgpA
QCAtMzIsOSArMzMsMTAgQEAgbGF5ZXIgYXQgKDgsMjgyKSBzaXplIDMyMHgyNDAKIGxheWVyIGF0
ICg4LDUwNikgc2l6ZSAzMjB4MTYKICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtE
SVZ9IGF0ICgwLDIyNCkgc2l6ZSAzMjB4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAo
MCwwKSBzaXplIDE2eDE2Ci0gICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNp
emUgMjU2eDE2Ci0gICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI1Nngx
NgorICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI0MHgxNgorICAg
ICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNDB4MTYKICAgICAgICAgUmVu
ZGVyQmxvY2sge0RJVn0gYXQgKDIsMSkgc2l6ZSAxM3gxNAorICAgIFJlbmRlckJ1dHRvbiB7SU5Q
VVR9IGF0ICgyNTYsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgy
NzIsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODgsMCkgc2l6
ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMDQsMCkgc2l6ZSAxNngxNgpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXJlbmRl
cmluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L21lZGlhL3ZpZGVvLWNvbnRyb2xzLXJlbmRlcmluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYw
MDI3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXJl
bmRlcmluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIwLDkgKzIwLDEwIEBAIGxh
eWVyIGF0ICg4LDQyKSBzaXplIDMyMHgyNDAKIGxheWVyIGF0ICg4LDI2Nikgc2l6ZSAzMjB4MTYK
ICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDIyNCkgc2l6ZSAz
MjB4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMCwwKSBzaXplIDE2eDE2Ci0gICAg
UmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUgMjU2eDE2Ci0gICAgICBSZW5k
ZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI1NngxNgorICAgIFJlbmRlckZsZXhpYmxl
Qm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI0MHgxNgorICAgICAgUmVuZGVyU2xpZGVyIHtJTlBV
VH0gYXQgKDAsMCkgc2l6ZSAyNDB4MTYKICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIs
MSkgc2l6ZSAxM3gxNAorICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNTYsMCkgc2l6ZSAx
NngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNzIsMCkgc2l6ZSAxNngxNgogICAg
IFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODgsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1
dHRvbiB7SU5QVVR9IGF0ICgzMDQsMCkgc2l6ZSAxNngxNgpAQCAtMzEsOSArMzIsMTAgQEAgbGF5
ZXIgYXQgKDgsMjgyKSBzaXplIDMyMHgyNDAKIGxheWVyIGF0ICg4LDUwNikgc2l6ZSAzMjB4MTYK
ICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDIyNCkgc2l6ZSAz
MjB4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMCwwKSBzaXplIDE2eDE2Ci0gICAg
UmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUgMjU2eDE2Ci0gICAgICBSZW5k
ZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI1NngxNgorICAgIFJlbmRlckZsZXhpYmxl
Qm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI0MHgxNgorICAgICAgUmVuZGVyU2xpZGVyIHtJTlBV
VH0gYXQgKDAsMCkgc2l6ZSAyNDB4MTYKICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIs
MSkgc2l6ZSAxM3gxNAorICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNTYsMCkgc2l6ZSAx
NngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNzIsMCkgc2l6ZSAxNngxNgogICAg
IFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODgsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1
dHRvbiB7SU5QVVR9IGF0ICgzMDQsMCkgc2l6ZSAxNngxNgpAQCAtNDQsOSArNDYsMTAgQEAgbGF5
ZXIgYXQgKDgsNTIyKSBzaXplIDMyMHgyNDAKIGxheWVyIGF0ICg4LDc0Nikgc2l6ZSAzMjB4MTYK
ICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDIyNCkgc2l6ZSAz
MjB4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMCwwKSBzaXplIDE2eDE2Ci0gICAg
UmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUgMjU2eDE2Ci0gICAgICBSZW5k
ZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI1NngxNgorICAgIFJlbmRlckZsZXhpYmxl
Qm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI0MHgxNgorICAgICAgUmVuZGVyU2xpZGVyIHtJTlBV
VH0gYXQgKDAsMCkgc2l6ZSAyNDB4MTYKICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIs
MSkgc2l6ZSAxM3gxNAorICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNTYsMCkgc2l6ZSAx
NngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNzIsMCkgc2l6ZSAxNngxNgogICAg
IFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODgsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1
dHRvbiB7SU5QVVR9IGF0ICgzMDQsMCkgc2l6ZSAxNngxNgpJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL21lZGlhL3ZpZGVvLWRpc3BsYXktdG9nZ2xlLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvdmlkZW8tZGlzcGxheS10b2dn
bGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MDAyNykKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9tZWRpYS92aWRlby1kaXNwbGF5LXRvZ2dsZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTE2LDkgKzE2LDEwIEBAIGxheWVyIGF0ICg4LDI2KSBzaXplIDMyMHgyNDAKIGxheWVy
IGF0ICg4LDI1MCkgc2l6ZSAzMjB4MTYKICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9uZWQp
IHtESVZ9IGF0ICgwLDIyNCkgc2l6ZSAzMjB4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBh
dCAoMCwwKSBzaXplIDE2eDE2Ci0gICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDAp
IHNpemUgMjU2eDE2Ci0gICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI1
NngxNgorICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI0MHgxNgor
ICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNDB4MTYKICAgICAgICAg
UmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMSkgc2l6ZSAxM3gxNAorICAgIFJlbmRlckJ1dHRvbiB7
SU5QVVR9IGF0ICgyNTYsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0
ICgyNzIsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODgsMCkg
c2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMDQsMCkgc2l6ZSAxNngx
NgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL3ZpZGVvLW5vLWF1ZGlvLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEv
dmlkZW8tbm8tYXVkaW8tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MDAyNykKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9tZWRpYS92aWRlby1uby1hdWRpby1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTE3LDggKzE3LDkgQEAgbGF5ZXIgYXQgKDgsNDIpIHNpemUgMzUyeDI4OAog
bGF5ZXIgYXQgKDgsMzE0KSBzaXplIDM1MngxNgogICBSZW5kZXJGbGV4aWJsZUJveCAocG9zaXRp
b25lZCkge0RJVn0gYXQgKDAsMjcyKSBzaXplIDM1MngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5Q
VVR9IGF0ICgwLDApIHNpemUgMTZ4MTYKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAo
MTYsMCkgc2l6ZSAzMDR4MTYKLSAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNp
emUgMzA0eDE2CisgICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUgMjg4
eDE2CisgICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI4OHgxNgogICAg
ICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiwxKSBzaXplIDEzeDE0CisgICAgUmVuZGVyQnV0
dG9uIHtJTlBVVH0gYXQgKDMwNCwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBV
VH0gYXQgKDMyMCwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMz
NiwwKSBzaXplIDE2eDE2Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56826</attachid>
            <date>2010-05-23 12:49:27 -0700</date>
            <delta_ts>2010-05-23 14:14:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39557-20100523124930.patch</filename>
            <type>text/plain</type>
            <size>40207</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDAyNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTAtMDUtMjIgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZnVs
bCBzY3JlZW4gZG9lc24ndCB3b3JrIGZvciB2aWRlbyBlbGVtZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk1NTcKKyAgICAgICAgcmRhcjovL3By
b2JsZW0vODAxMTgxMworICAgICAgICAKKyAgICAgICAgQWRkIGZ1bGxzY3JlZW4gc3VwcG9ydCBm
b3IgTWVkaWFQbGF5ZXJQcml2YXRlVmlzdWFsQ29udGV4dC4gIEEgbmV3IGNsYXNzLCBNZWRpYVBs
YXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LAorICAgICAgICBwcm92aWRlcyB0aGUgZnVsbHNj
cmVlbiBod25kIGFuZCBsYXllciByZW5kZXJlci4gIEFueSBXS0NBQ0ZMYXllciBjYW4gYmUgcHJv
dmlkZWQgdG8gTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdworICAgICAgICBzbyBm
dXR1cmUgYWRkaXRpb25hbCBNZWRpYVBsYXllclByaXZhdGUgaW1wbGVtZW50YXRpb25zIGNhbiB1
c2UgdGhlIGZ1bGxzY3JlZW4gd2luZG93LgorICAgICAgICAKKyAgICAgICAgTWlub3IgYWRkaXRp
b25zIGhhdmUgYmVlbiBtYWRlIHRvIHRoZSBGbG9hdFNpemUgYW5kIEludFNpemUgY2xhc3Nlcy4K
KworICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oOiBBZGRlZCBhc3BlY3RSYXRpbygpLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaDogQWRkZWQgYXNwZWN0UmF0aW8oKSBhbmQg
c2NhbGUoZmxvYXQpLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVGdWxsc2NyZWVuV2luZG93LmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNr
VGltZVZpc3VhbENvbnRleHQuY3BwOiBDYWxsIHJldHJpZXZlQ3VycmVudEltYWdlKCkgYWZ0ZXIg
Y3JlYXRpbmcgdGhlIHZpZGVvTGF5ZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1dLQ0FDRkxheWVyLmNwcDogCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FD
RkxheWVyLmg6IEFkZCBsYXlvdXQgY2xpZW50IGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6V0tD
QUNGTGF5ZXI6OmZyYW1lKTogQWRkZWQgYmFjayBmcmFtZSgpL3NldEZyYW1lKCkuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dlYlRpbGVkTGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViVGlsZWRMYXllcjo6c2V0RnJhbWUpOiBJbXBsYW1lbnRlZCBzZXRGcmFtZSgpIGlu
IHN1YmNsYXNzIG9mIFdLQ0FDRkxheWVyCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1dlYlRpbGVkTGF5ZXIuaDoKKworCiAyMDEwLTA1LTIyICBNYWNpZWogU3RhY2hvd2lhayAgPG1q
c0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dlLgpJbmRleDogV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA2MDAyNykKKysrIFdlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTIzNzkx
LDYgKzIzNzkxLDE0IEBACiAJCQkJCQk+DQogCQkJCQk8L0ZpbGU+DQogCQkJCQk8RmlsZQ0KKwkJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXE1lZGlhUGxheWVyUHJp
dmF0ZUZ1bGxzY3JlZW5XaW5kb3cuY3BwIg0KKwkJCQkJCT4NCisJCQkJCTwvRmlsZT4NCisJCQkJ
CTxGaWxlDQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cTWVk
aWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oIg0KKwkJCQkJCT4NCisJCQkJCTwvRmls
ZT4NCisJCQkJCTxGaWxlDQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1x3aW5cTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHAiDQogCQkJ
CQkJPg0KIAkJCQkJPC9GaWxlPg0KQEAgLTQ0MDg1LDIyICs0NDA5MywyMiBAQAogCQkJCT4NCiAJ
CQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCi0gICAgICAgIDxGaWx0ZXINCi0gICAgICAgICAgICBO
YW1lPSJzdHJpbmdzIg0KLSAgICAgICAgICAgID4NCi0gICAgICAgICAgICA8RmlsZQ0KLSAgICAg
ICAgICAgICAgICBSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXHByaXZh
dGVcSmF2YVNjcmlwdENvcmVcQXRvbWljU3RyaW5nLmNwcCINCi0gICAgICAgICAgICAgICAgPg0K
LSAgICAgICAgICAgIDwvRmlsZT4NCi0gICAgICAgICAgICA8RmlsZQ0KLSAgICAgICAgICAgICAg
ICBSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNj
cmlwdENvcmVcU3RyaW5nSW1wbC5jcHAiDQotICAgICAgICAgICAgICAgID4NCi0gICAgICAgICAg
ICA8L0ZpbGU+DQotICAgICAgICAgICAgPEZpbGUNCi0gICAgICAgICAgICAgICAgUmVsYXRpdmVQ
YXRoPSIkKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlXFdU
RlN0cmluZy5jcHAiDQotICAgICAgICAgICAgICAgID4NCi0gICAgICAgICAgICA8L0ZpbGU+DQot
ICAgICAgICA8L0ZpbHRlcj4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJzdHJpbmdzIg0KKwkJCT4N
CisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XHByaXZhdGVcSmF2YVNjcmlwdENvcmVcQXRvbWljU3RyaW5nLmNwcCINCisJCQkJPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmVcU3RyaW5nSW1wbC5jcHAiDQorCQkJCT4NCisJ
CQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlXFdURlN0cmluZy5jcHAiDQorCQkJCT4N
CisJCQk8L0ZpbGU+DQorCQk8L0ZpbHRlcj4NCiAJCTxGaWx0ZXINCiAJCQlOYW1lPSJicmlkZ2Ui
DQogCQkJPg0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaAkocmV2aXNp
b24gNjAwMjcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Myw2ICs2MywxNCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiBtX3dpZHRoIDw9IDAgfHwgbV9oZWlnaHQgPD0gMDsgfQogCisgICAg
ZmxvYXQgYXNwZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBtX3dpZHRoIC8gbV9oZWlnaHQ7IH0K
KworICAgIHZvaWQgc2NhbGUoZmxvYXQgc2NhbGUpCisgICAgeworICAgICAgICBtX3dpZHRoID0g
bV93aWR0aCAqIHNjYWxlOworICAgICAgICBtX2hlaWdodCA9IG1faGVpZ2h0ICogc2NhbGU7Cisg
ICAgfQorCiAgICAgRmxvYXRTaXplIGV4cGFuZGVkVG8oY29uc3QgRmxvYXRTaXplJiBvdGhlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBGbG9hdFNpemUobV93aWR0aCA+IG90aGVyLm1f
d2lkdGggPyBtX3dpZHRoIDogb3RoZXIubV93aWR0aCwKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW50U2l6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50U2l6ZS5oCShyZXZpc2lvbiA2MDAyNykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50U2l6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miw4IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGggPD0gMCB8fCBtX2hlaWdo
dCA8PSAwOyB9CiAgICAgYm9vbCBpc1plcm8oKSBjb25zdCB7IHJldHVybiAhbV93aWR0aCAmJiAh
bV9oZWlnaHQ7IH0KKworICAgIGZsb2F0IGFzcGVjdFJhdGlvKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KG1fd2lkdGgpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1faGVpZ2h0KTsg
fQogICAgIAogICAgIHZvaWQgZXhwYW5kKGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICB7Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxz
Y3JlZW5XaW5kb3cuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dCAKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyAKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCAKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIAorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIJNBUyBJU5QgCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIAorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIAorICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSAKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiTWVkaWFQbGF5
ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oIgorCisjaW5jbHVkZSAiV2ViQ29yZUluc3RhbmNl
SGFuZGxlLmgiCisjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHQ29sb3IuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93OjpNZWRpYVBs
YXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93KE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5D
bGllbnQqIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1faHduZCgwKQor
eworICAgIG1fbGF5ZXJSZW5kZXJlciA9IFdLQ0FDRkxheWVyUmVuZGVyZXI6OmNyZWF0ZSgwKTsK
K30KKworTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6fk1lZGlhUGxheWVyUHJp
dmF0ZUZ1bGxzY3JlZW5XaW5kb3coKQoreworICAgIG1fY2xpZW50ID0gMDsKK30KKwordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93OjpjcmVhdGVXaW5kb3coKQoreworICAg
IHN0YXRpYyBBVE9NIHdpbmRvd0F0b20gPSAwOworICAgIGlmICghd2luZG93QXRvbSkgeworICAg
ICAgICBXTkRDTEFTU0VYIHdjZXggPSB7MH07CisgICAgICAgIHdjZXguY2JTaXplICAgICAgICAg
PSBzaXplb2YoV05EQ0xBU1NFWCk7CisgICAgICAgIHdjZXguc3R5bGUgICAgICAgICAgPSBDU19I
UkVEUkFXIHwgQ1NfVlJFRFJBVyB8IENTX09XTkRDOworICAgICAgICB3Y2V4LmxwZm5XbmRQcm9j
ICAgID0gJnN0YXRpY1duZFByb2M7CisgICAgICAgIHdjZXguaEluc3RhbmNlICAgICAgPSBXZWJD
b3JlOjppbnN0YW5jZUhhbmRsZSgpOworICAgICAgICB3Y2V4Lmxwc3pDbGFzc05hbWUgID0gTCJN
ZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93Q2xhc3MiOworICAgICAgICB3aW5kb3dB
dG9tID0gOjpSZWdpc3RlckNsYXNzRXgoJndjZXgpOworICAgIH0KKworICAgIGlmIChtX2h3bmQp
CisgICAgICAgIGNsb3NlKCk7CisKKyAgICBNT05JVE9SSU5GTyBtaSA9IHswfTsKKyAgICBtaS5j
YlNpemUgPSBzaXplb2YoTU9OSVRPUklORk8pOworICAgIEdldE1vbml0b3JJbmZvKE1vbml0b3JG
cm9tV2luZG93KDAsIE1PTklUT1JfREVGQVVMVFRPUFJJTUFSWSksICZtaSk7CisgICAgSW50UmVj
dCBtb25pdG9yUmVjdCA9IG1pLnJjTW9uaXRvcjsKKworICAgIENSRUFURVNUUlVDVFcgY3MgPSB7
MH07CisgICAgY3MueCA9IDA7CisgICAgY3MueSA9IDA7CisgICAgY3MuY3ggPSBtb25pdG9yUmVj
dC53aWR0aCgpOworICAgIGNzLmN5ID0gbW9uaXRvclJlY3QuaGVpZ2h0KCk7CisgICAgY3Muc3R5
bGUgPSBXU19QT1BVUCB8IFdTX1ZJU0lCTEU7CisgICAgY3MuZHdFeFN0eWxlID0gMDsKKyAgICBj
cy5scHN6Q2xhc3MgPSBMIk1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3dDbGFzcyI7
CisgICAgY3MubHBzek5hbWUgPSBMIiI7CisgICAgY3MubHBDcmVhdGVQYXJhbXMgPSAoTFBWT0lE
KXRoaXM7CisgICAgCisgICAgbV9od25kID0gOjpDcmVhdGVXaW5kb3dFeFcoY3MuZHdFeFN0eWxl
LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcy5scHN6Q2xhc3MsIAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNzLmxwc3pOYW1lLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjcy5zdHlsZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3MueCwgCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3MueSwgCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3MuY3gsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzLmN5LCAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcy5od25kUGFyZW50LCAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcy5oTWVudSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3MuaEluc3Rh
bmNlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcy5scENyZWF0ZVBhcmFtcyk7Cit9
CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6Y2xvc2UoKQorewor
ICAgIDo6RGVzdHJveVdpbmRvdyhtX2h3bmQpOworICAgIG1faHduZCA9IDA7Cit9CisKK0hXTkQg
TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6aHduZCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1faHduZDsKK30KKworV0tDQUNGTGF5ZXJSZW5kZXJlciogTWVkaWFQbGF5ZXJQcml2
YXRlRnVsbHNjcmVlbldpbmRvdzo6bGF5ZXJSZW5kZXJlcigpCit7CisgICAgcmV0dXJuIG1fbGF5
ZXJSZW5kZXJlci5nZXQoKTsKK30KKworV0tDQUNGTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZUZ1
bGxzY3JlZW5XaW5kb3c6OnJvb3RDaGlsZExheWVyKCkKK3sKKyAgICByZXR1cm4gbV9yb290Q2hp
bGQuZ2V0KCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6
c2V0Um9vdENoaWxkTGF5ZXIoUGFzc1JlZlB0cjxXS0NBQ0ZMYXllcj4gcm9vdENoaWxkKQorewor
ICAgIGlmIChtX3Jvb3RDaGlsZCAhPSByb290Q2hpbGQpIHsKKworICAgICAgICBpZiAobV9yb290
Q2hpbGQpIHsKKyAgICAgICAgICAgIG1fcm9vdENoaWxkLT5yZW1vdmVGcm9tU3VwZXJsYXllcigp
OworICAgICAgICAgICAgbV9yb290Q2hpbGQuY2xlYXIoKTsKKyAgICAgICAgfQorCisgICAgICAg
IG1fcm9vdENoaWxkID0gcm9vdENoaWxkOworICAgIH0KKworICAgIGlmIChtX3Jvb3RDaGlsZCkg
eworICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNldFJvb3RDaGlsZExheWVyKG1fcm9vdENoaWxk
LmdldCgpKTsKKyAgICAgICAgV0tDQUNGTGF5ZXIqIHJvb3RMYXllciA9IG1fcm9vdENoaWxkLT5y
b290TGF5ZXIoKTsKKyAgICAgICAgQ0dSZWN0IHJvb3RCb3VuZHMgPSBtX3Jvb3RDaGlsZC0+cm9v
dExheWVyKCktPmJvdW5kcygpOworICAgICAgICBtX3Jvb3RDaGlsZC0+c2V0RnJhbWUocm9vdEJv
dW5kcyk7CisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0U2Nyb2xsRnJhbWUoSW50UG9pbnQo
cm9vdEJvdW5kcy5vcmlnaW4pLCBJbnRTaXplKHJvb3RCb3VuZHMuc2l6ZSkpOworICAgICAgICBt
X3Jvb3RDaGlsZC0+c2V0QmFja2dyb3VuZENvbG9yKENHQ29sb3JHZXRDb25zdGFudENvbG9yKGtD
R0NvbG9yQmxhY2spKTsKKyAgICAgICAgcm9vdExheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ0dD
b2xvckdldENvbnN0YW50Q29sb3Ioa0NHQ29sb3JCbGFjaykpOworICAgIH0KK30KKworTFJFU1VM
VCBDQUxMQkFDSyBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93OjpzdGF0aWNXbmRQ
cm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFt
KQoreworICAgIExPTkdfUFRSIGxvbmdQdHIgPSBHZXRXaW5kb3dMb25nUHRyKGhXbmQsIEdXTFBf
VVNFUkRBVEEpOworCisgICAgaWYgKCFsb25nUHRyICYmIG1lc3NhZ2UgPT0gV01fQ1JFQVRFKSB7
CisgICAgICAgIExQQ1JFQVRFU1RSVUNUIGxwY3MgPSByZWludGVycHJldF9jYXN0PExQQ1JFQVRF
U1RSVUNUPihsUGFyYW0pOworICAgICAgICBsb25nUHRyID0gKExPTkdfUFRSKWxwY3MtPmxwQ3Jl
YXRlUGFyYW1zOworICAgICAgICA6OlNldFdpbmRvd0xvbmdQdHIoaFduZCwgR1dMUF9VU0VSREFU
QSwgbG9uZ1B0cik7CisgICAgfQorCisgICAgaWYgKE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3Jl
ZW5XaW5kb3cqIHdpbmRvdyA9IHJlaW50ZXJwcmV0X2Nhc3Q8TWVkaWFQbGF5ZXJQcml2YXRlRnVs
bHNjcmVlbldpbmRvdyo+KGxvbmdQdHIpKQorICAgICAgICByZXR1cm4gd2luZG93LT53bmRQcm9j
KGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsKKworICAgIHJldHVybiA6OkRlZldpbmRv
d1Byb2MoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOyAgICAKK30KKworTFJFU1VMVCBN
ZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93Ojp3bmRQcm9jKEhXTkQgaFduZCwgVUlO
VCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQoreworICAgIExSRVNVTFQg
bFJlc3VsdCA9IDA7CisgICAgc3dpdGNoIChtZXNzYWdlKSB7CisgICAgY2FzZSBXTV9DUkVBVEU6
CisgICAgICAgIG1faHduZCA9IGhXbmQ7CisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0SG9z
dFdpbmRvdyhtX2h3bmQpOworICAgICAgICBtX2xheWVyUmVuZGVyZXItPmNyZWF0ZVJlbmRlcmVy
KCk7CisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgV01fREVTVFJPWToKKyAgICAgICAgbV9od25kID0gMDsKKyAgICAg
ICAgbV9sYXllclJlbmRlcmVyLT5kZXN0cm95UmVuZGVyZXIoKTsKKyAgICAgICAgbV9sYXllclJl
bmRlcmVyLT5zZXRIb3N0V2luZG93KDApOworICAgIGNhc2UgV01fV0lORE9XUE9TQ0hBTkdFRDoK
KyAgICAgICAgeworICAgICAgICAgICAgTFBXSU5ET1dQT1Mgd3AgPSAoTFBXSU5ET1dQT1MpbFBh
cmFtOworICAgICAgICAgICAgaWYgKCEod3AtPmZsYWdzICYgU1dQX05PTU9WRSkpIHsKKyAgICAg
ICAgICAgICAgICBtX2xheWVyUmVuZGVyZXItPnJlc2l6ZSgpOworICAgICAgICAgICAgICAgIFdL
Q0FDRkxheWVyKiByb290TGF5ZXIgPSBtX3Jvb3RDaGlsZC0+cm9vdExheWVyKCk7CisgICAgICAg
ICAgICAgICAgQ0dSZWN0IHJvb3RCb3VuZHMgPSBtX3Jvb3RDaGlsZC0+cm9vdExheWVyKCktPmJv
dW5kcygpOworICAgICAgICAgICAgICAgIG1fcm9vdENoaWxkLT5zZXRGcmFtZShyb290Qm91bmRz
KTsKKyAgICAgICAgICAgICAgICBtX3Jvb3RDaGlsZC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICAg
ICAgICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNldFNjcm9sbEZyYW1lKEludFBvaW50KHJvb3RC
b3VuZHMub3JpZ2luKSwgSW50U2l6ZShyb290Qm91bmRzLnNpemUpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFdNX1BBSU5UOgorICAgICAgICBt
X2xheWVyUmVuZGVyZXItPnJlbmRlclNvb24oKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgaWYgKG1fY2xpZW50KQorICAgICAgICBsUmVzdWx0ID0gbV9jbGllbnQtPmZ1bGxzY3JlZW5D
bGllbnRXbmRQcm9jKGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsKKworICAgIHJldHVy
biBsUmVzdWx0OworfQorCit9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9N
ZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRv
dy5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQ
bGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIAorICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0IAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUg
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgk0FTIElTlCAKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiAKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiAKKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIAorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiAKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhUGxheWVyUHJpdmF0ZUZ1
bGxzY3JlZW5XaW5kb3dfaAorI2RlZmluZSBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2lu
ZG93X2gKKworI2luY2x1ZGUgIldLQ0FDRkxheWVyLmgiCisjaW5jbHVkZSAiV0tDQUNGTGF5ZXJS
ZW5kZXJlci5oIgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNj
cmVlbkNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCBMUkVTVUxUIGZ1bGxzY3JlZW5DbGll
bnRXbmRQcm9jKEhXTkQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNLCBMUEFSQU0pID0gMDsKK307CisK
K2NsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cgeworcHVibGljOgorICAg
IE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3coTWVkaWFQbGF5ZXJQcml2YXRlRnVs
bHNjcmVlbkNsaWVudCopOworICAgIHZpcnR1YWwgfk1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3Jl
ZW5XaW5kb3coKTsKKworICAgIHZvaWQgY3JlYXRlV2luZG93KCk7CisgICAgdm9pZCBjbG9zZSgp
OworICAgIAorICAgIEhXTkQgaHduZCgpIGNvbnN0OworCisgICAgV0tDQUNGTGF5ZXJSZW5kZXJl
ciogbGF5ZXJSZW5kZXJlcigpOworCisgICAgV0tDQUNGTGF5ZXIqIHJvb3RDaGlsZExheWVyKCk7
CisgICAgdm9pZCBzZXRSb290Q2hpbGRMYXllcihQYXNzUmVmUHRyPFdLQ0FDRkxheWVyPik7CisK
K3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgTFJFU1VMVCBDQUxMQkFDSyBzdGF0aWNXbmRQcm9jKEhX
TkQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNLCBMUEFSQU0pOworICAgIExSRVNVTFQgd25kUHJvYyhI
V05ELCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSwgTFBBUkFNKTsKKworICAgIE1lZGlhUGxheWVyUHJp
dmF0ZUZ1bGxzY3JlZW5DbGllbnQqIG1fY2xpZW50OworICAgIE93blB0cjxXS0NBQ0ZMYXllclJl
bmRlcmVyPiBtX2xheWVyUmVuZGVyZXI7CisgICAgUmVmUHRyPFdLQ0FDRkxheWVyPiBtX3Jvb3RD
aGlsZDsKKyAgICBIV05EIG1faHduZDsKK307CisKK30KKworI2VuZGlmCkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxD
b250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9N
ZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcAkocmV2aXNpb24gNjAw
MjcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVR
dWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw3
IEBAIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQKIAogYm9vbCBNZWRp
YVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpzdXBwb3J0c0Z1bGxzY3JlZW4o
KSBjb25zdAogewotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogUGxh
dGZvcm1NZWRpYSBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpwbGF0
Zm9ybU1lZGlhKCkgY29uc3QKQEAgLTc2NSw3ICs3NjUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVF1aWNrVGltZVZpc3VhbENvCiAKICAgICAgICAgICAgICAgICBidWZmZXIudW5sb2NrQmFz
ZUFkZHJlc3MoKTsKICAgICAgICAgICAgICAgICBsYXllci0+cm9vdExheWVyKCktPnNldE5lZWRz
UmVuZGVyKCk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQogICAgIH0gZWxzZQog
I2VuZGlmCiAgICAgICAgIG1fcGxheWVyLT5yZXBhaW50KCk7CkBAIC05MzksNiArOTM5LDEwIEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ28KICNlbmRpZgogICAgIC8v
IFRoZSBsYXllciB3aWxsIGdldCBob29rZWQgdXAgdmlhIFJlbmRlckxheWVyQmFja2luZzo6dXBk
YXRlR3JhcGhpY3NMYXllckNvbmZpZ3VyYXRpb24oKS4KICNlbmRpZgorCisgICAgLy8gZmlsbCB0
aGUgbmV3bHkgY3JlYXRlZCBsYXllciB3aXRoIGltYWdlIGRhdGEKKyAgICBpZiAobV92aXN1YWxD
b250ZXh0KQorICAgICAgICByZXRyaWV2ZUN1cnJlbnRJbWFnZSgpOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OmRlc3Ryb3lMYXllckZvck1vdmll
KCkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllci5j
cHAJKHJldmlzaW9uIDYwMDI3KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tD
QUNGTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsNiArMTU0LDcgQEAgUGFzc1JlZlB0
cjxXS0NBQ0ZMYXllcj4gV0tDQUNGTGF5ZXI6OmNyZQogCiBXS0NBQ0ZMYXllcjo6V0tDQUNGTGF5
ZXIoTGF5ZXJUeXBlIHR5cGUpCiAgICAgOiBtX2xheWVyKEFkb3B0Q0YsIENBQ0ZMYXllckNyZWF0
ZSh0b0NBQ0ZMYXllclR5cGUodHlwZSkpKQorICAgICwgbV9sYXlvdXRDbGllbnQoMCkKICAgICAs
IG1fbmVlZHNEaXNwbGF5T25Cb3VuZHNDaGFuZ2UoZmFsc2UpCiB7CiAgICAgQ0FDRkxheWVyU2V0
VXNlckRhdGEobGF5ZXIoKSwgdGhpcyk7CkBAIC0yODYsMTEgKzI4NywxMCBAQCB2b2lkICBXS0NB
Q0ZMYXllcjo6YWRvcHRTdWJsYXllcnMoV0tDQUNGCiB2b2lkIFdLQ0FDRkxheWVyOjpyZW1vdmVG
cm9tU3VwZXJsYXllcigpCiB7CiAgICAgV0tDQUNGTGF5ZXIqIHN1cGVybGF5ZXIgPSB0aGlzLT5z
dXBlcmxheWVyKCk7Ci0gICAgaWYgKCFzdXBlcmxheWVyKQotICAgICAgICByZXR1cm47Ci0KICAg
ICBDQUNGTGF5ZXJSZW1vdmVGcm9tU3VwZXJsYXllcihsYXllcigpKTsKLSAgICBzdXBlcmxheWVy
LT5zZXROZWVkc0NvbW1pdCgpOworCisgICAgaWYgKHN1cGVybGF5ZXIpCisgICAgICAgIHN1cGVy
bGF5ZXItPnNldE5lZWRzQ29tbWl0KCk7CiB9CiAKIFdLQ0FDRkxheWVyKiBXS0NBQ0ZMYXllcjo6
aW50ZXJuYWxTdWJsYXllckF0SW5kZXgoaW50IGluZGV4KSBjb25zdApAQCAtMzQzLDYgKzM0Mywx
OSBAQCB2b2lkIFdLQ0FDRkxheWVyOjpzZXRCb3VuZHMoY29uc3QgQ0dSZWN0CiAgICAgICAgIHNl
dE5lZWRzRGlzcGxheSgpOwogfQogCit2b2lkIFdLQ0FDRkxheWVyOjpzZXRGcmFtZShjb25zdCBD
R1JlY3QmIHJlY3QpCit7CisgICAgQ0dSZWN0IG9sZEZyYW1lID0gZnJhbWUoKTsKKyAgICBpZiAo
Q0dSZWN0RXF1YWxUb1JlY3QocmVjdCwgb2xkRnJhbWUpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBDQUNGTGF5ZXJTZXRGcmFtZShsYXllcigpLCByZWN0KTsKKyAgICBzZXROZWVkc0NvbW1pdCgp
OworCisgICAgaWYgKG1fbmVlZHNEaXNwbGF5T25Cb3VuZHNDaGFuZ2UpCisgICAgICAgIHNldE5l
ZWRzRGlzcGxheSgpOworfQorCiB2b2lkIFdLQ0FDRkxheWVyOjpzZXRDb250ZW50c0dyYXZpdHko
Q29udGVudHNHcmF2aXR5VHlwZSB0eXBlKQogewogICAgIENBQ0ZMYXllclNldENvbnRlbnRzR3Jh
dml0eShsYXllcigpLCB0b0NBQ0ZDb250ZW50c0dyYXZpdHlUeXBlKHR5cGUpKTsKQEAgLTQxOCw2
ICs0MzEsMzIgQEAgdm9pZCBXS0NBQ0ZMYXllcjo6aW50ZXJuYWxTZXROZWVkc0Rpc3BsYQogICAg
IENBQ0ZMYXllclNldE5lZWRzRGlzcGxheShsYXllcigpLCBkaXJ0eVJlY3QpOwogfQogCit2b2lk
IFdLQ0FDRkxheWVyOjpzZXRMYXlvdXRDbGllbnQoV0tDQUNGTGF5ZXJMYXlvdXRDbGllbnQqIGxh
eW91dENsaWVudCkKK3sKKyAgICBpZiAobGF5b3V0Q2xpZW50ID09IG1fbGF5b3V0Q2xpZW50KQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX2xheW91dENsaWVudCA9IGxheW91dENsaWVudDsKKyAg
ICBDQUNGTGF5ZXJTZXRMYXlvdXRDYWxsYmFjayhsYXllcigpLCBtX2xheW91dENsaWVudCA/ICZs
YXlvdXRTdWJsYXllcnNQcm9jIDogMCk7ICAgIAorfQorCit2b2lkIFdLQ0FDRkxheWVyOjpsYXlv
dXRTdWJsYXllcnNQcm9jKENBQ0ZMYXllclJlZiBjYUxheWVyKSAKK3sKKyAgICBXS0NBQ0ZMYXll
ciogbGF5ZXIgPSBXS0NBQ0ZMYXllcjo6bGF5ZXIoY2FMYXllcik7CisgICAgaWYgKGxheWVyICYm
IGxheWVyLT5tX2xheW91dENsaWVudCkKKyAgICAgICAgbGF5ZXItPm1fbGF5b3V0Q2xpZW50LT5s
YXlvdXRTdWJsYXllcnNPZkxheWVyKGxheWVyKTsKK30KKworV0tDQUNGTGF5ZXJMYXlvdXRDbGll
bnQqIFdLQ0FDRkxheWVyOjpsYXlvdXRDbGllbnQoKSBjb25zdAoreworICAgIHJldHVybiBtX2xh
eW91dENsaWVudDsKK30KKwordm9pZCBXS0NBQ0ZMYXllcjo6c2V0TmVlZHNMYXlvdXQoKQorewor
ICAgIENBQ0ZMYXllclNldE5lZWRzTGF5b3V0KGxheWVyKCkpOworfQorCiAjaWZuZGVmIE5ERUJV
Rwogc3RhdGljIHZvaWQgcHJpbnRJbmRlbnQoaW50IGluZGVudCkKIHsKQEAgLTUwMCw5ICs1Mzks
OSBAQCB2b2lkIFdLQ0FDRkxheWVyOjpwcmludExheWVyKGludCBpbmRlbnQpCiAgICAgQ0dJbWFn
ZVJlZiBsYXllckNvbnRlbnRzID0gY29udGVudHMoKTsKICAgICBpZiAobGF5ZXJDb250ZW50cykg
ewogICAgICAgICBwcmludEluZGVudChpbmRlbnQgKyAxKTsKLSAgICAgICAgZnByaW50ZihzdGRl
cnIsICIoY29udGVudHMgKGltYWdlIFslZCAlZF0pKVxuIiwKKyAgICAgICAgICAgIGZwcmludGYo
c3RkZXJyLCAiKGNvbnRlbnRzIChpbWFnZSBbJWQgJWRdKSlcbiIsCiAgICAgICAgICAgICBDR0lt
YWdlR2V0V2lkdGgobGF5ZXJDb250ZW50cyksIENHSW1hZ2VHZXRIZWlnaHQobGF5ZXJDb250ZW50
cykpOwotICAgIH0KKyAgICAgICAgfQogCiAgICAgLy8gUHJpbnQgc3VibGF5ZXJzIGlmIG5lZWRl
ZAogICAgIGludCBuID0gc3VibGF5ZXJDb3VudCgpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vV0tDQUNGTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllci5oCShyZXZpc2lvbiA2MDAyNykKKysrIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDkgKzQ0LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgV0tDQUNGTGF5ZXI7
CiBjbGFzcyBXS0NBQ0ZBbmltYXRpb247CiBjbGFzcyBXS0NBQ0ZUaW1pbmdGdW5jdGlvbjsKIAor
Y2xhc3MgV0tDQUNGTGF5ZXJMYXlvdXRDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9p
ZCBsYXlvdXRTdWJsYXllcnNPZkxheWVyKFdLQ0FDRkxheWVyKikgPSAwOworfTsKKwogY2xhc3Mg
V0tDQUNGTGF5ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXS0NBQ0ZMYXllcj4gewogcHVibGljOgog
ICAgIGVudW0gTGF5ZXJUeXBlIHsgTGF5ZXIsIFRyYW5zZm9ybUxheWVyIH07CkBAIC02Myw2ICs2
OSwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0luQ29udGV4dChQbGF0Zm9y
bUdyYXBoaWNzQ29udGV4dCopIHsgfQogCisgICAgdmlydHVhbCB2b2lkIHNldExheW91dENsaWVu
dChXS0NBQ0ZMYXllckxheW91dENsaWVudCopOworICAgIHZpcnR1YWwgV0tDQUNGTGF5ZXJMYXlv
dXRDbGllbnQqIGxheW91dENsaWVudCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXROZWVk
c0xheW91dCgpOworCiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoY29uc3QgQ0dSZWN0KiBkaXJ0
eVJlY3QgPSAwKQogICAgIHsKICAgICAgICAgaW50ZXJuYWxTZXROZWVkc0Rpc3BsYXkoZGlydHlS
ZWN0KTsKQEAgLTE3Myw2ICsxODMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGaWx0ZXJzKENG
QXJyYXlSZWYgZmlsdGVycykgeyBDQUNGTGF5ZXJTZXRGaWx0ZXJzKGxheWVyKCksIGZpbHRlcnMp
OyBzZXROZWVkc0NvbW1pdCgpOyB9CiAgICAgQ0ZBcnJheVJlZiBmaWx0ZXJzKCkgY29uc3QgeyBy
ZXR1cm4gQ0FDRkxheWVyR2V0RmlsdGVycyhsYXllcigpKTsgfQogCisgICAgdm9pZCBzZXRGcmFt
ZShjb25zdCBDR1JlY3QmKTsKKyAgICBDR1JlY3QgZnJhbWUoKSBjb25zdCB7IHJldHVybiBDQUNG
TGF5ZXJHZXRGcmFtZShsYXllcigpKTsgfQorCiAgICAgdm9pZCBzZXRIaWRkZW4oYm9vbCBoaWRk
ZW4pIHsgQ0FDRkxheWVyU2V0SGlkZGVuKGxheWVyKCksIGhpZGRlbik7IHNldE5lZWRzQ29tbWl0
KCk7IH0KICAgICBib29sIGlzSGlkZGVuKCkgY29uc3QgeyByZXR1cm4gQ0FDRkxheWVySXNIaWRk
ZW4obGF5ZXIoKSk7IH0KIApAQCAtMjYwLDggKzI3MywxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCBwcmludExheWVyKGludCBpbmRlbnQpIGNvbnN0OwogI2VuZGlmCiAKKyAgICBzdGF0aWMgdm9p
ZCBsYXlvdXRTdWJsYXllcnNQcm9jKENBQ0ZMYXllclJlZik7CisKIHByaXZhdGU6CiAgICAgUmV0
YWluUHRyPENBQ0ZMYXllclJlZj4gbV9sYXllcjsKKyAgICBXS0NBQ0ZMYXllckxheW91dENsaWVu
dCogbV9sYXlvdXRDbGllbnQ7CiAgICAgYm9vbCBtX25lZWRzRGlzcGxheU9uQm91bmRzQ2hhbmdl
OwogfTsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV2ViVGlsZWRMYXll
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV2ViVGls
ZWRMYXllci5jcHAJKHJldmlzaW9uIDYwMDI3KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vV2ViVGlsZWRMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDE1IEBA
IHZvaWQgV2ViVGlsZWRMYXllcjo6c2V0Qm91bmRzKGNvbnN0IENHUmUKICAgICB1cGRhdGVUaWxl
cygpOwogfQogCit2b2lkIFdlYlRpbGVkTGF5ZXI6OnNldEZyYW1lKGNvbnN0IENHUmVjdCYgcmVj
dCkKK3sKKyAgICBpZiAoQ0dSZWN0RXF1YWxUb1JlY3QocmVjdCwgZnJhbWUoKSkpCisgICAgICAg
IHJldHVybjsKKworICAgIFdlYkxheWVyOjpzZXRGcmFtZShyZWN0KTsKKyAgICB1cGRhdGVUaWxl
cygpOworfQorCiB2b2lkIFdlYlRpbGVkTGF5ZXI6OmludGVybmFsU2V0TmVlZHNEaXNwbGF5KGNv
bnN0IENHUmVjdCogZGlydHlSZWN0KQogewogICAgIC8vIEZJWE1FOiBPbmx5IHNldE5lZWRzRGlz
cGxheSBmb3IgdGlsZXMgdGhhdCBhcmUgY3VycmVudGx5IHZpc2libGUKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dlYlRpbGVkTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XZWJUaWxlZExheWVyLmgJKHJldmlzaW9uIDYwMDI3
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV2ViVGlsZWRMYXllci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJUaWxl
ZExheWVyKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Qm91bmRzKGNvbnN0IENHUmVjdCYpOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFtZShjb25zdCBDR1JlY3QmKTsKIAogcHJvdGVjdGVkOgog
ICAgIFdlYlRpbGVkTGF5ZXIoY29uc3QgQ0dTaXplJiB0aWxlU2l6ZSwgR3JhcGhpY3NMYXllciog
b3duZXIpOwpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDYwMDI3KQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAxMC0wNS0yMiAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBmdWxsIHNjcmVlbiBkb2Vzbid0IHdvcmsgZm9yIHZpZGVvIGVsZW1lbnRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTU1Nwor
ICAgICAgICByZGFyOi8vcHJvYmxlbS84MDExODEzCisgICAgICAgIAorICAgICAgICBNb2RpZmll
ZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyIHRvIHdvcmsgd2l0aCBNZWRpYVBsYXllclByaXZh
dGVGdWxsc2NyZWVuV2luZG93LiAgVGhlIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIKKyAgICAg
ICAgaXMgbm93IE1lZGlhUGxheWVyUHJpdmF0ZSBhZ25vc3RpYy4KKworICAgICAgICAqIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcjo6TGF5b3V0Q2xpZW50OjpMYXlvdXRDbGllbnQpOiAgCisgICAgICAgIChGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyOjpMYXlvdXRDbGllbnQ6OmxheW91dFN1YmxheWVyc09mTGF5ZXIpOgor
ICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6RnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcik6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp+RnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcik6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjplbnRl
ckZ1bGxzY3JlZW4pOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZXhpdEZ1
bGxzY3JlZW4pOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Y3JlYXRlSFVE
V2luZG93KToKKyAgICAgICAgKiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmg6CisKIDIwMTAt
MDUtMjEgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEplcmVteSBPcmxvdy4KSW5kZXg6IFdlYktpdC93aW4vRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyLmNwcAkocmV2aXNpb24gNjAwMjcpCisrKyBXZWJLaXQvd2luL0Z1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9Gb250U2VsZWN0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNz
Q29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dFJ1bi5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvV0tDQUNGTGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0
U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8d2luZG93c3guaD4KICNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CkBAIC0xNjksOSArMTcwLDU0IEBAIHZvaWQgSFVEU2xpZGVyOjpkcmFn
KGNvbnN0IEludFBvaW50JiBwb2kKICAgICBtX2J1dHRvblBvc2l0aW9uID0gbWF4KDAsIG1pbiht
X3JlY3Qud2lkdGgoKSAtIG1fYnV0dG9uU2l6ZSwgcG9pbnQueCgpIC0gbV9kcmFnU3RhcnRPZmZz
ZXQpKTsKIH0KIAorY2xhc3MgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6TGF5b3V0Q2xpZW50
IDogcHVibGljIFdlYkNvcmU6OldLQ0FDRkxheWVyTGF5b3V0Q2xpZW50IHsKK3B1YmxpYzoKKyAg
ICBMYXlvdXRDbGllbnQoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogcGFyZW50KQorICAgICAg
ICA6IG1fcGFyZW50KHBhcmVudCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBsYXlvdXRTdWJs
YXllcnNPZkxheWVyKFdLQ0FDRkxheWVyKiBsYXllcikgCisgICAgeworICAgICAgICBpZiAobGF5
ZXIgIT0gbV9wYXJlbnQtPm1fcm9vdENoaWxkKSAKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSBtX3BhcmVudC0+
bV9tZWRpYUVsZW1lbnQuZ2V0KCk7CisgICAgICAgIGlmICghbWVkaWFFbGVtZW50KQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIFdLQ0FDRkxheWVyKiB2aWRlb0xheWVyID0gbWVkaWFF
bGVtZW50LT5wbGF0Zm9ybUxheWVyKCk7CisgICAgICAgIGlmICghdmlkZW9MYXllciB8fCB2aWRl
b0xheWVyLT5zdXBlcmxheWVyKCkgIT0gbGF5ZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgRmxvYXRQb2ludCB2aWRlb0FuY2hvciA9IHZpZGVvTGF5ZXItPmFuY2hvclBvaW50KCk7
CisgICAgICAgIEZsb2F0UmVjdCBsYXllckJvdW5kcyA9IGxheWVyLT5ib3VuZHMoKTsKKyAgICAg
ICAgRmxvYXRSZWN0IHZpZGVvQm91bmRzID0gdmlkZW9MYXllci0+Ym91bmRzKCk7CisgICAgICAg
IEZsb2F0UG9pbnQgbGF5ZXJDZW50ZXIgPSBsYXllckJvdW5kcy5jZW50ZXIoKTsKKworICAgICAg
ICBGbG9hdFNpemUgbmF0dXJhbFNpemUgPSBtZWRpYUVsZW1lbnQtPnBsYXllcigpLT5uYXR1cmFs
U2l6ZSgpOworICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IDA7CisgICAgICAgIGlmIChuYXR1
cmFsU2l6ZS5hc3BlY3RSYXRpbygpID4gbGF5ZXJCb3VuZHMuc2l6ZSgpLmFzcGVjdFJhdGlvKCkp
CisgICAgICAgICAgICBzY2FsZUZhY3RvciA9IGxheWVyQm91bmRzLndpZHRoKCkgLyBuYXR1cmFs
U2l6ZS53aWR0aCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzY2FsZUZhY3RvciA9IGxh
eWVyQm91bmRzLmhlaWdodCgpIC8gbmF0dXJhbFNpemUuaGVpZ2h0KCk7CisgICAgICAgIG5hdHVy
YWxTaXplLnNjYWxlKHNjYWxlRmFjdG9yKTsKKyAgICAgICAgdmlkZW9Cb3VuZHMuc2V0U2l6ZShu
YXR1cmFsU2l6ZSk7CisKKyAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBjZW50ZXJlZCBwb3NpdGlv
biBiYXNlZCBvbiB0aGUgdmlkZW9BbmNob3IsIHZpZGVvQm91bmRzLCBhbmQgbGF5ZXJCb3VuZHM6
CisgICAgICAgIEZsb2F0UG9pbnQgdmlkZW9Qb3NpdGlvbjsKKyAgICAgICAgdmlkZW9Qb3NpdGlv
bi5zZXRYKGxheWVyQ2VudGVyLngoKSAtICgwLjUgLSB2aWRlb0FuY2hvci54KCkpICogdmlkZW9C
b3VuZHMud2lkdGgoKSk7CisgICAgICAgIHZpZGVvUG9zaXRpb24uc2V0WShsYXllckNlbnRlci55
KCkgLSAoMC41IC0gdmlkZW9BbmNob3IueSgpKSAqIHZpZGVvQm91bmRzLmhlaWdodCgpKTsKKyAg
ICAgICAgdmlkZW9MYXllci0+c2V0UG9zaXRpb24odmlkZW9Qb3NpdGlvbik7CisKKyAgICAgICAg
dmlkZW9MYXllci0+c2V0Qm91bmRzKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG5hdHVyYWxTaXpl
KSk7CisgICAgfQorCisgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogbV9wYXJlbnQ7Cit9
OworCiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
KCkKICAgICA6IG1faHVkV2luZG93KDApCi0gICAgLCBtX3ZpZGVvV2luZG93KDApCiAgICAgLCBt
X3BsYXlQYXVzZUJ1dHRvbihIVURCdXR0b246OlBsYXlQYXVzZUJ1dHRvbiwgSW50UG9pbnQoKHdp
bmRvd1dpZHRoIC0gYnV0dG9uU2l6ZSkgLyAyLCBtYXJnaW5Ub3ApKQogICAgICwgbV90aW1lU2xp
ZGVyQnV0dG9uKEhVREJ1dHRvbjo6VGltZVNsaWRlckJ1dHRvbiwgSW50UG9pbnQoMCwgMCkpCiAg
ICAgLCBtX3ZvbHVtZVVwQnV0dG9uKEhVREJ1dHRvbjo6Vm9sdW1lVXBCdXR0b24sIEludFBvaW50
KG1hcmdpbiArIGJ1dHRvbk1pbmlTaXplICsgdm9sdW1lU2xpZGVyV2lkdGggKyBidXR0b25NaW5p
U2l6ZSAvIDIsIG1hcmdpblRvcCArIChidXR0b25TaXplIC0gYnV0dG9uTWluaVNpemUpIC8gMikp
CkBAIC0xODMsMjUgKzIyOSwyMCBAQCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpGdWxsc2Ny
ZWVuVmlkCiAgICAgLCBtX2hpdFdpZGdldCgwKQogICAgICwgbV9tb3ZpbmdXaW5kb3coZmFsc2Up
CiAgICAgLCBtX3RpbWVyKHRoaXMsICZGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp0aW1lckZp
cmVkKQorICAgICwgbV9yb290Q2hpbGQoV2ViQ29yZTo6V0tDQUNGTGF5ZXI6OmNyZWF0ZShXZWJD
b3JlOjpXS0NBQ0ZMYXllcjo6TGF5ZXIpKQorICAgICwgbV9sYXlvdXRDbGllbnQobmV3IEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheW91dENsaWVudCh0aGlzKSkKIHsKKyAgICBtX3Jvb3RD
aGlsZC0+c2V0TGF5b3V0Q2xpZW50KG1fbGF5b3V0Q2xpZW50LmdldCgpKTsKIH0KIAogRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcjo6fkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIoKQogewotICAg
IGlmIChtb3ZpZSgpKQotICAgICAgICBtb3ZpZSgpLT5leGl0RnVsbHNjcmVlbigpOwotfQotCi1R
VE1vdmllR1dvcmxkKiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjptb3ZpZSgpIGNvbnN0Ci17
Ci0gICAgaWYgKCFtX21lZGlhRWxlbWVudCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgbV9yb290
Q2hpbGQtPnNldExheW91dENsaWVudCgwKTsKIAotICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1N
ZWRpYSA9IG1fbWVkaWFFbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCk7Ci0gICAgaWYgKHBsYXRmb3Jt
TWVkaWEudHlwZSAhPSBQbGF0Zm9ybU1lZGlhOjpRVE1vdmllR1dvcmxkVHlwZSkKLSAgICAgICAg
cmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gcGxhdGZvcm1NZWRpYS5tZWRpYS5xdE1vdmllR1dvcmxk
OworICAgIGlmIChtX2Z1bGxzY3JlZW5XaW5kb3cpIHsKKyAgICAgICAgbV9mdWxsc2NyZWVuV2lu
ZG93LT5jbG9zZSgpOworICAgICAgICBtX2Z1bGxzY3JlZW5XaW5kb3cgPSAwOworICAgIH0KIH0K
IAogdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRNZWRpYUVsZW1lbnQoSFRNTE1l
ZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQpAQCAtMjE4LDEzICsyNTksMTggQEAgdm9pZCBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRNZWRpYQogCiB2b2lkIEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXI6OmVudGVyRnVsbHNjcmVlbigpCiB7Ci0gICAgaWYgKCFtb3ZpZSgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBtX3ZpZGVvV2luZG93ID0gbW92aWUoKS0+ZW50ZXJGdWxsc2NyZWVu
KHRoaXMpOworICAgIGlmICghbV9mdWxsc2NyZWVuV2luZG93KSB7CisgICAgICAgIG1fZnVsbHNj
cmVlbldpbmRvdyA9IG5ldyBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93KHRoaXMp
OworICAgICAgICBtX2Z1bGxzY3JlZW5XaW5kb3ctPmNyZWF0ZVdpbmRvdygpOworICAgICAgICBt
X2Z1bGxzY3JlZW5XaW5kb3ctPnNldFJvb3RDaGlsZExheWVyKG1fcm9vdENoaWxkKTsKKyAgICB9
CiAKKyAgICBXZWJDb3JlOjpXS0NBQ0ZMYXllciogdmlkZW9MYXllciA9IG1fbWVkaWFFbGVtZW50
LT5wbGF5ZXIoKS0+cGxhdGZvcm1MYXllcigpOworICAgIG1fcm9vdENoaWxkLT5hZGRTdWJsYXll
cih2aWRlb0xheWVyKTsKKyAgICBtX3Jvb3RDaGlsZC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICAK
ICAgICBSRUNUIHdpbmRvd1JlY3Q7Ci0gICAgR2V0Q2xpZW50UmVjdChtX3ZpZGVvV2luZG93LCAm
d2luZG93UmVjdCk7CisgICAgR2V0Q2xpZW50UmVjdChtX2Z1bGxzY3JlZW5XaW5kb3ctPmh3bmQo
KSwgJndpbmRvd1JlY3QpOwogICAgIG1fZnVsbHNjcmVlblNpemUuc2V0V2lkdGgod2luZG93UmVj
dC5yaWdodCAtIHdpbmRvd1JlY3QubGVmdCk7CiAgICAgbV9mdWxsc2NyZWVuU2l6ZS5zZXRIZWln
aHQod2luZG93UmVjdC5ib3R0b20gLSB3aW5kb3dSZWN0LnRvcCk7CiAKQEAgLTIzMywxMyArMjc5
LDIzIEBAIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZW50ZXJGdWwKIAogdm9pZCBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpleGl0RnVsbHNjcmVlbigpCiB7Ci0gICAgU2V0V2lu
ZG93TG9uZ1B0cihtX2h1ZFdpbmRvdywgMCwgMCk7Ci0gICAgaWYgKG1vdmllKCkpCi0gICAgICAg
IG1vdmllKCktPmV4aXRGdWxsc2NyZWVuKCk7Ci0KLSAgICBBU1NFUlQoIUlzV2luZG93KG1faHVk
V2luZG93KSk7Ci0gICAgbV92aWRlb1dpbmRvdyA9IDA7Ci0gICAgbV9odWRXaW5kb3cgPSAwOwor
ICAgIGlmIChtX2Z1bGxzY3JlZW5XaW5kb3cpIHsKKyAgICAgICAgbV9mdWxsc2NyZWVuV2luZG93
LT5jbG9zZSgpOworICAgICAgICBtX2Z1bGxzY3JlZW5XaW5kb3ctPnNldFJvb3RDaGlsZExheWVy
KDApOworICAgICAgICBtX2Z1bGxzY3JlZW5XaW5kb3cgPSAwOworICAgIH0KKworICAgIGlmICht
X2h1ZFdpbmRvdykgeworICAgICAgICBTZXRXaW5kb3dMb25nUHRyKG1faHVkV2luZG93LCAwLCAw
KTsKKyAgICAgICAgOjpEZXN0cm95V2luZG93KG1faHVkV2luZG93KTsKKyAgICAgICAgbV9odWRX
aW5kb3cgPSAwOworICAgIH0KKworICAgIC8vIEFzIGEgc2lkZSBlZmZlY3Qgb2Ygc2V0dGluZyB0
aGUgcGxheWVyIHRvIGludmlzaWJsZS92aXNpYmxlLAorICAgIC8vIHRoZSBwbGF5ZXIncyBsYXll
ciB3aWxsIGJlIHJlY3JlYXRlZCwgYW5kIHdpbGwgYmUgcGlja2VkIHVwIAorICAgIC8vIHRoZSBu
ZXh0IHRpbWUgdGhlIGxheWVyIHRyZWUgaXMgc3luY2hlZC4KKyAgICBtX21lZGlhRWxlbWVudC0+
cGxheWVyKCktPnNldFZpc2libGUoMCk7CisgICAgbV9tZWRpYUVsZW1lbnQtPnBsYXllcigpLT5z
ZXRWaXNpYmxlKDEpOwogfQogCiBib29sIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmNhblBs
YXkoKSBjb25zdApAQCAtMzE2LDYgKzM3Miw5IEBAIExSRVNVTFQgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcjo6ZnVsbHMKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXTV9MQlVUVE9OVVA6CiAg
ICAgICAgIG9uTW91c2VVcChJbnRQb2ludChHRVRfWF9MUEFSQU0obFBhcmFtKSwgR0VUX1lfTFBB
UkFNKGxQYXJhbSkpKTsKKyAgICBjYXNlIFdNX0FDVElWQVRFQVBQOgorICAgICAgICBpZiAoIXdQ
YXJhbSkKKyAgICAgICAgICAgIG1fbWVkaWFFbGVtZW50LT5leGl0RnVsbHNjcmVlbigpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAKQEAgLTM2NCw3ICs0MjMsNyBAQCB2b2lkIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OmNyZWF0ZUhVCiAgICAgCiAgICAgLy8gRGlydHkgdGhlIHdpbmRvdyBz
byB0aGUgSFVEIGRyYXdzCiAgICAgUkVDVCBjbGVhclJlY3QgPSB7IG1faHVkUG9zaXRpb24ueCgp
LCBtX2h1ZFBvc2l0aW9uLnkoKSwgbV9odWRQb3NpdGlvbi54KCkgKyB3aW5kb3dXaWR0aCwgbV9o
dWRQb3NpdGlvbi55KCkgKyB3aW5kb3dIZWlnaHQgfTsKLSAgICBJbnZhbGlkYXRlUmVjdChtX3Zp
ZGVvV2luZG93LCAmY2xlYXJSZWN0LCB0cnVlKTsKKyAgICBJbnZhbGlkYXRlUmVjdChtX2Z1bGxz
Y3JlZW5XaW5kb3ctPmh3bmQoKSwgJmNsZWFyUmVjdCwgdHJ1ZSk7CiAKICAgICBtX3BsYXlQYXVz
ZUJ1dHRvbi5zZXRTaG93QWx0QnV0dG9uKCFjYW5QbGF5KCkpOwogICAgIG1fdm9sdW1lU2xpZGVy
LnNldFZhbHVlKHZvbHVtZSgpKTsKQEAgLTM3Nyw3ICs0MzYsNyBAQCB2b2lkIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OmNyZWF0ZUhVCiAKICAgICBtX2h1ZFdpbmRvdyA9IENyZWF0ZVdpbmRv
d0V4KFdTX0VYX0xBWUVSRUQgfCBXU19FWF9UUkFOU1BBUkVOVCB8IFdTX0VYX1RPT0xXSU5ET1cs
IAogICAgICAgICBmdWxsc2NyZWVuVmlkZWVvSFVEV2luZG93Q2xhc3NOYW1lLCAwLCBXU19QT1BV
UCB8IFdTX1ZJU0lCTEUsCi0gICAgICAgIG1faHVkUG9zaXRpb24ueCgpLCBtX2h1ZFBvc2l0aW9u
LnkoKSwgMCwgMCwgbV92aWRlb1dpbmRvdywgMCwgZ0luc3RhbmNlLCAwKTsKKyAgICAgICAgbV9o
dWRQb3NpdGlvbi54KCksIG1faHVkUG9zaXRpb24ueSgpLCAwLCAwLCBtX2Z1bGxzY3JlZW5XaW5k
b3ctPmh3bmQoKSwgMCwgZ0luc3RhbmNlLCAwKTsKICAgICBBU1NFUlQoOjpJc1dpbmRvdyhtX2h1
ZFdpbmRvdykpOwogICAgIFNldFdpbmRvd0xvbmdQdHIobV9odWRXaW5kb3csIDAsIHJlaW50ZXJw
cmV0X2Nhc3Q8TE9OR19QVFI+KHRoaXMpKTsKIApJbmRleDogV2ViS2l0L3dpbi9GdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyLmgJKHJldmlzaW9uIDYwMDI3KQorKysgV2ViS2l0L3dpbi9GdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lm
IEVOQUJMRShWSURFTykKIAotI2luY2x1ZGUgIlFUTW92aWVHV29ybGQuaCIKKyNpbmNsdWRlICJN
ZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgiCiAKICNpbmNsdWRlIDxXZWJDb3Jl
L0hUTUxNZWRpYUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlLmg+CkBAIC0zOCw2
ICszOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsK
K2NsYXNzIFdLQ0FDRkxheWVyOwogfQogCiBjbGFzcyBIVURXaWRnZXQgewpAQCAtOTksNyArMTAw
LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9kcmFnU3RhcnRPZmZzZXQ7CiB9OwogCi1jbGFzcyBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyIDogUVRNb3ZpZUdXb3JsZEZ1bGxzY3JlZW5DbGllbnQs
IHB1YmxpYyBOb25jb3B5YWJsZSB7CitjbGFzcyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyIDog
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCwgcHVibGljIE5vbmNv
cHlhYmxlIHsKIHB1YmxpYzoKICAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCk7CiAgICAg
dmlydHVhbCB+RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcigpOwpAQCAtMTExLDEyICsxMTIsMTEg
QEAgcHVibGljOgogICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsKIAogcHJpdmF0ZToKLSAgICAv
LyBRVE1vdmllR1dvcmxkRnVsbHNjcmVlbkNsaWVudAorICAgIC8vIE1lZGlhUGxheWVyUHJpdmF0
ZUZ1bGxzY3JlZW5XaW5kb3dDbGllbnQKICAgICB2aXJ0dWFsIExSRVNVTFQgZnVsbHNjcmVlbkNs
aWVudFduZFByb2MoSFdORCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0sIExQQVJBTSk7CiAKICAgICB2
b2lkIGVuc3VyZVdpbmRvdygpOwotICAgIFFUTW92aWVHV29ybGQqIG1vdmllKCkgY29uc3Q7Ci0K
KyAgICAKICAgICBib29sIGNhblBsYXkoKSBjb25zdDsKICAgICB2b2lkIHBsYXkoKTsKICAgICB2
b2lkIHBhdXNlKCk7CkBAIC0xNDgsMTAgKzE0OCwxNiBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRy
PFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ+IG1fbWVkaWFFbGVtZW50OwogCi0gICAgSFdORCBt
X2h1ZFdpbmRvdywgbV92aWRlb1dpbmRvdzsKKyAgICBIV05EIG1faHVkV2luZG93OwogICAgIE93
blB0cjxIQklUTUFQPiBtX2JpdG1hcDsKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fZnVsbHNjcmVl
blNpemU7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9odWRQb3NpdGlvbjsKKyAgICBPd25QdHI8
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4gbV9mdWxsc2NyZWVu
V2luZG93OworICAgIFJlZlB0cjxXZWJDb3JlOjpXS0NBQ0ZMYXllcj4gbV9yb290Q2hpbGQ7CisK
KyAgICBjbGFzcyBMYXlvdXRDbGllbnQ7CisgICAgZnJpZW5kIGNsYXNzIExheW91dENsaWVudDsK
KyAgICBPd25QdHI8TGF5b3V0Q2xpZW50PiBtX2xheW91dENsaWVudDsKIAogICAgIEhVREJ1dHRv
biBtX3BsYXlQYXVzZUJ1dHRvbjsKICAgICBIVURCdXR0b24gbV90aW1lU2xpZGVyQnV0dG9uOwpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gNjAwMjgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wNS0yMiAgSmVyIE5vYmxlICA8amVyLm5v
YmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZS1lbmFibGVkIGZ1bGxzY3JlZW4gc3VwcG9ydCBvbiB3aW5kb3dzLCBhbmQgbW9k
aWZpZWQgdGVzdHMgdG8gbWF0Y2guCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vbWVkaWEvY29u
dHJvbHMtYWZ0ZXItcmVsb2FkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
bWVkaWEvY29udHJvbHMtZHJhZy10aW1lYmFyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0
Zm9ybS93aW4vbWVkaWEvY29udHJvbHMtc3RyaWN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBw
bGF0Zm9ybS93aW4vbWVkaWEvY29udHJvbHMtc3R5bGluZy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogcGxhdGZvcm0vd2luL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXJlbmRlcmluZy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogcGxhdGZvcm0vd2luL21lZGlhL3ZpZGVvLWRpc3BsYXktdG9nZ2xlLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vbWVkaWEvdmlkZW8tbm8tYXVkaW8t
ZXhwZWN0ZWQudHh0OgorCiAyMDEwLTA1LTIyICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1hZnRlci1yZWxvYWQtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9s
cy1hZnRlci1yZWxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MDAyNykKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1hZnRlci1yZWxvYWQtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xNyw5ICsxNywxMCBAQCBsYXllciBhdCAoOCw0Mikgc2l6ZSAz
MjB4MjQwCiBsYXllciBhdCAoOCwyNjYpIHNpemUgMzIweDE2CiAgIFJlbmRlckZsZXhpYmxlQm94
IChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCwyMjQpIHNpemUgMzIweDE2CiAgICAgUmVuZGVyQnV0
dG9uIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAxNngxNgotICAgIFJlbmRlckZsZXhpYmxlQm94IHtE
SVZ9IGF0ICgxNiwwKSBzaXplIDI1NngxNgotICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQg
KDAsMCkgc2l6ZSAyNTZ4MTYKKyAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkg
c2l6ZSAyNDB4MTYKKyAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjQw
eDE2CiAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDEpIHNpemUgMTN4MTQKKyAgICBS
ZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjU2LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0
b24ge0lOUFVUfSBhdCAoMjcyLDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVU
fSBhdCAoMjg4LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzA0
LDApIHNpemUgMTZ4MTYKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS9jb250
cm9scy1kcmFnLXRpbWViYXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1kcmFnLXRpbWViYXItZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiA2MDAyNykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9s
cy1kcmFnLXRpbWViYXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDEwICs0LDEw
IEBAIFJVTih2aWRlby5hdXRvcGxheSA9IHRydWUpCiBSVU4odmlkZW8uc3JjID0gJ2NvbnRlbnQv
dGVzdC5tcDQnKQogRVZFTlQocGxheWluZykKIEVWRU5UKHNlZWtlZCkKLVRpbWU6IDIuMQorVGlt
ZTogMi4zCiBFVkVOVChzZWVrZWQpCi1UaW1lOiAyLjYKK1RpbWU6IDIuOAogRVZFTlQoc2Vla2Vk
KQotVGltZTogMy4xCitUaW1lOiAzLjQKIEVORCBPRiBURVNUCiAKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1zdHJpY3QtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1zdHJpY3QtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiA2MDAyNykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9t
ZWRpYS9jb250cm9scy1zdHJpY3QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNyw5
ICsxNywxMCBAQCBsYXllciBhdCAoOCw1MCkgc2l6ZSAzMjB4MjQwCiBsYXllciBhdCAoOCwyNzQp
IHNpemUgMzIweDE2CiAgIFJlbmRlckZsZXhpYmxlQm94IChwb3NpdGlvbmVkKSB7RElWfSBhdCAo
MCwyMjQpIHNpemUgMzIweDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDAsMCkgc2l6
ZSAxNngxNgotICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI1Nngx
NgotICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNTZ4MTYKKyAgICBS
ZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNDB4MTYKKyAgICAgIFJlbmRl
clNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjQweDE2CiAgICAgICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgyLDEpIHNpemUgMTN4MTQKKyAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAo
MjU2LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjcyLDApIHNp
emUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjg4LDApIHNpemUgMTZ4MTYK
ICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzA0LDApIHNpemUgMTZ4MTYKSW5kZXg6IExh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1zdHlsaW5nLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvY29udHJvbHMt
c3R5bGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYwMDI3KQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLXN0eWxpbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0yMSw5ICsyMSwxMCBAQCBsYXllciBhdCAoMTgsNDIpIHNpemUgMzIweDI0MAogbGF5
ZXIgYXQgKDE4LDI2Nikgc2l6ZSAzMjB4MTYKICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9u
ZWQpIHtESVZ9IGF0ICgwLDIyNCkgc2l6ZSAzMjB4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVU
fSBhdCAoMCwwKSBzaXplIDE2eDE2Ci0gICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2
LDApIHNpemUgMjU2eDE2Ci0gICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXpl
IDI1NngxNgorICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI0MHgx
NgorICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNDB4MTYKICAgICAg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMSkgc2l6ZSAxM3gxNAorICAgIFJlbmRlckJ1dHRv
biB7SU5QVVR9IGF0ICgyNTYsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9
IGF0ICgyNzIsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODgs
MCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMDQsMCkgc2l6ZSAx
NngxNgpAQCAtMzIsOSArMzMsMTAgQEAgbGF5ZXIgYXQgKDgsMjgyKSBzaXplIDMyMHgyNDAKIGxh
eWVyIGF0ICg4LDUwNikgc2l6ZSAzMjB4MTYKICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9u
ZWQpIHtESVZ9IGF0ICgwLDIyNCkgc2l6ZSAzMjB4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVU
fSBhdCAoMCwwKSBzaXplIDE2eDE2Ci0gICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2
LDApIHNpemUgMjU2eDE2Ci0gICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXpl
IDI1NngxNgorICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI0MHgx
NgorICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNDB4MTYKICAgICAg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMSkgc2l6ZSAxM3gxNAorICAgIFJlbmRlckJ1dHRv
biB7SU5QVVR9IGF0ICgyNTYsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9
IGF0ICgyNzIsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODgs
MCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMDQsMCkgc2l6ZSAx
NngxNgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL3ZpZGVvLWNvbnRyb2xz
LXJlbmRlcmluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXJlbmRlcmluZy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDYwMDI3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL3ZpZGVvLWNvbnRy
b2xzLXJlbmRlcmluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIwLDkgKzIwLDEw
IEBAIGxheWVyIGF0ICg4LDQyKSBzaXplIDMyMHgyNDAKIGxheWVyIGF0ICg4LDI2Nikgc2l6ZSAz
MjB4MTYKICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDIyNCkg
c2l6ZSAzMjB4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMCwwKSBzaXplIDE2eDE2
Ci0gICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUgMjU2eDE2Ci0gICAg
ICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI1NngxNgorICAgIFJlbmRlckZs
ZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI0MHgxNgorICAgICAgUmVuZGVyU2xpZGVy
IHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNDB4MTYKICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0g
YXQgKDIsMSkgc2l6ZSAxM3gxNAorICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNTYsMCkg
c2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNzIsMCkgc2l6ZSAxNngx
NgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODgsMCkgc2l6ZSAxNngxNgogICAgIFJl
bmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMDQsMCkgc2l6ZSAxNngxNgpAQCAtMzEsOSArMzIsMTAg
QEAgbGF5ZXIgYXQgKDgsMjgyKSBzaXplIDMyMHgyNDAKIGxheWVyIGF0ICg4LDUwNikgc2l6ZSAz
MjB4MTYKICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDIyNCkg
c2l6ZSAzMjB4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMCwwKSBzaXplIDE2eDE2
Ci0gICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUgMjU2eDE2Ci0gICAg
ICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI1NngxNgorICAgIFJlbmRlckZs
ZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI0MHgxNgorICAgICAgUmVuZGVyU2xpZGVy
IHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNDB4MTYKICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0g
YXQgKDIsMSkgc2l6ZSAxM3gxNAorICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNTYsMCkg
c2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNzIsMCkgc2l6ZSAxNngx
NgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODgsMCkgc2l6ZSAxNngxNgogICAgIFJl
bmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMDQsMCkgc2l6ZSAxNngxNgpAQCAtNDQsOSArNDYsMTAg
QEAgbGF5ZXIgYXQgKDgsNTIyKSBzaXplIDMyMHgyNDAKIGxheWVyIGF0ICg4LDc0Nikgc2l6ZSAz
MjB4MTYKICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDIyNCkg
c2l6ZSAzMjB4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMCwwKSBzaXplIDE2eDE2
Ci0gICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUgMjU2eDE2Ci0gICAg
ICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI1NngxNgorICAgIFJlbmRlckZs
ZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI0MHgxNgorICAgICAgUmVuZGVyU2xpZGVy
IHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNDB4MTYKICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0g
YXQgKDIsMSkgc2l6ZSAxM3gxNAorICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNTYsMCkg
c2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNzIsMCkgc2l6ZSAxNngx
NgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODgsMCkgc2l6ZSAxNngxNgogICAgIFJl
bmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMDQsMCkgc2l6ZSAxNngxNgpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luL21lZGlhL3ZpZGVvLWRpc3BsYXktdG9nZ2xlLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvdmlkZW8tZGlzcGxh
eS10b2dnbGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MDAyNykKKysrIExheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbi9tZWRpYS92aWRlby1kaXNwbGF5LXRvZ2dsZS1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTE2LDkgKzE2LDEwIEBAIGxheWVyIGF0ICg4LDI2KSBzaXplIDMyMHgyNDAK
IGxheWVyIGF0ICg4LDI1MCkgc2l6ZSAzMjB4MTYKICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0
aW9uZWQpIHtESVZ9IGF0ICgwLDIyNCkgc2l6ZSAzMjB4MTYKICAgICBSZW5kZXJCdXR0b24ge0lO
UFVUfSBhdCAoMCwwKSBzaXplIDE2eDE2Ci0gICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQg
KDE2LDApIHNpemUgMjU2eDE2Ci0gICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBz
aXplIDI1NngxNgorICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI0
MHgxNgorICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNDB4MTYKICAg
ICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMSkgc2l6ZSAxM3gxNAorICAgIFJlbmRlckJ1
dHRvbiB7SU5QVVR9IGF0ICgyNTYsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5Q
VVR9IGF0ICgyNzIsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgy
ODgsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMDQsMCkgc2l6
ZSAxNngxNgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL3ZpZGVvLW5vLWF1
ZGlvLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
bWVkaWEvdmlkZW8tbm8tYXVkaW8tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MDAyNykKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS92aWRlby1uby1hdWRpby1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTE3LDggKzE3LDkgQEAgbGF5ZXIgYXQgKDgsNDIpIHNpemUgMzUy
eDI4OAogbGF5ZXIgYXQgKDgsMzE0KSBzaXplIDM1MngxNgogICBSZW5kZXJGbGV4aWJsZUJveCAo
cG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMjcyKSBzaXplIDM1MngxNgogICAgIFJlbmRlckJ1dHRv
biB7SU5QVVR9IGF0ICgwLDApIHNpemUgMTZ4MTYKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElW
fSBhdCAoMTYsMCkgc2l6ZSAzMDR4MTYKLSAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgw
LDApIHNpemUgMzA0eDE2CisgICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNp
emUgMjg4eDE2CisgICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI4OHgx
NgogICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiwxKSBzaXplIDEzeDE0CisgICAgUmVu
ZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMwNCwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9u
IHtJTlBVVH0gYXQgKDMyMCwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0g
YXQgKDMzNiwwKSBzaXplIDE2eDE2Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56830</attachid>
            <date>2010-05-23 14:14:26 -0700</date>
            <delta_ts>2010-05-24 08:07:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39557-20100523141429.patch</filename>
            <type>text/plain</type>
            <size>39135</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDA0OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTAtMDUtMjIgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZnVs
bCBzY3JlZW4gZG9lc24ndCB3b3JrIGZvciB2aWRlbyBlbGVtZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk1NTcKKyAgICAgICAgcmRhcjovL3By
b2JsZW0vODAxMTgxMworICAgICAgICAKKyAgICAgICAgQWRkIGZ1bGxzY3JlZW4gc3VwcG9ydCBm
b3IgTWVkaWFQbGF5ZXJQcml2YXRlVmlzdWFsQ29udGV4dC4gIEEgbmV3IGNsYXNzLCBNZWRpYVBs
YXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LAorICAgICAgICBwcm92aWRlcyB0aGUgZnVsbHNj
cmVlbiBod25kIGFuZCBsYXllciByZW5kZXJlci4gIEFueSBXS0NBQ0ZMYXllciBjYW4gYmUgcHJv
dmlkZWQgdG8gTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdworICAgICAgICBzbyBm
dXR1cmUgYWRkaXRpb25hbCBNZWRpYVBsYXllclByaXZhdGUgaW1wbGVtZW50YXRpb25zIGNhbiB1
c2UgdGhlIGZ1bGxzY3JlZW4gd2luZG93LgorICAgICAgICAKKyAgICAgICAgTWlub3IgYWRkaXRp
b25zIGhhdmUgYmVlbiBtYWRlIHRvIHRoZSBGbG9hdFNpemUgYW5kIEludFNpemUgY2xhc3Nlcy4K
KworICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oOiBBZGRlZCBhc3BlY3RSYXRpbygpLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaDogQWRkZWQgYXNwZWN0UmF0aW8oKSBhbmQg
c2NhbGUoZmxvYXQpLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVGdWxsc2NyZWVuV2luZG93LmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNr
VGltZVZpc3VhbENvbnRleHQuY3BwOiBDYWxsIHJldHJpZXZlQ3VycmVudEltYWdlKCkgYWZ0ZXIg
Y3JlYXRpbmcgdGhlIHZpZGVvTGF5ZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1dLQ0FDRkxheWVyLmNwcDogCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FD
RkxheWVyLmg6IEFkZCBsYXlvdXQgY2xpZW50IGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6V0tD
QUNGTGF5ZXI6OmZyYW1lKTogQWRkZWQgYmFjayBmcmFtZSgpL3NldEZyYW1lKCkuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dlYlRpbGVkTGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViVGlsZWRMYXllcjo6c2V0RnJhbWUpOiBJbXBsYW1lbnRlZCBzZXRGcmFtZSgpIGlu
IHN1YmNsYXNzIG9mIFdLQ0FDRkxheWVyCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1dlYlRpbGVkTGF5ZXIuaDoKKworCiAyMDEwLTA1LTIzICBBZGFtIEJhcnRoICA8YWJhcnRoQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDYwMDQ4KQorKysgV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjM3OTEs
NiArMjM3OTEsMTQgQEAKIAkJCQkJCT4NCiAJCQkJCTwvRmlsZT4NCiAJCQkJCTxGaWxlDQorCQkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cTWVkaWFQbGF5ZXJQcml2
YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAiDQorCQkJCQkJPg0KKwkJCQkJPC9GaWxlPg0KKwkJCQkJ
PEZpbGUNCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxNZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgiDQorCQkJCQkJPg0KKwkJCQkJPC9GaWxl
Pg0KKwkJCQkJPEZpbGUNCiAJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNz
XHdpblxNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcCINCiAJCQkJ
CQk+DQogCQkJCQk8L0ZpbGU+DQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9h
dFNpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6
ZS5oCShyZXZpc2lvbiA2MDA0OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRT
aXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDE0IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGggPD0gMCB8fCBtX2hlaWdodCA8PSAw
OyB9CiAKKyAgICBmbG9hdCBhc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGggLyBt
X2hlaWdodDsgfQorCisgICAgdm9pZCBzY2FsZShmbG9hdCBzY2FsZSkKKyAgICB7CisgICAgICAg
IG1fd2lkdGggPSBtX3dpZHRoICogc2NhbGU7CisgICAgICAgIG1faGVpZ2h0ID0gbV9oZWlnaHQg
KiBzY2FsZTsKKyAgICB9CisKICAgICBGbG9hdFNpemUgZXhwYW5kZWRUbyhjb25zdCBGbG9hdFNp
emUmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIEZsb2F0U2l6ZShtX3dpZHRo
ID4gb3RoZXIubV93aWR0aCA/IG1fd2lkdGggOiBvdGhlci5tX3dpZHRoLApJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgJKHJldmlzaW9uIDYwMDQ4KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDggQEAg
cHVibGljOgogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV93aWR0aCA8PSAw
IHx8IG1faGVpZ2h0IDw9IDA7IH0KICAgICBib29sIGlzWmVybygpIGNvbnN0IHsgcmV0dXJuICFt
X3dpZHRoICYmICFtX2hlaWdodDsgfQorCisgICAgZmxvYXQgYXNwZWN0UmF0aW8oKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obV93aWR0aCkgLyBzdGF0aWNfY2FzdDxmbG9hdD4o
bV9oZWlnaHQpOyB9CiAgICAgCiAgICAgdm9pZCBleHBhbmQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KQogICAgIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVy
UHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuY3BwCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQ
cml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0IAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIAorICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0IAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgk0FTIElTlCAKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiAKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiAK
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIAorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiAKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRl
ICJNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgiCisKKyNpbmNsdWRlICJXZWJD
b3JlSW5zdGFuY2VIYW5kbGUuaCIKKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dDb2xvci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5k
b3c6Ok1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3coTWVkaWFQbGF5ZXJQcml2YXRl
RnVsbHNjcmVlbkNsaWVudCogY2xpZW50KQorICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgICwg
bV9od25kKDApCit7CisgICAgbV9sYXllclJlbmRlcmVyID0gV0tDQUNGTGF5ZXJSZW5kZXJlcjo6
Y3JlYXRlKDApOworfQorCitNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93Ojp+TWVk
aWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdygpCit7CisgICAgbV9jbGllbnQgPSAwOwor
fQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OmNyZWF0ZVdpbmRv
dygpCit7CisgICAgc3RhdGljIEFUT00gd2luZG93QXRvbSA9IDA7CisgICAgaWYgKCF3aW5kb3dB
dG9tKSB7CisgICAgICAgIFdORENMQVNTRVggd2NleCA9IHswfTsKKyAgICAgICAgd2NleC5jYlNp
emUgICAgICAgICA9IHNpemVvZihXTkRDTEFTU0VYKTsKKyAgICAgICAgd2NleC5zdHlsZSAgICAg
ICAgICA9IENTX0hSRURSQVcgfCBDU19WUkVEUkFXIHwgQ1NfT1dOREM7CisgICAgICAgIHdjZXgu
bHBmblduZFByb2MgICAgPSAmc3RhdGljV25kUHJvYzsKKyAgICAgICAgd2NleC5oSW5zdGFuY2Ug
ICAgICA9IFdlYkNvcmU6Omluc3RhbmNlSGFuZGxlKCk7CisgICAgICAgIHdjZXgubHBzekNsYXNz
TmFtZSAgPSBMIk1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3dDbGFzcyI7CisgICAg
ICAgIHdpbmRvd0F0b20gPSA6OlJlZ2lzdGVyQ2xhc3NFeCgmd2NleCk7CisgICAgfQorCisgICAg
aWYgKG1faHduZCkKKyAgICAgICAgY2xvc2UoKTsKKworICAgIE1PTklUT1JJTkZPIG1pID0gezB9
OworICAgIG1pLmNiU2l6ZSA9IHNpemVvZihNT05JVE9SSU5GTyk7CisgICAgR2V0TW9uaXRvcklu
Zm8oTW9uaXRvckZyb21XaW5kb3coMCwgTU9OSVRPUl9ERUZBVUxUVE9QUklNQVJZKSwgJm1pKTsK
KyAgICBJbnRSZWN0IG1vbml0b3JSZWN0ID0gbWkucmNNb25pdG9yOworCisgICAgQ1JFQVRFU1RS
VUNUVyBjcyA9IHswfTsKKyAgICBjcy54ID0gMDsKKyAgICBjcy55ID0gMDsKKyAgICBjcy5jeCA9
IG1vbml0b3JSZWN0LndpZHRoKCk7CisgICAgY3MuY3kgPSBtb25pdG9yUmVjdC5oZWlnaHQoKTsK
KyAgICBjcy5zdHlsZSA9IFdTX1BPUFVQIHwgV1NfVklTSUJMRTsKKyAgICBjcy5kd0V4U3R5bGUg
PSAwOworICAgIGNzLmxwc3pDbGFzcyA9IEwiTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldp
bmRvd0NsYXNzIjsKKyAgICBjcy5scHN6TmFtZSA9IEwiIjsKKyAgICBjcy5scENyZWF0ZVBhcmFt
cyA9IChMUFZPSUQpdGhpczsKKyAgICAKKyAgICBtX2h3bmQgPSA6OkNyZWF0ZVdpbmRvd0V4Vyhj
cy5kd0V4U3R5bGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzLmxwc3pDbGFzcywg
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3MubHBzek5hbWUsIAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNzLnN0eWxlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
cy54LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcy55LCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjcy5jeCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3MuY3ks
IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzLmh3bmRQYXJlbnQsIAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNzLmhNZW51LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjcy5oSW5zdGFuY2UsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzLmxwQ3JlYXRl
UGFyYW1zKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93Ojpj
bG9zZSgpCit7CisgICAgOjpEZXN0cm95V2luZG93KG1faHduZCk7CisgICAgbV9od25kID0gMDsK
K30KKworSFdORCBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93Ojpod25kKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9od25kOworfQorCitXS0NBQ0ZMYXllclJlbmRlcmVyKiBNZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93OjpsYXllclJlbmRlcmVyKCkKK3sKKyAgICBy
ZXR1cm4gbV9sYXllclJlbmRlcmVyLmdldCgpOworfQorCitXS0NBQ0ZMYXllciogTWVkaWFQbGF5
ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6cm9vdENoaWxkTGF5ZXIoKQoreworICAgIHJldHVy
biBtX3Jvb3RDaGlsZC5nZXQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVGdWxsc2Ny
ZWVuV2luZG93OjpzZXRSb290Q2hpbGRMYXllcihQYXNzUmVmUHRyPFdLQ0FDRkxheWVyPiByb290
Q2hpbGQpCit7CisgICAgaWYgKG1fcm9vdENoaWxkICE9IHJvb3RDaGlsZCkgeworCisgICAgICAg
IGlmIChtX3Jvb3RDaGlsZCkgeworICAgICAgICAgICAgbV9yb290Q2hpbGQtPnJlbW92ZUZyb21T
dXBlcmxheWVyKCk7CisgICAgICAgICAgICBtX3Jvb3RDaGlsZC5jbGVhcigpOworICAgICAgICB9
CisKKyAgICAgICAgbV9yb290Q2hpbGQgPSByb290Q2hpbGQ7CisgICAgfQorCisgICAgaWYgKG1f
cm9vdENoaWxkKSB7CisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0Um9vdENoaWxkTGF5ZXIo
bV9yb290Q2hpbGQuZ2V0KCkpOworICAgICAgICBXS0NBQ0ZMYXllciogcm9vdExheWVyID0gbV9y
b290Q2hpbGQtPnJvb3RMYXllcigpOworICAgICAgICBDR1JlY3Qgcm9vdEJvdW5kcyA9IG1fcm9v
dENoaWxkLT5yb290TGF5ZXIoKS0+Ym91bmRzKCk7CisgICAgICAgIG1fcm9vdENoaWxkLT5zZXRG
cmFtZShyb290Qm91bmRzKTsKKyAgICAgICAgbV9sYXllclJlbmRlcmVyLT5zZXRTY3JvbGxGcmFt
ZShJbnRQb2ludChyb290Qm91bmRzLm9yaWdpbiksIEludFNpemUocm9vdEJvdW5kcy5zaXplKSk7
CisgICAgICAgIG1fcm9vdENoaWxkLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ0dDb2xvckdldENvbnN0
YW50Q29sb3Ioa0NHQ29sb3JCbGFjaykpOworICAgICAgICByb290TGF5ZXItPnNldEJhY2tncm91
bmRDb2xvcihDR0NvbG9yR2V0Q29uc3RhbnRDb2xvcihrQ0dDb2xvckJsYWNrKSk7CisgICAgfQor
fQorCitMUkVTVUxUIENBTExCQUNLIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6
OnN0YXRpY1duZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQ
QVJBTSBsUGFyYW0pCit7CisgICAgTE9OR19QVFIgbG9uZ1B0ciA9IEdldFdpbmRvd0xvbmdQdHIo
aFduZCwgR1dMUF9VU0VSREFUQSk7CisKKyAgICBpZiAoIWxvbmdQdHIgJiYgbWVzc2FnZSA9PSBX
TV9DUkVBVEUpIHsKKyAgICAgICAgTFBDUkVBVEVTVFJVQ1QgbHBjcyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8TFBDUkVBVEVTVFJVQ1Q+KGxQYXJhbSk7CisgICAgICAgIGxvbmdQdHIgPSAoTE9OR19QVFIp
bHBjcy0+bHBDcmVhdGVQYXJhbXM7CisgICAgICAgIDo6U2V0V2luZG93TG9uZ1B0cihoV25kLCBH
V0xQX1VTRVJEQVRBLCBsb25nUHRyKTsKKyAgICB9CisKKyAgICBpZiAoTWVkaWFQbGF5ZXJQcml2
YXRlRnVsbHNjcmVlbldpbmRvdyogd2luZG93ID0gcmVpbnRlcnByZXRfY2FzdDxNZWRpYVBsYXll
clByaXZhdGVGdWxsc2NyZWVuV2luZG93Kj4obG9uZ1B0cikpCisgICAgICAgIHJldHVybiB3aW5k
b3ctPnduZFByb2MoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOworCisgICAgcmV0dXJu
IDo6RGVmV2luZG93UHJvYyhoV25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7ICAgIAorfQor
CitMUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OnduZFByb2MoSFdO
RCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCit7Cisg
ICAgTFJFU1VMVCBsUmVzdWx0ID0gMDsKKyAgICBzd2l0Y2ggKG1lc3NhZ2UpIHsKKyAgICBjYXNl
IFdNX0NSRUFURToKKyAgICAgICAgbV9od25kID0gaFduZDsKKyAgICAgICAgbV9sYXllclJlbmRl
cmVyLT5zZXRIb3N0V2luZG93KG1faHduZCk7CisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+Y3Jl
YXRlUmVuZGVyZXIoKTsKKyAgICAgICAgbV9sYXllclJlbmRlcmVyLT5zZXROZWVkc0Rpc3BsYXko
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXTV9ERVNUUk9ZOgorICAgICAgICBtX2h3bmQg
PSAwOworICAgICAgICBtX2xheWVyUmVuZGVyZXItPmRlc3Ryb3lSZW5kZXJlcigpOworICAgICAg
ICBtX2xheWVyUmVuZGVyZXItPnNldEhvc3RXaW5kb3coMCk7CisgICAgY2FzZSBXTV9XSU5ET1dQ
T1NDSEFOR0VEOgorICAgICAgICB7CisgICAgICAgICAgICBMUFdJTkRPV1BPUyB3cCA9IChMUFdJ
TkRPV1BPUylsUGFyYW07CisgICAgICAgICAgICBpZiAoISh3cC0+ZmxhZ3MgJiBTV1BfTk9NT1ZF
KSkgeworICAgICAgICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+cmVzaXplKCk7CisgICAgICAg
ICAgICAgICAgV0tDQUNGTGF5ZXIqIHJvb3RMYXllciA9IG1fcm9vdENoaWxkLT5yb290TGF5ZXIo
KTsKKyAgICAgICAgICAgICAgICBDR1JlY3Qgcm9vdEJvdW5kcyA9IG1fcm9vdENoaWxkLT5yb290
TGF5ZXIoKS0+Ym91bmRzKCk7CisgICAgICAgICAgICAgICAgbV9yb290Q2hpbGQtPnNldEZyYW1l
KHJvb3RCb3VuZHMpOworICAgICAgICAgICAgICAgIG1fcm9vdENoaWxkLT5zZXROZWVkc0xheW91
dCgpOworICAgICAgICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0U2Nyb2xsRnJhbWUoSW50
UG9pbnQocm9vdEJvdW5kcy5vcmlnaW4pLCBJbnRTaXplKHJvb3RCb3VuZHMuc2l6ZSkpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV01fUEFJTlQ6
CisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+cmVuZGVyU29vbigpOworICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIGxSZXN1bHQgPSBtX2NsaWVudC0+
ZnVsbHNjcmVlbkNsaWVudFduZFByb2MoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOwor
CisgICAgcmV0dXJuIGxSZXN1bHQ7Cit9CisKK30KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgCisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQgCisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZSAKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyCTQVMgSVOUIAorICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIAorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiAKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIAorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIAorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFQbGF5
ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvd19oCisjZGVmaW5lIE1lZGlhUGxheWVyUHJpdmF0ZUZ1
bGxzY3JlZW5XaW5kb3dfaAorCisjaW5jbHVkZSAiV0tDQUNGTGF5ZXIuaCIKKyNpbmNsdWRlICJX
S0NBQ0ZMYXllclJlbmRlcmVyLmgiCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVBsYXllclBy
aXZhdGVGdWxsc2NyZWVuQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIExSRVNVTFQgZnVs
bHNjcmVlbkNsaWVudFduZFByb2MoSFdORCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0sIExQQVJBTSkg
PSAwOworfTsKKworY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdyB7Citw
dWJsaWM6CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdyhNZWRpYVBsYXll
clByaXZhdGVGdWxsc2NyZWVuQ2xpZW50Kik7CisgICAgdmlydHVhbCB+TWVkaWFQbGF5ZXJQcml2
YXRlRnVsbHNjcmVlbldpbmRvdygpOworCisgICAgdm9pZCBjcmVhdGVXaW5kb3coKTsKKyAgICB2
b2lkIGNsb3NlKCk7CisgICAgCisgICAgSFdORCBod25kKCkgY29uc3Q7CisKKyAgICBXS0NBQ0ZM
YXllclJlbmRlcmVyKiBsYXllclJlbmRlcmVyKCk7CisKKyAgICBXS0NBQ0ZMYXllciogcm9vdENo
aWxkTGF5ZXIoKTsKKyAgICB2b2lkIHNldFJvb3RDaGlsZExheWVyKFBhc3NSZWZQdHI8V0tDQUNG
TGF5ZXI+KTsKKworcHJvdGVjdGVkOgorICAgIHN0YXRpYyBMUkVTVUxUIENBTExCQUNLIHN0YXRp
Y1duZFByb2MoSFdORCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0sIExQQVJBTSk7CisgICAgTFJFU1VM
VCB3bmRQcm9jKEhXTkQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNLCBMUEFSQU0pOworCisgICAgTWVk
aWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCogbV9jbGllbnQ7CisgICAgT3duUHRyPFdL
Q0FDRkxheWVyUmVuZGVyZXI+IG1fbGF5ZXJSZW5kZXJlcjsKKyAgICBSZWZQdHI8V0tDQUNGTGF5
ZXI+IG1fcm9vdENoaWxkOworICAgIEhXTkQgbV9od25kOworfTsKKworfQorCisjZW5kaWYKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNr
VGltZVZpc3VhbENvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuY3BwCShy
ZXZpc2lvbiA2MDA0OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxh
eWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTAsNyArMTUwLDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dAog
CiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OnN1cHBvcnRz
RnVsbHNjcmVlbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVl
OwogfQogCiBQbGF0Zm9ybU1lZGlhIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENv
bnRleHQ6OnBsYXRmb3JtTWVkaWEoKSBjb25zdApAQCAtNzY1LDcgKzc2NSw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ28KIAogICAgICAgICAgICAgICAgIGJ1ZmZl
ci51bmxvY2tCYXNlQWRkcmVzcygpOwogICAgICAgICAgICAgICAgIGxheWVyLT5yb290TGF5ZXIo
KS0+c2V0TmVlZHNSZW5kZXIoKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CiAg
ICAgfSBlbHNlCiAjZW5kaWYKICAgICAgICAgbV9wbGF5ZXItPnJlcGFpbnQoKTsKQEAgLTkzOSw2
ICs5MzksMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDbwogI2Vu
ZGlmCiAgICAgLy8gVGhlIGxheWVyIHdpbGwgZ2V0IGhvb2tlZCB1cCB2aWEgUmVuZGVyTGF5ZXJC
YWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVyQ29uZmlndXJhdGlvbigpLgogI2VuZGlmCisKKyAg
ICAvLyBmaWxsIHRoZSBuZXdseSBjcmVhdGVkIGxheWVyIHdpdGggaW1hZ2UgZGF0YQorICAgIGlm
IChtX3Zpc3VhbENvbnRleHQpCisgICAgICAgIHJldHJpZXZlQ3VycmVudEltYWdlKCk7CiB9CiAK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6ZGVzdHJveUxh
eWVyRm9yTW92aWUoKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNG
TGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dL
Q0FDRkxheWVyLmNwcAkocmV2aXNpb24gNjAwNDgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9XS0NBQ0ZMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NCw2ICsxNTQsNyBA
QCBQYXNzUmVmUHRyPFdLQ0FDRkxheWVyPiBXS0NBQ0ZMYXllcjo6Y3JlCiAKIFdLQ0FDRkxheWVy
OjpXS0NBQ0ZMYXllcihMYXllclR5cGUgdHlwZSkKICAgICA6IG1fbGF5ZXIoQWRvcHRDRiwgQ0FD
RkxheWVyQ3JlYXRlKHRvQ0FDRkxheWVyVHlwZSh0eXBlKSkpCisgICAgLCBtX2xheW91dENsaWVu
dCgwKQogICAgICwgbV9uZWVkc0Rpc3BsYXlPbkJvdW5kc0NoYW5nZShmYWxzZSkKIHsKICAgICBD
QUNGTGF5ZXJTZXRVc2VyRGF0YShsYXllcigpLCB0aGlzKTsKQEAgLTI4NiwxMSArMjg3LDEwIEBA
IHZvaWQgIFdLQ0FDRkxheWVyOjphZG9wdFN1YmxheWVycyhXS0NBQ0YKIHZvaWQgV0tDQUNGTGF5
ZXI6OnJlbW92ZUZyb21TdXBlcmxheWVyKCkKIHsKICAgICBXS0NBQ0ZMYXllciogc3VwZXJsYXll
ciA9IHRoaXMtPnN1cGVybGF5ZXIoKTsKLSAgICBpZiAoIXN1cGVybGF5ZXIpCi0gICAgICAgIHJl
dHVybjsKLQogICAgIENBQ0ZMYXllclJlbW92ZUZyb21TdXBlcmxheWVyKGxheWVyKCkpOwotICAg
IHN1cGVybGF5ZXItPnNldE5lZWRzQ29tbWl0KCk7CisKKyAgICBpZiAoc3VwZXJsYXllcikKKyAg
ICAgICAgc3VwZXJsYXllci0+c2V0TmVlZHNDb21taXQoKTsKIH0KIAogV0tDQUNGTGF5ZXIqIFdL
Q0FDRkxheWVyOjppbnRlcm5hbFN1YmxheWVyQXRJbmRleChpbnQgaW5kZXgpIGNvbnN0CkBAIC0z
NDMsNiArMzQzLDE5IEBAIHZvaWQgV0tDQUNGTGF5ZXI6OnNldEJvdW5kcyhjb25zdCBDR1JlY3QK
ICAgICAgICAgc2V0TmVlZHNEaXNwbGF5KCk7CiB9CiAKK3ZvaWQgV0tDQUNGTGF5ZXI6OnNldEZy
YW1lKGNvbnN0IENHUmVjdCYgcmVjdCkKK3sKKyAgICBDR1JlY3Qgb2xkRnJhbWUgPSBmcmFtZSgp
OworICAgIGlmIChDR1JlY3RFcXVhbFRvUmVjdChyZWN0LCBvbGRGcmFtZSkpCisgICAgICAgIHJl
dHVybjsKKworICAgIENBQ0ZMYXllclNldEZyYW1lKGxheWVyKCksIHJlY3QpOworICAgIHNldE5l
ZWRzQ29tbWl0KCk7CisKKyAgICBpZiAobV9uZWVkc0Rpc3BsYXlPbkJvdW5kc0NoYW5nZSkKKyAg
ICAgICAgc2V0TmVlZHNEaXNwbGF5KCk7Cit9CisKIHZvaWQgV0tDQUNGTGF5ZXI6OnNldENvbnRl
bnRzR3Jhdml0eShDb250ZW50c0dyYXZpdHlUeXBlIHR5cGUpCiB7CiAgICAgQ0FDRkxheWVyU2V0
Q29udGVudHNHcmF2aXR5KGxheWVyKCksIHRvQ0FDRkNvbnRlbnRzR3Jhdml0eVR5cGUodHlwZSkp
OwpAQCAtNDE4LDYgKzQzMSwzMiBAQCB2b2lkIFdLQ0FDRkxheWVyOjppbnRlcm5hbFNldE5lZWRz
RGlzcGxhCiAgICAgQ0FDRkxheWVyU2V0TmVlZHNEaXNwbGF5KGxheWVyKCksIGRpcnR5UmVjdCk7
CiB9CiAKK3ZvaWQgV0tDQUNGTGF5ZXI6OnNldExheW91dENsaWVudChXS0NBQ0ZMYXllckxheW91
dENsaWVudCogbGF5b3V0Q2xpZW50KQoreworICAgIGlmIChsYXlvdXRDbGllbnQgPT0gbV9sYXlv
dXRDbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbGF5b3V0Q2xpZW50ID0gbGF5b3V0
Q2xpZW50OworICAgIENBQ0ZMYXllclNldExheW91dENhbGxiYWNrKGxheWVyKCksIG1fbGF5b3V0
Q2xpZW50ID8gJmxheW91dFN1YmxheWVyc1Byb2MgOiAwKTsgICAgCit9CisKK3ZvaWQgV0tDQUNG
TGF5ZXI6OmxheW91dFN1YmxheWVyc1Byb2MoQ0FDRkxheWVyUmVmIGNhTGF5ZXIpIAoreworICAg
IFdLQ0FDRkxheWVyKiBsYXllciA9IFdLQ0FDRkxheWVyOjpsYXllcihjYUxheWVyKTsKKyAgICBp
ZiAobGF5ZXIgJiYgbGF5ZXItPm1fbGF5b3V0Q2xpZW50KQorICAgICAgICBsYXllci0+bV9sYXlv
dXRDbGllbnQtPmxheW91dFN1YmxheWVyc09mTGF5ZXIobGF5ZXIpOworfQorCitXS0NBQ0ZMYXll
ckxheW91dENsaWVudCogV0tDQUNGTGF5ZXI6OmxheW91dENsaWVudCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fbGF5b3V0Q2xpZW50OworfQorCit2b2lkIFdLQ0FDRkxheWVyOjpzZXROZWVkc0xh
eW91dCgpCit7CisgICAgQ0FDRkxheWVyU2V0TmVlZHNMYXlvdXQobGF5ZXIoKSk7Cit9CisKICNp
Zm5kZWYgTkRFQlVHCiBzdGF0aWMgdm9pZCBwcmludEluZGVudChpbnQgaW5kZW50KQogewpAQCAt
NTAwLDkgKzUzOSw5IEBAIHZvaWQgV0tDQUNGTGF5ZXI6OnByaW50TGF5ZXIoaW50IGluZGVudCkK
ICAgICBDR0ltYWdlUmVmIGxheWVyQ29udGVudHMgPSBjb250ZW50cygpOwogICAgIGlmIChsYXll
ckNvbnRlbnRzKSB7CiAgICAgICAgIHByaW50SW5kZW50KGluZGVudCArIDEpOwotICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIihjb250ZW50cyAoaW1hZ2UgWyVkICVkXSkpXG4iLAorICAgICAgICAg
ICAgZnByaW50ZihzdGRlcnIsICIoY29udGVudHMgKGltYWdlIFslZCAlZF0pKVxuIiwKICAgICAg
ICAgICAgIENHSW1hZ2VHZXRXaWR0aChsYXllckNvbnRlbnRzKSwgQ0dJbWFnZUdldEhlaWdodChs
YXllckNvbnRlbnRzKSk7Ci0gICAgfQorICAgICAgICB9CiAKICAgICAvLyBQcmludCBzdWJsYXll
cnMgaWYgbmVlZGVkCiAgICAgaW50IG4gPSBzdWJsYXllckNvdW50KCk7CkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyLmgJKHJldmlzaW9uIDYwMDQ4KQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNGTGF5ZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNDQsOSArNDQsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBX
S0NBQ0ZMYXllcjsKIGNsYXNzIFdLQ0FDRkFuaW1hdGlvbjsKIGNsYXNzIFdLQ0FDRlRpbWluZ0Z1
bmN0aW9uOwogCitjbGFzcyBXS0NBQ0ZMYXllckxheW91dENsaWVudCB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB2b2lkIGxheW91dFN1YmxheWVyc09mTGF5ZXIoV0tDQUNGTGF5ZXIqKSA9IDA7Cit9
OworCiBjbGFzcyBXS0NBQ0ZMYXllciA6IHB1YmxpYyBSZWZDb3VudGVkPFdLQ0FDRkxheWVyPiB7
CiBwdWJsaWM6CiAgICAgZW51bSBMYXllclR5cGUgeyBMYXllciwgVHJhbnNmb3JtTGF5ZXIgfTsK
QEAgLTYzLDYgKzY5LDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3SW5Db250
ZXh0KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KikgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
TGF5b3V0Q2xpZW50KFdLQ0FDRkxheWVyTGF5b3V0Q2xpZW50Kik7CisgICAgdmlydHVhbCBXS0NB
Q0ZMYXllckxheW91dENsaWVudCogbGF5b3V0Q2xpZW50KCkgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIHNldE5lZWRzTGF5b3V0KCk7CisKICAgICB2b2lkIHNldE5lZWRzRGlzcGxheShjb25zdCBD
R1JlY3QqIGRpcnR5UmVjdCA9IDApCiAgICAgewogICAgICAgICBpbnRlcm5hbFNldE5lZWRzRGlz
cGxheShkaXJ0eVJlY3QpOwpAQCAtMTczLDYgKzE4Myw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEZpbHRlcnMoQ0ZBcnJheVJlZiBmaWx0ZXJzKSB7IENBQ0ZMYXllclNldEZpbHRlcnMobGF5ZXIo
KSwgZmlsdGVycyk7IHNldE5lZWRzQ29tbWl0KCk7IH0KICAgICBDRkFycmF5UmVmIGZpbHRlcnMo
KSBjb25zdCB7IHJldHVybiBDQUNGTGF5ZXJHZXRGaWx0ZXJzKGxheWVyKCkpOyB9CiAKKyAgICB2
b2lkIHNldEZyYW1lKGNvbnN0IENHUmVjdCYpOworICAgIENHUmVjdCBmcmFtZSgpIGNvbnN0IHsg
cmV0dXJuIENBQ0ZMYXllckdldEZyYW1lKGxheWVyKCkpOyB9CisKICAgICB2b2lkIHNldEhpZGRl
bihib29sIGhpZGRlbikgeyBDQUNGTGF5ZXJTZXRIaWRkZW4obGF5ZXIoKSwgaGlkZGVuKTsgc2V0
TmVlZHNDb21taXQoKTsgfQogICAgIGJvb2wgaXNIaWRkZW4oKSBjb25zdCB7IHJldHVybiBDQUNG
TGF5ZXJJc0hpZGRlbihsYXllcigpKTsgfQogCkBAIC0yNjAsOCArMjczLDExIEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIHByaW50TGF5ZXIoaW50IGluZGVudCkgY29uc3Q7CiAjZW5kaWYKIAorICAg
IHN0YXRpYyB2b2lkIGxheW91dFN1YmxheWVyc1Byb2MoQ0FDRkxheWVyUmVmKTsKKwogcHJpdmF0
ZToKICAgICBSZXRhaW5QdHI8Q0FDRkxheWVyUmVmPiBtX2xheWVyOworICAgIFdLQ0FDRkxheWVy
TGF5b3V0Q2xpZW50KiBtX2xheW91dENsaWVudDsKICAgICBib29sIG1fbmVlZHNEaXNwbGF5T25C
b3VuZHNDaGFuZ2U7CiB9OwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9X
ZWJUaWxlZExheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9XZWJUaWxlZExheWVyLmNwcAkocmV2aXNpb24gNjAwNDgpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9XZWJUaWxlZExheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMs
NiArNzMsMTUgQEAgdm9pZCBXZWJUaWxlZExheWVyOjpzZXRCb3VuZHMoY29uc3QgQ0dSZQogICAg
IHVwZGF0ZVRpbGVzKCk7CiB9CiAKK3ZvaWQgV2ViVGlsZWRMYXllcjo6c2V0RnJhbWUoY29uc3Qg
Q0dSZWN0JiByZWN0KQoreworICAgIGlmIChDR1JlY3RFcXVhbFRvUmVjdChyZWN0LCBmcmFtZSgp
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViTGF5ZXI6OnNldEZyYW1lKHJlY3QpOworICAg
IHVwZGF0ZVRpbGVzKCk7Cit9CisKIHZvaWQgV2ViVGlsZWRMYXllcjo6aW50ZXJuYWxTZXROZWVk
c0Rpc3BsYXkoY29uc3QgQ0dSZWN0KiBkaXJ0eVJlY3QpCiB7CiAgICAgLy8gRklYTUU6IE9ubHkg
c2V0TmVlZHNEaXNwbGF5IGZvciB0aWxlcyB0aGF0IGFyZSBjdXJyZW50bHkgdmlzaWJsZQpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV2ViVGlsZWRMYXllci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dlYlRpbGVkTGF5ZXIuaAkocmV2
aXNpb24gNjAwNDgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XZWJUaWxlZExh
eWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgfldlYlRpbGVkTGF5ZXIoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRCb3VuZHMoY29uc3Qg
Q0dSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHNldEZyYW1lKGNvbnN0IENHUmVjdCYpOwogCiBw
cm90ZWN0ZWQ6CiAgICAgV2ViVGlsZWRMYXllcihjb25zdCBDR1NpemUmIHRpbGVTaXplLCBHcmFw
aGljc0xheWVyKiBvd25lcik7CkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNjAwMjcpCisrKyBXZWJLaXQvd2lu
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEwLTA1LTIyICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIGZ1bGwgc2NyZWVuIGRvZXNuJ3Qgd29yayBmb3Igdmlk
ZW8gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM5NTU3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzgwMTE4MTMKKyAgICAgICAgCisgICAg
ICAgIE1vZGlmaWVkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIgdG8gd29yayB3aXRoIE1lZGlh
UGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuICBUaGUgRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcgorICAgICAgICBpcyBub3cgTWVkaWFQbGF5ZXJQcml2YXRlIGFnbm9zdGljLgorCisgICAg
ICAgICogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHA6CisgICAgICAgIChGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyOjpMYXlvdXRDbGllbnQ6OkxheW91dENsaWVudCk6ICAKKyAgICAgICAg
KEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheW91dENsaWVudDo6bGF5b3V0U3VibGF5ZXJz
T2ZMYXllcik6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6On5G
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXI6OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyOjpleGl0RnVsbHNjcmVlbik6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
OjpjcmVhdGVIVURXaW5kb3cpOgorICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIu
aDoKKwogMjAxMC0wNS0yMSAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpJbmRleDogV2ViS2l0L3dpbi9GdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0Z1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2MDAyNykKKysrIFdlYktpdC93aW4v
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRTZWxlY3Rvci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0UnVuLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9XS0NBQ0ZMYXllci5oPgogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVy
ZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbmNsdWRlIDx3aW5kb3dzeC5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTE2OSw5ICsxNzAsNTQgQEAgdm9pZCBIVURT
bGlkZXI6OmRyYWcoY29uc3QgSW50UG9pbnQmIHBvaQogICAgIG1fYnV0dG9uUG9zaXRpb24gPSBt
YXgoMCwgbWluKG1fcmVjdC53aWR0aCgpIC0gbV9idXR0b25TaXplLCBwb2ludC54KCkgLSBtX2Ry
YWdTdGFydE9mZnNldCkpOwogfQogCitjbGFzcyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpM
YXlvdXRDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6V0tDQUNGTGF5ZXJMYXlvdXRDbGllbnQgewor
cHVibGljOgorICAgIExheW91dENsaWVudChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBwYXJl
bnQpCisgICAgICAgIDogbV9wYXJlbnQocGFyZW50KQorICAgIHsKKyAgICB9CisKKyAgICB2b2lk
IGxheW91dFN1YmxheWVyc09mTGF5ZXIoV0tDQUNGTGF5ZXIqIGxheWVyKSAKKyAgICB7CisgICAg
ICAgIGlmIChsYXllciAhPSBtX3BhcmVudC0+bV9yb290Q2hpbGQpIAorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9
IG1fcGFyZW50LT5tX21lZGlhRWxlbWVudC5nZXQoKTsKKyAgICAgICAgaWYgKCFtZWRpYUVsZW1l
bnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgV0tDQUNGTGF5ZXIqIHZpZGVvTGF5
ZXIgPSBtZWRpYUVsZW1lbnQtPnBsYXRmb3JtTGF5ZXIoKTsKKyAgICAgICAgaWYgKCF2aWRlb0xh
eWVyIHx8IHZpZGVvTGF5ZXItPnN1cGVybGF5ZXIoKSAhPSBsYXllcikKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBGbG9hdFBvaW50IHZpZGVvQW5jaG9yID0gdmlkZW9MYXllci0+YW5j
aG9yUG9pbnQoKTsKKyAgICAgICAgRmxvYXRSZWN0IGxheWVyQm91bmRzID0gbGF5ZXItPmJvdW5k
cygpOworICAgICAgICBGbG9hdFJlY3QgdmlkZW9Cb3VuZHMgPSB2aWRlb0xheWVyLT5ib3VuZHMo
KTsKKyAgICAgICAgRmxvYXRQb2ludCBsYXllckNlbnRlciA9IGxheWVyQm91bmRzLmNlbnRlcigp
OworCisgICAgICAgIEZsb2F0U2l6ZSBuYXR1cmFsU2l6ZSA9IG1lZGlhRWxlbWVudC0+cGxheWVy
KCktPm5hdHVyYWxTaXplKCk7CisgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gMDsKKyAgICAg
ICAgaWYgKG5hdHVyYWxTaXplLmFzcGVjdFJhdGlvKCkgPiBsYXllckJvdW5kcy5zaXplKCkuYXNw
ZWN0UmF0aW8oKSkKKyAgICAgICAgICAgIHNjYWxlRmFjdG9yID0gbGF5ZXJCb3VuZHMud2lkdGgo
KSAvIG5hdHVyYWxTaXplLndpZHRoKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNjYWxl
RmFjdG9yID0gbGF5ZXJCb3VuZHMuaGVpZ2h0KCkgLyBuYXR1cmFsU2l6ZS5oZWlnaHQoKTsKKyAg
ICAgICAgbmF0dXJhbFNpemUuc2NhbGUoc2NhbGVGYWN0b3IpOworICAgICAgICB2aWRlb0JvdW5k
cy5zZXRTaXplKG5hdHVyYWxTaXplKTsKKworICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGNlbnRl
cmVkIHBvc2l0aW9uIGJhc2VkIG9uIHRoZSB2aWRlb0FuY2hvciwgdmlkZW9Cb3VuZHMsIGFuZCBs
YXllckJvdW5kczoKKyAgICAgICAgRmxvYXRQb2ludCB2aWRlb1Bvc2l0aW9uOworICAgICAgICB2
aWRlb1Bvc2l0aW9uLnNldFgobGF5ZXJDZW50ZXIueCgpIC0gKDAuNSAtIHZpZGVvQW5jaG9yLngo
KSkgKiB2aWRlb0JvdW5kcy53aWR0aCgpKTsKKyAgICAgICAgdmlkZW9Qb3NpdGlvbi5zZXRZKGxh
eWVyQ2VudGVyLnkoKSAtICgwLjUgLSB2aWRlb0FuY2hvci55KCkpICogdmlkZW9Cb3VuZHMuaGVp
Z2h0KCkpOworICAgICAgICB2aWRlb0xheWVyLT5zZXRQb3NpdGlvbih2aWRlb1Bvc2l0aW9uKTsK
KworICAgICAgICB2aWRlb0xheWVyLT5zZXRCb3VuZHMoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
bmF0dXJhbFNpemUpKTsKKyAgICB9CisKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBt
X3BhcmVudDsKK307CisKIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXIoKQogICAgIDogbV9odWRXaW5kb3coMCkKLSAgICAsIG1fdmlkZW9XaW5kb3co
MCkKICAgICAsIG1fcGxheVBhdXNlQnV0dG9uKEhVREJ1dHRvbjo6UGxheVBhdXNlQnV0dG9uLCBJ
bnRQb2ludCgod2luZG93V2lkdGggLSBidXR0b25TaXplKSAvIDIsIG1hcmdpblRvcCkpCiAgICAg
LCBtX3RpbWVTbGlkZXJCdXR0b24oSFVEQnV0dG9uOjpUaW1lU2xpZGVyQnV0dG9uLCBJbnRQb2lu
dCgwLCAwKSkKICAgICAsIG1fdm9sdW1lVXBCdXR0b24oSFVEQnV0dG9uOjpWb2x1bWVVcEJ1dHRv
biwgSW50UG9pbnQobWFyZ2luICsgYnV0dG9uTWluaVNpemUgKyB2b2x1bWVTbGlkZXJXaWR0aCAr
IGJ1dHRvbk1pbmlTaXplIC8gMiwgbWFyZ2luVG9wICsgKGJ1dHRvblNpemUgLSBidXR0b25NaW5p
U2l6ZSkgLyAyKSkKQEAgLTE4MywyNSArMjI5LDIwIEBAIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXI6OkZ1bGxzY3JlZW5WaWQKICAgICAsIG1faGl0V2lkZ2V0KDApCiAgICAgLCBtX21vdmluZ1dp
bmRvdyhmYWxzZSkKICAgICAsIG1fdGltZXIodGhpcywgJkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXI6OnRpbWVyRmlyZWQpCisgICAgLCBtX3Jvb3RDaGlsZChXZWJDb3JlOjpXS0NBQ0ZMYXllcjo6
Y3JlYXRlKFdlYkNvcmU6OldLQ0FDRkxheWVyOjpMYXllcikpCisgICAgLCBtX2xheW91dENsaWVu
dChuZXcgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6TGF5b3V0Q2xpZW50KHRoaXMpKQogewor
ICAgIG1fcm9vdENoaWxkLT5zZXRMYXlvdXRDbGllbnQobV9sYXlvdXRDbGllbnQuZ2V0KCkpOwog
fQogCiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp+RnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
cigpCiB7Ci0gICAgaWYgKG1vdmllKCkpCi0gICAgICAgIG1vdmllKCktPmV4aXRGdWxsc2NyZWVu
KCk7Ci19Ci0KLVFUTW92aWVHV29ybGQqIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Om1vdmll
KCkgY29uc3QKLXsKLSAgICBpZiAoIW1fbWVkaWFFbGVtZW50KQotICAgICAgICByZXR1cm4gMDsK
KyAgICBtX3Jvb3RDaGlsZC0+c2V0TGF5b3V0Q2xpZW50KDApOwogCi0gICAgUGxhdGZvcm1NZWRp
YSBwbGF0Zm9ybU1lZGlhID0gbV9tZWRpYUVsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKTsKLSAgICBp
ZiAocGxhdGZvcm1NZWRpYS50eXBlICE9IFBsYXRmb3JtTWVkaWE6OlFUTW92aWVHV29ybGRUeXBl
KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHJldHVybiBwbGF0Zm9ybU1lZGlhLm1lZGlhLnF0
TW92aWVHV29ybGQ7CisgICAgaWYgKG1fZnVsbHNjcmVlbldpbmRvdykgeworICAgICAgICBtX2Z1
bGxzY3JlZW5XaW5kb3ctPmNsb3NlKCk7CisgICAgICAgIG1fZnVsbHNjcmVlbldpbmRvdyA9IDA7
CisgICAgfQogfQogCiB2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNldE1lZGlhRWxl
bWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCkBAIC0yMTgsMTMgKzI1OSwxOCBA
QCB2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNldE1lZGlhCiAKIHZvaWQgRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVuKCkKIHsKLSAgICBpZiAoIW1vdmll
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fdmlkZW9XaW5kb3cgPSBtb3ZpZSgpLT5lbnRl
ckZ1bGxzY3JlZW4odGhpcyk7CisgICAgaWYgKCFtX2Z1bGxzY3JlZW5XaW5kb3cpIHsKKyAgICAg
ICAgbV9mdWxsc2NyZWVuV2luZG93ID0gbmV3IE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5X
aW5kb3codGhpcyk7CisgICAgICAgIG1fZnVsbHNjcmVlbldpbmRvdy0+Y3JlYXRlV2luZG93KCk7
CisgICAgICAgIG1fZnVsbHNjcmVlbldpbmRvdy0+c2V0Um9vdENoaWxkTGF5ZXIobV9yb290Q2hp
bGQpOworICAgIH0KIAorICAgIFdlYkNvcmU6OldLQ0FDRkxheWVyKiB2aWRlb0xheWVyID0gbV9t
ZWRpYUVsZW1lbnQtPnBsYXllcigpLT5wbGF0Zm9ybUxheWVyKCk7CisgICAgbV9yb290Q2hpbGQt
PmFkZFN1YmxheWVyKHZpZGVvTGF5ZXIpOworICAgIG1fcm9vdENoaWxkLT5zZXROZWVkc0xheW91
dCgpOworICAgIAogICAgIFJFQ1Qgd2luZG93UmVjdDsKLSAgICBHZXRDbGllbnRSZWN0KG1fdmlk
ZW9XaW5kb3csICZ3aW5kb3dSZWN0KTsKKyAgICBHZXRDbGllbnRSZWN0KG1fZnVsbHNjcmVlbldp
bmRvdy0+aHduZCgpLCAmd2luZG93UmVjdCk7CiAgICAgbV9mdWxsc2NyZWVuU2l6ZS5zZXRXaWR0
aCh3aW5kb3dSZWN0LnJpZ2h0IC0gd2luZG93UmVjdC5sZWZ0KTsKICAgICBtX2Z1bGxzY3JlZW5T
aXplLnNldEhlaWdodCh3aW5kb3dSZWN0LmJvdHRvbSAtIHdpbmRvd1JlY3QudG9wKTsKIApAQCAt
MjMzLDEzICsyNzksMjMgQEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjplbnRlckZ1
bAogCiB2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmV4aXRGdWxsc2NyZWVuKCkKIHsK
LSAgICBTZXRXaW5kb3dMb25nUHRyKG1faHVkV2luZG93LCAwLCAwKTsKLSAgICBpZiAobW92aWUo
KSkKLSAgICAgICAgbW92aWUoKS0+ZXhpdEZ1bGxzY3JlZW4oKTsKLQotICAgIEFTU0VSVCghSXNX
aW5kb3cobV9odWRXaW5kb3cpKTsKLSAgICBtX3ZpZGVvV2luZG93ID0gMDsKLSAgICBtX2h1ZFdp
bmRvdyA9IDA7CisgICAgaWYgKG1fZnVsbHNjcmVlbldpbmRvdykgeworICAgICAgICBtX2Z1bGxz
Y3JlZW5XaW5kb3ctPmNsb3NlKCk7CisgICAgICAgIG1fZnVsbHNjcmVlbldpbmRvdy0+c2V0Um9v
dENoaWxkTGF5ZXIoMCk7CisgICAgICAgIG1fZnVsbHNjcmVlbldpbmRvdyA9IDA7CisgICAgfQor
CisgICAgaWYgKG1faHVkV2luZG93KSB7CisgICAgICAgIFNldFdpbmRvd0xvbmdQdHIobV9odWRX
aW5kb3csIDAsIDApOworICAgICAgICA6OkRlc3Ryb3lXaW5kb3cobV9odWRXaW5kb3cpOworICAg
ICAgICBtX2h1ZFdpbmRvdyA9IDA7CisgICAgfQorCisgICAgLy8gQXMgYSBzaWRlIGVmZmVjdCBv
ZiBzZXR0aW5nIHRoZSBwbGF5ZXIgdG8gaW52aXNpYmxlL3Zpc2libGUsCisgICAgLy8gdGhlIHBs
YXllcidzIGxheWVyIHdpbGwgYmUgcmVjcmVhdGVkLCBhbmQgd2lsbCBiZSBwaWNrZWQgdXAgCisg
ICAgLy8gdGhlIG5leHQgdGltZSB0aGUgbGF5ZXIgdHJlZSBpcyBzeW5jaGVkLgorICAgIG1fbWVk
aWFFbGVtZW50LT5wbGF5ZXIoKS0+c2V0VmlzaWJsZSgwKTsKKyAgICBtX21lZGlhRWxlbWVudC0+
cGxheWVyKCktPnNldFZpc2libGUoMSk7CiB9CiAKIGJvb2wgRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcjo6Y2FuUGxheSgpIGNvbnN0CkBAIC0zMTYsNiArMzcyLDkgQEAgTFJFU1VMVCBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjpmdWxscwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdNX0xC
VVRUT05VUDoKICAgICAgICAgb25Nb3VzZVVwKEludFBvaW50KEdFVF9YX0xQQVJBTShsUGFyYW0p
LCBHRVRfWV9MUEFSQU0obFBhcmFtKSkpOworICAgIGNhc2UgV01fQUNUSVZBVEVBUFA6CisgICAg
ICAgIGlmICghd1BhcmFtKQorICAgICAgICAgICAgbV9tZWRpYUVsZW1lbnQtPmV4aXRGdWxsc2Ny
ZWVuKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMzY0LDcgKzQyMyw3IEBAIHZvaWQg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Y3JlYXRlSFUKICAgICAKICAgICAvLyBEaXJ0eSB0
aGUgd2luZG93IHNvIHRoZSBIVUQgZHJhd3MKICAgICBSRUNUIGNsZWFyUmVjdCA9IHsgbV9odWRQ
b3NpdGlvbi54KCksIG1faHVkUG9zaXRpb24ueSgpLCBtX2h1ZFBvc2l0aW9uLngoKSArIHdpbmRv
d1dpZHRoLCBtX2h1ZFBvc2l0aW9uLnkoKSArIHdpbmRvd0hlaWdodCB9OwotICAgIEludmFsaWRh
dGVSZWN0KG1fdmlkZW9XaW5kb3csICZjbGVhclJlY3QsIHRydWUpOworICAgIEludmFsaWRhdGVS
ZWN0KG1fZnVsbHNjcmVlbldpbmRvdy0+aHduZCgpLCAmY2xlYXJSZWN0LCB0cnVlKTsKIAogICAg
IG1fcGxheVBhdXNlQnV0dG9uLnNldFNob3dBbHRCdXR0b24oIWNhblBsYXkoKSk7CiAgICAgbV92
b2x1bWVTbGlkZXIuc2V0VmFsdWUodm9sdW1lKCkpOwpAQCAtMzc3LDcgKzQzNiw3IEBAIHZvaWQg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Y3JlYXRlSFUKIAogICAgIG1faHVkV2luZG93ID0g
Q3JlYXRlV2luZG93RXgoV1NfRVhfTEFZRVJFRCB8IFdTX0VYX1RSQU5TUEFSRU5UIHwgV1NfRVhf
VE9PTFdJTkRPVywgCiAgICAgICAgIGZ1bGxzY3JlZW5WaWRlZW9IVURXaW5kb3dDbGFzc05hbWUs
IDAsIFdTX1BPUFVQIHwgV1NfVklTSUJMRSwKLSAgICAgICAgbV9odWRQb3NpdGlvbi54KCksIG1f
aHVkUG9zaXRpb24ueSgpLCAwLCAwLCBtX3ZpZGVvV2luZG93LCAwLCBnSW5zdGFuY2UsIDApOwor
ICAgICAgICBtX2h1ZFBvc2l0aW9uLngoKSwgbV9odWRQb3NpdGlvbi55KCksIDAsIDAsIG1fZnVs
bHNjcmVlbldpbmRvdy0+aHduZCgpLCAwLCBnSW5zdGFuY2UsIDApOwogICAgIEFTU0VSVCg6Oklz
V2luZG93KG1faHVkV2luZG93KSk7CiAgICAgU2V0V2luZG93TG9uZ1B0cihtX2h1ZFdpbmRvdywg
MCwgcmVpbnRlcnByZXRfY2FzdDxMT05HX1BUUj4odGhpcykpOwogCkluZGV4OiBXZWJLaXQvd2lu
L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0Z1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaAkocmV2aXNpb24gNjAwMjcpCisrKyBXZWJLaXQvd2lu
L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgs
NyBAQAogCiAjaWYgRU5BQkxFKFZJREVPKQogCi0jaW5jbHVkZSAiUVRNb3ZpZUdXb3JsZC5oIgor
I2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaCIKIAogI2luY2x1
ZGUgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2Uu
aD4KQEAgLTM4LDYgKzM4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhp
Y3NDb250ZXh0OworY2xhc3MgV0tDQUNGTGF5ZXI7CiB9CiAKIGNsYXNzIEhVRFdpZGdldCB7CkBA
IC05OSw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIGludCBtX2RyYWdTdGFydE9mZnNldDsKIH07
CiAKLWNsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIgOiBRVE1vdmllR1dvcmxkRnVsbHNj
cmVlbkNsaWVudCwgcHVibGljIE5vbmNvcHlhYmxlIHsKK2NsYXNzIEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXIgOiBXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50LCBw
dWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgogICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIoKTsKICAgICB2aXJ0dWFsIH5GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCk7CkBAIC0xMTEs
MTIgKzExMiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBleGl0RnVsbHNjcmVlbigpOwogCiBwcml2
YXRlOgotICAgIC8vIFFUTW92aWVHV29ybGRGdWxsc2NyZWVuQ2xpZW50CisgICAgLy8gTWVkaWFQ
bGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvd0NsaWVudAogICAgIHZpcnR1YWwgTFJFU1VMVCBm
dWxsc2NyZWVuQ2xpZW50V25kUHJvYyhIV05ELCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSwgTFBBUkFN
KTsKIAogICAgIHZvaWQgZW5zdXJlV2luZG93KCk7Ci0gICAgUVRNb3ZpZUdXb3JsZCogbW92aWUo
KSBjb25zdDsKLQorICAgIAogICAgIGJvb2wgY2FuUGxheSgpIGNvbnN0OwogICAgIHZvaWQgcGxh
eSgpOwogICAgIHZvaWQgcGF1c2UoKTsKQEAgLTE0OCwxMCArMTQ4LDE2IEBAIHByaXZhdGU6CiAK
ICAgICBSZWZQdHI8V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudD4gbV9tZWRpYUVsZW1lbnQ7CiAK
LSAgICBIV05EIG1faHVkV2luZG93LCBtX3ZpZGVvV2luZG93OworICAgIEhXTkQgbV9odWRXaW5k
b3c7CiAgICAgT3duUHRyPEhCSVRNQVA+IG1fYml0bWFwOwogICAgIFdlYkNvcmU6OkludFNpemUg
bV9mdWxsc2NyZWVuU2l6ZTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBtX2h1ZFBvc2l0aW9uOwor
ICAgIE93blB0cjxXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93PiBt
X2Z1bGxzY3JlZW5XaW5kb3c7CisgICAgUmVmUHRyPFdlYkNvcmU6OldLQ0FDRkxheWVyPiBtX3Jv
b3RDaGlsZDsKKworICAgIGNsYXNzIExheW91dENsaWVudDsKKyAgICBmcmllbmQgY2xhc3MgTGF5
b3V0Q2xpZW50OworICAgIE93blB0cjxMYXlvdXRDbGllbnQ+IG1fbGF5b3V0Q2xpZW50OwogCiAg
ICAgSFVEQnV0dG9uIG1fcGxheVBhdXNlQnV0dG9uOwogICAgIEhVREJ1dHRvbiBtX3RpbWVTbGlk
ZXJCdXR0b247CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MDAyOCkKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEwLTA1LTIyICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlLWVuYWJsZWQgZnVsbHNjcmVlbiBzdXBwb3J0IG9uIHdpbmRv
d3MsIGFuZCBtb2RpZmllZCB0ZXN0cyB0byBtYXRjaC4KKworICAgICAgICAqIHBsYXRmb3JtL3dp
bi9tZWRpYS9jb250cm9scy1hZnRlci1yZWxvYWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1kcmFnLXRpbWViYXItZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1zdHJpY3QtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1zdHlsaW5nLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vbWVkaWEvdmlkZW8tY29udHJvbHMtcmVuZGVyaW5n
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vbWVkaWEvdmlkZW8tZGlzcGxh
eS10b2dnbGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9tZWRpYS92aWRl
by1uby1hdWRpby1leHBlY3RlZC50eHQ6CisKIDIwMTAtMDUtMjIgIE1hY2llaiBTdGFjaG93aWFr
ICA8bWpzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLWFmdGVyLXJlbG9h
ZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21l
ZGlhL2NvbnRyb2xzLWFmdGVyLXJlbG9hZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYwMDI3KQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLWFmdGVyLXJlbG9hZC1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE3LDkgKzE3LDEwIEBAIGxheWVyIGF0ICg4
LDQyKSBzaXplIDMyMHgyNDAKIGxheWVyIGF0ICg4LDI2Nikgc2l6ZSAzMjB4MTYKICAgUmVuZGVy
RmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDIyNCkgc2l6ZSAzMjB4MTYKICAg
ICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMCwwKSBzaXplIDE2eDE2Ci0gICAgUmVuZGVyRmxl
eGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUgMjU2eDE2Ci0gICAgICBSZW5kZXJTbGlkZXIg
e0lOUFVUfSBhdCAoMCwwKSBzaXplIDI1NngxNgorICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9
IGF0ICgxNiwwKSBzaXplIDI0MHgxNgorICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAs
MCkgc2l6ZSAyNDB4MTYKICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMSkgc2l6ZSAx
M3gxNAorICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNTYsMCkgc2l6ZSAxNngxNgogICAg
IFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNzIsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1
dHRvbiB7SU5QVVR9IGF0ICgyODgsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5Q
VVR9IGF0ICgzMDQsMCkgc2l6ZSAxNngxNgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L21lZGlhL2NvbnRyb2xzLWRyYWctdGltZWJhci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLWRyYWctdGltZWJhci1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDYwMDI3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21l
ZGlhL2NvbnRyb2xzLWRyYWctdGltZWJhci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTQsMTAgKzQsMTAgQEAgUlVOKHZpZGVvLmF1dG9wbGF5ID0gdHJ1ZSkKIFJVTih2aWRlby5zcmMg
PSAnY29udGVudC90ZXN0Lm1wNCcpCiBFVkVOVChwbGF5aW5nKQogRVZFTlQoc2Vla2VkKQotVGlt
ZTogMi4xCitUaW1lOiAyLjMKIEVWRU5UKHNlZWtlZCkKLVRpbWU6IDIuNgorVGltZTogMi44CiBF
VkVOVChzZWVrZWQpCi1UaW1lOiAzLjEKK1RpbWU6IDMuNAogRU5EIE9GIFRFU1QKIApJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLXN0cmljdC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL2NvbnRyb2xz
LXN0cmljdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYwMDI3KQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLXN0cmljdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTE3LDkgKzE3LDEwIEBAIGxheWVyIGF0ICg4LDUwKSBzaXplIDMyMHgyNDAKIGxheWVy
IGF0ICg4LDI3NCkgc2l6ZSAzMjB4MTYKICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9uZWQp
IHtESVZ9IGF0ICgwLDIyNCkgc2l6ZSAzMjB4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBh
dCAoMCwwKSBzaXplIDE2eDE2Ci0gICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDAp
IHNpemUgMjU2eDE2Ci0gICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI1
NngxNgorICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI0MHgxNgor
ICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNDB4MTYKICAgICAgICAg
UmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMSkgc2l6ZSAxM3gxNAorICAgIFJlbmRlckJ1dHRvbiB7
SU5QVVR9IGF0ICgyNTYsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0
ICgyNzIsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODgsMCkg
c2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMDQsMCkgc2l6ZSAxNngx
NgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLXN0eWxpbmct
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRp
YS9jb250cm9scy1zdHlsaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjAwMjcpCisrKyBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvY29udHJvbHMtc3R5bGluZy1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTIxLDkgKzIxLDEwIEBAIGxheWVyIGF0ICgxOCw0Mikgc2l6ZSAz
MjB4MjQwCiBsYXllciBhdCAoMTgsMjY2KSBzaXplIDMyMHgxNgogICBSZW5kZXJGbGV4aWJsZUJv
eCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMjI0KSBzaXplIDMyMHgxNgogICAgIFJlbmRlckJ1
dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUgMTZ4MTYKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7
RElWfSBhdCAoMTYsMCkgc2l6ZSAyNTZ4MTYKLSAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0
ICgwLDApIHNpemUgMjU2eDE2CisgICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDAp
IHNpemUgMjQweDE2CisgICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI0
MHgxNgogICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiwxKSBzaXplIDEzeDE0CisgICAg
UmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI1NiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0
dG9uIHtJTlBVVH0gYXQgKDI3MiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBV
VH0gYXQgKDI4OCwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMw
NCwwKSBzaXplIDE2eDE2CkBAIC0zMiw5ICszMywxMCBAQCBsYXllciBhdCAoOCwyODIpIHNpemUg
MzIweDI0MAogbGF5ZXIgYXQgKDgsNTA2KSBzaXplIDMyMHgxNgogICBSZW5kZXJGbGV4aWJsZUJv
eCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMjI0KSBzaXplIDMyMHgxNgogICAgIFJlbmRlckJ1
dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUgMTZ4MTYKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7
RElWfSBhdCAoMTYsMCkgc2l6ZSAyNTZ4MTYKLSAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0
ICgwLDApIHNpemUgMjU2eDE2CisgICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDAp
IHNpemUgMjQweDE2CisgICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI0
MHgxNgogICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiwxKSBzaXplIDEzeDE0CisgICAg
UmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI1NiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0
dG9uIHtJTlBVVH0gYXQgKDI3MiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBV
VH0gYXQgKDI4OCwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMw
NCwwKSBzaXplIDE2eDE2CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvdmlk
ZW8tY29udHJvbHMtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvdmlkZW8tY29udHJvbHMtcmVuZGVyaW5nLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gNjAwMjcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEv
dmlkZW8tY29udHJvbHMtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MjAsOSArMjAsMTAgQEAgbGF5ZXIgYXQgKDgsNDIpIHNpemUgMzIweDI0MAogbGF5ZXIgYXQgKDgs
MjY2KSBzaXplIDMyMHgxNgogICBSZW5kZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0g
YXQgKDAsMjI0KSBzaXplIDMyMHgxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDAp
IHNpemUgMTZ4MTYKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAy
NTZ4MTYKLSAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjU2eDE2Cisg
ICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUgMjQweDE2CisgICAgICBS
ZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI0MHgxNgogICAgICAgICBSZW5kZXJC
bG9jayB7RElWfSBhdCAoMiwxKSBzaXplIDEzeDE0CisgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0g
YXQgKDI1NiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI3Miww
KSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI4OCwwKSBzaXplIDE2
eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMwNCwwKSBzaXplIDE2eDE2CkBAIC0z
MSw5ICszMiwxMCBAQCBsYXllciBhdCAoOCwyODIpIHNpemUgMzIweDI0MAogbGF5ZXIgYXQgKDgs
NTA2KSBzaXplIDMyMHgxNgogICBSZW5kZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0g
YXQgKDAsMjI0KSBzaXplIDMyMHgxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDAp
IHNpemUgMTZ4MTYKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAy
NTZ4MTYKLSAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjU2eDE2Cisg
ICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUgMjQweDE2CisgICAgICBS
ZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI0MHgxNgogICAgICAgICBSZW5kZXJC
bG9jayB7RElWfSBhdCAoMiwxKSBzaXplIDEzeDE0CisgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0g
YXQgKDI1NiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI3Miww
KSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI4OCwwKSBzaXplIDE2
eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMwNCwwKSBzaXplIDE2eDE2CkBAIC00
NCw5ICs0NiwxMCBAQCBsYXllciBhdCAoOCw1MjIpIHNpemUgMzIweDI0MAogbGF5ZXIgYXQgKDgs
NzQ2KSBzaXplIDMyMHgxNgogICBSZW5kZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0g
YXQgKDAsMjI0KSBzaXplIDMyMHgxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDAp
IHNpemUgMTZ4MTYKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAy
NTZ4MTYKLSAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjU2eDE2Cisg
ICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUgMjQweDE2CisgICAgICBS
ZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI0MHgxNgogICAgICAgICBSZW5kZXJC
bG9jayB7RElWfSBhdCAoMiwxKSBzaXplIDEzeDE0CisgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0g
YXQgKDI1NiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI3Miww
KSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI4OCwwKSBzaXplIDE2
eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMwNCwwKSBzaXplIDE2eDE2CkluZGV4
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvdmlkZW8tZGlzcGxheS10b2dnbGUtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS92
aWRlby1kaXNwbGF5LXRvZ2dsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYwMDI3KQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL3ZpZGVvLWRpc3BsYXktdG9nZ2xlLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTYsOSArMTYsMTAgQEAgbGF5ZXIgYXQgKDgsMjYpIHNp
emUgMzIweDI0MAogbGF5ZXIgYXQgKDgsMjUwKSBzaXplIDMyMHgxNgogICBSZW5kZXJGbGV4aWJs
ZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMjI0KSBzaXplIDMyMHgxNgogICAgIFJlbmRl
ckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUgMTZ4MTYKLSAgICBSZW5kZXJGbGV4aWJsZUJv
eCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNTZ4MTYKLSAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9
IGF0ICgwLDApIHNpemUgMjU2eDE2CisgICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2
LDApIHNpemUgMjQweDE2CisgICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXpl
IDI0MHgxNgogICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiwxKSBzaXplIDEzeDE0Cisg
ICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI1NiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVy
QnV0dG9uIHtJTlBVVH0gYXQgKDI3MiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJ
TlBVVH0gYXQgKDI4OCwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQg
KDMwNCwwKSBzaXplIDE2eDE2CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEv
dmlkZW8tbm8tYXVkaW8tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbi9tZWRpYS92aWRlby1uby1hdWRpby1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYw
MDI3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL3ZpZGVvLW5vLWF1ZGlvLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTcsOCArMTcsOSBAQCBsYXllciBhdCAoOCw0
Mikgc2l6ZSAzNTJ4Mjg4CiBsYXllciBhdCAoOCwzMTQpIHNpemUgMzUyeDE2CiAgIFJlbmRlckZs
ZXhpYmxlQm94IChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCwyNzIpIHNpemUgMzUyeDE2CiAgICAg
UmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAxNngxNgotICAgIFJlbmRlckZsZXhp
YmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDMwNHgxNgotICAgICAgUmVuZGVyU2xpZGVyIHtJ
TlBVVH0gYXQgKDAsMCkgc2l6ZSAzMDR4MTYKKyAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBh
dCAoMTYsMCkgc2l6ZSAyODh4MTYKKyAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgwLDAp
IHNpemUgMjg4eDE2CiAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDEpIHNpemUgMTN4
MTQKKyAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzA0LDApIHNpemUgMTZ4MTYKICAgICBS
ZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzIwLDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0
b24ge0lOUFVUfSBhdCAoMzM2LDApIHNpemUgMTZ4MTYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56850</attachid>
            <date>2010-05-24 00:20:21 -0700</date>
            <delta_ts>2010-05-24 01:02:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39557-20100524002025.patch</filename>
            <type>text/plain</type>
            <size>39621</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDA0OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTAtMDUtMjIgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnVs
bCBzY3JlZW4gZG9lc24ndCB3b3JrIGZvciB2aWRlbyBlbGVtZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk1NTcKKyAgICAgICAgcmRhcjovL3By
b2JsZW0vODAxMTgxMworICAgICAgICAKKyAgICAgICAgQWRkIGZ1bGxzY3JlZW4gc3VwcG9ydCBm
b3IgTWVkaWFQbGF5ZXJQcml2YXRlVmlzdWFsQ29udGV4dC4gIEEgbmV3IGNsYXNzLCBNZWRpYVBs
YXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LAorICAgICAgICBwcm92aWRlcyB0aGUgZnVsbHNj
cmVlbiBod25kIGFuZCBsYXllciByZW5kZXJlci4gIEFueSBXS0NBQ0ZMYXllciBjYW4gYmUgcHJv
dmlkZWQgdG8gTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdworICAgICAgICBzbyBm
dXR1cmUgYWRkaXRpb25hbCBNZWRpYVBsYXllclByaXZhdGUgaW1wbGVtZW50YXRpb25zIGNhbiB1
c2UgdGhlIGZ1bGxzY3JlZW4gd2luZG93LgorICAgICAgICAKKyAgICAgICAgTWlub3IgYWRkaXRp
b25zIGhhdmUgYmVlbiBtYWRlIHRvIHRoZSBGbG9hdFNpemUgYW5kIEludFNpemUgY2xhc3Nlczog
YWRkZWQgYXNwZWN0UmF0aW8oKSB0byBib3RoOyBhZGRlZCBzY2FsZShmbG9hdCkgdG8gSW50U2l6
ZS4KKworICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oOiBBZGRlZCBhc3BlY3RSYXRpbygpLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaDogQWRkZWQgYXNwZWN0UmF0aW8oKSBh
bmQgc2NhbGUoZmxvYXQpLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBs
YXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1
aWNrVGltZVZpc3VhbENvbnRleHQuY3BwOiBDYWxsIHJldHJpZXZlQ3VycmVudEltYWdlKCkgYWZ0
ZXIgY3JlYXRpbmcgdGhlIHZpZGVvTGF5ZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1dLQ0FDRkxheWVyLmNwcDogCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dL
Q0FDRkxheWVyLmg6IEFkZCBsYXlvdXQgY2xpZW50IGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6
V0tDQUNGTGF5ZXI6OmZyYW1lKTogQWRkZWQgYmFjayBmcmFtZSgpL3NldEZyYW1lKCkuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dlYlRpbGVkTGF5ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViVGlsZWRMYXllcjo6c2V0RnJhbWUpOiBJbXBsYW1lbnRlZCBzZXRGcmFtZSgp
IGluIHN1YmNsYXNzIG9mIFdLQ0FDRkxheWVyCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1dlYlRpbGVkTGF5ZXIuaDoKKworCiAyMDEwLTA1LTIzICBBZGFtIEJhcnRoICA8YWJhcnRo
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBX
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDYwMDQ4KQorKysgV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjM3
OTEsNiArMjM3OTEsMTQgQEAKIAkJCQkJCT4NCiAJCQkJCTwvRmlsZT4NCiAJCQkJCTxGaWxlDQor
CQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cTWVkaWFQbGF5ZXJQ
cml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAiDQorCQkJCQkJPg0KKwkJCQkJPC9GaWxlPg0KKwkJ
CQkJPEZpbGUNCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxN
ZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgiDQorCQkJCQkJPg0KKwkJCQkJPC9G
aWxlPg0KKwkJCQkJPEZpbGUNCiAJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXHdpblxNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcCINCiAJ
CQkJCQk+DQogCQkJCQk8L0ZpbGU+DQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
bG9hdFNpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0
U2l6ZS5oCShyZXZpc2lvbiA2MDA0OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxv
YXRTaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDE0IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGggPD0gMCB8fCBtX2hlaWdodCA8
PSAwOyB9CiAKKyAgICBmbG9hdCBhc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGgg
LyBtX2hlaWdodDsgfQorCisgICAgdm9pZCBzY2FsZShmbG9hdCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIG1fd2lkdGggPSBtX3dpZHRoICogc2NhbGU7CisgICAgICAgIG1faGVpZ2h0ID0gbV9oZWln
aHQgKiBzY2FsZTsKKyAgICB9CisKICAgICBGbG9hdFNpemUgZXhwYW5kZWRUbyhjb25zdCBGbG9h
dFNpemUmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIEZsb2F0U2l6ZShtX3dp
ZHRoID4gb3RoZXIubV93aWR0aCA/IG1fd2lkdGggOiBvdGhlci5tX3dpZHRoLApJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgJKHJldmlzaW9uIDYwMDQ4KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDgg
QEAgcHVibGljOgogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV93aWR0aCA8
PSAwIHx8IG1faGVpZ2h0IDw9IDA7IH0KICAgICBib29sIGlzWmVybygpIGNvbnN0IHsgcmV0dXJu
ICFtX3dpZHRoICYmICFtX2hlaWdodDsgfQorCisgICAgZmxvYXQgYXNwZWN0UmF0aW8oKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obV93aWR0aCkgLyBzdGF0aWNfY2FzdDxmbG9h
dD4obV9oZWlnaHQpOyB9CiAgICAgCiAgICAgdm9pZCBleHBhbmQoaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KQogICAgIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxh
eWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuY3Bw
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5
ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTgw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIAorICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0IAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUg
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgk0FTIElTlCAKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiAKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiAKKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIAorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiAKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNs
dWRlICJNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgiCisKKyNpbmNsdWRlICJX
ZWJDb3JlSW5zdGFuY2VIYW5kbGUuaCIKKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dDb2xvci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5X
aW5kb3c6Ok1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3coTWVkaWFQbGF5ZXJQcml2
YXRlRnVsbHNjcmVlbkNsaWVudCogY2xpZW50KQorICAgIDogbV9jbGllbnQoY2xpZW50KQorICAg
ICwgbV9od25kKDApCit7CisgICAgbV9sYXllclJlbmRlcmVyID0gV0tDQUNGTGF5ZXJSZW5kZXJl
cjo6Y3JlYXRlKDApOworfQorCitNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93Ojp+
TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdygpCit7CisgICAgbV9jbGllbnQgPSAw
OworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OmNyZWF0ZVdp
bmRvdygpCit7CisgICAgc3RhdGljIEFUT00gd2luZG93QXRvbSA9IDA7CisgICAgaWYgKCF3aW5k
b3dBdG9tKSB7CisgICAgICAgIFdORENMQVNTRVggd2NleCA9IHswfTsKKyAgICAgICAgd2NleC5j
YlNpemUgPSBzaXplb2YoV05EQ0xBU1NFWCk7CisgICAgICAgIHdjZXguc3R5bGUgPSBDU19IUkVE
UkFXIHwgQ1NfVlJFRFJBVyB8IENTX09XTkRDOworICAgICAgICB3Y2V4LmxwZm5XbmRQcm9jID0g
JnN0YXRpY1duZFByb2M7CisgICAgICAgIHdjZXguaEluc3RhbmNlID0gV2ViQ29yZTo6aW5zdGFu
Y2VIYW5kbGUoKTsKKyAgICAgICAgd2NleC5scHN6Q2xhc3NOYW1lID0gTCJNZWRpYVBsYXllclBy
aXZhdGVGdWxsc2NyZWVuV2luZG93Q2xhc3MiOworICAgICAgICB3aW5kb3dBdG9tID0gOjpSZWdp
c3RlckNsYXNzRXgoJndjZXgpOworICAgIH0KKworICAgIGlmIChtX2h3bmQpCisgICAgICAgIGNs
b3NlKCk7CisKKyAgICBNT05JVE9SSU5GTyBtaSA9IHswfTsKKyAgICBtaS5jYlNpemUgPSBzaXpl
b2YoTU9OSVRPUklORk8pOworICAgIEdldE1vbml0b3JJbmZvKE1vbml0b3JGcm9tV2luZG93KDAs
IE1PTklUT1JfREVGQVVMVFRPUFJJTUFSWSksICZtaSk7CisgICAgSW50UmVjdCBtb25pdG9yUmVj
dCA9IG1pLnJjTW9uaXRvcjsKKworICAgIENSRUFURVNUUlVDVFcgY3MgPSB7MH07CisgICAgY3Mu
eCA9IDA7CisgICAgY3MueSA9IDA7CisgICAgY3MuY3ggPSBtb25pdG9yUmVjdC53aWR0aCgpOwor
ICAgIGNzLmN5ID0gbW9uaXRvclJlY3QuaGVpZ2h0KCk7CisgICAgY3Muc3R5bGUgPSBXU19QT1BV
UCB8IFdTX1ZJU0lCTEU7CisgICAgY3MuZHdFeFN0eWxlID0gMDsKKyAgICBjcy5scHN6Q2xhc3Mg
PSBMIk1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3dDbGFzcyI7CisgICAgY3MubHBz
ek5hbWUgPSBMIiI7CisgICAgY3MubHBDcmVhdGVQYXJhbXMgPSAoTFBWT0lEKXRoaXM7CisgICAg
CisgICAgbV9od25kID0gOjpDcmVhdGVXaW5kb3dFeFcoY3MuZHdFeFN0eWxlLCBjcy5scHN6Q2xh
c3MsIGNzLmxwc3pOYW1lLCBjcy5zdHlsZSwgY3MueCwgY3MueSwgY3MuY3gsIGNzLmN5LCBjcy5o
d25kUGFyZW50LCBjcy5oTWVudSwgY3MuaEluc3RhbmNlLCBjcy5scENyZWF0ZVBhcmFtcyk7Cit9
CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6Y2xvc2UoKQorewor
ICAgIDo6RGVzdHJveVdpbmRvdyhtX2h3bmQpOworICAgIG1faHduZCA9IDA7Cit9CisKK0hXTkQg
TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6aHduZCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1faHduZDsKK30KKworV0tDQUNGTGF5ZXJSZW5kZXJlciogTWVkaWFQbGF5ZXJQcml2
YXRlRnVsbHNjcmVlbldpbmRvdzo6bGF5ZXJSZW5kZXJlcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fbGF5ZXJSZW5kZXJlci5nZXQoKTsKK30KKworV0tDQUNGTGF5ZXIqIE1lZGlhUGxheWVyUHJp
dmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OnJvb3RDaGlsZExheWVyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9yb290Q2hpbGQuZ2V0KCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNj
cmVlbldpbmRvdzo6c2V0Um9vdENoaWxkTGF5ZXIoUGFzc1JlZlB0cjxXS0NBQ0ZMYXllcj4gcm9v
dENoaWxkKQoreworICAgIGlmIChtX3Jvb3RDaGlsZCAhPSByb290Q2hpbGQpIHsKKworICAgICAg
ICBpZiAobV9yb290Q2hpbGQpIHsKKyAgICAgICAgICAgIG1fcm9vdENoaWxkLT5yZW1vdmVGcm9t
U3VwZXJsYXllcigpOworICAgICAgICAgICAgbV9yb290Q2hpbGQuY2xlYXIoKTsKKyAgICAgICAg
fQorCisgICAgICAgIG1fcm9vdENoaWxkID0gcm9vdENoaWxkOworICAgIH0KKworICAgIGlmICht
X3Jvb3RDaGlsZCkgeworICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNldFJvb3RDaGlsZExheWVy
KG1fcm9vdENoaWxkLmdldCgpKTsKKyAgICAgICAgV0tDQUNGTGF5ZXIqIHJvb3RMYXllciA9IG1f
cm9vdENoaWxkLT5yb290TGF5ZXIoKTsKKyAgICAgICAgQ0dSZWN0IHJvb3RCb3VuZHMgPSBtX3Jv
b3RDaGlsZC0+cm9vdExheWVyKCktPmJvdW5kcygpOworICAgICAgICBtX3Jvb3RDaGlsZC0+c2V0
RnJhbWUocm9vdEJvdW5kcyk7CisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0U2Nyb2xsRnJh
bWUoSW50UG9pbnQocm9vdEJvdW5kcy5vcmlnaW4pLCBJbnRTaXplKHJvb3RCb3VuZHMuc2l6ZSkp
OworICAgICAgICBtX3Jvb3RDaGlsZC0+c2V0QmFja2dyb3VuZENvbG9yKENHQ29sb3JHZXRDb25z
dGFudENvbG9yKGtDR0NvbG9yQmxhY2spKTsKKyAgICAgICAgcm9vdExheWVyLT5zZXRCYWNrZ3Jv
dW5kQ29sb3IoQ0dDb2xvckdldENvbnN0YW50Q29sb3Ioa0NHQ29sb3JCbGFjaykpOworICAgIH0K
K30KKworTFJFU1VMVCBDQUxMQkFDSyBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93
OjpzdGF0aWNXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBM
UEFSQU0gbFBhcmFtKQoreworICAgIExPTkdfUFRSIGxvbmdQdHIgPSBHZXRXaW5kb3dMb25nUHRy
KGhXbmQsIEdXTFBfVVNFUkRBVEEpOworCisgICAgaWYgKCFsb25nUHRyICYmIG1lc3NhZ2UgPT0g
V01fQ1JFQVRFKSB7CisgICAgICAgIExQQ1JFQVRFU1RSVUNUIGxwY3MgPSByZWludGVycHJldF9j
YXN0PExQQ1JFQVRFU1RSVUNUPihsUGFyYW0pOworICAgICAgICBsb25nUHRyID0gKExPTkdfUFRS
KWxwY3MtPmxwQ3JlYXRlUGFyYW1zOworICAgICAgICA6OlNldFdpbmRvd0xvbmdQdHIoaFduZCwg
R1dMUF9VU0VSREFUQSwgbG9uZ1B0cik7CisgICAgfQorCisgICAgaWYgKE1lZGlhUGxheWVyUHJp
dmF0ZUZ1bGxzY3JlZW5XaW5kb3cqIHdpbmRvdyA9IHJlaW50ZXJwcmV0X2Nhc3Q8TWVkaWFQbGF5
ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdyo+KGxvbmdQdHIpKQorICAgICAgICByZXR1cm4gd2lu
ZG93LT53bmRQcm9jKGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsKKworICAgIHJldHVy
biA6OkRlZldpbmRvd1Byb2MoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOyAgICAKK30K
KworTFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93Ojp3bmRQcm9jKEhX
TkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQorewor
ICAgIExSRVNVTFQgbFJlc3VsdCA9IDA7CisgICAgc3dpdGNoIChtZXNzYWdlKSB7CisgICAgY2Fz
ZSBXTV9DUkVBVEU6CisgICAgICAgIG1faHduZCA9IGhXbmQ7CisgICAgICAgIG1fbGF5ZXJSZW5k
ZXJlci0+c2V0SG9zdFdpbmRvdyhtX2h3bmQpOworICAgICAgICBtX2xheWVyUmVuZGVyZXItPmNy
ZWF0ZVJlbmRlcmVyKCk7CisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0TmVlZHNEaXNwbGF5
KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV01fREVTVFJPWToKKyAgICAgICAgbV9od25k
ID0gMDsKKyAgICAgICAgbV9sYXllclJlbmRlcmVyLT5kZXN0cm95UmVuZGVyZXIoKTsKKyAgICAg
ICAgbV9sYXllclJlbmRlcmVyLT5zZXRIb3N0V2luZG93KDApOworICAgIGNhc2UgV01fV0lORE9X
UE9TQ0hBTkdFRDoKKyAgICAgICAgeworICAgICAgICAgICAgTFBXSU5ET1dQT1Mgd3AgPSAoTFBX
SU5ET1dQT1MpbFBhcmFtOworICAgICAgICAgICAgaWYgKCEod3AtPmZsYWdzICYgU1dQX05PTU9W
RSkpIHsKKyAgICAgICAgICAgICAgICBtX2xheWVyUmVuZGVyZXItPnJlc2l6ZSgpOworICAgICAg
ICAgICAgICAgIFdLQ0FDRkxheWVyKiByb290TGF5ZXIgPSBtX3Jvb3RDaGlsZC0+cm9vdExheWVy
KCk7CisgICAgICAgICAgICAgICAgQ0dSZWN0IHJvb3RCb3VuZHMgPSBtX3Jvb3RDaGlsZC0+cm9v
dExheWVyKCktPmJvdW5kcygpOworICAgICAgICAgICAgICAgIG1fcm9vdENoaWxkLT5zZXRGcmFt
ZShyb290Qm91bmRzKTsKKyAgICAgICAgICAgICAgICBtX3Jvb3RDaGlsZC0+c2V0TmVlZHNMYXlv
dXQoKTsKKyAgICAgICAgICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNldFNjcm9sbEZyYW1lKElu
dFBvaW50KHJvb3RCb3VuZHMub3JpZ2luKSwgSW50U2l6ZShyb290Qm91bmRzLnNpemUpKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFdNX1BBSU5U
OgorICAgICAgICBtX2xheWVyUmVuZGVyZXItPnJlbmRlclNvb24oKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBsUmVzdWx0ID0gbV9jbGllbnQt
PmZ1bGxzY3JlZW5DbGllbnRXbmRQcm9jKGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsK
KworICAgIHJldHVybiBsUmVzdWx0OworfQorCit9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVs
bHNjcmVlbldpbmRvdy5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIAorICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0IAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUgCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgk0FTIElTlCAKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiAKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiAKKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIAorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiAKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhUGxh
eWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3dfaAorI2RlZmluZSBNZWRpYVBsYXllclByaXZhdGVG
dWxsc2NyZWVuV2luZG93X2gKKworI2luY2x1ZGUgIldLQ0FDRkxheWVyLmgiCisjaW5jbHVkZSAi
V0tDQUNGTGF5ZXJSZW5kZXJlci5oIgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFQbGF5ZXJQ
cml2YXRlRnVsbHNjcmVlbkNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCBMUkVTVUxUIGZ1
bGxzY3JlZW5DbGllbnRXbmRQcm9jKEhXTkQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNLCBMUEFSQU0p
ID0gMDsKK307CisKK2NsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cgewor
cHVibGljOgorICAgIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3coTWVkaWFQbGF5
ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCopOworICAgIHZpcnR1YWwgfk1lZGlhUGxheWVyUHJp
dmF0ZUZ1bGxzY3JlZW5XaW5kb3coKTsKKworICAgIHZvaWQgY3JlYXRlV2luZG93KCk7CisgICAg
dm9pZCBjbG9zZSgpOworICAgIAorICAgIEhXTkQgaHduZCgpIGNvbnN0OworCisgICAgV0tDQUNG
TGF5ZXJSZW5kZXJlciogbGF5ZXJSZW5kZXJlcigpIGNvbnN0OworCisgICAgV0tDQUNGTGF5ZXIq
IHJvb3RDaGlsZExheWVyKCkgY29uc3Q7CisgICAgdm9pZCBzZXRSb290Q2hpbGRMYXllcihQYXNz
UmVmUHRyPFdLQ0FDRkxheWVyPik7CisKK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgTFJFU1VMVCBD
QUxMQkFDSyBzdGF0aWNXbmRQcm9jKEhXTkQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNLCBMUEFSQU0p
OworICAgIExSRVNVTFQgd25kUHJvYyhIV05ELCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSwgTFBBUkFN
KTsKKworICAgIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5DbGllbnQqIG1fY2xpZW50Owor
ICAgIE93blB0cjxXS0NBQ0ZMYXllclJlbmRlcmVyPiBtX2xheWVyUmVuZGVyZXI7CisgICAgUmVm
UHRyPFdLQ0FDRkxheWVyPiBtX3Jvb3RDaGlsZDsKKyAgICBIV05EIG1faHduZDsKK307CisKK30K
KworI2VuZGlmCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxD
b250ZXh0LmNwcAkocmV2aXNpb24gNjAwNDgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZp
c3VhbENvbnRleHQKIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250
ZXh0OjpzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdAogewotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogUGxhdGZvcm1NZWRpYSBNZWRpYVBsYXllclByaXZhdGVRdWlj
a1RpbWVWaXN1YWxDb250ZXh0OjpwbGF0Zm9ybU1lZGlhKCkgY29uc3QKQEAgLTc1NiwxNiArNzU2
LDE2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ28KIAogICAgICAg
ICBXS0NBQ0ZMYXllciogbGF5ZXIgPSBzdGF0aWNfY2FzdDxXS0NBQ0ZMYXllcio+KG1fcXRWaWRl
b0xheWVyLT5wbGF0Zm9ybUxheWVyKCkpOwogCi0gICAgICAgICAgICBpZiAoIWJ1ZmZlci5sb2Nr
QmFzZUFkZHJlc3MoKSkgewotICAgICAgICAgICAgICAgQ0ZUaW1lSW50ZXJ2YWwgaW1hZ2VUaW1l
ID0gUVRNb3ZpZVZpc3VhbENvbnRleHQ6OmN1cnJlbnRIb3N0VGltZSgpOworICAgICAgICBpZiAo
IWJ1ZmZlci5sb2NrQmFzZUFkZHJlc3MoKSkgeworICAgICAgICAgICBDRlRpbWVJbnRlcnZhbCBp
bWFnZVRpbWUgPSBRVE1vdmllVmlzdWFsQ29udGV4dDo6Y3VycmVudEhvc3RUaW1lKCk7CiAKLSAg
ICAgICAgICAgICAgICBDR0ltYWdlUmVmIGltYWdlID0gQ3JlYXRlQ0dJbWFnZUZyb21QaXhlbEJ1
ZmZlcihidWZmZXIpOwotICAgICAgICAgICAgICAgIGxheWVyLT5zZXRDb250ZW50cyhpbWFnZSk7
Ci0gICAgICAgICAgICAgICAgQ0dJbWFnZVJlbGVhc2UoaW1hZ2UpOworICAgICAgICAgICAgQ0dJ
bWFnZVJlZiBpbWFnZSA9IENyZWF0ZUNHSW1hZ2VGcm9tUGl4ZWxCdWZmZXIoYnVmZmVyKTsKKyAg
ICAgICAgICAgIGxheWVyLT5zZXRDb250ZW50cyhpbWFnZSk7CisgICAgICAgICAgICBDR0ltYWdl
UmVsZWFzZShpbWFnZSk7CiAKLSAgICAgICAgICAgICAgICBidWZmZXIudW5sb2NrQmFzZUFkZHJl
c3MoKTsKLSAgICAgICAgICAgICAgICBsYXllci0+cm9vdExheWVyKCktPnNldE5lZWRzUmVuZGVy
KCk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBidWZmZXIudW5sb2NrQmFzZUFkZHJlc3Mo
KTsKKyAgICAgICAgICAgIGxheWVyLT5yb290TGF5ZXIoKS0+c2V0TmVlZHNSZW5kZXIoKTsKKyAg
ICAgICAgfQogICAgIH0gZWxzZQogI2VuZGlmCiAgICAgICAgIG1fcGxheWVyLT5yZXBhaW50KCk7
CkBAIC05MzksNiArOTM5LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlz
dWFsQ28KICNlbmRpZgogICAgIC8vIFRoZSBsYXllciB3aWxsIGdldCBob29rZWQgdXAgdmlhIFJl
bmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckNvbmZpZ3VyYXRpb24oKS4KICNl
bmRpZgorCisgICAgLy8gZmlsbCB0aGUgbmV3bHkgY3JlYXRlZCBsYXllciB3aXRoIGltYWdlIGRh
dGEKKyAgICBpZiAobV92aXN1YWxDb250ZXh0KQorICAgICAgICByZXRyaWV2ZUN1cnJlbnRJbWFn
ZSgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6
OmRlc3Ryb3lMYXllckZvck1vdmllKCkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1dLQ0FDRkxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9XS0NBQ0ZMYXllci5jcHAJKHJldmlzaW9uIDYwMDQ4KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNGTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQs
NiArMTU0LDcgQEAgUGFzc1JlZlB0cjxXS0NBQ0ZMYXllcj4gV0tDQUNGTGF5ZXI6OmNyZQogCiBX
S0NBQ0ZMYXllcjo6V0tDQUNGTGF5ZXIoTGF5ZXJUeXBlIHR5cGUpCiAgICAgOiBtX2xheWVyKEFk
b3B0Q0YsIENBQ0ZMYXllckNyZWF0ZSh0b0NBQ0ZMYXllclR5cGUodHlwZSkpKQorICAgICwgbV9s
YXlvdXRDbGllbnQoMCkKICAgICAsIG1fbmVlZHNEaXNwbGF5T25Cb3VuZHNDaGFuZ2UoZmFsc2Up
CiB7CiAgICAgQ0FDRkxheWVyU2V0VXNlckRhdGEobGF5ZXIoKSwgdGhpcyk7CkBAIC0yODYsMTEg
KzI4NywxMCBAQCB2b2lkICBXS0NBQ0ZMYXllcjo6YWRvcHRTdWJsYXllcnMoV0tDQUNGCiB2b2lk
IFdLQ0FDRkxheWVyOjpyZW1vdmVGcm9tU3VwZXJsYXllcigpCiB7CiAgICAgV0tDQUNGTGF5ZXIq
IHN1cGVybGF5ZXIgPSB0aGlzLT5zdXBlcmxheWVyKCk7Ci0gICAgaWYgKCFzdXBlcmxheWVyKQot
ICAgICAgICByZXR1cm47Ci0KICAgICBDQUNGTGF5ZXJSZW1vdmVGcm9tU3VwZXJsYXllcihsYXll
cigpKTsKLSAgICBzdXBlcmxheWVyLT5zZXROZWVkc0NvbW1pdCgpOworCisgICAgaWYgKHN1cGVy
bGF5ZXIpCisgICAgICAgIHN1cGVybGF5ZXItPnNldE5lZWRzQ29tbWl0KCk7CiB9CiAKIFdLQ0FD
RkxheWVyKiBXS0NBQ0ZMYXllcjo6aW50ZXJuYWxTdWJsYXllckF0SW5kZXgoaW50IGluZGV4KSBj
b25zdApAQCAtMzQzLDYgKzM0MywxOSBAQCB2b2lkIFdLQ0FDRkxheWVyOjpzZXRCb3VuZHMoY29u
c3QgQ0dSZWN0CiAgICAgICAgIHNldE5lZWRzRGlzcGxheSgpOwogfQogCit2b2lkIFdLQ0FDRkxh
eWVyOjpzZXRGcmFtZShjb25zdCBDR1JlY3QmIHJlY3QpCit7CisgICAgQ0dSZWN0IG9sZEZyYW1l
ID0gZnJhbWUoKTsKKyAgICBpZiAoQ0dSZWN0RXF1YWxUb1JlY3QocmVjdCwgb2xkRnJhbWUpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBDQUNGTGF5ZXJTZXRGcmFtZShsYXllcigpLCByZWN0KTsK
KyAgICBzZXROZWVkc0NvbW1pdCgpOworCisgICAgaWYgKG1fbmVlZHNEaXNwbGF5T25Cb3VuZHND
aGFuZ2UpCisgICAgICAgIHNldE5lZWRzRGlzcGxheSgpOworfQorCiB2b2lkIFdLQ0FDRkxheWVy
OjpzZXRDb250ZW50c0dyYXZpdHkoQ29udGVudHNHcmF2aXR5VHlwZSB0eXBlKQogewogICAgIENB
Q0ZMYXllclNldENvbnRlbnRzR3Jhdml0eShsYXllcigpLCB0b0NBQ0ZDb250ZW50c0dyYXZpdHlU
eXBlKHR5cGUpKTsKQEAgLTQxOCw2ICs0MzEsMzIgQEAgdm9pZCBXS0NBQ0ZMYXllcjo6aW50ZXJu
YWxTZXROZWVkc0Rpc3BsYQogICAgIENBQ0ZMYXllclNldE5lZWRzRGlzcGxheShsYXllcigpLCBk
aXJ0eVJlY3QpOwogfQogCit2b2lkIFdLQ0FDRkxheWVyOjpzZXRMYXlvdXRDbGllbnQoV0tDQUNG
TGF5ZXJMYXlvdXRDbGllbnQqIGxheW91dENsaWVudCkKK3sKKyAgICBpZiAobGF5b3V0Q2xpZW50
ID09IG1fbGF5b3V0Q2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xheW91dENsaWVu
dCA9IGxheW91dENsaWVudDsKKyAgICBDQUNGTGF5ZXJTZXRMYXlvdXRDYWxsYmFjayhsYXllcigp
LCBtX2xheW91dENsaWVudCA/ICZsYXlvdXRTdWJsYXllcnNQcm9jIDogMCk7ICAgIAorfQorCit2
b2lkIFdLQ0FDRkxheWVyOjpsYXlvdXRTdWJsYXllcnNQcm9jKENBQ0ZMYXllclJlZiBjYUxheWVy
KSAKK3sKKyAgICBXS0NBQ0ZMYXllciogbGF5ZXIgPSBXS0NBQ0ZMYXllcjo6bGF5ZXIoY2FMYXll
cik7CisgICAgaWYgKGxheWVyICYmIGxheWVyLT5tX2xheW91dENsaWVudCkKKyAgICAgICAgbGF5
ZXItPm1fbGF5b3V0Q2xpZW50LT5sYXlvdXRTdWJsYXllcnNPZkxheWVyKGxheWVyKTsKK30KKwor
V0tDQUNGTGF5ZXJMYXlvdXRDbGllbnQqIFdLQ0FDRkxheWVyOjpsYXlvdXRDbGllbnQoKSBjb25z
dAoreworICAgIHJldHVybiBtX2xheW91dENsaWVudDsKK30KKwordm9pZCBXS0NBQ0ZMYXllcjo6
c2V0TmVlZHNMYXlvdXQoKQoreworICAgIENBQ0ZMYXllclNldE5lZWRzTGF5b3V0KGxheWVyKCkp
OworfQorCiAjaWZuZGVmIE5ERUJVRwogc3RhdGljIHZvaWQgcHJpbnRJbmRlbnQoaW50IGluZGVu
dCkKIHsKQEAgLTUwMCw3ICs1MzksNyBAQCB2b2lkIFdLQ0FDRkxheWVyOjpwcmludExheWVyKGlu
dCBpbmRlbnQpCiAgICAgQ0dJbWFnZVJlZiBsYXllckNvbnRlbnRzID0gY29udGVudHMoKTsKICAg
ICBpZiAobGF5ZXJDb250ZW50cykgewogICAgICAgICBwcmludEluZGVudChpbmRlbnQgKyAxKTsK
LSAgICAgICAgZnByaW50ZihzdGRlcnIsICIoY29udGVudHMgKGltYWdlIFslZCAlZF0pKVxuIiwK
KyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiKGNvbnRlbnRzIChpbWFnZSBbJWQgJWRdKSlc
biIsCiAgICAgICAgICAgICBDR0ltYWdlR2V0V2lkdGgobGF5ZXJDb250ZW50cyksIENHSW1hZ2VH
ZXRIZWlnaHQobGF5ZXJDb250ZW50cykpOwogICAgIH0KIApJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vV0tDQUNGTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllci5oCShyZXZpc2lvbiA2MDA0OCkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDggKzQ0LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0tDQUNGQW5p
bWF0aW9uOwotY2xhc3MgV0tDQUNGVGltaW5nRnVuY3Rpb247CitjbGFzcyBXS0NBQ0ZMYXllcjsK
KworY2xhc3MgV0tDQUNGTGF5ZXJMYXlvdXRDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwg
dm9pZCBsYXlvdXRTdWJsYXllcnNPZkxheWVyKFdLQ0FDRkxheWVyKikgPSAwOworfTsKIAogY2xh
c3MgV0tDQUNGTGF5ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXS0NBQ0ZMYXllcj4gewogcHVibGlj
OgpAQCAtNjMsNiArNjcsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdJbkNv
bnRleHQoUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqKSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBz
ZXRMYXlvdXRDbGllbnQoV0tDQUNGTGF5ZXJMYXlvdXRDbGllbnQqKTsKKyAgICB2aXJ0dWFsIFdL
Q0FDRkxheWVyTGF5b3V0Q2xpZW50KiBsYXlvdXRDbGllbnQoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0TmVlZHNMYXlvdXQoKTsKKwogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KGNvbnN0
IENHUmVjdCogZGlydHlSZWN0ID0gMCkKICAgICB7CiAgICAgICAgIGludGVybmFsU2V0TmVlZHNE
aXNwbGF5KGRpcnR5UmVjdCk7CkBAIC0xNzMsNiArMTgxLDkgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0RmlsdGVycyhDRkFycmF5UmVmIGZpbHRlcnMpIHsgQ0FDRkxheWVyU2V0RmlsdGVycyhsYXll
cigpLCBmaWx0ZXJzKTsgc2V0TmVlZHNDb21taXQoKTsgfQogICAgIENGQXJyYXlSZWYgZmlsdGVy
cygpIGNvbnN0IHsgcmV0dXJuIENBQ0ZMYXllckdldEZpbHRlcnMobGF5ZXIoKSk7IH0KIAorICAg
IHZvaWQgc2V0RnJhbWUoY29uc3QgQ0dSZWN0Jik7CisgICAgQ0dSZWN0IGZyYW1lKCkgY29uc3Qg
eyByZXR1cm4gQ0FDRkxheWVyR2V0RnJhbWUobGF5ZXIoKSk7IH0KKwogICAgIHZvaWQgc2V0SGlk
ZGVuKGJvb2wgaGlkZGVuKSB7IENBQ0ZMYXllclNldEhpZGRlbihsYXllcigpLCBoaWRkZW4pOyBz
ZXROZWVkc0NvbW1pdCgpOyB9CiAgICAgYm9vbCBpc0hpZGRlbigpIGNvbnN0IHsgcmV0dXJuIENB
Q0ZMYXllcklzSGlkZGVuKGxheWVyKCkpOyB9CiAKQEAgLTI2MCw4ICsyNzEsMTEgQEAgcHJvdGVj
dGVkOgogICAgIHZvaWQgcHJpbnRMYXllcihpbnQgaW5kZW50KSBjb25zdDsKICNlbmRpZgogCisg
ICAgc3RhdGljIHZvaWQgbGF5b3V0U3VibGF5ZXJzUHJvYyhDQUNGTGF5ZXJSZWYpOworCiBwcml2
YXRlOgogICAgIFJldGFpblB0cjxDQUNGTGF5ZXJSZWY+IG1fbGF5ZXI7CisgICAgV0tDQUNGTGF5
ZXJMYXlvdXRDbGllbnQqIG1fbGF5b3V0Q2xpZW50OwogICAgIGJvb2wgbV9uZWVkc0Rpc3BsYXlP
bkJvdW5kc0NoYW5nZTsKIH07CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1dlYlRpbGVkTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL1dlYlRpbGVkTGF5ZXIuY3BwCShyZXZpc2lvbiA2MDA0OCkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL1dlYlRpbGVkTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
Myw2ICs3MywxNSBAQCB2b2lkIFdlYlRpbGVkTGF5ZXI6OnNldEJvdW5kcyhjb25zdCBDR1JlCiAg
ICAgdXBkYXRlVGlsZXMoKTsKIH0KIAordm9pZCBXZWJUaWxlZExheWVyOjpzZXRGcmFtZShjb25z
dCBDR1JlY3QmIHJlY3QpCit7CisgICAgaWYgKENHUmVjdEVxdWFsVG9SZWN0KHJlY3QsIGZyYW1l
KCkpKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJMYXllcjo6c2V0RnJhbWUocmVjdCk7Cisg
ICAgdXBkYXRlVGlsZXMoKTsKK30KKwogdm9pZCBXZWJUaWxlZExheWVyOjppbnRlcm5hbFNldE5l
ZWRzRGlzcGxheShjb25zdCBDR1JlY3QqIGRpcnR5UmVjdCkKIHsKICAgICAvLyBGSVhNRTogT25s
eSBzZXROZWVkc0Rpc3BsYXkgZm9yIHRpbGVzIHRoYXQgYXJlIGN1cnJlbnRseSB2aXNpYmxlCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XZWJUaWxlZExheWVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV2ViVGlsZWRMYXllci5oCShy
ZXZpc2lvbiA2MDA0OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dlYlRpbGVk
TGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+V2ViVGlsZWRMYXllcigpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEJvdW5kcyhjb25z
dCBDR1JlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RnJhbWUoY29uc3QgQ0dSZWN0Jik7CiAK
IHByb3RlY3RlZDoKICAgICBXZWJUaWxlZExheWVyKGNvbnN0IENHU2l6ZSYgdGlsZVNpemUsIEdy
YXBoaWNzTGF5ZXIqIG93bmVyKTsKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA2MDAyNykKKysrIFdlYktpdC93
aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMDUtMjIg
IEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnVsbCBzY3JlZW4gZG9lc24ndCB3b3JrIGZvciB2
aWRlbyBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Mzk1NTcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODAxMTgxMworICAgICAgICAKKyAg
ICAgICAgTW9kaWZpZWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciB0byB3b3JrIHdpdGggTWVk
aWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy4gIFRoZSBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyCisgICAgICAgIGlzIG5vdyBNZWRpYVBsYXllclByaXZhdGUgYWdub3N0aWMuCisKKyAg
ICAgICAgKiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OkxheW91dENsaWVudDo6TGF5b3V0Q2xpZW50KTogIAorICAgICAg
ICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6TGF5b3V0Q2xpZW50OjpsYXlvdXRTdWJsYXll
cnNPZkxheWVyKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXIpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6
fkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXI6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXI6OmNyZWF0ZUhVRFdpbmRvdyk6CisgICAgICAgICogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ci5oOgorCiAyMDEwLTA1LTIxICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCkluZGV4OiBXZWJLaXQvd2luL0Z1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDYwMDI3KQorKysgV2ViS2l0L3dp
bi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiAr
MzYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRm9udFNlbGVjdG9yLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRSdW4uaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1dLQ0FDRkxheWVyLmg+CiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50
ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2luY2x1ZGUgPHdpbmRvd3N4Lmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMTY5LDkgKzE3MCw1NCBAQCB2b2lkIEhV
RFNsaWRlcjo6ZHJhZyhjb25zdCBJbnRQb2ludCYgcG9pCiAgICAgbV9idXR0b25Qb3NpdGlvbiA9
IG1heCgwLCBtaW4obV9yZWN0LndpZHRoKCkgLSBtX2J1dHRvblNpemUsIHBvaW50LngoKSAtIG1f
ZHJhZ1N0YXJ0T2Zmc2V0KSk7CiB9CiAKK2NsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6
OkxheW91dENsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpXS0NBQ0ZMYXllckxheW91dENsaWVudCB7
CitwdWJsaWM6CisgICAgTGF5b3V0Q2xpZW50KEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIHBh
cmVudCkKKyAgICAgICAgOiBtX3BhcmVudChwYXJlbnQpCisgICAgeworICAgIH0KKworICAgIHZv
aWQgbGF5b3V0U3VibGF5ZXJzT2ZMYXllcihXS0NBQ0ZMYXllciogbGF5ZXIpIAorICAgIHsKKyAg
ICAgICAgaWYgKGxheWVyICE9IG1fcGFyZW50LT5tX3Jvb3RDaGlsZCkgCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50
ID0gbV9wYXJlbnQtPm1fbWVkaWFFbGVtZW50LmdldCgpOworICAgICAgICBpZiAoIW1lZGlhRWxl
bWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBXS0NBQ0ZMYXllciogdmlkZW9M
YXllciA9IG1lZGlhRWxlbWVudC0+cGxhdGZvcm1MYXllcigpOworICAgICAgICBpZiAoIXZpZGVv
TGF5ZXIgfHwgdmlkZW9MYXllci0+c3VwZXJsYXllcigpICE9IGxheWVyKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIEZsb2F0UG9pbnQgdmlkZW9BbmNob3IgPSB2aWRlb0xheWVyLT5h
bmNob3JQb2ludCgpOworICAgICAgICBGbG9hdFJlY3QgbGF5ZXJCb3VuZHMgPSBsYXllci0+Ym91
bmRzKCk7CisgICAgICAgIEZsb2F0UmVjdCB2aWRlb0JvdW5kcyA9IHZpZGVvTGF5ZXItPmJvdW5k
cygpOworICAgICAgICBGbG9hdFBvaW50IGxheWVyQ2VudGVyID0gbGF5ZXJCb3VuZHMuY2VudGVy
KCk7CisKKyAgICAgICAgRmxvYXRTaXplIG5hdHVyYWxTaXplID0gbWVkaWFFbGVtZW50LT5wbGF5
ZXIoKS0+bmF0dXJhbFNpemUoKTsKKyAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSAwOworICAg
ICAgICBpZiAobmF0dXJhbFNpemUuYXNwZWN0UmF0aW8oKSA+IGxheWVyQm91bmRzLnNpemUoKS5h
c3BlY3RSYXRpbygpKQorICAgICAgICAgICAgc2NhbGVGYWN0b3IgPSBsYXllckJvdW5kcy53aWR0
aCgpIC8gbmF0dXJhbFNpemUud2lkdGgoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2Nh
bGVGYWN0b3IgPSBsYXllckJvdW5kcy5oZWlnaHQoKSAvIG5hdHVyYWxTaXplLmhlaWdodCgpOwor
ICAgICAgICBuYXR1cmFsU2l6ZS5zY2FsZShzY2FsZUZhY3Rvcik7CisgICAgICAgIHZpZGVvQm91
bmRzLnNldFNpemUobmF0dXJhbFNpemUpOworCisgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgY2Vu
dGVyZWQgcG9zaXRpb24gYmFzZWQgb24gdGhlIHZpZGVvQW5jaG9yLCB2aWRlb0JvdW5kcywgYW5k
IGxheWVyQm91bmRzOgorICAgICAgICBGbG9hdFBvaW50IHZpZGVvUG9zaXRpb247CisgICAgICAg
IHZpZGVvUG9zaXRpb24uc2V0WChsYXllckNlbnRlci54KCkgLSAoMC41IC0gdmlkZW9BbmNob3Iu
eCgpKSAqIHZpZGVvQm91bmRzLndpZHRoKCkpOworICAgICAgICB2aWRlb1Bvc2l0aW9uLnNldFko
bGF5ZXJDZW50ZXIueSgpIC0gKDAuNSAtIHZpZGVvQW5jaG9yLnkoKSkgKiB2aWRlb0JvdW5kcy5o
ZWlnaHQoKSk7CisgICAgICAgIHZpZGVvTGF5ZXItPnNldFBvc2l0aW9uKHZpZGVvUG9zaXRpb24p
OworCisgICAgICAgIHZpZGVvTGF5ZXItPnNldEJvdW5kcyhGbG9hdFJlY3QoRmxvYXRQb2ludCgp
LCBuYXR1cmFsU2l6ZSkpOworICAgIH0KKworICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIq
IG1fcGFyZW50OworfTsKKwogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6RnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcigpCiAgICAgOiBtX2h1ZFdpbmRvdygwKQotICAgICwgbV92aWRlb1dpbmRv
dygwKQogICAgICwgbV9wbGF5UGF1c2VCdXR0b24oSFVEQnV0dG9uOjpQbGF5UGF1c2VCdXR0b24s
IEludFBvaW50KCh3aW5kb3dXaWR0aCAtIGJ1dHRvblNpemUpIC8gMiwgbWFyZ2luVG9wKSkKICAg
ICAsIG1fdGltZVNsaWRlckJ1dHRvbihIVURCdXR0b246OlRpbWVTbGlkZXJCdXR0b24sIEludFBv
aW50KDAsIDApKQogICAgICwgbV92b2x1bWVVcEJ1dHRvbihIVURCdXR0b246OlZvbHVtZVVwQnV0
dG9uLCBJbnRQb2ludChtYXJnaW4gKyBidXR0b25NaW5pU2l6ZSArIHZvbHVtZVNsaWRlcldpZHRo
ICsgYnV0dG9uTWluaVNpemUgLyAyLCBtYXJnaW5Ub3AgKyAoYnV0dG9uU2l6ZSAtIGJ1dHRvbk1p
bmlTaXplKSAvIDIpKQpAQCAtMTgzLDI1ICsyMjksMjAgQEAgRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcjo6RnVsbHNjcmVlblZpZAogICAgICwgbV9oaXRXaWRnZXQoMCkKICAgICAsIG1fbW92aW5n
V2luZG93KGZhbHNlKQogICAgICwgbV90aW1lcih0aGlzLCAmRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcjo6dGltZXJGaXJlZCkKKyAgICAsIG1fcm9vdENoaWxkKFdlYkNvcmU6OldLQ0FDRkxheWVy
OjpjcmVhdGUoV2ViQ29yZTo6V0tDQUNGTGF5ZXI6OkxheWVyKSkKKyAgICAsIG1fbGF5b3V0Q2xp
ZW50KG5ldyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpMYXlvdXRDbGllbnQodGhpcykpCiB7
CisgICAgbV9yb290Q2hpbGQtPnNldExheW91dENsaWVudChtX2xheW91dENsaWVudC5nZXQoKSk7
CiB9CiAKIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6On5GdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyKCkKIHsKLSAgICBpZiAobW92aWUoKSkKLSAgICAgICAgbW92aWUoKS0+ZXhpdEZ1bGxzY3Jl
ZW4oKTsKLX0KLQotUVRNb3ZpZUdXb3JsZCogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6bW92
aWUoKSBjb25zdAotewotICAgIGlmICghbV9tZWRpYUVsZW1lbnQpCi0gICAgICAgIHJldHVybiAw
OworICAgIG1fcm9vdENoaWxkLT5zZXRMYXlvdXRDbGllbnQoMCk7CiAKLSAgICBQbGF0Zm9ybU1l
ZGlhIHBsYXRmb3JtTWVkaWEgPSBtX21lZGlhRWxlbWVudC0+cGxhdGZvcm1NZWRpYSgpOwotICAg
IGlmIChwbGF0Zm9ybU1lZGlhLnR5cGUgIT0gUGxhdGZvcm1NZWRpYTo6UVRNb3ZpZUdXb3JsZFR5
cGUpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIHBsYXRmb3JtTWVkaWEubWVkaWEu
cXRNb3ZpZUdXb3JsZDsKKyAgICBpZiAobV9mdWxsc2NyZWVuV2luZG93KSB7CisgICAgICAgIG1f
ZnVsbHNjcmVlbldpbmRvdy0+Y2xvc2UoKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuV2luZG93ID0g
MDsKKyAgICB9CiB9CiAKIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6c2V0TWVkaWFF
bGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKQEAgLTIxOCwxMyArMjU5LDE4
IEBAIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6c2V0TWVkaWEKIAogdm9pZCBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjplbnRlckZ1bGxzY3JlZW4oKQogewotICAgIGlmICghbW92
aWUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV92aWRlb1dpbmRvdyA9IG1vdmllKCktPmVu
dGVyRnVsbHNjcmVlbih0aGlzKTsKKyAgICBpZiAoIW1fZnVsbHNjcmVlbldpbmRvdykgeworICAg
ICAgICBtX2Z1bGxzY3JlZW5XaW5kb3cgPSBuZXcgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVl
bldpbmRvdyh0aGlzKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuV2luZG93LT5jcmVhdGVXaW5kb3co
KTsKKyAgICAgICAgbV9mdWxsc2NyZWVuV2luZG93LT5zZXRSb290Q2hpbGRMYXllcihtX3Jvb3RD
aGlsZCk7CisgICAgfQogCisgICAgV2ViQ29yZTo6V0tDQUNGTGF5ZXIqIHZpZGVvTGF5ZXIgPSBt
X21lZGlhRWxlbWVudC0+cGxheWVyKCktPnBsYXRmb3JtTGF5ZXIoKTsKKyAgICBtX3Jvb3RDaGls
ZC0+YWRkU3VibGF5ZXIodmlkZW9MYXllcik7CisgICAgbV9yb290Q2hpbGQtPnNldE5lZWRzTGF5
b3V0KCk7CisgICAgCiAgICAgUkVDVCB3aW5kb3dSZWN0OwotICAgIEdldENsaWVudFJlY3QobV92
aWRlb1dpbmRvdywgJndpbmRvd1JlY3QpOworICAgIEdldENsaWVudFJlY3QobV9mdWxsc2NyZWVu
V2luZG93LT5od25kKCksICZ3aW5kb3dSZWN0KTsKICAgICBtX2Z1bGxzY3JlZW5TaXplLnNldFdp
ZHRoKHdpbmRvd1JlY3QucmlnaHQgLSB3aW5kb3dSZWN0LmxlZnQpOwogICAgIG1fZnVsbHNjcmVl
blNpemUuc2V0SGVpZ2h0KHdpbmRvd1JlY3QuYm90dG9tIC0gd2luZG93UmVjdC50b3ApOwogCkBA
IC0yMzMsMTMgKzI3OSwyMyBAQCB2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVudGVy
RnVsCiAKIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZXhpdEZ1bGxzY3JlZW4oKQog
ewotICAgIFNldFdpbmRvd0xvbmdQdHIobV9odWRXaW5kb3csIDAsIDApOwotICAgIGlmIChtb3Zp
ZSgpKQotICAgICAgICBtb3ZpZSgpLT5leGl0RnVsbHNjcmVlbigpOwotCi0gICAgQVNTRVJUKCFJ
c1dpbmRvdyhtX2h1ZFdpbmRvdykpOwotICAgIG1fdmlkZW9XaW5kb3cgPSAwOwotICAgIG1faHVk
V2luZG93ID0gMDsKKyAgICBpZiAobV9mdWxsc2NyZWVuV2luZG93KSB7CisgICAgICAgIG1fZnVs
bHNjcmVlbldpbmRvdy0+Y2xvc2UoKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuV2luZG93LT5zZXRS
b290Q2hpbGRMYXllcigwKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuV2luZG93ID0gMDsKKyAgICB9
CisKKyAgICBpZiAobV9odWRXaW5kb3cpIHsKKyAgICAgICAgU2V0V2luZG93TG9uZ1B0cihtX2h1
ZFdpbmRvdywgMCwgMCk7CisgICAgICAgIDo6RGVzdHJveVdpbmRvdyhtX2h1ZFdpbmRvdyk7Cisg
ICAgICAgIG1faHVkV2luZG93ID0gMDsKKyAgICB9CisKKyAgICAvLyBBcyBhIHNpZGUgZWZmZWN0
IG9mIHNldHRpbmcgdGhlIHBsYXllciB0byBpbnZpc2libGUvdmlzaWJsZSwKKyAgICAvLyB0aGUg
cGxheWVyJ3MgbGF5ZXIgd2lsbCBiZSByZWNyZWF0ZWQsIGFuZCB3aWxsIGJlIHBpY2tlZCB1cCAK
KyAgICAvLyB0aGUgbmV4dCB0aW1lIHRoZSBsYXllciB0cmVlIGlzIHN5bmNoZWQuCisgICAgbV9t
ZWRpYUVsZW1lbnQtPnBsYXllcigpLT5zZXRWaXNpYmxlKDApOworICAgIG1fbWVkaWFFbGVtZW50
LT5wbGF5ZXIoKS0+c2V0VmlzaWJsZSgxKTsKIH0KIAogYm9vbCBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyOjpjYW5QbGF5KCkgY29uc3QKQEAgLTMxNiw2ICszNzIsOSBAQCBMUkVTVUxUIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXI6OmZ1bGxzCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV01f
TEJVVFRPTlVQOgogICAgICAgICBvbk1vdXNlVXAoSW50UG9pbnQoR0VUX1hfTFBBUkFNKGxQYXJh
bSksIEdFVF9ZX0xQQVJBTShsUGFyYW0pKSk7CisgICAgY2FzZSBXTV9BQ1RJVkFURUFQUDoKKyAg
ICAgICAgaWYgKCF3UGFyYW0pCisgICAgICAgICAgICBtX21lZGlhRWxlbWVudC0+ZXhpdEZ1bGxz
Y3JlZW4oKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0zNjQsNyArNDIzLDcgQEAgdm9p
ZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjcmVhdGVIVQogICAgIAogICAgIC8vIERpcnR5
IHRoZSB3aW5kb3cgc28gdGhlIEhVRCBkcmF3cwogICAgIFJFQ1QgY2xlYXJSZWN0ID0geyBtX2h1
ZFBvc2l0aW9uLngoKSwgbV9odWRQb3NpdGlvbi55KCksIG1faHVkUG9zaXRpb24ueCgpICsgd2lu
ZG93V2lkdGgsIG1faHVkUG9zaXRpb24ueSgpICsgd2luZG93SGVpZ2h0IH07Ci0gICAgSW52YWxp
ZGF0ZVJlY3QobV92aWRlb1dpbmRvdywgJmNsZWFyUmVjdCwgdHJ1ZSk7CisgICAgSW52YWxpZGF0
ZVJlY3QobV9mdWxsc2NyZWVuV2luZG93LT5od25kKCksICZjbGVhclJlY3QsIHRydWUpOwogCiAg
ICAgbV9wbGF5UGF1c2VCdXR0b24uc2V0U2hvd0FsdEJ1dHRvbighY2FuUGxheSgpKTsKICAgICBt
X3ZvbHVtZVNsaWRlci5zZXRWYWx1ZSh2b2x1bWUoKSk7CkBAIC0zNzcsNyArNDM2LDcgQEAgdm9p
ZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjcmVhdGVIVQogCiAgICAgbV9odWRXaW5kb3cg
PSBDcmVhdGVXaW5kb3dFeChXU19FWF9MQVlFUkVEIHwgV1NfRVhfVFJBTlNQQVJFTlQgfCBXU19F
WF9UT09MV0lORE9XLCAKICAgICAgICAgZnVsbHNjcmVlblZpZGVlb0hVRFdpbmRvd0NsYXNzTmFt
ZSwgMCwgV1NfUE9QVVAgfCBXU19WSVNJQkxFLAotICAgICAgICBtX2h1ZFBvc2l0aW9uLngoKSwg
bV9odWRQb3NpdGlvbi55KCksIDAsIDAsIG1fdmlkZW9XaW5kb3csIDAsIGdJbnN0YW5jZSwgMCk7
CisgICAgICAgIG1faHVkUG9zaXRpb24ueCgpLCBtX2h1ZFBvc2l0aW9uLnkoKSwgMCwgMCwgbV9m
dWxsc2NyZWVuV2luZG93LT5od25kKCksIDAsIGdJbnN0YW5jZSwgMCk7CiAgICAgQVNTRVJUKDo6
SXNXaW5kb3cobV9odWRXaW5kb3cpKTsKICAgICBTZXRXaW5kb3dMb25nUHRyKG1faHVkV2luZG93
LCAwLCByZWludGVycHJldF9jYXN0PExPTkdfUFRSPih0aGlzKSk7CiAKSW5kZXg6IFdlYktpdC93
aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4v
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oCShyZXZpc2lvbiA2MDAyNykKKysrIFdlYktpdC93
aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoVklERU8pCiAKLSNpbmNsdWRlICJRVE1vdmllR1dvcmxkLmgi
CisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oIgogCiAjaW5j
bHVkZSA8V2ViQ29yZS9IVE1MTWVkaWFFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFn
ZS5oPgpAQCAtMzgsNiArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBHcmFw
aGljc0NvbnRleHQ7CitjbGFzcyBXS0NBQ0ZMYXllcjsKIH0KIAogY2xhc3MgSFVEV2lkZ2V0IHsK
QEAgLTk5LDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fZHJhZ1N0YXJ0T2Zmc2V0Owog
fTsKIAotY2xhc3MgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciA6IFFUTW92aWVHV29ybGRGdWxs
c2NyZWVuQ2xpZW50LCBwdWJsaWMgTm9uY29weWFibGUgeworY2xhc3MgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlciA6IFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5DbGllbnQs
IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcigpOwogICAgIHZpcnR1YWwgfkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIoKTsKQEAgLTEx
MSwxMiArMTEyLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGV4aXRGdWxsc2NyZWVuKCk7CiAKIHBy
aXZhdGU6Ci0gICAgLy8gUVRNb3ZpZUdXb3JsZEZ1bGxzY3JlZW5DbGllbnQKKyAgICAvLyBNZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93Q2xpZW50CiAgICAgdmlydHVhbCBMUkVTVUxU
IGZ1bGxzY3JlZW5DbGllbnRXbmRQcm9jKEhXTkQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNLCBMUEFS
QU0pOwogCiAgICAgdm9pZCBlbnN1cmVXaW5kb3coKTsKLSAgICBRVE1vdmllR1dvcmxkKiBtb3Zp
ZSgpIGNvbnN0OwotCisgICAgCiAgICAgYm9vbCBjYW5QbGF5KCkgY29uc3Q7CiAgICAgdm9pZCBw
bGF5KCk7CiAgICAgdm9pZCBwYXVzZSgpOwpAQCAtMTQ4LDEwICsxNDgsMTYgQEAgcHJpdmF0ZToK
IAogICAgIFJlZlB0cjxXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50PiBtX21lZGlhRWxlbWVudDsK
IAotICAgIEhXTkQgbV9odWRXaW5kb3csIG1fdmlkZW9XaW5kb3c7CisgICAgSFdORCBtX2h1ZFdp
bmRvdzsKICAgICBPd25QdHI8SEJJVE1BUD4gbV9iaXRtYXA7CiAgICAgV2ViQ29yZTo6SW50U2l6
ZSBtX2Z1bGxzY3JlZW5TaXplOwogICAgIFdlYkNvcmU6OkludFBvaW50IG1faHVkUG9zaXRpb247
CisgICAgT3duUHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c+
IG1fZnVsbHNjcmVlbldpbmRvdzsKKyAgICBSZWZQdHI8V2ViQ29yZTo6V0tDQUNGTGF5ZXI+IG1f
cm9vdENoaWxkOworCisgICAgY2xhc3MgTGF5b3V0Q2xpZW50OworICAgIGZyaWVuZCBjbGFzcyBM
YXlvdXRDbGllbnQ7CisgICAgT3duUHRyPExheW91dENsaWVudD4gbV9sYXlvdXRDbGllbnQ7CiAK
ICAgICBIVURCdXR0b24gbV9wbGF5UGF1c2VCdXR0b247CiAgICAgSFVEQnV0dG9uIG1fdGltZVNs
aWRlckJ1dHRvbjsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYwMDI4KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMDUtMjIgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRnVsbCBzY3JlZW4gZG9lc24ndCB3b3JrIGZvciB2aWRlbyBl
bGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mzk1NTcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODAxMTgxMworCisgICAgICAgIFJlLWVuYWJs
ZWQgZnVsbHNjcmVlbiBzdXBwb3J0IG9uIHdpbmRvd3MsIGFuZCBtb2RpZmllZCB0ZXN0cyB0byBt
YXRjaC4KKworICAgICAgICAqIHBsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1hZnRlci1yZWxv
YWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1k
cmFnLXRpbWViYXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9tZWRpYS9j
b250cm9scy1zdHJpY3QtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9tZWRp
YS9jb250cm9scy1zdHlsaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
bWVkaWEvdmlkZW8tY29udHJvbHMtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBw
bGF0Zm9ybS93aW4vbWVkaWEvdmlkZW8tZGlzcGxheS10b2dnbGUtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9tZWRpYS92aWRlby1uby1hdWRpby1leHBlY3RlZC50eHQ6CisK
IDIwMTAtMDUtMjIgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luL21lZGlhL2NvbnRyb2xzLWFmdGVyLXJlbG9hZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLWFmdGVyLXJlbG9hZC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDYwMDI3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L21lZGlhL2NvbnRyb2xzLWFmdGVyLXJlbG9hZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTE3LDkgKzE3LDEwIEBAIGxheWVyIGF0ICg4LDQyKSBzaXplIDMyMHgyNDAKIGxheWVyIGF0
ICg4LDI2Nikgc2l6ZSAzMjB4MTYKICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtE
SVZ9IGF0ICgwLDIyNCkgc2l6ZSAzMjB4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAo
MCwwKSBzaXplIDE2eDE2Ci0gICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNp
emUgMjU2eDE2Ci0gICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI1Nngx
NgorICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI0MHgxNgorICAg
ICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNDB4MTYKICAgICAgICAgUmVu
ZGVyQmxvY2sge0RJVn0gYXQgKDIsMSkgc2l6ZSAxM3gxNAorICAgIFJlbmRlckJ1dHRvbiB7SU5Q
VVR9IGF0ICgyNTYsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgy
NzIsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODgsMCkgc2l6
ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMDQsMCkgc2l6ZSAxNngxNgpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLWRyYWctdGltZWJh
ci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21l
ZGlhL2NvbnRyb2xzLWRyYWctdGltZWJhci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYwMDI3KQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLWRyYWctdGltZWJhci1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMTAgKzQsMTAgQEAgUlVOKHZpZGVvLmF1
dG9wbGF5ID0gdHJ1ZSkKIFJVTih2aWRlby5zcmMgPSAnY29udGVudC90ZXN0Lm1wNCcpCiBFVkVO
VChwbGF5aW5nKQogRVZFTlQoc2Vla2VkKQotVGltZTogMi4xCitUaW1lOiAyLjMKIEVWRU5UKHNl
ZWtlZCkKLVRpbWU6IDIuNgorVGltZTogMi44CiBFVkVOVChzZWVrZWQpCi1UaW1lOiAzLjEKK1Rp
bWU6IDMuNAogRU5EIE9GIFRFU1QKIApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21l
ZGlhL2NvbnRyb2xzLXN0cmljdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLXN0cmljdC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDYwMDI3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLXN0
cmljdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE3LDkgKzE3LDEwIEBAIGxheWVy
IGF0ICg4LDUwKSBzaXplIDMyMHgyNDAKIGxheWVyIGF0ICg4LDI3NCkgc2l6ZSAzMjB4MTYKICAg
UmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDIyNCkgc2l6ZSAzMjB4
MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMCwwKSBzaXplIDE2eDE2Ci0gICAgUmVu
ZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUgMjU2eDE2Ci0gICAgICBSZW5kZXJT
bGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI1NngxNgorICAgIFJlbmRlckZsZXhpYmxlQm94
IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI0MHgxNgorICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0g
YXQgKDAsMCkgc2l6ZSAyNDB4MTYKICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMSkg
c2l6ZSAxM3gxNAorICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNTYsMCkgc2l6ZSAxNngx
NgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNzIsMCkgc2l6ZSAxNngxNgogICAgIFJl
bmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODgsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRv
biB7SU5QVVR9IGF0ICgzMDQsMCkgc2l6ZSAxNngxNgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL21lZGlhL2NvbnRyb2xzLXN0eWxpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1zdHlsaW5nLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gNjAwMjcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEv
Y29udHJvbHMtc3R5bGluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIxLDkgKzIx
LDEwIEBAIGxheWVyIGF0ICgxOCw0Mikgc2l6ZSAzMjB4MjQwCiBsYXllciBhdCAoMTgsMjY2KSBz
aXplIDMyMHgxNgogICBSZW5kZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAs
MjI0KSBzaXplIDMyMHgxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUg
MTZ4MTYKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNTZ4MTYK
LSAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjU2eDE2CisgICAgUmVu
ZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUgMjQweDE2CisgICAgICBSZW5kZXJT
bGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI0MHgxNgogICAgICAgICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMiwxKSBzaXplIDEzeDE0CisgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI1
NiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI3MiwwKSBzaXpl
IDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI4OCwwKSBzaXplIDE2eDE2CiAg
ICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMwNCwwKSBzaXplIDE2eDE2CkBAIC0zMiw5ICsz
MywxMCBAQCBsYXllciBhdCAoOCwyODIpIHNpemUgMzIweDI0MAogbGF5ZXIgYXQgKDgsNTA2KSBz
aXplIDMyMHgxNgogICBSZW5kZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAs
MjI0KSBzaXplIDMyMHgxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUg
MTZ4MTYKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNTZ4MTYK
LSAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjU2eDE2CisgICAgUmVu
ZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUgMjQweDE2CisgICAgICBSZW5kZXJT
bGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI0MHgxNgogICAgICAgICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMiwxKSBzaXplIDEzeDE0CisgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI1
NiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI3MiwwKSBzaXpl
IDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI4OCwwKSBzaXplIDE2eDE2CiAg
ICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMwNCwwKSBzaXplIDE2eDE2CkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvdmlkZW8tY29udHJvbHMtcmVuZGVyaW5nLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvdmlk
ZW8tY29udHJvbHMtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjAwMjcpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvdmlkZW8tY29udHJvbHMtcmVuZGVyaW5nLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjAsOSArMjAsMTAgQEAgbGF5ZXIgYXQgKDgs
NDIpIHNpemUgMzIweDI0MAogbGF5ZXIgYXQgKDgsMjY2KSBzaXplIDMyMHgxNgogICBSZW5kZXJG
bGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMjI0KSBzaXplIDMyMHgxNgogICAg
IFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUgMTZ4MTYKLSAgICBSZW5kZXJGbGV4
aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNTZ4MTYKLSAgICAgIFJlbmRlclNsaWRlciB7
SU5QVVR9IGF0ICgwLDApIHNpemUgMjU2eDE2CisgICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0g
YXQgKDE2LDApIHNpemUgMjQweDE2CisgICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCww
KSBzaXplIDI0MHgxNgogICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiwxKSBzaXplIDEz
eDE0CisgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI1NiwwKSBzaXplIDE2eDE2CiAgICAg
UmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI3MiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0
dG9uIHtJTlBVVH0gYXQgKDI4OCwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBV
VH0gYXQgKDMwNCwwKSBzaXplIDE2eDE2CkBAIC0zMSw5ICszMiwxMCBAQCBsYXllciBhdCAoOCwy
ODIpIHNpemUgMzIweDI0MAogbGF5ZXIgYXQgKDgsNTA2KSBzaXplIDMyMHgxNgogICBSZW5kZXJG
bGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMjI0KSBzaXplIDMyMHgxNgogICAg
IFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUgMTZ4MTYKLSAgICBSZW5kZXJGbGV4
aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNTZ4MTYKLSAgICAgIFJlbmRlclNsaWRlciB7
SU5QVVR9IGF0ICgwLDApIHNpemUgMjU2eDE2CisgICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0g
YXQgKDE2LDApIHNpemUgMjQweDE2CisgICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCww
KSBzaXplIDI0MHgxNgogICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiwxKSBzaXplIDEz
eDE0CisgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI1NiwwKSBzaXplIDE2eDE2CiAgICAg
UmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI3MiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0
dG9uIHtJTlBVVH0gYXQgKDI4OCwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBV
VH0gYXQgKDMwNCwwKSBzaXplIDE2eDE2CkBAIC00NCw5ICs0NiwxMCBAQCBsYXllciBhdCAoOCw1
MjIpIHNpemUgMzIweDI0MAogbGF5ZXIgYXQgKDgsNzQ2KSBzaXplIDMyMHgxNgogICBSZW5kZXJG
bGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMjI0KSBzaXplIDMyMHgxNgogICAg
IFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUgMTZ4MTYKLSAgICBSZW5kZXJGbGV4
aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNTZ4MTYKLSAgICAgIFJlbmRlclNsaWRlciB7
SU5QVVR9IGF0ICgwLDApIHNpemUgMjU2eDE2CisgICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0g
YXQgKDE2LDApIHNpemUgMjQweDE2CisgICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCww
KSBzaXplIDI0MHgxNgogICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiwxKSBzaXplIDEz
eDE0CisgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI1NiwwKSBzaXplIDE2eDE2CiAgICAg
UmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI3MiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0
dG9uIHtJTlBVVH0gYXQgKDI4OCwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBV
VH0gYXQgKDMwNCwwKSBzaXplIDE2eDE2CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
bWVkaWEvdmlkZW8tZGlzcGxheS10b2dnbGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS92aWRlby1kaXNwbGF5LXRvZ2dsZS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDYwMDI3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlh
L3ZpZGVvLWRpc3BsYXktdG9nZ2xlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTYs
OSArMTYsMTAgQEAgbGF5ZXIgYXQgKDgsMjYpIHNpemUgMzIweDI0MAogbGF5ZXIgYXQgKDgsMjUw
KSBzaXplIDMyMHgxNgogICBSZW5kZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQg
KDAsMjI0KSBzaXplIDMyMHgxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNp
emUgMTZ4MTYKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNTZ4
MTYKLSAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjU2eDE2CisgICAg
UmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUgMjQweDE2CisgICAgICBSZW5k
ZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI0MHgxNgogICAgICAgICBSZW5kZXJCbG9j
ayB7RElWfSBhdCAoMiwxKSBzaXplIDEzeDE0CisgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQg
KDI1NiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI3MiwwKSBz
aXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI4OCwwKSBzaXplIDE2eDE2
CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMwNCwwKSBzaXplIDE2eDE2CkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvdmlkZW8tbm8tYXVkaW8tZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS92aWRlby1uby1h
dWRpby1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYwMDI3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL21lZGlhL3ZpZGVvLW5vLWF1ZGlvLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTcsOCArMTcsOSBAQCBsYXllciBhdCAoOCw0Mikgc2l6ZSAzNTJ4Mjg4CiBsYXllciBhdCAo
OCwzMTQpIHNpemUgMzUyeDE2CiAgIFJlbmRlckZsZXhpYmxlQm94IChwb3NpdGlvbmVkKSB7RElW
fSBhdCAoMCwyNzIpIHNpemUgMzUyeDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDAs
MCkgc2l6ZSAxNngxNgotICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXpl
IDMwNHgxNgotICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAzMDR4MTYK
KyAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyODh4MTYKKyAgICAg
IFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjg4eDE2CiAgICAgICAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgyLDEpIHNpemUgMTN4MTQKKyAgICBSZW5kZXJCdXR0b24ge0lOUFVU
fSBhdCAoMzA0LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzIw
LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzM2LDApIHNpemUg
MTZ4MTYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56856</attachid>
            <date>2010-05-24 01:02:15 -0700</date>
            <delta_ts>2010-05-24 15:49:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39557-20100524010220.patch</filename>
            <type>text/plain</type>
            <size>39621</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDA0OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTAtMDUtMjIgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnVs
bCBzY3JlZW4gZG9lc24ndCB3b3JrIGZvciB2aWRlbyBlbGVtZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk1NTcKKyAgICAgICAgcmRhcjovL3By
b2JsZW0vODAxMTgxMworICAgICAgICAKKyAgICAgICAgQWRkIGZ1bGxzY3JlZW4gc3VwcG9ydCBm
b3IgTWVkaWFQbGF5ZXJQcml2YXRlVmlzdWFsQ29udGV4dC4gIEEgbmV3IGNsYXNzLCBNZWRpYVBs
YXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LAorICAgICAgICBwcm92aWRlcyB0aGUgZnVsbHNj
cmVlbiBod25kIGFuZCBsYXllciByZW5kZXJlci4gIEFueSBXS0NBQ0ZMYXllciBjYW4gYmUgcHJv
dmlkZWQgdG8gTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdworICAgICAgICBzbyBm
dXR1cmUgYWRkaXRpb25hbCBNZWRpYVBsYXllclByaXZhdGUgaW1wbGVtZW50YXRpb25zIGNhbiB1
c2UgdGhlIGZ1bGxzY3JlZW4gd2luZG93LgorICAgICAgICAKKyAgICAgICAgTWlub3IgYWRkaXRp
b25zIGhhdmUgYmVlbiBtYWRlIHRvIHRoZSBGbG9hdFNpemUgYW5kIEludFNpemUgY2xhc3Nlczog
YWRkZWQgYXNwZWN0UmF0aW8oKSB0byBib3RoOyBhZGRlZCBzY2FsZShmbG9hdCkgdG8gSW50U2l6
ZS4KKworICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oOiBBZGRlZCBhc3BlY3RSYXRpbygpLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaDogQWRkZWQgYXNwZWN0UmF0aW8oKSBh
bmQgc2NhbGUoZmxvYXQpLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBs
YXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1
aWNrVGltZVZpc3VhbENvbnRleHQuY3BwOiBDYWxsIHJldHJpZXZlQ3VycmVudEltYWdlKCkgYWZ0
ZXIgY3JlYXRpbmcgdGhlIHZpZGVvTGF5ZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1dLQ0FDRkxheWVyLmNwcDogCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dL
Q0FDRkxheWVyLmg6IEFkZCBsYXlvdXQgY2xpZW50IGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6
V0tDQUNGTGF5ZXI6OmZyYW1lKTogQWRkZWQgYmFjayBmcmFtZSgpL3NldEZyYW1lKCkuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dlYlRpbGVkTGF5ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViVGlsZWRMYXllcjo6c2V0RnJhbWUpOiBJbXBsYW1lbnRlZCBzZXRGcmFtZSgp
IGluIHN1YmNsYXNzIG9mIFdLQ0FDRkxheWVyCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1dlYlRpbGVkTGF5ZXIuaDoKKworCiAyMDEwLTA1LTIzICBBZGFtIEJhcnRoICA8YWJhcnRo
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBX
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDYwMDQ4KQorKysgV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjM3
OTEsNiArMjM3OTEsMTQgQEAKIAkJCQkJCT4NCiAJCQkJCTwvRmlsZT4NCiAJCQkJCTxGaWxlDQor
CQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cTWVkaWFQbGF5ZXJQ
cml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAiDQorCQkJCQkJPg0KKwkJCQkJPC9GaWxlPg0KKwkJ
CQkJPEZpbGUNCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxN
ZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgiDQorCQkJCQkJPg0KKwkJCQkJPC9G
aWxlPg0KKwkJCQkJPEZpbGUNCiAJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXHdpblxNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcCINCiAJ
CQkJCQk+DQogCQkJCQk8L0ZpbGU+DQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
bG9hdFNpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0
U2l6ZS5oCShyZXZpc2lvbiA2MDA0OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxv
YXRTaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDE0IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGggPD0gMCB8fCBtX2hlaWdodCA8
PSAwOyB9CiAKKyAgICBmbG9hdCBhc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGgg
LyBtX2hlaWdodDsgfQorCisgICAgdm9pZCBzY2FsZShmbG9hdCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIG1fd2lkdGggPSBtX3dpZHRoICogc2NhbGU7CisgICAgICAgIG1faGVpZ2h0ID0gbV9oZWln
aHQgKiBzY2FsZTsKKyAgICB9CisKICAgICBGbG9hdFNpemUgZXhwYW5kZWRUbyhjb25zdCBGbG9h
dFNpemUmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIEZsb2F0U2l6ZShtX3dp
ZHRoID4gb3RoZXIubV93aWR0aCA/IG1fd2lkdGggOiBvdGhlci5tX3dpZHRoLApJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgJKHJldmlzaW9uIDYwMDQ4KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDgg
QEAgcHVibGljOgogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV93aWR0aCA8
PSAwIHx8IG1faGVpZ2h0IDw9IDA7IH0KICAgICBib29sIGlzWmVybygpIGNvbnN0IHsgcmV0dXJu
ICFtX3dpZHRoICYmICFtX2hlaWdodDsgfQorCisgICAgZmxvYXQgYXNwZWN0UmF0aW8oKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obV93aWR0aCkgLyBzdGF0aWNfY2FzdDxmbG9h
dD4obV9oZWlnaHQpOyB9CiAgICAgCiAgICAgdm9pZCBleHBhbmQoaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KQogICAgIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxh
eWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuY3Bw
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5
ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTgw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIAorICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0IAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUg
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgk0FTIElTlCAKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiAKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiAKKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIAorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiAKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNs
dWRlICJNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgiCisKKyNpbmNsdWRlICJX
ZWJDb3JlSW5zdGFuY2VIYW5kbGUuaCIKKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dDb2xvci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5X
aW5kb3c6Ok1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3coTWVkaWFQbGF5ZXJQcml2
YXRlRnVsbHNjcmVlbkNsaWVudCogY2xpZW50KQorICAgIDogbV9jbGllbnQoY2xpZW50KQorICAg
ICwgbV9od25kKDApCit7CisgICAgbV9sYXllclJlbmRlcmVyID0gV0tDQUNGTGF5ZXJSZW5kZXJl
cjo6Y3JlYXRlKDApOworfQorCitNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93Ojp+
TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdygpCit7CisgICAgbV9jbGllbnQgPSAw
OworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OmNyZWF0ZVdp
bmRvdygpCit7CisgICAgc3RhdGljIEFUT00gd2luZG93QXRvbSA9IDA7CisgICAgaWYgKCF3aW5k
b3dBdG9tKSB7CisgICAgICAgIFdORENMQVNTRVggd2NleCA9IHswfTsKKyAgICAgICAgd2NleC5j
YlNpemUgPSBzaXplb2YoV05EQ0xBU1NFWCk7CisgICAgICAgIHdjZXguc3R5bGUgPSBDU19IUkVE
UkFXIHwgQ1NfVlJFRFJBVyB8IENTX09XTkRDOworICAgICAgICB3Y2V4LmxwZm5XbmRQcm9jID0g
JnN0YXRpY1duZFByb2M7CisgICAgICAgIHdjZXguaEluc3RhbmNlID0gV2ViQ29yZTo6aW5zdGFu
Y2VIYW5kbGUoKTsKKyAgICAgICAgd2NleC5scHN6Q2xhc3NOYW1lID0gTCJNZWRpYVBsYXllclBy
aXZhdGVGdWxsc2NyZWVuV2luZG93Q2xhc3MiOworICAgICAgICB3aW5kb3dBdG9tID0gOjpSZWdp
c3RlckNsYXNzRXgoJndjZXgpOworICAgIH0KKworICAgIGlmIChtX2h3bmQpCisgICAgICAgIGNs
b3NlKCk7CisKKyAgICBNT05JVE9SSU5GTyBtaSA9IHswfTsKKyAgICBtaS5jYlNpemUgPSBzaXpl
b2YoTU9OSVRPUklORk8pOworICAgIEdldE1vbml0b3JJbmZvKE1vbml0b3JGcm9tV2luZG93KDAs
IE1PTklUT1JfREVGQVVMVFRPUFJJTUFSWSksICZtaSk7CisgICAgSW50UmVjdCBtb25pdG9yUmVj
dCA9IG1pLnJjTW9uaXRvcjsKKworICAgIENSRUFURVNUUlVDVFcgY3MgPSB7MH07CisgICAgY3Mu
eCA9IDA7CisgICAgY3MueSA9IDA7CisgICAgY3MuY3ggPSBtb25pdG9yUmVjdC53aWR0aCgpOwor
ICAgIGNzLmN5ID0gbW9uaXRvclJlY3QuaGVpZ2h0KCk7CisgICAgY3Muc3R5bGUgPSBXU19QT1BV
UCB8IFdTX1ZJU0lCTEU7CisgICAgY3MuZHdFeFN0eWxlID0gMDsKKyAgICBjcy5scHN6Q2xhc3Mg
PSBMIk1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3dDbGFzcyI7CisgICAgY3MubHBz
ek5hbWUgPSBMIiI7CisgICAgY3MubHBDcmVhdGVQYXJhbXMgPSAoTFBWT0lEKXRoaXM7CisgICAg
CisgICAgbV9od25kID0gOjpDcmVhdGVXaW5kb3dFeFcoY3MuZHdFeFN0eWxlLCBjcy5scHN6Q2xh
c3MsIGNzLmxwc3pOYW1lLCBjcy5zdHlsZSwgY3MueCwgY3MueSwgY3MuY3gsIGNzLmN5LCBjcy5o
d25kUGFyZW50LCBjcy5oTWVudSwgY3MuaEluc3RhbmNlLCBjcy5scENyZWF0ZVBhcmFtcyk7Cit9
CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6Y2xvc2UoKQorewor
ICAgIDo6RGVzdHJveVdpbmRvdyhtX2h3bmQpOworICAgIG1faHduZCA9IDA7Cit9CisKK0hXTkQg
TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6aHduZCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1faHduZDsKK30KKworV0tDQUNGTGF5ZXJSZW5kZXJlciogTWVkaWFQbGF5ZXJQcml2
YXRlRnVsbHNjcmVlbldpbmRvdzo6bGF5ZXJSZW5kZXJlcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fbGF5ZXJSZW5kZXJlci5nZXQoKTsKK30KKworV0tDQUNGTGF5ZXIqIE1lZGlhUGxheWVyUHJp
dmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OnJvb3RDaGlsZExheWVyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9yb290Q2hpbGQuZ2V0KCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNj
cmVlbldpbmRvdzo6c2V0Um9vdENoaWxkTGF5ZXIoUGFzc1JlZlB0cjxXS0NBQ0ZMYXllcj4gcm9v
dENoaWxkKQoreworICAgIGlmIChtX3Jvb3RDaGlsZCAhPSByb290Q2hpbGQpIHsKKworICAgICAg
ICBpZiAobV9yb290Q2hpbGQpIHsKKyAgICAgICAgICAgIG1fcm9vdENoaWxkLT5yZW1vdmVGcm9t
U3VwZXJsYXllcigpOworICAgICAgICAgICAgbV9yb290Q2hpbGQuY2xlYXIoKTsKKyAgICAgICAg
fQorCisgICAgICAgIG1fcm9vdENoaWxkID0gcm9vdENoaWxkOworICAgIH0KKworICAgIGlmICht
X3Jvb3RDaGlsZCkgeworICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNldFJvb3RDaGlsZExheWVy
KG1fcm9vdENoaWxkLmdldCgpKTsKKyAgICAgICAgV0tDQUNGTGF5ZXIqIHJvb3RMYXllciA9IG1f
cm9vdENoaWxkLT5yb290TGF5ZXIoKTsKKyAgICAgICAgQ0dSZWN0IHJvb3RCb3VuZHMgPSBtX3Jv
b3RDaGlsZC0+cm9vdExheWVyKCktPmJvdW5kcygpOworICAgICAgICBtX3Jvb3RDaGlsZC0+c2V0
RnJhbWUocm9vdEJvdW5kcyk7CisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0U2Nyb2xsRnJh
bWUoSW50UG9pbnQocm9vdEJvdW5kcy5vcmlnaW4pLCBJbnRTaXplKHJvb3RCb3VuZHMuc2l6ZSkp
OworICAgICAgICBtX3Jvb3RDaGlsZC0+c2V0QmFja2dyb3VuZENvbG9yKENHQ29sb3JHZXRDb25z
dGFudENvbG9yKGtDR0NvbG9yQmxhY2spKTsKKyAgICAgICAgcm9vdExheWVyLT5zZXRCYWNrZ3Jv
dW5kQ29sb3IoQ0dDb2xvckdldENvbnN0YW50Q29sb3Ioa0NHQ29sb3JCbGFjaykpOworICAgIH0K
K30KKworTFJFU1VMVCBDQUxMQkFDSyBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93
OjpzdGF0aWNXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBM
UEFSQU0gbFBhcmFtKQoreworICAgIExPTkdfUFRSIGxvbmdQdHIgPSBHZXRXaW5kb3dMb25nUHRy
KGhXbmQsIEdXTFBfVVNFUkRBVEEpOworCisgICAgaWYgKCFsb25nUHRyICYmIG1lc3NhZ2UgPT0g
V01fQ1JFQVRFKSB7CisgICAgICAgIExQQ1JFQVRFU1RSVUNUIGxwY3MgPSByZWludGVycHJldF9j
YXN0PExQQ1JFQVRFU1RSVUNUPihsUGFyYW0pOworICAgICAgICBsb25nUHRyID0gKExPTkdfUFRS
KWxwY3MtPmxwQ3JlYXRlUGFyYW1zOworICAgICAgICA6OlNldFdpbmRvd0xvbmdQdHIoaFduZCwg
R1dMUF9VU0VSREFUQSwgbG9uZ1B0cik7CisgICAgfQorCisgICAgaWYgKE1lZGlhUGxheWVyUHJp
dmF0ZUZ1bGxzY3JlZW5XaW5kb3cqIHdpbmRvdyA9IHJlaW50ZXJwcmV0X2Nhc3Q8TWVkaWFQbGF5
ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdyo+KGxvbmdQdHIpKQorICAgICAgICByZXR1cm4gd2lu
ZG93LT53bmRQcm9jKGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsKKworICAgIHJldHVy
biA6OkRlZldpbmRvd1Byb2MoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOyAgICAKK30K
KworTFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93Ojp3bmRQcm9jKEhX
TkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQorewor
ICAgIExSRVNVTFQgbFJlc3VsdCA9IDA7CisgICAgc3dpdGNoIChtZXNzYWdlKSB7CisgICAgY2Fz
ZSBXTV9DUkVBVEU6CisgICAgICAgIG1faHduZCA9IGhXbmQ7CisgICAgICAgIG1fbGF5ZXJSZW5k
ZXJlci0+c2V0SG9zdFdpbmRvdyhtX2h3bmQpOworICAgICAgICBtX2xheWVyUmVuZGVyZXItPmNy
ZWF0ZVJlbmRlcmVyKCk7CisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0TmVlZHNEaXNwbGF5
KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV01fREVTVFJPWToKKyAgICAgICAgbV9od25k
ID0gMDsKKyAgICAgICAgbV9sYXllclJlbmRlcmVyLT5kZXN0cm95UmVuZGVyZXIoKTsKKyAgICAg
ICAgbV9sYXllclJlbmRlcmVyLT5zZXRIb3N0V2luZG93KDApOworICAgIGNhc2UgV01fV0lORE9X
UE9TQ0hBTkdFRDoKKyAgICAgICAgeworICAgICAgICAgICAgTFBXSU5ET1dQT1Mgd3AgPSAoTFBX
SU5ET1dQT1MpbFBhcmFtOworICAgICAgICAgICAgaWYgKCEod3AtPmZsYWdzICYgU1dQX05PTU9W
RSkpIHsKKyAgICAgICAgICAgICAgICBtX2xheWVyUmVuZGVyZXItPnJlc2l6ZSgpOworICAgICAg
ICAgICAgICAgIFdLQ0FDRkxheWVyKiByb290TGF5ZXIgPSBtX3Jvb3RDaGlsZC0+cm9vdExheWVy
KCk7CisgICAgICAgICAgICAgICAgQ0dSZWN0IHJvb3RCb3VuZHMgPSBtX3Jvb3RDaGlsZC0+cm9v
dExheWVyKCktPmJvdW5kcygpOworICAgICAgICAgICAgICAgIG1fcm9vdENoaWxkLT5zZXRGcmFt
ZShyb290Qm91bmRzKTsKKyAgICAgICAgICAgICAgICBtX3Jvb3RDaGlsZC0+c2V0TmVlZHNMYXlv
dXQoKTsKKyAgICAgICAgICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNldFNjcm9sbEZyYW1lKElu
dFBvaW50KHJvb3RCb3VuZHMub3JpZ2luKSwgSW50U2l6ZShyb290Qm91bmRzLnNpemUpKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFdNX1BBSU5U
OgorICAgICAgICBtX2xheWVyUmVuZGVyZXItPnJlbmRlclNvb24oKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBsUmVzdWx0ID0gbV9jbGllbnQt
PmZ1bGxzY3JlZW5DbGllbnRXbmRQcm9jKGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsK
KworICAgIHJldHVybiBsUmVzdWx0OworfQorCit9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVs
bHNjcmVlbldpbmRvdy5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIAorICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0IAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUgCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgk0FTIElTlCAKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiAKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiAKKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIAorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiAKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhUGxh
eWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3dfaAorI2RlZmluZSBNZWRpYVBsYXllclByaXZhdGVG
dWxsc2NyZWVuV2luZG93X2gKKworI2luY2x1ZGUgIldLQ0FDRkxheWVyLmgiCisjaW5jbHVkZSAi
V0tDQUNGTGF5ZXJSZW5kZXJlci5oIgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFQbGF5ZXJQ
cml2YXRlRnVsbHNjcmVlbkNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCBMUkVTVUxUIGZ1
bGxzY3JlZW5DbGllbnRXbmRQcm9jKEhXTkQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNLCBMUEFSQU0p
ID0gMDsKK307CisKK2NsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cgewor
cHVibGljOgorICAgIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3coTWVkaWFQbGF5
ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCopOworICAgIHZpcnR1YWwgfk1lZGlhUGxheWVyUHJp
dmF0ZUZ1bGxzY3JlZW5XaW5kb3coKTsKKworICAgIHZvaWQgY3JlYXRlV2luZG93KCk7CisgICAg
dm9pZCBjbG9zZSgpOworICAgIAorICAgIEhXTkQgaHduZCgpIGNvbnN0OworCisgICAgV0tDQUNG
TGF5ZXJSZW5kZXJlciogbGF5ZXJSZW5kZXJlcigpIGNvbnN0OworCisgICAgV0tDQUNGTGF5ZXIq
IHJvb3RDaGlsZExheWVyKCkgY29uc3Q7CisgICAgdm9pZCBzZXRSb290Q2hpbGRMYXllcihQYXNz
UmVmUHRyPFdLQ0FDRkxheWVyPik7CisKK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgTFJFU1VMVCBD
QUxMQkFDSyBzdGF0aWNXbmRQcm9jKEhXTkQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNLCBMUEFSQU0p
OworICAgIExSRVNVTFQgd25kUHJvYyhIV05ELCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSwgTFBBUkFN
KTsKKworICAgIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5DbGllbnQqIG1fY2xpZW50Owor
ICAgIE93blB0cjxXS0NBQ0ZMYXllclJlbmRlcmVyPiBtX2xheWVyUmVuZGVyZXI7CisgICAgUmVm
UHRyPFdLQ0FDRkxheWVyPiBtX3Jvb3RDaGlsZDsKKyAgICBIV05EIG1faHduZDsKK307CisKK30K
KworI2VuZGlmCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxD
b250ZXh0LmNwcAkocmV2aXNpb24gNjAwNDgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZp
c3VhbENvbnRleHQKIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250
ZXh0OjpzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdAogewotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogUGxhdGZvcm1NZWRpYSBNZWRpYVBsYXllclByaXZhdGVRdWlj
a1RpbWVWaXN1YWxDb250ZXh0OjpwbGF0Zm9ybU1lZGlhKCkgY29uc3QKQEAgLTc1NiwxNiArNzU2
LDE2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ28KIAogICAgICAg
ICBXS0NBQ0ZMYXllciogbGF5ZXIgPSBzdGF0aWNfY2FzdDxXS0NBQ0ZMYXllcio+KG1fcXRWaWRl
b0xheWVyLT5wbGF0Zm9ybUxheWVyKCkpOwogCi0gICAgICAgICAgICBpZiAoIWJ1ZmZlci5sb2Nr
QmFzZUFkZHJlc3MoKSkgewotICAgICAgICAgICAgICAgQ0ZUaW1lSW50ZXJ2YWwgaW1hZ2VUaW1l
ID0gUVRNb3ZpZVZpc3VhbENvbnRleHQ6OmN1cnJlbnRIb3N0VGltZSgpOworICAgICAgICBpZiAo
IWJ1ZmZlci5sb2NrQmFzZUFkZHJlc3MoKSkgeworICAgICAgICAgICBDRlRpbWVJbnRlcnZhbCBp
bWFnZVRpbWUgPSBRVE1vdmllVmlzdWFsQ29udGV4dDo6Y3VycmVudEhvc3RUaW1lKCk7CiAKLSAg
ICAgICAgICAgICAgICBDR0ltYWdlUmVmIGltYWdlID0gQ3JlYXRlQ0dJbWFnZUZyb21QaXhlbEJ1
ZmZlcihidWZmZXIpOwotICAgICAgICAgICAgICAgIGxheWVyLT5zZXRDb250ZW50cyhpbWFnZSk7
Ci0gICAgICAgICAgICAgICAgQ0dJbWFnZVJlbGVhc2UoaW1hZ2UpOworICAgICAgICAgICAgQ0dJ
bWFnZVJlZiBpbWFnZSA9IENyZWF0ZUNHSW1hZ2VGcm9tUGl4ZWxCdWZmZXIoYnVmZmVyKTsKKyAg
ICAgICAgICAgIGxheWVyLT5zZXRDb250ZW50cyhpbWFnZSk7CisgICAgICAgICAgICBDR0ltYWdl
UmVsZWFzZShpbWFnZSk7CiAKLSAgICAgICAgICAgICAgICBidWZmZXIudW5sb2NrQmFzZUFkZHJl
c3MoKTsKLSAgICAgICAgICAgICAgICBsYXllci0+cm9vdExheWVyKCktPnNldE5lZWRzUmVuZGVy
KCk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBidWZmZXIudW5sb2NrQmFzZUFkZHJlc3Mo
KTsKKyAgICAgICAgICAgIGxheWVyLT5yb290TGF5ZXIoKS0+c2V0TmVlZHNSZW5kZXIoKTsKKyAg
ICAgICAgfQogICAgIH0gZWxzZQogI2VuZGlmCiAgICAgICAgIG1fcGxheWVyLT5yZXBhaW50KCk7
CkBAIC05MzksNiArOTM5LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlz
dWFsQ28KICNlbmRpZgogICAgIC8vIFRoZSBsYXllciB3aWxsIGdldCBob29rZWQgdXAgdmlhIFJl
bmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckNvbmZpZ3VyYXRpb24oKS4KICNl
bmRpZgorCisgICAgLy8gZmlsbCB0aGUgbmV3bHkgY3JlYXRlZCBsYXllciB3aXRoIGltYWdlIGRh
dGEKKyAgICBpZiAobV92aXN1YWxDb250ZXh0KQorICAgICAgICByZXRyaWV2ZUN1cnJlbnRJbWFn
ZSgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6
OmRlc3Ryb3lMYXllckZvck1vdmllKCkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1dLQ0FDRkxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9XS0NBQ0ZMYXllci5jcHAJKHJldmlzaW9uIDYwMDQ4KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNGTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQs
NiArMTU0LDcgQEAgUGFzc1JlZlB0cjxXS0NBQ0ZMYXllcj4gV0tDQUNGTGF5ZXI6OmNyZQogCiBX
S0NBQ0ZMYXllcjo6V0tDQUNGTGF5ZXIoTGF5ZXJUeXBlIHR5cGUpCiAgICAgOiBtX2xheWVyKEFk
b3B0Q0YsIENBQ0ZMYXllckNyZWF0ZSh0b0NBQ0ZMYXllclR5cGUodHlwZSkpKQorICAgICwgbV9s
YXlvdXRDbGllbnQoMCkKICAgICAsIG1fbmVlZHNEaXNwbGF5T25Cb3VuZHNDaGFuZ2UoZmFsc2Up
CiB7CiAgICAgQ0FDRkxheWVyU2V0VXNlckRhdGEobGF5ZXIoKSwgdGhpcyk7CkBAIC0yODYsMTEg
KzI4NywxMCBAQCB2b2lkICBXS0NBQ0ZMYXllcjo6YWRvcHRTdWJsYXllcnMoV0tDQUNGCiB2b2lk
IFdLQ0FDRkxheWVyOjpyZW1vdmVGcm9tU3VwZXJsYXllcigpCiB7CiAgICAgV0tDQUNGTGF5ZXIq
IHN1cGVybGF5ZXIgPSB0aGlzLT5zdXBlcmxheWVyKCk7Ci0gICAgaWYgKCFzdXBlcmxheWVyKQot
ICAgICAgICByZXR1cm47Ci0KICAgICBDQUNGTGF5ZXJSZW1vdmVGcm9tU3VwZXJsYXllcihsYXll
cigpKTsKLSAgICBzdXBlcmxheWVyLT5zZXROZWVkc0NvbW1pdCgpOworCisgICAgaWYgKHN1cGVy
bGF5ZXIpCisgICAgICAgIHN1cGVybGF5ZXItPnNldE5lZWRzQ29tbWl0KCk7CiB9CiAKIFdLQ0FD
RkxheWVyKiBXS0NBQ0ZMYXllcjo6aW50ZXJuYWxTdWJsYXllckF0SW5kZXgoaW50IGluZGV4KSBj
b25zdApAQCAtMzQzLDYgKzM0MywxOSBAQCB2b2lkIFdLQ0FDRkxheWVyOjpzZXRCb3VuZHMoY29u
c3QgQ0dSZWN0CiAgICAgICAgIHNldE5lZWRzRGlzcGxheSgpOwogfQogCit2b2lkIFdLQ0FDRkxh
eWVyOjpzZXRGcmFtZShjb25zdCBDR1JlY3QmIHJlY3QpCit7CisgICAgQ0dSZWN0IG9sZEZyYW1l
ID0gZnJhbWUoKTsKKyAgICBpZiAoQ0dSZWN0RXF1YWxUb1JlY3QocmVjdCwgb2xkRnJhbWUpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBDQUNGTGF5ZXJTZXRGcmFtZShsYXllcigpLCByZWN0KTsK
KyAgICBzZXROZWVkc0NvbW1pdCgpOworCisgICAgaWYgKG1fbmVlZHNEaXNwbGF5T25Cb3VuZHND
aGFuZ2UpCisgICAgICAgIHNldE5lZWRzRGlzcGxheSgpOworfQorCiB2b2lkIFdLQ0FDRkxheWVy
OjpzZXRDb250ZW50c0dyYXZpdHkoQ29udGVudHNHcmF2aXR5VHlwZSB0eXBlKQogewogICAgIENB
Q0ZMYXllclNldENvbnRlbnRzR3Jhdml0eShsYXllcigpLCB0b0NBQ0ZDb250ZW50c0dyYXZpdHlU
eXBlKHR5cGUpKTsKQEAgLTQxOCw2ICs0MzEsMzIgQEAgdm9pZCBXS0NBQ0ZMYXllcjo6aW50ZXJu
YWxTZXROZWVkc0Rpc3BsYQogICAgIENBQ0ZMYXllclNldE5lZWRzRGlzcGxheShsYXllcigpLCBk
aXJ0eVJlY3QpOwogfQogCit2b2lkIFdLQ0FDRkxheWVyOjpzZXRMYXlvdXRDbGllbnQoV0tDQUNG
TGF5ZXJMYXlvdXRDbGllbnQqIGxheW91dENsaWVudCkKK3sKKyAgICBpZiAobGF5b3V0Q2xpZW50
ID09IG1fbGF5b3V0Q2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xheW91dENsaWVu
dCA9IGxheW91dENsaWVudDsKKyAgICBDQUNGTGF5ZXJTZXRMYXlvdXRDYWxsYmFjayhsYXllcigp
LCBtX2xheW91dENsaWVudCA/ICZsYXlvdXRTdWJsYXllcnNQcm9jIDogMCk7ICAgIAorfQorCit2
b2lkIFdLQ0FDRkxheWVyOjpsYXlvdXRTdWJsYXllcnNQcm9jKENBQ0ZMYXllclJlZiBjYUxheWVy
KSAKK3sKKyAgICBXS0NBQ0ZMYXllciogbGF5ZXIgPSBXS0NBQ0ZMYXllcjo6bGF5ZXIoY2FMYXll
cik7CisgICAgaWYgKGxheWVyICYmIGxheWVyLT5tX2xheW91dENsaWVudCkKKyAgICAgICAgbGF5
ZXItPm1fbGF5b3V0Q2xpZW50LT5sYXlvdXRTdWJsYXllcnNPZkxheWVyKGxheWVyKTsKK30KKwor
V0tDQUNGTGF5ZXJMYXlvdXRDbGllbnQqIFdLQ0FDRkxheWVyOjpsYXlvdXRDbGllbnQoKSBjb25z
dAoreworICAgIHJldHVybiBtX2xheW91dENsaWVudDsKK30KKwordm9pZCBXS0NBQ0ZMYXllcjo6
c2V0TmVlZHNMYXlvdXQoKQoreworICAgIENBQ0ZMYXllclNldE5lZWRzTGF5b3V0KGxheWVyKCkp
OworfQorCiAjaWZuZGVmIE5ERUJVRwogc3RhdGljIHZvaWQgcHJpbnRJbmRlbnQoaW50IGluZGVu
dCkKIHsKQEAgLTUwMCw3ICs1MzksNyBAQCB2b2lkIFdLQ0FDRkxheWVyOjpwcmludExheWVyKGlu
dCBpbmRlbnQpCiAgICAgQ0dJbWFnZVJlZiBsYXllckNvbnRlbnRzID0gY29udGVudHMoKTsKICAg
ICBpZiAobGF5ZXJDb250ZW50cykgewogICAgICAgICBwcmludEluZGVudChpbmRlbnQgKyAxKTsK
LSAgICAgICAgZnByaW50ZihzdGRlcnIsICIoY29udGVudHMgKGltYWdlIFslZCAlZF0pKVxuIiwK
KyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiKGNvbnRlbnRzIChpbWFnZSBbJWQgJWRdKSlc
biIsCiAgICAgICAgICAgICBDR0ltYWdlR2V0V2lkdGgobGF5ZXJDb250ZW50cyksIENHSW1hZ2VH
ZXRIZWlnaHQobGF5ZXJDb250ZW50cykpOwogICAgIH0KIApJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vV0tDQUNGTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllci5oCShyZXZpc2lvbiA2MDA0OCkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDggKzQ0LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0tDQUNGQW5p
bWF0aW9uOwotY2xhc3MgV0tDQUNGVGltaW5nRnVuY3Rpb247CitjbGFzcyBXS0NBQ0ZMYXllcjsK
KworY2xhc3MgV0tDQUNGTGF5ZXJMYXlvdXRDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwg
dm9pZCBsYXlvdXRTdWJsYXllcnNPZkxheWVyKFdLQ0FDRkxheWVyKikgPSAwOworfTsKIAogY2xh
c3MgV0tDQUNGTGF5ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXS0NBQ0ZMYXllcj4gewogcHVibGlj
OgpAQCAtNjMsNiArNjcsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdJbkNv
bnRleHQoUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqKSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBz
ZXRMYXlvdXRDbGllbnQoV0tDQUNGTGF5ZXJMYXlvdXRDbGllbnQqKTsKKyAgICB2aXJ0dWFsIFdL
Q0FDRkxheWVyTGF5b3V0Q2xpZW50KiBsYXlvdXRDbGllbnQoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0TmVlZHNMYXlvdXQoKTsKKwogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KGNvbnN0
IENHUmVjdCogZGlydHlSZWN0ID0gMCkKICAgICB7CiAgICAgICAgIGludGVybmFsU2V0TmVlZHNE
aXNwbGF5KGRpcnR5UmVjdCk7CkBAIC0xNzMsNiArMTgxLDkgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0RmlsdGVycyhDRkFycmF5UmVmIGZpbHRlcnMpIHsgQ0FDRkxheWVyU2V0RmlsdGVycyhsYXll
cigpLCBmaWx0ZXJzKTsgc2V0TmVlZHNDb21taXQoKTsgfQogICAgIENGQXJyYXlSZWYgZmlsdGVy
cygpIGNvbnN0IHsgcmV0dXJuIENBQ0ZMYXllckdldEZpbHRlcnMobGF5ZXIoKSk7IH0KIAorICAg
IHZvaWQgc2V0RnJhbWUoY29uc3QgQ0dSZWN0Jik7CisgICAgQ0dSZWN0IGZyYW1lKCkgY29uc3Qg
eyByZXR1cm4gQ0FDRkxheWVyR2V0RnJhbWUobGF5ZXIoKSk7IH0KKwogICAgIHZvaWQgc2V0SGlk
ZGVuKGJvb2wgaGlkZGVuKSB7IENBQ0ZMYXllclNldEhpZGRlbihsYXllcigpLCBoaWRkZW4pOyBz
ZXROZWVkc0NvbW1pdCgpOyB9CiAgICAgYm9vbCBpc0hpZGRlbigpIGNvbnN0IHsgcmV0dXJuIENB
Q0ZMYXllcklzSGlkZGVuKGxheWVyKCkpOyB9CiAKQEAgLTI2MCw4ICsyNzEsMTEgQEAgcHJvdGVj
dGVkOgogICAgIHZvaWQgcHJpbnRMYXllcihpbnQgaW5kZW50KSBjb25zdDsKICNlbmRpZgogCisg
ICAgc3RhdGljIHZvaWQgbGF5b3V0U3VibGF5ZXJzUHJvYyhDQUNGTGF5ZXJSZWYpOworCiBwcml2
YXRlOgogICAgIFJldGFpblB0cjxDQUNGTGF5ZXJSZWY+IG1fbGF5ZXI7CisgICAgV0tDQUNGTGF5
ZXJMYXlvdXRDbGllbnQqIG1fbGF5b3V0Q2xpZW50OwogICAgIGJvb2wgbV9uZWVkc0Rpc3BsYXlP
bkJvdW5kc0NoYW5nZTsKIH07CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1dlYlRpbGVkTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL1dlYlRpbGVkTGF5ZXIuY3BwCShyZXZpc2lvbiA2MDA0OCkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL1dlYlRpbGVkTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
Myw2ICs3MywxNSBAQCB2b2lkIFdlYlRpbGVkTGF5ZXI6OnNldEJvdW5kcyhjb25zdCBDR1JlCiAg
ICAgdXBkYXRlVGlsZXMoKTsKIH0KIAordm9pZCBXZWJUaWxlZExheWVyOjpzZXRGcmFtZShjb25z
dCBDR1JlY3QmIHJlY3QpCit7CisgICAgaWYgKENHUmVjdEVxdWFsVG9SZWN0KHJlY3QsIGZyYW1l
KCkpKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJMYXllcjo6c2V0RnJhbWUocmVjdCk7Cisg
ICAgdXBkYXRlVGlsZXMoKTsKK30KKwogdm9pZCBXZWJUaWxlZExheWVyOjppbnRlcm5hbFNldE5l
ZWRzRGlzcGxheShjb25zdCBDR1JlY3QqIGRpcnR5UmVjdCkKIHsKICAgICAvLyBGSVhNRTogT25s
eSBzZXROZWVkc0Rpc3BsYXkgZm9yIHRpbGVzIHRoYXQgYXJlIGN1cnJlbnRseSB2aXNpYmxlCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XZWJUaWxlZExheWVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV2ViVGlsZWRMYXllci5oCShy
ZXZpc2lvbiA2MDA0OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dlYlRpbGVk
TGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+V2ViVGlsZWRMYXllcigpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEJvdW5kcyhjb25z
dCBDR1JlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RnJhbWUoY29uc3QgQ0dSZWN0Jik7CiAK
IHByb3RlY3RlZDoKICAgICBXZWJUaWxlZExheWVyKGNvbnN0IENHU2l6ZSYgdGlsZVNpemUsIEdy
YXBoaWNzTGF5ZXIqIG93bmVyKTsKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA2MDAyNykKKysrIFdlYktpdC93
aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMDUtMjIg
IEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnVsbCBzY3JlZW4gZG9lc24ndCB3b3JrIGZvciB2
aWRlbyBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Mzk1NTcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODAxMTgxMworICAgICAgICAKKyAg
ICAgICAgTW9kaWZpZWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciB0byB3b3JrIHdpdGggTWVk
aWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy4gIFRoZSBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyCisgICAgICAgIGlzIG5vdyBNZWRpYVBsYXllclByaXZhdGUgYWdub3N0aWMuCisKKyAg
ICAgICAgKiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OkxheW91dENsaWVudDo6TGF5b3V0Q2xpZW50KTogIAorICAgICAg
ICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6TGF5b3V0Q2xpZW50OjpsYXlvdXRTdWJsYXll
cnNPZkxheWVyKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXIpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6
fkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXI6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXI6OmNyZWF0ZUhVRFdpbmRvdyk6CisgICAgICAgICogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ci5oOgorCiAyMDEwLTA1LTIxICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCkluZGV4OiBXZWJLaXQvd2luL0Z1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDYwMDI3KQorKysgV2ViS2l0L3dp
bi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiAr
MzYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRm9udFNlbGVjdG9yLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRSdW4uaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1dLQ0FDRkxheWVyLmg+CiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50
ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2luY2x1ZGUgPHdpbmRvd3N4Lmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMTY5LDkgKzE3MCw1NCBAQCB2b2lkIEhV
RFNsaWRlcjo6ZHJhZyhjb25zdCBJbnRQb2ludCYgcG9pCiAgICAgbV9idXR0b25Qb3NpdGlvbiA9
IG1heCgwLCBtaW4obV9yZWN0LndpZHRoKCkgLSBtX2J1dHRvblNpemUsIHBvaW50LngoKSAtIG1f
ZHJhZ1N0YXJ0T2Zmc2V0KSk7CiB9CiAKK2NsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6
OkxheW91dENsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpXS0NBQ0ZMYXllckxheW91dENsaWVudCB7
CitwdWJsaWM6CisgICAgTGF5b3V0Q2xpZW50KEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIHBh
cmVudCkKKyAgICAgICAgOiBtX3BhcmVudChwYXJlbnQpCisgICAgeworICAgIH0KKworICAgIHZv
aWQgbGF5b3V0U3VibGF5ZXJzT2ZMYXllcihXS0NBQ0ZMYXllciogbGF5ZXIpIAorICAgIHsKKyAg
ICAgICAgaWYgKGxheWVyICE9IG1fcGFyZW50LT5tX3Jvb3RDaGlsZCkgCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50
ID0gbV9wYXJlbnQtPm1fbWVkaWFFbGVtZW50LmdldCgpOworICAgICAgICBpZiAoIW1lZGlhRWxl
bWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBXS0NBQ0ZMYXllciogdmlkZW9M
YXllciA9IG1lZGlhRWxlbWVudC0+cGxhdGZvcm1MYXllcigpOworICAgICAgICBpZiAoIXZpZGVv
TGF5ZXIgfHwgdmlkZW9MYXllci0+c3VwZXJsYXllcigpICE9IGxheWVyKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIEZsb2F0UG9pbnQgdmlkZW9BbmNob3IgPSB2aWRlb0xheWVyLT5h
bmNob3JQb2ludCgpOworICAgICAgICBGbG9hdFJlY3QgbGF5ZXJCb3VuZHMgPSBsYXllci0+Ym91
bmRzKCk7CisgICAgICAgIEZsb2F0UmVjdCB2aWRlb0JvdW5kcyA9IHZpZGVvTGF5ZXItPmJvdW5k
cygpOworICAgICAgICBGbG9hdFBvaW50IGxheWVyQ2VudGVyID0gbGF5ZXJCb3VuZHMuY2VudGVy
KCk7CisKKyAgICAgICAgRmxvYXRTaXplIG5hdHVyYWxTaXplID0gbWVkaWFFbGVtZW50LT5wbGF5
ZXIoKS0+bmF0dXJhbFNpemUoKTsKKyAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSAwOworICAg
ICAgICBpZiAobmF0dXJhbFNpemUuYXNwZWN0UmF0aW8oKSA+IGxheWVyQm91bmRzLnNpemUoKS5h
c3BlY3RSYXRpbygpKQorICAgICAgICAgICAgc2NhbGVGYWN0b3IgPSBsYXllckJvdW5kcy53aWR0
aCgpIC8gbmF0dXJhbFNpemUud2lkdGgoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2Nh
bGVGYWN0b3IgPSBsYXllckJvdW5kcy5oZWlnaHQoKSAvIG5hdHVyYWxTaXplLmhlaWdodCgpOwor
ICAgICAgICBuYXR1cmFsU2l6ZS5zY2FsZShzY2FsZUZhY3Rvcik7CisgICAgICAgIHZpZGVvQm91
bmRzLnNldFNpemUobmF0dXJhbFNpemUpOworCisgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgY2Vu
dGVyZWQgcG9zaXRpb24gYmFzZWQgb24gdGhlIHZpZGVvQW5jaG9yLCB2aWRlb0JvdW5kcywgYW5k
IGxheWVyQm91bmRzOgorICAgICAgICBGbG9hdFBvaW50IHZpZGVvUG9zaXRpb247CisgICAgICAg
IHZpZGVvUG9zaXRpb24uc2V0WChsYXllckNlbnRlci54KCkgLSAoMC41IC0gdmlkZW9BbmNob3Iu
eCgpKSAqIHZpZGVvQm91bmRzLndpZHRoKCkpOworICAgICAgICB2aWRlb1Bvc2l0aW9uLnNldFko
bGF5ZXJDZW50ZXIueSgpIC0gKDAuNSAtIHZpZGVvQW5jaG9yLnkoKSkgKiB2aWRlb0JvdW5kcy5o
ZWlnaHQoKSk7CisgICAgICAgIHZpZGVvTGF5ZXItPnNldFBvc2l0aW9uKHZpZGVvUG9zaXRpb24p
OworCisgICAgICAgIHZpZGVvTGF5ZXItPnNldEJvdW5kcyhGbG9hdFJlY3QoRmxvYXRQb2ludCgp
LCBuYXR1cmFsU2l6ZSkpOworICAgIH0KKworICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIq
IG1fcGFyZW50OworfTsKKwogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6RnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcigpCiAgICAgOiBtX2h1ZFdpbmRvdygwKQotICAgICwgbV92aWRlb1dpbmRv
dygwKQogICAgICwgbV9wbGF5UGF1c2VCdXR0b24oSFVEQnV0dG9uOjpQbGF5UGF1c2VCdXR0b24s
IEludFBvaW50KCh3aW5kb3dXaWR0aCAtIGJ1dHRvblNpemUpIC8gMiwgbWFyZ2luVG9wKSkKICAg
ICAsIG1fdGltZVNsaWRlckJ1dHRvbihIVURCdXR0b246OlRpbWVTbGlkZXJCdXR0b24sIEludFBv
aW50KDAsIDApKQogICAgICwgbV92b2x1bWVVcEJ1dHRvbihIVURCdXR0b246OlZvbHVtZVVwQnV0
dG9uLCBJbnRQb2ludChtYXJnaW4gKyBidXR0b25NaW5pU2l6ZSArIHZvbHVtZVNsaWRlcldpZHRo
ICsgYnV0dG9uTWluaVNpemUgLyAyLCBtYXJnaW5Ub3AgKyAoYnV0dG9uU2l6ZSAtIGJ1dHRvbk1p
bmlTaXplKSAvIDIpKQpAQCAtMTgzLDI1ICsyMjksMjAgQEAgRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcjo6RnVsbHNjcmVlblZpZAogICAgICwgbV9oaXRXaWRnZXQoMCkKICAgICAsIG1fbW92aW5n
V2luZG93KGZhbHNlKQogICAgICwgbV90aW1lcih0aGlzLCAmRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcjo6dGltZXJGaXJlZCkKKyAgICAsIG1fcm9vdENoaWxkKFdlYkNvcmU6OldLQ0FDRkxheWVy
OjpjcmVhdGUoV2ViQ29yZTo6V0tDQUNGTGF5ZXI6OkxheWVyKSkKKyAgICAsIG1fbGF5b3V0Q2xp
ZW50KG5ldyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpMYXlvdXRDbGllbnQodGhpcykpCiB7
CisgICAgbV9yb290Q2hpbGQtPnNldExheW91dENsaWVudChtX2xheW91dENsaWVudC5nZXQoKSk7
CiB9CiAKIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6On5GdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyKCkKIHsKLSAgICBpZiAobW92aWUoKSkKLSAgICAgICAgbW92aWUoKS0+ZXhpdEZ1bGxzY3Jl
ZW4oKTsKLX0KLQotUVRNb3ZpZUdXb3JsZCogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6bW92
aWUoKSBjb25zdAotewotICAgIGlmICghbV9tZWRpYUVsZW1lbnQpCi0gICAgICAgIHJldHVybiAw
OworICAgIG1fcm9vdENoaWxkLT5zZXRMYXlvdXRDbGllbnQoMCk7CiAKLSAgICBQbGF0Zm9ybU1l
ZGlhIHBsYXRmb3JtTWVkaWEgPSBtX21lZGlhRWxlbWVudC0+cGxhdGZvcm1NZWRpYSgpOwotICAg
IGlmIChwbGF0Zm9ybU1lZGlhLnR5cGUgIT0gUGxhdGZvcm1NZWRpYTo6UVRNb3ZpZUdXb3JsZFR5
cGUpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIHBsYXRmb3JtTWVkaWEubWVkaWEu
cXRNb3ZpZUdXb3JsZDsKKyAgICBpZiAobV9mdWxsc2NyZWVuV2luZG93KSB7CisgICAgICAgIG1f
ZnVsbHNjcmVlbldpbmRvdy0+Y2xvc2UoKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuV2luZG93ID0g
MDsKKyAgICB9CiB9CiAKIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6c2V0TWVkaWFF
bGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKQEAgLTIxOCwxMyArMjU5LDE4
IEBAIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6c2V0TWVkaWEKIAogdm9pZCBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjplbnRlckZ1bGxzY3JlZW4oKQogewotICAgIGlmICghbW92
aWUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV92aWRlb1dpbmRvdyA9IG1vdmllKCktPmVu
dGVyRnVsbHNjcmVlbih0aGlzKTsKKyAgICBpZiAoIW1fZnVsbHNjcmVlbldpbmRvdykgeworICAg
ICAgICBtX2Z1bGxzY3JlZW5XaW5kb3cgPSBuZXcgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVl
bldpbmRvdyh0aGlzKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuV2luZG93LT5jcmVhdGVXaW5kb3co
KTsKKyAgICAgICAgbV9mdWxsc2NyZWVuV2luZG93LT5zZXRSb290Q2hpbGRMYXllcihtX3Jvb3RD
aGlsZCk7CisgICAgfQogCisgICAgV2ViQ29yZTo6V0tDQUNGTGF5ZXIqIHZpZGVvTGF5ZXIgPSBt
X21lZGlhRWxlbWVudC0+cGxheWVyKCktPnBsYXRmb3JtTGF5ZXIoKTsKKyAgICBtX3Jvb3RDaGls
ZC0+YWRkU3VibGF5ZXIodmlkZW9MYXllcik7CisgICAgbV9yb290Q2hpbGQtPnNldE5lZWRzTGF5
b3V0KCk7CisgICAgCiAgICAgUkVDVCB3aW5kb3dSZWN0OwotICAgIEdldENsaWVudFJlY3QobV92
aWRlb1dpbmRvdywgJndpbmRvd1JlY3QpOworICAgIEdldENsaWVudFJlY3QobV9mdWxsc2NyZWVu
V2luZG93LT5od25kKCksICZ3aW5kb3dSZWN0KTsKICAgICBtX2Z1bGxzY3JlZW5TaXplLnNldFdp
ZHRoKHdpbmRvd1JlY3QucmlnaHQgLSB3aW5kb3dSZWN0LmxlZnQpOwogICAgIG1fZnVsbHNjcmVl
blNpemUuc2V0SGVpZ2h0KHdpbmRvd1JlY3QuYm90dG9tIC0gd2luZG93UmVjdC50b3ApOwogCkBA
IC0yMzMsMTMgKzI3OSwyMyBAQCB2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVudGVy
RnVsCiAKIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZXhpdEZ1bGxzY3JlZW4oKQog
ewotICAgIFNldFdpbmRvd0xvbmdQdHIobV9odWRXaW5kb3csIDAsIDApOwotICAgIGlmIChtb3Zp
ZSgpKQotICAgICAgICBtb3ZpZSgpLT5leGl0RnVsbHNjcmVlbigpOwotCi0gICAgQVNTRVJUKCFJ
c1dpbmRvdyhtX2h1ZFdpbmRvdykpOwotICAgIG1fdmlkZW9XaW5kb3cgPSAwOwotICAgIG1faHVk
V2luZG93ID0gMDsKKyAgICBpZiAobV9mdWxsc2NyZWVuV2luZG93KSB7CisgICAgICAgIG1fZnVs
bHNjcmVlbldpbmRvdy0+Y2xvc2UoKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuV2luZG93LT5zZXRS
b290Q2hpbGRMYXllcigwKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuV2luZG93ID0gMDsKKyAgICB9
CisKKyAgICBpZiAobV9odWRXaW5kb3cpIHsKKyAgICAgICAgU2V0V2luZG93TG9uZ1B0cihtX2h1
ZFdpbmRvdywgMCwgMCk7CisgICAgICAgIDo6RGVzdHJveVdpbmRvdyhtX2h1ZFdpbmRvdyk7Cisg
ICAgICAgIG1faHVkV2luZG93ID0gMDsKKyAgICB9CisKKyAgICAvLyBBcyBhIHNpZGUgZWZmZWN0
IG9mIHNldHRpbmcgdGhlIHBsYXllciB0byBpbnZpc2libGUvdmlzaWJsZSwKKyAgICAvLyB0aGUg
cGxheWVyJ3MgbGF5ZXIgd2lsbCBiZSByZWNyZWF0ZWQsIGFuZCB3aWxsIGJlIHBpY2tlZCB1cCAK
KyAgICAvLyB0aGUgbmV4dCB0aW1lIHRoZSBsYXllciB0cmVlIGlzIHN5bmNoZWQuCisgICAgbV9t
ZWRpYUVsZW1lbnQtPnBsYXllcigpLT5zZXRWaXNpYmxlKDApOworICAgIG1fbWVkaWFFbGVtZW50
LT5wbGF5ZXIoKS0+c2V0VmlzaWJsZSgxKTsKIH0KIAogYm9vbCBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyOjpjYW5QbGF5KCkgY29uc3QKQEAgLTMxNiw2ICszNzIsOSBAQCBMUkVTVUxUIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXI6OmZ1bGxzCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV01f
TEJVVFRPTlVQOgogICAgICAgICBvbk1vdXNlVXAoSW50UG9pbnQoR0VUX1hfTFBBUkFNKGxQYXJh
bSksIEdFVF9ZX0xQQVJBTShsUGFyYW0pKSk7CisgICAgY2FzZSBXTV9BQ1RJVkFURUFQUDoKKyAg
ICAgICAgaWYgKCF3UGFyYW0pCisgICAgICAgICAgICBtX21lZGlhRWxlbWVudC0+ZXhpdEZ1bGxz
Y3JlZW4oKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0zNjQsNyArNDIzLDcgQEAgdm9p
ZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjcmVhdGVIVQogICAgIAogICAgIC8vIERpcnR5
IHRoZSB3aW5kb3cgc28gdGhlIEhVRCBkcmF3cwogICAgIFJFQ1QgY2xlYXJSZWN0ID0geyBtX2h1
ZFBvc2l0aW9uLngoKSwgbV9odWRQb3NpdGlvbi55KCksIG1faHVkUG9zaXRpb24ueCgpICsgd2lu
ZG93V2lkdGgsIG1faHVkUG9zaXRpb24ueSgpICsgd2luZG93SGVpZ2h0IH07Ci0gICAgSW52YWxp
ZGF0ZVJlY3QobV92aWRlb1dpbmRvdywgJmNsZWFyUmVjdCwgdHJ1ZSk7CisgICAgSW52YWxpZGF0
ZVJlY3QobV9mdWxsc2NyZWVuV2luZG93LT5od25kKCksICZjbGVhclJlY3QsIHRydWUpOwogCiAg
ICAgbV9wbGF5UGF1c2VCdXR0b24uc2V0U2hvd0FsdEJ1dHRvbighY2FuUGxheSgpKTsKICAgICBt
X3ZvbHVtZVNsaWRlci5zZXRWYWx1ZSh2b2x1bWUoKSk7CkBAIC0zNzcsNyArNDM2LDcgQEAgdm9p
ZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjcmVhdGVIVQogCiAgICAgbV9odWRXaW5kb3cg
PSBDcmVhdGVXaW5kb3dFeChXU19FWF9MQVlFUkVEIHwgV1NfRVhfVFJBTlNQQVJFTlQgfCBXU19F
WF9UT09MV0lORE9XLCAKICAgICAgICAgZnVsbHNjcmVlblZpZGVlb0hVRFdpbmRvd0NsYXNzTmFt
ZSwgMCwgV1NfUE9QVVAgfCBXU19WSVNJQkxFLAotICAgICAgICBtX2h1ZFBvc2l0aW9uLngoKSwg
bV9odWRQb3NpdGlvbi55KCksIDAsIDAsIG1fdmlkZW9XaW5kb3csIDAsIGdJbnN0YW5jZSwgMCk7
CisgICAgICAgIG1faHVkUG9zaXRpb24ueCgpLCBtX2h1ZFBvc2l0aW9uLnkoKSwgMCwgMCwgbV9m
dWxsc2NyZWVuV2luZG93LT5od25kKCksIDAsIGdJbnN0YW5jZSwgMCk7CiAgICAgQVNTRVJUKDo6
SXNXaW5kb3cobV9odWRXaW5kb3cpKTsKICAgICBTZXRXaW5kb3dMb25nUHRyKG1faHVkV2luZG93
LCAwLCByZWludGVycHJldF9jYXN0PExPTkdfUFRSPih0aGlzKSk7CiAKSW5kZXg6IFdlYktpdC93
aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4v
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oCShyZXZpc2lvbiA2MDAyNykKKysrIFdlYktpdC93
aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoVklERU8pCiAKLSNpbmNsdWRlICJRVE1vdmllR1dvcmxkLmgi
CisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oIgogCiAjaW5j
bHVkZSA8V2ViQ29yZS9IVE1MTWVkaWFFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFn
ZS5oPgpAQCAtMzgsNiArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBHcmFw
aGljc0NvbnRleHQ7CitjbGFzcyBXS0NBQ0ZMYXllcjsKIH0KIAogY2xhc3MgSFVEV2lkZ2V0IHsK
QEAgLTk5LDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fZHJhZ1N0YXJ0T2Zmc2V0Owog
fTsKIAotY2xhc3MgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciA6IFFUTW92aWVHV29ybGRGdWxs
c2NyZWVuQ2xpZW50LCBwdWJsaWMgTm9uY29weWFibGUgeworY2xhc3MgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlciA6IFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5DbGllbnQs
IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcigpOwogICAgIHZpcnR1YWwgfkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIoKTsKQEAgLTEx
MSwxMiArMTEyLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGV4aXRGdWxsc2NyZWVuKCk7CiAKIHBy
aXZhdGU6Ci0gICAgLy8gUVRNb3ZpZUdXb3JsZEZ1bGxzY3JlZW5DbGllbnQKKyAgICAvLyBNZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93Q2xpZW50CiAgICAgdmlydHVhbCBMUkVTVUxU
IGZ1bGxzY3JlZW5DbGllbnRXbmRQcm9jKEhXTkQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNLCBMUEFS
QU0pOwogCiAgICAgdm9pZCBlbnN1cmVXaW5kb3coKTsKLSAgICBRVE1vdmllR1dvcmxkKiBtb3Zp
ZSgpIGNvbnN0OwotCisgICAgCiAgICAgYm9vbCBjYW5QbGF5KCkgY29uc3Q7CiAgICAgdm9pZCBw
bGF5KCk7CiAgICAgdm9pZCBwYXVzZSgpOwpAQCAtMTQ4LDEwICsxNDgsMTYgQEAgcHJpdmF0ZToK
IAogICAgIFJlZlB0cjxXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50PiBtX21lZGlhRWxlbWVudDsK
IAotICAgIEhXTkQgbV9odWRXaW5kb3csIG1fdmlkZW9XaW5kb3c7CisgICAgSFdORCBtX2h1ZFdp
bmRvdzsKICAgICBPd25QdHI8SEJJVE1BUD4gbV9iaXRtYXA7CiAgICAgV2ViQ29yZTo6SW50U2l6
ZSBtX2Z1bGxzY3JlZW5TaXplOwogICAgIFdlYkNvcmU6OkludFBvaW50IG1faHVkUG9zaXRpb247
CisgICAgT3duUHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c+
IG1fZnVsbHNjcmVlbldpbmRvdzsKKyAgICBSZWZQdHI8V2ViQ29yZTo6V0tDQUNGTGF5ZXI+IG1f
cm9vdENoaWxkOworCisgICAgY2xhc3MgTGF5b3V0Q2xpZW50OworICAgIGZyaWVuZCBjbGFzcyBM
YXlvdXRDbGllbnQ7CisgICAgT3duUHRyPExheW91dENsaWVudD4gbV9sYXlvdXRDbGllbnQ7CiAK
ICAgICBIVURCdXR0b24gbV9wbGF5UGF1c2VCdXR0b247CiAgICAgSFVEQnV0dG9uIG1fdGltZVNs
aWRlckJ1dHRvbjsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYwMDI4KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMDUtMjIgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRnVsbCBzY3JlZW4gZG9lc24ndCB3b3JrIGZvciB2aWRlbyBl
bGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mzk1NTcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODAxMTgxMworCisgICAgICAgIFJlLWVuYWJs
ZWQgZnVsbHNjcmVlbiBzdXBwb3J0IG9uIHdpbmRvd3MsIGFuZCBtb2RpZmllZCB0ZXN0cyB0byBt
YXRjaC4KKworICAgICAgICAqIHBsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1hZnRlci1yZWxv
YWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1k
cmFnLXRpbWViYXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9tZWRpYS9j
b250cm9scy1zdHJpY3QtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9tZWRp
YS9jb250cm9scy1zdHlsaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
bWVkaWEvdmlkZW8tY29udHJvbHMtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBw
bGF0Zm9ybS93aW4vbWVkaWEvdmlkZW8tZGlzcGxheS10b2dnbGUtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9tZWRpYS92aWRlby1uby1hdWRpby1leHBlY3RlZC50eHQ6CisK
IDIwMTAtMDUtMjIgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luL21lZGlhL2NvbnRyb2xzLWFmdGVyLXJlbG9hZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLWFmdGVyLXJlbG9hZC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDYwMDI3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L21lZGlhL2NvbnRyb2xzLWFmdGVyLXJlbG9hZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTE3LDkgKzE3LDEwIEBAIGxheWVyIGF0ICg4LDQyKSBzaXplIDMyMHgyNDAKIGxheWVyIGF0
ICg4LDI2Nikgc2l6ZSAzMjB4MTYKICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtE
SVZ9IGF0ICgwLDIyNCkgc2l6ZSAzMjB4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAo
MCwwKSBzaXplIDE2eDE2Ci0gICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNp
emUgMjU2eDE2Ci0gICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI1Nngx
NgorICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI0MHgxNgorICAg
ICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNDB4MTYKICAgICAgICAgUmVu
ZGVyQmxvY2sge0RJVn0gYXQgKDIsMSkgc2l6ZSAxM3gxNAorICAgIFJlbmRlckJ1dHRvbiB7SU5Q
VVR9IGF0ICgyNTYsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgy
NzIsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODgsMCkgc2l6
ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMDQsMCkgc2l6ZSAxNngxNgpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLWRyYWctdGltZWJh
ci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21l
ZGlhL2NvbnRyb2xzLWRyYWctdGltZWJhci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYwMDI3KQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLWRyYWctdGltZWJhci1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMTAgKzQsMTAgQEAgUlVOKHZpZGVvLmF1
dG9wbGF5ID0gdHJ1ZSkKIFJVTih2aWRlby5zcmMgPSAnY29udGVudC90ZXN0Lm1wNCcpCiBFVkVO
VChwbGF5aW5nKQogRVZFTlQoc2Vla2VkKQotVGltZTogMi4xCitUaW1lOiAyLjMKIEVWRU5UKHNl
ZWtlZCkKLVRpbWU6IDIuNgorVGltZTogMi44CiBFVkVOVChzZWVrZWQpCi1UaW1lOiAzLjEKK1Rp
bWU6IDMuNAogRU5EIE9GIFRFU1QKIApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21l
ZGlhL2NvbnRyb2xzLXN0cmljdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLXN0cmljdC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDYwMDI3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLXN0
cmljdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE3LDkgKzE3LDEwIEBAIGxheWVy
IGF0ICg4LDUwKSBzaXplIDMyMHgyNDAKIGxheWVyIGF0ICg4LDI3NCkgc2l6ZSAzMjB4MTYKICAg
UmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDIyNCkgc2l6ZSAzMjB4
MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMCwwKSBzaXplIDE2eDE2Ci0gICAgUmVu
ZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUgMjU2eDE2Ci0gICAgICBSZW5kZXJT
bGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI1NngxNgorICAgIFJlbmRlckZsZXhpYmxlQm94
IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI0MHgxNgorICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0g
YXQgKDAsMCkgc2l6ZSAyNDB4MTYKICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMSkg
c2l6ZSAxM3gxNAorICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNTYsMCkgc2l6ZSAxNngx
NgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNzIsMCkgc2l6ZSAxNngxNgogICAgIFJl
bmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODgsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRv
biB7SU5QVVR9IGF0ICgzMDQsMCkgc2l6ZSAxNngxNgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL21lZGlhL2NvbnRyb2xzLXN0eWxpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1zdHlsaW5nLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gNjAwMjcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEv
Y29udHJvbHMtc3R5bGluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIxLDkgKzIx
LDEwIEBAIGxheWVyIGF0ICgxOCw0Mikgc2l6ZSAzMjB4MjQwCiBsYXllciBhdCAoMTgsMjY2KSBz
aXplIDMyMHgxNgogICBSZW5kZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAs
MjI0KSBzaXplIDMyMHgxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUg
MTZ4MTYKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNTZ4MTYK
LSAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjU2eDE2CisgICAgUmVu
ZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUgMjQweDE2CisgICAgICBSZW5kZXJT
bGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI0MHgxNgogICAgICAgICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMiwxKSBzaXplIDEzeDE0CisgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI1
NiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI3MiwwKSBzaXpl
IDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI4OCwwKSBzaXplIDE2eDE2CiAg
ICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMwNCwwKSBzaXplIDE2eDE2CkBAIC0zMiw5ICsz
MywxMCBAQCBsYXllciBhdCAoOCwyODIpIHNpemUgMzIweDI0MAogbGF5ZXIgYXQgKDgsNTA2KSBz
aXplIDMyMHgxNgogICBSZW5kZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAs
MjI0KSBzaXplIDMyMHgxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUg
MTZ4MTYKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNTZ4MTYK
LSAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjU2eDE2CisgICAgUmVu
ZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUgMjQweDE2CisgICAgICBSZW5kZXJT
bGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI0MHgxNgogICAgICAgICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMiwxKSBzaXplIDEzeDE0CisgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI1
NiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI3MiwwKSBzaXpl
IDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI4OCwwKSBzaXplIDE2eDE2CiAg
ICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMwNCwwKSBzaXplIDE2eDE2CkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvdmlkZW8tY29udHJvbHMtcmVuZGVyaW5nLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvdmlk
ZW8tY29udHJvbHMtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjAwMjcpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvdmlkZW8tY29udHJvbHMtcmVuZGVyaW5nLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjAsOSArMjAsMTAgQEAgbGF5ZXIgYXQgKDgs
NDIpIHNpemUgMzIweDI0MAogbGF5ZXIgYXQgKDgsMjY2KSBzaXplIDMyMHgxNgogICBSZW5kZXJG
bGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMjI0KSBzaXplIDMyMHgxNgogICAg
IFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUgMTZ4MTYKLSAgICBSZW5kZXJGbGV4
aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNTZ4MTYKLSAgICAgIFJlbmRlclNsaWRlciB7
SU5QVVR9IGF0ICgwLDApIHNpemUgMjU2eDE2CisgICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0g
YXQgKDE2LDApIHNpemUgMjQweDE2CisgICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCww
KSBzaXplIDI0MHgxNgogICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiwxKSBzaXplIDEz
eDE0CisgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI1NiwwKSBzaXplIDE2eDE2CiAgICAg
UmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI3MiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0
dG9uIHtJTlBVVH0gYXQgKDI4OCwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBV
VH0gYXQgKDMwNCwwKSBzaXplIDE2eDE2CkBAIC0zMSw5ICszMiwxMCBAQCBsYXllciBhdCAoOCwy
ODIpIHNpemUgMzIweDI0MAogbGF5ZXIgYXQgKDgsNTA2KSBzaXplIDMyMHgxNgogICBSZW5kZXJG
bGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMjI0KSBzaXplIDMyMHgxNgogICAg
IFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUgMTZ4MTYKLSAgICBSZW5kZXJGbGV4
aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNTZ4MTYKLSAgICAgIFJlbmRlclNsaWRlciB7
SU5QVVR9IGF0ICgwLDApIHNpemUgMjU2eDE2CisgICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0g
YXQgKDE2LDApIHNpemUgMjQweDE2CisgICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCww
KSBzaXplIDI0MHgxNgogICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiwxKSBzaXplIDEz
eDE0CisgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI1NiwwKSBzaXplIDE2eDE2CiAgICAg
UmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI3MiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0
dG9uIHtJTlBVVH0gYXQgKDI4OCwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBV
VH0gYXQgKDMwNCwwKSBzaXplIDE2eDE2CkBAIC00NCw5ICs0NiwxMCBAQCBsYXllciBhdCAoOCw1
MjIpIHNpemUgMzIweDI0MAogbGF5ZXIgYXQgKDgsNzQ2KSBzaXplIDMyMHgxNgogICBSZW5kZXJG
bGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMjI0KSBzaXplIDMyMHgxNgogICAg
IFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUgMTZ4MTYKLSAgICBSZW5kZXJGbGV4
aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNTZ4MTYKLSAgICAgIFJlbmRlclNsaWRlciB7
SU5QVVR9IGF0ICgwLDApIHNpemUgMjU2eDE2CisgICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0g
YXQgKDE2LDApIHNpemUgMjQweDE2CisgICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCww
KSBzaXplIDI0MHgxNgogICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiwxKSBzaXplIDEz
eDE0CisgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI1NiwwKSBzaXplIDE2eDE2CiAgICAg
UmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI3MiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0
dG9uIHtJTlBVVH0gYXQgKDI4OCwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBV
VH0gYXQgKDMwNCwwKSBzaXplIDE2eDE2CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
bWVkaWEvdmlkZW8tZGlzcGxheS10b2dnbGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS92aWRlby1kaXNwbGF5LXRvZ2dsZS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDYwMDI3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlh
L3ZpZGVvLWRpc3BsYXktdG9nZ2xlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTYs
OSArMTYsMTAgQEAgbGF5ZXIgYXQgKDgsMjYpIHNpemUgMzIweDI0MAogbGF5ZXIgYXQgKDgsMjUw
KSBzaXplIDMyMHgxNgogICBSZW5kZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQg
KDAsMjI0KSBzaXplIDMyMHgxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNp
emUgMTZ4MTYKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNTZ4
MTYKLSAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjU2eDE2CisgICAg
UmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUgMjQweDE2CisgICAgICBSZW5k
ZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI0MHgxNgogICAgICAgICBSZW5kZXJCbG9j
ayB7RElWfSBhdCAoMiwxKSBzaXplIDEzeDE0CisgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQg
KDI1NiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI3MiwwKSBz
aXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI4OCwwKSBzaXplIDE2eDE2
CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMwNCwwKSBzaXplIDE2eDE2CkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvdmlkZW8tbm8tYXVkaW8tZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS92aWRlby1uby1h
dWRpby1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYwMDI3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL21lZGlhL3ZpZGVvLW5vLWF1ZGlvLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTcsOCArMTcsOSBAQCBsYXllciBhdCAoOCw0Mikgc2l6ZSAzNTJ4Mjg4CiBsYXllciBhdCAo
OCwzMTQpIHNpemUgMzUyeDE2CiAgIFJlbmRlckZsZXhpYmxlQm94IChwb3NpdGlvbmVkKSB7RElW
fSBhdCAoMCwyNzIpIHNpemUgMzUyeDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDAs
MCkgc2l6ZSAxNngxNgotICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXpl
IDMwNHgxNgotICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAzMDR4MTYK
KyAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyODh4MTYKKyAgICAg
IFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjg4eDE2CiAgICAgICAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgyLDEpIHNpemUgMTN4MTQKKyAgICBSZW5kZXJCdXR0b24ge0lOUFVU
fSBhdCAoMzA0LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzIw
LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzM2LDApIHNpemUg
MTZ4MTYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56937</attachid>
            <date>2010-05-24 15:49:43 -0700</date>
            <delta_ts>2010-05-24 16:19:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39557-20100524154949.patch</filename>
            <type>text/plain</type>
            <size>294948</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDA0OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTAtMDUtMjIgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnVs
bCBzY3JlZW4gZG9lc24ndCB3b3JrIGZvciB2aWRlbyBlbGVtZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk1NTcKKyAgICAgICAgcmRhcjovL3By
b2JsZW0vODAxMTgxMworICAgICAgICAKKyAgICAgICAgQWRkIGZ1bGxzY3JlZW4gc3VwcG9ydCBm
b3IgTWVkaWFQbGF5ZXJQcml2YXRlVmlzdWFsQ29udGV4dC4gIEEgbmV3IGNsYXNzLCBNZWRpYVBs
YXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LAorICAgICAgICBwcm92aWRlcyB0aGUgZnVsbHNj
cmVlbiBod25kIGFuZCBsYXllciByZW5kZXJlci4gIEFueSBXS0NBQ0ZMYXllciBjYW4gYmUgcHJv
dmlkZWQgdG8gTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdworICAgICAgICBzbyBm
dXR1cmUgYWRkaXRpb25hbCBNZWRpYVBsYXllclByaXZhdGUgaW1wbGVtZW50YXRpb25zIGNhbiB1
c2UgdGhlIGZ1bGxzY3JlZW4gd2luZG93LgorICAgICAgICAKKyAgICAgICAgTWlub3IgYWRkaXRp
b25zIGhhdmUgYmVlbiBtYWRlIHRvIHRoZSBGbG9hdFNpemUgYW5kIEludFNpemUgY2xhc3Nlcy4K
KworICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oOiBBZGRlZCBhc3BlY3RSYXRpbygpLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaDogQWRkZWQgYXNwZWN0UmF0aW8oKSBhbmQg
c2NhbGUoZmxvYXQpLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVGdWxsc2NyZWVuV2luZG93LmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNr
VGltZVZpc3VhbENvbnRleHQuY3BwOiBDYWxsIHJldHJpZXZlQ3VycmVudEltYWdlKCkgYWZ0ZXIg
Y3JlYXRpbmcgdGhlIHZpZGVvTGF5ZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1dLQ0FDRkxheWVyLmNwcDogCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FD
RkxheWVyLmg6IEFkZCBsYXlvdXQgY2xpZW50IGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6V0tD
QUNGTGF5ZXI6OmZyYW1lKTogQWRkZWQgYmFjayBmcmFtZSgpL3NldEZyYW1lKCkuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dlYlRpbGVkTGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViVGlsZWRMYXllcjo6c2V0RnJhbWUpOiBJbXBsYW1lbnRlZCBzZXRGcmFtZSgpIGlu
IHN1YmNsYXNzIG9mIFdLQ0FDRkxheWVyCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1dlYlRpbGVkTGF5ZXIuaDoKKworCiAyMDEwLTA1LTIzICBBZGFtIEJhcnRoICA8YWJhcnRoQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDYwMDQ4KQorKysgV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjM3OTEs
NiArMjM3OTEsMTQgQEAKIAkJCQkJCT4NCiAJCQkJCTwvRmlsZT4NCiAJCQkJCTxGaWxlDQorCQkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cTWVkaWFQbGF5ZXJQcml2
YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAiDQorCQkJCQkJPg0KKwkJCQkJPC9GaWxlPg0KKwkJCQkJ
PEZpbGUNCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxNZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgiDQorCQkJCQkJPg0KKwkJCQkJPC9GaWxl
Pg0KKwkJCQkJPEZpbGUNCiAJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNz
XHdpblxNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcCINCiAJCQkJ
CQk+DQogCQkJCQk8L0ZpbGU+DQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9h
dFNpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6
ZS5oCShyZXZpc2lvbiA2MDA0OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRT
aXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDE0IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGggPD0gMCB8fCBtX2hlaWdodCA8PSAw
OyB9CiAKKyAgICBmbG9hdCBhc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGggLyBt
X2hlaWdodDsgfQorCisgICAgdm9pZCBzY2FsZShmbG9hdCBzY2FsZSkKKyAgICB7CisgICAgICAg
IG1fd2lkdGggKj0gc2NhbGU7CisgICAgICAgIG1faGVpZ2h0ICo9IHNjYWxlOworICAgIH0KKwog
ICAgIEZsb2F0U2l6ZSBleHBhbmRlZFRvKGNvbnN0IEZsb2F0U2l6ZSYgb3RoZXIpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gRmxvYXRTaXplKG1fd2lkdGggPiBvdGhlci5tX3dpZHRoID8g
bV93aWR0aCA6IG90aGVyLm1fd2lkdGgsCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ludFNpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNp
emUuaAkocmV2aXNpb24gNjAwNDgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNp
emUuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsOCBAQCBwdWJsaWM6CiAKICAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoIDw9IDAgfHwgbV9oZWlnaHQgPD0gMDsg
fQogICAgIGJvb2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4gIW1fd2lkdGggJiYgIW1faGVpZ2h0
OyB9CisKKyAgICBmbG9hdCBhc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PGZsb2F0PihtX3dpZHRoKSAvIHN0YXRpY19jYXN0PGZsb2F0PihtX2hlaWdodCk7IH0KICAgICAK
ICAgICB2b2lkIGV4cGFuZChpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgewpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldp
bmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVk
aWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2lu
ZG93LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQgCisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgCisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSAKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyCTQVMgSVOUIAorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIAor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiAKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyAKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIAorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIAorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVG
dWxsc2NyZWVuV2luZG93LmgiCisKKyNpbmNsdWRlICJXZWJDb3JlSW5zdGFuY2VIYW5kbGUuaCIK
KyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dDb2xvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6Ok1lZGlhUGxheWVyUHJpdmF0
ZUZ1bGxzY3JlZW5XaW5kb3coTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCogY2xp
ZW50KQorICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9od25kKDApCisgICAgLCBtX2xh
eWVyUmVuZGVyZXIoV0tDQUNGTGF5ZXJSZW5kZXJlcjo6Y3JlYXRlKDApKQoreworfQorCitNZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93Ojp+TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNj
cmVlbldpbmRvdygpCit7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldp
bmRvdzo6Y3JlYXRlV2luZG93KCkKK3sKKyAgICBzdGF0aWMgQVRPTSB3aW5kb3dBdG9tOworICAg
IHN0YXRpYyBMUENXU1RSIHdpbmRvd0NsYXNzTmFtZSA9IEwiTWVkaWFQbGF5ZXJQcml2YXRlRnVs
bHNjcmVlbldpbmRvd0NsYXNzIjsKKyAgICBpZiAoIXdpbmRvd0F0b20pIHsKKyAgICAgICAgV05E
Q0xBU1NFWCB3Y2V4ID0gezB9OworICAgICAgICB3Y2V4LmNiU2l6ZSA9IHNpemVvZihXTkRDTEFT
U0VYKTsKKyAgICAgICAgd2NleC5zdHlsZSA9IENTX0hSRURSQVcgfCBDU19WUkVEUkFXOworICAg
ICAgICB3Y2V4LmxwZm5XbmRQcm9jID0gJnN0YXRpY1duZFByb2M7CisgICAgICAgIHdjZXguaElu
c3RhbmNlID0gV2ViQ29yZTo6aW5zdGFuY2VIYW5kbGUoKTsKKyAgICAgICAgd2NleC5scHN6Q2xh
c3NOYW1lID0gd2luZG93Q2xhc3NOYW1lOworICAgICAgICB3aW5kb3dBdG9tID0gOjpSZWdpc3Rl
ckNsYXNzRXgoJndjZXgpOworICAgIH0KKworICAgIGlmIChtX2h3bmQpCisgICAgICAgIGNsb3Nl
KCk7CisKKyAgICBIV05EIHBhcmVudEhXTkQgPSBtX2NsaWVudCA/IG1fY2xpZW50LT5wYXJlbnRI
V05EKCkgOiAwOworCisgICAgTU9OSVRPUklORk8gbWkgPSB7MH07CisgICAgbWkuY2JTaXplID0g
c2l6ZW9mKE1PTklUT1JJTkZPKTsKKyAgICBHZXRNb25pdG9ySW5mbyhNb25pdG9yRnJvbVdpbmRv
dyhwYXJlbnRIV05ELCBNT05JVE9SX0RFRkFVTFRUT05FQVJFU1QpLCAmbWkpOworICAgIEludFJl
Y3QgbW9uaXRvclJlY3QgPSBtaS5yY01vbml0b3I7CisgICAgCisgICAgOjpDcmVhdGVXaW5kb3dF
eFcoMCwgd2luZG93Q2xhc3NOYW1lLCBMIiIsIFdTX1BPUFVQIHwgV1NfVklTSUJMRSwgCisgICAg
ICAgIG1vbml0b3JSZWN0LngoKSwgbW9uaXRvclJlY3QueSgpLCBtb25pdG9yUmVjdC53aWR0aCgp
LCBtb25pdG9yUmVjdC5oZWlnaHQoKSwKKyAgICAgICAgcGFyZW50SFdORCwgMCwgV2ViQ29yZTo6
aW5zdGFuY2VIYW5kbGUoKSwgdGhpcyk7CisgICAgQVNTRVJUKElzV2luZG93KG1faHduZCkpOwor
CisgICAgOjpTZXRGb2N1cyhtX2h3bmQpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUZ1
bGxzY3JlZW5XaW5kb3c6OmNsb3NlKCkKK3sKKyAgICA6OkRlc3Ryb3lXaW5kb3cobV9od25kKTsK
KyAgICBtX2h3bmQgPSAwOworfQorCitIV05EIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5X
aW5kb3c6Omh3bmQoKSBjb25zdAoreworICAgIHJldHVybiBtX2h3bmQ7Cit9CisKK1dLQ0FDRkxh
eWVyUmVuZGVyZXIqIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OmxheWVyUmVu
ZGVyZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVyUmVuZGVyZXIuZ2V0KCk7Cit9CisK
K1dLQ0FDRkxheWVyKiBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93Ojpyb290Q2hp
bGRMYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcm9vdENoaWxkLmdldCgpOworfQorCit2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OnNldFJvb3RDaGlsZExheWVy
KFBhc3NSZWZQdHI8V0tDQUNGTGF5ZXI+IHJvb3RDaGlsZCkKK3sKKyAgICBpZiAobV9yb290Q2hp
bGQgIT0gcm9vdENoaWxkKSB7CisgICAgICAgIGlmIChtX3Jvb3RDaGlsZCkKKyAgICAgICAgICAg
IG1fcm9vdENoaWxkLT5yZW1vdmVGcm9tU3VwZXJsYXllcigpOworCisgICAgICAgIG1fcm9vdENo
aWxkID0gcm9vdENoaWxkOworICAgIH0KKworICAgIGlmIChtX3Jvb3RDaGlsZCkgeworICAgICAg
ICBtX2xheWVyUmVuZGVyZXItPnNldFJvb3RDaGlsZExheWVyKG1fcm9vdENoaWxkLmdldCgpKTsK
KyAgICAgICAgV0tDQUNGTGF5ZXIqIHJvb3RMYXllciA9IG1fcm9vdENoaWxkLT5yb290TGF5ZXIo
KTsKKyAgICAgICAgQ0dSZWN0IHJvb3RCb3VuZHMgPSBtX3Jvb3RDaGlsZC0+cm9vdExheWVyKCkt
PmJvdW5kcygpOworICAgICAgICBtX3Jvb3RDaGlsZC0+c2V0RnJhbWUocm9vdEJvdW5kcyk7Cisg
ICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0U2Nyb2xsRnJhbWUoSW50UG9pbnQocm9vdEJvdW5k
cy5vcmlnaW4pLCBJbnRTaXplKHJvb3RCb3VuZHMuc2l6ZSkpOworICAgICAgICBtX3Jvb3RDaGls
ZC0+c2V0QmFja2dyb3VuZENvbG9yKENHQ29sb3JHZXRDb25zdGFudENvbG9yKGtDR0NvbG9yQmxh
Y2spKTsKKyNpZiBOREVCVUcKKyAgICAgICAgcm9vdExheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3Io
Q0dDb2xvckdldENvbnN0YW50Q29sb3Ioa0NHQ29sb3JCbGFjaykpOworI2Vsc2UKKyAgICAgICAg
UmV0YWluUHRyPENHQ29sb3JSZWY+IHJlZENvbG9yKEFkb3B0Q0YsIENHQ29sb3JDcmVhdGVHZW5l
cmljUkdCKDEsIDAsIDAsIDEpKTsKKyAgICAgICAgcm9vdExheWVyLT5zZXRCYWNrZ3JvdW5kQ29s
b3IocmVkQ29sb3IuZ2V0KCkpOworI2VuZGlmCisgICAgfQorfQorCitMUkVTVUxUIENBTExCQUNL
IE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OnN0YXRpY1duZFByb2MoSFdORCBo
V25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCit7CisgICAg
TE9OR19QVFIgbG9uZ1B0ciA9IEdldFdpbmRvd0xvbmdQdHIoaFduZCwgR1dMUF9VU0VSREFUQSk7
CisKKyAgICBpZiAoIWxvbmdQdHIgJiYgbWVzc2FnZSA9PSBXTV9DUkVBVEUpIHsKKyAgICAgICAg
TFBDUkVBVEVTVFJVQ1QgbHBjcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8TFBDUkVBVEVTVFJVQ1Q+KGxQ
YXJhbSk7CisgICAgICAgIGxvbmdQdHIgPSByZWludGVycHJldF9jYXN0PExPTkdfUFRSPihscGNz
LT5scENyZWF0ZVBhcmFtcyk7CisgICAgICAgIDo6U2V0V2luZG93TG9uZ1B0cihoV25kLCBHV0xQ
X1VTRVJEQVRBLCBsb25nUHRyKTsKKyAgICB9CisKKyAgICBpZiAoTWVkaWFQbGF5ZXJQcml2YXRl
RnVsbHNjcmVlbldpbmRvdyogd2luZG93ID0gcmVpbnRlcnByZXRfY2FzdDxNZWRpYVBsYXllclBy
aXZhdGVGdWxsc2NyZWVuV2luZG93Kj4obG9uZ1B0cikpCisgICAgICAgIHJldHVybiB3aW5kb3ct
PnduZFByb2MoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOworCisgICAgcmV0dXJuIDo6
RGVmV2luZG93UHJvYyhoV25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7ICAgIAorfQorCitM
UkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OnduZFByb2MoSFdORCBo
V25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCit7CisgICAg
TFJFU1VMVCBsUmVzdWx0ID0gMDsKKyAgICBzd2l0Y2ggKG1lc3NhZ2UpIHsKKyAgICBjYXNlIFdN
X0NSRUFURToKKyAgICAgICAgbV9od25kID0gaFduZDsKKyAgICAgICAgbV9sYXllclJlbmRlcmVy
LT5zZXRIb3N0V2luZG93KG1faHduZCk7CisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+Y3JlYXRl
UmVuZGVyZXIoKTsKKyAgICAgICAgbV9sYXllclJlbmRlcmVyLT5zZXROZWVkc0Rpc3BsYXkoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXTV9ERVNUUk9ZOgorICAgICAgICBtX2h3bmQgPSAw
OworICAgICAgICBtX2xheWVyUmVuZGVyZXItPmRlc3Ryb3lSZW5kZXJlcigpOworICAgICAgICBt
X2xheWVyUmVuZGVyZXItPnNldEhvc3RXaW5kb3coMCk7CisgICAgY2FzZSBXTV9XSU5ET1dQT1ND
SEFOR0VEOgorICAgICAgICB7CisgICAgICAgICAgICBMUFdJTkRPV1BPUyB3cCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8TFBXSU5ET1dQT1M+KGxQYXJhbSk7CisgICAgICAgICAgICBpZiAod3AtPmZsYWdz
ICYgU1dQX05PU0laRSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIG1fbGF5
ZXJSZW5kZXJlci0+cmVzaXplKCk7CisgICAgICAgICAgICBXS0NBQ0ZMYXllciogcm9vdExheWVy
ID0gbV9yb290Q2hpbGQtPnJvb3RMYXllcigpOworICAgICAgICAgICAgQ0dSZWN0IHJvb3RCb3Vu
ZHMgPSBtX3Jvb3RDaGlsZC0+cm9vdExheWVyKCktPmJvdW5kcygpOworICAgICAgICAgICAgbV9y
b290Q2hpbGQtPnNldEZyYW1lKHJvb3RCb3VuZHMpOworICAgICAgICAgICAgbV9yb290Q2hpbGQt
PnNldE5lZWRzTGF5b3V0KCk7CisgICAgICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNldFNjcm9s
bEZyYW1lKEludFBvaW50KHJvb3RCb3VuZHMub3JpZ2luKSwgSW50U2l6ZShyb290Qm91bmRzLnNp
emUpKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFdNX1BBSU5UOgorICAg
ICAgICBtX2xheWVyUmVuZGVyZXItPnJlbmRlclNvb24oKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBsUmVzdWx0ID0gbV9jbGllbnQtPmZ1bGxz
Y3JlZW5DbGllbnRXbmRQcm9jKGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsKKworICAg
IHJldHVybiBsUmVzdWx0OworfQorCit9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVl
bldpbmRvdy5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIAorICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0IAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUgCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgk0FTIElTlCAKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiAKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiAKKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIAorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiAKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhUGxheWVyUHJp
dmF0ZUZ1bGxzY3JlZW5XaW5kb3dfaAorI2RlZmluZSBNZWRpYVBsYXllclByaXZhdGVGdWxsc2Ny
ZWVuV2luZG93X2gKKworI2luY2x1ZGUgIldLQ0FDRkxheWVyLmgiCisjaW5jbHVkZSAiV0tDQUNG
TGF5ZXJSZW5kZXJlci5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKwordHlwZWRlZiB1bnNp
Z25lZCBXUEFSQU07Cit0eXBlZGVmIGxvbmcgTFBBUkFNOwordHlwZWRlZiBzdHJ1Y3QgSFdORF9f
KiBIV05EOwordHlwZWRlZiBfVzY0IGxvbmcgTE9OR19QVFI7Cit0eXBlZGVmIExPTkdfUFRSIExS
RVNVTFQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRl
RnVsbHNjcmVlbkNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCBMUkVTVUxUIGZ1bGxzY3Jl
ZW5DbGllbnRXbmRQcm9jKEhXTkQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNLCBMUEFSQU0pID0gMDsK
KyAgICB2aXJ0dWFsIEhXTkQgcGFyZW50SFdORCgpID0gMDsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0
dWFsIH5NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50KCkge30gCit9OworCitjbGFz
cyBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93IHsKK3B1YmxpYzoKKyAgICBNZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93KE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3Jl
ZW5DbGllbnQqKTsKKyAgICB2aXJ0dWFsIH5NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2lu
ZG93KCk7CisKKyAgICB2b2lkIGNyZWF0ZVdpbmRvdygpOworICAgIHZvaWQgY2xvc2UoKTsKKyAg
ICAKKyAgICBIV05EIGh3bmQoKSBjb25zdDsKKworICAgIFdLQ0FDRkxheWVyUmVuZGVyZXIqIGxh
eWVyUmVuZGVyZXIoKSBjb25zdDsKKworICAgIFdLQ0FDRkxheWVyKiByb290Q2hpbGRMYXllcigp
IGNvbnN0OworICAgIHZvaWQgc2V0Um9vdENoaWxkTGF5ZXIoUGFzc1JlZlB0cjxXS0NBQ0ZMYXll
cj4pOworCitwcm90ZWN0ZWQ6CisgICAgc3RhdGljIExSRVNVTFQgQ0FMTEJBQ0sgc3RhdGljV25k
UHJvYyhIV05ELCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSwgTFBBUkFNKTsKKyAgICBMUkVTVUxUIHdu
ZFByb2MoSFdORCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0sIExQQVJBTSk7CisKKyAgICBNZWRpYVBs
YXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50KiBtX2NsaWVudDsKKyAgICBPd25QdHI8V0tDQUNG
TGF5ZXJSZW5kZXJlcj4gbV9sYXllclJlbmRlcmVyOworICAgIFJlZlB0cjxXS0NBQ0ZMYXllcj4g
bV9yb290Q2hpbGQ7CisgICAgSFdORCBtX2h3bmQ7Cit9OworCit9CisKKyNlbmRpZgpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1l
VmlzdWFsQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHAJKHJldmlz
aW9uIDYwMDQ4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQ
cml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYg
KzQwLDcgQEAKICNpbmNsdWRlICJRVE1vdmllVGFzay5oIgogI2luY2x1ZGUgIlFUTW92aWVWaXN1
YWxDb250ZXh0LmgiCiAjaW5jbHVkZSAiU2Nyb2xsVmlldy5oIgorI2luY2x1ZGUgIlNldHRpbmdz
LmgiCiAjaW5jbHVkZSAiU29mdExpbmtpbmcuaCIKICNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgi
CiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgpAQCAtMTUwLDcgKzE1MSwxNCBAQCBNZWRpYVBsYXll
clByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
UXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6c3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3QKIHsKKyNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
bV9wbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVyT3duaW5nRG9jdW1lbnQo
KTsgCisgICAgaWYgKGRvY3VtZW50KQorICAgICAgICByZXR1cm4gZG9jdW1lbnQtPnNldHRpbmdz
KCktPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cisj
ZWxzZQogICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBQbGF0Zm9ybU1lZGlhIE1lZGlh
UGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OnBsYXRmb3JtTWVkaWEoKSBjb25z
dApAQCAtNzU2LDE2ICs3NjQsMTYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVW
aXN1YWxDbwogCiAgICAgICAgIFdLQ0FDRkxheWVyKiBsYXllciA9IHN0YXRpY19jYXN0PFdLQ0FD
RkxheWVyKj4obV9xdFZpZGVvTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSk7CiAKLSAgICAgICAgICAg
IGlmICghYnVmZmVyLmxvY2tCYXNlQWRkcmVzcygpKSB7Ci0gICAgICAgICAgICAgICBDRlRpbWVJ
bnRlcnZhbCBpbWFnZVRpbWUgPSBRVE1vdmllVmlzdWFsQ29udGV4dDo6Y3VycmVudEhvc3RUaW1l
KCk7CisgICAgICAgIGlmICghYnVmZmVyLmxvY2tCYXNlQWRkcmVzcygpKSB7CisgICAgICAgICAg
IENGVGltZUludGVydmFsIGltYWdlVGltZSA9IFFUTW92aWVWaXN1YWxDb250ZXh0OjpjdXJyZW50
SG9zdFRpbWUoKTsKIAotICAgICAgICAgICAgICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBDcmVhdGVD
R0ltYWdlRnJvbVBpeGVsQnVmZmVyKGJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgbGF5ZXItPnNl
dENvbnRlbnRzKGltYWdlKTsKLSAgICAgICAgICAgICAgICBDR0ltYWdlUmVsZWFzZShpbWFnZSk7
CisgICAgICAgICAgICBDR0ltYWdlUmVmIGltYWdlID0gQ3JlYXRlQ0dJbWFnZUZyb21QaXhlbEJ1
ZmZlcihidWZmZXIpOworICAgICAgICAgICAgbGF5ZXItPnNldENvbnRlbnRzKGltYWdlKTsKKyAg
ICAgICAgICAgIENHSW1hZ2VSZWxlYXNlKGltYWdlKTsKIAotICAgICAgICAgICAgICAgIGJ1ZmZl
ci51bmxvY2tCYXNlQWRkcmVzcygpOwotICAgICAgICAgICAgICAgIGxheWVyLT5yb290TGF5ZXIo
KS0+c2V0TmVlZHNSZW5kZXIoKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1ZmZlci51
bmxvY2tCYXNlQWRkcmVzcygpOworICAgICAgICAgICAgbGF5ZXItPnJvb3RMYXllcigpLT5zZXRO
ZWVkc1JlbmRlcigpOworICAgICAgICB9CiAgICAgfSBlbHNlCiAjZW5kaWYKICAgICAgICAgbV9w
bGF5ZXItPnJlcGFpbnQoKTsKQEAgLTkzOSw2ICs5NDcsMTIgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVRdWlja1RpbWVWaXN1YWxDbwogI2VuZGlmCiAgICAgLy8gVGhlIGxheWVyIHdpbGwgZ2V0
IGhvb2tlZCB1cCB2aWEgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVyQ29u
ZmlndXJhdGlvbigpLgogI2VuZGlmCisKKyAgICAvLyBmaWxsIHRoZSBuZXdseSBjcmVhdGVkIGxh
eWVyIHdpdGggaW1hZ2UgZGF0YSwgc28gd2UncmUgbm90IGxvb2tpbmcgYXQgCisgICAgLy8gYW4g
ZW1wdHkgbGF5ZXIgdW50aWwgdGhlIG5leHQgdGltZSBhIG5ldyBpbWFnZSBpcyBhdmFpbGFibGUs
IHdoaWNoIGNvdWxkCisgICAgLy8gYmUgYSBsb25nIHRpbWUgaWYgd2UncmUgcGF1c2VkLgorICAg
IGlmIChtX3Zpc3VhbENvbnRleHQpCisgICAgICAgIHJldHJpZXZlQ3VycmVudEltYWdlKCk7CiB9
CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6ZGVzdHJv
eUxheWVyRm9yTW92aWUoKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tD
QUNGTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1dLQ0FDRkxheWVyLmNwcAkocmV2aXNpb24gNjAwNDgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9XS0NBQ0ZMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NCw2ICsxNTQs
NyBAQCBQYXNzUmVmUHRyPFdLQ0FDRkxheWVyPiBXS0NBQ0ZMYXllcjo6Y3JlCiAKIFdLQ0FDRkxh
eWVyOjpXS0NBQ0ZMYXllcihMYXllclR5cGUgdHlwZSkKICAgICA6IG1fbGF5ZXIoQWRvcHRDRiwg
Q0FDRkxheWVyQ3JlYXRlKHRvQ0FDRkxheWVyVHlwZSh0eXBlKSkpCisgICAgLCBtX2xheW91dENs
aWVudCgwKQogICAgICwgbV9uZWVkc0Rpc3BsYXlPbkJvdW5kc0NoYW5nZShmYWxzZSkKIHsKICAg
ICBDQUNGTGF5ZXJTZXRVc2VyRGF0YShsYXllcigpLCB0aGlzKTsKQEAgLTI4NiwxMSArMjg3LDEw
IEBAIHZvaWQgIFdLQ0FDRkxheWVyOjphZG9wdFN1YmxheWVycyhXS0NBQ0YKIHZvaWQgV0tDQUNG
TGF5ZXI6OnJlbW92ZUZyb21TdXBlcmxheWVyKCkKIHsKICAgICBXS0NBQ0ZMYXllciogc3VwZXJs
YXllciA9IHRoaXMtPnN1cGVybGF5ZXIoKTsKLSAgICBpZiAoIXN1cGVybGF5ZXIpCi0gICAgICAg
IHJldHVybjsKLQogICAgIENBQ0ZMYXllclJlbW92ZUZyb21TdXBlcmxheWVyKGxheWVyKCkpOwot
ICAgIHN1cGVybGF5ZXItPnNldE5lZWRzQ29tbWl0KCk7CisKKyAgICBpZiAoc3VwZXJsYXllcikK
KyAgICAgICAgc3VwZXJsYXllci0+c2V0TmVlZHNDb21taXQoKTsKIH0KIAogV0tDQUNGTGF5ZXIq
IFdLQ0FDRkxheWVyOjppbnRlcm5hbFN1YmxheWVyQXRJbmRleChpbnQgaW5kZXgpIGNvbnN0CkBA
IC0zNDMsNiArMzQzLDE5IEBAIHZvaWQgV0tDQUNGTGF5ZXI6OnNldEJvdW5kcyhjb25zdCBDR1Jl
Y3QKICAgICAgICAgc2V0TmVlZHNEaXNwbGF5KCk7CiB9CiAKK3ZvaWQgV0tDQUNGTGF5ZXI6OnNl
dEZyYW1lKGNvbnN0IENHUmVjdCYgcmVjdCkKK3sKKyAgICBDR1JlY3Qgb2xkRnJhbWUgPSBmcmFt
ZSgpOworICAgIGlmIChDR1JlY3RFcXVhbFRvUmVjdChyZWN0LCBvbGRGcmFtZSkpCisgICAgICAg
IHJldHVybjsKKworICAgIENBQ0ZMYXllclNldEZyYW1lKGxheWVyKCksIHJlY3QpOworICAgIHNl
dE5lZWRzQ29tbWl0KCk7CisKKyAgICBpZiAobV9uZWVkc0Rpc3BsYXlPbkJvdW5kc0NoYW5nZSkK
KyAgICAgICAgc2V0TmVlZHNEaXNwbGF5KCk7Cit9CisKIHZvaWQgV0tDQUNGTGF5ZXI6OnNldENv
bnRlbnRzR3Jhdml0eShDb250ZW50c0dyYXZpdHlUeXBlIHR5cGUpCiB7CiAgICAgQ0FDRkxheWVy
U2V0Q29udGVudHNHcmF2aXR5KGxheWVyKCksIHRvQ0FDRkNvbnRlbnRzR3Jhdml0eVR5cGUodHlw
ZSkpOwpAQCAtNDE4LDYgKzQzMSwzMiBAQCB2b2lkIFdLQ0FDRkxheWVyOjppbnRlcm5hbFNldE5l
ZWRzRGlzcGxhCiAgICAgQ0FDRkxheWVyU2V0TmVlZHNEaXNwbGF5KGxheWVyKCksIGRpcnR5UmVj
dCk7CiB9CiAKK3ZvaWQgV0tDQUNGTGF5ZXI6OnNldExheW91dENsaWVudChXS0NBQ0ZMYXllckxh
eW91dENsaWVudCogbGF5b3V0Q2xpZW50KQoreworICAgIGlmIChsYXlvdXRDbGllbnQgPT0gbV9s
YXlvdXRDbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbGF5b3V0Q2xpZW50ID0gbGF5
b3V0Q2xpZW50OworICAgIENBQ0ZMYXllclNldExheW91dENhbGxiYWNrKGxheWVyKCksIG1fbGF5
b3V0Q2xpZW50ID8gJmxheW91dFN1YmxheWVyc1Byb2MgOiAwKTsgICAgCit9CisKK3ZvaWQgV0tD
QUNGTGF5ZXI6OmxheW91dFN1YmxheWVyc1Byb2MoQ0FDRkxheWVyUmVmIGNhTGF5ZXIpIAorewor
ICAgIFdLQ0FDRkxheWVyKiBsYXllciA9IFdLQ0FDRkxheWVyOjpsYXllcihjYUxheWVyKTsKKyAg
ICBpZiAobGF5ZXIgJiYgbGF5ZXItPm1fbGF5b3V0Q2xpZW50KQorICAgICAgICBsYXllci0+bV9s
YXlvdXRDbGllbnQtPmxheW91dFN1YmxheWVyc09mTGF5ZXIobGF5ZXIpOworfQorCitXS0NBQ0ZM
YXllckxheW91dENsaWVudCogV0tDQUNGTGF5ZXI6OmxheW91dENsaWVudCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fbGF5b3V0Q2xpZW50OworfQorCit2b2lkIFdLQ0FDRkxheWVyOjpzZXROZWVk
c0xheW91dCgpCit7CisgICAgQ0FDRkxheWVyU2V0TmVlZHNMYXlvdXQobGF5ZXIoKSk7Cit9CisK
ICNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgdm9pZCBwcmludEluZGVudChpbnQgaW5kZW50KQogewpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNGTGF5ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllci5oCShyZXZp
c2lvbiA2MDA0OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDggKzQ0LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgV0tDQUNGQW5pbWF0aW9uOwotY2xhc3MgV0tDQUNGVGltaW5nRnVuY3Rpb247
CitjbGFzcyBXS0NBQ0ZMYXllcjsKKworY2xhc3MgV0tDQUNGTGF5ZXJMYXlvdXRDbGllbnQgewor
cHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRTdWJsYXllcnNPZkxheWVyKFdLQ0FDRkxh
eWVyKikgPSAwOworfTsKIAogY2xhc3MgV0tDQUNGTGF5ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxX
S0NBQ0ZMYXllcj4gewogcHVibGljOgpAQCAtNjMsNiArNjcsMTAgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIGRyYXdJbkNvbnRleHQoUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqKSB7IH0K
IAorICAgIHZpcnR1YWwgdm9pZCBzZXRMYXlvdXRDbGllbnQoV0tDQUNGTGF5ZXJMYXlvdXRDbGll
bnQqKTsKKyAgICB2aXJ0dWFsIFdLQ0FDRkxheWVyTGF5b3V0Q2xpZW50KiBsYXlvdXRDbGllbnQo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNMYXlvdXQoKTsKKwogICAgIHZvaWQg
c2V0TmVlZHNEaXNwbGF5KGNvbnN0IENHUmVjdCogZGlydHlSZWN0ID0gMCkKICAgICB7CiAgICAg
ICAgIGludGVybmFsU2V0TmVlZHNEaXNwbGF5KGRpcnR5UmVjdCk7CkBAIC0xNzMsNiArMTgxLDkg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0RmlsdGVycyhDRkFycmF5UmVmIGZpbHRlcnMpIHsgQ0FD
RkxheWVyU2V0RmlsdGVycyhsYXllcigpLCBmaWx0ZXJzKTsgc2V0TmVlZHNDb21taXQoKTsgfQog
ICAgIENGQXJyYXlSZWYgZmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIENBQ0ZMYXllckdldEZpbHRl
cnMobGF5ZXIoKSk7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFtZShjb25zdCBDR1JlY3Qm
KTsKKyAgICBDR1JlY3QgZnJhbWUoKSBjb25zdCB7IHJldHVybiBDQUNGTGF5ZXJHZXRGcmFtZShs
YXllcigpKTsgfQorCiAgICAgdm9pZCBzZXRIaWRkZW4oYm9vbCBoaWRkZW4pIHsgQ0FDRkxheWVy
U2V0SGlkZGVuKGxheWVyKCksIGhpZGRlbik7IHNldE5lZWRzQ29tbWl0KCk7IH0KICAgICBib29s
IGlzSGlkZGVuKCkgY29uc3QgeyByZXR1cm4gQ0FDRkxheWVySXNIaWRkZW4obGF5ZXIoKSk7IH0K
IApAQCAtMjYwLDggKzI3MSwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwcmludExheWVyKGlu
dCBpbmRlbnQpIGNvbnN0OwogI2VuZGlmCiAKKyAgICBzdGF0aWMgdm9pZCBsYXlvdXRTdWJsYXll
cnNQcm9jKENBQ0ZMYXllclJlZik7CisKIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPENBQ0ZMYXll
clJlZj4gbV9sYXllcjsKKyAgICBXS0NBQ0ZMYXllckxheW91dENsaWVudCogbV9sYXlvdXRDbGll
bnQ7CiAgICAgYm9vbCBtX25lZWRzRGlzcGxheU9uQm91bmRzQ2hhbmdlOwogfTsKIApJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV2ViVGlsZWRMYXllci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV2ViVGlsZWRMYXllci5jcHAJKHJl
dmlzaW9uIDYwMDQ4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV2ViVGlsZWRM
YXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDE1IEBAIHZvaWQgV2ViVGlsZWRM
YXllcjo6c2V0Qm91bmRzKGNvbnN0IENHUmUKICAgICB1cGRhdGVUaWxlcygpOwogfQogCit2b2lk
IFdlYlRpbGVkTGF5ZXI6OnNldEZyYW1lKGNvbnN0IENHUmVjdCYgcmVjdCkKK3sKKyAgICBpZiAo
Q0dSZWN0RXF1YWxUb1JlY3QocmVjdCwgZnJhbWUoKSkpCisgICAgICAgIHJldHVybjsKKworICAg
IFdlYkxheWVyOjpzZXRGcmFtZShyZWN0KTsKKyAgICB1cGRhdGVUaWxlcygpOworfQorCiB2b2lk
IFdlYlRpbGVkTGF5ZXI6OmludGVybmFsU2V0TmVlZHNEaXNwbGF5KGNvbnN0IENHUmVjdCogZGly
dHlSZWN0KQogewogICAgIC8vIEZJWE1FOiBPbmx5IHNldE5lZWRzRGlzcGxheSBmb3IgdGlsZXMg
dGhhdCBhcmUgY3VycmVudGx5IHZpc2libGUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL1dlYlRpbGVkTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9XZWJUaWxlZExheWVyLmgJKHJldmlzaW9uIDYwMDQ4KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vV2ViVGlsZWRMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw2ICszOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJUaWxlZExheWVyKCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Qm91bmRzKGNvbnN0IENHUmVjdCYpOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRGcmFtZShjb25zdCBDR1JlY3QmKTsKIAogcHJvdGVjdGVkOgogICAgIFdlYlRpbGVkTGF5
ZXIoY29uc3QgQ0dTaXplJiB0aWxlU2l6ZSwgR3JhcGhpY3NMYXllciogb3duZXIpOwpJbmRleDog
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDYwMDI3KQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyNSBAQAorMjAxMC0wNS0yMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
dWxsIHNjcmVlbiBkb2Vzbid0IHdvcmsgZm9yIHZpZGVvIGVsZW1lbnRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTU1NworICAgICAgICByZGFyOi8v
cHJvYmxlbS84MDExODEzCisgICAgICAgIAorICAgICAgICBNb2RpZmllZCBGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyIHRvIHdvcmsgd2l0aCBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2lu
ZG93LiAgVGhlIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIKKyAgICAgICAgaXMgbm93IE1lZGlh
UGxheWVyUHJpdmF0ZSBhZ25vc3RpYy4gIFRoZSBuZXcgZnVsbHNjcmVlbiB3aW5kb3cgaXMgbm90
IGEgdG9wbW9zdCB3aW5kb3csIGFuZCBzbyB0aGUgYmVoYXZpb3IgaGFzCisgICAgICAgIGJlZW4g
Y2hhbmdlZCB0byBleGl0IGZ1bGxzY3JlZW4gbW9kZSB3aGVuIHRoZSBhcHBsaWNhdGlvbiBiZWNv
bWVzIGluYWN0aXZlLgorCisgICAgICAgICogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpMYXlvdXRDbGllbnQ6OkxheW91
dENsaWVudCk6ICAKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheW91dENs
aWVudDo6bGF5b3V0U3VibGF5ZXJzT2ZMYXllcik6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKToKKyAgICAgICAgKEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6On5GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKToKKyAgICAgICAg
KEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpleGl0RnVsbHNjcmVlbik6CisgICAgICAgIChGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpjcmVhdGVIVURXaW5kb3cpOgorICAgICAgICAqIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXIuaDoKKwogMjAxMC0wNS0yMSAgU3RldmUgQmxvY2sgIDxzdGV2
ZWJsb2NrQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpJ
bmRleDogV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2
MDAyNykKKysrIFdlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDEyICszMCwxNiBAQAogI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXIuaCIKIAogI2luY2x1ZGUgIldlYktpdERMTC5oIgorI2luY2x1ZGUgIldlYlZpZXcu
aCIKICNpbmNsdWRlIDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0JpdG1hcEluZm8uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nocm9t
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udFNl
bGVjdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRSdW4uaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1dLQ0FDRkxheWVyLmg+CiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNl
L1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2luY2x1ZGUgPHdpbmRvd3N4Lmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMTY5LDkgKzE3Myw1MyBAQCB2b2lkIEhVRFNsaWRl
cjo6ZHJhZyhjb25zdCBJbnRQb2ludCYgcG9pCiAgICAgbV9idXR0b25Qb3NpdGlvbiA9IG1heCgw
LCBtaW4obV9yZWN0LndpZHRoKCkgLSBtX2J1dHRvblNpemUsIHBvaW50LngoKSAtIG1fZHJhZ1N0
YXJ0T2Zmc2V0KSk7CiB9CiAKK2NsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheW91
dENsaWVudCA6IHB1YmxpYyBXS0NBQ0ZMYXllckxheW91dENsaWVudCB7CitwdWJsaWM6CisgICAg
TGF5b3V0Q2xpZW50KEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIHBhcmVudCk7CisgICAgdm9p
ZCBsYXlvdXRTdWJsYXllcnNPZkxheWVyKFdLQ0FDRkxheWVyKiBsYXllcik7CisKKyAgICBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyKiBtX3BhcmVudDsKK307CisKK0Z1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXI6OkxheW91dENsaWVudDo6TGF5b3V0Q2xpZW50KEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIqIHBhcmVudCkKKyAgICA6IG1fcGFyZW50KHBhcmVudCkKK3sKK30KKwordm9pZCBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpMYXlvdXRDbGllbnQ6OmxheW91dFN1YmxheWVyc09mTGF5
ZXIoV0tDQUNGTGF5ZXIqIGxheWVyKSAKK3sKKyAgICBpZiAobGF5ZXIgIT0gbV9wYXJlbnQtPm1f
cm9vdENoaWxkKSAKKyAgICAgICAgcmV0dXJuOworCisgICAgSFRNTE1lZGlhRWxlbWVudCogbWVk
aWFFbGVtZW50ID0gbV9wYXJlbnQtPm1fbWVkaWFFbGVtZW50LmdldCgpOworICAgIGlmICghbWVk
aWFFbGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBXS0NBQ0ZMYXllciogdmlkZW9MYXll
ciA9IG1lZGlhRWxlbWVudC0+cGxhdGZvcm1MYXllcigpOworICAgIGlmICghdmlkZW9MYXllciB8
fCB2aWRlb0xheWVyLT5zdXBlcmxheWVyKCkgIT0gbGF5ZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEZsb2F0UG9pbnQgdmlkZW9BbmNob3IgPSB2aWRlb0xheWVyLT5hbmNob3JQb2ludCgpOwor
ICAgIEZsb2F0UmVjdCBsYXllckJvdW5kcyA9IGxheWVyLT5ib3VuZHMoKTsKKworICAgIEZsb2F0
U2l6ZSB2aWRlb1NpemUgPSBtZWRpYUVsZW1lbnQtPnBsYXllcigpLT5uYXR1cmFsU2l6ZSgpOwor
ICAgIGZsb2F0IHNjYWxlRmFjdG9yOworICAgIGlmICh2aWRlb1NpemUuYXNwZWN0UmF0aW8oKSA+
IGxheWVyQm91bmRzLnNpemUoKS5hc3BlY3RSYXRpbygpKQorICAgICAgICBzY2FsZUZhY3RvciA9
IGxheWVyQm91bmRzLndpZHRoKCkgLyB2aWRlb1NpemUud2lkdGgoKTsKKyAgICBlbHNlCisgICAg
ICAgIHNjYWxlRmFjdG9yID0gbGF5ZXJCb3VuZHMuaGVpZ2h0KCkgLyB2aWRlb1NpemUuaGVpZ2h0
KCk7CisgICAgdmlkZW9TaXplLnNjYWxlKHNjYWxlRmFjdG9yKTsKKworICAgIC8vIENhbGN1bGF0
ZSB0aGUgY2VudGVyZWQgcG9zaXRpb24gYmFzZWQgb24gdGhlIHZpZGVvQW5jaG9yLCB2aWRlb0Jv
dW5kcywgYW5kIGxheWVyQm91bmRzOgorICAgIEZsb2F0UG9pbnQgdmlkZW9Qb3NpdGlvbjsKKyAg
ICBGbG9hdFBvaW50IHZpZGVvT3JpZ2luOworICAgIHZpZGVvT3JpZ2luLnNldFgoKGxheWVyQm91
bmRzLndpZHRoKCkgLSB2aWRlb1NpemUud2lkdGgoKSkgKiAwLjUpOworICAgIHZpZGVvT3JpZ2lu
LnNldFkoKGxheWVyQm91bmRzLmhlaWdodCgpIC0gdmlkZW9TaXplLmhlaWdodCgpKSAqIDAuNSk7
CisgICAgdmlkZW9MYXllci0+c2V0RnJhbWUoRmxvYXRSZWN0KHZpZGVvT3JpZ2luLCB2aWRlb1Np
emUpKTsKK30KKwogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6RnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcigpCiAgICAgOiBtX2h1ZFdpbmRvdygwKQotICAgICwgbV92aWRlb1dpbmRvdygwKQog
ICAgICwgbV9wbGF5UGF1c2VCdXR0b24oSFVEQnV0dG9uOjpQbGF5UGF1c2VCdXR0b24sIEludFBv
aW50KCh3aW5kb3dXaWR0aCAtIGJ1dHRvblNpemUpIC8gMiwgbWFyZ2luVG9wKSkKICAgICAsIG1f
dGltZVNsaWRlckJ1dHRvbihIVURCdXR0b246OlRpbWVTbGlkZXJCdXR0b24sIEludFBvaW50KDAs
IDApKQogICAgICwgbV92b2x1bWVVcEJ1dHRvbihIVURCdXR0b246OlZvbHVtZVVwQnV0dG9uLCBJ
bnRQb2ludChtYXJnaW4gKyBidXR0b25NaW5pU2l6ZSArIHZvbHVtZVNsaWRlcldpZHRoICsgYnV0
dG9uTWluaVNpemUgLyAyLCBtYXJnaW5Ub3AgKyAoYnV0dG9uU2l6ZSAtIGJ1dHRvbk1pbmlTaXpl
KSAvIDIpKQpAQCAtMTgzLDI1ICsyMzEsMjAgQEAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6
RnVsbHNjcmVlblZpZAogICAgICwgbV9oaXRXaWRnZXQoMCkKICAgICAsIG1fbW92aW5nV2luZG93
KGZhbHNlKQogICAgICwgbV90aW1lcih0aGlzLCAmRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6
dGltZXJGaXJlZCkKKyAgICAsIG1fcm9vdENoaWxkKFdLQ0FDRkxheWVyOjpjcmVhdGUoV0tDQUNG
TGF5ZXI6OkxheWVyKSkKKyAgICAsIG1fbGF5b3V0Q2xpZW50KG5ldyBMYXlvdXRDbGllbnQodGhp
cykpCiB7CisgICAgbV9yb290Q2hpbGQtPnNldExheW91dENsaWVudChtX2xheW91dENsaWVudC5n
ZXQoKSk7CiB9CiAKIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6On5GdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyKCkKIHsKLSAgICBpZiAobW92aWUoKSkKLSAgICAgICAgbW92aWUoKS0+ZXhpdEZ1
bGxzY3JlZW4oKTsKLX0KLQotUVRNb3ZpZUdXb3JsZCogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
cjo6bW92aWUoKSBjb25zdAotewotICAgIGlmICghbV9tZWRpYUVsZW1lbnQpCi0gICAgICAgIHJl
dHVybiAwOwotCi0gICAgUGxhdGZvcm1NZWRpYSBwbGF0Zm9ybU1lZGlhID0gbV9tZWRpYUVsZW1l
bnQtPnBsYXRmb3JtTWVkaWEoKTsKLSAgICBpZiAocGxhdGZvcm1NZWRpYS50eXBlICE9IFBsYXRm
b3JtTWVkaWE6OlFUTW92aWVHV29ybGRUeXBlKQotICAgICAgICByZXR1cm4gMDsKKyAgICBtX3Jv
b3RDaGlsZC0+c2V0TGF5b3V0Q2xpZW50KDApOwogCi0gICAgcmV0dXJuIHBsYXRmb3JtTWVkaWEu
bWVkaWEucXRNb3ZpZUdXb3JsZDsKKyAgICBpZiAobV9mdWxsc2NyZWVuV2luZG93KSB7CisgICAg
ICAgIG1fZnVsbHNjcmVlbldpbmRvdy0+Y2xvc2UoKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuV2lu
ZG93ID0gMDsKKyAgICB9CiB9CiAKIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6c2V0
TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKQEAgLTIxOCwxMyAr
MjYxLDE4IEBAIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6c2V0TWVkaWEKIAogdm9p
ZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjplbnRlckZ1bGxzY3JlZW4oKQogewotICAgIGlm
ICghbW92aWUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV92aWRlb1dpbmRvdyA9IG1vdmll
KCktPmVudGVyRnVsbHNjcmVlbih0aGlzKTsKKyAgICBpZiAoIW1fZnVsbHNjcmVlbldpbmRvdykg
eworICAgICAgICBtX2Z1bGxzY3JlZW5XaW5kb3cgPSBuZXcgTWVkaWFQbGF5ZXJQcml2YXRlRnVs
bHNjcmVlbldpbmRvdyh0aGlzKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuV2luZG93LT5jcmVhdGVX
aW5kb3coKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuV2luZG93LT5zZXRSb290Q2hpbGRMYXllciht
X3Jvb3RDaGlsZCk7CisgICAgfQogCisgICAgV0tDQUNGTGF5ZXIqIHZpZGVvTGF5ZXIgPSBtX21l
ZGlhRWxlbWVudC0+cGxheWVyKCktPnBsYXRmb3JtTGF5ZXIoKTsKKyAgICBtX3Jvb3RDaGlsZC0+
YWRkU3VibGF5ZXIodmlkZW9MYXllcik7CisgICAgbV9yb290Q2hpbGQtPnNldE5lZWRzTGF5b3V0
KCk7CisgICAgCiAgICAgUkVDVCB3aW5kb3dSZWN0OwotICAgIEdldENsaWVudFJlY3QobV92aWRl
b1dpbmRvdywgJndpbmRvd1JlY3QpOworICAgIEdldENsaWVudFJlY3QobV9mdWxsc2NyZWVuV2lu
ZG93LT5od25kKCksICZ3aW5kb3dSZWN0KTsKICAgICBtX2Z1bGxzY3JlZW5TaXplLnNldFdpZHRo
KHdpbmRvd1JlY3QucmlnaHQgLSB3aW5kb3dSZWN0LmxlZnQpOwogICAgIG1fZnVsbHNjcmVlblNp
emUuc2V0SGVpZ2h0KHdpbmRvd1JlY3QuYm90dG9tIC0gd2luZG93UmVjdC50b3ApOwogCkBAIC0y
MzMsMTMgKzI4MSwyOCBAQCB2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVudGVyRnVs
CiAKIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZXhpdEZ1bGxzY3JlZW4oKQogewot
ICAgIFNldFdpbmRvd0xvbmdQdHIobV9odWRXaW5kb3csIDAsIDApOwotICAgIGlmIChtb3ZpZSgp
KQotICAgICAgICBtb3ZpZSgpLT5leGl0RnVsbHNjcmVlbigpOwotCi0gICAgQVNTRVJUKCFJc1dp
bmRvdyhtX2h1ZFdpbmRvdykpOwotICAgIG1fdmlkZW9XaW5kb3cgPSAwOwotICAgIG1faHVkV2lu
ZG93ID0gMDsKKyAgICBpZiAobV9mdWxsc2NyZWVuV2luZG93KSB7CisgICAgICAgIG1fZnVsbHNj
cmVlbldpbmRvdy0+Y2xvc2UoKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuV2luZG93LT5zZXRSb290
Q2hpbGRMYXllcigwKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuV2luZG93ID0gMDsKKyAgICB9CisK
KyAgICBpZiAobV9odWRXaW5kb3cpIHsKKyAgICAgICAgU2V0V2luZG93TG9uZ1B0cihtX2h1ZFdp
bmRvdywgMCwgMCk7CisgICAgICAgIDo6RGVzdHJveVdpbmRvdyhtX2h1ZFdpbmRvdyk7CisgICAg
ICAgIG1faHVkV2luZG93ID0gMDsKKyAgICB9CisKKyAgICAvLyBXZSBwcmV2aW91c2x5IHJpcHBl
ZCB0aGUgbWVkaWFFbGVtZW50J3MgcGxhdGZvcm0gbGF5ZXIgb3V0CisgICAgLy8gb2YgaXQncyBv
cmdpbmlhbCBsYXllciB0cmVlIHRvIGRpc3BsYXkgaXQgaW4gb3VyIGZ1bGxzY3JlZW4KKyAgICAv
LyB3aW5kb3cuICBOb3csIHdlIG5lZWQgdG8gZ2V0IHRoZSBsYXllciBiYWNrIGluIGl0cyBvcmln
aW5hbAorICAgIC8vIHRyZWUuCisgICAgLy8gCisgICAgLy8gQXMgYSBzaWRlIGVmZmVjdCBvZiBz
ZXR0aW5nIHRoZSBwbGF5ZXIgdG8gaW52aXNpYmxlL3Zpc2libGUsCisgICAgLy8gdGhlIHBsYXll
cidzIGxheWVyIHdpbGwgYmUgcmVjcmVhdGVkLCBhbmQgd2lsbCBiZSBwaWNrZWQgdXAgCisgICAg
Ly8gdGhlIG5leHQgdGltZSB0aGUgbGF5ZXIgdHJlZSBpcyBzeW5jaGVkLgorICAgIG1fbWVkaWFF
bGVtZW50LT5wbGF5ZXIoKS0+c2V0VmlzaWJsZSgwKTsKKyAgICBtX21lZGlhRWxlbWVudC0+cGxh
eWVyKCktPnNldFZpc2libGUoMSk7CiB9CiAKIGJvb2wgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
cjo6Y2FuUGxheSgpIGNvbnN0CkBAIC0zMTcsMTEgKzM4MCwyNSBAQCBMUkVTVUxUIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OmZ1bGxzCiAgICAgY2FzZSBXTV9MQlVUVE9OVVA6CiAgICAgICAg
IG9uTW91c2VVcChJbnRQb2ludChHRVRfWF9MUEFSQU0obFBhcmFtKSwgR0VUX1lfTFBBUkFNKGxQ
YXJhbSkpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXTV9BQ1RJVkFURUFQUDoKKyAgICAg
ICAgaWYgKCF3UGFyYW0pCisgICAgICAgICAgICBtX21lZGlhRWxlbWVudC0+ZXhpdEZ1bGxzY3Jl
ZW4oKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgcmV0dXJuIERlZldpbmRvd1Byb2Mo
d25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7CiB9CiAKK0hXTkQgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6cGFyZW50SFdORCgpCit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50KSB7Cisg
ICAgICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBraXQobV9tZWRpYUVsZW1lbnQtPmRvY3VtZW50KCkt
PnBhZ2UoKSk7CisgICAgICAgIGlmICh3ZWJWaWV3KQorICAgICAgICAgICAgcmV0dXJuIHdlYlZp
ZXctPnRvcExldmVsUGFyZW50KCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCiBzdGF0aWMg
Y29uc3QgTFBDV1NUUiBmdWxsc2NyZWVuVmlkZWVvSFVEV2luZG93Q2xhc3NOYW1lID0gTCJmdWxs
c2NyZWVuVmlkZWVvSFVEV2luZG93Q2xhc3MiOwogCiB2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXI6OnJlZ2lzdGVySFVEV2luZG93Q2xhc3MoKQpAQCAtMzY0LDcgKzQ0MSw3IEBAIHZvaWQg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Y3JlYXRlSFUKICAgICAKICAgICAvLyBEaXJ0eSB0
aGUgd2luZG93IHNvIHRoZSBIVUQgZHJhd3MKICAgICBSRUNUIGNsZWFyUmVjdCA9IHsgbV9odWRQ
b3NpdGlvbi54KCksIG1faHVkUG9zaXRpb24ueSgpLCBtX2h1ZFBvc2l0aW9uLngoKSArIHdpbmRv
d1dpZHRoLCBtX2h1ZFBvc2l0aW9uLnkoKSArIHdpbmRvd0hlaWdodCB9OwotICAgIEludmFsaWRh
dGVSZWN0KG1fdmlkZW9XaW5kb3csICZjbGVhclJlY3QsIHRydWUpOworICAgIEludmFsaWRhdGVS
ZWN0KG1fZnVsbHNjcmVlbldpbmRvdy0+aHduZCgpLCAmY2xlYXJSZWN0LCB0cnVlKTsKIAogICAg
IG1fcGxheVBhdXNlQnV0dG9uLnNldFNob3dBbHRCdXR0b24oIWNhblBsYXkoKSk7CiAgICAgbV92
b2x1bWVTbGlkZXIuc2V0VmFsdWUodm9sdW1lKCkpOwpAQCAtMzc3LDcgKzQ1NCw3IEBAIHZvaWQg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Y3JlYXRlSFUKIAogICAgIG1faHVkV2luZG93ID0g
Q3JlYXRlV2luZG93RXgoV1NfRVhfTEFZRVJFRCB8IFdTX0VYX1RSQU5TUEFSRU5UIHwgV1NfRVhf
VE9PTFdJTkRPVywgCiAgICAgICAgIGZ1bGxzY3JlZW5WaWRlZW9IVURXaW5kb3dDbGFzc05hbWUs
IDAsIFdTX1BPUFVQIHwgV1NfVklTSUJMRSwKLSAgICAgICAgbV9odWRQb3NpdGlvbi54KCksIG1f
aHVkUG9zaXRpb24ueSgpLCAwLCAwLCBtX3ZpZGVvV2luZG93LCAwLCBnSW5zdGFuY2UsIDApOwor
ICAgICAgICBtX2h1ZFBvc2l0aW9uLngoKSwgbV9odWRQb3NpdGlvbi55KCksIDAsIDAsIG1fZnVs
bHNjcmVlbldpbmRvdy0+aHduZCgpLCAwLCBnSW5zdGFuY2UsIDApOwogICAgIEFTU0VSVCg6Oklz
V2luZG93KG1faHVkV2luZG93KSk7CiAgICAgU2V0V2luZG93TG9uZ1B0cihtX2h1ZFdpbmRvdywg
MCwgcmVpbnRlcnByZXRfY2FzdDxMT05HX1BUUj4odGhpcykpOwogCkluZGV4OiBXZWJLaXQvd2lu
L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0Z1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaAkocmV2aXNpb24gNjAwMjcpCisrKyBXZWJLaXQvd2lu
L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgs
NyBAQAogCiAjaWYgRU5BQkxFKFZJREVPKQogCi0jaW5jbHVkZSAiUVRNb3ZpZUdXb3JsZC5oIgor
I2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaCIKIAogI2luY2x1
ZGUgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2Uu
aD4KQEAgLTM4LDYgKzM4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhp
Y3NDb250ZXh0OworY2xhc3MgV0tDQUNGTGF5ZXI7CiB9CiAKIGNsYXNzIEhVRFdpZGdldCB7CkBA
IC05OSw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIGludCBtX2RyYWdTdGFydE9mZnNldDsKIH07
CiAKLWNsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIgOiBRVE1vdmllR1dvcmxkRnVsbHNj
cmVlbkNsaWVudCwgcHVibGljIE5vbmNvcHlhYmxlIHsKK2NsYXNzIEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXIgOiBXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50LCBw
dWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgogICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIoKTsKICAgICB2aXJ0dWFsIH5GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCk7CkBAIC0xMTEs
MTIgKzExMiwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBleGl0RnVsbHNjcmVlbigpOwogCiBwcml2
YXRlOgotICAgIC8vIFFUTW92aWVHV29ybGRGdWxsc2NyZWVuQ2xpZW50CisgICAgLy8gTWVkaWFQ
bGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvd0NsaWVudAogICAgIHZpcnR1YWwgTFJFU1VMVCBm
dWxsc2NyZWVuQ2xpZW50V25kUHJvYyhIV05ELCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSwgTFBBUkFN
KTsKKyAgICB2aXJ0dWFsIEhXTkQgcGFyZW50SFdORCgpOwogCiAgICAgdm9pZCBlbnN1cmVXaW5k
b3coKTsKLSAgICBRVE1vdmllR1dvcmxkKiBtb3ZpZSgpIGNvbnN0OwotCisgICAgCiAgICAgYm9v
bCBjYW5QbGF5KCkgY29uc3Q7CiAgICAgdm9pZCBwbGF5KCk7CiAgICAgdm9pZCBwYXVzZSgpOwpA
QCAtMTQ4LDEwICsxNDksMTYgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50PiBtX21lZGlhRWxlbWVudDsKIAotICAgIEhXTkQgbV9odWRXaW5kb3csIG1f
dmlkZW9XaW5kb3c7CisgICAgSFdORCBtX2h1ZFdpbmRvdzsKICAgICBPd25QdHI8SEJJVE1BUD4g
bV9iaXRtYXA7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2Z1bGxzY3JlZW5TaXplOwogICAgIFdl
YkNvcmU6OkludFBvaW50IG1faHVkUG9zaXRpb247CisgICAgT3duUHRyPFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c+IG1fZnVsbHNjcmVlbldpbmRvdzsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6V0tDQUNGTGF5ZXI+IG1fcm9vdENoaWxkOworCisgICAgY2xhc3MgTGF5
b3V0Q2xpZW50OworICAgIGZyaWVuZCBjbGFzcyBMYXlvdXRDbGllbnQ7CisgICAgT3duUHRyPExh
eW91dENsaWVudD4gbV9sYXlvdXRDbGllbnQ7CiAKICAgICBIVURCdXR0b24gbV9wbGF5UGF1c2VC
dXR0b247CiAgICAgSFVEQnV0dG9uIG1fdGltZVNsaWRlckJ1dHRvbjsKSW5kZXg6IFdlYktpdExp
YnJhcmllcy93aW4vaW5jbHVkZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50
ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0TGlicmFyaWVzL3dpbi9pbmNsdWRlL1dlYktp
dFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaAkocmV2aXNpb24gNjAwMjcp
CisrKyBXZWJLaXRMaWJyYXJpZXMvd2luL2luY2x1ZGUvV2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dl
YktpdFN5c3RlbUludGVyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCwxNCBAQCB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMKiBDRlVSTFJlZjsKIHR5cGVkZWYgc3RydWN0IF9D
RlVSTFByb3RlY3Rpb25TcGFjZSogQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWY7CiB0eXBlZGVmIHN0
cnVjdCB0YWdMT0dGT05UVyBMT0dGT05UVzsKIHR5cGVkZWYgTE9HRk9OVFcgTE9HRk9OVDsKK3R5
cGVkZWYgc3RydWN0IF9DQUNGTGF5ZXIgKkNBQ0ZMYXllclJlZjsKK3R5cGVkZWYgc3RydWN0IF9f
Q1ZCdWZmZXIgKkNWQnVmZmVyUmVmOwordHlwZWRlZiBDVkJ1ZmZlclJlZiBDVkltYWdlQnVmZmVy
UmVmOwordHlwZWRlZiBDVkltYWdlQnVmZmVyUmVmIENWUGl4ZWxCdWZmZXJSZWY7Cit0eXBlZGVm
IHN0cnVjdCBfQ0FJbWFnZVF1ZXVlICpDQUltYWdlUXVldWVSZWY7Cit0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgQ0ZUeXBlSUQ7CisKK2NsYXNzIFdLQ0FJbWFnZVF1ZXVlOwogCiB2b2lkIHdrU2V0Rm9u
dFNtb290aGluZ0xldmVsKGludCB0eXBlKTsKIGludCB3a0dldEZvbnRTbW9vdGhpbmdMZXZlbCgp
OwpAQCAtODksNCArOTcsNDcgQEAgQ0ZVUkxDcmVkZW50aWFsUmVmIHdrQ29weUNyZWRlbnRpYWxG
cm9tQwogCiBDRlN0cmluZ1JlZiB3a0NGTmV0d29ya0Vycm9yR2V0TG9jYWxpemVkRGVzY3JpcHRp
b24oQ0ZJbmRleCBlcnJvckNvZGUpOwogCisKK2VudW0gd2tDQUltYWdlUXVldWVGbGFncworewor
ICBrV0tDQUltYWdlUXVldWVBc3luYwkJPSAxVSA8PCAwLAorICBrV0tDQUltYWdlUXVldWVGaWxs
CQk9IDFVIDw8IDEsCisgIGtXS0NBSW1hZ2VRdWV1ZVByb3RlY3RlZAk9IDFVIDw8IDIsCisgIGtX
S0NBSW1hZ2VRdWV1ZVVzZUNsZWFuQXBlcnR1cmUJPSAxVSA8PCAzLAorICBrV0tDQUltYWdlUXVl
dWVVc2VBc3BlY3RSYXRpbwk9IDFVIDw8IDQsCisgIGtXS0NBSW1hZ2VRdWV1ZUxvd1F1YWxpdHlD
b2xvcgk9IDFVIDw8IDUsCit9OworCitlbnVtIHdrV0tDQUltYWdlUXVldWVJbWFnZVR5cGUKK3sK
KyAga1dLQ0FJbWFnZVF1ZXVlTmlsID0gMSwKKyAga1dLQ0FJbWFnZVF1ZXVlU3VyZmFjZSwKKyAg
a1dLQ0FJbWFnZVF1ZXVlQnVmZmVyLAorICBrV0tDQUltYWdlUXVldWVJT1N1cmZhY2UsCit9Owor
CitlbnVtIHdrV0tDQUltYWdlUXVldWVJbWFnZUZsYWdzCit7CisgIGtXS0NBSW1hZ2VRdWV1ZU9w
YXF1ZQk9IDFVIDw8IDAsCisgIGtXS0NBSW1hZ2VRdWV1ZUZsdXNoCT0gMVUgPDwgMSwKKyAga1dL
Q0FJbWFnZVF1ZXVlV2lsbEZsdXNoID0gMVUgPDwgMiwKKyAga1dLQ0FJbWFnZVF1ZXVlRmxpcHBl
ZAk9IDFVIDw8IDMsCisgIGtXS0NBSW1hZ2VRdWV1ZVdhaXRHUFUJPSAxVSA8PCA0LAorfTsKKwor
dHlwZWRlZiB2b2lkICgqd2tDQUltYWdlUXVldWVSZWxlYXNlQ2FsbGJhY2spICh1bnNpZ25lZCBp
bnQgdHlwZSwgdWludDY0X3QgaWQsIHZvaWQgKmluZm8pOworQ0FJbWFnZVF1ZXVlUmVmIHdrQ0FJ
bWFnZVF1ZXVlQ3JlYXRlICh1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCB1aW50MzJf
dCBjYXBhY2l0eSk7Cit2b2lkIHdrQ0FJbWFnZVF1ZXVlU2V0U2l6ZShDQUltYWdlUXVldWVSZWYg
aXEsIHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQpOwordWludDMyX3Qgd2tDQUltYWdl
UXVldWVHZXRXaWR0aChDQUltYWdlUXVldWVSZWYgaXEpOwordWludDMyX3Qgd2tDQUltYWdlUXVl
dWVHZXRIZWlnaHQoQ0FJbWFnZVF1ZXVlUmVmIGlxKTsKK3VpbnQzMl90IHdrQ0FJbWFnZVF1ZXVl
R2V0Q2FwYWNpdHkoQ0FJbWFnZVF1ZXVlUmVmIGlxKTsKK3ZvaWQgd2tDQUltYWdlUXVldWVJbnZh
bGlkYXRlIChDQUltYWdlUXVldWVSZWYgaXEpOwordm9pZCB3a0NBSW1hZ2VRdWV1ZUZsdXNoIChD
QUltYWdlUXVldWVSZWYgaXEpOworc2l6ZV90IHdrQ0FJbWFnZVF1ZXVlQ29sbGVjdCAoQ0FJbWFn
ZVF1ZXVlUmVmIGlxKTsKK2Jvb2wgd2tDQUltYWdlUXVldWVJbnNlcnRJbWFnZSAoQ0FJbWFnZVF1
ZXVlUmVmIGlxLCBDRlRpbWVJbnRlcnZhbCB0LCB1bnNpZ25lZCBpbnQgdHlwZSwgdWludDY0X3Qg
aWQsIHVpbnQzMl90IGZsYWdzLCB3a0NBSW1hZ2VRdWV1ZVJlbGVhc2VDYWxsYmFjayByZWxlYXNl
LCB2b2lkICppbmZvKTsKK3VpbnQ2NF90IHdrQ0FJbWFnZVF1ZXVlUmVnaXN0ZXJQaXhlbEJ1ZmZl
ciAoQ0FJbWFnZVF1ZXVlUmVmIGlxLCB2b2lkICpkYXRhLCBzaXplX3QgZGF0YV9zaXplLCBzaXpl
X3Qgcm93Ynl0ZXMsIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgT1NUeXBlIHBpeGVsX2Zv
cm1hdCwgQ0ZEaWN0aW9uYXJ5UmVmIGF0dGFjaG1lbnRzLCB1aW50MzJfdCBmbGFncyk7Cit2b2lk
IHdrQ0FJbWFnZVF1ZXVlU2V0RmxhZ3MgKENBSW1hZ2VRdWV1ZVJlZiBpcSwgdWludDMyX3QgbWFz
aywgdWludDMyX3QgZmxhZ3MpOwordWludDMyX3Qgd2tDQUltYWdlUXVldWVHZXRGbGFncyAoQ0FJ
bWFnZVF1ZXVlUmVmIGlxKTsKK0NGVHlwZUlEIHdrQ0FJbWFnZVF1ZXVlR2V0VHlwZUlEICh2b2lk
KTsKKwogI2VuZGlmIC8vIFdlYktpdFN5c3RlbUludGVyZmFjZV9oCkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biA2MDAyOCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIxIEBACisyMDEwLTA1LTIyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZ1bGwgc2Ny
ZWVuIGRvZXNuJ3Qgd29yayBmb3IgdmlkZW8gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NTU3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVt
LzgwMTE4MTMKKworICAgICAgICBSZS1lbmFibGVkIGZ1bGxzY3JlZW4gc3VwcG9ydCBvbiB3aW5k
b3dzLCBhbmQgbW9kaWZpZWQgdGVzdHMgdG8gbWF0Y2guCisKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vbWVkaWEvY29udHJvbHMtYWZ0ZXItcmVsb2FkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBw
bGF0Zm9ybS93aW4vbWVkaWEvY29udHJvbHMtZHJhZy10aW1lYmFyLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vbWVkaWEvY29udHJvbHMtc3RyaWN0LWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vbWVkaWEvY29udHJvbHMtc3R5bGluZy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogcGxhdGZvcm0vd2luL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXJlbmRlcmlu
Zy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vd2luL21lZGlhL3ZpZGVvLWRpc3Bs
YXktdG9nZ2xlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vbWVkaWEvdmlk
ZW8tbm8tYXVkaW8tZXhwZWN0ZWQudHh0OgorCiAyMDEwLTA1LTIyICBNYWNpZWogU3RhY2hvd2lh
ayAgPG1qc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4K
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1hZnRlci1yZWxv
YWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9t
ZWRpYS9jb250cm9scy1hZnRlci1yZWxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MDAyNykK
KysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1hZnRlci1yZWxvYWQt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNyw5ICsxNywxMCBAQCBsYXllciBhdCAo
OCw0Mikgc2l6ZSAzMjB4MjQwCiBsYXllciBhdCAoOCwyNjYpIHNpemUgMzIweDE2CiAgIFJlbmRl
ckZsZXhpYmxlQm94IChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCwyMjQpIHNpemUgMzIweDE2CiAg
ICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAxNngxNgotICAgIFJlbmRlckZs
ZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI1NngxNgotICAgICAgUmVuZGVyU2xpZGVy
IHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNTZ4MTYKKyAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElW
fSBhdCAoMTYsMCkgc2l6ZSAyNDB4MTYKKyAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgw
LDApIHNpemUgMjQweDE2CiAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDEpIHNpemUg
MTN4MTQKKyAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjU2LDApIHNpemUgMTZ4MTYKICAg
ICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjcyLDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJC
dXR0b24ge0lOUFVUfSBhdCAoMjg4LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lO
UFVUfSBhdCAoMzA0LDApIHNpemUgMTZ4MTYKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9tZWRpYS9jb250cm9scy1kcmFnLXRpbWViYXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1kcmFnLXRpbWViYXItZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiA2MDAyNykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9t
ZWRpYS9jb250cm9scy1kcmFnLXRpbWViYXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC00LDEwICs0LDEwIEBAIFJVTih2aWRlby5hdXRvcGxheSA9IHRydWUpCiBSVU4odmlkZW8uc3Jj
ID0gJ2NvbnRlbnQvdGVzdC5tcDQnKQogRVZFTlQocGxheWluZykKIEVWRU5UKHNlZWtlZCkKLVRp
bWU6IDIuMQorVGltZTogMi4zCiBFVkVOVChzZWVrZWQpCi1UaW1lOiAyLjYKK1RpbWU6IDIuOAog
RVZFTlQoc2Vla2VkKQotVGltZTogMy4xCitUaW1lOiAzLjQKIEVORCBPRiBURVNUCiAKSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1zdHJpY3QtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9s
cy1zdHJpY3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MDAyNykKKysrIExheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1zdHJpY3QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xNyw5ICsxNywxMCBAQCBsYXllciBhdCAoOCw1MCkgc2l6ZSAzMjB4MjQwCiBsYXll
ciBhdCAoOCwyNzQpIHNpemUgMzIweDE2CiAgIFJlbmRlckZsZXhpYmxlQm94IChwb3NpdGlvbmVk
KSB7RElWfSBhdCAoMCwyMjQpIHNpemUgMzIweDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0g
YXQgKDAsMCkgc2l6ZSAxNngxNgotICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiww
KSBzaXplIDI1NngxNgotICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAy
NTZ4MTYKKyAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNDB4MTYK
KyAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjQweDE2CiAgICAgICAg
IFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDEpIHNpemUgMTN4MTQKKyAgICBSZW5kZXJCdXR0b24g
e0lOUFVUfSBhdCAoMjU2LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBh
dCAoMjcyLDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjg4LDAp
IHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzA0LDApIHNpemUgMTZ4
MTYKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1zdHlsaW5n
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVk
aWEvY29udHJvbHMtc3R5bGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYwMDI3KQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLXN0eWxpbmctZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0yMSw5ICsyMSwxMCBAQCBsYXllciBhdCAoMTgsNDIpIHNpemUg
MzIweDI0MAogbGF5ZXIgYXQgKDE4LDI2Nikgc2l6ZSAzMjB4MTYKICAgUmVuZGVyRmxleGlibGVC
b3ggKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDIyNCkgc2l6ZSAzMjB4MTYKICAgICBSZW5kZXJC
dXR0b24ge0lOUFVUfSBhdCAoMCwwKSBzaXplIDE2eDE2Ci0gICAgUmVuZGVyRmxleGlibGVCb3gg
e0RJVn0gYXQgKDE2LDApIHNpemUgMjU2eDE2Ci0gICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBh
dCAoMCwwKSBzaXplIDI1NngxNgorICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiww
KSBzaXplIDI0MHgxNgorICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAy
NDB4MTYKICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMSkgc2l6ZSAxM3gxNAorICAg
IFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNTYsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1
dHRvbiB7SU5QVVR9IGF0ICgyNzIsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5Q
VVR9IGF0ICgyODgsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgz
MDQsMCkgc2l6ZSAxNngxNgpAQCAtMzIsOSArMzMsMTAgQEAgbGF5ZXIgYXQgKDgsMjgyKSBzaXpl
IDMyMHgyNDAKIGxheWVyIGF0ICg4LDUwNikgc2l6ZSAzMjB4MTYKICAgUmVuZGVyRmxleGlibGVC
b3ggKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDIyNCkgc2l6ZSAzMjB4MTYKICAgICBSZW5kZXJC
dXR0b24ge0lOUFVUfSBhdCAoMCwwKSBzaXplIDE2eDE2Ci0gICAgUmVuZGVyRmxleGlibGVCb3gg
e0RJVn0gYXQgKDE2LDApIHNpemUgMjU2eDE2Ci0gICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBh
dCAoMCwwKSBzaXplIDI1NngxNgorICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiww
KSBzaXplIDI0MHgxNgorICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAy
NDB4MTYKICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMSkgc2l6ZSAxM3gxNAorICAg
IFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNTYsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1
dHRvbiB7SU5QVVR9IGF0ICgyNzIsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5Q
VVR9IGF0ICgyODgsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgz
MDQsMCkgc2l6ZSAxNngxNgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL3Zp
ZGVvLWNvbnRyb2xzLXJlbmRlcmluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXJlbmRlcmluZy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDYwMDI3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlh
L3ZpZGVvLWNvbnRyb2xzLXJlbmRlcmluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTIwLDkgKzIwLDEwIEBAIGxheWVyIGF0ICg4LDQyKSBzaXplIDMyMHgyNDAKIGxheWVyIGF0ICg4
LDI2Nikgc2l6ZSAzMjB4MTYKICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtESVZ9
IGF0ICgwLDIyNCkgc2l6ZSAzMjB4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMCww
KSBzaXplIDE2eDE2Ci0gICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUg
MjU2eDE2Ci0gICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI1NngxNgor
ICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI0MHgxNgorICAgICAg
UmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNDB4MTYKICAgICAgICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDIsMSkgc2l6ZSAxM3gxNAorICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9
IGF0ICgyNTYsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNzIs
MCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODgsMCkgc2l6ZSAx
NngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMDQsMCkgc2l6ZSAxNngxNgpAQCAt
MzEsOSArMzIsMTAgQEAgbGF5ZXIgYXQgKDgsMjgyKSBzaXplIDMyMHgyNDAKIGxheWVyIGF0ICg4
LDUwNikgc2l6ZSAzMjB4MTYKICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtESVZ9
IGF0ICgwLDIyNCkgc2l6ZSAzMjB4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMCww
KSBzaXplIDE2eDE2Ci0gICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUg
MjU2eDE2Ci0gICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI1NngxNgor
ICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI0MHgxNgorICAgICAg
UmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNDB4MTYKICAgICAgICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDIsMSkgc2l6ZSAxM3gxNAorICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9
IGF0ICgyNTYsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNzIs
MCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODgsMCkgc2l6ZSAx
NngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMDQsMCkgc2l6ZSAxNngxNgpAQCAt
NDQsOSArNDYsMTAgQEAgbGF5ZXIgYXQgKDgsNTIyKSBzaXplIDMyMHgyNDAKIGxheWVyIGF0ICg4
LDc0Nikgc2l6ZSAzMjB4MTYKICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtESVZ9
IGF0ICgwLDIyNCkgc2l6ZSAzMjB4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMCww
KSBzaXplIDE2eDE2Ci0gICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUg
MjU2eDE2Ci0gICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI1NngxNgor
ICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI0MHgxNgorICAgICAg
UmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNDB4MTYKICAgICAgICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDIsMSkgc2l6ZSAxM3gxNAorICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9
IGF0ICgyNTYsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNzIs
MCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODgsMCkgc2l6ZSAx
NngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMDQsMCkgc2l6ZSAxNngxNgpJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL3ZpZGVvLWRpc3BsYXktdG9nZ2xlLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEv
dmlkZW8tZGlzcGxheS10b2dnbGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MDAyNykKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS92aWRlby1kaXNwbGF5LXRvZ2dsZS1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE2LDkgKzE2LDEwIEBAIGxheWVyIGF0ICg4LDI2KSBz
aXplIDMyMHgyNDAKIGxheWVyIGF0ICg4LDI1MCkgc2l6ZSAzMjB4MTYKICAgUmVuZGVyRmxleGli
bGVCb3ggKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDIyNCkgc2l6ZSAzMjB4MTYKICAgICBSZW5k
ZXJCdXR0b24ge0lOUFVUfSBhdCAoMCwwKSBzaXplIDE2eDE2Ci0gICAgUmVuZGVyRmxleGlibGVC
b3gge0RJVn0gYXQgKDE2LDApIHNpemUgMjU2eDE2Ci0gICAgICBSZW5kZXJTbGlkZXIge0lOUFVU
fSBhdCAoMCwwKSBzaXplIDI1NngxNgorICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgx
NiwwKSBzaXplIDI0MHgxNgorICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6
ZSAyNDB4MTYKICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMSkgc2l6ZSAxM3gxNAor
ICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNTYsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRl
ckJ1dHRvbiB7SU5QVVR9IGF0ICgyNzIsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7
SU5QVVR9IGF0ICgyODgsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0
ICgzMDQsMCkgc2l6ZSAxNngxNgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlh
L3ZpZGVvLW5vLWF1ZGlvLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS93aW4vbWVkaWEvdmlkZW8tbm8tYXVkaW8tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2
MDAyNykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS92aWRlby1uby1hdWRpby1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE3LDggKzE3LDkgQEAgbGF5ZXIgYXQgKDgs
NDIpIHNpemUgMzUyeDI4OAogbGF5ZXIgYXQgKDgsMzE0KSBzaXplIDM1MngxNgogICBSZW5kZXJG
bGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMjcyKSBzaXplIDM1MngxNgogICAg
IFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUgMTZ4MTYKLSAgICBSZW5kZXJGbGV4
aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAzMDR4MTYKLSAgICAgIFJlbmRlclNsaWRlciB7
SU5QVVR9IGF0ICgwLDApIHNpemUgMzA0eDE2CisgICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0g
YXQgKDE2LDApIHNpemUgMjg4eDE2CisgICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCww
KSBzaXplIDI4OHgxNgogICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiwxKSBzaXplIDEz
eDE0CisgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMwNCwwKSBzaXplIDE2eDE2CiAgICAg
UmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMyMCwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0
dG9uIHtJTlBVVH0gYXQgKDMzNiwwKSBzaXplIDE2eDE2CkluZGV4OiBXZWJLaXRMaWJyYXJpZXMv
d2luL2xpYi9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UubGliCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3Bs
YXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNh
dGlvbi9vY3RldC1zdHJlYW0KCklUeGhjbU5vUGdvdklDQWdJQ0FnSUNBZ0lDQWdJQ0FnTVRJM05E
WTNOamt3TUNBZ0lDQWdJQ0FnSUNBZ0lDQWdNQ0FnSUNBZ0lDQXkKT1RBMklDQWdJQ0FnWUFvQUFB
QTVBQUFYVmdBQUYxWUFBQmRXQUFBWFZnQUFGMVlBQUJkV0FBQVhWZ0FBRjFZQUFCZFdBQUFYVmdB
QQpGMVlBQUJkV0FBQVhWZ0FBRjFZQUFCZFdBQUFYVmdBQUYxWUFBQmRXQUFBWFZnQUFGMVlBQUJk
V0FBQVhWZ0FBRjFZQUFCZFdBQUFYClZnQUFGMVlBQUJkV0FBQVhWZ0FBRjFZQUFCZFdBQUFYVmdB
QUYxWUFBQmRXQUFBWFZnQUFGMVlBQUJkV0FBQVhWZ0FBRjFZQUFCZFcKQUFBWFZnQUFGMVlBQUJk
V0FBQVhWZ0FBRjFZQUFCZFdBQUFYVmdBQUYxWUFBQmRXQUFBWFZnQUFGMVlBQUJkV0FBQVhWZ0FB
RjFZQQpBQmRXQUFBWFZnQUFGMVlBQUJkV1AyWmhZbk5BUUZsQlRVMUFXZ0EvZDJ0RFFVbHRZV2Rs
VVhWbGRXVkRiMnhzWldOMFFFQlpRVWxRClFWVmZRMEZKYldGblpWRjFaWFZsUUVCQVdnQS9kMnRE
UVVsdFlXZGxVWFZsZFdWRGNtVmhkR1ZBUUZsQlVFRlZYME5CU1cxaFoyVlIKZFdWMVpVQkFTVWxK
UUZvQVAzZHJRMEZKYldGblpWRjFaWFZsUm14MWMyaEFRRmxCV0ZCQlZWOURRVWx0WVdkbFVYVmxk
V1ZBUUVCYQpBRDkzYTBOQlNXMWhaMlZSZFdWMVpVZGxkRU5oY0dGamFYUjVRRUJaUVVsUVFWVmZR
MEZKYldGblpWRjFaWFZsUUVCQVdnQS9kMnREClFVbHRZV2RsVVhWbGRXVkhaWFJHYkdGbmMwQkFX
VUZKVUVGVlgwTkJTVzFoWjJWUmRXVjFaVUJBUUZvQVAzZHJRMEZKYldGblpWRjEKWlhWbFIyVjBT
R1ZwWjJoMFFFQlpRVWxRUVZWZlEwRkpiV0ZuWlZGMVpYVmxRRUJBV2dBL2QydERRVWx0WVdkbFVY
VmxkV1ZIWlhSVQplWEJsU1VSQVFGbEJTMWhhQUQ5M2EwTkJTVzFoWjJWUmRXVjFaVWRsZEZkcFpI
Um9RRUJaUVVsUVFWVmZRMEZKYldGblpWRjFaWFZsClFFQkFXZ0EvZDJ0RFFVbHRZV2RsVVhWbGRX
Vkpibk5sY25SSmJXRm5aVUJBV1VGZlRsQkJWVjlEUVVsdFlXZGxVWFZsZFdWQVFFNUoKWDB0SlVE
WkJXRWt4VUVGWVFGb3lRRm9BUDNkclEwRkpiV0ZuWlZGMVpYVmxTVzUyWVd4cFpHRjBaVUJBV1VG
WVVFRlZYME5CU1cxaApaMlZSZFdWMVpVQkFRRm9BUDNkclEwRkpiV0ZuWlZGMVpYVmxVbVZuYVhO
MFpYSlFhWGhsYkVKMVptWmxja0JBV1VGZlMxQkJWVjlEClFVbHRZV2RsVVhWbGRXVkFRRkJCV0Vs
SlNVbEpVRUpWWDE5RFJrUnBZM1JwYjI1aGNubEFRRWxBV2dBL2QydERRVWx0WVdkbFVYVmwKZFdW
VFpYUkdiR0ZuYzBCQVdVRllVRUZWWDBOQlNXMWhaMlZSZFdWMVpVQkFTVWxBV2dBL2QydERRVWx0
WVdkbFVYVmxkV1ZUWlhSVAphWHBsUUVCWlFWaFFRVlZmUTBGSmJXRm5aVkYxWlhWbFFFQkpTVUJh
QUQ5M2EwTkdUbVYwZDI5eWEwVnljbTl5UjJWMFRHOWpZV3hwCmVtVmtSR1Z6WTNKcGNIUnBiMjVB
UUZsQlVFSlZYMTlEUmxOMGNtbHVaMEJBU2tCYUFEOTNhME5HVlZKTVVtVnhkV1Z6ZEVOdmNIbEkK
VkZSUVVtVnhkV1Z6ZEVKdlpIbFFZWEowYzBCQVdVRlFRbFZmWDBOR1FYSnlZWGxBUUZCQ1ZWOURS
bFZTVEZKbGNYVmxjM1JBUUVCYQpBRDkzYTBOR1ZWSk1VbVZ4ZFdWemRGTmxkRWhVVkZCU1pYRjFa
WE4wUW05a2VWQmhjblJ6UUVCWlFWaFFRVlZmUTBaVlVreFNaWEYxClpYTjBRRUJRUWxWZlgwTkdR
WEp5WVhsQVFFQmFBRDkzYTBOdmNIbERUMDVPUlVOVVVISnZlSGxTWlhOd2IyNXpaVUJBV1VGUVFW
VmYKWDBOR1NGUlVVRTFsYzNOaFoyVkFRRkJCVlY5ZlEwWlNaV0ZrVTNSeVpXRnRRRUJRUWxWZlgw
TkdWVkpNUUVCQVdnQS9kMnREYjNCNQpRM0psWkdWdWRHbGhiRVp5YjIxRFJsQmxjbk5wYzNSbGJu
UlRkRzl5WVdkbFFFQlpRVkJCVlY5RFJsVlNURU55WldSbGJuUnBZV3hBClFGQkJWVjlEUmxWU1RG
QnliM1JsWTNScGIyNVRjR0ZqWlVCQVFGb0FQM2RyUTI5d2VVWnZkVzVrWVhScGIyNURZV05vWlVS
cGNtVmoKZEc5eWVVQkFXVUZRUWxWZlgwTkdVM1J5YVc1blFFQllXZ0EvZDJ0RWNtRjNSbTlqZFhO
U2FXNW5RRUJaUVZoUVFWVkRSME52Ym5SbAplSFJBUUZCQlZVTkhRMjlzYjNKQVFFMUFXZ0EvZDJ0
SFpYUkVaV1poZFd4MFNGUlVVRU52YjJ0cFpWTjBiM0poWjJWQVFGbEJVRUZWClQzQmhjWFZsUTBa
SVZGUlFRMjl2YTJsbFUzUnZjbUZuWlVCQVdGb0FQM2RyUjJWMFJtOXVkRk50YjI5MGFHbHVaME52
Ym5SeVlYTjAKUUVCWlFVMVlXZ0EvZDJ0SFpYUkdiMjUwVTIxdmIzUm9hVzVuVEdWMlpXeEFRRmxC
U0ZoYUFEOTNhMGRsZEVkc2VYQm9RV1IyWVc1agpaWE5BUUZsQldGQkJWVU5IUm05dWRFQkFRVUpW
UTBkQlptWnBibVZVY21GdWMyWnZjbTFBUUY5T01rZEJRVlZEUjFOcGVtVkFRRUJhCkFEOTNhMGRs
ZEVkc2VYQm9jMEJBV1VGWVVFRlZRMGRHYjI1MFFFQlJRbDlYVVVGSFNVQmFBRDkzYTBkbGRGTlRU
RU5sY25ScFptbGoKWVhSbFNXNW1iMEJBV1VGUVFsVmZYME5HUkdsamRHbHZibUZ5ZVVCQVVFRlZY
ME5HVlZKTVVtVnpjRzl1YzJWQVFFQmFBRDkzYTBkbApkRk5UVEZCbFpYSkRaWEowYVdacFkyRjBa
VVJoZEdGQVFGbEJVRUZZVUVKVlgxOURSa1JwWTNScGIyNWhjbmxBUUVCYUFEOTNhMGRsCmRGVnpa
WEpVYjBKaGMyVkRWRTFBUUZsQlAwRlZRMGRCWm1acGJtVlVjbUZ1YzJadmNtMUFRRkJCVlVOSFEy
OXVkR1Y0ZEVCQVFGb0EKUDNkclNXNXBkR2xoYkdsNlpVMWhlR2x0ZFcxSVZGUlFRMjl1Ym1WamRH
bHZia052ZFc1MFVHVnlTRzl6ZEVCQVdVRkpTVUJhQUQ5MwphMUpsYzNSdmNtVkdiMjUwVTIxdmIz
Um9hVzVuVTNSNWJHVkFRRmxCV0ZCQlZVTkhRMjl1ZEdWNGRFQkFTVUJhQUQ5M2ExTmxkRU5HClZW
Sk1VbVZ4ZFdWemRGTm9iM1ZzWkVOdmJuUmxiblJUYm1sbVprQkFXVUZZVUVGVlgwTkdWVkpNVW1W
eGRXVnpkRUJBWDA1QVdnQS8KZDJ0VFpYUkRSME52Ym5SbGVIUkdiMjUwVW1WdVpHVnlhVzVuVTNS
NWJHVkFRRmxCV0ZCQlZVTkhRMjl1ZEdWNGRFQkFYMDR4TVVCYQpBRDkzYTFObGRFTlBUazVGUTFS
UWNtOTRlVUYxZEdodmNtbDZZWFJwYjI1R2IzSlRkSEpsWVcxQVFGbEJXRkJCVlY5ZlEwWlNaV0Zr
ClUzUnlaV0Z0UUVCUVFsVmZYME5HVTNSeWFXNW5RRUJBV2dBL2QydFRaWFJEVDA1T1JVTlVVSEp2
ZUhsR2IzSlRkSEpsWVcxQVFGbEIKV0ZCQlZWOWZRMFpTWldGa1UzUnlaV0Z0UUVCUVFsVmZYME5H
VTNSeWFXNW5RRUJRUWxWZlgwTkdUblZ0WW1WeVFFQkFXZ0EvZDJ0VApaWFJEYkdsbGJuUkRaWEow
YVdacFkyRjBaVWx1VTFOTVVISnZjR1Z5ZEdsbGMwQkFXVUZZVUVGVlgxOURSa1JwWTNScGIyNWhj
bmxBClFGQkNWVjlmUTBaRVlYUmhRRUJBV2dBL2QydFRaWFJHYjI1MFUyMXZiM1JvYVc1blEyOXVk
SEpoYzNSQVFGbEJXRTFBV2dBL2QydFQKWlhSR2IyNTBVMjF2YjNSb2FXNW5UR1YyWld4QVFGbEJX
RWhBV2dBL2QydFRaWFJHYjI1MFUyMXZiM1JvYVc1blUzUjViR1ZBUUZsQgpTVkJCVlVOSFEyOXVk
R1Y0ZEVCQVgwNUFXZ0EvZDJ0VFpYUlFZWFIwWlhKdVFtRnpaVU5VVFVCQVdVRllVRUZWUTBkRGIy
NTBaWGgwClFFQlZRMGRCWm1acGJtVlVjbUZ1YzJadmNtMUFRRUJhQUQ5M2ExTmxkRkJoZEhSbGNt
NVFhR0Z6WlVsdVZYTmxjbE53WVdObFFFQloKUVZoUVFWVkRSME52Ym5SbGVIUkFRRlZEUjFCdmFX
NTBRRUJBV2dBL2QydFRaWFJWY0VadmJuUkRZV05vWlVCQVdVRllTVUJhQUQ5MwphMU41YzNSbGJV
WnZiblJUYlc5dmRHaHBibWREYUdGdVoyVmtRRUJaUVZoWVdnQmZYM0psWVd4QU1EQXdNREF3TURB
QVgxOXlaV0ZzClFEQXdNREF3TURBd01EQXdNREF3TURBQVgxOXlaV0ZzUURObU9EQXdNREF3QUY5
ZmNtVmhiRUF6Wm1JNU9UazVPV0V3TURBd01EQXcKQUY5ZmNtVmhiRUF6Wm1Vd01EQXdNREF3TURB
d01EQXdBRjlmY21WaGJFQXpabVl3TURBd01EQXdNREF3TURBd0FGOWZjbVZoYkVBMApNREF3TURB
d01BQmZYM0psWVd4QU5EQXdNalkyTmpZMk1EQXdNREF3TUFCZlgzSmxZV3hBTkRBMlptVXdNREF3
TURBd01EQXdNQUJmClgzSmxZV3hBTkRBNFpqUXdNREF3TURBd01EQXdNQUJmWDNKbFlXeEFZbVpt
TURBd01EQXdNREF3TURBd01BQmZZMlZwYkdZQVgyWmgKWW5ObUFGOXdiM2RtQUM4Z0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0F4TWpjME5qYzJPVEF3SUNBZ0lDQWdJQ0FnSUNBZ0lDQXdJQ0FnSUNBZwpJREk0
TURBZ0lDQWdJQ0JnQ2dFQUFBQldGd0FBT1FBQUFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFB
UUFCQUFFQUFRQUJBQUVBCkFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFB
UUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUIKQUFFQUFRQUJBQUVBQVFBQkFBRUFB
UUFCQUFFQUFRQUJBRDltWVdKelFFQlpRVTFOUUZvQVAzZHJRMEZKYldGblpWRjFaWFZsUTI5cwpi
R1ZqZEVCQVdVRkpVRUZWWDBOQlNXMWhaMlZSZFdWMVpVQkFRRm9BUDNkclEwRkpiV0ZuWlZGMVpY
VmxRM0psWVhSbFFFQlpRVkJCClZWOURRVWx0WVdkbFVYVmxkV1ZBUUVsSlNVQmFBRDkzYTBOQlNX
MWhaMlZSZFdWMVpVWnNkWE5vUUVCWlFWaFFRVlZmUTBGSmJXRm4KWlZGMVpYVmxRRUJBV2dBL2Qy
dERRVWx0WVdkbFVYVmxkV1ZIWlhSRFlYQmhZMmwwZVVCQVdVRkpVRUZWWDBOQlNXMWhaMlZSZFdW
MQpaVUJBUUZvQVAzZHJRMEZKYldGblpWRjFaWFZsUjJWMFJteGhaM05BUUZsQlNWQkJWVjlEUVVs
dFlXZGxVWFZsZFdWQVFFQmFBRDkzCmEwTkJTVzFoWjJWUmRXVjFaVWRsZEVobGFXZG9kRUJBV1VG
SlVFRlZYME5CU1cxaFoyVlJkV1YxWlVCQVFGb0FQM2RyUTBGSmJXRm4KWlZGMVpYVmxSMlYwVkhs
d1pVbEVRRUJaUVV0WVdnQS9kMnREUVVsdFlXZGxVWFZsZFdWSFpYUlhhV1IwYUVCQVdVRkpVRUZW
WDBOQgpTVzFoWjJWUmRXVjFaVUJBUUZvQVAzZHJRMEZKYldGblpWRjFaWFZsU1c1elpYSjBTVzFo
WjJWQVFGbEJYMDVRUVZWZlEwRkpiV0ZuClpWRjFaWFZsUUVCT1NWOUxTVkEyUVZoSk1WQkJXRUJh
TWtCYUFEOTNhME5CU1cxaFoyVlJkV1YxWlVsdWRtRnNhV1JoZEdWQVFGbEIKV0ZCQlZWOURRVWx0
WVdkbFVYVmxkV1ZBUUVCYUFEOTNhME5CU1cxaFoyVlJkV1YxWlZKbFoybHpkR1Z5VUdsNFpXeENk
V1ptWlhKQQpRRmxCWDB0UVFWVmZRMEZKYldGblpWRjFaWFZsUUVCUVFWaEpTVWxKU1ZCQ1ZWOWZR
MFpFYVdOMGFXOXVZWEo1UUVCSlFGb0FQM2RyClEwRkpiV0ZuWlZGMVpYVmxVMlYwUm14aFozTkFR
RmxCV0ZCQlZWOURRVWx0WVdkbFVYVmxkV1ZBUUVsSlFGb0FQM2RyUTBGSmJXRm4KWlZGMVpYVmxV
MlYwVTJsNlpVQkFXVUZZVUVGVlgwTkJTVzFoWjJWUmRXVjFaVUJBU1VsQVdnQS9kMnREUms1bGRI
ZHZjbXRGY25Kdgpja2RsZEV4dlkyRnNhWHBsWkVSbGMyTnlhWEIwYVc5dVFFQlpRVkJDVlY5ZlEw
WlRkSEpwYm1kQVFFcEFXZ0EvZDJ0RFJsVlNURkpsCmNYVmxjM1JEYjNCNVNGUlVVRkpsY1hWbGMz
UkNiMlI1VUdGeWRITkFRRmxCVUVKVlgxOURSa0Z5Y21GNVFFQlFRbFZmUTBaVlVreFMKWlhGMVpY
TjBRRUJBV2dBL2QydERSbFZTVEZKbGNYVmxjM1JUWlhSSVZGUlFVbVZ4ZFdWemRFSnZaSGxRWVhK
MGMwQkFXVUZZVUVGVgpYME5HVlZKTVVtVnhkV1Z6ZEVCQVVFSlZYMTlEUmtGeWNtRjVRRUJBV2dB
L2QydERiM0I1UTA5T1RrVkRWRkJ5YjNoNVVtVnpjRzl1CmMyVkFRRmxCVUVGVlgxOURSa2hVVkZC
TlpYTnpZV2RsUUVCUVFWVmZYME5HVW1WaFpGTjBjbVZoYlVCQVVFSlZYMTlEUmxWU1RFQkEKUUZv
QVAzZHJRMjl3ZVVOeVpXUmxiblJwWVd4R2NtOXRRMFpRWlhKemFYTjBaVzUwVTNSdmNtRm5aVUJB
V1VGUVFWVmZRMFpWVWt4RApjbVZrWlc1MGFXRnNRRUJRUVZWZlEwWlZVa3hRY205MFpXTjBhVzl1
VTNCaFkyVkFRRUJhQUQ5M2EwTnZjSGxHYjNWdVpHRjBhVzl1ClEyRmphR1ZFYVhKbFkzUnZjbmxB
UUZsQlVFSlZYMTlEUmxOMGNtbHVaMEJBV0ZvQVAzZHJSSEpoZDBadlkzVnpVbWx1WjBCQVdVRlkK
VUVGVlEwZERiMjUwWlhoMFFFQlFRVlZEUjBOdmJHOXlRRUJOUUZvQVAzZHJSMlYwUkdWbVlYVnNk
RWhVVkZCRGIyOXJhV1ZUZEc5eQpZV2RsUUVCWlFWQkJWVTl3WVhGMVpVTkdTRlJVVUVOdmIydHBa
Vk4wYjNKaFoyVkFRRmhhQUQ5M2EwZGxkRVp2Ym5SVGJXOXZkR2hwCmJtZERiMjUwY21GemRFQkFX
VUZOV0ZvQVAzZHJSMlYwUm05dWRGTnRiMjkwYUdsdVoweGxkbVZzUUVCWlFVaFlXZ0EvZDJ0SFpY
UkgKYkhsd2FFRmtkbUZ1WTJWelFFQlpRVmhRUVZWRFIwWnZiblJBUUVGQ1ZVTkhRV1ptYVc1bFZI
Smhibk5tYjNKdFFFQmZUakpIUVVGVgpRMGRUYVhwbFFFQkFXZ0EvZDJ0SFpYUkhiSGx3YUhOQVFG
bEJXRkJCVlVOSFJtOXVkRUJBVVVKZlYxRkJSMGxBV2dBL2QydEhaWFJUClUweERaWEowYVdacFky
RjBaVWx1Wm05QVFGbEJVRUpWWDE5RFJrUnBZM1JwYjI1aGNubEFRRkJCVlY5RFJsVlNURkpsYzNC
dmJuTmwKUUVCQVdnQS9kMnRIWlhSVFUweFFaV1Z5UTJWeWRHbG1hV05oZEdWRVlYUmhRRUJaUVZC
QldGQkNWVjlmUTBaRWFXTjBhVzl1WVhKNQpRRUJBV2dBL2QydEhaWFJWYzJWeVZHOUNZWE5sUTFS
TlFFQlpRVDlCVlVOSFFXWm1hVzVsVkhKaGJuTm1iM0p0UUVCUVFWVkRSME52CmJuUmxlSFJBUUVC
YUFEOTNhMGx1YVhScFlXeHBlbVZOWVhocGJYVnRTRlJVVUVOdmJtNWxZM1JwYjI1RGIzVnVkRkJs
Y2todmMzUkEKUUZsQlNVbEFXZ0EvZDJ0U1pYTjBiM0psUm05dWRGTnRiMjkwYUdsdVoxTjBlV3hs
UUVCWlFWaFFRVlZEUjBOdmJuUmxlSFJBUUVsQQpXZ0EvZDJ0VFpYUkRSbFZTVEZKbGNYVmxjM1JU
YUc5MWJHUkRiMjUwWlc1MFUyNXBabVpBUUZsQldGQkJWVjlEUmxWU1RGSmxjWFZsCmMzUkFRRjlP
UUZvQVAzZHJVMlYwUTBkRGIyNTBaWGgwUm05dWRGSmxibVJsY21sdVoxTjBlV3hsUUVCWlFWaFFR
VlZEUjBOdmJuUmwKZUhSQVFGOU9NVEZBV2dBL2QydFRaWFJEVDA1T1JVTlVVSEp2ZUhsQmRYUm9i
M0pwZW1GMGFXOXVSbTl5VTNSeVpXRnRRRUJaUVZoUQpRVlZmWDBOR1VtVmhaRk4wY21WaGJVQkFV
RUpWWDE5RFJsTjBjbWx1WjBCQVFGb0FQM2RyVTJWMFEwOU9Ua1ZEVkZCeWIzaDVSbTl5ClUzUnla
V0Z0UUVCWlFWaFFRVlZmWDBOR1VtVmhaRk4wY21WaGJVQkFVRUpWWDE5RFJsTjBjbWx1WjBCQVVF
SlZYMTlEUms1MWJXSmwKY2tCQVFGb0FQM2RyVTJWMFEyeHBaVzUwUTJWeWRHbG1hV05oZEdWSmJs
TlRURkJ5YjNCbGNuUnBaWE5BUUZsQldGQkJWVjlmUTBaRQphV04wYVc5dVlYSjVRRUJRUWxWZlgw
TkdSR0YwWVVCQVFGb0FQM2RyVTJWMFJtOXVkRk50YjI5MGFHbHVaME52Ym5SeVlYTjBRRUJaClFW
aE5RRm9BUDNkclUyVjBSbTl1ZEZOdGIyOTBhR2x1WjB4bGRtVnNRRUJaUVZoSVFGb0FQM2RyVTJW
MFJtOXVkRk50YjI5MGFHbHUKWjFOMGVXeGxRRUJaUVVsUVFWVkRSME52Ym5SbGVIUkFRRjlPUUZv
QVAzZHJVMlYwVUdGMGRHVnlia0poYzJWRFZFMUFRRmxCV0ZCQgpWVU5IUTI5dWRHVjRkRUJBVlVO
SFFXWm1hVzVsVkhKaGJuTm1iM0p0UUVCQVdnQS9kMnRUWlhSUVlYUjBaWEp1VUdoaGMyVkpibFZ6
ClpYSlRjR0ZqWlVCQVdVRllVRUZWUTBkRGIyNTBaWGgwUUVCVlEwZFFiMmx1ZEVCQVFGb0FQM2Ry
VTJWMFZYQkdiMjUwUTJGamFHVkEKUUZsQldFbEFXZ0EvZDJ0VGVYTjBaVzFHYjI1MFUyMXZiM1Jv
YVc1blEyaGhibWRsWkVCQVdVRllXRm9BWDE5eVpXRnNRREF3TURBdwpNREF3QUY5ZmNtVmhiRUF3
TURBd01EQXdNREF3TURBd01EQXdBRjlmY21WaGJFQXpaamd3TURBd01BQmZYM0psWVd4QU0yWmlP
VGs1Ck9UbGhNREF3TURBd01BQmZYM0psWVd4QU0yWmxNREF3TURBd01EQXdNREF3TUFCZlgzSmxZ
V3hBTTJabU1EQXdNREF3TURBd01EQXcKTUFCZlgzSmxZV3hBTkRBd01EQXdNREFBWDE5eVpXRnNR
RFF3TURJMk5qWTJOakF3TURBd01EQUFYMTl5WldGc1FEUXdObVpsTURBdwpNREF3TURBd01EQUFY
MTl5WldGc1FEUXdPR1kwTURBd01EQXdNREF3TURBQVgxOXlaV0ZzUUdKbVpqQXdNREF3TURBd01E
QXdNREFBClgyTmxhV3htQUY5bVlXSnpaZ0JmY0c5M1pnQXZMeUFnSUNBZ0lDQWdJQ0FnSUNBZ01U
STNORFkzTmprd01DQWdJQ0FnSUNBZ0lDQWcKSUNBZ01DQWdJQ0FnSUNBM09TQWdJQ0FnSUNBZ1lB
b3VMbHd1TGx4Q2RXbHNaRnh2WW1wY1YyVmlTMmwwVTNsemRHVnRTVzUwWlhKbQpZV05sWEVSbFlu
Vm5YMGx1ZEdWeWJtRnNYRmRsWWt0cGRGTjVjM1JsYlVsdWRHVnlabUZqWlM1dlltb0FDaTh3SUNB
Z0lDQWdJQ0FnCklDQWdJQ0F4TWpjME5qYzJPVEF3SUNBZ0lDQWdJQ0FnSUNBZ0lDQXhNREEyTmpZ
Z0lEZzJPREUwSUNBZ0lDQmdDa3dCSmdDa0J2cEwKTlNRQkFERUJBQUFBQUFBQUxtUnlaV04wZG1V
QUFBQUFBQUFBQVBZQUFBQUVCZ0FBQUFBQUFBQUFBQUFBQUFBQUFBb1FBQzVrWldKMQpaeVJUQUFB
QUFBQUFBQURreUFBQStnWUFBTjdQQUFBQUFBQUFid0lBQUVBQUVFSXVjbVJoZEdFQUFBQUFBQUFB
QUFBQUJBRUFBRFRvCkFBQUFBQUFBQUFBQUFBQUFBQUJBQURCQUxtUmhkR0VBQUFBQUFBQUFBQUFB
QUF3QUFBQTQ2UUFBQUFBQUFBQUFBQUFBQUFBQVFBQXcKd0M1MFpYaDBBQUFBQUFBQUFBQUFBQUF0
SUFBQVJPa0FBSEVKQVFBQUFBQUFsd0VBQUNBQVVHQXVjblJqSkZSTldnQUFBQUFBQUFBQQpCQUFB
QUZjWkFRQmJHUUVBQUFBQUFBRUFBQUJBRURCQUxuSjBZeVJKVFZvQUFBQUFBQUFBQUFRQUFBQmxH
UUVBYVJrQkFBQUFBQUFCCkFBQUFRQkF3UUM1aWMzTUFBQUFBQUFBQUFBQUFBQUFZQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUlBQU1NQXVjbVJoZEdFQUFBQUEKQUFBQUFBQUFDQUFBQUhNWkFRQUFB
QUFBQUFBQUFBQUFBQUJBRUVCQUxuSmtZWFJoQUFBQUFBQUFBQUFBQUFnQUFBQjdHUUVBQUFBQQpB
QUFBQUFBQUFBQUFRQkJBUUM1eVpHRjBZUUFBQUFBQUFBQUFBQUFJQUFBQWd4a0JBQUFBQUFBQUFB
QUFBQUFBQUVBUVFFQXVjbVJoCmRHRUFBQUFBQUFBQUFBQUFDQUFBQUlzWkFRQUFBQUFBQUFBQUFB
QUFBQUJBRUVCQUxuSmtZWFJoQUFBQUFBQUFBQUFBQUFRQUFBQ1QKR1FFQUFBQUFBQUFBQUFBQUFB
QUFRQkF3UUM1eVpHRjBZUUFBQUFBQUFBQUFBQUFJQUFBQWx4a0JBQUFBQUFBQUFBQUFBQUFBQUVB
UQpRRUF1Y21SaGRHRUFBQUFBQUFBQUFBQUFFQUFBQUo4WkFRQUFBQUFBQUFBQUFBQUFBQUJBRURC
QUxtUmhkR0VBQUFBQUFBQUFBQUFBCkFBUUFBQUN2R1FFQUFBQUFBQUFBQUFBQUFBQUFRQkF3d0M1
a1lYUmhBQUFBQUFBQUFBQUFBQUFFQUFBQXN4a0JBQUFBQUFBQUFBQUEKQUFBQUFFQVFNTUF1ZEdW
NGRBQUFBQUFBQUFBQUFBQUFPUUFBQUxjWkFRRHdHUUVBQUFBQUFBSUFBQUFnRUZCZ0xtUmxZblZu
SkZNQQpBQUFBQUFBQUFNd0FBQUFFR2dFQTBCb0JBQUFBQUFBRkFBQUFRQkFRUWk1MFpYaDBBQUFB
QUFBQUFBQUFBQUFiQUFBQUFoc0JBQjBiCkFRQUFBQUFBQWdBQUFDQVFVR0F1WkdWaWRXY2tVd0FB
QUFBQUFBQUF3QUFBQURFYkFRRHhHd0VBQUFBQUFBVUFBQUJBRUJCQ0xuUmwKZUhRQUFBQUFBQUFB
QUFBQUFEQUFBQUFqSEFFQVV4d0JBQUFBQUFBQ0FBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFB
QURBQUFBQQpaeHdCQUNjZEFRQUFBQUFBQlFBQUFFQVFFRUl1Y21SaGRHRUFBQUFBQUFBQUFBQUFD
QUFBQUZrZEFRQUFBQUFBQUFBQUFBQUFBQUJBCkVFQkFMbkprWVhSaEFBQUFBQUFBQUFBQUFBZ0FB
QUJoSFFFQUFBQUFBQUFBQUFBQUFBQUFRQkJBUUM1eVpHRjBZUUFBQUFBQUFBQUEKQUFBRUFBQUFh
UjBCQUFBQUFBQUFBQUFBQUFBQUFFQVFNRUF1Y21SaGRHRUFBQUFBQUFBQUFBQUFCQUFBQUcwZEFR
QUFBQUFBQUFBQQpBQUFBQUFCQUVEQkFMbkprWVhSaEFBQUFBQUFBQUFBQUFBZ0FBQUJ4SFFFQUFB
QUFBQUFBQUFBQUFBQUFRQkJBUUM1MFpYaDBBQUFBCkFBQUFBQUFBQUFBOEFBQUFlUjBCQUxVZEFR
QUFBQUFBQXdBQUFDQVFVR0F1WkdWaWRXY2tVd0FBQUFBQUFBQUEwQUFBQU5NZEFRQ2oKSGdFQUFB
QUFBQWNBQUFCQUVCQkNMblJsZUhRa2VXTUFBQUFBQUFBQUFDb0FBQURwSGdFQUV4OEJBQUFBQUFB
RkFBQUFJQkJRWUM1awpaV0oxWnlSVEFBQUFBQUFBQUFEc0FBQUFSUjhCQURFZ0FRQUFBQUFBQndB
QUFFQVFFRUl1ZEdWNGRDUjVZd0FBQUFBQUFBQUFLZ0FBCkFIY2dBUUNoSUFFQUFBQUFBQVVBQUFB
Z0VGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFPd0FBQURUSUFFQXZ5RUJBQUFBQUFBSEFBQUEKUUJB
UVFpNTBaWGgwSkhsakFBQUFBQUFBQUFBcUFBQUFCU0lCQUM4aUFRQUFBQUFBQlFBQUFDQVFVR0F1
WkdWaWRXY2tVd0FBQUFBQQpBQUFBL0FBQUFHRWlBUUJkSXdFQUFBQUFBQWNBQUFCQUVCQkNMa05T
VkNSWVExVUFBQUFBQUFBQUFBd0FBQUNqSXdFQXJ5TUJBQUFBCkFBQURBQUFBUUFBd1FDNWtaV0ox
WnlSVUFBQUFBQUFBQUFCb0FBQUF6U01CQUFBQUFBQUFBQUFBQUFBQUFFQUFFRUlnSUNBdmJXRnUK
YVdabGMzUmtaWEJsYm1SbGJtTjVPaUowZVhCbFBTZDNhVzR6TWljZ2JtRnRaVDBuVFdsamNtOXpi
MlowTGxaRE9EQXVSR1ZpZFdkRApVbFFuSUhabGNuTnBiMjQ5SnpndU1DNDFNRGN5Tnk0ME1EVXpK
eUJ3Y205alpYTnpiM0pCY21Ob2FYUmxZM1IxY21VOUozZzROaWNnCmNIVmliR2xqUzJWNVZHOXJa
VzQ5SnpGbVl6aGlNMkk1WVRGbE1UaGxNMkluSWlBdlJFVkdRVlZNVkV4SlFqb2lkWFZwWkM1c2FX
SWkKSUM5RVJVWkJWVXhVVEVsQ09pSjFkV2xrTG14cFlpSWdMMFJGUmtGVlRGUk1TVUk2SWsxVFZr
TlNWQ0lnTDBSRlJrRlZURlJNU1VJNgpJazlNUkU1QlRVVlRJaUFFQUFBQThRQUFBRmdHQUFCaUFB
RVJBQUFBQUVNNlhGQnliMnBsWTNSelhGZGxZa3RwZEZ4Q2RXbHNaRnh2ClltcGNWMlZpUzJsMFUz
bHpkR1Z0U1c1MFpYSm1ZV05sWEVSbFluVm5YMGx1ZEdWeWJtRnNYRmRsWWt0cGRGTjVjM1JsYlVs
dWRHVnkKWm1GalpTNXZZbW9BOGdVV0VRRWdBQUFIQUE0QUFBQW54ZzRBQUFBbnhrMXBZM0p2YzI5
bWRDQW9VaWtnVDNCMGFXMXBlbWx1WnlCRApiMjF3YVd4bGNnQmpkMlFBWXpwY1VISnZhbVZqZEhO
Y1YyVmlTMmwwWEVsdWRHVnlibUZzWEZkbFlrdHBkRk41YzNSbGJVbHVkR1Z5ClptRmpaVmRwYmdC
amJBQkRPbHhFWlhabGJGeE5VMVpUTWpBd05WeFdRMXhpYVc1Y1kyd3VaWGhsQUdOdFpBQXRUMlFn
TFVsRE9seFEKY205cVpXTjBjMXhYWldKTGFYUmNRblZwYkdSY1NXNWpiSFZrWlNBdFNVTTZYRUZ3
Y0d4bFNXNTBaWEp1WVd4Y1NXNWpiSFZrWlNBdApTVU02WEVGd2NHeGxTVzUwWlhKdVlXeGNTVzVq
YkhWa1pWeERiM0psUm05MWJtUmhkR2x2Ymx4UFUxaERiMjF3WVhScFltbHNhWFI1ClNHVmhaR1Z5
Y3lBdFNVTTZYRUZ3Y0d4bFNXNTBaWEp1WVd4Y1NXNWpiSFZrWlZ4RGIzSmxSbTkxYm1SaGRHbHZi
bHhQVTFoRGIyMXcKWVhScFltbHNhWFI1U0dWaFpHVnljMXhIVGxWRGIyMXdZWFJwWW1sc2FYUjVJ
QzFFWDE5WFNVNHpNbDlmSUMxRVYwbE9NeklnTFVSZgpSRVZDVlVjZ0xVUmZURWxDSUMxRVJFVkNW
VWRmU1U1VVJWSk9RVXdnTFVSZlYwbE9SRTlYVXlBdFJGZEpUbFpGVWowd2VEVXdNU0F0ClJGOVhT
VTR6TWw5WFNVNU9WRDB3ZURVd01TQXRSRjlYU1U0ek1sOUpSVDB3ZURZd01DQXRSRjlEVWxSZlUw
VkRWVkpGWDBOUVVGOVAKVmtWU1RFOUJSRjlUVkVGT1JFRlNSRjlPUVUxRlV6MHhJQzFFWDE5UVVr
OUVWVU5VU1U5T1gxODlNQ0F0UkY5SVFWTmZSVmhEUlZCVQpTVTlPVXowd0lDMUVRbFZKVEVSSlRr
ZGZWMlZpUzJsMFUzbHpkR1Z0U1c1MFpYSm1ZV05sSUMxRVgxVk9TVU5QUkVVZ0xVUlZUa2xEClQw
UkZJQzFIYlNBdFVsUkRNU0F0VFVRZ0xVZFNMU0F0Um05RE9seFFjbTlxWldOMGMxeFhaV0pMYVhS
Y1FuVnBiR1JjYjJKcVhGZGwKWWt0cGRGTjVjM1JsYlVsdWRHVnlabUZqWlZ4RVpXSjFaMTlKYm5S
bGNtNWhiRndnTFVaa1F6cGNVSEp2YW1WamRITmNWMlZpUzJsMApYRUoxYVd4a1hHOWlhbHhYWldK
TGFYUlRlWE4wWlcxSmJuUmxjbVpoWTJWY1JHVmlkV2RmU1c1MFpYSnVZV3hjZG1NNE1DNXdaR0ln
CkxWYzBJQzFYV0NBdFl5QXRXbWtnTFZSUUlDMTNaRFF3TVRnZ0xYZGtOREEyT0NBdGQyUTBNRGs1
SUMxM1pEUXhNREFnTFhka05ERXkKTnlBdGQyUTBNVE00SUMxM1pEUXhPREFnTFhka05ERTRPU0F0
ZDJRME1qQXhJQzEzWkRReU5EUWdMWGRrTkRJMU1TQXRkMlEwTWpjMQpJQzEzWkRReU9URWdMWGRr
TkRNd05TQXRkMlEwTXpRMElDMTNaRFF6TlRVZ0xYZGtORE00T1NBdGQyUTBOVEF6SUMxM1pEUTFN
RFVnCkxYZGtORFV4TUNBdGQyUTBOVEV5SUMxM1pEUTJNVEFnTFhka05EY3dOaUF0ZDJRME9EQXdJ
QzEzWkRRNU5URWdMWGRrTkRrMU1pQXQKZDJRME9UazJJQzEzWkRZd01URWdMWGRrTmpBek1TQXRk
MlEyTWpFeElDMTNaRFl5TkRZZ0xYZGtOakkxTlNBdGQyUTJNemczSUMxSApVeUF0Ym05c2IyZHZJ
QzFsY25KdmNuSmxjRzl5ZERwd2NtOXRjSFFnTFVsRE9seEVaWFpsYkZ4TlUxWlRNakF3TlZ4V1Ex
eHBibU5zCmRXUmxJQzFKUXpwY1JHVjJaV3hjVFZOV1V6SXdNRFZjVmtOY1lYUnNiV1pqWEdsdVky
eDFaR1VnTFVsRE9seEVaWFpsYkZ4TlUxWlQKTWpBd05WeFdRMXhRYkdGMFptOXliVk5FUzF4cGJt
TnNkV1JsSUMxSlF6cGNSR1YyWld4Y1RWTldVekl3TURWY1ZrTmNVR3hoZEdadgpjbTFUUkV0Y1ky
OXRiVzl1WEdsdVkyeDFaR1VnTFVsRE9seEVaWFpsYkZ4TlUxWlRNakF3TlZ4VFJFdGNkakl1TUZ4
cGJtTnNkV1JsCklDMUpJa002WEVSbGRtVnNYRTFwWTNKdmMyOW1kQ0JUUkV0elhGZHBibVJ2ZDNO
Y2RqY3VNRnhKYm1Oc2RXUmxJaUF0U1NKRE9seEUKWlhabGJGeE5hV055YjNOdlpuUWdSR2x5WldO
MFdDQlRSRXNnS0VGMVozVnpkQ0F5TURBNUtWeEpibU5zZFdSbElpQXRXQUJ6Y21NQQpMbHhYWldK
TGFYUlRlWE4wWlcxSmJuUmxjbVpoWTJVdVkzQndBSEJrWWdCRE9seFFjbTlxWldOMGMxeFhaV0pM
YVhSY1FuVnBiR1JjCmIySnFYRmRsWWt0cGRGTjVjM1JsYlVsdWRHVnlabUZqWlZ4RVpXSjFaMTlK
Ym5SbGNtNWhiRngyWXpnd0xuQmtZZ0FBOVFBQUFDUUEKQUFBQUFBQUFBQUFBQUpZQUFBQVlBQUFB
QkFBQUFBQUFBQURwTHdBQUhRQUFBQVFBQUFEeEFBQUF1Z0FBQUQwQUVCRUFBQUFBQUFBQQpBQUFB
QUFDV0FBQUFIUUFBQUc0QUFBQzVFZ0FBQUFBQUFBQUFBWGRyVTJWMFJtOXVkRk50YjI5MGFHbHVa
MHhsZG1Wc0FCd0FFaEFZCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUEwQURCRUFB
QUFBQUFBQUFBQUFBQTBBREJFQUFBQUFBQUFBQUFBQUFBMEEKREJFQUFBQUFBQUFBQUFBQUFCQUFD
eEVJQUFBQWRBQUFBR3hsZG1Wc0FCZ0FDeEhzLy8vL3NSRUFBSE50YjI5MGFHbHVaMVI1Y0dVQQpB
Z0FHQUFBQThnQUFBR2dBQUFBQUFBQUFBQUFBQUpZQUFBQzRCUUFBQ2dBQUFGd0FBQUFBQUFBQUxn
QUFnQjBBQUFBd0FBQ0FKQUFBCkFERUFBSUFyQUFBQU1nQUFnRElBQUFBekFBQ0FPUUFBQURZQUFJ
QkZBQUFBTndBQWdFY0FBQUE1QUFDQVZBQUFBRG9BQUlCZEFBQUEKT3dBQWdQVUFBQUFrQUFBQUFB
QUFBQUFBQUFBS0FBQUFBQUFBQUFBQUFBQUFBQUFBNlM4QUFBTUFBQUFFQUFBQThRQUFBR0VBQUFB
OQpBQkFSQUFBQUFBQUFBQUFBQUFBQUNnQUFBQU1BQUFBSUFBQUF1aElBQUFBQUFBQUFBQUYzYTBk
bGRFWnZiblJUYlc5dmRHaHBibWRNClpYWmxiQUFjQUJJUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFDQUFBQ0FBWUFBQUFBOGdBQUFEQUFBQUFBQUFBQUFBQUEKQUFvQUFBQzRCUUFBQXdB
QUFDUUFBQUFBQUFBQVBnQUFnQU1BQUFBL0FBQ0FDQUFBQUVBQUFJRDFBQUFBSkFBQUFBQUFBQUFB
QUFBQQpEZ0FBQUFBQUFBQUVBQUFBQUFBQUFPa3ZBQUFEQUFBQUJBQUFBUEVBQUFCNUFBQUFRQUFR
RVFBQUFBQUFBQUFBQUFBQUFBNEFBQUFECkFBQUFEQUFBQUxzU0FBQUFBQUFBQUFBQmQydFRaWFJH
YjI1MFUyMXZiM1JvYVc1blEyOXVkSEpoYzNRQUhBQVNFQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFB
QUFBQUFBQUFBZ0FBRXdBTEVRZ0FBQUJBQUFBQVkyOXVkSEpoYzNRQUFnQUdBQUFBQVBJQUFBQXdB
QUFBQUFBQQpBQUFBQUFBT0FBQUF1QVVBQUFNQUFBQWtBQUFBQUFBQUFFTUFBSUFEQUFBQVJBQUFn
QXdBQUFCRkFBQ0E5UUFBQUNRQUFBQUFBQUFBCkFBQUFBQXNBQUFBQUFBQUFBQUFBQUFBQUFBRHBM
d0FBQXdBQUFBUUFBQUR4QUFBQVpBQUFBRUFBRUJFQUFBQUFBQUFBQUFBQUFBQUwKQUFBQUF3QUFB
QWtBQUFEdUVRQUFBQUFBQUFBQUFYZHJSMlYwUm05dWRGTnRiMjkwYUdsdVowTnZiblJ5WVhOMEFC
d0FFaEFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFJQUJnRHlBQUFBTUFBQUFB
QUFBQUFBQUFBQUN3QUFBTGdGQUFBREFBQUFKQUFBCkFBQUFBQUJJQUFDQUF3QUFBRWtBQUlBSkFB
QUFTZ0FBZ1BVQUFBQWtBQUFBQUFBQUFBQUFBQUJYQUFBQUFBQUFBQUFBQUFBQUFBQUEKNlM4QUFB
UUFCQUFFQUFBQThRQUFBSVlBQUFCQ0FCQVJBQUFBQUFBQUFBQUFBQUFBVndBQUFBUUFBQUJOQUFB
QStoRUFBQUFBQUFBQQpBQUYzYTFONWMzUmxiVVp2Ym5SVGJXOXZkR2hwYm1kRGFHRnVaMlZrQUJ3
QUVoQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBCkFBSUFBQTRBT1JFUkFBQUFBQUFBQUxN
UkFBQU9BRGtSTGdBQUFBQUFBQUN6RVFBQUFnQUdBQUFBOGdBQUFFZ0FBQUFBQUFBQUFBQUEKQUZj
QUFBQzRCUUFBQmdBQUFEd0FBQUFBQUFBQXBRQUFnQVFBQUFDbUFBQ0FIZ0FBQUtjQUFJQTdBQUFB
cUFBQWdFWUFBQUNwQUFDQQpUUUFBQUtvQUFJRDFBQUFBSkFBQUFBQUFBQUFBQUFBQXZBVUFBUFFB
QUFBQUFBQUFBQUFBQU9rdkFBQWRBQWdBQkFBQUFQRUFBQUJsCkJBQUFOd0FQRVFBQUFBQUFBQUFB
QUFBQUFMd0ZBQUFkQUFBQUVnVUFBTzRSQUFBQUFBQUFBQUFCWTJ4bFlYSlVlWEJsUTI5dWRISmgK
YzNRQUhBQVNFUFFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFnQUFEUUFNRVFBQUFBQUFB
QUFBQUFBQURRQU1FUUFBQUFBQQpBQUFBQUFBQURRQU1FUUFBQUFBQUFBQUFBQUFBRFFBTUVRQUFB
QUFBQUFBQUFBQUFEUUFNRVFBQUFBQUFBQUFBQUFBQURRQU1FUUFBCkFBQUFBQUFBQUFBQURRQU1F
UUFBQUFBQUFBQUFBQUFBRFFBTUVRQUFBQUFBQUFBQUFBQUFGUUFNRWUwUkFBQUFBQUFBQUFCcFpH
VnUKZEdsMGVRQVVBQXNSZlAvLy93TUVBQUJ2YkdSQ2FYUnRZWEFBSGdBTEVmai8vLzhvRUFBQWNt
Vm1aWEpsY201alpVTm9ZWEpoWTNSbApjZ0FUQUFzUjRQLy8vd01FQUFCdmJHUklSazlPVkFBWEFB
c1J5UC8vLytvUkFBQm5iSGx3YUUxbGRISnBZM01BRVFBTEVZai8vLzhnCkJBQUFjR2w0Wld4ekFC
a0FDeEZZLy8vL0lBUUFBSEpsWm1WeVpXNWpaVkJwZUdWc0FCSUFEQkZBQUFBQUFBQUFBQUFBWjJG
dGJXRUEKRXdBTEVlei8vLzkxQUFBQVkyOXVkSEpoYzNRQUVRQUxFWUQvLy8vR0VRQUFZbWwwYldG
d0FCSUFDeEZnLy8vLzV4RUFBR0p0Y0VsdQpabThBRlFBTEVaVC8vLy9rRVFBQVltbDBiV0Z3U1c1
bWJ3QVpBQXdSZFFBQUFBQUFBQUFBQUd4aGMzUkRiMjUwY21GemRBQWVBQXNSClYvLy8veUFBQUFC
M2FHbDBaVkpsWm1WeVpXNWpaVlpoYkhWbEFBMEFDeEhrLy8vL3RSRUFBR1JqQUJVQUF4RUFBQUFB
QUFBQUFNQUMKQUFCQkFnQUFBQUFBREFBTEVWRC8vLzkxQUFBQWFRQVZBQU1SQUFBQUFBQUFBQUNK
QUFBQWNnSUFBQUFBQUF3QUN4Rk0vLy8vZFFBQQpBR29BQWdBR0FCVUFBeEVBQUFBQUFBQUFBSFlC
QUFBSEF3QUFBQUFBRXdBTEVVVC8vLzlBQUFBQWJXbHVSR1ZzZEdFQUhnQUxFVXYvCi8vOGdBQUFB
WW14aFkydFNaV1psY21WdVkyVldZV3gxWlFBVkFBTVJBQUFBQUFBQUFBQUtBUUFBY3dNQUFBQUFB
QXdBQ3hGQS8vLy8KUUFBQUFHY0FGUUFERVFBQUFBQUFBQUFBMkFBQUFLQURBQUFBQUFBUUFBc1JQ
UC8vLzBBQUFBQmtaV3gwWVFBQ0FBWUFBZ0FHQUFJQQpCZ0FDQUFZQURnQTVFVElBQUFBQUFBQUFz
eEVBQUE0QU9SRm1BQUFBQUFBQUFMY1JBQUFPQURrUmVnQUFBQUFBQUFDOUVRQUFEZ0E1CkVZNEFB
QUFBQUFBQXV4RUFBQTRBT1JHMUFBQUFBQUFBQU1RUkFBQU9BRGtSVkFFQUFBQUFBQURNRVFBQURn
QTVFVzRCQUFBQUFBQUEKdXhFQUFBNEFPUkdRQVFBQUFBQUFBTThSQUFBT0FEa1J2Z0VBQUFBQUFB
RFJFUUFBRGdBNUVkTUJBQUFBQUFBQTB4RUFBQTRBT1JIcgpBUUFBQUFBQUFOVVJBQUFPQURrUkFB
SUFBQUFBQUFEVkVRQUFEZ0E1RVNNQ0FBQUFBQUFBM0JFQUFBNEFPUkVWQXdBQUFBQUFBTlVSCkFB
QU9BRGtSTFFNQUFBQUFBQURWRVFBQURnQTVFVkFEQUFBQUFBQUEzQkVBQUE0QU9SR3hCQUFBQUFB
QUFMc1JBQUFPQURrUnlBUUEKQUFBQUFBQzdFUUFBRGdBNUVkc0VBQUFBQUFBQTNoRUFBQTRBT1JI
dUJBQUFBQUFBQU44UkFBQUNBQVlBQUFBQThnQUFBUEFCQUFBQQpBQUFBQUFBQUFMd0ZBQUM0QlFB
QU93QUFBT1FCQUFBQUFBQUFUUUFBZ0IwQUFBQk9BQUNBSXdBQUFGTUFBSUJPQUFBQVZBQUFnRmtB
CkFBQldBQUNBWWdBQUFGZ0FBSUIyQUFBQVdnQUFnSjRBQUFCZUFBQ0F4d0FBQUY4QUFJRDNBQUFB
WWdBQWdQNEFBQUJqQUFDQUJBRUEKQUdRQUFJQUxBUUFBWlFBQWdCSUJBQUJtQUFDQUdRRUFBR2NB
QUlBZ0FRQUFhQUFBZ0NjQkFBQnBBQUNBTFFFQUFHb0FBSUExQVFBQQphd0FBZ0RzQkFBQnNBQUNB
UWdFQUFHOEFBSUJrQVFBQWNBQUFnSUVCQUFCekFBQ0FuUUVBQUhRQUFJQzJBUUFBZGdBQWdNc0JB
QUIzCkFBQ0E0QUVBQUhrQUFJRDRBUUFBZWdBQWdBMENBQUI3QUFDQU1BSUFBSDBBQUlBNkFnQUFm
Z0FBZ0VFQ0FBQi9BQUNBZUFJQUFJQUEKQUlDaEFnQUFnUUFBZ01BQ0FBQ0VBQUNBMndJQUFJVUFB
SUQzQWdBQWhnQUFnUGtDQUFDSUFBQ0Erd0lBQUlrQUFJQUFBd0FBaXdBQQpnQTBEQUFDTUFBQ0FJ
Z01BQUkwQUFJQTZBd0FBamdBQWdGMERBQUNQQUFDQWF3TUFBSkVBQUlCekF3QUFrZ0FBZ0tZREFB
Q1RBQUNBClN3UUFBSlFBQUlCZ0JBQUFsUUFBZ0d3RUFBQ1dBQUNBZUFRQUFKY0FBSUI5QkFBQW1B
QUFnSDhFQUFDYUFBQ0FwQVFBQUp3QUFJQysKQkFBQW5RQUFnTlVFQUFDZUFBQ0E2QVFBQUo4QUFJ
RDdCQUFBb1FBQWdBRUZBQUNpQUFDQTlRQUFBQ1FBQUFBQUFBQUFBQUFBQUhJQQpBQUFFQUFBQUNB
QUFBQUFBQUFEcEx3QUFEQUFFQUFRQUFBRHhBQUFBMlFBQUFEMEFFQkVBQUFBQUFBQUFBQUFBQUFC
eUFBQUFEQUFBCkFHTUFBQUM4RWdBQUFBQUFBQUFBQVhkclUyVjBSbTl1ZEZOdGIyOTBhR2x1WjFO
MGVXeGxBQndBRWhBRUFBQUFBQUFBQUFBQUFBQUUKQUFBQUFBQUFBQUFBQUFJQUFCUUFDeEVJQUFB
QThCRUFBR05uUTI5dWRHVjRkQUFlQUFzUkRBQUFBREFBQUFCbWIyNTBRV3hzYjNkegpVMjF2YjNS
b2FXNW5BQ0FBQ3hIOC8vLy9kUUFBQUc5c1pFWnZiblJUYlc5dmRHaHBibWRUZEhsc1pRQU9BRGtS
R1FBQUFBQUFBQUQyCkVRQUFEZ0E1RVRZQUFBQUFBQUFBOXhFQUFBSUFCZ0FBQUFEeUFBQUFVQUFB
QUFBQUFBQUFBQUFBY2dBQUFMZ0ZBQUFIQUFBQVJBQUEKQUFBQUFBQzJBQUNBREFBQUFMY0FBSUFU
QUFBQXVBQUFnREFBQUFDNUFBQ0FTUUFBQUxvQUFJQmdBQUFBdkFBQWdHTUFBQUM5QUFDQQo5UUFB
QUNRQUFBQUFBQUFBQUFBQUFHSUFBQUFBQUFBQURBQUFBQUFBQUFEcEx3QUFCQUFFQUFRQUFBRHhB
QUFBM3dBQUFEc0FEeEVBCkFBQUFBQUFBQUFBQUFBQmlBQUFBQkFBQUFGZ0FBQUQ1RVFBQUFBQUFB
QUFBQVhObGRFWnZiblJUYlc5dmRHaHBibWRUZEhsc1pRQWMKQUJJUUFBQUFBQUFBQUFBQUFBQUFC
QUFBQUFBQUFBQUFBQUFDQUFBVUFBc1JDQUFBQVBBUkFBQmpaME52Ym5SbGVIUUFHQUFMRVF3QQpB
QUIxQUFBQWMyMXZiM1JvYVc1blZIbHdaUUFlQUFzUkVBQUFBREFBQUFCbWIyNTBRV3hzYjNkelUy
MXZiM1JvYVc1bkFBNEFPUkVVCkFBQUFBQUFBQVBJUkFBQU9BRGtSTGdBQUFBQUFBQUQwRVFBQURn
QTVFVWdBQUFBQUFBQUE4aEVBQUFJQUJnQUE4Z0FBQUZBQUFBQUEKQUFBQUFBQUFBR0lBQUFDNEJR
QUFCd0FBQUVRQUFBQUFBQUFBclFBQWdBUUFBQUN1QUFDQUNnQUFBSzhBQUlBa0FBQUFzQUFBZ0Q0
QQpBQUN4QUFDQVFBQUFBTElBQUlCWUFBQUFzd0FBZ1BVQUFBQWtBQUFBQUFBQUFBQUFBQUFlQUFB
QUFBQUFBQWdBQUFBQUFBQUE2UzhBCkFBTUFBQUFFQUFBQThRQUFBSkFBQUFCQkFCQVJBQUFBQUFB
QUFBQUFBQUFBSGdBQUFBTUFBQUFWQUFBQTlCRUFBQUFBQUFBQUFBRjMKYTFKbGMzUnZjbVZHYjI1
MFUyMXZiM1JvYVc1blUzUjViR1VBSEFBU0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QWdBQQpGQUFMRVFnQUFBRHdFUUFBWTJkRGIyNTBaWGgwQUJNQUN4RU1BQUFBZFFBQUFHOXNaRk4w
ZVd4bEFBSUFCZ0R5QUFBQU1BQUFBQUFBCkFBQUFBQUFBSGdBQUFMZ0ZBQUFEQUFBQUpBQUFBQUFB
QUFEQUFBQ0FBd0FBQU1FQUFJQVZBQUFBd2dBQWdQVUFBQUFrQUFBQUFBQUEKQUFBQUFBQTVBZ0FB
WkFBQUFCQUFBQUFBQUFBQTZTOEFBQmNBQ0FBRUFBQUE4UUFBQUFBQ0FBQkdBQkFSQUFBQUFBQUFB
QUFBQUFBQQpPUUlBQUJjQUFBQURBZ0FBdmhJQUFBQUFBQUFBQUFGM2ExTmxkRU5IUTI5dWRHVjRk
RVp2Ym5SU1pXNWtaWEpwYm1kVGRIbHNaUUFjCkFCSVFaQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFB
QUFBQUFBQ0FBQU5BQXdSQUFBQUFBQUFBQUFBQUFBTkFBd1JBQUFBQUFBQUFBQUEKQUFBTkFBd1JB
QUFBQUFBQUFBQUFBQUFVQUFzUkNBQUFBUEFSQUFCalowTnZiblJsZUhRQUZ3QUxFUXdBQUFBd0FB
QUFhWE5UZVhOMApaVzFHYjI1MEFCZ0FDeEVRQUFBQU1BQUFBR2x6VUhKcGJuUmxja1p2Ym5RQUln
QUxFUlFBQUFBd0FBQUFkWE5sVUd4aGRHWnZjbTFPCllYUnBkbVZIYkhsd2FITUFIQUFMRWRmLy8v
OHdBQUFBYVhOUWRYSmxWSEpoYm5Oc1lYUnBiMjRBRXdBTEVmai8vLzlBQUFBQVkyOXUKZEhKaGMz
UUFHZ0FMRWYvLy8vOHdBQUFBYzJodmRXeGtRVzUwYVdGc2FXRnpBQjRBQ3hIKy8vLy9NQUFBQUcx
aGVWTjFZbkJwZUdWcwpVRzl6YVhScGIyNEFHd0FMRWR6Ly8vOTNFUUFBWTI5dWRHVjRkRlJ5WVc1
elptOXliUUFPQURrUmF3QUFBQUFBQUFEMEVRQUFEZ0E1CkVaRUFBQUFBQUFBQS9CRUFBQTRBT1JH
ckFBQUFBQUFBQVBJUkFBQU9BRGtSeFFBQUFBQUFBQUR5RVFBQURnQTVFZDhBQUFBQUFBQUEKL1JF
QUFBNEFPUkhJQVFBQUFBQUFBUElSQUFBT0FEa1I0Z0VBQUFBQUFBRHlFUUFBQWdBR0FQSUFBQURB
QUFBQUFBQUFBQUFBQUFBNQpBZ0FBdUFVQUFCVUFBQUMwQUFBQUFBQUFBTVVBQUlBWEFBQUF4Z0FB
Z0JzQUFBREhBQUNBSHdBQUFNZ0FBSUFvQUFBQXlRQUFnREFBCkFBRExBQUNBTkFBQUFNd0FBSUEv
QUFBQXpRQUFnRVFBQUFET0FBQ0FUUUFBQU04QUFJQmFBQUFBMEFBQWdHTUFBQURSQUFDQWV3QUEK
QU5JQUFJQ0VBQUFBMVFBQWdLRUFBQURXQUFDQXV3QUFBTmNBQUlEVkFBQUEyQUFBZ0RZQkFBRFpB
QUNBbkFFQUFOb0FBSURZQVFBQQoyd0FBZ1BJQkFBRGNBQUNBOVFBQUFDUUFBQUFBQUFBQUFBQUFB
R29EQUFCUUFBQUFHQUFBQUFBQUFBRHBMd0FBRndBSUFBUUFBQUR4CkFBQUE4UUlBQURnQUVCRUFB
QUFBQUFBQUFBQUFBQUJxQXdBQUZ3QUFBREVEQUFEQUVnQUFBQUFBQUFBQUFYZHJSMlYwUjJ4NWNH
aEIKWkhaaGJtTmxjd0FjQUJJUVVBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFDQUFBTkFB
d1JBQUFBQUFBQUFBQUFBQUFOQUF3UgpBQUFBQUFBQUFBQUFBQUFOQUF3UkFBQUFBQUFBQUFBQUFB
QVBBQXNSQ0FBQUFBRVNBQUJtYjI1MEFBd0FDeEVNQUFBQUdSSUFBRzBBCkZ3QUxFUkFBQUFBd0FB
QUFhWE5UZVhOMFpXMUdiMjUwQUJnQUN4RVVBQUFBTUFBQUFHbHpVSEpwYm5SbGNrWnZiblFBRUFB
TEVSZ0EKQUFBaEFBQUFaMng1Y0dnQUVnQUxFUndBQUFBWUVnQUFZV1IyWVc1alpRQWJBQXNSNlAv
Ly95RUFBQUJ1ZFcxaVpYSlBaa2hOWlhSeQphV056QUI4QUN4SGsvLy8vSVFBQUFHRmtkbUZ1WTJW
SmJrUmxjMmxuYmxWdWFYUnpBQlFBQ3hINC8vLy9DUklBQUdodGRIaFVZV0pzClpRQVVBQXNSOVAv
Ly93a1NBQUJvYUdWaFZHRmliR1VBS2dBTEVlei8vLy9aRVFBQWFHaGxZVlJoWW14bFRuVnRZbVZ5
VDJaSVRXVjAKY21samMwOW1abk5sZEFBUUFBc1IvUC8vLzNVQUFBQnpkSGxzWlFBY0FBc1IyUC8v
LzNFUkFBQm9iM0pwZW05dWRHRnNRV1IyWVc1agpaUUFZQUFzUjhQLy8vN0FSQUFCb2FHVmhWR0Zp
YkdWVGFYcGxBQTRBT1JGQ0FBQUFBQUFBQUFZU0FBQU9BRGtSWFFBQUFBQUFBQUFMCkVnQUFEZ0E1
RVlZQUFBQUFBQUFBQ3hJQUFBNEFPUkdsQUFBQUFBQUFBQTBTQUFBT0FEa1J6Z0FBQUFBQUFBQVBF
Z0FBRGdBNUVla0EKQUFBQUFBQUFEUklBQUE0QU9SSC9BQUFBQUFBQUFBMFNBQUFPQURrUkdnRUFB
QUFBQUFBU0VnQUFEZ0E1RVZrQkFBQUFBQUFBRFJJQQpBQTRBT1JGdkFRQUFBQUFBQUEwU0FBQU9B
RGtSb1FFQUFBQUFBQUFQRWdBQURnQTVFY1lCQUFBQUFBQUFEUklBQUE0QU9SSGNBUUFBCkFBQUFB
QTBTQUFBT0FEa1I5d0VBQUFBQUFBQVNFZ0FBRGdBNUVVVUNBQUFBQUFBQUZSSUFBQTRBT1JINkFn
QUFBQUFBQUEwU0FBQU8KQURrUkVBTUFBQUFBQUFBTkVnQUFBZ0FHQUFBQUFQSUFBQUJJQVFBQUFB
QUFBQUFBQUFCcUF3QUF1QVVBQUNZQUFBQThBUUFBQUFBQQpBUEVBQUlBWEFBQUE4Z0FBZ0NvQUFB
RHpBQUNBVWdBQUFQZ0FBSUJ3QUFBQStRQUFnSFlBQUFENkFBQ0Fld0FBQVBzQUFJQ1pBQUFBCi9B
QUFnSjhBQUFEOUFBQ0F0UUFBQVA0QUFJQzZBQUFBQVFFQWdNRUFBQUFDQVFDQXlBQUFBQU1CQUlE
akFBQUFCQUVBZ1BrQUFBQUYKQVFDQUR3RUFBQVlCQUlBVUFRQUFDUUVBZ0RJQkFBQUtBUUNBU3dF
QUFBc0JBSUJUQVFBQURBRUFnR2tCQUFBTkFRQ0Fmd0VBQUE0QgpBSUNFQVFBQUVRRUFnSkFCQUFB
U0FRQ0Ftd0VBQUJRQkFJREFBUUFBRlFFQWdOWUJBQUFXQVFDQTdBRUFBQmNCQUlEeEFRQUFHZ0VB
CmdCTUNBQUFiQVFDQUxBSUFBQndCQUlDQ0FnQUFIUUVBZ000Q0FBQWVBUUNBMWdJQUFCOEJBSURl
QWdBQUlBRUFnUFFDQUFBaUFRQ0EKQ2dNQUFDTUJBSUFnQXdBQUpBRUFnUFVBQUFBa0FBQUFBQUFB
QUFBQUFBQlpBQUFBRUFBQUFBZ0FBQUFBQUFBQTZTOEFBQmNBQUFBRQpBQUFBOFFBQUFMY0FBQUF3
QUE4UkFBQUFBQUFBQUFBQUFBQUFXUUFBQUJjQUFBQTZBQUFBRXhJQUFBQUFBQUFBQUFGRFIxTnBl
bVZOCllXdGxBQndBRWhBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUlBQUEwQURCRUFB
QUFBQUFBQUFBQUFBQTBBREJFQUFBQUEKQUFBQUFBQUFBQTBBREJFQUFBQUFBQUFBQUFBQUFCQUFD
eEVJQUFBQVFBQUFBSGRwWkhSb0FCRUFDeEVNQUFBQVFBQUFBR2hsYVdkbwpkQUFQQUFzUjlQLy8v
M0VSQUFCemFYcGxBQUlBQmdBQThnQUFBREFBQUFBQUFBQUFBQUFBQUZrQUFBQm9CQUFBQXdBQUFD
UUFBQUFBCkFBQUFCd0VBZ0JjQUFBQUlBUUNBS1FBQUFBa0JBSUQxQUFBQUpBQUFBQUFBQUFBQUFB
QUFhZ0FBQUJBQUFBQWdBQUFBQUFBQUFPa3YKQUFBWEFBQUFCQUFBQVBFQUFBREFBQUFBUWdBUEVR
QUFBQUFBQUFBQUFBQUFBR29BQUFBWEFBQUFVQUFBQUJjU0FBQUFBQUFBQUFBQgpYMTlEUjFOcGVt
VkJjSEJzZVVGbVptbHVaVlJ5WVc1elptOXliUUFjQUJJUUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQ0FDCkFBQU5BQXdSQUFBQUFBQUFBQUFBQUFBTkFBd1JBQUFBQUFBQUFBQUFBQUFOQUF3
UkFBQUFBQUFBQUFBQUFBQVBBQXNSQ0FBQUFIRVIKQUFCemFYcGxBQXdBQ3hFUUFBQUFkeEVBQUhR
QURBQUxFZlQvLy85eEVRQUFjd0FDQUFZQThnQUFBRUFBQUFBQUFBQUFBQUFBQUdvQQpBQUFnQkFB
QUJRQUFBRFFBQUFBQUFBQUFod0FBZ0JjQUFBQ0pBQUNBS0FBQUFJb0FBSUE1QUFBQWl3QUFnRDhB
QUFDTUFBQ0E5UUFBCkFDUUFBQUFBQUFBQUFBQUFBQ0VBQUFBQUFBQUFDQUFBQUFBQUFBRHBMd0FB
QXdBQUFBUUFBQUR4QUFBQWtnQUFBRHNBRHhFQUFBQUEKQUFBQUFBQUFBQUFoQUFBQUF3QUFBQjhB
QUFEL0VRQUFBQUFBQUFBQUFYSmxibVJsY21sdVoxTjBlV3hsUm05eVJtOXVkQUFjQUJJUQpBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQ0FBQVhBQXNSQ0FBQUFEQUFBQUJwYzFONWMzUmxi
VVp2Ym5RQUdBQUxFUXdBCkFBQXdBQUFBYVhOUWNtbHVkR1Z5Um05dWRBQUNBQVlBQUFEeUFBQUFR
QUFBQUFBQUFBQUFBQUFBSVFBQUFMZ0ZBQUFGQUFBQU5BQUEKQUFBQUFBRGZBQUNBQXdBQUFPSUFB
SUFUQUFBQTR3QUFnQm9BQUFEbEFBQ0FId0FBQU9ZQUFJRDFBQUFBSkFBQUFBQUFBQUFBQUFBQQpz
Z0FBQUJ3QUFBQUVBQUFBQUFBQUFPa3ZBQUFnQUFBQUJBQUFBUEVBQUFCMEFBQUFMQUFQRVFBQUFB
QUFBQUFBQUFBQUFMSUFBQUFnCkFBQUFwQUFBQVAwUUFBQUFBQUFBQUFBQmNtOTFibVJtQUJ3QUVo
QWNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBNEEKQ3hFSUFBQUFRQUFBQUc1MWJR
QVNBQXNSL1AvLy8wQUFBQUJwYm5SbFoyVnlBQUlBQmdEeUFBQUFTQUFBQUFBQUFBQUFBQUFBc2dB
QQpBTGdGQUFBR0FBQUFQQUFBQUFBQUFBRHBBQUNBSUFBQUFPb0FBSUF5QUFBQTZ3QUFnRUlBQUFE
c0FBQ0FkQUFBQU8wQUFJQ2tBQUFBCjdnQUFnUFVBQUFBa0FBQUFBQUFBQUFBQUFBQXdBQUFBQUFB
QUFCQUFBQUFBQUFBQTZTOEFBQVFBQkFBRUFBQUE4UUFBQUxJQUFBQXgKQUJBUkFBQUFBQUFBQUFB
QUFBQUFNQUFBQUFRQUFBQW1BQUFBd2hJQUFBQUFBQUFBQUFGM2EwZGxkRWRzZVhCb2N3QWNBQklR
QUFBQQpBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFDQUFBUEFBc1JDQUFBQUFFU0FBQm1iMjUw
QUJVQUN4RU1BQUFBS1JBQUFHTm9ZWEpoClkzUmxjbk1BRVFBTEVSQUFBQUFoQkFBQVoyeDVjR2h6
QUJBQUN4RVVBQUFBZFFBQUFHTnZkVzUwQUE0QU9SRVdBQUFBQUFBQUFCc1MKQUFBQ0FBWUFBQUR5
QUFBQU1BQUFBQUFBQUFBQUFBQUFNQUFBQUxnRkFBQURBQUFBSkFBQUFBQUFBQUFuQVFDQUJBQUFB
Q2dCQUlBbQpBQUFBS1FFQWdQVUFBQUFrQUFBQUFBQUFBQUFBQUFCekFBQUFCQUFBQUFRQUFBQUFB
QUFBNlM4QUFBd0FCQUFFQUFBQThRQUFBTDRBCkFBQTJBQkFSQUFBQUFBQUFBQUFBQUFBQWN3QUFB
QXdBQUFCa0FBQUF3eElBQUFBQUFBQUFBQUYzYTFObGRGVndSbTl1ZEVOaFkyaGwKQUJ3QUVoQUVB
QUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFJQUFBd0FDeEVJQUFBQWRRQUFBSE1BRkFBTEVm
ei8vLzhmRWdBQQpabTl1ZEVOaFkyaGxBQTRBT1JFUUFBQUFBQUFBQUIwU0FBQU9BRGtSSWdBQUFB
QUFBQUFnRWdBQURnQTVFVG9BQUFBQUFBQUFJaElBCkFBNEFPUkZVQUFBQUFBQUFBQ1FTQUFBQ0FB
WUFBQUR5QUFBQVNBQUFBQUFBQUFBQUFBQUFjd0FBQUxnRkFBQUdBQUFBUEFBQUFBQUEKQUFBc0FR
Q0FEQUFBQUM0QkFJQWdBQUFBTHdFQWdESUFBQUF3QVFDQVNnQUFBREVCQUlCa0FBQUFNZ0VBZ1BV
QUFBQWtBQUFBQUFBQQpBQUFBQUFCTUFBQUFBQUFBQUJ3QUFBQUFBQUFBNlM4QUFBUUFCQUFFQUFB
QThRQUFBSmNBQUFBNUFCQVJBQUFBQUFBQUFBQUFBQUFBClRBQUFBQVFBQUFCQ0FBQUFKaElBQUFB
QUFBQUFBQUYzYTFObGRGQmhkSFJsY201Q1lYTmxRMVJOQUJ3QUVoQUFBQUFBQUFBQUFBQUEKQUFB
RUFBQUFBQUFBQUFBQUFBSUFBQklBQ3hFSUFBQUE4QkVBQUdOdmJuUmxlSFFBRkFBTEVRd0FBQUIz
RVFBQWRISmhibk5tYjNKdApBQTRBT1JFeUFBQUFBQUFBQUNZU0FBQUNBQVlBQVBJQUFBQXdBQUFB
QUFBQUFBQUFBQUJNQUFBQXVBVUFBQU1BQUFBa0FBQUFBQUFBCkFEVUJBSUFFQUFBQU5nRUFnRUlB
QUFBM0FRQ0E5UUFBQUNRQUFBQUFBQUFBQUFBQUFNa0NBQUFBQVFBQURBQUFBQUFBQUFEcEx3QUEK
SFFBSUFBUUFBQUR4QUFBQVJnRUFBRUlBRUJFQUFBQUFBQUFBQUFBQUFBREpBZ0FBSFFBQUFJSUNB
QURGRWdBQUFBQUFBQUFBQVhkcgpVMlYwVUdGMGRHVnlibEJvWVhObFNXNVZjMlZ5VTNCaFkyVUFI
QUFTRUFBQkFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBZ0FBCkRRQU1FUUFBQUFBQUFBQUFB
QUFBRFFBTUVRQUFBQUFBQUFBQUFBQUFEUUFNRVFBQUFBQUFBQUFBQUFBQURRQU1FUUFBQUFBQUFB
QUEKQUFBQUVnQUxFUWdBQUFEd0VRQUFZMjl1ZEdWNGRBQVZBQXNSREFBQUFHNFJBQUJ3YUdGelpW
QnZhVzUwQUJVQUN4SGsvLy8vZHhFQQpBSFZ6WlhKVWIwSmhjMlVBRUFBTEVkVC8vLzl1RVFBQWNH
aGhjMlVBRGdBNUVTb0FBQUFBQUFBQS9SRUFBQTRBT1JHT0FBQUFBQUFBCkFDb1NBQUFPQURrUnpn
QUFBQUFBQUFEOUVRQUFEZ0E1RVg0QkFBQUFBQUFBS0JJQUFBNEFPUkZoQWdBQUFBQUFBQzRTQUFB
Q0FBWUEKQUFEeUFBQUFRQUFBQUFBQUFBQUFBQUFBeVFJQUFMZ0ZBQUFGQUFBQU5BQUFBQUFBQUFB
NkFRQ0FIUUFBQURzQkFJRFZBUUFBUEFFQQpnQ3NDQUFBK0FRQ0FjUUlBQUQ4QkFJRDFBQUFBSkFB
QUFBQUFBQUFBQUFBQWNnQUFBQkFBQUFBZ0FBQUFBQUFBQU9rdkFBQVhBQUFBCkJBQUFBUEVBQUFE
Q0FBQUFRd0FQRVFBQUFBQUFBQUFBQUFBQUFISUFBQUFYQUFBQVZnQUFBQ3dTQUFBQUFBQUFBQUFC
WDE5RFIxQnYKYVc1MFFYQndiSGxCWm1acGJtVlVjbUZ1YzJadmNtMEFIQUFTRUJBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQWdBZ0FBRFFBTQpFUUFBQUFBQUFBQUFBQUFBRFFBTUVRQUFBQUFB
QUFBQUFBQUFEUUFNRVFBQUFBQUFBQUFBQUFBQUVBQUxFUWdBQUFCdUVRQUFjRzlwCmJuUUFEQUFM
RVJBQUFBQjNFUUFBZEFBTUFBc1I5UC8vLzI0UkFBQndBQUlBQmdBQUFQSUFBQUJBQUFBQUFBQUFB
QUFBQUFCeUFBQUEKSUFRQUFBVUFBQUEwQUFBQUFBQUFBSDBBQUlBWEFBQUFmd0FBZ0NzQUFBQ0FB
QUNBUHdBQUFJRUFBSUJGQUFBQWdnQUFnUFVBQUFBawpBQUFBQUFBQUFBQUFBQURiQVFBQXdBQUFB
QWdBQUFBQUFBQUE2UzhBQUIwQUNBQUVBQUFBOFFBQUFMQUFBQUE0QUJBUkFBQUFBQUFBCkFBQUFB
QUFBMndFQUFCMEFBQURJQVFBQS9SRUFBQUFBQUFBQUFBRjNhMGRsZEZWelpYSlViMEpoYzJWRFZF
MEFIQUFTRU1BQUFBQUEKQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQWdBQUVnQUxFUXdBQUFEd0VR
QUFZMjl1ZEdWNGRBQU9BRGtSSndBQUFBQUFBQUQ5RVFBQQpEZ0E1RVlnQUFBQUFBQUFBS2hJQUFB
NEFPUkhJQUFBQUFBQUFBUDBSQUFBT0FEa1JiQUVBQUFBQUFBQW9FZ0FBQWdBR0FQSUFBQUF3CkFB
QUFBQUFBQUFBQUFBRGJBUUFBdUFVQUFBTUFBQUFrQUFBQUFBQUFBRUlCQUlBZEFBQUFRd0VBZ01n
QkFBQkVBUUNBOVFBQUFDUUEKQUFBQUFBQUFBQUFBQUhjQUFBQUFBQUFBREFBQUFBQUFBQURwTHdB
QUJBQUVBQVFBQUFEeEFBQUF3Z0FBQURVQUVCRUFBQUFBQUFBQQpBQUFBQUFCM0FBQUFCQUFBQUcw
QUFBREhFZ0FBQUFBQUFBQUFBWGRyUkhKaGQwWnZZM1Z6VW1sdVp3QWNBQklRQUFBQUFBQUFBQUFB
CkFBQUFCQUFBQUFBQUFBQUFBQUFDQUFBU0FBc1JDQUFBQVBBUkFBQmpiMjUwWlhoMEFCQUFDeEVN
QUFBQU1oSUFBR052Ykc5eUFCRUEKQ3hFUUFBQUFRQUFBQUhKaFpHbDFjd0FPQURrUklnQUFBQUFB
QUFBd0VnQUFEZ0E1RVVjQUFBQUFBQUFBT1JJQUFBNEFPUkZkQUFBQQpBQUFBQURvU0FBQUNBQVlB
QUFEeUFBQUFRQUFBQUFBQUFBQUFBQUFBZHdBQUFMZ0ZBQUFGQUFBQU5BQUFBQUFBQUFCSEFRQ0FC
QUFBCkFFb0JBSUF5QUFBQVRBRUFnRmNBQUFCTkFRQ0FiUUFBQUU0QkFJRDFBQUFBSkFBQUFBQUFB
QUFBQUFBQUpBQUFBQUFBQUFBRUFBQUEKQUFBQUFPa3ZBQUFFQUFRQUJBQUFBUEVBQUFDR0FBQUFQ
UUFRRVFBQUFBQUFBQUFBQUFBQUFDUUFBQUFFQUFBQUdnQUFBRDRTQUFBQQpBQUFBQUFBQmQydEha
WFJUVTB4RFpYSjBhV1pwWTJGMFpVbHVabThBSEFBU0VBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFB
QUFBQUFBCkFnQUFFd0FMRVFnQUFBQThFZ0FBY21WemNHOXVjMlVBRGdBNUVRb0FBQUFBQUFBQVBo
SUFBQUlBQmdBQUFQSUFBQUF3QUFBQUFBQUEKQUFBQUFBQWtBQUFBdUFVQUFBTUFBQUFrQUFBQUFB
QUFBRkVCQUlBRUFBQUFVZ0VBZ0JvQUFBQlRBUUNBOVFBQUFDUUFBQUFBQUFBQQpBQUFBQUhnQUFB
QUlBQUFBQkFBQUFBQUFBQURwTHdBQUZRQUVBQVFBQUFEeEFBQUFwd0FBQUVFQUVCRUFBQUFBQUFB
QUFBQUFBQUI0CkFBQUFGUUFBQUdrQUFBREpFZ0FBQUFBQUFBQUFBWGRyUjJWMFUxTk1VR1ZsY2tO
bGNuUnBabWxqWVhSbFJHRjBZUUFjQUJJUUNBQUEKQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFB
Q0FBQVBBQXNSQ0FBQUFEY1NBQUJrYVdOMEFBOEFDeEg4Ly8vL0NSSUFBR1JoZEdFQQpEZ0E1RVNz
QUFBQUFBQUFBUUJJQUFBNEFPUkZLQUFBQUFBQUFBQklTQUFBQ0FBWUFBUElBQUFCSUFBQUFBQUFB
QUFBQUFBQjRBQUFBCnVBVUFBQVlBQUFBOEFBQUFBQUFBQUZZQkFJQVZBQUFBVndFQWdCc0FBQUJZ
QVFDQUh3QUFBRmtCQUlBK0FBQUFXZ0VBZ0drQUFBQmIKQVFDQTlRQUFBQ1FBQUFBQUFBQUFBQUFB
QUxrQUFBQUVBQUFBQ0FBQUFBQUFBQURwTHdBQURBQUVBQVFBQUFEeEFBQUE3Z0FBQUVzQQpFQkVB
QUFBQUFBQUFBQUFBQUFDNUFBQUFEQUFBQUtvQUFBRExFZ0FBQUFBQUFBQUFBWGRyVTJWMFEyeHBa
VzUwUTJWeWRHbG1hV05oCmRHVkpibE5UVEZCeWIzQmxjblJwWlhNQUhBQVNFQVFBQUFBQUFBQUFB
QUFBQUFRQUFBQUFBQUFBQUFBQUFnQUFFd0FMRVFnQUFBQlcKRWdBQWMzTnNVSEp2Y0hNQUV3QUxF
UXdBQUFBSkVnQUFZMlZ5ZEVSaGRHRUFFd0FMRWZ6Ly8vOVdFZ0FBWTJWeWRFUnBZM1FBRGdBNQpF
VGNBQUFBQUFBQUFYQklBQUE0QU9SRmpBQUFBQUFBQUFGNFNBQUFPQURrUmhBQUFBQUFBQUFCZUVn
QUFEZ0E1RVpvQUFBQUFBQUFBCkRSSUFBQUlBQmdBQUFQSUFBQUJvQUFBQUFBQUFBQUFBQUFDNUFB
QUF1QVVBQUFvQUFBQmNBQUFBQUFBQUFGNEJBSUFNQUFBQVh3RUEKZ0JnQUFBQmdBUUNBSFFBQUFH
RUJBSUJLQUFBQVlnRUFnRkFBQUFCakFRQ0FVZ0FBQUdRQkFJQnpBQUFBWlFFQWdKUUFBQUJtQVFD
QQpxZ0FBQUdjQkFJRDFBQUFBSkFBQUFBQUFBQUFBQUFBQUtBQUFBQUFBQUFBQUFBQUFBQUFBQU9r
dkFBQUVBQVFBQkFBQUFQRUFBQUIzCkFBQUFRd0FRRVFBQUFBQUFBQUFBQUFBQUFDZ0FBQUFFQUFB
QUhnQUFBTXdTQUFBQUFBQUFBQUFCZDJ0SFpYUkVaV1poZFd4MFNGUlUKVUVOdmIydHBaVk4wYjNK
aFoyVUFIQUFTRUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBZ0FBRGdBNUVRNEFBQUFB
QUFBQQpZaElBQUFJQUJnQUE4Z0FBQURBQUFBQUFBQUFBQUFBQUFDZ0FBQUM0QlFBQUF3QUFBQ1FB
QUFBQUFBQUFhZ0VBZ0FRQUFBQnJBUUNBCkhnQUFBR3dCQUlEMUFBQUFKQUFBQUFBQUFBQUFBQUFB
YUFBQUFBZ0FBQUFBQUFBQUFBQUFBT2t2QUFBVkFBUUFCQUFBQVBFQUFBREEKQUFBQVJBQVFFUUFB
QUFBQUFBQUFBQUFBQUdnQUFBQVZBQUFBV1FBQUFNMFNBQUFBQUFBQUFBQUJkMnREYjNCNVJtOTFi
bVJoZEdsdgpia05oWTJobFJHbHlaV04wYjNKNUFCd0FFaEFJQUFBQUFBQUFBQUFBQUFBRUFBQUFB
QUFBQUFBQUFBSUFBQkFBQ3hIOC8vLy9aUklBCkFHTmhZMmhsQUJRQUN4SDQvLy8vUHhFQUFHUnBj
bVZqZEc5eWVRQU9BRGtSRndBQUFBQUFBQUJtRWdBQURnQTVFUzBBQUFBQUFBQUEKYUJJQUFBNEFP
UkZHQUFBQUFBQUFBQTBTQUFBQ0FBWUE4Z0FBQUVnQUFBQUFBQUFBQUFBQUFHZ0FBQUM0QlFBQUJn
QUFBRHdBQUFBQQpBQUFBYndFQWdCVUFBQUJ3QVFDQUp3QUFBSEVCQUlCQUFBQUFjZ0VBZ0ZZQUFB
QnpBUUNBV1FBQUFIUUJBSUQxQUFBQUpBQUFBQUFBCkFBQUFBQUFBYmdBQUFBUUFBQUFJQUFBQUFB
QUFBT2t2QUFBTkFBZ0FCQUFBQVBFQUFBQ3lBQUFBU1FBUUVRQUFBQUFBQUFBQUFBQUEKQUc0QUFB
QU5BQUFBWGdBQUFNOFNBQUFBQUFBQUFBQUJkMnRUWlhSRFJsVlNURkpsY1hWbGMzUlRhRzkxYkdS
RGIyNTBaVzUwVTI1cApabVlBSEFBU0VBUUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQWdB
QUVnQUxFUWdBQUFCdUVnQUFjbVZ4ZFdWemRBQVBBQXNSCkRBQUFBREFBQUFCbWJHRm5BQTRBT1JF
NUFBQUFBQUFBQUs4UkFBQU9BRGtSVGdBQUFBQUFBQUJ0RWdBQUFnQUdBQUFBOGdBQUFEQUEKQUFB
QUFBQUFBQUFBQUc0QUFBQzRCUUFBQXdBQUFDUUFBQUFBQUFBQWR3RUFnQTBBQUFCNEFRQ0FYZ0FB
QUhrQkFJRDFBQUFBSkFBQQpBQUFBQUFBQUFBQUFKQUFBQUFBQUFBQUVBQUFBQUFBQUFPa3ZBQUFF
QUFRQUJBQUFBUEVBQUFDVUFBQUFUQUFRRVFBQUFBQUFBQUFBCkFBQUFBQ1FBQUFBRUFBQUFHZ0FB
QUhNU0FBQUFBQUFBQUFBQmQydERSbFZTVEZKbGNYVmxjM1JEYjNCNVNGUlVVRkpsY1hWbGMzUkMK
YjJSNVVHRnlkSE1BSEFBU0VBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQWdBQUVnQUxF
UWdBQUFCckVnQUFjbVZ4ZFdWegpkQUFPQURrUkNnQUFBQUFBQUFCekVnQUFBZ0FHQVBJQUFBQXdB
QUFBQUFBQUFBQUFBQUFrQUFBQXVBVUFBQU1BQUFBa0FBQUFBQUFBCkFId0JBSUFFQUFBQWZRRUFn
Qm9BQUFCK0FRQ0E5UUFBQUNRQUFBQUFBQUFBQUFBQUFDZ0FBQUFBQUFBQUNBQUFBQUFBQUFEcEx3
QUEKQkFBRUFBUUFBQUR4QUFBQXFRQUFBRXNBRUJFQUFBQUFBQUFBQUFBQUFBQW9BQUFBQkFBQUFC
NEFBQUIxRWdBQUFBQUFBQUFBQVhkcgpRMFpWVWt4U1pYRjFaWE4wVTJWMFNGUlVVRkpsY1hWbGMz
UkNiMlI1VUdGeWRITUFIQUFTRUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBCkFBQUFBQUFBQWdBQUVn
QUxFUWdBQUFCdUVnQUFjbVZ4ZFdWemRBQVVBQXNSREFBQUFIRVNBQUJpYjJSNVVHRnlkSE1BRGdB
NUVRNEEKQUFBQUFBQUFkUklBQUFJQUJnQUFBQUR5QUFBQU1BQUFBQUFBQUFBQUFBQUFLQUFBQUxn
RkFBQURBQUFBSkFBQUFBQUFBQUNCQVFDQQpCQUFBQUlJQkFJQWVBQUFBZ3dFQWdQVUFBQUFrQUFB
QUFBQUFBQUFBQUFESUFBQUFFQUFBQUFRQUFBQUFBQUFBNlM4QUFCZ0FCQUFFCkFBQUE4UUFBQUlj
QkFBQlRBQkFSQUFBQUFBQUFBQUFBQUFBQXlBQUFBQmdBQUFDNUFBQUFTeEVBQUFBQUFBQUFBQUYz
YTBsdWFYUnAKWVd4cGVtVk5ZWGhwYlhWdFNGUlVVRU52Ym01bFkzUnBiMjVEYjNWdWRGQmxja2h2
YzNRQUhBQVNFQkFBQUFBQUFBQUFBQUFBQUFRQQpBQUFBQUFBQUFBQUFBZ0FBSXdBTEVRZ0FBQUIx
QUFBQWNISmxabVZ5Y21Wa1EyOXVibVZqZEdsdmJrTnZkVzUwQUJnQUN4SDgvLy8vCnNCRUFBR1po
Ykd4aVlXTnJUR2x0YVhRQUVRQUxFZmovLy85M0VnQUFiVzlrZFd4bEFDQUFDQkdHRWdBQVEyOXVi
bVZqZEdsdmJrZGwKZEV4cGJXbDBVSEp2WTFCMGNnQWdBQWdSZ3hJQUFFTnZibTVsWTNScGIyNVRa
WFJNYVcxcGRGQnliMk5RZEhJQUV3QUxFZkQvLy8rRwpFZ0FBWjJWMFRHbHRhWFFBRXdBTEVmVC8v
LytERWdBQWMyVjBUR2x0YVhRQURnQTVFU1lBQUFBQUFBQUFlUklBQUE0QU9SRk9BQUFBCkFBQUFB
SDRTQUFBT0FEa1JkZ0FBQUFBQUFBQitFZ0FBRGdBNUVac0FBQUFBQUFBQWd4SUFBQTRBT1JHc0FB
QUFBQUFBQUlZU0FBQUMKQUFZQUFQSUFBQUNJQUFBQUFBQUFBQUFBQUFESUFBQUF1QVVBQUE0QUFB
QjhBQUFBQUFBQUFJWUJBSUFZQUFBQWh3RUFnQjhBQUFDSwpBUUNBTmdBQUFJNEJBSUE4QUFBQWp3
RUFnRU1BQUFDU0FRQ0FYZ0FBQUpNQkFJQmtBQUFBbEFFQWdHc0FBQUNXQVFDQWhnQUFBSmNCCkFJ
Q01BQUFBbUFFQWdKTUFBQUNhQVFDQXFBQUFBSnNCQUlDNUFBQUFuQUVBZ1BVQUFBQWtBQUFBQUFB
QUFBQUFBQUJ4QUFBQUNBQUEKQUFRQUFBQUFBQUFBNlM4QUFCVUFCQUFFQUFBQThRQUFBT2dBQUFC
TkFCQVJBQUFBQUFBQUFBQUFBQUFBY1FBQUFCVUFBQUJpQUFBQQowUklBQUFBQUFBQUFBQUYzYTBO
dmNIbERjbVZrWlc1MGFXRnNSbkp2YlVOR1VHVnljMmx6ZEdWdWRGTjBiM0poWjJVQUhBQVNFQWdB
CkFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBZ0FBR2dBTEVRZ0FBQUNORWdBQWNISnZkR1Zq
ZEdsdmJsTndZV05sQUJJQUN4SDgKLy8vL2lCSUFBSE4wYjNKaFoyVUFGUUFMRWZqLy8vK0xFZ0FB
WTNKbFpHVnVkR2xoYkFBT0FEa1JHUUFBQUFBQUFBQ0pFZ0FBRGdBNQpFVFlBQUFBQUFBQUFqeElB
QUE0QU9SRlBBQUFBQUFBQUFBMFNBQUFDQUFZQThnQUFBRWdBQUFBQUFBQUFBQUFBQUhFQUFBQzRC
UUFBCkJnQUFBRHdBQUFBQUFBQUFud0VBZ0JVQUFBQ2dBUUNBTEFBQUFLRUJBSUJKQUFBQW9nRUFn
RjhBQUFDakFRQ0FZZ0FBQUtRQkFJRDEKQUFBQUpBQUFBQUFBQUFBQUFBQUFKQUFBQUFBQUFBQUVB
QUFBQUFBQUFPa3ZBQUFFQUFRQUJBQUFBUEVBQUFDWEFBQUFUUUFRRVFBQQpBQUFBQUFBQUFBQUFB
Q1FBQUFBRUFBQUFHZ0FBQUpBU0FBQUFBQUFBQUFBQmQydERSazVsZEhkdmNtdEZjbkp2Y2tkbGRF
eHZZMkZzCmFYcGxaRVJsYzJOeWFYQjBhVzl1QUJ3QUVoQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFB
QUFBQUFBQUFJQUFCUUFDeEVJQUFBQUVnQUEKQUdWeWNtOXlRMjlrWlFBT0FEa1JDZ0FBQUFBQUFB
Q1FFZ0FBQWdBR0FBRHlBQUFBTUFBQUFBQUFBQUFBQUFBQUpBQUFBTGdGQUFBRApBQUFBSkFBQUFB
QUFBQUNuQVFDQUJBQUFBS2dCQUlBYUFBQUFxUUVBZ1BVQUFBQWtBQUFBQUFBQUFBQUFBQUFHQVFB
QUpBQUFBQXdBCkFBQUFBQUFBNlM4QUFDY0FCQUFFQUFBQThRQUFBRnNCQUFCQUFCQVJBQUFBQUFB
QUFBQUFBQUFBQmdFQUFDY0FBQURBQUFBQTB4SUEKQUFBQUFBQUFBQUYzYTFObGRFTlBUazVGUTFS
UWNtOTRlVVp2Y2xOMGNtVmhiUUFjQUJJUUpBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQQpBQUFBQUFB
Q0FBQU5BQXdSQUFBQUFBQUFBQUFBQUFBTkFBd1JBQUFBQUFBQUFBQUFBQUFOQUF3UkFBQUFBQUFB
QUFBQUFBQU5BQXdSCkFBQUFBQUFBQUFBQUFBQVJBQXNSQ0FBQUFKVVNBQUJ6ZEhKbFlXMEFGQUFM
RVF3QUFBQS9FUUFBY0hKdmVIbEliM04wQUJRQUN4RVEKQUFBQW1oSUFBSEJ5YjNoNVVHOXlkQUFX
QUFzUjVQLy8vNXNTQUFCd2NtOTRlVlpoYkhWbGN3QVVBQXNSOVAvLy81c1NBQUJ3Y205NAplVXRs
ZVhNQUhBQUxFZHovLy84M0VnQUFZMjl1Ym1WamRFUnBZM1JwYjI1aGNua0FEZ0E1RVdNQUFBQUFB
QUFBa3hJQUFBNEFPUkdKCkFBQUFBQUFBQUpjU0FBQU9BRGtSbndBQUFBQUFBQUFORWdBQUFnQUdB
QUR5QUFBQVVBQUFBQUFBQUFBQUFBQUFCZ0VBQUxnRkFBQUgKQUFBQVJBQUFBQUFBQUFDc0FRQ0FK
d0FBQUswQkFJQThBQUFBcmdFQWdFZ0FBQUN2QVFDQWRnQUFBTEFCQUlDWkFBQUFzUUVBZ0s4QQpB
QUN5QVFDQTlRQUFBQ1FBQUFBQUFBQUFBQUFBQUo4QkFBQWtBQUFBQ0FBQUFBQUFBQURwTHdBQUp3
QUVBQVFBQUFEeEFBQUFGd0lBCkFFMEFFQkVBQUFBQUFBQUFBQUFBQUFDZkFRQUFKd0FBQUV3QkFB
RFVFZ0FBQUFBQUFBQUFBWGRyVTJWMFEwOU9Ua1ZEVkZCeWIzaDUKUVhWMGFHOXlhWHBoZEdsdmJr
WnZjbE4wY21WaGJRQWNBQklRSkFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUNBQUFOQUF3
UgpBQUFBQUFBQUFBQUFBQUFOQUF3UkFBQUFBQUFBQUFBQUFBQU5BQXdSQUFBQUFBQUFBQUFBQUFB
TkFBd1JBQUFBQUFBQUFBQUFBQUFSCkFBc1JDQUFBQUpVU0FBQnpkSEpsWVcwQUl3QUxFUXdBQUFB
L0VRQUFjSEp2ZUhsQmRYUm9iM0pwZW1GMGFXOXVVM1J5YVc1bkFCd0EKQ3hIay8vLy9vQklBQUdo
bFlXUmxja1pwWld4a1ZtRnNkV1Z6QUNRQUN4SDgvLy8vTnhJQUFHOXlhV2RwYm1Gc1EwOU9Ua1ZE
VkVScApZM1JwYjI1aGNua0FJUUFMRWR6Ly8vODNFZ0FBWVdSa2FYUnBiMjVoYkVobFlXUmxja1pw
Wld4a2N3QWJBQXNSOFAvLy82QVNBQUJvClpXRmtaWEpHYVdWc1pFNWhiV1Z6QUJ3QUN4SDQvLy8v
VmhJQUFHTnZibTVsWTNSRWFXTjBhVzl1WVhKNUFBNEFPUkUxQUFBQUFBQUEKQUowU0FBQU9BRGtS
VWdBQUFBQUFBQUNmRWdBQURnQTVFV3NBQUFBQUFBQUFEUklBQUE0QU9SR0NBQUFBQUFBQUFLOFJB
QUFPQURrUgp0Z0FBQUFBQUFBQ1RFZ0FBRGdBNUVkd0FBQUFBQUFBQVhoSUFBQTRBT1JIeUFBQUFB
QUFBQUEwU0FBQU9BRGtSRlFFQUFBQUFBQUNYCkVnQUFEZ0E1RVNzQkFBQUFBQUFBRFJJQUFBSUFC
Z0FBOGdBQUFIZ0FBQUFBQUFBQUFBQUFBSjhCQUFDNEJRQUFEQUFBQUd3QUFBQUEKQUFBQXRRRUFn
Q2NBQUFDMkFRQ0FTQUFBQUxjQkFJQmxBQUFBdUFFQWdIc0FBQUM2QVFDQWxRQUFBTHNCQUlDYkFB
QUF2QUVBZ01rQQpBQUMrQVFDQTdBQUFBTDhCQUlBQ0FRQUF3UUVBZ0NVQkFBRENBUUNBT3dFQUFN
TUJBSUQxQUFBQUpBQUFBQUFBQUFBQUFBQUFXUUFBCkFBUUFBQUFJQUFBQUFBQUFBT2t2QUFBTUFB
UUFCQUFBQVBFQUFBRERBQUFBUUFBUUVRQUFBQUFBQUFBQUFBQUFBRmtBQUFBTUFBQUEKU2dBQUFO
WVNBQUFBQUFBQUFBQUJkMnREYjNCNVEwOU9Ua1ZEVkZCeWIzaDVVbVZ6Y0c5dWMyVUFIQUFTRUFR
QUFBQUFBQUFBQUFBQQpBQVFBQUFBQUFBQUFBQUFBQWdBQUVRQUxFUWdBQUFDVkVnQUFjM1J5WldG
dEFCWUFDeEVNQUFBQXBSSUFBSEpsYzNCdmJuTmxWVkpNCkFCSUFDeEg4Ly8vL29oSUFBRzFsYzNO
aFoyVUFEZ0E1RVJvQUFBQUFBQUFBblJJQUFBNEFPUkUzQUFBQUFBQUFBS2NTQUFBQ0FBWUEKQVBJ
QUFBQkFBQUFBQUFBQUFBQUFBQUJaQUFBQXVBVUFBQVVBQUFBMEFBQUFBQUFBQU1ZQkFJQU1BQUFB
eHdFQWdDMEFBQURLQVFDQQpSd0FBQU1zQkFJQktBQUFBekFFQWdQVUFBQUFrQUFBQUFBQUFBQUFB
QUFBc0FBQUFBQUFBQUF3QUFBQUFBQUFBNlM4QUFBUUFCQUFFCkFBQUE4UUFBQUtnQUFBQTZBQkFS
QUFBQUFBQUFBQUFBQUFBQUxBQUFBQVFBQUFBaUFBQUFxeElBQUFBQUFBQUFBQUYzYTBOQlNXMWgK
WjJWUmRXVjFaVU55WldGMFpRQWNBQklRQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUNB
QUFRQUFzUkNBQUFBSFVBQUFCMwphV1IwYUFBUkFBc1JEQUFBQUhVQUFBQm9aV2xuYUhRQUV3QUxF
UkFBQUFCMUFBQUFZMkZ3WVdOcGRIa0FEZ0E1RVJJQUFBQUFBQUFBCnF4SUFBQUlBQmdEeUFBQUFN
QUFBQUFBQUFBQUFBQUFBTEFBQUFMZ0ZBQUFEQUFBQUpBQUFBQUFBQUFEUkFRQ0FCQUFBQU5JQkFJ
QWkKQUFBQTB3RUFnUFVBQUFBa0FBQUFBQUFBQUFBQUFBQXNBQUFBQUFBQUFBd0FBQUFBQUFBQTZT
OEFBQVFBQkFBRUFBQUE4UUFBQUtNQQpBQUE3QUJBUkFBQUFBQUFBQUFBQUFBQUFMQUFBQUFRQUFB
QWlBQUFBclJJQUFBQUFBQUFBQUFGM2EwTkJTVzFoWjJWUmRXVjFaVk5sCmRGTnBlbVVBSEFBU0VB
QUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQWdBQURRQUxFUWdBQUFDcEVnQUFhWEVBRUFB
TEVRd0EKQUFCMUFBQUFkMmxrZEdnQUVRQUxFUkFBQUFCMUFBQUFhR1ZwWjJoMEFBNEFPUkVTQUFB
QUFBQUFBSzBTQUFBQ0FBWUFBUElBQUFBdwpBQUFBQUFBQUFBQUFBQUFzQUFBQXVBVUFBQU1BQUFB
a0FBQUFBQUFBQU5ZQkFJQUVBQUFBMXdFQWdDSUFBQURZQVFDQTlRQUFBQ1FBCkFBQUFBQUFBQUFB
QUFDUUFBQUFBQUFBQUJBQUFBQUFBQUFEcEx3QUFCQUFFQUFRQUFBRHhBQUFBZndBQUFEd0FFQkVB
QUFBQUFBQUEKQUFBQUFBQWtBQUFBQkFBQUFCb0FBQUN2RWdBQUFBQUFBQUFBQVhkclEwRkpiV0Zu
WlZGMVpYVmxSMlYwVjJsa2RHZ0FIQUFTRUFBQQpBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFB
QWdBQURRQUxFUWdBQUFDcEVnQUFhWEVBRGdBNUVRb0FBQUFBQUFBQXJ4SUFBQUlBCkJnQUE4Z0FB
QURBQUFBQUFBQUFBQUFBQUFDUUFBQUM0QlFBQUF3QUFBQ1FBQUFBQUFBQUEyd0VBZ0FRQUFBRGNB
UUNBR2dBQUFOMEIKQUlEMUFBQUFKQUFBQUFBQUFBQUFBQUFBSkFBQUFBQUFBQUFFQUFBQUFBQUFB
T2t2QUFBRUFBUUFCQUFBQVBFQUFBQ0FBQUFBUFFBUQpFUUFBQUFBQUFBQUFBQUFBQUNRQUFBQUVB
QUFBR2dBQUFLOFNBQUFBQUFBQUFBQUJkMnREUVVsdFlXZGxVWFZsZFdWSFpYUklaV2xuCmFIUUFI
QUFTRUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBZ0FBRFFBTEVRZ0FBQUNwRWdBQWFY
RUFEZ0E1RVFvQUFBQUEKQUFBQXJ4SUFBQUlBQmdEeUFBQUFNQUFBQUFBQUFBQUFBQUFBSkFBQUFM
Z0ZBQUFEQUFBQUpBQUFBQUFBQUFEZ0FRQ0FCQUFBQU9FQgpBSUFhQUFBQTRnRUFnUFVBQUFBa0FB
QUFBQUFBQUFBQUFBQWtBQUFBQUFBQUFBUUFBQUFBQUFBQTZTOEFBQVFBQkFBRUFBQUE4UUFBCkFJ
SUFBQUEvQUJBUkFBQUFBQUFBQUFBQUFBQUFKQUFBQUFRQUFBQWFBQUFBcnhJQUFBQUFBQUFBQUFG
M2EwTkJTVzFoWjJWUmRXVjEKWlVkbGRFTmhjR0ZqYVhSNUFCd0FFaEFBQUFBQUFBQUFBQUFBQUFB
RUFBQUFBQUFBQUFBQUFBSUFBQTBBQ3hFSUFBQUFxUklBQUdseApBQTRBT1JFS0FBQUFBQUFBQUs4
U0FBQUNBQVlBQUFEeUFBQUFNQUFBQUFBQUFBQUFBQUFBSkFBQUFMZ0ZBQUFEQUFBQUpBQUFBQUFB
CkFBRGxBUUNBQkFBQUFPWUJBSUFhQUFBQTV3RUFnUFVBQUFBa0FBQUFBQUFBQUFBQUFBQWtBQUFB
QUFBQUFBUUFBQUFBQUFBQTZTOEEKQUFRQUJBQUVBQUFBOFFBQUFJRUFBQUErQUJBUkFBQUFBQUFB
QUFBQUFBQUFKQUFBQUFRQUFBQWFBQUFBc0JJQUFBQUFBQUFBQUFGMwphME5CU1cxaFoyVlJkV1Yx
WlVsdWRtRnNhV1JoZEdVQUhBQVNFQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFnQUFE
UUFMCkVRZ0FBQUNwRWdBQWFYRUFEZ0E1RVFvQUFBQUFBQUFBc0JJQUFBSUFCZ0FBQUFEeUFBQUFN
QUFBQUFBQUFBQUFBQUFBSkFBQUFMZ0YKQUFBREFBQUFKQUFBQUFBQUFBRHJBUUNBQkFBQUFPd0JB
SUFhQUFBQTdRRUFnUFVBQUFBa0FBQUFBQUFBQUFBQUFBQWtBQUFBQUFBQQpBQVFBQUFBQUFBQUE2
UzhBQUFRQUJBQUVBQUFBOFFBQUFId0FBQUE1QUJBUkFBQUFBQUFBQUFBQUFBQUFKQUFBQUFRQUFB
QWFBQUFBCnNCSUFBQUFBQUFBQUFBRjNhME5CU1cxaFoyVlJkV1YxWlVac2RYTm9BQndBRWhBQUFB
QUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUEKQUFJQUFBMEFDeEVJQUFBQXFSSUFBR2x4QUE0QU9S
RUtBQUFBQUFBQUFMQVNBQUFDQUFZQThnQUFBREFBQUFBQUFBQUFBQUFBQUNRQQpBQUM0QlFBQUF3
QUFBQ1FBQUFBQUFBQUE4QUVBZ0FRQUFBRHhBUUNBR2dBQUFQSUJBSUQxQUFBQUpBQUFBQUFBQUFB
QUFBQUFKQUFBCkFBQUFBQUFFQUFBQUFBQUFBT2t2QUFBRUFBUUFCQUFBQVBFQUFBQitBQUFBT3dB
UUVRQUFBQUFBQUFBQUFBQUFBQ1FBQUFBRUFBQUEKR2dBQUFLOFNBQUFBQUFBQUFBQUJkMnREUVVs
dFlXZGxVWFZsZFdWRGIyeHNaV04wQUJ3QUVoQUFBQUFBQUFBQUFBQUFBQUFFQUFBQQpBQUFBQUFB
QUFBSUFBQTBBQ3hFSUFBQUFxUklBQUdseEFBNEFPUkVLQUFBQUFBQUFBSzhTQUFBQ0FBWUFBQUR5
QUFBQU1BQUFBQUFBCkFBQUFBQUFBSkFBQUFMZ0ZBQUFEQUFBQUpBQUFBQUFBQUFEMUFRQ0FCQUFB
QVBZQkFJQWFBQUFBOXdFQWdQVUFBQUFrQUFBQUFBQUEKQUFBQUFBQkZBQUFBQUFBQUFDUUFBQUFB
QUFBQTZTOEFBQVFBQkFBRUFBQUE4UUFBQU9jQUFBQS9BQkFSQUFBQUFBQUFBQUFBQUFBQQpSUUFB
QUFRQUFBQTdBQUFBdFJJQUFBQUFBQUFBQUFGM2EwTkJTVzFoWjJWUmRXVjFaVWx1YzJWeWRFbHRZ
V2RsQUJ3QUVoQUFBQUFBCkFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBSUFBQTBBQ3hFSUFBQUFx
UklBQUdseEFBd0FDeEVNQUFBQVFRQUFBSFFBRHdBTEVSUUEKQUFCMUFBQUFkSGx3WlFBTkFBc1JH
QUFBQUNNQUFBQnBaQUFRQUFzUklBQUFBSFVBQUFCbWJHRm5jd0FTQUFzUkpBQUFBTE1TQUFCeQpa
V3hsWVhObEFBOEFDeEVvQUFBQUF3UUFBR2x1Wm04QURnQTVFU3NBQUFBQUFBQUF0UklBQUFJQUJn
QUE4Z0FBQURBQUFBQUFBQUFBCkFBQUFBRVVBQUFDNEJRQUFBd0FBQUNRQUFBQUFBQUFBK2dFQWdB
UUFBQUQ3QVFDQU93QUFBUHdCQUlEMUFBQUFKQUFBQUFBQUFBQUEKQUFBQVJBQUFBQUFBQUFBa0FB
QUFBQUFBQU9rdkFBQUVBQVFBQkFBQUFQRUFBQUF1QVFBQVJ3QVFFUUFBQUFBQUFBQUFBQUFBQUVR
QQpBQUFFQUFBQU9nQUFBTGNTQUFBQUFBQUFBQUFCZDJ0RFFVbHRZV2RsVVhWbGRXVlNaV2RwYzNS
bGNsQnBlR1ZzUW5WbVptVnlBQndBCkVoQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFJ
QUFBMEFDeEVJQUFBQXFSSUFBR2x4QUE4QUN4RU1BQUFBQXdRQUFHUmgKZEdFQUZBQUxFUkFBQUFC
MUFBQUFaR0YwWVY5emFYcGxBQk1BQ3hFVUFBQUFkUUFBQUhKdmQySjVkR1Z6QUJBQUN4RVlBQUFB
ZFFBQQpBSGRwWkhSb0FCRUFDeEVjQUFBQWRRQUFBR2hsYVdkb2RBQVhBQXNSSUFBQUFIVUFBQUJ3
YVhobGJGOW1iM0p0WVhRQUZnQUxFU1FBCkFBQTNFZ0FBWVhSMFlXTm9iV1Z1ZEhNQUVBQUxFU2dB
QUFCMUFBQUFabXhoWjNNQURnQTVFU29BQUFBQUFBQUF0eElBQUFJQUJnQUEKQVBJQUFBQXdBQUFB
QUFBQUFBQUFBQUJFQUFBQXVBVUFBQU1BQUFBa0FBQUFBQUFBQVA4QkFJQUVBQUFBQUFJQWdEb0FB
QUFCQWdDQQo5UUFBQUNRQUFBQUFBQUFBQUFBQUFDd0FBQUFBQUFBQURBQUFBQUFBQUFEcEx3QUFC
QUFFQUFRQUFBRHhBQUFBb2dBQUFEd0FFQkVBCkFBQUFBQUFBQUFBQUFBQXNBQUFBQkFBQUFDSUFB
QUN0RWdBQUFBQUFBQUFBQVhkclEwRkpiV0ZuWlZGMVpYVmxVMlYwUm14aFozTUEKSEFBU0VBQUFB
QUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQWdBQURRQUxFUWdBQUFDcEVnQUFhWEVBRHdBTEVR
d0FBQUIxQUFBQQpiV0Z6YXdBUUFBc1JFQUFBQUhVQUFBQm1iR0ZuY3dBT0FEa1JFZ0FBQUFBQUFB
Q3RFZ0FBQWdBR0FBQUE4Z0FBQURBQUFBQUFBQUFBCkFBQUFBQ3dBQUFDNEJRQUFBd0FBQUNRQUFB
QUFBQUFBQkFJQWdBUUFBQUFGQWdDQUlnQUFBQVlDQUlEMUFBQUFKQUFBQUFBQUFBQUEKQUFBQUpB
QUFBQUFBQUFBRUFBQUFBQUFBQU9rdkFBQUVBQVFBQkFBQUFQRUFBQUIvQUFBQVBBQVFFUUFBQUFB
QUFBQUFBQUFBQUNRQQpBQUFFQUFBQUdnQUFBSzhTQUFBQUFBQUFBQUFCZDJ0RFFVbHRZV2RsVVhW
bGRXVkhaWFJHYkdGbmN3QWNBQklRQUFBQUFBQUFBQUFBCkFBQUFCQUFBQUFBQUFBQUFBQUFDQUFB
TkFBc1JDQUFBQUtrU0FBQnBjUUFPQURrUkNnQUFBQUFBQUFDdkVnQUFBZ0FHQUFEeUFBQUEKTUFB
QUFBQUFBQUFBQUFBQUpBQUFBTGdGQUFBREFBQUFKQUFBQUFBQUFBQUpBZ0NBQkFBQUFBb0NBSUFh
QUFBQUN3SUFnUFVBQUFBawpBQUFBQUFBQUFBQUFBQUFkQUFBQUFBQUFBQUFBQUFBQUFBQUE2UzhB
QUFRQUJBQUVBQUFBOFFBQUFIRUFBQUE5QUJBUkFBQUFBQUFBCkFBQUFBQUFBSFFBQUFBUUFBQUFU
QUFBQXVCSUFBQUFBQUFBQUFBRjNhME5CU1cxaFoyVlJkV1YxWlVkbGRGUjVjR1ZKUkFBY0FCSVEK
QUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUNBQUFPQURrUkJnQUFBQUFBQUFDNEVnQUFB
Z0FHQUFBQUFQSUFBQUF3QUFBQQpBQUFBQUFBQUFBQWRBQUFBdUFVQUFBTUFBQUFrQUFBQUFBQUFB
QTRDQUlBRUFBQUFEd0lBZ0JNQUFBQVFBZ0NBOFFBQUFNZzFBQUF3CkFBMFJVaElBQUFBQUFBQUFB
RjlwYlhCZlgydERSbFI1Y0dWRWFXTjBhVzl1WVhKNVMyVjVRMkZzYkVKaFkydHpBQ1FBQnhGR0V3
QUEKQUNCVlEwaEJVbDlIUlU1RlVrRk1YME5CVkVWSFQxSlpYMDFCVTBzQU1nQU5FVlVTQUFBQUFB
QUFBQUJmYVcxd1gxOXJRMFpVZVhCbApSR2xqZEdsdmJtRnllVlpoYkhWbFEyRnNiRUpoWTJ0ekFC
d0FCeEZHRXdBQUFEQlZRMGhCVWw5T1ZVMUZVa2xEWDFaQlRGVkZBQklBCkJ4RkdFd0FBQUVCVlEw
aEJVbDlCUjBVQUh3QUhFY2tVQUFBTUFFSkpUa1JUVkZKSlRrZGZVRTlUVkY5RFQwOUxTVVVBSndB
SEVja1UKQUFBUUFFSkpUa1JUVkZKSlRrZGZSa3hCUjE5Q1NVNUVYMVJQWDA5Q1NrVkRWQUFnQUFj
Ui9STUFBQUVBUTBaQ2VYUmxUM0prWlhKTQphWFIwYkdWRmJtUnBZVzRBR1FBSEVad1VBQUFCQUZW
U1RGcFBUa1ZmU1U1VVVrRk9SVlFBSVFBTkVUOFRBQUFBQUFBQUFBQmZhVzF3ClgxOXJRMFpDYjI5
c1pXRnVWSEoxWlFBaUFBMFJQeE1BQUFBQUFBQUFBRjlwYlhCZlgydERSa0p2YjJ4bFlXNUdZV3h6
WlFBYkFBY1IKZ1JRQUFBQUFWVkpNV2s5T1JWSkZSMTlFUlVaQlZVeFVBQmdBQnhHQkZBQUFBUUJW
VWt4YVQwNUZVa1ZIWDBoTFRFMEFHd0FIRWJ3VApBQUJPQUZWQ1RFOURTMTlRVWtsV1FWUkZYMVZU
UlFBbUFBY1J2Qk1BQUdFQVZVSk1UME5MWDBOWlVrbE1URWxEWDFOVlVGQk1SVTFGClRsUkJVbGtB
RlFBSEVSTVRBQUFBQUVsa2JHVlRhSFYwWkc5M2JnQVNBQWNSZXhRQUFBRUFVMWxUWDFkSlRqTXlB
QkFBQnhGN0ZBQUEKQWdCVFdWTmZUVUZEQUE0QUJ4R0hGQUFBQWdCV1ZGOUpNZ0FRQUFjUmh4UUFB
QWdBVmxSZlFsTlVVZ0FVQUFjUmh4UUFBQWtBVmxSZgpSRWxUVUVGVVEwZ0FJUUFIRWRrUkFBQUNB
R1p2Ym5SVGJXOXZkR2hwYm1kTVpYWmxiRTFsWkdsMWJRQWVBQXdSQ1JNQUFBQUFBQUFBCkFHRnVk
R2xoYkdsaGMybHVaMGRoYlcxaEFDQUFEQkYxQUFBQUFBQUFBQUFBYzE5bWIyNTBVMjF2YjNSb2FX
NW5WSGx3WlFBaEFBd1IKZEFBQUFBQUFBQUFBQUhOZlptOXVkRk50YjI5MGFHbHVaMHhsZG1Wc0FD
SUFEQkg1RWdBQUFBQUFBQUFBYTBOR1YybHVaRzkzYzFOVApURkJsWlhKRFpYSjBBQklBQnhHSEZB
QUFKQUJXVkY5U1JVTlBVa1FBTHdBTUVmZ1NBQUFBQUFBQUFBQnJRMFpYYVc1a2IzZHpVMU5NClVH
Vmxja05sY25Ra2FXNXBkR2xoYkdsNlpYSWtBQ01BREJINUVnQUFBQUFBQUFBQWEwTkdWMmx1Wkc5
M2MxTlRURXh2WTJGc1EyVnkKZEFBV0FBY1JoeFFBQUFLQUFJQldWRjlTUlZORlVsWkZSQUF3QUF3
UitCSUFBQUFBQUFBQUFHdERSbGRwYm1SdmQzTlRVMHhNYjJOaApiRU5sY25Ra2FXNXBkR2xoYkds
NlpYSWtBREFBREJINUVnQUFBQUFBQUFBQWEwTkdVM1J5WldGdFVISnZjR1Z5ZEhsWGFXNWtiM2R6
ClUxTk1RMlZ5ZEVsdVptOEFQUUFNRWZnU0FBQUFBQUFBQUFCclEwWlRkSEpsWVcxUWNtOXdaWEow
ZVZkcGJtUnZkM05UVTB4RFpYSjAKU1c1bWJ5UnBibWwwYVdGc2FYcGxjaVFBSkFBTUVVQUFBQUFB
QUFBQUFBQnpYMlp2Ym5SVGJXOXZkR2hwYm1kRGIyNTBjbUZ6ZEFBcApBQXdSZEFBQUFBQUFBQUFB
QUhOZmMzbHpkR1Z0Um05dWRGTnRiMjkwYUdsdVowVnVZV0pzWldRQUpnQU1FWFVBQUFBQUFBQUFB
QUJ6ClgzTjVjM1JsYlVadmJuUlRiVzl2ZEdocGJtZFVlWEJsQUNVQURCRXdBQUFBQUFBQUFBQUFj
MTl6ZVhOMFpXMUdiMjUwVTIxdmIzUm8KYVc1blUyVjBBQlVBQnhFVkV3QUFBQUJPVDBSRlgwbE9W
a0ZNU1VRQUZRQUhFUlVUQUFBQkFFNVBSRVZmUlV4RlRVVk9WQUFYQUFjUgpGUk1BQUFJQVRrOUVS
VjlCVkZSU1NVSlZWRVVBRWdBSEVSVVRBQUFEQUU1UFJFVmZWRVZZVkFBYkFBY1JGUk1BQUFRQVRr
OUVSVjlEClJFRlVRVjlUUlVOVVNVOU9BQjRBQnhFVkV3QUFCUUJPVDBSRlgwVk9WRWxVV1Y5U1JV
WkZVa1ZPUTBVQUdBQUhFYWtVQUFBQ0FGUloKVTFCRlExOU5TVTFGVkZsUVJRQVlBQWNScVJRQUFB
TUFWRmxUVUVWRFgwWkpURVZPUVUxRkFCUUFCeEVWRXdBQUJnQk9UMFJGWDBWTwpWRWxVV1FBV0FB
Y1JxUlFBQUFRQVZGbFRVRVZEWDFCU1QwZEpSQUFiQUFjUnFSUUFBQVVBVkZsVFVFVkRYMUJCUTB0
QlIwVk9RVTFGCkFCVUFCeEVWRXdBQUNBQk9UMFJGWDBOUFRVMUZUbFFBRmdBSEVSVVRBQUFKQUU1
UFJFVmZSRTlEVlUxRlRsUUFHd0FIRVJVVEFBQUsKQUU1UFJFVmZSRTlEVlUxRlRsUmZWRmxRUlFB
ZkFBY1JGUk1BQUFzQVRrOUVSVjlFVDBOVlRVVk9WRjlHVWtGSFRVVk9WQUFhQUFjUgpDeE1BQUFL
QS92OXJRMGRHYjI1MFNXNWtaWGhOWVhnQUZnQUhFUXNUQUFBQ2dQNy9hME5IUjJ4NWNHaE5ZWGdB
SFFBSEVlc1VBQUFECkFGaE5URVZNUlUxVVdWQkZYMFJQUTFWTlJVNVVBQ01BQnhFeUV3QUFBUUJD
U1U1RVUxUkJWRlZUWDBaSlRrUkpUa2RTUlZOUFZWSkQKUlFBZUFBY1JNaE1BQUFJQVFrbE9SRk5V
UVZSVlUxOURUMDVPUlVOVVNVNUhBQjhBQnhFeUV3QUFBd0JDU1U1RVUxUkJWRlZUWDFKRgpSRWxT
UlVOVVNVNUhBQ1VBQnhFeUV3QUFCQUJDU1U1RVUxUkJWRlZUWDBKRlIwbE9SRTlYVGt4UFFVUkVR
VlJCQUNNQUJ4RXlFd0FBCkJnQkNTVTVFVTFSQlZGVlRYMFZPUkVSUFYwNU1UMEZFUkVGVVFRQXJB
QWNSTWhNQUFBY0FRa2xPUkZOVVFWUlZVMTlDUlVkSlRrUlAKVjA1TVQwRkVRMDlOVUU5T1JVNVVV
d0FvQUFjUk1oTUFBQWdBUWtsT1JGTlVRVlJWVTE5SlRsTlVRVXhNU1U1SFEwOU5VRTlPUlU1VQpV
d0FwQUFjUk1oTUFBQWtBUWtsT1JGTlVRVlJWVTE5RlRrUkVUMWRPVEU5QlJFTlBUVkJQVGtWT1ZG
TUFJd0FIRVRJVEFBQUtBRUpKClRrUlRWRUZVVlZOZlZWTkpUa2REUVVOSVJVUkRUMUJaQUNJQUJ4
RXlFd0FBQ3dCQ1NVNUVVMVJCVkZWVFgxTkZUa1JKVGtkU1JWRlYKUlZOVUFDVUFCeEV5RXdBQURR
QkNTVTVFVTFSQlZGVlRYMDFKVFVWVVdWQkZRVlpCU1V4QlFreEZBQ29BQnhFeUV3QUFEZ0JDU1U1
RQpVMVJCVkZWVFgwTkJRMGhGUmtsTVJVNUJUVVZCVmtGSlRFRkNURVVBSmdBSEVUSVRBQUFQQUVK
SlRrUlRWRUZVVlZOZlFrVkhTVTVUCldVNURUMUJGVWtGVVNVOU9BQ1FBQnhFeUV3QUFFQUJDU1U1
RVUxUkJWRlZUWDBWT1JGTlpUa05QVUVWU1FWUkpUMDRBS2dBSEVVb1QKQUFBQUFHdERSME52Ykc5
eVEyOWtaVVp5WVdkdFpXNTBURzl2YTNWd1ZHVjRkSFZ5WlFBbkFBY1JTaE1BQUFFQWEwTkhRMjlz
YjNKRApiMlJsUm5KaFoyMWxiblJRWVhKaGJXVjBjbWxqQUNNQUJ4RXlFd0FBRVFCQ1NVNUVVMVJC
VkZWVFgwSkZSMGxPVlZCTVQwRkVSRUZVClFRQWhBQWNSTWhNQUFCTUFRa2xPUkZOVVFWUlZVMTlG
VGtSVlVFeFBRVVJFUVZSQkFDTUFCeEV5RXdBQUZBQkNTVTVFVTFSQlZGVlQKWDFCU1QxUlBRMDlN
UTB4QlUxTkpSQUFjQUFjUk1oTUFBQlVBUWtsT1JGTlVRVlJWVTE5RlRrTlBSRWxPUndBdEFBY1JN
aE1BQUJZQQpRa2xPUkZOVVFWUlZVMTlXUlZKSlJrbEZSRTFKVFVWVVdWQkZRVlpCU1V4QlFreEZB
Q2dBQnhFeUV3QUFGd0JDU1U1RVUxUkJWRlZUClgwTk1RVk5UU1U1VFZFRk1URXhQUTBGVVNVOU9B
QndBQnhFeUV3QUFHQUJDU1U1RVUxUkJWRlZUWDBSRlEwOUVTVTVIQUNZQUJ4RXkKRXdBQUdRQkNT
VTVFVTFSQlZGVlRYMHhQUVVSSlRrZE5TVTFGU0VGT1JFeEZVZ0FzQUFjUk1oTUFBQm9BUWtsT1JG
TlVRVlJWVTE5RApUMDVVUlU1VVJFbFRVRTlUU1ZSSlQwNUJWRlJCUTBnQUp3QUhFVElUQUFBY0FF
SkpUa1JUVkVGVVZWTmZRMHhUU1VSRFFVNUpUbE5VClFVNVVTVUZVUlFBbEFBY1JNaE1BQUIwQVFr
bE9SRk5VUVZSVlUxOUpWVTVMVGs5WFRrRldRVWxNUVVKTVJRQWVBQWNSTWhNQUFCNEEKUWtsT1JG
TlVRVlJWVTE5RVNWSkZRMVJDU1U1RUFCOEFCeEV5RXdBQUh3QkNTVTVFVTFSQlZGVlRYMUpCVjAx
SlRVVlVXVkJGQUNJQQpCeEV5RXdBQUlBQkNTVTVFVTFSQlZGVlRYMUJTVDFoWlJFVlVSVU5VU1U1
SEFDQUFCeEV5RXdBQUlRQkNTVTVFVTFSQlZGVlRYMEZEClEwVlFWRkpCVGtkRlV3QWZBQWNSTWhN
QUFDSUFRa2xPUkZOVVFWUlZVMTlEVDA5TFNVVmZVMFZPVkFBckFBY1JNaE1BQUNNQVFrbE8KUkZO
VVFWUlZVMTlEVDAxUVFVTlVYMUJQVEVsRFdWOVNSVU5GU1ZaRlJBQWxBQWNSTWhNQUFDUUFRa2xP
UkZOVVFWUlZVMTlEVDA5TApTVVZmVTFWUVVGSkZVMU5GUkFBbkFBY1JNaE1BQUNZQVFrbE9SRk5V
UVZSVlUxOURUMDlMU1VWZlUxUkJWRVZmUVVORFJWQlVBQ2NBCkJ4RXlFd0FBSndCQ1NVNUVVMVJC
VkZWVFgwTlBUMHRKUlY5VFZFRlVSVjlTUlVwRlExUUFKd0FIRVRJVEFBQW9BRUpKVGtSVFZFRlUK
VlZOZlEwOVBTMGxGWDFOVVFWUkZYMUJTVDAxUVZBQXVBQWNSTWhNQUFDNEFRa2xPUkZOVVFWUlZV
MTlRUlZKVFNWTlVSVTVVWDBOUApUMHRKUlY5U1JVTkZTVlpGUkFBZ0FBY1JNaE1BQURBQVFrbE9S
Rk5VUVZSVlUxOURRVU5JUlVOUFRsUlNUMHdBTGdBSEVUSVRBQUF4CkFFSkpUa1JUVkVGVVZWTmZR
MDlPVkVWT1ZFUkpVMUJQVTBsVVNVOU9Sa2xNUlU1QlRVVUFLUUFIRVRJVEFBQXlBRUpKVGtSVFZF
RlUKVlZOZlRVbE5SVlJGV0ZSUVRFRkpUazFKVTAxQlZFTklBQ1lBQnhFeUV3QUFNd0JDU1U1RVUx
UkJWRlZUWDFCVlFreEpVMGhGVWtGVwpRVWxNUVVKTVJRQWRBQWNSQ0JNQUFBQUFRMGhCVGtkRlMw
bE9SRjlCUkVSTlJVMUNSVklBSUFBSEVRZ1RBQUFCQUVOSVFVNUhSVXRKClRrUmZSRVZNUlZSRlRV
Vk5Ra1ZTQUJ3QUJ4RUlFd0FBQWdCRFNFRk9SMFZMU1U1RVgxTkZWRTVCVFVWVEFDUUFCeEVJRXdB
QUF3QkQKU0VGT1IwVkxTVTVFWDFORlZFUlBRMVZOUlU1VVFWUkpUMDRBR3dBSEVRZ1RBQUFFQUVO
SVFVNUhSVXRKVGtSZlIwVk9SVkpCVEFBZQpBQWNSQ0JNQUFBVUFRMGhCVGtkRlMwbE9SRjlKVGxa
QlRFbEVRVlJGQUNBQUJ4RUlFd0FBQmdCRFNFRk9SMFZMU1U1RVgwTklRVTVIClJVWkJTVXhGUkFB
dkFBY1JUQk1BQUFBQWEwTkdTRlJVVUVOdmIydHBaVk4wYjNKaFoyVkJZMk5sY0hSUWIyeHBZM2xC
YkhkaGVYTUEKTGdBSEVVd1RBQUFCQUd0RFJraFVWRkJEYjI5cmFXVlRkRzl5WVdkbFFXTmpaWEIw
VUc5c2FXTjVUbVYyWlhJQVF3QUhFVXdUQUFBQwpBR3REUmtoVVZGQkRiMjlyYVdWVGRHOXlZV2Rs
UVdOalpYQjBVRzlzYVdONVQyNXNlVVp5YjIxTllXbHVSRzlqZFcxbGJuUkViMjFoCmFXNEFHd0FI
RWVvU0FBQUJBRkJCVWxORlgwTkJUazlPU1VOQlRFbGFSUUFYQUFjUjZoSUFBQUlBVUVGU1UwVmZS
bEpKUlU1RVRGa0EKR3dBSEVlb1NBQUFEQUZCQlVsTkZYMU5GUTFWU1NWUlpYMVZTVEFBYkFBY1I2
aElBQUFRQVVFRlNVMFZmVWs5UFZFUlBRMVZOUlU1VQpBQmNBQnhIcUVnQUFCUUJRUVZKVFJWOUVU
ME5WVFVWT1ZBQW1BQTBSaUJRQUFBQUFBQUFBQUY5cGJYQmZYMnREUmtGc2JHOWpZWFJ2CmNrUmxa
bUYxYkhRQUZRQUhFZW9TQUFBSEFGQkJVbE5GWDBWT1EwOUVSUUFWQUFjUjZoSUFBQWdBVUVGU1Uw
VmZSRVZEVDBSRkFCd0EKQnhIcUVnQUFDUUJRUVZKVFJWOVFRVlJJWDBaU1QwMWZWVkpNQUJ3QUJ4
SHFFZ0FBQ2dCUVFWSlRSVjlWVWt4ZlJsSlBUVjlRUVZSSQpBQk1BQnhIcUVnQUFDd0JRUVZKVFJW
OU5TVTFGQUJVQUJ4SHFFZ0FBREFCUVFWSlRSVjlUUlZKV1JWSUFGUUFIRWVvU0FBQU5BRkJCClVs
TkZYMU5EU0VWTlFRQVRBQWNSNmhJQUFBNEFVRUZTVTBWZlUwbFVSUUFWQUFjUjZoSUFBQThBVUVG
U1UwVmZSRTlOUVVsT0FCY0EKQnhIcUVnQUFFQUJRUVZKVFJWOU1UME5CVkVsUFRnQWVBQWNSNmhJ
QUFCRUFVRUZTVTBWZlUwVkRWVkpKVkZsZlJFOU5RVWxPQUJVQQpCeEhxRWdBQUVnQlFRVkpUUlY5
RlUwTkJVRVVBRkFBSEVmSVRBQUFCQUZCVFZWOUVSVVpCVlV4VUFDQUFCeEhGRkFBQUNnQlJWVVZT
CldWOUpVMTlKVGxOVVFVeE1SVVJGVGxSU1dRQXFBQWNST2hNQUFBRUFhME5IUm05dWRGSmxibVJs
Y21sdVoxTjBlV3hsUVc1MGFXRnMKYVdGemFXNW5BREVBQnhFNkV3QUFCQUJyUTBkR2IyNTBVbVZ1
WkdWeWFXNW5VM1I1YkdWVGRXSndhWGhsYkZCdmMybDBhVzl1YVc1bgpBRElBQnhFNkV3QUFDQUJy
UTBkR2IyNTBVbVZ1WkdWeWFXNW5VM1I1YkdWVGRXSndhWGhsYkZGMVlXNTBhWHBoZEdsdmJnQWxB
QWNSCjhoSUFBQkFBYTBOSFJtOXVkRk50YjI5MGFHbHVaMU4wZVd4bFRXbHVhVzExYlFBakFBY1I4
aElBQUNBQWEwTkhSbTl1ZEZOdGIyOTAKYUdsdVoxTjBlV3hsVEdsbmFIUUFKQUFIRWZJU0FBQXdB
R3REUjBadmJuUlRiVzl2ZEdocGJtZFRkSGxzWlUxbFpHbDFiUUFqQUFjUgo4aElBQUVBQWEwTkhS
bTl1ZEZOdGIyOTBhR2x1WjFOMGVXeGxTR1ZoZG5rQUpnQUhFZkFUQUFBQUFHdERSMU4wZVd4bFJI
SmhkMDl5ClpHVnlhVzVuVTNSNWJHVlBibXg1QUNJQUJ4SHdFd0FBQVFCclEwZFRkSGxzWlVSeVlY
ZFBjbVJsY21sdVowSmxiRzkzQUJnQUJ4RXkKRkFBQUF3QlVTMGxPUkY5SlRsUkZVa1pCUTBVQUZ3
QUhFVElVQUFBRUFGUkxTVTVFWDBSSlUxQkJWRU5JQUJRQUJ4RXlGQUFBQmdCVQpTMGxPUkY5QlRF
bEJVd0FmQUFjUjdoSUFBQUFBUmtWQlZGVlNSVjlQUWtwRlExUmZRMEZEU0VsT1J3QWZBQWNSN2hJ
QUFBRUFSa1ZCClZGVlNSVjlhVDA1RlgwVk1SVlpCVkVsUFRnQWVBQWNSN2hJQUFBSUFSa1ZCVkZW
U1JWOU5TVTFGWDBoQlRrUk1TVTVIQUI0QUJ4SHUKRWdBQUF3QkdSVUZVVlZKRlgwMUpUVVZmVTA1
SlJrWkpUa2NBSkFBSEVlNFNBQUFFQUVaRlFWUlZVa1ZmVjBsT1JFOVhYMUpGVTFSUwpTVU5VU1U5
T1V3QVdBQWNSOWhJQUFBQUFRMGxRWDBSSlUwdGZSbFZNVEFBYUFBY1I5aElBQUFFQVEwbFFYMEZE
UTBWVFUxOUVSVTVKClJVUUFKZ0FIRWU0U0FBQUZBRVpGUVZSVlVrVmZWMFZDVDBOZlVFOVFWVkJO
UVU1QlIwVk5SVTVVQUNFQUJ4SDJFZ0FBQWdCRFNWQmYKVGtWWFJWSmZWa1ZTVTBsUFRsOUZXRWxU
VkZNQUdnQUhFZTRTQUFBR0FFWkZRVlJWVWtWZlFrVklRVlpKVDFKVEFDUUFCeEh1RWdBQQpCd0JH
UlVGVVZWSkZYMFJKVTBGQ1RFVmZUVXRmVUZKUFZFOURUMHdBSVFBSEVmWVNBQUFEQUVOSlVGOVBU
RVJGVWw5V1JWSlRTVTlPClgwVllTVk5VVXdBYUFBY1I5aElBQUFRQVEwbFFYMDVCVFVWZlEwOU9S
a3hKUTFRQUpnQUhFZTRTQUFBSUFFWkZRVlJWVWtWZlRFOUQKUVV4TlFVTklTVTVGWDB4UFEwdEVU
MWRPQURFQUJ4SDJFZ0FBQlFCRFNWQmZWRkpWVTFSZlZrVlNTVVpKUTBGVVNVOU9YME5QVFZCUApU
a1ZPVkY5TlNWTlRTVTVIQUIwQUJ4SHVFZ0FBQ1FCR1JVRlVWVkpGWDFORlExVlNTVlJaUWtGT1JB
QXJBQWNSOWhJQUFBWUFRMGxRClgwVllSVjlUUlV4R1gxSkZSMGxUVkVWU1FWUkpUMDVmVkVsTlJV
OVZWQUFvQUFjUjdoSUFBQW9BUmtWQlZGVlNSVjlTUlZOVVVrbEQKVkY5QlExUkpWa1ZZU1U1VFZF
Rk1UQUFjQUFjUjloSUFBQWNBUTBsUVgxVk9VMEZHUlY5VVQxOUJRazlTVkFBbUFBY1I3aElBQUF3
QQpSa1ZCVkZWU1JWOVNSVk5VVWtsRFZGOUdTVXhGUkU5WFRreFBRVVFBR0FBSEVmWVNBQUFJQUVO
SlVGOU9SVVZFWDFKRlFrOVBWQUFoCkFBY1I3aElBQUEwQVJrVkJWRlZTUlY5QlJFUlBUbDlOUVU1
QlIwVk5SVTVVQUNJQUJ4SHVFZ0FBRGdCR1JVRlVWVkpGWDFCU1QxUlAKUTA5TVgweFBRMHRFVDFk
T0FDOEFCeEh1RWdBQUR3QkdSVUZVVlZKRlgwaFVWRkJmVlZORlVrNUJUVVZmVUVGVFUxZFBVa1Jm
UkVsVApRVUpNUlFBaUFBY1I3aElBQUJBQVJrVkJWRlZTUlY5VFFVWkZYMEpKVGtSVVQwOUNTa1ZE
VkFBakFBY1I3aElBQUJFQVJrVkJWRlZTClJWOVZUa05mVTBGV1JVUkdTVXhGUTBoRlEwc0FMd0FI
RWU0U0FBQVNBRVpGUVZSVlVrVmZSMFZVWDFWU1RGOUVUMDFmUmtsTVJWQkIKVkVoZlZVNUZUa05Q
UkVWRUFCY0FCeEdBRWdBQUFBQnJTRlJVVUV4dllXUlhhV1IwYUFBZ0FBY1JxeFFBQUFRQVJFVlRR
MHRKVGtSZgpTVTFRVEVsRFNWUkJVRkJQUWtvQUhRQUhFWm9VQUFBQ0FFTlBVbDlXUlZKVFNVOU9Y
MDFCU2s5U1gxWXlBREFBRFJINUVnQUFBQUFBCkFBQUFYMmx0Y0Y5ZmEwTkdVM1J5WldGdFVISnZj
R1Z5ZEhsRFQwNU9SVU5VVUhKdmVIa0FOQUFORWZrU0FBQUFBQUFBQUFCZmFXMXcKWDE5clEwWlRk
SEpsWVcxUWNtOXdaWEowZVVOUFRrNUZRMVJRY205NGVVaHZjM1FBTkFBTkVma1NBQUFBQUFBQUFB
QmZhVzF3WDE5cgpRMFpUZEhKbFlXMVFjbTl3WlhKMGVVTlBUazVGUTFSUWNtOTRlVkJ2Y25RQVBB
QU5FZmtTQUFBQUFBQUFBQUJmYVcxd1gxOXJRMFpUCmRISmxZVzFRY205d1pYSjBlVU5QVGs1RlEx
UkJaR1JwZEdsdmJtRnNTR1ZoWkdWeWN3QXpBQTBSK1JJQUFBQUFBQUFBQUY5cGJYQmYKWDJ0RFJs
TjBjbVZoYlZCeWIzQmxjblI1UTA5T1RrVkRWRkpsYzNCdmJuTmxBQlVBQnhHdEVRQUFBQUJWWDFw
RlVrOWZSVkpTVDFJQQpFUUFIRWZBU0FBQUJBRU5EWDBORVJVTk1BQlVBQnhId0VnQUFBZ0JEUTE5
TlUwTlFRVk5EUVV3QUVnQUhFZkFTQUFBQ0FFTkRYMUJCClUwTkJUQUFWQUFjUjhCSUFBQU1BUTBO
ZlRVRkRVRUZUUTBGTUFCTUFCeEh3RWdBQUJBQkRRMTlUVkVSRFFVeE1BQllBQnhId0VnQUEKQlFC
RFExOUdVRVpCVTFSRFFVeE1BQk1BQnhId0VnQUFCZ0JEUTE5VFdWTkRRVXhNQUJRQUJ4SHdFZ0FB
QndCRFExOU5VRmREUkVWRApUQUFWQUFjUjhCSUFBQWdBUTBOZlRWQlhVRUZUUTBGTUFDTUFCeEVJ
RlFBQUFRQnJRMVpVYVcxbFUzUmhiWEJXYVdSbGIxUnBiV1ZXCllXeHBaQUFxQUFjUnJSRUFBQVNB
QVFFQkFGVmZUVlZNVkVsUVRFVmZSRVZEU1UxQlRGOVRSVkJCVWtGVVQxSlRBQ0lBQnhFSUZRQUEK
QWdCclExWlVhVzFsVTNSaGJYQkliM04wVkdsdFpWWmhiR2xrQUNFQUJ4RUlGUUFBQklBQUFBRUFh
ME5XVkdsdFpWTjBZVzF3Vkc5dwpSbWxsYkdRQUpBQUhFUWdWQUFBRWdBQUFBZ0JyUTFaVWFXMWxV
M1JoYlhCQ2IzUjBiMjFHYVdWc1pBQVRBQWNSekJRQUFBRUFWa0ZTClgxTlVRVlJKUXdBa0FBY1Jy
UkVBQUFTQUFBUUJBRlZmU1VST1FWOVFVazlJU1VKSlZFVkVYMFZTVWs5U0FDUUFCeEd0RVFBQUJJ
QUIKQkFFQVZWOUpSRTVCWDFWT1FWTlRTVWRPUlVSZlJWSlNUMUlBSkFBSEVhMFJBQUFFZ0FJRUFR
QlZYMGxFVGtGZlEwaEZRMHRmUWtsRQpTVjlGVWxKUFVnQWZBQWNSclJFQUFBU0FDUVFCQUZWZlNV
Uk9RVjlGVWxKUFVsOU1TVTFKVkFBWkFBY1JSaE1BQUFBUVZVTklRVkpmClFrbEVTVjlEVEVGVFV3
QVRBQWdSL0JRQUFIUmhaMUJCVWtGTlJFVlRRd0FWQUFnUkFCVUFBSFJoWjFCQlVrRk5SRVZUUTBW
WUFCRUEKQ0JIK0ZBQUFkR0ZuUWtsT1JGQlVVZ0FVQUFnUitoUUFBRXhRVUVGU1FVMUVSVk5EUlZn
QUR3QUlFZkFTQUFCRFFVeE1RMDlPVmdBTwpBQWdSL2hRQUFFSkpUa1JRVkZJQUR3QUlFVElVQUFC
VVdWQkZTMGxPUkFBUEFBZ1JneFFBQUVaVlRrTkxTVTVFQUJBQUNCSDhGQUFBClVFRlNRVTFFUlZO
REFCQUFDQkYzRWdBQVNFbE9VMVJCVGtORkFCSUFDQkY5RkFBQWRHRm5WRXhKUWtGVVZGSUFEd0FJ
RWZZVUFBQkYKVEVWTlJFVlRRd0FLQUFnUnhSQUFBRk5PUWdBUkFBZ1IwaEFBQUZaQlVrbEJUbFJC
VWtjQUZRQUlFWjRVQUFCVFFVWkZRVkpTUVZsQwpUMVZPUkFBU0FBZ1I5aFFBQUhSaFowVk1SVTFF
UlZOREFBOEFDQkdyRkFBQVJFVlRRMHRKVGtRQUR3QUlFYVVVQUFCVVdWQkZSRVZUClF3QVRBQWdS
NlJRQUFIUmhaMFZZUTBWUVNVNUdUd0FSQUFnUjloTUFBSFJoWjFOVVFWUlRWRWNBRUFBSUVTSUFB
QUJWVEU5T1IxOVEKVkZJQURnQUlFY3dVQUFCV1FWSkxTVTVFQUJNQUNCSHpGQUFBUTBaQ2IyOXNa
V0Z1VW1WbUFBOEFDQkZ4QkFBQVRGQlBURVZUVkZJQQpFZ0FJRWU0VUFBQjBZV2RHVlU1RFJFVlRR
d0FNQUFnUklnQUFBRlZNVDA1SEFCRUFDQkdnRkFBQWRHRm5TVVJNUkVWVFF3QXFBQWdSClN4SUFB
RU5HUkdsamRHbHZibUZ5ZVVOdmNIbEVaWE5qY21sd2RHbHZia05oYkd4Q1lXTnJBQW9BQ0JGSUVB
QUFTVWxFQUIwQUNCRmcKRWdBQVEwWklWRlJRUTI5dmEybGxVM1J2Y21GblpWSmxaZ0FQQUFnUkV3
QUFBRXhQVGtkTVQwNUhBQmtBQ0JIeUZBQUFkR0ZuUVhCdwpiR2xqWVhScGIyNVVlWEJsQUJBQUNC
SFlFZ0FBZEdGblEwRkNVMVJTQUJZQUNCRTNFZ0FBUTBaRWFXTjBhVzl1WVhKNVVtVm1BQm9BCkNC
SHdGQUFBVUVsRVRWTkpYMU5VUVZSVlUxOVdRVXhWUlFBVEFBZ1JJUUFBQUZCU1QxQldRVkpmVUVG
RU13QU5BQWdSQXdRQUFFeFEKVms5SlJBQU1BQWdSN1JFQUFGOU5RVlF5QUE4QUNCSHVGQUFBUmxW
T1EwUkZVME1BRVFBSUVmOFNBQUIwWVdkRFFVTk1VMGxFQUE4QQpDQkVFRXdBQWRHRm5RMEZFUWt3
QUR3QUlFUUFVQUFCemIyTnJZV1JrY2dBWUFBZ1JIeEFBQUd4dlkyRnNaV2x1Wm05ZmMzUnlkV04w
CkFBMEFDQkVpQUFBQVUwbGFSVjlVQUE0QUNCRWdBQUFBUWs5UFRFVkJUZ0FVQUFnUlpSSUFBRU5H
VlZKTVEyRmphR1ZTWldZQUR3QUkKRVNJQUFBQklVa1ZHVkZsUVJRQWJBQWdSZFFBQUFFTkhSbTl1
ZEZKbGJtUmxjbWx1WjFOMGVXeGxBQlFBQ0JHWUVRQUFRMGRHZFc1agpkR2x2YmxKbFpnQUxBQWdS
aFJRQUFFTkJWVUlBREFBSUVYRUFBQUJWUTJoaGNnQVNBQWdSTWhRQUFIUmhaMVJaVUVWTFNVNUVB
QklBCkNCRjdFUUFBUTBkTlJEVkVhV2RsYzNRQUVnQUlFYXNVQUFCMFlXZEVSVk5EUzBsT1JBQU9B
QWdSdVJNQUFIUmhaME5CUTFrQUVnQUkKRVNFQUFBQkRSMFp2Ym5SSmJtUmxlQUFlQUFnUm5oRUFB
RU5IUTI5c2IzSlRjR0ZqWlZCaGRIUmxjbTVFWVhSaEFCWUFDQkdWRWdBQQpRMFpTWldGa1UzUnla
V0Z0VW1WbUFCRUFDQkY3RkFBQWRHRm5VMWxUUzBsT1JBQVhBQWdSOUJNQUFFSkpWRTFCVUVsT1Jr
OUlSVUZFClJWSUFGZ0FJRWVzVUFBQjBZV2RZVFV4RlRVVk5YMVJaVUVVQURnQUlFWEVBQUFCUFRF
VkRTRUZTQUJFQUNCSE1GQUFBZEdGblZrRlMKUzBsT1JBQVFBQWdSQ2hVQUFGOURWbEpsZEhWeWJn
QW5BQWdSZEFBQUFFTkhRMjlzYjNKRGIyUmxSbkpoWjIxbGJuUlVaWGgwZFhKbApSbTl5YldGMEFB
NEFDQkYwQUFBQVpYSnlibTlmZEFBUUFBZ1I2UlFBQUVWWVEwVlFTVTVHVHdBTkFBZ1JDeEFBQUV4
UVExTlVVZ0FRCkFBZ1JOaE1BQUY5R1NVeEZWRWxOUlFBUUFBZ1JJd0FBQUZWTVQwNUhURTlPUndB
T0FBZ1J6aFFBQUZaQlVrUkZVME1BRUFBSUVTa1EKQUFCTVVFTlBURVZUVkZJQURBQUlFWEFFQUFC
TVVGTlVVZ0FNQUFnUjVCUUFBR3hqYjI1MkFBOEFDQkhpRkFBQVNWVnVhMjV2ZDI0QQpEd0FJRVJJ
QUFBQk5SVTFDUlZKSlJBQVRBQWdSMGhRQUFIUmhaMEZTVWtGWlJFVlRRd0FnQUFnUm9oRUFBRU5I
UTI5c2IzSkRiMlJsClJuSmhaMjFsYm5STllYUnlhWGdBSFFBSUVWWVNBQUJEUmsxMWRHRmliR1ZF
YVdOMGFXOXVZWEo1VW1WbUFBMEFDQkZCQUFBQVJFOVYKUWt4RkFCRUFDQkhPRkFBQWRHRm5Wa0ZT
UkVWVFF3QUpBQWdSdnhRQUFFTlpBQlFBQ0JISkZBQUFkR0ZuUWtsT1JGTlVVa2xPUndBUgpBQWdS
eHhRQUFGVk1hVzVsUW5KbFlXc0FEZ0FJRVRvVUFBQkVSVU5KVFVGTUFCRUFDQkVpQUFBQVEwWklZ
WE5vUTI5a1pRQWhBQWdSClZSSUFBRU5HUkdsamRHbHZibUZ5ZVZaaGJIVmxRMkZzYkVKaFkydHpB
QlVBQ0JFZEVBQUFjSFJvY21WaFpHMWlZMmx1Wm04QURnQUkKRVNrUUFBQk1VRU5YVTFSU0FBNEFD
QkY3RkFBQVUxbFRTMGxPUkFBTEFBZ1IyaElBQUVOQlZVd0FEd0FJRVg4VUFBQkNVMVJTUWt4UApR
Z0FOQUFnUlFoTUFBSFJoWjBOQlNBQVFBQWdSQ1JJQUFFTkdSR0YwWVZKbFpnQU9BQWdSZFFBQUFI
SnphWHBsWDNRQUZnQUlFY1VVCkFBQmZkR0ZuVVZWRlVsbFBVRlJKVDA0QURRQUlFWFVBQUFCVlNX
NTBNeklBR2dBSUVZY1JBQUJEUjBOdmJHOXlVM0JoWTJWTVlXSkUKWVhSaEFCY0FDQkhERkFBQVgw
TkhTVzUwWlhKdVlXeEZjbkp2Y2dBTUFBZ1J2eFFBQUhSaFowTlpBQkFBQ0JHOUZBQUFTVlI1Y0dW
RApiMjF3QUNRQUNCR0RFUUFBUTBkRGIyeHZjbE53WVdObFEyRnNhV0p5WVhSbFpGSkhRa1JoZEdF
QUN3QUlFWFFBQUFCQ1QwOU1BQjBBCkNCRnVFZ0FBUTBaTmRYUmhZbXhsVlZKTVVtVnhkV1Z6ZEZK
bFpnQU9BQWdSNmhNQUFIUmhaME5CVlVrQUVnQUlFU0lBQUFCVFJWSlcKU1VORlZGbFFSUUFXQUFn
UmF4SUFBRU5HVlZKTVVtVnhkV1Z6ZEZKbFpnQVVBQWdSK3hNQUFIUmhaME5CUmtsTVJWUkpUVVVB
RkFBSQpFZmdUQUFCMFlXZEVTVk5RVUVGU1FVMVRBQk1BQ0JFUkFBQUFWa0ZTU1VGT1ZGOUNUMDlN
QUFzQUNCRWlBQUFBVEVOSlJBQVRBQWdSCjdoTUFBSFJoWjFOQlJrVkJVbEpCV1FBU0FBZ1J5aEFB
QUZCU1QxQldRVkpKUVU1VUFCUUFDQkVRRXdBQVEwRlFVazlRVmtGU1NVRk8KVkFBU0FBZ1JQeEVB
QUVOR1UzUnlhVzVuVW1WbUFCQUFDQkdwRkFBQWRHRm5WRmxUVUVWREFCSUFDQkdsRkFBQWRHRm5W
RmxRUlVSRgpVME1BRWdBSUVUZ1VBQUIwWVdkRFRFbFFSRUZVUVFBTkFBZ1JLUlFBQUVOQlJFRlVS
UUFmQUFnUlVCSUFBRU5HUkdsamRHbHZibUZ5CmVVaGhjMmhEWVd4c1FtRmphd0FSQUFnUlNCTUFB
SFJoWjFKSFFsRlZRVVFBRlFBSUViOFJBQUJNVUVkTVdWQklUVVZVVWtsRFV3QU4KQUFnUi9SSUFB
SFJoWjBOQlF3QVFBQWdSQVJBQUFFTkdWSGx3WlZKbFpnQVhBQWdSVmhFQUFFTkdVM2RoY0hCbFpF
WnNiMkYwTXpJQQpFd0FJRWVvUkFBQkhURmxRU0UxRlZGSkpRMU1BRHdBSUVTRUFBQUIxYVc1ME1U
WmZkQUFOQUFnUkV3QUFBSFJwYldWZmRBQU9BQWdSCnhoRUFBRWhDU1ZSTlFWQUFEZ0FJRVhRQUFB
QnBiblF6TWw5MEFBNEFDQkdnRkFBQVNVUk1SRVZUUXdBU0FBZ1JOaFFBQUhSaFoxUloKVUVWQlZG
UlNBQmdBQ0JHZUZBQUFkR0ZuVTBGR1JVRlNVa0ZaUWs5VlRrUUFFZ0FJRVpvU0FBQkRSazUxYldK
bGNsSmxaZ0FPQUFnUgoreElBQUhSaFowSk1UMElBRVFBSUVad1VBQUIwWVdkVlVreGFUMDVGQUE0
QUNCRURCQUFBU0VkRVNVOUNTZ0FWQUFnUmVSUUFBRjlNClFWSkhSVjlKVGxSRlIwVlNBQ01BQ0JH
YUZBQUFVbVZ3YkdGalpYTkRiM0pJWkhKT2RXMWxjbWxqUkdWbWFXNWxjd0FXQUFnUktCUUEKQUY5
VlRFRlNSMFZmU1U1VVJVZEZVZ0FnQUFnUmlCSUFBRU5HVlZKTVEzSmxaR1Z1ZEdsaGJGTjBiM0po
WjJWU1pXWUFGZ0FJRVk4UgpBQUJEUjBOdmJHOXlVM0JoWTJWU1pXWUFHQUFJRVpnVUFBQkpVMlZ4
ZFdWdWRHbGhiRk4wY21WaGJRQU9BQWdSUUFBQUFFTkhSbXh2CllYUUFEd0FJRVhVQUFBQjFhVzUw
TXpKZmRBQVBBQWdSSXdBQUFIVnBiblEyTkY5MEFCVUFDQkZCQUFBQVEwWlVhVzFsU1c1MFpYSjIK
WVd3QURnQUlFWWNVQUFCV1FWSkZUbFZOQUF3QUNCRlRFd0FBVEVOZlNVUUFEUUFJRWZjU0FBQjBZ
V2REUVVrQURnQUlFZVlRQUFCZgpWMU5CUWxWR0FBd0FDQkgwRWdBQVVFOUpUbFFBRGdBSUVZVVVB
QUIwWVdkRFFWVkNBQk1BQ0JId0VRQUFRMGREYjI1MFpYaDBVbVZtCkFCSUFDQkdERkFBQWRHRm5S
bFZPUTB0SlRrUUFEZ0FJRVNrUUFBQlFRMVZYVTFSU0FDVUFDQkYvRVFBQVEwZERiMnh2Y2xOd1lX
TmwKUTJGc2FXSnlZWFJsWkVkeVlYbEVZWFJoQUJJQUNCR3JFQUFBVEZCVFFVWkZRVkpTUVZrQURn
QUlFU0FBQUFCQ2IyOXNaV0Z1QUJRQQpDQkhxRVFBQVgwZE1XVkJJVFVWVVVrbERVd0FPQUFnUmJo
RUFBRU5IVUc5cGJuUUFFZ0FJRVlFVUFBQmZWVkpNV2s5T1JWSkZSd0FPCkFBZ1IzUkFBQUdsdVgy
RmtaSElBSHdBSUVWSVNBQUJEUmtScFkzUnBiMjVoY25sTFpYbERZV3hzUW1GamEzTUFEZ0FJRVNB
QUFBQjEKYVc1ME9GOTBBQllBQ0JHcEVnQUFRMEZKYldGblpWRjFaWFZsVW1WbUFCSUFDQkYvRkFB
QWRHRm5RbE5VVWtKTVQwSUFEd0FJRVgwVQpBQUJVVEVsQ1FWUlVVZ0FVQUFnUmVSUUFBRXhCVWtk
RlgwbE9WRVZIUlZJQUV3QUlFWFVVQUFCSlJXNTFiVk5VUVZSVFZFY0FEZ0FJCkVTRUFBQUJXUVZK
VVdWQkZBQkFBQ0JGMEFBQUFjSFJ5WkdsbVpsOTBBQmdBQ0JIcUVBQUFYMWRUUVZCU1QxUlBRMDlN
UTBoQlNVNEEKRGdBSUVUb1JBQUJEUmxKaGJtZGxBQThBQ0JGa0ZBQUFTVlI1Y0dWTWFXSUFEUUFJ
RVRvVUFBQjBZV2RFUlVNQUhRQUlFZWdTQUFCMAphSEpsWVdSc2IyTmhiR1ZwYm1admMzUnlkV04w
QUJ3QUNCRUdGUUFBUTFaUWJHRnVZWEpEYjIxd2IyNWxiblJKYm1adkFBOEFDQkU0CkZBQUFRMHhK
VUVSQlZFRUFEd0FJRVRZVUFBQlVXVkJGUVZSVVVnQVJBQWdSMGhBQUFIUmhaMVpCVWtsQlRsUUFE
UUFJRVJJQUFBQkUKU1ZOUVNVUUFEUUFJRVNFQUFBQlZVMGhQVWxRQUZ3QUlFVHdTQUFCRFJsVlNU
RkpsYzNCdmJuTmxVbVZtQUNFQUNCRkhFZ0FBUTBaRQphV04wYVc5dVlYSjVVbVYwWVdsdVEyRnNi
RUpoWTJzQURBQUlFUU1FQUFCUVZrOUpSQUFRQUFnUktSUUFBSFJoWjBOQlJFRlVSUUFPCkFBZ1Jk
eElBQUVoTlQwUlZURVVBR1FBSUVWVVFBQUJUV1ZOVVJVMWZVRTlYUlZKZlUxUkJWRVVBQ2dBSUVS
RVRBQUJEUVV3QUVBQUkKRVJjUUFBQmZiRzlqWVd4bFgzUUFEUUFJRWVjUkFBQkNTVlJOUVZBQUVB
QUlFZU1RQUFCZlpteHZkM053WldNQUN3QUlFZTBSQUFCTgpRVlF5QUJJQUNCRURGUUFBUTFaVFRW
QlVSVlJwYldVQURnQUlFUUlUQUFCMFlXZERRVlZJQUJVQUNCRW9GQUFBVlV4QlVrZEZYMGxPClZF
VkhSVklBRWdBSUVTUVVBQUJKVW1WamIzSmtTVzVtYndBWEFBZ1JvaElBQUVOR1NGUlVVRTFsYzNO
aFoyVlNaV1lBRGdBSUVYd1MKQUFCR1FWSlFVazlEQUEwQUNCRnVFQUFBYkdScGRsOTBBQTBBQ0JF
aEFBQUFkMmx1ZEY5MEFBNEFDQkhjRWdBQVEwRlRRMDlFUlFBTgpBQWdST0JNQUFGOUdTVmhGUkFB
TkFBZ1JHaEVBQUY5cGIySjFaZ0FQQUFnUklnQUFBRU5QVEU5U1VrVkdBQmdBQ0JHTUVRQUFRMGRF
CllYUmhVSEp2ZG1sa1pYSlNaV1lBSWdBSUViTVNBQUJEUVVsdFlXZGxVWFZsZFdWU1pXeGxZWE5s
UTJGc2JHSmhZMnNBRndBSUVWNFIKQUFCRFJsTjNZWEJ3WldSR2JHOWhkRFkwQUNRQUNCR3pFZ0FB
ZDJ0RFFVbHRZV2RsVVhWbGRXVlNaV3hsWVhObFEyRnNiR0poWTJzQQpFUUFJRWUwUUFBQk1VRk5Q
UTB0QlJFUlNBQkFBQ0JIbkVRQUFkR0ZuUWtsVVRVRlFBQlFBQ0JIOUV3QUFYMTlEUmtKNWRHVlBj
bVJsCmNnQU1BQWdSSUFBQUFGVkRTRUZTQUJFQUNCSGtFUUFBUWtsVVRVRlFTVTVHVHdBT0FBZ1JF
Z0FBQUVOR1NXNWtaWGdBRVFBSUVmc1QKQUFCRFFVWkpURVZVU1UxRkFCRUFDQkg0RXdBQVJFbFRV
RkJCVWtGTlV3QWJBQWdSUXhFQUFFTkdVM1J5YVc1blNXNXNhVzVsUW5WbQpabVZ5QUJBQUNCSE1F
QUFBVEZCV1FWSkpRVTVVQUJBQUNCRjFBQUFBVlZSR016SkRhR0Z5QUF3QUNCRWlBQUFBUkZkUFVr
UUFEZ0FJCkVYQUVBQUIyWVY5c2FYTjBBQkVBQ0JHVkV3QUFTVTVXVDB0RlMwbE9SQUFlQUFnUmxC
RUFBRU5IUTI5c2IzSlRjR0ZqWlVsdVpHVjQKWldSRVlYUmhBQTRBQ0JIMkV3QUFVMVJCVkZOVVJ3
QVdBQWdScXhFQUFFTkhSbTl1ZEZaaGNtbGhkR2x2YmdBUEFBZ1JwUklBQUVORwpWVkpNVW1WbUFB
MEFDQkVEQkFBQVNFRk9SRXhGQUJvQUNCSDBFd0FBZEdGblFrbFVUVUZRU1U1R1QwaEZRVVJGVWdB
TkFBZ1JJQUFBCkFIVmZZMmhoY2dBU0FBZ1J1aE1BQUhSaFowTkJURkJYVTFSU0FBNEFDQkZBQUFB
QVJteHZZWFF6TWdBTEFBZ1JJUUFBQUZkUFVrUUEKRXdBSUVVOFFBQUJRVDFkRlVsOUJRMVJKVDA0
QUN3QUlFU0FBQUFCQ1dWUkZBQ0FBQ0JGT0VnQUFRMFpFYVdOMGFXOXVZWEo1UlhGMQpZV3hEWVd4
c1FtRmphd0FNQUFnUk5CTUFBRU5CUmt4VUFCUUFDQkh5RXdBQVgzUmhaMUJUVlVGRFZFbFBUZ0FU
QUFnUklRQUFBRkJTClQxQldRVkpmVUVGRU1RQU9BQWdSdHhNQUFFTkJURkJUVkZJQUZRQUlFVVFT
QUFCRFJrRnNiRzlqWVhSdmNsSmxaZ0FPQUFnUklRQUEKQUhWZmMyaHZjblFBRVFBSUVhMFJBQUJW
UlhKeWIzSkRiMlJsQUF3QUNCRnhBQUFBVjBOSVFWSUFIZ0FJRVpzUkFBQkRSME52Ykc5eQpVM0Jo
WTJWRVpYWnBZMlZPUkdGMFlRQWFBQWdSOEJNQUFFTkhVM1I1YkdWRWNtRjNUM0prWlhKcGJtY0FI
Z0FJRVkwU0FBQkRSbFZTClRGQnliM1JsWTNScGIyNVRjR0ZqWlZKbFpnQVFBQWdSN2hNQUFGTkJS
a1ZCVWxKQldRQVJBQWdSRXdBQUFGOWZkR2x0WlRZMFgzUUEKRUFBSUVld1NBQUIwWVdkRFFVSlBU
MHdBQ3dBSUVlb1RBQUJEUVZWSkFBOEFDQkhvRXdBQVNWTjBiM0poWjJVQUR3QUlFU0lBQUFCRApS
bFI1Y0dWSlJBQVJBQWdSdkJNQUFGVkNiRzlqYTBOdlpHVUFEQUFJRVJFQUFBQlRTRTlTVkFBTEFB
Z1JFZ0FBQUV4UFRrY0FDUUFJCkVURVJBQUIwYlFBUkFBZ1JjUklBQUVOR1FYSnlZWGxTWldZQUl3
QUlFWUFTQUFCSVZGUlFRMjl1Ym1WamRHbHZia05oWTJobFRHbHQKYVhSTFpYbHpBQXdBQ0JGQUFB
QUFSa3hQUVZRQUh3QUlFWkVSQUFCRFIwTnZiRzl5VTNCaFkyVkpRME5DWVhObFpFUmhkR0VBRHdB
SQpFYm9UQUFCRFFVeFFWMU5VVWdBTkFBZ1JjUVFBQUZCVlYxTlVVZ0FMQUFnUnVSTUFBRU5CUTFr
QUd3QUlFWFVBQUFCRFIwWnZiblJUCmJXOXZkR2hwYm1kVGRIbHNaUUFRQUFnUnpSRUFBRWhDU1ZS
TlFWQmZYd0FaQUFnUml4SUFBRU5HVlZKTVEzSmxaR1Z1ZEdsaGJGSmwKWmdBUkFBZ1J0eE1BQUhS
aFowTkJURkJUVkZJQUVBQUlFYlVUQUFCSlZIbHdaVWx1Wm04QUN3QUlFVUVBQUFCRVFWUkZBQTBB
Q0JGeApCQUFBVEZCWFUxUlNBQmdBQ0JHcEVBQUFURkJXUlZKVFNVOU9SVVJUVkZKRlFVMEFEZ0FJ
RVhJVEFBQkpVM1J5WldGdEFBMEFDQkYxCkFBQUFjMmw2WlY5MEFBOEFDQkZURXdBQWRHRm5URU5m
U1VRQUZBQUlFZVFSQUFCMFlXZENTVlJOUVZCSlRrWlBBQXNBQ0JFOEV3QUEKVWtWRFZBQVZBQWdS
eWhBQUFIUmhaMUJTVDFCV1FWSkpRVTVVQUI0QUNCRmFFQUFBUWtGVVZFVlNXVjlTUlZCUFVsUkpU
a2RmVTBOQgpURVVBR2dBSUVWRVFBQUJRVDFkRlVsOUJRMVJKVDA1ZlVFOU1TVU5aQUJrQUNCRlhF
QUFBVTFsVFZFVk5YMUJQVjBWU1gweEZWa1ZNCkFCY0FDQkZsRUFBQVUwTkJVa1JmVkRCZlEwOU5U
VUZPUkFBVkFBZ1I0QkFBQUZGUFUxOVBRa3BGUTFSZlNFUlNBQTRBQ0JFNkVRQUEKUTBaU1lXNW5a
UUFmQUFnUlVoSUFBRU5HUkdsamRHbHZibUZ5ZVV0bGVVTmhiR3hDWVdOcmN3QWhBQWdSVlJJQUFF
TkdSR2xqZEdsdgpibUZ5ZVZaaGJIVmxRMkZzYkVKaFkydHpBQnNBQ0JGREVRQUFRMFpUZEhKcGJt
ZEpibXhwYm1WQ2RXWm1aWElBRndBSUVWWVJBQUJEClJsTjNZWEJ3WldSR2JHOWhkRE15QUJjQUNC
RmVFUUFBUTBaVGQyRndjR1ZrUm14dllYUTJOQUFLQUFnUnRSRUFBRWhFUXdBUkFBZ1IKRGhNQUFF
TkJRbE5VVWtKTVQwSUFJZ0FJRVVrU0FBQkRSa1JwWTNScGIyNWhjbmxTWld4bFlYTmxRMkZzYkVK
aFkyc0FEZ0FJRVVnVApBQUJTUjBKUlZVRkVBQm9BQ0JGUkVBQUFVRTlYUlZKZlFVTlVTVTlPWDFC
UFRFbERXUUFRQUFnUlJoTUFBRlZRY205d1pYSjBlUUFaCkFBZ1JSQk1BQUhSaFoxWmxjbk5wYjI1
bFpGTjBjbVZoYlFBS0FBZ1JRaE1BQUVOQlNBQU1BQWdSU0JBQUFGOUhWVWxFQUE0QUNCRTgKRXdB
QWRHRm5Va1ZEVkFBTUFBZ1JPQk1BQUVaSldFVkVBQTBBQ0JGeEVRQUFRMGRUYVhwbEFBOEFDQkUy
RXdBQVJrbE1SVlJKVFVVQQpEd0FJRVRRVEFBQjBZV2REUVVaTVZBQVVBQWdSQmhNQUFIUmhaME5C
UTB4SlVFUkJWRUVBR0FBSUVYY1JBQUJEUjBGbVptbHVaVlJ5CllXNXpabTl5YlFBVUFBZ1JNaE1B
QUhSaFowSkpUa1JUVkVGVVZWTUFId0FJRWFVUkFBQkRSME52Ykc5eVEyOWtaVVp5WVdkdFpXNTAK
UTNWeWRtVUFEZ0FJRWRJUUFBQldRVkpKUVU1VUFBNEFDQkVoQUFBQVEwZEhiSGx3YUFBUUFBZ1JN
Qk1BQUVsRWFYTndZWFJqYUFBVgpBQWdSRlJNQUFIUmhaMFJQVFU1dlpHVlVlWEJsQUJZQUNCRVRF
d0FBZEdGblUyaDFkR1J2ZDI1VWVYQmxBQXdBQ0JFU0FBQUFVME5QClJFVUFEUUFJRVJFVEFBQjBZ
V2REUVV3QUZ3QUlFUkFUQUFCMFlXZERRVkJTVDFCV1FWSkpRVTVVQUFzQUNCRnhCQUFBUWxOVVVn
QUwKQUFnUkdoRUFBRVpKVEVVQURRQUlFUkVBQUFCVFNXNTBNVFlBRUFBSUVRRVNBQUJEUjBadmJu
UlNaV1lBRkFBSUVRNFRBQUIwWVdkRApRVUpUVkZKQ1RFOUNBQW9BQ0JGMEFBQUFTVTVVQUJRQUNC
RUlFd0FBZEdGblEwaEJUa2RGUzBsT1JBQVJBQWdSQmhNQUFFTkJRMHhKClVFUkJWRUVBREFBSUVR
UVRBQUJEUVVSQ1RBQVdBQWdSN3hBQUFGOVRUME5MUlZSZlFVUkVVa1ZUVXdBTEFBZ1JBaE1BQUVO
QlZVZ0EKQ3dBSUVVZ1FBQUJIVlVsRUFBNEFDQkgvRWdBQVEwRkRURk5KUkFBTEFBZ1JjQUFBQUVO
SVFWSUFEQUFJRVNBQUFBQlZTVzUwT0FBTQpBQWdSdVJFQUFFaEVRMTlmQUFvQUNCSDlFZ0FBUTBG
REFBc0FDQkg3RWdBQVFreFBRZ0FTQUFnUmVoSUFBRWhKVGxOVVFVNURSVjlmCkFBNEFDQkVoQUFB
QVZXNXBRMmhoY2dBS0FBZ1I5eElBQUVOQlNRQU1BQWdSU0JBQUFFTk1VMGxFQUJNQUNCRWhBQUFB
VUZKUFVGWkIKVWw5UVFVUXlBQTRBQ0JGdUVBQUFYMnhrYVhaZmRBQWZBQWdSOWhJQUFGOWZUVWxF
VEY5SlEyOWtaVWx1YzNSaGJHeGZNREF3TVFBbgpBQWdScUJFQUFFTkhRMjlzYjNKRGIyUmxSbkpo
WjIxbGJuUk1iMjlyZFhCVVpYaDBkWEpsQUE4QUNCSDBFZ0FBZEdGblVFOUpUbFFBCkRnQUlFUklB
QUFCSVVrVlRWVXhVQUFzQUNCRjFBQUFBVlVsT1ZBQU5BQWdSSWdBQUFIVmZiRzl1WndBU0FBZ1I4
QklBQUhSaFowTkIKVEV4RFQwNVdBQjRBQ0JIdUVnQUFYM1JoWjBsT1ZFVlNUa1ZVUmtWQlZGVlNS
VXhKVTFRQURRQUlFZXdTQUFCRFFVSlBUMHdBRmdBSQpFZW9TQUFCZmRHRm5VRUZTVTBWQlExUkpU
MDRBRGdBSUVVRUFBQUJHYkc5aGREWTBBQkVBQ0JFeUVnQUFRMGREYjJ4dmNsSmxaZ0FWCkFBZ1JH
eEFBQUhCMGFISmxZV1JzYjJOcGJtWnZBQkVBQ0JIY0VnQUFkR0ZuUTBGVFEwOUVSUUFPQUFnUjJo
SUFBSFJoWjBOQlZVd0EKRFFBSUVkZ1NBQUJEUVVKVFZGSUFEUUFJRVhRUkFBQkRSMUpsWTNRQTlB
QUFBQkFYQUFBQkFBQUFFQUZtR3lWZXRiRmtwYzF6MWNxbgo0TGExQUFBMUFBQUFFQUhGeXZmY0xX
RGdvZ0tqZkJZUzViU2VBQUJwQUFBQUVBR1JEazE4ajFkL3pjQTFXbEloS0JVckFBQ1lBQUFBCkVB
Rmt1WEJvYkFHUEdWbmVnNHQzSElodkFBRFZBQUFBRUFGNWN1ekZHTENCc1JzVW90TjBmZGpXQUFB
SUFRQUFFQUd4Qy9hWDMzVHAKYzlEVzZGYzdHT2VZQUFBN0FRQUFFQUV6VkM2Tyt6alJYK3p1cXRm
cXJBSWdBQUJtQVFBQUVBRTBHR0FkZW9XZC9XMmZlWTg2Wlp2TwpBQUNWQVFBQUVBRTNKSUxPTGgr
N0thR3R5MlA1VlJla0FBRExBUUFBRUFHdDVNczk0YnBkeEhyM1ZsaU05alJ5QUFBSkFnQUFFQUVx
CnFyMEhMRVVYVEE3WkxXYVFDMzhwQUFCREFnQUFFQUhBNE5yZHIrTWR1Z3hkWStuMnRBZG9BQUIw
QWdBQUVBSEc1ZjZCZzJOdVlwV3QKY2YwNVlWeTJBQUNhQWdBQUVBRVNvUjVKT1RwVHVrcU51cEZS
cG1KY0FBRE1BZ0FBRUFFTGhTZGg4Y3RtcTJPM0FxdHU5azVaQUFEKwpBZ0FBRUFHMkoySkRoYlZT
K2h3bGhoUldzOFZpQUFBdEF3QUFFQUhpVkRFTDJscENoU2M2ME1ZMStIM0pBQUJxQXdBQUVBRXdB
Q3dBCm02bDRZald1L0FzRzE0Y1VBQUNhQXdBQUVBRVkwYklUTEtCM28yT3N5NkR6aFgyVEFBRFNB
d0FBRUFFUDhZc1pJZHhjMitadGMwRGMKSkdxcUFBQUNCQUFBRUFHQ2V5bnlnNVdwVlRxamdwd3hC
UlVLQUFBN0JBQUFFQUdJQmxyV3IzZTJGSGJBSVU2c0VuVWlBQUI1QkFBQQpFQUVrRG9vcDlOMGpl
TkRiejFyaWZLUnRBQUNzQkFBQUVBR0JoeVJZaVNhcFZ2OFUrVmdFQVJQcUFBRGZCQUFBRUFIaE9p
aHZzVFVICjhiZkg0SmpNbmlheEFBQVJCUUFBRUFIc2VVd0p1dWdSQm9jdUpWSWhFZ2JYQUFCRUJR
QUFFQUgyUkN0U2pBYzBFS00yUm5DTk1OWUsKQUFCM0JRQUFFQUdxVmFGM3NWekYwakp2S25qNWZr
aDFBQUNzQlFBQUVBSEszbjVqQ0lLZk1Rd3JORHBab0ZJTEFBRFdCUUFBRUFIegpucE9USytGVW5r
YUJ2aXl3L0NYMkFBQUtCZ0FBRUFGU1RSTlUyQTBaaVBCaTI1NTlQZEZKQUFCQkJnQUFFQUcvUXBj
eHhzUVRjM3lwCkx3VG5QK1RNQUFCMEJnQUFFQUc3R0lSMThHNG4xZDQzMFRQb2NncFpBQUNtQmdB
QUVBRlowZ1lpb2xYYi9qVVp4QWxTQk5ld0FBRGEKQmdBQUVBRVQ4czdVcTUyYjZ4cVIycFVDNmJ4
Z0FBQU9Cd0FBRUFIczZUalFlR2lqNURzQ1d5NXRkczNBQUFCRkJ3QUFFQUhNV2IyMwpXZG9yTk9V
ZVBMcGY0dTMyQUFCMkJ3QUFFQUU4cTRZOWdUQUlMU1ptUzVRK2V1ZGRBQUNvQndBQUVBRlRzVnpm
dXJLeURqcDl0RnhUClhOK1RBQURjQndBQUVBSFR6YnVZRWJWbmdCKzk5K0t4Z1RDQkFBQVRDQUFB
RUFINWxXaW41YVExSkg4V085NjBVZ1NYQUFCQ0NBQUEKRUFIOWQ2dWo2dlh0djJISm4xQUplbjVv
QUFCcENBQUFFQUYwemwxTlVhcm9HRjdSWlJXV2tCSDhBQUNjQ0FBQUVBRVRtdXp4Vm92UgpOQWE2
cHBlWFJaODFBQURQQ0FBQUVBRkEwdWtUcUxxS2Izd0cvcHBkK3Zic0FBQUpDUUFBRUFHdkhXeHVE
dFlvdUJub1p2ZnZYNE0xCkFBQStDUUFBRUFIeXA5eVlEOW9mRlBLR1VuZ2ZlUTVyQUFCNUNRQUFF
QUc4c0lpNi9wWTd0VExwM0lsWm5yRnpBQUNzQ1FBQUVBSFcKdUVGZTFoblA4VHVUUkN5Wk4wY0RB
QURZQ1FBQUVBR05hbVd6THUvWm5RcWpzL2MySSszeEFBRCtDUUFBRUFGdFd6ZjZDK1dWelpmYgp6
dCtwdm9Lc0FBQTFDZ0FBRUFHNVNiMHZ1U3BIK0Q1K3kzVFhkUTZNQUFCZUNnQUFFQUVHMGZRbTBJ
L0FRV1FPTUNxYXdja3RBQUNFCkNnQUFFQUczRkZuUWhXQlgxVUc0TlpNZlZRTjNBQUMwQ2dBQUVB
SDFkRFhseXdPekNZOW9ZNlcwanJFR0FBRG5DZ0FBRUFGeERYZnUKQlpSelBYcnM2WWh3OFJUWUFB
QWZDd0FBRUFHQ2t2K2lxWEt3SmtReFBUKzYySXNrQUFCUEN3QUFFQUZEVFpoR0x6OFJ5dXczeGtH
MgpPTEpPQUFDREN3QUFFQUh4M3pTUTFZMzlqZ1p5OGswOVhJQWpBQUMyQ3dBQUVBR0RVdGlkTk5z
UjZPZnAvVnU3U2xYd0FBRG5Dd0FBCkVBRjU0eUdSbW03SkRxOEQyRzFVQUJxdEFBQU5EQUFBRUFG
SE1UYnhDalVzZmd5ZVo3UjRob0YwQUFCY0RBQUFFQUhmMDRlTHduS2EKSWU5Z3o5VmZTdVFVQUFD
Q0RBQUFFQUhpMUdhL3hpaXFVMmhCUXNIMlF2ZjhBQURFREFBQUVBRmdUOXY4M1JVQzVqQitWbzZp
OXd0dApBQUQwREFBQUVBRm1SZURKVEtQMGxRaDA2L1ZTanA4ZUFBQWlEUUFBRUFGWis0MVRUZEll
RmdUQ1dFNTNnKy9XQUFCSURRQUFFQUVKClNBWVk1UGVxejM2YXpQcEZic2NQQUFCK0RRQUFFQUZ4
ZWFCdXAxVFBCQnlXQ21zYmZHN1RBQUNvRFFBQUVBRzJrT3lBWklzRXFzcXIKQmVra3pPd2xBQURY
RFFBQUVBR1RteHRleFY3N0pUNGsxTUQxUlF5MkFBQUtEZ0FBRUFFb0NMT1pkRTV3a2cvdnJjYVNa
RENoQUFCQQpEZ0FBRUFHVjdTNGxvQmR5WHVHRmM2TklxVXltQUFCeERnQUFFQUdFNmh2YUtTYTVP
MzBMTVc4UzRlR21BQUNsRGdBQUVBSGpZVTk4CkQwVVkzaGU1Y1hhNmVUY3JBQURXRGdBQUVBRUYz
SmgxRjEyT3N5Z0g0MlNPN24vS0FBQUZEd0FBRUFIMjZrZ1ZZSzZzQXdoQThuVnIKSTczMEFBQkNE
d0FBRUFHSkoyc2MxckpDMW1vZzJxWDVVeUNDQUFCMUR3QUFFQUc1ZkQ1cGt1NFRLcmhsS2szT21m
NWZBQUNxRHdBQQpFQUUybU9XaW4vY3JIcW81WTN4K0FwcWdBQURlRHdBQUVBRXVxLzNUdDJNL2pB
L2hpbzMzV1JEMEFBQU9FQUFBRUFFMjg0cjJnV1RpClZFMmdjL0hHZlhTWEFBQklFQUFBRUFIUXZQ
MWNZUkM4bS9DbkFGT3c5SUY5QUFCdEVBQUFFQUhGUDJYNjdScitwTWRoQjZhUXpORVUKQUFDdEVB
QUFFQUhHRUVCcldBaXNkVWhWVTVQQzZlUElBQURjRUFBQUVBR0FnVVVtQjZTa0NJNWhKVTgvdUZD
VkFBQVBFUUFBRUFHbgpEQlpBZjNQc2VDM24xVG9SQ3FVcUFBQkFFUUFBRUFFQUdMTDdkWXRKTlVt
OWk4TTV0a2g5QUFCM0VRQUFFQUh5czRiWHlQNXFnRlZqCkRjVUtYRDhmQUFDZ0VRQUFFQUVTcHJK
SndNeGcrOHdrM2VrOUg3S3FBQURFRVFBQUVBRTl0WEtWRHBNMU9JcmM1MG5UQjE1SUFBRDQKRVFB
QUVBRlQ1MzJjd25HOEU2Ump1U0pOZ1doTkFBQXhFZ0FBRUFGMG1Xa1hFbUlyLzcybThKVEdHSGpi
QUFCaEVnQUFFQUV0OU5VYQp2TjMzZzlrK3dUK2ExRzZzQUFDVkVnQUFFQUdCa3hUWnRON0F6MEpV
ZVppbElHNHJBQURNRWdBQUVBRjBHRWhmZFZNT2J6eER3OGYvCk5ZNU9BQUFGRXdBQUVBRU5FV2Rp
UTdpTzZQM3dRNGVMTUFtaEFBQkJFd0FBRUFGbkx6UTFRaEZwa0o1aUJhdVRIZGpYQUFCMUV3QUEK
RUFFdW16bDR1N0lkaGxmcUxacWpVZGRhQUFDbkV3QUFFQUU1RklkZWpkNW8wR2RITWxZczhKOEZB
QURnRXdBQUVBSGY3SXN5YjhJZAptcVFPN1NUcXkzQklBQUFYRkFBQUVBR0tWSnFpLzVvekFPQlBU
UXpxVlIyekFBQkhGQUFBRUFIbEFhVDM4UDhNclpVeHZXU2ZrZWJzCkFBQjdGQUFBRUFGemdRd0tq
cFNXVkFLcHhrYVpPak9MQUFDM0ZBQUFFQUV0NFpsa1VQN0lnZ0RTU0FNYkJWR1JBQURyRkFBQUVB
SEoKL05iWWlaQ2JhSUJVSUx3THd5b0FBQUFlRlFBQUVBR0JieG00YmNQd3I2cWRWQUMzYlhPTUFB
QlhGUUFBRUFIM094eThqaXJkSjZPaAphbVdnN0pobEFBQ05GUUFBRUFFK1pscjZwVnBkUFVOWEF3
ZEROaGN4QUFEREZRQUFFQUZWaXNUa3ZRRkNDRis5WGhSVWRNczJBQUR5CkZRQUFFQUhRN2VzbGJX
SkhmUDJaQ29UQ053V0xBQUFmRmdBQUVBRnhmeGdvTUxUN1FkZDNMRGFCZUpJWUFBQlNGZ0FBRUFI
N29DSzUKemkzeSt3alVvaXh3ZWRMREFBQ09GZ0FBRUFFOEpEZCtkak1qMGhGYThvMCtTUElaQUFD
N0ZnQUFFQUc2RUUyWDEzenBsQmE0RFZwNAovYUk3QUFEd0ZnQUFFQUdCcDFNZHl6cThWNXpaeTBH
MHVLOHVBQUFwRndBQUVBSGNKbXdBTE93YmFCUFViV2pBeDFzOEFBQmJGd0FBCkVBR2IxRnV2OGhZ
VTU4K0RxY1hnQTZOekFBQ01Gd0FBRUFFeVBrRDdsWU1YSzJkR0RyVG1BNFM4QUFDMUZ3QUFFQUhN
RTFvRXgzdGcKOFhDQi9xRnlvNWwvQUFEbkZ3QUFFQUZLbm1kdmRlTGNQQUdKazVtOWRrWVVBQUFi
R0FBQUVBR2ljTXZWSlpXYlVSNkIvUjJ4UlJjRQpBQUJSR0FBQUVBRkxBaEg1N2UwOXltcjFrdk12
WDBQc0FBQ09HQUFBRUFHRWlQZkkwY0NWU2x2bGJkaytWRjZGQUFER0dBQUFFQUZxClpSSmVmSzJP
RTJxQ0FKWWg4eGx0QUFEOUdBQUFFQUdnYllSbzhrd3Q3b0M5K2hSU2EzQWhBQUF6R1FBQUVBSDdv
ekk5TEUvSW5nRlMKdVZsdGRqbk9BQUJrR1FBQUVBRWZURkJYNlFqdkFDSEhPQzdXMHlFT0FBQ2JH
UUFBRUFHRXB2QjZlU1ZqUFFxQi9obUNUVGk3QUFEQgpHUUFBRUFHWE9qWko2NndKVlVwdVVzSzIw
ZlYvQUFEMEdRQUFFQUhNemxxU1pUb0VKWmdsa1JKOCtyWWZBQUFwR2dBQUVBSG1qLzRkCkN1S0dj
WUF4REFlOEF1bEhBQUJqR2dBQUVBRjZQL0VRU0VYUVFqMk5qMXI3bGQ5NUFBQ1dHZ0FBRUFGOUg5
T3YxV3FRdHV1eGc4U2kKREFlaEFBREhHZ0FBRUFHVk5KdzFuYUJMVUlIUFpkK0RRV25zQUFEMUdn
QUFFQUZhaytTY3NjU2Z2bmlYdHBlblJXYVpBQUF1R3dBQQpFQUh2M20yQ3VXQjg2NUdYWCs2UHh5
dGFBQUJRR3dBQUVBRzFobjdWWTNnYlo4V1VrUGtManZFSkFBQjFHd0FBRUFGYzF2ZWh6MUxmCm9D
SGROd013SHc1UkFBQ3VHd0FBRUFFU0Y4TnRscUpPb1Q1TDA0WmJGZ1piQUFEbUd3QUFFQUdXcDFu
Zkc3Q1Bxck5LYjFrQmE0QkUKQUFBTEhBQUFFQUg3cEZ5b2FjWFBUcVhyc2RQcDY1VHZBQUF4SEFB
QUVBRzlTVWgrcmlBdmpJN01NZ3lVeStnT0FBQmxIQUFBRUFIbQpkbVZPNzZyTklIcExHcXFtM2VY
QUFBQ09IQUFBRUFHMUQxOW1oSzNOWjczTnNqY09JZjZJQUFEQkhBQUFFQUhYeHFxOU1xeW84U3pJ
CjNLcHFtc2RkQUFEckhBQUFFQUhXR2pXSmlOZUwvSUNQQmh5OXpLdVZBQUFYSFFBQUVBR0JFNFp2
N3ZlUTVvNFlTdU5NMDVtckFBQkcKSFFBQUVBRkRYcUdORzdFUHhJQ0hlSngvZTVqT0FBQjVIUUFB
RUFFRGtkREpZTml3OVY4amw0OG0yVHEwQUFDakhRQUFFQUYwd1JOQwpBY3JJZWI5VUlyUEg0cXBn
QUFEaUhRQUFFQUhpWDdIdk8ybnJ1WkJBaFNVaGRYQUhBQUFXSGdBQUVBSDZVWXB1dEcwZ2ZnU2tw
R08zCmY5TXBBQUJESGdBQUVBRXVxejNmNWVpU1U0eWdtV0pVdDUvV0FBQjJIZ0FBRUFHeThIWG9l
OGMxUDh1aklyZTJVNmdkQUFDbkhnQUEKRUFHZ2VLT1I0NWkrMEJsUW9kZTdqVldGQUFEY0hnQUFF
QUdyK2NZblhTTE1UdzVOTXZsZ3IrUzdBQUFSSHdBQUVBRytibW5laUZNVAo1ZG13Yk5oZ1NITUhB
QUJKSHdBQUVBRzZGL1JVUEkyYVNWbzMyZjduM21tL0FBQjBId0FBRUFHa08yekZUYUwrOXNpVE1U
RkdlMXhZCkFBQ2VId0FBRUFGdnQ5Y2Q2am9pK0YrektuMmlRcHkvQUFESkh3QUFFQUd4dE5ydmV2
a05nMTFOTGtvVmloRzBBQUQ0SHdBQUVBR0cKL1dyam4rNFhmTzFDbzN3MXoxd3pBQUFmSUFBQUVB
SGozNlQ2SUJwRFR6SVdIbjlYTnM2SUFBQlJJQUFBRUFFN2s0N0dXWVB5TUllcwpXaXc3TExJV0FB
Q0RJQUFBRUFHb3Nkb05Qczh5bUgxWVRrWk0zTEMyQUFDcklBQUFFQUhYRGhnZUtOUk5xbEF5QWo5
UnB6VFhBQURsCklBQUFFQUZrK0dDbllxT3paOGo2VFRoODhJY21BQUFYSVFBQUVBRTE3RjdqTUli
V1ppaU11OGdCdEZKb0FBQlFJUUFBRUFGa1h4ZWIKYURrTkR4dnpUK25pVnQ4MEFBQ0dJUUFBRUFI
eU9FNTFaajdDVldMTkI0YWJTNGJOQUFDNUlRQUFFQUZsR1NmWC8vREpzVkpFaWxISApxeFovQUFE
eElRQUFFQUhQL1oweG5EWHpVMmhmZTRrK0FwYmZBQUFYSWdBQUVBRXQ1U0xCL2RyeEdEb0R6aDE2
ZDlpQUFBQlNJZ0FBCkVBR3hNRitVU2QzME1Xd09IdGhaN09TS0FBQ0VJZ0FBRUFFc0FOWTBIdTJN
akdCcnJ1WE94ZXpzQUFDMUlnQUFFQUhrd21RZXZmaUsKRzdHSGV3dW8zTmRVQUFEbklnQUFFQUZ4
VlNmZUtsbW9tMnJSWkhWZTZlTVJBQUFjSXdBQUVBSGFkeGR4TXhzdWM2L1k0czNhQjdXRgpBQUJN
SXdBQUVBR3QvYVB0MVpGZ1FCa0NLWXlOQzFpbEFBQitJd0FBRUFHL1M0N0hNMTZ2czZMKzFTVzJG
UFZJQUFDeUl3QUFFQUUzCktGN2IwcUR5UVJhWWxKZ0IvSGE3QUFEbEl3QUFFQUZFeW9NOXZ2cklG
cTFLTHZack91MjlBQUFZSkFBQUVBRjR4eVlKWHFZckdYbHMKc25jcFdaMkZBQUE3SkFBQUVBRUFE
cmJDNk94QVEzOUc3WlZwWlV2TkFBQnRKQUFBRUFHZ1ArS1A1Qmd0UENpMkMxeXVVNGMwQUFDZwpK
QUFBRUFGMWQ1RGRwZ0JNL0h5YjdFMkY2YW9NQUFESUpBQUFFQUh2cmNZaTd2T0dvU21VSkVIazFs
WmVBQUQ2SkFBQUVBSEc4N09JCjJiUWtIYlBZbWFkMndOMG1BQUFvSlFBQUVBRnpucGRQUXdNRlkx
YlFFL2NZT1lMTkFBQmZKUUFBRUFFM1VvWlhCMm9HV1UrMVR0U08KVENvOEFBQ1BKUUFBRUFHNUlj
WUdBYlhhekI3MmdUSWkrWDJWQUFEQ0pRQUFFQUdOOE8xa0Vta2xPeW80bkZwM0tYclBBQUR3SlFB
QQpFQUg4clVMUnBmQUt2THlsYUsrTDNKbHRBQUFoSmdBQUVBRUZWQVM2cHdjWjJNMUZrak85alpR
WEFBQlBKZ0FBRUFIbEJ1V0ZmZ3B1CkxzK1RXSnYrUFNxZkFBQ0JKZ0FBRUFFaUQ0dWRSZlBCRGti
N3FJd1RrV2xlQUFDMUpnQUFFQUY0ZEd1SmhINnFIaitpVy85QlpabjIKQUFEbkpnQUFFQUdPM21Z
R0NiTmRLWXcycGdyaU9MbVNBQUFaSndBQUVBRUthbmM1T0lENVBhcm00NWZJUGF5b0FBQlFKd0FB
RUFGeAo4d1pSRC92OGtQdUZMalhIOWd0K0FBQ0RKd0FBRUFIQWdyKy81NVVzK3lVT2NvV0RsNzZy
QUFDekp3QUFFQUVWdE1SS0FpUm1zZHdwCitwOVFrc2F1QUFEbUp3QUFFQUhHV3FUUGUrR3l5UUF6
SmxTSUI3YkpBQUFhS0FBQUVBR3pBb2dqRWpQNTFYNG5VSWMwa1hDMEFBQkwKS0FBQUVBSGMzd1Jq
NTJCbmdWWDl2OFYzZ0lwRkFBQjBLQUFBRUFFSjNram05R1JvSHRoSUIwMGlJa2dxQUFDZktBQUFF
QUUwb3hMdwpWQXkwdG5zVEprbkl3U29rQUFETEtBQUFFQUVKTGwxazU0TmVlZEtoaFlueE5zQ0NB
QUFHS1FBQUVBRzV0ZTY3U1M3djJqMVhoK3g5CmRkU1ZBQUE4S1FBQUVBSDBLMDkxeHBtdURUS21S
b3FRZmwrdEFBQmdLUUFBRUFHcUl6b3dQaUJ0V1N3aXpLa0VEOVlEQUFDY0tRQUEKRUFIVGNDSjN3
UXB2RnFkV01SV3dReXMzQUFET0tRQUFFQUhnN2JUSEg4RDNyZmx5aWFkTlZDWWRBQUFDS2dBQUVB
R2kwRFFHUmRMMApzM3dpQXZUSTByRmZBQUExS2dBQUVBRUZ2K1hPcWFtUi91MmVhdmhDeGRYREFB
Qm9LZ0FBRUFFelVKL3ovU2huYkdIdHQ4RzFWeUtNCkFBQ2NLZ0FBRUFGVmErTjdtZUpvYk9NYzVa
ZHJScHJvQUFET0tnQUFFQUZWVFF1bWlRUVJIN0FYQk9VdFVCazZBQUQvS2dBQUVBSFIKVEx2RU9T
ZUw0RjlDcUhmSDFjQ1hBQUF6S3dBQUVBRS84S2loWGY0NDNHZGVnd0FSNmhEU0FBQmxLd0FBRUFH
czRUVlZmVlUwT1JBdQp5RTBHUWF0UkFBQ1lLd0FBRUFIWXkzMU52UHlic0RqUkFJNVRMRi9JQUFE
TUt3QUFFQUZzd2w3QUVHZDdtb0lPQTFRY3M1aVFBQUR4Ckt3QUFFQUZ4SDFRc2N1aUxISVEyclo0
M2N2b2JBQUFZTEFBQUVBRSt1SVpqRjhTWDNGblB2RW1xTTBvdEFBQTdMQUFBRUFFV0VYbXMKNmE4
Umdya0tXMkF2bTFBeUFBQmpMQUFBRUFIRzFqV1RyTnkyUTRucHhkUXFpRk9nQUFDT0xBQUFFQUZo
T1ZLNHB2RnpGcVRYRUkxZQo3WDFIQUFEQkxBQUFFQUhBOVBMVWIwUkpkMjBOQWVVLzl3VmpBQURu
TEFBQUVBSDcwRElJK0NpWU0xWFVWY29kc0MwNkFBQWRMUUFBCkVBRXZtMTVvNnZMOVVtSC96dnJC
Yy9uQ0FBQlVMUUFBRUFINWhwU3h5b2JWeGNnQ2Znd2pISFVrQUFDRkxRQUFFQUZKL1VCcHg1R3IK
WlRZc0o3UDlrWnBiQUFDNUxRQUFFQUcvVnhScXkwNDA4Q09zbXFodHp6NzJBQUR0TFFBQUVBRzVT
RXdNeWl2dFNNZzdGKytoQzRTTgpBQUFTTGdBQUVBR0Yrd1RRbVpWaG1KVytpWjJSdnFGQ0FBQkNM
Z0FBRUFHZExrYnJUTG0wTXdmZDlJU0pvSVdaQUFCb0xnQUFFQUVkCk56MWIzNWRLSEhkbTNIZll6
STFtQUFDaExnQUFFQUVDYmdQMUFoZGRlZG03KzZKRFdTa0NBQURUTGdBQUVBR2pZNmw3Q2FSaVYw
a1EKNUozYnZrNktBQUFBTHdBQUVBR00zY25UVm1iWUVNNFZhZ05aUWx5WkFBQW1Md0FBRUFHRkFp
b2RTa3hrakE5S0w2V2lPNmZEQUFCUApMd0FBRUFFZG1majRUbmo2VTNOcjc0SjFmdG1hQUFDSEx3
QUFFQUVtem01c3QzUk0wV0hra0VVS0lueGVBQUM0THdBQUVBSERKSko2CjNvWXlIRTNrVE8xMjJJ
eitBQUR6QUFBQVVqQUFBQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5Wlda
dmRXNWsKWVhScGIyNWNZMlp5ZFc1c2IyOXdMbWdBWXpwY1pHVjJaV3hjYlhOMmN6SXdNRFZjZG1O
Y2NHeGhkR1p2Y20xelpHdGNhVzVqYkhWawpaVnh6YUdWc2JHRndhUzVvQUdNNlhHUmxkbVZzWEcx
emRuTXlNREExWEhaalhIQnNZWFJtYjNKdGMyUnJYR2x1WTJ4MVpHVmNaR1JsCkxtZ0FZenBjWVhC
d2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZtYjNWdVpHRjBhVzl1WEdObVlYUjBjbWxp
ZFhSbFpITjAKY21sdVp5NW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0ps
Wm05MWJtUmhkR2x2Ymx4alpteHZZMkZzWlM1bwpBR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVq
YkhWa1pWeGpiM0psWm05MWJtUmhkR2x2Ymx4alptNTFiV0psY2k1b0FHTTZYR0Z3CmNHeGxhVzUw
WlhKdVlXeGNhVzVqYkhWa1pWeGthWE53WVhSamFGeHZZbXBsWTNRdWFBQmpPbHhrWlhabGJGeHRj
M1p6TWpBd05WeDIKWTF4d2JHRjBabTl5YlhOa2ExeHBibU5zZFdSbFhHbHRiUzVvQUdNNlhHRndj
R3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbApaM0poY0docFkzTmNZMmR3Wkdaa2IyTjFi
V1Z1ZEM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4alptNWxkSGR2CmNtdGNZ
MloxY214d2NtOTBaV04wYVc5dWMzQmhZMlZ3Y21sMkxtZ0FZenBjWVhCd2JHVnBiblJsY201aGJG
eHBibU5zZFdSbFhHTnYKY21WbWIzVnVaR0YwYVc5dVhHTm1kWEpzWlc1MWJXVnlZWFJ2Y2k1b0FH
TTZYR1JsZG1Wc1hHMXpkbk15TURBMVhIWmpYSEJzWVhSbQpiM0p0YzJSclhHbHVZMngxWkdWY2RI
WnZkWFF1YUFCak9seGtaWFpsYkZ4dGMzWnpNakF3TlZ4MlkxeHBibU5zZFdSbFhITjBjbWx1Clp5
NW9BR002WEdSbGRtVnNYRzF6ZG5NeU1EQTFYSFpqWEhCc1lYUm1iM0p0YzJSclhHbHVZMngxWkdW
Y2QybHVZMjl1TG1nQVl6cGMKWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZuY21G
d2FHbGpjMXhqWjNCa1puQmhaMlV1YUFCak9seGhjSEJzWldsdQpkR1Z5Ym1Gc1hHbHVZMngxWkdW
Y1kyOXlaV2R5WVhCb2FXTnpYR05uY0dGMGFDNW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVq
CmJIVmtaVnhqYjNKbFozSmhjR2hwWTNOY1kyZHViM1JwWm1sallYUnBiMjVqWlc1MFpYSXVhQUJq
T2x4aGNIQnNaV2x1ZEdWeWJtRnMKWEdsdVkyeDFaR1ZjWTI5eVpXWnZkVzVrWVhScGIyNWNZMlpp
WVdjdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWYwpZMjl5WldkeVlYQm9hV056
WEdObmNHUm1aR2xqZEdsdmJtRnllUzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmta
VnhqCmIzSmxaM0poY0docFkzTmNZMmRqYjJ4dmNpNW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNh
VzVqYkhWa1pWeGpiM0psWm05MWJtUmgKZEdsdmJseGpabkJ5YjNCbGNuUjViR2x6ZEM1b0FHTTZY
R0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxabTkxYm1SaApkR2x2Ymx4alpuTjBj
bWx1WjJWdVkyOWthVzVuWlhoMExtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhH
TnZjbVZtCmIzVnVaR0YwYVc5dVhHTm1jM1J5WldGdExtZ0FZenBjWVhCd2JHVnBiblJsY201aGJG
eHBibU5zZFdSbFhHTnZjbVZtYjNWdVpHRjAKYVc5dVhHTm1jMjlqYTJWMExtZ0FZenBjWkdWMlpX
eGNiWE4yY3pJd01EVmNkbU5jY0d4aGRHWnZjbTF6Wkd0Y2FXNWpiSFZrWlZ4dgpiR1ZwWkd3dWFB
QmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR05uY0dS
bVlYSnlZWGt1CmFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5WVhC
b2FXTnpYR05uWjNKaFpHbGxiblF1YUFCak9seGgKY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdW
Y1kyOXlaV2R5WVhCb2FXTnpYR05uWTI5c2IzSnpjR0ZqWlM1b0FHTTZYR0Z3Y0d4bAphVzUwWlhK
dVlXeGNhVzVqYkhWa1pWeGthWE53WVhSamFGeG5jbTkxY0M1b0FHTTZYR1JsZG1Wc1hHMXpkbk15
TURBMVhIWmpYSEJzCllYUm1iM0p0YzJSclhHbHVZMngxWkdWY2NITm9jR0ZqYXpRdWFBQmpPbHho
Y0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXkKWldkeVlYQm9hV056WEdOblkyOXVkR1Y0
ZEdsdFlXZGxMbWdBWXpwY1pHVjJaV3hjYlhOMmN6SXdNRFZjZG1OY2NHeGhkR1p2Y20xegpaR3Rj
YVc1amJIVmtaVngzYVc1emIyTnJMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxY
R052Y21WbmNtRndhR2xqCmMxeGpaMk52Ym5SbGVIUXVhQUJqT2x4a1pYWmxiRnh0YzNaek1qQXdO
VngyWTF4d2JHRjBabTl5YlhOa2ExeHBibU5zZFdSbFhIZHAKYm1OeWVYQjBMbWdBWXpwY1lYQndi
R1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbmNtRndhR2xqYzF4alozQmtabTlpYW1Wagpk
QzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFozSmhjR2hwWTNOY1ky
ZGtZWFJoY0hKdmRtbGtaWEl1CmFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1ky
OXlaV1p2ZFc1a1lYUnBiMjVjWTJaMGNtVmxMbWdBWXpwY1lYQncKYkdWcGJuUmxjbTVoYkZ4cGJt
TnNkV1JsWEdOdmNtVm1iM1Z1WkdGMGFXOXVYR05tWVhKeVlYa3VhQUJqT2x4a1pYWmxiRnh0YzNa
egpNakF3TlZ4MlkxeHdiR0YwWm05eWJYTmthMXhwYm1Oc2RXUmxYRzF0YzNsemRHVnRMbWdBWXpw
Y1lYQndiR1ZwYm5SbGNtNWhiRnhwCmJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMxeGpaMk52Ykc5
eWNISnBkbUYwWlM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWoKYkhWa1pWeGpiM0psWjNK
aGNHaHBZM05jWTJkaVlYTmxMbWdBWXpwY1pHVjJaV3hjYlhOMmN6SXdNRFZjZG1OY2FXNWpiSFZr
WlZ4MwpkR2x0WlM1cGJtd0FZenBjWkdWMlpXeGNiWE4yY3pJd01EVmNkbU5jY0d4aGRHWnZjbTF6
Wkd0Y2FXNWpiSFZrWlZ4d2NtOXdhV1JzCkxtZ0FZenBjWkdWMlpXeGNiWE4yY3pJd01EVmNkbU5j
Y0d4aGRHWnZjbTF6Wkd0Y2FXNWpiSFZrWlZ4M2FXNTFjMlZ5TG1nQVl6cGMKWVhCd2JHVnBiblJs
Y201aGJGeHBibU5zZFdSbFhHTnZjbVZuY21Gd2FHbGpjMXhqWjJGbVptbHVaWFJ5WVc1elptOXli
UzVvQUdNNgpYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxabTkxYm1SaGRHbHZi
bHhqWm5ScGJXVjZiMjVsTG1nQVl6cGNZWEJ3CmJHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZj
bVZuY21Gd2FHbGpjMXhqWjNCa1ptTnZiblJsYm5SemRISmxZVzB1YUFCak9seGgKY0hCc1pXbHVk
R1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR05uWjJWdmJXVjBjbmt1YUFCak9s
eGhjSEJzWldsdQpkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaWFpwWkdWdlhHTjJZbUZ6WlM1b0FH
TTZYR1JsZG1Wc1hHMXpkbk15TURBMVhIWmpYR2x1ClkyeDFaR1ZjYzJsbmJtRnNMbWdBWXpwY1lY
QndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR05tYm1WMGQyOXlhMXhqWm5WeWJISmwKYzNCdmJu
TmxjSEpwZGk1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4a2FYTndZWFJqYUZ4
MGFXMWxMbWdBWXpwYwpaR1YyWld4Y2JYTjJjekl3TURWY2RtTmNhVzVqYkhWa1pWeDBhVzFsTG1s
dWJBQmpPbHhrWlhabGJGeHRjM1p6TWpBd05WeDJZMXh3CmJHRjBabTl5YlhOa2ExeHBibU5zZFdS
bFhHNWlNekF1YUFCak9seGtaWFpsYkZ4dGMzWnpNakF3TlZ4MlkxeHdiR0YwWm05eWJYTmsKYTF4
cGJtTnNkV1JsWEhCdmNIQmhZMnN1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1Zj
WTI5eVpXZHlZWEJvYVdOegpYR05uWm05dWRISmxibVJsY21sdVp5NW9BR002WEdSbGRtVnNYRzF6
ZG5NeU1EQTFYSFpqWEhCc1lYUm1iM0p0YzJSclhHbHVZMngxClpHVmNiMnhsTWk1b0FHTTZYR1Js
ZG1Wc1hHMXpkbk15TURBMVhIWmpYSEJzWVhSbWIzSnRjMlJyWEdsdVkyeDFaR1ZjZDJsdVpYSnkK
YjNJdWFBQmpPbHhrWlhabGJGeHRjM1p6TWpBd05WeDJZMXh3YkdGMFptOXliWE5rYTF4cGJtTnNk
V1JsWEc5aWFtSmhjMlV1YUFCagpPbHhrWlhabGJGeHRjM1p6TWpBd05WeDJZMXh3YkdGMFptOXli
WE5rYTF4cGJtTnNkV1JsWEdObmRXbGtMbWdBWXpwY1pHVjJaV3hjCmJYTjJjekl3TURWY2RtTmNh
VzVqYkhWa1pWeHpkR1JzYVdJdWFBQmpPbHh3Y205cVpXTjBjMXgzWldKcmFYUmNhVzUwWlhKdVlX
eGMKZDJWaWEybDBjM2x6ZEdWdGFXNTBaWEptWVdObGQybHVYSGRsWW10cGRITjVjM1JsYldsdWRH
VnlabUZqWlM1amNIQUFZenBjWkdWMgpaV3hjYlhOMmN6SXdNRFZjZG1OY2FXNWpiSFZrWlZ4c2FX
MXBkSE11YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjClkyWnVaWFIzYjNKclhH
Tm1ibVYwZDI5eWEyTnZibTVsWTNScGIyNWpZV05vWlhCeWFYWXVhQUJqT2x4aGNIQnNaV2x1ZEdW
eWJtRnMKWEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5hVzFoWjJVdWFBQmpPbHhoY0hC
c1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWYwpaR2x6Y0dGMFkyaGNjMlZ0WVhCb2IzSmxMbWdBWXpw
Y1pHVjJaV3hjYlhOMmN6SXdNRFZjZG1OY2FXNWpiSFZrWlZ4emRHUmtaV1l1CmFBQmpPbHhoY0hC
c1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR05uWkdsemNHeGhlV3hw
YzNRdWFBQmoKT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNaR2x6Y0dGMFkyaGNjWFZs
ZFdVdWFBQmpPbHhrWlhabGJGeHRjM1p6TWpBdwpOVngyWTF4d2JHRjBabTl5YlhOa2ExeHBibU5z
ZFdSbFhIRnZjeTVvQUdNNlhHUmxkbVZzWEcxemRuTXlNREExWEhaalhIQnNZWFJtCmIzSnRjMlJy
WEdsdVkyeDFaR1ZjZDJsdWNHVnlaaTVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmta
VnhqYjNKbFozSmgKY0docFkzTmNZMmRqYjI1MFpYaDBjR0YwYUM1b0FHTTZYR0Z3Y0d4bGFXNTBa
WEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docApZM05jWTJkamIyNW1hV2N1YUFCak9seGhj
SEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5jR1JtCmMzUnla
V0Z0TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMx
eGpaM04wZVhCbGN5NW8KQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFoz
SmhjR2hwWTNOY1kyZGpiR2x3TG1nQVl6cGNZWEJ3YkdWcApiblJsY201aGJGeHBibU5zZFdSbFhH
TnZjbVZtYjNWdVpHRjBhVzl1WEdObWQybHVaRzkzYzI1aGJXVmtjR2x3WlM1b0FHTTZYR1JsCmRt
VnNYRzF6ZG5NeU1EQTFYSFpqWEhCc1lYUm1iM0p0YzJSclhHbHVZMngxWkdWY1kyOXRiV1JzWnk1
b0FHTTZYR0Z3Y0d4bGFXNTAKWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWjNKaGNHaHBZM05jWTJk
d1pHWmpiMjUwWlhoMExtZ0FZenBjWVhCd2JHVnBiblJsY201aApiRnhwYm1Oc2RXUmxYR052Y21W
bmNtRndhR2xqYzF4aloyWnZiblJqWVdOb1pTNW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVq
CmJIVmtaVnhqYjNKbFozSmhjR2hwWTNOY1kyZGxjbkp2Y2k1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1
WVd4Y2FXNWpiSFZrWlZ4amIzSmwKWm05MWJtUmhkR2x2Ymx4alptUmhkR1ZtYjNKdFlYUjBaWEl1
YUFCak9seGtaWFpsYkZ4dGMzWnpNakF3TlZ4MlkxeHBibU5zZFdSbApYSE4wWkdsdkxtZ0FZenBj
WVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTm1ibVYwZDI5eWExeGpablZ5YkdOeVpXUmxi
blJwCllXeHpkRzl5WVdkbGNISnBkaTVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmta
VnhqYjNKbFozSmhjR2hwWTNOY1kyZG0KYjI1MExtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBi
bU5zZFdSbFhHTnZjbVZtYjNWdVpHRjBhVzl1WEdObWNHeDFaMmx1TG1nQQpZenBjWVhCd2JHVnBi
blJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZtYjNWdVpHRjBhVzl1WEdObWRYVnBaQzVvQUdNNlhH
RndjR3hsCmFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZMmQwWlhoMFky
eHBjSEJwYm1jdWFBQmpPbHhoY0hCc1pXbHUKZEdWeWJtRnNYR2x1WTJ4MVpHVmNaR2x6Y0dGMFky
aGNiMjVqWlM1b0FHTTZYR1JsZG1Wc1hHMXpkbk15TURBMVhIWmpYR2x1WTJ4MQpaR1ZjYldGMGFD
NW9BR002WEdSbGRtVnNYRzF6ZG5NeU1EQTFYSFpqWEhCc1lYUm1iM0p0YzJSclhHbHVZMngxWkdW
Y2MyVnlkbkJ5CmIzWXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5Wldk
eVlYQm9hV056WEdOblkyOXNiM0owY21GdWMyWnYKY20wdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1G
c1hHbHVZMngxWkdWY1kyOXlaV1p2ZFc1a1lYUnBiMjVjWTJaelpYUXVhQUJqT2x4awpaWFpsYkZ4
dGMzWnpNakF3TlZ4MlkxeHdiR0YwWm05eWJYTmthMXhwYm1Oc2RXUmxYSE4wY21Gc2FXZHVMbWdB
WXpwY1lYQndiR1ZwCmJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdObWJtVjBkMjl5YTF4alptaDBkSEJq
YjI5cmFXVnpjSEpwZGk1b0FHTTZYR0Z3Y0d4bGFXNTAKWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0ps
Wm05MWJtUmhkR2x2Ymx4alptTm9ZWEpoWTNSbGNuTmxkQzVvQUdNNlhHRndjR3hsYVc1MApaWEp1
WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZMmRqYjJ4dmNuTndZV05sY0hKcGRtRjBa
UzVvQUdNNlhHRndjR3hsCmFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZ
MmR3WkdaemRISnBibWN1YUFCak9seGtaWFpsYkZ4dGMzWnoKTWpBd05WeDJZMXh3YkdGMFptOXli
WE5rYTF4cGJtTnNkV1JsWEhkcGJuSmxaeTVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1agpi
SFZrWlZ4alptNWxkSGR2Y210Y1kyWjFjbXhqYjI1dVpXTjBhVzl1Y0hKcGRpNW9BR002WEdGd2NH
eGxhVzUwWlhKdVlXeGNhVzVqCmJIVmtaVnhqWm01bGRIZHZjbXRjWTJaMWNteHdjbTkwYjJOdmJI
QnlhWFl1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDEKWkdWY1kyOXlaV1p2ZFc1a1lY
UnBiMjVjWTJaMWNtd3VhQUJqT2x4a1pYWmxiRnh0YzNaek1qQXdOVngyWTF4d2JHRjBabTl5YlhO
awphMXhwYm1Oc2RXUmxYSEJ6YUhCaFkyczRMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1O
c2RXUmxYR05tYm1WMGQyOXlhMXhqClpuVnliR0YxZEdoamFHRnNiR1Z1WjJWd2NtbDJMbWdBWXpw
Y1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR05tYm1WMGQyOXkKYTF4alpuVnliR05oWTJo
bGNISnBkaTVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFozSmhjR2hw
WTNOYwpZMmRqYkdsd2JXRnpheTVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhq
Wm01bGRIZHZjbXRjWTJaMWNteGpjbVZrClpXNTBhV0ZzY0hKcGRpNW9BR002WEdGd2NHeGxhVzUw
WlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWm05MWJtUmhkR2x2Ymx4alptSnAKZEhabFkzUnZjaTVv
QUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqWm01bGRIZHZjbXRjWTJaMWNteHla
WEYxWlhOMApjSEpwZGk1b0FHTTZYR1JsZG1Wc1hHMXpkbk15TURBMVhIWmpYSEJzWVhSbWIzSnRj
MlJyWEdsdVkyeDFaR1ZjY25CakxtZ0FZenBjCllYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxY
SE5sWTNWeWFYUjVYSE5sWTNWeWFYUjVMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWgKYkZ4cGJtTnNk
V1JsWEdObWJtVjBkMjl5YTF4alptNWxkSGR2Y210a1pXWnpMbWdBWXpwY1lYQndiR1ZwYm5SbGNt
NWhiRnhwYm1OcwpkV1JsWEdOdmNtVm1iM1Z1WkdGMGFXOXVYR05tYm5WdFltVnlabTl5YldGMGRH
VnlMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwCmJtTnNkV1JsWEdOdmJtUnBkR2x2Ym1Gc2JX
RmpjbTl6TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm0KYjNWdVpH
RjBhVzl1WEdObVkyRnNaVzVrWVhJdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdW
Y1kyOXlaV1p2ZFc1awpZWFJwYjI1Y1kyOXlaV1p2ZFc1a1lYUnBiMjR1YUFCak9seGtaWFpsYkZ4
dGMzWnpNakF3TlZ4MlkxeHdiR0YwWm05eWJYTmthMXhwCmJtTnNkV1JsWEhKd1kyUmpaUzVvQUdN
NlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFptOTFibVJoZEdsdmJseGoKWm1S
aGRHVXVhQUJqT2x4a1pYWmxiRnh0YzNaek1qQXdOVngyWTF4cGJtTnNkV1JsWEhONWMxeDBlWEJs
Y3k1b0FHTTZYR1JsZG1WcwpYRzF6ZG5NeU1EQTFYSFpqWEhCc1lYUm1iM0p0YzJSclhHbHVZMngx
WkdWY2QybHVjM1pqTG1nQVl6cGNaR1YyWld4Y2JYTjJjekl3Ck1EVmNkbU5jY0d4aGRHWnZjbTF6
Wkd0Y2FXNWpiSFZrWlZ4M2FXNXBiMk4wYkM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWoK
YkhWa1pWeGpiM0psWjNKaGNHaHBZM05jWTJkaVlYTmxjSEpwZG1GMFpTNW9BR002WEdGd2NHeGxh
VzUwWlhKdVlXeGNhVzVqYkhWawpaVnhqYjNKbFozSmhjR2hwWTNOY1kyZG1iMjUwZFc1cFkyOWta
WE4xY0hCdmNuUXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1ClkyeDFaR1ZjWTI5eVpXZHlZ
WEJvYVdOelhHTm5ZMjl1ZEdWNGRHZHpkR0YwWlM1b0FHTTZYR1JsZG1Wc1hHMXpkbk15TURBMVhI
WmoKWEhCc1lYUm1iM0p0YzJSclhHbHVZMngxWkdWY2MzQmxZM04wY21sdVozTXVhQUJqT2x4aGNI
QnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MQpaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5abTl1ZEhCeWFY
WmhkR1V1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjClkyOXlaV2R5WVhCb2FX
TnpYR05uWTNKNWNIUnZMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR05tYm1W
MGQyOXkKYTF4alptaDBkSEJ0WlhOellXZGxjSEpwZGk1b0FHTTZYR1JsZG1Wc1hHMXpkbk15TURB
MVhIWmpYR2x1WTJ4MVpHVmNZWE56WlhKMApMbWdBWXpwY1pHVjJaV3hjYlhOMmN6SXdNRFZjZG1O
Y2NHeGhkR1p2Y20xelpHdGNhVzVqYkhWa1pWeGlZWE5sZEhOa0xtZ0FZenBjCllYQndiR1ZwYm5S
bGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbmNtRndhR2xqYzF4aloyWnZiblJqY21WaGRHVXVhQUJq
T2x4aGNIQnMKWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTJadVpYUjNiM0pyWEdObWFIUjBjR0Yx
ZEdobGJuUnBZMkYwYVc5dUxtZ0FZenBjWVhCdwpiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052
Y21WbmNtRndhR2xqYzF4aloyWnZiblJwYm1adkxtZ0FZenBjWVhCd2JHVnBiblJsCmNtNWhiRnhw
Ym1Oc2RXUmxYR052Y21WbWIzVnVaR0YwYVc5dVhHTm1ZbUZ6WlM1b0FHTTZYR0Z3Y0d4bGFXNTBa
WEp1WVd4Y2FXNWoKYkhWa1pWeDBZWEpuWlhSamIyNWthWFJwYjI1aGJITXVhQUJqT2x4aGNIQnNa
V2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMlp1WlhSMwpiM0pyWEdObWJtVjBkMjl5YTJWeWNtOXlj
M0J5YVhZdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY2MzUmthVzUwCkxtZ0FZ
enBjWkdWMlpXeGNiWE4yY3pJd01EVmNkbU5jYVc1amJIVmtaVnhsY25KdWJ5NW9BR002WEdGd2NH
eGxhVzUwWlhKdVlXeGMKYVc1amJIVmtaVnhqYjNKbFozSmhjR2hwWTNOY1kyZG1iMjUwZG1GeWFX
RjBhVzl1Y3k1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4YwphVzVqYkhWa1pWeGpiM0psWm05MWJt
UmhkR2x2Ymx4alpuQnlaV1psY21WdVkyVnpMbWdBWXpwY1pHVjJaV3hjYlhOMmN6SXdNRFZjCmRt
TmNhVzVqYkhWa1pWeG1iRzloZEM1b0FHTTZYR1JsZG1Wc1hHMXpkbk15TURBMVhIWmpYR2x1WTJ4
MVpHVmNZM0owZDNKdUxtZ0EKWXpwY1pHVjJaV3hjYlhOMmN6SXdNRFZjZG1OY2NHeGhkR1p2Y20x
elpHdGNhVzVqYkhWa1pWeHdjMmh3WVdOck1TNW9BR002WEdGdwpjR3hsYVc1MFpYSnVZV3hjYVc1
amJIVmtaVngxYm1samIyUmxYSFZqYUdGeUxtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5z
CmRXUmxYR052Y21WbmNtRndhR2xqYzF4alozTnZablJ0WVhOckxtZ0FZenBjWVhCd2JHVnBiblJs
Y201aGJGeHBibU5zZFdSbFhIVnUKYVdOdlpHVmNkWFI1Y0dWekxtZ0FZenBjWVhCd2JHVnBiblJs
Y201aGJGeHBibU5zZFdSbFhIVnVhV052WkdWY2RXMWhZMmhwYm1VdQphQUJqT2x4a1pYWmxiRnh0
YzNaek1qQXdOVngyWTF4d2JHRjBabTl5YlhOa2ExeHBibU5zZFdSbFhHMWplQzVvQUdNNlhHRndj
R3hsCmFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4eGRXRnlkSHBqYjNKbFhHTmhhVzFoWjJWeGRXVjFa
UzVvQUdNNlhHRndjR3hsYVc1MFpYSnUKWVd4Y2FXNWpiSFZrWlZ4MWJtbGpiMlJsWEhCM2FXNHpN
aTVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbApabTkxYm1SaGRHbHZi
bHhqWm01dmRHbG1hV05oZEdsdmJtTmxiblJsY2k1b0FHTTZYR1JsZG1Wc1hHMXpkbk15TURBMVhI
WmpYSEJzCllYUm1iM0p0YzJSclhHbHVZMngxWkdWY2QybHVjM0J2YjJ3dWFBQmpPbHhoY0hCc1pX
bHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY2NYVmgKY25SNlkyOXlaVnhqWVdKaGMyVXVhQUJqT2x4a1pY
WmxiRnh0YzNaek1qQXdOVngyWTF4d2JHRjBabTl5YlhOa2ExeHBibU5zZFdSbApYRzlzWldGMWRH
OHVhQUJqT2x4a1pYWmxiRnh0YzNaek1qQXdOVngyWTF4d2JHRjBabTl5YlhOa2ExeHBibU5zZFdS
bFhIQnljMmgwCkxtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZuY21G
d2FHbGpjMXhqYjNKbFozSmhjR2hwWTNNdWFBQmoKT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4
MVpHVmNZMjl5WldkeVlYQm9hV056WEdOblkyeHBjSE4wY205clpTNW9BR002WEdGdwpjR3hsYVc1
MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFozSmhjR2hwWTNOY1kyZGlhWFJ0WVhCamIyNTBaWGgw
TG1nQVl6cGNZWEJ3CmJHVnBiblJsY201aGJGeHBibU5zZFdSbFhHUnBjM0JoZEdOb1hITnZkWEpq
WlM1b0FHTTZYR1JsZG1Wc1hHMXpkbk15TURBMVhIWmoKWEdsdVkyeDFaR1ZjYzNkd2NtbHVkR1l1
YVc1c0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4MWJtbGpiMlJsWEhWeQpaVzVo
YldVdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpY
R05uWkdGemFDNW9BR002ClhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVngxYm1samIyUmxY
SFYwWmk1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWoKYkhWa1pWeGpiM0psWjNKaGNHaHBZ
M05jWTJkd1lYUjBaWEp1TG1nQVl6cGNaR1YyWld4Y2JYTjJjekl3TURWY2RtTmNjR3hoZEdadgpj
bTF6Wkd0Y2FXNWpiSFZrWlZ4MWJtdHVkMjR1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVky
eDFaR1ZjZFc1cFkyOWtaVngxCmRHWTRMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RX
UmxYR052Y21WbmNtRndhR2xqYzF4aloyTnZiblJsZUhSa1pXeGwKWjJGMFpTNW9BR002WEdSbGRt
VnNYRzF6ZG5NeU1EQTFYSFpqWEhCc1lYUm1iM0p0YzJSclhHbHVZMngxWkdWY2QybHVkbVZ5TG1n
QQpZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZuY21Gd2FHbGpjMXhqWjNK
bGJtUmxjbWx1WjNOMFlYUmxMbWdBCll6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdO
dmNtVm1iM1Z1WkdGMGFXOXVYR05tZFhKc1lXTmpaWE56TG1nQVl6cGMKWkdWMlpXeGNiWE4yY3pJ
d01EVmNkbU5jY0d4aGRHWnZjbTF6Wkd0Y2FXNWpiSFZrWlZ4eWNHTmtZMlZ3TG1nQVl6cGNZWEJ3
YkdWcApiblJsY201aGJGeHBibU5zZFdSbFhHTm1ibVYwZDI5eWExeGpabk52WTJ0bGRITjBjbVZo
YlhCeWFYWXVhQUJqT2x4a1pYWmxiRnh0CmMzWnpNakF3TlZ4MlkxeHBibU5zZFdSbFhITjBaR0Z5
Wnk1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmwKWjNKaGNHaHBZM05j
WTJkd1pHWnZjR1Z5WVhSdmNuUmhZbXhsTG1nQVl6cGNaR1YyWld4Y2JYTjJjekl3TURWY2RtTmNj
R3hoZEdadgpjbTF6Wkd0Y2FXNWpiSFZrWlZ4M2FXNWtaV1l1YUFCak9seGtaWFpsYkZ4dGMzWnpN
akF3TlZ4MlkxeHdiR0YwWm05eWJYTmthMXhwCmJtTnNkV1JsWEcxemVHMXNMbWdBWXpwY1pHVjJa
V3hjYlhOMmN6SXdNRFZjZG1OY2NHeGhkR1p2Y20xelpHdGNhVzVqYkhWa1pWeHkKWldGemIyNHVh
QUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldkeVlYQm9hV056WEdObmNH
Um1jMk5oYm01bApjaTVvQUdNNlhHUmxkbVZzWEcxemRuTXlNREExWEhaalhIQnNZWFJtYjNKdGMy
UnJYR2x1WTJ4MVpHVmNaR3huY3k1b0FHTTZYR1JsCmRtVnNYRzF6ZG5NeU1EQTFYSFpqWEhCc1lY
Um1iM0p0YzJSclhHbHVZMngxWkdWY2QybHVibXh6TG1nQVl6cGNaR1YyWld4Y2JYTjIKY3pJd01E
VmNkbU5jY0d4aGRHWnZjbTF6Wkd0Y2FXNWpiSFZrWlZ4M2FXNXpZMkZ5WkM1b0FHTTZYR1JsZG1W
c1hHMXpkbk15TURBMQpYSFpqWEhCc1lYUm1iM0p0YzJSclhHbHVZMngxWkdWY2QybHVZbUZ6WlM1
b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrClpWeGpiM0psZG1sa1pXOWNZM1p3YVho
bGJHSjFabVpsY2k1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4emRHUmkKYjI5
c0xtZ0FZenBjWkdWMlpXeGNiWE4yY3pJd01EVmNkbU5jY0d4aGRHWnZjbTF6Wkd0Y2FXNWpiSFZr
WlZ4M2RIbHdaWE11YUFCagpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaWFpw
WkdWdlhHTjJhVzFoWjJWaWRXWm1aWEl1YUFCak9seGhjSEJzClpXbHVkR1Z5Ym1Gc1hHbHVZMngx
WkdWY1lYWmhhV3hoWW1sc2FYUjVMbWdBWXpwY1pHVjJaV3hjYlhOMmN6SXdNRFZjZG1OY2NHeGgK
ZEdadmNtMXpaR3RjYVc1amJIVmtaVnh5Y0dOdVpISXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNY
R2x1WTJ4MVpHVmNZMjl5WlhacApaR1Z2WEdOMlluVm1abVZ5TG1nQVl6cGNZWEJ3YkdWcGJuUmxj
bTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm1iM1Z1WkdGMGFXOXVYR05tClltbHVZWEo1YUdWaGNDNW9B
R002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGhkbUZwYkdGaWFXeHBkSGxwYm5SbGNt
NWgKYkM1b0FHTTZYR1JsZG1Wc1hHMXpkbk15TURBMVhIWmpYSEJzWVhSbWIzSnRjMlJyWEdsdVky
eDFaR1ZjY25CamJuTnBjQzVvQUdNNgpYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIz
SmxkbWxrWlc5Y1kzWnlaWFIxY200dWFBQmpPbHhoY0hCc1pXbHVkR1Z5CmJtRnNYR2x1WTJ4MVpH
VmNZMjl5WldkeVlYQm9hV056WEdOblozTjBZWFJsTG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4
cGJtTnMKZFdSbFhHRjJZV2xzWVdKcGJHbDBlVzFoWTNKdmN5NW9BR002WEdSbGRtVnNYRzF6ZG5N
eU1EQTFYSFpqWEhCc1lYUm1iM0p0YzJScgpYR2x1WTJ4MVpHVmNkWEpzYlc5dUxtZ0FZenBjWVhC
d2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZuY21Gd2FHbGpjMXhqCloyTnNhWEJ6ZEdG
amF5NW9BR002WEdSbGRtVnNYRzF6ZG5NeU1EQTFYSFpqWEhCc1lYUm1iM0p0YzJSclhHbHVZMngx
WkdWY2QybHUKWldaekxtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZu
Y21Gd2FHbGpjMXhqWjNOb1lXUnBibWN1YUFCagpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngx
WkdWY1kyOXlaV2R5WVhCb2FXTnpYR05uWkdGMFlXTnZibk4xYldWeUxtZ0FZenBjCllYQndiR1Zw
Ym5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbmNtRndhR2xqYzF4aloyWjFibU4wYVc5dUxtZ0FZ
enBjWVhCd2JHVnAKYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbmNtRndhR2xqYzF4alozTjBl
V3hsTG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cApibU5zZFdSbFhHTm1ibVYwZDI5eWExeGpa
bWgwZEhCdFpYTnpZV2RsTG1nQVl6cGNaR1YyWld4Y2JYTjJjekl3TURWY2RtTmNjR3hoCmRHWnZj
bTF6Wkd0Y2FXNWpiSFZrWlZ4c2VtVjRjR0Z1WkM1b0FHTTZYR1JsZG1Wc1hHMXpkbk15TURBMVhI
WmpYSEJzWVhSbWIzSnQKYzJSclhHbHVZMngxWkdWY1pHUmxiV3d1YUFCak9seGhjSEJzWldsdWRH
VnlibUZzWEdsdVkyeDFaR1ZjZFc1cFkyOWtaVngxZEdZeApOaTVvQUdNNlhHRndjR3hsYVc1MFpY
SnVZV3hjYVc1amJIVmtaVngxYm1samIyUmxYSFYwWmw5dmJHUXVhQUJqT2x4aGNIQnNaV2x1CmRH
VnlibUZzWEdsdVkyeDFaR1ZjZFc1cFkyOWtaVngxZG1WeWMybHZiaTVvQUdNNlhHRndjR3hsYVc1
MFpYSnVZV3hjYVc1amJIVmsKWlZ4amIzSmxaM0poY0docFkzTmNZMmRtYjI1MFoyeDVjR2h6ZFhC
d2IzSjBMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1OcwpkV1JsWEdOdmNtVm5jbUZ3YUds
amMxeGpaMk52Ym5SbGVIUjBaWGgwTG1nQVl6cGNaR1YyWld4Y2JYTjJjekl3TURWY2RtTmNhVzVq
CmJIVmtaVngwYVcxbExtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZu
Y21Gd2FHbGpjMXhqWjJOdmJHOXkKWTI5a1pXWnlZV2R0Wlc1MExtZ0FZenBjWVhCd2JHVnBiblJs
Y201aGJGeHBibU5zZFdSbFhHTnZjbVZtYjNWdVpHRjBhVzl1WEdObQpaWEp5YjNJdWFBQmpPbHhr
WlhabGJGeHRjM1p6TWpBd05WeDJZMXh3YkdGMFptOXliWE5rYTF4cGJtTnNkV1JsWEhKd1kyNTBa
WEp5CkxtZ0FZenBjWkdWMlpXeGNiWE4yY3pJd01EVmNkbU5jY0d4aGRHWnZjbTF6Wkd0Y2FXNWpi
SFZrWlZ4bmRXbGtaR1ZtTG1nQVl6cGMKWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZj
bVZtYjNWdVpHRjBhVzl1WEdObWMzUnlhVzVuTG1nQVl6cGNaR1YyWld4YwpiWE4yY3pJd01EVmNk
bU5jY0d4aGRHWnZjbTF6Wkd0Y2FXNWpiSFZrWlZ4eWNHTmhjM2x1WXk1b0FHTTZYR1JsZG1Wc1hH
MXpkbk15Ck1EQTFYSFpqWEhCc1lYUm1iM0p0YzJSclhHbHVZMngxWkdWY2NuQmpibk5wTG1nQVl6
cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnMKZFdSbFhHTnZjbVZtYjNWdVpHRjBhVzl1WEdObVpH
RjBZUzVvQUdNNlhHUmxkbVZzWEcxemRuTXlNREExWEhaalhIQnNZWFJtYjNKdApjMlJyWEdsdVky
eDFaR1ZjZDJsdWMyOWphekl1YUFCak9seGtaWFpsYkZ4dGMzWnpNakF3TlZ4MlkxeHdiR0YwWm05
eWJYTmthMXhwCmJtTnNkV1JsWEhkcGJtZGthUzVvQUdNNlhHUmxkbVZzWEcxemRuTXlNREExWEha
alhIQnNZWFJtYjNKdGMyUnJYR2x1WTJ4MVpHVmMKZDJsdVpHOTNjeTVvQUdNNlhHUmxkbVZzWEcx
emRuTXlNREExWEhaalhIQnNZWFJtYjNKdGMyUnJYR2x1WTJ4MVpHVmNjSE5vY0dGagphekl1YUFC
ak9seGtaWFpsYkZ4dGMzWnpNakF3TlZ4MlkxeHBibU5zZFdSbFhHVjRZM0IwTG1nQVl6cGNaR1Yy
Wld4Y2JYTjJjekl3Ck1EVmNkbU5jYVc1amJIVmtaVnhqY25Sa1pXWnpMbWdBWXpwY1pHVjJaV3hj
YlhOMmN6SXdNRFZjZG1OY2FXNWpiSFZrWlZ4ellXd3UKYUFCak9seGtaWFpsYkZ4dGMzWnpNakF3
TlZ4MlkxeHBibU5zZFdSbFhHTnlkR0Z6YzJWdExtZ0FZenBjWVhCd2JHVnBiblJsY201aApiRnhw
Ym1Oc2RXUmxYSFZ1YVdOdlpHVmNkV052Ym1acFp5NW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNh
VzVqYkhWa1pWeGpiM0psClptOTFibVJoZEdsdmJseGpabUoxYm1Sc1pTNW9BR002WEdSbGRtVnNY
RzF6ZG5NeU1EQTFYSFpqWEdsdVkyeDFaR1ZjZG1Ga1pXWnoKTG1nQVl6cGNZWEJ3YkdWcGJuUmxj
bTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm1iM1Z1WkdGMGFXOXVYR05tWW5sMFpXOXlaR1Z5TG1nQQpZ
enBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZtYjNWdVpHRjBhVzl1WEdObVpH
bGpkR2x2Ym1GeWVTNW9BR002ClhHUmxkbVZzWEcxemRuTXlNREExWEhaalhIQnNZWFJtYjNKdGMy
UnJYR2x1WTJ4MVpHVmNkMmx1Ym5RdWFBQmpPbHhrWlhabGJGeHQKYzNaek1qQXdOVngyWTF4d2JH
RjBabTl5YlhOa2ExeHBibU5zZFdSbFhIZHBibk50WTNKa0xtZ0FZenBjWkdWMlpXeGNiWE4yY3pJ
dwpNRFZjZG1OY2NHeGhkR1p2Y20xelpHdGNhVzVqYkhWa1pWeDNhVzV1WlhSM2F5NW9BR002WEdS
bGRtVnNYRzF6ZG5NeU1EQTFYSFpqClhHbHVZMngxWkdWY1kzUjVjR1V1YUFCak9seGhjSEJzWlds
dWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm4KYkdGNVpYSXVhQUJqT2x4
a1pYWmxiRnh0YzNaek1qQXdOVngyWTF4cGJtTnNkV1JsWEd4dlkyRnNaUzVvQUdNNlhHRndjR3hs
YVc1MApaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZMmRqYjI1MFpYaDBjSEpw
ZG1GMFpTNW9BR002WEdSbGRtVnNYRzF6CmRuTXlNREExWEhaalhIQnNZWFJtYjNKdGMyUnJYR2x1
WTJ4MVpHVmNiMkpxYVdSc0xtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHAKYm1Oc2RXUmxYR1Jw
YzNCaGRHTm9YR1JwYzNCaGRHTm9MbWdBWXpwY1pHVjJaV3hjYlhOMmN6SXdNRFZjZG1OY2FXNWpi
SFZrWlZ4egpaWFJxYlhBdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1pHbHpj
R0YwWTJoY1ltRnpaUzVvQUdNNlhHRndjR3hsCmFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxa
bTkxYm1SaGRHbHZibHhqWm0xbGMzTmhaMlZ3YjNKMExtZ0FZenBjWkdWMlpXeGMKYlhOMmN6SXdN
RFZjZG1OY2NHeGhkR1p2Y20xelpHdGNhVzVqYkhWa1pWeHZZV2xrYkM1b0FHTTZYR1JsZG1Wc1hH
MXpkbk15TURBMQpYSFpqWEhCc1lYUm1iM0p0YzJSclhHbHVZMngxWkdWY1kyUmxjbkl1YUFBa1ZE
QWdKR1ZpY0NBOUlDUmxhWEFnSkZRd0lEUWdLeUJlCklEMGdKR1ZpY0NBa1ZEQWdYaUE5SUNSbGMz
QWdKRlF3SURnZ0t5QTlJQ1JNSUNSVU1DQXVZMkpUWVhabFpGSmxaM01nTFNBOUlDUlEKSUNSVU1D
QTRJQ3NnTG1OaVVHRnlZVzF6SUNzZ1BRQUFBR3dHQUFBWUFBQUFCd0M0QmdBQUdBQUFBQXNBdkFZ
QUFCZ0FBQUFLQVAwRwpBQUFaQUFBQUN3QUJCd0FBR1FBQUFBb0FEQWNBQUJvQUFBQUxBQkFIQUFB
YUFBQUFDZ0FiQndBQUd3QUFBQXNBSHdjQUFCc0FBQUFLCkFGd0hBQUFZQUFBQUN3QmdCd0FBR0FB
QUFBb0F6QWNBQUNVQUFBQUhBQmdJQUFBbEFBQUFDd0FjQ0FBQUpRQUFBQW9BWkFnQUFDVUEKQUFB
TEFHZ0lBQUFsQUFBQUNnQ2NDQUFBSmdBQUFBY0E2QWdBQUNZQUFBQUxBT3dJQUFBbUFBQUFDZ0JN
Q1FBQUpnQUFBQXNBVUFrQQpBQ1lBQUFBS0FJUUpBQUFvQUFBQUJ3RFFDUUFBS0FBQUFBc0ExQWtB
QUNnQUFBQUtBQndLQUFBb0FBQUFDd0FnQ2dBQUtBQUFBQW9BClZBb0FBQ2tBQUFBSEFLQUtBQUFw
QUFBQUN3Q2tDZ0FBS1FBQUFBb0E1Z29BQUNrQUFBQUxBT29LQUFBcEFBQUFDZ0QyQ2dBQUtRQUEK
QUFzQStnb0FBQ2tBQUFBS0FCQUxBQUFwQUFBQUN3QVVDd0FBS1FBQUFBb0FZQXNBQURFQUFBQUhB
S3dMQUFBeEFBQUFDd0N3Q3dBQQpNUUFBQUFvQTZ3c0FBRGNBQUFBTEFPOExBQUEzQUFBQUNnRDZD
d0FBTmdBQUFBc0EvZ3NBQURZQUFBQUtBQWtNQUFBMUFBQUFDd0FOCkRBQUFOUUFBQUFvQUdBd0FB
RFFBQUFBTEFCd01BQUEwQUFBQUNnQW5EQUFBTXdBQUFBc0FLd3dBQURNQUFBQUtBRFlNQUFBeUFB
QUEKQ3dBNkRBQUFNZ0FBQUFvQVJRd0FBRGdBQUFBTEFFa01BQUE0QUFBQUNnQlVEQUFBT1FBQUFB
c0FXQXdBQURrQUFBQUtBR01NQUFCWgpBQUFBQ3dCbkRBQUFXUUFBQUFvQURBMEFBRjhBQUFBTEFC
QU5BQUJmQUFBQUNnQnpEUUFBWWdBQUFBc0FkdzBBQUdJQUFBQUtBTVVOCkFBQXhBQUFBQ3dESkRR
QUFNUUFBQUFvQTZnMEFBREVBQUFBTEFPNE5BQUF4QUFBQUNnQVREZ0FBTVFBQUFBc0FGdzRBQURF
QUFBQUsKQUY4T0FBQXhBQUFBQ3dCakRnQUFNUUFBQUFvQWhBNEFBREVBQUFBTEFJZ09BQUF4QUFB
QUNnQ3hEZ0FBTVFBQUFBc0F0UTRBQURFQQpBQUFLQU1FT0FBQXhBQUFBQ3dERkRnQUFNUUFBQUFv
QTBRNEFBREVBQUFBTEFOVU9BQUF4QUFBQUNnRGhEZ0FBTVFBQUFBc0E1UTRBCkFERUFBQUFLQVBF
T0FBQXhBQUFBQ3dEMURnQUFNUUFBQUFvQUFROEFBREVBQUFBTEFBVVBBQUF4QUFBQUNnQVJEd0FB
TVFBQUFBc0EKRlE4QUFERUFBQUFLQUNFUEFBQXhBQUFBQ3dBbER3QUFNUUFBQUFvQU1ROEFBREVB
QUFBTEFEVVBBQUF4QUFBQUNnQkJEd0FBTVFBQQpBQXNBUlE4QUFERUFBQUFLQUZFUEFBQXhBQUFB
Q3dCVkR3QUFNUUFBQUFvQVlROEFBREVBQUFBTEFHVVBBQUF4QUFBQUNnQnhEd0FBCk1RQUFBQXNB
ZFE4QUFERUFBQUFLQUlFUEFBQXhBQUFBQ3dDRkR3QUFNUUFBQUFvQWtROEFBREVBQUFBTEFKVVBB
QUF4QUFBQUNnQ2gKRHdBQU1RQUFBQXNBcFE4QUFERUFBQUFLQUxFUEFBQXhBQUFBQ3dDMUR3QUFN
UUFBQUFvQXdROEFBREVBQUFBTEFNVVBBQUF4QUFBQQpDZ0RSRHdBQU1RQUFBQXNBMVE4QUFERUFB
QUFLQU9FUEFBQXhBQUFBQ3dEbER3QUFNUUFBQUFvQS9BOEFBREVBQUFBTEFBQVFBQUF4CkFBQUFD
Z0QwRVFBQWRBQUFBQWNBUUJJQUFIUUFBQUFMQUVRU0FBQjBBQUFBQ2dEWkVnQUFkQUFBQUFzQTNS
SUFBSFFBQUFBS0FPa1MKQUFCMEFBQUFDd0R0RWdBQWRBQUFBQW9BQkJNQUFIUUFBQUFMQUFnVEFB
QjBBQUFBQ2dCY0V3QUFkd0FBQUFjQXFCTUFBSGNBQUFBTApBS3dUQUFCM0FBQUFDZ0EzRkFBQWR3
QUFBQXNBT3hRQUFIY0FBQUFLQUVjVUFBQjNBQUFBQ3dCTEZBQUFkd0FBQUFvQVZ4UUFBSGNBCkFB
QUxBRnNVQUFCM0FBQUFDZ0J3RkFBQWR3QUFBQXNBZEJRQUFIY0FBQUFLQU1nVUFBQjZBQUFBQndB
VUZRQUFlZ0FBQUFzQUdCVUEKQUhvQUFBQUtBSXdWQUFCNkFBQUFDd0NRRlFBQWVnQUFBQW9BeEJV
QUFIc0FBQUFIQUJBV0FBQjdBQUFBQ3dBVUZnQUFld0FBQUFvQQpYaFlBQUh3QUFBQUxBR0lXQUFC
OEFBQUFDZ0J0RmdBQWZRQUFBQXNBY1JZQUFIMEFBQUFLQUh3V0FBQitBQUFBQ3dDQUZnQUFmZ0FB
CkFBb0FnQmNBQUhzQUFBQUxBSVFYQUFCN0FBQUFDZ0NRRndBQWV3QUFBQXNBbEJjQUFIc0FBQUFL
QUtBWEFBQjdBQUFBQ3dDa0Z3QUEKZXdBQUFBb0FzQmNBQUhzQUFBQUxBTFFYQUFCN0FBQUFDZ0RB
RndBQWV3QUFBQXNBeEJjQUFIc0FBQUFLQU5BWEFBQjdBQUFBQ3dEVQpGd0FBZXdBQUFBb0E0QmNB
QUhzQUFBQUxBT1FYQUFCN0FBQUFDZ0Q0RndBQWV3QUFBQXNBL0JjQUFIc0FBQUFLQU1BWUFBQ09B
QUFBCkJ3QU1HUUFBamdBQUFBc0FFQmtBQUk0QUFBQUtBRXdaQUFDUEFBQUFDd0JRR1FBQWp3QUFB
QW9BV3hrQUFKQUFBQUFMQUY4WkFBQ1EKQUFBQUNnQnFHUUFBa1FBQUFBc0FiaGtBQUpFQUFBQUtB
TTBhQUFDT0FBQUFDd0RSR2dBQWpnQUFBQW9BM1JvQUFJNEFBQUFMQU9FYQpBQUNPQUFBQUNnRHRH
Z0FBamdBQUFBc0E4Um9BQUk0QUFBQUtBUDBhQUFDT0FBQUFDd0FCR3dBQWpnQUFBQW9BRFJzQUFJ
NEFBQUFMCkFCRWJBQUNPQUFBQUNnQWRHd0FBamdBQUFBc0FJUnNBQUk0QUFBQUtBQzBiQUFDT0FB
QUFDd0F4R3dBQWpnQUFBQW9BUFJzQUFJNEEKQUFBTEFFRWJBQUNPQUFBQUNnQk5Hd0FBamdBQUFB
c0FVUnNBQUk0QUFBQUtBRjBiQUFDT0FBQUFDd0JoR3dBQWpnQUFBQW9BYlJzQQpBSTRBQUFBTEFI
RWJBQUNPQUFBQUNnQjlHd0FBamdBQUFBc0FnUnNBQUk0QUFBQUtBSTBiQUFDT0FBQUFDd0NSR3dB
QWpnQUFBQW9BCm5Sc0FBSTRBQUFBTEFLRWJBQUNPQUFBQUNnQ3RHd0FBamdBQUFBc0FzUnNBQUk0
QUFBQUtBTDBiQUFDT0FBQUFDd0RCR3dBQWpnQUEKQUFvQXpSc0FBSTRBQUFBTEFORWJBQUNPQUFB
QUNnRG9Hd0FBamdBQUFBc0E3QnNBQUk0QUFBQUtBRGdkQUFDYkFBQUFCd0NFSFFBQQptd0FBQUFz
QWlCMEFBSnNBQUFBS0FMd2RBQUNjQUFBQUN3REFIUUFBbkFBQUFBb0F5eDBBQUowQUFBQUxBTThk
QUFDZEFBQUFDZ0RhCkhRQUFuZ0FBQUFzQTNoMEFBSjRBQUFBS0FDUWVBQUNiQUFBQUN3QW9IZ0FB
bXdBQUFBb0FYQjRBQUo4QUFBQUhBS2dlQUFDZkFBQUEKQ3dDc0hnQUFud0FBQUFvQThoNEFBS0FB
QUFBTEFQWWVBQUNnQUFBQUNnQUJId0FBb1FBQUFBc0FCUjhBQUtFQUFBQUtBQkFmQUFDaQpBQUFB
Q3dBVUh3QUFvZ0FBQUFvQVVCOEFBSjhBQUFBTEFGUWZBQUNmQUFBQUNnQ1lId0FBb3dBQUFBY0E1
QjhBQUtNQUFBQUxBT2dmCkFBQ2pBQUFBQ2dCZ0lBQUFvd0FBQUFzQVpDQUFBS01BQUFBS0FLZ2dB
QUNrQUFBQUJ3RDBJQUFBcEFBQUFBc0ErQ0FBQUtRQUFBQUsKQUZBaEFBQ2tBQUFBQ3dCVUlRQUFw
QUFBQUFvQW9DRUFBSzRBQUFBSEFPd2hBQUN1QUFBQUN3RHdJUUFBcmdBQUFBb0FiaUlBQUs0QQpB
QUFMQUhJaUFBQ3VBQUFBQ2dDSUlnQUFyZ0FBQUFzQWpDSUFBSzRBQUFBS0FNQWlBQUN3QUFBQUJ3
QU1Jd0FBc0FBQUFBc0FFQ01BCkFMQUFBQUFLQUdvakFBQ3dBQUFBQ3dCdUl3QUFzQUFBQUFvQWVp
TUFBTEFBQUFBTEFINGpBQUN3QUFBQUNnQ0tJd0FBc0FBQUFBc0EKamlNQUFMQUFBQUFLQUpvakFB
Q3dBQUFBQ3dDZUl3QUFzQUFBQUFvQXRDTUFBTEFBQUFBTEFMZ2pBQUN3QUFBQUNnQUVKQUFBdFFB
QQpBQWNBVUNRQUFMVUFBQUFMQUZRa0FBQzFBQUFBQ2dDM0pBQUF0UUFBQUFzQXV5UUFBTFVBQUFB
S0FOQWtBQUMxQUFBQUN3RFVKQUFBCnRRQUFBQW9BQ0NVQUFMY0FBQUFIQUZRbEFBQzNBQUFBQ3dC
WUpRQUF0d0FBQUFvQW5pVUFBTGtBQUFBTEFLSWxBQUM1QUFBQUNnQ3QKSlFBQXVBQUFBQXNBc1NV
QUFMZ0FBQUFLQUx3bEFBQzZBQUFBQ3dEQUpRQUF1Z0FBQUFvQXl5VUFBTHNBQUFBTEFNOGxBQUM3
QUFBQQpDZ0FxSmdBQXR3QUFBQXNBTGlZQUFMY0FBQUFLQURvbUFBQzNBQUFBQ3dBK0pnQUF0d0FB
QUFvQVNpWUFBTGNBQUFBTEFFNG1BQUMzCkFBQUFDZ0JhSmdBQXR3QUFBQXNBWGlZQUFMY0FBQUFL
QUdvbUFBQzNBQUFBQ3dCdUpnQUF0d0FBQUFvQWhDWUFBTGNBQUFBTEFJZ20KQUFDM0FBQUFDZ0RN
SmdBQXdBQUFBQWNBR0NjQUFNQUFBQUFMQUJ3bkFBREFBQUFBQ2dCakp3QUF3UUFBQUFzQVp5Y0FB
TUVBQUFBSwpBSEluQUFEQ0FBQUFDd0IySndBQXdnQUFBQW9BZ1NjQUFNTUFBQUFMQUlVbkFBRERB
QUFBQ2dERUp3QUF3QUFBQUFzQXlDY0FBTUFBCkFBQUtBQXdvQUFERUFBQUFCd0JZS0FBQXhBQUFB
QXNBWENnQUFNUUFBQUFLQUtnb0FBREVBQUFBQ3dDc0tBQUF4QUFBQUFvQXVDZ0EKQU1RQUFBQUxB
THdvQUFERUFBQUFDZ0RJS0FBQXhBQUFBQXNBekNnQUFNUUFBQUFLQU5nb0FBREVBQUFBQ3dEY0tB
QUF4QUFBQUFvQQo4Q2dBQU1RQUFBQUxBUFFvQUFERUFBQUFDZ0FvS1FBQXhRQUFBQWNBZENrQUFN
VUFBQUFMQUhncEFBREZBQUFBQ2dEbUtRQUF4UUFBCkFBc0E2aWtBQU1VQUFBQUtBUFlwQUFERkFB
QUFDd0Q2S1FBQXhRQUFBQW9BQmlvQUFNVUFBQUFMQUFvcUFBREZBQUFBQ2dBZ0tnQUEKeFFBQUFB
c0FKQ29BQU1VQUFBQUtBR2dxQUFESkFBQUFCd0MwS2dBQXlRQUFBQXNBdUNvQUFNa0FBQUFLQUFv
ckFBREpBQUFBQ3dBTwpLd0FBeVFBQUFBb0FKQ3NBQU1rQUFBQUxBQ2dyQUFESkFBQUFDZ0JjS3dB
QXl3QUFBQWNBcUNzQUFNc0FBQUFMQUt3ckFBRExBQUFBCkNnQVBMQUFBeXdBQUFBc0FFeXdBQU1z
QUFBQUtBQjhzQUFETEFBQUFDd0FqTEFBQXl3QUFBQW9BT0N3QUFNc0FBQUFMQUR3c0FBREwKQUFB
QUNnQ0lMQUFBelFBQUFBY0ExQ3dBQU0wQUFBQUxBTmdzQUFETkFBQUFDZ0JpTFFBQXpRQUFBQXNB
WmkwQUFNMEFBQUFLQUhJdApBQUROQUFBQUN3QjJMUUFBelFBQUFBb0FnaTBBQU0wQUFBQUxBSVl0
QUFETkFBQUFDZ0NTTFFBQXpRQUFBQXNBbGkwQUFNMEFBQUFLCkFLd3RBQUROQUFBQUN3Q3dMUUFB
elFBQUFBb0FIQzRBQU5NQUFBQUhBR2d1QUFEVEFBQUFDd0JzTGdBQTB3QUFBQW9Bcnk0QUFOTUEK
QUFBTEFMTXVBQURUQUFBQUNnRElMZ0FBMHdBQUFBc0F6QzRBQU5NQUFBQUtBQUF2QUFEVkFBQUFC
d0JNTHdBQTFRQUFBQXNBVUM4QQpBTlVBQUFBS0FMd3ZBQURWQUFBQUN3REFMd0FBMVFBQUFBb0F6
QzhBQU5VQUFBQUxBTkF2QUFEVkFBQUFDZ0RjTHdBQTFRQUFBQXNBCjRDOEFBTlVBQUFBS0FQUXZB
QURWQUFBQUN3RDRMd0FBMVFBQUFBb0FSREFBQU5nQUFBQUhBSkF3QUFEWUFBQUFDd0NVTUFBQTJB
QUEKQUFvQUFqRUFBTmdBQUFBTEFBWXhBQURZQUFBQUNnQVNNUUFBMkFBQUFBc0FGakVBQU5nQUFB
QUtBQ3d4QUFEWUFBQUFDd0F3TVFBQQoyQUFBQUFvQVpERUFBTjBBQUFBSEFMQXhBQURkQUFBQUN3
QzBNUUFBM1FBQUFBb0FGRElBQU4wQUFBQUxBQmd5QUFEZEFBQUFDZ0FzCk1nQUEzUUFBQUFzQU1E
SUFBTjBBQUFBS0FHUXlBQURmQUFBQUJ3Q3dNZ0FBM3dBQUFBc0F0RElBQU44QUFBQUtBQ2t6QUFE
ZkFBQUEKQ3dBdE13QUEzd0FBQUFvQVJETUFBTjhBQUFBTEFFZ3pBQURmQUFBQUNnQjhNd0FBNFFB
QUFBY0F5RE1BQU9FQUFBQUxBTXd6QUFEaApBQUFBQ2dEZk5BQUE0UUFBQUFzQTR6UUFBT0VBQUFB
S0FPODBBQURoQUFBQUN3RHpOQUFBNFFBQUFBb0EvelFBQU9FQUFBQUxBQU0xCkFBRGhBQUFBQ2dB
UE5RQUE0UUFBQUFzQUV6VUFBT0VBQUFBS0FCODFBQURoQUFBQUN3QWpOUUFBNFFBQUFBb0FPRFVB
QU9FQUFBQUwKQUR3MUFBRGhBQUFBQ2dESU5RQUE1QUFBQUFjQUZEWUFBT1FBQUFBTEFCZzJBQURr
QUFBQUNnQ3NOZ0FBNUFBQUFBc0FzRFlBQU9RQQpBQUFLQUx3MkFBRGtBQUFBQ3dEQU5nQUE1QUFB
QUFvQXpEWUFBT1FBQUFBTEFOQTJBQURrQUFBQUNnRGtOZ0FBNUFBQUFBc0E2RFlBCkFPUUFBQUFL
QURRM0FBRG5BQUFBQndDQU53QUE1d0FBQUFzQWhEY0FBT2NBQUFBS0FPYzNBQURuQUFBQUN3RHJO
d0FBNXdBQUFBb0EKQURnQUFPY0FBQUFMQUFRNEFBRG5BQUFBQ2dBNE9BQUE2UUFBQUFjQWhEZ0FB
T2tBQUFBTEFJZzRBQURwQUFBQUNnRE1PQUFBNndBQQpBQXNBMERnQUFPc0FBQUFLQU5zNEFBRHFB
QUFBQ3dEZk9BQUE2Z0FBQUFvQTZqZ0FBT3dBQUFBTEFPNDRBQURzQUFBQUNnRDVPQUFBCjdRQUFB
QXNBL1RnQUFPMEFBQUFLQUk4NUFBRHBBQUFBQ3dDVE9RQUE2UUFBQUFvQW56a0FBT2tBQUFBTEFL
TTVBQURwQUFBQUNnQ3YKT1FBQTZRQUFBQXNBc3prQUFPa0FBQUFLQU1nNUFBRHBBQUFBQ3dETU9R
QUE2UUFBQUFvQUlEb0FBUE1BQUFBSEFHdzZBQUR6QUFBQQpDd0J3T2dBQTh3QUFBQW9Bd1RvQUFQ
VUFBQUFMQU1VNkFBRDFBQUFBQ2dEUU9nQUE5QUFBQUFzQTFEb0FBUFFBQUFBS0FOODZBQUQyCkFB
QUFDd0RqT2dBQTlnQUFBQW9BN2pvQUFQY0FBQUFMQVBJNkFBRDNBQUFBQ2dEVE93QUE4d0FBQUFz
QTF6c0FBUE1BQUFBS0FPTTcKQUFEekFBQUFDd0RuT3dBQTh3QUFBQW9BOHpzQUFQTUFBQUFMQVBj
N0FBRHpBQUFBQ2dBRFBBQUE4d0FBQUFzQUJ6d0FBUE1BQUFBSwpBQk04QUFEekFBQUFDd0FYUEFB
QTh3QUFBQW9BSXp3QUFQTUFBQUFMQUNjOEFBRHpBQUFBQ2dBelBBQUE4d0FBQUFzQU56d0FBUE1B
CkFBQUtBRU04QUFEekFBQUFDd0JIUEFBQTh3QUFBQW9BVXp3QUFQTUFBQUFMQUZjOEFBRHpBQUFB
Q2dCc1BBQUE4d0FBQUFzQWNEd0EKQVBNQUFBQUtBT3c4QUFEN0FBQUFCd0E0UFFBQSt3QUFBQXNB
UEQwQUFQc0FBQUFLQUxzOUFBRDdBQUFBQ3dDL1BRQUErd0FBQUFvQQp5ejBBQVBzQUFBQUxBTTg5
QUFEN0FBQUFDZ0RrUFFBQSt3QUFBQXNBNkQwQUFQc0FBQUFLQUN3K0FBRCtBQUFBQndCNFBnQUEv
Z0FBCkFBc0FmRDRBQVA0QUFBQUtBUEErQUFEK0FBQUFDd0QwUGdBQS9nQUFBQW9BQ0Q4QUFQNEFB
QUFMQUF3L0FBRCtBQUFBQ2dCQVB3QUEKQUFFQUFBY0FqRDhBQUFBQkFBQUxBSkEvQUFBQUFRQUFD
Z0QvUHdBQUFBRUFBQXNBQTBBQUFBQUJBQUFLQUJoQUFBQUFBUUFBQ3dBYwpRQUFBQUFFQUFBb0FV
RUFBQUFJQkFBQUhBSnhBQUFBQ0FRQUFDd0NnUUFBQUFnRUFBQW9BNjBBQUFBSUJBQUFMQU85QUFB
QUNBUUFBCkNnQUVRUUFBQWdFQUFBc0FDRUVBQUFJQkFBQUtBRHhCQUFBRUFRQUFCd0NJUVFBQUJB
RUFBQXNBakVFQUFBUUJBQUFLQU5oQkFBQUUKQVFBQUN3RGNRUUFBQkFFQUFBb0E4RUVBQUFRQkFB
QUxBUFJCQUFBRUFRQUFDZ0FvUWdBQUJnRUFBQWNBZEVJQUFBWUJBQUFMQUhoQwpBQUFHQVFBQUNn
REdRZ0FBQmdFQUFBc0F5a0lBQUFZQkFBQUtBT0JDQUFBR0FRQUFDd0RrUWdBQUJnRUFBQW9BR0VN
QUFBZ0JBQUFICkFHUkRBQUFJQVFBQUN3Qm9Rd0FBQ0FFQUFBb0F0VU1BQUFnQkFBQUxBTGxEQUFB
SUFRQUFDZ0RRUXdBQUNBRUFBQXNBMUVNQUFBZ0IKQUFBS0FBaEVBQUFLQVFBQUJ3QlVSQUFBQ2dF
QUFBc0FXRVFBQUFvQkFBQUtBS0JFQUFBS0FRQUFDd0NrUkFBQUNnRUFBQW9BdUVRQQpBQW9CQUFB
TEFMeEVBQUFLQVFBQUNnRHdSQUFBREFFQUFBY0FQRVVBQUF3QkFBQUxBRUJGQUFBTUFRQUFDZ0NL
UlFBQURBRUFBQXNBCmprVUFBQXdCQUFBS0FLUkZBQUFNQVFBQUN3Q29SUUFBREFFQUFBb0EzRVVB
QUE0QkFBQUhBQ2hHQUFBT0FRQUFDd0FzUmdBQURnRUEKQUFvQTMwWUFBQTRCQUFBTEFPTkdBQUFP
QVFBQUNnRDRSZ0FBRGdFQUFBc0EvRVlBQUE0QkFBQUtBREJIQUFBUUFRQUFCd0I4UndBQQpFQUVB
QUFzQWdFY0FBQkFCQUFBS0FIcElBQUFRQVFBQUN3QitTQUFBRUFFQUFBb0FsRWdBQUJBQkFBQUxB
SmhJQUFBUUFRQUFDZ0RNClNBQUFFZ0VBQUFjQUdFa0FBQklCQUFBTEFCeEpBQUFTQVFBQUNnQ0tT
UUFBRWdFQUFBc0Fqa2tBQUJJQkFBQUtBS1JKQUFBU0FRQUEKQ3dDb1NRQUFFZ0VBQUFvQTNFa0FB
QlFCQUFBSEFDaEtBQUFVQVFBQUN3QXNTZ0FBRkFFQUFBb0FkMG9BQUJRQkFBQUxBSHRLQUFBVQpB
UUFBQ2dDUVNnQUFGQUVBQUFzQWxFb0FBQlFCQUFBS0FNaEtBQUFXQVFBQUJ3QVVTd0FBRmdFQUFB
c0FHRXNBQUJZQkFBQUtBRlZMCkFBQVdBUUFBQ3dCWlN3QUFGZ0VBQUFvQWNFc0FBQllCQUFBTEFI
UkxBQUFXQVFBQUNnQ3dTd0FBMFFBQUFBc0F0RXNBQU5FQUFBQUsKQUFoTUFBRFNBQUFBQ3dBTVRB
QUEwZ0FBQUFvQTlVd0FBTndBQUFBTEFQbE1BQURjQUFBQUNnQVlUUUFBMndBQUFBc0FIRTBBQU5z
QQpBQUFLQUZCT0FBQUlBQUFBQ3dCVVRnQUFDQUFBQUFvQWNFNEFBQXNBQUFBTEFIUk9BQUFMQUFB
QUNnQ1NUZ0FBREFBQUFBc0FsazRBCkFBd0FBQUFLQUxWT0FBQW5BUUFBQ3dDNVRnQUFKd0VBQUFv
QTdVNEFBQ3dCQUFBTEFQRk9BQUFzQVFBQUNnQWVUd0FBS1FFQUFBc0EKSWs4QUFDa0JBQUFLQUZ0
UEFBQXRBUUFBQ3dCZlR3QUFMUUVBQUFvQWpVOEFBQ2dCQUFBTEFKRlBBQUFvQVFBQUNnQy9Ud0FB
TGdFQQpBQXNBdzA4QUFDNEJBQUFLQVA1UEFBQVFBQUFBQ3dBQ1VBQUFFQUFBQUFvQUpGQUFBQzhB
QUFBTEFDaFFBQUF2QUFBQUNnQlBVQUFBCkxRQUFBQXNBVTFBQUFDMEFBQUFLQUhkUUFBQXNBQUFB
Q3dCN1VBQUFMQUFBQUFvQTcxb0FBTkFBQUFBTEFQTmFBQURRQUFBQUNnQmMKWWdBQTd3QUFBQXNB
WUdJQUFPOEFBQUFLQUk1aUFBRHlBQUFBQ3dDU1lnQUE4Z0FBQUFvQXhHSUFBUEVBQUFBTEFNaGlB
QUR4QUFBQQpDZ0Q2WWdBQStBQUFBQXNBL21JQUFQZ0FBQUFLQURoakFBRDlBQUFBQ3dBOFl3QUEv
UUFBQUFvQU16TVRRRjlyUTBaWGFXNWtiM2R6ClUxTk1VR1ZsY2tObGNuUUFBRjlyUTBaWGFXNWti
M2R6VTFOTVRHOWpZV3hEWlhKMEFGOXJRMFpUZEhKbFlXMVFjbTl3WlhKMGVWZHAKYm1SdmQzTlRV
MHhEWlhKMFNXNW1id0FBQUFCZmEwTkdWVkpNUTI5dWJtVmpkR2x2YmxCeWIzQmxjblI1VTJodmRX
eGtVMjVwWm1ZQQpBQUFBUXdCR0FFNEFaUUIwQUhjQWJ3QnlBR3NBTGdCa0FHd0FiQUFBQUY5RFJr
NWxkSGR2Y210SVZGUlFRMjl1Ym1WamRHbHZia05oClkyaGxVMlYwVEdsdGFYUUFBQUJmUTBaT1pY
UjNiM0pyU0ZSVVVFTnZibTVsWTNScGIyNURZV05vWlVkbGRFeHBiV2wwQUFBQVVISnYKZUhrdFFY
VjBhRzl5YVhwaGRHbHZiZ0F3QUFBQUFnQUFBQUFBQUVCVmkreUQ3Qmk0ek16TXpJbEY2SWxGN0ls
RjhJbEY5SWxGK0lsRgovTWRGN0FBQUFBREhSZkFnQUFBQXgwWDBNQUFBQU1kRitFQUFBQUNEZlFn
QWZBYURmUWdFZGdMckZvdEZDSXRNaGV5SkRRQUFBQUNMClZRaUpGUUFBQUFCU2k4MVFqUlVBQUFB
QTZBQUFBQUJZV292bFhjT0wvd0VBQUFBQUFBQUE3UC8vL3hBQUFBQUFBQUFBYzIxdmIzUm8KYVc1
blZIbHdaUURNek16TXpNek16TXpNVll2c29RQUFBQUJkdzh6TXpNek16RldMN05sRkNOa2RBQUFB
QUYzRHpNeFZpK3paQlFBQQpBQUJkdzh6TXpNek1WWXZzVm92MGFnQm9BQUFBQUdvQWFrci9GUUFB
QUFBNzlPZ0FBQUFBaS9ScUFHZ0FBQUFBYWdCb0NpQUFBUDhWCkFBQUFBRHYwNkFBQUFBRG9BQUFB
QU5rZEFBQUFBTVlGQUFBQUFBRmVPK3pvQUFBQUFGM0R6TXpNek16TXpNek1WWXZzZ2V6MEFBQUEK
VmxlTnZRei8vLys1UFFBQUFMak16TXpNODZ0bXgwWDRYQUNMOUdvQWpVWHNVR29BYUF3Z0FBRC9G
UUFBQUFBNzlPZ0FBQUFBaGNCMApDNHRON0RzTkFBQUFBSFVMMlFVQUFBQUE2YWdFQUFDTFZleUpG
UUFBQUFDTDlHb0EveFVBQUFBQU8vVG9BQUFBQUlsRjVJdjBhaEgvCkZRQUFBQUE3OU9nQUFBQUFp
L1JRaTBYa1VQOFZBQUFBQUR2MDZBQUFBQUNKUmVDTDlHZ0FBQUFBYWdCcUFJMU55RkZxQUdwY2kx
WGsKVXY4VkFBQUFBRHYwNkFBQUFBQ0QrUDkxTUl0RjdJbUZOUC8vLzhlRk9QLy8vd0FBQUFEZnJU
VC8vLy9jTlFBQUFBRFpuVEQvLy8vWgpoVEQvLy8vcENnUUFBTWRGbENnQUFBQm14MFdnQVFESFJh
UUFBQUFBeDBXb0FBQUFBTWRGckFBQUFBREhSYkFBQUFBQXgwVzRBQUFBCkFJdE55SWxObUl0VnpQ
ZmFpVldjWnNkRm9pQUF4MFcwQUFBQUFJdjBhZ0JxQUkxRmlGQnFBSTFObEZGcUFQOFZBQUFBQUR2
MDZBQUEKQUFDSlJZQ0w5SXRWZ0ZLTFJlUlEveFVBQUFBQU8vVG9BQUFBQUltRmZQLy8vNHYwalkx
Zy8vLy9VV29ZaTFXQVV2OFZBQUFBQUR2MAo2QUFBQUFDTFJjd1ByNFZzLy8vL1VHb0FpMDJJVWVn
QUFBQUFnOFFNaS9ScUFvdFY1RkwvRlFBQUFBQTc5T2dBQUFBQWkvUnFBSXRGCjVGRC9GUUFBQUFB
NzlPZ0FBQUFBaS9Sby8vLy9BSXRONUZIL0ZRQUFBQUE3OU9nQUFBQUFpL1JxQUl0VjVGTC9GUUFB
QUFBNzlPZ0EKQUFBQWkvUnFBR29CalVYNFVHb0FhZ0JxQUdvQWkwM2tVZjhWQUFBQUFEdjA2QUFB
QUFESGhWai8vLzhBQUFBQXhvVlgvLy8vQU1lRgpVUC8vL3dBQUFBRHJENHVWVVAvLy80UENBWW1W
VVAvLy80dUZVUC8vL3p0RnpBK0RsUUFBQUlPOVdQLy8vd0FQaFlnQUFBREhoVXovCi8vOEFBQUFB
NncrTGpVei8vLytEd1FHSmpVei8vLytMVmNqQjRnSTVsVXovLy85eldvdUZVUC8vL3crdmhXei8v
LzhEaFV6Ly8vK0wKVFlpS0ZBR0lsVmYvLy84UHRvVlgvLy8vZy9nZ2ZpMFB0bzFYLy8vL2dmbndB
QUFBZlI2TGxWRC8vLzhQcjVWcy8vLy9BMVdJQTVWTQovLy8vaVpWWS8vLy82d0xyaWVsTi8vLy9n
NzFZLy8vL0FBK0VjZ0VBQUl2MGFnQ0xSZVJRL3hVQUFBQUFPL1RvQUFBQUFJdjBhUC8vCi93Q0xU
ZVJSL3hVQUFBQUFPL1RvQUFBQUFJdjBhZ0JxQVkxVitGSnFBR29BYWdCcUFJdEY1RkQvRlFBQUFB
QTc5T2dBQUFBQWk0MVkKLy8vL2loR0lsVXYvLy8vWjZObWRSUC8vLzlubzJaMUEvLy8vNnhMWmhV
RC8vLy9jQlFBQUFBRFpuVUQvLy8vWmhVRC8vLy9jSFFBQQpBQURmNFBiRUJRK0sxd0FBQUZIWmhV
RC8vLy9aSENRUHRvVlgvLy8vaVlVcy8vLy8yNFVzLy8vLzNEVUFBQUFBMlowby8vLy8yWVVvCi8v
Ly9VZGtjSk9nQUFBQUFnOFFFMllWQS8vLy8yUndrRDdhTlMvLy8vNG1OSlAvLy85dUZKUC8vLzl3
MUFBQUFBTm1kSVAvLy85bUYKSVAvLy8xSFpIQ1RkblJqLy8vL29BQUFBQUlQRUNOeUZHUC8vLzl3
bEFBQUFBTm1kRlAvLy85bUZGUC8vLzFIWkhDVG9BQUFBQUlQRQpCTm1kUFAvLy85bUZQUC8vLzlt
RlJQLy8vOTdaMytEMnhFRjFHTm1GUFAvLy85bWRSUC8vLzltRlFQLy8vOWtkQUFBQUFPa0EvLy8v
CjZ5V0xWZXlKbFF6Ly8vL0hoUkQvLy84QUFBQUEzNjBNLy8vLzNEVUFBQUFBMlIwQUFBQUFpL1NM
aFh6Ly8vOVFpMDNrVWY4VkFBQUEKQUR2MDZBQUFBQUNMOUl0VjRGS0xSZVJRL3hVQUFBQUFPL1Rv
QUFBQUFJdjBpMDJBVWY4VkFBQUFBRHYwNkFBQUFBQ0w5SXRWNUZMLwpGUUFBQUFBNzlPZ0FBQUFB
MlFVQUFBQUFVb3ZOVUkwVkFBQUFBT2dBQUFBQVdGcGZYb0hFOUFBQUFEdnM2QUFBQUFDTDVWM0Rq
VWtBCkJnQUFBQUFBQUFENC8vLy9BZ0FBQUFBQUFBRHMvLy8vQkFBQUFBQUFBQURJLy8vL0ZBQUFB
QUFBQUFDVS8vLy9MQUFBQUFBQUFBQ0kKLy8vL0JBQUFBQUFBQUFCZy8vLy9HQUFBQUFBQUFBQmli
WEJKYm1adkFIQnBlR1ZzY3dCaWFYUnRZWEJKYm1adkFHZHNlWEJvVFdWMApjbWxqY3dCamIyNTBj
bUZ6ZEFCeVpXWmxjbVZ5Ym1ObFEyaGhjbUZqZEdWeUFNek16TXhWaSt4UlZzZEYvTXpNek16SFJm
d0FBQUFBCmkvU0xSUWhRL3hVQUFBQUFnOFFFTy9Ub0FBQUFBQSsyeUlYSmRCbUw5SXRWQ0ZML0ZR
QUFBQUNEeEFRNzlPZ0FBQUFBaVVYOGlrVU0KVUlzTkFBQUFBRkdMVlFoUzZBQUFBQUNEeEF5TFJm
eGVnOFFFTyt6b0FBQUFBSXZsWGNQTXpNek16TXpNek16TXpNek16RldMN0ZhRApmUXdBZERhTDlJ
cEZFRkNMVFFoUi94VUFBQUFBZzhRSU8vVG9BQUFBQUl2MGkxVU1Vb3RGQ0ZEL0ZRQUFBQUNEeEFn
NzlPZ0FBQUFBCjZ4aUw5R29BaTAwSVVmOFZBQUFBQUlQRUNEdjA2QUFBQUFCZU8rem9BQUFBQUYz
RHpNek16TXpNek16TXpNek16TXhWaSt4cUFZdEYKREZDTFRRaFI2QUFBQUFDRHhBdzc3T2dBQUFB
QVhjUE16RldMN0lQc1pGWlhqWDJjdVJrQUFBQzR6TXpNelBPcnhrWC9BY1pGL2dIWgpCUUFBQUFE
WlhmZ1B0a1VVaGNCMFZNWkYvZ0FQdGcwQUFBQUFoY2wxQmVnQUFBQUEyUVVBQUFBQTJWMzRnejBB
QUFBQUFBK1Z3b2hWCi80TTlBQUFBQUFGMUlZdjBhaENMUlFoUS94VUFBQUFBZzhRSU8vVG9BQUFB
QU5rRkFBQUFBTmxkK0l2MFVkbEYrTmtjSkl0TkNGSC8KRlFBQUFBQ0R4QWc3OU9nQUFBQUFpL1NL
VlJSU2kwVUlVUDhWQUFBQUFJUEVDRHYwNkFBQUFBQ0w5SXBOLzFHTFZRaFMveFVBQUFBQQpnOFFJ
Ty9Ub0FBQUFBSXYwaTBVSVVJMU5wRkgvRlFBQUFBQ0R4QWc3OU9nQUFBQUFpeENKVmJ5TFNBU0pU
Y0NMVUFpSlZjU0xTQXlKClRjaUxVQkNKVmN5TFFCU0pSZENMVGJ5SlRkeUxWY0NKVmVDTFJjU0pS
ZVNMVGNpSlRlaUxWY3lKVmV5TFJkQ0pSZkRaUmR6Y0hRQUEKQUFEZjRQYkVSSHBKMlVYbzNCMEFB
QUFBMytEMnhFUjdFTmxGNk53ZEFBQUFBTi9nOXNSRWVpblpSZURjSFFBQUFBRGY0UGJFUkhvWgoy
VVhrM0IwQUFBQUEzK0QyeEVSNkNjZEZvQUVBQUFEckI4ZEZvQUFBQUFDS1RhQ0lUZGNQdGxYK2hk
SjBGZysyUlF5RndIVUlEN1pOCjE0WEpkUWJHUlo4QjZ3VEdSWjhBaS9TS1ZaOVNpMFVJVVA4VkFB
QUFBSVBFQ0R2MDZBQUFBQUNMOUlwTjExR0xWUWhTL3hVQUFBQUEKZzhRSU8vVG9BQUFBQUZLTHpW
Q05GUUFBQUFEb0FBQUFBRmhhWDE2RHhHUTc3T2dBQUFBQWkrVmR3NUFCQUFBQUFBQUFBTnovLy84
WQpBQUFBQUFBQUFHTnZiblJsZUhSVWNtRnVjMlp2Y20wQXpNek16TXpNekZXTDdJUHNVRlpYalgy
d3VSUUFBQUM0ek16TXpQT3Jpa1VVClVJcE5FRkhvQUFBQUFJUEVDSWxGL0l2MGkxVWNVbW9CalVV
WVVJdE4vRkdMVlF4U2kwVUlVUDhWQUFBQUFJUEVHRHYwNkFBQUFBQ0wKOUdoNGRHMW9pMDBJVWY4
VkFBQUFBSVBFQ0R2MDZBQUFBQUNKUmZpRGZmZ0FkUVhwcFFJQUFJdjBhR0ZsYUdpTFZRaFMveFVB
QUFBQQpnOFFJTy9Ub0FBQUFBSWxGOUlOOTlBQjFHNHYwaTBYNFVQOFZBQUFBQUlQRUJEdjA2QUFB
QUFEcFpnSUFBTWRGOENRQUFBREhSZXdpCkFBQUFpL1NMVGZSUi94VUFBQUFBZzhRRU8vVG9BQUFB
QUlQNEpITXhpL1NMVmZoUy94VUFBQUFBZzhRRU8vVG9BQUFBQUl2MGkwWDAKVVA4VkFBQUFBSVBF
QkR2MDZBQUFBQURwREFJQUFJdjBpMDMwVWY4VkFBQUFBSVBFQkR2MDZBQUFBQUJtaTFBaVpvbFY2
QSszUmVnbAovd0FBQU1IZ0NBKzNUZWpCK1FnTHdXYUpSZWdQdDFYb2hkSjFNWXYwaTBYNFVQOFZB
QUFBQUlQRUJEdjA2QUFBQUFDTDlJdE45RkgvCkZRQUFBQUNEeEFRNzlPZ0FBQUFBNlp3QkFBQVB0
MVVZRDdkRjZEdlFmQXNQdDAzb2cra0Jab2xOR0l2MGkxWDRVdjhWQUFBQUFJUEUKQkR2MDZBQUFB
QUFQdDAwWWpSU05CQUFBQUR2Q2ZUR0w5SXRGK0ZEL0ZRQUFBQUNEeEFRNzlPZ0FBQUFBaS9TTFRm
UlIveFVBQUFBQQpnOFFFTy9Ub0FBQUFBT2t2QVFBQWkvU0xWZmhTL3hVQUFBQUFnOFFFTy9Ub0FB
QUFBQSszVFJobWl4U0lab2xWNUErM1JlUWwvd0FBCkFNSGdDQSszVGVUQitRZ0x3V2FKUmVSUjJl
N1pIQ1FQdDFYa2lWWEEyMFhBaS9TTFJRaFEzVjI0L3hVQUFBQUFnOFFFTy9Ub0FBQUEKQUlsRnRO
dEZ0Tng5dU5sZHNObEZzRkhaSENUb0FBQUFBSVBFQ0lsRnpJbFYwSXROeklsTjJJdFYwSWxWM0l0
RkRJUHNHSXZNaXhDSgpFWXRRQklsUkJJdFFDSWxSQ0l0UURJbFJESXRRRUlsUkVJdEFGSWxCRkl0
TjNGR0xWZGhTNkFBQUFBQ0R4Q0NKUmNTSlZjaUxSY1NKClJkaUxUY2lKVGR5TFZSelpSZGpaR290
Ri9JUGdCSFVXaTAwY1Vka0IyUndrNkFBQUFBQ0R4QVNMVlJ6WkdvdjBpMFgwVVA4VkFBQUEKQUlQ
RUJEdjA2QUFBQUFDTDlJdE4rRkgvRlFBQUFBQ0R4QVE3OU9nQUFBQUFVb3ZOVUkwVkFBQUFBT2dB
QUFBQVdGcGZYb1BFVUR2cwo2QUFBQUFDTDVWM0RqVWtBQVFBQUFBQUFBQURZLy8vL0NBQUFBQUFB
QUFCb2IzSnBlbTl1ZEdGc1FXUjJZVzVqWlFETXpNek16TXhWCmkreUQ3QkM0ek16TXpJbEY4SWxG
OUlsRitJbEYvTmxGQ05sZDlObEZETmxkK0l0RjlJdFYrRktMelZDTkZRQUFBQURvQUFBQUFGaGEK
aStWZHc0di9BUUFBQUFBQUFBRDAvLy8vQ0FBQUFBQUFBQUJ6YVhwbEFNek16TXpNek14VmkreUQ3
QkM0ek16TXpJbEY4SWxGOUlsRgorSWxGL05sRkVOaE5DTmxGR05oTkRON0IyVjMwMlVVVTJFMEky
VVVjMkUwTTNzSFpYZmlMUmZTTFZmaFNpODFRalJVQUFBQUE2QUFBCkFBQllXb3ZsWGNNQkFBQUFB
QUFBQVBULy8vOElBQUFBQUFBQUFITUF6TXpNek16TVZZdnNEN1pGQ0lYQWRRZ1B0azBNaGNsMEI3
Z04KQUFBQTZ3VzRBUUFBQUYzRHpNek16TXpNek16TXpNek16TXpNVll2c2crd2N1TXpNek15SlJl
U0pSZWlKUmV5SlJmQ0pSZlNKUmZpSgpSZnhSMlVVSTJSd2s2QUFBQUFDRHhBVFpYZnpaUlFqY0hR
QUFBQURmNFBiRVFYVXkyVVg4MkdVSTNCMEFBQUFBMytEMnhFRjFEdGxGCi9Od2xBQUFBQU4xZDlP
c0cyVVg4M1YzMDNVWDAyVjN3MlVYdzZ6RFpSZnpZWlFqY0hRQUFBQURmNFBiRUFYVU8yVVg4M0NV
QUFBQUEKM1YzbzZ3YlpSZnpkWGVqZFJlalpYZVRaUmVTRHhCdzc3T2dBQUFBQWkrVmR3OHpNek16
TXpNek16TXpNek16TVZZdnNWb3YwaTBVVQpVSXRORUZHTFZReFNpMFVJVVA4VkFBQUFBSVBFRUR2
MDZBQUFBQUJlTyt6b0FBQUFBRjNEVll2c1VWYkhSZnpNek16TWkvUnFBZjhWCkFBQUFBSVBFQkR2
MDZBQUFBQUNMOVA4VkFBQUFBRHYwNkFBQUFBQ0pSZnlMOUdvQWkwWDhVUDhWQUFBQUFJUEVDRHYw
NkFBQUFBQ0wKOUl0TkNGR0xWZnhTL3hVQUFBQUFnOFFJTy9Ub0FBQUFBRjZEeEFRNzdPZ0FBQUFB
aStWZHc4ek16TXpNek16TXpNek16TXhWaSt4VwppL1NEN0JpTHhJdE5ESWtJaTFVUWlWQUVpMDBV
aVVnSWkxVVlpVkFNaTAwY2lVZ1FpMVVnaVZBVWkwVUlVUDhWQUFBQUFJUEVIRHYwCjZBQUFBQUJl
Tyt6b0FBQUFBRjNEek16TXpGV0w3SUhzQUFFQUFGWlhqYjBBLy8vL3VVQUFBQUM0ek16TXpQT3Jp
L1NMUlFoUWpZMXcKLy8vL1VmOFZBQUFBQUlQRUNEdjA2QUFBQUFDTEVJbFZpSXRJQklsTmpJdFFD
SWxWa0l0SURJbE5sSXRRRUlsVm1JdEFGSWxGbkl2MApnK3dZaTh5TFZZaUpFWXRGaklsQkJJdFZr
SWxSQ0l0RmxJbEJESXRWbUlsUkVJdEZuSWxCRkkyTldQLy8vMUgvRlFBQUFBQ0R4Qnc3CjlPZ0FB
QUFBaXhDSlZhQ0xTQVNKVGFTTFVBaUpWYWlMU0F5SlRheUxVQkNKVmJDTFFCU0pSYlNMOUl0TkNG
R05sU2ovLy85Uy94VUEKQUFBQWc4UUlPL1RvQUFBQUFJc0lpWTFBLy8vL2kxQUVpWlZFLy8vL2kw
Z0lpWTFJLy8vL2kxQU1pWlZNLy8vL2kwZ1FpWTFRLy8vLwppMUFVaVpWVS8vLy9pL1NEN0JpTHhJ
dE5vSWtJaTFXa2lWQUVpMDJvaVVnSWkxV3NpVkFNaTAyd2lVZ1FpMVcwaVZBVWcrd1lpOFNMCmpV
RC8vLytKQ0l1VlJQLy8vNGxRQkl1TlNQLy8vNGxJQ0l1VlRQLy8vNGxRREl1TlVQLy8vNGxJRUl1
VlZQLy8vNGxRRkkyRkVQLy8KLzFEL0ZRQUFBQUNEeERRNzlPZ0FBQUFBaXdpSlRiaUxVQVNKVmJ5
TFNBaUpUY0NMVUF5SlZjU0xTQkNKVGNpTFVCU0pWY3lMUmJpSgpSZVNMVGJ5SlRlaUxWY0NKVmV5
TFJjU0pSZkNMVGNpSlRmU0xWY3lKVmZpRDdCaUx4SXRONUlrSWkxWG9pVkFFaTAzc2lVZ0lpMVh3
CmlWQU1pMDMwaVVnUWkxWDRpVkFVaTBVUVVJdE5ERkhvQUFBQUFJUEVJSW1GQ1AvLy80bVZEUC8v
LzR1VkNQLy8vNGxWMUl1RkRQLy8KLzRsRjJGSFpSZGpaSENSUjJVWFUyUndrNkFBQUFBQ0R4QWlK
aFFELy8vK0psUVQvLy8rTDlJdU5CUC8vLzFHTGxRRC8vLzlTaTBVSQpVUDhWQUFBQUFJUEVERHYw
NkFBQUFBQlNpODFRalJVQUFBQUE2QUFBQUFCWVdsOWVnY1FBQVFBQU8rem9BQUFBQUl2bFhjT05T
UUFDCkFBQUFBQUFBQU9ULy8vOFlBQUFBQUFBQUFOVC8vLzhJQUFBQUFBQUFBSEJvWVhObEFIVnpa
WEpVYjBKaGMyVUF6TXpNek16TXpGV0wKN0lQc0VMak16TXpNaVVYd2lVWDBpVVg0aVVYODJVVVEy
RTBJMlVVWTJFME0zc0hZUlNEWlhmVFpSUlRZVFFqWlJSellUUXpld2RoRgpKTmxkK0l0RjlJdFYr
RktMelZDTkZRQUFBQURvQUFBQUFGaGFpK1ZkdzR2L0FRQUFBQUFBQUFEMC8vLy9DQUFBQUFBQUFB
QndBTXpNCnpNek16TXpNek16TXpNek1WWXZzZ2V6QUFBQUFWbGVOdlVELy8vKzVNQUFBQUxqTXpN
ek04NnVMOUl0RkRGQ05UYUJSL3hVQUFBQUEKZzhRSU8vVG9BQUFBQUlzUWlWVzRpMGdFaVUyOGkx
QUlpVlhBaTBnTWlVM0VpMUFRaVZYSWkwQVVpVVhNaS9TRDdCaUx6SXRWdUlrUgppMFc4aVVFRWkx
WEFpVkVJaTBYRWlVRU1pMVhJaVZFUWkwWE1pVUVValUySVVmOFZBQUFBQUlQRUhEdjA2QUFBQUFD
TEVJbFYwSXRJCkJJbE4xSXRRQ0lsVjJJdElESWxOM0l0UUVJbFY0SXRBRklsRjVJdjBpMDBNVVky
VldQLy8vMUwvRlFBQUFBQ0R4QWc3OU9nQUFBQUEKaXdpSmpYRC8vLytMVUFTSmxYVC8vLytMU0Fp
SmpYai8vLytMVUF5SmxYei8vLytMU0JDSlRZQ0xVQlNKVllTTDlJUHNHSXZFaTAzUQppUWlMVmRT
SlVBU0xUZGlKU0FpTFZkeUpVQXlMVGVDSlNCQ0xWZVNKVUJTRDdCaUx4SXVOY1AvLy80a0lpNVYw
Ly8vL2lWQUVpNDE0Ci8vLy9pVWdJaTVWOC8vLy9pVkFNaTAyQWlVZ1FpMVdFaVZBVWpZVkEvLy8v
VVA4VkFBQUFBSVBFTkR2MDZBQUFBQUNMQ0lsTjZJdFEKQklsVjdJdElDSWxOOEl0UURJbFY5SXRJ
RUlsTitJdFFGSWxWL0l0RkNJdE42SWtJaTFYc2lWQUVpMDN3aVVnSWkxWDBpVkFNaTAzNAppVWdR
aTFYOGlWQVVpMFVJWDE2QnhNQUFBQUE3N09nQUFBQUFpK1Zkdzh6TXpNek1WWXZzVm92MFVkbnUy
UndrVWRudTJSd2tVZG51CjJSd2tVZG51MlJ3a2kwVUlVUDhWQUFBQUFJUEVGRHYwNkFBQUFBQ0w5
R29BYWdDTFRReFJVZGxGRU5rY0pJdFZDRkwvRlFBQUFBQ0QKeEJRNzlPZ0FBQUFBaS9TTFJRaFEv
eFVBQUFBQWc4UUVPL1RvQUFBQUFGNDc3T2dBQUFBQVhjUE16TXpNek16TXpNeFZpK3hXaS9TTApS
UWhRL3hVQUFBQUFnOFFFTy9Ub0FBQUFBRjQ3N09nQUFBQUFYY1BNek16TXpNek16TXpNek14Vmkr
eUQ3QWhXeDBYNHpNek16TWRGCi9Nek16TXlEZlFnQWRRUXp3T3RLaS9TaEFBQUFBRkNMVFFoUi94
VUFBQUFBZzhRSU8vVG9BQUFBQUlsRi9JTjkvQUIwRzR2MGkxWDgKVXY4VkFBQUFBSVBFQkR2MDZB
QUFBQUNKUmZqckI4ZEYrQUFBQUFDTFJmaGVnOFFJTyt6b0FBQUFBSXZsWGNQTXpNek16TXpNekZX
TAo3RkZXeDBYOHpNek16SU45Q0FCMEJvTjlEQUIxQmVtTkFBQUFpL1NoQUFBQUFGQ0xEUUFBQUFC
UmFnQ0xGUUFBQUFDTEFsRC9GUUFBCkFBQ0R4QkE3OU9nQUFBQUFpVVg4ZzMzOEFIVUM2MWlMOUl0
TkRGR0xGUUFBQUFCU2kwWDhVUDhWQUFBQUFJUEVERHYwNkFBQUFBQ0wKOUl0Ti9GR0xGUUFBQUFC
U2kwVUlVUDhWQUFBQUFJUEVERHYwNkFBQUFBQ0w5SXROL0ZIL0ZRQUFBQUNEeEFRNzlPZ0FBQUFB
WG9QRQpCRHZzNkFBQUFBQ0w1VjNEek16TXpNek16RldMN0ZhTDlLRUFBQUFBaXdoUi94VUFBQUFB
ZzhRRU8vVG9BQUFBQUY0NzdPZ0FBQUFBClhjUE16TXpNek16TXpGV0w3SVBzQ0ZiSFJmak16TXpN
eDBYOHpNek16SXYwL3hVQUFBQUFPL1RvQUFBQUFJbEYvSXYwaTBYOFVQOFYKQUFBQUFJUEVCRHYw
NkFBQUFBQ0pSZmlMOUl0Ti9GSC9GUUFBQUFDRHhBUTc5T2dBQUFBQWkwWDRYb1BFQ0R2czZBQUFB
QUNMNVYzRAp6TXpNek16TXpNeFZpK3hSVmxmSFJmek16TXpNRDdaRkRJWEFkQTJMRFFBQUFBQ0xF
WWxWL09zS29RQUFBQUNMQ0lsTi9JdjBpMVg4ClVvdjhhQUFBQUFEL0ZRQUFBQUNEeEFRNy9PZ0FB
QUFBVUl0RkNGRC9GUUFBQUFDRHhBdzc5T2dBQUFBQVgxNkR4QVE3N09nQUFBQUEKaStWZHc4ek1W
WXZzVm92MGkwVUlVUDhWQUFBQUFJUEVCRHYwNkFBQUFBQmVPK3pvQUFBQUFGM0R6TXpNek16TXpN
ek16TXpNVll2cwpWb3YwaTBVTVVJdE5DRkgvRlFBQUFBQ0R4QWc3OU9nQUFBQUFYanZzNkFBQUFB
QmR3OHpNek16TXpNek1WWXZzZyt3UVZyak16TXpNCmlVWHdpVVgwaVVYNGlVWDh4MFg4QkFBQUFJ
djBhQUFBQUFEL0ZRQUFBQUE3OU9nQUFBQUFpVVg0ZzMzNEFIVUh1QVFBQUFEcmRvdjAKYUFBQUFB
Q0xSZmhRL3hVQUFBQUFPL1RvQUFBQUFJbEY5SU45OUFCMUI3Z0VBQUFBNjA2TDlHZ0FBQUFBaTAz
NFVmOFZBQUFBQUR2MAo2QUFBQUFDSlJmQ0RmZkFBZFFlNEJBQUFBT3NtaS9TTFZRaFNhZ0QvVmZT
RHhBZzc5T2dBQUFBQWkvUnFBUDlWOElQRUJEdjA2QUFBCkFBQmVnOFFRTyt6b0FBQUFBSXZsWGNQ
TXpNek16TXpNekZXTDdJUHNDRmJIUmZqTXpNek14MFg4ek16TXpJdjBhZ0QvRlFBQUFBQ0QKeEFR
NzlPZ0FBQUFBaVVYOGkvU0xSUWhRaTAzOFVmOFZBQUFBQUlQRUNEdjA2QUFBQUFDSlJmaUw5SXRW
L0ZML0ZRQUFBQUNEeEFRNwo5T2dBQUFBQWkwWDRYb1BFQ0R2czZBQUFBQUNMNVYzRHpNek16TXpN
ek16TXpNek16TXpNVll2c1ZvdjBpMFVJVVA4VkFBQUFBSVBFCkJEdjA2QUFBQUFCZU8rem9BQUFB
QUYzRHpNek16TXpNek16TXpNek1WWXZzZyt3a1Zyak16TXpNaVVYY2lVWGdpVVhraVVYb2lVWHMK
aVVYd2lVWDBpVVg0aVVYOG9RQUFBQUNMQ0lsTjlJc1ZBQUFBQUlzQ2lVWDRpMDBNaVUza2kxVVFp
VlhvaS9TaEFBQUFBRkNMRFFBQQpBQUJSYWdLTlZlUlNqVVgwVUdvQS94VUFBQUFBZzhRWU8vVG9B
QUFBQUlsRjNJdjBpMDNjVVlzVkFBQUFBSXNDVUl0TkNGSC9GUUFBCkFBQ0R4QXc3OU9nQUFBQUFp
L1NMVmR4Uy94VUFBQUFBZzhRRU8vVG9BQUFBQUZLTHpWQ05GUUFBQUFEb0FBQUFBRmhhWG9QRUpE
dnMKNkFBQUFBQ0w1VjNEa0FJQUFBQUFBQUFBOVAvLy93Z0FBQUFBQUFBQTVQLy8vd2dBQUFBQUFB
QUFjSEp2ZUhsV1lXeDFaWE1BY0hKdgplSGxMWlhsekFNek16TXpNek16TXpNeFZpK3lEN0NSV3VN
ek16TXlKUmR5SlJlQ0pSZVNKUmVpSlJleUpSZkNKUmZTSlJmaUpSZnlMCjlLRUFBQUFBaXdoUmkx
VUlVdjhWQUFBQUFJUEVDRHYwNkFBQUFBQ0pSZnlMOUl0Ri9GQnFBR29BL3hVQUFBQUFnOFFNTy9U
b0FBQUEKQUlsRitJdjBpMDM4VWY4VkFBQUFBSVBFQkR2MDZBQUFBQUNMOUdnQUFBQUEveFVBQUFB
QWc4UUVPL1RvQUFBQUFJbEY4SXRWRElsVgo1SXYwb1FBQUFBQlFpdzBBQUFBQVVXb0JqVlhrVW8x
RjhGQnFBUDhWQUFBQUFJUEVHRHYwNkFBQUFBQ0pSZHlMOUl0TjNGR0xGUUFBCkFBQ0xBbENMVGZo
Ui94VUFBQUFBZzhRTU8vVG9BQUFBQUl2MGkxWGNVdjhWQUFBQUFJUEVCRHYwNkFBQUFBQ0w5SXRG
K0ZDTERRQUEKQUFDTEVWS0xSUWhRL3hVQUFBQUFnOFFNTy9Ub0FBQUFBSXYwaTAzNFVmOFZBQUFB
QUlQRUJEdjA2QUFBQUFCU2k4MVFqUlVBQUFBQQo2QUFBQUFCWVdsNkR4Q1E3N09nQUFBQUFpK1Zk
dzVBQ0FBQUFBQUFBQVBELy8vOEVBQUFBQUFBQUFPVC8vLzhFQUFBQUFBQUFBR2hsCllXUmxja1pw
Wld4a1ZtRnNkV1Z6QUdobFlXUmxja1pwWld4a1RtRnRaWE1BekZXTDdGRld4MFg4ek16TXpJdjBv
UUFBQUFDTENGR0wKVlFoUy94VUFBQUFBZzhRSU8vVG9BQUFBQUlsRi9JdjBpMFVNVUl0Ti9GSC9G
UUFBQUFDRHhBZzc5T2dBQUFBQWkwWDhYb1BFQkR2cwo2QUFBQUFDTDVWM0R6TXpNek16TXpGV0w3
RmFMOUl0RkVGQ0xUUXhSaTFVSVV2OFZBQUFBQUlQRUREdjA2QUFBQUFCZU8rem9BQUFBCkFGM0R6
TXpNekZXTDdGYUw5SXRGRUZDTFRReFJpMVVJVXY4VkFBQUFBSVBFRER2MDZBQUFBQUJlTyt6b0FB
QUFBRjNEek16TXpGV0wKN0ZhTDlJdEZDRkQvRlFBQUFBQ0R4QVE3OU9nQUFBQUFYanZzNkFBQUFB
QmR3OHpNek16TXpNek16TXpNekZXTDdGYUw5SXRGQ0ZELwpGUUFBQUFDRHhBUTc5T2dBQUFBQVhq
dnM2QUFBQUFCZHc4ek16TXpNek16TXpNek16RldMN0ZhTDlJdEZDRkQvRlFBQUFBQ0R4QVE3CjlP
Z0FBQUFBWGp2czZBQUFBQUJkdzh6TXpNek16TXpNek16TXpGV0w3RmFMOUl0RkNGRC9GUUFBQUFD
RHhBUTc5T2dBQUFBQVhqdnMKNkFBQUFBQmR3OHpNek16TXpNek16TXpNekZXTDdGYUw5SXRGQ0ZE
L0ZRQUFBQUNEeEFRNzlPZ0FBQUFBWGp2czZBQUFBQUJkdzh6TQp6TXpNek16TXpNek16RldMN0Zh
TDlJdEZDRkQvRlFBQUFBQ0R4QVE3OU9nQUFBQUFYanZzNkFBQUFBQmR3OHpNek16TXpNek16TXpN
CnpGV0w3RmFMOUl0RktGQ0xUU1JSaTFVZ1VvdEZIRkNMVFJoUmkxVVVVb1BzQ04xRkROMGNKSXRG
Q0ZEL0ZRQUFBQUNEeENRNzlPZ0EKQUFBQVhqdnM2QUFBQUFCZHc4ek16TXpNek16TXpNek1WWXZz
Vm92MGkwVW9VSXROSkZHTFZTQlNpMFVjVUl0TkdGR0xWUlJTaTBVUQpVSXROREZHTFZRaFMveFVB
QUFBQWc4UWtPL1RvQUFBQUFGNDc3T2dBQUFBQVhjUE16TXpNek16TXpNek16TXhWaSt4V2kvU0xS
UkJRCmkwME1VWXRWQ0ZML0ZRQUFBQUNEeEF3NzlPZ0FBQUFBWGp2czZBQUFBQUJkdzh6TXpNeFZp
K3hXaS9TTFJRaFEveFVBQUFBQWc4UUUKTy9Ub0FBQUFBRjQ3N09nQUFBQUFYY1BNek16TXpNek16
TXpNek14VmkreFdpL1QvRlFBQUFBQTc5T2dBQUFBQVhqdnM2QUFBQUFCZAp3MUFBQUFBTEFBQUFC
Z0JaQUFBQURBQUFBQVlBWXdBQUFCc0FBQUFHQUdnQUFBQWNBQUFBRkFCNEFBQUFHZ0FBQUFZQWhB
QUFBQmtBCkFBQUdBS1FBQUFBTUFBQUFCZ0M0QUFBQUVBQUFBQVlBeFFBQUFCQUFBQUFHQU5rQUFB
QXZBQUFBQmdEakFBQUFMZ0FBQUFZQTZnQUEKQURBQUFBQVVBUE1BQUFBdEFBQUFCZ0FBQVFBQUxn
QUFBQVlBQndFQUFEQUFBQUFVQUF3QkFBQXhBQUFBRkFBU0FRQUFFQUFBQUFZQQpHQUVBQUN3QUFB
QUdBQ0VCQUFBd0FBQUFGQUJrQVFBQUxnQUFBQVlBYXdFQUFEQUFBQUFVQUhnQkFBQmlBQUFBQmdD
QUFRQUFYd0FBCkFBWUFqZ0VBQUdJQUFBQUdBSmdCQUFCY0FBQUFCZ0NmQVFBQU1BQUFBQlFBckFF
QUFGc0FBQUFHQUxNQkFBQXdBQUFBRkFEQUFRQUEKV2dBQUFBWUF4d0VBQURBQUFBQVVBTkVCQUFC
WkFBQUFCZ0RuQVFBQVZnQUFBQVlBN2dFQUFEQUFBQUFVQUJJQ0FBQlZBQUFBQmdDRwpBZ0FBVWdB
QUFBWUFqUUlBQURBQUFBQVVBS0FDQUFCYUFBQUFCZ0NuQWdBQU1BQUFBQlFBd2dJQUFGRUFBQUFH
QU1rQ0FBQXdBQUFBCkZBRGZBZ0FBVUFBQUFCUUE4QUlBQUU4QUFBQUdBUGNDQUFBd0FBQUFGQUFG
QXdBQVRnQUFBQVlBREFNQUFEQUFBQUFVQUIwREFBQk4KQUFBQUJnQWtBd0FBTUFBQUFCUUFNZ01B
QUV3QUFBQUdBRGtEQUFBd0FBQUFGQUJWQXdBQVN3QUFBQVlBWEFNQUFEQUFBQUFVQUVjRQpBQUJO
QUFBQUJnQk9CQUFBTUFBQUFCUUFYd1FBQUV3QUFBQUdBR1lFQUFBd0FBQUFGQUNDQkFBQVN3QUFB
QVlBaVFRQUFEQUFBQUFVCkFMVUVBQUJIQUFBQUJnREhCQUFBUkFBQUFBWUE5UVFBQUVFQUFBQUdB
QW9GQUFCbkFBQUFGQUF2QlFBQVFRQUFBQVlBU2dVQUFHY0EKQUFBVUFGa0ZBQUErQUFBQUJnQnVC
UUFBYlFBQUFCUUFwQVVBQUY4QUFBQUdBTW9GQUFCVkFBQUFCZ0RRQlFBQVh3QUFBQVlBNHdVQQpB
Rm9BQUFBR0FPb0ZBQUF3QUFBQUZBRDZCUUFBV2dBQUFBWUFBUVlBQURBQUFBQVVBQTBHQUFBN0FB
QUFCZ0FVQmdBQU1BQUFBQlFBCklBWUFBRG9BQUFBR0FDY0dBQUF3QUFBQUZBQXRCZ0FBWHdBQUFB
WUFOd1lBQURrQUFBQUdBRHdHQUFBY0FBQUFGQUJOQmdBQU1BQUEKQUJRQVhBWUFBRGdBQUFBR0FH
Z0dBQUEzQUFBQUJnQjBCZ0FBTmdBQUFBWUFnQVlBQURVQUFBQUdBSXdHQUFBMEFBQUFCZ0NZQmdB
QQpNd0FBQUFZQXBBWUFBRElBQUFBR0FBc0hBQUIyQUFBQUJnQVZCd0FBTUFBQUFCUUFLQWNBQUhV
QUFBQUdBRElIQUFBd0FBQUFGQUEvCkJ3QUFDd0FBQUFZQVNRY0FBSGNBQUFBVUFGb0hBQUF3QUFB
QUZBQ0dCd0FBZVFBQUFBWUFrQWNBQURBQUFBQVVBS0FIQUFCNEFBQUEKQmdDcUJ3QUFNQUFBQUJR
QXVnY0FBSGtBQUFBR0FNUUhBQUF3QUFBQUZBRE1Cd0FBTUFBQUFCUUE3Z2NBQUhjQUFBQVVBUGdI
QUFBdwpBQUFBRkFBaENBQUFqUUFBQUFZQU53Z0FBQ3dBQUFBR0FFQUlBQUFwQUFBQUZBQkdDQUFB
RUFBQUFBWUFUd2dBQUM4QUFBQUdBRndJCkFBQXRBQUFBQmdCdENBQUFlQUFBQUFZQWR3Z0FBREFB
QUFBVUFIMElBQUFJQUFBQUJnQ1RDQUFBaWdBQUFBWUFuUWdBQURBQUFBQVUKQUswSUFBQ0pBQUFB
QmdDM0NBQUFNQUFBQUJRQXh3Z0FBSWdBQUFBR0FORUlBQUF3QUFBQUZBRGhDQUFBaHdBQUFBWUE2
d2dBQURBQQpBQUFVQURzSkFBQStBQUFBQmdCTENRQUFQZ0FBQUFZQVd3a0FBSVlBQUFBR0FHc0pB
QUNEQUFBQUJnQjdDUUFBZ3dBQUFBWUF5Z2tBCkFJQUFBQUFHQU5RSkFBQXdBQUFBRkFEa0NRQUFm
d0FBQUFZQTdna0FBREFBQUFBVUFQZ0pBQUIrQUFBQUJnRDlDUUFBSEFBQUFCUUEKQ3dvQUFEQUFB
QUFVQUJnS0FBQjlBQUFBQmdBa0NnQUFmQUFBQUFZQVlBb0FBS01BQUFBVUFJUUtBQUNhQUFBQUJn
Q09DZ0FBTUFBQQpBQlFBbndvQUFKa0FBQUFHQUtrS0FBQXdBQUFBRkFESUNnQUFtUUFBQUFZQTBn
b0FBREFBQUFBVUFPY0tBQUNZQUFBQUJnRHhDZ0FBCk1BQUFBQlFBRUFzQUFKY0FBQUFHQUJvTEFB
QXdBQUFBRkFBckN3QUFtQUFBQUFZQU5Rc0FBREFBQUFBVUFFRUxBQUNZQUFBQUJnQkwKQ3dBQU1B
QUFBQlFBWEFzQUFKWUFBQUFHQUdZTEFBQXdBQUFBRkFDYkN3QUFtQUFBQUFZQXBRc0FBREFBQUFB
VUFMRUxBQUNZQUFBQQpCZ0M3Q3dBQU1BQUFBQlFBNHdzQUFKY0FBQUFHQU8wTEFBQXdBQUFBRkFB
SURBQUFtQUFBQUFZQUVnd0FBREFBQUFBVUFCNE1BQUNZCkFBQUFCZ0FvREFBQU1BQUFBQlFBT1F3
QUFKWUFBQUFHQUVNTUFBQXdBQUFBRkFDSERBQUFrZ0FBQUFZQWtRd0FBREFBQUFBVUFLa00KQUFD
YkFBQUFGQUQxREFBQW53QUFBQlFBS0EwQUFLUUFBQUFVQUR3TkFBQ1lBQUFBQmdCR0RRQUFNQUFB
QUJRQVVnMEFBSmdBQUFBRwpBRndOQUFBd0FBQUFGQUJtRFFBQWtRQUFBQVlBYXcwQUFCd0FBQUFV
QUhrTkFBQXdBQUFBRkFDSURRQUFrQUFBQUFZQWxBMEFBSThBCkFBQUdBTjhOQUFDZUFBQUFCZ0Rr
RFFBQUhBQUFBQlFBOUEwQUFKMEFBQUFHQUFBT0FBQ2NBQUFBQmdCVkRnQUFvZ0FBQUFZQVdnNEEK
QUJ3QUFBQVVBR2dPQUFDaEFBQUFCZ0IwRGdBQW9BQUFBQVlBMkE0QUFLd0FBQUFVQU9jT0FBQ0RB
QUFBQmdENkRnQUFwd0FBQUFZQQpDZzhBQUQ0QUFBQUdBQ3dQQUFDbkFBQUFCZ0E4RHdBQVBnQUFB
QVlBV2c4QUFEQUFBQUFVQUlnUEFBQ3ZBQUFBQmdDU0R3QUFNQUFBCkFCUUFtZzhBQURBQUFBQVVB
TElQQUFDMEFBQUFCZ0M4RHdBQU1BQUFBQlFBeEE4QUFMTUFBQUFHQU1zUEFBQXdBQUFBRkFEY0R3
QUEKc2dBQUFBWUE1ZzhBQURBQUFBQVVBUFlQQUFDeEFBQUFCZ0FBRUFBQU1BQUFBQlFBQ3hBQUFE
QUFBQUFVQUZRUUFBQzJBQUFBQmdCZQpFQUFBTUFBQUFCUUFaaEFBQURBQUFBQVVBSndRQUFDL0FB
QUFCZ0NtRUFBQU1BQUFBQlFBQUJFQUFMNEFBQUFHQUFvUkFBQXdBQUFBCkZBQkFFUUFBaHdBQUFB
WUFTaEVBQURBQUFBQVVBUEFSQUFDOUFBQUFCZ0Q2RVFBQU1BQUFBQlFBZGhJQUFNQUFBQUFVQUtv
U0FBQ2IKQUFBQUZBRFRFZ0FBdkFBQUFBWUEzUklBQURBQUFBQVVBT2NTQUFDN0FBQUFCZ0RzRWdB
QUhBQUFBQlFBL1JJQUFEQUFBQUFVQUF3VApBQUM2QUFBQUJnQVlFd0FBdVFBQUFBWUFKQk1BQUxn
QUFBQUdBSXNUQUFEREFBQUFCZ0NRRXdBQUhBQUFBQlFBb0JNQUFNSUFBQUFHCkFLd1RBQURCQUFB
QUJnRHBFd0FBdndBQUFBWUE4eE1BQURBQUFBQVVBRW9VQUFDK0FBQUFCZ0JVRkFBQU1BQUFBQlFB
aWhRQUFJY0EKQUFBR0FKUVVBQUF3QUFBQUZBQXVGUUFBdlFBQUFBWUFPQlVBQURBQUFBQVVBSk1W
QUFBd0FBQUFGQURFRlFBQXlBQUFBQVlBemhVQQpBREFBQUFBVUFPa1ZBQURIQUFBQUJnRHpGUUFB
TUFBQUFCUUEveFVBQU1ZQUFBQUdBQWtXQUFBd0FBQUFGQUFSRmdBQU1BQUFBQlFBCkxCWUFBTW9B
QUFBR0FEWVdBQUF3QUFBQUZBQStGZ0FBTUFBQUFCUUFjaFlBQUNjQkFBQUdBSDBXQUFETUFBQUFC
Z0NIRmdBQU1BQUEKQUJRQW5CWUFBSllBQUFBR0FLWVdBQUF3QUFBQUZBREFGZ0FBTUFBQUFCUUE4
QllBQU5JQUFBQUdBUGNXQUFEUkFBQUFCZ0FBRndBQQowQUFBQUFZQUNSY0FBTThBQUFBR0FCTVhB
QUF3QUFBQUZBQXFGd0FBS1FFQUFBWUFOUmNBQU00QUFBQUdBRDhYQUFBd0FBQUFGQUJMCkZ3QUFL
QUVBQUFZQVZoY0FBTTRBQUFBR0FHQVhBQUF3QUFBQUZBQnNGd0FBbUFBQUFBWUFkaGNBQURBQUFB
QVVBSUVYQUFBd0FBQUEKRkFDWEZ3QUEwQUFBQUFZQW9CY0FBTlFBQUFBR0FLb1hBQUF3QUFBQUZB
Q3lGd0FBTUFBQUFCUUEyUmNBQU5jQUFBQUdBT0FYQUFBdwpBQUFBRkFEdkZ3QUExZ0FBQUFZQStS
Y0FBREFBQUFBVUFBZ1lBQUNZQUFBQUJnQVNHQUFBTUFBQUFCUUFJQmdBQURBQUFBQVVBRWNZCkFB
RGNBQUFBQmdCVEdBQUEyd0FBQUFZQVpSZ0FBQkVBQUFBR0FHc1lBQURhQUFBQUJnQjFHQUFBTUFB
QUFCUUFnQmdBQU5rQUFBQUcKQUlvWUFBQXdBQUFBRkFDV0dBQUFNQUFBQUJRQXJCZ0FBTjRBQUFB
R0FMWVlBQUF3QUFBQUZBQytHQUFBTUFBQUFCUUE0QmdBQU9BQQpBQUFHQU9vWUFBQXdBQUFBRkFE
eUdBQUFNQUFBQUJRQUloa0FBQklBQUFBR0FDZ1pBQURqQUFBQUJnQXZHUUFBTUFBQUFCUUFSaGtB
CkFCTUFBQUFHQUZBWkFBRGlBQUFBQmdCWEdRQUFNQUFBQUJRQWJoa0FBQlFBQUFBR0FIZ1pBQURp
QUFBQUJnQi9HUUFBTUFBQUFCUUEKcEJrQUFEQUFBQUFVQUxVWkFBQXdBQUFBRkFEQUdRQUFNQUFB
QUJRQTZ4a0FBT1lBQUFBR0FQVVpBQUF3QUFBQUZBQUlHZ0FBNVFBQQpBQVlBRWhvQUFEQUFBQUFV
QUNFYUFBQ1lBQUFBQmdBckdnQUFNQUFBQUJRQU9Sb0FBREFBQUFBVUFGd2FBQURvQUFBQUJnQm1H
Z0FBCk1BQUFBQlFBYmhvQUFEQUFBQUFVQUtnYUFBRHlBQUFBQmdDekdnQUE4UUFBQUFZQXl4b0FB
TklBQUFBR0FOSWFBQURSQUFBQUJnRGwKR2dBQThBQUFBQVlBN3hvQUFEQUFBQUFVQVA0YUFBRHZB
QUFBQmdBTEd3QUE3Z0FBQUFZQUZSc0FBREFBQUFBVUFDRWJBQUNZQUFBQQpCZ0FyR3dBQU1BQUFB
QlFBTlJzQUFPMEFBQUFHQURvYkFBQWNBQUFBRkFCSEd3QUFNQUFBQUJRQVZCc0FBT3dBQUFBR0FH
QWJBQURyCkFBQUFCZ0JzR3dBQTZnQUFBQVlBdWhzQUFPOEFBQUFHQU1jYkFBRDZBQUFBQmdEUkd3
QUFNQUFBQUJRQTVCc0FBUGtBQUFBR0FPNGIKQUFBd0FBQUFGQUQ5R3dBQW1BQUFBQVlBQnh3QUFE
QUFBQUFVQUE0Y0FBQVZBQUFBQmdBVUhBQUEyZ0FBQUFZQUhod0FBREFBQUFBVQpBQzRjQUFEU0FB
QUFCZ0ExSEFBQTBRQUFBQVlBU0J3QUFQQUFBQUFHQUZJY0FBQXdBQUFBRkFCaEhBQUErQUFBQUFZ
QWJod0FBTTRBCkFBQUdBSGdjQUFBd0FBQUFGQUNFSEFBQW1BQUFBQVlBamh3QUFEQUFBQUFVQUpv
Y0FBRHZBQUFBQmdDbkhBQUE3Z0FBQUFZQXNSd0EKQURBQUFBQVVBTDBjQUFDWUFBQUFCZ0RISEFB
QU1BQUFBQlFBMFJ3QUFQY0FBQUFHQU5ZY0FBQWNBQUFBRkFEakhBQUFNQUFBQUJRQQo4QndBQVBZ
QUFBQUdBUHdjQUFEMUFBQUFCZ0FJSFFBQTlBQUFBQVlBUHgwQUFQMEFBQUFHQUV3ZEFBRDZBQUFB
QmdCV0hRQUFNQUFBCkFCUUFhUjBBQVB3QUFBQUdBSE1kQUFBd0FBQUFGQUNCSFFBQU1BQUFBQlFB
cEIwQUFQOEFBQUFHQUs0ZEFBQXdBQUFBRkFDMkhRQUEKTUFBQUFCUUExQjBBQUFFQkFBQUdBTjRk
QUFBd0FBQUFGQURtSFFBQU1BQUFBQlFBL0IwQUFBTUJBQUFHQUFZZUFBQXdBQUFBRkFBTwpIZ0FB
TUFBQUFCUUFMQjRBQUFVQkFBQUdBRFllQUFBd0FBQUFGQUErSGdBQU1BQUFBQlFBWEI0QUFBY0JB
QUFHQUdZZUFBQXdBQUFBCkZBQnVIZ0FBTUFBQUFCUUFqQjRBQUFrQkFBQUdBSlllQUFBd0FBQUFG
QUNlSGdBQU1BQUFBQlFBdkI0QUFBc0JBQUFHQU1ZZUFBQXcKQUFBQUZBRE9IZ0FBTUFBQUFCUUE3
QjRBQUEwQkFBQUdBUFllQUFBd0FBQUFGQUQrSGdBQU1BQUFBQlFBUFI4QUFBOEJBQUFHQUVjZgpB
QUF3QUFBQUZBQlBId0FBTUFBQUFCUUFqQjhBQUJFQkFBQUdBSllmQUFBd0FBQUFGQUNlSHdBQU1B
QUFBQlFBeEI4QUFCTUJBQUFHCkFNNGZBQUF3QUFBQUZBRFdId0FBTUFBQUFCUUE3QjhBQUJVQkFB
QUdBUFlmQUFBd0FBQUFGQUQrSHdBQU1BQUFBQlFBR0NBQUFCY0IKQUFBR0FCOGdBQUF3QUFBQUZB
QW5JQUFBTUFBQUFCUUFBQUFBQUFBQUFBQWdBQUFBQmdBQUFBQUFBQUFBQUNRQUFBQUdBQUFBQUFB
QQpBUEEvQUFBQUFBRGdiMEFBQUFCZ1ptWUNRQUFBQUtDWm1iay9BQUNBUHdBQUFBQUFRSTlBQUFB
QkFBQUFBQUFBQUFBQUFBQUJBQUFBCkFFRFFCd0FBVll2c1VjZEYvTXpNek16WlJReUQ3QWpkSENU
WlJRaUQ3QWpkSENUb0FBQUFBSVBFRU5sZC9ObEYvSVBFQkR2czZBQUEKQUFDTDVWM0RIZ0FBQUdn
QUFBQVVBREVBQUFBd0FBQUFGQUFFQUFBQTlRQUFBQ1FBQUFBQUFBQUFBQUFBQURrQUFBQUVBQUFB
Q0FBQQpBQUFBQUFEcEx3QUFDd0FBQUFRQUFBRHhBQUFBYkFBQUFDb0FFQkVBQUFBQUFBQUFBQUFB
QUFBNUFBQUFDd0FBQUNzQUFBRC9FQUFBCkFBQUFBQUFBQVhCdmQyWUFIQUFTRUFRQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQWdBZ0FBRFFBTEVRZ0FBQUJBQUFBQVgxZ0EKRFFBTEVRd0FBQUJB
QUFBQVgxa0FBZ0FHQVBJQUFBQWdBQUFBQUFBQUFBQUFBQUE1QUFBQVdBZ0FBQUVBQUFBVUFBQUFB
QUFBQUtFQgpBSUFNQUFBQVp3QUFBQWNBV0FBQUFHY0FBQUFMQUZ3QUFBQm5BQUFBQ2dDc0FBQUFa
d0FBQUFzQXNBQUFBR2NBQUFBS0FGV0w3RkhaClJRalpIQ1RvQUFBQUFJUEVCRHZzNkFBQUFBQmR3
d3NBQUFCeUFBQUFGQUFWQUFBQU1BQUFBQlFBQkFBQUFQVUFBQUFrQUFBQUFBQUEKQUFBQUFBQWJB
QUFBQUFBQUFBUUFBQUFBQUFBQTZTOEFBQU1BQUFBRUFBQUE4UUFBQUYwQUFBQXFBQkFSQUFBQUFB
QUFBQUFBQUFBQQpHd0FBQUFNQUFBQVNBQUFBL1JBQUFBQUFBQUFBQUFGbVlXSnpBQndBRWhBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUlBCkFBMEFDeEVJQUFBQVFBQUFBRjlZQUFJQUJn
QUFBQUR5QUFBQUlBQUFBQUFBQUFBQUFBQUFHd0FBQUZnSUFBQUJBQUFBRkFBQUFBQUEKQUFEK0FR
Q0FEQUFBQUcwQUFBQUhBRmdBQUFCdEFBQUFDd0JjQUFBQWJRQUFBQW9Bb0FBQUFHMEFBQUFMQUtR
QUFBQnRBQUFBQ2dCVgppK3hSeDBYOHpNek16TmxGQ0lQc0NOMGNKT2dBQUFBQWc4UUkyVjM4MlVY
OGc4UUVPK3pvQUFBQUFJdmxYY01WQUFBQWN3QUFBQlFBCktBQUFBREFBQUFBVUFBUUFBQUQxQUFB
QUpBQUFBQUFBQUFBQUFBQUFNQUFBQUFRQUFBQUVBQUFBQUFBQUFPa3ZBQUFMQUFBQUJBQUEKQVBF
QUFBQmVBQUFBS3dBUUVRQUFBQUFBQUFBQUFBQUFBREFBQUFBTEFBQUFJZ0FBQVAwUUFBQUFBQUFB
QUFBQlptRmljMllBSEFBUwpFQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FnQUFEUUFM
RVFnQUFBQkFBQUFBWDFnQUFnQUdBQUFBOGdBQUFDQUFBQUFBCkFBQUFBQUFBQURBQUFBQllDQUFB
QVFBQUFCUUFBQUFBQUFBQWdBRUFnQXdBQUFCeUFBQUFCd0JZQUFBQWNnQUFBQXNBWEFBQUFISUEK
QUFBS0FLQUFBQUJ5QUFBQUN3Q2tBQUFBY2dBQUFBb0FBQUFBQUFBQUFBQUFBQUFBQUFEd3Z3QUFB
RUFBQUFBQUFBQUFBQUFBNEQ5VgppK3hSVnNkRi9Nek16TXpaUlFpTDlJUHNDTjBjSlA4VkFBQUFB
SVBFQ0R2MDZBQUFBQURaWGZ6WlJmeGVnOFFFTyt6b0FBQUFBSXZsClhjTVpBQUFBclFBQUFBWUFJ
d0FBQURBQUFBQVVBRFFBQUFBd0FBQUFGQUFFQUFBQTlRQUFBQ1FBQUFBQUFBQUFBQUFBQUR3QUFB
QUUKQUFBQUJBQUFBQUFBQUFEcEx3QUFEQUFFQUFRQUFBRHhBQUFBYmdBQUFDc0FFQkVBQUFBQUFB
QUFBQUFBQUFBOEFBQUFEQUFBQUMwQQpBQUQ5RUFBQUFBQUFBQUFBQVdObGFXeG1BQndBRWhBRUFB
QUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFJQUlBQUEwQUN4RUlBQUFBClFBQUFBRjlZQUE0QU9S
RVhBQUFBQUFBQUFQRVFBQUFDQUFZQUFBRHlBQUFBSUFBQUFBQUFBQUFBQUFBQVBBQUFBRmdJQUFB
QkFBQUEKRkFBQUFBQUFBQUNOQVFDQURBQUFBS3dBQUFBSEFGZ0FBQUNzQUFBQUN3QmNBQUFBckFB
QUFBb0FsZ0FBQUt3QUFBQUxBSm9BQUFDcwpBQUFBQ2dDd0FBQUFyQUFBQUFzQXRBQUFBS3dBQUFB
S0FGV0w3RmFMOUdnQUFBQUEveFVBQUFBQWc4UUVPL1RvQUFBQUFLTUFBQUFBClhqdnM2QUFBQUFC
ZHd3Y0FBQUFOQUFBQUJnQU5BQUFBMmdBQUFBWUFGd0FBQURBQUFBQVVBQndBQUFBbkFRQUFCZ0Fr
QUFBQU1BQUEKQUJRQUJBQUFBUFVBQUFBa0FBQUFBQUFBQUFBQUFBQXFBQUFBQUFBQUFBQUFBQUFB
QUFBQTZTOEFBQVFBQkFBRUFBQUE4UUFBQUlzQQpBQUJYQUE4UkFBQUFBQUFBQUFBQUFBQUFLZ0FB
QUFRQUFBQWdBQUFBK2hFQUFBQUFBQUFBQUFGZ1pIbHVZVzFwWXlCcGJtbDBhV0ZzCmFYcGxjaUJt
YjNJZ0oydERSbGRwYm1SdmQzTlRVMHhRWldWeVEyVnlkQ2NuQUJ3QUVoQUFBQUFBQUFBQUFBQUFB
QUFFQUFBQUFBQUEKQUFBQUFBSUFBQTRBT1JFTEFBQUFBQUFBQUs4UkFBQUNBQVlBQVBJQUFBQWdB
QUFBQUFBQUFBQUFBQUFxQUFBQXVBVUFBQUVBQUFBVQpBQUFBQUFBQUFDVUFBSUFNQUFBQUhBRUFB
QWNBV0FBQUFCd0JBQUFMQUZ3QUFBQWNBUUFBQ2dDekFBQUFIQUVBQUFzQXR3QUFBQndCCkFBQUtB
TXdBQUFBY0FRQUFDd0RRQUFBQUhBRUFBQW9BVll2c1ZvdjBhQUFBQUFEL0ZRQUFBQUNEeEFRNzlP
Z0FBQUFBb3dBQUFBQmUKTyt6b0FBQUFBRjNEQndBQUFBNEFBQUFHQUEwQUFBRGFBQUFBQmdBWEFB
QUFNQUFBQUJRQUhBQUFBQ2tCQUFBR0FDUUFBQUF3QUFBQQpGQUFFQUFBQTlRQUFBQ1FBQUFBQUFB
QUFBQUFBQUNvQUFBQUFBQUFBQUFBQUFBQUFBQURwTHdBQUJBQUVBQVFBQUFEeEFBQUFqQUFBCkFG
Z0FEeEVBQUFBQUFBQUFBQUFBQUFBcUFBQUFCQUFBQUNBQUFBRDZFUUFBQUFBQUFBQUFBV0JrZVc1
aGJXbGpJR2x1YVhScFlXeHAKZW1WeUlHWnZjaUFuYTBOR1YybHVaRzkzYzFOVFRFeHZZMkZzUTJW
eWRDY25BQndBRWhBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQQpBQUFBQUFJQUFBNEFPUkVMQUFB
QUFBQUFBSzhSQUFBQ0FBWUE4Z0FBQUNBQUFBQUFBQUFBQUFBQUFDb0FBQUM0QlFBQUFRQUFBQlFB
CkFBQUFBQUFBSmdBQWdBd0FBQUFoQVFBQUJ3QllBQUFBSVFFQUFBc0FYQUFBQUNFQkFBQUtBTFFB
QUFBaEFRQUFDd0M0QUFBQUlRRUEKQUFvQXpBQUFBQ0VCQUFBTEFOQUFBQUFoQVFBQUNnQlZpK3hX
aS9Sb0FBQUFBUDhWQUFBQUFJUEVCRHYwNkFBQUFBQ2pBQUFBQUY0Nwo3T2dBQUFBQVhjTUhBQUFB
RHdBQUFBWUFEUUFBQU5vQUFBQUdBQmNBQUFBd0FBQUFGQUFjQUFBQUtBRUFBQVlBSkFBQUFEQUFB
QUFVCkFBUUFBQUQxQUFBQUpBQUFBQUFBQUFBQUFBQUFLZ0FBQUFBQUFBQUFBQUFBQUFBQUFPa3ZB
QUFFQUFRQUJBQUFBUEVBQUFDWkFBQUEKWlFBUEVRQUFBQUFBQUFBQUFBQUFBQ29BQUFBRUFBQUFJ
QUFBQVBvUkFBQUFBQUFBQUFBQllHUjVibUZ0YVdNZ2FXNXBkR2xoYkdsNgpaWElnWm05eUlDZHJR
MFpUZEhKbFlXMVFjbTl3WlhKMGVWZHBibVJ2ZDNOVFUweERaWEowU1c1bWJ5Y25BQndBRWhBQUFB
QUFBQUFBCkFBQUFBQUFFQUFBQUFBQUFBQUFBQUFJQUFBNEFPUkVMQUFBQUFBQUFBSzhSQUFBQ0FB
WUFBQUFBOGdBQUFDQUFBQUFBQUFBQUFBQUEKQUNvQUFBQzRCUUFBQVFBQUFCUUFBQUFBQUFBQUp3
QUFnQXdBQUFBbUFRQUFCd0JZQUFBQUpnRUFBQXNBWEFBQUFDWUJBQUFLQU1FQQpBQUFtQVFBQUN3
REZBQUFBSmdFQUFBb0EzQUFBQUNZQkFBQUxBT0FBQUFBbUFRQUFDZ0FBQUFBQUFBQUFBQUFBQUFB
QUFBQUFIQUVBCkFBWUFCQUFBQUNFQkFBQUdBQWdBQUFBbUFRQUFCZ0FFQUFBQVlnQVZGZmc5RWRZ
YjZPZEZrVEgyNkE5VXJ5a0NBQUFBWXpwY2NISnYKYW1WamRITmNkMlZpYTJsMFhHSjFhV3hrWEc5
aWFseDNaV0pyYVhSemVYTjBaVzFwYm5SbGNtWmhZMlZjWkdWaWRXZGZhVzUwWlhKdQpZV3hjZG1N
NE1DNXdaR0lBOFVCamIyMXdMbWxrSjhadUFQLy9BQUFEQUVCbVpXRjBMakF3QVFBQUFQLy9BQUFE
QUM1a2NtVmpkSFpsCkFBQUFBQUVBQUFBREFmWUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDNWtaV0ox
WnlSVEFBQUFBQUlBQUFBREFlVElBQUJ2QWdBQUFBQUEKQUFBQUFBQUFBQzV5WkdGMFlRQUFBQUFB
QUFNQUFBQURBUVFCQUFBQUFBQUF4K0pGZXdBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFNQQpBQUFE
QUM1a1lYUmhBQUFBQUFBQUFBUUFBQUFEQVF3QUFBQUFBQUFBNlhEUUlBQUFBQUFBQUFBQUFBQVhB
QUFBQUFBQUFBUUFBQUFECkFBQUFBQUFzQUFBQUJBQUFBQVFBQUFBREFDUlRSemMzTVRBNEJBQUFB
QU1BQUFBREFDUlRSemMzTVRNM0hBQUFBQU1BQUFBREFDUlQKUnpjM01UUXlOQUFBQUFNQUFBQURB
QUFBQUFCQ0FBQUFDQUFBQUFRQUFBQURBQ1JUUnpjM016YzNYQUFBQUFNQUFBQURBQ1JUUnpjMwpN
emt3aEFBQUFBTUFBQUFEQUNSVFJ6YzNNemszb0FBQUFBTUFBQUFEQUNSVFJ6YzNOREF6eUFBQUFB
TUFBQUFEQUNSVFJ6YzNOREk1CjhBQUFBQU1BQUFBREFDNTBaWGgwQUFBQUFBQUFBQVVBQUFBREFT
MGdBQUNYQVFBQVVHc1NsZ0FBQUFBQUFBQUFBQUJiQUFBQUFBQUEKQUFVQUlBQUNBQ1JNVGpVQUFB
QUFpQUFBQUFVQUFBQURBQ1JNVGpZQUFBQUFmQUFBQUFVQUFBQURBQ1JNVGpjQUFBQUFkQUFBQUFV
QQpBQUFEQUFBQUFBQjhBQUFBQUFBQUFBQUFJQUFDQUM1eWRHTWtWRTFhQUFBQUFBWUFBQUFEQVFR
QUFBQUJBQUFBQUFBQUFBQUFBZ0FBCkFBQUFBQUNUQUFBQUFBQUFBQVlBQUFBREFBQUFBQUNxQUFB
QUFBQUFBQUFBSUFBQ0FDNXlkR01rU1UxYUFBQUFBQWNBQUFBREFRUUEKQUFBQkFBQUFBQUFBQUFB
QUFnQUFBQUFBQUFDNUFBQUFBQUFBQUFjQUFBQURBQUFBQUFEUUFBQUFBQUFBQUFBQUlBQUNBQUFB
QUFEZgpBQUFBb0FBQUFBVUFJQUFDQUFBQUFBRC9BQUFBc0FBQUFBVUFJQUFDQUFBQUFBQWpBUUFB
QUFBQUFBQUFBQUFDQUFBQUFBQXRBUUFBCndBQUFBQVVBSUFBQ0FBQUFBQUJRQVFBQTBBQUFBQVVB
SUFBQ0FDNWljM01BQUFBQUFBQUFBQWdBQUFBREFSZ0FBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFB
QUFCMUFRQUFCQUFBQUFnQUFBQURBQUFBQUFDUEFRQUFBQUFBQUFnQUFBQURBQUFBQUFDcUFRQUFB
QUFBQUFBQQpBQUFDQUFBQUFBREtBUUFBQ0FBQUFBZ0FBQUFEQUFBQUFBRG9BUUFBQUFBQUFBQUFJ
QUFDQUFBQUFBRDNBUUFBTUFFQUFBVUFJQUFECkFDUk1UakkwQUFBQXFBWUFBQVVBQUFBREFDUk1U
akl6QUFBQXNBWUFBQVVBQUFBREFDUk1Uakl5QUFBQXR3WUFBQVVBQUFBREFDUk0KVGpJeEFBQUF3
Z1lBQUFVQUFBQURBQ1JNVGpJd0FBQUF6d1lBQUFVQUFBQURBQ1JNVGpFNUFBQUEyQVlBQUFVQUFB
QURBQ1JNVGpJMQpBQUFBWUFZQUFBVUFBQUFEQUNSTVRqSTJBQUFBV0FZQUFBVUFBQUFEQUFBQUFB
QVJBZ0FBQUFBQUFBQUFBQUFDQUFBQUFBQWpBZ0FBCkFBQUFBQUFBQUFBQ0FDNXlaR0YwWVFBQUFB
QUFBQWtBQUFBREFRZ0FBQUFBQUFBQWdNemFvZ0FBQWdBQUFBQUFBQUE1QWdBQUFBQUEKQUFrQUFB
QUNBQzV5WkdGMFlRQUFBQUFBQUFvQUFBQURBUWdBQUFBQUFBQUFXT1piUFFBQUFnQUFBQUFBQUFC
UkFnQUFBQUFBQUFvQQpBQUFDQUM1eVpHRjBZUUFBQUFBQUFBc0FBQUFEQVFnQUFBQUFBQUFBRWt2
UGp3QUFBZ0FBQUFBQUFBQnBBZ0FBQUFBQUFBc0FBQUFDCkFDNXlaR0YwWVFBQUFBQUFBQXdBQUFB
REFRZ0FBQUFBQUFBQUM0ck13UUFBQWdBQUFBQUFBQUNCQWdBQUFBQUFBQXdBQUFBQ0FDNXkKWkdG
MFlRQUFBQUFBQUEwQUFBQURBUVFBQUFBQUFBQUFkclhsalFBQUFnQUFBQUFBQUFDWkFnQUFBQUFB
QUEwQUFBQUNBQUFBQUFDcApBZ0FBQUFBQUFBQUFBQUFDQUFBQUFBQy9BZ0FBQUFBQUFBQUFBQUFD
QUFBQUFBRFRBZ0FBQUFBQUFBQUFBQUFDQUFBQUFBRHBBZ0FBCkFBQUFBQUFBQUFBQ0FBQUFBQUQv
QWdBQUFBQUFBQUFBQUFBQ0FGOXRaVzF6WlhRQUFBQUFBQUFBSUFBQ0FBQUFBQUFTQXdBQUFBQUEK
QUFBQUFBQUNBQUFBQUFBbkF3QUFBQUFBQUFBQUFBQUNBQzV5WkdGMFlRQUFBQUFBQUE0QUFBQURB
UWdBQUFBQUFBQUExRWhkdWdBQQpBZ0FBQUFBQUFBQkNBd0FBQUFBQUFBNEFBQUFDQUFBQUFBQmFB
d0FBQUFBQUFBQUFBQUFDQUM1eVpHRjBZUUFBQUFBQUFBOEFBQUFECkFSQUFBQUFBQUFBQU45QVVo
QUFBQWdBQUFBQUFBQUIxQXdBQUFBQUFBQThBQUFBREFBQUFBQUNuQXdBQUFBQUFBQUFBQUFBQ0FB
QUEKQUFDOUF3QUFBQUFBQUFBQUFBQUNBQUFBQUFEVkF3QUFBQUFBQUFBQUFBQUNBQzVrWVhSaEFB
QUFBQUFBQUJBQUFBQURBUVFBQUFBQQpBQUFBa0VIY2RnQUFBZ0FBQUFBQUFBRHhBd0FBQUFBQUFC
QUFBQUFEQUM1a1lYUmhBQUFBQUFBQUFCRUFBQUFEQVFRQUFBQUFBQUFBCkhLOGJJd0FBQWdBQUFB
QUFBQUFaQkFBQUFBQUFBQkVBQUFBREFDNTBaWGgwQUFBQUFBQUFBQklBQUFBREFUa0FBQUFDQUFB
QUdlNjYKbkFBQUFnQUFBQzVrWldKMVp5UlRBQUFBQUJNQUFBQURBY3dBQUFBRkFBQUFBQUFBQUJJ
QUJRQUFBRjl3YjNkbUFBQUFBQUFBQUJJQQpJQUFDQUY5d2IzY0FBQUFBQUFBQUFBQUFJQUFDQUM1
MFpYaDBBQUFBQUFBQUFCUUFBQUFEQVJzQUFBQUNBQUFBL3puK0dRQUFBZ0FBCkFDNWtaV0oxWnlS
VEFBQUFBQlVBQUFBREFjQUFBQUFGQUFBQUFBQUFBQlFBQlFBQUFBQUFBQUJJQkFBQUFBQUFBQlFB
SUFBQ0FDNTAKWlhoMEFBQUFBQUFBQUJZQUFBQURBVEFBQUFBQ0FBQUFJMWU4UEFBQUFnQUFBQzVr
WldKMVp5UlRBQUFBQUJjQUFBQURBY0FBQUFBRgpBQUFBQUFBQUFCWUFCUUFBQUY5bVlXSnpaZ0FB
QUFBQUFCWUFJQUFDQUY5bVlXSnpBQUFBQUFBQUFBQUFJQUFDQUFBQUFBQldCQUFBCjhBWUFBQVVB
SUFBQ0FBQUFBQUNHQkFBQUFBQUFBQUFBQUFBQ0FBQUFBQUNzQkFBQUFBQUFBQUFBQUFBQ0FBQUFB
QURSQkFBQWNBY0EKQUFVQUlBQURBQUFBQUFBQUJRQUFBQUFBQUFBQUFBQUNBQUFBQUFBbUJRQUFB
QUFBQUFBQUFBQUNBQUFBQUFCTEJRQUE0QWNBQUFVQQpJQUFDQUFBQUFBQitCUUFBQUFnQUFBVUFJ
QUFDQUNSTVRqRXlBQUFBS0FvQUFBVUFBQUFEQUNSTVRqRXpBQUFBSEFvQUFBVUFBQUFECkFDUk1U
akUwQUFBQUZBb0FBQVVBQUFBREFBQUFBQUM1QlFBQUFBQUFBQUFBQUFBQ0FBQUFBQURvQlFBQUFB
QUFBQUFBQUFBQ0FDNXkKWkdGMFlRQUFBQUFBQUJnQUFBQURBUWdBQUFBQUFBQUFBQUFBQUFBQUFn
QUFBQUFBQUFBWEJnQUFBQUFBQUJnQUFBQUNBQzV5WkdGMApZUUFBQUFBQUFCa0FBQUFEQVFnQUFB
QUFBQUFBb0U5aVR3QUFBZ0FBQUFBQUFBQXZCZ0FBQUFBQUFCa0FBQUFDQUFBQUFBQkhCZ0FBCkFB
QUFBQUFBQUFBQ0FBQUFBQUJlQmdBQUFBQUFBQUFBQUFBQ0FBQUFBQUNHQmdBQUFBQUFBQUFBQUFB
Q0FBQUFBQUMzQmdBQUFBQUEKQUFBQUFBQUNBQzV5WkdGMFlRQUFBQUFBQUJvQUFBQURBUVFBQUFB
QUFBQUFrRUhjZGdBQUFnQUFBQUFBQUFEZ0JnQUFBQUFBQUJvQQpBQUFDQUFBQUFBRHdCZ0FBUUFv
QUFBVUFJQUFDQUNSTVRqRXdBQUFBbUEwQUFBVUFBQUFEQUNSTVRqRXhBQUFBakEwQUFBVUFBQUFE
CkFDUk1UakV5QUFBQWhBMEFBQVVBQUFBREFBQUFBQUE3QndBQUFBQUFBQUFBQUFBQ0FDNXlaR0Yw
WVFBQUFBQUFBQnNBQUFBREFRUUEKQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFCV0J3QUFBQUFB
QUJzQUFBQUNBQUFBQUFCbUJ3QUFBQUFBQUFBQUFBQUNBQUFBQUFCKwpCd0FBQUFBQUFBQUFBQUFD
QUFBQUFBQ1ZCd0FBQUFBQUFBQUFBQUFDQUFBQUFBQ21Cd0FBQUFBQUFBQUFBQUFDQUFBQUFBRERC
d0FBCkFBQUFBQUFBQUFBQ0FBQUFBQURwQndBQXNBMEFBQVVBSUFBREFDUk1Uak1BQUFBQUJBNEFB
QVVBQUFBREFDUk1UalFBQUFBQStBMEEKQUFVQUFBQURBQ1JNVGpVQUFBQUE4QTBBQUFVQUFBQURB
QUFBQUFBSUNBQUFFQTRBQUFVQUlBQURBQ1JNVGpNQUFBQUFlQTRBQUFVQQpBQUFEQUNSTVRqUUFB
QUFBYkE0QUFBVUFBQUFEQUNSTVRqVUFBQUFBWkE0QUFBVUFBQUFEQUFBQUFBQk9DQUFBZ0E0QUFB
VUFJQUFECkFBQUFBQUJ2Q0FBQXNBNEFBQVVBSUFBREFDNXlaR0YwWVFBQUFBQUFBQndBQUFBREFR
Z0FBQUFBQUFBQTBkNFk2QUFBQWdBQUFBQUEKQUFCL0NBQUFBQUFBQUJ3QUFBQUNBQzUwWlhoMEFB
QUFBQUFBQUIwQUFBQURBVHdBQUFBREFBQUFoNkI2R1FBQUFnQUFBQzVrWldKMQpaeVJUQUFBQUFC
NEFBQUFEQWRBQUFBQUhBQUFBQUFBQUFCMEFCUUFBQUY5alpXbHNaZ0FBQUFBQUFCMEFJQUFDQUFB
QUFBQ1hDQUFBCkFBQUFBQUFBQUFBQ0FBQUFBQUNqQ0FBQWNBOEFBQVVBSUFBQ0FBQUFBQURLQ0FB
QUFBQUFBQUFBQUFBQ0FBQUFBQURzQ0FBQW9BOEEKQUFVQUlBQUNBQUFBQUFBR0NRQUFBQUFBQUFB
QUFBQUNBQUFBQUFBakNRQUFBQUFBQUFBQUFBQUNBQUFBQUFCSkNRQUFBQUFBQUFBQQpBQUFDQUFB
QUFBQnBDUUFBQUFBQUFBQUFBQUFDQUFBQUFBQ05DUUFBSUJBQUFBVUFJQUFDQUFBQUFBRExDUUFB
QUFBQUFBQUFBQUFDCkFBQUFBQURtQ1FBQWNCQUFBQVVBSUFBQ0FDUk1UalFBQUFBQUtCTUFBQVVB
QUFBREFDUk1Uak1BQUFBQUxoTUFBQVVBQUFBREFDUk0KVGpVQUFBQUFFQk1BQUFVQUFBQURBQ1JN
VGpZQUFBQUFDQk1BQUFVQUFBQURBQUFBQUFBakNnQUFBQUFBQUFBQUFBQUNBQUFBQUFCRApDZ0FB
QUFBQUFBQUFBQUFDQUFBQUFBQmlDZ0FBQUFBQUFBQUFBQUFDQUFBQUFBQ0JDZ0FBQUFBQUFBQUFB
QUFDQUFBQUFBQ2NDZ0FBClFCTUFBQVVBSUFBREFDUk1Uak1BQUFBQXNCTUFBQVVBQUFBREFDUk1U
alFBQUFBQXBCTUFBQVVBQUFBREFDUk1UalVBQUFBQW5CTUEKQUFVQUFBQURBQUFBQUFEa0NnQUF3
Qk1BQUFVQUlBQUNBQUFBQUFBaUN3QUFvQlVBQUFVQUlBQUNBQUFBQUFCVkN3QUFBQUFBQUFBQQpB
QUFDQUFBQUFBQnVDd0FBQUFBQUFBQUFBQUFDQUFBQUFBQ1VDd0FBQUFBQUFBQUFBQUFDQUFBQUFB
QzBDd0FBSUJZQUFBVUFJQUFDCkFBQUFBQUQ1Q3dBQUFBQUFBQUFBQUFBQ0FBQUFBQUFuREFBQVVC
WUFBQVVBSUFBQ0FBQUFBQUJnREFBQUFBQUFBQUFBQUFBQ0FBQUEKQUFCOERBQUEwQllBQUFVQUlB
QUNBQUFBQUFES0RBQUFBQUFBQUFBQUFBQUNBQUFBQUFEbURBQUFBQUFBQUFBQUFBQUNBQUFBQUFB
SApEUUFBQUFBQUFBQUFBQUFDQUFBQUFBQWlEUUFBQUFBQUFBQUFBQUFDQUFBQUFBQkhEUUFBQUFB
QUFBQUFBQUFDQUFBQUFBQnVEUUFBCmtCY0FBQVVBSUFBQ0FBQUFBQUN4RFFBQUFBQUFBQUFBQUFB
Q0FBQUFBQURYRFFBQXdCY0FBQVVBSUFBQ0FBQUFBQUFNRGdBQUFBQUEKQUFBQUFBQUNBQUFBQUFB
eERnQUFBQUFBQUFBQUFBQUNBQUFBQUFCVkRnQUFNQmdBQUFVQUlBQUNBQUFBQUFDVkRnQUFBQUFB
QUFBQQpBQUFDQUFBQUFBQzlEZ0FBQUFBQUFBQUFBQUFDQUFBQUFBRGhEZ0FBQUFBQUFBQUFBQUFD
QUFBQUFBRDREZ0FBQUFBQUFBQUFBQUFDCkFBQUFBQUFPRHdBQW9CZ0FBQVVBSUFBQ0FBQUFBQUJj
RHdBQUFBQUFBQUFBQUFBQ0FBQUFBQUNJRHdBQTBCZ0FBQVVBSUFBQ0FBQUEKQUFEV0R3QUFBQUFB
QUFBQUFBQUNBQUFBQUFBQkVBQUFBQmtBQUFVQUlBQUNBQUFBQUFBNEVBQUFBQUFBQUFBQUFBQUNB
QUFBQUFCUQpFQUFBQUFBQUFBQUFBQUFDQUFBQUFBQnFFQUFBMEJrQUFBVUFJQUFDQUFBQUFBRElF
QUFBQUFBQUFBQUFBQUFDQUFBQUFBQU5FUUFBCkFBQUFBQUFBQUFBQ0FBQUFBQUF4RVFBQVVCb0FB
QVVBSUFBQ0FBQUFBQUJ3RVFBQUFBQUFBQUFBQUFBQ0FBQUFBQUNlRVFBQWdCb0EKQUFVQUlBQUNB
Q1JNVGpRQUFBQUFjQnNBQUFVQUFBQURBQ1JNVGpNQUFBQUFmQnNBQUFVQUFBQURBQ1JNVGpVQUFB
QUFXQnNBQUFVQQpBQUFEQUNSTVRqWUFBQUFBVUJzQUFBVUFBQUFEQUFBQUFBRHlFUUFBQUFBQUFB
QUFBQUFDQUFBQUFBQVJFZ0FBQUFBQUFBQUFBQUFDCkFBQUFBQUEyRWdBQUFBQUFBQUFBQUFBQ0FB
QUFBQUJRRWdBQUFBQUFBQUFBQUFBQ0FBQUFBQUI1RWdBQUFBQUFBQUFBQUFBQ0FBQUEKQUFDaUVn
QUFrQnNBQUFVQUlBQUNBQ1JNVGpRQUFBQUFEQjBBQUFVQUFBQURBQ1JNVGpNQUFBQUFIaDBBQUFV
QUFBQURBQ1JNVGpVQQpBQUFBOUJ3QUFBVUFBQUFEQUNSTVRqWUFBQUFBN0J3QUFBVUFBQUFEQUFB
QUFBRDBFZ0FBQUFBQUFBQUFBQUFDQUFBQUFBQWxFd0FBCkFBQUFBQUFBQUFBQ0FBQUFBQUJLRXdB
QUFBQUFBQUFBQUFBQ0FBQUFBQUJxRXdBQU1CMEFBQVVBSUFBQ0FBQUFBQUMvRXdBQUFBQUEKQUFB
QUFBQUNBQUFBQUFEakV3QUFBQUFBQUFBQUFBQUNBQUFBQUFBTEZBQUFrQjBBQUFVQUlBQUNBQUFB
QUFBOEZBQUFBQUFBQUFBQQpBQUFDQUFBQUFBQldGQUFBd0IwQUFBVUFJQUFDQUFBQUFBQ0lGQUFB
QUFBQUFBQUFBQUFDQUFBQUFBQ2pGQUFBOEIwQUFBVUFJQUFDCkFBQUFBQURVRkFBQUFBQUFBQUFB
QUFBQ0FBQUFBQUR3RkFBQUlCNEFBQVVBSUFBQ0FBQUFBQUFpRlFBQUFBQUFBQUFBQUFBQ0FBQUEK
QUFBL0ZRQUFVQjRBQUFVQUlBQUNBQUFBQUFCekZRQUFBQUFBQUFBQUFBQUNBQUFBQUFDU0ZRQUFn
QjRBQUFVQUlBQUNBQUFBQUFERgpGUUFBQUFBQUFBQUFBQUFDQUFBQUFBRGpGUUFBc0I0QUFBVUFJ
QUFDQUFBQUFBQVJGZ0FBQUFBQUFBQUFBQUFDQUFBQUFBQXFGZ0FBCjRCNEFBQVVBSUFBQ0FBQUFB
QUJhRmdBQUFBQUFBQUFBQUFBQ0FBQUFBQUIxRmdBQUVCOEFBQVVBSUFBQ0FBQUFBQUM3RmdBQUFB
QUEKQUFBQUFBQUNBQUFBQUFEYUZnQUFZQjhBQUFVQUlBQUNBQUFBQUFBekZ3QUFBQUFBQUFBQUFB
QUNBQUFBQUFCYUZ3QUFzQjhBQUFVQQpJQUFDQUFBQUFBQ05Gd0FBQUFBQUFBQUFBQUFDQUFBQUFB
Q3BGd0FBNEI4QUFBVUFJQUFDQUFBQUFBRGFGd0FBQUFBQUFBQUFBQUFDCkFBQUFBQUQyRndBQUVD
QUFBQVVBSUFBQ0FBQUFBQUFXR0FBQUFBQUFBQUFBQUFBQ0FDNTBaWGgwSkhsakFBQUFBQjhBQUFB
REFTb0EKQUFBRkFBQUE4T0tYSVFBQUFnQUFBQzVrWldKMVp5UlRBQUFBQUNBQUFBQURBZXdBQUFB
SEFBQUFBQUFBQUI4QUJRQUFBQUFBQUFBegpHQUFBQUFBQUFCOEFJQUFEQUM1MFpYaDBKSGxqQUFB
QUFDRUFBQUFEQVNvQUFBQUZBQUFBOE9LWElRQUFBZ0FBQUM1a1pXSjFaeVJUCkFBQUFBQ0lBQUFB
REFld0FBQUFIQUFBQUFBQUFBQ0VBQlFBQUFBQUFBQUJWR0FBQUFBQUFBQ0VBSUFBREFDNTBaWGgw
SkhsakFBQUEKQUNNQUFBQURBU29BQUFBRkFBQUE4T0tYSVFBQUFnQUFBQzVrWldKMVp5UlRBQUFB
QUNRQUFBQURBZndBQUFBSEFBQUFBQUFBQUNNQQpCUUFBQUFBQUFBQjRHQUFBQUFBQUFDTUFJQUFE
QUFBQUFBQ29HQUFBRkFBQUFBZ0FBQUFEQUFBQUFBQy9HQUFBRUFBQUFBZ0FBQUFECkFBQUFBQURr
R0FBQURBQUFBQWdBQUFBREFDNURVbFFrV0VOVkFBQUFBQ1VBQUFBREFRd0FBQUFEQUFBQUFBQUFB
QUFBQUFBQUFBQUEKQUFEOEdBQUFBQUFBQUNVQUFBQURBQUFBQUFBZ0dRQUFCQUFBQUNVQUFBQURB
QUFBQUFCRkdRQUFDQUFBQUNVQUFBQURBQzVrWldKMQpaeVJVQUFBQUFDWUFBQUFEQVdnQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUhjWkFBQmZZVzUwYVdGc2FXRnphVzVuUjJGdGJXRUFYM05mClptOXVk
Rk50YjI5MGFHbHVaMVI1Y0dVQVgzTmZabTl1ZEZOdGIyOTBhR2x1WjB4bGRtVnNBRjl6WDJadmJu
UlRiVzl2ZEdocGJtZEQKYjI1MGNtRnpkQUEvZDJ0VFpYUkdiMjUwVTIxdmIzUm9hVzVuVEdWMlpX
eEFRRmxCV0VoQVdnQkFYMUpVUTE5RGFHVmphMU4wWVdOcgpWbUZ5YzBBNEFGOWZVbFJEWDFOb2RY
UmtiM2R1TG5KMFl5UlVUVm9BWDE5U1ZFTmZVMmgxZEdSdmQyNEFYMTlTVkVOZlNXNXBkRUpoCmMy
VXVjblJqSkVsTldnQmZYMUpVUTE5SmJtbDBRbUZ6WlFBL2QydEhaWFJHYjI1MFUyMXZiM1JvYVc1
blRHVjJaV3hBUUZsQlNGaGEKQUQ5M2ExTmxkRVp2Ym5SVGJXOXZkR2hwYm1kRGIyNTBjbUZ6ZEVC
QVdVRllUVUJhQUY5ZlpteDBkWE5sWkFBL2QydEhaWFJHYjI1MApVMjF2YjNSb2FXNW5RMjl1ZEhK
aGMzUkFRRmxCVFZoYUFEOTNhMU41YzNSbGJVWnZiblJUYlc5dmRHaHBibWREYUdGdVoyVmtRRUJa
ClFWaFlXZ0JmYzE5emVYTjBaVzFHYjI1MFUyMXZiM1JvYVc1blUyVjBBRjl6WDNONWMzUmxiVVp2
Ym5SVGJXOXZkR2hwYm1kVWVYQmwKQUY5ZmFXMXdYMTlUZVhOMFpXMVFZWEpoYldWMFpYSnpTVzVt
YjFkQU1UWUFYM05mYzNsemRHVnRSbTl1ZEZOdGIyOTBhR2x1WjBWdQpZV0pzWldRQVgxOVNWRU5m
UTJobFkydEZjM0FBUDJOc1pXRnlWSGx3WlVOdmJuUnlZWE4wUUVCWlFVMVlXZ0JmWDJsdGNGOWZS
R1ZzClpYUmxSRU5BTkFCZlgybHRjRjlmUkdWc1pYUmxUMkpxWldOMFFEUUFYMTl5WldGc1FETm1a
akF3TURBd01EQXdNREF3TURBQVgxOXkKWldGc1FEUXdObVpsTURBd01EQXdNREF3TURBQVgxOXla
V0ZzUURRd01ESTJOalkyTmpBd01EQXdNREFBWDE5eVpXRnNRRE5tWWprNQpPVGs1WVRBd01EQXdN
REFBWDE5eVpXRnNRRE5tT0RBd01EQXdBRjlmYVcxd1gxOUZlSFJVWlhoMFQzVjBWMEF6TWdCZlgy
bHRjRjlmClUyVjBRbXREYjJ4dmNrQTRBRjlmYVcxd1gxOVRaWFJVWlhoMFEyOXNiM0pBT0FCZlgy
bHRjRjlmVTJWMFZHVjRkRUZzYVdkdVFEZ0EKWDE5cGJYQmZYMU5sZEVKclRXOWtaVUE0QUY5ZmFX
MXdYMTlIWlhSUFltcGxZM1JYUURFeUFGOWZhVzF3WDE5RGNtVmhkR1ZFU1VKVApaV04wYVc5dVFE
STBBRjlmY21WaGJFQTBNRGhtTkRBd01EQXdNREF3TURBd0FGOWZhVzF3WDE5SFpYUkhiSGx3YUU5
MWRHeHBibVZYClFESTRBRDlwWkdWdWRHbDBlVUEvTXo4L1kyeGxZWEpVZVhCbFEyOXVkSEpoYzNS
QVFGbEJUVmhhUURSVlgwMUJWREpBUUVJQVgxOXAKYlhCZlgxTmxiR1ZqZEU5aWFtVmpkRUE0QUY5
ZmFXMXdYMTlIWlhSVGRHOWphMDlpYW1WamRFQTBBRjlmYVcxd1gxOURjbVZoZEdWRApiMjF3WVhS
cFlteGxSRU5BTkFBL1oyRnRiV0ZBUHpFL1AyTnNaV0Z5Vkhsd1pVTnZiblJ5WVhOMFFFQlpRVTFZ
V2tBMFRVRUFQMnhoCmMzUkRiMjUwY21GemRFQS9NVDgvWTJ4bFlYSlVlWEJsUTI5dWRISmhjM1JB
UUZsQlRWaGFRRFJKUVFBL1ptRmljMEJBV1VGTlRVQmEKQUQ5M2ExTmxkRVp2Ym5SVGJXOXZkR2hw
Ym1kVGRIbHNaVUJBV1VGSlVFRlZRMGREYjI1MFpYaDBRRUJmVGtCYUFGOWZhVzF3WDE5RApSME52
Ym5SbGVIUkhaWFJHYjI1MFUyMXZiM1JvYVc1blUzUjViR1VBWDE5cGJYQmZYME5IUTI5dWRHVjRk
RWRsZEZOb2IzVnNaRk50CmIyOTBhRVp2Ym5SekFEOXpaWFJHYjI1MFUyMXZiM1JvYVc1blUzUjVi
R1ZBUUZsQldGQkJWVU5IUTI5dWRHVjRkRUJBU1Y5T1FGb0EKWDE5cGJYQmZYME5IUTI5dWRHVjRk
Rk5sZEVadmJuUlRiVzl2ZEdocGJtZFRkSGxzWlFCZlgybHRjRjlmUTBkRGIyNTBaWGgwVTJWMApV
Mmh2ZFd4a1UyMXZiM1JvUm05dWRITUFQM2RyVW1WemRHOXlaVVp2Ym5SVGJXOXZkR2hwYm1kVGRI
bHNaVUJBV1VGWVVFRlZRMGRECmIyNTBaWGgwUUVCSlFGb0FQM2RyVTJWMFEwZERiMjUwWlhoMFJt
OXVkRkpsYm1SbGNtbHVaMU4wZVd4bFFFQlpRVmhRUVZWRFIwTnYKYm5SbGVIUkFRRjlPTVRGQVdn
QmZYMmx0Y0Y5ZlEwZERiMjUwWlhoMFUyVjBVMmh2ZFd4a1UzVmljR2w0Wld4UmRXRnVkR2w2WlVa
dgpiblJ6QUY5ZmFXMXdYMTlEUjBOdmJuUmxlSFJUWlhSVGFHOTFiR1JUZFdKd2FYaGxiRkJ2YzJs
MGFXOXVSbTl1ZEhNQVgxOXlaV0ZzClFEQXdNREF3TURBd01EQXdNREF3TURBQVgxOXlaV0ZzUUdK
bVpqQXdNREF3TURBd01EQXdNREFBWDE5cGJYQmZYME5IUTI5dWRHVjQKZEVkbGRFTlVUUUJmWDJs
dGNGOWZRMGREYjI1MFpYaDBVMlYwVTJodmRXeGtRVzUwYVdGc2FXRnpSbTl1ZEhNQVgxOXBiWEJm
WDBOSApRMjl1ZEdWNGRGTmxkRk5vYjNWc1pGVnpaVkJzWVhSbWIzSnRUbUYwYVhabFIyeDVjR2h6
QUY5ZmFXMXdYMTlEUjBOdmJuUmxlSFJUClpYUkdiMjUwVTIxdmIzUm9hVzVuUTI5dWRISmhjM1FB
WDE5eVpXRnNRRFF3TURBd01EQXdBRDkzYTBkbGRFZHNlWEJvUVdSMllXNWoKWlhOQVFGbEJXRkJC
VlVOSFJtOXVkRUJBUVVKVlEwZEJabVpwYm1WVWNtRnVjMlp2Y20xQVFGOU9Na2RCUVZWRFIxTnBl
bVZBUUVCYQpBRjlmYVcxd1gxOURSMFp2Ym5SSFpYUlZibWwwYzFCbGNrVnRBRjlmY21WaGJFQXdN
REF3TURBd01BQmZYMmx0Y0Y5ZlEwWkVZWFJoClIyVjBRbmwwWlZCMGNnQmZYMmx0Y0Y5ZlEwWkVZ
WFJoUjJWMFRHVnVaM1JvQUY5ZmFXMXdYMTlEUmxKbGJHVmhjMlVBWDE5cGJYQmYKWDBOSFJtOXVk
RU52Y0hsVVlXSnNaVVp2Y2xSaFp3QmZYMmx0Y0Y5ZlEwZEdiMjUwUjJWMFIyeDVjR2hCWkhaaGJt
TmxjMFp2Y2xOMAplV3hsQUQ5RFIxTnBlbVZOWVd0bFFFQlpRVDlCVlVOSFUybDZaVUJBVFUxQVdn
QS9YMTlEUjFOcGVtVkJjSEJzZVVGbVptbHVaVlJ5CllXNXpabTl5YlVCQVdVRS9RVlZEUjFOcGVt
VkFRRlV4UUZWRFIwRm1abWx1WlZSeVlXNXpabTl5YlVCQVFGb0FQM0psYm1SbGNtbHUKWjFOMGVX
eGxSbTl5Um05dWRFQkFXVUZKWDA0d1FGb0FQM0p2ZFc1a1prQkFXVUZOVFVCYUFGOWZjbVZoYkVB
elptVXdNREF3TURBdwpNREF3TURBd0FGOWZhVzF3WDE5alpXbHNBRDkzYTBkbGRFZHNlWEJvYzBC
QVdVRllVRUZWUTBkR2IyNTBRRUJSUWw5WFVVRkhTVUJhCkFGOWZhVzF3WDE5RFIwWnZiblJIWlhS
SGJIbHdhSE5HYjNKVmJtbGphR0Z5Y3dBL2QydFRaWFJWY0VadmJuUkRZV05vWlVCQVdVRlkKU1VC
YUFGOWZhVzF3WDE5RFIwWnZiblJEWVdOb1pWTmxkRTFoZUZOcGVtVUFYMTlwYlhCZlgwTkhSbTl1
ZEVOaFkyaGxVMlYwVTJodgpkV3hrUVhWMGIwVjRjR2x5WlFCZlgybHRjRjlmUTBkR2IyNTBRMkZq
YUdWSFpYUk1iMk5oYkVOaFkyaGxBRjlmYVcxd1gxOURSMFp2CmJuUlRaWFJUYUc5MWJHUlZjMlZO
ZFd4MGFXTmhZMmhsQUQ5M2ExTmxkRkJoZEhSbGNtNUNZWE5sUTFSTlFFQlpRVmhRUVZWRFIwTnYK
Ym5SbGVIUkFRRlZEUjBGbVptbHVaVlJ5WVc1elptOXliVUJBUUZvQVgxOXBiWEJmWDBOSFEyOXVk
R1Y0ZEZObGRFSmhjMlZEVkUwQQpQM2RyVTJWMFVHRjBkR1Z5YmxCb1lYTmxTVzVWYzJWeVUzQmhZ
MlZBUUZsQldGQkJWVU5IUTI5dWRHVjRkRUJBVlVOSFVHOXBiblJBClFFQmFBRjlmYVcxd1gxOURS
ME52Ym5SbGVIUlRaWFJRWVhSMFpYSnVVR2hoYzJVQVgxOXBiWEJmWDBOSFFXWm1hVzVsVkhKaGJu
Tm0KYjNKdFEyOXVZMkYwQUY5ZmFXMXdYMTlEUjBGbVptbHVaVlJ5WVc1elptOXliVWx1ZG1WeWRB
QmZYMmx0Y0Y5ZlEwZERiMjUwWlhoMApSMlYwUW1GelpVTlVUUUEvWDE5RFIxQnZhVzUwUVhCd2JI
bEJabVpwYm1WVWNtRnVjMlp2Y20xQVFGbEJQMEZWUTBkUWIybHVkRUJBClZURkFWVU5IUVdabWFX
NWxWSEpoYm5ObWIzSnRRRUJBV2dBL2QydEhaWFJWYzJWeVZHOUNZWE5sUTFSTlFFQlpRVDlCVlVO
SFFXWm0KYVc1bFZISmhibk5tYjNKdFFFQlFRVlZEUjBOdmJuUmxlSFJBUUVCYUFEOTNhMFJ5WVhk
R2IyTjFjMUpwYm1kQVFGbEJXRkJCVlVOSApRMjl1ZEdWNGRFQkFVRUZWUTBkRGIyeHZja0JBVFVC
YUFGOWZhVzF3WDE5RFIwTnZiblJsZUhSR2FXeHNVR0YwYUFCZlgybHRjRjlmClEwZERiMjUwWlho
MFUyVjBSbTlqZFhOU2FXNW5WMmwwYUVOdmJHOXlBRjlmYVcxd1gxOURSME52Ym5SbGVIUlRaWFJT
UjBKR2FXeHMKUTI5c2IzSUFQM2RyUjJWMFUxTk1RMlZ5ZEdsbWFXTmhkR1ZKYm1adlFFQlpRVkJD
VlY5ZlEwWkVhV04wYVc5dVlYSjVRRUJRUVZWZgpRMFpWVWt4U1pYTndiMjV6WlVCQVFGb0FYMTlw
YlhCZlgxOURSbFZTVEZKbGMzQnZibk5sUjJWMFUxTk1RMlZ5ZEdsbWFXTmhkR1ZECmIyNTBaWGgw
QUQ5M2EwZGxkRk5UVEZCbFpYSkRaWEowYVdacFkyRjBaVVJoZEdGQVFGbEJVRUZZVUVKVlgxOURS
a1JwWTNScGIyNWgKY25sQVFFQmFBRjlmYVcxd1gxOURSa1JwWTNScGIyNWhjbmxIWlhSV1lXeDFa
UUEvZDJ0VFpYUkRiR2xsYm5SRFpYSjBhV1pwWTJGMApaVWx1VTFOTVVISnZjR1Z5ZEdsbGMwQkFX
VUZZVUVGVlgxOURSa1JwWTNScGIyNWhjbmxBUUZCQ1ZWOWZRMFpFWVhSaFFFQkFXZ0JmClgybHRj
RjlmUTBaRWFXTjBhVzl1WVhKNVUyVjBWbUZzZFdVQVgxOXBiWEJmWDBOR1JHbGpkR2x2Ym1GeWVV
TnlaV0YwWlUxMWRHRmkKYkdVQVgxOXBiWEJmWDJ0RFJrRnNiRzlqWVhSdmNrUmxabUYxYkhRQVgx
OXBiWEJmWDJ0RFJsUjVjR1ZFYVdOMGFXOXVZWEo1UzJWNQpRMkZzYkVKaFkydHpBRjlmYVcxd1gx
OXJRMFpVZVhCbFJHbGpkR2x2Ym1GeWVWWmhiSFZsUTJGc2JFSmhZMnR6QUQ5M2EwZGxkRVJsClpt
RjFiSFJJVkZSUVEyOXZhMmxsVTNSdmNtRm5aVUJBV1VGUVFWVlBjR0Z4ZFdWRFJraFVWRkJEYjI5
cmFXVlRkRzl5WVdkbFFFQlkKV2dCZlgybHRjRjlmWDBOR1NGUlVVRU52YjJ0cFpWTjBiM0poWjJW
SFpYUkVaV1poZFd4MEFEOTNhME52Y0hsR2IzVnVaR0YwYVc5dQpRMkZqYUdWRWFYSmxZM1J2Y25s
QVFGbEJVRUpWWDE5RFJsTjBjbWx1WjBCQVdGb0FYMTlwYlhCZlgxOURSbFZTVEVOaFkyaGxRMjl3
CmVVTmhZMmhsUkdseVpXTjBiM0o1QUY5ZmFXMXdYMTlEUmxWU1RFTmhZMmhsUTI5d2VWTm9ZWEps
WkZWU1RFTmhZMmhsQUQ5M2ExTmwKZEVOR1ZWSk1VbVZ4ZFdWemRGTm9iM1ZzWkVOdmJuUmxiblJU
Ym1sbVprQkFXVUZZVUVGVlgwTkdWVkpNVW1WeGRXVnpkRUJBWDA1QQpXZ0JmWDJsdGNGOWZYME5H
VlZKTVVtVnhkV1Z6ZEZObGRGQnliM1J2WTI5c1VISnZjR1Z5ZEhrQVgxOXBiWEJmWDE5ZlEwWlRk
SEpwCmJtZE5ZV3RsUTI5dWMzUmhiblJUZEhKcGJtY0FYMTlwYlhCZlgydERSa0p2YjJ4bFlXNUdZ
V3h6WlFCZlgybHRjRjlmYTBOR1FtOXYKYkdWaGJsUnlkV1VBUDNkclEwWlZVa3hTWlhGMVpYTjBR
Mjl3ZVVoVVZGQlNaWEYxWlhOMFFtOWtlVkJoY25SelFFQlpRVkJDVlY5ZgpRMFpCY25KaGVVQkFV
RUpWWDBOR1ZWSk1VbVZ4ZFdWemRFQkFRRm9BWDE5cGJYQmZYME5HVlZKTVVtVnhkV1Z6ZEVOdmNI
bElWRlJRClVtVnhkV1Z6ZEVKdlpIbFFZWEowY3dBL2QydERSbFZTVEZKbGNYVmxjM1JUWlhSSVZG
UlFVbVZ4ZFdWemRFSnZaSGxRWVhKMGMwQkEKV1VGWVVFRlZYME5HVlZKTVVtVnhkV1Z6ZEVCQVVF
SlZYMTlEUmtGeWNtRjVRRUJBV2dCZlgybHRjRjlmUTBaVlVreFNaWEYxWlhOMApVMlYwU0ZSVVVG
SmxjWFZsYzNSQ2IyUjVVR0Z5ZEhNQVAzZHJTVzVwZEdsaGJHbDZaVTFoZUdsdGRXMUlWRlJRUTI5
dWJtVmpkR2x2CmJrTnZkVzUwVUdWeVNHOXpkRUJBV1VGSlNVQmFBRjlmYVcxd1gxOUhaWFJRY205
alFXUmtjbVZ6YzBBNEFGOWZhVzF3WDE5SFpYUk4KYjJSMWJHVklZVzVrYkdWWFFEUUFQM2RyUTI5
d2VVTnlaV1JsYm5ScFlXeEdjbTl0UTBaUVpYSnphWE4wWlc1MFUzUnZjbUZuWlVCQQpXVUZRUVZW
ZlEwWlZVa3hEY21Wa1pXNTBhV0ZzUUVCUVFWVmZRMFpWVWt4UWNtOTBaV04wYVc5dVUzQmhZMlZB
UUVCYUFGOWZhVzF3ClgxOURSbFZTVEVOeVpXUmxiblJwWVd4VGRHOXlZV2RsUTI5d2VVUmxabUYx
YkhSRGNtVmtaVzUwYVdGc1JtOXlVSEp2ZEdWamRHbHYKYmxOd1lXTmxBRjlmYVcxd1gxOURSbFZT
VEVOeVpXUmxiblJwWVd4VGRHOXlZV2RsUTNKbFlYUmxBRDkzYTBOR1RtVjBkMjl5YTBWeQpjbTl5
UjJWMFRHOWpZV3hwZW1Wa1JHVnpZM0pwY0hScGIyNUFRRmxCVUVKVlgxOURSbE4wY21sdVowQkFT
a0JhQUY5ZmFXMXdYMTlmClEwWk9aWFIzYjNKclJYSnliM0pIWlhSTWIyTmhiR2w2WldSRVpYTmpj
bWx3ZEdsdmJnQS9kMnRUWlhSRFQwNU9SVU5VVUhKdmVIbEcKYjNKVGRISmxZVzFBUUZsQldGQkJW
VjlmUTBaU1pXRmtVM1J5WldGdFFFQlFRbFZmWDBOR1UzUnlhVzVuUUVCUVFsVmZYME5HVG5WdApZ
bVZ5UUVCQVdnQmZYMmx0Y0Y5ZlEwWlNaV0ZrVTNSeVpXRnRVMlYwVUhKdmNHVnlkSGtBWDE5cGJY
QmZYMnREUmxOMGNtVmhiVkJ5CmIzQmxjblI1UTA5T1RrVkRWRkJ5YjNoNUFGOWZhVzF3WDE5RFJr
UnBZM1JwYjI1aGNubERjbVZoZEdVQVgxOXBiWEJmWDJ0RFJsTjAKY21WaGJWQnliM0JsY25SNVEw
OU9Ua1ZEVkZCeWIzaDVVRzl5ZEFCZlgybHRjRjlmYTBOR1UzUnlaV0Z0VUhKdmNHVnlkSGxEVDA1
TwpSVU5VVUhKdmVIbEliM04wQUQ5M2ExTmxkRU5QVGs1RlExUlFjbTk0ZVVGMWRHaHZjbWw2WVhS
cGIyNUdiM0pUZEhKbFlXMUFRRmxCCldGQkJWVjlmUTBaU1pXRmtVM1J5WldGdFFFQlFRbFZmWDBO
R1UzUnlhVzVuUUVCQVdnQmZYMmx0Y0Y5ZmEwTkdVM1J5WldGdFVISnYKY0dWeWRIbERUMDVPUlVO
VVFXUmthWFJwYjI1aGJFaGxZV1JsY25NQVgxOXBiWEJmWDBOR1JHbGpkR2x2Ym1GeWVVTnlaV0Yw
WlUxMQpkR0ZpYkdWRGIzQjVBRjlmYVcxd1gxOURSbEpsWVdSVGRISmxZVzFEYjNCNVVISnZjR1Z5
ZEhrQVAzZHJRMjl3ZVVOUFRrNUZRMVJRCmNtOTRlVkpsYzNCdmJuTmxRRUJaUVZCQlZWOWZRMFpJ
VkZSUVRXVnpjMkZuWlVCQVVFRlZYMTlEUmxKbFlXUlRkSEpsWVcxQVFGQkMKVlY5ZlEwWlZVa3hB
UUVCYUFGOWZhVzF3WDE5ZlEwWklWRlJRVFdWemMyRm5aVk5sZEZKbGMzQnZibk5sVlZKTUFGOWZh
VzF3WDE5cgpRMFpUZEhKbFlXMVFjbTl3WlhKMGVVTlBUazVGUTFSU1pYTndiMjV6WlFBL2QydERR
VWx0WVdkbFVYVmxkV1ZEY21WaGRHVkFRRmxCClVFRlZYME5CU1cxaFoyVlJkV1YxWlVCQVNVbEpR
Rm9BWDE5cGJYQmZYME5CU1cxaFoyVlJkV1YxWlVOeVpXRjBaUUEvZDJ0RFFVbHQKWVdkbFVYVmxk
V1ZUWlhSVGFYcGxRRUJaUVZoUVFWVmZRMEZKYldGblpWRjFaWFZsUUVCSlNVQmFBRjlmYVcxd1gx
OURRVWx0WVdkbApVWFZsZFdWVFpYUlRhWHBsQUQ5M2EwTkJTVzFoWjJWUmRXVjFaVWRsZEZkcFpI
Um9RRUJaUVVsUVFWVmZRMEZKYldGblpWRjFaWFZsClFFQkFXZ0JmWDJsdGNGOWZRMEZKYldGblpW
RjFaWFZsUjJWMFYybGtkR2dBUDNkclEwRkpiV0ZuWlZGMVpYVmxSMlYwU0dWcFoyaDAKUUVCWlFV
bFFRVlZmUTBGSmJXRm5aVkYxWlhWbFFFQkFXZ0JmWDJsdGNGOWZRMEZKYldGblpWRjFaWFZsUjJW
MFNHVnBaMmgwQUQ5MwphME5CU1cxaFoyVlJkV1YxWlVkbGRFTmhjR0ZqYVhSNVFFQlpRVWxRUVZW
ZlEwRkpiV0ZuWlZGMVpYVmxRRUJBV2dCZlgybHRjRjlmClEwRkpiV0ZuWlZGMVpYVmxSMlYwUTJG
d1lXTnBkSGtBUDNkclEwRkpiV0ZuWlZGMVpYVmxTVzUyWVd4cFpHRjBaVUJBV1VGWVVFRlYKWDBO
QlNXMWhaMlZSZFdWMVpVQkFRRm9BWDE5cGJYQmZYME5CU1cxaFoyVlJkV1YxWlVsdWRtRnNhV1Jo
ZEdVQVAzZHJRMEZKYldGbgpaVkYxWlhWbFJteDFjMmhBUUZsQldGQkJWVjlEUVVsdFlXZGxVWFZs
ZFdWQVFFQmFBRjlmYVcxd1gxOURRVWx0WVdkbFVYVmxkV1ZHCmJIVnphQUEvZDJ0RFFVbHRZV2Rs
VVhWbGRXVkRiMnhzWldOMFFFQlpRVWxRUVZWZlEwRkpiV0ZuWlZGMVpYVmxRRUJBV2dCZlgybHQK
Y0Y5ZlEwRkpiV0ZuWlZGMVpYVmxRMjlzYkdWamRBQS9kMnREUVVsdFlXZGxVWFZsZFdWSmJuTmxj
blJKYldGblpVQkFXVUZmVGxCQgpWVjlEUVVsdFlXZGxVWFZsZFdWQVFFNUpYMHRKVURaQldFa3hV
RUZZUUZveVFGb0FYMTlwYlhCZlgwTkJTVzFoWjJWUmRXVjFaVWx1CmMyVnlkRWx0WVdkbEFEOTNh
ME5CU1cxaFoyVlJkV1YxWlZKbFoybHpkR1Z5VUdsNFpXeENkV1ptWlhKQVFGbEJYMHRRUVZWZlEw
RkoKYldGblpWRjFaWFZsUUVCUVFWaEpTVWxKU1ZCQ1ZWOWZRMFpFYVdOMGFXOXVZWEo1UUVCSlFG
b0FYMTlwYlhCZlgwTkJTVzFoWjJWUgpkV1YxWlZKbFoybHpkR1Z5VUdsNFpXeENkV1ptWlhJQVAz
ZHJRMEZKYldGblpWRjFaWFZsVTJWMFJteGhaM05BUUZsQldGQkJWVjlEClFVbHRZV2RsVVhWbGRX
VkFRRWxKUUZvQVgxOXBiWEJmWDBOQlNXMWhaMlZSZFdWMVpWTmxkRVpzWVdkekFEOTNhME5CU1cx
aFoyVlIKZFdWMVpVZGxkRVpzWVdkelFFQlpRVWxRUVZWZlEwRkpiV0ZuWlZGMVpYVmxRRUJBV2dC
ZlgybHRjRjlmUTBGSmJXRm5aVkYxWlhWbApSMlYwUm14aFozTUFQM2RyUTBGSmJXRm5aVkYxWlhW
bFIyVjBWSGx3WlVsRVFFQlpRVXRZV2dCZlgybHRjRjlmUTBGSmJXRm5aVkYxClpYVmxSMlYwVkhs
d1pVbEVBRDgvWDE5RmEwTkdWMmx1Wkc5M2MxTlRURkJsWlhKRFpYSjBRRUJaUVZoWVdnQS9QMTlm
Uld0RFJsZHAKYm1SdmQzTlRVMHhNYjJOaGJFTmxjblJBUUZsQldGaGFBRDgvWDE5RmEwTkdVM1J5
WldGdFVISnZjR1Z5ZEhsWGFXNWtiM2R6VTFOTQpRMlZ5ZEVsdVptOUFRRmxCV0ZoYUFGOXJRMFpY
YVc1a2IzZHpVMU5NVUdWbGNrTmxjblFBWDJ0RFJsTjBjbVZoYlZCeWIzQmxjblI1ClYybHVaRzkz
YzFOVFRFTmxjblJKYm1adkFGOXJRMFpYYVc1a2IzZHpVMU5NVEc5allXeERaWEowQUY5clEwWlhh
VzVrYjNkelUxTk0KVUdWbGNrTmxjblFrYVc1cGRHbGhiR2w2WlhJa0FGOXJRMFpYYVc1a2IzZHpV
MU5NVEc5allXeERaWEowSkdsdWFYUnBZV3hwZW1WeQpKQUJmYTBOR1UzUnlaV0Z0VUhKdmNHVnlk
SGxYYVc1a2IzZHpVMU5NUTJWeWRFbHVabThrYVc1cGRHbGhiR2w2WlhJa0FBPT0KCkluZGV4OiBX
ZWJLaXRMaWJyYXJpZXMvd2luL2xpYi9XZWJLaXRTeXN0ZW1JbnRlcmZhY2VfZGVidWcubGliCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2
bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KCklUeGhjbU5vUGdvdklDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnTVRJM05EWTJNamt4TUNBZ0lDQWdJQ0FnSUNBZ0lDQWdNQ0FnSUNBZ0lD
QXkKT1RBMklDQWdJQ0FnWUFvQUFBQTVBQUFYVEFBQUYwd0FBQmRNQUFBWFRBQUFGMHdBQUJkTUFB
QVhUQUFBRjB3QUFCZE1BQUFYVEFBQQpGMHdBQUJkTUFBQVhUQUFBRjB3QUFCZE1BQUFYVEFBQUYw
d0FBQmRNQUFBWFRBQUFGMHdBQUJkTUFBQVhUQUFBRjB3QUFCZE1BQUFYClRBQUFGMHdBQUJkTUFB
QVhUQUFBRjB3QUFCZE1BQUFYVEFBQUYwd0FBQmRNQUFBWFRBQUFGMHdBQUJkTUFBQVhUQUFBRjB3
QUFCZE0KQUFBWFRBQUFGMHdBQUJkTUFBQVhUQUFBRjB3QUFCZE1BQUFYVEFBQUYwd0FBQmRNQUFB
WFRBQUFGMHdBQUJkTUFBQVhUQUFBRjB3QQpBQmRNQUFBWFRBQUFGMHdBQUJkTVAyWmhZbk5BUUZs
QlRVMUFXZ0EvZDJ0RFFVbHRZV2RsVVhWbGRXVkRiMnhzWldOMFFFQlpRVWxRClFWVmZRMEZKYldG
blpWRjFaWFZsUUVCQVdnQS9kMnREUVVsdFlXZGxVWFZsZFdWRGNtVmhkR1ZBUUZsQlVFRlZYME5C
U1cxaFoyVlIKZFdWMVpVQkFTVWxKUUZvQVAzZHJRMEZKYldGblpWRjFaWFZsUm14MWMyaEFRRmxC
V0ZCQlZWOURRVWx0WVdkbFVYVmxkV1ZBUUVCYQpBRDkzYTBOQlNXMWhaMlZSZFdWMVpVZGxkRU5o
Y0dGamFYUjVRRUJaUVVsUVFWVmZRMEZKYldGblpWRjFaWFZsUUVCQVdnQS9kMnREClFVbHRZV2Rs
VVhWbGRXVkhaWFJHYkdGbmMwQkFXVUZKVUVGVlgwTkJTVzFoWjJWUmRXVjFaVUJBUUZvQVAzZHJR
MEZKYldGblpWRjEKWlhWbFIyVjBTR1ZwWjJoMFFFQlpRVWxRUVZWZlEwRkpiV0ZuWlZGMVpYVmxR
RUJBV2dBL2QydERRVWx0WVdkbFVYVmxkV1ZIWlhSVQplWEJsU1VSQVFGbEJTMWhhQUQ5M2EwTkJT
VzFoWjJWUmRXVjFaVWRsZEZkcFpIUm9RRUJaUVVsUVFWVmZRMEZKYldGblpWRjFaWFZsClFFQkFX
Z0EvZDJ0RFFVbHRZV2RsVVhWbGRXVkpibk5sY25SSmJXRm5aVUJBV1VGZlRsQkJWVjlEUVVsdFlX
ZGxVWFZsZFdWQVFFNUoKWDB0SlVEWkJXRWt4VUVGWVFGb3lRRm9BUDNkclEwRkpiV0ZuWlZGMVpY
VmxTVzUyWVd4cFpHRjBaVUJBV1VGWVVFRlZYME5CU1cxaApaMlZSZFdWMVpVQkFRRm9BUDNkclEw
RkpiV0ZuWlZGMVpYVmxVbVZuYVhOMFpYSlFhWGhsYkVKMVptWmxja0JBV1VGZlMxQkJWVjlEClFV
bHRZV2RsVVhWbGRXVkFRRkJCV0VsSlNVbEpVRUpWWDE5RFJrUnBZM1JwYjI1aGNubEFRRWxBV2dB
L2QydERRVWx0WVdkbFVYVmwKZFdWVFpYUkdiR0ZuYzBCQVdVRllVRUZWWDBOQlNXMWhaMlZSZFdW
MVpVQkFTVWxBV2dBL2QydERRVWx0WVdkbFVYVmxkV1ZUWlhSVAphWHBsUUVCWlFWaFFRVlZmUTBG
SmJXRm5aVkYxWlhWbFFFQkpTVUJhQUQ5M2EwTkdUbVYwZDI5eWEwVnljbTl5UjJWMFRHOWpZV3hw
CmVtVmtSR1Z6WTNKcGNIUnBiMjVBUUZsQlVFSlZYMTlEUmxOMGNtbHVaMEJBU2tCYUFEOTNhME5H
VlZKTVVtVnhkV1Z6ZEVOdmNIbEkKVkZSUVVtVnhkV1Z6ZEVKdlpIbFFZWEowYzBCQVdVRlFRbFZm
WDBOR1FYSnlZWGxBUUZCQ1ZWOURSbFZTVEZKbGNYVmxjM1JBUUVCYQpBRDkzYTBOR1ZWSk1VbVZ4
ZFdWemRGTmxkRWhVVkZCU1pYRjFaWE4wUW05a2VWQmhjblJ6UUVCWlFWaFFRVlZmUTBaVlVreFNa
WEYxClpYTjBRRUJRUWxWZlgwTkdRWEp5WVhsQVFFQmFBRDkzYTBOdmNIbERUMDVPUlVOVVVISnZl
SGxTWlhOd2IyNXpaVUJBV1VGUVFWVmYKWDBOR1NGUlVVRTFsYzNOaFoyVkFRRkJCVlY5ZlEwWlNa
V0ZrVTNSeVpXRnRRRUJRUWxWZlgwTkdWVkpNUUVCQVdnQS9kMnREYjNCNQpRM0psWkdWdWRHbGhi
RVp5YjIxRFJsQmxjbk5wYzNSbGJuUlRkRzl5WVdkbFFFQlpRVkJCVlY5RFJsVlNURU55WldSbGJu
UnBZV3hBClFGQkJWVjlEUmxWU1RGQnliM1JsWTNScGIyNVRjR0ZqWlVCQVFGb0FQM2RyUTI5d2VV
WnZkVzVrWVhScGIyNURZV05vWlVScGNtVmoKZEc5eWVVQkFXVUZRUWxWZlgwTkdVM1J5YVc1blFF
QllXZ0EvZDJ0RWNtRjNSbTlqZFhOU2FXNW5RRUJaUVZoUVFWVkRSME52Ym5SbAplSFJBUUZCQlZV
TkhRMjlzYjNKQVFFMUFXZ0EvZDJ0SFpYUkVaV1poZFd4MFNGUlVVRU52YjJ0cFpWTjBiM0poWjJW
QVFGbEJVRUZWClQzQmhjWFZsUTBaSVZGUlFRMjl2YTJsbFUzUnZjbUZuWlVCQVdGb0FQM2RyUjJW
MFJtOXVkRk50YjI5MGFHbHVaME52Ym5SeVlYTjAKUUVCWlFVMVlXZ0EvZDJ0SFpYUkdiMjUwVTIx
dmIzUm9hVzVuVEdWMlpXeEFRRmxCU0ZoYUFEOTNhMGRsZEVkc2VYQm9RV1IyWVc1agpaWE5BUUZs
QldGQkJWVU5IUm05dWRFQkFRVUpWUTBkQlptWnBibVZVY21GdWMyWnZjbTFBUUY5T01rZEJRVlZE
UjFOcGVtVkFRRUJhCkFEOTNhMGRsZEVkc2VYQm9jMEJBV1VGWVVFRlZRMGRHYjI1MFFFQlJRbDlY
VVVGSFNVQmFBRDkzYTBkbGRGTlRURU5sY25ScFptbGoKWVhSbFNXNW1iMEJBV1VGUVFsVmZYME5H
UkdsamRHbHZibUZ5ZVVCQVVFRlZYME5HVlZKTVVtVnpjRzl1YzJWQVFFQmFBRDkzYTBkbApkRk5U
VEZCbFpYSkRaWEowYVdacFkyRjBaVVJoZEdGQVFGbEJVRUZZVUVKVlgxOURSa1JwWTNScGIyNWhj
bmxBUUVCYUFEOTNhMGRsCmRGVnpaWEpVYjBKaGMyVkRWRTFBUUZsQlAwRlZRMGRCWm1acGJtVlVj
bUZ1YzJadmNtMUFRRkJCVlVOSFEyOXVkR1Y0ZEVCQVFGb0EKUDNkclNXNXBkR2xoYkdsNlpVMWhl
R2x0ZFcxSVZGUlFRMjl1Ym1WamRHbHZia052ZFc1MFVHVnlTRzl6ZEVCQVdVRkpTVUJhQUQ5Mwph
MUpsYzNSdmNtVkdiMjUwVTIxdmIzUm9hVzVuVTNSNWJHVkFRRmxCV0ZCQlZVTkhRMjl1ZEdWNGRF
QkFTVUJhQUQ5M2ExTmxkRU5HClZWSk1VbVZ4ZFdWemRGTm9iM1ZzWkVOdmJuUmxiblJUYm1sbVpr
QkFXVUZZVUVGVlgwTkdWVkpNVW1WeGRXVnpkRUJBWDA1QVdnQS8KZDJ0VFpYUkRSME52Ym5SbGVI
UkdiMjUwVW1WdVpHVnlhVzVuVTNSNWJHVkFRRmxCV0ZCQlZVTkhRMjl1ZEdWNGRFQkFYMDR4TVVC
YQpBRDkzYTFObGRFTlBUazVGUTFSUWNtOTRlVUYxZEdodmNtbDZZWFJwYjI1R2IzSlRkSEpsWVcx
QVFGbEJXRkJCVlY5ZlEwWlNaV0ZrClUzUnlaV0Z0UUVCUVFsVmZYME5HVTNSeWFXNW5RRUJBV2dB
L2QydFRaWFJEVDA1T1JVTlVVSEp2ZUhsR2IzSlRkSEpsWVcxQVFGbEIKV0ZCQlZWOWZRMFpTWldG
a1UzUnlaV0Z0UUVCUVFsVmZYME5HVTNSeWFXNW5RRUJRUWxWZlgwTkdUblZ0WW1WeVFFQkFXZ0Ev
ZDJ0VApaWFJEYkdsbGJuUkRaWEowYVdacFkyRjBaVWx1VTFOTVVISnZjR1Z5ZEdsbGMwQkFXVUZZ
VUVGVlgxOURSa1JwWTNScGIyNWhjbmxBClFGQkNWVjlmUTBaRVlYUmhRRUJBV2dBL2QydFRaWFJH
YjI1MFUyMXZiM1JvYVc1blEyOXVkSEpoYzNSQVFGbEJXRTFBV2dBL2QydFQKWlhSR2IyNTBVMjF2
YjNSb2FXNW5UR1YyWld4QVFGbEJXRWhBV2dBL2QydFRaWFJHYjI1MFUyMXZiM1JvYVc1blUzUjVi
R1ZBUUZsQgpTVkJCVlVOSFEyOXVkR1Y0ZEVCQVgwNUFXZ0EvZDJ0VFpYUlFZWFIwWlhKdVFtRnpa
VU5VVFVCQVdVRllVRUZWUTBkRGIyNTBaWGgwClFFQlZRMGRCWm1acGJtVlVjbUZ1YzJadmNtMUFR
RUJhQUQ5M2ExTmxkRkJoZEhSbGNtNVFhR0Z6WlVsdVZYTmxjbE53WVdObFFFQloKUVZoUVFWVkRS
ME52Ym5SbGVIUkFRRlZEUjFCdmFXNTBRRUJBV2dBL2QydFRaWFJWY0VadmJuUkRZV05vWlVCQVdV
RllTVUJhQUQ5MwphMU41YzNSbGJVWnZiblJUYlc5dmRHaHBibWREYUdGdVoyVmtRRUJaUVZoWVdn
QmZYM0psWVd4QU1EQXdNREF3TURBQVgxOXlaV0ZzClFEQXdNREF3TURBd01EQXdNREF3TURBQVgx
OXlaV0ZzUURObU9EQXdNREF3QUY5ZmNtVmhiRUF6Wm1JNU9UazVPV0V3TURBd01EQXcKQUY5ZmNt
VmhiRUF6Wm1Vd01EQXdNREF3TURBd01EQXdBRjlmY21WaGJFQXpabVl3TURBd01EQXdNREF3TURB
d0FGOWZjbVZoYkVBMApNREF3TURBd01BQmZYM0psWVd4QU5EQXdNalkyTmpZMk1EQXdNREF3TUFC
ZlgzSmxZV3hBTkRBMlptVXdNREF3TURBd01EQXdNQUJmClgzSmxZV3hBTkRBNFpqUXdNREF3TURB
d01EQXdNQUJmWDNKbFlXeEFZbVptTURBd01EQXdNREF3TURBd01BQmZZMlZwYkdZQVgyWmgKWW5O
bUFGOXdiM2RtQUM4Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0F4TWpjME5qWXlPVEV3SUNBZ0lDQWdJQ0Fn
SUNBZ0lDQXdJQ0FnSUNBZwpJREk0TURBZ0lDQWdJQ0JnQ2dFQUFBQk1Gd0FBT1FBQUFBRUFBUUFC
QUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBCkFRQUJBQUVBQVFBQkFBRUFBUUFC
QUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUIK
QUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBRDltWVdKelFFQlpRVTFOUUZvQVAzZHJR
MEZKYldGblpWRjFaWFZsUTI5cwpiR1ZqZEVCQVdVRkpVRUZWWDBOQlNXMWhaMlZSZFdWMVpVQkFR
Rm9BUDNkclEwRkpiV0ZuWlZGMVpYVmxRM0psWVhSbFFFQlpRVkJCClZWOURRVWx0WVdkbFVYVmxk
V1ZBUUVsSlNVQmFBRDkzYTBOQlNXMWhaMlZSZFdWMVpVWnNkWE5vUUVCWlFWaFFRVlZmUTBGSmJX
Rm4KWlZGMVpYVmxRRUJBV2dBL2QydERRVWx0WVdkbFVYVmxkV1ZIWlhSRFlYQmhZMmwwZVVCQVdV
RkpVRUZWWDBOQlNXMWhaMlZSZFdWMQpaVUJBUUZvQVAzZHJRMEZKYldGblpWRjFaWFZsUjJWMFJt
eGhaM05BUUZsQlNWQkJWVjlEUVVsdFlXZGxVWFZsZFdWQVFFQmFBRDkzCmEwTkJTVzFoWjJWUmRX
VjFaVWRsZEVobGFXZG9kRUJBV1VGSlVFRlZYME5CU1cxaFoyVlJkV1YxWlVCQVFGb0FQM2RyUTBG
SmJXRm4KWlZGMVpYVmxSMlYwVkhsd1pVbEVRRUJaUVV0WVdnQS9kMnREUVVsdFlXZGxVWFZsZFdW
SFpYUlhhV1IwYUVCQVdVRkpVRUZWWDBOQgpTVzFoWjJWUmRXVjFaVUJBUUZvQVAzZHJRMEZKYldG
blpWRjFaWFZsU1c1elpYSjBTVzFoWjJWQVFGbEJYMDVRUVZWZlEwRkpiV0ZuClpWRjFaWFZsUUVC
T1NWOUxTVkEyUVZoSk1WQkJXRUJhTWtCYUFEOTNhME5CU1cxaFoyVlJkV1YxWlVsdWRtRnNhV1Jo
ZEdWQVFGbEIKV0ZCQlZWOURRVWx0WVdkbFVYVmxkV1ZBUUVCYUFEOTNhME5CU1cxaFoyVlJkV1Yx
WlZKbFoybHpkR1Z5VUdsNFpXeENkV1ptWlhKQQpRRmxCWDB0UVFWVmZRMEZKYldGblpWRjFaWFZs
UUVCUVFWaEpTVWxKU1ZCQ1ZWOWZRMFpFYVdOMGFXOXVZWEo1UUVCSlFGb0FQM2RyClEwRkpiV0Zu
WlZGMVpYVmxVMlYwUm14aFozTkFRRmxCV0ZCQlZWOURRVWx0WVdkbFVYVmxkV1ZBUUVsSlFGb0FQ
M2RyUTBGSmJXRm4KWlZGMVpYVmxVMlYwVTJsNlpVQkFXVUZZVUVGVlgwTkJTVzFoWjJWUmRXVjFa
VUJBU1VsQVdnQS9kMnREUms1bGRIZHZjbXRGY25Kdgpja2RsZEV4dlkyRnNhWHBsWkVSbGMyTnlh
WEIwYVc5dVFFQlpRVkJDVlY5ZlEwWlRkSEpwYm1kQVFFcEFXZ0EvZDJ0RFJsVlNURkpsCmNYVmxj
M1JEYjNCNVNGUlVVRkpsY1hWbGMzUkNiMlI1VUdGeWRITkFRRmxCVUVKVlgxOURSa0Z5Y21GNVFF
QlFRbFZmUTBaVlVreFMKWlhGMVpYTjBRRUJBV2dBL2QydERSbFZTVEZKbGNYVmxjM1JUWlhSSVZG
UlFVbVZ4ZFdWemRFSnZaSGxRWVhKMGMwQkFXVUZZVUVGVgpYME5HVlZKTVVtVnhkV1Z6ZEVCQVVF
SlZYMTlEUmtGeWNtRjVRRUJBV2dBL2QydERiM0I1UTA5T1RrVkRWRkJ5YjNoNVVtVnpjRzl1CmMy
VkFRRmxCVUVGVlgxOURSa2hVVkZCTlpYTnpZV2RsUUVCUVFWVmZYME5HVW1WaFpGTjBjbVZoYlVC
QVVFSlZYMTlEUmxWU1RFQkEKUUZvQVAzZHJRMjl3ZVVOeVpXUmxiblJwWVd4R2NtOXRRMFpRWlhK
emFYTjBaVzUwVTNSdmNtRm5aVUJBV1VGUVFWVmZRMFpWVWt4RApjbVZrWlc1MGFXRnNRRUJRUVZW
ZlEwWlZVa3hRY205MFpXTjBhVzl1VTNCaFkyVkFRRUJhQUQ5M2EwTnZjSGxHYjNWdVpHRjBhVzl1
ClEyRmphR1ZFYVhKbFkzUnZjbmxBUUZsQlVFSlZYMTlEUmxOMGNtbHVaMEJBV0ZvQVAzZHJSSEpo
ZDBadlkzVnpVbWx1WjBCQVdVRlkKVUVGVlEwZERiMjUwWlhoMFFFQlFRVlZEUjBOdmJHOXlRRUJO
UUZvQVAzZHJSMlYwUkdWbVlYVnNkRWhVVkZCRGIyOXJhV1ZUZEc5eQpZV2RsUUVCWlFWQkJWVTl3
WVhGMVpVTkdTRlJVVUVOdmIydHBaVk4wYjNKaFoyVkFRRmhhQUQ5M2EwZGxkRVp2Ym5SVGJXOXZk
R2hwCmJtZERiMjUwY21GemRFQkFXVUZOV0ZvQVAzZHJSMlYwUm05dWRGTnRiMjkwYUdsdVoweGxk
bVZzUUVCWlFVaFlXZ0EvZDJ0SFpYUkgKYkhsd2FFRmtkbUZ1WTJWelFFQlpRVmhRUVZWRFIwWnZi
blJBUUVGQ1ZVTkhRV1ptYVc1bFZISmhibk5tYjNKdFFFQmZUakpIUVVGVgpRMGRUYVhwbFFFQkFX
Z0EvZDJ0SFpYUkhiSGx3YUhOQVFGbEJXRkJCVlVOSFJtOXVkRUJBVVVKZlYxRkJSMGxBV2dBL2Qy
dEhaWFJUClUweERaWEowYVdacFkyRjBaVWx1Wm05QVFGbEJVRUpWWDE5RFJrUnBZM1JwYjI1aGNu
bEFRRkJCVlY5RFJsVlNURkpsYzNCdmJuTmwKUUVCQVdnQS9kMnRIWlhSVFUweFFaV1Z5UTJWeWRH
bG1hV05oZEdWRVlYUmhRRUJaUVZCQldGQkNWVjlmUTBaRWFXTjBhVzl1WVhKNQpRRUJBV2dBL2Qy
dEhaWFJWYzJWeVZHOUNZWE5sUTFSTlFFQlpRVDlCVlVOSFFXWm1hVzVsVkhKaGJuTm1iM0p0UUVC
UVFWVkRSME52CmJuUmxlSFJBUUVCYUFEOTNhMGx1YVhScFlXeHBlbVZOWVhocGJYVnRTRlJVVUVO
dmJtNWxZM1JwYjI1RGIzVnVkRkJsY2todmMzUkEKUUZsQlNVbEFXZ0EvZDJ0U1pYTjBiM0psUm05
dWRGTnRiMjkwYUdsdVoxTjBlV3hsUUVCWlFWaFFRVlZEUjBOdmJuUmxlSFJBUUVsQQpXZ0EvZDJ0
VFpYUkRSbFZTVEZKbGNYVmxjM1JUYUc5MWJHUkRiMjUwWlc1MFUyNXBabVpBUUZsQldGQkJWVjlE
UmxWU1RGSmxjWFZsCmMzUkFRRjlPUUZvQVAzZHJVMlYwUTBkRGIyNTBaWGgwUm05dWRGSmxibVJs
Y21sdVoxTjBlV3hsUUVCWlFWaFFRVlZEUjBOdmJuUmwKZUhSQVFGOU9NVEZBV2dBL2QydFRaWFJE
VDA1T1JVTlVVSEp2ZUhsQmRYUm9iM0pwZW1GMGFXOXVSbTl5VTNSeVpXRnRRRUJaUVZoUQpRVlZm
WDBOR1VtVmhaRk4wY21WaGJVQkFVRUpWWDE5RFJsTjBjbWx1WjBCQVFGb0FQM2RyVTJWMFEwOU9U
a1ZEVkZCeWIzaDVSbTl5ClUzUnlaV0Z0UUVCWlFWaFFRVlZmWDBOR1VtVmhaRk4wY21WaGJVQkFV
RUpWWDE5RFJsTjBjbWx1WjBCQVVFSlZYMTlEUms1MWJXSmwKY2tCQVFGb0FQM2RyVTJWMFEyeHBa
VzUwUTJWeWRHbG1hV05oZEdWSmJsTlRURkJ5YjNCbGNuUnBaWE5BUUZsQldGQkJWVjlmUTBaRQph
V04wYVc5dVlYSjVRRUJRUWxWZlgwTkdSR0YwWVVCQVFGb0FQM2RyVTJWMFJtOXVkRk50YjI5MGFH
bHVaME52Ym5SeVlYTjBRRUJaClFWaE5RRm9BUDNkclUyVjBSbTl1ZEZOdGIyOTBhR2x1WjB4bGRt
VnNRRUJaUVZoSVFGb0FQM2RyVTJWMFJtOXVkRk50YjI5MGFHbHUKWjFOMGVXeGxRRUJaUVVsUVFW
VkRSME52Ym5SbGVIUkFRRjlPUUZvQVAzZHJVMlYwVUdGMGRHVnlia0poYzJWRFZFMUFRRmxCV0ZC
QgpWVU5IUTI5dWRHVjRkRUJBVlVOSFFXWm1hVzVsVkhKaGJuTm1iM0p0UUVCQVdnQS9kMnRUWlhS
UVlYUjBaWEp1VUdoaGMyVkpibFZ6ClpYSlRjR0ZqWlVCQVdVRllVRUZWUTBkRGIyNTBaWGgwUUVC
VlEwZFFiMmx1ZEVCQVFGb0FQM2RyVTJWMFZYQkdiMjUwUTJGamFHVkEKUUZsQldFbEFXZ0EvZDJ0
VGVYTjBaVzFHYjI1MFUyMXZiM1JvYVc1blEyaGhibWRsWkVCQVdVRllXRm9BWDE5eVpXRnNRREF3
TURBdwpNREF3QUY5ZmNtVmhiRUF3TURBd01EQXdNREF3TURBd01EQXdBRjlmY21WaGJFQXpaamd3
TURBd01BQmZYM0psWVd4QU0yWmlPVGs1Ck9UbGhNREF3TURBd01BQmZYM0psWVd4QU0yWmxNREF3
TURBd01EQXdNREF3TUFCZlgzSmxZV3hBTTJabU1EQXdNREF3TURBd01EQXcKTUFCZlgzSmxZV3hB
TkRBd01EQXdNREFBWDE5eVpXRnNRRFF3TURJMk5qWTJOakF3TURBd01EQUFYMTl5WldGc1FEUXdO
bVpsTURBdwpNREF3TURBd01EQUFYMTl5WldGc1FEUXdPR1kwTURBd01EQXdNREF3TURBQVgxOXla
V0ZzUUdKbVpqQXdNREF3TURBd01EQXdNREFBClgyTmxhV3htQUY5bVlXSnpaZ0JmY0c5M1pnQXZM
eUFnSUNBZ0lDQWdJQ0FnSUNBZ01USTNORFkyTWpreE1DQWdJQ0FnSUNBZ0lDQWcKSUNBZ01DQWdJ
Q0FnSUNBM01DQWdJQ0FnSUNBZ1lBb3VMbHd1TGx4Q2RXbHNaRnh2WW1wY1YyVmlTMmwwVTNsemRH
VnRTVzUwWlhKbQpZV05sWEVSbFluVm5YRmRsWWt0cGRGTjVjM1JsYlVsdWRHVnlabUZqWlM1dllt
b0FMekFnSUNBZ0lDQWdJQ0FnSUNBZ0lERXlOelEyCk5qSTVNRGtnSUNBZ0lDQWdJQ0FnSUNBZ0lE
RXdNRFkyTmlBZ09EWTNOVFFnSUNBZ0lHQUtUQUVtQVAzUCtVdjVJd0VBTVFFQUFBQUEKQUFBdVpI
SmxZM1IyWlFBQUFBQUFBQUFBOWdBQUFBUUdBQUFBQUFBQUFBQUFBQUFBQUFBQUNoQUFMbVJsWW5W
bkpGTUFBQUFBQUFBQQpBTERJQUFENkJnQUFxczhBQUFBQUFBQnZBZ0FBUUFBUVFpNXlaR0YwWVFB
QUFBQUFBQUFBQUFBRUFRQUFBT2dBQUFBQUFBQUFBQUFBCkFBQUFBRUFBTUVBdVpHRjBZUUFBQUFB
QUFBQUFBQUFBREFBQUFBVHBBQUFBQUFBQUFBQUFBQUFBQUFCQUFEREFMblJsZUhRQUFBQUEKQUFB
QUFBQUFBQzBnQUFBUTZRQUFQUWtCQUFBQUFBQ1hBUUFBSUFCUVlDNXlkR01rVkUxYUFBQUFBQUFB
QUFBRUFBQUFJeGtCQUNjWgpBUUFBQUFBQUFRQUFBRUFRTUVBdWNuUmpKRWxOV2dBQUFBQUFBQUFB
QkFBQUFERVpBUUExR1FFQUFBQUFBQUVBQUFCQUVEQkFMbUp6CmN3QUFBQUFBQUFBQUFBQUFBQmdB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBd3dDNXlaR0YwWVFBQUFBQUFBQUFBQUFBSUFBQUEK
UHhrQkFBQUFBQUFBQUFBQUFBQUFBRUFRUUVBdWNtUmhkR0VBQUFBQUFBQUFBQUFBQ0FBQUFFY1pB
UUFBQUFBQUFBQUFBQUFBQUFCQQpFRUJBTG5Ka1lYUmhBQUFBQUFBQUFBQUFBQWdBQUFCUEdRRUFB
QUFBQUFBQUFBQUFBQUFBUUJCQVFDNXlaR0YwWVFBQUFBQUFBQUFBCkFBQUlBQUFBVnhrQkFBQUFB
QUFBQUFBQUFBQUFBRUFRUUVBdWNtUmhkR0VBQUFBQUFBQUFBQUFBQkFBQUFGOFpBUUFBQUFBQUFB
QUEKQUFBQUFBQkFFREJBTG5Ka1lYUmhBQUFBQUFBQUFBQUFBQWdBQUFCakdRRUFBQUFBQUFBQUFB
QUFBQUFBUUJCQVFDNXlaR0YwWVFBQQpBQUFBQUFBQUFBQVFBQUFBYXhrQkFBQUFBQUFBQUFBQUFB
QUFBRUFRTUVBdVpHRjBZUUFBQUFBQUFBQUFBQUFBQkFBQUFIc1pBUUFBCkFBQUFBQUFBQUFBQUFB
QkFFRERBTG1SaGRHRUFBQUFBQUFBQUFBQUFBQVFBQUFCL0dRRUFBQUFBQUFBQUFBQUFBQUFBUUJB
d3dDNTAKWlhoMEFBQUFBQUFBQUFBQUFBQTVBQUFBZ3hrQkFMd1pBUUFBQUFBQUFnQUFBQ0FRVUdB
dVpHVmlkV2NrVXdBQUFBQUFBQUFBekFBQQpBTkFaQVFDY0dnRUFBQUFBQUFVQUFBQkFFQkJDTG5S
bGVIUUFBQUFBQUFBQUFBQUFBQnNBQUFET0dnRUE2Um9CQUFBQUFBQUNBQUFBCklCQlFZQzVrWldK
MVp5UlRBQUFBQUFBQUFBREFBQUFBL1JvQkFMMGJBUUFBQUFBQUJRQUFBRUFRRUVJdWRHVjRkQUFB
QUFBQUFBQUEKQUFBQU1BQUFBTzhiQVFBZkhBRUFBQUFBQUFJQUFBQWdFRkJnTG1SbFluVm5KRk1B
QUFBQUFBQUFBTUFBQUFBekhBRUE4eHdCQUFBQQpBQUFGQUFBQVFCQVFRaTV5WkdGMFlRQUFBQUFB
QUFBQUFBQUlBQUFBSlIwQkFBQUFBQUFBQUFBQUFBQUFBRUFRUUVBdWNtUmhkR0VBCkFBQUFBQUFB
QUFBQUNBQUFBQzBkQVFBQUFBQUFBQUFBQUFBQUFBQkFFRUJBTG5Ka1lYUmhBQUFBQUFBQUFBQUFB
QVFBQUFBMUhRRUEKQUFBQUFBQUFBQUFBQUFBQVFCQXdRQzV5WkdGMFlRQUFBQUFBQUFBQUFBQUVB
QUFBT1IwQkFBQUFBQUFBQUFBQUFBQUFBRUFRTUVBdQpjbVJoZEdFQUFBQUFBQUFBQUFBQUNBQUFB
RDBkQVFBQUFBQUFBQUFBQUFBQUFBQkFFRUJBTG5SbGVIUUFBQUFBQUFBQUFBQUFBRHdBCkFBQkZI
UUVBZ1IwQkFBQUFBQUFEQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBQUFBQUFBRFFBQUFBbngwQkFH
OGVBUUFBQUFBQUJ3QUEKQUVBUUVFSXVkR1Y0ZENSNVl3QUFBQUFBQUFBQUtnQUFBTFVlQVFEZkhn
RUFBQUFBQUFVQUFBQWdFRkJnTG1SbFluVm5KRk1BQUFBQQpBQUFBQU93QUFBQVJId0VBL1I4QkFB
QUFBQUFIQUFBQVFCQVFRaTUwWlhoMEpIbGpBQUFBQUFBQUFBQXFBQUFBUXlBQkFHMGdBUUFBCkFB
QUFCUUFBQUNBUVVHQXVaR1ZpZFdja1V3QUFBQUFBQUFBQTdBQUFBSjhnQVFDTElRRUFBQUFBQUFj
QUFBQkFFQkJDTG5SbGVIUWsKZVdNQUFBQUFBQUFBQUNvQUFBRFJJUUVBK3lFQkFBQUFBQUFGQUFB
QUlCQlFZQzVrWldKMVp5UlRBQUFBQUFBQUFBRDhBQUFBTFNJQgpBQ2tqQVFBQUFBQUFCd0FBQUVB
UUVFSXVRMUpVSkZoRFZRQUFBQUFBQUFBQURBQUFBRzhqQVFCN0l3RUFBQUFBQUFNQUFBQkFBREJB
CkxtUmxZblZuSkZRQUFBQUFBQUFBQUdBQUFBQ1pJd0VBQUFBQUFBQUFBQUFBQUFBQVFBQVFRaUFn
SUM5dFlXNXBabVZ6ZEdSbGNHVnUKWkdWdVkzazZJblI1Y0dVOUozZHBiak15SnlCdVlXMWxQU2RO
YVdOeWIzTnZablF1VmtNNE1DNUVaV0oxWjBOU1ZDY2dkbVZ5YzJsdgpiajBuT0M0d0xqVXdOekkz
TGpRd05UTW5JSEJ5YjJObGMzTnZja0Z5WTJocGRHVmpkSFZ5WlQwbmVEZzJKeUJ3ZFdKc2FXTkxa
WGxVCmIydGxiajBuTVdaak9HSXpZamxoTVdVeE9HVXpZaWNpSUM5RVJVWkJWVXhVVEVsQ09pSjFk
V2xrTG14cFlpSWdMMFJGUmtGVlRGUk0KU1VJNkluVjFhV1F1YkdsaUlpQXZSRVZHUVZWTVZFeEpR
am9pVFZOV1ExSlVJaUF2UkVWR1FWVk1WRXhKUWpvaVQweEVUa0ZOUlZNaQpJQVFBQUFEeEFBQUFJ
Z1lBQUZrQUFSRUFBQUFBUXpwY1VISnZhbVZqZEhOY1YyVmlTMmwwWEVKMWFXeGtYRzlpYWx4WFpX
SkxhWFJUCmVYTjBaVzFKYm5SbGNtWmhZMlZjUkdWaWRXZGNWMlZpUzJsMFUzbHpkR1Z0U1c1MFpY
Sm1ZV05sTG05aWFnREZCUllSQVNBQUFBY0EKRGdBQUFDZkdEZ0FBQUNmR1RXbGpjbTl6YjJaMElD
aFNLU0JQY0hScGJXbDZhVzVuSUVOdmJYQnBiR1Z5QUdOM1pBQmpPbHhRY205cQpaV04wYzF4WFpX
SkxhWFJjU1c1MFpYSnVZV3hjVjJWaVMybDBVM2x6ZEdWdFNXNTBaWEptWVdObFYybHVBR05zQUVN
NlhFUmxkbVZzClhFMVRWbE15TURBMVhGWkRYR0pwYmx4amJDNWxlR1VBWTIxa0FDMVBaQ0F0U1VN
NlhGQnliMnBsWTNSelhGZGxZa3RwZEZ4Q2RXbHMKWkZ4SmJtTnNkV1JsSUMxSlF6cGNRWEJ3YkdW
SmJuUmxjbTVoYkZ4SmJtTnNkV1JsSUMxSlF6cGNRWEJ3YkdWSmJuUmxjbTVoYkZ4SgpibU5zZFdS
bFhFTnZjbVZHYjNWdVpHRjBhVzl1WEU5VFdFTnZiWEJoZEdsaWFXeHBkSGxJWldGa1pYSnpJQzFK
UXpwY1FYQndiR1ZKCmJuUmxjbTVoYkZ4SmJtTnNkV1JsWEVOdmNtVkdiM1Z1WkdGMGFXOXVYRTlU
V0VOdmJYQmhkR2xpYVd4cGRIbElaV0ZrWlhKelhFZE8KVlVOdmJYQmhkR2xpYVd4cGRIa2dMVVJm
WDFkSlRqTXlYMThnTFVSWFNVNHpNaUF0UkY5RVJVSlZSeUF0UkY5TVNVSWdMVVJmVjBsTwpSRTlY
VXlBdFJGZEpUbFpGVWowd2VEVXdNU0F0UkY5WFNVNHpNbDlYU1U1T1ZEMHdlRFV3TVNBdFJGOVhT
VTR6TWw5SlJUMHdlRFl3Ck1DQXRSRjlEVWxSZlUwVkRWVkpGWDBOUVVGOVBWa1ZTVEU5QlJGOVRW
RUZPUkVGU1JGOU9RVTFGVXoweElDMUVYMTlRVWs5RVZVTlUKU1U5T1gxODlNQ0F0UkY5SVFWTmZS
VmhEUlZCVVNVOU9VejB3SUMxRVFsVkpURVJKVGtkZlYyVmlTMmwwVTNsemRHVnRTVzUwWlhKbQpZ
V05sSUMxRVgxVk9TVU5QUkVVZ0xVUlZUa2xEVDBSRklDMUhiU0F0VWxSRE1TQXRUVVFnTFVkU0xT
QXRSbTlET2x4UWNtOXFaV04wCmMxeFhaV0pMYVhSY1FuVnBiR1JjYjJKcVhGZGxZa3RwZEZONWMz
UmxiVWx1ZEdWeVptRmpaVnhFWldKMVoxd2dMVVprUXpwY1VISnYKYW1WamRITmNWMlZpUzJsMFhF
SjFhV3hrWEc5aWFseFhaV0pMYVhSVGVYTjBaVzFKYm5SbGNtWmhZMlZjUkdWaWRXZGNkbU00TUM1
dwpaR0lnTFZjMElDMVhXQ0F0WXlBdFdta2dMVlJRSUMxM1pEUXdNVGdnTFhka05EQTJPQ0F0ZDJR
ME1EazVJQzEzWkRReE1EQWdMWGRrCk5ERXlOeUF0ZDJRME1UTTRJQzEzWkRReE9EQWdMWGRrTkRF
NE9TQXRkMlEwTWpBeElDMTNaRFF5TkRRZ0xYZGtOREkxTVNBdGQyUTAKTWpjMUlDMTNaRFF5T1RF
Z0xYZGtORE13TlNBdGQyUTBNelEwSUMxM1pEUXpOVFVnTFhka05ETTRPU0F0ZDJRME5UQXpJQzEz
WkRRMQpNRFVnTFhka05EVXhNQ0F0ZDJRME5URXlJQzEzWkRRMk1UQWdMWGRrTkRjd05pQXRkMlEw
T0RBd0lDMTNaRFE1TlRFZ0xYZGtORGsxCk1pQXRkMlEwT1RrMklDMTNaRFl3TVRFZ0xYZGtOakF6
TVNBdGQyUTJNakV4SUMxM1pEWXlORFlnTFhka05qSTFOU0F0ZDJRMk16ZzMKSUMxSFV5QXRibTlz
YjJkdklDMWxjbkp2Y25KbGNHOXlkRHB4ZFdWMVpTQXRTVU02WEVSbGRtVnNYRTFUVmxNeU1EQTFY
RlpEWEdsdQpZMngxWkdVZ0xVbERPbHhFWlhabGJGeE5VMVpUTWpBd05WeFdRMXhoZEd4dFptTmNh
VzVqYkhWa1pTQXRTVU02WEVSbGRtVnNYRTFUClZsTXlNREExWEZaRFhGQnNZWFJtYjNKdFUwUkxY
R2x1WTJ4MVpHVWdMVWxET2x4RVpYWmxiRnhOVTFaVE1qQXdOVnhXUTF4UWJHRjAKWm05eWJWTkVT
MXhqYjIxdGIyNWNhVzVqYkhWa1pTQXRTVU02WEVSbGRtVnNYRTFUVmxNeU1EQTFYRk5FUzF4Mk1p
NHdYR2x1WTJ4MQpaR1VnTFVraVF6cGNSR1YyWld4Y1RXbGpjbTl6YjJaMElGTkVTM05jVjJsdVpH
OTNjMXgyTnk0d1hFbHVZMngxWkdVaUlDMUpJa002ClhFUmxkbVZzWEUxcFkzSnZjMjltZENCRWFY
SmxZM1JZSUZORVN5QW9RWFZuZFhOMElESXdNRGtwWEVsdVkyeDFaR1VpSUMxWUFITnkKWXdBdVhG
ZGxZa3RwZEZONWMzUmxiVWx1ZEdWeVptRmpaUzVqY0hBQWNHUmlBRU02WEZCeWIycGxZM1J6WEZk
bFlrdHBkRnhDZFdscwpaRnh2WW1wY1YyVmlTMmwwVTNsemRHVnRTVzUwWlhKbVlXTmxYRVJsWW5W
blhIWmpPREF1Y0dSaUFBQUFBUFVBQUFBa0FBQUFBQUFBCkFBQUFBQUNXQUFBQUdBQUFBQVFBQUFB
QUFBQUE2UzhBQUIwQUFBQUVBQUFBOFFBQUFMb0FBQUE5QUJBUkFBQUFBQUFBQUFBQUFBQUEKbGdB
QUFCMEFBQUJ1QUFBQXZ4SUFBQUFBQUFBQUFBRjNhMU5sZEVadmJuUlRiVzl2ZEdocGJtZE1aWFps
YkFBY0FCSVFHQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFOQUF3UkFBQUFBQUFB
QUFBQUFBQU5BQXdSQUFBQUFBQUFBQUFBQUFBTkFBd1JBQUFBCkFBQUFBQUFBQUFBUUFBc1JDQUFB
QUhRQUFBQnNaWFpsYkFBWUFBc1I3UC8vLzdjUkFBQnpiVzl2ZEdocGJtZFVlWEJsQUFJQUJnQUEK
QVBJQUFBQm9BQUFBQUFBQUFBQUFBQUNXQUFBQXVBVUFBQW9BQUFCY0FBQUFBQUFBQUM0QUFJQWRB
QUFBTUFBQWdDUUFBQUF4QUFDQQpLd0FBQURJQUFJQXlBQUFBTXdBQWdEa0FBQUEyQUFDQVJRQUFB
RGNBQUlCSEFBQUFPUUFBZ0ZRQUFBQTZBQUNBWFFBQUFEc0FBSUQxCkFBQUFKQUFBQUFBQUFBQUFB
QUFBQ2dBQUFBQUFBQUFBQUFBQUFBQUFBT2t2QUFBREFBQUFCQUFBQVBFQUFBQmhBQUFBUFFBUUVR
QUEKQUFBQUFBQUFBQUFBQUFvQUFBQURBQUFBQ0FBQUFNQVNBQUFBQUFBQUFBQUJkMnRIWlhSR2Iy
NTBVMjF2YjNSb2FXNW5UR1YyWld3QQpIQUFTRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBZ0FBQWdBR0FBQUFBUElBQUFBd0FBQUFBQUFBQUFBQUFBQUtBQUFBCnVBVUFBQU1BQUFBa0FB
QUFBQUFBQUQ0QUFJQURBQUFBUHdBQWdBZ0FBQUJBQUFDQTlRQUFBQ1FBQUFBQUFBQUFBQUFBQUE0
QUFBQUEKQUFBQUJBQUFBQUFBQUFEcEx3QUFBd0FBQUFRQUFBRHhBQUFBZVFBQUFFQUFFQkVBQUFB
QUFBQUFBQUFBQUFBT0FBQUFBd0FBQUF3QQpBQURCRWdBQUFBQUFBQUFBQVhkclUyVjBSbTl1ZEZO
dGIyOTBhR2x1WjBOdmJuUnlZWE4wQUJ3QUVoQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFB
QUFBSUFBQk1BQ3hFSUFBQUFRQUFBQUdOdmJuUnlZWE4wQUFJQUJnQUFBQUR5QUFBQU1BQUFBQUFB
QUFBQUFBQUEKRGdBQUFMZ0ZBQUFEQUFBQUpBQUFBQUFBQUFCREFBQ0FBd0FBQUVRQUFJQU1BQUFB
UlFBQWdQVUFBQUFrQUFBQUFBQUFBQUFBQUFBTApBQUFBQUFBQUFBQUFBQUFBQUFBQTZTOEFBQU1B
QUFBRUFBQUE4UUFBQUdRQUFBQkFBQkFSQUFBQUFBQUFBQUFBQUFBQUN3QUFBQU1BCkFBQUpBQUFB
OUJFQUFBQUFBQUFBQUFGM2EwZGxkRVp2Ym5SVGJXOXZkR2hwYm1kRGIyNTBjbUZ6ZEFBY0FCSVFB
QUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFDQUFZQThnQUFBREFBQUFBQUFBQUFB
QUFBQUFzQUFBQzRCUUFBQXdBQUFDUUFBQUFBQUFBQQpTQUFBZ0FNQUFBQkpBQUNBQ1FBQUFFb0FB
SUQxQUFBQUpBQUFBQUFBQUFBQUFBQUFWd0FBQUFBQUFBQUFBQUFBQUFBQUFPa3ZBQUFFCkFBUUFC
QUFBQVBFQUFBQ0dBQUFBUWdBUUVRQUFBQUFBQUFBQUFBQUFBRmNBQUFBRUFBQUFUUUFBQUFBU0FB
QUFBQUFBQUFBQmQydFQKZVhOMFpXMUdiMjUwVTIxdmIzUm9hVzVuUTJoaGJtZGxaQUFjQUJJUUFB
QUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFDQUFBTwpBRGtSRVFBQUFBQUFBQUM1RVFBQURn
QTVFUzRBQUFBQUFBQUF1UkVBQUFJQUJnQUFBUElBQUFCSUFBQUFBQUFBQUFBQUFBQlhBQUFBCnVB
VUFBQVlBQUFBOEFBQUFBQUFBQUtVQUFJQUVBQUFBcGdBQWdCNEFBQUNuQUFDQU93QUFBS2dBQUlC
R0FBQUFxUUFBZ0UwQUFBQ3EKQUFDQTlRQUFBQ1FBQUFBQUFBQUFBQUFBQUx3RkFBRDBBQUFBQUFB
QUFBQUFBQURwTHdBQUhRQUlBQVFBQUFEeEFBQUFaUVFBQURjQQpEeEVBQUFBQUFBQUFBQUFBQUFD
OEJRQUFIUUFBQUJJRkFBRDBFUUFBQUFBQUFBQUFBV05zWldGeVZIbHdaVU52Ym5SeVlYTjBBQndB
CkVoRDBBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFJQUFBMEFEQkVBQUFBQUFBQUFBQUFB
QUEwQURCRUFBQUFBQUFBQUFBQUEKQUEwQURCRUFBQUFBQUFBQUFBQUFBQTBBREJFQUFBQUFBQUFB
QUFBQUFBMEFEQkVBQUFBQUFBQUFBQUFBQUEwQURCRUFBQUFBQUFBQQpBQUFBQUEwQURCRUFBQUFB
QUFBQUFBQUFBQTBBREJFQUFBQUFBQUFBQUFBQUFCVUFEQkh6RVFBQUFBQUFBQUFBYVdSbGJuUnBk
SGtBCkZBQUxFWHovLy84REJBQUFiMnhrUW1sMGJXRndBQjRBQ3hINC8vLy9LQkFBQUhKbFptVnla
WEp1WTJWRGFHRnlZV04wWlhJQUV3QUwKRWVELy8vOERCQUFBYjJ4a1NFWlBUbFFBRndBTEVjai8v
Ly93RVFBQVoyeDVjR2hOWlhSeWFXTnpBQkVBQ3hHSS8vLy9JQVFBQUhCcAplR1ZzY3dBWkFBc1JX
UC8vL3lBRUFBQnlaV1psY21WdVkyVlFhWGhsYkFBU0FBd1JRQUFBQUFBQUFBQUFBR2RoYlcxaEFC
TUFDeEhzCi8vLy9kUUFBQUdOdmJuUnlZWE4wQUJFQUN4R0EvLy8vekJFQUFHSnBkRzFoY0FBU0FB
c1JZUC8vLyswUkFBQmliWEJKYm1adkFCVUEKQ3hHVS8vLy82aEVBQUdKcGRHMWhjRWx1Wm04QUdR
QU1FWFVBQUFBQUFBQUFBQUJzWVhOMFEyOXVkSEpoYzNRQUhnQUxFVmYvLy84ZwpBQUFBZDJocGRH
VlNaV1psY21WdVkyVldZV3gxWlFBTkFBc1I1UC8vLzdzUkFBQmtZd0FWQUFNUkFBQUFBQUFBQUFE
QUFnQUFRUUlBCkFBQUFBQXdBQ3hGUS8vLy9kUUFBQUdrQUZRQURFUUFBQUFBQUFBQUFpUUFBQUhJ
Q0FBQUFBQUFNQUFzUlRQLy8vM1VBQUFCcUFBSUEKQmdBVkFBTVJBQUFBQUFBQUFBQjJBUUFBQndN
QUFBQUFBQk1BQ3hGRS8vLy9RQUFBQUcxcGJrUmxiSFJoQUI0QUN4RkwvLy8vSUFBQQpBR0pzWVdO
clVtVm1aWEpsYm1ObFZtRnNkV1VBRlFBREVRQUFBQUFBQUFBQUNnRUFBSE1EQUFBQUFBQU1BQXNS
UVAvLy8wQUFBQUJuCkFCVUFBeEVBQUFBQUFBQUFBTmdBQUFDZ0F3QUFBQUFBRUFBTEVUei8vLzlB
QUFBQVpHVnNkR0VBQWdBR0FBSUFCZ0FDQUFZQUFnQUcKQUE0QU9SRXlBQUFBQUFBQUFMa1JBQUFP
QURrUlpnQUFBQUFBQUFDOUVRQUFEZ0E1RVhvQUFBQUFBQUFBd3hFQUFBNEFPUkdPQUFBQQpBQUFB
QU1FUkFBQU9BRGtSdFFBQUFBQUFBQURLRVFBQURnQTVFVlFCQUFBQUFBQUEwaEVBQUE0QU9SRnVB
UUFBQUFBQUFNRVJBQUFPCkFEa1JrQUVBQUFBQUFBRFZFUUFBRGdBNUViNEJBQUFBQUFBQTF4RUFB
QTRBT1JIVEFRQUFBQUFBQU5rUkFBQU9BRGtSNndFQUFBQUEKQUFEYkVRQUFEZ0E1RVFBQ0FBQUFB
QUFBMnhFQUFBNEFPUkVqQWdBQUFBQUFBT0lSQUFBT0FEa1JGUU1BQUFBQUFBRGJFUUFBRGdBNQpF
UzBEQUFBQUFBQUEyeEVBQUE0QU9SRlFBd0FBQUFBQUFPSVJBQUFPQURrUnNRUUFBQUFBQUFEQkVR
QUFEZ0E1RWNnRUFBQUFBQUFBCndSRUFBQTRBT1JIYkJBQUFBQUFBQU9RUkFBQU9BRGtSN2dRQUFB
QUFBQURsRVFBQUFnQUdBQUFBQVBJQUFBRHdBUUFBQUFBQUFBQUEKQUFDOEJRQUF1QVVBQURzQUFB
RGtBUUFBQUFBQUFFMEFBSUFkQUFBQVRnQUFnQ01BQUFCVEFBQ0FUZ0FBQUZRQUFJQlpBQUFBVmdB
QQpnR0lBQUFCWUFBQ0FkZ0FBQUZvQUFJQ2VBQUFBWGdBQWdNY0FBQUJmQUFDQTl3QUFBR0lBQUlE
K0FBQUFZd0FBZ0FRQkFBQmtBQUNBCkN3RUFBR1VBQUlBU0FRQUFaZ0FBZ0JrQkFBQm5BQUNBSUFF
QUFHZ0FBSUFuQVFBQWFRQUFnQzBCQUFCcUFBQ0FOUUVBQUdzQUFJQTcKQVFBQWJBQUFnRUlCQUFC
dkFBQ0FaQUVBQUhBQUFJQ0JBUUFBY3dBQWdKMEJBQUIwQUFDQXRnRUFBSFlBQUlETEFRQUFkd0FB
Z09BQgpBQUI1QUFDQStBRUFBSG9BQUlBTkFnQUFld0FBZ0RBQ0FBQjlBQUNBT2dJQUFINEFBSUJC
QWdBQWZ3QUFnSGdDQUFDQUFBQ0FvUUlBCkFJRUFBSURBQWdBQWhBQUFnTnNDQUFDRkFBQ0E5d0lB
QUlZQUFJRDVBZ0FBaUFBQWdQc0NBQUNKQUFDQUFBTUFBSXNBQUlBTkF3QUEKakFBQWdDSURBQUNO
QUFDQU9nTUFBSTRBQUlCZEF3QUFqd0FBZ0dzREFBQ1JBQUNBY3dNQUFKSUFBSUNtQXdBQWt3QUFn
RXNFQUFDVQpBQUNBWUFRQUFKVUFBSUJzQkFBQWxnQUFnSGdFQUFDWEFBQ0FmUVFBQUpnQUFJQi9C
QUFBbWdBQWdLUUVBQUNjQUFDQXZnUUFBSjBBCkFJRFZCQUFBbmdBQWdPZ0VBQUNmQUFDQSt3UUFB
S0VBQUlBQkJRQUFvZ0FBZ1BVQUFBQWtBQUFBQUFBQUFBQUFBQUJ5QUFBQUJBQUEKQUFnQUFBQUFB
QUFBNlM4QUFBd0FCQUFFQUFBQThRQUFBTmtBQUFBOUFCQVJBQUFBQUFBQUFBQUFBQUFBY2dBQUFB
d0FBQUJqQUFBQQp3aElBQUFBQUFBQUFBQUYzYTFObGRFWnZiblJUYlc5dmRHaHBibWRUZEhsc1pR
QWNBQklRQkFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBCkFBQUFBQUFDQUFBVUFBc1JDQUFBQVBZUkFB
QmpaME52Ym5SbGVIUUFIZ0FMRVF3QUFBQXdBQUFBWm05dWRFRnNiRzkzYzFOdGIyOTAKYUdsdVp3
QWdBQXNSL1AvLy8zVUFBQUJ2YkdSR2IyNTBVMjF2YjNSb2FXNW5VM1I1YkdVQURnQTVFUmtBQUFB
QUFBQUEvQkVBQUE0QQpPUkUyQUFBQUFBQUFBUDBSQUFBQ0FBWUFBQUFBOGdBQUFGQUFBQUFBQUFB
QUFBQUFBSElBQUFDNEJRQUFCd0FBQUVRQUFBQUFBQUFBCnRnQUFnQXdBQUFDM0FBQ0FFd0FBQUxn
QUFJQXdBQUFBdVFBQWdFa0FBQUM2QUFDQVlBQUFBTHdBQUlCakFBQUF2UUFBZ1BVQUFBQWsKQUFB
QUFBQUFBQUFBQUFCaUFBQUFBQUFBQUF3QUFBQUFBQUFBNlM4QUFBUUFCQUFFQUFBQThRQUFBTjhB
QUFBN0FBOFJBQUFBQUFBQQpBQUFBQUFBQVlnQUFBQVFBQUFCWUFBQUEveEVBQUFBQUFBQUFBQUZ6
WlhSR2IyNTBVMjF2YjNSb2FXNW5VM1I1YkdVQUhBQVNFQUFBCkFBQUFBQUFBQUFBQUFBUUFBQUFB
QUFBQUFBQUFBZ0FBRkFBTEVRZ0FBQUQyRVFBQVkyZERiMjUwWlhoMEFCZ0FDeEVNQUFBQWRRQUEK
QUhOdGIyOTBhR2x1WjFSNWNHVUFIZ0FMRVJBQUFBQXdBQUFBWm05dWRFRnNiRzkzYzFOdGIyOTBh
R2x1WndBT0FEa1JGQUFBQUFBQQpBQUQ0RVFBQURnQTVFUzRBQUFBQUFBQUEraEVBQUE0QU9SRklB
QUFBQUFBQUFQZ1JBQUFDQUFZQUFQSUFBQUJRQUFBQUFBQUFBQUFBCkFBQmlBQUFBdUFVQUFBY0FB
QUJFQUFBQUFBQUFBSzBBQUlBRUFBQUFyZ0FBZ0FvQUFBQ3ZBQUNBSkFBQUFMQUFBSUErQUFBQXNR
QUEKZ0VBQUFBQ3lBQUNBV0FBQUFMTUFBSUQxQUFBQUpBQUFBQUFBQUFBQUFBQUFIZ0FBQUFBQUFB
QUlBQUFBQUFBQUFPa3ZBQUFEQUFBQQpCQUFBQVBFQUFBQ1FBQUFBUVFBUUVRQUFBQUFBQUFBQUFB
QUFBQjRBQUFBREFBQUFGUUFBQVBvUkFBQUFBQUFBQUFBQmQydFNaWE4wCmIzSmxSbTl1ZEZOdGIy
OTBhR2x1WjFOMGVXeGxBQndBRWhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUJR
QUN4RUkKQUFBQTloRUFBR05uUTI5dWRHVjRkQUFUQUFzUkRBQUFBSFVBQUFCdmJHUlRkSGxzWlFB
Q0FBWUE4Z0FBQURBQUFBQUFBQUFBQUFBQQpBQjRBQUFDNEJRQUFBd0FBQUNRQUFBQUFBQUFBd0FB
QWdBTUFBQURCQUFDQUZRQUFBTUlBQUlEMUFBQUFKQUFBQUFBQUFBQUFBQUFBCk9RSUFBR1FBQUFB
UUFBQUFBQUFBQU9rdkFBQVhBQWdBQkFBQUFQRUFBQUFBQWdBQVJnQVFFUUFBQUFBQUFBQUFBQUFB
QURrQ0FBQVgKQUFBQUF3SUFBTVFTQUFBQUFBQUFBQUFCZDJ0VFpYUkRSME52Ym5SbGVIUkdiMjUw
VW1WdVpHVnlhVzVuVTNSNWJHVUFIQUFTRUdRQQpBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFB
QWdBQURRQU1FUUFBQUFBQUFBQUFBQUFBRFFBTUVRQUFBQUFBQUFBQUFBQUFEUUFNCkVRQUFBQUFB
QUFBQUFBQUFGQUFMRVFnQUFBRDJFUUFBWTJkRGIyNTBaWGgwQUJjQUN4RU1BQUFBTUFBQUFHbHpV
M2x6ZEdWdFJtOXUKZEFBWUFBc1JFQUFBQURBQUFBQnBjMUJ5YVc1MFpYSkdiMjUwQUNJQUN4RVVB
QUFBTUFBQUFIVnpaVkJzWVhSbWIzSnRUbUYwYVhabApSMng1Y0doekFCd0FDeEhYLy8vL01BQUFB
R2x6VUhWeVpWUnlZVzV6YkdGMGFXOXVBQk1BQ3hINC8vLy9RQUFBQUdOdmJuUnlZWE4wCkFCb0FD
eEgvLy8vL01BQUFBSE5vYjNWc1pFRnVkR2xoYkdsaGN3QWVBQXNSL3YvLy96QUFBQUJ0WVhsVGRX
SndhWGhsYkZCdmMybDAKYVc5dUFCc0FDeEhjLy8vL2R4RUFBR052Ym5SbGVIUlVjbUZ1YzJadmNt
MEFEZ0E1RVdzQUFBQUFBQUFBK2hFQUFBNEFPUkdSQUFBQQpBQUFBQUFJU0FBQU9BRGtScXdBQUFB
QUFBQUQ0RVFBQURnQTVFY1VBQUFBQUFBQUErQkVBQUE0QU9SSGZBQUFBQUFBQUFBTVNBQUFPCkFE
a1J5QUVBQUFBQUFBRDRFUUFBRGdBNUVlSUJBQUFBQUFBQStCRUFBQUlBQmdEeUFBQUF3QUFBQUFB
QUFBQUFBQUFBT1FJQUFMZ0YKQUFBVkFBQUF0QUFBQUFBQUFBREZBQUNBRndBQUFNWUFBSUFiQUFB
QXh3QUFnQjhBQUFESUFBQ0FLQUFBQU1rQUFJQXdBQUFBeXdBQQpnRFFBQUFETUFBQ0FQd0FBQU0w
QUFJQkVBQUFBemdBQWdFMEFBQURQQUFDQVdnQUFBTkFBQUlCakFBQUEwUUFBZ0hzQUFBRFNBQUNB
CmhBQUFBTlVBQUlDaEFBQUExZ0FBZ0xzQUFBRFhBQUNBMVFBQUFOZ0FBSUEyQVFBQTJRQUFnSndC
QUFEYUFBQ0EyQUVBQU5zQUFJRHkKQVFBQTNBQUFnUFVBQUFBa0FBQUFBQUFBQUFBQUFBQnFBd0FB
VUFBQUFCZ0FBQUFBQUFBQTZTOEFBQmNBQ0FBRUFBQUE4UUFBQVBFQwpBQUE0QUJBUkFBQUFBQUFB
QUFBQUFBQUFhZ01BQUJjQUFBQXhBd0FBeGhJQUFBQUFBQUFBQUFGM2EwZGxkRWRzZVhCb1FXUjJZ
VzVqClpYTUFIQUFTRUZBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBZ0FBRFFBTUVRQUFB
QUFBQUFBQUFBQUFEUUFNRVFBQUFBQUEKQUFBQUFBQUFEUUFNRVFBQUFBQUFBQUFBQUFBQUR3QUxF
UWdBQUFBSEVnQUFabTl1ZEFBTUFBc1JEQUFBQUI4U0FBQnRBQmNBQ3hFUQpBQUFBTUFBQUFHbHpV
M2x6ZEdWdFJtOXVkQUFZQUFzUkZBQUFBREFBQUFCcGMxQnlhVzUwWlhKR2IyNTBBQkFBQ3hFWUFB
QUFJUUFBCkFHZHNlWEJvQUJJQUN4RWNBQUFBSGhJQUFHRmtkbUZ1WTJVQUd3QUxFZWovLy84aEFB
QUFiblZ0WW1WeVQyWklUV1YwY21samN3QWYKQUFzUjVQLy8veUVBQUFCaFpIWmhibU5sU1c1RVpY
TnBaMjVWYm1sMGN3QVVBQXNSK1AvLy93OFNBQUJvYlhSNFZHRmliR1VBRkFBTApFZlQvLy84UEVn
QUFhR2hsWVZSaFlteGxBQ29BQ3hIcy8vLy8zeEVBQUdob1pXRlVZV0pzWlU1MWJXSmxjazltU0Ux
bGRISnBZM05QClptWnpaWFFBRUFBTEVmei8vLzkxQUFBQWMzUjViR1VBSEFBTEVkai8vLzl4RVFB
QWFHOXlhWHB2Ym5SaGJFRmtkbUZ1WTJVQUdBQUwKRWZELy8vKzJFUUFBYUdobFlWUmhZbXhsVTJs
NlpRQU9BRGtSUWdBQUFBQUFBQUFNRWdBQURnQTVFVjBBQUFBQUFBQUFFUklBQUE0QQpPUkdHQUFB
QUFBQUFBQkVTQUFBT0FEa1JwUUFBQUFBQUFBQVRFZ0FBRGdBNUVjNEFBQUFBQUFBQUZSSUFBQTRB
T1JIcEFBQUFBQUFBCkFCTVNBQUFPQURrUi93QUFBQUFBQUFBVEVnQUFEZ0E1RVJvQkFBQUFBQUFB
R0JJQUFBNEFPUkZaQVFBQUFBQUFBQk1TQUFBT0FEa1IKYndFQUFBQUFBQUFURWdBQURnQTVFYUVC
QUFBQUFBQUFGUklBQUE0QU9SSEdBUUFBQUFBQUFCTVNBQUFPQURrUjNBRUFBQUFBQUFBVApFZ0FB
RGdBNUVmY0JBQUFBQUFBQUdCSUFBQTRBT1JGRkFnQUFBQUFBQUJzU0FBQU9BRGtSK2dJQUFBQUFB
QUFURWdBQURnQTVFUkFECkFBQUFBQUFBRXhJQUFBSUFCZ0FBQUFEeUFBQUFTQUVBQUFBQUFBQUFB
QUFBYWdNQUFMZ0ZBQUFtQUFBQVBBRUFBQUFBQUFEeEFBQ0EKRndBQUFQSUFBSUFxQUFBQTh3QUFn
RklBQUFENEFBQ0FjQUFBQVBrQUFJQjJBQUFBK2dBQWdIc0FBQUQ3QUFDQW1RQUFBUHdBQUlDZgpB
QUFBL1FBQWdMVUFBQUQrQUFDQXVnQUFBQUVCQUlEQkFBQUFBZ0VBZ01nQUFBQURBUUNBNHdBQUFB
UUJBSUQ1QUFBQUJRRUFnQThCCkFBQUdBUUNBRkFFQUFBa0JBSUF5QVFBQUNnRUFnRXNCQUFBTEFR
Q0FVd0VBQUF3QkFJQnBBUUFBRFFFQWdIOEJBQUFPQVFDQWhBRUEKQUJFQkFJQ1FBUUFBRWdFQWdK
c0JBQUFVQVFDQXdBRUFBQlVCQUlEV0FRQUFGZ0VBZ093QkFBQVhBUUNBOFFFQUFCb0JBSUFUQWdB
QQpHd0VBZ0N3Q0FBQWNBUUNBZ2dJQUFCMEJBSURPQWdBQUhnRUFnTllDQUFBZkFRQ0EzZ0lBQUNB
QkFJRDBBZ0FBSWdFQWdBb0RBQUFqCkFRQ0FJQU1BQUNRQkFJRDFBQUFBSkFBQUFBQUFBQUFBQUFB
QVdRQUFBQkFBQUFBSUFBQUFBQUFBQU9rdkFBQVhBQUFBQkFBQUFQRUEKQUFDM0FBQUFNQUFQRVFB
QUFBQUFBQUFBQUFBQUFGa0FBQUFYQUFBQU9nQUFBQmtTQUFBQUFBQUFBQUFCUTBkVGFYcGxUV0Zy
WlFBYwpBQklRRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUNBQUFOQUF3UkFBQUFBQUFB
QUFBQUFBQU5BQXdSQUFBQUFBQUFBQUFBCkFBQU5BQXdSQUFBQUFBQUFBQUFBQUFBUUFBc1JDQUFB
QUVBQUFBQjNhV1IwYUFBUkFBc1JEQUFBQUVBQUFBQm9aV2xuYUhRQUR3QUwKRWZULy8vOXhFUUFB
YzJsNlpRQUNBQVlBQVBJQUFBQXdBQUFBQUFBQUFBQUFBQUJaQUFBQWFBUUFBQU1BQUFBa0FBQUFB
QUFBQUFjQgpBSUFYQUFBQUNBRUFnQ2tBQUFBSkFRQ0E5UUFBQUNRQUFBQUFBQUFBQUFBQUFHb0FB
QUFRQUFBQUlBQUFBQUFBQUFEcEx3QUFGd0FBCkFBUUFBQUR4QUFBQXdBQUFBRUlBRHhFQUFBQUFB
QUFBQUFBQUFBQnFBQUFBRndBQUFGQUFBQUFkRWdBQUFBQUFBQUFBQVY5ZlEwZFQKYVhwbFFYQndi
SGxCWm1acGJtVlVjbUZ1YzJadmNtMEFIQUFTRUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QWdBZ0FBRFFBTQpFUUFBQUFBQUFBQUFBQUFBRFFBTUVRQUFBQUFBQUFBQUFBQUFEUUFNRVFBQUFB
QUFBQUFBQUFBQUR3QUxFUWdBQUFCeEVRQUFjMmw2ClpRQU1BQXNSRUFBQUFIY1JBQUIwQUF3QUN4
SDAvLy8vY1JFQUFITUFBZ0FHQVBJQUFBQkFBQUFBQUFBQUFBQUFBQUJxQUFBQUlBUUEKQUFVQUFB
QTBBQUFBQUFBQUFJY0FBSUFYQUFBQWlRQUFnQ2dBQUFDS0FBQ0FPUUFBQUlzQUFJQS9BQUFBakFB
QWdQVUFBQUFrQUFBQQpBQUFBQUFBQUFBQWhBQUFBQUFBQUFBZ0FBQUFBQUFBQTZTOEFBQU1BQUFB
RUFBQUE4UUFBQUpJQUFBQTdBQThSQUFBQUFBQUFBQUFBCkFBQUFJUUFBQUFNQUFBQWZBQUFBQlJJ
QUFBQUFBQUFBQUFGeVpXNWtaWEpwYm1kVGRIbHNaVVp2Y2tadmJuUUFIQUFTRUFBQUFBQUEKQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFnQWdBQUZ3QUxFUWdBQUFBd0FBQUFhWE5UZVhOMFpXMUdiMjUw
QUJnQUN4RU1BQUFBTUFBQQpBR2x6VUhKcGJuUmxja1p2Ym5RQUFnQUdBQUFBOGdBQUFFQUFBQUFB
QUFBQUFBQUFBQ0VBQUFDNEJRQUFCUUFBQURRQUFBQUFBQUFBCjN3QUFnQU1BQUFEaUFBQ0FFd0FB
QU9NQUFJQWFBQUFBNVFBQWdCOEFBQURtQUFDQTlRQUFBQ1FBQUFBQUFBQUFBQUFBQUxJQUFBQWMK
QUFBQUJBQUFBQUFBQUFEcEx3QUFJQUFBQUFRQUFBRHhBQUFBZEFBQUFDd0FEeEVBQUFBQUFBQUFB
QUFBQUFDeUFBQUFJQUFBQUtRQQpBQUQ5RUFBQUFBQUFBQUFBQVhKdmRXNWtaZ0FjQUJJUUhBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBT0FBc1JDQUFBCkFFQUFBQUJ1ZFcwQUVnQUxF
ZnovLy85QUFBQUFhVzUwWldkbGNnQUNBQVlBOGdBQUFFZ0FBQUFBQUFBQUFBQUFBTElBQUFDNEJR
QUEKQmdBQUFEd0FBQUFBQUFBQTZRQUFnQ0FBQUFEcUFBQ0FNZ0FBQU9zQUFJQkNBQUFBN0FBQWdI
UUFBQUR0QUFDQXBBQUFBTzRBQUlEMQpBQUFBSkFBQUFBQUFBQUFBQUFBQU1BQUFBQUFBQUFBUUFB
QUFBQUFBQU9rdkFBQUVBQVFBQkFBQUFQRUFBQUN5QUFBQU1RQVFFUUFBCkFBQUFBQUFBQUFBQUFE
QUFBQUFFQUFBQUpnQUFBTWdTQUFBQUFBQUFBQUFCZDJ0SFpYUkhiSGx3YUhNQUhBQVNFQUFBQUFB
QUFBQUEKQUFBQUFBUUFBQUFBQUFBQUFBQUFBZ0FBRHdBTEVRZ0FBQUFIRWdBQVptOXVkQUFWQUFz
UkRBQUFBQ2tRQUFCamFHRnlZV04wWlhKegpBQkVBQ3hFUUFBQUFJUVFBQUdkc2VYQm9jd0FRQUFz
UkZBQUFBSFVBQUFCamIzVnVkQUFPQURrUkZnQUFBQUFBQUFBaEVnQUFBZ0FHCkFBQUE4Z0FBQURB
QUFBQUFBQUFBQUFBQUFEQUFBQUM0QlFBQUF3QUFBQ1FBQUFBQUFBQUFKd0VBZ0FRQUFBQW9BUUNB
SmdBQUFDa0IKQUlEMUFBQUFKQUFBQUFBQUFBQUFBQUFBY3dBQUFBUUFBQUFFQUFBQUFBQUFBT2t2
QUFBTUFBUUFCQUFBQVBFQUFBQytBQUFBTmdBUQpFUUFBQUFBQUFBQUFBQUFBQUhNQUFBQU1BQUFB
WkFBQUFNa1NBQUFBQUFBQUFBQUJkMnRUWlhSVmNFWnZiblJEWVdOb1pRQWNBQklRCkJBQUFBQUFB
QUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFDQUFBTUFBc1JDQUFBQUhVQUFBQnpBQlFBQ3hIOC8vLy9K
UklBQUdadmJuUkQKWVdOb1pRQU9BRGtSRUFBQUFBQUFBQUFqRWdBQURnQTVFU0lBQUFBQUFBQUFK
aElBQUE0QU9SRTZBQUFBQUFBQUFDZ1NBQUFPQURrUgpWQUFBQUFBQUFBQXFFZ0FBQWdBR0FBQUE4
Z0FBQUVnQUFBQUFBQUFBQUFBQUFITUFBQUM0QlFBQUJnQUFBRHdBQUFBQUFBQUFMQUVBCmdBd0FB
QUF1QVFDQUlBQUFBQzhCQUlBeUFBQUFNQUVBZ0VvQUFBQXhBUUNBWkFBQUFESUJBSUQxQUFBQUpB
QUFBQUFBQUFBQUFBQUEKVEFBQUFBQUFBQUFjQUFBQUFBQUFBT2t2QUFBRUFBUUFCQUFBQVBFQUFB
Q1hBQUFBT1FBUUVRQUFBQUFBQUFBQUFBQUFBRXdBQUFBRQpBQUFBUWdBQUFDd1NBQUFBQUFBQUFB
QUJkMnRUWlhSUVlYUjBaWEp1UW1GelpVTlVUUUFjQUJJUUFBQUFBQUFBQUFBQUFBQUFCQUFBCkFB
QUFBQUFBQUFBQ0FBQVNBQXNSQ0FBQUFQWVJBQUJqYjI1MFpYaDBBQlFBQ3hFTUFBQUFkeEVBQUhS
eVlXNXpabTl5YlFBT0FEa1IKTWdBQUFBQUFBQUFzRWdBQUFnQUdBQUR5QUFBQU1BQUFBQUFBQUFB
QUFBQUFUQUFBQUxnRkFBQURBQUFBSkFBQUFBQUFBQUExQVFDQQpCQUFBQURZQkFJQkNBQUFBTndF
QWdQVUFBQUFrQUFBQUFBQUFBQUFBQUFESkFnQUFBQUVBQUF3QUFBQUFBQUFBNlM4QUFCMEFDQUFF
CkFBQUE4UUFBQUVZQkFBQkNBQkFSQUFBQUFBQUFBQUFBQUFBQXlRSUFBQjBBQUFDQ0FnQUF5eElB
QUFBQUFBQUFBQUYzYTFObGRGQmgKZEhSbGNtNVFhR0Z6WlVsdVZYTmxjbE53WVdObEFCd0FFaEFB
QVFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBSUFBQTBBREJFQQpBQUFBQUFBQUFBQUFBQTBB
REJFQUFBQUFBQUFBQUFBQUFBMEFEQkVBQUFBQUFBQUFBQUFBQUEwQURCRUFBQUFBQUFBQUFBQUFB
QklBCkN4RUlBQUFBOWhFQUFHTnZiblJsZUhRQUZRQUxFUXdBQUFCdUVRQUFjR2hoYzJWUWIybHVk
QUFWQUFzUjVQLy8vM2NSQUFCMWMyVnkKVkc5Q1lYTmxBQkFBQ3hIVS8vLy9iaEVBQUhCb1lYTmxB
QTRBT1JFcUFBQUFBQUFBQUFNU0FBQU9BRGtSamdBQUFBQUFBQUF3RWdBQQpEZ0E1RWM0QUFBQUFB
QUFBQXhJQUFBNEFPUkYrQVFBQUFBQUFBQzRTQUFBT0FEa1JZUUlBQUFBQUFBQTBFZ0FBQWdBR0FB
QUE4Z0FBCkFFQUFBQUFBQUFBQUFBQUFBTWtDQUFDNEJRQUFCUUFBQURRQUFBQUFBQUFBT2dFQWdC
MEFBQUE3QVFDQTFRRUFBRHdCQUlBckFnQUEKUGdFQWdIRUNBQUEvQVFDQTlRQUFBQ1FBQUFBQUFB
QUFBQUFBQUhJQUFBQVFBQUFBSUFBQUFBQUFBQURwTHdBQUZ3QUFBQVFBQUFEeApBQUFBd2dBQUFF
TUFEeEVBQUFBQUFBQUFBQUFBQUFCeUFBQUFGd0FBQUZZQUFBQXlFZ0FBQUFBQUFBQUFBVjlmUTBk
UWIybHVkRUZ3CmNHeDVRV1ptYVc1bFZISmhibk5tYjNKdEFCd0FFaEFRQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUlBSUFBQTBBREJFQUFBQUEKQUFBQUFBQUFBQTBBREJFQUFBQUFBQUFBQUFB
QUFBMEFEQkVBQUFBQUFBQUFBQUFBQUJBQUN4RUlBQUFBYmhFQUFIQnZhVzUwQUF3QQpDeEVRQUFB
QWR4RUFBSFFBREFBTEVmVC8vLzl1RVFBQWNBQUNBQVlBQUFEeUFBQUFRQUFBQUFBQUFBQUFBQUFB
Y2dBQUFDQUVBQUFGCkFBQUFOQUFBQUFBQUFBQjlBQUNBRndBQUFIOEFBSUFyQUFBQWdBQUFnRDhB
QUFDQkFBQ0FSUUFBQUlJQUFJRDFBQUFBSkFBQUFBQUEKQUFBQUFBQUEyd0VBQU1BQUFBQUlBQUFB
QUFBQUFPa3ZBQUFkQUFnQUJBQUFBUEVBQUFDd0FBQUFPQUFRRVFBQUFBQUFBQUFBQUFBQQpBTnNC
QUFBZEFBQUF5QUVBQUFNU0FBQUFBQUFBQUFBQmQydEhaWFJWYzJWeVZHOUNZWE5sUTFSTkFCd0FF
aERBQUFBQUFBQUFBQUFBCkFBQUlBQUFBQUFBQUFBQUFBQUlBQUJJQUN4RU1BQUFBOWhFQUFHTnZi
blJsZUhRQURnQTVFU2NBQUFBQUFBQUFBeElBQUE0QU9SR0kKQUFBQUFBQUFBREFTQUFBT0FEa1J5
QUFBQUFBQUFBQURFZ0FBRGdBNUVXd0JBQUFBQUFBQUxoSUFBQUlBQmdEeUFBQUFNQUFBQUFBQQpB
QUFBQUFBQTJ3RUFBTGdGQUFBREFBQUFKQUFBQUFBQUFBQkNBUUNBSFFBQUFFTUJBSURJQVFBQVJB
RUFnUFVBQUFBa0FBQUFBQUFBCkFBQUFBQUIzQUFBQUFBQUFBQXdBQUFBQUFBQUE2UzhBQUFRQUJB
QUVBQUFBOFFBQUFNSUFBQUExQUJBUkFBQUFBQUFBQUFBQUFBQUEKZHdBQUFBUUFBQUJ0QUFBQXpS
SUFBQUFBQUFBQUFBRjNhMFJ5WVhkR2IyTjFjMUpwYm1jQUhBQVNFQUFBQUFBQUFBQUFBQUFBQUFR
QQpBQUFBQUFBQUFBQUFBZ0FBRWdBTEVRZ0FBQUQyRVFBQVkyOXVkR1Y0ZEFBUUFBc1JEQUFBQURn
U0FBQmpiMnh2Y2dBUkFBc1JFQUFBCkFFQUFBQUJ5WVdScGRYTUFEZ0E1RVNJQUFBQUFBQUFBTmhJ
QUFBNEFPUkZIQUFBQUFBQUFBRDhTQUFBT0FEa1JYUUFBQUFBQUFBQkEKRWdBQUFnQUdBQUFBOGdB
QUFFQUFBQUFBQUFBQUFBQUFBSGNBQUFDNEJRQUFCUUFBQURRQUFBQUFBQUFBUndFQWdBUUFBQUJL
QVFDQQpNZ0FBQUV3QkFJQlhBQUFBVFFFQWdHMEFBQUJPQVFDQTlRQUFBQ1FBQUFBQUFBQUFBQUFB
QUNRQUFBQUFBQUFBQkFBQUFBQUFBQURwCkx3QUFCQUFFQUFRQUFBRHhBQUFBaGdBQUFEMEFFQkVB
QUFBQUFBQUFBQUFBQUFBa0FBQUFCQUFBQUJvQUFBQkVFZ0FBQUFBQUFBQUEKQVhkclIyVjBVMU5N
UTJWeWRHbG1hV05oZEdWSmJtWnZBQndBRWhBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFB
QUlBQUJNQQpDeEVJQUFBQVFoSUFBSEpsYzNCdmJuTmxBQTRBT1JFS0FBQUFBQUFBQUVRU0FBQUNB
QVlBQUFEeUFBQUFNQUFBQUFBQUFBQUFBQUFBCkpBQUFBTGdGQUFBREFBQUFKQUFBQUFBQUFBQlJB
UUNBQkFBQUFGSUJBSUFhQUFBQVV3RUFnUFVBQUFBa0FBQUFBQUFBQUFBQUFBQjQKQUFBQUNBQUFB
QVFBQUFBQUFBQUE2UzhBQUJVQUJBQUVBQUFBOFFBQUFLY0FBQUJCQUJBUkFBQUFBQUFBQUFBQUFB
QUFlQUFBQUJVQQpBQUJwQUFBQXp4SUFBQUFBQUFBQUFBRjNhMGRsZEZOVFRGQmxaWEpEWlhKMGFX
WnBZMkYwWlVSaGRHRUFIQUFTRUFnQUFBQUFBQUFBCkFBQUFBQVFBQUFBQUFBQUFBQUFBQWdBQUR3
QUxFUWdBQUFBOUVnQUFaR2xqZEFBUEFBc1IvUC8vL3c4U0FBQmtZWFJoQUE0QU9SRXIKQUFBQUFB
QUFBRVlTQUFBT0FEa1JTZ0FBQUFBQUFBQVlFZ0FBQWdBR0FBRHlBQUFBU0FBQUFBQUFBQUFBQUFB
QWVBQUFBTGdGQUFBRwpBQUFBUEFBQUFBQUFBQUJXQVFDQUZRQUFBRmNCQUlBYkFBQUFXQUVBZ0I4
QUFBQlpBUUNBUGdBQUFGb0JBSUJwQUFBQVd3RUFnUFVBCkFBQWtBQUFBQUFBQUFBQUFBQUM1QUFB
QUJBQUFBQWdBQUFBQUFBQUE2UzhBQUF3QUJBQUVBQUFBOFFBQUFPNEFBQUJMQUJBUkFBQUEKQUFB
QUFBQUFBQUFBdVFBQUFBd0FBQUNxQUFBQTBSSUFBQUFBQUFBQUFBRjNhMU5sZEVOc2FXVnVkRU5s
Y25ScFptbGpZWFJsU1c1VApVMHhRY205d1pYSjBhV1Z6QUJ3QUVoQUVBQUFBQUFBQUFBQUFBQUFF
QUFBQUFBQUFBQUFBQUFJQUFCTUFDeEVJQUFBQVhCSUFBSE56CmJGQnliM0J6QUJNQUN4RU1BQUFB
RHhJQUFHTmxjblJFWVhSaEFCTUFDeEg4Ly8vL1hCSUFBR05sY25SRWFXTjBBQTRBT1JFM0FBQUEK
QUFBQUFHSVNBQUFPQURrUll3QUFBQUFBQUFCa0VnQUFEZ0E1RVlRQUFBQUFBQUFBWkJJQUFBNEFP
UkdhQUFBQUFBQUFBQk1TQUFBQwpBQVlBQUFEeUFBQUFhQUFBQUFBQUFBQUFBQUFBdVFBQUFMZ0ZB
QUFLQUFBQVhBQUFBQUFBQUFCZUFRQ0FEQUFBQUY4QkFJQVlBQUFBCllBRUFnQjBBQUFCaEFRQ0FT
Z0FBQUdJQkFJQlFBQUFBWXdFQWdGSUFBQUJrQVFDQWN3QUFBR1VCQUlDVUFBQUFaZ0VBZ0tvQUFB
Qm4KQVFDQTlRQUFBQ1FBQUFBQUFBQUFBQUFBQUNnQUFBQUFBQUFBQUFBQUFBQUFBQURwTHdBQUJB
QUVBQVFBQUFEeEFBQUFkd0FBQUVNQQpFQkVBQUFBQUFBQUFBQUFBQUFBb0FBQUFCQUFBQUI0QUFB
RFNFZ0FBQUFBQUFBQUFBWGRyUjJWMFJHVm1ZWFZzZEVoVVZGQkRiMjlyCmFXVlRkRzl5WVdkbEFC
d0FFaEFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBSUFBQTRBT1JFT0FBQUFBQUFBQUdn
U0FBQUMKQUFZQUFQSUFBQUF3QUFBQUFBQUFBQUFBQUFBb0FBQUF1QVVBQUFNQUFBQWtBQUFBQUFB
QUFHb0JBSUFFQUFBQWF3RUFnQjRBQUFCcwpBUUNBOVFBQUFDUUFBQUFBQUFBQUFBQUFBR2dBQUFB
SUFBQUFBQUFBQUFBQUFBRHBMd0FBRlFBRUFBUUFBQUR4QUFBQXdBQUFBRVFBCkVCRUFBQUFBQUFB
QUFBQUFBQUJvQUFBQUZRQUFBRmtBQUFEVEVnQUFBQUFBQUFBQUFYZHJRMjl3ZVVadmRXNWtZWFJw
YjI1RFlXTm8KWlVScGNtVmpkRzl5ZVFBY0FCSVFDQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFB
QUFBQ0FBQVFBQXNSL1AvLy8yc1NBQUJqWVdObwpaUUFVQUFzUitQLy8vejhSQUFCa2FYSmxZM1J2
Y25rQURnQTVFUmNBQUFBQUFBQUFiQklBQUE0QU9SRXRBQUFBQUFBQUFHNFNBQUFPCkFEa1JSZ0FB
QUFBQUFBQVRFZ0FBQWdBR0FQSUFBQUJJQUFBQUFBQUFBQUFBQUFCb0FBQUF1QVVBQUFZQUFBQThB
QUFBQUFBQUFHOEIKQUlBVkFBQUFjQUVBZ0NjQUFBQnhBUUNBUUFBQUFISUJBSUJXQUFBQWN3RUFn
RmtBQUFCMEFRQ0E5UUFBQUNRQUFBQUFBQUFBQUFBQQpBRzRBQUFBRUFBQUFDQUFBQUFBQUFBRHBM
d0FBRFFBSUFBUUFBQUR4QUFBQXNnQUFBRWtBRUJFQUFBQUFBQUFBQUFBQUFBQnVBQUFBCkRRQUFB
RjRBQUFEVkVnQUFBQUFBQUFBQUFYZHJVMlYwUTBaVlVreFNaWEYxWlhOMFUyaHZkV3hrUTI5dWRH
VnVkRk51YVdabUFCd0EKRWhBRUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUlBQUJJQUN4
RUlBQUFBZEJJQUFISmxjWFZsYzNRQUR3QUxFUXdBQUFBdwpBQUFBWm14aFp3QU9BRGtST1FBQUFB
QUFBQUMxRVFBQURnQTVFVTRBQUFBQUFBQUFjeElBQUFJQUJnQUFBUElBQUFBd0FBQUFBQUFBCkFB
QUFBQUJ1QUFBQXVBVUFBQU1BQUFBa0FBQUFBQUFBQUhjQkFJQU5BQUFBZUFFQWdGNEFBQUI1QVFD
QTlRQUFBQ1FBQUFBQUFBQUEKQUFBQUFDUUFBQUFBQUFBQUJBQUFBQUFBQUFEcEx3QUFCQUFFQUFR
QUFBRHhBQUFBbEFBQUFFd0FFQkVBQUFBQUFBQUFBQUFBQUFBawpBQUFBQkFBQUFCb0FBQUI1RWdB
QUFBQUFBQUFBQVhkclEwWlZVa3hTWlhGMVpYTjBRMjl3ZVVoVVZGQlNaWEYxWlhOMFFtOWtlVkJo
CmNuUnpBQndBRWhBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUlBQUJJQUN4RUlBQUFB
Y1JJQUFISmxjWFZsYzNRQURnQTUKRVFvQUFBQUFBQUFBZVJJQUFBSUFCZ0R5QUFBQU1BQUFBQUFB
QUFBQUFBQUFKQUFBQUxnRkFBQURBQUFBSkFBQUFBQUFBQUI4QVFDQQpCQUFBQUgwQkFJQWFBQUFB
ZmdFQWdQVUFBQUFrQUFBQUFBQUFBQUFBQUFBb0FBQUFBQUFBQUFnQUFBQUFBQUFBNlM4QUFBUUFC
QUFFCkFBQUE4UUFBQUtrQUFBQkxBQkFSQUFBQUFBQUFBQUFBQUFBQUtBQUFBQVFBQUFBZUFBQUFl
eElBQUFBQUFBQUFBQUYzYTBOR1ZWSk0KVW1WeGRXVnpkRk5sZEVoVVZGQlNaWEYxWlhOMFFtOWtl
VkJoY25SekFCd0FFaEFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQQpBQUlBQUJJQUN4RUlB
QUFBZEJJQUFISmxjWFZsYzNRQUZBQUxFUXdBQUFCM0VnQUFZbTlrZVZCaGNuUnpBQTRBT1JFT0FB
QUFBQUFBCkFIc1NBQUFDQUFZQUFBQUE4Z0FBQURBQUFBQUFBQUFBQUFBQUFDZ0FBQUM0QlFBQUF3
QUFBQ1FBQUFBQUFBQUFnUUVBZ0FRQUFBQ0MKQVFDQUhnQUFBSU1CQUlEMUFBQUFKQUFBQUFBQUFB
QUFBQUFBeUFBQUFCQUFBQUFFQUFBQUFBQUFBT2t2QUFBWUFBUUFCQUFBQVBFQQpBQUNIQVFBQVV3
QVFFUUFBQUFBQUFBQUFBQUFBQU1nQUFBQVlBQUFBdVFBQUFFc1JBQUFBQUFBQUFBQUJkMnRKYm1s
MGFXRnNhWHBsClRXRjRhVzExYlVoVVZGQkRiMjV1WldOMGFXOXVRMjkxYm5SUVpYSkliM04wQUJ3
QUVoQVFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUEKQUFBQUFBSUFBQ01BQ3hFSUFBQUFkUUFBQUhC
eVpXWmxjbkpsWkVOdmJtNWxZM1JwYjI1RGIzVnVkQUFZQUFzUi9QLy8vN1lSQUFCbQpZV3hzWW1G
amEweHBiV2wwQUJFQUN4SDQvLy8vZlJJQUFHMXZaSFZzWlFBZ0FBZ1JqQklBQUVOdmJtNWxZM1Jw
YjI1SFpYUk1hVzFwCmRGQnliMk5RZEhJQUlBQUlFWWtTQUFCRGIyNXVaV04wYVc5dVUyVjBUR2x0
YVhSUWNtOWpVSFJ5QUJNQUN4SHcvLy8vakJJQUFHZGwKZEV4cGJXbDBBQk1BQ3hIMC8vLy9pUklB
QUhObGRFeHBiV2wwQUE0QU9SRW1BQUFBQUFBQUFIOFNBQUFPQURrUlRnQUFBQUFBQUFDRQpFZ0FB
RGdBNUVYWUFBQUFBQUFBQWhCSUFBQTRBT1JHYkFBQUFBQUFBQUlrU0FBQU9BRGtSckFBQUFBQUFB
QUNNRWdBQUFnQUdBQUR5CkFBQUFpQUFBQUFBQUFBQUFBQUFBeUFBQUFMZ0ZBQUFPQUFBQWZBQUFB
QUFBQUFDR0FRQ0FHQUFBQUljQkFJQWZBQUFBaWdFQWdEWUEKQUFDT0FRQ0FQQUFBQUk4QkFJQkRB
QUFBa2dFQWdGNEFBQUNUQVFDQVpBQUFBSlFCQUlCckFBQUFsZ0VBZ0lZQUFBQ1hBUUNBakFBQQpB
SmdCQUlDVEFBQUFtZ0VBZ0tnQUFBQ2JBUUNBdVFBQUFKd0JBSUQxQUFBQUpBQUFBQUFBQUFBQUFB
QUFjUUFBQUFnQUFBQUVBQUFBCkFBQUFBT2t2QUFBVkFBUUFCQUFBQVBFQUFBRG9BQUFBVFFBUUVR
QUFBQUFBQUFBQUFBQUFBSEVBQUFBVkFBQUFZZ0FBQU5jU0FBQUEKQUFBQUFBQUJkMnREYjNCNVEz
SmxaR1Z1ZEdsaGJFWnliMjFEUmxCbGNuTnBjM1JsYm5SVGRHOXlZV2RsQUJ3QUVoQUlBQUFBQUFB
QQpBQUFBQUFBRUFBQUFBQUFBQUFBQUFBSUFBQm9BQ3hFSUFBQUFreElBQUhCeWIzUmxZM1JwYjI1
VGNHRmpaUUFTQUFzUi9QLy8vNDRTCkFBQnpkRzl5WVdkbEFCVUFDeEg0Ly8vL2tSSUFBR055WldS
bGJuUnBZV3dBRGdBNUVSa0FBQUFBQUFBQWp4SUFBQTRBT1JFMkFBQUEKQUFBQUFKVVNBQUFPQURr
UlR3QUFBQUFBQUFBVEVnQUFBZ0FHQVBJQUFBQklBQUFBQUFBQUFBQUFBQUJ4QUFBQXVBVUFBQVlB
QUFBOApBQUFBQUFBQUFKOEJBSUFWQUFBQW9BRUFnQ3dBQUFDaEFRQ0FTUUFBQUtJQkFJQmZBQUFB
b3dFQWdHSUFBQUNrQVFDQTlRQUFBQ1FBCkFBQUFBQUFBQUFBQUFDUUFBQUFBQUFBQUJBQUFBQUFB
QUFEcEx3QUFCQUFFQUFRQUFBRHhBQUFBbHdBQUFFMEFFQkVBQUFBQUFBQUEKQUFBQUFBQWtBQUFB
QkFBQUFCb0FBQUNXRWdBQUFBQUFBQUFBQVhkclEwWk9aWFIzYjNKclJYSnliM0pIWlhSTWIyTmhi
R2w2WldSRQpaWE5qY21sd2RHbHZiZ0FjQUJJUUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFB
QUFDQUFBVUFBc1JDQUFBQUJJQUFBQmxjbkp2CmNrTnZaR1VBRGdBNUVRb0FBQUFBQUFBQWxoSUFB
QUlBQmdBQThnQUFBREFBQUFBQUFBQUFBQUFBQUNRQUFBQzRCUUFBQXdBQUFDUUEKQUFBQUFBQUFw
d0VBZ0FRQUFBQ29BUUNBR2dBQUFLa0JBSUQxQUFBQUpBQUFBQUFBQUFBQUFBQUFCZ0VBQUNRQUFB
QU1BQUFBQUFBQQpBT2t2QUFBbkFBUUFCQUFBQVBFQUFBQmJBUUFBUUFBUUVRQUFBQUFBQUFBQUFB
QUFBQVlCQUFBbkFBQUF3QUFBQU5rU0FBQUFBQUFBCkFBQUJkMnRUWlhSRFQwNU9SVU5VVUhKdmVI
bEdiM0pUZEhKbFlXMEFIQUFTRUNRQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUEKQWdBQURR
QU1FUUFBQUFBQUFBQUFBQUFBRFFBTUVRQUFBQUFBQUFBQUFBQUFEUUFNRVFBQUFBQUFBQUFBQUFB
QURRQU1FUUFBQUFBQQpBQUFBQUFBQUVRQUxFUWdBQUFDYkVnQUFjM1J5WldGdEFCUUFDeEVNQUFB
QVB4RUFBSEJ5YjNoNVNHOXpkQUFVQUFzUkVBQUFBS0FTCkFBQndjbTk0ZVZCdmNuUUFGZ0FMRWVU
Ly8vK2hFZ0FBY0hKdmVIbFdZV3gxWlhNQUZBQUxFZlQvLy8raEVnQUFjSEp2ZUhsTFpYbHoKQUJ3
QUN4SGMvLy8vUFJJQUFHTnZibTVsWTNSRWFXTjBhVzl1WVhKNUFBNEFPUkZqQUFBQUFBQUFBSmtT
QUFBT0FEa1JpUUFBQUFBQQpBQUNkRWdBQURnQTVFWjhBQUFBQUFBQUFFeElBQUFJQUJnQUE4Z0FB
QUZBQUFBQUFBQUFBQUFBQUFBWUJBQUM0QlFBQUJ3QUFBRVFBCkFBQUFBQUFBckFFQWdDY0FBQUN0
QVFDQVBBQUFBSzRCQUlCSUFBQUFyd0VBZ0hZQUFBQ3dBUUNBbVFBQUFMRUJBSUN2QUFBQXNnRUEK
Z1BVQUFBQWtBQUFBQUFBQUFBQUFBQUNmQVFBQUpBQUFBQWdBQUFBQUFBQUE2UzhBQUNjQUJBQUVB
QUFBOFFBQUFCY0NBQUJOQUJBUgpBQUFBQUFBQUFBQUFBQUFBbndFQUFDY0FBQUJNQVFBQTJoSUFB
QUFBQUFBQUFBRjNhMU5sZEVOUFRrNUZRMVJRY205NGVVRjFkR2h2CmNtbDZZWFJwYjI1R2IzSlRk
SEpsWVcwQUhBQVNFQ1FBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFnQUFEUUFNRVFBQUFB
QUEKQUFBQUFBQUFEUUFNRVFBQUFBQUFBQUFBQUFBQURRQU1FUUFBQUFBQUFBQUFBQUFBRFFBTUVR
QUFBQUFBQUFBQUFBQUFFUUFMRVFnQQpBQUNiRWdBQWMzUnlaV0Z0QUNNQUN4RU1BQUFBUHhFQUFI
QnliM2g1UVhWMGFHOXlhWHBoZEdsdmJsTjBjbWx1WndBY0FBc1I1UC8vCi82WVNBQUJvWldGa1pY
SkdhV1ZzWkZaaGJIVmxjd0FrQUFzUi9QLy8vejBTQUFCdmNtbG5hVzVoYkVOUFRrNUZRMVJFYVdO
MGFXOXUKWVhKNUFDRUFDeEhjLy8vL1BSSUFBR0ZrWkdsMGFXOXVZV3hJWldGa1pYSkdhV1ZzWkhN
QUd3QUxFZkQvLy8rbUVnQUFhR1ZoWkdWeQpSbWxsYkdST1lXMWxjd0FjQUFzUitQLy8vMXdTQUFC
amIyNXVaV04wUkdsamRHbHZibUZ5ZVFBT0FEa1JOUUFBQUFBQUFBQ2pFZ0FBCkRnQTVFVklBQUFB
QUFBQUFwUklBQUE0QU9SRnJBQUFBQUFBQUFCTVNBQUFPQURrUmdnQUFBQUFBQUFDMUVRQUFEZ0E1
RWJZQUFBQUEKQUFBQW1SSUFBQTRBT1JIY0FBQUFBQUFBQUdRU0FBQU9BRGtSOGdBQUFBQUFBQUFU
RWdBQURnQTVFUlVCQUFBQUFBQUFuUklBQUE0QQpPUkVyQVFBQUFBQUFBQk1TQUFBQ0FBWUFBUElB
QUFCNEFBQUFBQUFBQUFBQUFBQ2ZBUUFBdUFVQUFBd0FBQUJzQUFBQUFBQUFBTFVCCkFJQW5BQUFB
dGdFQWdFZ0FBQUMzQVFDQVpRQUFBTGdCQUlCN0FBQUF1Z0VBZ0pVQUFBQzdBUUNBbXdBQUFMd0JB
SURKQUFBQXZnRUEKZ093QUFBQy9BUUNBQWdFQUFNRUJBSUFsQVFBQXdnRUFnRHNCQUFEREFRQ0E5
UUFBQUNRQUFBQUFBQUFBQUFBQUFGa0FBQUFFQUFBQQpDQUFBQUFBQUFBRHBMd0FBREFBRUFBUUFB
QUR4QUFBQXd3QUFBRUFBRUJFQUFBQUFBQUFBQUFBQUFBQlpBQUFBREFBQUFFb0FBQURjCkVnQUFB
QUFBQUFBQUFYZHJRMjl3ZVVOUFRrNUZRMVJRY205NGVWSmxjM0J2Ym5ObEFCd0FFaEFFQUFBQUFB
QUFBQUFBQUFBRUFBQUEKQUFBQUFBQUFBQUlBQUJFQUN4RUlBQUFBbXhJQUFITjBjbVZoYlFBV0FB
c1JEQUFBQUtzU0FBQnlaWE53YjI1elpWVlNUQUFTQUFzUgovUC8vLzZnU0FBQnRaWE56WVdkbEFB
NEFPUkVhQUFBQUFBQUFBS01TQUFBT0FEa1JOd0FBQUFBQUFBQ3RFZ0FBQWdBR0FBRHlBQUFBClFB
QUFBQUFBQUFBQUFBQUFXUUFBQUxnRkFBQUZBQUFBTkFBQUFBQUFBQURHQVFDQURBQUFBTWNCQUlB
dEFBQUF5Z0VBZ0VjQUFBREwKQVFDQVNnQUFBTXdCQUlEMUFBQUFKQUFBQUFBQUFBQUFBQUFBTEFB
QUFBQUFBQUFNQUFBQUFBQUFBT2t2QUFBRUFBUUFCQUFBQVBFQQpBQUNvQUFBQU9nQVFFUUFBQUFB
QUFBQUFBQUFBQUN3QUFBQUVBQUFBSWdBQUFMRVNBQUFBQUFBQUFBQUJkMnREUVVsdFlXZGxVWFZs
CmRXVkRjbVZoZEdVQUhBQVNFQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFnQUFFQUFM
RVFnQUFBQjFBQUFBZDJsa2RHZ0EKRVFBTEVRd0FBQUIxQUFBQWFHVnBaMmgwQUJNQUN4RVFBQUFB
ZFFBQUFHTmhjR0ZqYVhSNUFBNEFPUkVTQUFBQUFBQUFBTEVTQUFBQwpBQVlBOGdBQUFEQUFBQUFB
QUFBQUFBQUFBQ3dBQUFDNEJRQUFBd0FBQUNRQUFBQUFBQUFBMFFFQWdBUUFBQURTQVFDQUlnQUFB
Tk1CCkFJRDFBQUFBSkFBQUFBQUFBQUFBQUFBQUxBQUFBQUFBQUFBTUFBQUFBQUFBQU9rdkFBQUVB
QVFBQkFBQUFQRUFBQUNqQUFBQU93QVEKRVFBQUFBQUFBQUFBQUFBQUFDd0FBQUFFQUFBQUlnQUFB
TE1TQUFBQUFBQUFBQUFCZDJ0RFFVbHRZV2RsVVhWbGRXVlRaWFJUYVhwbApBQndBRWhBQUFBQUFB
QUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUlBQUEwQUN4RUlBQUFBcnhJQUFHbHhBQkFBQ3hFTUFB
QUFkUUFBCkFIZHBaSFJvQUJFQUN4RVFBQUFBZFFBQUFHaGxhV2RvZEFBT0FEa1JFZ0FBQUFBQUFB
Q3pFZ0FBQWdBR0FBRHlBQUFBTUFBQUFBQUEKQUFBQUFBQUFMQUFBQUxnRkFBQURBQUFBSkFBQUFB
QUFBQURXQVFDQUJBQUFBTmNCQUlBaUFBQUEyQUVBZ1BVQUFBQWtBQUFBQUFBQQpBQUFBQUFBa0FB
QUFBQUFBQUFRQUFBQUFBQUFBNlM4QUFBUUFCQUFFQUFBQThRQUFBSDhBQUFBOEFCQVJBQUFBQUFB
QUFBQUFBQUFBCkpBQUFBQVFBQUFBYUFBQUF0UklBQUFBQUFBQUFBQUYzYTBOQlNXMWhaMlZSZFdW
MVpVZGxkRmRwWkhSb0FCd0FFaEFBQUFBQUFBQUEKQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUlBQUEw
QUN4RUlBQUFBcnhJQUFHbHhBQTRBT1JFS0FBQUFBQUFBQUxVU0FBQUNBQVlBQVBJQQpBQUF3QUFB
QUFBQUFBQUFBQUFBa0FBQUF1QVVBQUFNQUFBQWtBQUFBQUFBQUFOc0JBSUFFQUFBQTNBRUFnQm9B
QUFEZEFRQ0E5UUFBCkFDUUFBQUFBQUFBQUFBQUFBQ1FBQUFBQUFBQUFCQUFBQUFBQUFBRHBMd0FB
QkFBRUFBUUFBQUR4QUFBQWdBQUFBRDBBRUJFQUFBQUEKQUFBQUFBQUFBQUFrQUFBQUJBQUFBQm9B
QUFDMUVnQUFBQUFBQUFBQUFYZHJRMEZKYldGblpWRjFaWFZsUjJWMFNHVnBaMmgwQUJ3QQpFaEFB
QUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBSUFBQTBBQ3hFSUFBQUFyeElBQUdseEFBNEFP
UkVLQUFBQUFBQUFBTFVTCkFBQUNBQVlBOGdBQUFEQUFBQUFBQUFBQUFBQUFBQ1FBQUFDNEJRQUFB
d0FBQUNRQUFBQUFBQUFBNEFFQWdBUUFBQURoQVFDQUdnQUEKQU9JQkFJRDFBQUFBSkFBQUFBQUFB
QUFBQUFBQUpBQUFBQUFBQUFBRUFBQUFBQUFBQU9rdkFBQUVBQVFBQkFBQUFQRUFBQUNDQUFBQQpQ
d0FRRVFBQUFBQUFBQUFBQUFBQUFDUUFBQUFFQUFBQUdnQUFBTFVTQUFBQUFBQUFBQUFCZDJ0RFFV
bHRZV2RsVVhWbGRXVkhaWFJECllYQmhZMmwwZVFBY0FCSVFBQUFBQUFBQUFBQUFBQUFBQkFBQUFB
QUFBQUFBQUFBQ0FBQU5BQXNSQ0FBQUFLOFNBQUJwY1FBT0FEa1IKQ2dBQUFBQUFBQUMxRWdBQUFn
QUdBQUFBOGdBQUFEQUFBQUFBQUFBQUFBQUFBQ1FBQUFDNEJRQUFBd0FBQUNRQUFBQUFBQUFBNVFF
QQpnQVFBQUFEbUFRQ0FHZ0FBQU9jQkFJRDFBQUFBSkFBQUFBQUFBQUFBQUFBQUpBQUFBQUFBQUFB
RUFBQUFBQUFBQU9rdkFBQUVBQVFBCkJBQUFBUEVBQUFDQkFBQUFQZ0FRRVFBQUFBQUFBQUFBQUFB
QUFDUUFBQUFFQUFBQUdnQUFBTFlTQUFBQUFBQUFBQUFCZDJ0RFFVbHQKWVdkbFVYVmxkV1ZKYm5a
aGJHbGtZWFJsQUJ3QUVoQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFJQUFBMEFDeEVJ
QUFBQQpyeElBQUdseEFBNEFPUkVLQUFBQUFBQUFBTFlTQUFBQ0FBWUFBQUFBOGdBQUFEQUFBQUFB
QUFBQUFBQUFBQ1FBQUFDNEJRQUFBd0FBCkFDUUFBQUFBQUFBQTZ3RUFnQVFBQUFEc0FRQ0FHZ0FB
QU8wQkFJRDFBQUFBSkFBQUFBQUFBQUFBQUFBQUpBQUFBQUFBQUFBRUFBQUEKQUFBQUFPa3ZBQUFF
QUFRQUJBQUFBUEVBQUFCOEFBQUFPUUFRRVFBQUFBQUFBQUFBQUFBQUFDUUFBQUFFQUFBQUdnQUFB
TFlTQUFBQQpBQUFBQUFBQmQydERRVWx0WVdkbFVYVmxkV1ZHYkhWemFBQWNBQklRQUFBQUFBQUFB
QUFBQUFBQUJBQUFBQUFBQUFBQUFBQUNBQUFOCkFBc1JDQUFBQUs4U0FBQnBjUUFPQURrUkNnQUFB
QUFBQUFDMkVnQUFBZ0FHQVBJQUFBQXdBQUFBQUFBQUFBQUFBQUFrQUFBQXVBVUEKQUFNQUFBQWtB
QUFBQUFBQUFQQUJBSUFFQUFBQThRRUFnQm9BQUFEeUFRQ0E5UUFBQUNRQUFBQUFBQUFBQUFBQUFD
UUFBQUFBQUFBQQpCQUFBQUFBQUFBRHBMd0FBQkFBRUFBUUFBQUR4QUFBQWZnQUFBRHNBRUJFQUFB
QUFBQUFBQUFBQUFBQWtBQUFBQkFBQUFCb0FBQUMxCkVnQUFBQUFBQUFBQUFYZHJRMEZKYldGblpW
RjFaWFZsUTI5c2JHVmpkQUFjQUJJUUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUEKQUFBQ0FB
QU5BQXNSQ0FBQUFLOFNBQUJwY1FBT0FEa1JDZ0FBQUFBQUFBQzFFZ0FBQWdBR0FBQUE4Z0FBQURB
QUFBQUFBQUFBQUFBQQpBQ1FBQUFDNEJRQUFBd0FBQUNRQUFBQUFBQUFBOVFFQWdBUUFBQUQyQVFD
QUdnQUFBUGNCQUlEMUFBQUFKQUFBQUFBQUFBQUFBQUFBClJRQUFBQUFBQUFBa0FBQUFBQUFBQU9r
dkFBQUVBQVFBQkFBQUFQRUFBQURuQUFBQVB3QVFFUUFBQUFBQUFBQUFBQUFBQUVVQUFBQUUKQUFB
QU93QUFBTHNTQUFBQUFBQUFBQUFCZDJ0RFFVbHRZV2RsVVhWbGRXVkpibk5sY25SSmJXRm5aUUFj
QUJJUUFBQUFBQUFBQUFBQQpBQUFBQkFBQUFBQUFBQUFBQUFBQ0FBQU5BQXNSQ0FBQUFLOFNBQUJw
Y1FBTUFBc1JEQUFBQUVFQUFBQjBBQThBQ3hFVUFBQUFkUUFBCkFIUjVjR1VBRFFBTEVSZ0FBQUFq
QUFBQWFXUUFFQUFMRVNBQUFBQjFBQUFBWm14aFozTUFFZ0FMRVNRQUFBQzVFZ0FBY21Wc1pXRnoK
WlFBUEFBc1JLQUFBQUFNRUFBQnBibVp2QUE0QU9SRXJBQUFBQUFBQUFMc1NBQUFDQUFZQUFQSUFB
QUF3QUFBQUFBQUFBQUFBQUFCRgpBQUFBdUFVQUFBTUFBQUFrQUFBQUFBQUFBUG9CQUlBRUFBQUEr
d0VBZ0RzQUFBRDhBUUNBOVFBQUFDUUFBQUFBQUFBQUFBQUFBRVFBCkFBQUFBQUFBSkFBQUFBQUFB
QURwTHdBQUJBQUVBQVFBQUFEeEFBQUFMZ0VBQUVjQUVCRUFBQUFBQUFBQUFBQUFBQUJFQUFBQUJB
QUEKQURvQUFBQzlFZ0FBQUFBQUFBQUFBWGRyUTBGSmJXRm5aVkYxWlhWbFVtVm5hWE4wWlhKUWFY
aGxiRUoxWm1abGNnQWNBQklRQUFBQQpBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFDQUFBTkFB
c1JDQUFBQUs4U0FBQnBjUUFQQUFzUkRBQUFBQU1FQUFCa1lYUmhBQlFBCkN4RVFBQUFBZFFBQUFH
UmhkR0ZmYzJsNlpRQVRBQXNSRkFBQUFIVUFBQUJ5YjNkaWVYUmxjd0FRQUFzUkdBQUFBSFVBQUFC
M2FXUjAKYUFBUkFBc1JIQUFBQUhVQUFBQm9aV2xuYUhRQUZ3QUxFU0FBQUFCMUFBQUFjR2w0Wld4
ZlptOXliV0YwQUJZQUN4RWtBQUFBUFJJQQpBR0YwZEdGamFHMWxiblJ6QUJBQUN4RW9BQUFBZFFB
QUFHWnNZV2R6QUE0QU9SRXFBQUFBQUFBQUFMMFNBQUFDQUFZQUFBRHlBQUFBCk1BQUFBQUFBQUFB
QUFBQUFSQUFBQUxnRkFBQURBQUFBSkFBQUFBQUFBQUQvQVFDQUJBQUFBQUFDQUlBNkFBQUFBUUlB
Z1BVQUFBQWsKQUFBQUFBQUFBQUFBQUFBc0FBQUFBQUFBQUF3QUFBQUFBQUFBNlM4QUFBUUFCQUFF
QUFBQThRQUFBS0lBQUFBOEFCQVJBQUFBQUFBQQpBQUFBQUFBQUxBQUFBQVFBQUFBaUFBQUFzeElB
QUFBQUFBQUFBQUYzYTBOQlNXMWhaMlZSZFdWMVpWTmxkRVpzWVdkekFCd0FFaEFBCkFBQUFBQUFB
QUFBQUFBQUVBQUFBQUFBQUFBQUFBQUlBQUEwQUN4RUlBQUFBcnhJQUFHbHhBQThBQ3hFTUFBQUFk
UUFBQUcxaGMyc0EKRUFBTEVSQUFBQUIxQUFBQVpteGhaM01BRGdBNUVSSUFBQUFBQUFBQXN4SUFB
QUlBQmdBQUFQSUFBQUF3QUFBQUFBQUFBQUFBQUFBcwpBQUFBdUFVQUFBTUFBQUFrQUFBQUFBQUFB
QVFDQUlBRUFBQUFCUUlBZ0NJQUFBQUdBZ0NBOVFBQUFDUUFBQUFBQUFBQUFBQUFBQ1FBCkFBQUFB
QUFBQkFBQUFBQUFBQURwTHdBQUJBQUVBQVFBQUFEeEFBQUFmd0FBQUR3QUVCRUFBQUFBQUFBQUFB
QUFBQUFrQUFBQUJBQUEKQUJvQUFBQzFFZ0FBQUFBQUFBQUFBWGRyUTBGSmJXRm5aVkYxWlhWbFIy
VjBSbXhoWjNNQUhBQVNFQUFBQUFBQUFBQUFBQUFBQUFRQQpBQUFBQUFBQUFBQUFBZ0FBRFFBTEVR
Z0FBQUN2RWdBQWFYRUFEZ0E1RVFvQUFBQUFBQUFBdFJJQUFBSUFCZ0FBOGdBQUFEQUFBQUFBCkFB
QUFBQUFBQUNRQUFBQzRCUUFBQXdBQUFDUUFBQUFBQUFBQUNRSUFnQVFBQUFBS0FnQ0FHZ0FBQUFz
Q0FJRDFBQUFBSkFBQUFBQUEKQUFBQUFBQUFIUUFBQUFBQUFBQUFBQUFBQUFBQUFPa3ZBQUFFQUFR
QUJBQUFBUEVBQUFCeEFBQUFQUUFRRVFBQUFBQUFBQUFBQUFBQQpBQjBBQUFBRUFBQUFFd0FBQUw0
U0FBQUFBQUFBQUFBQmQydERRVWx0WVdkbFVYVmxkV1ZIWlhSVWVYQmxTVVFBSEFBU0VBQUFBQUFB
CkFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFnQUFEZ0E1RVFZQUFBQUFBQUFBdmhJQUFBSUFCZ0FB
QUFEeUFBQUFNQUFBQUFBQUFBQUEKQUFBQUhRQUFBTGdGQUFBREFBQUFKQUFBQUFBQUFBQU9BZ0NB
QkFBQUFBOENBSUFUQUFBQUVBSUFnUEVBQUFESU5RQUFNQUFORVZnUwpBQUFBQUFBQUFBQmZhVzF3
WDE5clEwWlVlWEJsUkdsamRHbHZibUZ5ZVV0bGVVTmhiR3hDWVdOcmN3QWtBQWNSVGhNQUFBQWdW
VU5JClFWSmZSMFZPUlZKQlRGOURRVlJGUjA5U1dWOU5RVk5MQURJQURSRmJFZ0FBQUFBQUFBQUFY
Mmx0Y0Y5ZmEwTkdWSGx3WlVScFkzUnAKYjI1aGNubFdZV3gxWlVOaGJHeENZV05yY3dBY0FBY1JU
aE1BQUFBd1ZVTklRVkpmVGxWTlJWSkpRMTlXUVV4VlJRQVNBQWNSVGhNQQpBQUJBVlVOSVFWSmZR
VWRGQUI4QUJ4SFJGQUFBREFCQ1NVNUVVMVJTU1U1SFgxQlBVMVJmUTA5UFMwbEZBQ2NBQnhIUkZB
QUFFQUJDClNVNUVVMVJTU1U1SFgwWk1RVWRmUWtsT1JGOVVUMTlQUWtwRlExUUFJQUFIRVFVVUFB
QUJBRU5HUW5sMFpVOXlaR1Z5VEdsMGRHeGwKUlc1a2FXRnVBQmtBQnhHa0ZBQUFBUUJWVWt4YVQw
NUZYMGxPVkZKQlRrVlVBQ0VBRFJGSEV3QUFBQUFBQUFBQVgybHRjRjlmYTBORwpRbTl2YkdWaGJs
UnlkV1VBSWdBTkVVY1RBQUFBQUFBQUFBQmZhVzF3WDE5clEwWkNiMjlzWldGdVJtRnNjMlVBR3dB
SEVZa1VBQUFBCkFGVlNURnBQVGtWU1JVZGZSRVZHUVZWTVZBQVlBQWNSaVJRQUFBRUFWVkpNV2s5
T1JWSkZSMTlJUzB4TkFCc0FCeEhFRXdBQVRnQlYKUWt4UFEwdGZVRkpKVmtGVVJWOVZVMFVBSmdB
SEVjUVRBQUJoQUZWQ1RFOURTMTlEV1ZKSlRFeEpRMTlUVlZCUVRFVk5SVTVVUVZKWgpBQlVBQnhF
YkV3QUFBQUJKWkd4bFUyaDFkR1J2ZDI0QUVnQUhFWU1VQUFBQkFGTlpVMTlYU1U0ek1nQVFBQWNS
Z3hRQUFBSUFVMWxUClgwMUJRd0FPQUFjUmp4UUFBQUlBVmxSZlNUSUFFQUFIRVk4VUFBQUlBRlpV
WDBKVFZGSUFGQUFIRVk4VUFBQUpBRlpVWDBSSlUxQkIKVkVOSUFDRUFCeEhmRVFBQUFnQm1iMjUw
VTIxdmIzUm9hVzVuVEdWMlpXeE5aV1JwZFcwQUhnQU1FUkVUQUFBQUFBQUFBQUJoYm5ScApZV3hw
WVhOcGJtZEhZVzF0WVFBZ0FBd1JkUUFBQUFBQUFBQUFBSE5mWm05dWRGTnRiMjkwYUdsdVoxUjVj
R1VBSVFBTUVYUUFBQUFBCkFBQUFBQUJ6WDJadmJuUlRiVzl2ZEdocGJtZE1aWFpsYkFBaUFBd1JB
Uk1BQUFBQUFBQUFBR3REUmxkcGJtUnZkM05UVTB4UVpXVnkKUTJWeWRBQVNBQWNSanhRQUFDUUFW
bFJmVWtWRFQxSkVBQzhBREJFQUV3QUFBQUFBQUFBQWEwTkdWMmx1Wkc5M2MxTlRURkJsWlhKRApa
WEowSkdsdWFYUnBZV3hwZW1WeUpBQWpBQXdSQVJNQUFBQUFBQUFBQUd0RFJsZHBibVJ2ZDNOVFUw
eE1iMk5oYkVObGNuUUFGZ0FICkVZOFVBQUFDZ0FDQVZsUmZVa1ZUUlZKV1JVUUFNQUFNRVFBVEFB
QUFBQUFBQUFCclEwWlhhVzVrYjNkelUxTk1URzlqWVd4RFpYSjAKSkdsdWFYUnBZV3hwZW1WeUpB
QXdBQXdSQVJNQUFBQUFBQUFBQUd0RFJsTjBjbVZoYlZCeWIzQmxjblI1VjJsdVpHOTNjMU5UVEVO
bApjblJKYm1adkFEMEFEQkVBRXdBQUFBQUFBQUFBYTBOR1UzUnlaV0Z0VUhKdmNHVnlkSGxYYVc1
a2IzZHpVMU5NUTJWeWRFbHVabThrCmFXNXBkR2xoYkdsNlpYSWtBQ1FBREJGQUFBQUFBQUFBQUFB
QWMxOW1iMjUwVTIxdmIzUm9hVzVuUTI5dWRISmhjM1FBS1FBTUVYUUEKQUFBQUFBQUFBQUJ6WDNO
NWMzUmxiVVp2Ym5SVGJXOXZkR2hwYm1kRmJtRmliR1ZrQUNZQURCRjFBQUFBQUFBQUFBQUFjMTl6
ZVhOMApaVzFHYjI1MFUyMXZiM1JvYVc1blZIbHdaUUFsQUF3Uk1BQUFBQUFBQUFBQUFITmZjM2x6
ZEdWdFJtOXVkRk50YjI5MGFHbHVaMU5sCmRBQVZBQWNSSFJNQUFBQUFUazlFUlY5SlRsWkJURWxF
QUJVQUJ4RWRFd0FBQVFCT1QwUkZYMFZNUlUxRlRsUUFGd0FIRVIwVEFBQUMKQUU1UFJFVmZRVlJV
VWtsQ1ZWUkZBQklBQnhFZEV3QUFBd0JPVDBSRlgxUkZXRlFBR3dBSEVSMFRBQUFFQUU1UFJFVmZR
MFJCVkVGZgpVMFZEVkVsUFRnQWVBQWNSSFJNQUFBVUFUazlFUlY5RlRsUkpWRmxmVWtWR1JWSkZU
a05GQUJnQUJ4R3hGQUFBQWdCVVdWTlFSVU5mClRVbE5SVlJaVUVVQUdBQUhFYkVVQUFBREFGUlpV
MUJGUTE5R1NVeEZUa0ZOUlFBVUFBY1JIUk1BQUFZQVRrOUVSVjlGVGxSSlZGa0EKRmdBSEViRVVB
QUFFQUZSWlUxQkZRMTlRVWs5SFNVUUFHd0FIRWJFVUFBQUZBRlJaVTFCRlExOVFRVU5MUVVkRlRr
Rk5SUUFWQUFjUgpIUk1BQUFnQVRrOUVSVjlEVDAxTlJVNVVBQllBQnhFZEV3QUFDUUJPVDBSRlgw
UlBRMVZOUlU1VUFCc0FCeEVkRXdBQUNnQk9UMFJGClgwUlBRMVZOUlU1VVgxUlpVRVVBSHdBSEVS
MFRBQUFMQUU1UFJFVmZSRTlEVlUxRlRsUmZSbEpCUjAxRlRsUUFHZ0FIRVJNVEFBQUMKZ1A3L2Ew
TkhSbTl1ZEVsdVpHVjRUV0Y0QUJZQUJ4RVRFd0FBQW9EKy8ydERSMGRzZVhCb1RXRjRBQjBBQnhI
MUZBQUFBd0JZVFV4RgpURVZOVkZsUVJWOUVUME5WVFVWT1ZBQWpBQWNST2hNQUFBRUFRa2xPUkZO
VVFWUlZVMTlHU1U1RVNVNUhVa1ZUVDFWU1EwVUFIZ0FICkVUb1RBQUFDQUVKSlRrUlRWRUZVVlZO
ZlEwOU9Ua1ZEVkVsT1J3QWZBQWNST2hNQUFBTUFRa2xPUkZOVVFWUlZVMTlTUlVSSlVrVkQKVkVs
T1J3QWxBQWNST2hNQUFBUUFRa2xPUkZOVVFWUlZVMTlDUlVkSlRrUlBWMDVNVDBGRVJFRlVRUUFq
QUFjUk9oTUFBQVlBUWtsTwpSRk5VUVZSVlUxOUZUa1JFVDFkT1RFOUJSRVJCVkVFQUt3QUhFVG9U
QUFBSEFFSkpUa1JUVkVGVVZWTmZRa1ZIU1U1RVQxZE9URTlCClJFTlBUVkJQVGtWT1ZGTUFLQUFI
RVRvVEFBQUlBRUpKVGtSVFZFRlVWVk5mU1U1VFZFRk1URWxPUjBOUFRWQlBUa1ZPVkZNQUtRQUgK
RVRvVEFBQUpBRUpKVGtSVFZFRlVWVk5mUlU1RVJFOVhUa3hQUVVSRFQwMVFUMDVGVGxSVEFDTUFC
eEU2RXdBQUNnQkNTVTVFVTFSQgpWRlZUWDFWVFNVNUhRMEZEU0VWRVEwOVFXUUFpQUFjUk9oTUFB
QXNBUWtsT1JGTlVRVlJWVTE5VFJVNUVTVTVIVWtWUlZVVlRWQUFsCkFBY1JPaE1BQUEwQVFrbE9S
Rk5VUVZSVlUxOU5TVTFGVkZsUVJVRldRVWxNUVVKTVJRQXFBQWNST2hNQUFBNEFRa2xPUkZOVVFW
UlYKVTE5RFFVTklSVVpKVEVWT1FVMUZRVlpCU1V4QlFreEZBQ1lBQnhFNkV3QUFEd0JDU1U1RVUx
UkJWRlZUWDBKRlIwbE9VMWxPUTA5UQpSVkpCVkVsUFRnQWtBQWNST2hNQUFCQUFRa2xPUkZOVVFW
UlZVMTlGVGtSVFdVNURUMUJGVWtGVVNVOU9BQ29BQnhGU0V3QUFBQUJyClEwZERiMnh2Y2tOdlpH
VkdjbUZuYldWdWRFeHZiMnQxY0ZSbGVIUjFjbVVBSndBSEVWSVRBQUFCQUd0RFIwTnZiRzl5UTI5
a1pVWnkKWVdkdFpXNTBVR0Z5WVcxbGRISnBZd0FqQUFjUk9oTUFBQkVBUWtsT1JGTlVRVlJWVTE5
Q1JVZEpUbFZRVEU5QlJFUkJWRUVBSVFBSApFVG9UQUFBVEFFSkpUa1JUVkVGVVZWTmZSVTVFVlZC
TVQwRkVSRUZVUVFBakFBY1JPaE1BQUJRQVFrbE9SRk5VUVZSVlUxOVFVazlVClQwTlBURU5NUVZO
VFNVUUFIQUFIRVRvVEFBQVZBRUpKVGtSVFZFRlVWVk5mUlU1RFQwUkpUa2NBTFFBSEVUb1RBQUFX
QUVKSlRrUlQKVkVGVVZWTmZWa1ZTU1VaSlJVUk5TVTFGVkZsUVJVRldRVWxNUVVKTVJRQW9BQWNS
T2hNQUFCY0FRa2xPUkZOVVFWUlZVMTlEVEVGVApVMGxPVTFSQlRFeE1UME5CVkVsUFRnQWNBQWNS
T2hNQUFCZ0FRa2xPUkZOVVFWUlZVMTlFUlVOUFJFbE9Sd0FtQUFjUk9oTUFBQmtBClFrbE9SRk5V
UVZSVlUxOU1UMEZFU1U1SFRVbE5SVWhCVGtSTVJWSUFMQUFIRVRvVEFBQWFBRUpKVGtSVFZFRlVW
Vk5mUTA5T1ZFVk8KVkVSSlUxQlBVMGxVU1U5T1FWUlVRVU5JQUNjQUJ4RTZFd0FBSEFCQ1NVNUVV
MVJCVkZWVFgwTk1VMGxFUTBGT1NVNVRWRUZPVkVsQgpWRVVBSlFBSEVUb1RBQUFkQUVKSlRrUlRW
RUZVVlZOZlNWVk9TMDVQVjA1QlZrRkpURUZDVEVVQUhnQUhFVG9UQUFBZUFFSkpUa1JUClZFRlVW
Vk5mUkVsU1JVTlVRa2xPUkFBZkFBY1JPaE1BQUI4QVFrbE9SRk5VUVZSVlUxOVNRVmROU1UxRlZG
bFFSUUFpQUFjUk9oTUEKQUNBQVFrbE9SRk5VUVZSVlUxOVFVazlZV1VSRlZFVkRWRWxPUndBZ0FB
Y1JPaE1BQUNFQVFrbE9SRk5VUVZSVlUxOUJRME5GVUZSUwpRVTVIUlZNQUh3QUhFVG9UQUFBaUFF
SkpUa1JUVkVGVVZWTmZRMDlQUzBsRlgxTkZUbFFBS3dBSEVUb1RBQUFqQUVKSlRrUlRWRUZVClZW
TmZRMDlOVUVGRFZGOVFUMHhKUTFsZlVrVkRSVWxXUlVRQUpRQUhFVG9UQUFBa0FFSkpUa1JUVkVG
VVZWTmZRMDlQUzBsRlgxTlYKVUZCU1JWTlRSVVFBSndBSEVUb1RBQUFtQUVKSlRrUlRWRUZVVlZO
ZlEwOVBTMGxGWDFOVVFWUkZYMEZEUTBWUVZBQW5BQWNST2hNQQpBQ2NBUWtsT1JGTlVRVlJWVTE5
RFQwOUxTVVZmVTFSQlZFVmZVa1ZLUlVOVUFDY0FCeEU2RXdBQUtBQkNTVTVFVTFSQlZGVlRYME5Q
ClQwdEpSVjlUVkVGVVJWOVFVazlOVUZRQUxnQUhFVG9UQUFBdUFFSkpUa1JUVkVGVVZWTmZVRVZT
VTBsVFZFVk9WRjlEVDA5TFNVVmYKVWtWRFJVbFdSVVFBSUFBSEVUb1RBQUF3QUVKSlRrUlRWRUZV
VlZOZlEwRkRTRVZEVDA1VVVrOU1BQzRBQnhFNkV3QUFNUUJDU1U1RQpVMVJCVkZWVFgwTlBUbFJG
VGxSRVNWTlFUMU5KVkVsUFRrWkpURVZPUVUxRkFDa0FCeEU2RXdBQU1nQkNTVTVFVTFSQlZGVlRY
MDFKClRVVlVSVmhVVUV4QlNVNU5TVk5OUVZSRFNBQW1BQWNST2hNQUFETUFRa2xPUkZOVVFWUlZV
MTlRVlVKTVNWTklSVkpCVmtGSlRFRkMKVEVVQUhRQUhFUkFUQUFBQUFFTklRVTVIUlV0SlRrUmZR
VVJFVFVWTlFrVlNBQ0FBQnhFUUV3QUFBUUJEU0VGT1IwVkxTVTVFWDBSRgpURVZVUlUxRlRVSkZV
Z0FjQUFjUkVCTUFBQUlBUTBoQlRrZEZTMGxPUkY5VFJWUk9RVTFGVXdBa0FBY1JFQk1BQUFNQVEw
aEJUa2RGClMwbE9SRjlUUlZSRVQwTlZUVVZPVkVGVVNVOU9BQnNBQnhFUUV3QUFCQUJEU0VGT1Iw
VkxTVTVFWDBkRlRrVlNRVXdBSGdBSEVSQVQKQUFBRkFFTklRVTVIUlV0SlRrUmZTVTVXUVV4SlJF
RlVSUUFnQUFjUkVCTUFBQVlBUTBoQlRrZEZTMGxPUkY5RFNFRk9SMFZHUVVsTQpSVVFBTHdBSEVW
UVRBQUFBQUd0RFJraFVWRkJEYjI5cmFXVlRkRzl5WVdkbFFXTmpaWEIwVUc5c2FXTjVRV3gzWVhs
ekFDNEFCeEZVCkV3QUFBUUJyUTBaSVZGUlFRMjl2YTJsbFUzUnZjbUZuWlVGalkyVndkRkJ2Ykds
amVVNWxkbVZ5QUVNQUJ4RlVFd0FBQWdCclEwWkkKVkZSUVEyOXZhMmxsVTNSdmNtRm5aVUZqWTJW
d2RGQnZiR2xqZVU5dWJIbEdjbTl0VFdGcGJrUnZZM1Z0Wlc1MFJHOXRZV2x1QUJzQQpCeEh3RWdB
QUFRQlFRVkpUUlY5RFFVNVBUa2xEUVV4SldrVUFGd0FIRWZBU0FBQUNBRkJCVWxORlgwWlNTVVZP
UkV4WkFCc0FCeEh3CkVnQUFBd0JRUVZKVFJWOVRSVU5WVWtsVVdWOVZVa3dBR3dBSEVmQVNBQUFF
QUZCQlVsTkZYMUpQVDFSRVQwTlZUVVZPVkFBWEFBY1IKOEJJQUFBVUFVRUZTVTBWZlJFOURWVTFG
VGxRQUpnQU5FWkFVQUFBQUFBQUFBQUJmYVcxd1gxOXJRMFpCYkd4dlkyRjBiM0pFWldaaApkV3gw
QUJVQUJ4SHdFZ0FBQndCUVFWSlRSVjlGVGtOUFJFVUFGUUFIRWZBU0FBQUlBRkJCVWxORlgwUkZR
MDlFUlFBY0FBY1I4QklBCkFBa0FVRUZTVTBWZlVFRlVTRjlHVWs5TlgxVlNUQUFjQUFjUjhCSUFB
QW9BVUVGU1UwVmZWVkpNWDBaU1QwMWZVRUZVU0FBVEFBY1IKOEJJQUFBc0FVRUZTVTBWZlRVbE5S
UUFWQUFjUjhCSUFBQXdBVUVGU1UwVmZVMFZTVmtWU0FCVUFCeEh3RWdBQURRQlFRVkpUUlY5VApR
MGhGVFVFQUV3QUhFZkFTQUFBT0FGQkJVbE5GWDFOSlZFVUFGUUFIRWZBU0FBQVBBRkJCVWxORlgw
UlBUVUZKVGdBWEFBY1I4QklBCkFCQUFVRUZTVTBWZlRFOURRVlJKVDA0QUhnQUhFZkFTQUFBUkFG
QkJVbE5GWDFORlExVlNTVlJaWDBSUFRVRkpUZ0FWQUFjUjhCSUEKQUJJQVVFRlNVMFZmUlZORFFW
QkZBQlFBQnhINkV3QUFBUUJRVTFWZlJFVkdRVlZNVkFBZ0FBY1J6UlFBQUFvQVVWVkZVbGxmU1ZO
ZgpTVTVUVkVGTVRFVkVSVTVVVWxrQUtnQUhFVUlUQUFBQkFHdERSMFp2Ym5SU1pXNWtaWEpwYm1k
VGRIbHNaVUZ1ZEdsaGJHbGhjMmx1Clp3QXhBQWNSUWhNQUFBUUFhME5IUm05dWRGSmxibVJsY21s
dVoxTjBlV3hsVTNWaWNHbDRaV3hRYjNOcGRHbHZibWx1WndBeUFBY1IKUWhNQUFBZ0FhME5IUm05
dWRGSmxibVJsY21sdVoxTjBlV3hsVTNWaWNHbDRaV3hSZFdGdWRHbDZZWFJwYjI0QUpRQUhFZm9T
QUFBUQpBR3REUjBadmJuUlRiVzl2ZEdocGJtZFRkSGxzWlUxcGJtbHRkVzBBSXdBSEVmb1NBQUFn
QUd0RFIwWnZiblJUYlc5dmRHaHBibWRUCmRIbHNaVXhwWjJoMEFDUUFCeEg2RWdBQU1BQnJRMGRH
YjI1MFUyMXZiM1JvYVc1blUzUjViR1ZOWldScGRXMEFJd0FIRWZvU0FBQkEKQUd0RFIwWnZiblJU
Ylc5dmRHaHBibWRUZEhsc1pVaGxZWFo1QUNZQUJ4SDRFd0FBQUFCclEwZFRkSGxzWlVSeVlYZFBj
bVJsY21sdQpaMU4wZVd4bFQyNXNlUUFpQUFjUitCTUFBQUVBYTBOSFUzUjViR1ZFY21GM1QzSmta
WEpwYm1kQ1pXeHZkd0FZQUFjUk9oUUFBQU1BClZFdEpUa1JmU1U1VVJWSkdRVU5GQUJjQUJ4RTZG
QUFBQkFCVVMwbE9SRjlFU1ZOUVFWUkRTQUFVQUFjUk9oUUFBQVlBVkV0SlRrUmYKUVV4SlFWTUFI
d0FIRWZRU0FBQUFBRVpGUVZSVlVrVmZUMEpLUlVOVVgwTkJRMGhKVGtjQUh3QUhFZlFTQUFBQkFF
WkZRVlJWVWtWZgpXazlPUlY5RlRFVldRVlJKVDA0QUhnQUhFZlFTQUFBQ0FFWkZRVlJWVWtWZlRV
bE5SVjlJUVU1RVRFbE9Sd0FlQUFjUjlCSUFBQU1BClJrVkJWRlZTUlY5TlNVMUZYMU5PU1VaR1NV
NUhBQ1FBQnhIMEVnQUFCQUJHUlVGVVZWSkZYMWRKVGtSUFYxOVNSVk5VVWtsRFZFbFAKVGxNQUZn
QUhFZjRTQUFBQUFFTkpVRjlFU1ZOTFgwWlZURXdBR2dBSEVmNFNBQUFCQUVOSlVGOUJRME5GVTFO
ZlJFVk9TVVZFQUNZQQpCeEgwRWdBQUJRQkdSVUZVVlZKRlgxZEZRazlEWDFCUFVGVlFUVUZPUVVk
RlRVVk9WQUFoQUFjUi9oSUFBQUlBUTBsUVgwNUZWMFZTClgxWkZVbE5KVDA1ZlJWaEpVMVJUQUJv
QUJ4SDBFZ0FBQmdCR1JVRlVWVkpGWDBKRlNFRldTVTlTVXdBa0FBY1I5QklBQUFjQVJrVkIKVkZW
U1JWOUVTVk5CUWt4RlgwMUxYMUJTVDFSUFEwOU1BQ0VBQnhIK0VnQUFBd0JEU1ZCZlQweEVSVkpm
VmtWU1UwbFBUbDlGV0VsVApWRk1BR2dBSEVmNFNBQUFFQUVOSlVGOU9RVTFGWDBOUFRrWk1TVU5V
QUNZQUJ4SDBFZ0FBQ0FCR1JVRlVWVkpGWDB4UFEwRk1UVUZEClNFbE9SVjlNVDBOTFJFOVhUZ0F4
QUFjUi9oSUFBQVVBUTBsUVgxUlNWVk5VWDFaRlVrbEdTVU5CVkVsUFRsOURUMDFRVDA1RlRsUmYK
VFVsVFUwbE9Sd0FkQUFjUjlCSUFBQWtBUmtWQlZGVlNSVjlUUlVOVlVrbFVXVUpCVGtRQUt3QUhF
ZjRTQUFBR0FFTkpVRjlGV0VWZgpVMFZNUmw5U1JVZEpVMVJGVWtGVVNVOU9YMVJKVFVWUFZWUUFL
QUFIRWZRU0FBQUtBRVpGUVZSVlVrVmZVa1ZUVkZKSlExUmZRVU5VClNWWkZXRWxPVTFSQlRFd0FI
QUFIRWY0U0FBQUhBRU5KVUY5VlRsTkJSa1ZmVkU5ZlFVSlBVbFFBSmdBSEVmUVNBQUFNQUVaRlFW
UlYKVWtWZlVrVlRWRkpKUTFSZlJrbE1SVVJQVjA1TVQwRkVBQmdBQnhIK0VnQUFDQUJEU1ZCZlRr
VkZSRjlTUlVKUFQxUUFJUUFIRWZRUwpBQUFOQUVaRlFWUlZVa1ZmUVVSRVQwNWZUVUZPUVVkRlRV
Vk9WQUFpQUFjUjlCSUFBQTRBUmtWQlZGVlNSVjlRVWs5VVQwTlBURjlNClQwTkxSRTlYVGdBdkFB
Y1I5QklBQUE4QVJrVkJWRlZTUlY5SVZGUlFYMVZUUlZKT1FVMUZYMUJCVTFOWFQxSkVYMFJKVTBG
Q1RFVUEKSWdBSEVmUVNBQUFRQUVaRlFWUlZVa1ZmVTBGR1JWOUNTVTVFVkU5UFFrcEZRMVFBSXdB
SEVmUVNBQUFSQUVaRlFWUlZVa1ZmVlU1RApYMU5CVmtWRVJrbE1SVU5JUlVOTEFDOEFCeEgwRWdB
QUVnQkdSVUZVVlZKRlgwZEZWRjlWVWt4ZlJFOU5YMFpKVEVWUVFWUklYMVZPClJVNURUMFJGUkFB
WEFBY1JoaElBQUFBQWEwaFVWRkJNYjJGa1YybGtkR2dBSUFBSEViTVVBQUFFQUVSRlUwTkxTVTVF
WDBsTlVFeEoKUTBsVVFWQlFUMEpLQUIwQUJ4R2lGQUFBQWdCRFQxSmZWa1ZTVTBsUFRsOU5RVXBQ
VWw5V01nQXdBQTBSQVJNQUFBQUFBQUFBQUY5cApiWEJmWDJ0RFJsTjBjbVZoYlZCeWIzQmxjblI1
UTA5T1RrVkRWRkJ5YjNoNUFEUUFEUkVCRXdBQUFBQUFBQUFBWDJsdGNGOWZhME5HClUzUnlaV0Z0
VUhKdmNHVnlkSGxEVDA1T1JVTlVVSEp2ZUhsSWIzTjBBRFFBRFJFQkV3QUFBQUFBQUFBQVgybHRj
RjlmYTBOR1UzUnkKWldGdFVISnZjR1Z5ZEhsRFQwNU9SVU5VVUhKdmVIbFFiM0owQUR3QURSRUJF
d0FBQUFBQUFBQUFYMmx0Y0Y5ZmEwTkdVM1J5WldGdApVSEp2Y0dWeWRIbERUMDVPUlVOVVFXUmth
WFJwYjI1aGJFaGxZV1JsY25NQU13QU5FUUVUQUFBQUFBQUFBQUJmYVcxd1gxOXJRMFpUCmRISmxZ
VzFRY205d1pYSjBlVU5QVGs1RlExUlNaWE53YjI1elpRQVZBQWNSclJFQUFBQUFWVjlhUlZKUFgw
VlNVazlTQUJFQUJ4SDIKRWdBQUFRQkRRMTlEUkVWRFRBQVZBQWNSOWhJQUFBSUFRME5mVFZORFVF
RlRRMEZNQUJJQUJ4SDJFZ0FBQWdCRFExOVFRVk5EUVV3QQpGUUFIRWZZU0FBQURBRU5EWDAxQlEx
QkJVME5CVEFBVEFBY1I5aElBQUFRQVEwTmZVMVJFUTBGTVRBQVdBQWNSOWhJQUFBVUFRME5mClJs
QkdRVk5VUTBGTVRBQVRBQWNSOWhJQUFBWUFRME5mVTFsVFEwRk1UQUFVQUFjUjloSUFBQWNBUTBO
ZlRWQlhRMFJGUTB3QUZRQUgKRWZZU0FBQUlBRU5EWDAxUVYxQkJVME5CVEFBakFBY1IrQklBQUFF
QWEwTldWR2x0WlZOMFlXMXdWbWxrWlc5VWFXMWxWbUZzYVdRQQpLZ0FIRWEwUkFBQUVnQUVCQVFC
VlgwMVZURlJKVUV4RlgwUkZRMGxOUVV4ZlUwVlFRVkpCVkU5U1V3QWlBQWNSK0JJQUFBSUFhME5X
ClZHbHRaVk4wWVcxd1NHOXpkRlJwYldWV1lXeHBaQUFoQUFjUitCSUFBQVNBQUFBQkFHdERWbFJw
YldWVGRHRnRjRlJ2Y0VacFpXeGsKQUNRQUJ4SDRFZ0FBQklBQUFBSUFhME5XVkdsdFpWTjBZVzF3
UW05MGRHOXRSbWxsYkdRQUV3QUhFZFFVQUFBQkFGWkJVbDlUVkVGVQpTVU1BSkFBSEVhMFJBQUFF
Z0FBRUFRQlZYMGxFVGtGZlVGSlBTRWxDU1ZSRlJGOUZVbEpQVWdBa0FBY1JyUkVBQUFTQUFRUUJB
RlZmClNVUk9RVjlWVGtGVFUwbEhUa1ZFWDBWU1VrOVNBQ1FBQnhHdEVRQUFCSUFDQkFFQVZWOUpS
RTVCWDBOSVJVTkxYMEpKUkVsZlJWSlMKVDFJQUh3QUhFYTBSQUFBRWdBa0VBUUJWWDBsRVRrRmZS
VkpTVDFKZlRFbE5TVlFBR1FBSEVVNFRBQUFBRUZWRFNFRlNYMEpKUkVsZgpRMHhCVTFNQUV3QUlF
UVlWQUFCMFlXZFFRVkpCVFVSRlUwTUFGUUFJRVFvVkFBQjBZV2RRUVZKQlRVUkZVME5GV0FBUkFB
Z1JDQlVBCkFIUmhaMEpKVGtSUVZGSUFGQUFJRVFRVkFBQk1VRkJCVWtGTlJFVlRRMFZZQUE4QUNC
SDJFZ0FBUTBGTVRFTlBUbFlBRGdBSUVRZ1YKQUFCQ1NVNUVVRlJTQUE4QUNCRTZGQUFBVkZsUVJV
dEpUa1FBRHdBSUVZc1VBQUJHVlU1RFMwbE9SQUFRQUFnUkJoVUFBRkJCVWtGTgpSRVZUUXdBUUFB
Z1JmUklBQUVoSlRsTlVRVTVEUlFBU0FBZ1JoUlFBQUhSaFoxUk1TVUpCVkZSU0FBOEFDQkVBRlFB
QVJVeEZUVVJGClUwTUFDZ0FJRWNVUUFBQlRUa0lBRVFBSUVkSVFBQUJXUVZKSlFVNVVRVkpIQUJV
QUNCR21GQUFBVTBGR1JVRlNVa0ZaUWs5VlRrUUEKRWdBSUVRQVZBQUIwWVdkRlRFVk5SRVZUUXdB
UEFBZ1JzeFFBQUVSRlUwTkxTVTVFQUE4QUNCR3RGQUFBVkZsUVJVUkZVME1BRXdBSQpFZkVVQUFC
MFlXZEZXRU5GVUVsT1JrOEFFUUFJRWY0VEFBQjBZV2RUVkVGVVUxUkhBQkFBQ0JFaUFBQUFWVXhQ
VGtkZlVGUlNBQTRBCkNCSFVGQUFBVmtGU1MwbE9SQUFUQUFnUi9SUUFBRU5HUW05dmJHVmhibEps
WmdBUEFBZ1JjUVFBQUV4UVQweEZVMVJTQUJJQUNCSDQKRkFBQWRHRm5SbFZPUTBSRlUwTUFEQUFJ
RVNJQUFBQlZURTlPUndBUkFBZ1JxQlFBQUhSaFowbEVURVJGVTBNQUtnQUlFVkVTQUFCRApSa1Jw
WTNScGIyNWhjbmxEYjNCNVJHVnpZM0pwY0hScGIyNURZV3hzUW1GamF3QUtBQWdSU0JBQUFFbEpS
QUFkQUFnUlpoSUFBRU5HClNGUlVVRU52YjJ0cFpWTjBiM0poWjJWU1pXWUFEd0FJRVJNQUFBQk1U
MDVIVEU5T1J3QVpBQWdSL0JRQUFIUmhaMEZ3Y0d4cFkyRjAKYVc5dVZIbHdaUUFRQUFnUjNoSUFB
SFJoWjBOQlFsTlVVZ0FXQUFnUlBSSUFBRU5HUkdsamRHbHZibUZ5ZVZKbFpnQWFBQWdSK2hRQQpB
RkJKUkUxVFNWOVRWRUZVVlZOZlZrRk1WVVVBRXdBSUVTRUFBQUJRVWs5UVZrRlNYMUJCUkRNQURR
QUlFUU1FQUFCTVVGWlBTVVFBCkRBQUlFZk1SQUFCZlRVRlVNZ0FQQUFnUitCUUFBRVpWVGtORVJW
TkRBQkVBQ0JFSEV3QUFkR0ZuUTBGRFRGTkpSQUFQQUFnUkRCTUEKQUhSaFowTkJSRUpNQUE4QUNC
RUlGQUFBYzI5amEyRmtaSElBR0FBSUVSOFFBQUJzYjJOaGJHVnBibVp2WDNOMGNuVmpkQUFOQUFn
UgpJZ0FBQUZOSldrVmZWQUFPQUFnUklBQUFBRUpQVDB4RlFVNEFGQUFJRVdzU0FBQkRSbFZTVEVO
aFkyaGxVbVZtQUE4QUNCRWlBQUFBClNGSkZSbFJaVUVVQUd3QUlFWFVBQUFCRFIwWnZiblJTWlc1
a1pYSnBibWRUZEhsc1pRQVVBQWdSbUJFQUFFTkhSblZ1WTNScGIyNVMKWldZQUN3QUlFWTBVQUFC
RFFWVkNBQXdBQ0JGeEFBQUFWVU5vWVhJQUVnQUlFVG9VQUFCMFlXZFVXVkJGUzBsT1JBQVNBQWdS
ZXhFQQpBRU5IVFVRMVJHbG5aWE4wQUJJQUNCR3pGQUFBZEdGblJFVlRRMHRKVGtRQURnQUlFY0VU
QUFCMFlXZERRVU5aQUJJQUNCRWhBQUFBClEwZEdiMjUwU1c1a1pYZ0FIZ0FJRVo0UkFBQkRSME52
Ykc5eVUzQmhZMlZRWVhSMFpYSnVSR0YwWVFBV0FBZ1JteElBQUVOR1VtVmgKWkZOMGNtVmhiVkps
WmdBUkFBZ1JneFFBQUhSaFoxTlpVMHRKVGtRQUZ3QUlFZndUQUFCQ1NWUk5RVkJKVGtaUFNFVkJS
RVZTQUJZQQpDQkgxRkFBQWRHRm5XRTFNUlUxRlRWOVVXVkJGQUE0QUNCRnhBQUFBVDB4RlEwaEJV
Z0FSQUFnUjFCUUFBSFJoWjFaQlVrdEpUa1FBCkVBQUlFZk1VQUFCZlExWlNaWFIxY200QUp3QUlF
WFFBQUFCRFIwTnZiRzl5UTI5a1pVWnlZV2R0Wlc1MFZHVjRkSFZ5WlVadmNtMWgKZEFBT0FBZ1Jk
QUFBQUdWeWNtNXZYM1FBRUFBSUVmRVVBQUJGV0VORlVFbE9SazhBRFFBSUVRc1FBQUJNVUVOVFZG
SUFFQUFJRVQ0VApBQUJmUmtsTVJWUkpUVVVBRUFBSUVTTUFBQUJWVEU5T1IweFBUa2NBRGdBSUVk
WVVBQUJXUVZKRVJWTkRBQkFBQ0JFcEVBQUFURkJEClQweEZVMVJTQUF3QUNCRndCQUFBVEZCVFZG
SUFEQUFJRWV3VUFBQnNZMjl1ZGdBUEFBZ1I2aFFBQUVsVmJtdHViM2R1QUE4QUNCRVMKQUFBQVRV
Vk5Ra1ZTU1VRQUV3QUlFZG9VQUFCMFlXZEJVbEpCV1VSRlUwTUFJQUFJRWFJUkFBQkRSME52Ykc5
eVEyOWtaVVp5WVdkdApaVzUwVFdGMGNtbDRBQjBBQ0JGY0VnQUFRMFpOZFhSaFlteGxSR2xqZEds
dmJtRnllVkpsWmdBTkFBZ1JRUUFBQUVSUFZVSk1SUUFSCkFBZ1IxaFFBQUhSaFoxWkJVa1JGVTBN
QUNRQUlFY2NVQUFCRFdRQVVBQWdSMFJRQUFIUmhaMEpKVGtSVFZGSkpUa2NBRVFBSUVjOFUKQUFC
VlRHbHVaVUp5WldGckFBNEFDQkZDRkFBQVJFVkRTVTFCVEFBUkFBZ1JJZ0FBQUVOR1NHRnphRU52
WkdVQUlRQUlFVnNTQUFCRApSa1JwWTNScGIyNWhjbmxXWVd4MVpVTmhiR3hDWVdOcmN3QVZBQWdS
SFJBQUFIQjBhSEpsWVdSdFltTnBibVp2QUE0QUNCRXBFQUFBClRGQkRWMU5VVWdBT0FBZ1JneFFB
QUZOWlUwdEpUa1FBQ3dBSUVlQVNBQUJEUVZWTUFBOEFDQkdIRkFBQVFsTlVVa0pNVDBJQURRQUkK
RVVvVEFBQjBZV2REUVVnQUVBQUlFUThTQUFCRFJrUmhkR0ZTWldZQURnQUlFWFVBQUFCeWMybDZa
VjkwQUJZQUNCSE5GQUFBWDNSaApaMUZWUlZKWlQxQlVTVTlPQUEwQUNCRjFBQUFBVlVsdWRETXlB
Qm9BQ0JHSEVRQUFRMGREYjJ4dmNsTndZV05sVEdGaVJHRjBZUUFYCkFBZ1J5eFFBQUY5RFIwbHVk
R1Z5Ym1Gc1JYSnliM0lBREFBSUVjY1VBQUIwWVdkRFdRQVFBQWdSeFJRQUFFbFVlWEJsUTI5dGNB
QWsKQUFnUmd4RUFBRU5IUTI5c2IzSlRjR0ZqWlVOaGJHbGljbUYwWldSU1IwSkVZWFJoQUFzQUNC
RjBBQUFBUWs5UFRBQWRBQWdSZEJJQQpBRU5HVFhWMFlXSnNaVlZTVEZKbGNYVmxjM1JTWldZQURn
QUlFZklUQUFCMFlXZERRVlZKQUJJQUNCRWlBQUFBVTBWU1ZrbERSVlJaClVFVUFGZ0FJRVhFU0FB
QkRSbFZTVEZKbGNYVmxjM1JTWldZQUZBQUlFUU1VQUFCMFlXZERRVVpKVEVWVVNVMUZBQlFBQ0JF
QUZBQUEKZEdGblJFbFRVRkJCVWtGTlV3QVRBQWdSRVFBQUFGWkJVa2xCVGxSZlFrOVBUQUFMQUFn
UklnQUFBRXhEU1VRQUV3QUlFZllUQUFCMApZV2RUUVVaRlFWSlNRVmtBRWdBSUVjb1FBQUJRVWs5
UVZrRlNTVUZPVkFBVUFBZ1JHQk1BQUVOQlVGSlBVRlpCVWtsQlRsUUFFZ0FJCkVUOFJBQUJEUmxO
MGNtbHVaMUpsWmdBUUFBZ1JzUlFBQUhSaFoxUlpVMUJGUXdBU0FBZ1JyUlFBQUhSaFoxUlpVRVZF
UlZOREFCSUEKQ0JGQUZBQUFkR0ZuUTB4SlVFUkJWRUVBRFFBSUVURVVBQUJEUVVSQlZFVUFId0FJ
RVZZU0FBQkRSa1JwWTNScGIyNWhjbmxJWVhObwpRMkZzYkVKaFkyc0FFUUFJRVZBVEFBQjBZV2RT
UjBKUlZVRkVBQlVBQ0JIRkVRQUFURkJIVEZsUVNFMUZWRkpKUTFNQURRQUlFUVVUCkFBQjBZV2RE
UVVNQUVBQUlFUUVRQUFCRFJsUjVjR1ZTWldZQUZ3QUlFVllSQUFCRFJsTjNZWEJ3WldSR2JHOWhk
RE15QUJNQUNCSHcKRVFBQVIweFpVRWhOUlZSU1NVTlRBQThBQ0JFaEFBQUFkV2x1ZERFMlgzUUFE
UUFJRVJNQUFBQjBhVzFsWDNRQURnQUlFY3dSQUFCSQpRa2xVVFVGUUFBNEFDQkYwQUFBQWFXNTBN
ekpmZEFBT0FBZ1JxQlFBQUVsRVRFUkZVME1BRWdBSUVUNFVBQUIwWVdkVVdWQkZRVlJVClVnQVlB
QWdScGhRQUFIUmhaMU5CUmtWQlVsSkJXVUpQVlU1RUFCSUFDQkdnRWdBQVEwWk9kVzFpWlhKU1pX
WUFEZ0FJRVFNVEFBQjAKWVdkQ1RFOUNBQkVBQ0JHa0ZBQUFkR0ZuVlZKTVdrOU9SUUFPQUFnUkF3
UUFBRWhIUkVsUFFrb0FGUUFJRVlFVUFBQmZURUZTUjBWZgpTVTVVUlVkRlVnQWpBQWdSb2hRQUFG
SmxjR3hoWTJWelEyOXlTR1J5VG5WdFpYSnBZMFJsWm1sdVpYTUFGZ0FJRVRBVUFBQmZWVXhCClVr
ZEZYMGxPVkVWSFJWSUFJQUFJRVk0U0FBQkRSbFZTVEVOeVpXUmxiblJwWVd4VGRHOXlZV2RsVW1W
bUFCWUFDQkdQRVFBQVEwZEQKYjJ4dmNsTndZV05sVW1WbUFCZ0FDQkdnRkFBQVNWTmxjWFZsYm5S
cFlXeFRkSEpsWVcwQURnQUlFVUFBQUFCRFIwWnNiMkYwQUE4QQpDQkYxQUFBQWRXbHVkRE15WDNR
QUR3QUlFU01BQUFCMWFXNTBOalJmZEFBVkFBZ1JRUUFBQUVOR1ZHbHRaVWx1ZEdWeWRtRnNBQTRB
CkNCR1BGQUFBVmtGU1JVNVZUUUFNQUFnUld4TUFBRXhEWDBsRUFBMEFDQkgvRWdBQWRHRm5RMEZK
QUE0QUNCSG1FQUFBWDFkVFFVSlYKUmdBTUFBZ1IvQklBQUZCUFNVNVVBQTRBQ0JHTkZBQUFkR0Zu
UTBGVlFnQVRBQWdSOWhFQUFFTkhRMjl1ZEdWNGRGSmxaZ0FTQUFnUgppeFFBQUhSaFowWlZUa05M
U1U1RUFBNEFDQkVwRUFBQVVFTlZWMU5VVWdBbEFBZ1JmeEVBQUVOSFEyOXNiM0pUY0dGalpVTmhi
R2xpCmNtRjBaV1JIY21GNVJHRjBZUUFTQUFnUnF4QUFBRXhRVTBGR1JVRlNVa0ZaQUE0QUNCRWdB
QUFBUW05dmJHVmhiZ0FVQUFnUjhCRUEKQUY5SFRGbFFTRTFGVkZKSlExTUFEZ0FJRVc0UkFBQkRS
MUJ2YVc1MEFCSUFDQkdKRkFBQVgxVlNURnBQVGtWU1JVY0FEZ0FJRWQwUQpBQUJwYmw5aFpHUnlB
QjhBQ0JGWUVnQUFRMFpFYVdOMGFXOXVZWEo1UzJWNVEyRnNiRUpoWTJ0ekFBNEFDQkVnQUFBQWRX
bHVkRGhmCmRBQVdBQWdScnhJQUFFTkJTVzFoWjJWUmRXVjFaVkpsWmdBU0FBZ1JoeFFBQUhSaFow
SlRWRkpDVEU5Q0FBOEFDQkdGRkFBQVZFeEoKUWtGVVZGSUFGQUFJRVlFVUFBQk1RVkpIUlY5SlRs
UkZSMFZTQUJNQUNCRjlGQUFBU1VWdWRXMVRWRUZVVTFSSEFBNEFDQkVoQUFBQQpWa0ZTVkZsUVJR
QVFBQWdSZEFBQUFIQjBjbVJwWm1aZmRBQVlBQWdSNmhBQUFGOVhVMEZRVWs5VVQwTlBURU5JUVVs
T0FBNEFDQkU2CkVRQUFRMFpTWVc1blpRQVBBQWdSYkJRQUFFbFVlWEJsVEdsaUFBMEFDQkZDRkFB
QWRHRm5SRVZEQUIwQUNCSHVFZ0FBZEdoeVpXRmsKYkc5allXeGxhVzVtYjNOMGNuVmpkQUFjQUFn
UnN4RUFBRU5XVUd4aGJtRnlRMjl0Y0c5dVpXNTBTVzVtYndBUEFBZ1JRQlFBQUVOTQpTVkJFUVZS
QkFBOEFDQkUrRkFBQVZGbFFSVUZVVkZJQUVRQUlFZElRQUFCMFlXZFdRVkpKUVU1VUFBMEFDQkVT
QUFBQVJFbFRVRWxFCkFBMEFDQkVoQUFBQVZWTklUMUpVQUJjQUNCRkNFZ0FBUTBaVlVreFNaWE53
YjI1elpWSmxaZ0FoQUFnUlRSSUFBRU5HUkdsamRHbHYKYm1GeWVWSmxkR0ZwYmtOaGJHeENZV05y
QUF3QUNCRURCQUFBVUZaUFNVUUFFQUFJRVRFVUFBQjBZV2REUVVSQlZFVUFEZ0FJRVgwUwpBQUJJ
VFU5RVZVeEZBQmtBQ0JGVkVBQUFVMWxUVkVWTlgxQlBWMFZTWDFOVVFWUkZBQW9BQ0JFWkV3QUFR
MEZNQUJBQUNCRVhFQUFBClgyeHZZMkZzWlY5MEFBMEFDQkh0RVFBQVFrbFVUVUZRQUJBQUNCSGpF
QUFBWDJac2IzZHpjR1ZqQUFzQUNCSHpFUUFBVFVGVU1nQVMKQUFnUnNCRUFBRU5XVTAxUVZFVlVh
VzFsQUE0QUNCRUtFd0FBZEdGblEwRlZTQUFWQUFnUk1CUUFBRlZNUVZKSFJWOUpUbFJGUjBWUwpB
QklBQ0JFc0ZBQUFTVkpsWTI5eVpFbHVabThBRndBSUVhZ1NBQUJEUmtoVVZGQk5aWE56WVdkbFVt
Vm1BQTRBQ0JHQ0VnQUFSa0ZTClVGSlBRd0FOQUFnUmJoQUFBR3hrYVhaZmRBQU5BQWdSSVFBQUFI
ZHBiblJmZEFBT0FBZ1I0aElBQUVOQlUwTlBSRVVBRFFBSUVVQVQKQUFCZlJrbFlSVVFBRFFBSUVS
b1JBQUJmYVc5aWRXWUFEd0FJRVNJQUFBQkRUMHhQVWxKRlJnQVlBQWdSakJFQUFFTkhSR0YwWVZC
eQpiM1pwWkdWeVVtVm1BQ0lBQ0JHNUVnQUFRMEZKYldGblpWRjFaWFZsVW1Wc1pXRnpaVU5oYkd4
aVlXTnJBQmNBQ0JGZUVRQUFRMFpUCmQyRndjR1ZrUm14dllYUTJOQUFrQUFnUnVSSUFBSGRyUTBG
SmJXRm5aVkYxWlhWbFVtVnNaV0Z6WlVOaGJHeGlZV05yQUJFQUNCSHQKRUFBQVRGQlRUME5MUVVS
RVVnQVFBQWdSN1JFQUFIUmhaMEpKVkUxQlVBQVVBQWdSQlJRQUFGOWZRMFpDZVhSbFQzSmtaWElB
REFBSQpFU0FBQUFCVlEwaEJVZ0FSQUFnUjZoRUFBRUpKVkUxQlVFbE9SazhBRGdBSUVSSUFBQUJE
UmtsdVpHVjRBQkVBQ0JFREZBQUFRMEZHClNVeEZWRWxOUlFBUkFBZ1JBQlFBQUVSSlUxQlFRVkpC
VFZNQUd3QUlFVU1SQUFCRFJsTjBjbWx1WjBsdWJHbHVaVUoxWm1abGNnQVEKQUFnUnpCQUFBRXhR
VmtGU1NVRk9WQUFRQUFnUmRRQUFBRlZVUmpNeVEyaGhjZ0FNQUFnUklnQUFBRVJYVDFKRUFBNEFD
QkZ3QkFBQQpkbUZmYkdsemRBQVJBQWdSblJNQUFFbE9WazlMUlV0SlRrUUFIZ0FJRVpRUkFBQkRS
ME52Ykc5eVUzQmhZMlZKYm1SbGVHVmtSR0YwCllRQU9BQWdSL2hNQUFGTlVRVlJUVkVjQUZnQUlF
YXNSQUFCRFIwWnZiblJXWVhKcFlYUnBiMjRBRHdBSUVhc1NBQUJEUmxWU1RGSmwKWmdBTkFBZ1JB
d1FBQUVoQlRrUk1SUUFhQUFnUi9CTUFBSFJoWjBKSlZFMUJVRWxPUms5SVJVRkVSVklBRFFBSUVT
QUFBQUIxWDJObwpZWElBRWdBSUVjSVRBQUIwWVdkRFFVeFFWMU5VVWdBT0FBZ1JRQUFBQUVac2Iy
RjBNeklBQ3dBSUVTRUFBQUJYVDFKRUFCTUFDQkZQCkVBQUFVRTlYUlZKZlFVTlVTVTlPQUFzQUNC
RWdBQUFBUWxsVVJRQWdBQWdSVkJJQUFFTkdSR2xqZEdsdmJtRnllVVZ4ZFdGc1EyRnMKYkVKaFky
c0FEQUFJRVR3VEFBQkRRVVpNVkFBVUFBZ1IraE1BQUY5MFlXZFFVMVZCUTFSSlQwNEFFd0FJRVNF
QUFBQlFVazlRVmtGUwpYMUJCUkRFQURnQUlFYjhUQUFCRFFVeFFVMVJTQUJVQUNCRktFZ0FBUTBa
QmJHeHZZMkYwYjNKU1pXWUFEZ0FJRVNFQUFBQjFYM05vCmIzSjBBQkVBQ0JHdEVRQUFWVVZ5Y205
eVEyOWtaUUFNQUFnUmNRQUFBRmREU0VGU0FCNEFDQkdiRVFBQVEwZERiMnh2Y2xOd1lXTmwKUkdW
MmFXTmxUa1JoZEdFQUdnQUlFZmdUQUFCRFIxTjBlV3hsUkhKaGQwOXlaR1Z5YVc1bkFCNEFDQkdU
RWdBQVEwWlZVa3hRY205MApaV04wYVc5dVUzQmhZMlZTWldZQUVBQUlFZllUQUFCVFFVWkZRVkpT
UVZrQUVRQUlFUk1BQUFCZlgzUnBiV1UyTkY5MEFCQUFDQkh5CkVnQUFkR0ZuUTBGQ1QwOU1BQXNB
Q0JIeUV3QUFRMEZWU1FBUEFBZ1I4Qk1BQUVsVGRHOXlZV2RsQUE4QUNCRWlBQUFBUTBaVWVYQmwK
U1VRQUVRQUlFY1FUQUFCVlFteHZZMnREYjJSbEFBd0FDQkVSQUFBQVUwaFBVbFFBQ3dBSUVSSUFB
QUJNVDA1SEFBa0FDQkV4RVFBQQpkRzBBRVFBSUVYY1NBQUJEUmtGeWNtRjVVbVZtQUNNQUNCR0dF
Z0FBU0ZSVVVFTnZibTVsWTNScGIyNURZV05vWlV4cGJXbDBTMlY1CmN3QU1BQWdSUUFBQUFFWk1U
MEZVQUI4QUNCR1JFUUFBUTBkRGIyeHZjbE53WVdObFNVTkRRbUZ6WldSRVlYUmhBQThBQ0JIQ0V3
QUEKUTBGTVVGZFRWRklBRFFBSUVYRUVBQUJRVlZkVFZGSUFDd0FJRWNFVEFBQkRRVU5aQUJzQUNC
RjFBQUFBUTBkR2IyNTBVMjF2YjNSbwphVzVuVTNSNWJHVUFFQUFJRWRNUkFBQklRa2xVVFVGUVgx
OEFHUUFJRVpFU0FBQkRSbFZTVEVOeVpXUmxiblJwWVd4U1pXWUFFUUFJCkViOFRBQUIwWVdkRFFV
eFFVMVJTQUJBQUNCRzlFd0FBU1ZSNWNHVkpibVp2QUFzQUNCRkJBQUFBUkVGVVJRQU5BQWdSY1FR
QUFFeFEKVjFOVVVnQVlBQWdScVJBQUFFeFFWa1ZTVTBsUFRrVkVVMVJTUlVGTkFBNEFDQkY2RXdB
QVNWTjBjbVZoYlFBTkFBZ1JkUUFBQUhOcAplbVZmZEFBUEFBZ1JXeE1BQUhSaFoweERYMGxFQUJR
QUNCSHFFUUFBZEdGblFrbFVUVUZRU1U1R1R3QUxBQWdSUkJNQUFGSkZRMVFBCkZRQUlFY29RQUFC
MFlXZFFVazlRVmtGU1NVRk9WQUFlQUFnUldoQUFBRUpCVkZSRlVsbGZVa1ZRVDFKVVNVNUhYMU5E
UVV4RkFCb0EKQ0JGUkVBQUFVRTlYUlZKZlFVTlVTVTlPWDFCUFRFbERXUUFaQUFnUlZ4QUFBRk5a
VTFSRlRWOVFUMWRGVWw5TVJWWkZUQUFYQUFnUgpaUkFBQUZORFFWSkVYMVF3WDBOUFRVMUJUa1FB
RlFBSUVlQVFBQUJSVDFOZlQwSktSVU5VWDBoRVVnQU9BQWdST2hFQUFFTkdVbUZ1CloyVUFId0FJ
RVZnU0FBQkRSa1JwWTNScGIyNWhjbmxMWlhsRFlXeHNRbUZqYTNNQUlRQUlFVnNTQUFCRFJrUnBZ
M1JwYjI1aGNubFcKWVd4MVpVTmhiR3hDWVdOcmN3QWJBQWdSUXhFQUFFTkdVM1J5YVc1blNXNXNh
VzVsUW5WbVptVnlBQmNBQ0JGV0VRQUFRMFpUZDJGdwpjR1ZrUm14dllYUXpNZ0FYQUFnUlhoRUFB
RU5HVTNkaGNIQmxaRVpzYjJGME5qUUFDZ0FJRWJzUkFBQklSRU1BRVFBSUVSWVRBQUJEClFVSlRW
RkpDVEU5Q0FDSUFDQkZQRWdBQVEwWkVhV04wYVc5dVlYSjVVbVZzWldGelpVTmhiR3hDWVdOckFB
NEFDQkZRRXdBQVVrZEMKVVZWQlJBQWFBQWdSVVJBQUFGQlBWMFZTWDBGRFZFbFBUbDlRVDB4SlEx
a0FFQUFJRVU0VEFBQlZVSEp2Y0dWeWRIa0FHUUFJRVV3VApBQUIwWVdkV1pYSnphVzl1WldSVGRI
SmxZVzBBQ2dBSUVVb1RBQUJEUVVnQURBQUlFVWdRQUFCZlIxVkpSQUFPQUFnUlJCTUFBSFJoClox
SkZRMVFBREFBSUVVQVRBQUJHU1ZoRlJBQU5BQWdSY1JFQUFFTkhVMmw2WlFBUEFBZ1JQaE1BQUVa
SlRFVlVTVTFGQUE4QUNCRTgKRXdBQWRHRm5RMEZHVEZRQUZBQUlFUTRUQUFCMFlXZERRVU5NU1ZC
RVFWUkJBQmdBQ0JGM0VRQUFRMGRCWm1acGJtVlVjbUZ1YzJadgpjbTBBRkFBSUVUb1RBQUIwWVdk
Q1NVNUVVMVJCVkZWVEFCOEFDQkdsRVFBQVEwZERiMnh2Y2tOdlpHVkdjbUZuYldWdWRFTjFjblps
CkFBNEFDQkhTRUFBQVZrRlNTVUZPVkFBT0FBZ1JJUUFBQUVOSFIyeDVjR2dBRUFBSUVUZ1RBQUJK
UkdsemNHRjBZMmdBRlFBSUVSMFQKQUFCMFlXZEVUMDFPYjJSbFZIbHdaUUFXQUFnUkd4TUFBSFJo
WjFOb2RYUmtiM2R1Vkhsd1pRQU1BQWdSRWdBQUFGTkRUMFJGQUEwQQpDQkVaRXdBQWRHRm5RMEZN
QUJjQUNCRVlFd0FBZEdGblEwRlFVazlRVmtGU1NVRk9WQUFMQUFnUmNRUUFBRUpUVkZJQUN3QUlF
Um9SCkFBQkdTVXhGQUEwQUNCRVJBQUFBVTBsdWRERTJBQkFBQ0JFSEVnQUFRMGRHYjI1MFVtVm1B
QlFBQ0JFV0V3QUFkR0ZuUTBGQ1UxUlMKUWt4UFFnQUtBQWdSZEFBQUFFbE9WQUFVQUFnUkVCTUFB
SFJoWjBOSVFVNUhSVXRKVGtRQUVRQUlFUTRUQUFCRFFVTk1TVkJFUVZSQgpBQXdBQ0JFTUV3QUFR
MEZFUWt3QUZnQUlFZThRQUFCZlUwOURTMFZVWDBGRVJGSkZVMU1BQ3dBSUVRb1RBQUJEUVZWSUFB
c0FDQkZJCkVBQUFSMVZKUkFBT0FBZ1JCeE1BQUVOQlEweFRTVVFBQ3dBSUVYQUFBQUJEU0VGU0FB
d0FDQkVnQUFBQVZVbHVkRGdBREFBSUViOFIKQUFCSVJFTmZYd0FLQUFnUkJSTUFBRU5CUXdBTEFB
Z1JBeE1BQUVKTVQwSUFFZ0FJRVlBU0FBQklTVTVUVkVGT1EwVmZYd0FPQUFnUgpJUUFBQUZWdWFV
Tm9ZWElBQ2dBSUVmOFNBQUJEUVVrQURBQUlFVWdRQUFCRFRGTkpSQUFUQUFnUklRQUFBRkJTVDFC
V1FWSmZVRUZFCk1nQU9BQWdSYmhBQUFGOXNaR2wyWDNRQUh3QUlFZjRTQUFCZlgwMUpSRXhmU1VO
dlpHVkpibk4wWVd4c1h6QXdNREVBSndBSUVhZ1IKQUFCRFIwTnZiRzl5UTI5a1pVWnlZV2R0Wlc1
MFRHOXZhM1Z3VkdWNGRIVnlaUUFQQUFnUi9CSUFBSFJoWjFCUFNVNVVBQTRBQ0JFUwpBQUFBU0ZK
RlUxVk1WQUFMQUFnUmRRQUFBRlZKVGxRQURRQUlFU0lBQUFCMVgyeHZibWNBRWdBSUVmWVNBQUIw
WVdkRFFVeE1RMDlPClZnQWVBQWdSOUJJQUFGOTBZV2RKVGxSRlVrNUZWRVpGUVZSVlVrVk1TVk5V
QUEwQUNCSHlFZ0FBUTBGQ1QwOU1BQllBQ0JId0VnQUEKWDNSaFoxQkJVbE5GUVVOVVNVOU9BQTRB
Q0JGQkFBQUFSbXh2WVhRMk5BQVJBQWdST0JJQUFFTkhRMjlzYjNKU1pXWUFGUUFJRVJzUQpBQUJ3
ZEdoeVpXRmtiRzlqYVc1bWJ3QVJBQWdSNGhJQUFIUmhaME5CVTBOUFJFVUFEZ0FJRWVBU0FBQjBZ
V2REUVZWTUFBMEFDQkhlCkVnQUFRMEZDVTFSU0FBMEFDQkYwRVFBQVEwZFNaV04wQVBRQUFBQVFG
d0FBQVFBQUFCQUJaaHNsWHJXeFpLWE5jOVhLcCtDMnRRQUEKTlFBQUFCQUJ4Y3IzM0MxZzRLSUNv
M3dXRXVXMG5nQUFhUUFBQUJBQmtRNU5mSTlYZjgzQU5WcFNJU2dWS3dBQW1BQUFBQkFCWkxsdwph
R3dCanhsWjNvT0xkeHlJYndBQTFRQUFBQkFCZVhMc3hSaXdnYkViRktMVGRIM1kxZ0FBQ0FFQUFC
QUJzUXYybDk5MDZYUFExdWhYCk94am5tQUFBT3dFQUFCQUJNMVF1anZzNDBWL3M3cXJYNnF3Q0lB
QUFaZ0VBQUJBQk5CaGdIWHFGbmYxdG4zbVBPbVdiemdBQWxRRUEKQUJBQk55U0N6aTRmdXltaHJj
dGorVlVYcEFBQXl3RUFBQkFCcmVUTFBlRzZYY1I2OTFaWWpQWTBjZ0FBQ1FJQUFCQUJLcXE5Qnl4
RgpGMHdPMlMxbWtBdC9LUUFBUXdJQUFCQUJ3T0RhM2Evakhib01YV1BwOXJRSGFBQUFkQUlBQUJB
Qnh1WCtnWU5qYm1LVnJYSDlPV0ZjCnRnQUFtZ0lBQUJBQkVxRWVTVGs2VTdwS2picVJVYVppWEFB
QXpBSUFBQkFCQzRVbllmSExacXRqdHdLcmJ2Wk9XUUFBL2dJQUFCQUIKdGlkaVE0VzFVdm9jSllZ
VVZyUEZZZ0FBTFFNQUFCQUI0bFF4QzlwYVFvVW5PdERHTmZoOXlRQUFhZ01BQUJBQk1BQXNBSnVw
ZUdJMQpydndMQnRlSEZBQUFtZ01BQUJBQkdOR3lFeXlnZDZOanJNdWc4NFY5a3dBQTBnTUFBQkFC
RC9HTEdTSGNYTnZtYlhOQTNDUnFxZ0FBCkFnUUFBQkFCZ25zcDhvT1ZxVlU2bzRLY01RVVZDZ0FB
T3dRQUFCQUJpQVphMXE5M3RoUjJ3Q0ZPckJKMUlnQUFlUVFBQUJBQkpBNksKS2ZUZEkzalEyODlh
NG55a2JRQUFyQVFBQUJBQmdZY2tXSWttcVZiL0ZQbFlCQUVUNmdBQTN3UUFBQkFCNFRvb2I3RTFC
L0czeCtDWQp6SjRtc1FBQUVRVUFBQkFCN0hsTUNicm9FUWFITGlWU0lSSUcxd0FBUkFVQUFCQUI5
a1FyVW93SE5CQ2pOa1p3alREV0NnQUFkd1VBCkFCQUJxbFdoZDdGY3hkSXlieXA0K1g1SWRRQUFy
QVVBQUJBQnl0NStZd2lDbnpFTUt6UTZXYUJTQ3dBQTFnVUFBQkFCODU2VGt5dmgKVko1R2diNHNz
UHdsOWdBQUNnWUFBQkFCVWswVFZOZ05HWWp3WXR1ZWZUM1JTUUFBUVFZQUFCQUJ2MEtYTWNiRUUz
TjhxUzhFNXovawp6QUFBZEFZQUFCQUJ1eGlFZGZCdUo5WGVOOUV6NkhJS1dRQUFwZ1lBQUJBQldk
SUdJcUpWMi80MUdjUUpVZ1RYc0FBQTJnWUFBQkFCCkUvTE8xS3VkbStzYWtkcVZBdW04WUFBQURn
Y0FBQkFCN09rNDBIaG9vK1E3QWxzdWJYYk53QUFBUlFjQUFCQUJ6Rm05dDFuYUt6VGwKSGp5Nlgr
THQ5Z0FBZGdjQUFCQUJQS3VHUFlFd0NDMG1aa3VVUG5yblhRQUFxQWNBQUJBQlU3RmMzN3F5c2c0
NmZiUmNVMXpma3dBQQozQWNBQUJBQjA4MjdtQkcxWjRBZnZmZmlzWUV3Z1FBQUV3Z0FBQkFCK1pW
b3ArV2tOU1IvRmp2ZXRGSUVsd0FBUWdnQUFCQUIvWGVyCm8rcjE3YjloeVo5UUNYcCthQUFBYVFn
QUFCQUJkTTVkVFZHcTZCaGUwV1VWbHBBUi9BQUFuQWdBQUJBQkU1cnM4VmFMMFRRR3VxYVgKbDBX
Zk5RQUF6d2dBQUJBQlFOTHBFNmk2aW05OEJ2NmFYZnIyN0FBQUNRa0FBQkFCcngxc2JnN1dLTGda
NkdiMzcxK0ROUUFBUGdrQQpBQkFCOHFmY21BL2FIeFR5aGxKNEgza09hd0FBZVFrQUFCQUJ2TENJ
dXY2V083VXk2ZHlKV1o2eGN3QUFyQWtBQUJBQjFyaEJYdFlaCnovRTdrMFFzbVRkSEF3QUEyQWtB
QUJBQmpXcGxzeTd2MlowS283UDNOaVB0OFFBQS9na0FBQkFCYlZzMytndmxsYzJYMjg3ZnFiNkMK
ckFBQU5Rb0FBQkFCdVVtOUw3a3FSL2crZnN0MDEzVU9qQUFBWGdvQUFCQUJCdEgwSnRDUHdFRmtE
akFxbXNISkxRQUFoQW9BQUJBQgp0eFJaMElWZ1Y5VkJ1RFdUSDFVRGR3QUF0QW9BQUJBQjlYUTE1
Y3NEc3dtUGFHT2x0STZ4QmdBQTV3b0FBQkFCY1ExMzdnV1VjejE2CjdPbUljUEVVMkFBQUh3c0FB
QkFCZ3BML29xbHlzQ1pFTVQwL3V0aUxKQUFBVHdzQUFCQUJRMDJZUmk4L0VjcnNOOFpCdGppeVRn
QUEKZ3dzQUFCQUI4ZDgwa05XTi9ZNEdjdkpOUFZ5QUl3QUF0Z3NBQUJBQmcxTFluVFRiRWVqbjZm
MWJ1MHBWOEFBQTV3c0FBQkFCZWVNaAprWnB1eVE2dkE5aHRWQUFhclFBQURRd0FBQkFCUnpFMjhR
bzFMSDRNbm1lMGVJYUJkQUFBWEF3QUFCQUIzOU9IaThKeW1pSHZZTS9WClgwcmtGQUFBZ2d3QUFC
QUI0dFJtdjhZb3FsTm9RVUxCOWtMMy9BQUF4QXdBQUJBQllFL2IvTjBWQXVZd2ZsYU9vdmNMYlFB
QTlBd0EKQUJBQlprWGd5VXlqOUpVSWRPdjFVbzZmSGdBQUlnMEFBQkFCV2Z1TlUwM1NIaFlFd2xo
T2Q0UHYxZ0FBU0EwQUFCQUJDVWdHR09UMwpxczkrbXN6NlJXN0hEd0FBZmcwQUFCQUJjWG1nYnFk
VXp3UWNsZ3ByRzN4dTB3QUFxQTBBQUJBQnRwRHNnR1NMQktyS3F3WHBKTXpzCkpRQUExdzBBQUJB
Qms1c2JYc1ZlK3lVK0pOVEE5VVVNdGdBQUNnNEFBQkFCS0Fpem1YUk9jSklQNzYzR2ttUXdvUUFB
UUE0QUFCQUIKbGUwdUphQVhjbDdoaFhPalNLbE1wZ0FBY1E0QUFCQUJoT29iMmlrbXVUdDlDekZ2
RXVIaHBnQUFwUTRBQUJBQjQyRlBmQTlGR040WAp1WEYydW5rM0t3QUExZzRBQUJBQkJkeVlkUmRk
anJNb0IrTmtqdTUveWdBQUJROEFBQkFCOXVwSUZXQ3VyQU1JUVBKMWF5Tzk5QUFBClFnOEFBQkFC
aVNkckhOYXlRdFpxSU5xbCtWTWdnZ0FBZFE4QUFCQUJ1WHcrYVpMdUV5cTRaU3BOenBuK1h3QUFx
ZzhBQUJBQk5wamwKb3AvM0t4NnFPV044ZmdLYW9BQUEzZzhBQUJBQkxxdjkwN2RqUDR3UDRZcU45
MWtROUFBQURoQUFBQkFCTnZPSzlvRms0bFJOb0hQeAp4bjEwbHdBQVNCQUFBQkFCMEx6OVhHRVF2
SnZ3cHdCVHNQU0JmUUFBYlJBQUFCQUJ4VDlsK3UwYS9xVEhZUWVta016UkZBQUFyUkFBCkFCQUJ4
aEJBYTFnSXJIVklWVk9Ud3VuanlBQUEzQkFBQUJBQmdJRkZKZ2VrcEFpT1lTVlBQN2hRbFFBQUR4
RUFBQkFCcHd3V1FIOXoKN0hndDU5VTZFUXFsS2dBQVFCRUFBQkFCQUJpeSszV0xTVFZKdll2RE9i
WklmUUFBZHhFQUFCQUI4ck9HMThqK2FvQlZZdzNGQ2x3LwpId0FBb0JFQUFCQUJFcWF5U2NETVlQ
dk1KTjNwUFIreXFnQUF4QkVBQUJBQlBiVnlsUTZUTlRpSzNPZEowd2RlU0FBQStCRUFBQkFCClUr
ZDluTUp4dkJPa1k3a2lUWUZvVFFBQU1SSUFBQkFCZEpscEZ4SmlLLys5cHZDVXhoaDQyd0FBWVJJ
QUFCQUJMZlRWR3J6ZDk0UFoKUHNFL210UnVyQUFBbFJJQUFCQUJnWk1VMmJUZXdNOUNWSG1ZcFNC
dUt3QUF6QklBQUJBQmRCaElYM1ZURG04OFE4UEgveldPVGdBQQpCUk1BQUJBQkRSRm5Za080anVq
OThFT0hpekFKb1FBQVFSTUFBQkFCWnk4ME5VSVJhWkNlWWdXcmt4M1kxd0FBZFJNQUFCQUJMcHM1
CmVMdXlIWVpYNmkyYW8xSFhXZ0FBcHhNQUFCQUJPUlNIWG8zZWFOQm5SekpXTFBDZkJRQUE0Qk1B
QUJBQjMreUxNbS9DSFpxa0R1MGsKNnN0d1NBQUFGeFFBQUJBQmlsU2FvdithTXdEZ1QwME02bFVk
c3dBQVJ4UUFBQkFCNVFHazkvRC9ESzJWTWIxa241SG03QUFBZXhRQQpBQkFCYzRFTUNvNlVsbFFD
cWNaR21Ub3ppd0FBdHhRQUFCQUJMZUdaWkZEK3lJSUEwa2dER3dWUmtRQUE2eFFBQUJBQnlmelcy
SW1RCm0yaUFWQ0M4QzhNcUFBQUFIaFVBQUJBQmdXOFp1RzNEOEsrcW5WUUF0MjF6akFBQVZ4VUFB
QkFCOXpzY3ZJNHEzU2Vqb1dwbG9PeVkKWlFBQWpSVUFBQkFCUG1aYStxVmFYVDFEVndNSFF6WVhN
UUFBd3hVQUFCQUJWWXJFNUwwQlFnaGZ2VjRVVkhUTE5nQUE4aFVBQUJBQgowTzNySlcxaVIzejlt
UXFFd2pjRml3QUFIeFlBQUJBQmNYOFlLREMwKzBIWGR5dzJnWGlTR0FBQVVoWUFBQkFCKzZBaXVj
NHQ4dnNJCjFLSXNjSG5Td3dBQWpoWUFBQkFCUENRM2ZuWXpJOUlSV3ZLTlBranlHUUFBdXhZQUFC
QUJ1aEJObDlkODZaUVd1QTFhZVAyaU93QUEKOEJZQUFCQUJnYWRUSGNzNnZGZWMyY3RCdExpdkxn
QUFLUmNBQUJBQjNDWnNBQ3pzRzJnVDFHMW93TWRiUEFBQVd4Y0FBQkFCbTlSYgpyL0lXRk9mUGc2
bkY0QU9qY3dBQWpCY0FBQkFCTWo1QSs1V0RGeXRuUmc2MDVnT0V2QUFBdFJjQUFCQUJ6Qk5hQk1k
N1lQRndnZjZoCmNxT1pmd0FBNXhjQUFCQUJTcDVuYjNYaTNEd0JpWk9adlhaR0ZBQUFHeGdBQUJB
Qm9uREwxU1dWbTFFZWdmMGRzVVVYQkFBQVVSZ0EKQUJBQlN3SVIrZTN0UGNwcTlaTHpMMTlEN0FB
QWpoZ0FBQkFCaElqM3lOSEFsVXBiNVczWlBsUmVoUUFBeGhnQUFCQUJhbVVTWG55dApqaE5xZ2dD
V0lmTVpiUUFBL1JnQUFCQUJvRzJFYVBKTUxlNkF2Zm9VVW10d0lRQUFNeGtBQUJBQis2TXlQU3hQ
eUo0QlVybFpiWFk1CnpnQUFaQmtBQUJBQkgweFFWK2tJN3dBaHh6Z3UxdE1oRGdBQW14a0FBQkFC
aEtid2Vua2xZejBLZ2Y0WmdrMDR1d0FBd1JrQUFCQUIKbHpvMlNldXNDVlZLYmxMQ3R0SDFmd0FB
OUJrQUFCQUJ6TTVha21VNkJDV1lKWkVTZlBxMkh3QUFLUm9BQUJBQjVvLytIUXJpaG5HQQpNUXdI
dkFMcFJ3QUFZeG9BQUJBQmVqL3hFRWhGMEVJOWpZOWErNVhmZVFBQWxob0FBQkFCZlIvVHI5VnFr
TGJyc1lQRW9nd0hvUUFBCnh4b0FBQkFCbFRTY05aMmdTMUNCejJYZmcwRnA3QUFBOVJvQUFCQUJX
cFBrbkxIRW43NTRsN2FYcDBWbW1RQUFMaHNBQUJBQjc5NXQKZ3JsZ2ZPdVJsMS91ajhjcldnQUFV
QnNBQUJBQnRZWisxV040RzJmRmxKRDVDNDd4Q1FBQWRSc0FBQkFCWE5iM29jOVMzNkFoM1RjRApN
QjhPVVFBQXJoc0FBQkFCRWhmRGJaYWlUcUUrUzlPR1d4WUdXd0FBNWhzQUFCQUJscWRaM3h1d2o2
cXpTbTlaQVd1QVJBQUFDeHdBCkFCQUIrNlJjcUduRnowNmw2N0hUNmV1VTd3QUFNUndBQUJBQnZV
bElmcTRnTDR5T3pESU1sTXZvRGdBQVpSd0FBQkFCNW5abFR1K3EKelNCNlN4cXFwdDNsd0FBQWpo
d0FBQkFCdFE5ZlpvU3R6V2U5emJJM0RpSCtpQUFBd1J3QUFCQUIxOGFxdlRLc3FQRXN5TnlxYXBy
SApYUUFBNnh3QUFCQUIxaG8xaVlqWGkveUFqd1ljdmN5cmxRQUFGeDBBQUJBQmdST0diKzcza09h
T0dFcmpUTk9acXdBQVJoMEFBQkFCClExNmhqUnV4RDhTQWgzaWNmM3VZemdBQWVSMEFBQkFCQTVI
UXlXRFlzUFZmSTVlUEp0azZ0QUFBb3gwQUFCQUJkTUVUUWdIS3lIbS8KVkNLengrS3FZQUFBNGgw
QUFCQUI0bCt4N3p0cDY3bVFRSVVsSVhWd0J3QUFGaDRBQUJBQitsR0ticlJ0SUg0RXBLUmp0My9U
S1FBQQpReDRBQUJBQkxxczkzK1hva2xPTW9KbGlWTGVmMWdBQWRoNEFBQkFCc3ZCMTZIdkhOVC9M
b3lLM3RsT29IUUFBcHg0QUFCQUJvSGlqCmtlT1l2dEFaVUtIWHU0MVZoUUFBM0I0QUFCQUJxL25H
SjEwaXpFOE9UVEw1WUsva3V3QUFFUjhBQUJBQnZtNXAzb2hURStYWnNHelkKWUVoekJ3QUFTUjhB
QUJBQnVoZjBWRHlObWtsYU45bis1OTVwdndBQWRCOEFBQkFCcER0c3hVMmkvdmJJa3pFeFJudGNX
QUFBbmg4QQpBQkFCYjdmWEhlbzZJdmhmc3lwOW9rS2N2d0FBeVI4QUFCQUJzYlRhNzNyNURZTmRU
UzVLRllvUnRBQUErQjhBQUJBQmh2MXE0NS91CkYzenRRcU44TmM5Y013QUFIeUFBQUJBQjQ5K2sr
aUFhUTA4eUZoNS9WemJPaUFBQVVTQUFBQkFCTzVPT3hsbUQ4akNIckZvc095eXkKRmdBQWd5QUFB
QkFCcUxIYURUN1BNcGg5V0U1R1ROeXd0Z0FBcXlBQUFCQUIxdzRZSGlqVVRhcFFNZ0kvVWFjMDF3
QUE1U0FBQUJBQgpaUGhncDJLanMyZkkrazA0ZlBDSEpnQUFGeUVBQUJBQk5leGU0ekNHMW1Zb2pM
dklBYlJTYUFBQVVDRUFBQkFCWkY4WG0yZzVEUThiCjgwL3A0bGJmTkFBQWhpRUFBQkFCOGpoT2RX
WSt3bFZpelFlR20wdUd6UUFBdVNFQUFCQUJaUmtuMS8vd3liRlNSSXBSeDZzV2Z3QUEKOFNFQUFC
QUJ6LzJkTVp3MTgxTm9YM3VKUGdLVzN3QUFGeUlBQUJBQkxlVWl3ZjNhOFJnNkE4NGRlbmZZZ0FB
QVVpSUFBQkFCc1RCZgpsRW5kOURGc0RoN1lXZXpraWdBQWhDSUFBQkFCTEFEV05CN3RqSXhnYTY3
bHpzWHM3QUFBdFNJQUFCQUI1TUprSHIzNGlodXhoM3NMCnFOelhWQUFBNXlJQUFCQUJjVlVuM2lw
WnFKdHEwV1IxWHVuakVRQUFIQ01BQUJBQjJuY1hjVE1iTG5PdjJPTE4yZ2UxaFFBQVRDTUEKQUJB
QnJmMmo3ZFdSWUVBWkFpbU1qUXRZcFFBQWZpTUFBQkFCdjB1T3h6TmVyN09pL3RVbHRoVDFTQUFB
c2lNQUFCQUJOeWhlMjlLZwo4a0VXbUpTWUFmeDJ1d0FBNVNNQUFCQUJSTXFEUGI3NnlCYXRTaTcy
YXpydHZRQUFHQ1FBQUJBQmVNY21DVjZtS3hsNWJMSjNLVm1kCmhRQUFPeVFBQUJBQkFBNjJ3dWpz
UUVOL1J1MlZhV1ZMelFBQWJTUUFBQkFCb0QvaWorUVlMVHdvdGd0Y3JsT0hOQUFBb0NRQUFCQUIK
ZFhlUTNhWUFUUHg4bSt4TmhlbXFEQUFBeUNRQUFCQUI3NjNHSXU3emhxRXBsQ1JCNU5aV1hnQUEr
aVFBQUJBQnh2T3ppTm0wSkIyegoySm1uZHNEZEpnQUFLQ1VBQUJBQmM1NlhUME1EQldOVzBCUDNH
RG1DelFBQVh5VUFBQkFCTjFLR1Z3ZHFCbGxQdFU3VWprd3FQQUFBCmp5VUFBQkFCdVNIR0JnRzEy
c3dlOW9FeUl2bDlsUUFBd2lVQUFCQUJqZkR0WkJKcEpUc3FPSnhhZHlsNnp3QUE4Q1VBQUJBQi9L
MUMKMGFYd0NyeThwV2l2aTl5WmJRQUFJU1lBQUJBQkJWUUV1cWNIR2RqTlJaSXp2WTJVRndBQVR5
WUFBQkFCNVFibGhYNEtiaTdQazFpYgovajBxbndBQWdTWUFBQkFCSWcrTG5VWHp3UTVHKzZpTUU1
RnBYZ0FBdFNZQUFCQUJlSFJyaVlSK3FoNC9vbHYvUVdXWjlnQUE1eVlBCkFCQUJqdDVtQmdtelhT
bU1OcVlLNGppNWtnQUFHU2NBQUJBQkNtcDNPVGlBK1QycTV1T1h5RDJzcUFBQVVDY0FBQkFCY2ZN
R1VRLzcKL0pEN2hTNDF4L1lMZmdBQWd5Y0FBQkFCd0lLL3YrZVZMUHNsRG5LRmc1ZStxd0FBc3lj
QUFCQUJGYlRFU2dJa1pySGNLZnFmVUpMRwpyZ0FBNWljQUFCQUJ4bHFrejN2aHNza0FNeVpVaUFl
MnlRQUFHaWdBQUJBQnN3S0lJeEl6K2RWK0oxQ0hOSkZ3dEFBQVN5Z0FBQkFCCjNOOEVZK2RnWjRG
Vi9iL0ZkNENLUlFBQWRDZ0FBQkFCQ2Q1STV2UmthQjdZU0FkTklpSklLZ0FBbnlnQUFCQUJOS01T
OEZRTXRMWjcKRXlaSnlNRXFKQUFBeXlnQUFCQUJDUzVkWk9lRFhublNvWVdKOFRiQWdnQUFCaWtB
QUJBQnViWHV1MGt1NzlvOVY0ZnNmWFhVbFFBQQpQQ2tBQUJBQjlDdFBkY2FacmcweXBrYUtrSDVm
clFBQVlDa0FBQkFCcWlNNk1ENGdiVmtzSXN5cEJBL1dBd0FBbkNrQUFCQUIwM0FpCmQ4RUtieGFu
VmpFVnNFTXJOd0FBemlrQUFCQUI0TzIweHgvQTk2MzVjb21uVFZRbUhRQUFBaW9BQUJBQm90QTBC
a1hTOUxOOElnTDAKeU5LeFh3QUFOU29BQUJBQkJiL2x6cW1wa2Y3dG5tcjRRc1hWd3dBQWFDb0FB
QkFCTTFDZjgvMG9aMnhoN2JmQnRWY2lqQUFBbkNvQQpBQkFCVld2amU1bmlhR3pqSE9XWGEwYWE2
QUFBemlvQUFCQUJWVTBMcG9rRUVSK3dGd1RsTFZBWk9nQUEveW9BQUJBQjBVeTd4RGtuCmkrQmZR
cWgzeDlYQWx3QUFNeXNBQUJBQlAvQ29vVjMrT054blhvTUFFZW9RMGdBQVpTc0FBQkFCck9FMVZY
MVZORGtRTHNoTkJrR3IKVVFBQW1Dc0FBQkFCMk10OVRiejhtN0E0MFFDT1V5eGZ5QUFBekNzQUFC
QUJiTUpld0JCbmU1cUNEZ05VSExPWWtBQUE4U3NBQUJBQgpjUjlVTEhMb2l4eUVOcTJlTjNMNkd3
QUFHQ3dBQUJBQlByaUdZeGZFbDl4Wno3eEpxak5LTFFBQU95d0FBQkFCRmhGNXJPbXZFWUs1CkNs
dGdMNXRRTWdBQVl5d0FBQkFCeHRZMWs2emN0a09KNmNYVUtvaFRvQUFBaml3QUFCQUJZVGxTdUti
eGN4YWsxeENOWHUxOVJ3QUEKd1N3QUFCQUJ3UFR5MUc5RVNYZHREUUhsUC9jRll3QUE1eXdBQUJB
Qis5QXlDUGdvbUROVjFGWEtIYkF0T2dBQUhTMEFBQkFCTDV0ZQphT3J5L1ZKaC84NzZ3WFA1d2dB
QVZDMEFBQkFCK1lhVXNjcUcxY1hJQW40TUl4eDFKQUFBaFMwQUFCQUJTZjFBYWNlUnEyVTJMQ2V6
Ci9aR2FXd0FBdVMwQUFCQUJ2MWNVYXN0T05QQWpySnFvYmM4KzlnQUE3UzBBQUJBQnVVaE1ETW9y
N1VqSU94ZnZvUXVFalFBQUVpNEEKQUJBQmhmc0UwSm1WWVppVnZvbWRrYjZoUWdBQVFpNEFBQkFC
blM1RzYweTV0RE1IM2ZTRWlhQ0ZtUUFBYUM0QUFCQUJIVGM5VzkrWApTaHgzWnR4MzJNeU5aZ0FB
b1M0QUFCQUJBbTREOVFJWFhYblp1L3VpUTFrcEFnQUEweTRBQUJBQm8yT3Bld21rWWxkSkVPU2Qy
NzVPCmlnQUFBQzhBQUJBQmpOM0owMVptMkJET0ZXb0RXVUpjbVFBQUppOEFBQkFCaFFJcUhVcE1a
SXdQU2krbG9qdW53d0FBVHk4QUFCQUIKSFpuNCtFNTQrbE56YSsrQ2RYN1ptZ0FBaHk4QUFCQUJK
czV1YkxkMFRORmg1SkJGQ2lKOFhnQUF1QzhBQUJBQnd5U1NldDZHTWh4Tgo1RXp0ZHRpTS9nQUE4
d0FBQUZJd0FBQUFZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZtYjNWdVpH
RjBhVzl1ClhHTm1jblZ1Ykc5dmNDNW9BR002WEdSbGRtVnNYRzF6ZG5NeU1EQTFYSFpqWEhCc1lY
Um1iM0p0YzJSclhHbHVZMngxWkdWY2MyaGwKYkd4aGNHa3VhQUJqT2x4a1pYWmxiRnh0YzNaek1q
QXdOVngyWTF4d2JHRjBabTl5YlhOa2ExeHBibU5zZFdSbFhHUmtaUzVvQUdNNgpYR0Z3Y0d4bGFX
NTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxabTkxYm1SaGRHbHZibHhqWm1GMGRISnBZblYwWldS
emRISnBibWN1CmFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV1p2ZFc1
a1lYUnBiMjVjWTJac2IyTmhiR1V1YUFCak9seGgKY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdW
Y1kyOXlaV1p2ZFc1a1lYUnBiMjVjWTJadWRXMWlaWEl1YUFCak9seGhjSEJzWldsdQpkR1Z5Ym1G
c1hHbHVZMngxWkdWY1pHbHpjR0YwWTJoY2IySnFaV04wTG1nQVl6cGNaR1YyWld4Y2JYTjJjekl3
TURWY2RtTmNjR3hoCmRHWnZjbTF6Wkd0Y2FXNWpiSFZrWlZ4cGJXMHVhQUJqT2x4aGNIQnNaV2x1
ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldkeVlYQm8KYVdOelhHTm5jR1JtWkc5amRXMWxiblF1
YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTJadVpYUjNiM0pyWEdObQpkWEpz
Y0hKdmRHVmpkR2x2Ym5Od1lXTmxjSEpwZGk1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpi
SFZrWlZ4amIzSmxabTkxCmJtUmhkR2x2Ymx4alpuVnliR1Z1ZFcxbGNtRjBiM0l1YUFCak9seGta
WFpsYkZ4dGMzWnpNakF3TlZ4MlkxeHdiR0YwWm05eWJYTmsKYTF4cGJtTnNkV1JsWEhSMmIzVjBM
bWdBWXpwY1pHVjJaV3hjYlhOMmN6SXdNRFZjZG1OY2FXNWpiSFZrWlZ4emRISnBibWN1YUFCagpP
bHhrWlhabGJGeHRjM1p6TWpBd05WeDJZMXh3YkdGMFptOXliWE5rYTF4cGJtTnNkV1JsWEhkcGJt
TnZiaTVvQUdNNlhHRndjR3hsCmFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docFkz
TmNZMmR3Wkdad1lXZGxMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWgKYkZ4cGJtTnNkV1JsWEdOdmNt
Vm5jbUZ3YUdsamMxeGpaM0JoZEdndWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdW
YwpZMjl5WldkeVlYQm9hV056WEdObmJtOTBhV1pwWTJGMGFXOXVZMlZ1ZEdWeUxtZ0FZenBjWVhC
d2JHVnBiblJsY201aGJGeHBibU5zCmRXUmxYR052Y21WbWIzVnVaR0YwYVc5dVhHTm1ZbUZuTG1n
QVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm4KY21Gd2FHbGpjMXhqWjNC
a1ptUnBZM1JwYjI1aGNua3VhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5
WldkeQpZWEJvYVdOelhHTm5ZMjlzYjNJdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngx
WkdWY1kyOXlaV1p2ZFc1a1lYUnBiMjVjClkyWndjbTl3WlhKMGVXeHBjM1F1YUFCak9seGhjSEJz
WldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXWnZkVzVrWVhScGIyNWMKWTJaemRISnBibWRs
Ym1OdlpHbHVaMlY0ZEM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxa
bTkxYm1SaApkR2x2Ymx4alpuTjBjbVZoYlM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpi
SFZrWlZ4amIzSmxabTkxYm1SaGRHbHZibHhqClpuTnZZMnRsZEM1b0FHTTZYR1JsZG1Wc1hHMXpk
bk15TURBMVhIWmpYSEJzWVhSbWIzSnRjMlJyWEdsdVkyeDFaR1ZjYjJ4bGFXUnMKTG1nQVl6cGNZ
WEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMxeGpaM0JrWm1GeWNt
RjVMbWdBWXpwYwpZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMx
eGpaMmR5WVdScFpXNTBMbWdBWXpwY1lYQndiR1ZwCmJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNt
Vm5jbUZ3YUdsamMxeGpaMk52Ykc5eWMzQmhZMlV1YUFCak9seGhjSEJzWldsdWRHVnkKYm1Gc1hH
bHVZMngxWkdWY1pHbHpjR0YwWTJoY1ozSnZkWEF1YUFCak9seGtaWFpsYkZ4dGMzWnpNakF3TlZ4
MlkxeHdiR0YwWm05eQpiWE5rYTF4cGJtTnNkV1JsWEhCemFIQmhZMnMwTG1nQVl6cGNZWEJ3YkdW
cGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3CmFHbGpjMXhqWjJOdmJuUmxlSFJwYldG
blpTNW9BR002WEdSbGRtVnNYRzF6ZG5NeU1EQTFYSFpqWEhCc1lYUm1iM0p0YzJSclhHbHUKWTJ4
MVpHVmNkMmx1YzI5amF5NW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0ps
WjNKaGNHaHBZM05jWTJkagpiMjUwWlhoMExtZ0FZenBjWkdWMlpXeGNiWE4yY3pJd01EVmNkbU5j
Y0d4aGRHWnZjbTF6Wkd0Y2FXNWpiSFZrWlZ4M2FXNWpjbmx3CmRDNW9BR002WEdGd2NHeGxhVzUw
WlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWjNKaGNHaHBZM05jWTJkd1pHWnZZbXBsWTNRdWFBQmoK
T2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldkeVlYQm9hV056WEdOblpHRjBZ
WEJ5YjNacFpHVnlMbWdBWXpwYwpZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm1i
M1Z1WkdGMGFXOXVYR05tZEhKbFpTNW9BR002WEdGd2NHeGxhVzUwClpYSnVZV3hjYVc1amJIVmta
VnhqYjNKbFptOTFibVJoZEdsdmJseGpabUZ5Y21GNUxtZ0FZenBjWkdWMlpXeGNiWE4yY3pJd01E
VmMKZG1OY2NHeGhkR1p2Y20xelpHdGNhVzVqYkhWa1pWeHRiWE41YzNSbGJTNW9BR002WEdGd2NH
eGxhVzUwWlhKdVlXeGNhVzVqYkhWawpaVnhqYjNKbFozSmhjR2hwWTNOY1kyZGpiMnh2Y25CeWFY
WmhkR1V1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjClkyOXlaV2R5WVhCb2FX
TnpYR05uWW1GelpTNW9BR002WEdSbGRtVnNYRzF6ZG5NeU1EQTFYSFpqWEdsdVkyeDFaR1ZjZDNS
cGJXVXUKYVc1c0FHTTZYR1JsZG1Wc1hHMXpkbk15TURBMVhIWmpYSEJzWVhSbWIzSnRjMlJyWEds
dVkyeDFaR1ZjY0hKdmNHbGtiQzVvQUdNNgpYR1JsZG1Wc1hHMXpkbk15TURBMVhIWmpYSEJzWVhS
bWIzSnRjMlJyWEdsdVkyeDFaR1ZjZDJsdWRYTmxjaTVvQUdNNlhHRndjR3hsCmFXNTBaWEp1WVd4
Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZMmRoWm1acGJtVjBjbUZ1YzJadmNtMHVhQUJq
T2x4aGNIQnMKWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXWnZkVzVrWVhScGIyNWNZMlow
YVcxbGVtOXVaUzVvQUdNNlhHRndjR3hsYVc1MApaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0po
Y0docFkzTmNZMmR3WkdaamIyNTBaVzUwYzNSeVpXRnRMbWdBWXpwY1lYQndiR1ZwCmJuUmxjbTVo
YkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMxeGpaMmRsYjIxbGRISjVMbWdBWXpwY1lYQndi
R1ZwYm5SbGNtNWgKYkZ4cGJtTnNkV1JsWEdOdmNtVjJhV1JsYjF4amRtSmhjMlV1YUFCak9seGta
WFpsYkZ4dGMzWnpNakF3TlZ4MlkxeHBibU5zZFdSbApYSE5wWjI1aGJDNW9BR002WEdGd2NHeGxh
VzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpabTVsZEhkdmNtdGNZMloxY214eVpYTndiMjV6ClpYQnlh
WFl1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWkdsemNHRjBZMmhjZEdsdFpT
NW9BR002WEdSbGRtVnMKWEcxemRuTXlNREExWEhaalhHbHVZMngxWkdWY2RHbHRaUzVwYm13QVl6
cGNaR1YyWld4Y2JYTjJjekl3TURWY2RtTmNjR3hoZEdadgpjbTF6Wkd0Y2FXNWpiSFZrWlZ4dVlq
TXdMbWdBWXpwY1pHVjJaV3hjYlhOMmN6SXdNRFZjZG1OY2NHeGhkR1p2Y20xelpHdGNhVzVqCmJI
VmtaVnh3YjNCd1lXTnJMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21W
bmNtRndhR2xqYzF4aloyWnYKYm5SeVpXNWtaWEpwYm1jdWFBQmpPbHhrWlhabGJGeHRjM1p6TWpB
d05WeDJZMXh3YkdGMFptOXliWE5rYTF4cGJtTnNkV1JsWEc5cwpaVEl1YUFCak9seGtaWFpsYkZ4
dGMzWnpNakF3TlZ4MlkxeHdiR0YwWm05eWJYTmthMXhwYm1Oc2RXUmxYSGRwYm1WeWNtOXlMbWdB
Cll6cGNaR1YyWld4Y2JYTjJjekl3TURWY2RtTmNjR3hoZEdadmNtMXpaR3RjYVc1amJIVmtaVnh2
WW1waVlYTmxMbWdBWXpwY1pHVjIKWld4Y2JYTjJjekl3TURWY2RtTmNjR3hoZEdadmNtMXpaR3Rj
YVc1amJIVmtaVnhqWjNWcFpDNW9BR002WEdSbGRtVnNYRzF6ZG5NeQpNREExWEhaalhHbHVZMngx
WkdWY2MzUmtiR2xpTG1nQVl6cGNjSEp2YW1WamRITmNkMlZpYTJsMFhHbHVkR1Z5Ym1Gc1hIZGxZ
bXRwCmRITjVjM1JsYldsdWRHVnlabUZqWlhkcGJseDNaV0pyYVhSemVYTjBaVzFwYm5SbGNtWmhZ
MlV1WTNCd0FHTTZYR1JsZG1Wc1hHMXoKZG5NeU1EQTFYSFpqWEdsdVkyeDFaR1ZjYkdsdGFYUnpM
bWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR05tYm1WMApkMjl5YTF4alptNWxk
SGR2Y210amIyNXVaV04wYVc5dVkyRmphR1Z3Y21sMkxtZ0FZenBjWVhCd2JHVnBiblJsY201aGJG
eHBibU5zCmRXUmxYR052Y21WbmNtRndhR2xqYzF4aloybHRZV2RsTG1nQVl6cGNZWEJ3YkdWcGJu
UmxjbTVoYkZ4cGJtTnNkV1JsWEdScGMzQmgKZEdOb1hITmxiV0Z3YUc5eVpTNW9BR002WEdSbGRt
VnNYRzF6ZG5NeU1EQTFYSFpqWEdsdVkyeDFaR1ZjYzNSa1pHVm1MbWdBWXpwYwpZWEJ3YkdWcGJu
UmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMxeGpaMlJwYzNCc1lYbHNhWE4wTG1n
QVl6cGNZWEJ3CmJHVnBiblJsY201aGJGeHBibU5zZFdSbFhHUnBjM0JoZEdOb1hIRjFaWFZsTG1n
QVl6cGNaR1YyWld4Y2JYTjJjekl3TURWY2RtTmMKY0d4aGRHWnZjbTF6Wkd0Y2FXNWpiSFZrWlZ4
eGIzTXVhQUJqT2x4a1pYWmxiRnh0YzNaek1qQXdOVngyWTF4d2JHRjBabTl5YlhOawphMXhwYm1O
c2RXUmxYSGRwYm5CbGNtWXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5
WldkeVlYQm9hV056ClhHTm5ZMjl1ZEdWNGRIQmhkR2d1YUFCak9seGhjSEJzWldsdWRHVnlibUZz
WEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm4KWTI5dVptbG5MbWdBWXpwY1lYQndiR1Zw
Ym5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbmNtRndhR2xqYzF4alozQmtabk4wY21WaApiUzVv
QUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFozSmhjR2hwWTNOY1kyZHpk
SGx3WlhNdWFBQmpPbHhoCmNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldkeVlYQm9h
V056WEdOblkyeHBjQzVvQUdNNlhHRndjR3hsYVc1MFpYSnUKWVd4Y2FXNWpiSFZrWlZ4amIzSmxa
bTkxYm1SaGRHbHZibHhqWm5kcGJtUnZkM051WVcxbFpIQnBjR1V1YUFCak9seGtaWFpsYkZ4dApj
M1p6TWpBd05WeDJZMXh3YkdGMFptOXliWE5rYTF4cGJtTnNkV1JsWEdOdmJXMWtiR2N1YUFCak9s
eGhjSEJzWldsdWRHVnlibUZzClhHbHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR05uY0dSbVky
OXVkR1Y0ZEM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWoKYkhWa1pWeGpiM0psWjNKaGNH
aHBZM05jWTJkbWIyNTBZMkZqYUdVdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdW
YwpZMjl5WldkeVlYQm9hV056WEdOblpYSnliM0l1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEds
dVkyeDFaR1ZjWTI5eVpXWnZkVzVrCllYUnBiMjVjWTJaa1lYUmxabTl5YldGMGRHVnlMbWdBWXpw
Y1pHVjJaV3hjYlhOMmN6SXdNRFZjZG1OY2FXNWpiSFZrWlZ4emRHUnAKYnk1b0FHTTZYR0Z3Y0d4
bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4alptNWxkSGR2Y210Y1kyWjFjbXhqY21Wa1pXNTBhV0Zz
YzNSdgpjbUZuWlhCeWFYWXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5
WldkeVlYQm9hV056WEdOblptOXVkQzVvCkFHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZr
WlZ4amIzSmxabTkxYm1SaGRHbHZibHhqWm5Cc2RXZHBiaTVvQUdNNlhHRncKY0d4bGFXNTBaWEp1
WVd4Y2FXNWpiSFZrWlZ4amIzSmxabTkxYm1SaGRHbHZibHhqWm5WMWFXUXVhQUJqT2x4aGNIQnNa
V2x1ZEdWeQpibUZzWEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5kR1Y0ZEdOc2FYQndh
VzVuTG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoCmJGeHBibU5zZFdSbFhHUnBjM0JoZEdOb1hHOXVZ
MlV1YUFCak9seGtaWFpsYkZ4dGMzWnpNakF3TlZ4MlkxeHBibU5zZFdSbFhHMWgKZEdndWFBQmpP
bHhrWlhabGJGeHRjM1p6TWpBd05WeDJZMXh3YkdGMFptOXliWE5rYTF4cGJtTnNkV1JsWEhObGNu
WndjbTkyTG1nQQpZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZuY21Gd2FH
bGpjMXhqWjJOdmJHOXlkSEpoYm5ObWIzSnRMbWdBCll6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJt
TnNkV1JsWEdOdmNtVm1iM1Z1WkdGMGFXOXVYR05tYzJWMExtZ0FZenBjWkdWMlpXeGMKYlhOMmN6
SXdNRFZjZG1OY2NHeGhkR1p2Y20xelpHdGNhVzVqYkhWa1pWeHpkSEpoYkdsbmJpNW9BR002WEdG
d2NHeGxhVzUwWlhKdQpZV3hjYVc1amJIVmtaVnhqWm01bGRIZHZjbXRjWTJab2RIUndZMjl2YTJs
bGMzQnlhWFl1YUFCak9seGhjSEJzWldsdWRHVnlibUZzClhHbHVZMngxWkdWY1kyOXlaV1p2ZFc1
a1lYUnBiMjVjWTJaamFHRnlZV04wWlhKelpYUXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnMKWEds
dVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5ZMjlzYjNKemNHRmpaWEJ5YVhaaGRHVXVhQUJq
T2x4aGNIQnNaV2x1ZEdWeQpibUZzWEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5jR1Jt
YzNSeWFXNW5MbWdBWXpwY1pHVjJaV3hjYlhOMmN6SXdNRFZjCmRtTmNjR3hoZEdadmNtMXpaR3Rj
YVc1amJIVmtaVngzYVc1eVpXY3VhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmMK
WTJadVpYUjNiM0pyWEdObWRYSnNZMjl1Ym1WamRHbHZibkJ5YVhZdWFBQmpPbHhoY0hCc1pXbHVk
R1Z5Ym1Gc1hHbHVZMngxWkdWYwpZMlp1WlhSM2IzSnJYR05tZFhKc2NISnZkRzlqYjJ4d2NtbDJM
bWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052CmNtVm1iM1Z1WkdGMGFXOXVY
R05tZFhKc0xtZ0FZenBjWkdWMlpXeGNiWE4yY3pJd01EVmNkbU5jY0d4aGRHWnZjbTF6Wkd0Y2FX
NWoKYkhWa1pWeHdjMmh3WVdOck9DNW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pW
eGpabTVsZEhkdmNtdGNZMloxY214aApkWFJvWTJoaGJHeGxibWRsY0hKcGRpNW9BR002WEdGd2NH
eGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpabTVsZEhkdmNtdGNZMloxCmNteGpZV05vWlhCeWFY
WXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldkeVlYQm9hV056WEdO
blkyeHAKY0cxaGMyc3VhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMlp1WlhS
M2IzSnJYR05tZFhKc1kzSmxaR1Z1ZEdsaApiSEJ5YVhZdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1G
c1hHbHVZMngxWkdWY1kyOXlaV1p2ZFc1a1lYUnBiMjVjWTJaaWFYUjJaV04wCmIzSXVhQUJqT2x4
aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMlp1WlhSM2IzSnJYR05tZFhKc2NtVnhkV1Z6
ZEhCeWFYWXUKYUFCak9seGtaWFpsYkZ4dGMzWnpNakF3TlZ4MlkxeHdiR0YwWm05eWJYTmthMXhw
Ym1Oc2RXUmxYSEp3WXk1b0FHTTZYR0Z3Y0d4bAphVzUwWlhKdVlXeGNhVzVqYkhWa1pWeHpaV04x
Y21sMGVWeHpaV04xY21sMGVTNW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqCmJIVmtaVnhq
Wm01bGRIZHZjbXRjWTJadVpYUjNiM0pyWkdWbWN5NW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNh
VzVqYkhWa1pWeGoKYjNKbFptOTFibVJoZEdsdmJseGpabTUxYldKbGNtWnZjbTFoZEhSbGNpNW9B
R002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWawpaVnhqYjI1a2FYUnBiMjVoYkcxaFkzSnZj
eTVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFptOTFibVJoCmRHbHZi
bHhqWm1OaGJHVnVaR0Z5TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNt
Vm1iM1Z1WkdGMGFXOXUKWEdOdmNtVm1iM1Z1WkdGMGFXOXVMbWdBWXpwY1pHVjJaV3hjYlhOMmN6
SXdNRFZjZG1OY2NHeGhkR1p2Y20xelpHdGNhVzVqYkhWawpaVnh5Y0dOa1kyVXVhQUJqT2x4aGNI
QnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldadmRXNWtZWFJwYjI1Y1kyWmtZWFJsCkxt
Z0FZenBjWkdWMlpXeGNiWE4yY3pJd01EVmNkbU5jYVc1amJIVmtaVnh6ZVhOY2RIbHdaWE11YUFC
ak9seGtaWFpsYkZ4dGMzWnoKTWpBd05WeDJZMXh3YkdGMFptOXliWE5rYTF4cGJtTnNkV1JsWEhk
cGJuTjJZeTVvQUdNNlhHUmxkbVZzWEcxemRuTXlNREExWEhaagpYSEJzWVhSbWIzSnRjMlJyWEds
dVkyeDFaR1ZjZDJsdWFXOWpkR3d1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1Zj
ClkyOXlaV2R5WVhCb2FXTnpYR05uWW1GelpYQnlhWFpoZEdVdWFBQmpPbHhoY0hCc1pXbHVkR1Z5
Ym1Gc1hHbHVZMngxWkdWY1kyOXkKWldkeVlYQm9hV056WEdOblptOXVkSFZ1YVdOdlpHVnpkWEJ3
YjNKMExtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbApYR052Y21WbmNtRndhR2xq
YzF4aloyTnZiblJsZUhSbmMzUmhkR1V1YUFCak9seGtaWFpsYkZ4dGMzWnpNakF3TlZ4MlkxeHdi
R0YwClptOXliWE5rYTF4cGJtTnNkV1JsWEhOd1pXTnpkSEpwYm1kekxtZ0FZenBjWVhCd2JHVnBi
blJsY201aGJGeHBibU5zZFdSbFhHTnYKY21WbmNtRndhR2xqYzF4aloyWnZiblJ3Y21sMllYUmxM
bWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbgpjbUZ3YUdsamMxeGpa
Mk55ZVhCMGJ5NW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpabTVsZEhkdmNt
dGNZMlpvCmRIUndiV1Z6YzJGblpYQnlhWFl1YUFCak9seGtaWFpsYkZ4dGMzWnpNakF3TlZ4Mlkx
eHBibU5zZFdSbFhHRnpjMlZ5ZEM1b0FHTTYKWEdSbGRtVnNYRzF6ZG5NeU1EQTFYSFpqWEhCc1lY
Um1iM0p0YzJSclhHbHVZMngxWkdWY1ltRnpaWFJ6WkM1b0FHTTZYR0Z3Y0d4bAphVzUwWlhKdVlX
eGNhVzVqYkhWa1pWeGpiM0psWjNKaGNHaHBZM05jWTJkbWIyNTBZM0psWVhSbExtZ0FZenBjWVhC
d2JHVnBiblJsCmNtNWhiRnhwYm1Oc2RXUmxYR05tYm1WMGQyOXlhMXhqWm1oMGRIQmhkWFJvWlc1
MGFXTmhkR2x2Ymk1b0FHTTZYR0Z3Y0d4bGFXNTAKWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWjNK
aGNHaHBZM05jWTJkbWIyNTBhVzVtYnk1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4YwphVzVqYkhW
a1pWeGpiM0psWm05MWJtUmhkR2x2Ymx4alptSmhjMlV1YUFCak9seGhjSEJzWldsdWRHVnlibUZz
WEdsdVkyeDFaR1ZjCmRHRnlaMlYwWTI5dVpHbDBhVzl1WVd4ekxtZ0FZenBjWVhCd2JHVnBiblJs
Y201aGJGeHBibU5zZFdSbFhHTm1ibVYwZDI5eWExeGoKWm01bGRIZHZjbXRsY25KdmNuTndjbWwy
TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEhOMFpHbHVkQzVvQUdNNgpYR1Js
ZG1Wc1hHMXpkbk15TURBMVhIWmpYR2x1WTJ4MVpHVmNaWEp5Ym04dWFBQmpPbHhoY0hCc1pXbHVk
R1Z5Ym1Gc1hHbHVZMngxClpHVmNZMjl5WldkeVlYQm9hV056WEdOblptOXVkSFpoY21saGRHbHZi
bk11YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDEKWkdWY1kyOXlaV1p2ZFc1a1lYUnBi
MjVjWTJad2NtVm1aWEpsYm1ObGN5NW9BR002WEdSbGRtVnNYRzF6ZG5NeU1EQTFYSFpqWEdsdQpZ
MngxWkdWY1pteHZZWFF1YUFCak9seGtaWFpsYkZ4dGMzWnpNakF3TlZ4MlkxeHBibU5zZFdSbFhH
TnlkSGR5Ymk1b0FHTTZYR1JsCmRtVnNYRzF6ZG5NeU1EQTFYSFpqWEhCc1lYUm1iM0p0YzJSclhH
bHVZMngxWkdWY2NITm9jR0ZqYXpFdWFBQmpPbHhoY0hCc1pXbHUKZEdWeWJtRnNYR2x1WTJ4MVpH
VmNkVzVwWTI5a1pWeDFZMmhoY2k1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4
agpiM0psWjNKaGNHaHBZM05jWTJkemIyWjBiV0Z6YXk1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4
Y2FXNWpiSFZrWlZ4MWJtbGpiMlJsClhIVjBlWEJsY3k1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4
Y2FXNWpiSFZrWlZ4MWJtbGpiMlJsWEhWdFlXTm9hVzVsTG1nQVl6cGMKWkdWMlpXeGNiWE4yY3pJ
d01EVmNkbU5jY0d4aGRHWnZjbTF6Wkd0Y2FXNWpiSFZrWlZ4dFkzZ3VhQUJqT2x4aGNIQnNaV2x1
ZEdWeQpibUZzWEdsdVkyeDFaR1ZjY1hWaGNuUjZZMjl5WlZ4allXbHRZV2RsY1hWbGRXVXVhQUJq
T2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1ClkyeDFaR1ZjZFc1cFkyOWtaVnh3ZDJsdU16SXVhQUJq
T2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldadmRXNWsKWVhScGIyNWNZMlp1
YjNScFptbGpZWFJwYjI1alpXNTBaWEl1YUFCak9seGtaWFpsYkZ4dGMzWnpNakF3TlZ4MlkxeHdi
R0YwWm05eQpiWE5rYTF4cGJtTnNkV1JsWEhkcGJuTndiMjlzTG1nQVl6cGNZWEJ3YkdWcGJuUmxj
bTVoYkZ4cGJtTnNkV1JsWEhGMVlYSjBlbU52CmNtVmNZMkZpWVhObExtZ0FZenBjWkdWMlpXeGNi
WE4yY3pJd01EVmNkbU5jY0d4aGRHWnZjbTF6Wkd0Y2FXNWpiSFZrWlZ4dmJHVmgKZFhSdkxtZ0FZ
enBjWkdWMlpXeGNiWE4yY3pJd01EVmNkbU5jY0d4aGRHWnZjbTF6Wkd0Y2FXNWpiSFZrWlZ4d2Nu
Tm9kQzVvQUdNNgpYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docFkz
TmNZMjl5WldkeVlYQm9hV056TG1nQVl6cGNZWEJ3CmJHVnBiblJsY201aGJGeHBibU5zZFdSbFhH
TnZjbVZuY21Gd2FHbGpjMXhqWjJOc2FYQnpkSEp2YTJVdWFBQmpPbHhoY0hCc1pXbHUKZEdWeWJt
RnNYR2x1WTJ4MVpHVmNZMjl5WldkeVlYQm9hV056WEdOblltbDBiV0Z3WTI5dWRHVjRkQzVvQUdN
NlhHRndjR3hsYVc1MApaWEp1WVd4Y2FXNWpiSFZrWlZ4a2FYTndZWFJqYUZ4emIzVnlZMlV1YUFC
ak9seGtaWFpsYkZ4dGMzWnpNakF3TlZ4MlkxeHBibU5zCmRXUmxYSE4zY0hKcGJuUm1MbWx1YkFC
ak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjZFc1cFkyOWtaVngxY21WdVlXMWwKTG1n
QVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMxeGpaMlJo
YzJndWFBQmpPbHhoY0hCcwpaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNkVzVwWTI5a1pWeDFkR1l1
YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjClkyOXlaV2R5WVhCb2FXTnpYR05u
Y0dGMGRHVnliaTVvQUdNNlhHUmxkbVZzWEcxemRuTXlNREExWEhaalhIQnNZWFJtYjNKdGMyUnIK
WEdsdVkyeDFaR1ZjZFc1cmJuZHVMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxY
SFZ1YVdOdlpHVmNkWFJtT0M1bwpBR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpi
M0psWjNKaGNHaHBZM05jWTJkamIyNTBaWGgwWkdWc1pXZGhkR1V1CmFBQmpPbHhrWlhabGJGeHRj
M1p6TWpBd05WeDJZMXh3YkdGMFptOXliWE5rYTF4cGJtTnNkV1JsWEhkcGJuWmxjaTVvQUdNNlhH
RncKY0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZMmR5Wlc1a1pY
SnBibWR6ZEdGMFpTNW9BR002WEdGdwpjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFpt
OTFibVJoZEdsdmJseGpablZ5YkdGalkyVnpjeTVvQUdNNlhHUmxkbVZzClhHMXpkbk15TURBMVhI
WmpYSEJzWVhSbWIzSnRjMlJyWEdsdVkyeDFaR1ZjY25CalpHTmxjQzVvQUdNNlhHRndjR3hsYVc1
MFpYSnUKWVd4Y2FXNWpiSFZrWlZ4alptNWxkSGR2Y210Y1kyWnpiMk5yWlhSemRISmxZVzF3Y21s
MkxtZ0FZenBjWkdWMlpXeGNiWE4yY3pJdwpNRFZjZG1OY2FXNWpiSFZrWlZ4emRHUmhjbWN1YUFC
ak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvCmFXTnpYR05uY0dS
bWIzQmxjbUYwYjNKMFlXSnNaUzVvQUdNNlhHUmxkbVZzWEcxemRuTXlNREExWEhaalhIQnNZWFJt
YjNKdGMyUnIKWEdsdVkyeDFaR1ZjZDJsdVpHVm1MbWdBWXpwY1pHVjJaV3hjYlhOMmN6SXdNRFZj
ZG1OY2NHeGhkR1p2Y20xelpHdGNhVzVqYkhWawpaVnh0YzNodGJDNW9BR002WEdSbGRtVnNYRzF6
ZG5NeU1EQTFYSFpqWEhCc1lYUm1iM0p0YzJSclhHbHVZMngxWkdWY2NtVmhjMjl1CkxtZ0FZenBj
WVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZuY21Gd2FHbGpjMXhqWjNCa1puTmpZ
VzV1WlhJdWFBQmoKT2x4a1pYWmxiRnh0YzNaek1qQXdOVngyWTF4d2JHRjBabTl5YlhOa2ExeHBi
bU5zZFdSbFhHUnNaM011YUFCak9seGtaWFpsYkZ4dApjM1p6TWpBd05WeDJZMXh3YkdGMFptOXli
WE5rYTF4cGJtTnNkV1JsWEhkcGJtNXNjeTVvQUdNNlhHUmxkbVZzWEcxemRuTXlNREExClhIWmpY
SEJzWVhSbWIzSnRjMlJyWEdsdVkyeDFaR1ZjZDJsdWMyTmhjbVF1YUFCak9seGtaWFpsYkZ4dGMz
WnpNakF3TlZ4MlkxeHcKYkdGMFptOXliWE5rYTF4cGJtTnNkV1JsWEhkcGJtSmhjMlV1YUFCak9s
eGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eQpaWFpwWkdWdlhHTjJjR2w0Wld4aWRX
Wm1aWEl1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjYzNSa1ltOXZiQzVvCkFH
TTZYR1JsZG1Wc1hHMXpkbk15TURBMVhIWmpYSEJzWVhSbWIzSnRjMlJyWEdsdVkyeDFaR1ZjZDNS
NWNHVnpMbWdBWXpwY1lYQncKYkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVjJhV1JsYjF4
amRtbHRZV2RsWW5WbVptVnlMbWdBWXpwY1lYQndiR1ZwYm5SbApjbTVoYkZ4cGJtTnNkV1JsWEdG
MllXbHNZV0pwYkdsMGVTNW9BR002WEdSbGRtVnNYRzF6ZG5NeU1EQTFYSFpqWEhCc1lYUm1iM0p0
CmMyUnJYR2x1WTJ4MVpHVmNjbkJqYm1SeUxtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5z
ZFdSbFhHTnZjbVYyYVdSbGIxeGoKZG1KMVptWmxjaTVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hj
YVc1amJIVmtaVnhqYjNKbFptOTFibVJoZEdsdmJseGpabUpwYm1GeQplV2hsWVhBdWFBQmpPbHho
Y0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1lYWmhhV3hoWW1sc2FYUjVhVzUwWlhKdVlXd3Vh
QUJqCk9seGtaWFpsYkZ4dGMzWnpNakF3TlZ4MlkxeHdiR0YwWm05eWJYTmthMXhwYm1Oc2RXUmxY
SEp3WTI1emFYQXVhQUJqT2x4aGNIQnMKWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpYWnBa
R1Z2WEdOMmNtVjBkWEp1TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cApibU5zZFdSbFhHTnZj
bVZuY21Gd2FHbGpjMXhqWjJkemRHRjBaUzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJI
VmtaVnhoCmRtRnBiR0ZpYVd4cGRIbHRZV055YjNNdWFBQmpPbHhrWlhabGJGeHRjM1p6TWpBd05W
eDJZMXh3YkdGMFptOXliWE5rYTF4cGJtTnMKZFdSbFhIVnliRzF2Ymk1b0FHTTZYR0Z3Y0d4bGFX
NTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZMmRqYkdsdwpjM1JoWTJzdWFB
QmpPbHhrWlhabGJGeHRjM1p6TWpBd05WeDJZMXh3YkdGMFptOXliWE5rYTF4cGJtTnNkV1JsWEhk
cGJtVm1jeTVvCkFHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0do
cFkzTmNZMmR6YUdGa2FXNW5MbWdBWXpwY1lYQncKYkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdO
dmNtVm5jbUZ3YUdsamMxeGpaMlJoZEdGamIyNXpkVzFsY2k1b0FHTTZYR0Z3Y0d4bAphVzUwWlhK
dVlXeGNhVzVqYkhWa1pWeGpiM0psWjNKaGNHaHBZM05jWTJkbWRXNWpkR2x2Ymk1b0FHTTZYR0Z3
Y0d4bGFXNTBaWEp1CllXeGNhVzVqYkhWa1pWeGpiM0psWjNKaGNHaHBZM05jWTJkemRIbHNaUzVv
QUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmsKWlZ4alptNWxkSGR2Y210Y1kyWm9kSFJ3
YldWemMyRm5aUzVvQUdNNlhHUmxkbVZzWEcxemRuTXlNREExWEhaalhIQnNZWFJtYjNKdApjMlJy
WEdsdVkyeDFaR1ZjYkhwbGVIQmhibVF1YUFCak9seGtaWFpsYkZ4dGMzWnpNakF3TlZ4MlkxeHdi
R0YwWm05eWJYTmthMXhwCmJtTnNkV1JsWEdSa1pXMXNMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhi
RnhwYm1Oc2RXUmxYSFZ1YVdOdlpHVmNkWFJtTVRZdWFBQmoKT2x4aGNIQnNaV2x1ZEdWeWJtRnNY
R2x1WTJ4MVpHVmNkVzVwWTI5a1pWeDFkR1pmYjJ4a0xtZ0FZenBjWVhCd2JHVnBiblJsY201aApi
RnhwYm1Oc2RXUmxYSFZ1YVdOdlpHVmNkWFpsY25OcGIyNHVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJt
RnNYR2x1WTJ4MVpHVmNZMjl5ClpXZHlZWEJvYVdOelhHTm5abTl1ZEdkc2VYQm9jM1Z3Y0c5eWRD
NW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGoKYjNKbFozSmhjR2hwWTNOY1ky
ZGpiMjUwWlhoMGRHVjRkQzVvQUdNNlhHUmxkbVZzWEcxemRuTXlNREExWEhaalhHbHVZMngxWkdW
YwpkR2x0WlM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0do
cFkzTmNZMmRqYjJ4dmNtTnZaR1ZtCmNtRm5iV1Z1ZEM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4
Y2FXNWpiSFZrWlZ4amIzSmxabTkxYm1SaGRHbHZibHhqWm1WeWNtOXkKTG1nQVl6cGNaR1YyWld4
Y2JYTjJjekl3TURWY2RtTmNjR3hoZEdadmNtMXpaR3RjYVc1amJIVmtaVnh5Y0dOdWRHVnljaTVv
QUdNNgpYR1JsZG1Wc1hHMXpkbk15TURBMVhIWmpYSEJzWVhSbWIzSnRjMlJyWEdsdVkyeDFaR1Zj
WjNWcFpHUmxaaTVvQUdNNlhHRndjR3hsCmFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxabTkx
Ym1SaGRHbHZibHhqWm5OMGNtbHVaeTVvQUdNNlhHUmxkbVZzWEcxemRuTXkKTURBMVhIWmpYSEJz
WVhSbWIzSnRjMlJyWEdsdVkyeDFaR1ZjY25CallYTjVibU11YUFCak9seGtaWFpsYkZ4dGMzWnpN
akF3TlZ4MgpZMXh3YkdGMFptOXliWE5rYTF4cGJtTnNkV1JsWEhKd1kyNXphUzVvQUdNNlhHRndj
R3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqCmIzSmxabTkxYm1SaGRHbHZibHhqWm1SaGRHRXVh
QUJqT2x4a1pYWmxiRnh0YzNaek1qQXdOVngyWTF4d2JHRjBabTl5YlhOa2ExeHAKYm1Oc2RXUmxY
SGRwYm5Odlkyc3lMbWdBWXpwY1pHVjJaV3hjYlhOMmN6SXdNRFZjZG1OY2NHeGhkR1p2Y20xelpH
dGNhVzVqYkhWawpaVngzYVc1blpHa3VhQUJqT2x4a1pYWmxiRnh0YzNaek1qQXdOVngyWTF4d2JH
RjBabTl5YlhOa2ExeHBibU5zZFdSbFhIZHBibVJ2CmQzTXVhQUJqT2x4a1pYWmxiRnh0YzNaek1q
QXdOVngyWTF4d2JHRjBabTl5YlhOa2ExeHBibU5zZFdSbFhIQnphSEJoWTJzeUxtZ0EKWXpwY1pH
VjJaV3hjYlhOMmN6SXdNRFZjZG1OY2FXNWpiSFZrWlZ4bGVHTndkQzVvQUdNNlhHUmxkbVZzWEcx
emRuTXlNREExWEhaagpYR2x1WTJ4MVpHVmNZM0owWkdWbWN5NW9BR002WEdSbGRtVnNYRzF6ZG5N
eU1EQTFYSFpqWEdsdVkyeDFaR1ZjYzJGc0xtZ0FZenBjClpHVjJaV3hjYlhOMmN6SXdNRFZjZG1O
Y2FXNWpiSFZrWlZ4amNuUmhjM05sYlM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWoKYkhW
a1pWeDFibWxqYjJSbFhIVmpiMjVtYVdjdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngx
WkdWY1kyOXlaV1p2ZFc1awpZWFJwYjI1Y1kyWmlkVzVrYkdVdWFBQmpPbHhrWlhabGJGeHRjM1p6
TWpBd05WeDJZMXhwYm1Oc2RXUmxYSFpoWkdWbWN5NW9BR002ClhHRndjR3hsYVc1MFpYSnVZV3hj
YVc1amJIVmtaVnhqYjNKbFptOTFibVJoZEdsdmJseGpabUo1ZEdWdmNtUmxjaTVvQUdNNlhHRncK
Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxabTkxYm1SaGRHbHZibHhqWm1ScFkzUnBi
MjVoY25rdWFBQmpPbHhrWlhabApiRnh0YzNaek1qQXdOVngyWTF4d2JHRjBabTl5YlhOa2ExeHBi
bU5zZFdSbFhIZHBibTUwTG1nQVl6cGNaR1YyWld4Y2JYTjJjekl3Ck1EVmNkbU5jY0d4aGRHWnZj
bTF6Wkd0Y2FXNWpiSFZrWlZ4M2FXNXpiV055WkM1b0FHTTZYR1JsZG1Wc1hHMXpkbk15TURBMVhI
WmoKWEhCc1lYUm1iM0p0YzJSclhHbHVZMngxWkdWY2QybHVibVYwZDJzdWFBQmpPbHhrWlhabGJG
eHRjM1p6TWpBd05WeDJZMXhwYm1OcwpkV1JsWEdOMGVYQmxMbWdBWXpwY1lYQndiR1ZwYm5SbGNt
NWhiRnhwYm1Oc2RXUmxYR052Y21WbmNtRndhR2xqYzF4aloyeGhlV1Z5CkxtZ0FZenBjWkdWMlpX
eGNiWE4yY3pJd01EVmNkbU5jYVc1amJIVmtaVnhzYjJOaGJHVXVhQUJqT2x4aGNIQnNaV2x1ZEdW
eWJtRnMKWEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5ZMjl1ZEdWNGRIQnlhWFpoZEdV
dWFBQmpPbHhrWlhabGJGeHRjM1p6TWpBdwpOVngyWTF4d2JHRjBabTl5YlhOa2ExeHBibU5zZFdS
bFhHOWlhbWxrYkM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrClpWeGthWE53WVhS
amFGeGthWE53WVhSamFDNW9BR002WEdSbGRtVnNYRzF6ZG5NeU1EQTFYSFpqWEdsdVkyeDFaR1Zj
YzJWMGFtMXcKTG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdScGMzQmhkR05v
WEdKaGMyVXVhQUJqT2x4aGNIQnNaV2x1ZEdWeQpibUZzWEdsdVkyeDFaR1ZjWTI5eVpXWnZkVzVr
WVhScGIyNWNZMlp0WlhOellXZGxjRzl5ZEM1b0FHTTZYR1JsZG1Wc1hHMXpkbk15Ck1EQTFYSFpq
WEhCc1lYUm1iM0p0YzJSclhHbHVZMngxWkdWY2IyRnBaR3d1YUFCak9seGtaWFpsYkZ4dGMzWnpN
akF3TlZ4MlkxeHcKYkdGMFptOXliWE5rYTF4cGJtTnNkV1JsWEdOa1pYSnlMbWdBSkZRd0lDUmxZ
bkFnUFNBa1pXbHdJQ1JVTUNBMElDc2dYaUE5SUNSbApZbkFnSkZRd0lGNGdQU0FrWlhOd0lDUlVN
Q0E0SUNzZ1BTQWtUQ0FrVkRBZ0xtTmlVMkYyWldSU1pXZHpJQzBnUFNBa1VDQWtWREFnCk9DQXJJ
QzVqWWxCaGNtRnRjeUFySUQwQUFBQTRCZ0FBR0FBQUFBY0FoQVlBQUJnQUFBQUxBSWdHQUFBWUFB
QUFDZ0RKQmdBQUdRQUEKQUFzQXpRWUFBQmtBQUFBS0FOZ0dBQUFhQUFBQUN3RGNCZ0FBR2dBQUFB
b0E1d1lBQUJzQUFBQUxBT3NHQUFBYkFBQUFDZ0FvQndBQQpHQUFBQUFzQUxBY0FBQmdBQUFBS0FK
Z0hBQUFsQUFBQUJ3RGtCd0FBSlFBQUFBc0E2QWNBQUNVQUFBQUtBREFJQUFBbEFBQUFDd0EwCkNB
QUFKUUFBQUFvQWFBZ0FBQ1lBQUFBSEFMUUlBQUFtQUFBQUN3QzRDQUFBSmdBQUFBb0FHQWtBQUNZ
QUFBQUxBQndKQUFBbUFBQUEKQ2dCUUNRQUFLQUFBQUFjQW5Ba0FBQ2dBQUFBTEFLQUpBQUFvQUFB
QUNnRG9DUUFBS0FBQUFBc0E3QWtBQUNnQUFBQUtBQ0FLQUFBcApBQUFBQndCc0NnQUFLUUFBQUFz
QWNBb0FBQ2tBQUFBS0FMSUtBQUFwQUFBQUN3QzJDZ0FBS1FBQUFBb0F3Z29BQUNrQUFBQUxBTVlL
CkFBQXBBQUFBQ2dEY0NnQUFLUUFBQUFzQTRBb0FBQ2tBQUFBS0FDd0xBQUF4QUFBQUJ3QjRDd0FB
TVFBQUFBc0FmQXNBQURFQUFBQUsKQUxjTEFBQTNBQUFBQ3dDN0N3QUFOd0FBQUFvQXhnc0FBRFlB
QUFBTEFNb0xBQUEyQUFBQUNnRFZDd0FBTlFBQUFBc0EyUXNBQURVQQpBQUFLQU9RTEFBQTBBQUFB
Q3dEb0N3QUFOQUFBQUFvQTh3c0FBRE1BQUFBTEFQY0xBQUF6QUFBQUNnQUNEQUFBTWdBQUFBc0FC
Z3dBCkFESUFBQUFLQUJFTUFBQTRBQUFBQ3dBVkRBQUFPQUFBQUFvQUlBd0FBRGtBQUFBTEFDUU1B
QUE1QUFBQUNnQXZEQUFBV1FBQUFBc0EKTXd3QUFGa0FBQUFLQU5nTUFBQmZBQUFBQ3dEY0RBQUFY
d0FBQUFvQVB3MEFBR0lBQUFBTEFFTU5BQUJpQUFBQUNnQ1JEUUFBTVFBQQpBQXNBbFEwQUFERUFB
QUFLQUxZTkFBQXhBQUFBQ3dDNkRRQUFNUUFBQUFvQTN3MEFBREVBQUFBTEFPTU5BQUF4QUFBQUNn
QXJEZ0FBCk1RQUFBQXNBTHc0QUFERUFBQUFLQUZBT0FBQXhBQUFBQ3dCVURnQUFNUUFBQUFvQWZR
NEFBREVBQUFBTEFJRU9BQUF4QUFBQUNnQ04KRGdBQU1RQUFBQXNBa1E0QUFERUFBQUFLQUowT0FB
QXhBQUFBQ3dDaERnQUFNUUFBQUFvQXJRNEFBREVBQUFBTEFMRU9BQUF4QUFBQQpDZ0M5RGdBQU1R
QUFBQXNBd1E0QUFERUFBQUFLQU0wT0FBQXhBQUFBQ3dEUkRnQUFNUUFBQUFvQTNRNEFBREVBQUFB
TEFPRU9BQUF4CkFBQUFDZ0R0RGdBQU1RQUFBQXNBOFE0QUFERUFBQUFLQVAwT0FBQXhBQUFBQ3dB
QkR3QUFNUUFBQUFvQURROEFBREVBQUFBTEFCRVAKQUFBeEFBQUFDZ0FkRHdBQU1RQUFBQXNBSVE4
QUFERUFBQUFLQUMwUEFBQXhBQUFBQ3dBeER3QUFNUUFBQUFvQVBROEFBREVBQUFBTApBRUVQQUFB
eEFBQUFDZ0JORHdBQU1RQUFBQXNBVVE4QUFERUFBQUFLQUYwUEFBQXhBQUFBQ3dCaER3QUFNUUFB
QUFvQWJROEFBREVBCkFBQUxBSEVQQUFBeEFBQUFDZ0I5RHdBQU1RQUFBQXNBZ1E4QUFERUFBQUFL
QUkwUEFBQXhBQUFBQ3dDUkR3QUFNUUFBQUFvQW5ROEEKQURFQUFBQUxBS0VQQUFBeEFBQUFDZ0N0
RHdBQU1RQUFBQXNBc1E4QUFERUFBQUFLQU1nUEFBQXhBQUFBQ3dETUR3QUFNUUFBQUFvQQp3QkVB
QUhRQUFBQUhBQXdTQUFCMEFBQUFDd0FRRWdBQWRBQUFBQW9BcFJJQUFIUUFBQUFMQUtrU0FBQjBB
QUFBQ2dDMUVnQUFkQUFBCkFBc0F1UklBQUhRQUFBQUtBTkFTQUFCMEFBQUFDd0RVRWdBQWRBQUFB
QW9BS0JNQUFIY0FBQUFIQUhRVEFBQjNBQUFBQ3dCNEV3QUEKZHdBQUFBb0FBeFFBQUhjQUFBQUxB
QWNVQUFCM0FBQUFDZ0FURkFBQWR3QUFBQXNBRnhRQUFIY0FBQUFLQUNNVUFBQjNBQUFBQ3dBbgpG
QUFBZHdBQUFBb0FQQlFBQUhjQUFBQUxBRUFVQUFCM0FBQUFDZ0NVRkFBQWVnQUFBQWNBNEJRQUFI
b0FBQUFMQU9RVUFBQjZBQUFBCkNnQllGUUFBZWdBQUFBc0FYQlVBQUhvQUFBQUtBSkFWQUFCN0FB
QUFCd0RjRlFBQWV3QUFBQXNBNEJVQUFIc0FBQUFLQUNvV0FBQjgKQUFBQUN3QXVGZ0FBZkFBQUFB
b0FPUllBQUgwQUFBQUxBRDBXQUFCOUFBQUFDZ0JJRmdBQWZnQUFBQXNBVEJZQUFINEFBQUFLQUV3
WApBQUI3QUFBQUN3QlFGd0FBZXdBQUFBb0FYQmNBQUhzQUFBQUxBR0FYQUFCN0FBQUFDZ0JzRndB
QWV3QUFBQXNBY0JjQUFIc0FBQUFLCkFId1hBQUI3QUFBQUN3Q0FGd0FBZXdBQUFBb0FqQmNBQUhz
QUFBQUxBSkFYQUFCN0FBQUFDZ0NjRndBQWV3QUFBQXNBb0JjQUFIc0EKQUFBS0FLd1hBQUI3QUFB
QUN3Q3dGd0FBZXdBQUFBb0F4QmNBQUhzQUFBQUxBTWdYQUFCN0FBQUFDZ0NNR0FBQWpnQUFBQWNB
MkJnQQpBSTRBQUFBTEFOd1lBQUNPQUFBQUNnQVlHUUFBandBQUFBc0FIQmtBQUk4QUFBQUtBQ2Na
QUFDUUFBQUFDd0FyR1FBQWtBQUFBQW9BCk5oa0FBSkVBQUFBTEFEb1pBQUNSQUFBQUNnQ1pHZ0FB
amdBQUFBc0FuUm9BQUk0QUFBQUtBS2thQUFDT0FBQUFDd0N0R2dBQWpnQUEKQUFvQXVSb0FBSTRB
QUFBTEFMMGFBQUNPQUFBQUNnREpHZ0FBamdBQUFBc0F6Um9BQUk0QUFBQUtBTmthQUFDT0FBQUFD
d0RkR2dBQQpqZ0FBQUFvQTZSb0FBSTRBQUFBTEFPMGFBQUNPQUFBQUNnRDVHZ0FBamdBQUFBc0Ev
Um9BQUk0QUFBQUtBQWtiQUFDT0FBQUFDd0FOCkd3QUFqZ0FBQUFvQUdSc0FBSTRBQUFBTEFCMGJB
QUNPQUFBQUNnQXBHd0FBamdBQUFBc0FMUnNBQUk0QUFBQUtBRGtiQUFDT0FBQUEKQ3dBOUd3QUFq
Z0FBQUFvQVNSc0FBSTRBQUFBTEFFMGJBQUNPQUFBQUNnQlpHd0FBamdBQUFBc0FYUnNBQUk0QUFB
QUtBR2tiQUFDTwpBQUFBQ3dCdEd3QUFqZ0FBQUFvQWVSc0FBSTRBQUFBTEFIMGJBQUNPQUFBQUNn
Q0pHd0FBamdBQUFBc0FqUnNBQUk0QUFBQUtBSmtiCkFBQ09BQUFBQ3dDZEd3QUFqZ0FBQUFvQXRC
c0FBSTRBQUFBTEFMZ2JBQUNPQUFBQUNnQUVIUUFBbXdBQUFBY0FVQjBBQUpzQUFBQUwKQUZRZEFB
Q2JBQUFBQ2dDSUhRQUFuQUFBQUFzQWpCMEFBSndBQUFBS0FKY2RBQUNkQUFBQUN3Q2JIUUFBblFB
QUFBb0FwaDBBQUo0QQpBQUFMQUtvZEFBQ2VBQUFBQ2dEd0hRQUFtd0FBQUFzQTlCMEFBSnNBQUFB
S0FDZ2VBQUNmQUFBQUJ3QjBIZ0FBbndBQUFBc0FlQjRBCkFKOEFBQUFLQUw0ZUFBQ2dBQUFBQ3dE
Q0hnQUFvQUFBQUFvQXpSNEFBS0VBQUFBTEFORWVBQUNoQUFBQUNnRGNIZ0FBb2dBQUFBc0EKNEI0
QUFLSUFBQUFLQUJ3ZkFBQ2ZBQUFBQ3dBZ0h3QUFud0FBQUFvQVpCOEFBS01BQUFBSEFMQWZBQUNq
QUFBQUN3QzBId0FBb3dBQQpBQW9BTENBQUFLTUFBQUFMQURBZ0FBQ2pBQUFBQ2dCMElBQUFwQUFB
QUFjQXdDQUFBS1FBQUFBTEFNUWdBQUNrQUFBQUNnQWNJUUFBCnBBQUFBQXNBSUNFQUFLUUFBQUFL
QUd3aEFBQ3VBQUFBQndDNElRQUFyZ0FBQUFzQXZDRUFBSzRBQUFBS0FEb2lBQUN1QUFBQUN3QSsK
SWdBQXJnQUFBQW9BVkNJQUFLNEFBQUFMQUZnaUFBQ3VBQUFBQ2dDTUlnQUFzQUFBQUFjQTJDSUFB
TEFBQUFBTEFOd2lBQUN3QUFBQQpDZ0EySXdBQXNBQUFBQXNBT2lNQUFMQUFBQUFLQUVZakFBQ3dB
QUFBQ3dCS0l3QUFzQUFBQUFvQVZpTUFBTEFBQUFBTEFGb2pBQUN3CkFBQUFDZ0JtSXdBQXNBQUFB
QXNBYWlNQUFMQUFBQUFLQUlBakFBQ3dBQUFBQ3dDRUl3QUFzQUFBQUFvQTBDTUFBTFVBQUFBSEFC
d2sKQUFDMUFBQUFDd0FnSkFBQXRRQUFBQW9BZ3lRQUFMVUFBQUFMQUlja0FBQzFBQUFBQ2dDY0pB
QUF0UUFBQUFzQW9DUUFBTFVBQUFBSwpBTlFrQUFDM0FBQUFCd0FnSlFBQXR3QUFBQXNBSkNVQUFM
Y0FBQUFLQUdvbEFBQzVBQUFBQ3dCdUpRQUF1UUFBQUFvQWVTVUFBTGdBCkFBQUxBSDBsQUFDNEFB
QUFDZ0NJSlFBQXVnQUFBQXNBakNVQUFMb0FBQUFLQUpjbEFBQzdBQUFBQ3dDYkpRQUF1d0FBQUFv
QTlpVUEKQUxjQUFBQUxBUG9sQUFDM0FBQUFDZ0FHSmdBQXR3QUFBQXNBQ2lZQUFMY0FBQUFLQUJZ
bUFBQzNBQUFBQ3dBYUpnQUF0d0FBQUFvQQpKaVlBQUxjQUFBQUxBQ29tQUFDM0FBQUFDZ0EySmdB
QXR3QUFBQXNBT2lZQUFMY0FBQUFLQUZBbUFBQzNBQUFBQ3dCVUpnQUF0d0FBCkFBb0FtQ1lBQU1B
QUFBQUhBT1FtQUFEQUFBQUFDd0RvSmdBQXdBQUFBQW9BTHljQUFNRUFBQUFMQURNbkFBREJBQUFB
Q2dBK0p3QUEKd2dBQUFBc0FRaWNBQU1JQUFBQUtBRTBuQUFEREFBQUFDd0JSSndBQXd3QUFBQW9B
a0NjQUFNQUFBQUFMQUpRbkFBREFBQUFBQ2dEWQpKd0FBeEFBQUFBY0FKQ2dBQU1RQUFBQUxBQ2dv
QUFERUFBQUFDZ0IwS0FBQXhBQUFBQXNBZUNnQUFNUUFBQUFLQUlRb0FBREVBQUFBCkN3Q0lLQUFB
eEFBQUFBb0FsQ2dBQU1RQUFBQUxBSmdvQUFERUFBQUFDZ0NrS0FBQXhBQUFBQXNBcUNnQUFNUUFB
QUFLQUx3b0FBREUKQUFBQUN3REFLQUFBeEFBQUFBb0E5Q2dBQU1VQUFBQUhBRUFwQUFERkFBQUFD
d0JFS1FBQXhRQUFBQW9Bc2lrQUFNVUFBQUFMQUxZcApBQURGQUFBQUNnRENLUUFBeFFBQUFBc0F4
aWtBQU1VQUFBQUtBTklwQUFERkFBQUFDd0RXS1FBQXhRQUFBQW9BN0NrQUFNVUFBQUFMCkFQQXBB
QURGQUFBQUNnQTBLZ0FBeVFBQUFBY0FnQ29BQU1rQUFBQUxBSVFxQUFESkFBQUFDZ0RXS2dBQXlR
QUFBQXNBMmlvQUFNa0EKQUFBS0FQQXFBQURKQUFBQUN3RDBLZ0FBeVFBQUFBb0FLQ3NBQU1zQUFB
QUhBSFFyQUFETEFBQUFDd0I0S3dBQXl3QUFBQW9BMnlzQQpBTXNBQUFBTEFOOHJBQURMQUFBQUNn
RHJLd0FBeXdBQUFBc0E3eXNBQU1zQUFBQUtBQVFzQUFETEFBQUFDd0FJTEFBQXl3QUFBQW9BClZD
d0FBTTBBQUFBSEFLQXNBQUROQUFBQUN3Q2tMQUFBelFBQUFBb0FMaTBBQU0wQUFBQUxBREl0QUFE
TkFBQUFDZ0ErTFFBQXpRQUEKQUFzQVFpMEFBTTBBQUFBS0FFNHRBQUROQUFBQUN3QlNMUUFBelFB
QUFBb0FYaTBBQU0wQUFBQUxBR0l0QUFETkFBQUFDZ0I0TFFBQQp6UUFBQUFzQWZDMEFBTTBBQUFB
S0FPZ3RBQURUQUFBQUJ3QTBMZ0FBMHdBQUFBc0FPQzRBQU5NQUFBQUtBSHN1QUFEVEFBQUFDd0Iv
CkxnQUEwd0FBQUFvQWxDNEFBTk1BQUFBTEFKZ3VBQURUQUFBQUNnRE1MZ0FBMVFBQUFBY0FHQzhB
QU5VQUFBQUxBQnd2QUFEVkFBQUEKQ2dDSUx3QUExUUFBQUFzQWpDOEFBTlVBQUFBS0FKZ3ZBQURW
QUFBQUN3Q2NMd0FBMVFBQUFBb0FxQzhBQU5VQUFBQUxBS3d2QUFEVgpBQUFBQ2dEQUx3QUExUUFB
QUFzQXhDOEFBTlVBQUFBS0FCQXdBQURZQUFBQUJ3QmNNQUFBMkFBQUFBc0FZREFBQU5nQUFBQUtB
TTR3CkFBRFlBQUFBQ3dEU01BQUEyQUFBQUFvQTNqQUFBTmdBQUFBTEFPSXdBQURZQUFBQUNnRDRN
QUFBMkFBQUFBc0EvREFBQU5nQUFBQUsKQURBeEFBRGRBQUFBQndCOE1RQUEzUUFBQUFzQWdERUFB
TjBBQUFBS0FPQXhBQURkQUFBQUN3RGtNUUFBM1FBQUFBb0ErREVBQU4wQQpBQUFMQVB3eEFBRGRB
QUFBQ2dBd01nQUEzd0FBQUFjQWZESUFBTjhBQUFBTEFJQXlBQURmQUFBQUNnRDFNZ0FBM3dBQUFB
c0ErVElBCkFOOEFBQUFLQUJBekFBRGZBQUFBQ3dBVU13QUEzd0FBQUFvQVNETUFBT0VBQUFBSEFK
UXpBQURoQUFBQUN3Q1lNd0FBNFFBQUFBb0EKcXpRQUFPRUFBQUFMQUs4MEFBRGhBQUFBQ2dDN05B
QUE0UUFBQUFzQXZ6UUFBT0VBQUFBS0FNczBBQURoQUFBQUN3RFBOQUFBNFFBQQpBQW9BMnpRQUFP
RUFBQUFMQU44MEFBRGhBQUFBQ2dEck5BQUE0UUFBQUFzQTd6UUFBT0VBQUFBS0FBUTFBQURoQUFB
QUN3QUlOUUFBCjRRQUFBQW9BbERVQUFPUUFBQUFIQU9BMUFBRGtBQUFBQ3dEa05RQUE1QUFBQUFv
QWVEWUFBT1FBQUFBTEFIdzJBQURrQUFBQUNnQ0kKTmdBQTVBQUFBQXNBakRZQUFPUUFBQUFLQUpn
MkFBRGtBQUFBQ3dDY05nQUE1QUFBQUFvQXNEWUFBT1FBQUFBTEFMUTJBQURrQUFBQQpDZ0FBTndB
QTV3QUFBQWNBVERjQUFPY0FBQUFMQUZBM0FBRG5BQUFBQ2dDek53QUE1d0FBQUFzQXR6Y0FBT2NB
QUFBS0FNdzNBQURuCkFBQUFDd0RRTndBQTV3QUFBQW9BQkRnQUFPa0FBQUFIQUZBNEFBRHBBQUFB
Q3dCVU9BQUE2UUFBQUFvQW1EZ0FBT3NBQUFBTEFKdzQKQUFEckFBQUFDZ0NuT0FBQTZnQUFBQXNB
cXpnQUFPb0FBQUFLQUxZNEFBRHNBQUFBQ3dDNk9BQUE3QUFBQUFvQXhUZ0FBTzBBQUFBTApBTWs0
QUFEdEFBQUFDZ0JiT1FBQTZRQUFBQXNBWHprQUFPa0FBQUFLQUdzNUFBRHBBQUFBQ3dCdk9RQUE2
UUFBQUFvQWV6a0FBT2tBCkFBQUxBSDg1QUFEcEFBQUFDZ0NVT1FBQTZRQUFBQXNBbURrQUFPa0FB
QUFLQU93NUFBRHpBQUFBQndBNE9nQUE4d0FBQUFzQVBEb0EKQVBNQUFBQUtBSTA2QUFEMUFBQUFD
d0NST2dBQTlRQUFBQW9BbkRvQUFQUUFBQUFMQUtBNkFBRDBBQUFBQ2dDck9nQUE5Z0FBQUFzQQpy
em9BQVBZQUFBQUtBTG82QUFEM0FBQUFDd0MrT2dBQTl3QUFBQW9BbnpzQUFQTUFBQUFMQUtNN0FB
RHpBQUFBQ2dDdk93QUE4d0FBCkFBc0FzenNBQVBNQUFBQUtBTDg3QUFEekFBQUFDd0RET3dBQTh3
QUFBQW9BenpzQUFQTUFBQUFMQU5NN0FBRHpBQUFBQ2dEZk93QUEKOHdBQUFBc0E0enNBQVBNQUFB
QUtBTzg3QUFEekFBQUFDd0R6T3dBQTh3QUFBQW9BL3pzQUFQTUFBQUFMQUFNOEFBRHpBQUFBQ2dB
UApQQUFBOHdBQUFBc0FFendBQVBNQUFBQUtBQjg4QUFEekFBQUFDd0FqUEFBQTh3QUFBQW9BT0R3
QUFQTUFBQUFMQUR3OEFBRHpBQUFBCkNnQzRQQUFBK3dBQUFBY0FCRDBBQVBzQUFBQUxBQWc5QUFE
N0FBQUFDZ0NIUFFBQSt3QUFBQXNBaXowQUFQc0FBQUFLQUpjOUFBRDcKQUFBQUN3Q2JQUUFBK3dB
QUFBb0FzRDBBQVBzQUFBQUxBTFE5QUFEN0FBQUFDZ0Q0UFFBQS9nQUFBQWNBUkQ0QUFQNEFBQUFM
QUVnKwpBQUQrQUFBQUNnQzhQZ0FBL2dBQUFBc0F3RDRBQVA0QUFBQUtBTlErQUFEK0FBQUFDd0RZ
UGdBQS9nQUFBQW9BREQ4QUFBQUJBQUFICkFGZy9BQUFBQVFBQUN3QmNQd0FBQUFFQUFBb0F5ejhB
QUFBQkFBQUxBTTgvQUFBQUFRQUFDZ0RrUHdBQUFBRUFBQXNBNkQ4QUFBQUIKQUFBS0FCeEFBQUFD
QVFBQUJ3Qm9RQUFBQWdFQUFBc0FiRUFBQUFJQkFBQUtBTGRBQUFBQ0FRQUFDd0M3UUFBQUFnRUFB
QW9BMEVBQQpBQUlCQUFBTEFOUkFBQUFDQVFBQUNnQUlRUUFBQkFFQUFBY0FWRUVBQUFRQkFBQUxB
RmhCQUFBRUFRQUFDZ0NrUVFBQUJBRUFBQXNBCnFFRUFBQVFCQUFBS0FMeEJBQUFFQVFBQUN3REFR
UUFBQkFFQUFBb0E5RUVBQUFZQkFBQUhBRUJDQUFBR0FRQUFDd0JFUWdBQUJnRUEKQUFvQWtrSUFB
QVlCQUFBTEFKWkNBQUFHQVFBQUNnQ3NRZ0FBQmdFQUFBc0FzRUlBQUFZQkFBQUtBT1JDQUFBSUFR
QUFCd0F3UXdBQQpDQUVBQUFzQU5FTUFBQWdCQUFBS0FJRkRBQUFJQVFBQUN3Q0ZRd0FBQ0FFQUFB
b0FuRU1BQUFnQkFBQUxBS0JEQUFBSUFRQUFDZ0RVClF3QUFDZ0VBQUFjQUlFUUFBQW9CQUFBTEFD
UkVBQUFLQVFBQUNnQnNSQUFBQ2dFQUFBc0FjRVFBQUFvQkFBQUtBSVJFQUFBS0FRQUEKQ3dDSVJB
QUFDZ0VBQUFvQXZFUUFBQXdCQUFBSEFBaEZBQUFNQVFBQUN3QU1SUUFBREFFQUFBb0FWa1VBQUF3
QkFBQUxBRnBGQUFBTQpBUUFBQ2dCd1JRQUFEQUVBQUFzQWRFVUFBQXdCQUFBS0FLaEZBQUFPQVFB
QUJ3RDBSUUFBRGdFQUFBc0ErRVVBQUE0QkFBQUtBS3RHCkFBQU9BUUFBQ3dDdlJnQUFEZ0VBQUFv
QXhFWUFBQTRCQUFBTEFNaEdBQUFPQVFBQUNnRDhSZ0FBRUFFQUFBY0FTRWNBQUJBQkFBQUwKQUV4
SEFBQVFBUUFBQ2dCR1NBQUFFQUVBQUFzQVNrZ0FBQkFCQUFBS0FHQklBQUFRQVFBQUN3QmtTQUFB
RUFFQUFBb0FtRWdBQUJJQgpBQUFIQU9SSUFBQVNBUUFBQ3dEb1NBQUFFZ0VBQUFvQVZra0FBQklC
QUFBTEFGcEpBQUFTQVFBQUNnQndTUUFBRWdFQUFBc0FkRWtBCkFCSUJBQUFLQUtoSkFBQVVBUUFB
QndEMFNRQUFGQUVBQUFzQStFa0FBQlFCQUFBS0FFTktBQUFVQVFBQUN3QkhTZ0FBRkFFQUFBb0EK
WEVvQUFCUUJBQUFMQUdCS0FBQVVBUUFBQ2dDVVNnQUFGZ0VBQUFjQTRFb0FBQllCQUFBTEFPUktB
QUFXQVFBQUNnQWhTd0FBRmdFQQpBQXNBSlVzQUFCWUJBQUFLQUR4TEFBQVdBUUFBQ3dCQVN3QUFG
Z0VBQUFvQWZFc0FBTkVBQUFBTEFJQkxBQURSQUFBQUNnRFVTd0FBCjBnQUFBQXNBMkVzQUFOSUFB
QUFLQU1GTUFBRGNBQUFBQ3dERlRBQUEzQUFBQUFvQTVFd0FBTnNBQUFBTEFPaE1BQURiQUFBQUNn
QWMKVGdBQUNBQUFBQXNBSUU0QUFBZ0FBQUFLQUR4T0FBQUxBQUFBQ3dCQVRnQUFDd0FBQUFvQVhr
NEFBQXdBQUFBTEFHSk9BQUFNQUFBQQpDZ0NCVGdBQUp3RUFBQXNBaFU0QUFDY0JBQUFLQUxsT0FB
QXNBUUFBQ3dDOVRnQUFMQUVBQUFvQTZrNEFBQ2tCQUFBTEFPNU9BQUFwCkFRQUFDZ0FuVHdBQUxR
RUFBQXNBSzA4QUFDMEJBQUFLQUZsUEFBQW9BUUFBQ3dCZFR3QUFLQUVBQUFvQWkwOEFBQzRCQUFB
TEFJOVAKQUFBdUFRQUFDZ0RLVHdBQUVBQUFBQXNBems4QUFCQUFBQUFLQVBCUEFBQXZBQUFBQ3dE
MFR3QUFMd0FBQUFvQUcxQUFBQzBBQUFBTApBQjlRQUFBdEFBQUFDZ0JEVUFBQUxBQUFBQXNBUjFB
QUFDd0FBQUFLQUx0YUFBRFFBQUFBQ3dDL1dnQUEwQUFBQUFvQUtHSUFBTzhBCkFBQUxBQ3hpQUFE
dkFBQUFDZ0JhWWdBQThnQUFBQXNBWG1JQUFQSUFBQUFLQUpCaUFBRHhBQUFBQ3dDVVlnQUE4UUFB
QUFvQXhtSUEKQVBnQUFBQUxBTXBpQUFENEFBQUFDZ0FFWXdBQS9RQUFBQXNBQ0dNQUFQMEFBQUFL
QURNekUwQmZhME5HVjJsdVpHOTNjMU5UVEZCbApaWEpEWlhKMEFBQmZhME5HVjJsdVpHOTNjMU5U
VEV4dlkyRnNRMlZ5ZEFCZmEwTkdVM1J5WldGdFVISnZjR1Z5ZEhsWGFXNWtiM2R6ClUxTk1RMlZ5
ZEVsdVptOEFBQUFBWDJ0RFJsVlNURU52Ym01bFkzUnBiMjVRY205d1pYSjBlVk5vYjNWc1pGTnVh
V1ptQUFBQUFFTUEKUmdCT0FHVUFkQUIzQUc4QWNnQnJBQzRBWkFCc0FHd0FBQUJmUTBaT1pYUjNi
M0pyU0ZSVVVFTnZibTVsWTNScGIyNURZV05vWlZObApkRXhwYldsMEFBQUFYME5HVG1WMGQyOXlh
MGhVVkZCRGIyNXVaV04wYVc5dVEyRmphR1ZIWlhSTWFXMXBkQUFBQUZCeWIzaDVMVUYxCmRHaHZj
bWw2WVhScGIyNEFNQUFBQUFJQUFBQUFBQUJBVll2c2crd1l1TXpNek15SlJlaUpSZXlKUmZDSlJm
U0pSZmlKUmZ6SFJld0EKQUFBQXgwWHdJQUFBQU1kRjlEQUFBQURIUmZoQUFBQUFnMzBJQUh3R2cz
MElCSFlDNnhhTFJRaUxUSVhzaVEwQUFBQUFpMVVJaVJVQQpBQUFBVW92TlVJMFZBQUFBQU9nQUFB
QUFXRnFMNVYzRGkvOEJBQUFBQUFBQUFPei8vLzhRQUFBQUFBQUFBSE50YjI5MGFHbHVaMVI1CmNH
VUF6TXpNek16TXpNek16RldMN0tFQUFBQUFYY1BNek16TXpNeFZpK3paUlFqWkhRQUFBQUJkdzh6
TVZZdnMyUVVBQUFBQVhjUE0Kek16TXpGV0w3RmFMOUdvQWFBQUFBQUJxQUdwSy94VUFBQUFBTy9U
b0FBQUFBSXYwYWdCb0FBQUFBR29BYUFvZ0FBRC9GUUFBQUFBNwo5T2dBQUFBQTZBQUFBQURaSFFB
QUFBREdCUUFBQUFBQlhqdnM2QUFBQUFCZHc4ek16TXpNek16TXpGV0w3SUhzOUFBQUFGWlhqYjBN
Ci8vLy91VDBBQUFDNHpNek16UE9yWnNkRitGd0FpL1JxQUkxRjdGQnFBR2dNSUFBQS94VUFBQUFB
Ty9Ub0FBQUFBSVhBZEF1TFRldzcKRFFBQUFBQjFDOWtGQUFBQUFPbW9CQUFBaTFYc2lSVUFBQUFB
aS9ScUFQOFZBQUFBQUR2MDZBQUFBQUNKUmVTTDlHb1IveFVBQUFBQQpPL1RvQUFBQUFJdjBVSXRG
NUZEL0ZRQUFBQUE3OU9nQUFBQUFpVVhnaS9Sb0FBQUFBR29BYWdDTlRjaFJhZ0JxWEl0VjVGTC9G
UUFBCkFBQTc5T2dBQUFBQWcvai9kVENMUmV5SmhUVC8vLy9IaFRqLy8vOEFBQUFBMzYwMC8vLy8z
RFVBQUFBQTJaMHcvLy8vMllVdy8vLy8KNlFvRUFBREhSWlFvQUFBQVpzZEZvQUVBeDBXa0FBQUFB
TWRGcUFBQUFBREhSYXdBQUFBQXgwV3dBQUFBQU1kRnVBQUFBQUNMVGNpSgpUWmlMVmN6MzJvbFZu
R2JIUmFJZ0FNZEZ0QUFBQUFDTDlHb0FhZ0NOUlloUWFnQ05UWlJSYWdEL0ZRQUFBQUE3OU9nQUFB
QUFpVVdBCmkvU0xWWUJTaTBYa1VQOFZBQUFBQUR2MDZBQUFBQUNKaFh6Ly8vK0w5STJOWVAvLy8x
RnFHSXRWZ0ZML0ZRQUFBQUE3OU9nQUFBQUEKaTBYTUQ2K0ZiUC8vLzFCcUFJdE5pRkhvQUFBQUFJ
UEVESXYwYWdLTFZlUlMveFVBQUFBQU8vVG9BQUFBQUl2MGFnQ0xSZVJRL3hVQQpBQUFBTy9Ub0FB
QUFBSXYwYVAvLy93Q0xUZVJSL3hVQUFBQUFPL1RvQUFBQUFJdjBhZ0NMVmVSUy94VUFBQUFBTy9U
b0FBQUFBSXYwCmFnQnFBWTFGK0ZCcUFHb0FhZ0JxQUl0TjVGSC9GUUFBQUFBNzlPZ0FBQUFBeDRW
WS8vLy9BQUFBQU1hRlYvLy8vd0RIaFZELy8vOEEKQUFBQTZ3K0xsVkQvLy8rRHdnR0psVkQvLy8r
TGhWRC8vLzg3UmN3UGc1VUFBQUNEdlZqLy8vOEFENFdJQUFBQXg0Vk0vLy8vQUFBQQpBT3NQaTQx
TS8vLy9nOEVCaVkxTS8vLy9pMVhJd2VJQ09aVk0vLy8vYzFxTGhWRC8vLzhQcjRWcy8vLy9BNFZN
Ly8vL2kwMklpaFFCCmlKVlgvLy8vRDdhRlYvLy8vNFA0SUg0dEQ3YU5WLy8vLzRINThBQUFBSDBl
aTVWUS8vLy9ENitWYlAvLy93TlZpQU9WVFAvLy80bVYKV1AvLy8rc0M2NG5wVGYvLy80TzlXUC8v
L3dBUGhISUJBQUNMOUdvQWkwWGtVUDhWQUFBQUFEdjA2QUFBQUFDTDlHai8vLzhBaTAzawpVZjhW
QUFBQUFEdjA2QUFBQUFDTDlHb0FhZ0dOVmZoU2FnQnFBR29BYWdDTFJlUlEveFVBQUFBQU8vVG9B
QUFBQUl1TldQLy8vNG9SCmlKVkwvLy8vMmVqWm5VVC8vLy9aNk5tZFFQLy8vK3NTMllWQS8vLy8z
QVVBQUFBQTJaMUEvLy8vMllWQS8vLy8zQjBBQUFBQTMrRDIKeEFVUGl0Y0FBQUJSMllWQS8vLy8y
UndrRDdhRlYvLy8vNG1GTFAvLy85dUZMUC8vLzl3MUFBQUFBTm1kS1AvLy85bUZLUC8vLzFIWgpI
Q1RvQUFBQUFJUEVCTm1GUVAvLy85a2NKQSsyalV2Ly8vK0pqU1QvLy8vYmhTVC8vLy9jTlFBQUFB
RFpuU0QvLy8vWmhTRC8vLzlSCjJSd2szWjBZLy8vLzZBQUFBQUNEeEFqY2hSai8vLy9jSlFBQUFB
RFpuUlQvLy8vWmhSVC8vLzlSMlJ3azZBQUFBQUNEeEFUWm5Uei8KLy8vWmhUei8vLy9aaFVULy8v
L2UyZC9nOXNSQmRSalpoVHovLy8vWm5VVC8vLy9aaFVELy8vL1pIUUFBQUFEcEFQLy8vK3NsaTFY
cwppWlVNLy8vL3g0VVEvLy8vQUFBQUFOK3REUC8vLzl3MUFBQUFBTmtkQUFBQUFJdjBpNFY4Ly8v
L1VJdE41RkgvRlFBQUFBQTc5T2dBCkFBQUFpL1NMVmVCU2kwWGtVUDhWQUFBQUFEdjA2QUFBQUFD
TDlJdE5nRkgvRlFBQUFBQTc5T2dBQUFBQWkvU0xWZVJTL3hVQUFBQUEKTy9Ub0FBQUFBTmtGQUFB
QUFGS0x6VkNORlFBQUFBRG9BQUFBQUZoYVgxNkJ4UFFBQUFBNzdPZ0FBQUFBaStWZHc0MUpBQVlB
QUFBQQpBQUFBK1AvLy93SUFBQUFBQUFBQTdQLy8vd1FBQUFBQUFBQUF5UC8vL3hRQUFBQUFBQUFB
bFAvLy95d0FBQUFBQUFBQWlQLy8vd1FBCkFBQUFBQUFBWVAvLy94Z0FBQUFBQUFBQVltMXdTVzVt
YndCd2FYaGxiSE1BWW1sMGJXRndTVzVtYndCbmJIbHdhRTFsZEhKcFkzTUEKWTI5dWRISmhjM1FB
Y21WbVpYSmxjbTVqWlVOb1lYSmhZM1JsY2dETXpNek1WWXZzVVZiSFJmek16TXpNeDBYOEFBQUFB
SXYwaTBVSQpVUDhWQUFBQUFJUEVCRHYwNkFBQUFBQVB0c2lGeVhRWmkvU0xWUWhTL3hVQUFBQUFn
OFFFTy9Ub0FBQUFBSWxGL0lwRkRGQ0xEUUFBCkFBQlJpMVVJVXVnQUFBQUFnOFFNaTBYOFhvUEVC
RHZzNkFBQUFBQ0w1VjNEek16TXpNek16TXpNek16TXpNeFZpK3hXZzMwTUFIUTIKaS9TS1JSQlFp
MDBJVWY4VkFBQUFBSVBFQ0R2MDZBQUFBQUNMOUl0VkRGS0xSUWhRL3hVQUFBQUFnOFFJTy9Ub0FB
QUFBT3NZaS9ScQpBSXROQ0ZIL0ZRQUFBQUNEeEFnNzlPZ0FBQUFBWGp2czZBQUFBQUJkdzh6TXpN
ek16TXpNek16TXpNek1WWXZzYWdHTFJReFFpMDBJClVlZ0FBQUFBZzhRTU8rem9BQUFBQUYzRHpN
eFZpK3lEN0dSV1Y0MTluTGtaQUFBQXVNek16TXp6cThaRi93SEdSZjRCMlFVQUFBQUEKMlYzNEQ3
WkZGSVhBZEZUR1JmNEFEN1lOQUFBQUFJWEpkUVhvQUFBQUFOa0ZBQUFBQU5sZCtJTTlBQUFBQUFB
UGxjS0lWZitEUFFBQQpBQUFCZFNHTDlHb1FpMFVJVVA4VkFBQUFBSVBFQ0R2MDZBQUFBQURaQlFB
QUFBRFpYZmlMOUZIWlJmalpIQ1NMVFFoUi94VUFBQUFBCmc4UUlPL1RvQUFBQUFJdjBpbFVVVW90
RkNGRC9GUUFBQUFDRHhBZzc5T2dBQUFBQWkvU0tUZjlSaTFVSVV2OFZBQUFBQUlQRUNEdjAKNkFB
QUFBQ0w5SXRGQ0ZDTlRhUlIveFVBQUFBQWc4UUlPL1RvQUFBQUFJc1FpVlc4aTBnRWlVM0FpMUFJ
aVZYRWkwZ01pVTNJaTFBUQppVlhNaTBBVWlVWFFpMDI4aVUzY2kxWEFpVlhnaTBYRWlVWGtpMDNJ
aVUzb2kxWE1pVlhzaTBYUWlVWHcyVVhjM0IwQUFBQUEzK0QyCnhFUjZTZGxGNk53ZEFBQUFBTi9n
OXNSRWV4RFpSZWpjSFFBQUFBRGY0UGJFUkhvcDJVWGczQjBBQUFBQTMrRDJ4RVI2R2RsRjVOd2QK
QUFBQUFOL2c5c1JFZWduSFJhQUJBQUFBNndmSFJhQUFBQUFBaWsyZ2lFM1hEN1pWL29YU2RCWVB0
a1VNaGNCMUNBKzJUZGVGeVhVRwp4a1dmQWVzRXhrV2ZBSXYwaWxXZlVvdEZDRkQvRlFBQUFBQ0R4
QWc3OU9nQUFBQUFpL1NLVGRkUmkxVUlVdjhWQUFBQUFJUEVDRHYwCjZBQUFBQUJTaTgxUWpSVUFB
QUFBNkFBQUFBQllXbDllZzhSa08rem9BQUFBQUl2bFhjT1FBUUFBQUFBQUFBRGMvLy8vR0FBQUFB
QUEKQUFCamIyNTBaWGgwVkhKaGJuTm1iM0p0QU16TXpNek16TXhWaSt5RDdGQldWNDE5c0xrVUFB
QUF1TXpNek16enE0cEZGRkNLVFJCUgo2QUFBQUFDRHhBaUpSZnlMOUl0VkhGSnFBWTFGR0ZDTFRm
eFJpMVVNVW90RkNGRC9GUUFBQUFDRHhCZzc5T2dBQUFBQWkvUm9lSFJ0CmFJdE5DRkgvRlFBQUFB
Q0R4QWc3OU9nQUFBQUFpVVg0ZzMzNEFIVUY2YVVDQUFDTDlHaGhaV2hvaTFVSVV2OFZBQUFBQUlQ
RUNEdjAKNkFBQUFBQ0pSZlNEZmZRQWRSdUw5SXRGK0ZEL0ZRQUFBQUNEeEFRNzlPZ0FBQUFBNldZ
Q0FBREhSZkFrQUFBQXgwWHNJZ0FBQUl2MAppMDMwVWY4VkFBQUFBSVBFQkR2MDZBQUFBQUNEK0NS
ek1ZdjBpMVg0VXY4VkFBQUFBSVBFQkR2MDZBQUFBQUNMOUl0RjlGRC9GUUFBCkFBQ0R4QVE3OU9n
QUFBQUE2UXdDQUFDTDlJdE45RkgvRlFBQUFBQ0R4QVE3OU9nQUFBQUFab3RRSW1hSlZlZ1B0MFhv
SmY4QUFBREIKNEFnUHQwM293ZmtJQzhGbWlVWG9EN2RWNklYU2RUR0w5SXRGK0ZEL0ZRQUFBQUNE
eEFRNzlPZ0FBQUFBaS9TTFRmUlIveFVBQUFBQQpnOFFFTy9Ub0FBQUFBT21jQVFBQUQ3ZFZHQSsz
UmVnNzBId0xEN2RONklQcEFXYUpUUmlMOUl0VitGTC9GUUFBQUFDRHhBUTc5T2dBCkFBQUFEN2RO
R0kwVWpRUUFBQUE3d24weGkvU0xSZmhRL3hVQUFBQUFnOFFFTy9Ub0FBQUFBSXYwaTAzMFVmOFZB
QUFBQUlQRUJEdjAKNkFBQUFBRHBMd0VBQUl2MGkxWDRVdjhWQUFBQUFJUEVCRHYwNkFBQUFBQVB0
MDBZWm9zVWlHYUpWZVFQdDBYa0pmOEFBQURCNEFnUAp0MDNrd2ZrSUM4Rm1pVVhrVWRudTJSd2tE
N2RWNUlsVndOdEZ3SXYwaTBVSVVOMWR1UDhWQUFBQUFJUEVCRHYwNkFBQUFBQ0pSYlRiClJiVGNm
YmpaWGJEWlJiQlIyUndrNkFBQUFBQ0R4QWlKUmN5SlZkQ0xUY3lKVGRpTFZkQ0pWZHlMUlF5RDdC
aUx6SXNRaVJHTFVBU0oKVVFTTFVBaUpVUWlMVUF5SlVReUxVQkNKVVJDTFFCU0pRUlNMVGR4Umkx
WFlVdWdBQUFBQWc4UWdpVVhFaVZYSWkwWEVpVVhZaTAzSQppVTNjaTFVYzJVWFkyUnFMUmZ5RDRB
UjFGb3ROSEZIWkFka2NKT2dBQUFBQWc4UUVpMVVjMlJxTDlJdEY5RkQvRlFBQUFBQ0R4QVE3CjlP
Z0FBQUFBaS9TTFRmaFIveFVBQUFBQWc4UUVPL1RvQUFBQUFGS0x6VkNORlFBQUFBRG9BQUFBQUZo
YVgxNkR4RkE3N09nQUFBQUEKaStWZHc0MUpBQUVBQUFBQUFBQUEyUC8vL3dnQUFBQUFBQUFBYUc5
eWFYcHZiblJoYkVGa2RtRnVZMlVBek16TXpNek1WWXZzZyt3UQp1TXpNek15SlJmQ0pSZlNKUmZp
SlJmelpSUWpaWGZUWlJRelpYZmlMUmZTTFZmaFNpODFRalJVQUFBQUE2QUFBQUFCWVdvdmxYY09M
Ci93RUFBQUFBQUFBQTlQLy8vd2dBQUFBQUFBQUFjMmw2WlFETXpNek16TXpNVll2c2crd1F1TXpN
ek15SlJmQ0pSZlNKUmZpSlJmeloKUlJEWVRRalpSUmpZVFF6ZXdkbGQ5TmxGRk5oTkNObEZITmhO
RE43QjJWMzRpMFgwaTFYNFVvdk5VSTBWQUFBQUFPZ0FBQUFBV0ZxTAo1VjNEQVFBQUFBQUFBQUQw
Ly8vL0NBQUFBQUFBQUFCekFNek16TXpNekZXTDdBKzJSUWlGd0hVSUQ3Wk5ESVhKZEFlNERRQUFB
T3NGCnVBRUFBQUJkdzh6TXpNek16TXpNek16TXpNek16RldMN0lQc0hMak16TXpNaVVYa2lVWG9p
VVhzaVVYd2lVWDBpVVg0aVVYOFVkbEYKQ05rY0pPZ0FBQUFBZzhRRTJWMzgyVVVJM0IwQUFBQUEz
K0QyeEVGMU10bEYvTmhsQ053ZEFBQUFBTi9nOXNSQmRRN1pSZnpjSlFBQQpBQURkWGZUckJ0bEYv
TjFkOU4xRjlObGQ4TmxGOE9zdzJVWDgyR1VJM0IwQUFBQUEzK0QyeEFGMUR0bEYvTndsQUFBQUFO
MWQ2T3NHCjJVWDgzVjNvM1VYbzJWM2syVVhrZzhRY08rem9BQUFBQUl2bFhjUE16TXpNek16TXpN
ek16TXpNekZXTDdGYUw5SXRGRkZDTFRSQlIKaTFVTVVvdEZDRkQvRlFBQUFBQ0R4QkE3OU9nQUFB
QUFYanZzNkFBQUFBQmR3MVdMN0ZGV3gwWDh6TXpNekl2MGFnSC9GUUFBQUFDRAp4QVE3OU9nQUFB
QUFpL1QvRlFBQUFBQTc5T2dBQUFBQWlVWDhpL1JxQUl0Ri9GRC9GUUFBQUFDRHhBZzc5T2dBQUFB
QWkvU0xUUWhSCmkxWDhVdjhWQUFBQUFJUEVDRHYwNkFBQUFBQmVnOFFFTyt6b0FBQUFBSXZsWGNQ
TXpNek16TXpNek16TXpNek1WWXZzVm92MGcrd1kKaThTTFRReUpDSXRWRUlsUUJJdE5GSWxJQ0l0
VkdJbFFESXROSElsSUVJdFZJSWxRRkl0RkNGRC9GUUFBQUFDRHhCdzc5T2dBQUFBQQpYanZzNkFB
QUFBQmR3OHpNek14VmkreUI3QUFCQUFCV1Y0MjlBUC8vLzdsQUFBQUF1TXpNek16enE0djBpMFVJ
VUkyTmNQLy8vMUgvCkZRQUFBQUNEeEFnNzlPZ0FBQUFBaXhDSlZZaUxTQVNKVFl5TFVBaUpWWkNM
U0F5SlRaU0xVQkNKVlppTFFCU0pSWnlMOUlQc0dJdk0KaTFXSWlSR0xSWXlKUVFTTFZaQ0pVUWlM
UlpTSlFReUxWWmlKVVJDTFJaeUpRUlNOalZqLy8vOVIveFVBQUFBQWc4UWNPL1RvQUFBQQpBSXNR
aVZXZ2kwZ0VpVTJraTFBSWlWV29pMGdNaVUyc2kxQVFpVld3aTBBVWlVVzBpL1NMVFFoUmpaVW8v
Ly8vVXY4VkFBQUFBSVBFCkNEdjA2QUFBQUFDTENJbU5RUC8vLzR0UUJJbVZSUC8vLzR0SUNJbU5T
UC8vLzR0UURJbVZUUC8vLzR0SUVJbU5VUC8vLzR0UUZJbVYKVlAvLy80djBnK3dZaThTTFRhQ0pD
SXRWcElsUUJJdE5xSWxJQ0l0VnJJbFFESXROc0lsSUVJdFZ0SWxRRklQc0dJdkVpNDFBLy8vLwpp
UWlMbFVULy8vK0pVQVNMalVqLy8vK0pTQWlMbFV6Ly8vK0pVQXlMalZELy8vK0pTQkNMbFZULy8v
K0pVQlNOaFJELy8vOVEveFVBCkFBQUFnOFEwTy9Ub0FBQUFBSXNJaVUyNGkxQUVpVlc4aTBnSWlV
M0FpMUFNaVZYRWkwZ1FpVTNJaTFBVWlWWE1pMFc0aVVYa2kwMjgKaVUzb2kxWEFpVlhzaTBYRWlV
WHdpMDNJaVUzMGkxWE1pVlg0Zyt3WWk4U0xUZVNKQ0l0VjZJbFFCSXRON0lsSUNJdFY4SWxRREl0
Tgo5SWxJRUl0VitJbFFGSXRGRUZDTFRReFI2QUFBQUFDRHhDQ0poUWovLy8rSmxRei8vLytMbFFq
Ly8vK0pWZFNMaFF6Ly8vK0pSZGhSCjJVWFkyUndrVWRsRjFOa2NKT2dBQUFBQWc4UUlpWVVBLy8v
L2laVUUvLy8vaS9TTGpRVC8vLzlSaTVVQS8vLy9Vb3RGQ0ZEL0ZRQUEKQUFDRHhBdzc5T2dBQUFB
QVVvdk5VSTBWQUFBQUFPZ0FBQUFBV0ZwZlhvSEVBQUVBQUR2czZBQUFBQUNMNVYzRGpVa0FBZ0FB
QUFBQQpBQURrLy8vL0dBQUFBQUFBQUFEVS8vLy9DQUFBQUFBQUFBQndhR0Z6WlFCMWMyVnlWRzlD
WVhObEFNek16TXpNek14VmkreUQ3QkM0CnpNek16SWxGOElsRjlJbEYrSWxGL05sRkVOaE5DTmxG
R05oTkRON0IyRVVnMlYzMDJVVVUyRTBJMlVVYzJFME0zc0hZUlNUWlhmaUwKUmZTTFZmaFNpODFR
alJVQUFBQUE2QUFBQUFCWVdvdmxYY09ML3dFQUFBQUFBQUFBOVAvLy93Z0FBQUFBQUFBQWNBRE16
TXpNek16TQp6TXpNek16TXpGV0w3SUhzd0FBQUFGWlhqYjFBLy8vL3VUQUFBQUM0ek16TXpQT3Jp
L1NMUlF4UWpVMmdVZjhWQUFBQUFJUEVDRHYwCjZBQUFBQUNMRUlsVnVJdElCSWxOdkl0UUNJbFZ3
SXRJRElsTnhJdFFFSWxWeUl0QUZJbEZ6SXYwZyt3WWk4eUxWYmlKRVl0RnZJbEIKQkl0VndJbFJD
SXRGeElsQkRJdFZ5SWxSRUl0RnpJbEJGSTFOaUZIL0ZRQUFBQUNEeEJ3NzlPZ0FBQUFBaXhDSlZk
Q0xTQVNKVGRTTApVQWlKVmRpTFNBeUpUZHlMVUJDSlZlQ0xRQlNKUmVTTDlJdE5ERkdObFZqLy8v
OVMveFVBQUFBQWc4UUlPL1RvQUFBQUFJc0lpWTF3Ci8vLy9pMUFFaVpWMC8vLy9pMGdJaVkxNC8v
Ly9pMUFNaVpWOC8vLy9pMGdRaVUyQWkxQVVpVldFaS9TRDdCaUx4SXROMElrSWkxWFUKaVZBRWkw
M1lpVWdJaTFYY2lWQU1pMDNnaVVnUWkxWGtpVkFVZyt3WWk4U0xqWEQvLy8rSkNJdVZkUC8vLzRs
UUJJdU5lUC8vLzRsSQpDSXVWZlAvLy80bFFESXROZ0lsSUVJdFZoSWxRRkkyRlFQLy8vMUQvRlFB
QUFBQ0R4RFE3OU9nQUFBQUFpd2lKVGVpTFVBU0pWZXlMClNBaUpUZkNMVUF5SlZmU0xTQkNKVGZp
TFVCU0pWZnlMUlFpTFRlaUpDSXRWN0lsUUJJdE44SWxJQ0l0VjlJbFFESXROK0lsSUVJdFYKL0ls
UUZJdEZDRjllZ2NUQUFBQUFPK3pvQUFBQUFJdmxYY1BNek16TXpGV0w3RmFMOUZIWjd0a2NKRkha
N3RrY0pGSFo3dGtjSkZIWgo3dGtjSkl0RkNGRC9GUUFBQUFDRHhCUTc5T2dBQUFBQWkvUnFBR29B
aTAwTVVWSFpSUkRaSENTTFZRaFMveFVBQUFBQWc4UVVPL1RvCkFBQUFBSXYwaTBVSVVQOFZBQUFB
QUlQRUJEdjA2QUFBQUFCZU8rem9BQUFBQUYzRHpNek16TXpNek16TVZZdnNWb3YwaTBVSVVQOFYK
QUFBQUFJUEVCRHYwNkFBQUFBQmVPK3pvQUFBQUFGM0R6TXpNek16TXpNek16TXpNVll2c2crd0lW
c2RGK016TXpNekhSZnpNek16TQpnMzBJQUhVRU04RHJTb3Ywb1FBQUFBQlFpMDBJVWY4VkFBQUFB
SVBFQ0R2MDZBQUFBQUNKUmZ5RGZmd0FkQnVMOUl0Vi9GTC9GUUFBCkFBQ0R4QVE3OU9nQUFBQUFp
VVg0NndmSFJmZ0FBQUFBaTBYNFhvUEVDRHZzNkFBQUFBQ0w1VjNEek16TXpNek16TXhWaSt4UlZz
ZEYKL016TXpNeURmUWdBZEFhRGZRd0FkUVhwalFBQUFJdjBvUUFBQUFCUWl3MEFBQUFBVVdvQWl4
VUFBQUFBaXdKUS94VUFBQUFBZzhRUQpPL1RvQUFBQUFJbEYvSU45L0FCMUF1dFlpL1NMVFF4Uml4
VUFBQUFBVW90Ri9GRC9GUUFBQUFDRHhBdzc5T2dBQUFBQWkvU0xUZnhSCml4VUFBQUFBVW90RkNG
RC9GUUFBQUFDRHhBdzc5T2dBQUFBQWkvU0xUZnhSL3hVQUFBQUFnOFFFTy9Ub0FBQUFBRjZEeEFR
NzdPZ0EKQUFBQWkrVmR3OHpNek16TXpNeFZpK3hXaS9TaEFBQUFBSXNJVWY4VkFBQUFBSVBFQkR2
MDZBQUFBQUJlTyt6b0FBQUFBRjNEek16TQp6TXpNek14VmkreUQ3QWhXeDBYNHpNek16TWRGL016
TXpNeUw5UDhWQUFBQUFEdjA2QUFBQUFDSlJmeUw5SXRGL0ZEL0ZRQUFBQUNECnhBUTc5T2dBQUFB
QWlVWDRpL1NMVGZ4Ui94VUFBQUFBZzhRRU8vVG9BQUFBQUl0RitGNkR4QWc3N09nQUFBQUFpK1Zk
dzh6TXpNek0Kek16TVZZdnNVVlpYeDBYOHpNek16QSsyUlF5RndIUU5pdzBBQUFBQWl4R0pWZnpy
Q3FFQUFBQUFpd2lKVGZ5TDlJdFYvRktML0dnQQpBQUFBL3hVQUFBQUFnOFFFTy96b0FBQUFBRkNM
UlFoUS94VUFBQUFBZzhRTU8vVG9BQUFBQUY5ZWc4UUVPK3pvQUFBQUFJdmxYY1BNCnpGV0w3RmFM
OUl0RkNGRC9GUUFBQUFDRHhBUTc5T2dBQUFBQVhqdnM2QUFBQUFCZHc4ek16TXpNek16TXpNek16
RldMN0ZhTDlJdEYKREZDTFRRaFIveFVBQUFBQWc4UUlPL1RvQUFBQUFGNDc3T2dBQUFBQVhjUE16
TXpNek16TXpGV0w3SVBzRUZhNHpNek16SWxGOElsRgo5SWxGK0lsRi9NZEYvQVFBQUFDTDlHZ0FB
QUFBL3hVQUFBQUFPL1RvQUFBQUFJbEYrSU45K0FCMUI3Z0VBQUFBNjNhTDlHZ0FBQUFBCmkwWDRV
UDhWQUFBQUFEdjA2QUFBQUFDSlJmU0RmZlFBZFFlNEJBQUFBT3RPaS9Sb0FBQUFBSXROK0ZIL0ZR
QUFBQUE3OU9nQUFBQUEKaVVYd2czM3dBSFVIdUFRQUFBRHJKb3YwaTFVSVVtb0EvMVgwZzhRSU8v
VG9BQUFBQUl2MGFnRC9WZkNEeEFRNzlPZ0FBQUFBWG9QRQpFRHZzNkFBQUFBQ0w1VjNEek16TXpN
ek16TXhWaSt5RDdBaFd4MFg0ek16TXpNZEYvTXpNek15TDlHb0EveFVBQUFBQWc4UUVPL1RvCkFB
QUFBSWxGL0l2MGkwVUlVSXROL0ZIL0ZRQUFBQUNEeEFnNzlPZ0FBQUFBaVVYNGkvU0xWZnhTL3hV
QUFBQUFnOFFFTy9Ub0FBQUEKQUl0RitGNkR4QWc3N09nQUFBQUFpK1Zkdzh6TXpNek16TXpNek16
TXpNek16RldMN0ZhTDlJdEZDRkQvRlFBQUFBQ0R4QVE3OU9nQQpBQUFBWGp2czZBQUFBQUJkdzh6
TXpNek16TXpNek16TXpGV0w3SVBzSkZhNHpNek16SWxGM0lsRjRJbEY1SWxGNklsRjdJbEY4SWxG
CjlJbEYrSWxGL0tFQUFBQUFpd2lKVGZTTEZRQUFBQUNMQW9sRitJdE5ESWxONUl0VkVJbFY2SXYw
b1FBQUFBQlFpdzBBQUFBQVVXb0MKalZYa1VvMUY5RkJxQVA4VkFBQUFBSVBFR0R2MDZBQUFBQUNK
UmR5TDlJdE4zRkdMRlFBQUFBQ0xBbENMVFFoUi94VUFBQUFBZzhRTQpPL1RvQUFBQUFJdjBpMVhj
VXY4VkFBQUFBSVBFQkR2MDZBQUFBQUJTaTgxUWpSVUFBQUFBNkFBQUFBQllXbDZEeENRNzdPZ0FB
QUFBCmkrVmR3NUFDQUFBQUFBQUFBUFQvLy84SUFBQUFBQUFBQU9ULy8vOElBQUFBQUFBQUFIQnli
M2g1Vm1Gc2RXVnpBSEJ5YjNoNVMyVjUKY3dETXpNek16TXpNek16TVZZdnNnK3drVnJqTXpNek1p
VVhjaVVYZ2lVWGtpVVhvaVVYc2lVWHdpVVgwaVVYNGlVWDhpL1NoQUFBQQpBSXNJVVl0VkNGTC9G
UUFBQUFDRHhBZzc5T2dBQUFBQWlVWDhpL1NMUmZ4UWFnQnFBUDhWQUFBQUFJUEVERHYwNkFBQUFB
Q0pSZmlMCjlJdE4vRkgvRlFBQUFBQ0R4QVE3OU9nQUFBQUFpL1JvQUFBQUFQOFZBQUFBQUlQRUJE
djA2QUFBQUFDSlJmQ0xWUXlKVmVTTDlLRUEKQUFBQVVJc05BQUFBQUZGcUFZMVY1RktOUmZCUWFn
RC9GUUFBQUFDRHhCZzc5T2dBQUFBQWlVWGNpL1NMVGR4Uml4VUFBQUFBaXdKUQppMDM0VWY4VkFB
QUFBSVBFRER2MDZBQUFBQUNMOUl0VjNGTC9GUUFBQUFDRHhBUTc5T2dBQUFBQWkvU0xSZmhRaXcw
QUFBQUFpeEZTCmkwVUlVUDhWQUFBQUFJUEVERHYwNkFBQUFBQ0w5SXROK0ZIL0ZRQUFBQUNEeEFR
NzlPZ0FBQUFBVW92TlVJMFZBQUFBQU9nQUFBQUEKV0ZwZWc4UWtPK3pvQUFBQUFJdmxYY09RQWdB
QUFBQUFBQUR3Ly8vL0JBQUFBQUFBQUFEay8vLy9CQUFBQUFBQUFBQm9aV0ZrWlhKRwphV1ZzWkZa
aGJIVmxjd0JvWldGa1pYSkdhV1ZzWkU1aGJXVnpBTXhWaSt4UlZzZEYvTXpNek15TDlLRUFBQUFB
aXdoUmkxVUlVdjhWCkFBQUFBSVBFQ0R2MDZBQUFBQUNKUmZ5TDlJdEZERkNMVGZ4Ui94VUFBQUFB
ZzhRSU8vVG9BQUFBQUl0Ri9GNkR4QVE3N09nQUFBQUEKaStWZHc4ek16TXpNek14VmkreFdpL1NM
UlJCUWkwME1VWXRWQ0ZML0ZRQUFBQUNEeEF3NzlPZ0FBQUFBWGp2czZBQUFBQUJkdzh6TQp6TXhW
aSt4V2kvU0xSUkJRaTAwTVVZdFZDRkwvRlFBQUFBQ0R4QXc3OU9nQUFBQUFYanZzNkFBQUFBQmR3
OHpNek14VmkreFdpL1NMClJRaFEveFVBQUFBQWc4UUVPL1RvQUFBQUFGNDc3T2dBQUFBQVhjUE16
TXpNek16TXpNek16TXhWaSt4V2kvU0xSUWhRL3hVQUFBQUEKZzhRRU8vVG9BQUFBQUY0NzdPZ0FB
QUFBWGNQTXpNek16TXpNek16TXpNeFZpK3hXaS9TTFJRaFEveFVBQUFBQWc4UUVPL1RvQUFBQQpB
RjQ3N09nQUFBQUFYY1BNek16TXpNek16TXpNek14VmkreFdpL1NMUlFoUS94VUFBQUFBZzhRRU8v
VG9BQUFBQUY0NzdPZ0FBQUFBClhjUE16TXpNek16TXpNek16TXhWaSt4V2kvU0xSUWhRL3hVQUFB
QUFnOFFFTy9Ub0FBQUFBRjQ3N09nQUFBQUFYY1BNek16TXpNek0Kek16TXpNeFZpK3hXaS9TTFJR
aFEveFVBQUFBQWc4UUVPL1RvQUFBQUFGNDc3T2dBQUFBQVhjUE16TXpNek16TXpNek16TXhWaSt4
VwppL1NMUlNoUWkwMGtVWXRWSUZLTFJSeFFpMDBZVVl0VkZGS0Q3QWpkUlF6ZEhDU0xSUWhRL3hV
QUFBQUFnOFFrTy9Ub0FBQUFBRjQ3CjdPZ0FBQUFBWGNQTXpNek16TXpNek16TXpGV0w3RmFMOUl0
RktGQ0xUU1JSaTFVZ1VvdEZIRkNMVFJoUmkxVVVVb3RGRUZDTFRReFIKaTFVSVV2OFZBQUFBQUlQ
RUpEdjA2QUFBQUFCZU8rem9BQUFBQUYzRHpNek16TXpNek16TXpNek1WWXZzVm92MGkwVVFVSXRO
REZHTApWUWhTL3hVQUFBQUFnOFFNTy9Ub0FBQUFBRjQ3N09nQUFBQUFYY1BNek16TVZZdnNWb3Yw
aTBVSVVQOFZBQUFBQUlQRUJEdjA2QUFBCkFBQmVPK3pvQUFBQUFGM0R6TXpNek16TXpNek16TXpN
Vll2c1ZvdjAveFVBQUFBQU8vVG9BQUFBQUY0NzdPZ0FBQUFBWGNOUUFBQUEKQ3dBQUFBWUFXUUFB
QUF3QUFBQUdBR01BQUFBYkFBQUFCZ0JvQUFBQUhBQUFBQlFBZUFBQUFCb0FBQUFHQUlRQUFBQVpB
QUFBQmdDawpBQUFBREFBQUFBWUF1QUFBQUJBQUFBQUdBTVVBQUFBUUFBQUFCZ0RaQUFBQUx3QUFB
QVlBNHdBQUFDNEFBQUFHQU9vQUFBQXdBQUFBCkZBRHpBQUFBTFFBQUFBWUFBQUVBQUM0QUFBQUdB
QWNCQUFBd0FBQUFGQUFNQVFBQU1RQUFBQlFBRWdFQUFCQUFBQUFHQUJnQkFBQXMKQUFBQUJnQWhB
UUFBTUFBQUFCUUFaQUVBQUM0QUFBQUdBR3NCQUFBd0FBQUFGQUI0QVFBQVlnQUFBQVlBZ0FFQUFG
OEFBQUFHQUk0QgpBQUJpQUFBQUJnQ1lBUUFBWEFBQUFBWUFud0VBQURBQUFBQVVBS3dCQUFCYkFB
QUFCZ0N6QVFBQU1BQUFBQlFBd0FFQUFGb0FBQUFHCkFNY0JBQUF3QUFBQUZBRFJBUUFBV1FBQUFB
WUE1d0VBQUZZQUFBQUdBTzRCQUFBd0FBQUFGQUFTQWdBQVZRQUFBQVlBaGdJQUFGSUEKQUFBR0FJ
MENBQUF3QUFBQUZBQ2dBZ0FBV2dBQUFBWUFwd0lBQURBQUFBQVVBTUlDQUFCUkFBQUFCZ0RKQWdB
QU1BQUFBQlFBM3dJQQpBRkFBQUFBVUFQQUNBQUJQQUFBQUJnRDNBZ0FBTUFBQUFCUUFCUU1BQUU0
QUFBQUdBQXdEQUFBd0FBQUFGQUFkQXdBQVRRQUFBQVlBCkpBTUFBREFBQUFBVUFESURBQUJNQUFB
QUJnQTVBd0FBTUFBQUFCUUFWUU1BQUVzQUFBQUdBRndEQUFBd0FBQUFGQUJIQkFBQVRRQUEKQUFZ
QVRnUUFBREFBQUFBVUFGOEVBQUJNQUFBQUJnQm1CQUFBTUFBQUFCUUFnZ1FBQUVzQUFBQUdBSWtF
QUFBd0FBQUFGQUMxQkFBQQpSd0FBQUFZQXh3UUFBRVFBQUFBR0FQVUVBQUJCQUFBQUJnQUtCUUFB
WndBQUFCUUFMd1VBQUVFQUFBQUdBRW9GQUFCbkFBQUFGQUJaCkJRQUFQZ0FBQUFZQWJnVUFBRzBB
QUFBVUFLUUZBQUJmQUFBQUJnREtCUUFBVlFBQUFBWUEwQVVBQUY4QUFBQUdBT01GQUFCYUFBQUEK
QmdEcUJRQUFNQUFBQUJRQStnVUFBRm9BQUFBR0FBRUdBQUF3QUFBQUZBQU5CZ0FBT3dBQUFBWUFG
QVlBQURBQUFBQVVBQ0FHQUFBNgpBQUFBQmdBbkJnQUFNQUFBQUJRQUxRWUFBRjhBQUFBR0FEY0dB
QUE1QUFBQUJnQThCZ0FBSEFBQUFCUUFUUVlBQURBQUFBQVVBRndHCkFBQTRBQUFBQmdCb0JnQUFO
d0FBQUFZQWRBWUFBRFlBQUFBR0FJQUdBQUExQUFBQUJnQ01CZ0FBTkFBQUFBWUFtQVlBQURNQUFB
QUcKQUtRR0FBQXlBQUFBQmdBTEJ3QUFkZ0FBQUFZQUZRY0FBREFBQUFBVUFDZ0hBQUIxQUFBQUJn
QXlCd0FBTUFBQUFCUUFQd2NBQUFzQQpBQUFHQUVrSEFBQjNBQUFBRkFCYUJ3QUFNQUFBQUJRQWhn
Y0FBSGtBQUFBR0FKQUhBQUF3QUFBQUZBQ2dCd0FBZUFBQUFBWUFxZ2NBCkFEQUFBQUFVQUxvSEFB
QjVBQUFBQmdERUJ3QUFNQUFBQUJRQXpBY0FBREFBQUFBVUFPNEhBQUIzQUFBQUZBRDRCd0FBTUFB
QUFCUUEKSVFnQUFJMEFBQUFHQURjSUFBQXNBQUFBQmdCQUNBQUFLUUFBQUJRQVJnZ0FBQkFBQUFB
R0FFOElBQUF2QUFBQUJnQmNDQUFBTFFBQQpBQVlBYlFnQUFIZ0FBQUFHQUhjSUFBQXdBQUFBRkFC
OUNBQUFDQUFBQUFZQWt3Z0FBSW9BQUFBR0FKMElBQUF3QUFBQUZBQ3RDQUFBCmlRQUFBQVlBdHdn
QUFEQUFBQUFVQU1jSUFBQ0lBQUFBQmdEUkNBQUFNQUFBQUJRQTRRZ0FBSWNBQUFBR0FPc0lBQUF3
QUFBQUZBQTcKQ1FBQVBnQUFBQVlBU3drQUFENEFBQUFHQUZzSkFBQ0dBQUFBQmdCckNRQUFnd0FB
QUFZQWV3a0FBSU1BQUFBR0FNb0pBQUNBQUFBQQpCZ0RVQ1FBQU1BQUFBQlFBNUFrQUFIOEFBQUFH
QU80SkFBQXdBQUFBRkFENENRQUFmZ0FBQUFZQS9Ra0FBQndBQUFBVUFBc0tBQUF3CkFBQUFGQUFZ
Q2dBQWZRQUFBQVlBSkFvQUFId0FBQUFHQUdBS0FBQ2pBQUFBRkFDRUNnQUFtZ0FBQUFZQWpnb0FB
REFBQUFBVUFKOEsKQUFDWkFBQUFCZ0NwQ2dBQU1BQUFBQlFBeUFvQUFKa0FBQUFHQU5JS0FBQXdB
QUFBRkFEbkNnQUFtQUFBQUFZQThRb0FBREFBQUFBVQpBQkFMQUFDWEFBQUFCZ0FhQ3dBQU1BQUFB
QlFBS3dzQUFKZ0FBQUFHQURVTEFBQXdBQUFBRkFCQkN3QUFtQUFBQUFZQVN3c0FBREFBCkFBQVVB
RndMQUFDV0FBQUFCZ0JtQ3dBQU1BQUFBQlFBbXdzQUFKZ0FBQUFHQUtVTEFBQXdBQUFBRkFDeEN3
QUFtQUFBQUFZQXV3c0EKQURBQUFBQVVBT01MQUFDWEFBQUFCZ0R0Q3dBQU1BQUFBQlFBQ0F3QUFK
Z0FBQUFHQUJJTUFBQXdBQUFBRkFBZURBQUFtQUFBQUFZQQpLQXdBQURBQUFBQVVBRGtNQUFDV0FB
QUFCZ0JEREFBQU1BQUFBQlFBaHd3QUFKSUFBQUFHQUpFTUFBQXdBQUFBRkFDcERBQUFtd0FBCkFC
UUE5UXdBQUo4QUFBQVVBQ2dOQUFDa0FBQUFGQUE4RFFBQW1BQUFBQVlBUmcwQUFEQUFBQUFVQUZJ
TkFBQ1lBQUFBQmdCY0RRQUEKTUFBQUFCUUFaZzBBQUpFQUFBQUdBR3NOQUFBY0FBQUFGQUI1RFFB
QU1BQUFBQlFBaUEwQUFKQUFBQUFHQUpRTkFBQ1BBQUFBQmdEZgpEUUFBbmdBQUFBWUE1QTBBQUJ3
QUFBQVVBUFFOQUFDZEFBQUFCZ0FBRGdBQW5BQUFBQVlBVlE0QUFLSUFBQUFHQUZvT0FBQWNBQUFB
CkZBQm9EZ0FBb1FBQUFBWUFkQTRBQUtBQUFBQUdBTmdPQUFDc0FBQUFGQURuRGdBQWd3QUFBQVlB
K2c0QUFLY0FBQUFHQUFvUEFBQSsKQUFBQUJnQXNEd0FBcHdBQUFBWUFQQThBQUQ0QUFBQUdBRm9Q
QUFBd0FBQUFGQUNJRHdBQXJ3QUFBQVlBa2c4QUFEQUFBQUFVQUpvUApBQUF3QUFBQUZBQ3lEd0FB
dEFBQUFBWUF2QThBQURBQUFBQVVBTVFQQUFDekFBQUFCZ0RMRHdBQU1BQUFBQlFBM0E4QUFMSUFB
QUFHCkFPWVBBQUF3QUFBQUZBRDJEd0FBc1FBQUFBWUFBQkFBQURBQUFBQVVBQXNRQUFBd0FBQUFG
QUJVRUFBQXRnQUFBQVlBWGhBQUFEQUEKQUFBVUFHWVFBQUF3QUFBQUZBQ2NFQUFBdndBQUFBWUFw
aEFBQURBQUFBQVVBQUFSQUFDK0FBQUFCZ0FLRVFBQU1BQUFBQlFBUUJFQQpBSWNBQUFBR0FFb1JB
QUF3QUFBQUZBRHdFUUFBdlFBQUFBWUEraEVBQURBQUFBQVVBSFlTQUFEQUFBQUFGQUNxRWdBQW13
QUFBQlFBCjB4SUFBTHdBQUFBR0FOMFNBQUF3QUFBQUZBRG5FZ0FBdXdBQUFBWUE3QklBQUJ3QUFB
QVVBUDBTQUFBd0FBQUFGQUFNRXdBQXVnQUEKQUFZQUdCTUFBTGtBQUFBR0FDUVRBQUM0QUFBQUJn
Q0xFd0FBd3dBQUFBWUFrQk1BQUJ3QUFBQVVBS0FUQUFEQ0FBQUFCZ0NzRXdBQQp3UUFBQUFZQTZS
TUFBTDhBQUFBR0FQTVRBQUF3QUFBQUZBQktGQUFBdmdBQUFBWUFWQlFBQURBQUFBQVVBSW9VQUFD
SEFBQUFCZ0NVCkZBQUFNQUFBQUJRQUxoVUFBTDBBQUFBR0FEZ1ZBQUF3QUFBQUZBQ1RGUUFBTUFB
QUFCUUF4QlVBQU1nQUFBQUdBTTRWQUFBd0FBQUEKRkFEcEZRQUF4d0FBQUFZQTh4VUFBREFBQUFB
VUFQOFZBQURHQUFBQUJnQUpGZ0FBTUFBQUFCUUFFUllBQURBQUFBQVVBQ3dXQUFESwpBQUFBQmdB
MkZnQUFNQUFBQUJRQVBoWUFBREFBQUFBVUFISVdBQUFuQVFBQUJnQjlGZ0FBekFBQUFBWUFoeFlB
QURBQUFBQVVBSndXCkFBQ1dBQUFBQmdDbUZnQUFNQUFBQUJRQXdCWUFBREFBQUFBVUFQQVdBQURT
QUFBQUJnRDNGZ0FBMFFBQUFBWUFBQmNBQU5BQUFBQUcKQUFrWEFBRFBBQUFBQmdBVEZ3QUFNQUFB
QUJRQUtoY0FBQ2tCQUFBR0FEVVhBQURPQUFBQUJnQS9Gd0FBTUFBQUFCUUFTeGNBQUNnQgpBQUFH
QUZZWEFBRE9BQUFBQmdCZ0Z3QUFNQUFBQUJRQWJCY0FBSmdBQUFBR0FIWVhBQUF3QUFBQUZBQ0JG
d0FBTUFBQUFCUUFseGNBCkFOQUFBQUFHQUtBWEFBRFVBQUFBQmdDcUZ3QUFNQUFBQUJRQXNoY0FB
REFBQUFBVUFOa1hBQURYQUFBQUJnRGdGd0FBTUFBQUFCUUEKN3hjQUFOWUFBQUFHQVBrWEFBQXdB
QUFBRkFBSUdBQUFtQUFBQUFZQUVoZ0FBREFBQUFBVUFDQVlBQUF3QUFBQUZBQkhHQUFBM0FBQQpB
QVlBVXhnQUFOc0FBQUFHQUdVWUFBQVJBQUFBQmdCckdBQUEyZ0FBQUFZQWRSZ0FBREFBQUFBVUFJ
QVlBQURaQUFBQUJnQ0tHQUFBCk1BQUFBQlFBbGhnQUFEQUFBQUFVQUt3WUFBRGVBQUFBQmdDMkdB
QUFNQUFBQUJRQXZoZ0FBREFBQUFBVUFPQVlBQURnQUFBQUJnRHEKR0FBQU1BQUFBQlFBOGhnQUFE
QUFBQUFVQUNJWkFBQVNBQUFBQmdBb0dRQUE0d0FBQUFZQUx4a0FBREFBQUFBVUFFWVpBQUFUQUFB
QQpCZ0JRR1FBQTRnQUFBQVlBVnhrQUFEQUFBQUFVQUc0WkFBQVVBQUFBQmdCNEdRQUE0Z0FBQUFZ
QWZ4a0FBREFBQUFBVUFLUVpBQUF3CkFBQUFGQUMxR1FBQU1BQUFBQlFBd0JrQUFEQUFBQUFVQU9z
WkFBRG1BQUFBQmdEMUdRQUFNQUFBQUJRQUNCb0FBT1VBQUFBR0FCSWEKQUFBd0FBQUFGQUFoR2dB
QW1BQUFBQVlBS3hvQUFEQUFBQUFVQURrYUFBQXdBQUFBRkFCY0dnQUE2QUFBQUFZQVpob0FBREFB
QUFBVQpBRzRhQUFBd0FBQUFGQUNvR2dBQThnQUFBQVlBc3hvQUFQRUFBQUFHQU1zYUFBRFNBQUFB
QmdEU0dnQUEwUUFBQUFZQTVSb0FBUEFBCkFBQUdBTzhhQUFBd0FBQUFGQUQrR2dBQTd3QUFBQVlB
Q3hzQUFPNEFBQUFHQUJVYkFBQXdBQUFBRkFBaEd3QUFtQUFBQUFZQUt4c0EKQURBQUFBQVVBRFVi
QUFEdEFBQUFCZ0E2R3dBQUhBQUFBQlFBUnhzQUFEQUFBQUFVQUZRYkFBRHNBQUFBQmdCZ0d3QUE2
d0FBQUFZQQpiQnNBQU9vQUFBQUdBTG9iQUFEdkFBQUFCZ0RIR3dBQStnQUFBQVlBMFJzQUFEQUFB
QUFVQU9RYkFBRDVBQUFBQmdEdUd3QUFNQUFBCkFCUUEvUnNBQUpnQUFBQUdBQWNjQUFBd0FBQUFG
QUFPSEFBQUZRQUFBQVlBRkJ3QUFOb0FBQUFHQUI0Y0FBQXdBQUFBRkFBdUhBQUEKMGdBQUFBWUFO
UndBQU5FQUFBQUdBRWdjQUFEd0FBQUFCZ0JTSEFBQU1BQUFBQlFBWVJ3QUFQZ0FBQUFHQUc0Y0FB
RE9BQUFBQmdCNApIQUFBTUFBQUFCUUFoQndBQUpnQUFBQUdBSTRjQUFBd0FBQUFGQUNhSEFBQTd3
QUFBQVlBcHh3QUFPNEFBQUFHQUxFY0FBQXdBQUFBCkZBQzlIQUFBbUFBQUFBWUF4eHdBQURBQUFB
QVVBTkVjQUFEM0FBQUFCZ0RXSEFBQUhBQUFBQlFBNHh3QUFEQUFBQUFVQVBBY0FBRDIKQUFBQUJn
RDhIQUFBOVFBQUFBWUFDQjBBQVBRQUFBQUdBRDhkQUFEOUFBQUFCZ0JNSFFBQStnQUFBQVlBVmgw
QUFEQUFBQUFVQUdrZApBQUQ4QUFBQUJnQnpIUUFBTUFBQUFCUUFnUjBBQURBQUFBQVVBS1FkQUFE
L0FBQUFCZ0N1SFFBQU1BQUFBQlFBdGgwQUFEQUFBQUFVCkFOUWRBQUFCQVFBQUJnRGVIUUFBTUFB
QUFCUUE1aDBBQURBQUFBQVVBUHdkQUFBREFRQUFCZ0FHSGdBQU1BQUFBQlFBRGg0QUFEQUEKQUFB
VUFDd2VBQUFGQVFBQUJnQTJIZ0FBTUFBQUFCUUFQaDRBQURBQUFBQVVBRndlQUFBSEFRQUFCZ0Jt
SGdBQU1BQUFBQlFBYmg0QQpBREFBQUFBVUFJd2VBQUFKQVFBQUJnQ1dIZ0FBTUFBQUFCUUFuaDRB
QURBQUFBQVVBTHdlQUFBTEFRQUFCZ0RHSGdBQU1BQUFBQlFBCnpoNEFBREFBQUFBVUFPd2VBQUFO
QVFBQUJnRDJIZ0FBTUFBQUFCUUEvaDRBQURBQUFBQVVBRDBmQUFBUEFRQUFCZ0JISHdBQU1BQUEK
QUJRQVR4OEFBREFBQUFBVUFJd2ZBQUFSQVFBQUJnQ1dId0FBTUFBQUFCUUFuaDhBQURBQUFBQVVB
TVFmQUFBVEFRQUFCZ0RPSHdBQQpNQUFBQUJRQTFoOEFBREFBQUFBVUFPd2ZBQUFWQVFBQUJnRDJI
d0FBTUFBQUFCUUEvaDhBQURBQUFBQVVBQmdnQUFBWEFRQUFCZ0FmCklBQUFNQUFBQUJRQUp5QUFB
REFBQUFBVUFBQUFBQUFBQUFBQUlBQUFBQVlBQUFBQUFBQUFBQUFrQUFBQUJnQUFBQUFBQUFEd1B3
QUEKQUFBQTRHOUFBQUFBWUdabUFrQUFBQUNnbVptNVB3QUFnRDhBQUFBQUFFQ1BRQUFBQVFBQUFB
QUFBQUFBQUFBQUFRQUFBQUJBMEFjQQpBRldMN0ZISFJmek16TXpNMlVVTWcrd0kzUndrMlVVSWcr
d0kzUndrNkFBQUFBQ0R4QkRaWGZ6WlJmeUR4QVE3N09nQUFBQUFpK1ZkCnd4NEFBQUJvQUFBQUZB
QXhBQUFBTUFBQUFCUUFCQUFBQVBVQUFBQWtBQUFBQUFBQUFBQUFBQUE1QUFBQUJBQUFBQWdBQUFB
QUFBQUEKNlM4QUFBc0FBQUFFQUFBQThRQUFBR3dBQUFBcUFCQVJBQUFBQUFBQUFBQUFBQUFBT1FB
QUFBc0FBQUFyQUFBQS94QUFBQUFBQUFBQQpBQUZ3YjNkbUFCd0FFaEFFQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUlBSUFBQTBBQ3hFSUFBQUFRQUFBQUY5WUFBMEFDeEVNCkFBQUFRQUFBQUY5
WkFBSUFCZ0R5QUFBQUlBQUFBQUFBQUFBQUFBQUFPUUFBQUZnSUFBQUJBQUFBRkFBQUFBQUFBQUNo
QVFDQURBQUEKQUdjQUFBQUhBRmdBQUFCbkFBQUFDd0JjQUFBQVp3QUFBQW9BckFBQUFHY0FBQUFM
QUxBQUFBQm5BQUFBQ2dCVmkreFIyVVVJMlJ3awo2QUFBQUFDRHhBUTc3T2dBQUFBQVhjTUxBQUFB
Y2dBQUFCUUFGUUFBQURBQUFBQVVBQVFBQUFEMUFBQUFKQUFBQUFBQUFBQUFBQUFBCkd3QUFBQUFB
QUFBRUFBQUFBQUFBQU9rdkFBQURBQUFBQkFBQUFQRUFBQUJkQUFBQUtnQVFFUUFBQUFBQUFBQUFB
QUFBQUJzQUFBQUQKQUFBQUVnQUFBUDBRQUFBQUFBQUFBQUFCWm1GaWN3QWNBQklRQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUNBQUFOQUFzUgpDQUFBQUVBQUFBQmZXQUFDQUFZQUFBQUE4
Z0FBQUNBQUFBQUFBQUFBQUFBQUFCc0FBQUJZQ0FBQUFRQUFBQlFBQUFBQUFBQUEvZ0VBCmdBd0FB
QUJ0QUFBQUJ3QllBQUFBYlFBQUFBc0FYQUFBQUcwQUFBQUtBS0FBQUFCdEFBQUFDd0NrQUFBQWJR
QUFBQW9BVll2c1VjZEYKL016TXpNelpSUWlEN0FqZEhDVG9BQUFBQUlQRUNObGQvTmxGL0lQRUJE
dnM2QUFBQUFDTDVWM0RGUUFBQUhNQUFBQVVBQ2dBQUFBdwpBQUFBRkFBRUFBQUE5UUFBQUNRQUFB
QUFBQUFBQUFBQUFEQUFBQUFFQUFBQUJBQUFBQUFBQUFEcEx3QUFDd0FBQUFRQUFBRHhBQUFBClhn
QUFBQ3NBRUJFQUFBQUFBQUFBQUFBQUFBQXdBQUFBQ3dBQUFDSUFBQUQ5RUFBQUFBQUFBQUFBQVda
aFluTm1BQndBRWhBRUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFJQUFBMEFDeEVJQUFB
QVFBQUFBRjlZQUFJQUJnQUFBUElBQUFBZ0FBQUFBQUFBQUFBQQpBQUF3QUFBQVdBZ0FBQUVBQUFB
VUFBQUFBQUFBQUlBQkFJQU1BQUFBY2dBQUFBY0FXQUFBQUhJQUFBQUxBRndBQUFCeUFBQUFDZ0Nn
CkFBQUFjZ0FBQUFzQXBBQUFBSElBQUFBS0FBQUFBQUFBQUFBQUFBQUFBQUFBOEw4QUFBQkFBQUFB
QUFBQUFBQUFBT0EvVll2c1VWYkgKUmZ6TXpNek0yVVVJaS9TRDdBamRIQ1QvRlFBQUFBQ0R4QWc3
OU9nQUFBQUEyVjM4MlVYOFhvUEVCRHZzNkFBQUFBQ0w1VjNER1FBQQpBSzBBQUFBR0FDTUFBQUF3
QUFBQUZBQTBBQUFBTUFBQUFCUUFCQUFBQVBVQUFBQWtBQUFBQUFBQUFBQUFBQUE4QUFBQUJBQUFB
QVFBCkFBQUFBQUFBNlM4QUFBd0FCQUFFQUFBQThRQUFBRzRBQUFBckFCQVJBQUFBQUFBQUFBQUFB
QUFBUEFBQUFBd0FBQUF0QUFBQS9SQUEKQUFBQUFBQUFBQUZqWldsc1pnQWNBQklRQkFBQUFBQUFB
QUFBQUFBQUJBQUFBQUFBQUFBQUFDQUNBQUFOQUFzUkNBQUFBRUFBQUFCZgpXQUFPQURrUkZ3QUFB
QUFBQUFEeEVBQUFBZ0FHQUFBQThnQUFBQ0FBQUFBQUFBQUFBQUFBQUR3QUFBQllDQUFBQVFBQUFC
UUFBQUFBCkFBQUFqUUVBZ0F3QUFBQ3NBQUFBQndCWUFBQUFyQUFBQUFzQVhBQUFBS3dBQUFBS0FK
WUFBQUNzQUFBQUN3Q2FBQUFBckFBQUFBb0EKc0FBQUFLd0FBQUFMQUxRQUFBQ3NBQUFBQ2dCVmkr
eFdpL1JvQUFBQUFQOFZBQUFBQUlQRUJEdjA2QUFBQUFDakFBQUFBRjQ3N09nQQpBQUFBWGNNSEFB
QUFEUUFBQUFZQURRQUFBTm9BQUFBR0FCY0FBQUF3QUFBQUZBQWNBQUFBSndFQUFBWUFKQUFBQURB
QUFBQVVBQVFBCkFBRDFBQUFBSkFBQUFBQUFBQUFBQUFBQUtnQUFBQUFBQUFBQUFBQUFBQUFBQU9r
dkFBQUVBQVFBQkFBQUFQRUFBQUNMQUFBQVZ3QVAKRVFBQUFBQUFBQUFBQUFBQUFDb0FBQUFFQUFB
QUlBQUFBQUFTQUFBQUFBQUFBQUFCWUdSNWJtRnRhV01nYVc1cGRHbGhiR2w2WlhJZwpabTl5SUNk
clEwWlhhVzVrYjNkelUxTk1VR1ZsY2tObGNuUW5Kd0FjQUJJUUFBQUFBQUFBQUFBQUFBQUFCQUFB
QUFBQUFBQUFBQUFDCkFBQU9BRGtSQ3dBQUFBQUFBQUMxRVFBQUFnQUdBQUR5QUFBQUlBQUFBQUFB
QUFBQUFBQUFLZ0FBQUxnRkFBQUJBQUFBRkFBQUFBQUEKQUFBbEFBQ0FEQUFBQUJ3QkFBQUhBRmdB
QUFBY0FRQUFDd0JjQUFBQUhBRUFBQW9Bc3dBQUFCd0JBQUFMQUxjQUFBQWNBUUFBQ2dETQpBQUFB
SEFFQUFBc0EwQUFBQUJ3QkFBQUtBRldMN0ZhTDlHZ0FBQUFBL3hVQUFBQUFnOFFFTy9Ub0FBQUFB
S01BQUFBQVhqdnM2QUFBCkFBQmR3d2NBQUFBT0FBQUFCZ0FOQUFBQTJnQUFBQVlBRndBQUFEQUFB
QUFVQUJ3QUFBQXBBUUFBQmdBa0FBQUFNQUFBQUJRQUJBQUEKQVBVQUFBQWtBQUFBQUFBQUFBQUFB
QUFxQUFBQUFBQUFBQUFBQUFBQUFBQUE2UzhBQUFRQUJBQUVBQUFBOFFBQUFJd0FBQUJZQUE4UgpB
QUFBQUFBQUFBQUFBQUFBS2dBQUFBUUFBQUFnQUFBQUFCSUFBQUFBQUFBQUFBRmdaSGx1WVcxcFl5
QnBibWwwYVdGc2FYcGxjaUJtCmIzSWdKMnREUmxkcGJtUnZkM05UVTB4TWIyTmhiRU5sY25Rbkp3
QWNBQklRQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUMKQUFBT0FEa1JDd0FBQUFBQUFB
QzFFUUFBQWdBR0FQSUFBQUFnQUFBQUFBQUFBQUFBQUFBcUFBQUF1QVVBQUFFQUFBQVVBQUFBQUFB
QQpBQ1lBQUlBTUFBQUFJUUVBQUFjQVdBQUFBQ0VCQUFBTEFGd0FBQUFoQVFBQUNnQzBBQUFBSVFF
QUFBc0F1QUFBQUNFQkFBQUtBTXdBCkFBQWhBUUFBQ3dEUUFBQUFJUUVBQUFvQVZZdnNWb3YwYUFB
QUFBRC9GUUFBQUFDRHhBUTc5T2dBQUFBQW93QUFBQUJlTyt6b0FBQUEKQUYzREJ3QUFBQThBQUFB
R0FBMEFBQURhQUFBQUJnQVhBQUFBTUFBQUFCUUFIQUFBQUNnQkFBQUdBQ1FBQUFBd0FBQUFGQUFF
QUFBQQo5UUFBQUNRQUFBQUFBQUFBQUFBQUFDb0FBQUFBQUFBQUFBQUFBQUFBQUFEcEx3QUFCQUFF
QUFRQUFBRHhBQUFBbVFBQUFHVUFEeEVBCkFBQUFBQUFBQUFBQUFBQXFBQUFBQkFBQUFDQUFBQUFB
RWdBQUFBQUFBQUFBQVdCa2VXNWhiV2xqSUdsdWFYUnBZV3hwZW1WeUlHWnYKY2lBbmEwTkdVM1J5
WldGdFVISnZjR1Z5ZEhsWGFXNWtiM2R6VTFOTVEyVnlkRWx1Wm04bkp3QWNBQklRQUFBQUFBQUFB
QUFBQUFBQQpCQUFBQUFBQUFBQUFBQUFDQUFBT0FEa1JDd0FBQUFBQUFBQzFFUUFBQWdBR0FBQUFB
UElBQUFBZ0FBQUFBQUFBQUFBQUFBQXFBQUFBCnVBVUFBQUVBQUFBVUFBQUFBQUFBQUNjQUFJQU1B
QUFBSmdFQUFBY0FXQUFBQUNZQkFBQUxBRndBQUFBbUFRQUFDZ0RCQUFBQUpnRUEKQUFzQXhRQUFB
Q1lCQUFBS0FOd0FBQUFtQVFBQUN3RGdBQUFBSmdFQUFBb0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFC
d0JBQUFHQUFRQQpBQUFoQVFBQUJnQUlBQUFBSmdFQUFBWUFCQUFBQUZvQUZSWGxyWERFN1BQc1Jy
OWtIOXRJRnBaakFRQUFBR002WEhCeWIycGxZM1J6ClhIZGxZbXRwZEZ4aWRXbHNaRnh2WW1wY2Qy
VmlhMmwwYzNsemRHVnRhVzUwWlhKbVlXTmxYR1JsWW5WblhIWmpPREF1Y0dSaUFQTHgKUUdOdmJY
QXVhV1FueG00QS8vOEFBQU1BUUdabFlYUXVNREFCQUFBQS8vOEFBQU1BTG1SeVpXTjBkbVVBQUFB
QUFRQUFBQU1COWdBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUxtUmxZblZuSkZNQUFBQUFBZ0FBQUFN
QnNNZ0FBRzhDQUFBQUFBQUFBQUFBQUFBQUxuSmtZWFJoCkFBQUFBQUFBQXdBQUFBTUJCQUVBQUFB
QUFBREg0a1Y3QUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQXdBQUFBTUFMbVJoZEdFQUFBQUEKQUFB
QUJBQUFBQU1CREFBQUFBQUFBQURwY05BZ0FBQUFBQUFBQUFBQUFCY0FBQUFBQUFBQUJBQUFBQU1B
QUFBQUFDd0FBQUFFQUFBQQpCQUFBQUFNQUpGTkhOemN4TURnRUFBQUFBd0FBQUFNQUpGTkhOemN4
TXpjY0FBQUFBd0FBQUFNQUpGTkhOemN4TkRJMEFBQUFBd0FBCkFBTUFBQUFBQUVJQUFBQUlBQUFB
QkFBQUFBTUFKRk5ITnpjek56ZGNBQUFBQXdBQUFBTUFKRk5ITnpjek9UQ0VBQUFBQXdBQUFBTUEK
SkZOSE56Y3pPVGVnQUFBQUF3QUFBQU1BSkZOSE56YzBNRFBJQUFBQUF3QUFBQU1BSkZOSE56YzBN
am53QUFBQUF3QUFBQU1BTG5SbAplSFFBQUFBQUFBQUFCUUFBQUFNQkxTQUFBSmNCQUFCUWF4S1dB
QUFBQUFBQUFBQUFBRnNBQUFBQUFBQUFCUUFnQUFJQUpFeE9OUUFBCkFBQ0lBQUFBQlFBQUFBTUFK
RXhPTmdBQUFBQjhBQUFBQlFBQUFBTUFKRXhPTndBQUFBQjBBQUFBQlFBQUFBTUFBQUFBQUh3QUFB
QUEKQUFBQUFBQWdBQUlBTG5KMFl5UlVUVm9BQUFBQUJnQUFBQU1CQkFBQUFBRUFBQUFBQUFBQUFB
QUNBQUFBQUFBQUFKTUFBQUFBQUFBQQpCZ0FBQUFNQUFBQUFBS29BQUFBQUFBQUFBQUFnQUFJQUxu
SjBZeVJKVFZvQUFBQUFCd0FBQUFNQkJBQUFBQUVBQUFBQUFBQUFBQUFDCkFBQUFBQUFBQUxrQUFB
QUFBQUFBQndBQUFBTUFBQUFBQU5BQUFBQUFBQUFBQUFBZ0FBSUFBQUFBQU44QUFBQ2dBQUFBQlFB
Z0FBSUEKQUFBQUFQOEFBQUN3QUFBQUJRQWdBQUlBQUFBQUFDTUJBQUFBQUFBQUFBQUFBQUlBQUFB
QUFDMEJBQURBQUFBQUJRQWdBQUlBQUFBQQpBRkFCQUFEUUFBQUFCUUFnQUFJQUxtSnpjd0FBQUFB
QUFBQUFDQUFBQUFNQkdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSFVCCkFBQUVBQUFBQ0FB
QUFBTUFBQUFBQUk4QkFBQUFBQUFBQ0FBQUFBTUFBQUFBQUtvQkFBQUFBQUFBQUFBQUFBSUFBQUFB
QU1vQkFBQUkKQUFBQUNBQUFBQU1BQUFBQUFPZ0JBQUFBQUFBQUFBQWdBQUlBQUFBQUFQY0JBQUF3
QVFBQUJRQWdBQU1BSkV4T01qUUFBQUNvQmdBQQpCUUFBQUFNQUpFeE9Nak1BQUFDd0JnQUFCUUFB
QUFNQUpFeE9NaklBQUFDM0JnQUFCUUFBQUFNQUpFeE9NakVBQUFEQ0JnQUFCUUFBCkFBTUFKRXhP
TWpBQUFBRFBCZ0FBQlFBQUFBTUFKRXhPTVRrQUFBRFlCZ0FBQlFBQUFBTUFKRXhPTWpVQUFBQmdC
Z0FBQlFBQUFBTUEKSkV4T01qWUFBQUJZQmdBQUJRQUFBQU1BQUFBQUFCRUNBQUFBQUFBQUFBQUFB
QUlBQUFBQUFDTUNBQUFBQUFBQUFBQUFBQUlBTG5KawpZWFJoQUFBQUFBQUFDUUFBQUFNQkNBQUFB
QUFBQUFDQXpOcWlBQUFDQUFBQUFBQUFBRGtDQUFBQUFBQUFDUUFBQUFJQUxuSmtZWFJoCkFBQUFB
QUFBQ2dBQUFBTUJDQUFBQUFBQUFBQlk1bHM5QUFBQ0FBQUFBQUFBQUZFQ0FBQUFBQUFBQ2dBQUFB
SUFMbkprWVhSaEFBQUEKQUFBQUN3QUFBQU1CQ0FBQUFBQUFBQUFTUzgrUEFBQUNBQUFBQUFBQUFH
a0NBQUFBQUFBQUN3QUFBQUlBTG5Ka1lYUmhBQUFBQUFBQQpEQUFBQUFNQkNBQUFBQUFBQUFBTGlz
ekJBQUFDQUFBQUFBQUFBSUVDQUFBQUFBQUFEQUFBQUFJQUxuSmtZWFJoQUFBQUFBQUFEUUFBCkFB
TUJCQUFBQUFBQUFBQjJ0ZVdOQUFBQ0FBQUFBQUFBQUprQ0FBQUFBQUFBRFFBQUFBSUFBQUFBQUtr
Q0FBQUFBQUFBQUFBQUFBSUEKQUFBQUFMOENBQUFBQUFBQUFBQUFBQUlBQUFBQUFOTUNBQUFBQUFB
QUFBQUFBQUlBQUFBQUFPa0NBQUFBQUFBQUFBQUFBQUlBQUFBQQpBUDhDQUFBQUFBQUFBQUFBQUFJ
QVgyMWxiWE5sZEFBQUFBQUFBQUFnQUFJQUFBQUFBQklEQUFBQUFBQUFBQUFBQUFJQUFBQUFBQ2NE
CkFBQUFBQUFBQUFBQUFBSUFMbkprWVhSaEFBQUFBQUFBRGdBQUFBTUJDQUFBQUFBQUFBRFVTRjI2
QUFBQ0FBQUFBQUFBQUVJREFBQUEKQUFBQURnQUFBQUlBQUFBQUFGb0RBQUFBQUFBQUFBQUFBQUlB
TG5Ka1lYUmhBQUFBQUFBQUR3QUFBQU1CRUFBQUFBQUFBQUEzMEJTRQpBQUFDQUFBQUFBQUFBSFVE
QUFBQUFBQUFEd0FBQUFNQUFBQUFBS2NEQUFBQUFBQUFBQUFBQUFJQUFBQUFBTDBEQUFBQUFBQUFB
QUFBCkFBSUFBQUFBQU5VREFBQUFBQUFBQUFBQUFBSUFMbVJoZEdFQUFBQUFBQUFBRUFBQUFBTUJC
QUFBQUFBQUFBQ1FRZHgyQUFBQ0FBQUEKQUFBQUFQRURBQUFBQUFBQUVBQUFBQU1BTG1SaGRHRUFB
QUFBQUFBQUVRQUFBQU1CQkFBQUFBQUFBQUFjcnhzakFBQUNBQUFBQUFBQQpBQmtFQUFBQUFBQUFF
UUFBQUFNQUxuUmxlSFFBQUFBQUFBQUFFZ0FBQUFNQk9RQUFBQUlBQUFBWjdycWNBQUFDQUFBQUxt
UmxZblZuCkpGTUFBQUFBRXdBQUFBTUJ6QUFBQUFVQUFBQUFBQUFBRWdBRkFBQUFYM0J2ZDJZQUFB
QUFBQUFBRWdBZ0FBSUFYM0J2ZHdBQUFBQUEKQUFBQUFBQWdBQUlBTG5SbGVIUUFBQUFBQUFBQUZB
QUFBQU1CR3dBQUFBSUFBQUQvT2Y0WkFBQUNBQUFBTG1SbFluVm5KRk1BQUFBQQpGUUFBQUFNQndB
QUFBQVVBQUFBQUFBQUFGQUFGQUFBQUFBQUFBRWdFQUFBQUFBQUFGQUFnQUFJQUxuUmxlSFFBQUFB
QUFBQUFGZ0FBCkFBTUJNQUFBQUFJQUFBQWpWN3c4QUFBQ0FBQUFMbVJsWW5WbkpGTUFBQUFBRndB
QUFBTUJ3QUFBQUFVQUFBQUFBQUFBRmdBRkFBQUEKWDJaaFluTm1BQUFBQUFBQUZnQWdBQUlBWDJa
aFluTUFBQUFBQUFBQUFBQWdBQUlBQUFBQUFGWUVBQUR3QmdBQUJRQWdBQUlBQUFBQQpBSVlFQUFB
QUFBQUFBQUFBQUFJQUFBQUFBS3dFQUFBQUFBQUFBQUFBQUFJQUFBQUFBTkVFQUFCd0J3QUFCUUFn
QUFNQUFBQUFBQUFGCkFBQUFBQUFBQUFBQUFBSUFBQUFBQUNZRkFBQUFBQUFBQUFBQUFBSUFBQUFB
QUVzRkFBRGdCd0FBQlFBZ0FBSUFBQUFBQUg0RkFBQUEKQ0FBQUJRQWdBQUlBSkV4T01USUFBQUFv
Q2dBQUJRQUFBQU1BSkV4T01UTUFBQUFjQ2dBQUJRQUFBQU1BSkV4T01UUUFBQUFVQ2dBQQpCUUFB
QUFNQUFBQUFBTGtGQUFBQUFBQUFBQUFBQUFJQUFBQUFBT2dGQUFBQUFBQUFBQUFBQUFJQUxuSmtZ
WFJoQUFBQUFBQUFHQUFBCkFBTUJDQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUJjR0FBQUFB
QUFBR0FBQUFBSUFMbkprWVhSaEFBQUFBQUFBR1FBQUFBTUIKQ0FBQUFBQUFBQUNnVDJKUEFBQUNB
QUFBQUFBQUFDOEdBQUFBQUFBQUdRQUFBQUlBQUFBQUFFY0dBQUFBQUFBQUFBQUFBQUlBQUFBQQpB
RjRHQUFBQUFBQUFBQUFBQUFJQUFBQUFBSVlHQUFBQUFBQUFBQUFBQUFJQUFBQUFBTGNHQUFBQUFB
QUFBQUFBQUFJQUxuSmtZWFJoCkFBQUFBQUFBR2dBQUFBTUJCQUFBQUFBQUFBQ1FRZHgyQUFBQ0FB
QUFBQUFBQU9BR0FBQUFBQUFBR2dBQUFBSUFBQUFBQVBBR0FBQkEKQ2dBQUJRQWdBQUlBSkV4T01U
QUFBQUNZRFFBQUJRQUFBQU1BSkV4T01URUFBQUNNRFFBQUJRQUFBQU1BSkV4T01USUFBQUNFRFFB
QQpCUUFBQUFNQUFBQUFBRHNIQUFBQUFBQUFBQUFBQUFJQUxuSmtZWFJoQUFBQUFBQUFHd0FBQUFN
QkJBQUFBQUFBQUFBQUFBQUFBQUFDCkFBQUFBQUFBQUZZSEFBQUFBQUFBR3dBQUFBSUFBQUFBQUdZ
SEFBQUFBQUFBQUFBQUFBSUFBQUFBQUg0SEFBQUFBQUFBQUFBQUFBSUEKQUFBQUFKVUhBQUFBQUFB
QUFBQUFBQUlBQUFBQUFLWUhBQUFBQUFBQUFBQUFBQUlBQUFBQUFNTUhBQUFBQUFBQUFBQUFBQUlB
QUFBQQpBT2tIQUFDd0RRQUFCUUFnQUFNQUpFeE9Nd0FBQUFBRURnQUFCUUFBQUFNQUpFeE9OQUFB
QUFENERRQUFCUUFBQUFNQUpFeE9OUUFBCkFBRHdEUUFBQlFBQUFBTUFBQUFBQUFnSUFBQVFEZ0FB
QlFBZ0FBTUFKRXhPTXdBQUFBQjREZ0FBQlFBQUFBTUFKRXhPTkFBQUFBQnMKRGdBQUJRQUFBQU1B
SkV4T05RQUFBQUJrRGdBQUJRQUFBQU1BQUFBQUFFNElBQUNBRGdBQUJRQWdBQU1BQUFBQUFHOElB
QUN3RGdBQQpCUUFnQUFNQUxuSmtZWFJoQUFBQUFBQUFIQUFBQUFNQkNBQUFBQUFBQUFEUjNoam9B
QUFDQUFBQUFBQUFBSDhJQUFBQUFBQUFIQUFBCkFBSUFMblJsZUhRQUFBQUFBQUFBSFFBQUFBTUJQ
QUFBQUFNQUFBQ0hvSG9aQUFBQ0FBQUFMbVJsWW5WbkpGTUFBQUFBSGdBQUFBTUIKMEFBQUFBY0FB
QUFBQUFBQUhRQUZBQUFBWDJObGFXeG1BQUFBQUFBQUhRQWdBQUlBQUFBQUFKY0lBQUFBQUFBQUFB
QUFBQUlBQUFBQQpBS01JQUFCd0R3QUFCUUFnQUFJQUFBQUFBTW9JQUFBQUFBQUFBQUFBQUFJQUFB
QUFBT3dJQUFDZ0R3QUFCUUFnQUFJQUFBQUFBQVlKCkFBQUFBQUFBQUFBQUFBSUFBQUFBQUNNSkFB
QUFBQUFBQUFBQUFBSUFBQUFBQUVrSkFBQUFBQUFBQUFBQUFBSUFBQUFBQUdrSkFBQUEKQUFBQUFB
QUFBQUlBQUFBQUFJMEpBQUFnRUFBQUJRQWdBQUlBQUFBQUFNc0pBQUFBQUFBQUFBQUFBQUlBQUFB
QUFPWUpBQUJ3RUFBQQpCUUFnQUFJQUpFeE9OQUFBQUFBb0V3QUFCUUFBQUFNQUpFeE9Nd0FBQUFB
dUV3QUFCUUFBQUFNQUpFeE9OUUFBQUFBUUV3QUFCUUFBCkFBTUFKRXhPTmdBQUFBQUlFd0FBQlFB
QUFBTUFBQUFBQUNNS0FBQUFBQUFBQUFBQUFBSUFBQUFBQUVNS0FBQUFBQUFBQUFBQUFBSUEKQUFB
QUFHSUtBQUFBQUFBQUFBQUFBQUlBQUFBQUFJRUtBQUFBQUFBQUFBQUFBQUlBQUFBQUFKd0tBQUJB
RXdBQUJRQWdBQU1BSkV4TwpNd0FBQUFDd0V3QUFCUUFBQUFNQUpFeE9OQUFBQUFDa0V3QUFCUUFB
QUFNQUpFeE9OUUFBQUFDY0V3QUFCUUFBQUFNQUFBQUFBT1FLCkFBREFFd0FBQlFBZ0FBSUFBQUFB
QUNJTEFBQ2dGUUFBQlFBZ0FBSUFBQUFBQUZVTEFBQUFBQUFBQUFBQUFBSUFBQUFBQUc0TEFBQUEK
QUFBQUFBQUFBQUlBQUFBQUFKUUxBQUFBQUFBQUFBQUFBQUlBQUFBQUFMUUxBQUFnRmdBQUJRQWdB
QUlBQUFBQUFQa0xBQUFBQUFBQQpBQUFBQUFJQUFBQUFBQ2NNQUFCUUZnQUFCUUFnQUFJQUFBQUFB
R0FNQUFBQUFBQUFBQUFBQUFJQUFBQUFBSHdNQUFEUUZnQUFCUUFnCkFBSUFBQUFBQU1vTUFBQUFB
QUFBQUFBQUFBSUFBQUFBQU9ZTUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFjTkFBQUFBQUFBQUFBQUFB
SUEKQUFBQUFDSU5BQUFBQUFBQUFBQUFBQUlBQUFBQUFFY05BQUFBQUFBQUFBQUFBQUlBQUFBQUFH
NE5BQUNRRndBQUJRQWdBQUlBQUFBQQpBTEVOQUFBQUFBQUFBQUFBQUFJQUFBQUFBTmNOQUFEQUZ3
QUFCUUFnQUFJQUFBQUFBQXdPQUFBQUFBQUFBQUFBQUFJQUFBQUFBREVPCkFBQUFBQUFBQUFBQUFB
SUFBQUFBQUZVT0FBQXdHQUFBQlFBZ0FBSUFBQUFBQUpVT0FBQUFBQUFBQUFBQUFBSUFBQUFBQUww
T0FBQUEKQUFBQUFBQUFBQUlBQUFBQUFPRU9BQUFBQUFBQUFBQUFBQUlBQUFBQUFQZ09BQUFBQUFB
QUFBQUFBQUlBQUFBQUFBNFBBQUNnR0FBQQpCUUFnQUFJQUFBQUFBRndQQUFBQUFBQUFBQUFBQUFJ
QUFBQUFBSWdQQUFEUUdBQUFCUUFnQUFJQUFBQUFBTllQQUFBQUFBQUFBQUFBCkFBSUFBQUFBQUFF
UUFBQUFHUUFBQlFBZ0FBSUFBQUFBQURnUUFBQUFBQUFBQUFBQUFBSUFBQUFBQUZBUUFBQUFBQUFB
QUFBQUFBSUEKQUFBQUFHb1FBQURRR1FBQUJRQWdBQUlBQUFBQUFNZ1FBQUFBQUFBQUFBQUFBQUlB
QUFBQUFBMFJBQUFBQUFBQUFBQUFBQUlBQUFBQQpBREVSQUFCUUdnQUFCUUFnQUFJQUFBQUFBSEFS
QUFBQUFBQUFBQUFBQUFJQUFBQUFBSjRSQUFDQUdnQUFCUUFnQUFJQUpFeE9OQUFBCkFBQndHd0FB
QlFBQUFBTUFKRXhPTXdBQUFBQjhHd0FBQlFBQUFBTUFKRXhPTlFBQUFBQllHd0FBQlFBQUFBTUFK
RXhPTmdBQUFBQlEKR3dBQUJRQUFBQU1BQUFBQUFQSVJBQUFBQUFBQUFBQUFBQUlBQUFBQUFCRVNB
QUFBQUFBQUFBQUFBQUlBQUFBQUFEWVNBQUFBQUFBQQpBQUFBQUFJQUFBQUFBRkFTQUFBQUFBQUFB
QUFBQUFJQUFBQUFBSGtTQUFBQUFBQUFBQUFBQUFJQUFBQUFBS0lTQUFDUUd3QUFCUUFnCkFBSUFK
RXhPTkFBQUFBQU1IUUFBQlFBQUFBTUFKRXhPTXdBQUFBQWVIUUFBQlFBQUFBTUFKRXhPTlFBQUFB
RDBIQUFBQlFBQUFBTUEKSkV4T05nQUFBQURzSEFBQUJRQUFBQU1BQUFBQUFQUVNBQUFBQUFBQUFB
QUFBQUlBQUFBQUFDVVRBQUFBQUFBQUFBQUFBQUlBQUFBQQpBRW9UQUFBQUFBQUFBQUFBQUFJQUFB
QUFBR29UQUFBd0hRQUFCUUFnQUFJQUFBQUFBTDhUQUFBQUFBQUFBQUFBQUFJQUFBQUFBT01UCkFB
QUFBQUFBQUFBQUFBSUFBQUFBQUFzVUFBQ1FIUUFBQlFBZ0FBSUFBQUFBQUR3VUFBQUFBQUFBQUFB
QUFBSUFBQUFBQUZZVUFBREEKSFFBQUJRQWdBQUlBQUFBQUFJZ1VBQUFBQUFBQUFBQUFBQUlBQUFB
QUFLTVVBQUR3SFFBQUJRQWdBQUlBQUFBQUFOUVVBQUFBQUFBQQpBQUFBQUFJQUFBQUFBUEFVQUFB
Z0hnQUFCUUFnQUFJQUFBQUFBQ0lWQUFBQUFBQUFBQUFBQUFJQUFBQUFBRDhWQUFCUUhnQUFCUUFn
CkFBSUFBQUFBQUhNVkFBQUFBQUFBQUFBQUFBSUFBQUFBQUpJVkFBQ0FIZ0FBQlFBZ0FBSUFBQUFB
QU1VVkFBQUFBQUFBQUFBQUFBSUEKQUFBQUFPTVZBQUN3SGdBQUJRQWdBQUlBQUFBQUFCRVdBQUFB
QUFBQUFBQUFBQUlBQUFBQUFDb1dBQURnSGdBQUJRQWdBQUlBQUFBQQpBRm9XQUFBQUFBQUFBQUFB
QUFJQUFBQUFBSFVXQUFBUUh3QUFCUUFnQUFJQUFBQUFBTHNXQUFBQUFBQUFBQUFBQUFJQUFBQUFB
Tm9XCkFBQmdId0FBQlFBZ0FBSUFBQUFBQURNWEFBQUFBQUFBQUFBQUFBSUFBQUFBQUZvWEFBQ3dI
d0FBQlFBZ0FBSUFBQUFBQUkwWEFBQUEKQUFBQUFBQUFBQUlBQUFBQUFLa1hBQURnSHdBQUJRQWdB
QUlBQUFBQUFOb1hBQUFBQUFBQUFBQUFBQUlBQUFBQUFQWVhBQUFRSUFBQQpCUUFnQUFJQUFBQUFB
QllZQUFBQUFBQUFBQUFBQUFJQUxuUmxlSFFrZVdNQUFBQUFId0FBQUFNQktnQUFBQVVBQUFEdzRw
Y2hBQUFDCkFBQUFMbVJsWW5WbkpGTUFBQUFBSUFBQUFBTUI3QUFBQUFjQUFBQUFBQUFBSHdBRkFB
QUFBQUFBQURNWUFBQUFBQUFBSHdBZ0FBTUEKTG5SbGVIUWtlV01BQUFBQUlRQUFBQU1CS2dBQUFB
VUFBQUR3NHBjaEFBQUNBQUFBTG1SbFluVm5KRk1BQUFBQUlnQUFBQU1CN0FBQQpBQWNBQUFBQUFB
QUFJUUFGQUFBQUFBQUFBRlVZQUFBQUFBQUFJUUFnQUFNQUxuUmxlSFFrZVdNQUFBQUFJd0FBQUFN
QktnQUFBQVVBCkFBRHc0cGNoQUFBQ0FBQUFMbVJsWW5WbkpGTUFBQUFBSkFBQUFBTUIvQUFBQUFj
QUFBQUFBQUFBSXdBRkFBQUFBQUFBQUhnWUFBQUEKQUFBQUl3QWdBQU1BQUFBQUFLZ1lBQUFVQUFB
QUNBQUFBQU1BQUFBQUFMOFlBQUFRQUFBQUNBQUFBQU1BQUFBQUFPUVlBQUFNQUFBQQpDQUFBQUFN
QUxrTlNWQ1JZUTFVQUFBQUFKUUFBQUFNQkRBQUFBQU1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBUHdZ
QUFBQUFBQUFKUUFBCkFBTUFBQUFBQUNBWkFBQUVBQUFBSlFBQUFBTUFBQUFBQUVVWkFBQUlBQUFB
SlFBQUFBTUFMbVJsWW5WbkpGUUFBQUFBSmdBQUFBTUIKWUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
ZHhrQUFGOWhiblJwWVd4cFlYTnBibWRIWVcxdFlRQmZjMTltYjI1MFUyMXZiM1JvYVc1bgpWSGx3
WlFCZmMxOW1iMjUwVTIxdmIzUm9hVzVuVEdWMlpXd0FYM05mWm05dWRGTnRiMjkwYUdsdVowTnZi
blJ5WVhOMEFEOTNhMU5sCmRFWnZiblJUYlc5dmRHaHBibWRNWlhabGJFQkFXVUZZU0VCYUFFQmZV
bFJEWDBOb1pXTnJVM1JoWTJ0V1lYSnpRRGdBWDE5U1ZFTmYKVTJoMWRHUnZkMjR1Y25SakpGUk5X
Z0JmWDFKVVExOVRhSFYwWkc5M2JnQmZYMUpVUTE5SmJtbDBRbUZ6WlM1eWRHTWtTVTFhQUY5ZgpV
bFJEWDBsdWFYUkNZWE5sQUQ5M2EwZGxkRVp2Ym5SVGJXOXZkR2hwYm1kTVpYWmxiRUJBV1VGSVdG
b0FQM2RyVTJWMFJtOXVkRk50CmIyOTBhR2x1WjBOdmJuUnlZWE4wUUVCWlFWaE5RRm9BWDE5bWJI
UjFjMlZrQUQ5M2EwZGxkRVp2Ym5SVGJXOXZkR2hwYm1kRGIyNTAKY21GemRFQkFXVUZOV0ZvQVAz
ZHJVM2x6ZEdWdFJtOXVkRk50YjI5MGFHbHVaME5vWVc1blpXUkFRRmxCV0ZoYUFGOXpYM041YzNS
bApiVVp2Ym5SVGJXOXZkR2hwYm1kVFpYUUFYM05mYzNsemRHVnRSbTl1ZEZOdGIyOTBhR2x1WjFS
NWNHVUFYMTlwYlhCZlgxTjVjM1JsCmJWQmhjbUZ0WlhSbGNuTkpibVp2VjBBeE5nQmZjMTl6ZVhO
MFpXMUdiMjUwVTIxdmIzUm9hVzVuUlc1aFlteGxaQUJmWDFKVVExOUQKYUdWamEwVnpjQUEvWTJ4
bFlYSlVlWEJsUTI5dWRISmhjM1JBUUZsQlRWaGFBRjlmYVcxd1gxOUVaV3hsZEdWRVEwQTBBRjlm
YVcxdwpYMTlFWld4bGRHVlBZbXBsWTNSQU5BQmZYM0psWVd4QU0yWm1NREF3TURBd01EQXdNREF3
TUFCZlgzSmxZV3hBTkRBMlptVXdNREF3Ck1EQXdNREF3TUFCZlgzSmxZV3hBTkRBd01qWTJOalky
TURBd01EQXdNQUJmWDNKbFlXeEFNMlppT1RrNU9UbGhNREF3TURBd01BQmYKWDNKbFlXeEFNMlk0
TURBd01EQUFYMTlwYlhCZlgwVjRkRlJsZUhSUGRYUlhRRE15QUY5ZmFXMXdYMTlUWlhSQ2EwTnZi
Rzl5UURnQQpYMTlwYlhCZlgxTmxkRlJsZUhSRGIyeHZja0E0QUY5ZmFXMXdYMTlUWlhSVVpYaDBR
V3hwWjI1QU9BQmZYMmx0Y0Y5ZlUyVjBRbXROCmIyUmxRRGdBWDE5cGJYQmZYMGRsZEU5aWFtVmpk
RmRBTVRJQVgxOXBiWEJmWDBOeVpXRjBaVVJKUWxObFkzUnBiMjVBTWpRQVgxOXkKWldGc1FEUXdP
R1kwTURBd01EQXdNREF3TURBQVgxOXBiWEJmWDBkbGRFZHNlWEJvVDNWMGJHbHVaVmRBTWpnQVAy
bGtaVzUwYVhSNQpRRDh6UHo5amJHVmhjbFI1Y0dWRGIyNTBjbUZ6ZEVCQVdVRk5XRnBBTkZWZlRV
RlVNa0JBUWdCZlgybHRjRjlmVTJWc1pXTjBUMkpxClpXTjBRRGdBWDE5cGJYQmZYMGRsZEZOMGIy
TnJUMkpxWldOMFFEUUFYMTlwYlhCZlgwTnlaV0YwWlVOdmJYQmhkR2xpYkdWRVEwQTAKQUQ5bllX
MXRZVUEvTVQ4L1kyeGxZWEpVZVhCbFEyOXVkSEpoYzNSQVFGbEJUVmhhUURSTlFRQS9iR0Z6ZEVO
dmJuUnlZWE4wUUQ4eApQejlqYkdWaGNsUjVjR1ZEYjI1MGNtRnpkRUJBV1VGTldGcEFORWxCQUQ5
bVlXSnpRRUJaUVUxTlFGb0FQM2RyVTJWMFJtOXVkRk50CmIyOTBhR2x1WjFOMGVXeGxRRUJaUVVs
UVFWVkRSME52Ym5SbGVIUkFRRjlPUUZvQVgxOXBiWEJmWDBOSFEyOXVkR1Y0ZEVkbGRFWnYKYm5S
VGJXOXZkR2hwYm1kVGRIbHNaUUJmWDJsdGNGOWZRMGREYjI1MFpYaDBSMlYwVTJodmRXeGtVMjF2
YjNSb1JtOXVkSE1BUDNObApkRVp2Ym5SVGJXOXZkR2hwYm1kVGRIbHNaVUJBV1VGWVVFRlZRMGRE
YjI1MFpYaDBRRUJKWDA1QVdnQmZYMmx0Y0Y5ZlEwZERiMjUwClpYaDBVMlYwUm05dWRGTnRiMjkw
YUdsdVoxTjBlV3hsQUY5ZmFXMXdYMTlEUjBOdmJuUmxlSFJUWlhSVGFHOTFiR1JUYlc5dmRHaEcK
YjI1MGN3QS9kMnRTWlhOMGIzSmxSbTl1ZEZOdGIyOTBhR2x1WjFOMGVXeGxRRUJaUVZoUVFWVkRS
ME52Ym5SbGVIUkFRRWxBV2dBLwpkMnRUWlhSRFIwTnZiblJsZUhSR2IyNTBVbVZ1WkdWeWFXNW5V
M1I1YkdWQVFGbEJXRkJCVlVOSFEyOXVkR1Y0ZEVCQVgwNHhNVUJhCkFGOWZhVzF3WDE5RFIwTnZi
blJsZUhSVFpYUlRhRzkxYkdSVGRXSndhWGhsYkZGMVlXNTBhWHBsUm05dWRITUFYMTlwYlhCZlgw
TkgKUTI5dWRHVjRkRk5sZEZOb2IzVnNaRk4xWW5CcGVHVnNVRzl6YVhScGIyNUdiMjUwY3dCZlgz
SmxZV3hBTURBd01EQXdNREF3TURBdwpNREF3TUFCZlgzSmxZV3hBWW1abU1EQXdNREF3TURBd01E
QXdNQUJmWDJsdGNGOWZRMGREYjI1MFpYaDBSMlYwUTFSTkFGOWZhVzF3ClgxOURSME52Ym5SbGVI
UlRaWFJUYUc5MWJHUkJiblJwWVd4cFlYTkdiMjUwY3dCZlgybHRjRjlmUTBkRGIyNTBaWGgwVTJW
MFUyaHYKZFd4a1ZYTmxVR3hoZEdadmNtMU9ZWFJwZG1WSGJIbHdhSE1BWDE5cGJYQmZYME5IUTI5
dWRHVjRkRk5sZEVadmJuUlRiVzl2ZEdocApibWREYjI1MGNtRnpkQUJmWDNKbFlXeEFOREF3TURB
d01EQUFQM2RyUjJWMFIyeDVjR2hCWkhaaGJtTmxjMEJBV1VGWVVFRlZRMGRHCmIyNTBRRUJCUWxW
RFIwRm1abWx1WlZSeVlXNXpabTl5YlVCQVgwNHlSMEZCVlVOSFUybDZaVUJBUUZvQVgxOXBiWEJm
WDBOSFJtOXUKZEVkbGRGVnVhWFJ6VUdWeVJXMEFYMTl5WldGc1FEQXdNREF3TURBd0FGOWZhVzF3
WDE5RFJrUmhkR0ZIWlhSQ2VYUmxVSFJ5QUY5ZgphVzF3WDE5RFJrUmhkR0ZIWlhSTVpXNW5kR2dB
WDE5cGJYQmZYME5HVW1Wc1pXRnpaUUJmWDJsdGNGOWZRMGRHYjI1MFEyOXdlVlJoCllteGxSbTl5
VkdGbkFGOWZhVzF3WDE5RFIwWnZiblJIWlhSSGJIbHdhRUZrZG1GdVkyVnpSbTl5VTNSNWJHVUFQ
ME5IVTJsNlpVMWgKYTJWQVFGbEJQMEZWUTBkVGFYcGxRRUJOVFVCYUFEOWZYME5IVTJsNlpVRndj
R3g1UVdabWFXNWxWSEpoYm5ObWIzSnRRRUJaUVQ5QgpWVU5IVTJsNlpVQkFWVEZBVlVOSFFXWm1h
VzVsVkhKaGJuTm1iM0p0UUVCQVdnQS9jbVZ1WkdWeWFXNW5VM1I1YkdWR2IzSkdiMjUwClFFQlpR
VWxmVGpCQVdnQS9jbTkxYm1SbVFFQlpRVTFOUUZvQVgxOXlaV0ZzUURObVpUQXdNREF3TURBd01E
QXdNREFBWDE5cGJYQmYKWDJObGFXd0FQM2RyUjJWMFIyeDVjR2h6UUVCWlFWaFFRVlZEUjBadmJu
UkFRRkZDWDFkUlFVZEpRRm9BWDE5cGJYQmZYME5IUm05dQpkRWRsZEVkc2VYQm9jMFp2Y2xWdWFX
Tm9ZWEp6QUQ5M2ExTmxkRlZ3Um05dWRFTmhZMmhsUUVCWlFWaEpRRm9BWDE5cGJYQmZYME5IClJt
OXVkRU5oWTJobFUyVjBUV0Y0VTJsNlpRQmZYMmx0Y0Y5ZlEwZEdiMjUwUTJGamFHVlRaWFJUYUc5
MWJHUkJkWFJ2Ulhod2FYSmwKQUY5ZmFXMXdYMTlEUjBadmJuUkRZV05vWlVkbGRFeHZZMkZzUTJG
amFHVUFYMTlwYlhCZlgwTkhSbTl1ZEZObGRGTm9iM1ZzWkZWegpaVTExYkhScFkyRmphR1VBUDNk
clUyVjBVR0YwZEdWeWJrSmhjMlZEVkUxQVFGbEJXRkJCVlVOSFEyOXVkR1Y0ZEVCQVZVTkhRV1pt
CmFXNWxWSEpoYm5ObWIzSnRRRUJBV2dCZlgybHRjRjlmUTBkRGIyNTBaWGgwVTJWMFFtRnpaVU5V
VFFBL2QydFRaWFJRWVhSMFpYSnUKVUdoaGMyVkpibFZ6WlhKVGNHRmpaVUJBV1VGWVVFRlZRMGRE
YjI1MFpYaDBRRUJWUTBkUWIybHVkRUJBUUZvQVgxOXBiWEJmWDBOSApRMjl1ZEdWNGRGTmxkRkJo
ZEhSbGNtNVFhR0Z6WlFCZlgybHRjRjlmUTBkQlptWnBibVZVY21GdWMyWnZjbTFEYjI1allYUUFY
MTlwCmJYQmZYME5IUVdabWFXNWxWSEpoYm5ObWIzSnRTVzUyWlhKMEFGOWZhVzF3WDE5RFIwTnZi
blJsZUhSSFpYUkNZWE5sUTFSTkFEOWYKWDBOSFVHOXBiblJCY0hCc2VVRm1abWx1WlZSeVlXNXpa
bTl5YlVCQVdVRS9RVlZEUjFCdmFXNTBRRUJWTVVCVlEwZEJabVpwYm1WVQpjbUZ1YzJadmNtMUFR
RUJhQUQ5M2EwZGxkRlZ6WlhKVWIwSmhjMlZEVkUxQVFGbEJQMEZWUTBkQlptWnBibVZVY21GdWMy
WnZjbTFBClFGQkJWVU5IUTI5dWRHVjRkRUJBUUZvQVAzZHJSSEpoZDBadlkzVnpVbWx1WjBCQVdV
RllVRUZWUTBkRGIyNTBaWGgwUUVCUVFWVkQKUjBOdmJHOXlRRUJOUUZvQVgxOXBiWEJmWDBOSFEy
OXVkR1Y0ZEVacGJHeFFZWFJvQUY5ZmFXMXdYMTlEUjBOdmJuUmxlSFJUWlhSRwpiMk4xYzFKcGJt
ZFhhWFJvUTI5c2IzSUFYMTlwYlhCZlgwTkhRMjl1ZEdWNGRGTmxkRkpIUWtacGJHeERiMnh2Y2dB
L2QydEhaWFJUClUweERaWEowYVdacFkyRjBaVWx1Wm05QVFGbEJVRUpWWDE5RFJrUnBZM1JwYjI1
aGNubEFRRkJCVlY5RFJsVlNURkpsYzNCdmJuTmwKUUVCQVdnQmZYMmx0Y0Y5ZlgwTkdWVkpNVW1W
emNHOXVjMlZIWlhSVFUweERaWEowYVdacFkyRjBaVU52Ym5SbGVIUUFQM2RyUjJWMApVMU5NVUdW
bGNrTmxjblJwWm1sallYUmxSR0YwWVVCQVdVRlFRVmhRUWxWZlgwTkdSR2xqZEdsdmJtRnllVUJB
UUZvQVgxOXBiWEJmClgwTkdSR2xqZEdsdmJtRnllVWRsZEZaaGJIVmxBRDkzYTFObGRFTnNhV1Z1
ZEVObGNuUnBabWxqWVhSbFNXNVRVMHhRY205d1pYSjAKYVdWelFFQlpRVmhRUVZWZlgwTkdSR2xq
ZEdsdmJtRnllVUJBVUVKVlgxOURSa1JoZEdGQVFFQmFBRjlmYVcxd1gxOURSa1JwWTNScApiMjVo
Y25sVFpYUldZV3gxWlFCZlgybHRjRjlmUTBaRWFXTjBhVzl1WVhKNVEzSmxZWFJsVFhWMFlXSnNa
UUJmWDJsdGNGOWZhME5HClFXeHNiMk5oZEc5eVJHVm1ZWFZzZEFCZlgybHRjRjlmYTBOR1ZIbHda
VVJwWTNScGIyNWhjbmxMWlhsRFlXeHNRbUZqYTNNQVgxOXAKYlhCZlgydERSbFI1Y0dWRWFXTjBh
Vzl1WVhKNVZtRnNkV1ZEWVd4c1FtRmphM01BUDNkclIyVjBSR1ZtWVhWc2RFaFVWRkJEYjI5cgph
V1ZUZEc5eVlXZGxRRUJaUVZCQlZVOXdZWEYxWlVOR1NGUlVVRU52YjJ0cFpWTjBiM0poWjJWQVFG
aGFBRjlmYVcxd1gxOWZRMFpJClZGUlFRMjl2YTJsbFUzUnZjbUZuWlVkbGRFUmxabUYxYkhRQVAz
ZHJRMjl3ZVVadmRXNWtZWFJwYjI1RFlXTm9aVVJwY21WamRHOXkKZVVCQVdVRlFRbFZmWDBOR1Uz
UnlhVzVuUUVCWVdnQmZYMmx0Y0Y5ZlgwTkdWVkpNUTJGamFHVkRiM0I1UTJGamFHVkVhWEpsWTNS
dgpjbmtBWDE5cGJYQmZYME5HVlZKTVEyRmphR1ZEYjNCNVUyaGhjbVZrVlZKTVEyRmphR1VBUDNk
clUyVjBRMFpWVWt4U1pYRjFaWE4wClUyaHZkV3hrUTI5dWRHVnVkRk51YVdabVFFQlpRVmhRUVZW
ZlEwWlZVa3hTWlhGMVpYTjBRRUJmVGtCYUFGOWZhVzF3WDE5ZlEwWlYKVWt4U1pYRjFaWE4wVTJW
MFVISnZkRzlqYjJ4UWNtOXdaWEowZVFCZlgybHRjRjlmWDE5RFJsTjBjbWx1WjAxaGEyVkRiMjV6
ZEdGdQpkRk4wY21sdVp3QmZYMmx0Y0Y5ZmEwTkdRbTl2YkdWaGJrWmhiSE5sQUY5ZmFXMXdYMTly
UTBaQ2IyOXNaV0Z1VkhKMVpRQS9kMnREClJsVlNURkpsY1hWbGMzUkRiM0I1U0ZSVVVGSmxjWFZs
YzNSQ2IyUjVVR0Z5ZEhOQVFGbEJVRUpWWDE5RFJrRnljbUY1UUVCUVFsVmYKUTBaVlVreFNaWEYx
WlhOMFFFQkFXZ0JmWDJsdGNGOWZRMFpWVWt4U1pYRjFaWE4wUTI5d2VVaFVWRkJTWlhGMVpYTjBR
bTlrZVZCaApjblJ6QUQ5M2EwTkdWVkpNVW1WeGRXVnpkRk5sZEVoVVZGQlNaWEYxWlhOMFFtOWtl
VkJoY25SelFFQlpRVmhRUVZWZlEwWlZVa3hTClpYRjFaWE4wUUVCUVFsVmZYME5HUVhKeVlYbEFR
RUJhQUY5ZmFXMXdYMTlEUmxWU1RGSmxjWFZsYzNSVFpYUklWRlJRVW1WeGRXVnoKZEVKdlpIbFFZ
WEowY3dBL2QydEpibWwwYVdGc2FYcGxUV0Y0YVcxMWJVaFVWRkJEYjI1dVpXTjBhVzl1UTI5MWJu
UlFaWEpJYjNOMApRRUJaUVVsSlFGb0FYMTlwYlhCZlgwZGxkRkJ5YjJOQlpHUnlaWE56UURnQVgx
OXBiWEJmWDBkbGRFMXZaSFZzWlVoaGJtUnNaVmRBCk5BQS9kMnREYjNCNVEzSmxaR1Z1ZEdsaGJF
WnliMjFEUmxCbGNuTnBjM1JsYm5SVGRHOXlZV2RsUUVCWlFWQkJWVjlEUmxWU1RFTnkKWldSbGJu
UnBZV3hBUUZCQlZWOURSbFZTVEZCeWIzUmxZM1JwYjI1VGNHRmpaVUJBUUZvQVgxOXBiWEJmWDBO
R1ZWSk1RM0psWkdWdQpkR2xoYkZOMGIzSmhaMlZEYjNCNVJHVm1ZWFZzZEVOeVpXUmxiblJwWVd4
R2IzSlFjbTkwWldOMGFXOXVVM0JoWTJVQVgxOXBiWEJmClgwTkdWVkpNUTNKbFpHVnVkR2xoYkZO
MGIzSmhaMlZEY21WaGRHVUFQM2RyUTBaT1pYUjNiM0pyUlhKeWIzSkhaWFJNYjJOaGJHbDYKWldS
RVpYTmpjbWx3ZEdsdmJrQkFXVUZRUWxWZlgwTkdVM1J5YVc1blFFQktRRm9BWDE5cGJYQmZYMTlE
Ums1bGRIZHZjbXRGY25Kdgpja2RsZEV4dlkyRnNhWHBsWkVSbGMyTnlhWEIwYVc5dUFEOTNhMU5s
ZEVOUFRrNUZRMVJRY205NGVVWnZjbE4wY21WaGJVQkFXVUZZClVFRlZYMTlEUmxKbFlXUlRkSEps
WVcxQVFGQkNWVjlmUTBaVGRISnBibWRBUUZCQ1ZWOWZRMFpPZFcxaVpYSkFRRUJhQUY5ZmFXMXcK
WDE5RFJsSmxZV1JUZEhKbFlXMVRaWFJRY205d1pYSjBlUUJmWDJsdGNGOWZhME5HVTNSeVpXRnRV
SEp2Y0dWeWRIbERUMDVPUlVOVQpVSEp2ZUhrQVgxOXBiWEJmWDBOR1JHbGpkR2x2Ym1GeWVVTnla
V0YwWlFCZlgybHRjRjlmYTBOR1UzUnlaV0Z0VUhKdmNHVnlkSGxEClQwNU9SVU5VVUhKdmVIbFFi
M0owQUY5ZmFXMXdYMTlyUTBaVGRISmxZVzFRY205d1pYSjBlVU5QVGs1RlExUlFjbTk0ZVVodmMz
UUEKUDNkclUyVjBRMDlPVGtWRFZGQnliM2g1UVhWMGFHOXlhWHBoZEdsdmJrWnZjbE4wY21WaGJV
QkFXVUZZVUVGVlgxOURSbEpsWVdSVApkSEpsWVcxQVFGQkNWVjlmUTBaVGRISnBibWRBUUVCYUFG
OWZhVzF3WDE5clEwWlRkSEpsWVcxUWNtOXdaWEowZVVOUFRrNUZRMVJCClpHUnBkR2x2Ym1Gc1NH
VmhaR1Z5Y3dCZlgybHRjRjlmUTBaRWFXTjBhVzl1WVhKNVEzSmxZWFJsVFhWMFlXSnNaVU52Y0hr
QVgxOXAKYlhCZlgwTkdVbVZoWkZOMGNtVmhiVU52Y0hsUWNtOXdaWEowZVFBL2QydERiM0I1UTA5
T1RrVkRWRkJ5YjNoNVVtVnpjRzl1YzJWQQpRRmxCVUVGVlgxOURSa2hVVkZCTlpYTnpZV2RsUUVC
UVFWVmZYME5HVW1WaFpGTjBjbVZoYlVCQVVFSlZYMTlEUmxWU1RFQkFRRm9BClgxOXBiWEJmWDE5
RFJraFVWRkJOWlhOellXZGxVMlYwVW1WemNHOXVjMlZWVWt3QVgxOXBiWEJmWDJ0RFJsTjBjbVZo
YlZCeWIzQmwKY25SNVEwOU9Ua1ZEVkZKbGMzQnZibk5sQUQ5M2EwTkJTVzFoWjJWUmRXVjFaVU55
WldGMFpVQkFXVUZRUVZWZlEwRkpiV0ZuWlZGMQpaWFZsUUVCSlNVbEFXZ0JmWDJsdGNGOWZRMEZK
YldGblpWRjFaWFZsUTNKbFlYUmxBRDkzYTBOQlNXMWhaMlZSZFdWMVpWTmxkRk5wCmVtVkFRRmxC
V0ZCQlZWOURRVWx0WVdkbFVYVmxkV1ZBUUVsSlFGb0FYMTlwYlhCZlgwTkJTVzFoWjJWUmRXVjFa
Vk5sZEZOcGVtVUEKUDNkclEwRkpiV0ZuWlZGMVpYVmxSMlYwVjJsa2RHaEFRRmxCU1ZCQlZWOURR
VWx0WVdkbFVYVmxkV1ZBUUVCYUFGOWZhVzF3WDE5RApRVWx0WVdkbFVYVmxkV1ZIWlhSWGFXUjBh
QUEvZDJ0RFFVbHRZV2RsVVhWbGRXVkhaWFJJWldsbmFIUkFRRmxCU1ZCQlZWOURRVWx0CllXZGxV
WFZsZFdWQVFFQmFBRjlmYVcxd1gxOURRVWx0WVdkbFVYVmxkV1ZIWlhSSVpXbG5hSFFBUDNkclEw
RkpiV0ZuWlZGMVpYVmwKUjJWMFEyRndZV05wZEhsQVFGbEJTVkJCVlY5RFFVbHRZV2RsVVhWbGRX
VkFRRUJhQUY5ZmFXMXdYMTlEUVVsdFlXZGxVWFZsZFdWSApaWFJEWVhCaFkybDBlUUEvZDJ0RFFV
bHRZV2RsVVhWbGRXVkpiblpoYkdsa1lYUmxRRUJaUVZoUVFWVmZRMEZKYldGblpWRjFaWFZsClFF
QkFXZ0JmWDJsdGNGOWZRMEZKYldGblpWRjFaWFZsU1c1MllXeHBaR0YwWlFBL2QydERRVWx0WVdk
bFVYVmxkV1ZHYkhWemFFQkEKV1VGWVVFRlZYME5CU1cxaFoyVlJkV1YxWlVCQVFGb0FYMTlwYlhC
ZlgwTkJTVzFoWjJWUmRXVjFaVVpzZFhOb0FEOTNhME5CU1cxaApaMlZSZFdWMVpVTnZiR3hsWTNS
QVFGbEJTVkJCVlY5RFFVbHRZV2RsVVhWbGRXVkFRRUJhQUY5ZmFXMXdYMTlEUVVsdFlXZGxVWFZs
CmRXVkRiMnhzWldOMEFEOTNhME5CU1cxaFoyVlJkV1YxWlVsdWMyVnlkRWx0WVdkbFFFQlpRVjlP
VUVGVlgwTkJTVzFoWjJWUmRXVjEKWlVCQVRrbGZTMGxRTmtGWVNURlFRVmhBV2pKQVdnQmZYMmx0
Y0Y5ZlEwRkpiV0ZuWlZGMVpYVmxTVzV6WlhKMFNXMWhaMlVBUDNkcgpRMEZKYldGblpWRjFaWFZs
VW1WbmFYTjBaWEpRYVhobGJFSjFabVpsY2tCQVdVRmZTMUJCVlY5RFFVbHRZV2RsVVhWbGRXVkFR
RkJCCldFbEpTVWxKVUVKVlgxOURSa1JwWTNScGIyNWhjbmxBUUVsQVdnQmZYMmx0Y0Y5ZlEwRkpi
V0ZuWlZGMVpYVmxVbVZuYVhOMFpYSlEKYVhobGJFSjFabVpsY2dBL2QydERRVWx0WVdkbFVYVmxk
V1ZUWlhSR2JHRm5jMEJBV1VGWVVFRlZYME5CU1cxaFoyVlJkV1YxWlVCQQpTVWxBV2dCZlgybHRj
RjlmUTBGSmJXRm5aVkYxWlhWbFUyVjBSbXhoWjNNQVAzZHJRMEZKYldGblpWRjFaWFZsUjJWMFJt
eGhaM05BClFGbEJTVkJCVlY5RFFVbHRZV2RsVVhWbGRXVkFRRUJhQUY5ZmFXMXdYMTlEUVVsdFlX
ZGxVWFZsZFdWSFpYUkdiR0ZuY3dBL2QydEQKUVVsdFlXZGxVWFZsZFdWSFpYUlVlWEJsU1VSQVFG
bEJTMWhhQUY5ZmFXMXdYMTlEUVVsdFlXZGxVWFZsZFdWSFpYUlVlWEJsU1VRQQpQejlmWDBWclEw
WlhhVzVrYjNkelUxTk1VR1ZsY2tObGNuUkFRRmxCV0ZoYUFEOC9YMTlGYTBOR1YybHVaRzkzYzFO
VFRFeHZZMkZzClEyVnlkRUJBV1VGWVdGb0FQejlmWDBWclEwWlRkSEpsWVcxUWNtOXdaWEowZVZk
cGJtUnZkM05UVTB4RFpYSjBTVzVtYjBCQVdVRlkKV0ZvQVgydERSbGRwYm1SdmQzTlRVMHhRWldW
eVEyVnlkQUJmYTBOR1UzUnlaV0Z0VUhKdmNHVnlkSGxYYVc1a2IzZHpVMU5NUTJWeQpkRWx1Wm04
QVgydERSbGRwYm1SdmQzTlRVMHhNYjJOaGJFTmxjblFBWDJ0RFJsZHBibVJ2ZDNOVFUweFFaV1Z5
UTJWeWRDUnBibWwwCmFXRnNhWHBsY2lRQVgydERSbGRwYm1SdmQzTlRVMHhNYjJOaGJFTmxjblFr
YVc1cGRHbGhiR2w2WlhJa0FGOXJRMFpUZEhKbFlXMVEKY205d1pYSjBlVmRwYm1SdmQzTlRVMHhE
WlhKMFNXNW1ieVJwYm1sMGFXRnNhWHBsY2lRQQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56940</attachid>
            <date>2010-05-24 16:19:34 -0700</date>
            <delta_ts>2010-05-24 16:28:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39557-20100524161940.patch</filename>
            <type>text/plain</type>
            <size>43008</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDA5NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDkgQEAKKzIwMTAtMDUtMjQgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmVl
ZCBhIHNob3J0IGRlc2NyaXB0aW9uIGFuZCBidWcgVVJMIChPT1BTISkKKworICAgICAgICBObyBu
ZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6RmxvYXRTaXplOjphc3BlY3RSYXRpbyk6CisgICAgICAgIChXZWJDb3JlOjpGbG9h
dFNpemU6OnNjYWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRTaXplOjphc3BlY3RSYXRpbyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5k
b3c6Ok1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6fk1lZGlhUGxheWVyUHJpdmF0
ZUZ1bGxzY3JlZW5XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
RnVsbHNjcmVlbldpbmRvdzo6Y3JlYXRlV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6Omh3bmQpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6bGF5ZXJSZW5kZXJlcik6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93Ojpy
b290Q2hpbGRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93OjpzZXRSb290Q2hpbGRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93OjpzdGF0aWNXbmRQcm9jKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OnduZFByb2MpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2Ny
ZWVuV2luZG93Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
RnVsbHNjcmVlbkNsaWVudDo6fk1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5DbGllbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1Rp
bWVWaXN1YWxDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OnN1cHBvcnRzRnVsbHNjcmVlbik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpyZXRyaWV2
ZUN1cnJlbnRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRdWlj
a1RpbWVWaXN1YWxDb250ZXh0OjpjcmVhdGVMYXllckZvck1vdmllKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNGTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0tD
QUNGTGF5ZXI6OldLQ0FDRkxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OldLQ0FDRkxheWVyOjpy
ZW1vdmVGcm9tU3VwZXJsYXllcik6CisgICAgICAgIChXZWJDb3JlOjpXS0NBQ0ZMYXllcjo6c2V0
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V0tDQUNGTGF5ZXI6OmludGVybmFsU2V0TmVlZHNE
aXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OldLQ0FDRkxheWVyOjpzZXRMYXlvdXRDbGllbnQp
OgorICAgICAgICAoV2ViQ29yZTo6V0tDQUNGTGF5ZXI6OmxheW91dFN1YmxheWVyc1Byb2MpOgor
ICAgICAgICAoV2ViQ29yZTo6V0tDQUNGTGF5ZXI6OmxheW91dENsaWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpXS0NBQ0ZMYXllcjo6c2V0TmVlZHNMYXlvdXQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6V0tDQUNGTGF5
ZXI6OmZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vV2ViVGlsZWRMYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJUaWxlZExheWVyOjpzZXRGcmFtZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dlYlRpbGVkTGF5ZXIuaDoKKwogMjAxMC0wNS0y
MyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIENhcmxzb24uCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJ
KHJldmlzaW9uIDYwMDQ4KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agkod29ya2luZyBjb3B5KQpAQCAtMjM3OTEsNiArMjM3OTEsMTQgQEAKIAkJCQkJCT4NCiAJCQkJ
CTwvRmlsZT4NCiAJCQkJCTxGaWxlDQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1x3aW5cTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAiDQorCQkJ
CQkJPg0KKwkJCQkJPC9GaWxlPg0KKwkJCQkJPEZpbGUNCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHBsYXRmb3JtXGdyYXBoaWNzXHdpblxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93
LmgiDQorCQkJCQkJPg0KKwkJCQkJPC9GaWxlPg0KKwkJCQkJPEZpbGUNCiAJCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxNZWRpYVBsYXllclByaXZhdGVRdWlja1Rp
bWVWaXN1YWxDb250ZXh0LmNwcCINCiAJCQkJCQk+DQogCQkJCQk8L0ZpbGU+DQpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oCShyZXZpc2lvbiA2MDA0OCkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYg
KzYzLDE0IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
d2lkdGggPD0gMCB8fCBtX2hlaWdodCA8PSAwOyB9CiAKKyAgICBmbG9hdCBhc3BlY3RSYXRpbygp
IGNvbnN0IHsgcmV0dXJuIG1fd2lkdGggLyBtX2hlaWdodDsgfQorCisgICAgdm9pZCBzY2FsZShm
bG9hdCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fd2lkdGggKj0gc2NhbGU7CisgICAgICAgIG1f
aGVpZ2h0ICo9IHNjYWxlOworICAgIH0KKwogICAgIEZsb2F0U2l6ZSBleHBhbmRlZFRvKGNvbnN0
IEZsb2F0U2l6ZSYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gRmxvYXRTaXpl
KG1fd2lkdGggPiBvdGhlci5tX3dpZHRoID8gbV93aWR0aCA6IG90aGVyLm1fd2lkdGgsCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAkocmV2aXNpb24gNjAwNDgpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiAr
NzIsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3dp
ZHRoIDw9IDAgfHwgbV9oZWlnaHQgPD0gMDsgfQogICAgIGJvb2wgaXNaZXJvKCkgY29uc3QgeyBy
ZXR1cm4gIW1fd2lkdGggJiYgIW1faGVpZ2h0OyB9CisKKyAgICBmbG9hdCBhc3BlY3RSYXRpbygp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtX3dpZHRoKSAvIHN0YXRpY19jYXN0
PGZsb2F0PihtX2hlaWdodCk7IH0KICAgICAKICAgICB2b2lkIGV4cGFuZChpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpCiAgICAgewpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVk
aWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRv
dy5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgCisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQgCisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZSAKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyCTQVMgSVOUIAorICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIAorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiAKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIAorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIAorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgiCisKKyNpbmNsdWRl
ICJXZWJDb3JlSW5zdGFuY2VIYW5kbGUuaCIKKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dDb2xv
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3Jl
ZW5XaW5kb3c6Ok1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3coTWVkaWFQbGF5ZXJQ
cml2YXRlRnVsbHNjcmVlbkNsaWVudCogY2xpZW50KQorICAgIDogbV9jbGllbnQoY2xpZW50KQor
ICAgICwgbV9od25kKDApCisgICAgLCBtX2xheWVyUmVuZGVyZXIoV0tDQUNGTGF5ZXJSZW5kZXJl
cjo6Y3JlYXRlKDApKQoreworfQorCitNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93
Ojp+TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdygpCit7Cit9CisKK3ZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6Y3JlYXRlV2luZG93KCkKK3sKKyAgICBz
dGF0aWMgQVRPTSB3aW5kb3dBdG9tOworICAgIHN0YXRpYyBMUENXU1RSIHdpbmRvd0NsYXNzTmFt
ZSA9IEwiTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvd0NsYXNzIjsKKyAgICBpZiAo
IXdpbmRvd0F0b20pIHsKKyAgICAgICAgV05EQ0xBU1NFWCB3Y2V4ID0gezB9OworICAgICAgICB3
Y2V4LmNiU2l6ZSA9IHNpemVvZihXTkRDTEFTU0VYKTsKKyAgICAgICAgd2NleC5zdHlsZSA9IENT
X0hSRURSQVcgfCBDU19WUkVEUkFXOworICAgICAgICB3Y2V4LmxwZm5XbmRQcm9jID0gJnN0YXRp
Y1duZFByb2M7CisgICAgICAgIHdjZXguaEluc3RhbmNlID0gV2ViQ29yZTo6aW5zdGFuY2VIYW5k
bGUoKTsKKyAgICAgICAgd2NleC5scHN6Q2xhc3NOYW1lID0gd2luZG93Q2xhc3NOYW1lOworICAg
ICAgICB3aW5kb3dBdG9tID0gOjpSZWdpc3RlckNsYXNzRXgoJndjZXgpOworICAgIH0KKworICAg
IGlmIChtX2h3bmQpCisgICAgICAgIGNsb3NlKCk7CisKKyAgICBIV05EIHBhcmVudEhXTkQgPSBt
X2NsaWVudCA/IG1fY2xpZW50LT5wYXJlbnRIV05EKCkgOiAwOworCisgICAgTU9OSVRPUklORk8g
bWkgPSB7MH07CisgICAgbWkuY2JTaXplID0gc2l6ZW9mKE1PTklUT1JJTkZPKTsKKyAgICBHZXRN
b25pdG9ySW5mbyhNb25pdG9yRnJvbVdpbmRvdyhwYXJlbnRIV05ELCBNT05JVE9SX0RFRkFVTFRU
T05FQVJFU1QpLCAmbWkpOworICAgIEludFJlY3QgbW9uaXRvclJlY3QgPSBtaS5yY01vbml0b3I7
CisgICAgCisgICAgOjpDcmVhdGVXaW5kb3dFeFcoMCwgd2luZG93Q2xhc3NOYW1lLCBMIiIsIFdT
X1BPUFVQIHwgV1NfVklTSUJMRSwgCisgICAgICAgIG1vbml0b3JSZWN0LngoKSwgbW9uaXRvclJl
Y3QueSgpLCBtb25pdG9yUmVjdC53aWR0aCgpLCBtb25pdG9yUmVjdC5oZWlnaHQoKSwKKyAgICAg
ICAgcGFyZW50SFdORCwgMCwgV2ViQ29yZTo6aW5zdGFuY2VIYW5kbGUoKSwgdGhpcyk7CisgICAg
QVNTRVJUKElzV2luZG93KG1faHduZCkpOworCisgICAgOjpTZXRGb2N1cyhtX2h3bmQpOworfQor
Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OmNsb3NlKCkKK3sKKyAg
ICA6OkRlc3Ryb3lXaW5kb3cobV9od25kKTsKKyAgICBtX2h3bmQgPSAwOworfQorCitIV05EIE1l
ZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6Omh3bmQoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2h3bmQ7Cit9CisKK1dLQ0FDRkxheWVyUmVuZGVyZXIqIE1lZGlhUGxheWVyUHJpdmF0
ZUZ1bGxzY3JlZW5XaW5kb3c6OmxheWVyUmVuZGVyZXIoKSBjb25zdAoreworICAgIHJldHVybiBt
X2xheWVyUmVuZGVyZXIuZ2V0KCk7Cit9CisKK1dLQ0FDRkxheWVyKiBNZWRpYVBsYXllclByaXZh
dGVGdWxsc2NyZWVuV2luZG93Ojpyb290Q2hpbGRMYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fcm9vdENoaWxkLmdldCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3Jl
ZW5XaW5kb3c6OnNldFJvb3RDaGlsZExheWVyKFBhc3NSZWZQdHI8V0tDQUNGTGF5ZXI+IHJvb3RD
aGlsZCkKK3sKKyAgICBpZiAobV9yb290Q2hpbGQgIT0gcm9vdENoaWxkKSB7CisgICAgICAgIGlm
IChtX3Jvb3RDaGlsZCkKKyAgICAgICAgICAgIG1fcm9vdENoaWxkLT5yZW1vdmVGcm9tU3VwZXJs
YXllcigpOworCisgICAgICAgIG1fcm9vdENoaWxkID0gcm9vdENoaWxkOworICAgIH0KKworICAg
IGlmIChtX3Jvb3RDaGlsZCkgeworICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNldFJvb3RDaGls
ZExheWVyKG1fcm9vdENoaWxkLmdldCgpKTsKKyAgICAgICAgV0tDQUNGTGF5ZXIqIHJvb3RMYXll
ciA9IG1fcm9vdENoaWxkLT5yb290TGF5ZXIoKTsKKyAgICAgICAgQ0dSZWN0IHJvb3RCb3VuZHMg
PSBtX3Jvb3RDaGlsZC0+cm9vdExheWVyKCktPmJvdW5kcygpOworICAgICAgICBtX3Jvb3RDaGls
ZC0+c2V0RnJhbWUocm9vdEJvdW5kcyk7CisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0U2Ny
b2xsRnJhbWUoSW50UG9pbnQocm9vdEJvdW5kcy5vcmlnaW4pLCBJbnRTaXplKHJvb3RCb3VuZHMu
c2l6ZSkpOworICAgICAgICBtX3Jvb3RDaGlsZC0+c2V0QmFja2dyb3VuZENvbG9yKENHQ29sb3JH
ZXRDb25zdGFudENvbG9yKGtDR0NvbG9yQmxhY2spKTsKKyNpZiBOREVCVUcKKyAgICAgICAgcm9v
dExheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ0dDb2xvckdldENvbnN0YW50Q29sb3Ioa0NHQ29s
b3JCbGFjaykpOworI2Vsc2UKKyAgICAgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IHJlZENvbG9y
KEFkb3B0Q0YsIENHQ29sb3JDcmVhdGVHZW5lcmljUkdCKDEsIDAsIDAsIDEpKTsKKyAgICAgICAg
cm9vdExheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IocmVkQ29sb3IuZ2V0KCkpOworI2VuZGlmCisg
ICAgfQorfQorCitMUkVTVUxUIENBTExCQUNLIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5X
aW5kb3c6OnN0YXRpY1duZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFy
YW0sIExQQVJBTSBsUGFyYW0pCit7CisgICAgTE9OR19QVFIgbG9uZ1B0ciA9IEdldFdpbmRvd0xv
bmdQdHIoaFduZCwgR1dMUF9VU0VSREFUQSk7CisKKyAgICBpZiAoIWxvbmdQdHIgJiYgbWVzc2Fn
ZSA9PSBXTV9DUkVBVEUpIHsKKyAgICAgICAgTFBDUkVBVEVTVFJVQ1QgbHBjcyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8TFBDUkVBVEVTVFJVQ1Q+KGxQYXJhbSk7CisgICAgICAgIGxvbmdQdHIgPSByZWlu
dGVycHJldF9jYXN0PExPTkdfUFRSPihscGNzLT5scENyZWF0ZVBhcmFtcyk7CisgICAgICAgIDo6
U2V0V2luZG93TG9uZ1B0cihoV25kLCBHV0xQX1VTRVJEQVRBLCBsb25nUHRyKTsKKyAgICB9CisK
KyAgICBpZiAoTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdyogd2luZG93ID0gcmVp
bnRlcnByZXRfY2FzdDxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93Kj4obG9uZ1B0
cikpCisgICAgICAgIHJldHVybiB3aW5kb3ctPnduZFByb2MoaFduZCwgbWVzc2FnZSwgd1BhcmFt
LCBsUGFyYW0pOworCisgICAgcmV0dXJuIDo6RGVmV2luZG93UHJvYyhoV25kLCBtZXNzYWdlLCB3
UGFyYW0sIGxQYXJhbSk7ICAgIAorfQorCitMUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxz
Y3JlZW5XaW5kb3c6OnduZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFy
YW0sIExQQVJBTSBsUGFyYW0pCit7CisgICAgTFJFU1VMVCBsUmVzdWx0ID0gMDsKKyAgICBzd2l0
Y2ggKG1lc3NhZ2UpIHsKKyAgICBjYXNlIFdNX0NSRUFURToKKyAgICAgICAgbV9od25kID0gaFdu
ZDsKKyAgICAgICAgbV9sYXllclJlbmRlcmVyLT5zZXRIb3N0V2luZG93KG1faHduZCk7CisgICAg
ICAgIG1fbGF5ZXJSZW5kZXJlci0+Y3JlYXRlUmVuZGVyZXIoKTsKKyAgICAgICAgbV9sYXllclJl
bmRlcmVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXTV9E
RVNUUk9ZOgorICAgICAgICBtX2h3bmQgPSAwOworICAgICAgICBtX2xheWVyUmVuZGVyZXItPmRl
c3Ryb3lSZW5kZXJlcigpOworICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNldEhvc3RXaW5kb3co
MCk7CisgICAgY2FzZSBXTV9XSU5ET1dQT1NDSEFOR0VEOgorICAgICAgICB7CisgICAgICAgICAg
ICBMUFdJTkRPV1BPUyB3cCA9IHJlaW50ZXJwcmV0X2Nhc3Q8TFBXSU5ET1dQT1M+KGxQYXJhbSk7
CisgICAgICAgICAgICBpZiAod3AtPmZsYWdzICYgU1dQX05PU0laRSkKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+cmVzaXplKCk7CisgICAgICAg
ICAgICBXS0NBQ0ZMYXllciogcm9vdExheWVyID0gbV9yb290Q2hpbGQtPnJvb3RMYXllcigpOwor
ICAgICAgICAgICAgQ0dSZWN0IHJvb3RCb3VuZHMgPSBtX3Jvb3RDaGlsZC0+cm9vdExheWVyKCkt
PmJvdW5kcygpOworICAgICAgICAgICAgbV9yb290Q2hpbGQtPnNldEZyYW1lKHJvb3RCb3VuZHMp
OworICAgICAgICAgICAgbV9yb290Q2hpbGQtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgICAgICAg
ICBtX2xheWVyUmVuZGVyZXItPnNldFNjcm9sbEZyYW1lKEludFBvaW50KHJvb3RCb3VuZHMub3Jp
Z2luKSwgSW50U2l6ZShyb290Qm91bmRzLnNpemUpKTsKKyAgICAgICAgfQorICAgICAgICBicmVh
azsKKyAgICBjYXNlIFdNX1BBSU5UOgorICAgICAgICBtX2xheWVyUmVuZGVyZXItPnJlbmRlclNv
b24oKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKG1fY2xpZW50KQorICAgICAg
ICBsUmVzdWx0ID0gbV9jbGllbnQtPmZ1bGxzY3JlZW5DbGllbnRXbmRQcm9jKGhXbmQsIG1lc3Nh
Z2UsIHdQYXJhbSwgbFBhcmFtKTsKKworICAgIHJldHVybiBsUmVzdWx0OworfQorCit9CkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2Ny
ZWVuV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oCShyZXZpc2lvbiAwKQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldp
bmRvdy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
IAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIAorICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgk0FTIElTlCAKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiAKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiAKKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIAor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiAKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3dfaAorI2RlZmlu
ZSBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93X2gKKworI2luY2x1ZGUgIldLQ0FD
RkxheWVyLmgiCisjaW5jbHVkZSAiV0tDQUNGTGF5ZXJSZW5kZXJlci5oIgorI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KKwordHlwZWRlZiB1bnNpZ25lZCBXUEFSQU07Cit0eXBlZGVmIGxvbmcgTFBB
UkFNOwordHlwZWRlZiBzdHJ1Y3QgSFdORF9fKiBIV05EOwordHlwZWRlZiBfVzY0IGxvbmcgTE9O
R19QVFI7Cit0eXBlZGVmIExPTkdfUFRSIExSRVNVTFQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCBMUkVTVUxUIGZ1bGxzY3JlZW5DbGllbnRXbmRQcm9jKEhXTkQsIFVJTlQgbWVz
c2FnZSwgV1BBUkFNLCBMUEFSQU0pID0gMDsKKyAgICB2aXJ0dWFsIEhXTkQgcGFyZW50SFdORCgp
ID0gMDsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5NZWRpYVBsYXllclByaXZhdGVGdWxsc2Ny
ZWVuQ2xpZW50KCkge30gCit9OworCitjbGFzcyBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVu
V2luZG93IHsKK3B1YmxpYzoKKyAgICBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93
KE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5DbGllbnQqKTsKKyAgICB2aXJ0dWFsIH5NZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93KCk7CisKKyAgICB2b2lkIGNyZWF0ZVdpbmRv
dygpOworICAgIHZvaWQgY2xvc2UoKTsKKyAgICAKKyAgICBIV05EIGh3bmQoKSBjb25zdDsKKwor
ICAgIFdLQ0FDRkxheWVyUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIoKSBjb25zdDsKKworICAgIFdL
Q0FDRkxheWVyKiByb290Q2hpbGRMYXllcigpIGNvbnN0OworICAgIHZvaWQgc2V0Um9vdENoaWxk
TGF5ZXIoUGFzc1JlZlB0cjxXS0NBQ0ZMYXllcj4pOworCitwcm90ZWN0ZWQ6CisgICAgc3RhdGlj
IExSRVNVTFQgQ0FMTEJBQ0sgc3RhdGljV25kUHJvYyhIV05ELCBVSU5UIG1lc3NhZ2UsIFdQQVJB
TSwgTFBBUkFNKTsKKyAgICBMUkVTVUxUIHduZFByb2MoSFdORCwgVUlOVCBtZXNzYWdlLCBXUEFS
QU0sIExQQVJBTSk7CisKKyAgICBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50KiBt
X2NsaWVudDsKKyAgICBPd25QdHI8V0tDQUNGTGF5ZXJSZW5kZXJlcj4gbV9sYXllclJlbmRlcmVy
OworICAgIFJlZlB0cjxXS0NBQ0ZMYXllcj4gbV9yb290Q2hpbGQ7CisgICAgSFdORCBtX2h3bmQ7
Cit9OworCit9CisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
TWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tU
aW1lVmlzdWFsQ29udGV4dC5jcHAJKHJldmlzaW9uIDYwMDQ4KQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJRVE1vdmllVGFz
ay5oIgogI2luY2x1ZGUgIlFUTW92aWVWaXN1YWxDb250ZXh0LmgiCiAjaW5jbHVkZSAiU2Nyb2xs
Vmlldy5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU29mdExpbmtpbmcuaCIK
ICNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgpAQCAt
MTUwLDcgKzE1MSwxNCBAQCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0
CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6c3VwcG9y
dHNGdWxsc2NyZWVuKCkgY29uc3QKIHsKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9wbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCkt
Pm1lZGlhUGxheWVyT3duaW5nRG9jdW1lbnQoKTsgCisgICAgaWYgKGRvY3VtZW50KQorICAgICAg
ICByZXR1cm4gZG9jdW1lbnQtPnNldHRpbmdzKCktPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFi
bGVkKCk7CisgICAgcmV0dXJuIHRydWU7CisjZWxzZQogICAgIHJldHVybiBmYWxzZTsKKyNlbmRp
ZgogfQogCiBQbGF0Zm9ybU1lZGlhIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENv
bnRleHQ6OnBsYXRmb3JtTWVkaWEoKSBjb25zdApAQCAtNzU2LDE2ICs3NjQsMTYgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDbwogCiAgICAgICAgIFdLQ0FDRkxheWVy
KiBsYXllciA9IHN0YXRpY19jYXN0PFdLQ0FDRkxheWVyKj4obV9xdFZpZGVvTGF5ZXItPnBsYXRm
b3JtTGF5ZXIoKSk7CiAKLSAgICAgICAgICAgIGlmICghYnVmZmVyLmxvY2tCYXNlQWRkcmVzcygp
KSB7Ci0gICAgICAgICAgICAgICBDRlRpbWVJbnRlcnZhbCBpbWFnZVRpbWUgPSBRVE1vdmllVmlz
dWFsQ29udGV4dDo6Y3VycmVudEhvc3RUaW1lKCk7CisgICAgICAgIGlmICghYnVmZmVyLmxvY2tC
YXNlQWRkcmVzcygpKSB7CisgICAgICAgICAgIENGVGltZUludGVydmFsIGltYWdlVGltZSA9IFFU
TW92aWVWaXN1YWxDb250ZXh0OjpjdXJyZW50SG9zdFRpbWUoKTsKIAotICAgICAgICAgICAgICAg
IENHSW1hZ2VSZWYgaW1hZ2UgPSBDcmVhdGVDR0ltYWdlRnJvbVBpeGVsQnVmZmVyKGJ1ZmZlcik7
Ci0gICAgICAgICAgICAgICAgbGF5ZXItPnNldENvbnRlbnRzKGltYWdlKTsKLSAgICAgICAgICAg
ICAgICBDR0ltYWdlUmVsZWFzZShpbWFnZSk7CisgICAgICAgICAgICBDR0ltYWdlUmVmIGltYWdl
ID0gQ3JlYXRlQ0dJbWFnZUZyb21QaXhlbEJ1ZmZlcihidWZmZXIpOworICAgICAgICAgICAgbGF5
ZXItPnNldENvbnRlbnRzKGltYWdlKTsKKyAgICAgICAgICAgIENHSW1hZ2VSZWxlYXNlKGltYWdl
KTsKIAotICAgICAgICAgICAgICAgIGJ1ZmZlci51bmxvY2tCYXNlQWRkcmVzcygpOwotICAgICAg
ICAgICAgICAgIGxheWVyLT5yb290TGF5ZXIoKS0+c2V0TmVlZHNSZW5kZXIoKTsKLSAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJ1ZmZlci51bmxvY2tCYXNlQWRkcmVzcygpOworICAgICAgICAg
ICAgbGF5ZXItPnJvb3RMYXllcigpLT5zZXROZWVkc1JlbmRlcigpOworICAgICAgICB9CiAgICAg
fSBlbHNlCiAjZW5kaWYKICAgICAgICAgbV9wbGF5ZXItPnJlcGFpbnQoKTsKQEAgLTkzOSw2ICs5
NDcsMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDbwogI2VuZGlm
CiAgICAgLy8gVGhlIGxheWVyIHdpbGwgZ2V0IGhvb2tlZCB1cCB2aWEgUmVuZGVyTGF5ZXJCYWNr
aW5nOjp1cGRhdGVHcmFwaGljc0xheWVyQ29uZmlndXJhdGlvbigpLgogI2VuZGlmCisKKyAgICAv
LyBmaWxsIHRoZSBuZXdseSBjcmVhdGVkIGxheWVyIHdpdGggaW1hZ2UgZGF0YSwgc28gd2UncmUg
bm90IGxvb2tpbmcgYXQgCisgICAgLy8gYW4gZW1wdHkgbGF5ZXIgdW50aWwgdGhlIG5leHQgdGlt
ZSBhIG5ldyBpbWFnZSBpcyBhdmFpbGFibGUsIHdoaWNoIGNvdWxkCisgICAgLy8gYmUgYSBsb25n
IHRpbWUgaWYgd2UncmUgcGF1c2VkLgorICAgIGlmIChtX3Zpc3VhbENvbnRleHQpCisgICAgICAg
IHJldHJpZXZlQ3VycmVudEltYWdlKCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXVp
Y2tUaW1lVmlzdWFsQ29udGV4dDo6ZGVzdHJveUxheWVyRm9yTW92aWUoKQpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNGTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyLmNwcAkocmV2aXNpb24gNjAw
NDgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE1NCw2ICsxNTQsNyBAQCBQYXNzUmVmUHRyPFdLQ0FDRkxheWVyPiBX
S0NBQ0ZMYXllcjo6Y3JlCiAKIFdLQ0FDRkxheWVyOjpXS0NBQ0ZMYXllcihMYXllclR5cGUgdHlw
ZSkKICAgICA6IG1fbGF5ZXIoQWRvcHRDRiwgQ0FDRkxheWVyQ3JlYXRlKHRvQ0FDRkxheWVyVHlw
ZSh0eXBlKSkpCisgICAgLCBtX2xheW91dENsaWVudCgwKQogICAgICwgbV9uZWVkc0Rpc3BsYXlP
bkJvdW5kc0NoYW5nZShmYWxzZSkKIHsKICAgICBDQUNGTGF5ZXJTZXRVc2VyRGF0YShsYXllcigp
LCB0aGlzKTsKQEAgLTI4NiwxMSArMjg3LDEwIEBAIHZvaWQgIFdLQ0FDRkxheWVyOjphZG9wdFN1
YmxheWVycyhXS0NBQ0YKIHZvaWQgV0tDQUNGTGF5ZXI6OnJlbW92ZUZyb21TdXBlcmxheWVyKCkK
IHsKICAgICBXS0NBQ0ZMYXllciogc3VwZXJsYXllciA9IHRoaXMtPnN1cGVybGF5ZXIoKTsKLSAg
ICBpZiAoIXN1cGVybGF5ZXIpCi0gICAgICAgIHJldHVybjsKLQogICAgIENBQ0ZMYXllclJlbW92
ZUZyb21TdXBlcmxheWVyKGxheWVyKCkpOwotICAgIHN1cGVybGF5ZXItPnNldE5lZWRzQ29tbWl0
KCk7CisKKyAgICBpZiAoc3VwZXJsYXllcikKKyAgICAgICAgc3VwZXJsYXllci0+c2V0TmVlZHND
b21taXQoKTsKIH0KIAogV0tDQUNGTGF5ZXIqIFdLQ0FDRkxheWVyOjppbnRlcm5hbFN1YmxheWVy
QXRJbmRleChpbnQgaW5kZXgpIGNvbnN0CkBAIC0zNDMsNiArMzQzLDE5IEBAIHZvaWQgV0tDQUNG
TGF5ZXI6OnNldEJvdW5kcyhjb25zdCBDR1JlY3QKICAgICAgICAgc2V0TmVlZHNEaXNwbGF5KCk7
CiB9CiAKK3ZvaWQgV0tDQUNGTGF5ZXI6OnNldEZyYW1lKGNvbnN0IENHUmVjdCYgcmVjdCkKK3sK
KyAgICBDR1JlY3Qgb2xkRnJhbWUgPSBmcmFtZSgpOworICAgIGlmIChDR1JlY3RFcXVhbFRvUmVj
dChyZWN0LCBvbGRGcmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAgIENBQ0ZMYXllclNldEZy
YW1lKGxheWVyKCksIHJlY3QpOworICAgIHNldE5lZWRzQ29tbWl0KCk7CisKKyAgICBpZiAobV9u
ZWVkc0Rpc3BsYXlPbkJvdW5kc0NoYW5nZSkKKyAgICAgICAgc2V0TmVlZHNEaXNwbGF5KCk7Cit9
CisKIHZvaWQgV0tDQUNGTGF5ZXI6OnNldENvbnRlbnRzR3Jhdml0eShDb250ZW50c0dyYXZpdHlU
eXBlIHR5cGUpCiB7CiAgICAgQ0FDRkxheWVyU2V0Q29udGVudHNHcmF2aXR5KGxheWVyKCksIHRv
Q0FDRkNvbnRlbnRzR3Jhdml0eVR5cGUodHlwZSkpOwpAQCAtNDE4LDYgKzQzMSwzMiBAQCB2b2lk
IFdLQ0FDRkxheWVyOjppbnRlcm5hbFNldE5lZWRzRGlzcGxhCiAgICAgQ0FDRkxheWVyU2V0TmVl
ZHNEaXNwbGF5KGxheWVyKCksIGRpcnR5UmVjdCk7CiB9CiAKK3ZvaWQgV0tDQUNGTGF5ZXI6OnNl
dExheW91dENsaWVudChXS0NBQ0ZMYXllckxheW91dENsaWVudCogbGF5b3V0Q2xpZW50KQorewor
ICAgIGlmIChsYXlvdXRDbGllbnQgPT0gbV9sYXlvdXRDbGllbnQpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fbGF5b3V0Q2xpZW50ID0gbGF5b3V0Q2xpZW50OworICAgIENBQ0ZMYXllclNldExh
eW91dENhbGxiYWNrKGxheWVyKCksIG1fbGF5b3V0Q2xpZW50ID8gJmxheW91dFN1YmxheWVyc1By
b2MgOiAwKTsgICAgCit9CisKK3ZvaWQgV0tDQUNGTGF5ZXI6OmxheW91dFN1YmxheWVyc1Byb2Mo
Q0FDRkxheWVyUmVmIGNhTGF5ZXIpIAoreworICAgIFdLQ0FDRkxheWVyKiBsYXllciA9IFdLQ0FD
RkxheWVyOjpsYXllcihjYUxheWVyKTsKKyAgICBpZiAobGF5ZXIgJiYgbGF5ZXItPm1fbGF5b3V0
Q2xpZW50KQorICAgICAgICBsYXllci0+bV9sYXlvdXRDbGllbnQtPmxheW91dFN1YmxheWVyc09m
TGF5ZXIobGF5ZXIpOworfQorCitXS0NBQ0ZMYXllckxheW91dENsaWVudCogV0tDQUNGTGF5ZXI6
OmxheW91dENsaWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGF5b3V0Q2xpZW50OworfQor
Cit2b2lkIFdLQ0FDRkxheWVyOjpzZXROZWVkc0xheW91dCgpCit7CisgICAgQ0FDRkxheWVyU2V0
TmVlZHNMYXlvdXQobGF5ZXIoKSk7Cit9CisKICNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgdm9pZCBw
cmludEluZGVudChpbnQgaW5kZW50KQogewpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vV0tDQUNGTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9XS0NBQ0ZMYXllci5oCShyZXZpc2lvbiA2MDA0OCkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDggKzQ0
LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0tDQUNGQW5pbWF0aW9uOwot
Y2xhc3MgV0tDQUNGVGltaW5nRnVuY3Rpb247CitjbGFzcyBXS0NBQ0ZMYXllcjsKKworY2xhc3Mg
V0tDQUNGTGF5ZXJMYXlvdXRDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXRTdWJsYXllcnNPZkxheWVyKFdLQ0FDRkxheWVyKikgPSAwOworfTsKIAogY2xhc3MgV0tDQUNG
TGF5ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXS0NBQ0ZMYXllcj4gewogcHVibGljOgpAQCAtNjMs
NiArNjcsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdJbkNvbnRleHQoUGxh
dGZvcm1HcmFwaGljc0NvbnRleHQqKSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBzZXRMYXlvdXRD
bGllbnQoV0tDQUNGTGF5ZXJMYXlvdXRDbGllbnQqKTsKKyAgICB2aXJ0dWFsIFdLQ0FDRkxheWVy
TGF5b3V0Q2xpZW50KiBsYXlvdXRDbGllbnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
TmVlZHNMYXlvdXQoKTsKKwogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KGNvbnN0IENHUmVjdCog
ZGlydHlSZWN0ID0gMCkKICAgICB7CiAgICAgICAgIGludGVybmFsU2V0TmVlZHNEaXNwbGF5KGRp
cnR5UmVjdCk7CkBAIC0xNzMsNiArMTgxLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RmlsdGVy
cyhDRkFycmF5UmVmIGZpbHRlcnMpIHsgQ0FDRkxheWVyU2V0RmlsdGVycyhsYXllcigpLCBmaWx0
ZXJzKTsgc2V0TmVlZHNDb21taXQoKTsgfQogICAgIENGQXJyYXlSZWYgZmlsdGVycygpIGNvbnN0
IHsgcmV0dXJuIENBQ0ZMYXllckdldEZpbHRlcnMobGF5ZXIoKSk7IH0KIAorICAgIHZpcnR1YWwg
dm9pZCBzZXRGcmFtZShjb25zdCBDR1JlY3QmKTsKKyAgICBDR1JlY3QgZnJhbWUoKSBjb25zdCB7
IHJldHVybiBDQUNGTGF5ZXJHZXRGcmFtZShsYXllcigpKTsgfQorCiAgICAgdm9pZCBzZXRIaWRk
ZW4oYm9vbCBoaWRkZW4pIHsgQ0FDRkxheWVyU2V0SGlkZGVuKGxheWVyKCksIGhpZGRlbik7IHNl
dE5lZWRzQ29tbWl0KCk7IH0KICAgICBib29sIGlzSGlkZGVuKCkgY29uc3QgeyByZXR1cm4gQ0FD
RkxheWVySXNIaWRkZW4obGF5ZXIoKSk7IH0KIApAQCAtMjYwLDggKzI3MSwxMSBAQCBwcm90ZWN0
ZWQ6CiAgICAgdm9pZCBwcmludExheWVyKGludCBpbmRlbnQpIGNvbnN0OwogI2VuZGlmCiAKKyAg
ICBzdGF0aWMgdm9pZCBsYXlvdXRTdWJsYXllcnNQcm9jKENBQ0ZMYXllclJlZik7CisKIHByaXZh
dGU6CiAgICAgUmV0YWluUHRyPENBQ0ZMYXllclJlZj4gbV9sYXllcjsKKyAgICBXS0NBQ0ZMYXll
ckxheW91dENsaWVudCogbV9sYXlvdXRDbGllbnQ7CiAgICAgYm9vbCBtX25lZWRzRGlzcGxheU9u
Qm91bmRzQ2hhbmdlOwogfTsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
V2ViVGlsZWRMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vV2ViVGlsZWRMYXllci5jcHAJKHJldmlzaW9uIDYwMDQ4KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vV2ViVGlsZWRMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcz
LDYgKzczLDE1IEBAIHZvaWQgV2ViVGlsZWRMYXllcjo6c2V0Qm91bmRzKGNvbnN0IENHUmUKICAg
ICB1cGRhdGVUaWxlcygpOwogfQogCit2b2lkIFdlYlRpbGVkTGF5ZXI6OnNldEZyYW1lKGNvbnN0
IENHUmVjdCYgcmVjdCkKK3sKKyAgICBpZiAoQ0dSZWN0RXF1YWxUb1JlY3QocmVjdCwgZnJhbWUo
KSkpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYkxheWVyOjpzZXRGcmFtZShyZWN0KTsKKyAg
ICB1cGRhdGVUaWxlcygpOworfQorCiB2b2lkIFdlYlRpbGVkTGF5ZXI6OmludGVybmFsU2V0TmVl
ZHNEaXNwbGF5KGNvbnN0IENHUmVjdCogZGlydHlSZWN0KQogewogICAgIC8vIEZJWE1FOiBPbmx5
IHNldE5lZWRzRGlzcGxheSBmb3IgdGlsZXMgdGhhdCBhcmUgY3VycmVudGx5IHZpc2libGUKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dlYlRpbGVkTGF5ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XZWJUaWxlZExheWVyLmgJKHJl
dmlzaW9uIDYwMDQ4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV2ViVGlsZWRM
YXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5XZWJUaWxlZExheWVyKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Qm91bmRzKGNvbnN0
IENHUmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFtZShjb25zdCBDR1JlY3QmKTsKIAog
cHJvdGVjdGVkOgogICAgIFdlYlRpbGVkTGF5ZXIoY29uc3QgQ0dTaXplJiB0aWxlU2l6ZSwgR3Jh
cGhpY3NMYXllciogb3duZXIpOwpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDYwMDI3KQorKysgV2ViS2l0L3dp
bi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0wNS0yMiAg
SmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGdWxsIHNjcmVlbiBkb2Vzbid0IHdvcmsgZm9yIHZp
ZGVvIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zOTU1NworICAgICAgICByZGFyOi8vcHJvYmxlbS84MDExODEzCisgICAgICAgIAorICAg
ICAgICBNb2RpZmllZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyIHRvIHdvcmsgd2l0aCBNZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LiAgVGhlIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIKKyAgICAgICAgaXMgbm93IE1lZGlhUGxheWVyUHJpdmF0ZSBhZ25vc3RpYy4gIFRoZSBu
ZXcgZnVsbHNjcmVlbiB3aW5kb3cgaXMgbm90IGEgdG9wbW9zdCB3aW5kb3csIGFuZCBzbyB0aGUg
YmVoYXZpb3IgaGFzCisgICAgICAgIGJlZW4gY2hhbmdlZCB0byBleGl0IGZ1bGxzY3JlZW4gbW9k
ZSB3aGVuIHRoZSBhcHBsaWNhdGlvbiBiZWNvbWVzIGluYWN0aXZlLgorCisgICAgICAgICogRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHA6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyOjpMYXlvdXRDbGllbnQ6OkxheW91dENsaWVudCk6ICAKKyAgICAgICAgKEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OkxheW91dENsaWVudDo6bGF5b3V0U3VibGF5ZXJzT2ZMYXllcik6
CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6On5GdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVu
dGVyRnVsbHNjcmVlbik6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpleGl0
RnVsbHNjcmVlbik6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjcmVhdGVI
VURXaW5kb3cpOgorICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaDoKKwogMjAx
MC0wNS0yMSAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpJbmRleDogV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2MDAyNykKKysrIFdlYktpdC93aW4vRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEyICszMCwxNiBAQAog
I2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaCIKIAogI2luY2x1ZGUgIldlYktp
dERMTC5oIgorI2luY2x1ZGUgIldlYlZpZXcuaCIKICNpbmNsdWRlIDxBcHBsaWNhdGlvblNlcnZp
Y2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0JpdG1hcEluZm8u
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udFNlbGVjdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9H
cmFwaGljc0NvbnRleHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1RleHRSdW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dLQ0FDRkxheWVyLmg+CiAjaW5j
bHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2lu
Y2x1ZGUgPHdpbmRvd3N4Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMTY5
LDkgKzE3Myw1MyBAQCB2b2lkIEhVRFNsaWRlcjo6ZHJhZyhjb25zdCBJbnRQb2ludCYgcG9pCiAg
ICAgbV9idXR0b25Qb3NpdGlvbiA9IG1heCgwLCBtaW4obV9yZWN0LndpZHRoKCkgLSBtX2J1dHRv
blNpemUsIHBvaW50LngoKSAtIG1fZHJhZ1N0YXJ0T2Zmc2V0KSk7CiB9CiAKK2NsYXNzIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheW91dENsaWVudCA6IHB1YmxpYyBXS0NBQ0ZMYXllckxh
eW91dENsaWVudCB7CitwdWJsaWM6CisgICAgTGF5b3V0Q2xpZW50KEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXIqIHBhcmVudCk7CisgICAgdm9pZCBsYXlvdXRTdWJsYXllcnNPZkxheWVyKFdLQ0FD
RkxheWVyKiBsYXllcik7CisKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBtX3BhcmVu
dDsKK307CisKK0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheW91dENsaWVudDo6TGF5b3V0
Q2xpZW50KEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIHBhcmVudCkKKyAgICA6IG1fcGFyZW50
KHBhcmVudCkKK3sKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpMYXlvdXRD
bGllbnQ6OmxheW91dFN1YmxheWVyc09mTGF5ZXIoV0tDQUNGTGF5ZXIqIGxheWVyKSAKK3sKKyAg
ICBpZiAobGF5ZXIgIT0gbV9wYXJlbnQtPm1fcm9vdENoaWxkKSAKKyAgICAgICAgcmV0dXJuOwor
CisgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gbV9wYXJlbnQtPm1fbWVkaWFF
bGVtZW50LmdldCgpOworICAgIGlmICghbWVkaWFFbGVtZW50KQorICAgICAgICByZXR1cm47CisK
KyAgICBXS0NBQ0ZMYXllciogdmlkZW9MYXllciA9IG1lZGlhRWxlbWVudC0+cGxhdGZvcm1MYXll
cigpOworICAgIGlmICghdmlkZW9MYXllciB8fCB2aWRlb0xheWVyLT5zdXBlcmxheWVyKCkgIT0g
bGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIEZsb2F0UG9pbnQgdmlkZW9BbmNob3IgPSB2
aWRlb0xheWVyLT5hbmNob3JQb2ludCgpOworICAgIEZsb2F0UmVjdCBsYXllckJvdW5kcyA9IGxh
eWVyLT5ib3VuZHMoKTsKKworICAgIEZsb2F0U2l6ZSB2aWRlb1NpemUgPSBtZWRpYUVsZW1lbnQt
PnBsYXllcigpLT5uYXR1cmFsU2l6ZSgpOworICAgIGZsb2F0IHNjYWxlRmFjdG9yOworICAgIGlm
ICh2aWRlb1NpemUuYXNwZWN0UmF0aW8oKSA+IGxheWVyQm91bmRzLnNpemUoKS5hc3BlY3RSYXRp
bygpKQorICAgICAgICBzY2FsZUZhY3RvciA9IGxheWVyQm91bmRzLndpZHRoKCkgLyB2aWRlb1Np
emUud2lkdGgoKTsKKyAgICBlbHNlCisgICAgICAgIHNjYWxlRmFjdG9yID0gbGF5ZXJCb3VuZHMu
aGVpZ2h0KCkgLyB2aWRlb1NpemUuaGVpZ2h0KCk7CisgICAgdmlkZW9TaXplLnNjYWxlKHNjYWxl
RmFjdG9yKTsKKworICAgIC8vIENhbGN1bGF0ZSB0aGUgY2VudGVyZWQgcG9zaXRpb24gYmFzZWQg
b24gdGhlIHZpZGVvQW5jaG9yLCB2aWRlb0JvdW5kcywgYW5kIGxheWVyQm91bmRzOgorICAgIEZs
b2F0UG9pbnQgdmlkZW9Qb3NpdGlvbjsKKyAgICBGbG9hdFBvaW50IHZpZGVvT3JpZ2luOworICAg
IHZpZGVvT3JpZ2luLnNldFgoKGxheWVyQm91bmRzLndpZHRoKCkgLSB2aWRlb1NpemUud2lkdGgo
KSkgKiAwLjUpOworICAgIHZpZGVvT3JpZ2luLnNldFkoKGxheWVyQm91bmRzLmhlaWdodCgpIC0g
dmlkZW9TaXplLmhlaWdodCgpKSAqIDAuNSk7CisgICAgdmlkZW9MYXllci0+c2V0RnJhbWUoRmxv
YXRSZWN0KHZpZGVvT3JpZ2luLCB2aWRlb1NpemUpKTsKK30KKwogRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcjo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcigpCiAgICAgOiBtX2h1ZFdpbmRvdygw
KQotICAgICwgbV92aWRlb1dpbmRvdygwKQogICAgICwgbV9wbGF5UGF1c2VCdXR0b24oSFVEQnV0
dG9uOjpQbGF5UGF1c2VCdXR0b24sIEludFBvaW50KCh3aW5kb3dXaWR0aCAtIGJ1dHRvblNpemUp
IC8gMiwgbWFyZ2luVG9wKSkKICAgICAsIG1fdGltZVNsaWRlckJ1dHRvbihIVURCdXR0b246OlRp
bWVTbGlkZXJCdXR0b24sIEludFBvaW50KDAsIDApKQogICAgICwgbV92b2x1bWVVcEJ1dHRvbihI
VURCdXR0b246OlZvbHVtZVVwQnV0dG9uLCBJbnRQb2ludChtYXJnaW4gKyBidXR0b25NaW5pU2l6
ZSArIHZvbHVtZVNsaWRlcldpZHRoICsgYnV0dG9uTWluaVNpemUgLyAyLCBtYXJnaW5Ub3AgKyAo
YnV0dG9uU2l6ZSAtIGJ1dHRvbk1pbmlTaXplKSAvIDIpKQpAQCAtMTgzLDI1ICsyMzEsMjAgQEAg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6RnVsbHNjcmVlblZpZAogICAgICwgbV9oaXRXaWRn
ZXQoMCkKICAgICAsIG1fbW92aW5nV2luZG93KGZhbHNlKQogICAgICwgbV90aW1lcih0aGlzLCAm
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dGltZXJGaXJlZCkKKyAgICAsIG1fcm9vdENoaWxk
KFdLQ0FDRkxheWVyOjpjcmVhdGUoV0tDQUNGTGF5ZXI6OkxheWVyKSkKKyAgICAsIG1fbGF5b3V0
Q2xpZW50KG5ldyBMYXlvdXRDbGllbnQodGhpcykpCiB7CisgICAgbV9yb290Q2hpbGQtPnNldExh
eW91dENsaWVudChtX2xheW91dENsaWVudC5nZXQoKSk7CiB9CiAKIEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXI6On5GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCkKIHsKLSAgICBpZiAobW92aWUo
KSkKLSAgICAgICAgbW92aWUoKS0+ZXhpdEZ1bGxzY3JlZW4oKTsKLX0KLQotUVRNb3ZpZUdXb3Js
ZCogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6bW92aWUoKSBjb25zdAotewotICAgIGlmICgh
bV9tZWRpYUVsZW1lbnQpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgUGxhdGZvcm1NZWRpYSBw
bGF0Zm9ybU1lZGlhID0gbV9tZWRpYUVsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKTsKLSAgICBpZiAo
cGxhdGZvcm1NZWRpYS50eXBlICE9IFBsYXRmb3JtTWVkaWE6OlFUTW92aWVHV29ybGRUeXBlKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICBtX3Jvb3RDaGlsZC0+c2V0TGF5b3V0Q2xpZW50KDApOwog
Ci0gICAgcmV0dXJuIHBsYXRmb3JtTWVkaWEubWVkaWEucXRNb3ZpZUdXb3JsZDsKKyAgICBpZiAo
bV9mdWxsc2NyZWVuV2luZG93KSB7CisgICAgICAgIG1fZnVsbHNjcmVlbldpbmRvdy0+Y2xvc2Uo
KTsKKyAgICAgICAgbV9mdWxsc2NyZWVuV2luZG93ID0gMDsKKyAgICB9CiB9CiAKIHZvaWQgRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcjo6c2V0TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQq
IG1lZGlhRWxlbWVudCkKQEAgLTIxOCwxMyArMjYxLDE4IEBAIHZvaWQgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6c2V0TWVkaWEKIAogdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpl
bnRlckZ1bGxzY3JlZW4oKQogewotICAgIGlmICghbW92aWUoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgbV92aWRlb1dpbmRvdyA9IG1vdmllKCktPmVudGVyRnVsbHNjcmVlbih0aGlzKTsKKyAg
ICBpZiAoIW1fZnVsbHNjcmVlbldpbmRvdykgeworICAgICAgICBtX2Z1bGxzY3JlZW5XaW5kb3cg
PSBuZXcgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdyh0aGlzKTsKKyAgICAgICAg
bV9mdWxsc2NyZWVuV2luZG93LT5jcmVhdGVXaW5kb3coKTsKKyAgICAgICAgbV9mdWxsc2NyZWVu
V2luZG93LT5zZXRSb290Q2hpbGRMYXllcihtX3Jvb3RDaGlsZCk7CisgICAgfQogCisgICAgV0tD
QUNGTGF5ZXIqIHZpZGVvTGF5ZXIgPSBtX21lZGlhRWxlbWVudC0+cGxheWVyKCktPnBsYXRmb3Jt
TGF5ZXIoKTsKKyAgICBtX3Jvb3RDaGlsZC0+YWRkU3VibGF5ZXIodmlkZW9MYXllcik7CisgICAg
bV9yb290Q2hpbGQtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgCiAgICAgUkVDVCB3aW5kb3dSZWN0
OwotICAgIEdldENsaWVudFJlY3QobV92aWRlb1dpbmRvdywgJndpbmRvd1JlY3QpOworICAgIEdl
dENsaWVudFJlY3QobV9mdWxsc2NyZWVuV2luZG93LT5od25kKCksICZ3aW5kb3dSZWN0KTsKICAg
ICBtX2Z1bGxzY3JlZW5TaXplLnNldFdpZHRoKHdpbmRvd1JlY3QucmlnaHQgLSB3aW5kb3dSZWN0
LmxlZnQpOwogICAgIG1fZnVsbHNjcmVlblNpemUuc2V0SGVpZ2h0KHdpbmRvd1JlY3QuYm90dG9t
IC0gd2luZG93UmVjdC50b3ApOwogCkBAIC0yMzMsMTMgKzI4MSwyOCBAQCB2b2lkIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OmVudGVyRnVsCiAKIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcjo6ZXhpdEZ1bGxzY3JlZW4oKQogewotICAgIFNldFdpbmRvd0xvbmdQdHIobV9odWRXaW5k
b3csIDAsIDApOwotICAgIGlmIChtb3ZpZSgpKQotICAgICAgICBtb3ZpZSgpLT5leGl0RnVsbHNj
cmVlbigpOwotCi0gICAgQVNTRVJUKCFJc1dpbmRvdyhtX2h1ZFdpbmRvdykpOwotICAgIG1fdmlk
ZW9XaW5kb3cgPSAwOwotICAgIG1faHVkV2luZG93ID0gMDsKKyAgICBpZiAobV9mdWxsc2NyZWVu
V2luZG93KSB7CisgICAgICAgIG1fZnVsbHNjcmVlbldpbmRvdy0+Y2xvc2UoKTsKKyAgICAgICAg
bV9mdWxsc2NyZWVuV2luZG93LT5zZXRSb290Q2hpbGRMYXllcigwKTsKKyAgICAgICAgbV9mdWxs
c2NyZWVuV2luZG93ID0gMDsKKyAgICB9CisKKyAgICBpZiAobV9odWRXaW5kb3cpIHsKKyAgICAg
ICAgU2V0V2luZG93TG9uZ1B0cihtX2h1ZFdpbmRvdywgMCwgMCk7CisgICAgICAgIDo6RGVzdHJv
eVdpbmRvdyhtX2h1ZFdpbmRvdyk7CisgICAgICAgIG1faHVkV2luZG93ID0gMDsKKyAgICB9CisK
KyAgICAvLyBXZSBwcmV2aW91c2x5IHJpcHBlZCB0aGUgbWVkaWFFbGVtZW50J3MgcGxhdGZvcm0g
bGF5ZXIgb3V0CisgICAgLy8gb2YgaXQncyBvcmdpbmlhbCBsYXllciB0cmVlIHRvIGRpc3BsYXkg
aXQgaW4gb3VyIGZ1bGxzY3JlZW4KKyAgICAvLyB3aW5kb3cuICBOb3csIHdlIG5lZWQgdG8gZ2V0
IHRoZSBsYXllciBiYWNrIGluIGl0cyBvcmlnaW5hbAorICAgIC8vIHRyZWUuCisgICAgLy8gCisg
ICAgLy8gQXMgYSBzaWRlIGVmZmVjdCBvZiBzZXR0aW5nIHRoZSBwbGF5ZXIgdG8gaW52aXNpYmxl
L3Zpc2libGUsCisgICAgLy8gdGhlIHBsYXllcidzIGxheWVyIHdpbGwgYmUgcmVjcmVhdGVkLCBh
bmQgd2lsbCBiZSBwaWNrZWQgdXAgCisgICAgLy8gdGhlIG5leHQgdGltZSB0aGUgbGF5ZXIgdHJl
ZSBpcyBzeW5jaGVkLgorICAgIG1fbWVkaWFFbGVtZW50LT5wbGF5ZXIoKS0+c2V0VmlzaWJsZSgw
KTsKKyAgICBtX21lZGlhRWxlbWVudC0+cGxheWVyKCktPnNldFZpc2libGUoMSk7CiB9CiAKIGJv
b2wgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Y2FuUGxheSgpIGNvbnN0CkBAIC0zMDgsNiAr
MzcxLDkgQEAgTFJFU1VMVCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpmdWxscwogICAgIGNh
c2UgV01fQ0hBUjoKICAgICAgICAgb25DaGFyKHdQYXJhbSk7CiAgICAgICAgIGJyZWFrOworICAg
IGNhc2UgV01fS0VZRE9XTjoKKyAgICAgICAgb25LZXlEb3duKHdQYXJhbSk7CisgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgV01fTEJVVFRPTkRPV046CiAgICAgICAgIG9uTW91c2VEb3duKEludFBv
aW50KEdFVF9YX0xQQVJBTShsUGFyYW0pLCBHRVRfWV9MUEFSQU0obFBhcmFtKSkpOwogICAgICAg
ICBicmVhazsKQEAgLTMxNywxMSArMzgzLDI1IEBAIExSRVNVTFQgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcjo6ZnVsbHMKICAgICBjYXNlIFdNX0xCVVRUT05VUDoKICAgICAgICAgb25Nb3VzZVVw
KEludFBvaW50KEdFVF9YX0xQQVJBTShsUGFyYW0pLCBHRVRfWV9MUEFSQU0obFBhcmFtKSkpOwog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFdNX0FDVElWQVRFQVBQOgorICAgICAgICBpZiAoIXdQ
YXJhbSkKKyAgICAgICAgICAgIG1fbWVkaWFFbGVtZW50LT5leGl0RnVsbHNjcmVlbigpOworICAg
ICAgICBicmVhazsKICAgICB9CiAKICAgICByZXR1cm4gRGVmV2luZG93UHJvYyh3bmQsIG1lc3Nh
Z2UsIHdQYXJhbSwgbFBhcmFtKTsKIH0KIAorSFdORCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
OjpwYXJlbnRIV05EKCkKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQpIHsKKyAgICAgICAgV2Vi
Vmlldyogd2ViVmlldyA9IGtpdChtX21lZGlhRWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpKTsK
KyAgICAgICAgaWYgKHdlYlZpZXcpCisgICAgICAgICAgICByZXR1cm4gd2ViVmlldy0+dG9wTGV2
ZWxQYXJlbnQoKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBjb25zdCBMUENX
U1RSIGZ1bGxzY3JlZW5WaWRlZW9IVURXaW5kb3dDbGFzc05hbWUgPSBMImZ1bGxzY3JlZW5WaWRl
ZW9IVURXaW5kb3dDbGFzcyI7CiAKIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6cmVn
aXN0ZXJIVURXaW5kb3dDbGFzcygpCkBAIC0zNjQsNyArNDQ0LDcgQEAgdm9pZCBGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyOjpjcmVhdGVIVQogICAgIAogICAgIC8vIERpcnR5IHRoZSB3aW5kb3cg
c28gdGhlIEhVRCBkcmF3cwogICAgIFJFQ1QgY2xlYXJSZWN0ID0geyBtX2h1ZFBvc2l0aW9uLngo
KSwgbV9odWRQb3NpdGlvbi55KCksIG1faHVkUG9zaXRpb24ueCgpICsgd2luZG93V2lkdGgsIG1f
aHVkUG9zaXRpb24ueSgpICsgd2luZG93SGVpZ2h0IH07Ci0gICAgSW52YWxpZGF0ZVJlY3QobV92
aWRlb1dpbmRvdywgJmNsZWFyUmVjdCwgdHJ1ZSk7CisgICAgSW52YWxpZGF0ZVJlY3QobV9mdWxs
c2NyZWVuV2luZG93LT5od25kKCksICZjbGVhclJlY3QsIHRydWUpOwogCiAgICAgbV9wbGF5UGF1
c2VCdXR0b24uc2V0U2hvd0FsdEJ1dHRvbighY2FuUGxheSgpKTsKICAgICBtX3ZvbHVtZVNsaWRl
ci5zZXRWYWx1ZSh2b2x1bWUoKSk7CkBAIC0zNzcsNyArNDU3LDcgQEAgdm9pZCBGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyOjpjcmVhdGVIVQogCiAgICAgbV9odWRXaW5kb3cgPSBDcmVhdGVXaW5k
b3dFeChXU19FWF9MQVlFUkVEIHwgV1NfRVhfVFJBTlNQQVJFTlQgfCBXU19FWF9UT09MV0lORE9X
LCAKICAgICAgICAgZnVsbHNjcmVlblZpZGVlb0hVRFdpbmRvd0NsYXNzTmFtZSwgMCwgV1NfUE9Q
VVAgfCBXU19WSVNJQkxFLAotICAgICAgICBtX2h1ZFBvc2l0aW9uLngoKSwgbV9odWRQb3NpdGlv
bi55KCksIDAsIDAsIG1fdmlkZW9XaW5kb3csIDAsIGdJbnN0YW5jZSwgMCk7CisgICAgICAgIG1f
aHVkUG9zaXRpb24ueCgpLCBtX2h1ZFBvc2l0aW9uLnkoKSwgMCwgMCwgbV9mdWxsc2NyZWVuV2lu
ZG93LT5od25kKCksIDAsIGdJbnN0YW5jZSwgMCk7CiAgICAgQVNTRVJUKDo6SXNXaW5kb3cobV9o
dWRXaW5kb3cpKTsKICAgICBTZXRXaW5kb3dMb25nUHRyKG1faHVkV2luZG93LCAwLCByZWludGVy
cHJldF9jYXN0PExPTkdfUFRSPih0aGlzKSk7CiAKQEAgLTQ4OCw2ICs1NjgsOSBAQCBMUkVTVUxU
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Omh1ZFduCiAgICAgY2FzZSBXTV9DSEFSOgogICAg
ICAgICBjb250cm9sbGVyLT5vbkNoYXIod1BhcmFtKTsKICAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBXTV9LRVlET1dOOgorICAgICAgICBjb250cm9sbGVyLT5vbktleURvd24od1BhcmFtKTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBXTV9MQlVUVE9ORE9XTjoKICAgICAgICAgY29udHJvbGxl
ci0+b25Nb3VzZURvd24oSW50UG9pbnQoR0VUX1hfTFBBUkFNKGxQYXJhbSksIEdFVF9ZX0xQQVJB
TShsUGFyYW0pKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTExLDYgKzU5NCwxNCBAQCB2b2lkIEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Om9uQ2hhcihpCiAgICAgICAgIHRvZ2dsZVBsYXkoKTsK
IH0KIAordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpvbktleURvd24oaW50IHZpcnR1
YWxLZXkpCit7CisgICAgaWYgKHZpcnR1YWxLZXkgPT0gVktfRVNDQVBFKSB7CisgICAgICAgIC8v
aWYgKG1fbWVkaWFFbGVtZW50KQorICAgICAgICAvLyAgICBtX21lZGlhRWxlbWVudC0+ZXhpdEZ1
bGxzY3JlZW4oKTsKKyAgICB9Cit9CisKIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6
dGltZXJGaXJlZChUaW1lcjxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyPiopCiB7CiAgICAgLy8g
VXBkYXRlIHRoZSB0aW1lIHNsaWRlcgpJbmRleDogV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyLmgJKHJldmlzaW9uIDYwMDI3KQorKysgV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJM
RShWSURFTykKIAotI2luY2x1ZGUgIlFUTW92aWVHV29ybGQuaCIKKyNpbmNsdWRlICJNZWRpYVBs
YXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgiCiAKICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxN
ZWRpYUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlLmg+CkBAIC0zOCw2ICszOCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKK2NsYXNz
IFdLQ0FDRkxheWVyOwogfQogCiBjbGFzcyBIVURXaWRnZXQgewpAQCAtOTksNyArMTAwLDcgQEAg
cHJpdmF0ZToKICAgICBpbnQgbV9kcmFnU3RhcnRPZmZzZXQ7CiB9OwogCi1jbGFzcyBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyIDogUVRNb3ZpZUdXb3JsZEZ1bGxzY3JlZW5DbGllbnQsIHB1Ymxp
YyBOb25jb3B5YWJsZSB7CitjbGFzcyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyIDogV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCwgcHVibGljIE5vbmNvcHlhYmxl
IHsKIHB1YmxpYzoKICAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCk7CiAgICAgdmlydHVh
bCB+RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcigpOwpAQCAtMTExLDEyICsxMTIsMTIgQEAgcHVi
bGljOgogICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsKIAogcHJpdmF0ZToKLSAgICAvLyBRVE1v
dmllR1dvcmxkRnVsbHNjcmVlbkNsaWVudAorICAgIC8vIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxz
Y3JlZW5XaW5kb3dDbGllbnQKICAgICB2aXJ0dWFsIExSRVNVTFQgZnVsbHNjcmVlbkNsaWVudFdu
ZFByb2MoSFdORCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0sIExQQVJBTSk7CisgICAgdmlydHVhbCBI
V05EIHBhcmVudEhXTkQoKTsKIAogICAgIHZvaWQgZW5zdXJlV2luZG93KCk7Ci0gICAgUVRNb3Zp
ZUdXb3JsZCogbW92aWUoKSBjb25zdDsKLQorICAgIAogICAgIGJvb2wgY2FuUGxheSgpIGNvbnN0
OwogICAgIHZvaWQgcGxheSgpOwogICAgIHZvaWQgcGF1c2UoKTsKQEAgLTE0NSwxMyArMTQ2LDIw
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBvbk1vdXNlRG93bihjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYpOwogICAgIHZvaWQgb25Nb3VzZU1vdmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAg
ICB2b2lkIG9uTW91c2VVcChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAgIHZvaWQgb25L
ZXlEb3duKGludCB2aXJ0dWFsS2V5KTsKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50PiBtX21lZGlhRWxlbWVudDsKIAotICAgIEhXTkQgbV9odWRXaW5kb3csIG1fdmlkZW9X
aW5kb3c7CisgICAgSFdORCBtX2h1ZFdpbmRvdzsKICAgICBPd25QdHI8SEJJVE1BUD4gbV9iaXRt
YXA7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2Z1bGxzY3JlZW5TaXplOwogICAgIFdlYkNvcmU6
OkludFBvaW50IG1faHVkUG9zaXRpb247CisgICAgT3duUHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c+IG1fZnVsbHNjcmVlbldpbmRvdzsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6V0tDQUNGTGF5ZXI+IG1fcm9vdENoaWxkOworCisgICAgY2xhc3MgTGF5b3V0Q2xp
ZW50OworICAgIGZyaWVuZCBjbGFzcyBMYXlvdXRDbGllbnQ7CisgICAgT3duUHRyPExheW91dENs
aWVudD4gbV9sYXlvdXRDbGllbnQ7CiAKICAgICBIVURCdXR0b24gbV9wbGF5UGF1c2VCdXR0b247
CiAgICAgSFVEQnV0dG9uIG1fdGltZVNsaWRlckJ1dHRvbjsKSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYw
MDI4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMTAtMDUtMjIgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnVsbCBzY3JlZW4g
ZG9lc24ndCB3b3JrIGZvciB2aWRlbyBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk1NTcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODAx
MTgxMworCisgICAgICAgIFJlLWVuYWJsZWQgZnVsbHNjcmVlbiBzdXBwb3J0IG9uIHdpbmRvd3Ms
IGFuZCBtb2RpZmllZCB0ZXN0cyB0byBtYXRjaC4KKworICAgICAgICAqIHBsYXRmb3JtL3dpbi9t
ZWRpYS9jb250cm9scy1hZnRlci1yZWxvYWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRm
b3JtL3dpbi9tZWRpYS9jb250cm9scy1kcmFnLXRpbWViYXItZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1zdHJpY3QtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1zdHlsaW5nLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vbWVkaWEvdmlkZW8tY29udHJvbHMtcmVuZGVyaW5nLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vbWVkaWEvdmlkZW8tZGlzcGxheS10
b2dnbGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9tZWRpYS92aWRlby1u
by1hdWRpby1leHBlY3RlZC50eHQ6CisKIDIwMTAtMDUtMjIgIE1hY2llaiBTdGFjaG93aWFrICA8
bWpzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLWFmdGVyLXJlbG9hZC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlh
L2NvbnRyb2xzLWFmdGVyLXJlbG9hZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYwMDI3KQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLWFmdGVyLXJlbG9hZC1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE3LDkgKzE3LDEwIEBAIGxheWVyIGF0ICg4LDQy
KSBzaXplIDMyMHgyNDAKIGxheWVyIGF0ICg4LDI2Nikgc2l6ZSAzMjB4MTYKICAgUmVuZGVyRmxl
eGlibGVCb3ggKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDIyNCkgc2l6ZSAzMjB4MTYKICAgICBS
ZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMCwwKSBzaXplIDE2eDE2Ci0gICAgUmVuZGVyRmxleGli
bGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUgMjU2eDE2Ci0gICAgICBSZW5kZXJTbGlkZXIge0lO
UFVUfSBhdCAoMCwwKSBzaXplIDI1NngxNgorICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0
ICgxNiwwKSBzaXplIDI0MHgxNgorICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkg
c2l6ZSAyNDB4MTYKICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMSkgc2l6ZSAxM3gx
NAorICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNTYsMCkgc2l6ZSAxNngxNgogICAgIFJl
bmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNzIsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRv
biB7SU5QVVR9IGF0ICgyODgsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9
IGF0ICgzMDQsMCkgc2l6ZSAxNngxNgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21l
ZGlhL2NvbnRyb2xzLWRyYWctdGltZWJhci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLWRyYWctdGltZWJhci1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDYwMDI3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlh
L2NvbnRyb2xzLWRyYWctdGltZWJhci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQs
MTAgKzQsMTAgQEAgUlVOKHZpZGVvLmF1dG9wbGF5ID0gdHJ1ZSkKIFJVTih2aWRlby5zcmMgPSAn
Y29udGVudC90ZXN0Lm1wNCcpCiBFVkVOVChwbGF5aW5nKQogRVZFTlQoc2Vla2VkKQotVGltZTog
Mi4xCitUaW1lOiAyLjMKIEVWRU5UKHNlZWtlZCkKLVRpbWU6IDIuNgorVGltZTogMi44CiBFVkVO
VChzZWVrZWQpCi1UaW1lOiAzLjEKK1RpbWU6IDMuNAogRU5EIE9GIFRFU1QKIApJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLXN0cmljdC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLXN0
cmljdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYwMDI3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL21lZGlhL2NvbnRyb2xzLXN0cmljdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTE3LDkgKzE3LDEwIEBAIGxheWVyIGF0ICg4LDUwKSBzaXplIDMyMHgyNDAKIGxheWVyIGF0
ICg4LDI3NCkgc2l6ZSAzMjB4MTYKICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtE
SVZ9IGF0ICgwLDIyNCkgc2l6ZSAzMjB4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAo
MCwwKSBzaXplIDE2eDE2Ci0gICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNp
emUgMjU2eDE2Ci0gICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI1Nngx
NgorICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI0MHgxNgorICAg
ICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNDB4MTYKICAgICAgICAgUmVu
ZGVyQmxvY2sge0RJVn0gYXQgKDIsMSkgc2l6ZSAxM3gxNAorICAgIFJlbmRlckJ1dHRvbiB7SU5Q
VVR9IGF0ICgyNTYsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgy
NzIsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODgsMCkgc2l6
ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMDQsMCkgc2l6ZSAxNngxNgpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLXN0eWxpbmctZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS9j
b250cm9scy1zdHlsaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjAwMjcpCisrKyBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvY29udHJvbHMtc3R5bGluZy1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTIxLDkgKzIxLDEwIEBAIGxheWVyIGF0ICgxOCw0Mikgc2l6ZSAzMjB4
MjQwCiBsYXllciBhdCAoMTgsMjY2KSBzaXplIDMyMHgxNgogICBSZW5kZXJGbGV4aWJsZUJveCAo
cG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMjI0KSBzaXplIDMyMHgxNgogICAgIFJlbmRlckJ1dHRv
biB7SU5QVVR9IGF0ICgwLDApIHNpemUgMTZ4MTYKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElW
fSBhdCAoMTYsMCkgc2l6ZSAyNTZ4MTYKLSAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgw
LDApIHNpemUgMjU2eDE2CisgICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNp
emUgMjQweDE2CisgICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI0MHgx
NgogICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiwxKSBzaXplIDEzeDE0CisgICAgUmVu
ZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI1NiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9u
IHtJTlBVVH0gYXQgKDI3MiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0g
YXQgKDI4OCwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMwNCww
KSBzaXplIDE2eDE2CkBAIC0zMiw5ICszMywxMCBAQCBsYXllciBhdCAoOCwyODIpIHNpemUgMzIw
eDI0MAogbGF5ZXIgYXQgKDgsNTA2KSBzaXplIDMyMHgxNgogICBSZW5kZXJGbGV4aWJsZUJveCAo
cG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMjI0KSBzaXplIDMyMHgxNgogICAgIFJlbmRlckJ1dHRv
biB7SU5QVVR9IGF0ICgwLDApIHNpemUgMTZ4MTYKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElW
fSBhdCAoMTYsMCkgc2l6ZSAyNTZ4MTYKLSAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgw
LDApIHNpemUgMjU2eDE2CisgICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNp
emUgMjQweDE2CisgICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI0MHgx
NgogICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiwxKSBzaXplIDEzeDE0CisgICAgUmVu
ZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI1NiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9u
IHtJTlBVVH0gYXQgKDI3MiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0g
YXQgKDI4OCwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMwNCww
KSBzaXplIDE2eDE2CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvdmlkZW8t
Y29udHJvbHMtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vbWVkaWEvdmlkZW8tY29udHJvbHMtcmVuZGVyaW5nLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gNjAwMjcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvdmlk
ZW8tY29udHJvbHMtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjAs
OSArMjAsMTAgQEAgbGF5ZXIgYXQgKDgsNDIpIHNpemUgMzIweDI0MAogbGF5ZXIgYXQgKDgsMjY2
KSBzaXplIDMyMHgxNgogICBSZW5kZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQg
KDAsMjI0KSBzaXplIDMyMHgxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNp
emUgMTZ4MTYKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNTZ4
MTYKLSAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjU2eDE2CisgICAg
UmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUgMjQweDE2CisgICAgICBSZW5k
ZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI0MHgxNgogICAgICAgICBSZW5kZXJCbG9j
ayB7RElWfSBhdCAoMiwxKSBzaXplIDEzeDE0CisgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQg
KDI1NiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI3MiwwKSBz
aXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI4OCwwKSBzaXplIDE2eDE2
CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMwNCwwKSBzaXplIDE2eDE2CkBAIC0zMSw5
ICszMiwxMCBAQCBsYXllciBhdCAoOCwyODIpIHNpemUgMzIweDI0MAogbGF5ZXIgYXQgKDgsNTA2
KSBzaXplIDMyMHgxNgogICBSZW5kZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQg
KDAsMjI0KSBzaXplIDMyMHgxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNp
emUgMTZ4MTYKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNTZ4
MTYKLSAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjU2eDE2CisgICAg
UmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUgMjQweDE2CisgICAgICBSZW5k
ZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI0MHgxNgogICAgICAgICBSZW5kZXJCbG9j
ayB7RElWfSBhdCAoMiwxKSBzaXplIDEzeDE0CisgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQg
KDI1NiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI3MiwwKSBz
aXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI4OCwwKSBzaXplIDE2eDE2
CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMwNCwwKSBzaXplIDE2eDE2CkBAIC00NCw5
ICs0NiwxMCBAQCBsYXllciBhdCAoOCw1MjIpIHNpemUgMzIweDI0MAogbGF5ZXIgYXQgKDgsNzQ2
KSBzaXplIDMyMHgxNgogICBSZW5kZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQg
KDAsMjI0KSBzaXplIDMyMHgxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNp
emUgMTZ4MTYKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNTZ4
MTYKLSAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjU2eDE2CisgICAg
UmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUgMjQweDE2CisgICAgICBSZW5k
ZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI0MHgxNgogICAgICAgICBSZW5kZXJCbG9j
ayB7RElWfSBhdCAoMiwxKSBzaXplIDEzeDE0CisgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQg
KDI1NiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI3MiwwKSBz
aXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI4OCwwKSBzaXplIDE2eDE2
CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMwNCwwKSBzaXplIDE2eDE2CkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvdmlkZW8tZGlzcGxheS10b2dnbGUtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS92aWRl
by1kaXNwbGF5LXRvZ2dsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYwMDI3KQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL3ZpZGVvLWRpc3BsYXktdG9nZ2xlLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMTYsOSArMTYsMTAgQEAgbGF5ZXIgYXQgKDgsMjYpIHNpemUg
MzIweDI0MAogbGF5ZXIgYXQgKDgsMjUwKSBzaXplIDMyMHgxNgogICBSZW5kZXJGbGV4aWJsZUJv
eCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMjI0KSBzaXplIDMyMHgxNgogICAgIFJlbmRlckJ1
dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUgMTZ4MTYKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7
RElWfSBhdCAoMTYsMCkgc2l6ZSAyNTZ4MTYKLSAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0
ICgwLDApIHNpemUgMjU2eDE2CisgICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDAp
IHNpemUgMjQweDE2CisgICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI0
MHgxNgogICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiwxKSBzaXplIDEzeDE0CisgICAg
UmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI1NiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0
dG9uIHtJTlBVVH0gYXQgKDI3MiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBV
VH0gYXQgKDI4OCwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMw
NCwwKSBzaXplIDE2eDE2CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvdmlk
ZW8tbm8tYXVkaW8tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9tZWRpYS92aWRlby1uby1hdWRpby1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYwMDI3
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL3ZpZGVvLW5vLWF1ZGlvLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTcsOCArMTcsOSBAQCBsYXllciBhdCAoOCw0Mikg
c2l6ZSAzNTJ4Mjg4CiBsYXllciBhdCAoOCwzMTQpIHNpemUgMzUyeDE2CiAgIFJlbmRlckZsZXhp
YmxlQm94IChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCwyNzIpIHNpemUgMzUyeDE2CiAgICAgUmVu
ZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAxNngxNgotICAgIFJlbmRlckZsZXhpYmxl
Qm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDMwNHgxNgotICAgICAgUmVuZGVyU2xpZGVyIHtJTlBV
VH0gYXQgKDAsMCkgc2l6ZSAzMDR4MTYKKyAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAo
MTYsMCkgc2l6ZSAyODh4MTYKKyAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNp
emUgMjg4eDE2CiAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDEpIHNpemUgMTN4MTQK
KyAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzA0LDApIHNpemUgMTZ4MTYKICAgICBSZW5k
ZXJCdXR0b24ge0lOUFVUfSBhdCAoMzIwLDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24g
e0lOUFVUfSBhdCAoMzM2LDApIHNpemUgMTZ4MTYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56943</attachid>
            <date>2010-05-24 16:28:09 -0700</date>
            <delta_ts>2010-05-25 13:34:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39557-20100524162815.patch</filename>
            <type>text/plain</type>
            <size>42209</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDA5NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTAtMDUtMjIgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnVs
bCBzY3JlZW4gZG9lc24ndCB3b3JrIGZvciB2aWRlbyBlbGVtZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk1NTcKKyAgICAgICAgcmRhcjovL3By
b2JsZW0vODAxMTgxMworICAgICAgICAKKyAgICAgICAgQWRkIGZ1bGxzY3JlZW4gc3VwcG9ydCBm
b3IgTWVkaWFQbGF5ZXJQcml2YXRlVmlzdWFsQ29udGV4dC4gIEEgbmV3IGNsYXNzLCBNZWRpYVBs
YXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LAorICAgICAgICBwcm92aWRlcyB0aGUgZnVsbHNj
cmVlbiBod25kIGFuZCBsYXllciByZW5kZXJlci4gIEFueSBXS0NBQ0ZMYXllciBjYW4gYmUgcHJv
dmlkZWQgdG8gTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdworICAgICAgICBzbyBm
dXR1cmUgYWRkaXRpb25hbCBNZWRpYVBsYXllclByaXZhdGUgaW1wbGVtZW50YXRpb25zIGNhbiB1
c2UgdGhlIGZ1bGxzY3JlZW4gd2luZG93LgorICAgICAgICAKKyAgICAgICAgTWlub3IgYWRkaXRp
b25zIGhhdmUgYmVlbiBtYWRlIHRvIHRoZSBGbG9hdFNpemUgYW5kIEludFNpemUgY2xhc3Nlcy4K
KworICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oOiBBZGRlZCBhc3BlY3RSYXRpbygpLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaDogQWRkZWQgYXNwZWN0UmF0aW8oKSBhbmQg
c2NhbGUoZmxvYXQpLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVGdWxsc2NyZWVuV2luZG93LmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNr
VGltZVZpc3VhbENvbnRleHQuY3BwOiBDYWxsIHJldHJpZXZlQ3VycmVudEltYWdlKCkgYWZ0ZXIg
Y3JlYXRpbmcgdGhlIHZpZGVvTGF5ZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1dLQ0FDRkxheWVyLmNwcDogCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FD
RkxheWVyLmg6IEFkZCBsYXlvdXQgY2xpZW50IGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6V0tD
QUNGTGF5ZXI6OmZyYW1lKTogQWRkZWQgYmFjayBmcmFtZSgpL3NldEZyYW1lKCkuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dlYlRpbGVkTGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViVGlsZWRMYXllcjo6c2V0RnJhbWUpOiBJbXBsYW1lbnRlZCBzZXRGcmFtZSgpIGlu
IHN1YmNsYXNzIG9mIFdLQ0FDRkxheWVyCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1dlYlRpbGVkTGF5ZXIuaDoKKworCisyMDEwLTA1LTIzICBBZGFtIEJhcnRoICA8YWJhcnRoQHdl
YmtpdC5vcmc+CisgCisgICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKwogMjAxMC0w
NS0yMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIENhcmxzb24uCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oJKHJldmlzaW9uIDYwMDQ4KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjM3OTEsNiArMjM3OTEsMTQgQEAKIAkJCQkJCT4NCiAJ
CQkJCTwvRmlsZT4NCiAJCQkJCTxGaWxlDQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1x3aW5cTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAiDQor
CQkJCQkJPg0KKwkJCQkJPC9GaWxlPg0KKwkJCQkJPEZpbGUNCisJCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2lu
ZG93LmgiDQorCQkJCQkJPg0KKwkJCQkJPC9GaWxlPg0KKwkJCQkJPEZpbGUNCiAJCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxNZWRpYVBsYXllclByaXZhdGVRdWlj
a1RpbWVWaXN1YWxDb250ZXh0LmNwcCINCiAJCQkJCQk+DQogCQkJCQk8L0ZpbGU+DQpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oCShyZXZpc2lvbiA2MDA0OCkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTYz
LDYgKzYzLDE0IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fd2lkdGggPD0gMCB8fCBtX2hlaWdodCA8PSAwOyB9CiAKKyAgICBmbG9hdCBhc3BlY3RSYXRp
bygpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGggLyBtX2hlaWdodDsgfQorCisgICAgdm9pZCBzY2Fs
ZShmbG9hdCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fd2lkdGggKj0gc2NhbGU7CisgICAgICAg
IG1faGVpZ2h0ICo9IHNjYWxlOworICAgIH0KKwogICAgIEZsb2F0U2l6ZSBleHBhbmRlZFRvKGNv
bnN0IEZsb2F0U2l6ZSYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gRmxvYXRT
aXplKG1fd2lkdGggPiBvdGhlci5tX3dpZHRoID8gbV93aWR0aCA6IG90aGVyLm1fd2lkdGgsCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAkocmV2aXNpb24gNjAwNDgpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAkod29ya2luZyBjb3B5KQpAQCAtNzIs
NiArNzIsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBt
X3dpZHRoIDw9IDAgfHwgbV9oZWlnaHQgPD0gMDsgfQogICAgIGJvb2wgaXNaZXJvKCkgY29uc3Qg
eyByZXR1cm4gIW1fd2lkdGggJiYgIW1faGVpZ2h0OyB9CisKKyAgICBmbG9hdCBhc3BlY3RSYXRp
bygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtX3dpZHRoKSAvIHN0YXRpY19j
YXN0PGZsb2F0PihtX2hlaWdodCk7IH0KICAgICAKICAgICB2b2lkIGV4cGFuZChpbnQgd2lkdGgs
IGludCBoZWlnaHQpCiAgICAgewpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldp
bmRvdy5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9N
ZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgCisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQgCisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZSAKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyCTQVMgSVOUIAorICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIAorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiAKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIAorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIAorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgiCisKKyNpbmNs
dWRlICJXZWJDb3JlSW5zdGFuY2VIYW5kbGUuaCIKKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dD
b2xvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxz
Y3JlZW5XaW5kb3c6Ok1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3coTWVkaWFQbGF5
ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCogY2xpZW50KQorICAgIDogbV9jbGllbnQoY2xpZW50
KQorICAgICwgbV9od25kKDApCisgICAgLCBtX2xheWVyUmVuZGVyZXIoV0tDQUNGTGF5ZXJSZW5k
ZXJlcjo6Y3JlYXRlKDApKQoreworfQorCitNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2lu
ZG93Ojp+TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdygpCit7Cit9CisKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6Y3JlYXRlV2luZG93KCkKK3sKKyAg
ICBzdGF0aWMgQVRPTSB3aW5kb3dBdG9tOworICAgIHN0YXRpYyBMUENXU1RSIHdpbmRvd0NsYXNz
TmFtZSA9IEwiTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvd0NsYXNzIjsKKyAgICBp
ZiAoIXdpbmRvd0F0b20pIHsKKyAgICAgICAgV05EQ0xBU1NFWCB3Y2V4ID0gezB9OworICAgICAg
ICB3Y2V4LmNiU2l6ZSA9IHNpemVvZihXTkRDTEFTU0VYKTsKKyAgICAgICAgd2NleC5zdHlsZSA9
IENTX0hSRURSQVcgfCBDU19WUkVEUkFXOworICAgICAgICB3Y2V4LmxwZm5XbmRQcm9jID0gJnN0
YXRpY1duZFByb2M7CisgICAgICAgIHdjZXguaEluc3RhbmNlID0gV2ViQ29yZTo6aW5zdGFuY2VI
YW5kbGUoKTsKKyAgICAgICAgd2NleC5scHN6Q2xhc3NOYW1lID0gd2luZG93Q2xhc3NOYW1lOwor
ICAgICAgICB3aW5kb3dBdG9tID0gOjpSZWdpc3RlckNsYXNzRXgoJndjZXgpOworICAgIH0KKwor
ICAgIGlmIChtX2h3bmQpCisgICAgICAgIGNsb3NlKCk7CisKKyAgICBIV05EIHBhcmVudEhXTkQg
PSBtX2NsaWVudCA/IG1fY2xpZW50LT5wYXJlbnRIV05EKCkgOiAwOworCisgICAgTU9OSVRPUklO
Rk8gbWkgPSB7MH07CisgICAgbWkuY2JTaXplID0gc2l6ZW9mKE1PTklUT1JJTkZPKTsKKyAgICBH
ZXRNb25pdG9ySW5mbyhNb25pdG9yRnJvbVdpbmRvdyhwYXJlbnRIV05ELCBNT05JVE9SX0RFRkFV
TFRUT05FQVJFU1QpLCAmbWkpOworICAgIEludFJlY3QgbW9uaXRvclJlY3QgPSBtaS5yY01vbml0
b3I7CisgICAgCisgICAgOjpDcmVhdGVXaW5kb3dFeFcoMCwgd2luZG93Q2xhc3NOYW1lLCBMIiIs
IFdTX1BPUFVQIHwgV1NfVklTSUJMRSwgCisgICAgICAgIG1vbml0b3JSZWN0LngoKSwgbW9uaXRv
clJlY3QueSgpLCBtb25pdG9yUmVjdC53aWR0aCgpLCBtb25pdG9yUmVjdC5oZWlnaHQoKSwKKyAg
ICAgICAgcGFyZW50SFdORCwgMCwgV2ViQ29yZTo6aW5zdGFuY2VIYW5kbGUoKSwgdGhpcyk7Cisg
ICAgQVNTRVJUKElzV2luZG93KG1faHduZCkpOworCisgICAgOjpTZXRGb2N1cyhtX2h3bmQpOwor
fQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OmNsb3NlKCkKK3sK
KyAgICA6OkRlc3Ryb3lXaW5kb3cobV9od25kKTsKKyAgICBtX2h3bmQgPSAwOworfQorCitIV05E
IE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6Omh3bmQoKSBjb25zdAoreworICAg
IHJldHVybiBtX2h3bmQ7Cit9CisKK1dLQ0FDRkxheWVyUmVuZGVyZXIqIE1lZGlhUGxheWVyUHJp
dmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OmxheWVyUmVuZGVyZXIoKSBjb25zdAoreworICAgIHJldHVy
biBtX2xheWVyUmVuZGVyZXIuZ2V0KCk7Cit9CisKK1dLQ0FDRkxheWVyKiBNZWRpYVBsYXllclBy
aXZhdGVGdWxsc2NyZWVuV2luZG93Ojpyb290Q2hpbGRMYXllcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fcm9vdENoaWxkLmdldCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxz
Y3JlZW5XaW5kb3c6OnNldFJvb3RDaGlsZExheWVyKFBhc3NSZWZQdHI8V0tDQUNGTGF5ZXI+IHJv
b3RDaGlsZCkKK3sKKyAgICBpZiAobV9yb290Q2hpbGQgIT0gcm9vdENoaWxkKSB7CisgICAgICAg
IGlmIChtX3Jvb3RDaGlsZCkKKyAgICAgICAgICAgIG1fcm9vdENoaWxkLT5yZW1vdmVGcm9tU3Vw
ZXJsYXllcigpOworCisgICAgICAgIG1fcm9vdENoaWxkID0gcm9vdENoaWxkOworICAgIH0KKwor
ICAgIGlmIChtX3Jvb3RDaGlsZCkgeworICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNldFJvb3RD
aGlsZExheWVyKG1fcm9vdENoaWxkLmdldCgpKTsKKyAgICAgICAgV0tDQUNGTGF5ZXIqIHJvb3RM
YXllciA9IG1fcm9vdENoaWxkLT5yb290TGF5ZXIoKTsKKyAgICAgICAgQ0dSZWN0IHJvb3RCb3Vu
ZHMgPSBtX3Jvb3RDaGlsZC0+cm9vdExheWVyKCktPmJvdW5kcygpOworICAgICAgICBtX3Jvb3RD
aGlsZC0+c2V0RnJhbWUocm9vdEJvdW5kcyk7CisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0
U2Nyb2xsRnJhbWUoSW50UG9pbnQocm9vdEJvdW5kcy5vcmlnaW4pLCBJbnRTaXplKHJvb3RCb3Vu
ZHMuc2l6ZSkpOworICAgICAgICBtX3Jvb3RDaGlsZC0+c2V0QmFja2dyb3VuZENvbG9yKENHQ29s
b3JHZXRDb25zdGFudENvbG9yKGtDR0NvbG9yQmxhY2spKTsKKyNpZiBOREVCVUcKKyAgICAgICAg
cm9vdExheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ0dDb2xvckdldENvbnN0YW50Q29sb3Ioa0NH
Q29sb3JCbGFjaykpOworI2Vsc2UKKyAgICAgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IHJlZENv
bG9yKEFkb3B0Q0YsIENHQ29sb3JDcmVhdGVHZW5lcmljUkdCKDEsIDAsIDAsIDEpKTsKKyAgICAg
ICAgcm9vdExheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IocmVkQ29sb3IuZ2V0KCkpOworI2VuZGlm
CisgICAgfQorfQorCitMUkVTVUxUIENBTExCQUNLIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3Jl
ZW5XaW5kb3c6OnN0YXRpY1duZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3
UGFyYW0sIExQQVJBTSBsUGFyYW0pCit7CisgICAgTE9OR19QVFIgbG9uZ1B0ciA9IEdldFdpbmRv
d0xvbmdQdHIoaFduZCwgR1dMUF9VU0VSREFUQSk7CisKKyAgICBpZiAoIWxvbmdQdHIgJiYgbWVz
c2FnZSA9PSBXTV9DUkVBVEUpIHsKKyAgICAgICAgTFBDUkVBVEVTVFJVQ1QgbHBjcyA9IHJlaW50
ZXJwcmV0X2Nhc3Q8TFBDUkVBVEVTVFJVQ1Q+KGxQYXJhbSk7CisgICAgICAgIGxvbmdQdHIgPSBy
ZWludGVycHJldF9jYXN0PExPTkdfUFRSPihscGNzLT5scENyZWF0ZVBhcmFtcyk7CisgICAgICAg
IDo6U2V0V2luZG93TG9uZ1B0cihoV25kLCBHV0xQX1VTRVJEQVRBLCBsb25nUHRyKTsKKyAgICB9
CisKKyAgICBpZiAoTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdyogd2luZG93ID0g
cmVpbnRlcnByZXRfY2FzdDxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93Kj4obG9u
Z1B0cikpCisgICAgICAgIHJldHVybiB3aW5kb3ctPnduZFByb2MoaFduZCwgbWVzc2FnZSwgd1Bh
cmFtLCBsUGFyYW0pOworCisgICAgcmV0dXJuIDo6RGVmV2luZG93UHJvYyhoV25kLCBtZXNzYWdl
LCB3UGFyYW0sIGxQYXJhbSk7ICAgIAorfQorCitMUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZUZ1
bGxzY3JlZW5XaW5kb3c6OnduZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3
UGFyYW0sIExQQVJBTSBsUGFyYW0pCit7CisgICAgTFJFU1VMVCBsUmVzdWx0ID0gMDsKKyAgICBz
d2l0Y2ggKG1lc3NhZ2UpIHsKKyAgICBjYXNlIFdNX0NSRUFURToKKyAgICAgICAgbV9od25kID0g
aFduZDsKKyAgICAgICAgbV9sYXllclJlbmRlcmVyLT5zZXRIb3N0V2luZG93KG1faHduZCk7Cisg
ICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+Y3JlYXRlUmVuZGVyZXIoKTsKKyAgICAgICAgbV9sYXll
clJlbmRlcmVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBX
TV9ERVNUUk9ZOgorICAgICAgICBtX2h3bmQgPSAwOworICAgICAgICBtX2xheWVyUmVuZGVyZXIt
PmRlc3Ryb3lSZW5kZXJlcigpOworICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNldEhvc3RXaW5k
b3coMCk7CisgICAgY2FzZSBXTV9XSU5ET1dQT1NDSEFOR0VEOgorICAgICAgICB7CisgICAgICAg
ICAgICBMUFdJTkRPV1BPUyB3cCA9IHJlaW50ZXJwcmV0X2Nhc3Q8TFBXSU5ET1dQT1M+KGxQYXJh
bSk7CisgICAgICAgICAgICBpZiAod3AtPmZsYWdzICYgU1dQX05PU0laRSkKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+cmVzaXplKCk7CisgICAg
ICAgICAgICBXS0NBQ0ZMYXllciogcm9vdExheWVyID0gbV9yb290Q2hpbGQtPnJvb3RMYXllcigp
OworICAgICAgICAgICAgQ0dSZWN0IHJvb3RCb3VuZHMgPSBtX3Jvb3RDaGlsZC0+cm9vdExheWVy
KCktPmJvdW5kcygpOworICAgICAgICAgICAgbV9yb290Q2hpbGQtPnNldEZyYW1lKHJvb3RCb3Vu
ZHMpOworICAgICAgICAgICAgbV9yb290Q2hpbGQtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgICAg
ICAgICBtX2xheWVyUmVuZGVyZXItPnNldFNjcm9sbEZyYW1lKEludFBvaW50KHJvb3RCb3VuZHMu
b3JpZ2luKSwgSW50U2l6ZShyb290Qm91bmRzLnNpemUpKTsKKyAgICAgICAgfQorICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFdNX1BBSU5UOgorICAgICAgICBtX2xheWVyUmVuZGVyZXItPnJlbmRl
clNvb24oKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKG1fY2xpZW50KQorICAg
ICAgICBsUmVzdWx0ID0gbV9jbGllbnQtPmZ1bGxzY3JlZW5DbGllbnRXbmRQcm9jKGhXbmQsIG1l
c3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsKKworICAgIHJldHVybiBsUmVzdWx0OworfQorCit9Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVl
bldpbmRvdy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0IAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIAorICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgk0FTIElTlCAKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiAK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiAKKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IAorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiAKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3dfaAorI2Rl
ZmluZSBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93X2gKKworI2luY2x1ZGUgIldL
Q0FDRkxheWVyLmgiCisjaW5jbHVkZSAiV0tDQUNGTGF5ZXJSZW5kZXJlci5oIgorI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KKwordHlwZWRlZiB1bnNpZ25lZCBXUEFSQU07Cit0eXBlZGVmIGxvbmcg
TFBBUkFNOwordHlwZWRlZiBzdHJ1Y3QgSFdORF9fKiBIV05EOwordHlwZWRlZiBfVzY0IGxvbmcg
TE9OR19QVFI7Cit0eXBlZGVmIExPTkdfUFRSIExSRVNVTFQ7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCB7CitwdWJsaWM6
CisgICAgdmlydHVhbCBMUkVTVUxUIGZ1bGxzY3JlZW5DbGllbnRXbmRQcm9jKEhXTkQsIFVJTlQg
bWVzc2FnZSwgV1BBUkFNLCBMUEFSQU0pID0gMDsKKyAgICB2aXJ0dWFsIEhXTkQgcGFyZW50SFdO
RCgpID0gMDsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5NZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuQ2xpZW50KCkge30gCit9OworCitjbGFzcyBNZWRpYVBsYXllclByaXZhdGVGdWxsc2Ny
ZWVuV2luZG93IHsKK3B1YmxpYzoKKyAgICBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2lu
ZG93KE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5DbGllbnQqKTsKKyAgICB2aXJ0dWFsIH5N
ZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93KCk7CisKKyAgICB2b2lkIGNyZWF0ZVdp
bmRvdygpOworICAgIHZvaWQgY2xvc2UoKTsKKyAgICAKKyAgICBIV05EIGh3bmQoKSBjb25zdDsK
KworICAgIFdLQ0FDRkxheWVyUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIoKSBjb25zdDsKKworICAg
IFdLQ0FDRkxheWVyKiByb290Q2hpbGRMYXllcigpIGNvbnN0OworICAgIHZvaWQgc2V0Um9vdENo
aWxkTGF5ZXIoUGFzc1JlZlB0cjxXS0NBQ0ZMYXllcj4pOworCitwcm90ZWN0ZWQ6CisgICAgc3Rh
dGljIExSRVNVTFQgQ0FMTEJBQ0sgc3RhdGljV25kUHJvYyhIV05ELCBVSU5UIG1lc3NhZ2UsIFdQ
QVJBTSwgTFBBUkFNKTsKKyAgICBMUkVTVUxUIHduZFByb2MoSFdORCwgVUlOVCBtZXNzYWdlLCBX
UEFSQU0sIExQQVJBTSk7CisKKyAgICBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50
KiBtX2NsaWVudDsKKyAgICBPd25QdHI8V0tDQUNGTGF5ZXJSZW5kZXJlcj4gbV9sYXllclJlbmRl
cmVyOworICAgIFJlZlB0cjxXS0NBQ0ZMYXllcj4gbV9yb290Q2hpbGQ7CisgICAgSFdORCBtX2h3
bmQ7Cit9OworCit9CisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVp
Y2tUaW1lVmlzdWFsQ29udGV4dC5jcHAJKHJldmlzaW9uIDYwMDQ4KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJRVE1vdmll
VGFzay5oIgogI2luY2x1ZGUgIlFUTW92aWVWaXN1YWxDb250ZXh0LmgiCiAjaW5jbHVkZSAiU2Ny
b2xsVmlldy5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU29mdExpbmtpbmcu
aCIKICNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgpA
QCAtMTUwLDcgKzE1MSwxNCBAQCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250
ZXh0CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6c3Vw
cG9ydHNGdWxsc2NyZWVuKCkgY29uc3QKIHsKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9wbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50
KCktPm1lZGlhUGxheWVyT3duaW5nRG9jdW1lbnQoKTsgCisgICAgaWYgKGRvY3VtZW50KQorICAg
ICAgICByZXR1cm4gZG9jdW1lbnQtPnNldHRpbmdzKCktPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdF
bmFibGVkKCk7CisgICAgcmV0dXJuIHRydWU7CisjZWxzZQogICAgIHJldHVybiBmYWxzZTsKKyNl
bmRpZgogfQogCiBQbGF0Zm9ybU1lZGlhIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3Vh
bENvbnRleHQ6OnBsYXRmb3JtTWVkaWEoKSBjb25zdApAQCAtNzU2LDE2ICs3NjQsMTYgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDbwogCiAgICAgICAgIFdLQ0FDRkxh
eWVyKiBsYXllciA9IHN0YXRpY19jYXN0PFdLQ0FDRkxheWVyKj4obV9xdFZpZGVvTGF5ZXItPnBs
YXRmb3JtTGF5ZXIoKSk7CiAKLSAgICAgICAgICAgIGlmICghYnVmZmVyLmxvY2tCYXNlQWRkcmVz
cygpKSB7Ci0gICAgICAgICAgICAgICBDRlRpbWVJbnRlcnZhbCBpbWFnZVRpbWUgPSBRVE1vdmll
VmlzdWFsQ29udGV4dDo6Y3VycmVudEhvc3RUaW1lKCk7CisgICAgICAgIGlmICghYnVmZmVyLmxv
Y2tCYXNlQWRkcmVzcygpKSB7CisgICAgICAgICAgIENGVGltZUludGVydmFsIGltYWdlVGltZSA9
IFFUTW92aWVWaXN1YWxDb250ZXh0OjpjdXJyZW50SG9zdFRpbWUoKTsKIAotICAgICAgICAgICAg
ICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBDcmVhdGVDR0ltYWdlRnJvbVBpeGVsQnVmZmVyKGJ1ZmZl
cik7Ci0gICAgICAgICAgICAgICAgbGF5ZXItPnNldENvbnRlbnRzKGltYWdlKTsKLSAgICAgICAg
ICAgICAgICBDR0ltYWdlUmVsZWFzZShpbWFnZSk7CisgICAgICAgICAgICBDR0ltYWdlUmVmIGlt
YWdlID0gQ3JlYXRlQ0dJbWFnZUZyb21QaXhlbEJ1ZmZlcihidWZmZXIpOworICAgICAgICAgICAg
bGF5ZXItPnNldENvbnRlbnRzKGltYWdlKTsKKyAgICAgICAgICAgIENHSW1hZ2VSZWxlYXNlKGlt
YWdlKTsKIAotICAgICAgICAgICAgICAgIGJ1ZmZlci51bmxvY2tCYXNlQWRkcmVzcygpOwotICAg
ICAgICAgICAgICAgIGxheWVyLT5yb290TGF5ZXIoKS0+c2V0TmVlZHNSZW5kZXIoKTsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJ1ZmZlci51bmxvY2tCYXNlQWRkcmVzcygpOworICAgICAg
ICAgICAgbGF5ZXItPnJvb3RMYXllcigpLT5zZXROZWVkc1JlbmRlcigpOworICAgICAgICB9CiAg
ICAgfSBlbHNlCiAjZW5kaWYKICAgICAgICAgbV9wbGF5ZXItPnJlcGFpbnQoKTsKQEAgLTkzOSw2
ICs5NDcsMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDbwogI2Vu
ZGlmCiAgICAgLy8gVGhlIGxheWVyIHdpbGwgZ2V0IGhvb2tlZCB1cCB2aWEgUmVuZGVyTGF5ZXJC
YWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVyQ29uZmlndXJhdGlvbigpLgogI2VuZGlmCisKKyAg
ICAvLyBmaWxsIHRoZSBuZXdseSBjcmVhdGVkIGxheWVyIHdpdGggaW1hZ2UgZGF0YSwgc28gd2Un
cmUgbm90IGxvb2tpbmcgYXQgCisgICAgLy8gYW4gZW1wdHkgbGF5ZXIgdW50aWwgdGhlIG5leHQg
dGltZSBhIG5ldyBpbWFnZSBpcyBhdmFpbGFibGUsIHdoaWNoIGNvdWxkCisgICAgLy8gYmUgYSBs
b25nIHRpbWUgaWYgd2UncmUgcGF1c2VkLgorICAgIGlmIChtX3Zpc3VhbENvbnRleHQpCisgICAg
ICAgIHJldHJpZXZlQ3VycmVudEltYWdlKCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6ZGVzdHJveUxheWVyRm9yTW92aWUoKQpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNGTGF5ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyLmNwcAkocmV2aXNpb24g
NjAwNDgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1NCw2ICsxNTQsNyBAQCBQYXNzUmVmUHRyPFdLQ0FDRkxheWVy
PiBXS0NBQ0ZMYXllcjo6Y3JlCiAKIFdLQ0FDRkxheWVyOjpXS0NBQ0ZMYXllcihMYXllclR5cGUg
dHlwZSkKICAgICA6IG1fbGF5ZXIoQWRvcHRDRiwgQ0FDRkxheWVyQ3JlYXRlKHRvQ0FDRkxheWVy
VHlwZSh0eXBlKSkpCisgICAgLCBtX2xheW91dENsaWVudCgwKQogICAgICwgbV9uZWVkc0Rpc3Bs
YXlPbkJvdW5kc0NoYW5nZShmYWxzZSkKIHsKICAgICBDQUNGTGF5ZXJTZXRVc2VyRGF0YShsYXll
cigpLCB0aGlzKTsKQEAgLTI4NiwxMSArMjg3LDEwIEBAIHZvaWQgIFdLQ0FDRkxheWVyOjphZG9w
dFN1YmxheWVycyhXS0NBQ0YKIHZvaWQgV0tDQUNGTGF5ZXI6OnJlbW92ZUZyb21TdXBlcmxheWVy
KCkKIHsKICAgICBXS0NBQ0ZMYXllciogc3VwZXJsYXllciA9IHRoaXMtPnN1cGVybGF5ZXIoKTsK
LSAgICBpZiAoIXN1cGVybGF5ZXIpCi0gICAgICAgIHJldHVybjsKLQogICAgIENBQ0ZMYXllclJl
bW92ZUZyb21TdXBlcmxheWVyKGxheWVyKCkpOwotICAgIHN1cGVybGF5ZXItPnNldE5lZWRzQ29t
bWl0KCk7CisKKyAgICBpZiAoc3VwZXJsYXllcikKKyAgICAgICAgc3VwZXJsYXllci0+c2V0TmVl
ZHNDb21taXQoKTsKIH0KIAogV0tDQUNGTGF5ZXIqIFdLQ0FDRkxheWVyOjppbnRlcm5hbFN1Ymxh
eWVyQXRJbmRleChpbnQgaW5kZXgpIGNvbnN0CkBAIC0zNDMsNiArMzQzLDE5IEBAIHZvaWQgV0tD
QUNGTGF5ZXI6OnNldEJvdW5kcyhjb25zdCBDR1JlY3QKICAgICAgICAgc2V0TmVlZHNEaXNwbGF5
KCk7CiB9CiAKK3ZvaWQgV0tDQUNGTGF5ZXI6OnNldEZyYW1lKGNvbnN0IENHUmVjdCYgcmVjdCkK
K3sKKyAgICBDR1JlY3Qgb2xkRnJhbWUgPSBmcmFtZSgpOworICAgIGlmIChDR1JlY3RFcXVhbFRv
UmVjdChyZWN0LCBvbGRGcmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAgIENBQ0ZMYXllclNl
dEZyYW1lKGxheWVyKCksIHJlY3QpOworICAgIHNldE5lZWRzQ29tbWl0KCk7CisKKyAgICBpZiAo
bV9uZWVkc0Rpc3BsYXlPbkJvdW5kc0NoYW5nZSkKKyAgICAgICAgc2V0TmVlZHNEaXNwbGF5KCk7
Cit9CisKIHZvaWQgV0tDQUNGTGF5ZXI6OnNldENvbnRlbnRzR3Jhdml0eShDb250ZW50c0dyYXZp
dHlUeXBlIHR5cGUpCiB7CiAgICAgQ0FDRkxheWVyU2V0Q29udGVudHNHcmF2aXR5KGxheWVyKCks
IHRvQ0FDRkNvbnRlbnRzR3Jhdml0eVR5cGUodHlwZSkpOwpAQCAtNDE4LDYgKzQzMSwzMiBAQCB2
b2lkIFdLQ0FDRkxheWVyOjppbnRlcm5hbFNldE5lZWRzRGlzcGxhCiAgICAgQ0FDRkxheWVyU2V0
TmVlZHNEaXNwbGF5KGxheWVyKCksIGRpcnR5UmVjdCk7CiB9CiAKK3ZvaWQgV0tDQUNGTGF5ZXI6
OnNldExheW91dENsaWVudChXS0NBQ0ZMYXllckxheW91dENsaWVudCogbGF5b3V0Q2xpZW50KQor
eworICAgIGlmIChsYXlvdXRDbGllbnQgPT0gbV9sYXlvdXRDbGllbnQpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fbGF5b3V0Q2xpZW50ID0gbGF5b3V0Q2xpZW50OworICAgIENBQ0ZMYXllclNl
dExheW91dENhbGxiYWNrKGxheWVyKCksIG1fbGF5b3V0Q2xpZW50ID8gJmxheW91dFN1YmxheWVy
c1Byb2MgOiAwKTsgICAgCit9CisKK3ZvaWQgV0tDQUNGTGF5ZXI6OmxheW91dFN1YmxheWVyc1By
b2MoQ0FDRkxheWVyUmVmIGNhTGF5ZXIpIAoreworICAgIFdLQ0FDRkxheWVyKiBsYXllciA9IFdL
Q0FDRkxheWVyOjpsYXllcihjYUxheWVyKTsKKyAgICBpZiAobGF5ZXIgJiYgbGF5ZXItPm1fbGF5
b3V0Q2xpZW50KQorICAgICAgICBsYXllci0+bV9sYXlvdXRDbGllbnQtPmxheW91dFN1YmxheWVy
c09mTGF5ZXIobGF5ZXIpOworfQorCitXS0NBQ0ZMYXllckxheW91dENsaWVudCogV0tDQUNGTGF5
ZXI6OmxheW91dENsaWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGF5b3V0Q2xpZW50Owor
fQorCit2b2lkIFdLQ0FDRkxheWVyOjpzZXROZWVkc0xheW91dCgpCit7CisgICAgQ0FDRkxheWVy
U2V0TmVlZHNMYXlvdXQobGF5ZXIoKSk7Cit9CisKICNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgdm9p
ZCBwcmludEluZGVudChpbnQgaW5kZW50KQogewpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vV0tDQUNGTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9XS0NBQ0ZMYXllci5oCShyZXZpc2lvbiA2MDA0OCkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDgg
KzQ0LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0tDQUNGQW5pbWF0aW9u
OwotY2xhc3MgV0tDQUNGVGltaW5nRnVuY3Rpb247CitjbGFzcyBXS0NBQ0ZMYXllcjsKKworY2xh
c3MgV0tDQUNGTGF5ZXJMYXlvdXRDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBs
YXlvdXRTdWJsYXllcnNPZkxheWVyKFdLQ0FDRkxheWVyKikgPSAwOworfTsKIAogY2xhc3MgV0tD
QUNGTGF5ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXS0NBQ0ZMYXllcj4gewogcHVibGljOgpAQCAt
NjMsNiArNjcsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdJbkNvbnRleHQo
UGxhdGZvcm1HcmFwaGljc0NvbnRleHQqKSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBzZXRMYXlv
dXRDbGllbnQoV0tDQUNGTGF5ZXJMYXlvdXRDbGllbnQqKTsKKyAgICB2aXJ0dWFsIFdLQ0FDRkxh
eWVyTGF5b3V0Q2xpZW50KiBsYXlvdXRDbGllbnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0TmVlZHNMYXlvdXQoKTsKKwogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KGNvbnN0IENHUmVj
dCogZGlydHlSZWN0ID0gMCkKICAgICB7CiAgICAgICAgIGludGVybmFsU2V0TmVlZHNEaXNwbGF5
KGRpcnR5UmVjdCk7CkBAIC0xNzMsNiArMTgxLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Rmls
dGVycyhDRkFycmF5UmVmIGZpbHRlcnMpIHsgQ0FDRkxheWVyU2V0RmlsdGVycyhsYXllcigpLCBm
aWx0ZXJzKTsgc2V0TmVlZHNDb21taXQoKTsgfQogICAgIENGQXJyYXlSZWYgZmlsdGVycygpIGNv
bnN0IHsgcmV0dXJuIENBQ0ZMYXllckdldEZpbHRlcnMobGF5ZXIoKSk7IH0KIAorICAgIHZpcnR1
YWwgdm9pZCBzZXRGcmFtZShjb25zdCBDR1JlY3QmKTsKKyAgICBDR1JlY3QgZnJhbWUoKSBjb25z
dCB7IHJldHVybiBDQUNGTGF5ZXJHZXRGcmFtZShsYXllcigpKTsgfQorCiAgICAgdm9pZCBzZXRI
aWRkZW4oYm9vbCBoaWRkZW4pIHsgQ0FDRkxheWVyU2V0SGlkZGVuKGxheWVyKCksIGhpZGRlbik7
IHNldE5lZWRzQ29tbWl0KCk7IH0KICAgICBib29sIGlzSGlkZGVuKCkgY29uc3QgeyByZXR1cm4g
Q0FDRkxheWVySXNIaWRkZW4obGF5ZXIoKSk7IH0KIApAQCAtMjYwLDggKzI3MSwxMSBAQCBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBwcmludExheWVyKGludCBpbmRlbnQpIGNvbnN0OwogI2VuZGlmCiAK
KyAgICBzdGF0aWMgdm9pZCBsYXlvdXRTdWJsYXllcnNQcm9jKENBQ0ZMYXllclJlZik7CisKIHBy
aXZhdGU6CiAgICAgUmV0YWluUHRyPENBQ0ZMYXllclJlZj4gbV9sYXllcjsKKyAgICBXS0NBQ0ZM
YXllckxheW91dENsaWVudCogbV9sYXlvdXRDbGllbnQ7CiAgICAgYm9vbCBtX25lZWRzRGlzcGxh
eU9uQm91bmRzQ2hhbmdlOwogfTsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vV2ViVGlsZWRMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vV2ViVGlsZWRMYXllci5jcHAJKHJldmlzaW9uIDYwMDQ4KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vV2ViVGlsZWRMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTczLDYgKzczLDE1IEBAIHZvaWQgV2ViVGlsZWRMYXllcjo6c2V0Qm91bmRzKGNvbnN0IENHUmUK
ICAgICB1cGRhdGVUaWxlcygpOwogfQogCit2b2lkIFdlYlRpbGVkTGF5ZXI6OnNldEZyYW1lKGNv
bnN0IENHUmVjdCYgcmVjdCkKK3sKKyAgICBpZiAoQ0dSZWN0RXF1YWxUb1JlY3QocmVjdCwgZnJh
bWUoKSkpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYkxheWVyOjpzZXRGcmFtZShyZWN0KTsK
KyAgICB1cGRhdGVUaWxlcygpOworfQorCiB2b2lkIFdlYlRpbGVkTGF5ZXI6OmludGVybmFsU2V0
TmVlZHNEaXNwbGF5KGNvbnN0IENHUmVjdCogZGlydHlSZWN0KQogewogICAgIC8vIEZJWE1FOiBP
bmx5IHNldE5lZWRzRGlzcGxheSBmb3IgdGlsZXMgdGhhdCBhcmUgY3VycmVudGx5IHZpc2libGUK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dlYlRpbGVkTGF5ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XZWJUaWxlZExheWVyLmgJ
KHJldmlzaW9uIDYwMDQ4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV2ViVGls
ZWRMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5XZWJUaWxlZExheWVyKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Qm91bmRzKGNv
bnN0IENHUmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFtZShjb25zdCBDR1JlY3QmKTsK
IAogcHJvdGVjdGVkOgogICAgIFdlYlRpbGVkTGF5ZXIoY29uc3QgQ0dTaXplJiB0aWxlU2l6ZSwg
R3JhcGhpY3NMYXllciogb3duZXIpOwpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDYwMDI3KQorKysgV2ViS2l0
L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0wNS0y
MiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGdWxsIHNjcmVlbiBkb2Vzbid0IHdvcmsgZm9y
IHZpZGVvIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zOTU1NworICAgICAgICByZGFyOi8vcHJvYmxlbS84MDExODEzCisgICAgICAgIAor
ICAgICAgICBNb2RpZmllZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyIHRvIHdvcmsgd2l0aCBN
ZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LiAgVGhlIEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXIKKyAgICAgICAgaXMgbm93IE1lZGlhUGxheWVyUHJpdmF0ZSBhZ25vc3RpYy4gIFRo
ZSBuZXcgZnVsbHNjcmVlbiB3aW5kb3cgaXMgbm90IGEgdG9wbW9zdCB3aW5kb3csIGFuZCBzbyB0
aGUgYmVoYXZpb3IgaGFzCisgICAgICAgIGJlZW4gY2hhbmdlZCB0byBleGl0IGZ1bGxzY3JlZW4g
bW9kZSB3aGVuIHRoZSBhcHBsaWNhdGlvbiBiZWNvbWVzIGluYWN0aXZlLgorCisgICAgICAgICog
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHA6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOjpMYXlvdXRDbGllbnQ6OkxheW91dENsaWVudCk6ICAKKyAgICAgICAgKEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheW91dENsaWVudDo6bGF5b3V0U3VibGF5ZXJzT2ZMYXll
cik6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6On5GdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6
OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpl
eGl0RnVsbHNjcmVlbik6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjcmVh
dGVIVURXaW5kb3cpOgorICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaDoKKwog
MjAxMC0wNS0yMSAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpJbmRleDogV2ViS2l0L3dpbi9GdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0Z1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2MDAyNykKKysrIFdlYktpdC93aW4vRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEyICszMCwxNiBA
QAogI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaCIKIAogI2luY2x1ZGUgIldl
YktpdERMTC5oIgorI2luY2x1ZGUgIldlYlZpZXcuaCIKICNpbmNsdWRlIDxBcHBsaWNhdGlvblNl
cnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0JpdG1hcElu
Zm8uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9u
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udFNlbGVjdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9HcmFwaGljc0NvbnRleHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1RleHRSdW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dLQ0FDRkxheWVyLmg+CiAj
aW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgog
I2luY2x1ZGUgPHdpbmRvd3N4Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAt
MTY5LDkgKzE3Myw1MyBAQCB2b2lkIEhVRFNsaWRlcjo6ZHJhZyhjb25zdCBJbnRQb2ludCYgcG9p
CiAgICAgbV9idXR0b25Qb3NpdGlvbiA9IG1heCgwLCBtaW4obV9yZWN0LndpZHRoKCkgLSBtX2J1
dHRvblNpemUsIHBvaW50LngoKSAtIG1fZHJhZ1N0YXJ0T2Zmc2V0KSk7CiB9CiAKK2NsYXNzIEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheW91dENsaWVudCA6IHB1YmxpYyBXS0NBQ0ZMYXll
ckxheW91dENsaWVudCB7CitwdWJsaWM6CisgICAgTGF5b3V0Q2xpZW50KEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXIqIHBhcmVudCk7CisgICAgdm9pZCBsYXlvdXRTdWJsYXllcnNPZkxheWVyKFdL
Q0FDRkxheWVyKiBsYXllcik7CisKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBtX3Bh
cmVudDsKK307CisKK0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheW91dENsaWVudDo6TGF5
b3V0Q2xpZW50KEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIHBhcmVudCkKKyAgICA6IG1fcGFy
ZW50KHBhcmVudCkKK3sKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpMYXlv
dXRDbGllbnQ6OmxheW91dFN1YmxheWVyc09mTGF5ZXIoV0tDQUNGTGF5ZXIqIGxheWVyKSAKK3sK
KyAgICBpZiAobGF5ZXIgIT0gbV9wYXJlbnQtPm1fcm9vdENoaWxkKSAKKyAgICAgICAgcmV0dXJu
OworCisgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gbV9wYXJlbnQtPm1fbWVk
aWFFbGVtZW50LmdldCgpOworICAgIGlmICghbWVkaWFFbGVtZW50KQorICAgICAgICByZXR1cm47
CisKKyAgICBXS0NBQ0ZMYXllciogdmlkZW9MYXllciA9IG1lZGlhRWxlbWVudC0+cGxhdGZvcm1M
YXllcigpOworICAgIGlmICghdmlkZW9MYXllciB8fCB2aWRlb0xheWVyLT5zdXBlcmxheWVyKCkg
IT0gbGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIEZsb2F0UG9pbnQgdmlkZW9BbmNob3Ig
PSB2aWRlb0xheWVyLT5hbmNob3JQb2ludCgpOworICAgIEZsb2F0UmVjdCBsYXllckJvdW5kcyA9
IGxheWVyLT5ib3VuZHMoKTsKKworICAgIEZsb2F0U2l6ZSB2aWRlb1NpemUgPSBtZWRpYUVsZW1l
bnQtPnBsYXllcigpLT5uYXR1cmFsU2l6ZSgpOworICAgIGZsb2F0IHNjYWxlRmFjdG9yOworICAg
IGlmICh2aWRlb1NpemUuYXNwZWN0UmF0aW8oKSA+IGxheWVyQm91bmRzLnNpemUoKS5hc3BlY3RS
YXRpbygpKQorICAgICAgICBzY2FsZUZhY3RvciA9IGxheWVyQm91bmRzLndpZHRoKCkgLyB2aWRl
b1NpemUud2lkdGgoKTsKKyAgICBlbHNlCisgICAgICAgIHNjYWxlRmFjdG9yID0gbGF5ZXJCb3Vu
ZHMuaGVpZ2h0KCkgLyB2aWRlb1NpemUuaGVpZ2h0KCk7CisgICAgdmlkZW9TaXplLnNjYWxlKHNj
YWxlRmFjdG9yKTsKKworICAgIC8vIENhbGN1bGF0ZSB0aGUgY2VudGVyZWQgcG9zaXRpb24gYmFz
ZWQgb24gdGhlIHZpZGVvQW5jaG9yLCB2aWRlb0JvdW5kcywgYW5kIGxheWVyQm91bmRzOgorICAg
IEZsb2F0UG9pbnQgdmlkZW9Qb3NpdGlvbjsKKyAgICBGbG9hdFBvaW50IHZpZGVvT3JpZ2luOwor
ICAgIHZpZGVvT3JpZ2luLnNldFgoKGxheWVyQm91bmRzLndpZHRoKCkgLSB2aWRlb1NpemUud2lk
dGgoKSkgKiAwLjUpOworICAgIHZpZGVvT3JpZ2luLnNldFkoKGxheWVyQm91bmRzLmhlaWdodCgp
IC0gdmlkZW9TaXplLmhlaWdodCgpKSAqIDAuNSk7CisgICAgdmlkZW9MYXllci0+c2V0RnJhbWUo
RmxvYXRSZWN0KHZpZGVvT3JpZ2luLCB2aWRlb1NpemUpKTsKK30KKwogRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcigpCiAgICAgOiBtX2h1ZFdpbmRv
dygwKQotICAgICwgbV92aWRlb1dpbmRvdygwKQogICAgICwgbV9wbGF5UGF1c2VCdXR0b24oSFVE
QnV0dG9uOjpQbGF5UGF1c2VCdXR0b24sIEludFBvaW50KCh3aW5kb3dXaWR0aCAtIGJ1dHRvblNp
emUpIC8gMiwgbWFyZ2luVG9wKSkKICAgICAsIG1fdGltZVNsaWRlckJ1dHRvbihIVURCdXR0b246
OlRpbWVTbGlkZXJCdXR0b24sIEludFBvaW50KDAsIDApKQogICAgICwgbV92b2x1bWVVcEJ1dHRv
bihIVURCdXR0b246OlZvbHVtZVVwQnV0dG9uLCBJbnRQb2ludChtYXJnaW4gKyBidXR0b25NaW5p
U2l6ZSArIHZvbHVtZVNsaWRlcldpZHRoICsgYnV0dG9uTWluaVNpemUgLyAyLCBtYXJnaW5Ub3Ag
KyAoYnV0dG9uU2l6ZSAtIGJ1dHRvbk1pbmlTaXplKSAvIDIpKQpAQCAtMTgzLDI1ICsyMzEsMjAg
QEAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6RnVsbHNjcmVlblZpZAogICAgICwgbV9oaXRX
aWRnZXQoMCkKICAgICAsIG1fbW92aW5nV2luZG93KGZhbHNlKQogICAgICwgbV90aW1lcih0aGlz
LCAmRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dGltZXJGaXJlZCkKKyAgICAsIG1fcm9vdENo
aWxkKFdLQ0FDRkxheWVyOjpjcmVhdGUoV0tDQUNGTGF5ZXI6OkxheWVyKSkKKyAgICAsIG1fbGF5
b3V0Q2xpZW50KG5ldyBMYXlvdXRDbGllbnQodGhpcykpCiB7CisgICAgbV9yb290Q2hpbGQtPnNl
dExheW91dENsaWVudChtX2xheW91dENsaWVudC5nZXQoKSk7CiB9CiAKIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXI6On5GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCkKIHsKLSAgICBpZiAobW92
aWUoKSkKLSAgICAgICAgbW92aWUoKS0+ZXhpdEZ1bGxzY3JlZW4oKTsKLX0KKyAgICBtX3Jvb3RD
aGlsZC0+c2V0TGF5b3V0Q2xpZW50KDApOwogCi1RVE1vdmllR1dvcmxkKiBGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyOjptb3ZpZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX21lZGlhRWxlbWVudCkK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBQbGF0Zm9ybU1lZGlhIHBsYXRmb3JtTWVkaWEgPSBt
X21lZGlhRWxlbWVudC0+cGxhdGZvcm1NZWRpYSgpOwotICAgIGlmIChwbGF0Zm9ybU1lZGlhLnR5
cGUgIT0gUGxhdGZvcm1NZWRpYTo6UVRNb3ZpZUdXb3JsZFR5cGUpCi0gICAgICAgIHJldHVybiAw
OwotCi0gICAgcmV0dXJuIHBsYXRmb3JtTWVkaWEubWVkaWEucXRNb3ZpZUdXb3JsZDsKKyAgICBp
ZiAobV9mdWxsc2NyZWVuV2luZG93KSB7CisgICAgICAgIG1fZnVsbHNjcmVlbldpbmRvdy0+Y2xv
c2UoKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuV2luZG93ID0gMDsKKyAgICB9CiB9CiAKIHZvaWQg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6c2V0TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1l
bnQqIG1lZGlhRWxlbWVudCkKQEAgLTIxOCwxMyArMjYxLDE4IEBAIHZvaWQgRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcjo6c2V0TWVkaWEKIAogdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
OjplbnRlckZ1bGxzY3JlZW4oKQogewotICAgIGlmICghbW92aWUoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbV92aWRlb1dpbmRvdyA9IG1vdmllKCktPmVudGVyRnVsbHNjcmVlbih0aGlzKTsK
KyAgICBpZiAoIW1fZnVsbHNjcmVlbldpbmRvdykgeworICAgICAgICBtX2Z1bGxzY3JlZW5XaW5k
b3cgPSBuZXcgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdyh0aGlzKTsKKyAgICAg
ICAgbV9mdWxsc2NyZWVuV2luZG93LT5jcmVhdGVXaW5kb3coKTsKKyAgICAgICAgbV9mdWxsc2Ny
ZWVuV2luZG93LT5zZXRSb290Q2hpbGRMYXllcihtX3Jvb3RDaGlsZCk7CisgICAgfQogCisgICAg
V0tDQUNGTGF5ZXIqIHZpZGVvTGF5ZXIgPSBtX21lZGlhRWxlbWVudC0+cGxheWVyKCktPnBsYXRm
b3JtTGF5ZXIoKTsKKyAgICBtX3Jvb3RDaGlsZC0+YWRkU3VibGF5ZXIodmlkZW9MYXllcik7Cisg
ICAgbV9yb290Q2hpbGQtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgCiAgICAgUkVDVCB3aW5kb3dS
ZWN0OwotICAgIEdldENsaWVudFJlY3QobV92aWRlb1dpbmRvdywgJndpbmRvd1JlY3QpOworICAg
IEdldENsaWVudFJlY3QobV9mdWxsc2NyZWVuV2luZG93LT5od25kKCksICZ3aW5kb3dSZWN0KTsK
ICAgICBtX2Z1bGxzY3JlZW5TaXplLnNldFdpZHRoKHdpbmRvd1JlY3QucmlnaHQgLSB3aW5kb3dS
ZWN0LmxlZnQpOwogICAgIG1fZnVsbHNjcmVlblNpemUuc2V0SGVpZ2h0KHdpbmRvd1JlY3QuYm90
dG9tIC0gd2luZG93UmVjdC50b3ApOwogCkBAIC0yMzMsMTMgKzI4MSwyOCBAQCB2b2lkIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVudGVyRnVsCiAKIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcjo6ZXhpdEZ1bGxzY3JlZW4oKQogewotICAgIFNldFdpbmRvd0xvbmdQdHIobV9odWRX
aW5kb3csIDAsIDApOwotICAgIGlmIChtb3ZpZSgpKQotICAgICAgICBtb3ZpZSgpLT5leGl0RnVs
bHNjcmVlbigpOwotCi0gICAgQVNTRVJUKCFJc1dpbmRvdyhtX2h1ZFdpbmRvdykpOwotICAgIG1f
dmlkZW9XaW5kb3cgPSAwOwotICAgIG1faHVkV2luZG93ID0gMDsKKyAgICBpZiAobV9mdWxsc2Ny
ZWVuV2luZG93KSB7CisgICAgICAgIG1fZnVsbHNjcmVlbldpbmRvdy0+Y2xvc2UoKTsKKyAgICAg
ICAgbV9mdWxsc2NyZWVuV2luZG93LT5zZXRSb290Q2hpbGRMYXllcigwKTsKKyAgICAgICAgbV9m
dWxsc2NyZWVuV2luZG93ID0gMDsKKyAgICB9CisKKyAgICBpZiAobV9odWRXaW5kb3cpIHsKKyAg
ICAgICAgU2V0V2luZG93TG9uZ1B0cihtX2h1ZFdpbmRvdywgMCwgMCk7CisgICAgICAgIDo6RGVz
dHJveVdpbmRvdyhtX2h1ZFdpbmRvdyk7CisgICAgICAgIG1faHVkV2luZG93ID0gMDsKKyAgICB9
CisKKyAgICAvLyBXZSBwcmV2aW91c2x5IHJpcHBlZCB0aGUgbWVkaWFFbGVtZW50J3MgcGxhdGZv
cm0gbGF5ZXIgb3V0CisgICAgLy8gb2YgaXQncyBvcmdpbmlhbCBsYXllciB0cmVlIHRvIGRpc3Bs
YXkgaXQgaW4gb3VyIGZ1bGxzY3JlZW4KKyAgICAvLyB3aW5kb3cuICBOb3csIHdlIG5lZWQgdG8g
Z2V0IHRoZSBsYXllciBiYWNrIGluIGl0cyBvcmlnaW5hbAorICAgIC8vIHRyZWUuCisgICAgLy8g
CisgICAgLy8gQXMgYSBzaWRlIGVmZmVjdCBvZiBzZXR0aW5nIHRoZSBwbGF5ZXIgdG8gaW52aXNp
YmxlL3Zpc2libGUsCisgICAgLy8gdGhlIHBsYXllcidzIGxheWVyIHdpbGwgYmUgcmVjcmVhdGVk
LCBhbmQgd2lsbCBiZSBwaWNrZWQgdXAgCisgICAgLy8gdGhlIG5leHQgdGltZSB0aGUgbGF5ZXIg
dHJlZSBpcyBzeW5jaGVkLgorICAgIG1fbWVkaWFFbGVtZW50LT5wbGF5ZXIoKS0+c2V0VmlzaWJs
ZSgwKTsKKyAgICBtX21lZGlhRWxlbWVudC0+cGxheWVyKCktPnNldFZpc2libGUoMSk7CiB9CiAK
IGJvb2wgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Y2FuUGxheSgpIGNvbnN0CkBAIC0zMDgs
NiArMzcxLDkgQEAgTFJFU1VMVCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpmdWxscwogICAg
IGNhc2UgV01fQ0hBUjoKICAgICAgICAgb25DaGFyKHdQYXJhbSk7CiAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgV01fS0VZRE9XTjoKKyAgICAgICAgb25LZXlEb3duKHdQYXJhbSk7CisgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgV01fTEJVVFRPTkRPV046CiAgICAgICAgIG9uTW91c2VEb3duKElu
dFBvaW50KEdFVF9YX0xQQVJBTShsUGFyYW0pLCBHRVRfWV9MUEFSQU0obFBhcmFtKSkpOwogICAg
ICAgICBicmVhazsKQEAgLTMxNywxMSArMzgzLDI1IEBAIExSRVNVTFQgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6ZnVsbHMKICAgICBjYXNlIFdNX0xCVVRUT05VUDoKICAgICAgICAgb25Nb3Vz
ZVVwKEludFBvaW50KEdFVF9YX0xQQVJBTShsUGFyYW0pLCBHRVRfWV9MUEFSQU0obFBhcmFtKSkp
OwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFdNX0FDVElWQVRFQVBQOgorICAgICAgICBpZiAo
IXdQYXJhbSkKKyAgICAgICAgICAgIG1fbWVkaWFFbGVtZW50LT5leGl0RnVsbHNjcmVlbigpOwor
ICAgICAgICBicmVhazsKICAgICB9CiAKICAgICByZXR1cm4gRGVmV2luZG93UHJvYyh3bmQsIG1l
c3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsKIH0KIAorSFdORCBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyOjpwYXJlbnRIV05EKCkKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQpIHsKKyAgICAgICAg
V2ViVmlldyogd2ViVmlldyA9IGtpdChtX21lZGlhRWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgp
KTsKKyAgICAgICAgaWYgKHdlYlZpZXcpCisgICAgICAgICAgICByZXR1cm4gd2ViVmlldy0+dG9w
TGV2ZWxQYXJlbnQoKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBjb25zdCBM
UENXU1RSIGZ1bGxzY3JlZW5WaWRlZW9IVURXaW5kb3dDbGFzc05hbWUgPSBMImZ1bGxzY3JlZW5W
aWRlZW9IVURXaW5kb3dDbGFzcyI7CiAKIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6
cmVnaXN0ZXJIVURXaW5kb3dDbGFzcygpCkBAIC0zNjQsNyArNDQ0LDcgQEAgdm9pZCBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjpjcmVhdGVIVQogICAgIAogICAgIC8vIERpcnR5IHRoZSB3aW5k
b3cgc28gdGhlIEhVRCBkcmF3cwogICAgIFJFQ1QgY2xlYXJSZWN0ID0geyBtX2h1ZFBvc2l0aW9u
LngoKSwgbV9odWRQb3NpdGlvbi55KCksIG1faHVkUG9zaXRpb24ueCgpICsgd2luZG93V2lkdGgs
IG1faHVkUG9zaXRpb24ueSgpICsgd2luZG93SGVpZ2h0IH07Ci0gICAgSW52YWxpZGF0ZVJlY3Qo
bV92aWRlb1dpbmRvdywgJmNsZWFyUmVjdCwgdHJ1ZSk7CisgICAgSW52YWxpZGF0ZVJlY3QobV9m
dWxsc2NyZWVuV2luZG93LT5od25kKCksICZjbGVhclJlY3QsIHRydWUpOwogCiAgICAgbV9wbGF5
UGF1c2VCdXR0b24uc2V0U2hvd0FsdEJ1dHRvbighY2FuUGxheSgpKTsKICAgICBtX3ZvbHVtZVNs
aWRlci5zZXRWYWx1ZSh2b2x1bWUoKSk7CkBAIC0zNzcsNyArNDU3LDcgQEAgdm9pZCBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjpjcmVhdGVIVQogCiAgICAgbV9odWRXaW5kb3cgPSBDcmVhdGVX
aW5kb3dFeChXU19FWF9MQVlFUkVEIHwgV1NfRVhfVFJBTlNQQVJFTlQgfCBXU19FWF9UT09MV0lO
RE9XLCAKICAgICAgICAgZnVsbHNjcmVlblZpZGVlb0hVRFdpbmRvd0NsYXNzTmFtZSwgMCwgV1Nf
UE9QVVAgfCBXU19WSVNJQkxFLAotICAgICAgICBtX2h1ZFBvc2l0aW9uLngoKSwgbV9odWRQb3Np
dGlvbi55KCksIDAsIDAsIG1fdmlkZW9XaW5kb3csIDAsIGdJbnN0YW5jZSwgMCk7CisgICAgICAg
IG1faHVkUG9zaXRpb24ueCgpLCBtX2h1ZFBvc2l0aW9uLnkoKSwgMCwgMCwgbV9mdWxsc2NyZWVu
V2luZG93LT5od25kKCksIDAsIGdJbnN0YW5jZSwgMCk7CiAgICAgQVNTRVJUKDo6SXNXaW5kb3co
bV9odWRXaW5kb3cpKTsKICAgICBTZXRXaW5kb3dMb25nUHRyKG1faHVkV2luZG93LCAwLCByZWlu
dGVycHJldF9jYXN0PExPTkdfUFRSPih0aGlzKSk7CiAKQEAgLTQ4OCw2ICs1NjgsOSBAQCBMUkVT
VUxUIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Omh1ZFduCiAgICAgY2FzZSBXTV9DSEFSOgog
ICAgICAgICBjb250cm9sbGVyLT5vbkNoYXIod1BhcmFtKTsKICAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBXTV9LRVlET1dOOgorICAgICAgICBjb250cm9sbGVyLT5vbktleURvd24od1BhcmFtKTsK
KyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXTV9MQlVUVE9ORE9XTjoKICAgICAgICAgY29udHJv
bGxlci0+b25Nb3VzZURvd24oSW50UG9pbnQoR0VUX1hfTFBBUkFNKGxQYXJhbSksIEdFVF9ZX0xQ
QVJBTShsUGFyYW0pKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTExLDYgKzU5NCwxNCBAQCB2b2lk
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Om9uQ2hhcihpCiAgICAgICAgIHRvZ2dsZVBsYXko
KTsKIH0KIAordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpvbktleURvd24oaW50IHZp
cnR1YWxLZXkpCit7CisgICAgaWYgKHZpcnR1YWxLZXkgPT0gVktfRVNDQVBFKSB7CisgICAgICAg
IGlmIChtX21lZGlhRWxlbWVudCkKKyAgICAgICAgICAgIG1fbWVkaWFFbGVtZW50LT5leGl0RnVs
bHNjcmVlbigpOworICAgIH0KK30KKwogdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp0
aW1lckZpcmVkKFRpbWVyPEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI+KikKIHsKICAgICAvLyBV
cGRhdGUgdGhlIHRpbWUgc2xpZGVyCkluZGV4OiBXZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIuaAkocmV2aXNpb24gNjAwMjcpCisrKyBXZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5BQkxF
KFZJREVPKQogCi0jaW5jbHVkZSAiUVRNb3ZpZUdXb3JsZC5oIgorI2luY2x1ZGUgIk1lZGlhUGxh
eWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaCIKIAogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE1l
ZGlhRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2UuaD4KQEAgLTM4LDYgKzM4LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3Mg
V0tDQUNGTGF5ZXI7CiB9CiAKIGNsYXNzIEhVRFdpZGdldCB7CkBAIC05OSw3ICsxMDAsNyBAQCBw
cml2YXRlOgogICAgIGludCBtX2RyYWdTdGFydE9mZnNldDsKIH07CiAKLWNsYXNzIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXIgOiBRVE1vdmllR1dvcmxkRnVsbHNjcmVlbkNsaWVudCwgcHVibGlj
IE5vbmNvcHlhYmxlIHsKK2NsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIgOiBXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50LCBwdWJsaWMgTm9uY29weWFibGUg
ewogcHVibGljOgogICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIoKTsKICAgICB2aXJ0dWFs
IH5GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCk7CkBAIC0xMTEsMTIgKzExMiwxMiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBleGl0RnVsbHNjcmVlbigpOwogCiBwcml2YXRlOgotICAgIC8vIFFUTW92
aWVHV29ybGRGdWxsc2NyZWVuQ2xpZW50CisgICAgLy8gTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNj
cmVlbldpbmRvd0NsaWVudAogICAgIHZpcnR1YWwgTFJFU1VMVCBmdWxsc2NyZWVuQ2xpZW50V25k
UHJvYyhIV05ELCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSwgTFBBUkFNKTsKKyAgICB2aXJ0dWFsIEhX
TkQgcGFyZW50SFdORCgpOwogCiAgICAgdm9pZCBlbnN1cmVXaW5kb3coKTsKLSAgICBRVE1vdmll
R1dvcmxkKiBtb3ZpZSgpIGNvbnN0OwotCisgICAgCiAgICAgYm9vbCBjYW5QbGF5KCkgY29uc3Q7
CiAgICAgdm9pZCBwbGF5KCk7CiAgICAgdm9pZCBwYXVzZSgpOwpAQCAtMTQ1LDEzICsxNDYsMjAg
QEAgcHJpdmF0ZToKICAgICB2b2lkIG9uTW91c2VEb3duKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
Jik7CiAgICAgdm9pZCBvbk1vdXNlTW92ZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAg
IHZvaWQgb25Nb3VzZVVwKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisgICAgdm9pZCBvbktl
eURvd24oaW50IHZpcnR1YWxLZXkpOwogCiAgICAgUmVmUHRyPFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ+IG1fbWVkaWFFbGVtZW50OwogCi0gICAgSFdORCBtX2h1ZFdpbmRvdywgbV92aWRlb1dp
bmRvdzsKKyAgICBIV05EIG1faHVkV2luZG93OwogICAgIE93blB0cjxIQklUTUFQPiBtX2JpdG1h
cDsKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fZnVsbHNjcmVlblNpemU7CiAgICAgV2ViQ29yZTo6
SW50UG9pbnQgbV9odWRQb3NpdGlvbjsKKyAgICBPd25QdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlRnVsbHNjcmVlbldpbmRvdz4gbV9mdWxsc2NyZWVuV2luZG93OworICAgIFJlZlB0cjxX
ZWJDb3JlOjpXS0NBQ0ZMYXllcj4gbV9yb290Q2hpbGQ7CisKKyAgICBjbGFzcyBMYXlvdXRDbGll
bnQ7CisgICAgZnJpZW5kIGNsYXNzIExheW91dENsaWVudDsKKyAgICBPd25QdHI8TGF5b3V0Q2xp
ZW50PiBtX2xheW91dENsaWVudDsKIAogICAgIEhVREJ1dHRvbiBtX3BsYXlQYXVzZUJ1dHRvbjsK
ICAgICBIVURCdXR0b24gbV90aW1lU2xpZGVyQnV0dG9uOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjAw
MjgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
MSBAQAorMjAxMC0wNS0yMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGdWxsIHNjcmVlbiBk
b2Vzbid0IHdvcmsgZm9yIHZpZGVvIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTU1NworICAgICAgICByZGFyOi8vcHJvYmxlbS84MDEx
ODEzCisKKyAgICAgICAgUmUtZW5hYmxlZCBmdWxsc2NyZWVuIHN1cHBvcnQgb24gd2luZG93cywg
YW5kIG1vZGlmaWVkIHRlc3RzIHRvIG1hdGNoLgorCisgICAgICAgICogcGxhdGZvcm0vd2luL21l
ZGlhL2NvbnRyb2xzLWFmdGVyLXJlbG9hZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZv
cm0vd2luL21lZGlhL2NvbnRyb2xzLWRyYWctdGltZWJhci1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogcGxhdGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLXN0cmljdC1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLXN0eWxpbmctZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9tZWRpYS92aWRlby1jb250cm9scy1yZW5kZXJpbmctZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9tZWRpYS92aWRlby1kaXNwbGF5LXRv
Z2dsZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vd2luL21lZGlhL3ZpZGVvLW5v
LWF1ZGlvLWV4cGVjdGVkLnR4dDoKKwogMjAxMC0wNS0yMiAgTWFjaWVqIFN0YWNob3dpYWsgIDxt
anNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvY29udHJvbHMtYWZ0ZXItcmVsb2FkLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEv
Y29udHJvbHMtYWZ0ZXItcmVsb2FkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjAwMjcpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvY29udHJvbHMtYWZ0ZXItcmVsb2FkLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTcsOSArMTcsMTAgQEAgbGF5ZXIgYXQgKDgsNDIp
IHNpemUgMzIweDI0MAogbGF5ZXIgYXQgKDgsMjY2KSBzaXplIDMyMHgxNgogICBSZW5kZXJGbGV4
aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMjI0KSBzaXplIDMyMHgxNgogICAgIFJl
bmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUgMTZ4MTYKLSAgICBSZW5kZXJGbGV4aWJs
ZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNTZ4MTYKLSAgICAgIFJlbmRlclNsaWRlciB7SU5Q
VVR9IGF0ICgwLDApIHNpemUgMjU2eDE2CisgICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQg
KDE2LDApIHNpemUgMjQweDE2CisgICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBz
aXplIDI0MHgxNgogICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiwxKSBzaXplIDEzeDE0
CisgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI1NiwwKSBzaXplIDE2eDE2CiAgICAgUmVu
ZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI3MiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9u
IHtJTlBVVH0gYXQgKDI4OCwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0g
YXQgKDMwNCwwKSBzaXplIDE2eDE2CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVk
aWEvY29udHJvbHMtZHJhZy10aW1lYmFyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvY29udHJvbHMtZHJhZy10aW1lYmFyLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gNjAwMjcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEv
Y29udHJvbHMtZHJhZy10aW1lYmFyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCwx
MCArNCwxMCBAQCBSVU4odmlkZW8uYXV0b3BsYXkgPSB0cnVlKQogUlVOKHZpZGVvLnNyYyA9ICdj
b250ZW50L3Rlc3QubXA0JykKIEVWRU5UKHBsYXlpbmcpCiBFVkVOVChzZWVrZWQpCi1UaW1lOiAy
LjEKK1RpbWU6IDIuMwogRVZFTlQoc2Vla2VkKQotVGltZTogMi42CitUaW1lOiAyLjgKIEVWRU5U
KHNlZWtlZCkKLVRpbWU6IDMuMQorVGltZTogMy40CiBFTkQgT0YgVEVTVAogCkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvY29udHJvbHMtc3RyaWN0LWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvY29udHJvbHMtc3Ry
aWN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjAwMjcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW4vbWVkaWEvY29udHJvbHMtc3RyaWN0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTcsOSArMTcsMTAgQEAgbGF5ZXIgYXQgKDgsNTApIHNpemUgMzIweDI0MAogbGF5ZXIgYXQg
KDgsMjc0KSBzaXplIDMyMHgxNgogICBSZW5kZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJ
Vn0gYXQgKDAsMjI0KSBzaXplIDMyMHgxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgw
LDApIHNpemUgMTZ4MTYKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6
ZSAyNTZ4MTYKLSAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjU2eDE2
CisgICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUgMjQweDE2CisgICAg
ICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI0MHgxNgogICAgICAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMiwxKSBzaXplIDEzeDE0CisgICAgUmVuZGVyQnV0dG9uIHtJTlBV
VH0gYXQgKDI1NiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI3
MiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI4OCwwKSBzaXpl
IDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMwNCwwKSBzaXplIDE2eDE2Cklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvY29udHJvbHMtc3R5bGluZy1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL2Nv
bnRyb2xzLXN0eWxpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MDAyNykKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1zdHlsaW5nLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMjEsOSArMjEsMTAgQEAgbGF5ZXIgYXQgKDE4LDQyKSBzaXplIDMyMHgy
NDAKIGxheWVyIGF0ICgxOCwyNjYpIHNpemUgMzIweDE2CiAgIFJlbmRlckZsZXhpYmxlQm94IChw
b3NpdGlvbmVkKSB7RElWfSBhdCAoMCwyMjQpIHNpemUgMzIweDE2CiAgICAgUmVuZGVyQnV0dG9u
IHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAxNngxNgotICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9
IGF0ICgxNiwwKSBzaXplIDI1NngxNgotICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAs
MCkgc2l6ZSAyNTZ4MTYKKyAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6
ZSAyNDB4MTYKKyAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjQweDE2
CiAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDEpIHNpemUgMTN4MTQKKyAgICBSZW5k
ZXJCdXR0b24ge0lOUFVUfSBhdCAoMjU2LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24g
e0lOUFVUfSBhdCAoMjcyLDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBh
dCAoMjg4LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzA0LDAp
IHNpemUgMTZ4MTYKQEAgLTMyLDkgKzMzLDEwIEBAIGxheWVyIGF0ICg4LDI4Mikgc2l6ZSAzMjB4
MjQwCiBsYXllciBhdCAoOCw1MDYpIHNpemUgMzIweDE2CiAgIFJlbmRlckZsZXhpYmxlQm94IChw
b3NpdGlvbmVkKSB7RElWfSBhdCAoMCwyMjQpIHNpemUgMzIweDE2CiAgICAgUmVuZGVyQnV0dG9u
IHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAxNngxNgotICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9
IGF0ICgxNiwwKSBzaXplIDI1NngxNgotICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAs
MCkgc2l6ZSAyNTZ4MTYKKyAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6
ZSAyNDB4MTYKKyAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjQweDE2
CiAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDEpIHNpemUgMTN4MTQKKyAgICBSZW5k
ZXJCdXR0b24ge0lOUFVUfSBhdCAoMjU2LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24g
e0lOUFVUfSBhdCAoMjcyLDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBh
dCAoMjg4LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzA0LDAp
IHNpemUgMTZ4MTYKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS92aWRlby1j
b250cm9scy1yZW5kZXJpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9tZWRpYS92aWRlby1jb250cm9scy1yZW5kZXJpbmctZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiA2MDAyNykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS92aWRl
by1jb250cm9scy1yZW5kZXJpbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMCw5
ICsyMCwxMCBAQCBsYXllciBhdCAoOCw0Mikgc2l6ZSAzMjB4MjQwCiBsYXllciBhdCAoOCwyNjYp
IHNpemUgMzIweDE2CiAgIFJlbmRlckZsZXhpYmxlQm94IChwb3NpdGlvbmVkKSB7RElWfSBhdCAo
MCwyMjQpIHNpemUgMzIweDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDAsMCkgc2l6
ZSAxNngxNgotICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI1Nngx
NgotICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNTZ4MTYKKyAgICBS
ZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNDB4MTYKKyAgICAgIFJlbmRl
clNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjQweDE2CiAgICAgICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgyLDEpIHNpemUgMTN4MTQKKyAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAo
MjU2LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjcyLDApIHNp
emUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjg4LDApIHNpemUgMTZ4MTYK
ICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzA0LDApIHNpemUgMTZ4MTYKQEAgLTMxLDkg
KzMyLDEwIEBAIGxheWVyIGF0ICg4LDI4Mikgc2l6ZSAzMjB4MjQwCiBsYXllciBhdCAoOCw1MDYp
IHNpemUgMzIweDE2CiAgIFJlbmRlckZsZXhpYmxlQm94IChwb3NpdGlvbmVkKSB7RElWfSBhdCAo
MCwyMjQpIHNpemUgMzIweDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDAsMCkgc2l6
ZSAxNngxNgotICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI1Nngx
NgotICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNTZ4MTYKKyAgICBS
ZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNDB4MTYKKyAgICAgIFJlbmRl
clNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjQweDE2CiAgICAgICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgyLDEpIHNpemUgMTN4MTQKKyAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAo
MjU2LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjcyLDApIHNp
emUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjg4LDApIHNpemUgMTZ4MTYK
ICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzA0LDApIHNpemUgMTZ4MTYKQEAgLTQ0LDkg
KzQ2LDEwIEBAIGxheWVyIGF0ICg4LDUyMikgc2l6ZSAzMjB4MjQwCiBsYXllciBhdCAoOCw3NDYp
IHNpemUgMzIweDE2CiAgIFJlbmRlckZsZXhpYmxlQm94IChwb3NpdGlvbmVkKSB7RElWfSBhdCAo
MCwyMjQpIHNpemUgMzIweDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDAsMCkgc2l6
ZSAxNngxNgotICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI1Nngx
NgotICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNTZ4MTYKKyAgICBS
ZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNDB4MTYKKyAgICAgIFJlbmRl
clNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjQweDE2CiAgICAgICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgyLDEpIHNpemUgMTN4MTQKKyAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAo
MjU2LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjcyLDApIHNp
emUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjg4LDApIHNpemUgMTZ4MTYK
ICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzA0LDApIHNpemUgMTZ4MTYKSW5kZXg6IExh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS92aWRlby1kaXNwbGF5LXRvZ2dsZS1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL3ZpZGVv
LWRpc3BsYXktdG9nZ2xlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjAwMjcpCisrKyBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvdmlkZW8tZGlzcGxheS10b2dnbGUtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xNiw5ICsxNiwxMCBAQCBsYXllciBhdCAoOCwyNikgc2l6ZSAz
MjB4MjQwCiBsYXllciBhdCAoOCwyNTApIHNpemUgMzIweDE2CiAgIFJlbmRlckZsZXhpYmxlQm94
IChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCwyMjQpIHNpemUgMzIweDE2CiAgICAgUmVuZGVyQnV0
dG9uIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAxNngxNgotICAgIFJlbmRlckZsZXhpYmxlQm94IHtE
SVZ9IGF0ICgxNiwwKSBzaXplIDI1NngxNgotICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQg
KDAsMCkgc2l6ZSAyNTZ4MTYKKyAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkg
c2l6ZSAyNDB4MTYKKyAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjQw
eDE2CiAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDEpIHNpemUgMTN4MTQKKyAgICBS
ZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjU2LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0
b24ge0lOUFVUfSBhdCAoMjcyLDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVU
fSBhdCAoMjg4LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzA0
LDApIHNpemUgMTZ4MTYKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS92aWRl
by1uby1hdWRpby1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL21lZGlhL3ZpZGVvLW5vLWF1ZGlvLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjAwMjcp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvdmlkZW8tbm8tYXVkaW8tZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNyw4ICsxNyw5IEBAIGxheWVyIGF0ICg4LDQyKSBz
aXplIDM1MngyODgKIGxheWVyIGF0ICg4LDMxNCkgc2l6ZSAzNTJ4MTYKICAgUmVuZGVyRmxleGli
bGVCb3ggKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDI3Mikgc2l6ZSAzNTJ4MTYKICAgICBSZW5k
ZXJCdXR0b24ge0lOUFVUfSBhdCAoMCwwKSBzaXplIDE2eDE2Ci0gICAgUmVuZGVyRmxleGlibGVC
b3gge0RJVn0gYXQgKDE2LDApIHNpemUgMzA0eDE2Ci0gICAgICBSZW5kZXJTbGlkZXIge0lOUFVU
fSBhdCAoMCwwKSBzaXplIDMwNHgxNgorICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgx
NiwwKSBzaXplIDI4OHgxNgorICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6
ZSAyODh4MTYKICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMSkgc2l6ZSAxM3gxNAor
ICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMDQsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRl
ckJ1dHRvbiB7SU5QVVR9IGF0ICgzMjAsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7
SU5QVVR9IGF0ICgzMzYsMCkgc2l6ZSAxNngxNgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57040</attachid>
            <date>2010-05-25 13:34:39 -0700</date>
            <delta_ts>2010-05-25 14:31:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39557-20100525133446.patch</filename>
            <type>text/plain</type>
            <size>42302</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDE3OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTIgQEAKKzIwMTAtMDUtMjIgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnVs
bCBzY3JlZW4gZG9lc24ndCB3b3JrIGZvciB2aWRlbyBlbGVtZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk1NTcKKyAgICAgICAgcmRhcjovL3By
b2JsZW0vODAxMTgxMworICAgICAgICAKKyAgICAgICAgQWRkIGZ1bGxzY3JlZW4gc3VwcG9ydCBm
b3IgTWVkaWFQbGF5ZXJQcml2YXRlVmlzdWFsQ29udGV4dC4gIEEgbmV3IGNsYXNzLCBNZWRpYVBs
YXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LAorICAgICAgICBwcm92aWRlcyB0aGUgZnVsbHNj
cmVlbiBod25kIGFuZCBsYXllciByZW5kZXJlci4gIEFueSBXS0NBQ0ZMYXllciBjYW4gYmUgcHJv
dmlkZWQgdG8gTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdworICAgICAgICBzbyBm
dXR1cmUgYWRkaXRpb25hbCBNZWRpYVBsYXllclByaXZhdGUgaW1wbGVtZW50YXRpb25zIGNhbiB1
c2UgdGhlIGZ1bGxzY3JlZW4gd2luZG93LgorICAgICAgICAKKyAgICAgICAgTWlub3IgYWRkaXRp
b25zIGhhdmUgYmVlbiBtYWRlIHRvIHRoZSBGbG9hdFNpemUgYW5kIEludFNpemUgY2xhc3Nlcy4K
KworICAgICAgICBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0IG5vdyBj
YWxscyByZXRyaWV2ZUN1cnJlbnRJbWFnZSBhZnRlciBjcmVhdGluZyBhIG5ldyAKKyAgICAgICAg
dmlkZW9MYXllcjsgdGhpcyBpcyBhbiBleGlzdGluZyBidWcgdGhhdCB3YXMgbmV2ZXIgcmVhbGx5
IGV4cG9zZWQgYmVmb3JlIG5vdy4KKworICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oOiBBZGRlZCBh
c3BlY3RSYXRpbygpIGFuZCBzY2FsZShmbG9hdCkuCisgICAgICAgIChXZWJDb3JlOjpGbG9hdFNp
emU6OmFzcGVjdFJhdGlvKToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0U2l6ZTo6c2NhbGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaDogQWRkZWQgYXNwZWN0UmF0aW8o
KS4KKyAgICAgICAgKFdlYkNvcmU6OkludFNpemU6OmFzcGVjdFJhdGlvKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5j
cHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclBy
aXZhdGVGdWxsc2NyZWVuV2luZG93Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcDogQ2Fs
bCByZXRyaWV2ZUN1cnJlbnRJbWFnZSgpIGFmdGVyIGNyZWF0aW5nIHRoZSB2aWRlb0xheWVyLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4
dDo6c3VwcG9ydHNGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OnJldHJpZXZlQ3VycmVudEltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OmNy
ZWF0ZUxheWVyRm9yTW92aWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NB
Q0ZMYXllci5jcHA6IAorICAgICAgICAoV2ViQ29yZTo6V0tDQUNGTGF5ZXI6OldLQ0FDRkxheWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldLQ0FDRkxheWVyOjpyZW1vdmVGcm9tU3VwZXJsYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpXS0NBQ0ZMYXllcjo6c2V0RnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6V0tDQUNGTGF5ZXI6OmludGVybmFsU2V0TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdl
YkNvcmU6OldLQ0FDRkxheWVyOjpzZXRMYXlvdXRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
V0tDQUNGTGF5ZXI6OmxheW91dFN1YmxheWVyc1Byb2MpOgorICAgICAgICAoV2ViQ29yZTo6V0tD
QUNGTGF5ZXI6OmxheW91dENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXS0NBQ0ZMYXllcjo6
c2V0TmVlZHNMYXlvdXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZM
YXllci5oOiBBZGQgbGF5b3V0IGNsaWVudCBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OldLQ0FD
RkxheWVyTGF5b3V0Q2xpZW50Ojp+V0tDQUNGTGF5ZXJMYXlvdXRDbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6V0tDQUNGTGF5ZXI6OmZyYW1lKTogQWRkZWQgYmFjayBmcmFtZSgpL3NldEZyYW1l
KCkuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dlYlRpbGVkTGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViVGlsZWRMYXllcjo6c2V0RnJhbWUpOiBJbXBsYW1lbnRlZCBz
ZXRGcmFtZSgpIGluIHN1YmNsYXNzIG9mIFdLQ0FDRkxheWVyCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL1dlYlRpbGVkTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vV2ViVGlsZWRMYXllci5jcHA6IEFkZGVkIHNldEZyYW1lKCkgb3ZlcnJpZGluZyBXS0NB
Q0ZMYXllcidzIGltcGxlbWVudGF0aW9uCisgICAgICAgIChXZWJDb3JlOjpXZWJUaWxlZExheWVy
OjpzZXRGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dlYlRpbGVkTGF5
ZXIuaDoKKworCiAyMDEwLTA1LTI1ICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDYwMTY3KQorKysgV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjM4NTUsNiArMjM4NTUs
MTQgQEAKIAkJCQkJCT4NCiAJCQkJCTwvRmlsZT4NCiAJCQkJCTxGaWxlDQorCQkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNj
cmVlbldpbmRvdy5jcHAiDQorCQkJCQkJPg0KKwkJCQkJPC9GaWxlPg0KKwkJCQkJPEZpbGUNCisJ
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxNZWRpYVBsYXllclBy
aXZhdGVGdWxsc2NyZWVuV2luZG93LmgiDQorCQkJCQkJPg0KKwkJCQkJPC9GaWxlPg0KKwkJCQkJ
PEZpbGUNCiAJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxNZWRp
YVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcCINCiAJCQkJCQk+DQogCQkJ
CQk8L0ZpbGU+DQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oCShyZXZp
c2lvbiA2MDE2NykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgJKHdv
cmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDE0IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGggPD0gMCB8fCBtX2hlaWdodCA8PSAwOyB9CiAKKyAg
ICBmbG9hdCBhc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGggLyBtX2hlaWdodDsg
fQorCisgICAgdm9pZCBzY2FsZShmbG9hdCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fd2lkdGgg
Kj0gc2NhbGU7CisgICAgICAgIG1faGVpZ2h0ICo9IHNjYWxlOworICAgIH0KKwogICAgIEZsb2F0
U2l6ZSBleHBhbmRlZFRvKGNvbnN0IEZsb2F0U2l6ZSYgb3RoZXIpIGNvbnN0CiAgICAgewogICAg
ICAgICByZXR1cm4gRmxvYXRTaXplKG1fd2lkdGggPiBvdGhlci5tX3dpZHRoID8gbV93aWR0aCA6
IG90aGVyLm1fd2lkdGgsCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAkocmV2
aXNpb24gNjAxNjcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAkod29y
a2luZyBjb3B5KQpAQCAtNzIsNiArNzIsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiBtX3dpZHRoIDw9IDAgfHwgbV9oZWlnaHQgPD0gMDsgfQogICAgIGJv
b2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4gIW1fd2lkdGggJiYgIW1faGVpZ2h0OyB9CisKKyAg
ICBmbG9hdCBhc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Piht
X3dpZHRoKSAvIHN0YXRpY19jYXN0PGZsb2F0PihtX2hlaWdodCk7IH0KICAgICAKICAgICB2b2lk
IGV4cGFuZChpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgewpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQ
cml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgCisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgCisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSAKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyCTQVMgSVOUIAorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIAorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiAKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyAKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIAorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIAorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVu
V2luZG93LmgiCisKKyNpbmNsdWRlICJXZWJDb3JlSW5zdGFuY2VIYW5kbGUuaCIKKyNpbmNsdWRl
IDxDb3JlR3JhcGhpY3MvQ0dDb2xvci5oPgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93OjpNZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93KE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3Jl
ZW5DbGllbnQqIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1faHduZCgw
KQorICAgICwgbV9sYXllclJlbmRlcmVyKFdLQ0FDRkxheWVyUmVuZGVyZXI6OmNyZWF0ZSgwKSkK
K3sKK30KKworTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6fk1lZGlhUGxheWVy
UHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3coKQoreworICAgIGlmIChtX2h3bmQpCisgICAgICAgIGNs
b3NlKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6Y3Jl
YXRlV2luZG93KEhXTkQgcGFyZW50SHduZCkKK3sKKyAgICBzdGF0aWMgQVRPTSB3aW5kb3dBdG9t
OworICAgIHN0YXRpYyBMUENXU1RSIHdpbmRvd0NsYXNzTmFtZSA9IEwiTWVkaWFQbGF5ZXJQcml2
YXRlRnVsbHNjcmVlbldpbmRvd0NsYXNzIjsKKyAgICBpZiAoIXdpbmRvd0F0b20pIHsKKyAgICAg
ICAgV05EQ0xBU1NFWCB3Y2V4ID0gezB9OworICAgICAgICB3Y2V4LmNiU2l6ZSA9IHNpemVvZihX
TkRDTEFTU0VYKTsKKyAgICAgICAgd2NleC5zdHlsZSA9IENTX0hSRURSQVcgfCBDU19WUkVEUkFX
OworICAgICAgICB3Y2V4LmxwZm5XbmRQcm9jID0gc3RhdGljV25kUHJvYzsKKyAgICAgICAgd2Nl
eC5oSW5zdGFuY2UgPSBpbnN0YW5jZUhhbmRsZSgpOworICAgICAgICB3Y2V4Lmxwc3pDbGFzc05h
bWUgPSB3aW5kb3dDbGFzc05hbWU7CisgICAgICAgIHdpbmRvd0F0b20gPSA6OlJlZ2lzdGVyQ2xh
c3NFeCgmd2NleCk7CisgICAgfQorCisgICAgaWYgKG1faHduZCkKKyAgICAgICAgY2xvc2UoKTsK
KworICAgIE1PTklUT1JJTkZPIG1pID0gezB9OworICAgIG1pLmNiU2l6ZSA9IHNpemVvZihNT05J
VE9SSU5GTyk7CisgICAgaWYgKCFHZXRNb25pdG9ySW5mbyhNb25pdG9yRnJvbVdpbmRvdyhwYXJl
bnRId25kLCBNT05JVE9SX0RFRkFVTFRUT05FQVJFU1QpLCAmbWkpKQorICAgICAgcmV0dXJuOwor
CisgICAgSW50UmVjdCBtb25pdG9yUmVjdCA9IG1pLnJjTW9uaXRvcjsKKyAgICAKKyAgICA6OkNy
ZWF0ZVdpbmRvd0V4VygwLCB3aW5kb3dDbGFzc05hbWUsIEwiIiwgV1NfUE9QVVAgfCBXU19WSVNJ
QkxFLCAKKyAgICAgICAgbW9uaXRvclJlY3QueCgpLCBtb25pdG9yUmVjdC55KCksIG1vbml0b3JS
ZWN0LndpZHRoKCksIG1vbml0b3JSZWN0LmhlaWdodCgpLAorICAgICAgICBwYXJlbnRId25kLCAw
LCBXZWJDb3JlOjppbnN0YW5jZUhhbmRsZSgpLCB0aGlzKTsKKyAgICBBU1NFUlQoSXNXaW5kb3co
bV9od25kKSk7CisKKyAgICA6OlNldEZvY3VzKG1faHduZCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6Y2xvc2UoKQoreworICAgIDo6RGVzdHJveVdpbmRv
dyhtX2h3bmQpOworICAgIEFTU0VSVCghbV9od25kKTsKK30KKwordm9pZCBNZWRpYVBsYXllclBy
aXZhdGVGdWxsc2NyZWVuV2luZG93OjpzZXRSb290Q2hpbGRMYXllcihQYXNzUmVmUHRyPFdLQ0FD
RkxheWVyPiByb290Q2hpbGQpCit7CisgICAgaWYgKG1fcm9vdENoaWxkID09IHJvb3RDaGlsZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fcm9vdENoaWxkKQorICAgICAgICBtX3Jvb3RD
aGlsZC0+cmVtb3ZlRnJvbVN1cGVybGF5ZXIoKTsKKworICAgIG1fcm9vdENoaWxkID0gcm9vdENo
aWxkOworCisgICAgaWYgKCFtX3Jvb3RDaGlsZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9s
YXllclJlbmRlcmVyLT5zZXRSb290Q2hpbGRMYXllcihtX3Jvb3RDaGlsZC5nZXQoKSk7CisgICAg
V0tDQUNGTGF5ZXIqIHJvb3RMYXllciA9IG1fcm9vdENoaWxkLT5yb290TGF5ZXIoKTsKKyAgICBD
R1JlY3Qgcm9vdEJvdW5kcyA9IG1fcm9vdENoaWxkLT5yb290TGF5ZXIoKS0+Ym91bmRzKCk7Cisg
ICAgbV9yb290Q2hpbGQtPnNldEZyYW1lKHJvb3RCb3VuZHMpOworICAgIG1fbGF5ZXJSZW5kZXJl
ci0+c2V0U2Nyb2xsRnJhbWUoSW50UG9pbnQocm9vdEJvdW5kcy5vcmlnaW4pLCBJbnRTaXplKHJv
b3RCb3VuZHMuc2l6ZSkpOworICAgIG1fcm9vdENoaWxkLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ0dD
b2xvckdldENvbnN0YW50Q29sb3Ioa0NHQ29sb3JCbGFjaykpOworI2lmbmRlZiBOREVCVUcKKyAg
ICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gcmVkQ29sb3IoQWRvcHRDRiwgQ0dDb2xvckNyZWF0ZUdl
bmVyaWNSR0IoMSwgMCwgMCwgMSkpOworICAgIHJvb3RMYXllci0+c2V0QmFja2dyb3VuZENvbG9y
KHJlZENvbG9yLmdldCgpKTsKKyNlbHNlCisgICAgcm9vdExheWVyLT5zZXRCYWNrZ3JvdW5kQ29s
b3IoQ0dDb2xvckdldENvbnN0YW50Q29sb3Ioa0NHQ29sb3JCbGFjaykpOworI2VuZGlmCit9CisK
K0xSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6c3RhdGljV25kUHJv
YyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkK
K3sKKyAgICBMT05HX1BUUiBsb25nUHRyID0gR2V0V2luZG93TG9uZ1B0cihoV25kLCBHV0xQX1VT
RVJEQVRBKTsKKworICAgIGlmICghbG9uZ1B0ciAmJiBtZXNzYWdlID09IFdNX0NSRUFURSkgewor
ICAgICAgICBMUENSRUFURVNUUlVDVCBscGNzID0gcmVpbnRlcnByZXRfY2FzdDxMUENSRUFURVNU
UlVDVD4obFBhcmFtKTsKKyAgICAgICAgbG9uZ1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8TE9OR19Q
VFI+KGxwY3MtPmxwQ3JlYXRlUGFyYW1zKTsKKyAgICAgICAgOjpTZXRXaW5kb3dMb25nUHRyKGhX
bmQsIEdXTFBfVVNFUkRBVEEsIGxvbmdQdHIpOworICAgIH0KKworICAgIGlmIChNZWRpYVBsYXll
clByaXZhdGVGdWxsc2NyZWVuV2luZG93KiB3aW5kb3cgPSByZWludGVycHJldF9jYXN0PE1lZGlh
UGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cqPihsb25nUHRyKSkKKyAgICAgICAgcmV0dXJu
IHdpbmRvdy0+d25kUHJvYyhoV25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7CisKKyAgICBy
ZXR1cm4gOjpEZWZXaW5kb3dQcm9jKGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsgICAg
Cit9CisKK0xSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6d25kUHJv
YyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkK
K3sKKyAgICBMUkVTVUxUIGxSZXN1bHQgPSAwOworICAgIHN3aXRjaCAobWVzc2FnZSkgeworICAg
IGNhc2UgV01fQ1JFQVRFOgorICAgICAgICBtX2h3bmQgPSBoV25kOworICAgICAgICBtX2xheWVy
UmVuZGVyZXItPnNldEhvc3RXaW5kb3cobV9od25kKTsKKyAgICAgICAgbV9sYXllclJlbmRlcmVy
LT5jcmVhdGVSZW5kZXJlcigpOworICAgICAgICBpZiAobV9yb290Q2hpbGQpCisgICAgICAgICAg
ICBtX2xheWVyUmVuZGVyZXItPnNldE5lZWRzRGlzcGxheSgpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFdNX0RFU1RST1k6CisgICAgICAgIG1faHduZCA9IDA7CisgICAgICAgIG1fbGF5ZXJS
ZW5kZXJlci0+ZGVzdHJveVJlbmRlcmVyKCk7CisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0
SG9zdFdpbmRvdygwKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXTV9XSU5ET1dQT1NDSEFO
R0VEOgorICAgICAgICB7CisgICAgICAgICAgICBMUFdJTkRPV1BPUyB3cCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8TFBXSU5ET1dQT1M+KGxQYXJhbSk7CisgICAgICAgICAgICBpZiAod3AtPmZsYWdzICYg
U1dQX05PU0laRSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIG1fbGF5ZXJS
ZW5kZXJlci0+cmVzaXplKCk7CisgICAgICAgICAgICBXS0NBQ0ZMYXllciogcm9vdExheWVyID0g
bV9yb290Q2hpbGQtPnJvb3RMYXllcigpOworICAgICAgICAgICAgQ0dSZWN0IHJvb3RCb3VuZHMg
PSBtX3Jvb3RDaGlsZC0+cm9vdExheWVyKCktPmJvdW5kcygpOworICAgICAgICAgICAgbV9yb290
Q2hpbGQtPnNldEZyYW1lKHJvb3RCb3VuZHMpOworICAgICAgICAgICAgbV9yb290Q2hpbGQtPnNl
dE5lZWRzTGF5b3V0KCk7CisgICAgICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNldFNjcm9sbEZy
YW1lKEludFBvaW50KHJvb3RCb3VuZHMub3JpZ2luKSwgSW50U2l6ZShyb290Qm91bmRzLnNpemUp
KTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFdNX1BBSU5UOgorICAgICAg
ICBtX2xheWVyUmVuZGVyZXItPnJlbmRlclNvb24oKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBsUmVzdWx0ID0gbV9jbGllbnQtPmZ1bGxzY3Jl
ZW5DbGllbnRXbmRQcm9jKGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsKKworICAgIHJl
dHVybiBsUmVzdWx0OworfQorCit9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldp
bmRvdy5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVk
aWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIAorICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0IAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUgCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgk0FTIElTlCAKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiAKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiAKKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIAorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiAKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhUGxheWVyUHJpdmF0
ZUZ1bGxzY3JlZW5XaW5kb3dfaAorI2RlZmluZSBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVu
V2luZG93X2gKKworI2luY2x1ZGUgIldLQ0FDRkxheWVyLmgiCisjaW5jbHVkZSAiV0tDQUNGTGF5
ZXJSZW5kZXJlci5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKwordHlwZWRlZiB1bnNpZ25l
ZCBXUEFSQU07Cit0eXBlZGVmIGxvbmcgTFBBUkFNOwordHlwZWRlZiBzdHJ1Y3QgSFdORF9fKiBI
V05EOwordHlwZWRlZiBfVzY0IGxvbmcgTE9OR19QVFI7Cit0eXBlZGVmIExPTkdfUFRSIExSRVNV
TFQ7Cit0eXBlZGVmIHVuc2lnbmVkIGludCBVSU5UOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5DbGllbnQgeworcHVibGljOgorICAg
IHZpcnR1YWwgTFJFU1VMVCBmdWxsc2NyZWVuQ2xpZW50V25kUHJvYyhIV05ELCBVSU5UIG1lc3Nh
Z2UsIFdQQVJBTSwgTFBBUkFNKSA9IDA7Citwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+TWVkaWFQ
bGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCgpIHt9IAorfTsKKworY2xhc3MgTWVkaWFQbGF5
ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdyB7CitwdWJsaWM6CisgICAgTWVkaWFQbGF5ZXJQcml2
YXRlRnVsbHNjcmVlbldpbmRvdyhNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50Kik7
CisgICAgfk1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3coKTsKKworICAgIHZvaWQg
Y3JlYXRlV2luZG93KEhXTkQgcGFyZW50SHduZCA9IDApOworICAgIHZvaWQgY2xvc2UoKTsKKyAg
ICAKKyAgICBIV05EIGh3bmQoKSBjb25zdCB7IHJldHVybiBtX2h3bmQ7IH0KKworICAgIFdLQ0FD
RkxheWVyUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX2xheWVyUmVu
ZGVyZXIuZ2V0KCk7IH0KKworICAgIFdLQ0FDRkxheWVyKiByb290Q2hpbGRMYXllcigpIGNvbnN0
IHsgcmV0dXJuIG1fcm9vdENoaWxkLmdldCgpOyB9CisgICAgdm9pZCBzZXRSb290Q2hpbGRMYXll
cihQYXNzUmVmUHRyPFdLQ0FDRkxheWVyPik7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIExSRVNV
TFQgX19zdGRjYWxsIHN0YXRpY1duZFByb2MoSFdORCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0sIExQ
QVJBTSk7CisgICAgTFJFU1VMVCB3bmRQcm9jKEhXTkQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNLCBM
UEFSQU0pOworCisgICAgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCogbV9jbGll
bnQ7CisgICAgT3duUHRyPFdLQ0FDRkxheWVyUmVuZGVyZXI+IG1fbGF5ZXJSZW5kZXJlcjsKKyAg
ICBSZWZQdHI8V0tDQUNGTGF5ZXI+IG1fcm9vdENoaWxkOworICAgIEhXTkQgbV9od25kOworfTsK
KworfQorCisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlh
UGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZp
c3VhbENvbnRleHQuY3BwCShyZXZpc2lvbiA2MDE2NykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiUVRNb3ZpZVRhc2suaCIK
ICNpbmNsdWRlICJRVE1vdmllVmlzdWFsQ29udGV4dC5oIgogI2luY2x1ZGUgIlNjcm9sbFZpZXcu
aCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgiCiAjaW5j
bHVkZSAiU3RyaW5nQnVpbGRlci5oIgogI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKQEAgLTE0OSw2
ICsxNTAsMTEgQEAgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dAogCiBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OnN1cHBvcnRzRnVs
bHNjcmVlbigpIGNvbnN0CiB7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IG1fcGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpLT5tZWRp
YVBsYXllck93bmluZ0RvY3VtZW50KCk7IAorICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC0+
c2V0dGluZ3MoKSkKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5zZXR0aW5ncygpLT5hY2NlbGVy
YXRlZENvbXBvc2l0aW5nRW5hYmxlZCgpOworI2VuZGlmCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
CkBAIC03NjEsNyArNzY3LDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1
YWxDbwogICAgICAgICBXS0NBQ0ZMYXllciogbGF5ZXIgPSBzdGF0aWNfY2FzdDxXS0NBQ0ZMYXll
cio+KG1fcXRWaWRlb0xheWVyLT5wbGF0Zm9ybUxheWVyKCkpOwogCiAgICAgICAgIGlmICghYnVm
ZmVyLmxvY2tCYXNlQWRkcmVzcygpKSB7Ci0KICAgICAgICAgICAgIGlmIChyZXF1aXJlZERsbHNB
dmFpbGFibGUoKSkgewogICAgICAgICAgICAgICAgIGlmICghbV9pbWFnZVF1ZXVlKSB7CiAgICAg
ICAgICAgICAgICAgICAgIG1faW1hZ2VRdWV1ZSA9IG5ldyBXS0NBSW1hZ2VRdWV1ZShidWZmZXIu
d2lkdGgoKSwgYnVmZmVyLmhlaWdodCgpLCAzMCk7CkBAIC0xMDMxLDYgKzEwMzYsMTIgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDbwogI2VuZGlmCiAgICAgLy8gVGhl
IGxheWVyIHdpbGwgZ2V0IGhvb2tlZCB1cCB2aWEgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVH
cmFwaGljc0xheWVyQ29uZmlndXJhdGlvbigpLgogI2VuZGlmCisKKyAgICAvLyBmaWxsIHRoZSBu
ZXdseSBjcmVhdGVkIGxheWVyIHdpdGggaW1hZ2UgZGF0YSwgc28gd2UncmUgbm90IGxvb2tpbmcg
YXQgCisgICAgLy8gYW4gZW1wdHkgbGF5ZXIgdW50aWwgdGhlIG5leHQgdGltZSBhIG5ldyBpbWFn
ZSBpcyBhdmFpbGFibGUsIHdoaWNoIGNvdWxkCisgICAgLy8gYmUgYSBsb25nIHRpbWUgaWYgd2Un
cmUgcGF1c2VkLgorICAgIGlmIChtX3Zpc3VhbENvbnRleHQpCisgICAgICAgIHJldHJpZXZlQ3Vy
cmVudEltYWdlKCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFs
Q29udGV4dDo6ZGVzdHJveUxheWVyRm9yTW92aWUoKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vV0tDQUNGTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyLmNwcAkocmV2aXNpb24gNjAxNjcpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE1NCw2ICsxNTQsNyBAQCBQYXNzUmVmUHRyPFdLQ0FDRkxheWVyPiBXS0NBQ0ZMYXllcjo6
Y3JlCiAKIFdLQ0FDRkxheWVyOjpXS0NBQ0ZMYXllcihMYXllclR5cGUgdHlwZSkKICAgICA6IG1f
bGF5ZXIoQWRvcHRDRiwgQ0FDRkxheWVyQ3JlYXRlKHRvQ0FDRkxheWVyVHlwZSh0eXBlKSkpCisg
ICAgLCBtX2xheW91dENsaWVudCgwKQogICAgICwgbV9uZWVkc0Rpc3BsYXlPbkJvdW5kc0NoYW5n
ZShmYWxzZSkKIHsKICAgICBDQUNGTGF5ZXJTZXRVc2VyRGF0YShsYXllcigpLCB0aGlzKTsKQEAg
LTI4NiwxMSArMjg3LDEwIEBAIHZvaWQgIFdLQ0FDRkxheWVyOjphZG9wdFN1YmxheWVycyhXS0NB
Q0YKIHZvaWQgV0tDQUNGTGF5ZXI6OnJlbW92ZUZyb21TdXBlcmxheWVyKCkKIHsKICAgICBXS0NB
Q0ZMYXllciogc3VwZXJsYXllciA9IHRoaXMtPnN1cGVybGF5ZXIoKTsKLSAgICBpZiAoIXN1cGVy
bGF5ZXIpCi0gICAgICAgIHJldHVybjsKLQogICAgIENBQ0ZMYXllclJlbW92ZUZyb21TdXBlcmxh
eWVyKGxheWVyKCkpOwotICAgIHN1cGVybGF5ZXItPnNldE5lZWRzQ29tbWl0KCk7CisKKyAgICBp
ZiAoc3VwZXJsYXllcikKKyAgICAgICAgc3VwZXJsYXllci0+c2V0TmVlZHNDb21taXQoKTsKIH0K
IAogV0tDQUNGTGF5ZXIqIFdLQ0FDRkxheWVyOjppbnRlcm5hbFN1YmxheWVyQXRJbmRleChpbnQg
aW5kZXgpIGNvbnN0CkBAIC0zNDMsNiArMzQzLDE5IEBAIHZvaWQgV0tDQUNGTGF5ZXI6OnNldEJv
dW5kcyhjb25zdCBDR1JlY3QKICAgICAgICAgc2V0TmVlZHNEaXNwbGF5KCk7CiB9CiAKK3ZvaWQg
V0tDQUNGTGF5ZXI6OnNldEZyYW1lKGNvbnN0IENHUmVjdCYgcmVjdCkKK3sKKyAgICBDR1JlY3Qg
b2xkRnJhbWUgPSBmcmFtZSgpOworICAgIGlmIChDR1JlY3RFcXVhbFRvUmVjdChyZWN0LCBvbGRG
cmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAgIENBQ0ZMYXllclNldEZyYW1lKGxheWVyKCks
IHJlY3QpOworICAgIHNldE5lZWRzQ29tbWl0KCk7CisKKyAgICBpZiAobV9uZWVkc0Rpc3BsYXlP
bkJvdW5kc0NoYW5nZSAmJiBDR1NpemVFcXVhbFRvU2l6ZShyZWN0LnNpemUsIG9sZEZyYW1lLnNp
emUpKQorICAgICAgICBzZXROZWVkc0Rpc3BsYXkoKTsKK30KKwogdm9pZCBXS0NBQ0ZMYXllcjo6
c2V0Q29udGVudHNHcmF2aXR5KENvbnRlbnRzR3Jhdml0eVR5cGUgdHlwZSkKIHsKICAgICBDQUNG
TGF5ZXJTZXRDb250ZW50c0dyYXZpdHkobGF5ZXIoKSwgdG9DQUNGQ29udGVudHNHcmF2aXR5VHlw
ZSh0eXBlKSk7CkBAIC00MTgsNiArNDMxLDMyIEBAIHZvaWQgV0tDQUNGTGF5ZXI6OmludGVybmFs
U2V0TmVlZHNEaXNwbGEKICAgICBDQUNGTGF5ZXJTZXROZWVkc0Rpc3BsYXkobGF5ZXIoKSwgZGly
dHlSZWN0KTsKIH0KIAordm9pZCBXS0NBQ0ZMYXllcjo6c2V0TGF5b3V0Q2xpZW50KFdLQ0FDRkxh
eWVyTGF5b3V0Q2xpZW50KiBsYXlvdXRDbGllbnQpCit7CisgICAgaWYgKGxheW91dENsaWVudCA9
PSBtX2xheW91dENsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sYXlvdXRDbGllbnQg
PSBsYXlvdXRDbGllbnQ7CisgICAgQ0FDRkxheWVyU2V0TGF5b3V0Q2FsbGJhY2sobGF5ZXIoKSwg
bV9sYXlvdXRDbGllbnQgPyBsYXlvdXRTdWJsYXllcnNQcm9jIDogMCk7ICAgIAorfQorCit2b2lk
IFdLQ0FDRkxheWVyOjpsYXlvdXRTdWJsYXllcnNQcm9jKENBQ0ZMYXllclJlZiBjYUxheWVyKSAK
K3sKKyAgICBXS0NBQ0ZMYXllciogbGF5ZXIgPSBXS0NBQ0ZMYXllcjo6bGF5ZXIoY2FMYXllcik7
CisgICAgaWYgKGxheWVyICYmIGxheWVyLT5tX2xheW91dENsaWVudCkKKyAgICAgICAgbGF5ZXIt
Pm1fbGF5b3V0Q2xpZW50LT5sYXlvdXRTdWJsYXllcnNPZkxheWVyKGxheWVyKTsKK30KKworV0tD
QUNGTGF5ZXJMYXlvdXRDbGllbnQqIFdLQ0FDRkxheWVyOjpsYXlvdXRDbGllbnQoKSBjb25zdAor
eworICAgIHJldHVybiBtX2xheW91dENsaWVudDsKK30KKwordm9pZCBXS0NBQ0ZMYXllcjo6c2V0
TmVlZHNMYXlvdXQoKQoreworICAgIENBQ0ZMYXllclNldE5lZWRzTGF5b3V0KGxheWVyKCkpOwor
fQorCiAjaWZuZGVmIE5ERUJVRwogc3RhdGljIHZvaWQgcHJpbnRJbmRlbnQoaW50IGluZGVudCkK
IHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNGTGF5ZXIuaAko
cmV2aXNpb24gNjAxNjcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZM
YXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw4ICs0NCwxNCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFdLQ0FDRkFuaW1hdGlvbjsKLWNsYXNzIFdLQ0FDRlRpbWluZ0Z1bmN0
aW9uOworY2xhc3MgV0tDQUNGTGF5ZXI7CisKK2NsYXNzIFdLQ0FDRkxheWVyTGF5b3V0Q2xpZW50
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0U3VibGF5ZXJzT2ZMYXllcihXS0NB
Q0ZMYXllciopID0gMDsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5XS0NBQ0ZMYXllckxheW91
dENsaWVudCgpIHt9Cit9OwogCiBjbGFzcyBXS0NBQ0ZMYXllciA6IHB1YmxpYyBSZWZDb3VudGVk
PFdLQ0FDRkxheWVyPiB7CiBwdWJsaWM6CkBAIC02Myw2ICs2OSwxMCBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0luQ29udGV4dChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCopIHsg
fQogCisgICAgdm9pZCBzZXRMYXlvdXRDbGllbnQoV0tDQUNGTGF5ZXJMYXlvdXRDbGllbnQqKTsK
KyAgICBXS0NBQ0ZMYXllckxheW91dENsaWVudCogbGF5b3V0Q2xpZW50KCkgY29uc3Q7CisgICAg
dm9pZCBzZXROZWVkc0xheW91dCgpOworCiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoY29uc3Qg
Q0dSZWN0KiBkaXJ0eVJlY3QgPSAwKQogICAgIHsKICAgICAgICAgaW50ZXJuYWxTZXROZWVkc0Rp
c3BsYXkoZGlydHlSZWN0KTsKQEAgLTE3Myw2ICsxODMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRGaWx0ZXJzKENGQXJyYXlSZWYgZmlsdGVycykgeyBDQUNGTGF5ZXJTZXRGaWx0ZXJzKGxheWVy
KCksIGZpbHRlcnMpOyBzZXROZWVkc0NvbW1pdCgpOyB9CiAgICAgQ0ZBcnJheVJlZiBmaWx0ZXJz
KCkgY29uc3QgeyByZXR1cm4gQ0FDRkxheWVyR2V0RmlsdGVycyhsYXllcigpKTsgfQogCisgICAg
dmlydHVhbCB2b2lkIHNldEZyYW1lKGNvbnN0IENHUmVjdCYpOworICAgIENHUmVjdCBmcmFtZSgp
IGNvbnN0IHsgcmV0dXJuIENBQ0ZMYXllckdldEZyYW1lKGxheWVyKCkpOyB9CisKICAgICB2b2lk
IHNldEhpZGRlbihib29sIGhpZGRlbikgeyBDQUNGTGF5ZXJTZXRIaWRkZW4obGF5ZXIoKSwgaGlk
ZGVuKTsgc2V0TmVlZHNDb21taXQoKTsgfQogICAgIGJvb2wgaXNIaWRkZW4oKSBjb25zdCB7IHJl
dHVybiBDQUNGTGF5ZXJJc0hpZGRlbihsYXllcigpKTsgfQogCkBAIC0yNjAsOCArMjczLDExIEBA
IHByb3RlY3RlZDoKICAgICB2b2lkIHByaW50TGF5ZXIoaW50IGluZGVudCkgY29uc3Q7CiAjZW5k
aWYKIAorICAgIHN0YXRpYyB2b2lkIGxheW91dFN1YmxheWVyc1Byb2MoQ0FDRkxheWVyUmVmKTsK
KwogcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8Q0FDRkxheWVyUmVmPiBtX2xheWVyOworICAgIFdL
Q0FDRkxheWVyTGF5b3V0Q2xpZW50KiBtX2xheW91dENsaWVudDsKICAgICBib29sIG1fbmVlZHNE
aXNwbGF5T25Cb3VuZHNDaGFuZ2U7CiB9OwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9XZWJUaWxlZExheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9XZWJUaWxlZExheWVyLmNwcAkocmV2aXNpb24gNjAxNjcpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XZWJUaWxlZExheWVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzMsNiArNzMsMTUgQEAgdm9pZCBXZWJUaWxlZExheWVyOjpzZXRCb3VuZHMoY29uc3Qg
Q0dSZQogICAgIHVwZGF0ZVRpbGVzKCk7CiB9CiAKK3ZvaWQgV2ViVGlsZWRMYXllcjo6c2V0RnJh
bWUoY29uc3QgQ0dSZWN0JiByZWN0KQoreworICAgIGlmIChDR1JlY3RFcXVhbFRvUmVjdChyZWN0
LCBmcmFtZSgpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViTGF5ZXI6OnNldEZyYW1lKHJl
Y3QpOworICAgIHVwZGF0ZVRpbGVzKCk7Cit9CisKIHZvaWQgV2ViVGlsZWRMYXllcjo6aW50ZXJu
YWxTZXROZWVkc0Rpc3BsYXkoY29uc3QgQ0dSZWN0KiBkaXJ0eVJlY3QpCiB7CiAgICAgLy8gRklY
TUU6IE9ubHkgc2V0TmVlZHNEaXNwbGF5IGZvciB0aWxlcyB0aGF0IGFyZSBjdXJyZW50bHkgdmlz
aWJsZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV2ViVGlsZWRMYXllci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dlYlRpbGVkTGF5
ZXIuaAkocmV2aXNpb24gNjAxNjcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9X
ZWJUaWxlZExheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgfldlYlRpbGVkTGF5ZXIoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRCb3Vu
ZHMoY29uc3QgQ0dSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHNldEZyYW1lKGNvbnN0IENHUmVj
dCYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgV2ViVGlsZWRMYXllcihjb25zdCBDR1NpemUmIHRpbGVT
aXplLCBHcmFwaGljc0xheWVyKiBvd25lcik7CkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNjAxNzgpCisrKyBX
ZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEw
LTA1LTIyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZ1bGwgc2NyZWVuIGRvZXNuJ3Qgd29y
ayBmb3IgdmlkZW8gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM5NTU3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzgwMTE4MTMKKyAgICAg
ICAgCisgICAgICAgIE1vZGlmaWVkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIgdG8gd29yayB3
aXRoIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuICBUaGUgRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcgorICAgICAgICBpcyBub3cgTWVkaWFQbGF5ZXJQcml2YXRlIGFnbm9zdGlj
LiAgVGhlIG5ldyBmdWxsc2NyZWVuIHdpbmRvdyBpcyBub3QgYSB0b3Btb3N0IHdpbmRvdywgYW5k
IHNvIHRoZSBiZWhhdmlvciBoYXMKKyAgICAgICAgYmVlbiBjaGFuZ2VkIHRvIGV4aXQgZnVsbHNj
cmVlbiBtb2RlIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGJlY29tZXMgaW5hY3RpdmUuCisKKyAgICAg
ICAgKiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OkxheW91dENsaWVudDo6TGF5b3V0Q2xpZW50KTogTmV3IGhlbHBlciBj
bGFzcyB3aGljaCBpbXBsZW1lbnRzIFdLQ0FDRkxheWVyTGF5b3V0Q2xpZW50LgorICAgICAgICAo
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6TGF5b3V0Q2xpZW50OjpsYXlvdXRTdWJsYXllcnNP
ZkxheWVyKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6fkZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcjo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXI6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6
OmZ1bGxzY3JlZW5DbGllbnRXbmRQcm9jKTogSGFuZGxlIFdNX0tFWURPV04uCisgICAgICAgIChG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjcmVhdGVIVURXaW5kb3cpOgorICAgICAgICAoRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcjo6aHVkV25kUHJvYyk6ICBIYW5kbGUgV01fS0VZRE9XTi4K
KyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Om9uQ2hhcik6CisgICAgICAgIChG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpvbktleURvd24pOiAgTmV3IGZ1bmN0aW9uOiBoYW5k
bGVzIHRoZSBWS19FU0NBUEUgY2FzZSBtb3JlIHJlbGlhYmx5IHRoYW4gV01fQ0hBUi4KKyAgICAg
ICAgKiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmg6CisgICAgICAgICogV2ViVmlldy5oOiAK
KyAgICAgICAgKFdlYlZpZXc6OnZpZXdXaW5kb3cpOiBBZGRlZCBhIHNpbXBsZSB2aWV3V2luZG93
KCkgYWNjZXNzb3IuCisKIDIwMTAtMDUtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L3dp
bi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2lu
L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2MDE2NykKKysrIFdlYktp
dC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDEyICszMCwxNiBAQAogI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaCIKIAog
I2luY2x1ZGUgIldlYktpdERMTC5oIgorI2luY2x1ZGUgIldlYlZpZXcuaCIKICNpbmNsdWRlIDxB
cHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0JpdG1hcEluZm8uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRm9udC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udFNlbGVjdG9yLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2Uu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRSdW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dLQ0FD
RkxheWVyLmg+CiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUlu
dGVyZmFjZS5oPgogI2luY2x1ZGUgPHdpbmRvd3N4Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgpAQCAtMTY5LDkgKzE3Myw1MSBAQCB2b2lkIEhVRFNsaWRlcjo6ZHJhZyhjb25zdCBJ
bnRQb2ludCYgcG9pCiAgICAgbV9idXR0b25Qb3NpdGlvbiA9IG1heCgwLCBtaW4obV9yZWN0Lndp
ZHRoKCkgLSBtX2J1dHRvblNpemUsIHBvaW50LngoKSAtIG1fZHJhZ1N0YXJ0T2Zmc2V0KSk7CiB9
CiAKK2NsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheW91dENsaWVudCA6IHB1Ymxp
YyBXS0NBQ0ZMYXllckxheW91dENsaWVudCB7CitwdWJsaWM6CisgICAgTGF5b3V0Q2xpZW50KEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIHBhcmVudCk7CisgICAgdm9pZCBsYXlvdXRTdWJsYXll
cnNPZkxheWVyKFdLQ0FDRkxheWVyKiBsYXllcik7CisKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyKiBtX3BhcmVudDsKK307CisKK0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheW91
dENsaWVudDo6TGF5b3V0Q2xpZW50KEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIHBhcmVudCkK
KyAgICA6IG1fcGFyZW50KHBhcmVudCkKK3sKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyOjpMYXlvdXRDbGllbnQ6OmxheW91dFN1YmxheWVyc09mTGF5ZXIoV0tDQUNGTGF5ZXIq
IGxheWVyKSAKK3sKKyAgICBBU1NFUlQobGF5ZXIgPT0gbV9wYXJlbnQtPm1fcm9vdENoaWxkKTsK
KworICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IG1fcGFyZW50LT5tX21lZGlh
RWxlbWVudC5nZXQoKTsKKyAgICBpZiAoIW1lZGlhRWxlbWVudCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgV0tDQUNGTGF5ZXIqIHZpZGVvTGF5ZXIgPSBtZWRpYUVsZW1lbnQtPnBsYXRmb3JtTGF5
ZXIoKTsKKyAgICBpZiAoIXZpZGVvTGF5ZXIgfHwgdmlkZW9MYXllci0+c3VwZXJsYXllcigpICE9
IGxheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBGbG9hdFJlY3QgbGF5ZXJCb3VuZHMgPSBs
YXllci0+Ym91bmRzKCk7CisKKyAgICBGbG9hdFNpemUgdmlkZW9TaXplID0gbWVkaWFFbGVtZW50
LT5wbGF5ZXIoKS0+bmF0dXJhbFNpemUoKTsKKyAgICBmbG9hdCBzY2FsZUZhY3RvcjsKKyAgICBp
ZiAodmlkZW9TaXplLmFzcGVjdFJhdGlvKCkgPiBsYXllckJvdW5kcy5zaXplKCkuYXNwZWN0UmF0
aW8oKSkKKyAgICAgICAgc2NhbGVGYWN0b3IgPSBsYXllckJvdW5kcy53aWR0aCgpIC8gdmlkZW9T
aXplLndpZHRoKCk7CisgICAgZWxzZQorICAgICAgICBzY2FsZUZhY3RvciA9IGxheWVyQm91bmRz
LmhlaWdodCgpIC8gdmlkZW9TaXplLmhlaWdodCgpOworICAgIHZpZGVvU2l6ZS5zY2FsZShzY2Fs
ZUZhY3Rvcik7CisKKyAgICAvLyBDYWxjdWxhdGUgdGhlIGNlbnRlcmVkIHBvc2l0aW9uIGJhc2Vk
IG9uIHRoZSB2aWRlb0JvdW5kcyBhbmQgbGF5ZXJCb3VuZHM6CisgICAgRmxvYXRQb2ludCB2aWRl
b1Bvc2l0aW9uOworICAgIEZsb2F0UG9pbnQgdmlkZW9PcmlnaW47CisgICAgdmlkZW9PcmlnaW4u
c2V0WCgobGF5ZXJCb3VuZHMud2lkdGgoKSAtIHZpZGVvU2l6ZS53aWR0aCgpKSAqIDAuNSk7Cisg
ICAgdmlkZW9PcmlnaW4uc2V0WSgobGF5ZXJCb3VuZHMuaGVpZ2h0KCkgLSB2aWRlb1NpemUuaGVp
Z2h0KCkpICogMC41KTsKKyAgICB2aWRlb0xheWVyLT5zZXRGcmFtZShGbG9hdFJlY3QodmlkZW9P
cmlnaW4sIHZpZGVvU2l6ZSkpOworfQorCiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyKCkKICAgICA6IG1faHVkV2luZG93KDApCi0gICAgLCBtX3Zp
ZGVvV2luZG93KDApCiAgICAgLCBtX3BsYXlQYXVzZUJ1dHRvbihIVURCdXR0b246OlBsYXlQYXVz
ZUJ1dHRvbiwgSW50UG9pbnQoKHdpbmRvd1dpZHRoIC0gYnV0dG9uU2l6ZSkgLyAyLCBtYXJnaW5U
b3ApKQogICAgICwgbV90aW1lU2xpZGVyQnV0dG9uKEhVREJ1dHRvbjo6VGltZVNsaWRlckJ1dHRv
biwgSW50UG9pbnQoMCwgMCkpCiAgICAgLCBtX3ZvbHVtZVVwQnV0dG9uKEhVREJ1dHRvbjo6Vm9s
dW1lVXBCdXR0b24sIEludFBvaW50KG1hcmdpbiArIGJ1dHRvbk1pbmlTaXplICsgdm9sdW1lU2xp
ZGVyV2lkdGggKyBidXR0b25NaW5pU2l6ZSAvIDIsIG1hcmdpblRvcCArIChidXR0b25TaXplIC0g
YnV0dG9uTWluaVNpemUpIC8gMikpCkBAIC0xODMsMjUgKzIyOSwxNiBAQCBGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyOjpGdWxsc2NyZWVuVmlkCiAgICAgLCBtX2hpdFdpZGdldCgwKQogICAgICwg
bV9tb3ZpbmdXaW5kb3coZmFsc2UpCiAgICAgLCBtX3RpbWVyKHRoaXMsICZGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyOjp0aW1lckZpcmVkKQorICAgICwgbV9yb290Q2hpbGQoV0tDQUNGTGF5ZXI6
OmNyZWF0ZShXS0NBQ0ZMYXllcjo6TGF5ZXIpKQorICAgICwgbV9sYXlvdXRDbGllbnQobmV3IExh
eW91dENsaWVudCh0aGlzKSkKKyAgICAsIG1fZnVsbHNjcmVlbldpbmRvdyhuZXcgTWVkaWFQbGF5
ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdyh0aGlzKSkKIHsKKyAgICBtX3Jvb3RDaGlsZC0+c2V0
TGF5b3V0Q2xpZW50KG1fbGF5b3V0Q2xpZW50LmdldCgpKTsKIH0KIAogRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6fkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIoKQogewotICAgIGlmIChtb3Zp
ZSgpKQotICAgICAgICBtb3ZpZSgpLT5leGl0RnVsbHNjcmVlbigpOwotfQotCi1RVE1vdmllR1dv
cmxkKiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjptb3ZpZSgpIGNvbnN0Ci17Ci0gICAgaWYg
KCFtX21lZGlhRWxlbWVudCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBQbGF0Zm9ybU1lZGlh
IHBsYXRmb3JtTWVkaWEgPSBtX21lZGlhRWxlbWVudC0+cGxhdGZvcm1NZWRpYSgpOwotICAgIGlm
IChwbGF0Zm9ybU1lZGlhLnR5cGUgIT0gUGxhdGZvcm1NZWRpYTo6UVRNb3ZpZUdXb3JsZFR5cGUp
Ci0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIHBsYXRmb3JtTWVkaWEubWVkaWEucXRN
b3ZpZUdXb3JsZDsKKyAgICBtX3Jvb3RDaGlsZC0+c2V0TGF5b3V0Q2xpZW50KDApOwogfQogCiB2
b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFF
bGVtZW50KiBtZWRpYUVsZW1lbnQpCkBAIC0yMTgsMTMgKzI1NSwyMSBAQCB2b2lkIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OnNldE1lZGlhCiAKIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcjo6ZW50ZXJGdWxsc2NyZWVuKCkKIHsKLSAgICBpZiAoIW1vdmllKCkpCisgICAgaWYgKCFt
X21lZGlhRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV92aWRlb1dpbmRvdyA9IG1v
dmllKCktPmVudGVyRnVsbHNjcmVlbih0aGlzKTsKKyAgICBXZWJWaWV3KiB3ZWJWaWV3ID0ga2l0
KG1fbWVkaWFFbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCkpOworICAgIEhXTkQgcGFyZW50SHdu
ZCA9IHdlYlZpZXcgPyB3ZWJWaWV3LT52aWV3V2luZG93KCkgOiAwOwogCisgICAgbV9mdWxsc2Ny
ZWVuV2luZG93LT5jcmVhdGVXaW5kb3cocGFyZW50SHduZCk7CisgICAgbV9mdWxsc2NyZWVuV2lu
ZG93LT5zZXRSb290Q2hpbGRMYXllcihtX3Jvb3RDaGlsZCk7CisKKyAgICBXS0NBQ0ZMYXllciog
dmlkZW9MYXllciA9IG1fbWVkaWFFbGVtZW50LT5wbGF5ZXIoKS0+cGxhdGZvcm1MYXllcigpOwor
ICAgIG1fcm9vdENoaWxkLT5hZGRTdWJsYXllcih2aWRlb0xheWVyKTsKKyAgICBtX3Jvb3RDaGls
ZC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICAKICAgICBSRUNUIHdpbmRvd1JlY3Q7Ci0gICAgR2V0
Q2xpZW50UmVjdChtX3ZpZGVvV2luZG93LCAmd2luZG93UmVjdCk7CisgICAgR2V0Q2xpZW50UmVj
dChtX2Z1bGxzY3JlZW5XaW5kb3ctPmh3bmQoKSwgJndpbmRvd1JlY3QpOwogICAgIG1fZnVsbHNj
cmVlblNpemUuc2V0V2lkdGgod2luZG93UmVjdC5yaWdodCAtIHdpbmRvd1JlY3QubGVmdCk7CiAg
ICAgbV9mdWxsc2NyZWVuU2l6ZS5zZXRIZWlnaHQod2luZG93UmVjdC5ib3R0b20gLSB3aW5kb3dS
ZWN0LnRvcCk7CiAKQEAgLTIzNCwxMiArMjc5LDIzIEBAIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcjo6ZW50ZXJGdWwKIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZXhpdEZ1
bGxzY3JlZW4oKQogewogICAgIFNldFdpbmRvd0xvbmdQdHIobV9odWRXaW5kb3csIDAsIDApOwot
ICAgIGlmIChtb3ZpZSgpKQotICAgICAgICBtb3ZpZSgpLT5leGl0RnVsbHNjcmVlbigpOworCisg
ICAgaWYgKG1fZnVsbHNjcmVlbldpbmRvdykKKyAgICAgICAgbV9mdWxsc2NyZWVuV2luZG93ID0g
MDsKIAogICAgIEFTU0VSVCghSXNXaW5kb3cobV9odWRXaW5kb3cpKTsKLSAgICBtX3ZpZGVvV2lu
ZG93ID0gMDsKICAgICBtX2h1ZFdpbmRvdyA9IDA7CisKKyAgICAvLyBXZSBwcmV2aW91c2x5IHJp
cHBlZCB0aGUgbWVkaWFFbGVtZW50J3MgcGxhdGZvcm0gbGF5ZXIgb3V0CisgICAgLy8gb2YgaXRz
IG9yZ2luaWFsIGxheWVyIHRyZWUgdG8gZGlzcGxheSBpdCBpbiBvdXIgZnVsbHNjcmVlbgorICAg
IC8vIHdpbmRvdy4gIE5vdywgd2UgbmVlZCB0byBnZXQgdGhlIGxheWVyIGJhY2sgaW4gaXRzIG9y
aWdpbmFsCisgICAgLy8gdHJlZS4KKyAgICAvLyAKKyAgICAvLyBBcyBhIHNpZGUgZWZmZWN0IG9m
IHNldHRpbmcgdGhlIHBsYXllciB0byBpbnZpc2libGUvdmlzaWJsZSwKKyAgICAvLyB0aGUgcGxh
eWVyJ3MgbGF5ZXIgd2lsbCBiZSByZWNyZWF0ZWQsIGFuZCB3aWxsIGJlIHBpY2tlZCB1cCAKKyAg
ICAvLyB0aGUgbmV4dCB0aW1lIHRoZSBsYXllciB0cmVlIGlzIHN5bmNoZWQuCisgICAgbV9tZWRp
YUVsZW1lbnQtPnBsYXllcigpLT5zZXRWaXNpYmxlKDApOworICAgIG1fbWVkaWFFbGVtZW50LT5w
bGF5ZXIoKS0+c2V0VmlzaWJsZSgxKTsKIH0KIAogYm9vbCBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyOjpjYW5QbGF5KCkgY29uc3QKQEAgLTMwOCw2ICszNjQsOSBAQCBMUkVTVUxUIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OmZ1bGxzCiAgICAgY2FzZSBXTV9DSEFSOgogICAgICAgICBvbkNo
YXIod1BhcmFtKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXTV9LRVlET1dOOgorICAgICAg
ICBvbktleURvd24od1BhcmFtKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXTV9MQlVUVE9O
RE9XTjoKICAgICAgICAgb25Nb3VzZURvd24oSW50UG9pbnQoR0VUX1hfTFBBUkFNKGxQYXJhbSks
IEdFVF9ZX0xQQVJBTShsUGFyYW0pKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzY0LDcgKzQyMyw3
IEBAIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Y3JlYXRlSFUKICAgICAKICAgICAv
LyBEaXJ0eSB0aGUgd2luZG93IHNvIHRoZSBIVUQgZHJhd3MKICAgICBSRUNUIGNsZWFyUmVjdCA9
IHsgbV9odWRQb3NpdGlvbi54KCksIG1faHVkUG9zaXRpb24ueSgpLCBtX2h1ZFBvc2l0aW9uLngo
KSArIHdpbmRvd1dpZHRoLCBtX2h1ZFBvc2l0aW9uLnkoKSArIHdpbmRvd0hlaWdodCB9OwotICAg
IEludmFsaWRhdGVSZWN0KG1fdmlkZW9XaW5kb3csICZjbGVhclJlY3QsIHRydWUpOworICAgIElu
dmFsaWRhdGVSZWN0KG1fZnVsbHNjcmVlbldpbmRvdy0+aHduZCgpLCAmY2xlYXJSZWN0LCB0cnVl
KTsKIAogICAgIG1fcGxheVBhdXNlQnV0dG9uLnNldFNob3dBbHRCdXR0b24oIWNhblBsYXkoKSk7
CiAgICAgbV92b2x1bWVTbGlkZXIuc2V0VmFsdWUodm9sdW1lKCkpOwpAQCAtMzc3LDcgKzQzNiw3
IEBAIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Y3JlYXRlSFUKIAogICAgIG1faHVk
V2luZG93ID0gQ3JlYXRlV2luZG93RXgoV1NfRVhfTEFZRVJFRCB8IFdTX0VYX1RSQU5TUEFSRU5U
IHwgV1NfRVhfVE9PTFdJTkRPVywgCiAgICAgICAgIGZ1bGxzY3JlZW5WaWRlZW9IVURXaW5kb3dD
bGFzc05hbWUsIDAsIFdTX1BPUFVQIHwgV1NfVklTSUJMRSwKLSAgICAgICAgbV9odWRQb3NpdGlv
bi54KCksIG1faHVkUG9zaXRpb24ueSgpLCAwLCAwLCBtX3ZpZGVvV2luZG93LCAwLCBnSW5zdGFu
Y2UsIDApOworICAgICAgICBtX2h1ZFBvc2l0aW9uLngoKSwgbV9odWRQb3NpdGlvbi55KCksIDAs
IDAsIG1fZnVsbHNjcmVlbldpbmRvdy0+aHduZCgpLCAwLCBnSW5zdGFuY2UsIDApOwogICAgIEFT
U0VSVCg6OklzV2luZG93KG1faHVkV2luZG93KSk7CiAgICAgU2V0V2luZG93TG9uZ1B0cihtX2h1
ZFdpbmRvdywgMCwgcmVpbnRlcnByZXRfY2FzdDxMT05HX1BUUj4odGhpcykpOwogCkBAIC00ODgs
NiArNTQ3LDkgQEAgTFJFU1VMVCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpodWRXbgogICAg
IGNhc2UgV01fQ0hBUjoKICAgICAgICAgY29udHJvbGxlci0+b25DaGFyKHdQYXJhbSk7CiAgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgV01fS0VZRE9XTjoKKyAgICAgICAgY29udHJvbGxlci0+b25L
ZXlEb3duKHdQYXJhbSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV01fTEJVVFRPTkRPV046
CiAgICAgICAgIGNvbnRyb2xsZXItPm9uTW91c2VEb3duKEludFBvaW50KEdFVF9YX0xQQVJBTShs
UGFyYW0pLCBHRVRfWV9MUEFSQU0obFBhcmFtKSkpOwogICAgICAgICBicmVhazsKQEAgLTUxMSw2
ICs1NzMsMTQgQEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpvbkNoYXIoaQogICAg
ICAgICB0b2dnbGVQbGF5KCk7CiB9CiAKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6
b25LZXlEb3duKGludCB2aXJ0dWFsS2V5KQoreworICAgIGlmICh2aXJ0dWFsS2V5ID09IFZLX0VT
Q0FQRSkgeworICAgICAgICBpZiAobV9tZWRpYUVsZW1lbnQpCisgICAgICAgICAgICBtX21lZGlh
RWxlbWVudC0+ZXhpdEZ1bGxzY3JlZW4oKTsKKyAgICB9Cit9CisKIHZvaWQgRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcjo6dGltZXJGaXJlZChUaW1lcjxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
PiopCiB7CiAgICAgLy8gVXBkYXRlIHRoZSB0aW1lIHNsaWRlcgpJbmRleDogV2ViS2l0L3dpbi9G
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9GdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyLmgJKHJldmlzaW9uIDYwMTY3KQorKysgV2ViS2l0L3dpbi9G
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcg
QEAKIAogI2lmIEVOQUJMRShWSURFTykKIAotI2luY2x1ZGUgIlFUTW92aWVHV29ybGQuaCIKKyNp
bmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgiCiAKICNpbmNsdWRl
IDxXZWJDb3JlL0hUTUxNZWRpYUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlLmg+
CkBAIC0zOCw2ICszOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNz
Q29udGV4dDsKK2NsYXNzIFdLQ0FDRkxheWVyOwogfQogCiBjbGFzcyBIVURXaWRnZXQgewpAQCAt
OTksNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9kcmFnU3RhcnRPZmZzZXQ7CiB9Owog
Ci1jbGFzcyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyIDogUVRNb3ZpZUdXb3JsZEZ1bGxzY3Jl
ZW5DbGllbnQsIHB1YmxpYyBOb25jb3B5YWJsZSB7CitjbGFzcyBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyIDogV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCwgcHVi
bGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKICAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
KCk7CiAgICAgdmlydHVhbCB+RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcigpOwpAQCAtMTExLDEy
ICsxMTIsMTEgQEAgcHVibGljOgogICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsKIAogcHJpdmF0
ZToKLSAgICAvLyBRVE1vdmllR1dvcmxkRnVsbHNjcmVlbkNsaWVudAorICAgIC8vIE1lZGlhUGxh
eWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3dDbGllbnQKICAgICB2aXJ0dWFsIExSRVNVTFQgZnVs
bHNjcmVlbkNsaWVudFduZFByb2MoSFdORCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0sIExQQVJBTSk7
Ci0KKyAgICAKICAgICB2b2lkIGVuc3VyZVdpbmRvdygpOwotICAgIFFUTW92aWVHV29ybGQqIG1v
dmllKCkgY29uc3Q7Ci0KKyAgICAKICAgICBib29sIGNhblBsYXkoKSBjb25zdDsKICAgICB2b2lk
IHBsYXkoKTsKICAgICB2b2lkIHBhdXNlKCk7CkBAIC0xNDUsMTMgKzE0NSwyMCBAQCBwcml2YXRl
OgogICAgIHZvaWQgb25Nb3VzZURvd24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2
b2lkIG9uTW91c2VNb3ZlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdm9pZCBvbk1v
dXNlVXAoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2b2lkIG9uS2V5RG93bihpbnQg
dmlydHVhbEtleSk7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudD4gbV9t
ZWRpYUVsZW1lbnQ7CiAKLSAgICBIV05EIG1faHVkV2luZG93LCBtX3ZpZGVvV2luZG93OworICAg
IEhXTkQgbV9odWRXaW5kb3c7CiAgICAgT3duUHRyPEhCSVRNQVA+IG1fYml0bWFwOwogICAgIFdl
YkNvcmU6OkludFNpemUgbV9mdWxsc2NyZWVuU2l6ZTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBt
X2h1ZFBvc2l0aW9uOworICAgIE93blB0cjxXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93PiBtX2Z1bGxzY3JlZW5XaW5kb3c7CisgICAgUmVmUHRyPFdlYkNvcmU6OldL
Q0FDRkxheWVyPiBtX3Jvb3RDaGlsZDsKKworICAgIGNsYXNzIExheW91dENsaWVudDsKKyAgICBm
cmllbmQgY2xhc3MgTGF5b3V0Q2xpZW50OworICAgIE93blB0cjxMYXlvdXRDbGllbnQ+IG1fbGF5
b3V0Q2xpZW50OwogCiAgICAgSFVEQnV0dG9uIG1fcGxheVBhdXNlQnV0dG9uOwogICAgIEhVREJ1
dHRvbiBtX3RpbWVTbGlkZXJCdXR0b247CkluZGV4OiBXZWJLaXQvd2luL1dlYlZpZXcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlZpZXcuaAkocmV2aXNpb24gNjAxNjcpCisrKyBXZWJL
aXQvd2luL1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtODg2LDYgKzg4Niw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNhbmNlbERlbGV0ZUJhY2tpbmdTdG9yZVNvb24oKTsKIAogICAgIEhXTkQg
dG9wTGV2ZWxQYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3RvcExldmVsUGFyZW50OyB9CisgICAg
SFdORCB2aWV3V2luZG93KCkgY29uc3QgeyByZXR1cm4gbV92aWV3V2luZG93OyB9CiAKICAgICB2
b2lkIHVwZGF0ZUFjdGl2ZVN0YXRlKCk7CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYwMTc4KQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIw
MTAtMDUtMjUgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnVsbCBzY3JlZW4gZG9lc24ndCB3
b3JrIGZvciB2aWRlbyBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mzk1NTcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODAxMTgxMworCisg
ICAgICAgIFJlLWVuYWJsZWQgZnVsbHNjcmVlbiBzdXBwb3J0IG9uIHdpbmRvd3MsIGFuZCBtb2Rp
ZmllZCB0ZXN0cyB0byBtYXRjaC4KKworICAgICAgICAqIHBsYXRmb3JtL3dpbi9tZWRpYS9jb250
cm9scy1hZnRlci1yZWxvYWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9t
ZWRpYS9jb250cm9scy1kcmFnLXRpbWViYXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRm
b3JtL3dpbi9tZWRpYS9jb250cm9scy1zdHJpY3QtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1zdHlsaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vbWVkaWEvdmlkZW8tY29udHJvbHMtcmVuZGVyaW5nLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vbWVkaWEvdmlkZW8tZGlzcGxheS10b2dnbGUtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9tZWRpYS92aWRlby1uby1hdWRpby1l
eHBlY3RlZC50eHQ6CisKIDIwMTAtMDUtMjUgIEp1bGllIFBhcmVudCAgPGpwYXJlbnRAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW4vbWVkaWEvY29udHJvbHMtYWZ0ZXItcmVsb2FkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvY29udHJvbHMtYWZ0ZXItcmVsb2Fk
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjAxNjcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vbWVkaWEvY29udHJvbHMtYWZ0ZXItcmVsb2FkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMTcsOSArMTcsMTAgQEAgbGF5ZXIgYXQgKDgsNDIpIHNpemUgMzIweDI0MAogbGF5ZXIg
YXQgKDgsMjY2KSBzaXplIDMyMHgxNgogICBSZW5kZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkg
e0RJVn0gYXQgKDAsMjI0KSBzaXplIDMyMHgxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0
ICgwLDApIHNpemUgMTZ4MTYKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkg
c2l6ZSAyNTZ4MTYKLSAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjU2
eDE2CisgICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUgMjQweDE2Cisg
ICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI0MHgxNgogICAgICAgICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMiwxKSBzaXplIDEzeDE0CisgICAgUmVuZGVyQnV0dG9uIHtJ
TlBVVH0gYXQgKDI1NiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQg
KDI3MiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI4OCwwKSBz
aXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMwNCwwKSBzaXplIDE2eDE2
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvY29udHJvbHMtZHJhZy10aW1l
YmFyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
bWVkaWEvY29udHJvbHMtZHJhZy10aW1lYmFyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjAxNjcp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvY29udHJvbHMtZHJhZy10aW1lYmFy
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCwxMCArNCwxMCBAQCBSVU4odmlkZW8u
YXV0b3BsYXkgPSB0cnVlKQogUlVOKHZpZGVvLnNyYyA9ICdjb250ZW50L3Rlc3QubXA0JykKIEVW
RU5UKHBsYXlpbmcpCiBFVkVOVChzZWVrZWQpCi1UaW1lOiAyLjEKK1RpbWU6IDIuMwogRVZFTlQo
c2Vla2VkKQotVGltZTogMi42CitUaW1lOiAyLjgKIEVWRU5UKHNlZWtlZCkKLVRpbWU6IDMuMQor
VGltZTogMy40CiBFTkQgT0YgVEVTVAogCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
bWVkaWEvY29udHJvbHMtc3RyaWN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvY29udHJvbHMtc3RyaWN0LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gNjAxNjcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvY29udHJvbHMt
c3RyaWN0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTcsOSArMTcsMTAgQEAgbGF5
ZXIgYXQgKDgsNTApIHNpemUgMzIweDI0MAogbGF5ZXIgYXQgKDgsMjc0KSBzaXplIDMyMHgxNgog
ICBSZW5kZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMjI0KSBzaXplIDMy
MHgxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUgMTZ4MTYKLSAgICBS
ZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNTZ4MTYKLSAgICAgIFJlbmRl
clNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjU2eDE2CisgICAgUmVuZGVyRmxleGlibGVC
b3gge0RJVn0gYXQgKDE2LDApIHNpemUgMjQweDE2CisgICAgICBSZW5kZXJTbGlkZXIge0lOUFVU
fSBhdCAoMCwwKSBzaXplIDI0MHgxNgogICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiwx
KSBzaXplIDEzeDE0CisgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI1NiwwKSBzaXplIDE2
eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI3MiwwKSBzaXplIDE2eDE2CiAgICAg
UmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI4OCwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0
dG9uIHtJTlBVVH0gYXQgKDMwNCwwKSBzaXplIDE2eDE2CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vbWVkaWEvY29udHJvbHMtc3R5bGluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLXN0eWxpbmctZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiA2MDE2NykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRp
YS9jb250cm9scy1zdHlsaW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjEsOSAr
MjEsMTAgQEAgbGF5ZXIgYXQgKDE4LDQyKSBzaXplIDMyMHgyNDAKIGxheWVyIGF0ICgxOCwyNjYp
IHNpemUgMzIweDE2CiAgIFJlbmRlckZsZXhpYmxlQm94IChwb3NpdGlvbmVkKSB7RElWfSBhdCAo
MCwyMjQpIHNpemUgMzIweDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDAsMCkgc2l6
ZSAxNngxNgotICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI1Nngx
NgotICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNTZ4MTYKKyAgICBS
ZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNDB4MTYKKyAgICAgIFJlbmRl
clNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjQweDE2CiAgICAgICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgyLDEpIHNpemUgMTN4MTQKKyAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAo
MjU2LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjcyLDApIHNp
emUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjg4LDApIHNpemUgMTZ4MTYK
ICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzA0LDApIHNpemUgMTZ4MTYKQEAgLTMyLDkg
KzMzLDEwIEBAIGxheWVyIGF0ICg4LDI4Mikgc2l6ZSAzMjB4MjQwCiBsYXllciBhdCAoOCw1MDYp
IHNpemUgMzIweDE2CiAgIFJlbmRlckZsZXhpYmxlQm94IChwb3NpdGlvbmVkKSB7RElWfSBhdCAo
MCwyMjQpIHNpemUgMzIweDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDAsMCkgc2l6
ZSAxNngxNgotICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI1Nngx
NgotICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNTZ4MTYKKyAgICBS
ZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNDB4MTYKKyAgICAgIFJlbmRl
clNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjQweDE2CiAgICAgICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgyLDEpIHNpemUgMTN4MTQKKyAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAo
MjU2LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjcyLDApIHNp
emUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjg4LDApIHNpemUgMTZ4MTYK
ICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzA0LDApIHNpemUgMTZ4MTYKSW5kZXg6IExh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS92aWRlby1jb250cm9scy1yZW5kZXJpbmctZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS92
aWRlby1jb250cm9scy1yZW5kZXJpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MDE2NykKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS92aWRlby1jb250cm9scy1yZW5kZXJpbmct
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMCw5ICsyMCwxMCBAQCBsYXllciBhdCAo
OCw0Mikgc2l6ZSAzMjB4MjQwCiBsYXllciBhdCAoOCwyNjYpIHNpemUgMzIweDE2CiAgIFJlbmRl
ckZsZXhpYmxlQm94IChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCwyMjQpIHNpemUgMzIweDE2CiAg
ICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAxNngxNgotICAgIFJlbmRlckZs
ZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI1NngxNgotICAgICAgUmVuZGVyU2xpZGVy
IHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNTZ4MTYKKyAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElW
fSBhdCAoMTYsMCkgc2l6ZSAyNDB4MTYKKyAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgw
LDApIHNpemUgMjQweDE2CiAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDEpIHNpemUg
MTN4MTQKKyAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjU2LDApIHNpemUgMTZ4MTYKICAg
ICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjcyLDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJC
dXR0b24ge0lOUFVUfSBhdCAoMjg4LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lO
UFVUfSBhdCAoMzA0LDApIHNpemUgMTZ4MTYKQEAgLTMxLDkgKzMyLDEwIEBAIGxheWVyIGF0ICg4
LDI4Mikgc2l6ZSAzMjB4MjQwCiBsYXllciBhdCAoOCw1MDYpIHNpemUgMzIweDE2CiAgIFJlbmRl
ckZsZXhpYmxlQm94IChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCwyMjQpIHNpemUgMzIweDE2CiAg
ICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAxNngxNgotICAgIFJlbmRlckZs
ZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI1NngxNgotICAgICAgUmVuZGVyU2xpZGVy
IHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNTZ4MTYKKyAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElW
fSBhdCAoMTYsMCkgc2l6ZSAyNDB4MTYKKyAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgw
LDApIHNpemUgMjQweDE2CiAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDEpIHNpemUg
MTN4MTQKKyAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjU2LDApIHNpemUgMTZ4MTYKICAg
ICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjcyLDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJC
dXR0b24ge0lOUFVUfSBhdCAoMjg4LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lO
UFVUfSBhdCAoMzA0LDApIHNpemUgMTZ4MTYKQEAgLTQ0LDkgKzQ2LDEwIEBAIGxheWVyIGF0ICg4
LDUyMikgc2l6ZSAzMjB4MjQwCiBsYXllciBhdCAoOCw3NDYpIHNpemUgMzIweDE2CiAgIFJlbmRl
ckZsZXhpYmxlQm94IChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCwyMjQpIHNpemUgMzIweDE2CiAg
ICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAxNngxNgotICAgIFJlbmRlckZs
ZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI1NngxNgotICAgICAgUmVuZGVyU2xpZGVy
IHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNTZ4MTYKKyAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElW
fSBhdCAoMTYsMCkgc2l6ZSAyNDB4MTYKKyAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgw
LDApIHNpemUgMjQweDE2CiAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDEpIHNpemUg
MTN4MTQKKyAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjU2LDApIHNpemUgMTZ4MTYKICAg
ICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjcyLDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJC
dXR0b24ge0lOUFVUfSBhdCAoMjg4LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lO
UFVUfSBhdCAoMzA0LDApIHNpemUgMTZ4MTYKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9tZWRpYS92aWRlby1kaXNwbGF5LXRvZ2dsZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL3ZpZGVvLWRpc3BsYXktdG9nZ2xlLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gNjAxNjcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVk
aWEvdmlkZW8tZGlzcGxheS10b2dnbGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
Niw5ICsxNiwxMCBAQCBsYXllciBhdCAoOCwyNikgc2l6ZSAzMjB4MjQwCiBsYXllciBhdCAoOCwy
NTApIHNpemUgMzIweDE2CiAgIFJlbmRlckZsZXhpYmxlQm94IChwb3NpdGlvbmVkKSB7RElWfSBh
dCAoMCwyMjQpIHNpemUgMzIweDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDAsMCkg
c2l6ZSAxNngxNgotICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI1
NngxNgotICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNTZ4MTYKKyAg
ICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNDB4MTYKKyAgICAgIFJl
bmRlclNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjQweDE2CiAgICAgICAgIFJlbmRlckJs
b2NrIHtESVZ9IGF0ICgyLDEpIHNpemUgMTN4MTQKKyAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBh
dCAoMjU2LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjcyLDAp
IHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjg4LDApIHNpemUgMTZ4
MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzA0LDApIHNpemUgMTZ4MTYKSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS92aWRlby1uby1hdWRpby1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL3ZpZGVvLW5v
LWF1ZGlvLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjAxNjcpCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vbWVkaWEvdmlkZW8tbm8tYXVkaW8tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xNyw4ICsxNyw5IEBAIGxheWVyIGF0ICg4LDQyKSBzaXplIDM1MngyODgKIGxheWVyIGF0
ICg4LDMxNCkgc2l6ZSAzNTJ4MTYKICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtE
SVZ9IGF0ICgwLDI3Mikgc2l6ZSAzNTJ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAo
MCwwKSBzaXplIDE2eDE2Ci0gICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNp
emUgMzA0eDE2Ci0gICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDMwNHgx
NgorICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI4OHgxNgorICAg
ICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyODh4MTYKICAgICAgICAgUmVu
ZGVyQmxvY2sge0RJVn0gYXQgKDIsMSkgc2l6ZSAxM3gxNAorICAgIFJlbmRlckJ1dHRvbiB7SU5Q
VVR9IGF0ICgzMDQsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgz
MjAsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMzYsMCkgc2l6
ZSAxNngxNgo=
</data>
<flag name="review"
          id="41553"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>