<?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>109325</bug_id>
          
          <creation_ts>2013-02-08 14:02:41 -0800</creation_ts>
          <short_desc>The &apos;global isinf/isnan&apos; compiler quirk required when using clang with libstdc++</short_desc>
          <delta_ts>2013-02-13 15:02:55 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>109314</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>abarth</cc>
    
    <cc>alecflett</cc>
    
    <cc>allan.jensen</cc>
    
    <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dgrogan</cc>
    
    <cc>dino</cc>
    
    <cc>d-r</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fmalita</cc>
    
    <cc>gustavo</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jsbell</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>pdr</cc>
    
    <cc>pnormand</cc>
    
    <cc>schenney</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>828755</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-02-08 14:02:41 -0800</bug_when>
    <thetext>The &apos;global isinf/isnan&apos; compiler quirk required when using clang with libstdc++</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828759</commentid>
    <comment_count>1</comment_count>
      <attachid>187363</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-02-08 14:14:01 -0800</bug_when>
    <thetext>Created attachment 187363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829300</commentid>
    <comment_count>2</comment_count>
      <attachid>187363</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-02-10 09:17:18 -0800</bug_when>
    <thetext>Comment on attachment 187363
Patch

Why can&apos;t we always use std::isinf and std::isnan instead of doing this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829537</commentid>
    <comment_count>3</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-02-11 03:00:45 -0800</bug_when>
    <thetext>The quirk was introduced in bug #59249 to work around the collision between C99 and C++11 isnan and isinf methods.

It&apos;s more of a standard library quirk than a compiler quirk, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829839</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-02-11 10:16:50 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; The quirk was introduced in bug #59249 to work around the collision between C99 and C++11 isnan and isinf methods.
&gt; 
&gt; It&apos;s more of a standard library quirk than a compiler quirk, though.

That still doesn&apos;t answer my question. I&apos;m guessing that there&apos;s an ambiguity error when calling isinf or isnan when the std namespace has been brought in using &quot;using namespace std&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829859</commentid>
    <comment_count>5</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-02-11 10:34:01 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; The quirk was introduced in bug #59249 to work around the collision between C99 and C++11 isnan and isinf methods.
&gt; &gt; 
&gt; &gt; It&apos;s more of a standard library quirk than a compiler quirk, though.
&gt; 
&gt; That still doesn&apos;t answer my question. I&apos;m guessing that there&apos;s an ambiguity error when calling isinf or isnan when the std namespace has been brought in using &quot;using namespace std&quot;?

Yes exactly, and previously the coding style required us to use &apos;using namespace std;&apos;. This has changed now, but we  might still have problems with some compilers not having the functions in the std namespace (seems the Intel compiler only fixed that recently).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829869</commentid>
    <comment_count>6</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-02-11 10:39:42 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; The quirk was introduced in bug #59249 to work around the collision between C99 and C++11 isnan and isinf methods.
&gt; &gt; &gt; 
&gt; &gt; &gt; It&apos;s more of a standard library quirk than a compiler quirk, though.
&gt; &gt; 
&gt; &gt; That still doesn&apos;t answer my question. I&apos;m guessing that there&apos;s an ambiguity error when calling isinf or isnan when the std namespace has been brought in using &quot;using namespace std&quot;?
&gt; 
&gt; Yes exactly, and previously the coding style required us to use &apos;using namespace std;&apos;. This has changed now, but we  might still have problems with some compilers not having the functions in the std namespace (seems the Intel compiler only fixed that recently).

In that case, I&apos;d rather see us move in that direction (adding explicit std:: qualifications for isinf and isnan). If some STL versions don&apos;t put isinf and isnan in the std namespace than we should add workarounds for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829891</commentid>
    <comment_count>7</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-02-11 10:58:59 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; &gt; The quirk was introduced in bug #59249 to work around the collision between C99 and C++11 isnan and isinf methods.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; It&apos;s more of a standard library quirk than a compiler quirk, though.
&gt; &gt; &gt; 
&gt; &gt; &gt; That still doesn&apos;t answer my question. I&apos;m guessing that there&apos;s an ambiguity error when calling isinf or isnan when the std namespace has been brought in using &quot;using namespace std&quot;?
&gt; &gt; 
&gt; &gt; Yes exactly, and previously the coding style required us to use &apos;using namespace std;&apos;. This has changed now, but we  might still have problems with some compilers not having the functions in the std namespace (seems the Intel compiler only fixed that recently).
&gt; 
&gt; In that case, I&apos;d rather see us move in that direction (adding explicit std:: qualifications for isinf and isnan). If some STL versions don&apos;t put isinf and isnan in the std namespace than we should add workarounds for that.

I agree we should move to std:: prefixed methods everywhere, but I am not sure it should be done here and now.

I have not seen or heard of any issues with this quirk except that it looks kind of ugly, but it is localised to a few lines of code in a single file, and as long as it doesn&apos;t cause any trouble, I personally think it would be a wrong to undo it, if doing so could potentially create new issues to an unknown set of other configurations.

For this patch in particular, I would accept it as long as it only affects it own configuration of clang+glibcpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830036</commentid>
    <comment_count>8</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-02-11 13:19:50 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; &gt; &gt; The quirk was introduced in bug #59249 to work around the collision between C99 and C++11 isnan and isinf methods.
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; It&apos;s more of a standard library quirk than a compiler quirk, though.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; That still doesn&apos;t answer my question. I&apos;m guessing that there&apos;s an ambiguity error when calling isinf or isnan when the std namespace has been brought in using &quot;using namespace std&quot;?
&gt; &gt; &gt; 
&gt; &gt; &gt; Yes exactly, and previously the coding style required us to use &apos;using namespace std;&apos;. This has changed now, but we  might still have problems with some compilers not having the functions in the std namespace (seems the Intel compiler only fixed that recently).
&gt; &gt; 
&gt; &gt; In that case, I&apos;d rather see us move in that direction (adding explicit std:: qualifications for isinf and isnan). If some STL versions don&apos;t put isinf and isnan in the std namespace than we should add workarounds for that.
&gt; 
&gt; I agree we should move to std:: prefixed methods everywhere, but I am not sure it should be done here and now.
&gt; 
&gt; I have not seen or heard of any issues with this quirk except that it looks kind of ugly, but it is localised to a few lines of code in a single file, and as long as it doesn&apos;t cause any trouble, I personally think it would be a wrong to undo it, if doing so could potentially create new issues to an unknown set of other configurations.
&gt; 

Again, I&apos;d much rather see a patch that just replaces all calls to isinf/isnan with the prefixed versions. I&apos;d be willing to write one myself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830081</commentid>
    <comment_count>9</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-02-11 13:46:30 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #6)
&gt; &gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; &gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; &gt; &gt; &gt; The quirk was introduced in bug #59249 to work around the collision between C99 and C++11 isnan and isinf methods.
&gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; It&apos;s more of a standard library quirk than a compiler quirk, though.
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; That still doesn&apos;t answer my question. I&apos;m guessing that there&apos;s an ambiguity error when calling isinf or isnan when the std namespace has been brought in using &quot;using namespace std&quot;?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Yes exactly, and previously the coding style required us to use &apos;using namespace std;&apos;. This has changed now, but we  might still have problems with some compilers not having the functions in the std namespace (seems the Intel compiler only fixed that recently).
&gt; &gt; &gt; 
&gt; &gt; &gt; In that case, I&apos;d rather see us move in that direction (adding explicit std:: qualifications for isinf and isnan). If some STL versions don&apos;t put isinf and isnan in the std namespace than we should add workarounds for that.
&gt; &gt; 
&gt; &gt; I agree we should move to std:: prefixed methods everywhere, but I am not sure it should be done here and now.
&gt; &gt; 
&gt; &gt; I have not seen or heard of any issues with this quirk except that it looks kind of ugly, but it is localised to a few lines of code in a single file, and as long as it doesn&apos;t cause any trouble, I personally think it would be a wrong to undo it, if doing so could potentially create new issues to an unknown set of other configurations.
&gt; &gt; 
&gt; 
&gt; Again, I&apos;d much rather see a patch that just replaces all calls to isinf/isnan with the prefixed versions. I&apos;d be willing to write one myself.

I can work on that as well, for starters modifying calls to isinf/isnan by prefixing them. I could then revisit the need for this specific compiler quirk both in general case of using gcc with libstdc++ and the case of using clang with libstdc++.

If I&apos;m understanding the stretch goals correctly here all the calls to other methods in the std namespace would then also move to using the std:: prefix, which I might fancy doing as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830089</commentid>
    <comment_count>10</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-02-11 13:54:07 -0800</bug_when>
    <thetext>&gt; 
&gt; I can work on that as well, for starters modifying calls to isinf/isnan by prefixing them. 

That sounds great!

&gt; I could then revisit the need for this specific compiler quirk both in general case of using gcc with libstdc++ and the case of using clang with libstdc++.

Sounds good.

&gt; If I&apos;m understanding the stretch goals correctly here all the calls to other methods in the std namespace would then also move to using the std:: prefix, which I might fancy doing as well.

I think that&apos;s a separate patch though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830108</commentid>
    <comment_count>11</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-02-11 14:10:51 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; I can work on that as well, for starters modifying calls to isinf/isnan by prefixing them. I could then revisit the need for this specific compiler quirk both in general case of using gcc with libstdc++ and the case of using clang with libstdc++.
&gt; 
To avoid issues with unprefixed isinf and isnan from popping up here and there in future, it may also be worthwhile to make the style-checker warn against it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831805</commentid>
    <comment_count>12</comment_count>
      <attachid>188054</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-02-13 04:26:01 -0800</bug_when>
    <thetext>Created attachment 188054
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831814</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-13 04:39:42 -0800</bug_when>
    <thetext>Attachment 188054 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSValueRef.cpp&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/JSCTypedArrayStubs.h&apos;, u&apos;Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp&apos;, u&apos;Source/JavaScriptCore/offlineasm/cloop.rb&apos;, u&apos;Source/JavaScriptCore/runtime/DateConstructor.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/DateInstance.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/DatePrototype.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSCJSValue.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSDateMath.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/MathObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/PropertyDescriptor.cpp&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/Compiler.h&apos;, u&apos;Source/WTF/wtf/DateMath.cpp&apos;, u&apos;Source/WTF/wtf/IntegralTypedArrayBase.h&apos;, u&apos;Source/WTF/wtf/MathExtras.h&apos;, u&apos;Source/WTF/wtf/MediaTime.cpp&apos;, u&apos;Source/WTF/wtf/Uint8ClampedArray.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/Modules/mediasource/MediaSource.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioBufferSourceNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioParam.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/PannerNode.cpp&apos;, u&apos;Source/WebCore/bindings/js/IDBBindingUtilities.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDataViewCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSGeolocationCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSHTMLOptionsCollectionCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSWebKitPointCustom.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorV8.pm&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSFloat64Array.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp&apos;, u&apos;Source/WebCore/bindings/v8/IDBBindingUtilities.cpp&apos;, u&apos;Source/WebCore/bindings/v8/V8Binding.cpp&apos;, u&apos;Source/WebCore/bindings/v8/custom/V8GeolocationCustom.cpp&apos;, u&apos;Source/WebCore/bindings/v8/custom/V8HTMLOptionsCollectionCustom.cpp&apos;, u&apos;Source/WebCore/bindings/v8/custom/V8WebKitPointCustom.cpp&apos;, u&apos;Source/WebCore/bridge/qt/qt_runtime.cpp&apos;, u&apos;Source/WebCore/css/WebKitCSSMatrix.cpp&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.cpp&apos;, u&apos;Source/WebCore/html/MediaController.cpp&apos;, u&apos;Source/WebCore/html/canvas/WebGLRenderingContext.cpp&apos;, u&apos;Source/WebCore/html/track/TextTrack.cpp&apos;, u&apos;Source/WebCore/html/track/TextTrackCue.cpp&apos;, u&apos;Source/WebCore/page/DOMWindow.cpp&apos;, u&apos;Source/WebCore/page/WindowFeatures.cpp&apos;, u&apos;Source/WebCore/platform/CalculationValue.cpp&apos;, u&apos;Source/WebCore/platform/Decimal.cpp&apos;, u&apos;Source/WebCore/platform/Length.cpp&apos;, u&apos;Source/WebCore/platform/audio/AudioResampler.cpp&apos;, u&apos;Source/WebCore/platform/audio/DynamicsCompressorKernel.cpp&apos;, u&apos;Source/WebCore/platform/audio/Reverb.cpp&apos;, u&apos;Source/WebCore/platform/graphics/Font.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h&apos;, u&apos;Source/WebCore/platform/graphics/gpu/LoopBlinnMathUtils.cpp&apos;, u&apos;Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp&apos;, u&apos;Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm&apos;, u&apos;Source/WebCore/platform/graphics/opentype/OpenTypeVerticalData.cpp&apos;, u&apos;Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp&apos;, u&apos;Source/WebCore/platform/network/ResourceResponseBase.cpp&apos;, u&apos;Source/WebCore/rendering/RenderMediaControlsChromium.cpp&apos;, u&apos;Source/WebCore/rendering/RenderThemeMac.mm&apos;, u&apos;Source/WebCore/svg/SVGAnimationElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGSVGElement.cpp&apos;, u&apos;Source/WebCore/svg/animation/SMILTime.h&apos;, u&apos;Source/WebCore/svg/animation/SVGSMILElement.cpp&apos;, u&apos;Source/WebCore/xml/XPathFunctions.cpp&apos;, u&apos;Source/WebCore/xml/XPathValue.cpp&apos;, u&apos;Source/WebKit/chromium/ChangeLog&apos;, u&apos;Source/WebKit/chromium/tests/DecimalTest.cpp&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/WebView/WebView.mm&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/DumpRenderTree/TestRunner.cpp&apos;]&quot; exit_code: 1
Source/WTF/wtf/MathExtras.h:206:  wtf_fmod is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 1 in 78 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>832248</commentid>
    <comment_count>14</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-02-13 13:16:34 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #9)
&gt; &gt; I can work on that as well, for starters modifying calls to isinf/isnan by prefixing them. I could then revisit the need for this specific compiler quirk both in general case of using gcc with libstdc++ and the case of using clang with libstdc++.
&gt; &gt; 
&gt; To avoid issues with unprefixed isinf and isnan from popping up here and there in future, it may also be worthwhile to make the style-checker warn against it.

Created bug #109729.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832389</commentid>
    <comment_count>15</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-02-13 15:02:55 -0800</bug_when>
    <thetext>Committed r142810: &lt;http://trac.webkit.org/changeset/142810&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187363</attachid>
            <date>2013-02-08 14:14:01 -0800</date>
            <delta_ts>2013-02-13 04:25:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109325-20130208231036.patch</filename>
            <type>text/plain</type>
            <size>1317</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNDIzMjEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEzLTAyLTA4ICBaYW4gRG9iZXJzZWsgIDx6ZG9i
ZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBUaGUgJ2dsb2JhbCBpc2luZi9pc25hbicgY29t
cGlsZXIgcXVpcmsgcmVxdWlyZWQgd2hlbiB1c2luZyBjbGFuZyB3aXRoIGxpYnN0ZGMrKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MzI1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0IHRoZSBXVEZf
Q09NUElMRVJfUVVJUktfR0NDMTFfR0xPQkFMX0lTSU5GX0lTTkFOIGRlZmluZSB0byAxIHdoZW4K
KyAgICAgICAgdXNpbmcgQ2xhbmcgd2l0aCBsaWJzdGRjKysgYXMgdGhlIHN0YW5kYXJkIGxpYnJh
cnkuCisKKyAgICAgICAgKiB3dGYvQ29tcGlsZXIuaDoKKwogMjAxMy0wMi0wOCAgQWRhbSBCYXJ0
aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBXZWFrUHRycyB0byBjb21tdW5p
Y2F0ZSBiZXR3ZWVuIHRoZSBIVE1MRG9jdW1lbnRQYXJzZXIgYW5kIHRoZSBCYWNrZ3JvdW5kSFRN
TFBhcnNlcgpJbmRleDogU291cmNlL1dURi93dGYvQ29tcGlsZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9Db21waWxlci5oCShyZXZpc2lvbiAxNDIzMjEpCisrKyBTb3VyY2UvV1RG
L3d0Zi9Db21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCwxMyBAQAogI2RlZmlu
ZSBXVEZfQ09NUElMRVJfU1VQUE9SVFNfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUiBfX2hhc19leHRl
bnNpb24oaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcikKICNkZWZpbmUgV1RGX0NPTVBJTEVSX1NVUFBP
UlRTX0NYWF9TVFJPTkdfRU5VTVMgX19oYXNfZXh0ZW5zaW9uKGN4eF9zdHJvbmdfZW51bXMpCiAK
KyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorI2luY2x1ZGUgPGNzdGRkZWY+CisjaWYgZGVmaW5l
ZChfX0dMSUJDWFhfXykKKyNkZWZpbmUgV1RGX0NPTVBJTEVSX1FVSVJLX0dDQzExX0dMT0JBTF9J
U0lORl9JU05BTiAxCisjZW5kaWYKKyNlbmRpZgorCiAjZW5kaWYKIAogI2lmbmRlZiBDTEFOR19Q
UkFHTUEK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188054</attachid>
            <date>2013-02-13 04:26:01 -0800</date>
            <delta_ts>2013-02-13 10:09:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109325-20130213132230.patch</filename>
            <type>text/plain</type>
            <size>87418</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YWEwYmI0ZWUzYzg4ZDcwMDAxYzU4MjA3YzkxNjhmMjNlZjA5NTRmLi5mMzc2ZGUwYWYzMjRhNDIw
OWE3MzlhNDc3YWU1YmMwNThiODFkNDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAxMy0wMi0xMyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5j
b20+CisKKyAgICAgICAgVGhlICdnbG9iYWwgaXNpbmYvaXNuYW4nIGNvbXBpbGVyIHF1aXJrIHJl
cXVpcmVkIHdoZW4gdXNpbmcgY2xhbmcgd2l0aCBsaWJzdGRjKysKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTMyNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZWZpeCBjYWxscyB0byB0aGUgaXNpbmYg
YW5kIGlzbmFuIG1ldGhvZHMgd2l0aCBzdGQ6OiwgZGVjbGFyaW5nIHdlIHdhbnQgdG8gdXNlIHRo
ZQorICAgICAgICB0d28gbWV0aG9kcyBhcyB0aGV5J3JlIHByb3ZpZGVkIGJ5IHRoZSBDKysgc3Rh
bmRhcmQgbGlicmFyeSBiZWluZyB1c2VkLgorCisgICAgICAgICogQVBJL0pTVmFsdWVSZWYuY3Bw
OgorICAgICAgICAoSlNWYWx1ZU1ha2VOdW1iZXIpOgorICAgICAgICAqIEpTQ1R5cGVkQXJyYXlT
dHVicy5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWQp
OgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmNvbnN0YW50TmFOKToKKyAgICAgICAgKiBvZmZsaW5lYXNtL2Ns
b29wLnJiOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6ZGF0ZVVUQyk6IEFsc28gaW5jbHVkZSBhbiBvcHBvcnR1bmlzdGljIHN0eWxlIGZpeC4K
KyAgICAgICAgKiBydW50aW1lL0RhdGVJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkRhdGVJ
bnN0YW5jZTo6Y2FsY3VsYXRlR3JlZ29yaWFuRGF0ZVRpbWUpOgorICAgICAgICAoSlNDOjpEYXRl
SW5zdGFuY2U6OmNhbGN1bGF0ZUdyZWdvcmlhbkRhdGVUaW1lVVRDKToKKyAgICAgICAgKiBydW50
aW1lL0RhdGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0TWls
bGlTZWNvbmRzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ01pbGxpc2Vjb25k
cyk6CisgICAgICAgIChKU0M6OnNldE5ld1ZhbHVlRnJvbVRpbWVBcmdzKToKKyAgICAgICAgKEpT
Qzo6c2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5j
U2V0WWVhcik6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNWYWx1ZTo6dG9JbnRlZ2VyKToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0ZU1hdGguY3Bw
OgorICAgICAgICAoSlNDOjpnZXRVVENPZmZzZXQpOgorICAgICAgICAoSlNDOjpwYXJzZURhdGVG
cm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKToKKyAgICAgICAgKEpTQzo6cGFyc2VEYXRlKToK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAg
KEpTQzo6Z2xvYmFsRnVuY0lzTmFOKToKKyAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jTWF4KToKKyAgICAgICAgKEpTQzo6bWF0aFBy
b3RvRnVuY01pbik6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNQb3cpOgorICAgICAgICAq
IHJ1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6c2FtZVZhbHVl
KToKKwogMjAxMy0wMi0xMiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgog
CiAgICAgICAgIFtpT1NdIEVuYWJsZSBQQUdFX1ZJU0lCSUxJVFlfQVBJCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGUwOWU5MWM0
MTg5NTQwNmVhZmQ2MDVkMDIyNDAwN2I2NTg3M2QxZTQuLjZmOTk2MmU2ZTE3M2ZhNzc5MDZiODY5
OTE4NTgyYzRmMWZjM2Y5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTMtMDItMTMgIFphbiBE
b2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFRoZSAnZ2xvYmFsIGlz
aW5mL2lzbmFuJyBjb21waWxlciBxdWlyayByZXF1aXJlZCB3aGVuIHVzaW5nIGNsYW5nIHdpdGgg
bGlic3RkYysrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDkzMjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBQcmVmaXggY2FsbHMgdG8gdGhlIGlzaW5mIGFuZCBpc25hbiBtZXRob2RzIHdpdGggc3RkOjos
IGRlY2xhcmluZyB3ZSB3YW50IHRvIHVzZSB0aGUKKyAgICAgICAgdHdvIG1ldGhvZHMgYXMgdGhl
eSdyZSBwcm92aWRlZCBieSB0aGUgQysrIHN0YW5kYXJkIGxpYnJhcnkgYmVpbmcgdXNlZC4KKwor
ICAgICAgICAqIHd0Zi9Db21waWxlci5oOiBSZW1vdmUgdGhlIGdsb2JhbCBpc2luZi9pc25hbiBj
b21waWxlciBxdWlyayBkZWZpbml0aW9ucy4gVGhleSdyZSBub3QgcmVxdWlyZWQgYW55bW9yZS4K
KyAgICAgICAgKiB3dGYvRGF0ZU1hdGguY3BwOiBNb3ZlIHRoZSB3b3JrYXJvdW5kIGZvciBpc2lu
ZiBvbiBTb2xhcmlzIGludG8gdGhlIHN0ZCBuYW1lc3BhY2UuIERpdHRvIGZvciBpc2luZiBhbmQg
aXNuYW4KKyAgICAgICAgd2hlbiB1c2luZyBNU1ZDLiBTdG9wIGJyaW5naW5nIHRoZSBpc2luZiBh
bmQgaXNuYW4gbWV0aG9kcyBpbnRvIHRoZSBnbG9iYWwgc2NvcGUgd2hlbiB1c2luZyBvdGhlciBj
b25maWd1cmF0aW9ucy4KKyAgICAgICAgKFdURjo6cGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVk
Q2hhcmFjdGVycyk6CisgICAgICAgICogd3RmL0ludGVncmFsVHlwZWRBcnJheUJhc2UuaDoKKyAg
ICAgICAgKFdURjo6SW50ZWdyYWxUeXBlZEFycmF5QmFzZTo6c2V0KToKKyAgICAgICAgKiB3dGYv
TWF0aEV4dHJhcy5oOgorICAgICAgICAoc3RkKToKKyAgICAgICAgKHN0ZDo6aXNpbmYpOgorICAg
ICAgICAod3RmX2Ztb2QpOgorICAgICAgICAod3RmX3Bvdyk6CisgICAgICAgIChkb3VibGVUb0lu
dGVnZXIpOgorICAgICAgICAqIHd0Zi9NZWRpYVRpbWUuY3BwOgorICAgICAgICAoV1RGOjpNZWRp
YVRpbWU6OmNyZWF0ZVdpdGhGbG9hdCk6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6Y3JlYXRl
V2l0aERvdWJsZSk6CisgICAgICAgICogd3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg6CisgICAgICAg
IChXVEY6OlVpbnQ4Q2xhbXBlZEFycmF5OjpzZXQpOgorCiAyMDEzLTAyLTEzICBBbmRyZXcgV2ls
c29uICA8YXR3aWxzb25AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgQ2hyb21p
dW0gZ3lwLWZpbGUgY2xlYW51cCBhZnRlciBnbGliIGJhY2tlbmQgcmVtb3ZhbC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCAzYTkxOTJmOGQ3NTQ2ZjM3Y2ExMjhjZjNlYjY4NWQwZjAxMDEzYTA3Li5mZjQzMjMyZjcy
NDQ4ODViNGNmOTA3ZDIxZDJjMGIzYjFmYWE1YzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM3
IEBACisyMDEzLTAyLTEzICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBUaGUgJ2dsb2JhbCBpc2luZi9pc25hbicgY29tcGlsZXIgcXVpcmsgcmVxdWlyZWQg
d2hlbiB1c2luZyBjbGFuZyB3aXRoIGxpYnN0ZGMrKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MzI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUHJlZml4IGNhbGxzIHRvIHRoZSBpc2luZiBhbmQgaXNu
YW4gbWV0aG9kcyB3aXRoIHN0ZDo6LCBkZWNsYXJpbmcgd2Ugd2FudCB0byB1c2UgdGhlCisgICAg
ICAgIHR3byBtZXRob2RzIGFzIHRoZXkncmUgcHJvdmlkZWQgYnkgdGhlIEMrKyBzdGFuZGFyZCBs
aWJyYXJ5IGJlaW5nIHVzZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGFzIHRoZXJlJ3Mgbm8g
Y2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNl
L01lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpzZXREdXJh
dGlvbik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjp0b3RhbFBpdGNo
UmF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvUGFyYW06OnNldFZhbHVlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlk
TnVtYmVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Zml4TkFOcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSURCQmluZGlu
Z1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJREJLZXlGcm9tVmFsdWUp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGF0YVZpZXdDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0RGF0YVZpZXdNZW1iZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTR2Vv
bG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0VGltZW91dCk6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRNYXhpbXVtQWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hU
TUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxP
cHRpb25zQ29sbGVjdGlvbjo6c2V0TGVuZ3RoKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dl
YktpdFBvaW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViS2l0UG9pbnRDb25z
dHJ1Y3Rvcjo6Y29uc3RydWN0SlNXZWJLaXRQb2ludCk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9u
KToKKyAgICAgICAgKEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlUGFyYW1ldGVy
c0NoZWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJy
YXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNGbG9hdDY0QXJyYXk6OmdldEJ5SW5kZXgpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFt
cCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y2xhc3NNZXRob2RXaXRoQ2xhbXBD
YWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJREJLZXlGcm9tVmFsdWUpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0ludDMyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRvVUludDMyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhHZW9sb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQb3NpdGlv
bk9wdGlvbnMpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29s
bGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxPcHRpb25zQ29sbGVj
dGlvbjo6bGVuZ3RoQWNjZXNzb3JTZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdlYktpdFBvaW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViS2l0UG9p
bnQ6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJyaWRnZS9xdC9xdF9y
dW50aW1lLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNvbnZlcnRWYWx1ZVRvUVZhcmlh
bnQpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NNYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViS2l0Q1NTTWF0cml4Ojp0cmFuc2xhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
Q1NTTWF0cml4OjpzY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6OnJv
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6OnJvdGF0ZUF4aXNBbmds
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6OnNrZXdYKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6c2tld1kpOgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwZXJj
ZW50TG9hZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxh
eWVyVGltZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZW5k
ZWRQbGF5YmFjayk6CisgICAgICAgICogaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoTWVkaWFDb250cm9sbGVyOjpkdXJhdGlvbik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjbGVhckNvbG9yKToKKyAgICAgICAgKiBodG1s
L3RyYWNrL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmFkZEN1
ZSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrQ3VlOjpzZXRTdGFydFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrQ3VlOjpzZXRFbmRUaW1lKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmFkanVzdFdpbmRvd1JlY3QpOgorICAgICAgICAq
IHBhZ2UvV2luZG93RmVhdHVyZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2luZG93RmVhdHVy
ZXM6OmZsb2F0RmVhdHVyZSk6IEFsc28gaW5jbHVkZSBhbiBvcHBvcnR1bmlzdGljIHN0eWxlIGZp
eC4KKyAgICAgICAgKiBwbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhbGN1bGF0aW9uVmFsdWU6OmV2YWx1YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9E
ZWNpbWFsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OmZyb21Eb3VibGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL0xlbmd0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Om5v
bk5hbkNhbGN1bGF0ZWRWYWx1ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNh
bXBsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBsZXI6OnNldFJhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxj
dWxhdGVOb3JtYWxpemF0aW9uU2NhbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6d2lkdGgpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24u
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6aXNM
aXZlU3RyZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvTG9vcEJsaW5uTWF0
aFV0aWxzLmNwcDoKKyAgICAgICAgKExvb3BCbGlubk1hdGhVdGlscyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmJ1ZmZlcmVk
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bWF4VGlt
ZVNlZWthYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtp
dDo6bWF4VGltZVNlZWthYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZl
cnRpY2FsRGF0YTo6Z2V0VmVydGljYWxUcmFuc2xhdGlvbnNGb3JHbHlwaHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y2xhbXBFZGdlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6VHJh
bnNmb3JtYXRpb25NYXRyaXg6OmNsYW1wZWRCb3VuZHNPZlByb2plY3RlZFF1YWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnBhcnNlQ2FjaGVDb250cm9sRGlyZWN0aXZl
cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHNDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpwYWludE1lZGlhU2xpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OnBhaW50TWVkaWFWb2x1bWVTbGlkZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludE1lZGlhU2xp
ZGVyVHJhY2spOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmJlZ2luRWxlbWVudEF0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmVuZEVsZW1lbnRBdCk6CisgICAgICAg
ICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVu
dDo6c2V0Q3VycmVudFRpbWUpOgorICAgICAgICAqIHN2Zy9hbmltYXRpb24vU01JTFRpbWUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNNSUxUaW1lOjpTTUlMVGltZSk6CisgICAgICAgICogc3ZnL2Fu
aW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxl
bWVudDo6YWRkQmVnaW5UaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50Ojph
ZGRFbmRUaW1lKToKKyAgICAgICAgKiB4bWwvWFBhdGhGdW5jdGlvbnMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6WFBhdGg6OkZ1blN1YnN0cmluZzo6ZXZhbHVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6WFBhdGg6OkZ1blJvdW5kOjpyb3VuZCk6CisgICAgICAgICogeG1sL1hQYXRoVmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OlZhbHVlOjp0b0Jvb2xlYW4pOiBBbHNvIGluY2x1
ZGUgYW4gb3Bwb3J0dW5pc3RpYyBzdHlsZSBmaXguCisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6
VmFsdWU6OnRvU3RyaW5nKToKKwogMjAxMy0wMi0xMyAgVGFtYXMgQ3plbmUgIDx0Y3plbmVAaW5m
LnUtc3plZ2VkLmh1PgogCiAgICAgICAgIE9wZW5DTCBpbXBsZW1lbnRhdGlvbiBvZiBGbG9vZCBT
VkcgZmlsdGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNjczZWIyMGQ5OTI2OWQ2
ZTg4YjYyYTZkNDBlMjRkZDNkYjAwMDc2NC4uMmNhNDJhYWM2M2EzYWE4ZDM5OTE0ZGRjOGI5ZjYx
M2E4YThlMzI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAxMy0wMi0xMyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgVGhlICdnbG9iYWwgaXNpbmYvaXNuYW4nIGNvbXBpbGVyIHF1aXJrIHJlcXVpcmVkIHdoZW4g
dXNpbmcgY2xhbmcgd2l0aCBsaWJzdGRjKysKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwOTMyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFByZWZpeCBjYWxscyB0byB0aGUgaXNpbmYgYW5kIGlzbmFuIG1l
dGhvZHMgd2l0aCBzdGQ6OiwgZGVjbGFyaW5nIHdlIHdhbnQgdG8gdXNlIHRoZQorICAgICAgICB0
d28gbWV0aG9kcyBhcyB0aGV5J3JlIHByb3ZpZGVkIGJ5IHRoZSBDKysgc3RhbmRhcmQgbGlicmFy
eSBiZWluZyB1c2VkLgorCisgICAgICAgICogdGVzdHMvRGVjaW1hbFRlc3QuY3BwOgorICAgICAg
ICAoVEVTVF9GKToKKwogMjAxMy0wMi0xMiAgWW9zaGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEJ1aWxkIGZpeCBmb3IgQ2hyb21pdW0tV2lu
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCmluZGV4IDU5OWNkYjZlODNjYmIzZTk2NDcyZTgwZmIzMTMxN2Y2NWJk
YWUwODEuLmYxOWNlMDU0MzZiOGJkMDlkY2IxMDY3YTQwNzFjYzEyYjMyYjA3NDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wMi0xMyAgWmFuIERvYmVyc2VrICA8emRv
YmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgVGhlICdnbG9iYWwgaXNpbmYvaXNuYW4nIGNv
bXBpbGVyIHF1aXJrIHJlcXVpcmVkIHdoZW4gdXNpbmcgY2xhbmcgd2l0aCBsaWJzdGRjKysKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTMyNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZWZpeCBjYWxs
cyB0byB0aGUgaXNpbmYgYW5kIGlzbmFuIG1ldGhvZHMgd2l0aCBzdGQ6OiwgZGVjbGFyaW5nIHdl
IHdhbnQgdG8gdXNlIHRoZQorICAgICAgICB0d28gbWV0aG9kcyBhcyB0aGV5J3JlIHByb3ZpZGVk
IGJ5IHRoZSBDKysgc3RhbmRhcmQgbGlicmFyeSBiZWluZyB1c2VkLgorCisgICAgICAgICogdGVz
dHMvRGVjaW1hbFRlc3QuY3BwOgorICAgICAgICAoVEVTVF9GKToKKwogMjAxMy0wMi0xMiAgSm9z
ZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEVuYWJs
ZSBQQUdFX1ZJU0lCSUxJVFlfQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTVmFsdWVSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVm
LmNwcAppbmRleCBkMjkxM2E5ZDE1MTMxYTM1OWMzMzI5MTVlYmMzZDI0YmU1ZDgwOTJiLi43M2I1
MTdkYmQ4ZWY4ZDU5NGMwOTI0ODQxYzU2YTI5NDI4NDMwYzc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCBKU1ZhbHVlUmVmIEpT
VmFsdWVNYWtlTnVtYmVyKEpTQ29udGV4dFJlZiBjdHgsIGRvdWJsZSB2YWx1ZSkKICAgICAvLyBP
dXIgSlNWYWx1ZSByZXByZXNlbnRhdGlvbiByZWxpZXMgb24gYSBzdGFuZGFyZCBiaXQgcGF0dGVy
biBmb3IgTmFOLiBOYU5zCiAgICAgLy8gZ2VuZXJhdGVkIGludGVybmFsbHkgdG8gSmF2YVNjcmlw
dENvcmUgbmF0dXJhbGx5IGhhdmUgdGhhdCByZXByZXNlbnRhdGlvbiwKICAgICAvLyBidXQgYW4g
ZXh0ZXJuYWwgTmFOIG1pZ2h0IG5vdC4KLSAgICBpZiAoaXNuYW4odmFsdWUpKQorICAgIGlmIChz
dGQ6OmlzbmFuKHZhbHVlKSkKICAgICAgICAgdmFsdWUgPSBRTmFOOwogCiAgICAgcmV0dXJuIHRv
UmVmKGV4ZWMsIGpzTnVtYmVyKHZhbHVlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlw
ZWRBcnJheVN0dWJzLmgKaW5kZXggZmRjM2VhZGYzMzg2MGFhYWJlYzIzMTBiYzNkZGNlOTczODQ2
MTlmZC4uZjQ5MzEzNzdmYjcwZWE5Y2I1NzhhOTY2OWI4YmUxMzdiZTI4MDc5MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0pTQ1R5cGVkQXJyYXlTdHVicy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KU0NUeXBlZEFycmF5U3R1YnMuaApAQCAtMTc0LDcgKzE3NCw3IEBA
IEpTVmFsdWUgSlMjI25hbWUjI0FycmF5OjpnZXRCeUluZGV4KEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IGluZGV4KVwKIHtcCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZv
KTtcCiAgICAgdHlwZSByZXN1bHQgPSBtX2ltcGwtPml0ZW0oaW5kZXgpO1wKLSAgICBpZiAoaXNu
YW4oKGRvdWJsZSlyZXN1bHQpKVwKKyAgICBpZiAoc3RkOjppc25hbigoZG91YmxlKXJlc3VsdCkp
XAogICAgICAgICByZXR1cm4ganNOYU4oKTtcCiAgICAgcmV0dXJuIEpTVmFsdWUocmVzdWx0KTtc
CiB9XApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA4NmQ4ZTY5ZjE3NjRkMTU3ZGJhNmM3YTJhMzc1YmU2
YzE5Nzg1MGQ1Li4xYTQ0ZGI4MmNlYTYwY2RkMDJmZDljODU0MzdlNTUzNjU3ZTYwMjU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcApAQCAtMTI0Nyw3ICsxMjQ3LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgZG91YmxlIG51bWJlcikKICAgICAv
LyBGSVhNRTogT3VyIGhhc2ggdGFibGVzIHdvbid0IGhvbGQgaW5maW5pdHksIHNvIHdlIG1ha2Ug
YSBuZXcgSlNWYWx1ZSBlYWNoIHRpbWUuCiAgICAgLy8gTGF0ZXIgd2UgY2FuIGRvIHRoZSBleHRy
YSB3b3JrIHRvIGhhbmRsZSB0aGF0IGxpa2UgdGhlIG90aGVyIGNhc2VzLiAgVGhleSBhbHNvIGRv
bid0CiAgICAgLy8gd29yayBjb3JyZWN0bHkgd2l0aCBOYU4gYXMgYSBrZXkuCi0gICAgaWYgKGlz
bmFuKG51bWJlcikgfHwgbnVtYmVyID09IEhhc2hUcmFpdHM8ZG91YmxlPjo6ZW1wdHlWYWx1ZSgp
IHx8IEhhc2hUcmFpdHM8ZG91YmxlPjo6aXNEZWxldGVkVmFsdWUobnVtYmVyKSkKKyAgICBpZiAo
c3RkOjppc25hbihudW1iZXIpIHx8IG51bWJlciA9PSBIYXNoVHJhaXRzPGRvdWJsZT46OmVtcHR5
VmFsdWUoKSB8fCBIYXNoVHJhaXRzPGRvdWJsZT46OmlzRGVsZXRlZFZhbHVlKG51bWJlcikpCiAg
ICAgICAgIHJldHVybiBlbWl0TG9hZChkc3QsIGpzTnVtYmVyKG51bWJlcikpOwogICAgIEpTVmFs
dWUmIHZhbHVlSW5NYXAgPSBtX251bWJlck1hcC5hZGQobnVtYmVyLCBKU1ZhbHVlKCkpLml0ZXJh
dG9yLT52YWx1ZTsKICAgICBpZiAoIXZhbHVlSW5NYXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGI4ODdiNjY1YzQ4MDFkNDg4YjQ1
YWRmOGQ0MzdiMjZjNTU4NTAyOTMuLmY1OWJlZmM3ZWE2NDNiMjUwYTFhYTRhOWE3YWFhZWU0MDg3
ZjdjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCkBAIC02NTYsNyArNjU2LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAvLyBtX2NvbnN0
YW50TmFOIG11c3QgcmVmZXIgdG8gYW4gZW50cnkgaW4gdGhlIENvZGVCbG9jaydzIGNvbnN0YW50
IHBvb2wgdGhhdCBoYXMgdGhlIHZhbHVlIG5hbi4KICAgICAgICAgQVNTRVJUKG1fY29kZUJsb2Nr
LT5nZXRDb25zdGFudChGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCArIG1fY29uc3RhbnROYU4p
LmlzRG91YmxlKCkpOwotICAgICAgICBBU1NFUlQoaXNuYW4obV9jb2RlQmxvY2stPmdldENvbnN0
YW50KEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ICsgbV9jb25zdGFudE5hTikuYXNEb3VibGUo
KSkpOworICAgICAgICBBU1NFUlQoc3RkOjppc25hbihtX2NvZGVCbG9jay0+Z2V0Q29uc3RhbnQo
Rmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggKyBtX2NvbnN0YW50TmFOKS5hc0RvdWJsZSgpKSk7
CiAgICAgICAgIHJldHVybiBnZXRKU0NvbnN0YW50KG1fY29uc3RhbnROYU4pOwogICAgIH0KICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Nsb29wLnJi
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIKaW5kZXggOGQ3Yjhm
ZWRiYmYxYTdjNGM3MjRmNDcyNDM3NWYzZjM0ZWUxNjNhOS4uOGI0ZWU5Y2ViNjFkNDcxNWUyZTE1
ZTUyMDE3ZDc2NTU1NWUwYzA1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vY2xvb3AucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
Y2xvb3AucmIKQEAgLTM5OCw3ICszOTgsNyBAQCBkZWYgY2xvb3BFbWl0VW5hcnlPcGVyYXRpb24o
b3BlcmFuZHMsIHR5cGUsIG9wZXJhdG9yKQogZW5kCiAKIGRlZiBjbG9vcEVtaXRDb21wYXJlRG91
YmxlV2l0aE5hTkNoZWNrQW5kQnJhbmNoKG9wZXJhbmRzLCBjb25kaXRpb24pCi0gICAgJGFzbS5w
dXRjICJpZiAoaXNuYW4oI3tvcGVyYW5kc1swXS5jbFZhbHVlKDpkb3VibGUpfSkgfHwgaXNuYW4o
I3tvcGVyYW5kc1sxXS5jbFZhbHVlKDpkb3VibGUpfSkiCisgICAgJGFzbS5wdXRjICJpZiAoc3Rk
Ojppc25hbigje29wZXJhbmRzWzBdLmNsVmFsdWUoOmRvdWJsZSl9KSB8fCBpc25hbigje29wZXJh
bmRzWzFdLmNsVmFsdWUoOmRvdWJsZSl9KSIKICAgICAkYXNtLnB1dGMgIiAgICB8fCAoI3tvcGVy
YW5kc1swXS5jbFZhbHVlKDpkb3VibGUpfSAje2NvbmRpdGlvbn0gI3tvcGVyYW5kc1sxXS5jbFZh
bHVlKDpkb3VibGUpfSkpIgogICAgICRhc20ucHV0YyAiICAgIGdvdG8gI3tvcGVyYW5kc1syXS5j
TGFiZWx9OyIKIGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggN2U3ODIxMThmZDBkOWRlZjJlYWE2YmQ3MzJlMjdkMDA0ZWE4
NWI2Zi4uMTg5ODYzNDc5M2RmMzllNmEwODBkOTIyMGRkMzFkNTk4NDA2ZWVjNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCkBAIC0x
OTksMTMgKzE5OSwxMyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRl
VVRDKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgZXhlYy0+YXJndW1lbnQoNikudG9OdW1iZXIo
ZXhlYykKICAgICB9OwogICAgIGludCBuID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOwotICAgIGlm
IChpc25hbihkb3VibGVBcmd1bWVudHNbMF0pCi0gICAgICAgICAgICB8fCBpc25hbihkb3VibGVB
cmd1bWVudHNbMV0pCi0gICAgICAgICAgICB8fCAobiA+PSAzICYmIGlzbmFuKGRvdWJsZUFyZ3Vt
ZW50c1syXSkpCi0gICAgICAgICAgICB8fCAobiA+PSA0ICYmIGlzbmFuKGRvdWJsZUFyZ3VtZW50
c1szXSkpCi0gICAgICAgICAgICB8fCAobiA+PSA1ICYmIGlzbmFuKGRvdWJsZUFyZ3VtZW50c1s0
XSkpCi0gICAgICAgICAgICB8fCAobiA+PSA2ICYmIGlzbmFuKGRvdWJsZUFyZ3VtZW50c1s1XSkp
Ci0gICAgICAgICAgICB8fCAobiA+PSA3ICYmIGlzbmFuKGRvdWJsZUFyZ3VtZW50c1s2XSkpKQor
ICAgIGlmIChzdGQ6OmlzbmFuKGRvdWJsZUFyZ3VtZW50c1swXSkKKyAgICAgICAgfHwgc3RkOjpp
c25hbihkb3VibGVBcmd1bWVudHNbMV0pCisgICAgICAgIHx8IChuID49IDMgJiYgc3RkOjppc25h
bihkb3VibGVBcmd1bWVudHNbMl0pKQorICAgICAgICB8fCAobiA+PSA0ICYmIHN0ZDo6aXNuYW4o
ZG91YmxlQXJndW1lbnRzWzNdKSkKKyAgICAgICAgfHwgKG4gPj0gNSAmJiBzdGQ6OmlzbmFuKGRv
dWJsZUFyZ3VtZW50c1s0XSkpCisgICAgICAgIHx8IChuID49IDYgJiYgc3RkOjppc25hbihkb3Vi
bGVBcmd1bWVudHNbNV0pKQorICAgICAgICB8fCAobiA+PSA3ICYmIHN0ZDo6aXNuYW4oZG91Ymxl
QXJndW1lbnRzWzZdKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7
CiAKICAgICBHcmVnb3JpYW5EYXRlVGltZSB0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVJbnN0YW5jZS5jcHAKaW5kZXggOWRmODIyMDQ3N2JhODI2YTRjZmIwZDBjNGRj
NzE1ODc0ZTFhMzFhZS4uYjFmNWNmZDM1M2I0ODRmZjgzYTIxNmI4NGUzYzRkZGFjN2E5YTIyOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwCkBA
IC02MSw3ICs2MSw3IEBAIHZvaWQgRGF0ZUluc3RhbmNlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkK
IGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBEYXRlSW5zdGFuY2U6OmNhbGN1bGF0ZUdyZWdvcmlh
bkRhdGVUaW1lKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKICAgICBkb3VibGUgbWlsbGkgPSBp
bnRlcm5hbE51bWJlcigpOwotICAgIGlmIChpc25hbihtaWxsaSkpCisgICAgaWYgKHN0ZDo6aXNu
YW4obWlsbGkpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmICghbV9kYXRhKQpAQCAtNzcs
NyArNzcsNyBAQCBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogRGF0ZUluc3RhbmNlOjpjYWxjdWxh
dGVHcmVnb3JpYW5EYXRlVGltZShFeGVjU3RhdGUqIGV4ZQogY29uc3QgR3JlZ29yaWFuRGF0ZVRp
bWUqIERhdGVJbnN0YW5jZTo6Y2FsY3VsYXRlR3JlZ29yaWFuRGF0ZVRpbWVVVEMoRXhlY1N0YXRl
KiBleGVjKSBjb25zdAogewogICAgIGRvdWJsZSBtaWxsaSA9IGludGVybmFsTnVtYmVyKCk7Ci0g
ICAgaWYgKGlzbmFuKG1pbGxpKSkKKyAgICBpZiAoc3RkOjppc25hbihtaWxsaSkpCiAgICAgICAg
IHJldHVybiAwOwogCiAgICAgaWYgKCFtX2RhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCmluZGV4IDJlZjJjYThhYTFlYzlhMGM3MzlmOGNi
NzBkODRkYWU0ZDY2ZGYxMjguLmQ0ZjIwMWRlMjM4NmM5Nzc0ZjQxMzY2NjM1NzQzNzEzMzY2ZjM3
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5
cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUu
Y3BwCkBAIC04MzQsNyArODM0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRl
UHJvdG9GdW5jR2V0TWlsbGlTZWNvbmRzKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIERhdGVJbnN0
YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKICAgICBkb3Vi
bGUgbWlsbGkgPSB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKTsKLSAgICBpZiAoaXNuYW4o
bWlsbGkpKQorICAgIGlmIChzdGQ6OmlzbmFuKG1pbGxpKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc05hTigpKTsKIAogICAgIGRvdWJsZSBzZWNzID0gZmxvb3IobWlsbGkgLyBt
c1BlclNlY29uZCk7CkBAIC04NTAsNyArODUwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDTWlsbGlzZWNvbmRzKEV4ZWNTdGF0ZSogZXhlYykKIAog
ICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUp
OyAKICAgICBkb3VibGUgbWlsbGkgPSB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKTsKLSAg
ICBpZiAoaXNuYW4obWlsbGkpKQorICAgIGlmIChzdGQ6OmlzbmFuKG1pbGxpKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05hTigpKTsKIAogICAgIGRvdWJsZSBzZWNzID0gZmxv
b3IobWlsbGkgLyBtc1BlclNlY29uZCk7CkBAIC04OTUsNyArODk1LDcgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIHNldE5ld1ZhbHVlRnJvbVRpbWVBcmdzKEV4ZWNTdGF0ZSogZXhlYywgaW50IG51
bUFyZ3NUb1VzZSwKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFu
Y2UodGhpc1ZhbHVlKTsKICAgICBkb3VibGUgbWlsbGkgPSB0aGlzRGF0ZU9iai0+aW50ZXJuYWxO
dW1iZXIoKTsKICAgICAKLSAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSB8fCBpc25hbiht
aWxsaSkpIHsKKyAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSB8fCBzdGQ6OmlzbmFuKG1p
bGxpKSkgewogICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTmFOKCk7CiAgICAgICAgIHRoaXNE
YXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwgcmVzdWx0KTsKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtOTQwLDcgKzk0MCw3IEBA
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBzZXROZXdWYWx1ZUZyb21EYXRlQXJncyhFeGVjU3RhdGUq
IGV4ZWMsIGludCBudW1BcmdzVG9Vc2UsCiAgICAgZG91YmxlIG1zID0gMDsgCiAKICAgICBHcmVn
b3JpYW5EYXRlVGltZSBncmVnb3JpYW5EYXRlVGltZTsgCi0gICAgaWYgKG51bUFyZ3NUb1VzZSA9
PSAzICYmIGlzbmFuKG1pbGxpKSkgCisgICAgaWYgKG51bUFyZ3NUb1VzZSA9PSAzICYmIHN0ZDo6
aXNuYW4obWlsbGkpKSAKICAgICAgICAgbXNUb0dyZWdvcmlhbkRhdGVUaW1lKGV4ZWMsIDAsIHRy
dWUsIGdyZWdvcmlhbkRhdGVUaW1lKTsgCiAgICAgZWxzZSB7IAogICAgICAgICBtcyA9IG1pbGxp
IC0gZmxvb3IobWlsbGkgLyBtc1BlclNlY29uZCkgKiBtc1BlclNlY29uZDsgCkBAIC0xMDY0LDcg
KzEwNjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRZ
ZWFyKEV4ZWNTdGF0ZSogZXhlYykKICAgICBkb3VibGUgbXMgPSAwOwogCiAgICAgR3JlZ29yaWFu
RGF0ZVRpbWUgZ3JlZ29yaWFuRGF0ZVRpbWU7Ci0gICAgaWYgKGlzbmFuKG1pbGxpKSkKKyAgICBp
ZiAoc3RkOjppc25hbihtaWxsaSkpCiAgICAgICAgIC8vIEJhc2VkIG9uIEVDTUEgMjYyIEIuMi41
IChzZXRZZWFyKQogICAgICAgICAvLyB0aGUgdGltZSBtdXN0IGJlIHJlc2V0IHRvICswIGlmIGl0
IGlzIE5hTi4KICAgICAgICAgbXNUb0dyZWdvcmlhbkRhdGVUaW1lKGV4ZWMsIDAsIHRydWUsIGdy
ZWdvcmlhbkRhdGVUaW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5jcHAKaW5kZXggNGM5ZGZlMWY5OTNiOTMxYWI5ZDlmODI2NjJjMzgwZjc4ZDM2Y2MyMS4u
MjkxNjFkOGQ4ZDM4Yzk4NzFmZjJjOGJiMzE5NWVhZmM4NjU3NWFjMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgZG91
YmxlIEpTVmFsdWU6OnRvSW50ZWdlcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgaWYgKGlz
SW50MzIoKSkKICAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKICAgICBkb3VibGUgZCA9IHRvTnVt
YmVyKGV4ZWMpOwotICAgIHJldHVybiBpc25hbihkKSA/IDAuMCA6IHRydW5jKGQpOworICAgIHJl
dHVybiBzdGQ6OmlzbmFuKGQpID8gMC4wIDogdHJ1bmMoZCk7CiB9CiAKIGRvdWJsZSBKU1ZhbHVl
Ojp0b0ludGVnZXJQcmVzZXJ2ZU5hTihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCmluZGV4IDU0MmM2M2JkMGJlYjFk
NzBiODk0MmVjMDZlOTg0MWUzY2JlYzEyMDAuLjNhMGIzNTI0Y2I0NmE3OGJhYzNlYzQ3MDkzNGQw
MjA3YzgyZDg4N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0ZU1hdGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1h
dGguY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgc3RhdGljIGRvdWJsZSBnZXREU1RPZmZzZXQoRXhl
Y1N0YXRlKiBleGVjLCBkb3VibGUgbXMsIGRvdWJsZSB1dGNPZmZzZXQpCiBkb3VibGUgZ2V0VVRD
T2Zmc2V0KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBkb3VibGUgdXRjT2Zmc2V0ID0gZXhlYy0+
Z2xvYmFsRGF0YSgpLmNhY2hlZFVUQ09mZnNldDsKLSAgICBpZiAoIWlzbmFuKHV0Y09mZnNldCkp
CisgICAgaWYgKCFzdGQ6OmlzbmFuKHV0Y09mZnNldCkpCiAgICAgICAgIHJldHVybiB1dGNPZmZz
ZXQ7CiAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmNhY2hlZFVUQ09mZnNldCA9IGNhbGN1bGF0ZVVU
Q09mZnNldCgpOwogICAgIHJldHVybiBleGVjLT5nbG9iYWxEYXRhKCkuY2FjaGVkVVRDT2Zmc2V0
OwpAQCAtMjQ3LDcgKzI0Nyw3IEBAIGRvdWJsZSBwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRD
aGFyYWN0ZXJzKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogZGF0ZVN0CiAgICAgYm9vbCBo
YXZlVFo7CiAgICAgaW50IG9mZnNldDsKICAgICBkb3VibGUgbXMgPSBXVEY6OnBhcnNlRGF0ZUZy
b21OdWxsVGVybWluYXRlZENoYXJhY3RlcnMoZGF0ZVN0cmluZywgaGF2ZVRaLCBvZmZzZXQpOwot
ICAgIGlmIChpc25hbihtcykpCisgICAgaWYgKHN0ZDo6aXNuYW4obXMpKQogICAgICAgICByZXR1
cm4gUU5hTjsKIAogICAgIC8vIGZhbGwgYmFjayB0byBsb2NhbCB0aW1lem9uZQpAQCAtMjY0LDcg
KzI2NCw3IEBAIGRvdWJsZSBwYXJzZURhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcm
IGRhdGUpCiAgICAgaWYgKGRhdGUgPT0gZXhlYy0+Z2xvYmFsRGF0YSgpLmNhY2hlZERhdGVTdHJp
bmcpCiAgICAgICAgIHJldHVybiBleGVjLT5nbG9iYWxEYXRhKCkuY2FjaGVkRGF0ZVN0cmluZ1Zh
bHVlOwogICAgIGRvdWJsZSB2YWx1ZSA9IHBhcnNlRVM1RGF0ZUZyb21OdWxsVGVybWluYXRlZENo
YXJhY3RlcnMoZGF0ZS51dGY4KCkuZGF0YSgpKTsKLSAgICBpZiAoaXNuYW4odmFsdWUpKQorICAg
IGlmIChzdGQ6OmlzbmFuKHZhbHVlKSkKICAgICAgICAgdmFsdWUgPSBwYXJzZURhdGVGcm9tTnVs
bFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKGV4ZWMsIGRhdGUudXRmOCgpLmRhdGEoKSk7CiAgICAgZXhl
Yy0+Z2xvYmFsRGF0YSgpLmNhY2hlZERhdGVTdHJpbmcgPSBkYXRlOwogICAgIGV4ZWMtPmdsb2Jh
bERhdGEoKS5jYWNoZWREYXRlU3RyaW5nVmFsdWUgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApp
bmRleCA4ZmMzNDQxZmIwOWNlMGE0OTg2MzZiMzI0MzBkOTcyMTFmOTJhNThhLi44MmUyYjRjZWM1
YjU1NDIzZDUyMWMxMTcwMmE1NmFkMzE2NGU2ZDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBAIC01
NjAsNyArNTYwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUGFy
c2VGbG9hdChFeGVjU3RhdGUqIGV4ZWMpCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2xvYmFsRnVuY0lzTmFOKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbihpc25hbihleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihzdGQ6OmlzbmFuKGV4ZWMt
PmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGdsb2JhbEZ1bmNJc0Zpbml0ZShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCmluZGV4IDc2MzQ0ODdhZGNkZTE2
Y2NmNDc4ZmMzYWI2ZTBhYjBiOGYzNWFhOTQuLmFlYzdiOTRjYTU3NDVkMDI2Y2EwYzg4YzFjMzhh
MjQxMjZjODEyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
dGhPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmpl
Y3QuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXRoUHJvdG9GdW5jTWF4KEV4ZWNTdGF0ZSogZXhlYykKICAgICBkb3VibGUgcmVzdWx0ID0gLXN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKICAgICBmb3IgKHVuc2lnbmVk
IGsgPSAwOyBrIDwgYXJnc0NvdW50OyArK2spIHsKICAgICAgICAgZG91YmxlIHZhbCA9IGV4ZWMt
PmFyZ3VtZW50KGspLnRvTnVtYmVyKGV4ZWMpOwotICAgICAgICBpZiAoaXNuYW4odmFsKSkgewor
ICAgICAgICBpZiAoc3RkOjppc25hbih2YWwpKSB7CiAgICAgICAgICAgICByZXN1bHQgPSBRTmFO
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE5MCw3ICsxOTAsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNNaW4oRXhlY1N0YXRlKiBleGVj
KQogICAgIGRvdWJsZSByZXN1bHQgPSArc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZp
bml0eSgpOwogICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBhcmdzQ291bnQ7ICsraykgewog
ICAgICAgICBkb3VibGUgdmFsID0gZXhlYy0+YXJndW1lbnQoaykudG9OdW1iZXIoZXhlYyk7Ci0g
ICAgICAgIGlmIChpc25hbih2YWwpKSB7CisgICAgICAgIGlmIChzdGQ6OmlzbmFuKHZhbCkpIHsK
ICAgICAgICAgICAgIHJlc3VsdCA9IFFOYU47CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQpAQCAtMjQ0LDkgKzI0NCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFBy
b3RvRnVuY1BvdyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgZG91YmxlIGFyZyA9IGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvTnVtYmVyKGV4ZWMpOwogICAgIGRvdWJsZSBhcmcyID0gZXhlYy0+YXJndW1lbnQo
MSkudG9OdW1iZXIoZXhlYyk7CiAKLSAgICBpZiAoaXNuYW4oYXJnMikpCisgICAgaWYgKHN0ZDo6
aXNuYW4oYXJnMikpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7Ci0g
ICAgaWYgKGlzaW5mKGFyZzIpICYmIGZhYnMoYXJnKSA9PSAxKQorICAgIGlmIChzdGQ6OmlzaW5m
KGFyZzIpICYmIGZhYnMoYXJnKSA9PSAxKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTmFOKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIobWF0aFBvdyhh
cmcsIGFyZzIpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eURlc2NyaXB0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlEZXNjcmlwdG9yLmNwcAppbmRleCAyMzZhOGU1YWVlYzE3Njc1NzgxNTA3Mjc1MWQ0
ZWFlNDhmYzdhMjg2Li4xNGI0MmZkOWFmOTNkMGE0MWRlZWM1ODVlYjhkYjFlODVlMTViMjFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3Jp
cHRvci5jcHAKQEAgLTE3Niw4ICsxNzYsOCBAQCBib29sIHNhbWVWYWx1ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgYSwgSlNWYWx1ZSBiKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZG91
YmxlIHggPSBhLmFzTnVtYmVyKCk7CiAgICAgZG91YmxlIHkgPSBiLmFzTnVtYmVyKCk7Ci0gICAg
aWYgKGlzbmFuKHgpKQotICAgICAgICByZXR1cm4gaXNuYW4oeSk7CisgICAgaWYgKHN0ZDo6aXNu
YW4oeCkpCisgICAgICAgIHJldHVybiBzdGQ6OmlzbmFuKHkpOwogICAgIHJldHVybiBiaXR3aXNl
X2Nhc3Q8dWludDY0X3Q+KHgpID09IGJpdHdpc2VfY2FzdDx1aW50NjRfdD4oeSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9Db21w
aWxlci5oCmluZGV4IGQxYjBhMTdlNTY4ZDVjN2E0MjgwOWI1ZTdlZTcyY2Y3OGI5ZjBmMGIuLmFl
Njc1YThjNzNhZTEzYjQyN2M1MGYzOTJkZjBkNTFmYjNlNmI4YzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0NvbXBpbGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaApAQCAt
MTI4LDExICsxMjgsOSBAQAogI2RlZmluZSBXVEZfQ09NUElMRVJfU1VQUE9SVFNfQ1hYX0RFTEVU
RURfRlVOQ1RJT05TIDEKICNkZWZpbmUgV1RGX0NPTVBJTEVSX1NVUFBPUlRTX0NYWF9OVUxMUFRS
IDEKICNkZWZpbmUgV1RGX0NPTVBJTEVSX1NVUFBPUlRTX0NYWF9PVkVSUklERV9DT05UUk9MIDEK
LSNkZWZpbmUgV1RGX0NPTVBJTEVSX1FVSVJLX0dDQzExX0dMT0JBTF9JU0lORl9JU05BTiAxCiAK
ICNlbGlmIEdDQ19WRVJTSU9OX0FUX0xFQVNUKDQsIDYsIDApICYmIGRlZmluZWQoX19HWFhfRVhQ
RVJJTUVOVEFMX0NYWDBYX18pCiAjZGVmaW5lIFdURl9DT01QSUxFUl9TVVBQT1JUU19DWFhfTlVM
TFBUUiAxIAotI2RlZmluZSBXVEZfQ09NUElMRVJfUVVJUktfR0NDMTFfR0xPQkFMX0lTSU5GX0lT
TkFOIDEKICNlbmRpZgogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0RhdGVN
YXRoLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmNwcAppbmRleCAwNWQ3MDQ4MzA5NmEz
MjcxN2NlZTQ0YmQyNDYzNTQxMTIyZWMwYWU2Li45MGQzZmNiMGM1OTZlNTBkNzRlOTg5NWExYTk5
YTJiM2M1NWI0NzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwCkBAIC0xMDU4LDcgKzEwNTgsNyBAQCBkb3Vi
bGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBkYXRl
U3RyaW5nKQogICAgIGJvb2wgaGF2ZVRaOwogICAgIGludCBvZmZzZXQ7CiAgICAgZG91YmxlIG1z
ID0gcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhkYXRlU3RyaW5nLCBoYXZl
VFosIG9mZnNldCk7Ci0gICAgaWYgKGlzbmFuKG1zKSkKKyAgICBpZiAoc3RkOjppc25hbihtcykp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigp
OwogCiAgICAgLy8gZmFsbCBiYWNrIHRvIGxvY2FsIHRpbWV6b25lCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmggYi9Tb3VyY2UvV1RGL3d0Zi9JbnRl
Z3JhbFR5cGVkQXJyYXlCYXNlLmgKaW5kZXggMjNkYmRkZTVkNWEyMjNmOTNlYzE2NTQxOGM5YTlh
M2U2NzA3MDAxMC4uMWZhZjE0Y2FiNTEzMzNiMDZiMjM1YzI3NmNhZmQyZDkxNGE2OGMwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0ludGVncmFsVHlwZWRBcnJheUJhc2UuaApAQCAtNDMsNyArNDMsNyBAQCBj
bGFzcyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlIDogcHVibGljIFR5cGVkQXJyYXlCYXNlPFQ+IHsK
ICAgICB7CiAgICAgICAgIGlmIChpbmRleCA+PSBUeXBlZEFycmF5QmFzZTxUPjo6bV9sZW5ndGgp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChpc25hbih2YWx1ZSkpIC8vIENsYW1w
IE5hTiB0byAwCisgICAgICAgIGlmIChzdGQ6OmlzbmFuKHZhbHVlKSkgLy8gQ2xhbXAgTmFOIHRv
IDAKICAgICAgICAgICAgIHZhbHVlID0gMDsKICAgICAgICAgLy8gVGhlIGRvdWJsZSBjYXN0IGlz
IG5lY2Vzc2FyeSB0byBnZXQgdGhlIGNvcnJlY3Qgd3JhcHBpbmcKICAgICAgICAgLy8gZm9yIG91
dC1vZi1yYW5nZSB2YWx1ZXMgd2l0aCBJbnQzMkFycmF5IGFuZCBVaW50MzJBcnJheS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL01hdGhFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL01hdGhF
eHRyYXMuaAppbmRleCA1MjRkMmFjZjdkZGE2Y2VjMzBhOWRiOWYwNTIzYWQ2ODY1MTAyNDhkLi42
ODE1YWY2M2ZiY2YwYmEwMTU1NmJjNjY0NGExYTQwY2YyNTRjY2EwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgKKysrIGIvU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5o
CkBAIC04OCwxMyArODgsMTggQEAgaW5saW5lIGRvdWJsZSB3dGZfY2VpbChkb3VibGUgeCkgeyBy
ZXR1cm4gY29weXNpZ24oY2VpbCh4KSwgeCk7IH0KICNpZm5kZWYgaXNmaW5pdGUKIGlubGluZSBi
b29sIGlzZmluaXRlKGRvdWJsZSB4KSB7IHJldHVybiBmaW5pdGUoeCkgJiYgIWlzbmFuZCh4KTsg
fQogI2VuZGlmCi0jaWZuZGVmIGlzaW5mCi1pbmxpbmUgYm9vbCBpc2luZihkb3VibGUgeCkgeyBy
ZXR1cm4gIWZpbml0ZSh4KSAmJiAhaXNuYW5kKHgpOyB9Ci0jZW5kaWYKICNpZm5kZWYgc2lnbmJp
dAogaW5saW5lIGJvb2wgc2lnbmJpdChkb3VibGUgeCkgeyByZXR1cm4gY29weXNpZ24oMS4wLCB4
KSA8IDA7IH0KICNlbmRpZgogCituYW1lc3BhY2Ugc3RkIHsKKworI2lmbmRlZiBpc2luZgoraW5s
aW5lIGJvb2wgaXNpbmYoZG91YmxlIHgpIHsgcmV0dXJuICFmaW5pdGUoeCkgJiYgIWlzbmFuZCh4
KTsgfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIHN0ZAorCiAjZW5kaWYKIAogI2lmIE9TKE9Q
RU5CU0QpCkBAIC0xNTksOCArMTY0LDEzIEBAIGlubGluZSBmbG9hdCBsb2cyZihmbG9hdCBudW0p
CiBpbmxpbmUgbG9uZyBsb25nIGFicyhsb25nIGxvbmcgbnVtKSB7IHJldHVybiBfYWJzNjQobnVt
KTsgfQogI2VuZGlmCiAKK25hbWVzcGFjZSBzdGQgeworCiBpbmxpbmUgYm9vbCBpc2luZihkb3Vi
bGUgbnVtKSB7IHJldHVybiAhX2Zpbml0ZShudW0pICYmICFfaXNuYW4obnVtKTsgfQogaW5saW5l
IGJvb2wgaXNuYW4oZG91YmxlIG51bSkgeyByZXR1cm4gISFfaXNuYW4obnVtKTsgfQorCit9IC8v
IG5hbWVzcGFjZSBzdGQKKwogaW5saW5lIGJvb2wgc2lnbmJpdChkb3VibGUgbnVtKSB7IHJldHVy
biBfY29weXNpZ24oMS4wLCBudW0pIDwgMDsgfQogCiBpbmxpbmUgZG91YmxlIG5leHRhZnRlcihk
b3VibGUgeCwgZG91YmxlIHkpIHsgcmV0dXJuIF9uZXh0YWZ0ZXIoeCwgeSk7IH0KQEAgLTE5Myw3
ICsyMDMsNyBAQCBpbmxpbmUgZG91YmxlIHd0Zl9hdGFuMihkb3VibGUgeCwgZG91YmxlIHkpCiB9
CiAKIC8vIFdvcmsgYXJvdW5kIGEgYnVnIGluIHRoZSBNaWNyb3NvZnQgQ1JULCB3aGVyZSBmbW9k
KHgsICstaW5maW5pdHkpIHlpZWxkcyBOYU4gaW5zdGVhZCBvZiB4LgotaW5saW5lIGRvdWJsZSB3
dGZfZm1vZChkb3VibGUgeCwgZG91YmxlIHkpIHsgcmV0dXJuICghaXNpbmYoeCkgJiYgaXNpbmYo
eSkpID8geCA6IGZtb2QoeCwgeSk7IH0KK2lubGluZSBkb3VibGUgd3RmX2Ztb2QoZG91YmxlIHgs
IGRvdWJsZSB5KSB7IHJldHVybiAoIXN0ZDo6aXNpbmYoeCkgJiYgc3RkOjppc2luZih5KSkgPyB4
IDogZm1vZCh4LCB5KTsgfQogCiAvLyBXb3JrIGFyb3VuZCBhIGJ1ZyBpbiB0aGUgTWljcm9zb2Z0
IENSVCwgd2hlcmUgcG93KE5hTiwgMCkgeWllbGRzIE5hTiBpbnN0ZWFkIG9mIDEuCiBpbmxpbmUg
ZG91YmxlIHd0Zl9wb3coZG91YmxlIHgsIGRvdWJsZSB5KSB7IHJldHVybiB5ID09IDAgPyAxIDog
cG93KHgsIHkpOyB9CkBAIC0zMzEsMjkgKzM0MSw5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlu
bGluZSBUIHRpbWVzVGhyZWVQbHVzT25lRGl2aWRlZEJ5VHdvKFQgdmFsdWUpCiAKICNpZiAhQ09N
UElMRVIoTVNWQykgJiYgIUNPTVBJTEVSKFJWQ1QpICYmICFPUyhTT0xBUklTKQogdXNpbmcgc3Rk
Ojppc2Zpbml0ZTsKLSNpZiAhQ09NUElMRVJfUVVJUksoR0NDMTFfR0xPQkFMX0lTSU5GX0lTTkFO
KQotdXNpbmcgc3RkOjppc2luZjsKLXVzaW5nIHN0ZDo6aXNuYW47Ci0jZW5kaWYKIHVzaW5nIHN0
ZDo6c2lnbmJpdDsKICNlbmRpZgogCi0jaWYgQ09NUElMRVJfUVVJUksoR0NDMTFfR0xPQkFMX0lT
SU5GX0lTTkFOKQotLy8gQSB3b3JrYXJvdW5kIHRvIGF2b2lkIGNvbmZsaWN0aW5nIGRlY2xhcmF0
aW9ucyBvZiBpc2luZiBhbmQgaXNuYW4gd2hlbiBjb21waWxpbmcgd2l0aCBHQ0MgaW4gQysrMTEg
bW9kZS4KLW5hbWVzcGFjZSBzdGQgewotICAgIGlubGluZSBib29sIHd0Zl9pc2luZihmbG9hdCBm
KSB7IHJldHVybiBzdGQ6OmlzaW5mKGYpOyB9Ci0gICAgaW5saW5lIGJvb2wgd3RmX2lzaW5mKGRv
dWJsZSBkKSB7IHJldHVybiBzdGQ6OmlzaW5mKGQpOyB9Ci0gICAgaW5saW5lIGJvb2wgd3RmX2lz
bmFuKGZsb2F0IGYpIHsgcmV0dXJuIHN0ZDo6aXNuYW4oZik7IH0KLSAgICBpbmxpbmUgYm9vbCB3
dGZfaXNuYW4oZG91YmxlIGQpIHsgcmV0dXJuIHN0ZDo6aXNuYW4oZCk7IH0KLX07Ci0KLXVzaW5n
IHN0ZDo6d3RmX2lzaW5mOwotdXNpbmcgc3RkOjp3dGZfaXNuYW47Ci0KLSNkZWZpbmUgaXNpbmYo
eCkgd3RmX2lzaW5mKHgpCi0jZGVmaW5lIGlzbmFuKHgpIHd0Zl9pc25hbih4KQotI2VuZGlmCi0K
ICNpZm5kZWYgVUlOVDY0X0MKICNpZiBDT01QSUxFUihNU1ZDKQogI2RlZmluZSBVSU5UNjRfQyhj
KSBjICMjIHVpNjQKQEAgLTM2Nyw3ICszNTcsNyBAQCBpbmxpbmUgZG91YmxlIHd0Zl9wb3coZG91
YmxlIHgsIGRvdWJsZSB5KQogewogICAgIC8vIE1pbkdXLXc2NCBoYXMgYSBjdXN0b20gaW1wbGVt
ZW50YXRpb24gZm9yIHBvdy4KICAgICAvLyBUaGlzIGhhbmRsZXMgY2VydGFpbiBzcGVjaWFsIGNh
c2VzIHRoYXQgYXJlIGRpZmZlcmVudC4KLSAgICBpZiAoKHggPT0gMC4wIHx8IGlzaW5mKHgpKSAm
JiBpc2Zpbml0ZSh5KSkgeworICAgIGlmICgoeCA9PSAwLjAgfHwgc3RkOjppc2luZih4KSkgJiYg
aXNmaW5pdGUoeSkpIHsKICAgICAgICAgZG91YmxlIGY7CiAgICAgICAgIGlmIChtb2RmKHksICZm
KSAhPSAwLjApCiAgICAgICAgICAgICByZXR1cm4gKCh4ID09IDAuMCkgXiAoeSA+IDAuMCkpID8g
c3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpIDogMC4wOwpAQCAtNDA5LDcg
KzM5OSw3IEBAIGlubGluZSB2b2lkIGRlY29tcG9zZURvdWJsZShkb3VibGUgbnVtYmVyLCBib29s
JiBzaWduLCBpbnQzMl90JiBleHBvbmVudCwgdWludDY0CiAvLyBDYWxjdWxhdGUgZCAlIDJeezY0
fS4KIGlubGluZSB2b2lkIGRvdWJsZVRvSW50ZWdlcihkb3VibGUgZCwgdW5zaWduZWQgbG9uZyBs
b25nJiB2YWx1ZSkKIHsKLSAgICBpZiAoaXNuYW4oZCkgfHwgaXNpbmYoZCkpCisgICAgaWYgKHN0
ZDo6aXNuYW4oZCkgfHwgc3RkOjppc2luZihkKSkKICAgICAgICAgdmFsdWUgPSAwOwogICAgIGVs
c2UgewogICAgICAgICAvLyAtMl57NjR9IDwgZm1vZFZhbHVlIDwgMl57NjR9LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL01lZGlhVGlt
ZS5jcHAKaW5kZXggNmViMmJiMDliYTdmMWFiNDc1MGYwYWNhY2VjMGRjNDdlZTdlZDBkMy4uY2Zk
ZmRkYTIyYTZlMTI3NmZjMjM1YzQzMWYxN2MxMzRhNjQ5ZWRlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvTWVkaWFUaW1lLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuY3Bw
CkBAIC04Myw3ICs4Myw3IEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhGbG9hdChm
bG9hdCBmbG9hdFRpbWUsIGludDMyX3QgdGltZVNjYWxlKQogewogICAgIGlmIChmbG9hdFRpbWUg
IT0gZmxvYXRUaW1lKQogICAgICAgICByZXR1cm4gaW52YWxpZFRpbWUoKTsKLSAgICBpZiAoaXNp
bmYoZmxvYXRUaW1lKSkKKyAgICBpZiAoc3RkOjppc2luZihmbG9hdFRpbWUpKQogICAgICAgICBy
ZXR1cm4gc2lnbmJpdChmbG9hdFRpbWUpID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0
aXZlSW5maW5pdGVUaW1lKCk7CiAgICAgaWYgKGZsb2F0VGltZSA+IG51bWVyaWNfbGltaXRzPGlu
dDY0X3Q+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CkBA
IC05OSw3ICs5OSw3IEBAIE1lZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZG91
YmxlIGRvdWJsZVRpbWUsIGludDMyX3QgdGltZVNjYWxlKQogewogICAgIGlmIChkb3VibGVUaW1l
ICE9IGRvdWJsZVRpbWUpCiAgICAgICAgIHJldHVybiBpbnZhbGlkVGltZSgpOwotICAgIGlmIChp
c2luZihkb3VibGVUaW1lKSkKKyAgICBpZiAoc3RkOjppc2luZihkb3VibGVUaW1lKSkKICAgICAg
ICAgcmV0dXJuIHNpZ25iaXQoZG91YmxlVGltZSkgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDog
cG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKICAgICBpZiAoZG91YmxlVGltZSA+IG51bWVyaWNfbGlt
aXRzPGludDY0X3Q+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHBvc2l0aXZlSW5maW5pdGVUaW1l
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VaW50OENsYW1wZWRBcnJheS5oIGIvU291
cmNlL1dURi93dGYvVWludDhDbGFtcGVkQXJyYXkuaAppbmRleCBmM2Q5MmFjMjQxYjg1M2M3MGVl
MzVhZmUwOWI2ZWFlNDY0ODUwZGUyLi44NWYzOWMzZGM2MDIwN2JmMmU1YjcyN2ZjZDI4OGQwMDhm
Yjc4ZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VaW50OENsYW1wZWRBcnJheS5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1VpbnQ4Q2xhbXBlZEFycmF5LmgKQEAgLTk5LDcgKzk5LDcgQEAg
dm9pZCBVaW50OENsYW1wZWRBcnJheTo6c2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUp
CiB7CiAgICAgaWYgKGluZGV4ID49IG1fbGVuZ3RoKQogICAgICAgICByZXR1cm47Ci0gICAgaWYg
KGlzbmFuKHZhbHVlKSB8fCB2YWx1ZSA8IDApCisgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpIHx8
IHZhbHVlIDwgMCkKICAgICAgICAgdmFsdWUgPSAwOwogICAgIGVsc2UgaWYgKHZhbHVlID4gMjU1
KQogICAgICAgICB2YWx1ZSA9IDI1NTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKaW5kZXggZThlYTc4MTE2OGQ3ZWI4MWJhYWRiZDcx
MDhiYjc3M2JiYzIxYmQyZS4uZmQ2NDI5NWQ1OWQ3YWVlYjc2Njk1ODE4NWRlZGIxY2E4ZjI3NzY3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNv
dXJjZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgZG91YmxlIE1lZGlhU291cmNlOjpkdXJhdGlvbigp
IGNvbnN0CiAKIHZvaWQgTWVkaWFTb3VyY2U6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbiwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKGR1cmF0aW9uIDwgMC4wIHx8IGlzbmFuKGR1
cmF0aW9uKSkgeworICAgIGlmIChkdXJhdGlvbiA8IDAuMCB8fCBzdGQ6OmlzbmFuKGR1cmF0aW9u
KSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9C
dWZmZXJTb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CdWZmZXJTb3VyY2VOb2RlLmNwcAppbmRleCA0NWIyNTdiYmI3YzM4NjEzZGYzNzY3OTE2YjNh
ZWYwNDE5NGI0ZTIwLi43ODAxNGI5NDIxODMyYWFkNjUxYjcyYTIyNjYyNDg5NmQ5OTg4NTI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291
cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1
ZmZlclNvdXJjZU5vZGUuY3BwCkBAIC00NDUsNyArNDQ1LDcgQEAgZG91YmxlIEF1ZGlvQnVmZmVy
U291cmNlTm9kZTo6dG90YWxQaXRjaFJhdGUoKQogICAgICAgICB0b3RhbFJhdGUgPSAxOyAvLyB6
ZXJvIHJhdGUgaXMgY29uc2lkZXJlZCBpbGxlZ2FsCiAgICAgdG90YWxSYXRlID0gbWluKE1heFJh
dGUsIHRvdGFsUmF0ZSk7CiAgICAgCi0gICAgYm9vbCBpc1RvdGFsUmF0ZVZhbGlkID0gIWlzbmFu
KHRvdGFsUmF0ZSkgJiYgIWlzaW5mKHRvdGFsUmF0ZSk7CisgICAgYm9vbCBpc1RvdGFsUmF0ZVZh
bGlkID0gIXN0ZDo6aXNuYW4odG90YWxSYXRlKSAmJiAhc3RkOjppc2luZih0b3RhbFJhdGUpOwog
ICAgIEFTU0VSVChpc1RvdGFsUmF0ZVZhbGlkKTsKICAgICBpZiAoIWlzVG90YWxSYXRlVmFsaWQp
CiAgICAgICAgIHRvdGFsUmF0ZSA9IDEuMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCmluZGV4IGY0Y2YxMWQwMWYxNTFhOTg1ZWNjYTc0MDUzOTEx
ZWI2MmU2YzYwZGQuLmRlMzM3YmIwYTdmNGJkOWE3N2MxZDA1YWU0MmExNWFjMDJhNjI4NWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcApAQCAt
NTgsNyArNTgsNyBAQCB2b2lkIEF1ZGlvUGFyYW06OnNldFZhbHVlKGZsb2F0IHZhbHVlKQogewog
ICAgIC8vIENoZWNrIGFnYWluc3QgSmF2YVNjcmlwdCBnaXZpbmcgdXMgYm9ndXMgZmxvYXRpbmct
cG9pbnQgdmFsdWVzLgogICAgIC8vIERvbid0IEFTU0VSVCwgc2luY2UgdGhpcyBjYW4gaGFwcGVu
IGlmIHNvbWVib2R5IHdyaXRlcyBiYWQgSlMuCi0gICAgaWYgKCFpc25hbih2YWx1ZSkgJiYgIWlz
aW5mKHZhbHVlKSkKKyAgICBpZiAoIXN0ZDo6aXNuYW4odmFsdWUpICYmICFzdGQ6OmlzaW5mKHZh
bHVlKSkKICAgICAgICAgbV92YWx1ZSA9IHZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAKaW5kZXggZmVm
OGQwZTU2NDBjNmNkOWU1YTYyNGJlMjMzODViYjUzOTlkYjQ3Yi4uYTYzNjgzYTVmNDE3NzBhY2E5
ZGViNGY2OTg4MTZkZTM2Zjg2OTI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2
b2lkIEF1ZGlvUGFyYW1UaW1lbGluZTo6c2V0VmFsdWVDdXJ2ZUF0VGltZShGbG9hdDMyQXJyYXkq
IGN1cnZlLCBmbG9hdCB0aW1lLCBmbAogCiBzdGF0aWMgYm9vbCBpc1ZhbGlkTnVtYmVyKGZsb2F0
IHgpCiB7Ci0gICAgcmV0dXJuICFpc25hbih4KSAmJiAhaXNpbmYoeCk7CisgICAgcmV0dXJuICFz
dGQ6OmlzbmFuKHgpICYmICFzdGQ6OmlzaW5mKHgpOwogfQogCiB2b2lkIEF1ZGlvUGFyYW1UaW1l
bGluZTo6aW5zZXJ0RXZlbnQoY29uc3QgUGFyYW1FdmVudCYgZXZlbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAppbmRleCBjOTcwY2IwYjlmMTU4
NjMyNjk4ZmQ0MjcwZjc4OTc0MGE3MDEwZGZiLi5iNTc3YzRhMWE1MjllZDkxNzMwMWIxZTE0ZWM3
ZDQzMWJiZDJiM2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1Bhbm5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFu
bmVyTm9kZS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0
aWMgdm9pZCBmaXhOQU5zKGRvdWJsZSAmeCkKIHsKLSAgICBpZiAoaXNuYW4oeCkgfHwgaXNpbmYo
eCkpCisgICAgaWYgKHN0ZDo6aXNuYW4oeCkgfHwgc3RkOjppc2luZih4KSkKICAgICAgICAgeCA9
IDAuMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmlu
ZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5n
VXRpbGl0aWVzLmNwcAppbmRleCBhZjEzYTVhNDI3NTZlYTkxNGM0ZDczMDBhYTUxYzMyNTQyY2Iw
ZDQwLi43YWJlODAyNTExNGFjNmM0YTcwZmJjMzBiMGZhYzJlMTk3MjY1Mzk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAt
MTEwLDExICsxMTAsMTEgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtRGVwdGggPSAyMDAw
OwogCiBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21WYWx1ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFZlY3RvcjxKU0FycmF5Kj4mIHN0YWNrKQogewot
ICAgIGlmICh2YWx1ZS5pc051bWJlcigpICYmICFpc25hbih2YWx1ZS50b051bWJlcihleGVjKSkp
CisgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkgJiYgIXN0ZDo6aXNuYW4odmFsdWUudG9OdW1iZXIo
ZXhlYykpKQogICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVOdW1iZXIodmFsdWUudG9OdW1i
ZXIoZXhlYykpOwogICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gSURC
S2V5OjpjcmVhdGVTdHJpbmcodmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKLSAg
ICBpZiAodmFsdWUuaW5oZXJpdHMoJkRhdGVJbnN0YW5jZTo6c19pbmZvKSAmJiAhaXNuYW4odmFs
dWVUb0RhdGUoZXhlYywgdmFsdWUpKSkKKyAgICBpZiAodmFsdWUuaW5oZXJpdHMoJkRhdGVJbnN0
YW5jZTo6c19pbmZvKSAmJiAhc3RkOjppc25hbih2YWx1ZVRvRGF0ZShleGVjLCB2YWx1ZSkpKQog
ICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVEYXRlKHZhbHVlVG9EYXRlKGV4ZWMsIHZhbHVl
KSk7CiAgICAgaWYgKHZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgSlNPYmplY3QqIG9iamVj
dCA9IGFzT2JqZWN0KHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRGF0YVZpZXdDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
YXRhVmlld0N1c3RvbS5jcHAKaW5kZXggM2ViN2EzZTFhNGYyN2JjM2Q2YmQ4YTY1ZDc2NGNhNjcz
ZmQwNjY4NC4uNjA0Y2IxMDVhNzM0MzRjNTkxMzI2OWVkOGQ3OThiYTI0NjY3MWFhYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhVmlld0N1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhVmlld0N1c3RvbS5jcHAKQEAgLTg5
LDcgKzg5LDcgQEAgc3RhdGljIEpTVmFsdWUgZ2V0RGF0YVZpZXdNZW1iZXIoRXhlY1N0YXRlKiBl
eGVjLCBEYXRhVmlldyogaW1wLCBEYXRhVmlld0FjY2Vzc1QKICAgICBjYXNlIEFjY2Vzc0RhdGFW
aWV3TWVtYmVyQXNGbG9hdDMyOgogICAgIGNhc2UgQWNjZXNzRGF0YVZpZXdNZW1iZXJBc0Zsb2F0
NjQ6IHsKICAgICAgICAgZG91YmxlIHZhbHVlID0gKHR5cGUgPT0gQWNjZXNzRGF0YVZpZXdNZW1i
ZXJBc0Zsb2F0MzIpID8gaW1wLT5nZXRGbG9hdDMyKGJ5dGVPZmZzZXQsIGxpdHRsZUVuZGlhbiwg
ZWMpIDogaW1wLT5nZXRGbG9hdDY0KGJ5dGVPZmZzZXQsIGxpdHRsZUVuZGlhbiwgZWMpOwotICAg
ICAgICByZXN1bHQgPSBpc25hbih2YWx1ZSkgPyBqc05hTigpIDoganNOdW1iZXIodmFsdWUpOwor
ICAgICAgICByZXN1bHQgPSBzdGQ6OmlzbmFuKHZhbHVlKSA/IGpzTmFOKCkgOiBqc051bWJlcih2
YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0gZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dl
b2xvY2F0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9j
YXRpb25DdXN0b20uY3BwCmluZGV4IGYxNTk5YTQxNjYxODMyODI4NTdlODA1YTA0ODI4Yzg0MmI0
MjYyNDYuLmNiMDA3NDQxZTM4NDVkYzUxN2YxMTljZjZlZGUzYWRjOTM2YmQxZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCkBA
IC01Miw3ICs1Miw3IEBAIHN0YXRpYyB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShQb3NpdGlv
bk9wdGlvbnMqIG9wdGlvbnMsIGNvbnN0IGJvb2wmIGVuYWJsZUhpCiBzdGF0aWMgdm9pZCBzZXRU
aW1lb3V0KFBvc2l0aW9uT3B0aW9ucyogb3B0aW9ucywgY29uc3QgZG91YmxlJiB0aW1lb3V0KQog
ewogICAgIC8vIElmIHRoZSB2YWx1ZSBpcyBwb3NpdGl2ZSBpbmZpbml0eSwgdGhlcmUncyBub3Ro
aW5nIHRvIGRvLgotICAgIGlmICghKGlzaW5mKHRpbWVvdXQpICYmICh0aW1lb3V0ID4gMCkpKSB7
CisgICAgaWYgKCEoc3RkOjppc2luZih0aW1lb3V0KSAmJiAodGltZW91dCA+IDApKSkgewogICAg
ICAgICAvLyBXcmFwIHRvIGludDMyIGFuZCBmb3JjZSBub24tbmVnYXRpdmUgdG8gbWF0Y2ggYmVo
YXZpb3Igb2Ygd2luZG93LnNldFRpbWVvdXQuCiAgICAgICAgIG9wdGlvbnMtPnNldFRpbWVvdXQo
bWF4KDAsIHN0YXRpY19jYXN0PGludD4odGltZW91dCkpKTsKICAgICB9CkBAIC02MCw3ICs2MCw3
IEBAIHN0YXRpYyB2b2lkIHNldFRpbWVvdXQoUG9zaXRpb25PcHRpb25zKiBvcHRpb25zLCBjb25z
dCBkb3VibGUmIHRpbWVvdXQpCiAKIHN0YXRpYyB2b2lkIHNldE1heGltdW1BZ2UoUG9zaXRpb25P
cHRpb25zKiBvcHRpb25zLCBjb25zdCBkb3VibGUmIG1heGltdW1BZ2UpCiB7Ci0gICAgaWYgKGlz
aW5mKG1heGltdW1BZ2UpICYmIChtYXhpbXVtQWdlID4gMCkpIHsKKyAgICBpZiAoc3RkOjppc2lu
ZihtYXhpbXVtQWdlKSAmJiAobWF4aW11bUFnZSA+IDApKSB7CiAgICAgICAgIC8vIElmIHRoZSB2
YWx1ZSBpcyBwb3NpdGl2ZSBpbmZpbml0eSwgY2xlYXIgbWF4aW11bUFnZS4KICAgICAgICAgb3B0
aW9ucy0+Y2xlYXJNYXhpbXVtQWdlKCk7CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9t
LmNwcAppbmRleCBlNzRkMDk3Yzk4NWE0MWNjYzE1MWI5YzA4ZWI3YjlmNjExMjFjNmNiLi40Yjdj
MjQxNTE2Mjg4ZDkxNGQwOTAyZGU1MGE3MTY3YTViNmU5MWNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0
b20uY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246OnNl
dExlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CiAgICAgdW5zaWduZWQgbmV3TGVuZ3RoID0gMDsKICAgICBkb3VibGUgbGVuZ3Ro
VmFsdWUgPSB2YWx1ZS50b051bWJlcihleGVjKTsKLSAgICBpZiAoIWlzbmFuKGxlbmd0aFZhbHVl
KSAmJiAhaXNpbmYobGVuZ3RoVmFsdWUpKSB7CisgICAgaWYgKCFzdGQ6OmlzbmFuKGxlbmd0aFZh
bHVlKSAmJiAhc3RkOjppc2luZihsZW5ndGhWYWx1ZSkpIHsKICAgICAgICAgaWYgKGxlbmd0aFZh
bHVlIDwgMC4wKQogICAgICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgZWxz
ZSBpZiAobGVuZ3RoVmFsdWUgPiBzdGF0aWNfY2FzdDxkb3VibGU+KFVJTlRfTUFYKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0UG9pbnRDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRQb2ludEN1c3RvbS5jcHAKaW5k
ZXggYWExNGU2NWEyYTQyNWY0ZTAzNjBkYTQ0NTZhMjhiNjIzZjRkYWI3Zi4uN2VmMTI5MTAzMmEz
YzYzOWNlOTYxZTY4MThhYTMyMDA0YWUyZTZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXZWJLaXRQb2ludEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXZWJLaXRQb2ludEN1c3RvbS5jcHAKQEAgLTQxLDkgKzQxLDkgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1dlYktpdFBvaW50Q29uc3RydWN0b3I6OmNvbnN0
cnVjdEpTV2ViS2l0UG9pbnQoRXgKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDIp
IHsKICAgICAgICAgeCA9IHN0YXRpY19jYXN0PGZsb2F0PihleGVjLT5hcmd1bWVudCgwKS50b051
bWJlcihleGVjKSk7CiAgICAgICAgIHkgPSBzdGF0aWNfY2FzdDxmbG9hdD4oZXhlYy0+YXJndW1l
bnQoMSkudG9OdW1iZXIoZXhlYykpOwotICAgICAgICBpZiAoaXNuYW4oeCkpCisgICAgICAgIGlm
IChzdGQ6OmlzbmFuKHgpKQogICAgICAgICAgICAgeCA9IDA7Ci0gICAgICAgIGlmIChpc25hbih5
KSkKKyAgICAgICAgaWYgKHN0ZDo6aXNuYW4oeSkpCiAgICAgICAgICAgICB5ID0gMDsKICAgICB9
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGpzQ29uc3Ry
dWN0b3ItPmdsb2JhbE9iamVjdCgpLCBXZWJLaXRQb2ludDo6Y3JlYXRlKHgsIHkpKSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpp
bmRleCBhOTRjODhjNjhhNDlhNmQzMzUxODg1ZDNmNjY4MWRhZDE3N2E5OTY1Li41Y2EzMTY5OWI5
ZTBiMzdkYjZlNTMxNzQ1N2RlZjhjODE4YTQyMjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMjQzNyw3ICsyNDM3LDcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTtcbiIpOwogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBkb3VibGUgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8
JGludGVyZmFjZU5hbWUqPihpbXBsKCkpLT5pdGVtKGluZGV4KTtcbiIpOwogICAgICAgICAjIGpz
TnVtYmVyIGNvbnZlcnNpb24gZG9lc24ndCBzdXBwcmVzcyBzaWduYWxsaW5nIE5hTnMsIHNvIGVu
Zm9yY2UgdGhhdCBoZXJlLgotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoaXNu
YW4ocmVzdWx0KSlcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoc3Rk
Ojppc25hbihyZXN1bHQpKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICByZXR1cm4ganNOYU4oKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBy
ZXR1cm4gSlNWYWx1ZShyZXN1bHQpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
fVxuXG4iKTsKQEAgLTI3MTIsNyArMjcxMiw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVj
awogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGRvdWJsZSAkbmF0aXZlVmFs
dWUgPSBleGVjLT5hcmd1bWVudCgkYXJnc0luZGV4KS50b051bWJlcihleGVjKTtcbiIpOwogICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSlcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuXG4iKTsKLSAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIWlzbmFuKCRuYXRpdmVWYWx1ZSkpXG4iKTsKKyAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIXN0ZDo6aXNuYW4oJG5hdGl2ZVZh
bHVlKSlcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAkbmFt
ZSA9IGNsYW1wVG88JGFyZ1R5cGU+KCRuYXRpdmVWYWx1ZSk7XG5cbiIpOwogICAgICAgICB9IGVs
c2lmICgkcGFyYW1ldGVyLT5pc1ZhcmlhZGljKSB7CiAgICAgICAgICAgICBteSAkbmF0aXZlRWxl
bWVudFR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtCmluZGV4IDAxOWJhOTU1MGYxMjE3NmFlMzIyYmJmNDc3YmNjMmZmZjNiYzM0
NjQuLjVlNjg4ODFhZjc4NmZkNWEwZWI2NGI5ODJhZjMxZGI3MzRhM2I2NjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0x
NzY5LDcgKzE3NjksNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAg
ICAgICBteSAkcGFyYW1UeXBlID0gJHBhcmFtZXRlci0+dHlwZTsKICAgICAgICAgICAgICAgICAk
cGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAkcGFyYW1UeXBlICRwYXJhbWV0ZXJOYW1lID0g
MDtcbiI7CiAgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgVjhU
UllDQVRDSChkb3VibGUsICRuYXRpdmVWYWx1ZSwgYXJnc1skcGFyYW1JbmRleF0tPk51bWJlclZh
bHVlKCkpO1xuIjsKLSAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAg
ICBpZiAoIWlzbmFuKCRuYXRpdmVWYWx1ZSkpXG4iOworICAgICAgICAgICAgICAgICRwYXJhbWV0
ZXJDaGVja1N0cmluZyAuPSAiICAgIGlmICghc3RkOjppc25hbigkbmF0aXZlVmFsdWUpKVxuIjsK
ICAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgJHBhcmFt
ZXRlck5hbWUgPSBjbGFtcFRvPCRwYXJhbVR5cGU+KCRuYXRpdmVWYWx1ZSk7XG4iOwogICAgICAg
ICB9IGVsc2lmICgkcGFyYW1ldGVyLT50eXBlIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiKSB7
CiAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgi
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U0Zsb2F0NjRBcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNGbG9hdDY0QXJyYXkuY3BwCmluZGV4IDUzOTg0ODQxOGU0Y2Y3MWQ4ZTY4ODVhZTI1MDk1
M2QyZTMzZjQyMDMuLjU1OTFjMzFjN2E1NDgwOGY4N2I0OTZlMTIzMDc0ZWNiMTdiMGZlNTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0
NjRBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTRmxvYXQ2NEFycmF5LmNwcApAQCAtMjgyLDcgKzI4Miw3IEBAIEpTVmFsdWUgSlNGbG9hdDY0
QXJyYXk6OmdldEJ5SW5kZXgoRXhlY1N0YXRlKiwgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKICAgICBkb3VibGUgcmVzdWx0
ID0gc3RhdGljX2Nhc3Q8RmxvYXQ2NEFycmF5Kj4oaW1wbCgpKS0+aXRlbShpbmRleCk7Ci0gICAg
aWYgKGlzbmFuKHJlc3VsdCkpCisgICAgaWYgKHN0ZDo6aXNuYW4ocmVzdWx0KSkKICAgICAgICAg
cmV0dXJuIGpzTmFOKCk7CiAgICAgcmV0dXJuIEpTVmFsdWUocmVzdWx0KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAK
aW5kZXggMDA4MmI4NTU0YmI3MDI4MzdmYWNjMTAyZDMwYWU5ZTZhNTFjZTQ3MC4uZmRmMGMzZTRi
Njg3YjM1YTczNTY5Yjg0ZDA2NGI3YWIwNTJjZGY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTI0MDAsNyAr
MjQwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcChFeGVjCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
Ci0gICAgaWYgKCFpc25hbihvYmpBcmdzU2hvcnROYXRpdmVWYWx1ZSkpCisgICAgaWYgKCFzdGQ6
OmlzbmFuKG9iakFyZ3NTaG9ydE5hdGl2ZVZhbHVlKSkKICAgICAgICAgb2JqQXJnc1Nob3J0ID0g
Y2xhbXBUbzx1bnNpZ25lZCBzaG9ydD4ob2JqQXJnc1Nob3J0TmF0aXZlVmFsdWUpOwogCiAgICAg
dW5zaWduZWQgbG9uZyBvYmpBcmdzTG9uZyA9IDA7CkBAIC0yNDA4LDcgKzI0MDgsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NN
ZXRob2RXaXRoQ2xhbXAoRXhlYwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGlmICghaXNu
YW4ob2JqQXJnc0xvbmdOYXRpdmVWYWx1ZSkpCisgICAgaWYgKCFzdGQ6OmlzbmFuKG9iakFyZ3NM
b25nTmF0aXZlVmFsdWUpKQogICAgICAgICBvYmpBcmdzTG9uZyA9IGNsYW1wVG88dW5zaWduZWQg
bG9uZz4ob2JqQXJnc0xvbmdOYXRpdmVWYWx1ZSk7CiAKICAgICBpbXBsLT5jbGFzc01ldGhvZFdp
dGhDbGFtcChvYmpBcmdzU2hvcnQsIG9iakFyZ3NMb25nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXggN2ZhMDVk
MjFlYWE2YWU1ZTc5MjlkMzIwY2FlZGFmYTIwYjk5NzgxNi4uZTE4OTYxN2UyOWQzZTcxMzBmOTUw
MzgzZmYwMWQ3ZDIxODlkZTQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTE2NDcsMTEgKzE2NDcsMTEgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjbGFzc01ldGhvZFdpdGhDbGFtcENhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIHVuc2lnbmVkIHNob3J0IG9iakFyZ3NTaG9ydCA9
IDA7CiAgICAgVjhUUllDQVRDSChkb3VibGUsIG9iakFyZ3NTaG9ydE5hdGl2ZVZhbHVlLCBhcmdz
WzBdLT5OdW1iZXJWYWx1ZSgpKTsKLSAgICBpZiAoIWlzbmFuKG9iakFyZ3NTaG9ydE5hdGl2ZVZh
bHVlKSkKKyAgICBpZiAoIXN0ZDo6aXNuYW4ob2JqQXJnc1Nob3J0TmF0aXZlVmFsdWUpKQogICAg
ICAgICBvYmpBcmdzU2hvcnQgPSBjbGFtcFRvPHVuc2lnbmVkIHNob3J0PihvYmpBcmdzU2hvcnRO
YXRpdmVWYWx1ZSk7CiAgICAgdW5zaWduZWQgbG9uZyBvYmpBcmdzTG9uZyA9IDA7CiAgICAgVjhU
UllDQVRDSChkb3VibGUsIG9iakFyZ3NMb25nTmF0aXZlVmFsdWUsIGFyZ3NbMV0tPk51bWJlclZh
bHVlKCkpOwotICAgIGlmICghaXNuYW4ob2JqQXJnc0xvbmdOYXRpdmVWYWx1ZSkpCisgICAgaWYg
KCFzdGQ6OmlzbmFuKG9iakFyZ3NMb25nTmF0aXZlVmFsdWUpKQogICAgICAgICBvYmpBcmdzTG9u
ZyA9IGNsYW1wVG88dW5zaWduZWQgbG9uZz4ob2JqQXJnc0xvbmdOYXRpdmVWYWx1ZSk7CiAgICAg
aW1wLT5jbGFzc01ldGhvZFdpdGhDbGFtcChvYmpBcmdzU2hvcnQsIG9iakFyZ3NMb25nKTsKICAg
ICByZXR1cm4gdjhVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKaW5kZXggODIzNzRkMTZhYmQxYmY5ODdkNjZhM2Y3
ZWRjZjFhOTVlZjI4MDM3MC4uYTVjMWE2Mjk1M2M5Yjc0OTMxODBiZGQzZjM5ZWFhZTQyNTg0MmNj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxp
dGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxp
dGllcy5jcHAKQEAgLTc1LDExICs3NSwxMSBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1E
ZXB0aCA9IDIwMDA7CiAKIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJv
bVZhbHVlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgVmVjdG9yPHY4OjpIYW5kbGU8djg6
OkFycmF5PiA+JiBzdGFjaykKIHsKLSAgICBpZiAodmFsdWUtPklzTnVtYmVyKCkgJiYgIWlzbmFu
KHZhbHVlLT5OdW1iZXJWYWx1ZSgpKSkKKyAgICBpZiAodmFsdWUtPklzTnVtYmVyKCkgJiYgIXN0
ZDo6aXNuYW4odmFsdWUtPk51bWJlclZhbHVlKCkpKQogICAgICAgICByZXR1cm4gSURCS2V5Ojpj
cmVhdGVOdW1iZXIodmFsdWUtPk51bWJlclZhbHVlKCkpOwogICAgIGlmICh2YWx1ZS0+SXNTdHJp
bmcoKSkKICAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlU3RyaW5nKHRvV2ViQ29yZVN0cmlu
Zyh2YWx1ZSkpOwotICAgIGlmICh2YWx1ZS0+SXNEYXRlKCkgJiYgIWlzbmFuKHZhbHVlLT5OdW1i
ZXJWYWx1ZSgpKSkKKyAgICBpZiAodmFsdWUtPklzRGF0ZSgpICYmICFzdGQ6OmlzbmFuKHZhbHVl
LT5OdW1iZXJWYWx1ZSgpKSkKICAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlRGF0ZSh2YWx1
ZS0+TnVtYmVyVmFsdWUoKSk7CiAgICAgaWYgKHZhbHVlLT5Jc0FycmF5KCkpIHsKICAgICAgICAg
djg6OkhhbmRsZTx2ODo6QXJyYXk+IGFycmF5ID0gdjg6OkhhbmRsZTx2ODo6QXJyYXk+OjpDYXN0
KHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGlu
Zy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCmluZGV4IGRl
N2MxODI1NzNiZDEyYTVkN2Y5ODY5OTYyNWY2YzFjOGQ2ZWI3YzUuLjg2M2Y0ZmQ2YWMwYTY1NWJl
OTI4NGY3Y2Y4Y2MwNDM4ZDQyMmY1NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4QmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhC
aW5kaW5nLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIGludCB0b0ludDMyKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB2YWx1ZSwgYm9vbCYgb2spCiAgICAgCiAgICAgLy8gRG9lcyB0aGUgdmFsdWUgY29u
dmVydCB0byBuYW4gb3IgdG8gYW4gaW5maW5pdHk/CiAgICAgZG91YmxlIG51bWJlclZhbHVlID0g
bnVtYmVyT2JqZWN0LT5WYWx1ZSgpOwotICAgIGlmIChpc25hbihudW1iZXJWYWx1ZSkgfHwgaXNp
bmYobnVtYmVyVmFsdWUpKSB7CisgICAgaWYgKHN0ZDo6aXNuYW4obnVtYmVyVmFsdWUpIHx8IHN0
ZDo6aXNpbmYobnVtYmVyVmFsdWUpKSB7CiAgICAgICAgIG9rID0gZmFsc2U7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KQEAgLTE1OSw3ICsxNTksNyBAQCB1aW50MzJfdCB0b1VJbnQzMih2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIGJvb2wmIG9rKQogCiAgICAgLy8gRG9lcyB0aGUgdmFs
dWUgY29udmVydCB0byBuYW4gb3IgdG8gYW4gaW5maW5pdHk/CiAgICAgZG91YmxlIG51bWJlclZh
bHVlID0gbnVtYmVyT2JqZWN0LT5WYWx1ZSgpOwotICAgIGlmIChpc25hbihudW1iZXJWYWx1ZSkg
fHwgaXNpbmYobnVtYmVyVmFsdWUpKSB7CisgICAgaWYgKHN0ZDo6aXNuYW4obnVtYmVyVmFsdWUp
IHx8IHN0ZDo6aXNpbmYobnVtYmVyVmFsdWUpKSB7CiAgICAgICAgIG9rID0gZmFsc2U7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEdlb2xvY2F0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEdlb2xvY2F0aW9uQ3VzdG9tLmNwcAppbmRleCA4YzUxYmUxNTlkMzhj
ZjU5MjZjNzBhNDE5NjA2NjA3MTM5NGUwNjAxLi5mNWNlZTMyOWM4ZTc5OWI2MDgyODdmMWZhMDA2
MWZhMDdlMjEwZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhHZW9sb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4R2VvbG9jYXRpb25DdXN0b20uY3BwCkBAIC04OCw3ICs4OCw3IEBAIHN0YXRp
YyBQYXNzUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4gY3JlYXRlUG9zaXRpb25PcHRpb25zKHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHZhCiAgICAgICAgIH0KICAgICAgICAgZG91YmxlIHRpbWVvdXREb3Vi
bGUgPSB0aW1lb3V0TnVtYmVyLT5WYWx1ZSgpOwogICAgICAgICAvLyBJZiB0aGUgdmFsdWUgaXMg
cG9zaXRpdmUgaW5maW5pdHksIHRoZXJlJ3Mgbm90aGluZyB0byBkby4KLSAgICAgICAgaWYgKCEo
aXNpbmYodGltZW91dERvdWJsZSkgJiYgdGltZW91dERvdWJsZSA+IDApKSB7CisgICAgICAgIGlm
ICghKHN0ZDo6aXNpbmYodGltZW91dERvdWJsZSkgJiYgdGltZW91dERvdWJsZSA+IDApKSB7CiAg
ICAgICAgICAgICB2ODo6TG9jYWw8djg6OkludDMyPiB0aW1lb3V0SW50MzIgPSB0aW1lb3V0VmFs
dWUtPlRvSW50MzIoKTsKICAgICAgICAgICAgIGlmICh0aW1lb3V0SW50MzIuSXNFbXB0eSgpKSB7
CiAgICAgICAgICAgICAgICAgc3VjY2VlZGVkID0gZmFsc2U7CkBAIC0xMTEsNyArMTExLDcgQEAg
c3RhdGljIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBjcmVhdGVQb3NpdGlvbk9wdGlvbnMo
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmEKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9
CiAgICAgICAgIGRvdWJsZSBtYXhpbXVtQWdlRG91YmxlID0gbWF4aW11bUFnZU51bWJlci0+VmFs
dWUoKTsKLSAgICAgICAgaWYgKGlzaW5mKG1heGltdW1BZ2VEb3VibGUpICYmIG1heGltdW1BZ2VE
b3VibGUgPiAwKSB7CisgICAgICAgIGlmIChzdGQ6OmlzaW5mKG1heGltdW1BZ2VEb3VibGUpICYm
IG1heGltdW1BZ2VEb3VibGUgPiAwKSB7CiAgICAgICAgICAgICAvLyBJZiB0aGUgdmFsdWUgaXMg
cG9zaXRpdmUgaW5maW5pdHksIGNsZWFyIG1heGltdW1BZ2UuCiAgICAgICAgICAgICBvcHRpb25z
LT5jbGVhck1heGltdW1BZ2UoKTsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0Nv
bGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDQxNTRhZTQ0YmMzODczYjY4NTgzMmFiM2JjMzNjNmMz
ZjhiNGJkYTEuLmFiYzlmOTY0MDU0NDczNDA1MTM2YTE1NDNhNzA2MWVmMGQzZTM4ZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29s
bGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHZv
aWQgVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246Omxlbmd0aEFjY2Vzc29yU2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2CiAgICAgZG91YmxlIHYgPSB2YWx1ZS0+TnVtYmVyVmFsdWUo
KTsKICAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSAwOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIGlmICghaXNuYW4odikgJiYgIWlzaW5mKHYpKSB7CisgICAgaWYgKCFzdGQ6OmlzbmFu
KHYpICYmICFzdGQ6OmlzaW5mKHYpKSB7CiAgICAgICAgIGlmICh2IDwgMC4wKQogICAgICAgICAg
ICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgZWxzZSBpZiAodiA+IHN0YXRpY19jYXN0
PGRvdWJsZT4oVUlOVF9NQVgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRDdXN0b20uY3BwCmluZGV4IGRlY2Y3NmNiNTZkMzdh
ODUxZmM1ODY1MjRhNDY2MTRjYWM1MDdlOWUuLmY3MTVjZGFhZWI0YTdlZGRhNzQ0MmQ5MTdlNGE5
NDk5MjVhNGI4Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdlYktpdFBvaW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhXZWJLaXRQb2ludEN1c3RvbS5jcHAKQEAgLTQ2LDEyICs0NiwxMiBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJLaXRQb2ludDo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3Rv
bShjb25zdCB2ODo6QXJndW1lbgogICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMSkgewogICAgICAg
ICBpZiAoIWFyZ3NbMF0tPklzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgICAgIHggPSB0b0Zsb2F0
KGFyZ3NbMF0pOwotICAgICAgICAgICAgaWYgKGlzbmFuKHgpKQorICAgICAgICAgICAgaWYgKHN0
ZDo6aXNuYW4oeCkpCiAgICAgICAgICAgICAgICAgeCA9IDA7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKCFhcmdzWzFdLT5Jc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAgICB5ID0gdG9GbG9hdChh
cmdzWzFdKTsKLSAgICAgICAgICAgIGlmIChpc25hbih5KSkKKyAgICAgICAgICAgIGlmIChzdGQ6
OmlzbmFuKHkpKQogICAgICAgICAgICAgICAgIHkgPSAwOwogICAgICAgICB9CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCmluZGV4IDE4ZWNkMjBlZWZmYTA4N2Mz
YmYxY2JmOGI5NzYxYTRmNjlmZDhhYTUuLmZiZTc3N2I0NTkzZGVhN2UyZjVkZDllNTM0NDVhNTdi
MjAwY2NjMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKQEAgLTMy
Miw3ICszMjIsNyBAQCBRVmFyaWFudCBjb252ZXJ0VmFsdWVUb1FWYXJpYW50KEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlLCBRTWV0YVR5cAogCiAgICAgLy8gY2hlY2sgbWFn
aWMgcG9pbnRlciB2YWx1ZXMgYmVmb3JlIGRlcmVmZXJlbmNpbmcgdmFsdWUKICAgICBpZiAoSlNW
YWx1ZUlzTnVtYmVyKGNvbnRleHQsIHZhbHVlKQotICAgICAgICAmJiBpc25hbihKU1ZhbHVlVG9O
dW1iZXIoY29udGV4dCwgdmFsdWUsIGV4Y2VwdGlvbikpKSB7CisgICAgICAgICYmIHN0ZDo6aXNu
YW4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIHZhbHVlLCBleGNlcHRpb24pKSkgewogICAgICAg
ICBpZiAoZGlzdGFuY2UpCiAgICAgICAgICAgICAqZGlzdGFuY2UgPSAtMTsKICAgICAgICAgcmV0
dXJuIFFWYXJpYW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
TWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwCmluZGV4
IDkyYmZjZTM1NDgyMTJhOTQxYTgyODM5YWViYjhhYmUxMTlhM2I5NjMuLjUxODhiNjZiODdkYWMz
YjJkMTcyNDFjNDE5MzczZTEwMWZiMjcwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9XZWJLaXRDU1NNYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NN
YXRyaXguY3BwCkBAIC0xMDgsNTMgKzEwOCw1MyBAQCBQYXNzUmVmUHRyPFdlYktpdENTU01hdHJp
eD4gV2ViS2l0Q1NTTWF0cml4OjppbnZlcnNlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogCiBQ
YXNzUmVmUHRyPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4Ojp0cmFuc2xhdGUoZG91
YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeikgY29uc3QKIHsKLSAgICBpZiAoaXNuYW4oeCkpCisg
ICAgaWYgKHN0ZDo6aXNuYW4oeCkpCiAgICAgICAgIHggPSAwOwotICAgIGlmIChpc25hbih5KSkK
KyAgICBpZiAoc3RkOjppc25hbih5KSkKICAgICAgICAgeSA9IDA7Ci0gICAgaWYgKGlzbmFuKHop
KQorICAgIGlmIChzdGQ6OmlzbmFuKHopKQogICAgICAgICB6ID0gMDsKICAgICByZXR1cm4gV2Vi
S2l0Q1NTTWF0cml4OjpjcmVhdGUoVHJhbnNmb3JtYXRpb25NYXRyaXgobV9tYXRyaXgpLnRyYW5z
bGF0ZTNkKHgsIHksIHopKTsKIH0KIAogUGFzc1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktp
dENTU01hdHJpeDo6c2NhbGUoZG91YmxlIHNjYWxlWCwgZG91YmxlIHNjYWxlWSwgZG91YmxlIHNj
YWxlWikgY29uc3QKIHsKLSAgICBpZiAoaXNuYW4oc2NhbGVYKSkKKyAgICBpZiAoc3RkOjppc25h
bihzY2FsZVgpKQogICAgICAgICBzY2FsZVggPSAxOwotICAgIGlmIChpc25hbihzY2FsZVkpKQor
ICAgIGlmIChzdGQ6OmlzbmFuKHNjYWxlWSkpCiAgICAgICAgIHNjYWxlWSA9IHNjYWxlWDsKLSAg
ICBpZiAoaXNuYW4oc2NhbGVaKSkKKyAgICBpZiAoc3RkOjppc25hbihzY2FsZVopKQogICAgICAg
ICBzY2FsZVogPSAxOwogICAgIHJldHVybiBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShUcmFuc2Zv
cm1hdGlvbk1hdHJpeChtX21hdHJpeCkuc2NhbGUzZChzY2FsZVgsIHNjYWxlWSwgc2NhbGVaKSk7
CiB9CiAKIFBhc3NSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnJvdGF0
ZShkb3VibGUgcm90WCwgZG91YmxlIHJvdFksIGRvdWJsZSByb3RaKSBjb25zdAogewotICAgIGlm
IChpc25hbihyb3RYKSkKKyAgICBpZiAoc3RkOjppc25hbihyb3RYKSkKICAgICAgICAgcm90WCA9
IDA7CiAKLSAgICBpZiAoaXNuYW4ocm90WSkgJiYgaXNuYW4ocm90WikpIHsKKyAgICBpZiAoc3Rk
Ojppc25hbihyb3RZKSAmJiBzdGQ6OmlzbmFuKHJvdFopKSB7CiAgICAgICAgIHJvdFogPSByb3RY
OwogICAgICAgICByb3RYID0gMDsKICAgICAgICAgcm90WSA9IDA7CiAgICAgfQogCi0gICAgaWYg
KGlzbmFuKHJvdFkpKQorICAgIGlmIChzdGQ6OmlzbmFuKHJvdFkpKQogICAgICAgICByb3RZID0g
MDsKLSAgICBpZiAoaXNuYW4ocm90WikpCisgICAgaWYgKHN0ZDo6aXNuYW4ocm90WikpCiAgICAg
ICAgIHJvdFogPSAwOwogICAgIHJldHVybiBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShUcmFuc2Zv
cm1hdGlvbk1hdHJpeChtX21hdHJpeCkucm90YXRlM2Qocm90WCwgcm90WSwgcm90WikpOwogfQog
CiBQYXNzUmVmUHRyPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4Ojpyb3RhdGVBeGlz
QW5nbGUoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeiwgZG91YmxlIGFuZ2xlKSBjb25zdAog
ewotICAgIGlmIChpc25hbih4KSkKKyAgICBpZiAoc3RkOjppc25hbih4KSkKICAgICAgICAgeCA9
IDA7Ci0gICAgaWYgKGlzbmFuKHkpKQorICAgIGlmIChzdGQ6OmlzbmFuKHkpKQogICAgICAgICB5
ID0gMDsKLSAgICBpZiAoaXNuYW4oeikpCisgICAgaWYgKHN0ZDo6aXNuYW4oeikpCiAgICAgICAg
IHogPSAwOwotICAgIGlmIChpc25hbihhbmdsZSkpCisgICAgaWYgKHN0ZDo6aXNuYW4oYW5nbGUp
KQogICAgICAgICBhbmdsZSA9IDA7CiAgICAgaWYgKHggPT0gMCAmJiB5ID09IDAgJiYgeiA9PSAw
KQogICAgICAgICB6ID0gMTsKQEAgLTE2MywxNCArMTYzLDE0IEBAIFBhc3NSZWZQdHI8V2ViS2l0
Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnJvdGF0ZUF4aXNBbmdsZShkb3VibGUgeCwgZG91
YmxlIHksCiAKIFBhc3NSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnNr
ZXdYKGRvdWJsZSBhbmdsZSkgY29uc3QKIHsKLSAgICBpZiAoaXNuYW4oYW5nbGUpKQorICAgIGlm
IChzdGQ6OmlzbmFuKGFuZ2xlKSkKICAgICAgICAgYW5nbGUgPSAwOwogICAgIHJldHVybiBXZWJL
aXRDU1NNYXRyaXg6OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeChtX21hdHJpeCkuc2tld1go
YW5nbGUpKTsKIH0KIAogUGFzc1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJp
eDo6c2tld1koZG91YmxlIGFuZ2xlKSBjb25zdAogewotICAgIGlmIChpc25hbihhbmdsZSkpCisg
ICAgaWYgKHN0ZDo6aXNuYW4oYW5nbGUpKQogICAgICAgICBhbmdsZSA9IDA7CiAgICAgcmV0dXJu
IFdlYktpdENTU01hdHJpeDo6Y3JlYXRlKFRyYW5zZm9ybWF0aW9uTWF0cml4KG1fbWF0cml4KS5z
a2V3WShhbmdsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
aW5kZXggYTE0NWM2YjMyNGIzNWU0Y2Q4NjM5ZDFkZWQ1YzI3NDhjMDEzZmJmOS4uNTA0NzZiNmU0
ZGM5NzYxMzg3MTIyNDJkMDk4MGUzY2U2YTgwZjYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yNzgyLDcgKzI3ODIsNyBAQCBmbG9hdCBIVE1MTWVkaWFF
bGVtZW50OjpwZXJjZW50TG9hZGVkKCkgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAgICAgZmxv
YXQgZHVyYXRpb24gPSBtX3BsYXllci0+ZHVyYXRpb24oKTsKIAotICAgIGlmICghZHVyYXRpb24g
fHwgaXNpbmYoZHVyYXRpb24pKQorICAgIGlmICghZHVyYXRpb24gfHwgc3RkOjppc2luZihkdXJh
dGlvbikpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgZmxvYXQgYnVmZmVyZWQgPSAwOwpAQCAt
MzM5Nyw3ICszMzk3LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVD
aGFuZ2VkKE1lZGlhUGxheWVyKikKICAgICAKICAgICAvLyBXaGVuIHRoZSBjdXJyZW50IHBsYXli
YWNrIHBvc2l0aW9uIHJlYWNoZXMgdGhlIGVuZCBvZiB0aGUgbWVkaWEgcmVzb3VyY2Ugd2hlbiB0
aGUgZGlyZWN0aW9uIG9mCiAgICAgLy8gcGxheWJhY2sgaXMgZm9yd2FyZHMsIHRoZW4gdGhlIHVz
ZXIgYWdlbnQgbXVzdCBmb2xsb3cgdGhlc2Ugc3RlcHM6Ci0gICAgaWYgKCFpc25hbihkdXIpICYm
IGR1ciAmJiBub3cgPj0gZHVyICYmIG1fcGxheWJhY2tSYXRlID4gMCkgeworICAgIGlmICghc3Rk
Ojppc25hbihkdXIpICYmIGR1ciAmJiBub3cgPj0gZHVyICYmIG1fcGxheWJhY2tSYXRlID4gMCkg
ewogICAgICAgICAvLyBJZiB0aGUgbWVkaWEgZWxlbWVudCBoYXMgYSBsb29wIGF0dHJpYnV0ZSBz
cGVjaWZpZWQgYW5kIGRvZXMgbm90IGhhdmUgYSBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIsCiAg
ICAgICAgIGlmIChsb29wKCkgJiYgIW1fbWVkaWFDb250cm9sbGVyKSB7CiAgICAgICAgICAgICBt
X3NlbnRFbmRFdmVudCA9IGZhbHNlOwpAQCAtMzY1Myw3ICszNjUzLDcgQEAgYm9vbCBIVE1MTWVk
aWFFbGVtZW50Ojpjb3VsZFBsYXlJZkVub3VnaERhdGEoKSBjb25zdAogYm9vbCBIVE1MTWVkaWFF
bGVtZW50OjplbmRlZFBsYXliYWNrKCkgY29uc3QKIHsKICAgICBmbG9hdCBkdXIgPSBkdXJhdGlv
bigpOwotICAgIGlmICghbV9wbGF5ZXIgfHwgaXNuYW4oZHVyKSkKKyAgICBpZiAoIW1fcGxheWVy
IHx8IHN0ZDo6aXNuYW4oZHVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gNC44
LjEwLjggUGxheWluZyB0aGUgbWVkaWEgcmVzb3VyY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFD
b250cm9sbGVyLmNwcAppbmRleCA1YmY0ZjQ5MjFhYzkxYmRmNTlmMGQyNDA0MGY4MjM1YzQyYTY5
MWVjLi4xMDMxNjFiMWNiMWIxYjU1ZjVkN2RjN2NhYTgzMmFhM2FjYzU1ZTZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgZmxvYXQg
TWVkaWFDb250cm9sbGVyOjpkdXJhdGlvbigpIGNvbnN0CiAgICAgZmxvYXQgbWF4RHVyYXRpb24g
PSAwOwogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMu
c2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUVsZW1l
bnRzW2luZGV4XS0+ZHVyYXRpb24oKTsKLSAgICAgICAgaWYgKGlzbmFuKGR1cmF0aW9uKSkKKyAg
ICAgICAgaWYgKHN0ZDo6aXNuYW4oZHVyYXRpb24pKQogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIG1heER1cmF0aW9uID0gbWF4KG1heER1cmF0aW9uLCBkdXJhdGlvbik7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5jcHAKaW5kZXggOTUzZTVkYjk3OTY0Y2JjNGFkOWQ2OTk4ZjdlYzY0MmIxYjUwYTM5Ny4uZDdh
NmMyZDQ4ZWVhYTBlMThkMmMzYzRhZTY2ZTFjNjJkYzA1ODA0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0xMjUw
LDEzICsxMjUwLDEzIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjbGVhckNvbG9yKEdD
M0RmbG9hdCByLCBHQzNEZmxvYXQgZywgR0MzRGZsb2F0IGIsIEdDCiB7CiAgICAgaWYgKGlzQ29u
dGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChpc25hbihyKSkKKyAgICBpZiAo
c3RkOjppc25hbihyKSkKICAgICAgICAgciA9IDA7Ci0gICAgaWYgKGlzbmFuKGcpKQorICAgIGlm
IChzdGQ6OmlzbmFuKGcpKQogICAgICAgICBnID0gMDsKLSAgICBpZiAoaXNuYW4oYikpCisgICAg
aWYgKHN0ZDo6aXNuYW4oYikpCiAgICAgICAgIGIgPSAwOwotICAgIGlmIChpc25hbihhKSkKKyAg
ICBpZiAoc3RkOjppc25hbihhKSkKICAgICAgICAgYSA9IDE7CiAgICAgbV9jbGVhckNvbG9yWzBd
ID0gcjsKICAgICBtX2NsZWFyQ29sb3JbMV0gPSBnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2suY3BwCmluZGV4IDg5YzE2ZDU3ZDlmNWMxNzlmZDE1ZThmZjI5OGM3Njc1MTg1NTlh
MTUuLmVkMTk1NjEyMWNjYWNkNTQwOTc3NGYyZGQ5Y2MyNDJkOTQ2MmM0M2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIFRl
eHRUcmFjazo6YWRkQ3VlKFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBwcnBDdWUpCiAgICAgUmVm
UHRyPFRleHRUcmFja0N1ZT4gY3VlID0gcHJwQ3VlOwogCiAgICAgLy8gVE9ETyg5MzE0Myk6IEFk
ZCBzcGVjLWNvbXBsaWFudCBiZWhhdmlvciBmb3IgbmVnYXRpdmUgdGltZSB2YWx1ZXMuCi0gICAg
aWYgKGlzbmFuKGN1ZS0+c3RhcnRUaW1lKCkpIHx8IGlzbmFuKGN1ZS0+ZW5kVGltZSgpKSB8fCBj
dWUtPnN0YXJ0VGltZSgpIDwgMCB8fCBjdWUtPmVuZFRpbWUoKSA8IDApCisgICAgaWYgKHN0ZDo6
aXNuYW4oY3VlLT5zdGFydFRpbWUoKSkgfHwgc3RkOjppc25hbihjdWUtPmVuZFRpbWUoKSkgfHwg
Y3VlLT5zdGFydFRpbWUoKSA8IDAgfHwgY3VlLT5lbmRUaW1lKCkgPCAwKQogICAgICAgICByZXR1
cm47CiAKICAgICAvLyA0LjguMTAuMTIuNSBUZXh0IHRyYWNrIEFQSQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCmluZGV4IGYzYjkzNTM4MThlMDFiNjNkYTgzZTU3
NjllYWEzNWQ2MzljOWU1NGUuLjIyYjBiN2FmMGVjYmQ4ZTY1N2RmZWM0ZTE5NTNjMDkzMDI2MGQ2
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKQEAgLTI3
Nyw3ICsyNzcsNyBAQCB2b2lkIFRleHRUcmFja0N1ZTo6c2V0SWQoY29uc3QgU3RyaW5nJiBpZCkK
IHZvaWQgVGV4dFRyYWNrQ3VlOjpzZXRTdGFydFRpbWUoZG91YmxlIHZhbHVlLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKICAgICAvLyBOYU4sIEluZmluaXR5IGFuZCAtSW5maW5pdHkgdmFsdWVzIHNo
b3VsZCB0cmlnZ2VyIGEgVHlwZUVycm9yLgotICAgIGlmIChpc2luZih2YWx1ZSkgfHwgaXNuYW4o
dmFsdWUpKSB7CisgICAgaWYgKHN0ZDo6aXNpbmYodmFsdWUpIHx8IHN0ZDo6aXNuYW4odmFsdWUp
KSB7CiAgICAgICAgIGVjID0gVHlwZUVycm9yOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
Mjk0LDcgKzI5NCw3IEBAIHZvaWQgVGV4dFRyYWNrQ3VlOjpzZXRTdGFydFRpbWUoZG91YmxlIHZh
bHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHZvaWQgVGV4dFRyYWNrQ3VlOjpzZXRFbmRUaW1lKGRv
dWJsZSB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgLy8gTmFOLCBJbmZpbml0eSBh
bmQgLUluZmluaXR5IHZhbHVlcyBzaG91bGQgdHJpZ2dlciBhIFR5cGVFcnJvci4KLSAgICBpZiAo
aXNpbmYodmFsdWUpIHx8IGlzbmFuKHZhbHVlKSkgeworICAgIGlmIChzdGQ6OmlzaW5mKHZhbHVl
KSB8fCBzdGQ6OmlzbmFuKHZhbHVlKSkgewogICAgICAgICBlYyA9IFR5cGVFcnJvcjsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAyMmY0NDhj
NjI4MjkzODIwMzgwNTBhMjc0Y2UxNjhlODlhOGI1ZjUwLi4zYzJhYmNjM2YzYTgwMTI5MTkxNTEy
NzNhM2FkMDUzNmNkZjMxNWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0zMzAs
MTMgKzMzMCwxMyBAQCBGbG9hdFJlY3QgRE9NV2luZG93OjphZGp1c3RXaW5kb3dSZWN0KFBhZ2Uq
IHBhZ2UsIGNvbnN0IEZsb2F0UmVjdCYgcGVuZGluZ0NoYW5nZQogICAgIEFTU0VSVChpc2Zpbml0
ZSh3aW5kb3cuaGVpZ2h0KCkpKTsKIAogICAgIC8vIFVwZGF0ZSB3aW5kb3cgdmFsdWVzIGlmIG5l
dyByZXF1ZXN0ZWQgdmFsdWVzIGFyZSBub3QgTmFOLgotICAgIGlmICghaXNuYW4ocGVuZGluZ0No
YW5nZXMueCgpKSkKKyAgICBpZiAoIXN0ZDo6aXNuYW4ocGVuZGluZ0NoYW5nZXMueCgpKSkKICAg
ICAgICAgd2luZG93LnNldFgocGVuZGluZ0NoYW5nZXMueCgpKTsKLSAgICBpZiAoIWlzbmFuKHBl
bmRpbmdDaGFuZ2VzLnkoKSkpCisgICAgaWYgKCFzdGQ6OmlzbmFuKHBlbmRpbmdDaGFuZ2VzLnko
KSkpCiAgICAgICAgIHdpbmRvdy5zZXRZKHBlbmRpbmdDaGFuZ2VzLnkoKSk7Ci0gICAgaWYgKCFp
c25hbihwZW5kaW5nQ2hhbmdlcy53aWR0aCgpKSkKKyAgICBpZiAoIXN0ZDo6aXNuYW4ocGVuZGlu
Z0NoYW5nZXMud2lkdGgoKSkpCiAgICAgICAgIHdpbmRvdy5zZXRXaWR0aChwZW5kaW5nQ2hhbmdl
cy53aWR0aCgpKTsKLSAgICBpZiAoIWlzbmFuKHBlbmRpbmdDaGFuZ2VzLmhlaWdodCgpKSkKKyAg
ICBpZiAoIXN0ZDo6aXNuYW4ocGVuZGluZ0NoYW5nZXMuaGVpZ2h0KCkpKQogICAgICAgICB3aW5k
b3cuc2V0SGVpZ2h0KHBlbmRpbmdDaGFuZ2VzLmhlaWdodCgpKTsKIAogICAgIEZsb2F0U2l6ZSBt
aW5pbXVtU2l6ZSA9IHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+bWluaW11bVdpbmRvd1NpemUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAKaW5kZXggN2MxZTg2MTNiNzVl
NmMyNTdiMTRlNzg3MDMzYmJmZTY2YWI2MDViNC4uZDkzNDIwMTYxYTEwM2UwZjM1ZjdlYzEzMzBi
ZGI4NTU4MjhjNTIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0
dXJlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAKQEAg
LTIyNCw3ICsyMjQsNyBAQCBmbG9hdCBXaW5kb3dGZWF0dXJlczo6ZmxvYXRGZWF0dXJlKGNvbnN0
IERpYWxvZ0ZlYXR1cmVzTWFwJiBmZWF0dXJlcywgY29uc3QgY2hhcgogICAgIC8vIHJldHVybiB0
aGUgbnVtYmVyIDAgYW5kIGZhbHNlIGZvciBvay4gQnV0ICIwcSIgc2hvdWxkIHlpZWxkIHRoZSBt
aW5pbXVtIHJhdGhlciB0aGFuIHRoZSBkZWZhdWx0LgogICAgIGJvb2wgb2s7CiAgICAgZG91Ymxl
IHBhcnNlZE51bWJlciA9IGl0LT52YWx1ZS50b0RvdWJsZSgmb2spOwotICAgIGlmICgocGFyc2Vk
TnVtYmVyID09IDAgJiYgIW9rKSB8fCBpc25hbihwYXJzZWROdW1iZXIpKQorICAgIGlmICgoIXBh
cnNlZE51bWJlciAmJiAhb2spIHx8IHN0ZDo6aXNuYW4ocGFyc2VkTnVtYmVyKSkKICAgICAgICAg
cmV0dXJuIGRlZmF1bHRWYWx1ZTsKICAgICBpZiAocGFyc2VkTnVtYmVyIDwgbWluIHx8IG1heCA8
PSBtaW4pCiAgICAgICAgIHJldHVybiBtaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nh
bGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4IDU3NDEzZmJmZWIxYTg4OTc5YTI0MzdmNWI2MDNjZDdh
NGI1OWRhNGEuLmZlNzU3MWQyMjgxMDgwMGZiOGQ5NjhiNGVkZmY4YTZjYzI1YTZkMWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC02NSw3ICs2
NSw3IEBAIGZsb2F0IENhbGN1bGF0aW9uVmFsdWU6OmV2YWx1YXRlKGZsb2F0IG1heFZhbHVlKSBj
b25zdAogICAgIGZsb2F0IHJlc3VsdCA9IG1fdmFsdWUtPmV2YWx1YXRlKG1heFZhbHVlKTsKICAg
ICAvLyBGSVhNRSBjYWxjIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzgwNDExIDogcmVzdWx0IGlzIE5h
TiB3aGVuIHRoZXJlIGlzIGEgZGl2aXNpb24gCiAgICAgLy8gYnkgemVybyB3aGljaCBpc24ndCBm
b3VuZCBhdCBwYXJzZSB0aW1lLiAKLSAgICBpZiAoaXNuYW4ocmVzdWx0KSkKKyAgICBpZiAoc3Rk
Ojppc25hbihyZXN1bHQpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gbV9pc05vbk5l
Z2F0aXZlICYmIHJlc3VsdCA8IDAgPyAwIDogcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
ZWNpbWFsLmNwcAppbmRleCA4YWJhYWI2NDBjNGRjODVjNmUwODU4MzY5OTZkYjlhZDQyMjAxOWMw
Li4wYjczZTMwNjQ1ZGMyYjUxZjdkZTI2ODU5MDM2MTRkYzljMGE5ZTk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EZWNpbWFsLmNwcApAQCAtNjgzLDcgKzY4Myw3IEBAIERlY2ltYWwgRGVjaW1hbDo6
ZnJvbURvdWJsZShkb3VibGUgZG91YmxlVmFsdWUpCiAgICAgaWYgKGlzZmluaXRlKGRvdWJsZVZh
bHVlKSkKICAgICAgICAgcmV0dXJuIGZyb21TdHJpbmcoU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VD
TUFTY3JpcHQoZG91YmxlVmFsdWUpKTsKIAotICAgIGlmIChpc2luZihkb3VibGVWYWx1ZSkpCisg
ICAgaWYgKHN0ZDo6aXNpbmYoZG91YmxlVmFsdWUpKQogICAgICAgICByZXR1cm4gaW5maW5pdHko
ZG91YmxlVmFsdWUgPCAwID8gTmVnYXRpdmUgOiBQb3NpdGl2ZSk7CiAKICAgICByZXR1cm4gbmFu
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcAppbmRleCBhNWEzNTU4YWE1MjRiMWJmODQ3
NzlkYTAyNjExNTE2MDJkNGUzM2UyLi5iNTNmOGZhZDk0MDNkODJiOWE0NjI3ODQzZjEzNjAxMzdk
NDY3ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAKQEAgLTI0MCw3ICsyNDAsNyBA
QCBmbG9hdCBMZW5ndGg6Om5vbk5hbkNhbGN1bGF0ZWRWYWx1ZShpbnQgbWF4VmFsdWUpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKGlzQ2FsY3VsYXRlZCgpKTsKICAgICBmbG9hdCByZXN1bHQgPSBjYWxj
dWxhdGlvblZhbHVlKCktPmV2YWx1YXRlKG1heFZhbHVlKTsKLSAgICBpZiAoaXNuYW4ocmVzdWx0
KSkKKyAgICBpZiAoc3RkOjppc25hbihyZXN1bHQpKQogICAgICAgICByZXR1cm4gMDsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9SZXNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVk
aW9SZXNhbXBsZXIuY3BwCmluZGV4IDFhOWY4MWU3YTc0M2FhNjJmZTEyNDVlZjQ4ZjNkNjRlZmZh
MjI1YjkuLmE2MDJjNzgzM2QxZmI2NjIwZWY4YjM1YTdkM2MzMTM0ZGRlOWVjZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAKQEAgLTEx
MCw3ICsxMTAsNyBAQCB2b2lkIEF1ZGlvUmVzYW1wbGVyOjpwcm9jZXNzKEF1ZGlvU291cmNlUHJv
dmlkZXIqIHByb3ZpZGVyLCBBdWRpb0J1cyogZGVzdGluYXRpbwogCiB2b2lkIEF1ZGlvUmVzYW1w
bGVyOjpzZXRSYXRlKGRvdWJsZSByYXRlKQogewotICAgIGlmIChpc25hbihyYXRlKSB8fCBpc2lu
ZihyYXRlKSB8fCByYXRlIDw9IDAuMCkKKyAgICBpZiAoc3RkOjppc25hbihyYXRlKSB8fCBzdGQ6
OmlzaW5mKHJhdGUpIHx8IHJhdGUgPD0gMC4wKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAg
bV9yYXRlID0gbWluKEF1ZGlvUmVzYW1wbGVyOjpNYXhSYXRlLCByYXRlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJu
ZWwuY3BwCmluZGV4IDlkNGUzMGNmYmEyZjY1NTViNDA2YmE1MzZjNDg0ZjAzZjRhZDIzMTYuLjRh
YmU4ZTczZWY0ZjhhZjI2YzJjNWMyNWE5ZTVmY2ZjNjk3MWFkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVs
LmNwcApAQCAtMjg2LDkgKzI4Niw5IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpw
cm9jZXNzKGZsb2F0KiBzb3VyY2VDaGFubmVsc1tdLAogICAgICAgICAvLyB+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn4KIAogICAgICAgICAvLyBGaXggZ3JlbWxpbnMuCi0gICAgICAg
IGlmIChpc25hbihtX2RldGVjdG9yQXZlcmFnZSkpCisgICAgICAgIGlmIChzdGQ6OmlzbmFuKG1f
ZGV0ZWN0b3JBdmVyYWdlKSkKICAgICAgICAgICAgIG1fZGV0ZWN0b3JBdmVyYWdlID0gMTsKLSAg
ICAgICAgaWYgKGlzaW5mKG1fZGV0ZWN0b3JBdmVyYWdlKSkKKyAgICAgICAgaWYgKHN0ZDo6aXNp
bmYobV9kZXRlY3RvckF2ZXJhZ2UpKQogICAgICAgICAgICAgbV9kZXRlY3RvckF2ZXJhZ2UgPSAx
OwogCiAgICAgICAgIGZsb2F0IGRlc2lyZWRHYWluID0gbV9kZXRlY3RvckF2ZXJhZ2U7CkBAIC0z
MTQsOSArMzE0LDkgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MoZmxv
YXQqIHNvdXJjZUNoYW5uZWxzW10sCiAgICAgICAgICAgICBtX21heEF0dGFja0NvbXByZXNzaW9u
RGlmZkRiID0gLTE7CiAKICAgICAgICAgICAgIC8vIEZpeCBncmVtbGlucy4KLSAgICAgICAgICAg
IGlmIChpc25hbihjb21wcmVzc2lvbkRpZmZEYikpCisgICAgICAgICAgICBpZiAoc3RkOjppc25h
bihjb21wcmVzc2lvbkRpZmZEYikpCiAgICAgICAgICAgICAgICAgY29tcHJlc3Npb25EaWZmRGIg
PSAtMTsKLSAgICAgICAgICAgIGlmIChpc2luZihjb21wcmVzc2lvbkRpZmZEYikpCisgICAgICAg
ICAgICBpZiAoc3RkOjppc2luZihjb21wcmVzc2lvbkRpZmZEYikpCiAgICAgICAgICAgICAgICAg
Y29tcHJlc3Npb25EaWZmRGIgPSAtMTsKIAogICAgICAgICAgICAgLy8gQWRhcHRpdmUgcmVsZWFz
ZSAtIGhpZ2hlciBjb21wcmVzc2lvbiAobG93ZXIgY29tcHJlc3Npb25EaWZmRGIpICByZWxlYXNl
cyBmYXN0ZXIuCkBAIC0zNDIsOSArMzQyLDkgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJu
ZWw6OnByb2Nlc3MoZmxvYXQqIHNvdXJjZUNoYW5uZWxzW10sCiAgICAgICAgICAgICAvLyBBdHRh
Y2sgbW9kZSAtIGNvbXByZXNzaW9uRGlmZkRiIHNob3VsZCBiZSBwb3NpdGl2ZSBkQgogCiAgICAg
ICAgICAgICAvLyBGaXggZ3JlbWxpbnMuCi0gICAgICAgICAgICBpZiAoaXNuYW4oY29tcHJlc3Np
b25EaWZmRGIpKQorICAgICAgICAgICAgaWYgKHN0ZDo6aXNuYW4oY29tcHJlc3Npb25EaWZmRGIp
KQogICAgICAgICAgICAgICAgIGNvbXByZXNzaW9uRGlmZkRiID0gMTsKLSAgICAgICAgICAgIGlm
IChpc2luZihjb21wcmVzc2lvbkRpZmZEYikpCisgICAgICAgICAgICBpZiAoc3RkOjppc2luZihj
b21wcmVzc2lvbkRpZmZEYikpCiAgICAgICAgICAgICAgICAgY29tcHJlc3Npb25EaWZmRGIgPSAx
OwogCiAgICAgICAgICAgICAvLyBBcyBsb25nIGFzIHdlJ3JlIHN0aWxsIGluIGF0dGFjayBtb2Rl
LCB1c2UgYSByYXRlIGJhc2VkIG9mZgpAQCAtNDEwLDkgKzQxMCw5IEBAIHZvaWQgRHluYW1pY3ND
b21wcmVzc29yS2VybmVsOjpwcm9jZXNzKGZsb2F0KiBzb3VyY2VDaGFubmVsc1tdLAogICAgICAg
ICAgICAgICAgIGRldGVjdG9yQXZlcmFnZSA9IG1pbigxLjBmLCBkZXRlY3RvckF2ZXJhZ2UpOwog
CiAgICAgICAgICAgICAgICAgLy8gRml4IGdyZW1saW5zLgotICAgICAgICAgICAgICAgIGlmIChp
c25hbihkZXRlY3RvckF2ZXJhZ2UpKQorICAgICAgICAgICAgICAgIGlmIChzdGQ6OmlzbmFuKGRl
dGVjdG9yQXZlcmFnZSkpCiAgICAgICAgICAgICAgICAgICAgIGRldGVjdG9yQXZlcmFnZSA9IDE7
Ci0gICAgICAgICAgICAgICAgaWYgKGlzaW5mKGRldGVjdG9yQXZlcmFnZSkpCisgICAgICAgICAg
ICAgICAgaWYgKHN0ZDo6aXNpbmYoZGV0ZWN0b3JBdmVyYWdlKSkKICAgICAgICAgICAgICAgICAg
ICAgZGV0ZWN0b3JBdmVyYWdlID0gMTsKIAogICAgICAgICAgICAgICAgIC8vIEV4cG9uZW50aWFs
IGFwcHJvYWNoIHRvIGRlc2lyZWQgZ2Fpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9S
ZXZlcmIuY3BwCmluZGV4IGNhNzMxN2QxZWIxZTE0YWVjYzE2YmNhMzcwNThiNzU4MGM2ODE4OTIu
LjQyODExMzY0NzkyZWU2N2M3OGFhNWE3M2NjNTVkNjU5M2FiN2I4NDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcApAQCAtNzMsNyArNzMsNyBAQCBzdGF0aWMgZmxv
YXQgY2FsY3VsYXRlTm9ybWFsaXphdGlvblNjYWxlKEF1ZGlvQnVzKiByZXNwb25zZSkKICAgICBw
b3dlciA9IHNxcnQocG93ZXIgLyAobnVtYmVyT2ZDaGFubmVscyAqIGxlbmd0aCkpOwogCiAgICAg
Ly8gUHJvdGVjdCBhZ2FpbnN0IGFjY2lkZW50YWwgb3ZlcmxvYWQKLSAgICBpZiAoaXNpbmYocG93
ZXIpIHx8IGlzbmFuKHBvd2VyKSB8fCBwb3dlciA8IE1pblBvd2VyKQorICAgIGlmIChzdGQ6Omlz
aW5mKHBvd2VyKSB8fCBzdGQ6OmlzbmFuKHBvd2VyKSB8fCBwb3dlciA8IE1pblBvd2VyKQogICAg
ICAgICBwb3dlciA9IE1pblBvd2VyOwogCiAgICAgZmxvYXQgc2NhbGUgPSAxIC8gcG93ZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDdiNzNlMmM1NDMz
MTY1ZDhmYTJjYzM4MjY4ZjAwZDgzYjdmODFmNzcuLjc2MzdhOGVlYTk1ZjYzMjMwMDZhZThlMTQy
YTdlZDRlNjk1NzFiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
Y3BwCkBAIC0yMTEsNyArMjExLDcgQEAgZmxvYXQgRm9udDo6d2lkdGgoY29uc3QgVGV4dFJ1biYg
cnVuLCBIYXNoU2V0PGNvbnN0IFNpbXBsZUZvbnREYXRhKj4qIGZhbGxiYWNrRm8KICAgICBib29s
IGhhc0tlcm5pbmdPckxpZ2F0dXJlcyA9IHR5cGVzZXR0aW5nRmVhdHVyZXMoKSAmIChLZXJuaW5n
IHwgTGlnYXR1cmVzKTsKICAgICBib29sIGhhc1dvcmRTcGFjaW5nT3JMZXR0ZXJTcGFjaW5nID0g
d29yZFNwYWNpbmcoKSB8IGxldHRlclNwYWNpbmcoKTsKICAgICBmbG9hdCogY2FjaGVFbnRyeSA9
IG1fZm9udEZhbGxiYWNrTGlzdC0+d2lkdGhDYWNoZSgpLmFkZChydW4sIHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZmxvYXQ+OjpxdWlldF9OYU4oKSwgaGFzS2VybmluZ09yTGlnYXR1cmVzLCBoYXNXb3Jk
U3BhY2luZ09yTGV0dGVyU3BhY2luZywgZ2x5cGhPdmVyZmxvdyk7Ci0gICAgaWYgKGNhY2hlRW50
cnkgJiYgIWlzbmFuKCpjYWNoZUVudHJ5KSkKKyAgICBpZiAoY2FjaGVFbnRyeSAmJiAhc3RkOjpp
c25hbigqY2FjaGVFbnRyeSkpCiAgICAgICAgIHJldHVybiAqY2FjaGVFbnRyeTsKIAogICAgIGZs
b2F0IHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb24uaAppbmRleCBhNmE5Y2ZkMzE0MTc4NjIyNDYxMGViMWU2YTM5OTkyYzE5ZmJk
NzkzLi43YmJhYTUxZWRhMTg2ZGRmMjMyNzFlODZmNmE1ODMxNjYxYWE2ZmUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCkBAIC0y
NDAsNyArMjQwLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0RGVsYXlDYWxsYmFja3MoYm9v
bCkgY29uc3Q7CiAgICAgdm9pZCBzZXRJZ25vcmVMb2FkU3RhdGVDaGFuZ2VzKGJvb2wgZGVsYXkp
IHsgbV9pZ25vcmVMb2FkU3RhdGVDaGFuZ2VzID0gZGVsYXk7IH0KICAgICB2b2lkIHNldE5hdHVy
YWxTaXplKEludFNpemUpOwotICAgIGJvb2wgaXNMaXZlU3RyZWFtKCkgY29uc3QgeyByZXR1cm4g
aXNpbmYoZHVyYXRpb24oKSk7IH0KKyAgICBib29sIGlzTGl2ZVN0cmVhbSgpIGNvbnN0IHsgcmV0
dXJuIHN0ZDo6aXNpbmYoZHVyYXRpb24oKSk7IH0KIAogICAgIGVudW0gTWVkaWFSZW5kZXJpbmdN
b2RlIHsgTWVkaWFSZW5kZXJpbmdOb25lLCBNZWRpYVJlbmRlcmluZ1RvQ29udGV4dCwgTWVkaWFS
ZW5kZXJpbmdUb0xheWVyIH07CiAgICAgTWVkaWFSZW5kZXJpbmdNb2RlIGN1cnJlbnRSZW5kZXJp
bmdNb2RlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvTG9vcEJsaW5uTWF0aFV0aWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9Mb29wQmxpbm5NYXRoVXRpbHMuY3BwCmluZGV4IGJhZjFjOTY4NTkyZWI1
ZGExYmJmOWIwOTM1NTMxZjIxM2Q2ZDhlNGIuLjMyYTU0ZmI5MGRiYjc1MjRlOTliYTMwOTg0YmVj
MWIyMTdjZDdiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9Mb29wQmxpbm5NYXRoVXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9Mb29wQmxpbm5NYXRoVXRpbHMuY3BwCkBAIC0zMzYsNyArMzM2LDcgQEAg
Ym9vbCBzYWZlVW5pdERpdmlkZShmbG9hdCBudW1lcmF0b3IsIGZsb2F0IGRlbm9taW5hdG9yLCBm
bG9hdCYgcmF0aW8pCiAgICAgaWYgKCFudW1lcmF0b3IgfHwgIWRlbm9taW5hdG9yIHx8IG51bWVy
YXRvciA+PSBkZW5vbWluYXRvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGZsb2F0IHIg
PSBudW1lcmF0b3IgLyBkZW5vbWluYXRvcjsKLSAgICBpZiAoaXNuYW4ocikpCisgICAgaWYgKHN0
ZDo6aXNuYW4ocikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBBU1NFUlQociA+PSAwICYm
IHIgPCAxKTsKICAgICBpZiAoIXIpIC8vIGNhdGNoIHVuZGVyZmxvdyBpZiBudW1lcmF0b3IgPDw8
PCBkZW5vbWluYXRvcgpAQCAtMzU5LDcgKzM1OSw3IEBAIGludCBmaW5kVW5pdFF1YWRSb290cyhm
bG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBjLCBmbG9hdCByb290c1syXSkKICAgICAgICAgcmV0dXJu
IHNhZmVVbml0RGl2aWRlKC1jLCBiLCByb290c1swXSkgPyAxIDogMDsKIAogICAgIGZsb2F0IGRp
c2NyaW1pbmFudCA9IGIqYiAtIDQqYSpjOwotICAgIGlmIChkaXNjcmltaW5hbnQgPCAwIHx8IGlz
bmFuKGRpc2NyaW1pbmFudCkpIC8vIGNvbXBsZXggcm9vdHMKKyAgICBpZiAoZGlzY3JpbWluYW50
IDwgMCB8fCBzdGQ6OmlzbmFuKGRpc2NyaW1pbmFudCkpIC8vIGNvbXBsZXggcm9vdHMKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgZGlzY3JpbWluYW50ID0gc3FydGYoZGlzY3JpbWluYW50KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA5
MTk5YzRmMDgzMTM0YjZhNWNkMWI0NzE0NmNkMTIyMzZiNWRjZmYwLi4yYWRmZTc0ZmJkYjFmOGIy
NjAzNzNiMWQ0NmExYzA4NTFjNTc0NjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtNTg3LDcgKzU4Nyw3IEBAIFBhc3NSZWZQdHI8VGlt
ZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpidWZmZXJlZCgpIGNvbnN0CiAK
ICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigwLCAxMCwgMzEpCiAgICAgZmxvYXQgbWVkaWFEdXJhdGlv
bihkdXJhdGlvbigpKTsKLSAgICBpZiAoIW1lZGlhRHVyYXRpb24gfHwgaXNpbmYobWVkaWFEdXJh
dGlvbikpCisgICAgaWYgKCFtZWRpYUR1cmF0aW9uIHx8IHN0ZDo6aXNpbmYobWVkaWFEdXJhdGlv
bikpCiAgICAgICAgIHJldHVybiB0aW1lUmFuZ2VzLnJlbGVhc2UoKTsKIAogICAgIEdzdFF1ZXJ5
KiBxdWVyeSA9IGdzdF9xdWVyeV9uZXdfYnVmZmVyaW5nKEdTVF9GT1JNQVRfUEVSQ0VOVCk7CkBA
IC04MDUsNyArODA1LDcgQEAgZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjptYXhU
aW1lU2Vla2FibGUoKSBjb25zdAogCiAgICAgTE9HX01FRElBX01FU1NBR0UoIm1heFRpbWVTZWVr
YWJsZSIpOwogICAgIC8vIGluZmluaXRlIGR1cmF0aW9uIG1lYW5zIGxpdmUgc3RyZWFtCi0gICAg
aWYgKGlzaW5mKGR1cmF0aW9uKCkpKQorICAgIGlmIChzdGQ6OmlzaW5mKGR1cmF0aW9uKCkpKQog
ICAgICAgICByZXR1cm4gMC4wZjsKIAogICAgIHJldHVybiBkdXJhdGlvbigpOwpAQCAtMTI3OCwx
NSArMTI3OCwxNSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y2FjaGVEdXJh
dGlvbigpCiAgICAgICAgIC8vIERvbid0IHNldCBtX21lZGlhRHVyYXRpb25Lbm93biB5ZXQgaWYg
dGhlIHBpcGVsaW5lIGlzIG5vdAogICAgICAgICAvLyBwYXVzZWQuIFRoaXMgYWxsb3dzIGR1cmF0
aW9uKCkgcXVlcnkgdG8gZmFpbCBhdCBsZWFzdCBvbmNlCiAgICAgICAgIC8vIGJlZm9yZSBwbGF5
YmFjayBzdGFydHMgYW5kIGR1cmF0aW9uIGJlY29tZXMga25vd24uCi0gICAgICAgIGlmICghaXNp
bmYobmV3RHVyYXRpb24pKQorICAgICAgICBpZiAoIXN0ZDo6aXNpbmYobmV3RHVyYXRpb24pKQog
ICAgICAgICAgICAgbV9tZWRpYUR1cmF0aW9uID0gbmV3RHVyYXRpb247CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgbV9tZWRpYUR1cmF0aW9uS25vd24gPSAhaXNpbmYobmV3RHVyYXRpb24pOworICAg
ICAgICBtX21lZGlhRHVyYXRpb25Lbm93biA9ICFzdGQ6OmlzaW5mKG5ld0R1cmF0aW9uKTsKICAg
ICAgICAgaWYgKG1fbWVkaWFEdXJhdGlvbktub3duKQogICAgICAgICAgICAgbV9tZWRpYUR1cmF0
aW9uID0gbmV3RHVyYXRpb247CiAgICAgfQogCi0gICAgaWYgKCFpc2luZihuZXdEdXJhdGlvbikp
CisgICAgaWYgKCFzdGQ6OmlzaW5mKG5ld0R1cmF0aW9uKSkKICAgICAgICAgbV9tZWRpYUR1cmF0
aW9uID0gbmV3RHVyYXRpb247CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQppbmRl
eCA1NmUzMzRhNmE4ZGM3N2YxODc1NGY2MWE1OGI1NzA4YWRiYjVjYjYyLi5lNTQ2NDhmOTQ2NzE2
ODZlYmQwODY5NTliNzc4ZDc0NmQ0NTVkMzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0
Lm1tCkBAIC05NTcsNyArOTU3LDcgQEAgZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Om1h
eFRpbWVTZWVrYWJsZSgpIGNvbnN0CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gaW5maW5p
dGUgZHVyYXRpb24gbWVhbnMgbGl2ZSBzdHJlYW0KLSAgICBpZiAoaXNpbmYoZHVyYXRpb24oKSkp
CisgICAgaWYgKHN0ZDo6aXNpbmYoZHVyYXRpb24oKSkpCiAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgcmV0dXJuIHdrUVRNb3ZpZU1heFRpbWVTZWVrYWJsZShtX3F0TW92aWUuZ2V0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVWZXJ0aWNhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCmluZGV4IDY3MDEzYjFhYzZmNjA2M2U2YjNh
OGYyOTBhYjk4OGUxZjgyODQ0MTAuLjM1YWU3MWRkN2RmZGI2ZjE4YmZjZGM3MzEyYjUxN2Q5MjM0
NmY4ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKQEAgLTUzMyw3ICs1
MzMsNyBAQCB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpnZXRWZXJ0aWNhbFRyYW5zbGF0aW9u
c0ZvckdseXBocyhjb25zdCBTaW1wbGVGb250RGF0YQogICAgICAgICAgICAgICAgIG91dFhZQXJy
YXlbMV0gPSAtdmVydE9yaWdpbllGVW5pdCAqIHNpemVQZXJVbml0OwogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGlzbmFuKGRlZmF1bHRW
ZXJ0T3JpZ2luWSkpCisgICAgICAgICAgICBpZiAoc3RkOjppc25hbihkZWZhdWx0VmVydE9yaWdp
blkpKQogICAgICAgICAgICAgICAgIGRlZmF1bHRWZXJ0T3JpZ2luWSA9IC1tX2RlZmF1bHRWZXJ0
T3JpZ2luWSAqIHNpemVQZXJVbml0OwogICAgICAgICAgICAgb3V0WFlBcnJheVsxXSA9IGRlZmF1
bHRWZXJ0T3JpZ2luWTsKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJp
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
Zm9ybWF0aW9uTWF0cml4LmNwcAppbmRleCBiZmJjMzU1ZmYyZGRiOGFiZjcxZWYxYTc3YzNlZjBh
OWQ1NGYwMjI5Li5iY2U2Nzc3M2E2MWU3YzAxNjFlNGI5MzNkMGQ0OTVlYjljOGU5YjM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
Zm9ybWF0aW9uTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcApAQCAtNjE5LDcgKzYxOSw3IEBA
IEZsb2F0UXVhZCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cHJvamVjdFF1YWQoY29uc3QgRmxvYXRR
dWFkJiBxLCBib29sKiBjbGFtcGVkKSBjCiAKIHN0YXRpYyBmbG9hdCBjbGFtcEVkZ2VWYWx1ZShm
bG9hdCBmKQogewotICAgIEFTU0VSVCghaXNuYW4oZikpOworICAgIEFTU0VSVCghc3RkOjppc25h
bihmKSk7CiAgICAgcmV0dXJuIG1pbjxmbG9hdD4obWF4PGZsb2F0PihmLCAtTGF5b3V0VW5pdDo6
bWF4KCkgLyAyKSwgTGF5b3V0VW5pdDo6bWF4KCkgLyAyKTsKIH0KIApAQCAtNjMxLDEzICs2MzEs
MTMgQEAgTGF5b3V0UmVjdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6Y2xhbXBlZEJvdW5kc09mUHJv
amVjdGVkUXVhZChjb25zdCBGbG9hdFF1YWQmIHEKICAgICBmbG9hdCB0b3AgPSBjbGFtcEVkZ2VW
YWx1ZShmbG9vcmYobWFwcGVkUXVhZEJvdW5kcy55KCkpKTsKIAogICAgIGZsb2F0IHJpZ2h0Owot
ICAgIGlmIChpc2luZihtYXBwZWRRdWFkQm91bmRzLngoKSkgJiYgaXNpbmYobWFwcGVkUXVhZEJv
dW5kcy53aWR0aCgpKSkKKyAgICBpZiAoc3RkOjppc2luZihtYXBwZWRRdWFkQm91bmRzLngoKSkg
JiYgc3RkOjppc2luZihtYXBwZWRRdWFkQm91bmRzLndpZHRoKCkpKQogICAgICAgICByaWdodCA9
IExheW91dFVuaXQ6Om1heCgpIC8gMjsKICAgICBlbHNlCiAgICAgICAgIHJpZ2h0ID0gY2xhbXBF
ZGdlVmFsdWUoY2VpbGYobWFwcGVkUXVhZEJvdW5kcy5tYXhYKCkpKTsKIAogICAgIGZsb2F0IGJv
dHRvbTsKLSAgICBpZiAoaXNpbmYobWFwcGVkUXVhZEJvdW5kcy55KCkpICYmIGlzaW5mKG1hcHBl
ZFF1YWRCb3VuZHMuaGVpZ2h0KCkpKQorICAgIGlmIChzdGQ6OmlzaW5mKG1hcHBlZFF1YWRCb3Vu
ZHMueSgpKSAmJiBzdGQ6OmlzaW5mKG1hcHBlZFF1YWRCb3VuZHMuaGVpZ2h0KCkpKQogICAgICAg
ICBib3R0b20gPSBMYXlvdXRVbml0OjptYXgoKSAvIDI7CiAgICAgZWxzZQogICAgICAgICBib3R0
b20gPSBjbGFtcEVkZ2VWYWx1ZShjZWlsZihtYXBwZWRRdWFkQm91bmRzLm1heFkoKSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNl
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9u
c2VCYXNlLmNwcAppbmRleCBmMzgzNDVmM2Q3MzQ5MGY0ZjA1ZjljZWEzMGU0MjUwYWZmOWY2MWQ4
Li5hZTQ2OTA2Mjc4OTUzM2IzYmJhMGRlNmRiNWQ4YmI2N2EzZjA2MTNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNl
LmNwcApAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnBhcnNl
Q2FjaGVDb250cm9sRGlyZWN0aXZlcygpIGNvbnN0CiAgICAgICAgICAgICBlbHNlIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShkaXJlY3RpdmVzW2ldLmZpcnN0LCBtdXN0UmV2YWxpZGF0ZURpcmVjdGl2
ZSkpCiAgICAgICAgICAgICAgICAgbV9jYWNoZUNvbnRyb2xDb250YWluc011c3RSZXZhbGlkYXRl
ID0gdHJ1ZTsKICAgICAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGRpcmVjdGl2
ZXNbaV0uZmlyc3QsIG1heEFnZURpcmVjdGl2ZSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWlz
bmFuKG1fY2FjaGVDb250cm9sTWF4QWdlKSkgeworICAgICAgICAgICAgICAgIGlmICghc3RkOjpp
c25hbihtX2NhY2hlQ29udHJvbE1heEFnZSkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRmly
c3QgbWF4LWFnZSBkaXJlY3RpdmUgd2lucyBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgb25lcy4KICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHNDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sc0Nocm9taXVt
LmNwcAppbmRleCAwNDUxZmJkZDIxZjA4ZWIzMWM2OTNiYjhiYzEyNWFiMmFiMjJkYTg3Li5kNTA5
YzQ4YTA3NTNlMTQ2M2VmYjU3MjI5Yzk4NzYxYTQ5MTU4NzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sc0Nocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sc0Nocm9taXVtLmNwcApA
QCAtMjE0LDEzICsyMTQsMTMgQEAgc3RhdGljIGJvb2wgcGFpbnRNZWRpYVNsaWRlcihSZW5kZXJP
YmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGMKICAgICBSZWZQdHI8
VGltZVJhbmdlcz4gYnVmZmVyZWRUaW1lUmFuZ2VzID0gbWVkaWFFbGVtZW50LT5idWZmZXJlZCgp
OwogICAgIGZsb2F0IGR1cmF0aW9uID0gbWVkaWFFbGVtZW50LT5kdXJhdGlvbigpOwogICAgIGZs
b2F0IGN1cnJlbnRUaW1lID0gbWVkaWFFbGVtZW50LT5jdXJyZW50VGltZSgpOwotICAgIGlmIChp
c25hbihkdXJhdGlvbikgfHwgaXNpbmYoZHVyYXRpb24pIHx8ICFkdXJhdGlvbiB8fCBpc25hbihj
dXJyZW50VGltZSkpCisgICAgaWYgKHN0ZDo6aXNuYW4oZHVyYXRpb24pIHx8IHN0ZDo6aXNpbmYo
ZHVyYXRpb24pIHx8ICFkdXJhdGlvbiB8fCBzdGQ6OmlzbmFuKGN1cnJlbnRUaW1lKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVmZmVyZWRU
aW1lUmFuZ2VzLT5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIGZsb2F0IHN0YXJ0ID0gYnVmZmVy
ZWRUaW1lUmFuZ2VzLT5zdGFydChpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAgZmxv
YXQgZW5kID0gYnVmZmVyZWRUaW1lUmFuZ2VzLT5lbmQoaSwgQVNTRVJUX05PX0VYQ0VQVElPTik7
Ci0gICAgICAgIGlmIChpc25hbihzdGFydCkgfHwgaXNuYW4oZW5kKSB8fCBzdGFydCA+IGN1cnJl
bnRUaW1lIHx8IGVuZCA8IGN1cnJlbnRUaW1lKQorICAgICAgICBpZiAoc3RkOjppc25hbihzdGFy
dCkgfHwgc3RkOjppc25hbihlbmQpIHx8IHN0YXJ0ID4gY3VycmVudFRpbWUgfHwgZW5kIDwgY3Vy
cmVudFRpbWUpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaW50IHN0YXJ0UG9zaXRp
b24gPSBpbnQoc3RhcnQgKiByZWN0LndpZHRoKCkgLyBkdXJhdGlvbik7CiAgICAgICAgIGludCBj
dXJyZW50UG9zaXRpb24gPSBpbnQoY3VycmVudFRpbWUgKiByZWN0LndpZHRoKCkgLyBkdXJhdGlv
bik7CkBAIC0yNzksNyArMjc5LDcgQEAgc3RhdGljIGJvb2wgcGFpbnRNZWRpYVZvbHVtZVNsaWRl
cihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEkKIAogICAgIC8v
IENhbGN1bGF0ZSB2b2x1bWUgcG9zaXRpb24gZm9yIHdoaXRlIGJhY2tncm91bmQgcmVjdGFuZ2xl
LgogICAgIGZsb2F0IHZvbHVtZSA9IG1lZGlhRWxlbWVudC0+dm9sdW1lKCk7Ci0gICAgaWYgKGlz
bmFuKHZvbHVtZSkgfHwgdm9sdW1lIDwgMCkKKyAgICBpZiAoc3RkOjppc25hbih2b2x1bWUpIHx8
IHZvbHVtZSA8IDApCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmICh2b2x1bWUgPiAxKQog
ICAgICAgICB2b2x1bWUgPSAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLm1tCmluZGV4IDE1MWFjMDIyYzE3NGQyM2ZlYjVmNmYzYTQ3NjMzM2QyYTE3ZDk5YWMuLjRk
YjliYmJlNDgxZjk3MjllMDUyNGFmNjMwODgxNmZlZTcyZTliM2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTIzOCw3ICsyMzgsNyBAQCBib29sIFJl
bmRlclRoZW1lTWFjOjpwYWludE1lZGlhU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvLCBjb25z
dCBQYWludEluZm8mIHBhaQogICAgIGZsb2F0IHRpbWVMb2FkZWQgPSB0aW1lUmFuZ2VzLT5sZW5n
dGgoKSA/IHRpbWVSYW5nZXMtPmVuZCgwLCBJR05PUkVfRVhDRVBUSU9OKSA6IDA7CiAgICAgZmxv
YXQgY3VycmVudFRpbWUgPSBtZWRpYUVsZW1lbnQtPmN1cnJlbnRUaW1lKCk7CiAgICAgZmxvYXQg
ZHVyYXRpb24gPSBtZWRpYUVsZW1lbnQtPmR1cmF0aW9uKCk7Ci0gICAgaWYgKGlzbmFuKGR1cmF0
aW9uKSkKKyAgICBpZiAoc3RkOjppc25hbihkdXJhdGlvbikpCiAgICAgICAgIGR1cmF0aW9uID0g
MDsKIAogICAgIENvbnRleHRDb250YWluZXIgY2dDb250ZXh0Q29udGFpbmVyKHBhaW50SW5mby5j
b250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAppbmRl
eCA1YjgxNGUzOTE0MTk4YjZmY2VhNWMyOTk2YjU3YjVhMDFmODBlMzY5Li4zOWZlODA4ZjE2OTI0
MTdkY2M0YWQ2NWViYTY5NjA3YmYzNjlmNDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGlvbkVsZW1lbnQuY3BwCkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBTVkdBbmltYXRpb25F
bGVtZW50OjpiZWdpbkVsZW1lbnQoKQogCiB2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmJlZ2lu
RWxlbWVudEF0KGZsb2F0IG9mZnNldCkKIHsKLSAgICBpZiAoaXNuYW4ob2Zmc2V0KSkKKyAgICBp
ZiAoc3RkOjppc25hbihvZmZzZXQpKQogICAgICAgICByZXR1cm47CiAgICAgU01JTFRpbWUgZWxh
cHNlZCA9IHRoaXMtPmVsYXBzZWQoKTsKICAgICBhZGRCZWdpblRpbWUoZWxhcHNlZCwgZWxhcHNl
ZCArIG9mZnNldCwgU01JTFRpbWVXaXRoT3JpZ2luOjpTY3JpcHRPcmlnaW4pOwpAQCAtMjcyLDcg
KzI3Miw3IEBAIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6ZW5kRWxlbWVudCgpCiAKIHZvaWQg
U1ZHQW5pbWF0aW9uRWxlbWVudDo6ZW5kRWxlbWVudEF0KGZsb2F0IG9mZnNldCkKIHsKLSAgICBp
ZiAoaXNuYW4ob2Zmc2V0KSkKKyAgICBpZiAoc3RkOjppc25hbihvZmZzZXQpKQogICAgICAgICBy
ZXR1cm47CiAgICAgU01JTFRpbWUgZWxhcHNlZCA9IHRoaXMtPmVsYXBzZWQoKTsKICAgICBhZGRF
bmRUaW1lKGVsYXBzZWQsIGVsYXBzZWQgKyBvZmZzZXQsIFNNSUxUaW1lV2l0aE9yaWdpbjo6U2Ny
aXB0T3JpZ2luKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAppbmRleCBiNjg0OGM0
MGM2MGVlNzIyYzk4YmU3OGRhZjFlZDUzMmJjODYwYTE3Li43YWVjZGUzMTQ3MTFiZmM2ODg3OTM2
MzYxY2JkNjk0M2Y4YzRjYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZH
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCkBA
IC01NDQsNyArNTQ0LDcgQEAgZmxvYXQgU1ZHU1ZHRWxlbWVudDo6Z2V0Q3VycmVudFRpbWUoKSBj
b25zdAogCiB2b2lkIFNWR1NWR0VsZW1lbnQ6OnNldEN1cnJlbnRUaW1lKGZsb2F0IHNlY29uZHMp
CiB7Ci0gICAgaWYgKGlzbmFuKHNlY29uZHMpKQorICAgIGlmIChzdGQ6OmlzbmFuKHNlY29uZHMp
KQogICAgICAgICByZXR1cm47CiAgICAgc2Vjb25kcyA9IG1heChzZWNvbmRzLCAwLjBmKTsKICAg
ICBtX3RpbWVDb250YWluZXItPnNldEVsYXBzZWQoc2Vjb25kcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
YW5pbWF0aW9uL1NNSUxUaW1lLmgKaW5kZXggZGJjMmQxZmJkZjQyMjc3MzA5MjllOWVjYWZmZGJh
MDNmYjkxNWU3OS4uNGU3ZjVlMjYzMTY0NDc3OTIxNzE2YmRkNjg2NzEwMjQxMTc4MDljMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWUuaApAQCAtMzYsNyArMzYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTTUlMVGltZSB7CiBwdWJsaWM6CiAgICAgU01JTFRp
bWUoKSA6IG1fdGltZSgwKSB7IH0KLSAgICBTTUlMVGltZShkb3VibGUgdGltZSkgOiBtX3RpbWUo
dGltZSkgeyBBU1NFUlQoIWlzbmFuKHRpbWUpKTsgfQorICAgIFNNSUxUaW1lKGRvdWJsZSB0aW1l
KSA6IG1fdGltZSh0aW1lKSB7IEFTU0VSVCghc3RkOjppc25hbih0aW1lKSk7IH0KICAgICBTTUlM
VGltZShjb25zdCBTTUlMVGltZSYgbykgOiBtX3RpbWUoby5tX3RpbWUpIHsgfQogICAgIAogICAg
IHN0YXRpYyBTTUlMVGltZSB1bnJlc29sdmVkKCkgeyByZXR1cm4gdW5yZXNvbHZlZFZhbHVlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCmlu
ZGV4IGJhM2Y4NzM3YTQ5ODQ4ODBiYTJlNjJhMjMxMGE3OGUyMTgxMjhhZTguLmVjY2MwZjU1YTU3
NWYzNzY2MzAwYjhjZWU0NTMxZWZmY2I1OWZiODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCkBAIC03MTMsNyArNzEzLDcgQEAgU01JTFRp
bWUgU1ZHU01JTEVsZW1lbnQ6OnNpbXBsZUR1cmF0aW9uKCkgY29uc3QKIAogdm9pZCBTVkdTTUlM
RWxlbWVudDo6YWRkQmVnaW5UaW1lKFNNSUxUaW1lIGV2ZW50VGltZSwgU01JTFRpbWUgYmVnaW5U
aW1lLCBTTUlMVGltZVdpdGhPcmlnaW46Ok9yaWdpbiBvcmlnaW4pCiB7Ci0gICAgQVNTRVJUKCFp
c25hbihiZWdpblRpbWUudmFsdWUoKSkpOworICAgIEFTU0VSVCghc3RkOjppc25hbihiZWdpblRp
bWUudmFsdWUoKSkpOwogICAgIG1fYmVnaW5UaW1lcy5hcHBlbmQoU01JTFRpbWVXaXRoT3JpZ2lu
KGJlZ2luVGltZSwgb3JpZ2luKSk7CiAgICAgc29ydFRpbWVMaXN0KG1fYmVnaW5UaW1lcyk7CiAg
ICAgYmVnaW5MaXN0Q2hhbmdlZChldmVudFRpbWUpOwpAQCAtNzIxLDcgKzcyMSw3IEBAIHZvaWQg
U1ZHU01JTEVsZW1lbnQ6OmFkZEJlZ2luVGltZShTTUlMVGltZSBldmVudFRpbWUsIFNNSUxUaW1l
IGJlZ2luVGltZSwgU01JTFRpCiAKIHZvaWQgU1ZHU01JTEVsZW1lbnQ6OmFkZEVuZFRpbWUoU01J
TFRpbWUgZXZlbnRUaW1lLCBTTUlMVGltZSBlbmRUaW1lLCBTTUlMVGltZVdpdGhPcmlnaW46Ok9y
aWdpbiBvcmlnaW4pCiB7Ci0gICAgQVNTRVJUKCFpc25hbihlbmRUaW1lLnZhbHVlKCkpKTsKKyAg
ICBBU1NFUlQoIXN0ZDo6aXNuYW4oZW5kVGltZS52YWx1ZSgpKSk7CiAgICAgbV9lbmRUaW1lcy5h
cHBlbmQoU01JTFRpbWVXaXRoT3JpZ2luKGVuZFRpbWUsIG9yaWdpbikpOwogICAgIHNvcnRUaW1l
TGlzdChtX2VuZFRpbWVzKTsKICAgICBlbmRMaXN0Q2hhbmdlZChldmVudFRpbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKaW5kZXggOGI3ZWI3Mjk1YWQzMWY1ZDc2NzRhOTE2
MTZlNjg4M2U1YTdmYTUyOS4uOWNiY2ZmNzg0ZjcxMGU2ZjM0ZWJhZmFlZjU0YTk1YTY0ZTM4Y2Nj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCkBAIC01MDAsMTQgKzUwMCwx
NCBAQCBWYWx1ZSBGdW5TdWJzdHJpbmc6OmV2YWx1YXRlKCkgY29uc3QKIHsKICAgICBTdHJpbmcg
cyA9IGFyZygwKS0+ZXZhbHVhdGUoKS50b1N0cmluZygpOwogICAgIGRvdWJsZSBkb3VibGVQb3Mg
PSBhcmcoMSktPmV2YWx1YXRlKCkudG9OdW1iZXIoKTsKLSAgICBpZiAoaXNuYW4oZG91YmxlUG9z
KSkKKyAgICBpZiAoc3RkOjppc25hbihkb3VibGVQb3MpKQogICAgICAgICByZXR1cm4gIiI7CiAg
ICAgbG9uZyBwb3MgPSBzdGF0aWNfY2FzdDxsb25nPihGdW5Sb3VuZDo6cm91bmQoZG91YmxlUG9z
KSk7CiAgICAgYm9vbCBoYXZlTGVuZ3RoID0gYXJnQ291bnQoKSA9PSAzOwogICAgIGxvbmcgbGVu
ID0gLTE7CiAgICAgaWYgKGhhdmVMZW5ndGgpIHsKICAgICAgICAgZG91YmxlIGRvdWJsZUxlbiA9
IGFyZygyKS0+ZXZhbHVhdGUoKS50b051bWJlcigpOwotICAgICAgICBpZiAoaXNuYW4oZG91Ymxl
TGVuKSkKKyAgICAgICAgaWYgKHN0ZDo6aXNuYW4oZG91YmxlTGVuKSkKICAgICAgICAgICAgIHJl
dHVybiAiIjsKICAgICAgICAgbGVuID0gc3RhdGljX2Nhc3Q8bG9uZz4oRnVuUm91bmQ6OnJvdW5k
KGRvdWJsZUxlbikpOwogICAgIH0KQEAgLTY1Niw3ICs2NTYsNyBAQCBWYWx1ZSBGdW5DZWlsaW5n
OjpldmFsdWF0ZSgpIGNvbnN0CiAKIGRvdWJsZSBGdW5Sb3VuZDo6cm91bmQoZG91YmxlIHZhbCkK
IHsKLSAgICBpZiAoIWlzbmFuKHZhbCkgJiYgIWlzaW5mKHZhbCkpIHsKKyAgICBpZiAoIXN0ZDo6
aXNuYW4odmFsKSAmJiAhc3RkOjppc2luZih2YWwpKSB7CiAgICAgICAgIGlmIChzaWduYml0KHZh
bCkgJiYgdmFsID49IC0wLjUpCiAgICAgICAgICAgICB2YWwgKj0gMDsgLy8gbmVnYXRpdmUgemVy
bwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhWYWx1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhWYWx1ZS5jcHAKaW5kZXggMDljZTg3NjY0
ZDkxZDQwMzVlYThhMTBlNjFlNDUxNDA3ZjA0MWU4Yi4uZjkyY2JjODFiMjE3MzBkNTExZGU4NTk2
MmI3OGY5NmNiZWE2YTg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoVmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFZhbHVlLmNwcApAQCAtNzQsNyAr
NzQsNyBAQCBib29sIFZhbHVlOjp0b0Jvb2xlYW4oKSBjb25zdAogICAgICAgICBjYXNlIEJvb2xl
YW5WYWx1ZToKICAgICAgICAgICAgIHJldHVybiBtX2Jvb2w7CiAgICAgICAgIGNhc2UgTnVtYmVy
VmFsdWU6Ci0gICAgICAgICAgICByZXR1cm4gbV9udW1iZXIgIT0gMCAmJiAhaXNuYW4obV9udW1i
ZXIpOworICAgICAgICAgICAgcmV0dXJuIG1fbnVtYmVyICYmICFzdGQ6OmlzbmFuKG1fbnVtYmVy
KTsKICAgICAgICAgY2FzZSBTdHJpbmdWYWx1ZToKICAgICAgICAgICAgIHJldHVybiAhbV9kYXRh
LT5tX3N0cmluZy5pc0VtcHR5KCk7CiAgICAgfQpAQCAtMTIzLDExICsxMjMsMTEgQEAgU3RyaW5n
IFZhbHVlOjp0b1N0cmluZygpIGNvbnN0CiAgICAgICAgIGNhc2UgU3RyaW5nVmFsdWU6CiAgICAg
ICAgICAgICByZXR1cm4gbV9kYXRhLT5tX3N0cmluZzsKICAgICAgICAgY2FzZSBOdW1iZXJWYWx1
ZToKLSAgICAgICAgICAgIGlmIChpc25hbihtX251bWJlcikpCisgICAgICAgICAgICBpZiAoc3Rk
Ojppc25hbihtX251bWJlcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuICJOYU4iOwogICAgICAg
ICAgICAgaWYgKG1fbnVtYmVyID09IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuICIwIjsKLSAg
ICAgICAgICAgIGlmIChpc2luZihtX251bWJlcikpCisgICAgICAgICAgICBpZiAoc3RkOjppc2lu
ZihtX251bWJlcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHNpZ25iaXQobV9udW1iZXIpID8g
Ii1JbmZpbml0eSIgOiAiSW5maW5pdHkiOwogICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVt
YmVyKG1fbnVtYmVyKTsKICAgICAgICAgY2FzZSBCb29sZWFuVmFsdWU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0RlY2ltYWxUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvRGVjaW1hbFRlc3QuY3BwCmluZGV4IGMxMGRlNTZjMzgxODg2MDQ3
NWM3MWVjMTBjYTI1Y2Q1Njg1MzM5NjIuLmZhNzE5YjlkNDUyZmFmMmZhMDFhMWVkMTc5MDEwY2Nl
M2JkYzY3YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVjaW1h
bFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVjaW1hbFRlc3Qu
Y3BwCkBAIC0xMDQzLDE1ICsxMDQzLDE1IEBAIFRFU1RfRihEZWNpbWFsVGVzdCwgVG9Eb3VibGUp
CiAgICAgRVhQRUNUX0VRKDFlKzMwOCwgZW5jb2RlKDEsIDMwOCwgUG9zaXRpdmUpLnRvRG91Ymxl
KCkpOwogICAgIEVYUEVDVF9FUSgxZS0zMDcsIGVuY29kZSgxLCAtMzA3LCBQb3NpdGl2ZSkudG9E
b3VibGUoKSk7CiAKLSAgICBFWFBFQ1RfVFJVRShpc2luZihlbmNvZGUoMSwgMTAwMCwgUG9zaXRp
dmUpLnRvRG91YmxlKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShzdGQ6OmlzaW5mKGVuY29kZSgxLCAx
MDAwLCBQb3NpdGl2ZSkudG9Eb3VibGUoKSkpOwogICAgIEVYUEVDVF9FUSgwLjAsIGVuY29kZSgx
LCAtMTAwMCwgUG9zaXRpdmUpLnRvRG91YmxlKCkpOwogfQogCiBURVNUX0YoRGVjaW1hbFRlc3Qs
IFRvRG91YmxlU3BlY2lhbFZhbHVlcykKIHsKLSAgICBFWFBFQ1RfVFJVRShpc2luZihEZWNpbWFs
OjppbmZpbml0eShEZWNpbWFsOjpQb3NpdGl2ZSkudG9Eb3VibGUoKSkpOwotICAgIEVYUEVDVF9U
UlVFKGlzaW5mKERlY2ltYWw6OmluZmluaXR5KERlY2ltYWw6Ok5lZ2F0aXZlKS50b0RvdWJsZSgp
KSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNuYW4oRGVjaW1hbDo6bmFuKCkudG9Eb3VibGUoKSkpOwor
ICAgIEVYUEVDVF9UUlVFKHN0ZDo6aXNpbmYoRGVjaW1hbDo6aW5maW5pdHkoRGVjaW1hbDo6UG9z
aXRpdmUpLnRvRG91YmxlKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShzdGQ6OmlzaW5mKERlY2ltYWw6
OmluZmluaXR5KERlY2ltYWw6Ok5lZ2F0aXZlKS50b0RvdWJsZSgpKSk7CisgICAgRVhQRUNUX1RS
VUUoc3RkOjppc25hbihEZWNpbWFsOjpuYW4oKS50b0RvdWJsZSgpKSk7CiB9CiAKIFRFU1RfRihE
ZWNpbWFsVGVzdCwgVG9TdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5k
ZXggN2FjOTBiN2U2NzUzYzQxZmJhNjFhOWQ2NjBkMzJmMTM5M2EyMDg1Ny4uZmNjOWI0ZmNiYzcz
OWQyYjQ3MDI4NWQ3ZDEyZmM1NWVhZGM4YjQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQpAQCAtNDkzMyw3ICs0OTMzLDcgQEAgc3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0
b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBqc1ZhbHUKICAg
ICAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMoJkRhdGVJbnN0YW5jZTo6c19pbmZvKSkgewogICAg
ICAgICAgICAgRGF0ZUluc3RhbmNlKiBkYXRlID0gc3RhdGljX2Nhc3Q8RGF0ZUluc3RhbmNlKj4o
b2JqZWN0KTsKICAgICAgICAgICAgIGRvdWJsZSBtcyA9IGRhdGUtPmludGVybmFsTnVtYmVyKCk7
Ci0gICAgICAgICAgICBpZiAoIWlzbmFuKG1zKSkgeworICAgICAgICAgICAgaWYgKCFzdGQ6Omlz
bmFuKG1zKSkgewogICAgICAgICAgICAgICAgIENGQWJzb2x1dGVUaW1lIHV0Y1NlY29uZHMgPSBt
cyAvIDEwMDAgLSBrQ0ZBYnNvbHV0ZVRpbWVJbnRlcnZhbFNpbmNlMTk3MDsKICAgICAgICAgICAg
ICAgICBMb25nRGF0ZVRpbWUgbGR0OwogICAgICAgICAgICAgICAgIGlmIChub0VyciA9PSBVQ0Nv
bnZlcnRDRkFic29sdXRlVGltZVRvTG9uZ0RhdGVUaW1lKHV0Y1NlY29uZHMsICZsZHQpKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGUyMDhlMTEx
NzQ5NmUxNDkzZGUwZmE5MjMwMGVjOWRiY2ViZmMwNWMuLmYyNjI5ODQwYTdlNGJkZGEyNGQ4YmU4
MDg1YTk1NTUwNzU4ZjE0YzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMy0wMi0xMyAgWmFuIERvYmVyc2VrICA8
emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgVGhlICdnbG9iYWwgaXNpbmYvaXNuYW4n
IGNvbXBpbGVyIHF1aXJrIHJlcXVpcmVkIHdoZW4gdXNpbmcgY2xhbmcgd2l0aCBsaWJzdGRjKysK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTMyNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZWZpeCBj
YWxscyB0byB0aGUgaXNpbmYgYW5kIGlzbmFuIG1ldGhvZHMgd2l0aCBzdGQ6OiwgZGVjbGFyaW5n
IHdlIHdhbnQgdG8gdXNlIHRoZQorICAgICAgICB0d28gbWV0aG9kcyBhcyB0aGV5J3JlIHByb3Zp
ZGVkIGJ5IHRoZSBDKysgc3RhbmRhcmQgbGlicmFyeSBiZWluZyB1c2VkLgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChzZXRBcHBDYWNoZU1heGlt
dW1TaXplQ2FsbGJhY2spOgorICAgICAgICAoc2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3Rh
Q2FsbGJhY2spOgorICAgICAgICAoc2V0RGF0YWJhc2VRdW90YUNhbGxiYWNrKToKKwogMjAxMy0w
Mi0xMyAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAg
IFtXSzJdIFJlbW92ZSB3ZWIgaW50ZW50cyBjYWxsYmFja3MKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1
bm5lci5jcHAKaW5kZXggODU4NDc0MGM2NzI5MWUwNTJjMzZiZWY2ZjU0ZTU0MzY4MzU2MDBhMi4u
NmM4ZjhmYjlkMTY4ODQ3MTM3YTRkMGQ1ZmZiZjc3YjRjN2Y3MzYwOSAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvVGVzdFJ1bm5lci5jcHAKQEAgLTg2Niw3ICs4NjYsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBz
ZXRBcHBDYWNoZU1heGltdW1TaXplQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2Jq
ZWN0UgogICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVy
Kj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKIAogICAgIGRvdWJsZSBzaXplID0g
SlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgTlVMTCk7Ci0gICAgaWYgKCFp
c25hbihzaXplKSkKKyAgICBpZiAoIXN0ZDo6aXNuYW4oc2l6ZSkpCiAgICAgICAgIGNvbnRyb2xs
ZXItPnNldEFwcENhY2hlTWF4aW11bVNpemUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25n
PihzaXplKSk7CiAgICAgICAgIAogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250
ZXh0KTsKQEAgLTg4MSw3ICs4ODEsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRBcHBsaWNhdGlv
bkNhY2hlT3JpZ2luUXVvdGFDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSgogICAgIFRl
c3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RH
ZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKIAogICAgIGRvdWJsZSBzaXplID0gSlNWYWx1ZVRvTnVt
YmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgTlVMTCk7Ci0gICAgaWYgKCFpc25hbihzaXplKSkK
KyAgICBpZiAoIXN0ZDo6aXNuYW4oc2l6ZSkpCiAgICAgICAgIGNvbnRyb2xsZXItPnNldEFwcGxp
Y2F0aW9uQ2FjaGVPcmlnaW5RdW90YShzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHNp
emUpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKQEAgLTk5
MCw3ICs5OTAsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXREYXRhYmFzZVF1b3RhQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bgogICAgIFRlc3RSdW5uZXIqIGNv
bnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRo
aXNPYmplY3QpKTsKIAogICAgIGRvdWJsZSBxdW90YSA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0
LCBhcmd1bWVudHNbMF0sIE5VTEwpOwotICAgIGlmICghaXNuYW4ocXVvdGEpKQorICAgIGlmICgh
c3RkOjppc25hbihxdW90YSkpCiAgICAgICAgIGNvbnRyb2xsZXItPnNldERhdGFiYXNlUXVvdGEo
c3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihxdW90YSkpOwogICAgICAgICAKICAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cg==
</data>
<flag name="review"
          id="208056"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>