<?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>71100</bug_id>
          
          <creation_ts>2011-10-28 02:20:22 -0700</creation_ts>
          <short_desc>[chromium] Connect CCThreadProxy to FrameRateController and SchedulerStateMachine via CCScheduler</short_desc>
          <delta_ts>2011-10-31 16:58:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nat Duca">nduca</reporter>
          <assigned_to name="Nat Duca">nduca</assigned_to>
          <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>vangelis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>492328</commentid>
    <comment_count>0</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-10-28 02:20:22 -0700</bug_when>
    <thetext>[chromium] Connect CCThreadProxy to FrameRateController and SchedulerStateMachine via CCScheduler</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492330</commentid>
    <comment_count>1</comment_count>
      <attachid>112836</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-10-28 02:20:56 -0700</bug_when>
    <thetext>Created attachment 112836
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492332</commentid>
    <comment_count>2</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-10-28 02:21:38 -0700</bug_when>
    <thetext>Initial patch. Still debugging, but the shape should be good enough for a structural &quot;omg this is terrible&quot; review. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492843</commentid>
    <comment_count>3</comment_count>
      <attachid>112952</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-10-28 17:55:48 -0700</bug_when>
    <thetext>Created attachment 112952
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492876</commentid>
    <comment_count>4</comment_count>
      <attachid>112952</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-28 19:16:10 -0700</bug_when>
    <thetext>Comment on attachment 112952
Patch

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

have not grokked patch yet, just dumping some initial comments

&gt; Source/WebCore/platform/graphics/chromium/cc/CCDelayBasedTimeSource.h:50
&gt; +    virtual double monotonicallyIncreasingTime() const { return WTF::monotonicallyIncreasingTime() * 1000.0; }

I get what you are doing here but I think it&apos;s way too confusing to have this share the name with a function in the global namespace and do something different. If you want to have this return a different unit from the normal WebKit time functions (which return a double in seconds) then pick a different function name. IMO the best thing to do here is to abandon the WTF naming scheme completely and pick our own, which this function will happen to implement on top of WTF::monotonicallyIncreasingTime. The WebKit conventions here are pretty effed up

Additionally it&apos;s not too useful to put the definition of a virtual in the .h, even if it&apos;s short, because the compiler is unlikely to be able to inline anyway. Just stick the impl in the .cpp.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h:60
&gt; +    virtual void didCommitAndDrawFrame(int frameNumber) { }

why&apos;s this the only client function with an empty impl? shouldn&apos;t it be pure virtual too?

if you do plan to keep it pure virtual comment out the parameter name like this:

virtual void didCommitAndDrawFrame(int /* frameNumber */) { }

to avoid stupid unused variable warnings on the parameter

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:407
&gt; +

extra newline

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:422
&gt; +    m_currentTextureUpdaterOnImplThread-&gt;update(m_layerTreeHostImpl-&gt;context(), 16);

16&apos;s a magic number here. can you make it a named constant?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h:127
&gt; +    // Set whent he main thread is waiitng on a readback

typos here &quot;whent he&quot; -&gt; &quot;when the&quot;, &quot;waiitng&quot; -&gt; &quot;waiting&quot;

please end comments that are sentences (or fragments) with a period

&gt; Source/WebKit/chromium/tests/CCSchedulerTest.cpp:36
&gt; +// FIXME: do we need tests of the scheduler? Its mostly a passthrough.

i was expecting this to become more than just a passthrough when the scheduler itself gained logic</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492901</commentid>
    <comment_count>5</comment_count>
      <attachid>112952</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-28 23:37:39 -0700</bug_when>
    <thetext>Comment on attachment 112952
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp:41
&gt; +    virtual void beginFrame() { m_scheduler-&gt;onBeginFrame(); }

does this adapter exist just because CCFrameControllerClient and CCScheduler can&apos;t agree on whether this is called beginFrame() or onBeginFrame()? can we just agree on a name and not need this guy?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp:116
&gt; +    // Early out so we don&apos;t spam TRACE_EVENTS with useless processScheduledActions

we have traces for all the m_client calls, right? do we really need another trace for processScheduledActions() then?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:479
&gt; +    // Tell the main thread the frame draw, if it was a real main thread frame

i can&apos;t quite understand what this comment is trying to say

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:482
&gt; +        m_mainThreadProxy-&gt;postTask(createMainThreadTask(this, &amp;CCThreadProxy::didCommitAndDrawFrame, m_layerTreeHostImpl-&gt;sourceFrameNumber()));

what do we need to inform the main thread about after we draw? can&apos;t it just wait until the next BFAC for any state we need to push?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492986</commentid>
    <comment_count>6</comment_count>
      <attachid>112952</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-29 15:28:43 -0700</bug_when>
    <thetext>Comment on attachment 112952
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp:114
&gt; +void CCScheduler::processScheduledActions(bool insideVSyncTick)

this function takes a bool parameter but all of the callsites pass in a literal value. this makes the callers much harder to read. please use an enum here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493104</commentid>
    <comment_count>7</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-10-30 17:03:57 -0700</bug_when>
    <thetext>&gt; we have traces for all the m_client calls, right? do we really need another trace for processScheduledActions() then?
PSA can do several things in a single cycle, and it is useful when tracing to be able to distingiush one psa group from different ones.

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:482
&gt; what do we need to inform the main thread about after we draw? can&apos;t it just wait until the next BFAC for any state we need to push?

Great question. This is based on a discussion with Antoine and @bauman: we need to tell the RenderWidget to didFlushPaint after a commit has made in order for plugins to work properly with threaded compositing. We dont want to create a new frame in this case --- we just need to ack to the main thread that the frame was drawn.  Two specific use cases:
1. UpdateRect should be sent on this
2. didFlushPaint should be sent on this

The frame number is passed to resolve the race condition where a plugin asks for a commit right after a commit(from previous damage) - in that case, a didCommitAndDraw will arrive for that previous frame. By paying attention to CCLTH::frameNumber and the ack frame number, the client can tell when the frame it requested has actually been submitted to the GPU.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493114</commentid>
    <comment_count>8</comment_count>
      <attachid>113007</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-10-30 18:24:08 -0700</bug_when>
    <thetext>Created attachment 113007
nits and tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493467</commentid>
    <comment_count>9</comment_count>
      <attachid>113007</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-31 13:29:02 -0700</bug_when>
    <thetext>Comment on attachment 113007
nits and tests

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

R=me, some nits (nearly all spelling)

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp:122
&gt; +        default:
&gt; +            ASSERT_NOT_REACHED();

It&apos;s better to leave the default case off when switching on an enum if you have a case: for each value. If you leave out a case the compiler will yell at you, instead of it falling through to the default: and being a runtime error.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp:126
&gt; +        // If we were just told to udpate resources, but there

udpate-&gt;update

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp:127
&gt; +        // are no more pending, then clear

This sentence sort of trails off - clear what?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.h:58
&gt; +    ~CCScheduler();

virtual

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.h:73
&gt; +    void beginFrame();

virtual

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:372
&gt; +        // point of view, but asynchronously performd on the impl thread,

performd -&gt; performed

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:457
&gt; +    // Check for a pending compositeAndReadback

should we still swap on a compositeAndReadback() ?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h:127
&gt; +    // Set whent the main thread is waiing on a readback.

waiing-&gt;waiting

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h:140
&gt; +    enum { UpdatesPerFrame = 16 };

We typically do static const (numerictype) in the .cpp instead of enum values in the header for constants, especially since this one isn&apos;t needed outside ccthreadproxy.cpp. you could even make it a function static in scheduledActionUpdateMoreResources() so it&apos;s close to the use

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h:142
&gt; +

extra newline

&gt; Source/WebKit/chromium/tests/CCSchedulerTest.cpp:68
&gt; +    // SetNedsCommit should begin the frame.

SetNedsCommit -&gt; SetNeedsCommit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493633</commentid>
    <comment_count>10</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-10-31 16:58:04 -0700</bug_when>
    <thetext>Committed r98915: &lt;http://trac.webkit.org/changeset/98915&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112836</attachid>
            <date>2011-10-28 02:20:56 -0700</date>
            <delta_ts>2011-10-28 17:55:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71100-20111028022055.patch</filename>
            <type>text/plain</type>
            <size>28679</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTg3MDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiZWU1ZjU4MmNiMDlhZjdl
NmFiOWQ0ZGZiZTkxZDY2MTIzYmZhMzk1Li4xOTA4YTAyNjExZGIyNDhiMjhhNzE5OGZhZjgxYzI5
YjE3Y2E0YzcwIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTEtMTAtMjggIE5hdCBE
dWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQ29ubmVjdCBD
Q1RocmVhZFByb3h5IHRvIEZyYW1lUmF0ZUNvbnRyb2xsZXIgYW5kIFNjaGVkdWxlclN0YXRlTWFj
aGluZSB2aWEgQ0NTY2hlZHVsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTcxMTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlckZyYW1lUmF0ZUNvbnRyb2xsZXJDbGll
bnRBZGFwdGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJGcmFtZVJh
dGVDb250cm9sbGVyQ2xpZW50QWRhcHRlcjo6fkNDU2NoZWR1bGVyRnJhbWVSYXRlQ29udHJvbGxl
ckNsaWVudEFkYXB0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJGcmFtZVJhdGVD
b250cm9sbGVyQ2xpZW50QWRhcHRlcjo6YmVnaW5GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1NjaGVkdWxlckZyYW1lUmF0ZUNvbnRyb2xsZXJDbGllbnRBZGFwdGVyOjpDQ1NjaGVkdWxlckZy
YW1lUmF0ZUNvbnRyb2xsZXJDbGllbnRBZGFwdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2No
ZWR1bGVyOjpDQ1NjaGVkdWxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6fkND
U2NoZWR1bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjpzZXROZWVkc0FuaW1h
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OnNldE5lZWRzQ29tbWl0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjpzZXROZWVkc1JlZHJhdyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1NjaGVkdWxlcjo6YmVnaW5GcmFtZUNvbXBsZXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDU2NoZWR1bGVyOjpkaWRTd2FwQnVmZmVyc0NvbXBsZXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDU2NoZWR1bGVyOjpkaWRTd2FwQnVmZmVyc0Fib3J0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNDU2NoZWR1bGVyOjpvbkJlZ2luRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVs
ZXI6OnByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVs
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6Y29tbWl0UGVuZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6cmVkcmF3UGVuZGluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpyZWRyYXdQ
ZW5kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1
cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6Omhhc01v
cmVVcGRhdGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rl
eHR1cmVVcGRhdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpDQ1Ro
cmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmNvbXBvc2l0ZUFu
ZFJlYWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnJlcXVlc3RSZWFk
YmFja09uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzZXRO
ZWVkc0FuaW1hdGVPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94
eTo6c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJl
YWRQcm94eTo6c2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJl
YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aGFzTW9yZVJlc291cmNlVXBk
YXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25V
cGRhdGVNb3JlUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNj
aGVkdWxlZEFjdGlvbkNvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojpk
cmF3TGF5ZXJzQW5kU3dhcE9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVh
ZFByb3h5Ojppbml0aWFsaXplSW1wbE9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorCiAyMDExLTEwLTI2
ICBOYXQgRHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIElt
cGxlbWVudCBmcmFtZSByYXRlIGNvbnRyb2wgcG9ydGlvbnMgb2YgQ0NTY2hlZHVsZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNTljYzQwOTdiNmNlZWEyZDE2M2YwNjcwOTYzN2RlZjRi
ZjRmNmY0ZC4uNzNmNzVmMjk4ZWM5MDhkN2JiZDUzYzFlNmIyOTJjNWMwNTBlNTBjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMS0xMC0yOCAgTmF0IER1
Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDb25uZWN0IEND
VGhyZWFkUHJveHkgdG8gRnJhbWVSYXRlQ29udHJvbGxlciBhbmQgU2NoZWR1bGVyU3RhdGVNYWNo
aW5lIHZpYSBDQ1NjaGVkdWxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzExMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHRlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHA6CisKIDIwMTEtMTAtMjYgIE5h
dCBEdWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gSW1wbGVt
ZW50IGZyYW1lIHJhdGUgY29udHJvbCBwb3J0aW9ucyBvZiBDQ1NjaGVkdWxlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y2hlZHVsZXIuY3BwCmluZGV4IGNlOTc3MGJlZTYxYjdmZGY4YTNkZDhhY2YwMGYwY2JhYjMwMjdj
OGUuLjg1ZTc5Mjk0YmU1YTM3ZjRmNTZlYWQwMzdlYzc5NzlmZjQwNjNkODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NjaGVkdWxlci5jcHAKQEAgLTI1LDU4ICsyNSwxMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
IAogI2luY2x1ZGUgImNjL0NDU2NoZWR1bGVyLmgiCisjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNDU2NoZWR1bGVyOjpDQ1NjaGVkdWxlcihDQ1NjaGVk
dWxlckNsaWVudCogY2xpZW50KQorCitjbGFzcyBDQ1NjaGVkdWxlckZyYW1lUmF0ZUNvbnRyb2xs
ZXJDbGllbnRBZGFwdGVyIDogcHVibGljIENDRnJhbWVSYXRlQ29udHJvbGxlckNsaWVudCB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NTY2hlZHVsZXJGcmFtZVJhdGVDb250cm9s
bGVyQ2xpZW50QWRhcHRlcj4gY3JlYXRlKENDU2NoZWR1bGVyKiBzY2hlZHVsZXIpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDU2NoZWR1bGVyRnJhbWVSYXRlQ29udHJvbGxl
ckNsaWVudEFkYXB0ZXIoc2NoZWR1bGVyKSk7CisgICAgfQorICAgIHZpcnR1YWwgfkNDU2NoZWR1
bGVyRnJhbWVSYXRlQ29udHJvbGxlckNsaWVudEFkYXB0ZXIoKSB7IH0KKworICAgIHZpcnR1YWwg
dm9pZCBiZWdpbkZyYW1lKCkgeyBtX3NjaGVkdWxlci0+b25CZWdpbkZyYW1lKCk7IH0KKworcHJp
dmF0ZToKKyAgICBleHBsaWNpdCBDQ1NjaGVkdWxlckZyYW1lUmF0ZUNvbnRyb2xsZXJDbGllbnRB
ZGFwdGVyKENDU2NoZWR1bGVyKiBzY2hlZHVsZXIpCisgICAgICAgICAgICA6IG1fc2NoZWR1bGVy
KHNjaGVkdWxlcikgeyB9CisKKyAgICBDQ1NjaGVkdWxlciogbV9zY2hlZHVsZXI7Cit9OworCitD
Q1NjaGVkdWxlcjo6Q0NTY2hlZHVsZXIoQ0NTY2hlZHVsZXJDbGllbnQqIGNsaWVudCwgUGFzc093
blB0cjxDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXI+IGZyYW1lUmF0ZUNvbnRyb2xsZXIpCiAgICAgOiBt
X2NsaWVudChjbGllbnQpCi0gICAgLCBtX2NvbW1pdFBlbmRpbmcoZmFsc2UpCi0gICAgLCBtX3Jl
ZHJhd1BlbmRpbmcoZmFsc2UpCisgICAgLCBtX2ZyYW1lUmF0ZUNvbnRyb2xsZXIoZnJhbWVSYXRl
Q29udHJvbGxlcikKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOworICAgIG1fZnJhbWVSYXRlQ29u
dHJvbGxlckNsaWVudEFkYXB0ZXIgPSBDQ1NjaGVkdWxlckZyYW1lUmF0ZUNvbnRyb2xsZXJDbGll
bnRBZGFwdGVyOjpjcmVhdGUodGhpcyk7CisgICAgbV9mcmFtZVJhdGVDb250cm9sbGVyLT5zZXRD
bGllbnQobV9mcmFtZVJhdGVDb250cm9sbGVyQ2xpZW50QWRhcHRlci5nZXQoKSk7CisKKyAgICAv
LyBGSVhNRTogbWFrZSB0aGUgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUgdHVybiBvZmYgRnJhbWVS
YXRlQ29udHJvbGxlciBpdCBpc24ndCBuZWVkZWQuCisgICAgbV9mcmFtZVJhdGVDb250cm9sbGVy
LT5zZXRBY3RpdmUodHJ1ZSk7CiB9CiAKLXZvaWQgQ0NTY2hlZHVsZXI6OnJlcXVlc3RBbmltYXRl
KCkKK0NDU2NoZWR1bGVyOjp+Q0NTY2hlZHVsZXIoKQogewotICAgIC8vIFN0dWIgdGhyb3VnaCB0
byByZXF1ZXN0Q29tbWl0IGZvciBub3cuCi0gICAgcmVxdWVzdENvbW1pdCgpOworICAgIG1fZnJh
bWVSYXRlQ29udHJvbGxlci0+c2V0QWN0aXZlKGZhbHNlKTsKIH0KIAotdm9pZCBDQ1NjaGVkdWxl
cjo6cmVxdWVzdENvbW1pdCgpCit2b2lkIENDU2NoZWR1bGVyOjpzZXROZWVkc0FuaW1hdGUoKQog
ewotICAgIGlmIChtX2NvbW1pdFBlbmRpbmcpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY29t
bWl0UGVuZGluZyA9IHRydWU7Ci0gICAgbV9jbGllbnQtPnNjaGVkdWxlQmVnaW5GcmFtZUFuZENv
bW1pdCgpOworICAgIC8vIFN0dWIgdGhyb3VnaCB0byByZXF1ZXN0Q29tbWl0IGZvciBub3cuCisg
ICAgc2V0TmVlZHNDb21taXQoKTsKIH0KIAotdm9pZCBDQ1NjaGVkdWxlcjo6cmVxdWVzdFJlZHJh
dygpCit2b2lkIENDU2NoZWR1bGVyOjpzZXROZWVkc0NvbW1pdCgpCiB7Ci0gICAgaWYgKG1fcmVk
cmF3UGVuZGluZykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9yZWRyYXdQZW5kaW5nID0gdHJ1
ZTsKLQotICAgIG1fY2xpZW50LT5zY2hlZHVsZURyYXdBbmRTd2FwKCk7CisgICAgbV9zdGF0ZU1h
Y2hpbmUuc2V0TmVlZHNDb21taXQoKTsKKyAgICBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucyhmYWxz
ZSk7CiB9CiAKLXZvaWQgQ0NTY2hlZHVsZXI6OmRpZENvbW1pdCgpCit2b2lkIENDU2NoZWR1bGVy
OjpzZXROZWVkc1JlZHJhdygpCiB7Ci0gICAgbV9jb21taXRQZW5kaW5nID0gZmFsc2U7CisgICAg
bV9zdGF0ZU1hY2hpbmUuc2V0TmVlZHNSZWRyYXcoKTsKKyAgICBwcm9jZXNzU2NoZWR1bGVkQWN0
aW9ucyhmYWxzZSk7CiB9CiAKLXZvaWQgQ0NTY2hlZHVsZXI6OmRpZERyYXdBbmRTd2FwKCkKK3Zv
aWQgQ0NTY2hlZHVsZXI6OmJlZ2luRnJhbWVDb21wbGV0ZSgpCiB7Ci0gICAgbV9yZWRyYXdQZW5k
aW5nID0gZmFsc2U7CisgICAgbV9zdGF0ZU1hY2hpbmUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7Cisg
ICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoZmFsc2UpOwogfQogCiB2b2lkIENDU2NoZWR1bGVy
OjpkaWRTd2FwQnVmZmVyc0NvbXBsZXRlKCkKIHsKKyAgICBtX2ZyYW1lUmF0ZUNvbnRyb2xsZXIt
PmRpZEZpbmlzaEZyYW1lKCk7CiB9CiAKIHZvaWQgQ0NTY2hlZHVsZXI6OmRpZFN3YXBCdWZmZXJz
QWJvcnQoKQogeworICAgIG1fZnJhbWVSYXRlQ29udHJvbGxlci0+ZGlkQWJvcnRBbGxQZW5kaW5n
RnJhbWVzKCk7Cit9CisKK3ZvaWQgQ0NTY2hlZHVsZXI6Om9uQmVnaW5GcmFtZSgpCit7CisgICAg
cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnModHJ1ZSk7Cit9CisKK3ZvaWQgQ0NTY2hlZHVsZXI6OnBy
b2Nlc3NTY2hlZHVsZWRBY3Rpb25zKGJvb2wgaW5zaWRlVlN5bmNUaWNrKQoreworICAgIFRSQUNF
X0VWRU5UKCJDQ1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMiLCB0aGlzLCAwKTsK
KyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QWN0
aW9uIGFjdGlvbiA9IG1fc3RhdGVNYWNoaW5lLm5leHRBY3Rpb24oaW5zaWRlVlN5bmNUaWNrKTsK
KyAgICAgICAgc3dpdGNoIChhY3Rpb24pIHsKKyAgICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX05PTkU6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FOgorICAgICAgICAgICAg
bV9jbGllbnQtPnNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUoKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fVVBEQVRFX01P
UkVfUkVTT1VSQ0VTOgorICAgICAgICAgICAgbV9jbGllbnQtPnNjaGVkdWxlZEFjdGlvblVwZGF0
ZU1vcmVSZXNvdXJjZXMoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlUOgorICAgICAgICAgICAgbV9jbGllbnQt
PnNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXOgorICAgICAgICAgICAgbV9j
bGllbnQtPnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICB9CisgICAgICAgIG1fc3RhdGVNYWNoaW5lLnVwZGF0ZVN0YXRlKGFjdGlvbik7CisKKyAg
ICAgICAgaWYgKGFjdGlvbiA9PSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX1VQREFU
RV9NT1JFX1JFU09VUkNFUworICAgICAgICAgICAgJiYgIW1fY2xpZW50LT5oYXNNb3JlUmVzb3Vy
Y2VVcGRhdGVzKCkpCisgICAgICAgICAgICBtX3N0YXRlTWFjaGluZS51cGRhdGVSZXNvdXJjZXND
b21wbGV0ZSgpOworICAgIH0KIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKaW5kZXggMjI0MjA1
MmM2OTUwMzc1OTQ2OGMxYWEzNWFkODI0ZWY2YzRmZWRjNC4uNzYzOGFiMWM2MjU5ZjY3YjQ4YWFk
MjU5NGZmZDA3MGIwODgzYjU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCkBAIC0yNSw2ICsyNSw5
IEBACiAjaWZuZGVmIENDU2NoZWR1bGVyX2gKICNkZWZpbmUgQ0NTY2hlZHVsZXJfaAogCisjaW5j
bHVkZSAiY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmUuaCIKKwogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKQEAgLTM0LDQwICszNyw1MCBAQCBjbGFzcyBDQ1RocmVh
ZDsKIAogY2xhc3MgQ0NTY2hlZHVsZXJDbGllbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9p
ZCBzY2hlZHVsZUJlZ2luRnJhbWVBbmRDb21taXQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNj
aGVkdWxlRHJhd0FuZFN3YXAoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc01vcmVSZXNvdXJj
ZVVwZGF0ZXMoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5G
cmFtZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAo
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJj
ZXMoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpID0gMDsK
IAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkNDU2NoZWR1bGVyQ2xpZW50KCkgeyB9CiB9Owog
CitjbGFzcyBDQ1NjaGVkdWxlckZyYW1lUmF0ZUNvbnRyb2xsZXJDbGllbnRBZGFwdGVyOworCiBj
bGFzcyBDQ1NjaGVkdWxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NTY2hlZHVsZXIp
OwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDU2NoZWR1bGVyPiBjcmVhdGUoQ0NT
Y2hlZHVsZXJDbGllbnQqIGNsaWVudCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1NjaGVkdWxl
cj4gY3JlYXRlKENDU2NoZWR1bGVyQ2xpZW50KiBjbGllbnQsIFBhc3NPd25QdHI8Q0NGcmFtZVJh
dGVDb250cm9sbGVyPiBmcmFtZVJhdGVDb250cm9sbGVyKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBDQ1NjaGVkdWxlcihjbGllbnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBDQ1NjaGVkdWxlcihjbGllbnQsIGZyYW1lUmF0ZUNvbnRyb2xsZXIpKTsKICAgICB9
CisgICAgfkNDU2NoZWR1bGVyKCk7CiAKLSAgICB2b2lkIHJlcXVlc3RBbmltYXRlKCk7Ci0gICAg
dm9pZCByZXF1ZXN0Q29tbWl0KCk7Ci0gICAgdm9pZCByZXF1ZXN0UmVkcmF3KCk7CisgICAgdm9p
ZCBzZXROZWVkc0FuaW1hdGUoKTsKKyAgICB2b2lkIHNldE5lZWRzQ29tbWl0KCk7CisgICAgdm9p
ZCBzZXROZWVkc1JlZHJhdygpOworCisgICAgdm9pZCBiZWdpbkZyYW1lQ29tcGxldGUoKTsKIAot
ICAgIHZvaWQgZGlkQ29tbWl0KCk7Ci0gICAgdm9pZCBkaWREcmF3QW5kU3dhcCgpOwogICAgIHZv
aWQgZGlkU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpOwogICAgIHZvaWQgZGlkU3dhcEJ1ZmZlcnNBYm9y
dCgpOwogCi0gICAgYm9vbCBjb21taXRQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9jb21taXRQ
ZW5kaW5nOyB9Ci0gICAgYm9vbCByZWRyYXdQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZWRy
YXdQZW5kaW5nOyB9CisgICAgYm9vbCBjb21taXRQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0ZU1hY2hpbmUuY29tbWl0UGVuZGluZygpOyB9CisgICAgYm9vbCByZWRyYXdQZW5kaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZU1hY2hpbmUucmVkcmF3UGVuZGluZygpOyB9CiAKIHByaXZh
dGU6Ci0gICAgZXhwbGljaXQgQ0NTY2hlZHVsZXIoQ0NTY2hlZHVsZXJDbGllbnQqKTsKKyAgICBD
Q1NjaGVkdWxlcihDQ1NjaGVkdWxlckNsaWVudCosIFBhc3NPd25QdHI8Q0NGcmFtZVJhdGVDb250
cm9sbGVyPik7CisgICAgZnJpZW5kIGNsYXNzIENDU2NoZWR1bGVyRnJhbWVSYXRlQ29udHJvbGxl
ckNsaWVudEFkYXB0ZXI7CisgICAgdm9pZCBvbkJlZ2luRnJhbWUoKTsKKyAgICB2b2lkIHByb2Nl
c3NTY2hlZHVsZWRBY3Rpb25zKGJvb2wgaW5zaWRlVlN5bmNUaWNrKTsKIAogICAgIENDU2NoZWR1
bGVyQ2xpZW50KiBtX2NsaWVudDsKLQotICAgIGJvb2wgbV9jb21taXRQZW5kaW5nOwotICAgIGJv
b2wgbV9yZWRyYXdQZW5kaW5nOworICAgIE93blB0cjxDQ1NjaGVkdWxlckZyYW1lUmF0ZUNvbnRy
b2xsZXJDbGllbnRBZGFwdGVyPiBtX2ZyYW1lUmF0ZUNvbnRyb2xsZXJDbGllbnRBZGFwdGVyOwor
ICAgIE93blB0cjxDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXI+IG1fZnJhbWVSYXRlQ29udHJvbGxlcjsK
KyAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSBtX3N0YXRlTWFjaGluZTsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCmluZGV4IDY0MDVlMDdlZDI5
YzBiYmMzMjgzMTI2YTQzYjRkMGRjZjhhZmQyZDAuLjYyYzY5ZGVmNDUxNjhjOTczN2NjZWY3M2Mz
YjlmYmZlZTJlNjAyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmUuaApAQCAtNTUsNiArNTUsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2NvbW1pdFN0
YXRlICE9IENPTU1JVF9TVEFURV9JRExFOwogICAgIH0KIAorICAgIGJvb2wgcmVkcmF3UGVuZGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNSZWRyYXc7IH0KKwogICAgIGVudW0gQWN0aW9uIHsK
ICAgICAgICAgQUNUSU9OX05PTkUsCiAgICAgICAgIEFDVElPTl9CRUdJTl9GUkFNRSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4
dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggNDA4NGRlZWFmMGZiYzcwYjA4NTRiYWU2
MGQ4ZWEyN2E3NDM3YmEyMy4uOTg0MzcwZWRhOTVjNTIzZjU5ZWU1NWM4N2FjODI4NzFlMDJhNzNi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTYxLDYgKzYxLDExIEBA
IHZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6YXBwZW5kKE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBM
YXllclRleHR1cmVVcGRhdGVyKiB1cGRhCiAgICAgbV9lbnRyaWVzLmFwcGVuZChlbnRyeSk7CiB9
CiAKK2Jvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6aGFzTW9yZVVwZGF0ZXMoKSBjb25zdAoreworICAg
IHJldHVybiBtX2VudHJpZXMuc2l6ZSgpOworfQorCiBib29sIENDVGV4dHVyZVVwZGF0ZXI6OnVw
ZGF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgc2l6ZV90IGNvdW50KQogewogICAgIHNp
emVfdCBtYXhJbmRleCA9IG1pbihtX2VudHJ5SW5kZXggKyBjb3VudCwgbV9lbnRyaWVzLnNpemUo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKaW5kZXggMzAzMWMzOWU2MGQ4MDJhZmZl
MTZhY2RlYjc4OGJhYjIwMjE5YjJhYy4uMTdiOGFhZmEwNmNlN2E2ZDIwYTBlNWZiNGM5MTRlNzJm
YzkzOTRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDMsNiArNDMsOCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVuZChNYW5hZ2VkVGV4dHVyZSosIExheWVyVGV4dHVy
ZVVwZGF0ZXIqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCk7CiAKKyAgICBib29sIGhhc01vcmVVcGRhdGVzKCkgY29uc3Q7CisKICAgICAvLyBVcGRh
dGUgc29tZSB0ZXh0dXJlcy4gUmV0dXJucyB0cnVlIGlmIG1vcmUgdGV4dHVyZXMgbGVmdCB0byBw
cm9jZXNzLgogICAgIGJvb2wgdXBkYXRlKEdyYXBoaWNzQ29udGV4dDNEKiwgc2l6ZV90IGNvdW50
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCA3MTc2YzI0MDcwZmNjN2YzYzM4
Y2UwMmY5ZDhhMDYwYTgzNDFlZDg3Li41YmM1ZmUxYjdlMmUwNGZkZTFkYmM5NDhlYTlmMmI5MGVh
YTc4NGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMjgsNiArMjgsOCBAQAog
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50Lmgi
CisjaW5jbHVkZSAiY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5oIgorI2luY2x1ZGUgImNjL0ND
RnJhbWVSYXRlQ29udHJvbGxlci5oIgogI2luY2x1ZGUgImNjL0NDSW5wdXRIYW5kbGVyLmgiCiAj
aW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiY2MvQ0NNYWluVGhyZWFk
VGFzay5oIgpAQCAtNTMsMzMgKzU1LDYgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzZXRUaHJlYWQo
Q0NUaHJlYWQqIGNjVGhyZWFkKQogI2VuZGlmCiB9CiAKLWNsYXNzIENDVGhyZWFkUHJveHlTY2hl
ZHVsZXJDbGllbnQgOiBwdWJsaWMgQ0NTY2hlZHVsZXJDbGllbnQgewotcHVibGljOgotICAgIHN0
YXRpYyBQYXNzT3duUHRyPENDVGhyZWFkUHJveHlTY2hlZHVsZXJDbGllbnQ+IGNyZWF0ZShDQ1Ro
cmVhZFByb3h5KiBwcm94eSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NU
aHJlYWRQcm94eVNjaGVkdWxlckNsaWVudChwcm94eSkpOwotICAgIH0KLSAgICB2aXJ0dWFsIH5D
Q1RocmVhZFByb3h5U2NoZWR1bGVyQ2xpZW50KCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2No
ZWR1bGVCZWdpbkZyYW1lQW5kQ29tbWl0KCkKLSAgICB7Ci0gICAgICAgIG1fcHJveHktPnBvc3RC
ZWdpbkZyYW1lQW5kQ29tbWl0T25JbXBsVGhyZWFkKCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2
b2lkIHNjaGVkdWxlRHJhd0FuZFN3YXAoKQotICAgIHsKLSAgICAgICAgbV9wcm94eS0+ZHJhd0xh
eWVyc0FuZFN3YXBPbkltcGxUaHJlYWQoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgQ0NUaHJlYWRQcm94eVNjaGVkdWxlckNsaWVudChDQ1RocmVhZFByb3h5KiBwcm94eSkKLSAg
ICB7Ci0gICAgICAgIG1fcHJveHkgPSBwcm94eTsKLSAgICB9Ci0KLSAgICBDQ1RocmVhZFByb3h5
KiBtX3Byb3h5OwotfTsKLQogUGFzc093blB0cjxDQ1Byb3h5PiBDQ1RocmVhZFByb3h5OjpjcmVh
dGUoQ0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KQogewogICAgIHJldHVybiBhZG9wdFB0
cihuZXcgQ0NUaHJlYWRQcm94eShsYXllclRyZWVIb3N0KSk7CkBAIC05Myw2ICs2OCw5IEBAIEND
VGhyZWFkUHJveHk6OkNDVGhyZWFkUHJveHkoQ0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0
KQogICAgICwgbV9sYXN0RXhlY3V0ZWRCZWdpbkZyYW1lQW5kQ29tbWl0U2VxdWVuY2VOdW1iZXIo
LTEpCiAgICAgLCBtX251bUJlZ2luRnJhbWVBbmRDb21taXRzSXNzdWVkT25JbXBsVGhyZWFkKDAp
CiAgICAgLCBtX21haW5UaHJlYWRQcm94eShDQ1Njb3BlZE1haW5UaHJlYWRQcm94eTo6Y3JlYXRl
KCkpCisgICAgLCBtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZCgwKQorICAgICwgbV9maW5p
c2hBbGxSZW5kZXJpbmdDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQoMCkKKyAgICAsIG1fY29t
bWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKDApCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkND
VGhyZWFkUHJveHk6OkNDVGhyZWFkUHJveHkiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwpAQCAtMTMwLDI4ICsxMDgsMjUgQEAgYm9vbCBDQ1RocmVhZFByb3h5Ojpjb21w
b3NpdGVBbmRSZWFkYmFjayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAg
fQogCiAgICAgLy8gRHJhdyB1c2luZyB0aGUgbmV3IHRyZWUgYW5kIHJlYWQgYmFjayB0aGUgcmVz
dWx0cy4KLSAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICBDQ0NvbXBsZXRpb25FdmVudCBj
b21wbGV0aW9uOwotICAgIHNfY2NUaHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0
aGlzLCAmQ0NUaHJlYWRQcm94eTo6ZHJhd0xheWVyc0FuZFJlYWRiYWNrT25JbXBsVGhyZWFkLCBB
bGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9uKSwgQWxsb3dDcm9zc1RocmVhZEFjY2Vz
cygmc3VjY2VzcyksIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MocGl4ZWxzKSwgcmVjdCkpOwotICAg
IGNvbXBsZXRpb24ud2FpdCgpOwotICAgIHJldHVybiBzdWNjZXNzOworICAgIFJlYWRiYWNrUmVx
dWVzdCByZXF1ZXN0OworICAgIHJlcXVlc3QucmVjdCA9IHJlY3Q7CisgICAgcmVxdWVzdC5waXhl
bHMgPSBwaXhlbHM7CisgICAgc19jY1RocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNr
KHRoaXMsICZDQ1RocmVhZFByb3h5OjpyZXF1ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQsIEFsbG93
Q3Jvc3NUaHJlYWRBY2Nlc3MoJnJlcXVlc3QpKSk7CisgICAgcmVxdWVzdC5jb21wbGV0aW9uLndh
aXQoKTsKKyAgICByZXR1cm4gcmVxdWVzdC5zdWNjZXNzOwogfQogCi12b2lkIENDVGhyZWFkUHJv
eHk6OmRyYXdMYXllcnNBbmRSZWFkYmFja09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCog
Y29tcGxldGlvbiwgYm9vbCogc3VjY2Vzcywgdm9pZCogcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQordm9pZCBDQ1RocmVhZFByb3h5OjpyZXF1ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQoUmVh
ZGJhY2tSZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJl
YWQoKSk7CisgICAgQVNTRVJUKCFtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZCk7CiAgICAg
aWYgKCFtX2xheWVyVHJlZUhvc3RJbXBsKSB7Ci0gICAgICAgICpzdWNjZXNzID0gZmFsc2U7Ci0g
ICAgICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOworICAgICAgICByZXF1ZXN0LT5zdWNjZXNzID0g
ZmFsc2U7CisgICAgICAgIHJlcXVlc3QtPmNvbXBsZXRpb24uc2lnbmFsKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgZHJhd0xheWVyc09uSW1wbFRocmVhZCgpOwotICAgIG1fbGF5ZXJU
cmVlSG9zdEltcGwtPnJlYWRiYWNrKHBpeGVscywgcmVjdCk7Ci0gICAgYm9vbCBsb3N0ID0gbV9s
YXllclRyZWVIb3N0SW1wbC0+aXNDb250ZXh0TG9zdCgpOwotICAgIGlmIChsb3N0KQotICAgICAg
ICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+ZGlkU3dhcEJ1ZmZlcnNBYm9ydCgpOwotICAgICpz
dWNjZXNzID0gIWxvc3Q7Ci0gICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CisgICAgbV9yZWFkYmFj
a1JlcXVlc3RPbkltcGxUaHJlYWQgPSByZXF1ZXN0OworICAgIG1fc2NoZWR1bGVyT25JbXBsVGhy
ZWFkLT5zZXROZWVkc1JlZHJhdygpOwogfQogCiBHcmFwaGljc0NvbnRleHQzRCogQ0NUaHJlYWRQ
cm94eTo6Y29udGV4dCgpCkBAIC0yNTMsNyArMjI4LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojpz
ZXROZWVkc0FuaW1hdGVPbkltcGxUaHJlYWQoKQogewogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQo
KSk7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0T25JbXBs
VGhyZWFkIiwgdGhpcywgMCk7Ci0gICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnJlcXVlc3RB
bmltYXRlKCk7CisgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNldE5lZWRzQW5pbWF0ZSgp
OwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6Om9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRo
cmVhZCgpCkBAIC0yNjcsNyArMjQyLDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzZXROZWVkc0Nv
bW1pdE9uSW1wbFRocmVhZCgpCiB7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBU
UkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQiLCB0
aGlzLCAwKTsKLSAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+cmVxdWVzdENvbW1pdCgpOwor
ICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXROZWVkc0NvbW1pdCgpOwogfQogCiB2b2lk
IENDVGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3KCkKQEAgLTI4MSw3ICsyNTYsNyBAQCB2b2lk
IENDVGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCkKIHsKICAgICBBU1NF
UlQoaXNJbXBsVGhyZWFkKCkpOwogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzZXRO
ZWVkc1JlZHJhd09uSW1wbFRocmVhZCIsIHRoaXMsIDApOwotICAgIG1fc2NoZWR1bGVyT25JbXBs
VGhyZWFkLT5yZXF1ZXN0UmVkcmF3KCk7CisgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNl
dE5lZWRzUmVkcmF3KCk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c3RhcnQoKQpAQCAtMzE4
LDE3ICsyOTMsMTQgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJpbmdPbklt
cGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24KIHsKICAgICBUUkFDRV9FVkVO
VCgiQ0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkIiwgdGhpcywg
MCk7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKLSAgICBpZiAobV9zY2hlZHVsZXJPbklt
cGxUaHJlYWQtPnJlZHJhd1BlbmRpbmcoKSkgewotICAgICAgICBkcmF3TGF5ZXJzT25JbXBsVGhy
ZWFkKCk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnN3YXBCdWZmZXJzKCk7Ci0gICAg
ICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5kaWREcmF3QW5kU3dhcCgpOwotICAgIH0KLSAg
ICBtX2xheWVyVHJlZUhvc3RJbXBsLT5maW5pc2hBbGxSZW5kZXJpbmcoKTsKLSAgICBjb21wbGV0
aW9uLT5zaWduYWwoKTsKKyAgICBBU1NFUlQoIW1fZmluaXNoQWxsUmVuZGVyaW5nQ29tcGxldGlv
bkV2ZW50T25JbXBsVGhyZWFkKTsKKyAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0TmVl
ZHNSZWRyYXcoKTsKKyAgICBtX2ZpbmlzaEFsbFJlbmRlcmluZ0NvbXBsZXRpb25FdmVudE9uSW1w
bFRocmVhZCA9IGNvbXBsZXRpb247CiB9CiAKLXZvaWQgQ0NUaHJlYWRQcm94eTo6cG9zdEJlZ2lu
RnJhbWVBbmRDb21taXRPbkltcGxUaHJlYWQoKQordm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVs
ZWRBY3Rpb25CZWdpbkZyYW1lKCkKIHsKKyAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6
c2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSIsIHRoaXMsIDApOwogICAgIG1fbWFpblRocmVhZFBy
b3h5LT5wb3N0VGFzayhjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uSW1wbFRocmVhZCgp
KTsKIH0KIApAQCAtMzk0LDEwICszNjYsMTMgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZy
YW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KICAg
ICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOwogCiAgICAgewotICAgICAgICAvLyBC
bG9ja2luZyBjYWxsIHRvIENDVGhyZWFkUHJveHk6OmNvbW1pdE9uSW1wbFRocmVhZAorICAgICAg
ICAvLyBOb3RpZnkgdGhlIGltcGwgdGhyZWFkIHRoYXQgdGhlIGJlZ2luRnJhbWUgaGFzIGNvbXBs
ZXRlZC4gVGhpcyB3aWxsCisgICAgICAgIC8vIGJlZ2luIHRoZSBjb21taXQgcHJvY2Vzcywgd2hp
Y2ggaXMgYmxvY2tpbmcgZnJvbSB0aGUgbWFpbiB0aHJlYWQncworICAgICAgICAvLyBwb2ludCBv
ZiB2aWV3LCBidXQgYXN5bmNocm9ub3VzbHkgcGVyZm9ybWQgb24gdGhlIGltcGwgdGhyZWFkLAor
ICAgICAgICAvLyBjb29yZGluYXRlZCBieSB0aGUgQ0NTY2hlZHVsZXIuCiAgICAgICAgIFRSQUNF
X0VWRU5UKCJjb21taXQiLCB0aGlzLCAwKTsKICAgICAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29t
cGxldGlvbjsKLSAgICAgICAgc19jY1RocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNr
KHRoaXMsICZDQ1RocmVhZFByb3h5Ojpjb21taXRPbkltcGxUaHJlYWQsIEFsbG93Q3Jvc3NUaHJl
YWRBY2Nlc3MoJmNvbXBsZXRpb24pKSk7CisgICAgICAgIHNfY2NUaHJlYWQtPnBvc3RUYXNrKGNy
ZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRl
T25JbXBsVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9uKSkpOwogICAg
ICAgICBjb21wbGV0aW9uLndhaXQoKTsKICAgICB9CiAKQEAgLTQxMCwyOCArMzg1LDYxIEBAIHZv
aWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIs
IGRvdWJsZSBmcmFtZUJlZ2luVGltCiAgICAgQVNTRVJUKG1fbGFzdEV4ZWN1dGVkQmVnaW5GcmFt
ZUFuZENvbW1pdFNlcXVlbmNlTnVtYmVyID09IHNlcXVlbmNlTnVtYmVyKTsKIH0KIAotdm9pZCBD
Q1RocmVhZFByb3h5Ojpjb21taXRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBs
ZXRpb24pCit2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVh
ZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NU
aHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdE9uSW1wbFRocmVhZCIsIHRoaXMsIDApOwor
ICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxU
aHJlYWQiLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQoIW1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25J
bXBsVGhyZWFkKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3Nj
aGVkdWxlck9uSW1wbFRocmVhZC0+Y29tbWl0UGVuZGluZygpKTsKICAgICBpZiAoIW1fbGF5ZXJU
cmVlSG9zdEltcGwpIHsKICAgICAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CisKKyAgICBtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCA9
IGNvbXBsZXRpb247CisKKyAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxU
aHJlYWQpOworICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkID0gYWRvcHRQ
dHIobmV3IENDVGV4dHVyZVVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0
dXJlQWxsb2NhdG9yKCkpKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCAqbV9jdXJyZW50VGV4dHVy
ZVVwZGF0ZXJPbkltcGxUaHJlYWQpOworCisKKyAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+
YmVnaW5GcmFtZUNvbXBsZXRlKCk7Cit9CisKK2Jvb2wgQ0NUaHJlYWRQcm94eTo6aGFzTW9yZVJl
c291cmNlVXBkYXRlcygpCit7CisgICAgaWYgKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1w
bFRocmVhZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2N1cnJlbnRUZXh0
dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+aGFzTW9yZVVwZGF0ZXMoKTsKK30KKwordm9pZCBDQ1Ro
cmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkKK3sKKyAgICBU
UkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291
cmNlcyIsIHRoaXMsIDApOworICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1w
bFRocmVhZCk7CisgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPnVwZGF0
ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIDEpOworfQorCit2b2lkIENDVGhyZWFk
UHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhy
ZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIHRoaXMsIDApOworICAgIEFTU0VSVCht
X2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7CisgICAgQVNTRVJUKCFtX2N1cnJl
bnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+aGFzTW9yZVVwZGF0ZXMoKSk7CisgICAgQVNT
RVJUKG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKKworICAgIG1fY3VycmVu
dFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmNsZWFyKCk7CisKKwogICAgIG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7CiAKICAgICBtX2xheWVyVHJlZUhvc3QtPmJlZ2luQ29t
bWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwogICAgIENDVGV4dHVy
ZVVwZGF0ZXIgdXBkYXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxv
Y2F0b3IoKSk7Ci0gICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgdXBkYXRlcik7Ci0gICAgd2hpbGUgKHVw
ZGF0ZXIudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgMSkpIHsgfQogICAg
IG1fbGF5ZXJUcmVlSG9zdC0+ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9z
dEltcGwuZ2V0KCkpOwogCiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29tbWl0Q29tcGxldGUo
KTsKIAotICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwotCi0gICAgbV9zY2hlZHVsZXJPbkltcGxU
aHJlYWQtPmRpZENvbW1pdCgpOworICAgIG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhy
ZWFkLT5zaWduYWwoKTsKKyAgICBtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCA9
IDA7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZHJhd0xheWVyc0FuZFN3YXBPbkltcGxUaHJl
YWQoKQpAQCAtNDQxLDIxICs0NDksMjggQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJz
QW5kU3dhcE9uSW1wbFRocmVhZCgpCiAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJbXBsKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBkcmF3TGF5ZXJzT25JbXBsVGhyZWFkKCk7Ci0gICAgbV9sYXll
clRyZWVIb3N0SW1wbC0+c3dhcEJ1ZmZlcnMoKTsKLSAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVh
ZC0+ZGlkRHJhd0FuZFN3YXAoKTsKLX0KKyAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5
ZXJzKCk7CiAKLXZvaWQgQ0NUaHJlYWRQcm94eTo6ZHJhd0xheWVyc09uSW1wbFRocmVhZCgpCi17
Ci0gICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmRyYXdMYXllcnNPbkltcGxUaHJlYWQi
LCB0aGlzLCAwKTsKLSAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwotICAgIEFTU0VSVChtX2xh
eWVyVHJlZUhvc3RJbXBsKTsKKyAgICAvLyBDaGVjayBmb3IgYSBwZW5kaW5nIGNvbXBvc2l0ZUFu
ZFJlYWRiYWNrCisgICAgaWYgKG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkKSB7CisgICAg
ICBtX2xheWVyVHJlZUhvc3RJbXBsLT5yZWFkYmFjayhtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRo
cmVhZC0+cGl4ZWxzLCBtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZC0+cmVjdCk7CisgICAg
ICBtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZC0+c3VjY2VzcyA9ICFtX2xheWVyVHJlZUhv
c3RJbXBsLT5pc0NvbnRleHRMb3N0KCk7CisgICAgICBtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRo
cmVhZC0+Y29tcGxldGlvbi5zaWduYWwoKTsKKyAgICAgIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBs
VGhyZWFkID0gMDsKKyAgICB9CisKKyAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zd2FwQnVmZmVy
cygpOwogCi0gICAgbV9sYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycygpOwogICAgIC8vIEZJ
WE1FOiBoYW5kbGUgY2FzZSB3aGVyZSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pc0NvbnRleHRMb3N0
LgogICAgIC8vIEZJWE1FOiBwYXNzIGRpZFN3YXBCdWZmZXJzQWJvcnQgaWYgbV9sYXllclRyZWVI
b3N0SW1wbC0+aXNDb250ZXh0TG9zdC4KICAgICBBU1NFUlQoIW1fbGF5ZXJUcmVlSG9zdEltcGwt
PmlzQ29udGV4dExvc3QoKSk7CisKKyAgICAvLyBQcm9jZXNzIGFueSBmaW5pc2ggcmVxdWVzdAor
ICAgIGlmIChtX2ZpbmlzaEFsbFJlbmRlcmluZ0NvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCkg
eworICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5maW5pc2hBbGxSZW5kZXJpbmcoKTsKKyAg
ICAgICAgbV9maW5pc2hBbGxSZW5kZXJpbmdDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQtPnNp
Z25hbCgpOworICAgICAgICBtX2ZpbmlzaEFsbFJlbmRlcmluZ0NvbXBsZXRpb25FdmVudE9uSW1w
bFRocmVhZCA9IDA7CisgICAgfQogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVJ
bXBsT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQpAQCAtNDYzLDgg
KzQ3OCw5IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUltcGxPbkltcGxUaHJlYWQo
Q0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFk
UHJveHk6OmluaXRpYWxpemVJbXBsT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CiAgICAgQVNTRVJU
KGlzSW1wbFRocmVhZCgpKTsKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsID0gbV9sYXllclRyZWVI
b3N0LT5jcmVhdGVMYXllclRyZWVIb3N0SW1wbCh0aGlzKTsKLSAgICBtX3NjaGVkdWxlckNsaWVu
dE9uSW1wbFRocmVhZCA9IENDVGhyZWFkUHJveHlTY2hlZHVsZXJDbGllbnQ6OmNyZWF0ZSh0aGlz
KTsKLSAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZCA9IENDU2NoZWR1bGVyOjpjcmVhdGUobV9z
Y2hlZHVsZXJDbGllbnRPbkltcGxUaHJlYWQuZ2V0KCkpOworICAgIGNvbnN0IGRvdWJsZSBkaXNw
bGF5UmVmcmVzaEludGVydmFsTXMgPSAxMDAwLjAgLyA2MC4wOworICAgIE93blB0cjxDQ0ZyYW1l
UmF0ZUNvbnRyb2xsZXI+IGZyYW1lUmF0ZUNvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgQ0NGcmFt
ZVJhdGVDb250cm9sbGVyKENDRGVsYXlCYXNlZFRpbWVTb3VyY2U6OmNyZWF0ZShkaXNwbGF5UmVm
cmVzaEludGVydmFsTXMsIHNfY2NUaHJlYWQpKSk7CisgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJl
YWQgPSBDQ1NjaGVkdWxlcjo6Y3JlYXRlKHRoaXMsIGZyYW1lUmF0ZUNvbnRyb2xsZXIucmVsZWFz
ZSgpKTsKICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKIH0KIApAQCAtNDkzLDQgKzUwOSwxMCBA
QCB2b2lkIENDVGhyZWFkUHJveHk6OmxheWVyVHJlZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQoQ0ND
b21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpbwogICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwogfQog
Cit2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKCkKK3sKKyAg
ICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAi
LCB0aGlzLCAwKTsKKyAgICBkcmF3TGF5ZXJzQW5kU3dhcE9uSW1wbFRocmVhZCgpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggNzExMGY3
MzIyMjcxZDBmNmVkOTNjMWY0OWQwOTAwNDVkNWUwY2Q3Mi4uMGZiNmM2ODM2NTU0N2UwNzkxYjc4
NjdjOTA1NGY2MTAyMTZhNzYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJj
Yy9DQ01haW5UaHJlYWQuaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCisjaW5jbHVkZSAiY2Mv
Q0NTY2hlZHVsZXIuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTM3LDExICszOCwxMCBAQCBjbGFzcyBDQ0lucHV0SGFuZGxlcjsKIGNsYXNzIEND
TGF5ZXJUcmVlSG9zdDsKIGNsYXNzIENDU2NoZWR1bGVyOwogY2xhc3MgQ0NTY29wZWRNYWluVGhy
ZWFkUHJveHk7CitjbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgQ0NUaHJlYWQ7Ci1jbGFz
cyBDQ1RocmVhZFByb3h5U2NoZWR1bGVyQ2xpZW50OwogCi1jbGFzcyBDQ1RocmVhZFByb3h5IDog
cHVibGljIENDUHJveHksIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQgewotICAgIGZyaWVuZCBj
bGFzcyBDQ1RocmVhZFByb3h5U2NoZWR1bGVyQ2xpZW50OworY2xhc3MgQ0NUaHJlYWRQcm94eSA6
IHB1YmxpYyBDQ1Byb3h5LCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50LCBDQ1NjaGVkdWxlckNs
aWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0VGhyZWFkKENDVGhyZWFkKik7CiAK
QEAgLTcwLDYgKzcwLDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRy
YXdPbkltcGxUaHJlYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXRPbkltcGxU
aHJlYWQoKTsKIAorICAgIC8vIENDU2NoZWR1bGVyQ2xpZW50IGltcGxlbWVudGF0aW9uCisgICAg
dmlydHVhbCBib29sIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgpOworICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRB
Y3Rpb25EcmF3QW5kU3dhcCgpOworICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25VcGRh
dGVNb3JlUmVzb3VyY2VzKCk7CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkNvbW1p
dCgpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IENDVGhyZWFkUHJveHkoQ0NMYXllclRyZWVI
b3N0Kik7CiAKQEAgLTc3LDEzICs4NCwxOCBAQCBwcml2YXRlOgogICAgIHZvaWQgYmVnaW5GcmFt
ZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltZSwgUGFz
c093blB0cjxDQ1Njcm9sbFVwZGF0ZVNldD4pOwogCiAgICAgLy8gQ2FsbGVkIG9uIENDVGhyZWFk
Ci0gICAgdm9pZCBwb3N0QmVnaW5GcmFtZUFuZENvbW1pdE9uSW1wbFRocmVhZCgpOworICAgIHN0
cnVjdCBSZWFkYmFja1JlcXVlc3QgeworICAgICAgICBDQ0NvbXBsZXRpb25FdmVudCBjb21wbGV0
aW9uOworICAgICAgICBib29sIHN1Y2Nlc3M7CisgICAgICAgIHZvaWQqIHBpeGVsczsKKyAgICAg
ICAgSW50UmVjdCByZWN0OworICAgIH07CiAgICAgUGFzc093blB0cjxDQ01haW5UaHJlYWQ6OlRh
c2s+IGNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25JbXBsVGhyZWFkKCk7CiAgICAgdm9p
ZCBvYnRhaW5CZWdpbkZyYW1lQW5kQ29tbWl0VGFza0Zyb21DQ1RocmVhZChDQ0NvbXBsZXRpb25F
dmVudCosIENDTWFpblRocmVhZDo6VGFzayoqKTsKLSAgICB2b2lkIGNvbW1pdE9uSW1wbFRocmVh
ZChDQ0NvbXBsZXRpb25FdmVudCopOworICAgIHZvaWQgYmVnaW5GcmFtZUNvbXBsZXRlT25JbXBs
VGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCBkcmF3TGF5ZXJzQW5kU3dhcE9u
SW1wbFRocmVhZCgpOwogICAgIHZvaWQgZHJhd0xheWVyc09uSW1wbFRocmVhZCgpOwotICAgIHZv
aWQgZHJhd0xheWVyc0FuZFJlYWRiYWNrT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kiwg
Ym9vbCogc3VjY2Vzcywgdm9pZCogcGl4ZWxzLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCBy
ZXF1ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQoUmVhZGJhY2tSZXF1ZXN0Kik7CiAgICAgdm9pZCBm
aW5pc2hBbGxSZW5kZXJpbmdPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2
b2lkIGluaXRpYWxpemVJbXBsT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAgICAg
dm9pZCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZChHcmFwaGljc0NvbnRleHQz
RCosIENDQ29tcGxldGlvbkV2ZW50KiwgYm9vbCogaW5pdGlhbGl6ZVN1Y2NlZWRlZCwgTGF5ZXJS
ZW5kZXJlckNhcGFiaWxpdGllcyosIGludCogY29tcG9zaXRvcklkZW50aWZpZXIpOwpAQCAtMTA4
LDEwICsxMjAsMTkgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8Q0NJbnB1dEhhbmRsZXI+IG1faW5w
dXRIYW5kbGVyT25JbXBsVGhyZWFkOwogCiAgICAgT3duUHRyPENDU2NoZWR1bGVyPiBtX3NjaGVk
dWxlck9uSW1wbFRocmVhZDsKLSAgICBPd25QdHI8Q0NUaHJlYWRQcm94eVNjaGVkdWxlckNsaWVu
dD4gbV9zY2hlZHVsZXJDbGllbnRPbkltcGxUaHJlYWQ7CiAKICAgICBSZWZQdHI8Q0NTY29wZWRN
YWluVGhyZWFkUHJveHk+IG1fbWFpblRocmVhZFByb3h5OwogCisgICAgLy8gU2V0IHdoZW50IGhl
IG1haW4gdGhyZWFkIGlzIHdhaWl0bmcgb24gYSByZWFkYmFjaworICAgIFJlYWRiYWNrUmVxdWVz
dCogbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQ7CisKKyAgICAvLyBTZXQgd2hlbiB0aGUg
bWFpbiB0aHJlYWQgaXMgd2FpdGluZyBvbiBhIGZpbmlzaEFsbFJlbmRlcmluZyBjYWxsCisgICAg
Q0NDb21wbGV0aW9uRXZlbnQqIG1fZmluaXNoQWxsUmVuZGVyaW5nQ29tcGxldGlvbkV2ZW50T25J
bXBsVGhyZWFkOworCisgICAgLy8gU2V0IHdoZW4gdGhlIG1haW4gdGhyZWFkIGlzIHdhaXRpbmcg
b24gYSBjb21taXQgdG8gY29tcGxldGUKKyAgICBDQ0NvbXBsZXRpb25FdmVudCogbV9jb21taXRD
b21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQ7CisgICAgT3duUHRyPENDVGV4dHVyZVVwZGF0ZXI+
IG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkOworCiAgICAgc3RhdGljIENDVGhy
ZWFkKiBzX2NjVGhyZWFkOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1NjaGVkdWxlclRlc3QuY3BwCmluZGV4IGRlMmNjNTZiZTc5MzNmYmQzNjg4NGJiNmRiNGZm
NmNmOTM0YjE3ZGMuLmRlZjkxMmNhNDJiZDk1NGNlNzViYjUyNGM1NjA2YTlkZTUzYjEwODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAK
QEAgLTMzLDYgKzMzLDggQEAKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAorLy8gRklYTUU6IGRvIHdlIG5lZWQgdGVzdHMgb2YgdGhlIHNjaGVkdWxlcj8g
SXRzIG1vc3RseSBhIHBhc3N0aHJvdWdoLgorI2lmIDAKIG5hbWVzcGFjZSB7CiAKIGNsYXNzIE1v
Y2tDQ1NjaGVkdWxlckNsaWVudCA6IHB1YmxpYyBDQ1NjaGVkdWxlckNsaWVudCB7CkBAIC04MCwz
ICs4Miw0IEBAIFRFU1RfRihDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RSZWRyYXcpCiB9CiAKIH0K
KyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112952</attachid>
            <date>2011-10-28 17:55:48 -0700</date>
            <delta_ts>2011-10-30 18:24:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71100-20111028175547.patch</filename>
            <type>text/plain</type>
            <size>51915</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTg3MDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiZWU1ZjU4MmNiMDlhZjdl
NmFiOWQ0ZGZiZTkxZDY2MTIzYmZhMzk1Li4wNTJmNjRkOTY2NGE5NjA5MThkOTVkMmM4OTFkYTE0
YTFmY2RmODQxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMTEtMTAtMjggIE5hdCBE
dWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQ29ubmVjdCBD
Q1RocmVhZFByb3h5IHRvIEZyYW1lUmF0ZUNvbnRyb2xsZXIgYW5kIFNjaGVkdWxlclN0YXRlTWFj
aGluZSB2aWEgQ0NTY2hlZHVsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTcxMTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGF5QmFzZWRU
aW1lU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlbGF5QmFzZWRUaW1lU291cmNlOjpt
b25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0Q2xpZW50OjpkaWRDb21taXRBbmREcmF3RnJhbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0OjpkaWRDb21taXRBbmREcmF3RnJhbWUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDU2NoZWR1bGVyRnJhbWVSYXRlQ29udHJvbGxlckNsaWVudEFkYXB0ZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlckZyYW1lUmF0ZUNvbnRyb2xsZXJDbGll
bnRBZGFwdGVyOjp+Q0NTY2hlZHVsZXJGcmFtZVJhdGVDb250cm9sbGVyQ2xpZW50QWRhcHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlckZyYW1lUmF0ZUNvbnRyb2xsZXJDbGllbnRB
ZGFwdGVyOjpiZWdpbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyRnJhbWVS
YXRlQ29udHJvbGxlckNsaWVudEFkYXB0ZXI6OkNDU2NoZWR1bGVyRnJhbWVSYXRlQ29udHJvbGxl
ckNsaWVudEFkYXB0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OkNDU2NoZWR1
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjp+Q0NTY2hlZHVsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OnNldE5lZWRzQW5pbWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1NjaGVkdWxlcjo6c2V0TmVlZHNDb21taXQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NTY2hlZHVsZXI6OnNldE5lZWRzUmVkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1
bGVyOjpiZWdpbkZyYW1lQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6
OmRpZFN3YXBCdWZmZXJzQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6
OmRpZFN3YXBCdWZmZXJzQWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6Om9u
QmVnaW5GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVk
dWxlZEFjdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjpjb21taXRQZW5kaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDU2NoZWR1bGVyOjpyZWRyYXdQZW5kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVwZGF0ZVN0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpiZWdpblVw
ZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpyZWRyYXdQZW5kaW5nKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OkNDU2luZ2xlVGhyZWFkUHJveHkpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21wb3NpdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6Omhhc01vcmVVcGRhdGVzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpDQ1RocmVhZFByb3h5KToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmNvbXBvc2l0ZUFuZFJlYWRiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnJlcXVlc3RSZWFkYmFja09uSW1wbFRo
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzZXROZWVkc0FuaW1hdGVP
bkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2V0TmVlZHND
b21taXRPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2V0
TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94
eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkND
VGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aGFzTW9yZVJlc291cmNlVXBkYXRlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVz
b3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlv
bkNvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJzQW5k
U3dhcE9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpkaWRD
b21taXRBbmREcmF3RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW5p
dGlhbGl6ZUltcGxPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94
eTo6bGF5ZXJUcmVlSG9zdENsb3NlZE9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorCiAyMDExLTEwLTI2
ICBOYXQgRHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIElt
cGxlbWVudCBmcmFtZSByYXRlIGNvbnRyb2wgcG9ydGlvbnMgb2YgQ0NTY2hlZHVsZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNTljYzQwOTdiNmNlZWEyZDE2M2YwNjcwOTYzN2RlZjRi
ZjRmNmY0ZC4uYmQyOTA4ODViYWMzZmY0NDgzNjllMTg1YmUxZDk2NzM1YzA1NTg1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0xMC0yOCAgTmF0IER1
Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDb25uZWN0IEND
VGhyZWFkUHJveHkgdG8gRnJhbWVSYXRlQ29udHJvbGxlciBhbmQgU2NoZWR1bGVyU3RhdGVNYWNo
aW5lIHZpYSBDQ1NjaGVkdWxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzExMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHRlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdGF0ZU1hY2hpbmU6OnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRlTWFjaGluZTo6dXBkYXRlTW9yZVJlc291cmNlc1Bl
bmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgICogdGVzdHMvQ0NTY2hl
ZHVsZXJUZXN0LmNwcDoKKwogMjAxMS0xMC0yNiAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBJbXBsZW1lbnQgZnJhbWUgcmF0ZSBjb250cm9sIHBv
cnRpb25zIG9mIENDU2NoZWR1bGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGF5QmFzZWRUaW1lU291
cmNlLmgKaW5kZXggMzc2NGYwZGE2ZTYxNDkwMTQ4YWIyN2Y5NzE0MWFkNmU5OGY5M2NlZC4uZDQ5
ODMyYTEwMjFlMGVmODk5NGUxNzZmNzY2M2M2MzljYjA0OGNiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2VkVGltZVNv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNldEFjdGl2ZShib29sKTsKIAogICAgIC8vIFZpcnR1YWwgZm9yIHRlc3Rp
bmcuCi0gICAgdmlydHVhbCBkb3VibGUgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgY29u
c3QgeyByZXR1cm4gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsgfQorICAgIHZp
cnR1YWwgZG91YmxlIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIGNvbnN0IHsgcmV0dXJu
IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgKiAxMDAwLjA7IH0KIAogcHJvdGVj
dGVkOgogICAgIENDRGVsYXlCYXNlZFRpbWVTb3VyY2UoZG91YmxlIGludGVydmFsTXMsIENDVGhy
ZWFkKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDFjNGQ0MzFkODYwMjM0OGNk
N2ZlZDg3ZTYwZjg4ZmZiNTU0NjkxZDAuLjEwOWU1ODg4NWUzOWM2ZmJkMTk3NTk4Njg4YjU3YzM5
OTViODdmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC01Nyw2ICs1Nyw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxEZWx0YShjb25zdCBJbnRTaXpl
JikgPSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRl
TGF5ZXJUcmVlSG9zdENvbnRleHQzRCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVh
dGVHcmFwaGljc0NvbnRleHQoYm9vbCBzdWNjZXNzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRp
ZENvbW1pdEFuZERyYXdGcmFtZShpbnQgZnJhbWVOdW1iZXIpIHsgfQogCiAgICAgLy8gVXNlZCBv
bmx5IGluIHRoZSBzaW5nbGUtdGhyZWFkZWQgcGF0aC4KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1
bGVDb21wb3NpdGUoKSA9IDA7CkBAIC0xMTEsNiArMTEyLDcgQEAgcHVibGljOgogICAgIFBhc3NS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUxheWVyVHJlZUhvc3RDb250ZXh0M0QoKTsK
ICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gY3JlYXRlTGF5ZXJU
cmVlSG9zdEltcGwoQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCopOwogICAgIHZvaWQgZGlkUmVj
cmVhdGVHcmFwaGljc0NvbnRleHQoYm9vbCBzdWNjZXNzKTsKKyAgICB2b2lkIGRpZENvbW1pdEFu
ZERyYXdGcmFtZShpbnQgZnJhbWVOdW1iZXIpIHsgbV9jbGllbnQtPmRpZENvbW1pdEFuZERyYXdG
cmFtZShmcmFtZU51bWJlcik7IH0KICAgICB2b2lkIGRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbklt
cGxUaHJlYWQoVGV4dHVyZUFsbG9jYXRvciopOwogCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0IGlu
dGVyZmFjZSB0byBXZWJWaWV3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCmluZGV4IGNlOTc3MGJl
ZTYxYjdmZGY4YTNkZDhhY2YwMGYwY2JhYjMwMjdjOGUuLmJmMWZjNWRmOGUyMzEyZGY1ZWViZTUz
YjEyZTdhZTM4MWY0N2JkZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKQEAgLTI1LDU4ICsy
NSwxMjQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgImNjL0NDU2NoZWR1bGVy
LmgiCisjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUND
U2NoZWR1bGVyOjpDQ1NjaGVkdWxlcihDQ1NjaGVkdWxlckNsaWVudCogY2xpZW50KQorCitjbGFz
cyBDQ1NjaGVkdWxlckZyYW1lUmF0ZUNvbnRyb2xsZXJDbGllbnRBZGFwdGVyIDogcHVibGljIEND
RnJhbWVSYXRlQ29udHJvbGxlckNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25Q
dHI8Q0NTY2hlZHVsZXJGcmFtZVJhdGVDb250cm9sbGVyQ2xpZW50QWRhcHRlcj4gY3JlYXRlKEND
U2NoZWR1bGVyKiBzY2hlZHVsZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IENDU2NoZWR1bGVyRnJhbWVSYXRlQ29udHJvbGxlckNsaWVudEFkYXB0ZXIoc2NoZWR1bGVyKSk7
CisgICAgfQorICAgIHZpcnR1YWwgfkNDU2NoZWR1bGVyRnJhbWVSYXRlQ29udHJvbGxlckNsaWVu
dEFkYXB0ZXIoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBiZWdpbkZyYW1lKCkgeyBtX3NjaGVk
dWxlci0+b25CZWdpbkZyYW1lKCk7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBDQ1NjaGVk
dWxlckZyYW1lUmF0ZUNvbnRyb2xsZXJDbGllbnRBZGFwdGVyKENDU2NoZWR1bGVyKiBzY2hlZHVs
ZXIpCisgICAgICAgICAgICA6IG1fc2NoZWR1bGVyKHNjaGVkdWxlcikgeyB9CisKKyAgICBDQ1Nj
aGVkdWxlciogbV9zY2hlZHVsZXI7Cit9OworCitDQ1NjaGVkdWxlcjo6Q0NTY2hlZHVsZXIoQ0NT
Y2hlZHVsZXJDbGllbnQqIGNsaWVudCwgUGFzc093blB0cjxDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXI+
IGZyYW1lUmF0ZUNvbnRyb2xsZXIpCiAgICAgOiBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX2Nv
bW1pdFBlbmRpbmcoZmFsc2UpCi0gICAgLCBtX3JlZHJhd1BlbmRpbmcoZmFsc2UpCisgICAgLCBt
X2ZyYW1lUmF0ZUNvbnRyb2xsZXIoZnJhbWVSYXRlQ29udHJvbGxlcikKKyAgICAsIG1fdXBkYXRl
TW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKKyAg
ICBtX2ZyYW1lUmF0ZUNvbnRyb2xsZXJDbGllbnRBZGFwdGVyID0gQ0NTY2hlZHVsZXJGcmFtZVJh
dGVDb250cm9sbGVyQ2xpZW50QWRhcHRlcjo6Y3JlYXRlKHRoaXMpOworICAgIG1fZnJhbWVSYXRl
Q29udHJvbGxlci0+c2V0Q2xpZW50KG1fZnJhbWVSYXRlQ29udHJvbGxlckNsaWVudEFkYXB0ZXIu
Z2V0KCkpOworCisgICAgLy8gRklYTUU6IG1ha2UgdGhlIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
IHR1cm4gb2ZmIEZyYW1lUmF0ZUNvbnRyb2xsZXIgaXQgaXNuJ3QgbmVlZGVkLgorICAgIG1fZnJh
bWVSYXRlQ29udHJvbGxlci0+c2V0QWN0aXZlKHRydWUpOwogfQogCi12b2lkIENDU2NoZWR1bGVy
OjpyZXF1ZXN0QW5pbWF0ZSgpCitDQ1NjaGVkdWxlcjo6fkNDU2NoZWR1bGVyKCkKIHsKLSAgICAv
LyBTdHViIHRocm91Z2ggdG8gcmVxdWVzdENvbW1pdCBmb3Igbm93LgotICAgIHJlcXVlc3RDb21t
aXQoKTsKKyAgICBtX2ZyYW1lUmF0ZUNvbnRyb2xsZXItPnNldEFjdGl2ZShmYWxzZSk7CiB9CiAK
LXZvaWQgQ0NTY2hlZHVsZXI6OnJlcXVlc3RDb21taXQoKQordm9pZCBDQ1NjaGVkdWxlcjo6c2V0
TmVlZHNBbmltYXRlKCkKIHsKLSAgICBpZiAobV9jb21taXRQZW5kaW5nKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtX2NvbW1pdFBlbmRpbmcgPSB0cnVlOwotICAgIG1fY2xpZW50LT5zY2hlZHVs
ZUJlZ2luRnJhbWVBbmRDb21taXQoKTsKKyAgICAvLyBTdHViIHRocm91Z2ggdG8gcmVxdWVzdENv
bW1pdCBmb3Igbm93LgorICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKLXZvaWQgQ0NTY2hlZHVs
ZXI6OnJlcXVlc3RSZWRyYXcoKQordm9pZCBDQ1NjaGVkdWxlcjo6c2V0TmVlZHNDb21taXQoKQog
ewotICAgIGlmIChtX3JlZHJhd1BlbmRpbmcpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcmVk
cmF3UGVuZGluZyA9IHRydWU7Ci0KLSAgICBtX2NsaWVudC0+c2NoZWR1bGVEcmF3QW5kU3dhcCgp
OworICAgIG1fc3RhdGVNYWNoaW5lLnNldE5lZWRzQ29tbWl0KCk7CisgICAgcHJvY2Vzc1NjaGVk
dWxlZEFjdGlvbnMoZmFsc2UpOwogfQogCi12b2lkIENDU2NoZWR1bGVyOjpkaWRDb21taXQoKQor
dm9pZCBDQ1NjaGVkdWxlcjo6c2V0TmVlZHNSZWRyYXcoKQogewotICAgIG1fY29tbWl0UGVuZGlu
ZyA9IGZhbHNlOworICAgIG1fc3RhdGVNYWNoaW5lLnNldE5lZWRzUmVkcmF3KCk7CisgICAgcHJv
Y2Vzc1NjaGVkdWxlZEFjdGlvbnMoZmFsc2UpOwogfQogCi12b2lkIENDU2NoZWR1bGVyOjpkaWRE
cmF3QW5kU3dhcCgpCit2b2lkIENDU2NoZWR1bGVyOjpiZWdpbkZyYW1lQ29tcGxldGUoKQogewot
ICAgIG1fcmVkcmF3UGVuZGluZyA9IGZhbHNlOworICAgIFRSQUNFX0VWRU5UKCJDQ1NjaGVkdWxl
cjo6YmVnaW5GcmFtZUNvbXBsZXRlIiwgdGhpcywgMCk7CisgICAgbV9zdGF0ZU1hY2hpbmUuYmVn
aW5GcmFtZUNvbXBsZXRlKCk7CisgICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoZmFsc2UpOwog
fQogCiB2b2lkIENDU2NoZWR1bGVyOjpkaWRTd2FwQnVmZmVyc0NvbXBsZXRlKCkKIHsKKyAgICBU
UkFDRV9FVkVOVCgiQ0NTY2hlZHVsZXI6OmRpZFN3YXBCdWZmZXJzQ29tcGxldGUiLCB0aGlzLCAw
KTsKKyAgICBtX2ZyYW1lUmF0ZUNvbnRyb2xsZXItPmRpZEZpbmlzaEZyYW1lKCk7CiB9CiAKIHZv
aWQgQ0NTY2hlZHVsZXI6OmRpZFN3YXBCdWZmZXJzQWJvcnQoKQogeworICAgIFRSQUNFX0VWRU5U
KCJDQ1NjaGVkdWxlcjo6ZGlkU3dhcEJ1ZmZlcnNBYm9ydCIsIHRoaXMsIDApOworICAgIG1fZnJh
bWVSYXRlQ29udHJvbGxlci0+ZGlkQWJvcnRBbGxQZW5kaW5nRnJhbWVzKCk7Cit9CisKK3ZvaWQg
Q0NTY2hlZHVsZXI6Om9uQmVnaW5GcmFtZSgpCit7CisgICAgaWYgKG1fdXBkYXRlTW9yZVJlc291
cmNlc1BlbmRpbmcpIHsKKyAgICAgICAgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IGZh
bHNlOworICAgICAgICBtX3N0YXRlTWFjaGluZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21w
bGV0ZShtX2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKTsKKyAgICB9CisgICAgcHJv
Y2Vzc1NjaGVkdWxlZEFjdGlvbnModHJ1ZSk7Cit9CisKK3ZvaWQgQ0NTY2hlZHVsZXI6OnByb2Nl
c3NTY2hlZHVsZWRBY3Rpb25zKGJvb2wgaW5zaWRlVlN5bmNUaWNrKQoreworICAgIC8vIEVhcmx5
IG91dCBzbyB3ZSBkb24ndCBzcGFtIFRSQUNFX0VWRU5UUyB3aXRoIHVzZWxlc3MgcHJvY2Vzc1Nj
aGVkdWxlZEFjdGlvbnMKKyAgICBpZiAobV9zdGF0ZU1hY2hpbmUubmV4dEFjdGlvbihpbnNpZGVW
U3luY1RpY2spID09IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpwcm9jZXNzU2NoZWR1
bGVkQWN0aW9ucyIsIHRoaXMsIDApOworICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rp
b24gYWN0aW9uOworICAgIGRvIHsKKyAgICAgICAgYWN0aW9uID0gbV9zdGF0ZU1hY2hpbmUubmV4
dEFjdGlvbihpbnNpZGVWU3luY1RpY2spOworICAgICAgICBzd2l0Y2ggKGFjdGlvbikgeworICAg
ICAgICBjYXNlIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORToKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0JFR0lOX0ZSQU1FOgorICAgICAgICAgICAgbV9jbGllbnQtPnNjaGVkdWxlZEFjdGlvbkJlZ2lu
RnJhbWUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTOgorICAgICAgICAg
ICAgbV9jbGllbnQtPnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKTsKKyAgICAg
ICAgICAgIC8vIENsZWFyIHRoaXMgZmxhZyBvbiB0aGUgbmV4dCBvbkJlZ2luRnJhbWUKKyAgICAg
ICAgICAgIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSB0cnVlOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01N
SVQ6CisgICAgICAgICAgICBtX2NsaWVudC0+c2NoZWR1bGVkQWN0aW9uQ29tbWl0KCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0RSQVc6CisgICAgICAgICAgICBtX2NsaWVudC0+c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3
YXAoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgbV9zdGF0ZU1hY2hpbmUu
dXBkYXRlU3RhdGUoYWN0aW9uKTsKKyAgICB9IHdoaWxlIChhY3Rpb24gIT0gQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKaW5k
ZXggMjI0MjA1MmM2OTUwMzc1OTQ2OGMxYWEzNWFkODI0ZWY2YzRmZWRjNC4uMmM2MWM3MmQ3NmVk
NmFmZWZiZDQ4MjFiYWRkYzdiYWUzOWJmYjA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCkBAIC0y
NSw2ICsyNSw5IEBACiAjaWZuZGVmIENDU2NoZWR1bGVyX2gKICNkZWZpbmUgQ0NTY2hlZHVsZXJf
aAogCisjaW5jbHVkZSAiY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiY2Mv
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaCIKKwogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKQEAgLTM0LDQwICszNyw1MSBAQCBjbGFz
cyBDQ1RocmVhZDsKIAogY2xhc3MgQ0NTY2hlZHVsZXJDbGllbnQgewogcHVibGljOgotICAgIHZp
cnR1YWwgdm9pZCBzY2hlZHVsZUJlZ2luRnJhbWVBbmRDb21taXQoKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHNjaGVkdWxlRHJhd0FuZFN3YXAoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc01v
cmVSZXNvdXJjZVVwZGF0ZXMoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0
aW9uQmVnaW5GcmFtZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uRHJh
d0FuZFN3YXAoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvblVwZGF0ZU1v
cmVSZXNvdXJjZXMoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkNvbW1p
dCgpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkNDU2NoZWR1bGVyQ2xpZW50KCkg
eyB9CiB9OwogCitjbGFzcyBDQ1NjaGVkdWxlckZyYW1lUmF0ZUNvbnRyb2xsZXJDbGllbnRBZGFw
dGVyOworCiBjbGFzcyBDQ1NjaGVkdWxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NT
Y2hlZHVsZXIpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDU2NoZWR1bGVyPiBj
cmVhdGUoQ0NTY2hlZHVsZXJDbGllbnQqIGNsaWVudCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxD
Q1NjaGVkdWxlcj4gY3JlYXRlKENDU2NoZWR1bGVyQ2xpZW50KiBjbGllbnQsIFBhc3NPd25QdHI8
Q0NGcmFtZVJhdGVDb250cm9sbGVyPiBmcmFtZVJhdGVDb250cm9sbGVyKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1NjaGVkdWxlcihjbGllbnQpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBDQ1NjaGVkdWxlcihjbGllbnQsIGZyYW1lUmF0ZUNvbnRyb2xsZXIp
KTsKICAgICB9CisgICAgfkNDU2NoZWR1bGVyKCk7CiAKLSAgICB2b2lkIHJlcXVlc3RBbmltYXRl
KCk7Ci0gICAgdm9pZCByZXF1ZXN0Q29tbWl0KCk7Ci0gICAgdm9pZCByZXF1ZXN0UmVkcmF3KCk7
CisgICAgdm9pZCBzZXROZWVkc0FuaW1hdGUoKTsKKyAgICB2b2lkIHNldE5lZWRzQ29tbWl0KCk7
CisgICAgdm9pZCBzZXROZWVkc1JlZHJhdygpOworCisgICAgdm9pZCBiZWdpbkZyYW1lQ29tcGxl
dGUoKTsKIAotICAgIHZvaWQgZGlkQ29tbWl0KCk7Ci0gICAgdm9pZCBkaWREcmF3QW5kU3dhcCgp
OwogICAgIHZvaWQgZGlkU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpOwogICAgIHZvaWQgZGlkU3dhcEJ1
ZmZlcnNBYm9ydCgpOwogCi0gICAgYm9vbCBjb21taXRQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9jb21taXRQZW5kaW5nOyB9Ci0gICAgYm9vbCByZWRyYXdQZW5kaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9yZWRyYXdQZW5kaW5nOyB9CisgICAgYm9vbCBjb21taXRQZW5kaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZU1hY2hpbmUuY29tbWl0UGVuZGluZygpOyB9CisgICAgYm9vbCByZWRyYXdQ
ZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZU1hY2hpbmUucmVkcmF3UGVuZGluZygpOyB9
CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQ0NTY2hlZHVsZXIoQ0NTY2hlZHVsZXJDbGllbnQq
KTsKKyAgICBDQ1NjaGVkdWxlcihDQ1NjaGVkdWxlckNsaWVudCosIFBhc3NPd25QdHI8Q0NGcmFt
ZVJhdGVDb250cm9sbGVyPik7CisgICAgZnJpZW5kIGNsYXNzIENDU2NoZWR1bGVyRnJhbWVSYXRl
Q29udHJvbGxlckNsaWVudEFkYXB0ZXI7CisgICAgdm9pZCBvbkJlZ2luRnJhbWUoKTsKKyAgICB2
b2lkIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKGJvb2wgaW5zaWRlVlN5bmNUaWNrKTsKIAogICAg
IENDU2NoZWR1bGVyQ2xpZW50KiBtX2NsaWVudDsKLQotICAgIGJvb2wgbV9jb21taXRQZW5kaW5n
OwotICAgIGJvb2wgbV9yZWRyYXdQZW5kaW5nOworICAgIE93blB0cjxDQ1NjaGVkdWxlckZyYW1l
UmF0ZUNvbnRyb2xsZXJDbGllbnRBZGFwdGVyPiBtX2ZyYW1lUmF0ZUNvbnRyb2xsZXJDbGllbnRB
ZGFwdGVyOworICAgIE93blB0cjxDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXI+IG1fZnJhbWVSYXRlQ29u
dHJvbGxlcjsKKyAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSBtX3N0YXRlTWFjaGluZTsKKyAg
ICBib29sIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxl
clN0YXRlTWFjaGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKaW5kZXggMDAzMDEyOTRlYTIwZGJj
MWEyZjg2OTliNjQ5ZDg4MzYyNDdlN2QxNS4uNzc0NDlhMWRiYWI3ZTMwNzRhY2RiN2NkMTI2NDdj
ZGMyYjgzYTA4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
LmNwcApAQCAtMzIsNyArMzIsNyBAQCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmUoKQogICAgIDogbV9jb21taXRTdGF0ZShDT01NSVRfU1RBVEVfSURMRSkK
ICAgICAsIG1fbmVlZHNSZWRyYXcoZmFsc2UpCiAgICAgLCBtX25lZWRzQ29tbWl0KGZhbHNlKQot
ICAgICwgbV91cGRhdGVkVGhpc0ZyYW1lKGZhbHNlKSB7IH0KKyAgICAsIG1fdXBkYXRlTW9yZVJl
c291cmNlc1BlbmRpbmcoZmFsc2UpIHsgfQogCiBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QWN0
aW9uIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9uKGJvb2wgaW5zaWRlVlN5bmNU
aWNrKSBjb25zdAogewpAQCAtNTIsOCArNTIsOCBAQCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QWN0aW9uIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9uKGJvb2wgaW5zaWRlVgog
ICAgIGNhc2UgQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUzoKICAgICAgICAgaWYgKG1f
bmVlZHNSZWRyYXcgJiYgaW5zaWRlVlN5bmNUaWNrKQogICAgICAgICAgICAgcmV0dXJuIEFDVElP
Tl9EUkFXOwotICAgICAgICBpZiAoIW1fdXBkYXRlZFRoaXNGcmFtZSkKLSAgICAgICAgICAgIHJl
dHVybiBBQ1RJT05fVVBEQVRFX01PUkVfUkVTT1VSQ0VTOworICAgICAgICBpZiAoIW1fdXBkYXRl
TW9yZVJlc291cmNlc1BlbmRpbmcpCisgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0JFR0lOX1VQ
REFURV9NT1JFX1JFU09VUkNFUzsKICAgICAgICAgcmV0dXJuIEFDVElPTl9OT05FOwogCiAgICAg
Y2FzZSBDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlUOgpAQCAtNzQsMTUgKzc0LDkgQEAgdm9p
ZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6dXBkYXRlU3RhdGUoQWN0aW9uIGFjdGlvbikKICAg
ICAgICAgbV9uZWVkc0NvbW1pdCA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAKLSAgICBjYXNl
IEFDVElPTl9VUERBVEVfTU9SRV9SRVNPVVJDRVM6CisgICAgY2FzZSBBQ1RJT05fQkVHSU5fVVBE
QVRFX01PUkVfUkVTT1VSQ0VTOgogICAgICAgICBBU1NFUlQobV9jb21taXRTdGF0ZSA9PSBDT01N
SVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTKTsKLSAgICAgICAgLy8gZ2V0TmV4dFN0YXRlKCkg
aW4gQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUyB3aWxsIG9ubHkgcmV0dXJuCi0gICAg
ICAgIC8vIEFDVElPTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMgd2hlbiBtX3VwZGF0ZWRUaGlzRnJh
bWUgaXMgdHJ1ZS4gSGVyZSwKLSAgICAgICAgLy8gc2V0IG1fdXBkYXRlZFRoaXNGcmFtZSB0byB0
cnVlIHRvIHByZXZlbnQgYWRkaXRpb25hbAotICAgICAgICAvLyBBQ1RJT05fVVBEQVRFX01PUkVf
UkVTT1VSQ0VTIGZyb20gYmVpbmcgaXNzdWVkLgotICAgICAgICAvLyBUaGlzIHdpbGwgdGhlbiBi
ZSBjbGVhcmVkIGJ5IGEgZHJhdyBhY3Rpb24sIGVmZmVjdGl2ZWx5IGxpbWl0aW5nIHVzCi0gICAg
ICAgIC8vIHRvIG9uZSBBQ1RJT05fVVBEQVRFX01PUkVfUkVTT1VSQ0VTIHBlciBmcmFtZS4KLSAg
ICAgICAgbV91cGRhdGVkVGhpc0ZyYW1lID0gdHJ1ZTsKKyAgICAgICAgbV91cGRhdGVNb3JlUmVz
b3VyY2VzUGVuZGluZyA9IHRydWU7CiAgICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgQUNUSU9O
X0NPTU1JVDoKQEAgLTkxLDcgKzg1LDYgQEAgdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
dXBkYXRlU3RhdGUoQWN0aW9uIGFjdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBB
Q1RJT05fRFJBVzoKLSAgICAgICAgbV91cGRhdGVkVGhpc0ZyYW1lID0gZmFsc2U7CiAgICAgICAg
IG1fbmVlZHNSZWRyYXcgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTExMywx
MCArMTA2LDEzIEBAIHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OmJlZ2luRnJhbWVDb21w
bGV0ZSgpCiAgICAgbV9jb21taXRTdGF0ZSA9IENPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJD
RVM7CiB9CiAKLXZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVwZGF0ZVJlc291cmNlc0Nv
bXBsZXRlKCkKK3ZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OmJlZ2luVXBkYXRlTW9yZVJl
c291cmNlc0NvbXBsZXRlKGJvb2wgbW9yZVBlbmRpbmcpCiB7CiAgICAgQVNTRVJUKG1fY29tbWl0
U3RhdGUgPT0gQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUyk7Ci0gICAgbV9jb21taXRT
dGF0ZSA9IENPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQ7CisgICAgQVNTRVJUKG1fdXBkYXRl
TW9yZVJlc291cmNlc1BlbmRpbmcpOworICAgIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcg
PSBmYWxzZTsKKyAgICBpZiAoIW1vcmVQZW5kaW5nKQorICAgICAgICBtX2NvbW1pdFN0YXRlID0g
Q09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKaW5kZXggNjQwNWUwN2VkMjljMGJiYzMyODMxMjZhNDNi
NGQwZGNmOGFmZDJkMC4uZjk5Y2U1MTlmOGJjYjA5ZDE4ZWMwZGJhMjE1ODlmYzZjZDNiYzJhMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCkBAIC01NSwxMCAr
NTUsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9jb21taXRTdGF0ZSAhPSBDT01NSVRf
U1RBVEVfSURMRTsKICAgICB9CiAKKyAgICBib29sIHJlZHJhd1BlbmRpbmcoKSBjb25zdCB7IHJl
dHVybiBtX25lZWRzUmVkcmF3OyB9CisKICAgICBlbnVtIEFjdGlvbiB7CiAgICAgICAgIEFDVElP
Tl9OT05FLAogICAgICAgICBBQ1RJT05fQkVHSU5fRlJBTUUsCi0gICAgICAgIEFDVElPTl9VUERB
VEVfTU9SRV9SRVNPVVJDRVMsCisgICAgICAgIEFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNP
VVJDRVMsCiAgICAgICAgIEFDVElPTl9DT01NSVQsCiAgICAgICAgIEFDVElPTl9EUkFXLAogICAg
IH07CkBAIC04MCwxNiArODIsMTUgQEAgcHVibGljOgogICAgIHZvaWQgYmVnaW5GcmFtZUNvbXBs
ZXRlKCk7CiAKICAgICAvLyBDYWxsIHRoaXMgb25seSBpbiByZXNwb25zZSB0byByZWNlaXZpbmcg
YW4gQUNUSU9OX1VQREFURV9NT1JFX1JFU09VUkNFUwotICAgIC8vIGZyb20gbmV4dFN0YXRlLiBJ
bmRpY2F0ZXN0IHRoYXQgYWxsIHJlc291Y2VzIGhhdmUgYmVlbiB1cGRhdGVkIGFuZCB0aGF0Ci0g
ICAgLy8gdGhlIG1haW4gdGhyZWFkIHRyZWUgY2FuIGJlIGNvbW1pdHRlZCB0byB0aGUgaW1wbCB0
cmVlLgotICAgIHZvaWQgdXBkYXRlUmVzb3VyY2VzQ29tcGxldGUoKTsKKyAgICAvLyBmcm9tIG5l
eHRTdGF0ZS4gSW5kaWNhdGVzdCB0aGF0IHRoZSBzcGVjaWZpYyB1cGRhdGUgcmVxdWVzdCBjb21w
bGV0ZWQuCisgICAgdm9pZCBiZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShib29sIG1v
cmVQZW5kaW5nKTsKIAogcHJvdGVjdGVkOgogICAgIENvbW1pdFN0YXRlIG1fY29tbWl0U3RhdGU7
CiAKICAgICBib29sIG1fbmVlZHNSZWRyYXc7CiAgICAgYm9vbCBtX25lZWRzQ29tbWl0OwotICAg
IGJvb2wgbV91cGRhdGVkVGhpc0ZyYW1lOworICAgIGJvb2wgbV91cGRhdGVNb3JlUmVzb3VyY2Vz
UGVuZGluZzsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAK
aW5kZXggMTQxODI2MTA0N2ZiYjE0NzFhODM5N2UyOGViMmNiNTRlM2U0ZjExYS4uMDJmMzcwZWUw
ODhkN2FjYjNlZjc5OGE2YTY2YmVkOWE3ZTczY2FlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5jcHAKQEAgLTUwLDYgKzUwLDcgQEAgQ0NTaW5nbGVUaHJlYWRQcm94eTo6
Q0NTaW5nbGVUaHJlYWRQcm94eShDQ0xheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QpCiAgICAg
LCBtX251bUZhaWxlZFJlY3JlYXRlQXR0ZW1wdHMoMCkKICAgICAsIG1fZ3JhcGhpY3NDb250ZXh0
TG9zdChmYWxzZSkKICAgICAsIG1fdGltZXNSZWNyZWF0ZVNob3VsZEZhaWwoMCkKKyAgICAsIG1f
bmV4dEZyYW1lSXNOZXdseUNvbW1pdHRlZEZyYW1lKGZhbHNlKQogewogICAgIFRSQUNFX0VWRU5U
KCJDQ1NpbmdsZVRocmVhZFByb3h5OjpDQ1NpbmdsZVRocmVhZFByb3h5IiwgdGhpcywgMCk7CiAg
ICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKQEAgLTE3NSw2ICsxNzYsNyBAQCB2
b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KCkKICNlbmRpZgogICAgIH0KICAgICBt
X2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CisgICAgbV9uZXh0RnJhbWVJc05ld2x5
Q29tbWl0dGVkRnJhbWUgPSB0cnVlOwogfQogCiB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnNl
dE5lZWRzQ29tbWl0VGhlblJlZHJhdygpCkBAIC0yOTMsNiArMjk1LDExIEBAIGJvb2wgQ0NTaW5n
bGVUaHJlYWRQcm94eTo6ZG9Db21wb3NpdGUoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCisgICAgaWYgKG1fbmV4dEZyYW1lSXNOZXdseUNvbW1pdHRlZEZyYW1lKSB7CisgICAgICAg
IG1fbmV4dEZyYW1lSXNOZXdseUNvbW1pdHRlZEZyYW1lID0gZmFsc2U7CisgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNv
dXJjZUZyYW1lTnVtYmVyKCkpOworICAgIH0KKwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Np
bmdsZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXggMTFhODNmYjU3ZGM3OTAzMDUwZWE2
YTRlNWY0M2VlZWFlZjI0NmYxNC4uMzIxM2JiMWQ0ZDk2OTk5OTkzM2U5MzBkNTViOTA3YjJiMjdm
ZDU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApAQCAtODEsNiArODEs
NyBAQCBwcml2YXRlOgogICAgIGludCBtX251bUZhaWxlZFJlY3JlYXRlQXR0ZW1wdHM7CiAgICAg
Ym9vbCBtX2dyYXBoaWNzQ29udGV4dExvc3Q7CiAgICAgaW50IG1fdGltZXNSZWNyZWF0ZVNob3Vs
ZEZhaWw7IC8vIFVzZWQgZHVyaW5nIHRlc3RpbmcuCisgICAgYm9vbCBtX25leHRGcmFtZUlzTmV3
bHlDb21taXR0ZWRGcmFtZTsKIH07CiAKIC8vIEZvciB1c2UgaW4gdGhlIHNpbmdsZS10aHJlYWRl
ZCBjYXNlLiBJbiBkZWJ1ZyBidWlsZHMsIGl0IHByZXRlbmRzIHRoYXQgdGhlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVV
cGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDQwODRkZWVhZjBmYmM3MGIwODU0YmFlNjBkOGVh
MjdhNzQzN2JhMjMuLjk4NDM3MGVkYTk1YzUyM2Y1OWVlNTVjODdhYzgyODcxZTAyYTczYmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC02MSw2ICs2MSwxMSBAQCB2b2lk
IENDVGV4dHVyZVVwZGF0ZXI6OmFwcGVuZChNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgTGF5ZXJU
ZXh0dXJlVXBkYXRlciogdXBkYQogICAgIG1fZW50cmllcy5hcHBlbmQoZW50cnkpOwogfQogCiti
b29sIENDVGV4dHVyZVVwZGF0ZXI6Omhhc01vcmVVcGRhdGVzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9lbnRyaWVzLnNpemUoKTsKK30KKwogYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjp1cGRhdGUo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHNpemVfdCBjb3VudCkKIHsKICAgICBzaXplX3Qg
bWF4SW5kZXggPSBtaW4obV9lbnRyeUluZGV4ICsgY291bnQsIG1fZW50cmllcy5zaXplKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCmluZGV4IDMwMzFjMzllNjBkODAyYWZmZTE2YWNk
ZWI3ODhiYWIyMDIxOWIyYWMuLjE3YjhhYWZhMDZjZTdhNmQyMGEwZTVmYjRjOTE0ZTcyZmM5Mzk0
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKQEAgLTQzLDYgKzQzLDggQEAgcHVi
bGljOgogCiAgICAgdm9pZCBhcHBlbmQoTWFuYWdlZFRleHR1cmUqLCBMYXllclRleHR1cmVVcGRh
dGVyKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3Qp
OwogCisgICAgYm9vbCBoYXNNb3JlVXBkYXRlcygpIGNvbnN0OworCiAgICAgLy8gVXBkYXRlIHNv
bWUgdGV4dHVyZXMuIFJldHVybnMgdHJ1ZSBpZiBtb3JlIHRleHR1cmVzIGxlZnQgdG8gcHJvY2Vz
cy4KICAgICBib29sIHVwZGF0ZShHcmFwaGljc0NvbnRleHQzRCosIHNpemVfdCBjb3VudCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggNzE3NmMyNDA3MGZjYzdmM2MzOGNlMDJm
OWQ4YTA2MGE4MzQxZWQ4Ny4uZTdmNDk1MDAzMzZjYzQwZDE0NTA3NzAzZWJmZTRmMzNlOTczNmNm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgorI2lu
Y2x1ZGUgImNjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuaCIKKyNpbmNsdWRlICJjYy9DQ0ZyYW1l
UmF0ZUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJjYy9DQ0lucHV0SGFuZGxlci5oIgogI2luY2x1
ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgImNjL0NDTWFpblRocmVhZFRhc2su
aCIKQEAgLTUzLDMzICs1NSw2IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0VGhyZWFkKENDVGhy
ZWFkKiBjY1RocmVhZCkKICNlbmRpZgogfQogCi1jbGFzcyBDQ1RocmVhZFByb3h5U2NoZWR1bGVy
Q2xpZW50IDogcHVibGljIENDU2NoZWR1bGVyQ2xpZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc093blB0cjxDQ1RocmVhZFByb3h5U2NoZWR1bGVyQ2xpZW50PiBjcmVhdGUoQ0NUaHJlYWRQ
cm94eSogcHJveHkpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDVGhyZWFk
UHJveHlTY2hlZHVsZXJDbGllbnQocHJveHkpKTsKLSAgICB9Ci0gICAgdmlydHVhbCB+Q0NUaHJl
YWRQcm94eVNjaGVkdWxlckNsaWVudCgpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIHNjaGVkdWxl
QmVnaW5GcmFtZUFuZENvbW1pdCgpCi0gICAgewotICAgICAgICBtX3Byb3h5LT5wb3N0QmVnaW5G
cmFtZUFuZENvbW1pdE9uSW1wbFRocmVhZCgpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZURyYXdBbmRTd2FwKCkKLSAgICB7Ci0gICAgICAgIG1fcHJveHktPmRyYXdMYXllcnNB
bmRTd2FwT25JbXBsVGhyZWFkKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IEND
VGhyZWFkUHJveHlTY2hlZHVsZXJDbGllbnQoQ0NUaHJlYWRQcm94eSogcHJveHkpCi0gICAgewot
ICAgICAgICBtX3Byb3h5ID0gcHJveHk7Ci0gICAgfQotCi0gICAgQ0NUaHJlYWRQcm94eSogbV9w
cm94eTsKLX07Ci0KIFBhc3NPd25QdHI8Q0NQcm94eT4gQ0NUaHJlYWRQcm94eTo6Y3JlYXRlKEND
TGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IENDVGhyZWFkUHJveHkobGF5ZXJUcmVlSG9zdCkpOwpAQCAtOTMsNiArNjgsMTAgQEAgQ0NUaHJl
YWRQcm94eTo6Q0NUaHJlYWRQcm94eShDQ0xheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QpCiAg
ICAgLCBtX2xhc3RFeGVjdXRlZEJlZ2luRnJhbWVBbmRDb21taXRTZXF1ZW5jZU51bWJlcigtMSkK
ICAgICAsIG1fbnVtQmVnaW5GcmFtZUFuZENvbW1pdHNJc3N1ZWRPbkltcGxUaHJlYWQoMCkKICAg
ICAsIG1fbWFpblRocmVhZFByb3h5KENDU2NvcGVkTWFpblRocmVhZFByb3h5OjpjcmVhdGUoKSkK
KyAgICAsIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkKDApCisgICAgLCBtX2ZpbmlzaEFs
bFJlbmRlcmluZ0NvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCgwKQorICAgICwgbV9jb21taXRD
b21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQoMCkKKyAgICAsIG1fbmV4dEZyYW1lSXNOZXdseUNv
bW1pdHRlZEZyYW1lT25JbXBsVGhyZWFkKGZhbHNlKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1Ro
cmVhZFByb3h5OjpDQ1RocmVhZFByb3h5IiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKQEAgLTEzMCwyOCArMTA5LDI1IEBAIGJvb2wgQ0NUaHJlYWRQcm94eTo6Y29tcG9z
aXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIH0K
IAogICAgIC8vIERyYXcgdXNpbmcgdGhlIG5ldyB0cmVlIGFuZCByZWFkIGJhY2sgdGhlIHJlc3Vs
dHMuCi0gICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7Ci0gICAgQ0NDb21wbGV0aW9uRXZlbnQgY29t
cGxldGlvbjsKLSAgICBzX2NjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhp
cywgJkNDVGhyZWFkUHJveHk6OmRyYXdMYXllcnNBbmRSZWFkYmFja09uSW1wbFRocmVhZCwgQWxs
b3dDcm9zc1RocmVhZEFjY2VzcygmY29tcGxldGlvbiksIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3Mo
JnN1Y2Nlc3MpLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHBpeGVscyksIHJlY3QpKTsKLSAgICBj
b21wbGV0aW9uLndhaXQoKTsKLSAgICByZXR1cm4gc3VjY2VzczsKKyAgICBSZWFkYmFja1JlcXVl
c3QgcmVxdWVzdDsKKyAgICByZXF1ZXN0LnJlY3QgPSByZWN0OworICAgIHJlcXVlc3QucGl4ZWxz
ID0gcGl4ZWxzOworICAgIHNfY2NUaHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0
aGlzLCAmQ0NUaHJlYWRQcm94eTo6cmVxdWVzdFJlYWRiYWNrT25JbXBsVGhyZWFkLCBBbGxvd0Ny
b3NzVGhyZWFkQWNjZXNzKCZyZXF1ZXN0KSkpOworICAgIHJlcXVlc3QuY29tcGxldGlvbi53YWl0
KCk7CisgICAgcmV0dXJuIHJlcXVlc3Quc3VjY2VzczsKIH0KIAotdm9pZCBDQ1RocmVhZFByb3h5
OjpkcmF3TGF5ZXJzQW5kUmVhZGJhY2tPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNv
bXBsZXRpb24sIGJvb2wqIHN1Y2Nlc3MsIHZvaWQqIHBpeGVscywgY29uc3QgSW50UmVjdCYgcmVj
dCkKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6cmVxdWVzdFJlYWRiYWNrT25JbXBsVGhyZWFkKFJlYWRi
YWNrUmVxdWVzdCogcmVxdWVzdCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFk
KCkpOworICAgIEFTU0VSVCghbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQpOwogICAgIGlm
ICghbV9sYXllclRyZWVIb3N0SW1wbCkgewotICAgICAgICAqc3VjY2VzcyA9IGZhbHNlOwotICAg
ICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKKyAgICAgICAgcmVxdWVzdC0+c3VjY2VzcyA9IGZh
bHNlOworICAgICAgICByZXF1ZXN0LT5jb21wbGV0aW9uLnNpZ25hbCgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIGRyYXdMYXllcnNPbkltcGxUaHJlYWQoKTsKLSAgICBtX2xheWVyVHJl
ZUhvc3RJbXBsLT5yZWFkYmFjayhwaXhlbHMsIHJlY3QpOwotICAgIGJvb2wgbG9zdCA9IG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmlzQ29udGV4dExvc3QoKTsKLSAgICBpZiAobG9zdCkKLSAgICAgICAg
bV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmRpZFN3YXBCdWZmZXJzQWJvcnQoKTsKLSAgICAqc3Vj
Y2VzcyA9ICFsb3N0OwotICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOworICAgIG1fcmVhZGJhY2tS
ZXF1ZXN0T25JbXBsVGhyZWFkID0gcmVxdWVzdDsKKyAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVh
ZC0+c2V0TmVlZHNSZWRyYXcoKTsKIH0KIAogR3JhcGhpY3NDb250ZXh0M0QqIENDVGhyZWFkUHJv
eHk6OmNvbnRleHQoKQpAQCAtMjUzLDcgKzIyOSw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0
TmVlZHNBbmltYXRlT25JbXBsVGhyZWFkKCkKIHsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkp
OwogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdE9uSW1wbFRo
cmVhZCIsIHRoaXMsIDApOwotICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5yZXF1ZXN0QW5p
bWF0ZSgpOworICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXROZWVkc0FuaW1hdGUoKTsK
IH0KIAogdm9pZCBDQ1RocmVhZFByb3h5OjpvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJl
YWQoKQpAQCAtMjY3LDcgKzI0Myw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21t
aXRPbkltcGxUaHJlYWQoKQogewogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgVFJB
Q0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkIiwgdGhp
cywgMCk7Ci0gICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnJlcXVlc3RDb21taXQoKTsKKyAg
ICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0TmVlZHNDb21taXQoKTsKIH0KIAogdm9pZCBD
Q1RocmVhZFByb3h5OjpzZXROZWVkc1JlZHJhdygpCkBAIC0yODEsNyArMjU3LDcgQEAgdm9pZCBD
Q1RocmVhZFByb3h5OjpzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpCiB7CiAgICAgQVNTRVJU
KGlzSW1wbFRocmVhZCgpKTsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2V0TmVl
ZHNSZWRyYXdPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKLSAgICBtX3NjaGVkdWxlck9uSW1wbFRo
cmVhZC0+cmVxdWVzdFJlZHJhdygpOworICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXRO
ZWVkc1JlZHJhdygpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OnN0YXJ0KCkKQEAgLTMxOCwx
NyArMjk0LDE0IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25JbXBs
VGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uCiB7CiAgICAgVFJBQ0VfRVZFTlQo
IkNDVGhyZWFkUHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZCIsIHRoaXMsIDAp
OwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7Ci0gICAgaWYgKG1fc2NoZWR1bGVyT25JbXBs
VGhyZWFkLT5yZWRyYXdQZW5kaW5nKCkpIHsKLSAgICAgICAgZHJhd0xheWVyc09uSW1wbFRocmVh
ZCgpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zd2FwQnVmZmVycygpOwotICAgICAg
ICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+ZGlkRHJhd0FuZFN3YXAoKTsKLSAgICB9Ci0gICAg
bV9sYXllclRyZWVIb3N0SW1wbC0+ZmluaXNoQWxsUmVuZGVyaW5nKCk7Ci0gICAgY29tcGxldGlv
bi0+c2lnbmFsKCk7CisgICAgQVNTRVJUKCFtX2ZpbmlzaEFsbFJlbmRlcmluZ0NvbXBsZXRpb25F
dmVudE9uSW1wbFRocmVhZCk7CisgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNldE5lZWRz
UmVkcmF3KCk7CisgICAgbV9maW5pc2hBbGxSZW5kZXJpbmdDb21wbGV0aW9uRXZlbnRPbkltcGxU
aHJlYWQgPSBjb21wbGV0aW9uOwogfQogCi12b2lkIENDVGhyZWFkUHJveHk6OnBvc3RCZWdpbkZy
YW1lQW5kQ29tbWl0T25JbXBsVGhyZWFkKCkKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVk
QWN0aW9uQmVnaW5GcmFtZSgpCiB7CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNj
aGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUiLCB0aGlzLCAwKTsKICAgICBtX21haW5UaHJlYWRQcm94
eS0+cG9zdFRhc2soY3JlYXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tPbkltcGxUaHJlYWQoKSk7
CiB9CiAKQEAgLTM5NCwxMCArMzY3LDEzIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFt
ZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltCiAgICAg
bV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKIAogICAgIHsKLSAgICAgICAgLy8gQmxv
Y2tpbmcgY2FsbCB0byBDQ1RocmVhZFByb3h5Ojpjb21taXRPbkltcGxUaHJlYWQKKyAgICAgICAg
Ly8gTm90aWZ5IHRoZSBpbXBsIHRocmVhZCB0aGF0IHRoZSBiZWdpbkZyYW1lIGhhcyBjb21wbGV0
ZWQuIFRoaXMgd2lsbAorICAgICAgICAvLyBiZWdpbiB0aGUgY29tbWl0IHByb2Nlc3MsIHdoaWNo
IGlzIGJsb2NraW5nIGZyb20gdGhlIG1haW4gdGhyZWFkJ3MKKyAgICAgICAgLy8gcG9pbnQgb2Yg
dmlldywgYnV0IGFzeW5jaHJvbm91c2x5IHBlcmZvcm1kIG9uIHRoZSBpbXBsIHRocmVhZCwKKyAg
ICAgICAgLy8gY29vcmRpbmF0ZWQgYnkgdGhlIENDU2NoZWR1bGVyLgogICAgICAgICBUUkFDRV9F
VkVOVCgiY29tbWl0IiwgdGhpcywgMCk7CiAgICAgICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBs
ZXRpb247Ci0gICAgICAgIHNfY2NUaHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0
aGlzLCAmQ0NUaHJlYWRQcm94eTo6Y29tbWl0T25JbXBsVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFk
QWNjZXNzKCZjb21wbGV0aW9uKSkpOworICAgICAgICBzX2NjVGhyZWFkLT5wb3N0VGFzayhjcmVh
dGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9u
SW1wbFRocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmY29tcGxldGlvbikpKTsKICAgICAg
ICAgY29tcGxldGlvbi53YWl0KCk7CiAgICAgfQogCkBAIC00MTAsMjggKzM4Niw2NCBAQCB2b2lk
IENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBk
b3VibGUgZnJhbWVCZWdpblRpbQogICAgIEFTU0VSVChtX2xhc3RFeGVjdXRlZEJlZ2luRnJhbWVB
bmRDb21taXRTZXF1ZW5jZU51bWJlciA9PSBzZXF1ZW5jZU51bWJlcik7CiB9CiAKLXZvaWQgQ0NU
aHJlYWRQcm94eTo6Y29tbWl0T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0
aW9uKQordm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQo
Q0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDVGhy
ZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXRPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKKyAg
ICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhy
ZWFkIiwgdGhpcywgMCk7CisgICAgQVNTRVJUKCFtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1w
bFRocmVhZCk7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9zY2hl
ZHVsZXJPbkltcGxUaHJlYWQpOwogICAgIEFTU0VSVChtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+
Y29tbWl0UGVuZGluZygpKTsKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwpIHsKICAgICAg
ICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBt
X2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCA9IGNvbXBsZXRpb247CisKKyAgICBB
U1NFUlQoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKKyAgICBtX2N1cnJl
bnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCA9IGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRh
dGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKSk7Cisg
ICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmNvbnRleHQoKSwgKm1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFk
KTsKKworCisgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmJlZ2luRnJhbWVDb21wbGV0ZSgp
OworfQorCitib29sIENDVGhyZWFkUHJveHk6Omhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKQorewor
ICAgIGlmICghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJl
YWQtPmhhc01vcmVVcGRhdGVzKCk7Cit9CisKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVk
QWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFk
UHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCB0aGlzLCAwKTsKKyAg
ICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOworICAgIG1fY3Vy
cmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT51cGRhdGUobV9sYXllclRyZWVIb3N0SW1w
bC0+Y29udGV4dCgpLCAxNik7Cit9CisKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0
aW9uQ29tbWl0KCkKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVk
QWN0aW9uQ29tbWl0IiwgdGhpcywgMCk7CisgICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRh
dGVyT25JbXBsVGhyZWFkKTsKKyAgICBBU1NFUlQoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25J
bXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRlcygpKTsKKyAgICBBU1NFUlQobV9jb21taXRDb21wbGV0
aW9uRXZlbnRPbkltcGxUaHJlYWQpOworCisgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbklt
cGxUaHJlYWQuY2xlYXIoKTsKKworCiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YmVnaW5Db21t
aXQoKTsKIAogICAgIG1fbGF5ZXJUcmVlSG9zdC0+YmVnaW5Db21taXRPbkltcGxUaHJlYWQobV9s
YXllclRyZWVIb3N0SW1wbC5nZXQoKSk7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKLSAgICBtX2xh
eWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1w
bC0+Y29udGV4dCgpLCB1cGRhdGVyKTsKLSAgICB3aGlsZSAodXBkYXRlci51cGRhdGUobV9sYXll
clRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCAxKSkgeyB9CiAgICAgbV9sYXllclRyZWVIb3N0LT5m
aW5pc2hDb21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7CiAKICAg
ICBtX2xheWVyVHJlZUhvc3RJbXBsLT5jb21taXRDb21wbGV0ZSgpOwogCi0gICAgY29tcGxldGlv
bi0+c2lnbmFsKCk7CisgICAgbV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJhbWVPbkltcGxU
aHJlYWQgPSB0cnVlOwogCi0gICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmRpZENvbW1pdCgp
OworICAgIG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkLT5zaWduYWwoKTsKKyAg
ICBtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCA9IDA7CiB9CiAKIHZvaWQgQ0NU
aHJlYWRQcm94eTo6ZHJhd0xheWVyc0FuZFN3YXBPbkltcGxUaHJlYWQoKQpAQCAtNDQxLDIxICs0
NTMsNDIgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJzQW5kU3dhcE9uSW1wbFRocmVh
ZCgpCiAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJbXBsKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBkcmF3TGF5ZXJzT25JbXBsVGhyZWFkKCk7Ci0gICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c3dh
cEJ1ZmZlcnMoKTsKLSAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+ZGlkRHJhd0FuZFN3YXAo
KTsKLX0KKyAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CiAKLXZvaWQgQ0NU
aHJlYWRQcm94eTo6ZHJhd0xheWVyc09uSW1wbFRocmVhZCgpCi17Ci0gICAgVFJBQ0VfRVZFTlQo
IkNDVGhyZWFkUHJveHk6OmRyYXdMYXllcnNPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKLSAgICBB
U1NFUlQoaXNJbXBsVGhyZWFkKCkpOwotICAgIEFTU0VSVChtX2xheWVyVHJlZUhvc3RJbXBsKTsK
KyAgICAvLyBDaGVjayBmb3IgYSBwZW5kaW5nIGNvbXBvc2l0ZUFuZFJlYWRiYWNrCisgICAgaWYg
KG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkKSB7CisgICAgICBtX2xheWVyVHJlZUhvc3RJ
bXBsLT5yZWFkYmFjayhtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZC0+cGl4ZWxzLCBtX3Jl
YWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZC0+cmVjdCk7CisgICAgICBtX3JlYWRiYWNrUmVxdWVz
dE9uSW1wbFRocmVhZC0+c3VjY2VzcyA9ICFtX2xheWVyVHJlZUhvc3RJbXBsLT5pc0NvbnRleHRM
b3N0KCk7CisgICAgICBtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZC0+Y29tcGxldGlvbi5z
aWduYWwoKTsKKyAgICAgIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkID0gMDsKKyAgICB9
CisKKyAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zd2FwQnVmZmVycygpOwogCi0gICAgbV9sYXll
clRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycygpOwogICAgIC8vIEZJWE1FOiBoYW5kbGUgY2FzZSB3
aGVyZSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pc0NvbnRleHRMb3N0LgogICAgIC8vIEZJWE1FOiBw
YXNzIGRpZFN3YXBCdWZmZXJzQWJvcnQgaWYgbV9sYXllclRyZWVIb3N0SW1wbC0+aXNDb250ZXh0
TG9zdC4KICAgICBBU1NFUlQoIW1fbGF5ZXJUcmVlSG9zdEltcGwtPmlzQ29udGV4dExvc3QoKSk7
CisKKyAgICAvLyBQcm9jZXNzIGFueSBmaW5pc2ggcmVxdWVzdAorICAgIGlmIChtX2ZpbmlzaEFs
bFJlbmRlcmluZ0NvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCkgeworICAgICAgICBtX2xheWVy
VHJlZUhvc3RJbXBsLT5maW5pc2hBbGxSZW5kZXJpbmcoKTsKKyAgICAgICAgbV9maW5pc2hBbGxS
ZW5kZXJpbmdDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQtPnNpZ25hbCgpOworICAgICAgICBt
X2ZpbmlzaEFsbFJlbmRlcmluZ0NvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCA9IDA7CisgICAg
fQorCisgICAgLy8gVGVsbCB0aGUgbWFpbiB0aHJlYWQgdGhlIGZyYW1lIGRyYXcsIGlmIGl0IHdh
cyBhIHJlYWwgbWFpbiB0aHJlYWQgZnJhbWUKKyAgICBpZiAobV9uZXh0RnJhbWVJc05ld2x5Q29t
bWl0dGVkRnJhbWVPbkltcGxUaHJlYWQpIHsKKyAgICAgICAgbV9uZXh0RnJhbWVJc05ld2x5Q29t
bWl0dGVkRnJhbWVPbkltcGxUaHJlYWQgPSBmYWxzZTsKKyAgICAgICAgbV9tYWluVGhyZWFkUHJv
eHktPnBvc3RUYXNrKGNyZWF0ZU1haW5UaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5Ojpk
aWRDb21taXRBbmREcmF3RnJhbWUsIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNvdXJjZUZyYW1lTnVt
YmVyKCkpKTsKKyAgICB9Cit9CisKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6ZGlkQ29tbWl0QW5kRHJh
d0ZyYW1lKGludCBmcmFtZU51bWJlcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIGlmICghbV9sYXllclRyZWVIb3N0KQorICAgICAgICByZXR1cm47CisgICAgbV9sYXllclRy
ZWVIb3N0LT5kaWRDb21taXRBbmREcmF3RnJhbWUoZnJhbWVOdW1iZXIpOwogfQogCiB2b2lkIEND
VGhyZWFkUHJveHk6OmluaXRpYWxpemVJbXBsT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50
KiBjb21wbGV0aW9uKQpAQCAtNDYzLDggKzQ5Niw5IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6aW5p
dGlhbGl6ZUltcGxPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiAg
ICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVJbXBsT25JbXBsVGhyZWFk
IiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBtX2xheWVyVHJl
ZUhvc3RJbXBsID0gbV9sYXllclRyZWVIb3N0LT5jcmVhdGVMYXllclRyZWVIb3N0SW1wbCh0aGlz
KTsKLSAgICBtX3NjaGVkdWxlckNsaWVudE9uSW1wbFRocmVhZCA9IENDVGhyZWFkUHJveHlTY2hl
ZHVsZXJDbGllbnQ6OmNyZWF0ZSh0aGlzKTsKLSAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZCA9
IENDU2NoZWR1bGVyOjpjcmVhdGUobV9zY2hlZHVsZXJDbGllbnRPbkltcGxUaHJlYWQuZ2V0KCkp
OworICAgIGNvbnN0IGRvdWJsZSBkaXNwbGF5UmVmcmVzaEludGVydmFsTXMgPSAxMDAwLjAgLyA2
MC4wOworICAgIE93blB0cjxDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXI+IGZyYW1lUmF0ZUNvbnRyb2xs
ZXIgPSBhZG9wdFB0cihuZXcgQ0NGcmFtZVJhdGVDb250cm9sbGVyKENDRGVsYXlCYXNlZFRpbWVT
b3VyY2U6OmNyZWF0ZShkaXNwbGF5UmVmcmVzaEludGVydmFsTXMsIHNfY2NUaHJlYWQpKSk7Cisg
ICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQgPSBDQ1NjaGVkdWxlcjo6Y3JlYXRlKHRoaXMsIGZy
YW1lUmF0ZUNvbnRyb2xsZXIucmVsZWFzZSgpKTsKICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsK
IH0KIApAQCAtNDkwLDcgKzUyNCwxNCBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmxheWVyVHJlZUhv
c3RDbG9zZWRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpbwogICAgIG1f
bGF5ZXJUcmVlSG9zdC0+ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChtX2xheWVy
VHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CiAgICAgbV9sYXllclRy
ZWVIb3N0SW1wbC5jbGVhcigpOwogICAgIG1faW5wdXRIYW5kbGVyT25JbXBsVGhyZWFkLmNsZWFy
KCk7CisgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKICAgICBjb21wbGV0aW9u
LT5zaWduYWwoKTsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3
QW5kU3dhcCgpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFj
dGlvbkRyYXdBbmRTd2FwIiwgdGhpcywgMCk7CisgICAgZHJhd0xheWVyc0FuZFN3YXBPbkltcGxU
aHJlYWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5oCmluZGV4IDcxMTBmNzMyMjI3MWQwZjZlZDkzYzFmNDlkMDkwMDQ1ZDVlMGNkNzIuLjk2YmYw
ZTIwYTE1MTBiYjFhNmU3MzllNTU2Y2FmNzMzMjQ4Zjg3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmgiCiAjaW5jbHVkZSAiY2MvQ0NNYWluVGhyZWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5o
IgorI2luY2x1ZGUgImNjL0NDU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNywxMSArMzgsMTAgQEAgY2xhc3MgQ0NJbnB1dEhh
bmRsZXI7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7CiBjbGFzcyBDQ1NjaGVkdWxlcjsKIGNsYXNz
IENDU2NvcGVkTWFpblRocmVhZFByb3h5OworY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNz
IENDVGhyZWFkOwotY2xhc3MgQ0NUaHJlYWRQcm94eVNjaGVkdWxlckNsaWVudDsKIAotY2xhc3Mg
Q0NUaHJlYWRQcm94eSA6IHB1YmxpYyBDQ1Byb3h5LCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50
IHsKLSAgICBmcmllbmQgY2xhc3MgQ0NUaHJlYWRQcm94eVNjaGVkdWxlckNsaWVudDsKK2NsYXNz
IENDVGhyZWFkUHJveHkgOiBwdWJsaWMgQ0NQcm94eSwgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVu
dCwgQ0NTY2hlZHVsZXJDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldFRocmVh
ZChDQ1RocmVhZCopOwogCkBAIC03MCwyMCArNzAsMzMgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRO
ZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpOwogCisgICAgLy8gQ0NTY2hlZHVsZXJDbGllbnQgaW1w
bGVtZW50YXRpb24KKyAgICB2aXJ0dWFsIGJvb2wgaGFzTW9yZVJlc291cmNlVXBkYXRlcygpOwor
ICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCk7CisgICAgdmlydHVh
bCB2b2lkIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKCk7CisgICAgdmlydHVhbCB2b2lkIHNj
aGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2No
ZWR1bGVkQWN0aW9uQ29tbWl0KCk7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ0NUaHJlYWRQ
cm94eShDQ0xheWVyVHJlZUhvc3QqKTsKIAogICAgIC8vIENhbGxlZCBvbiBDQ01haW5UaHJlYWQK
ICAgICB2b2lkIGJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUg
ZnJhbWVCZWdpblRpbWUsIFBhc3NPd25QdHI8Q0NTY3JvbGxVcGRhdGVTZXQ+KTsKKyAgICB2b2lk
IGRpZENvbW1pdEFuZERyYXdGcmFtZShpbnQgZnJhbWVOdW1iZXIpOwogCiAgICAgLy8gQ2FsbGVk
IG9uIENDVGhyZWFkCi0gICAgdm9pZCBwb3N0QmVnaW5GcmFtZUFuZENvbW1pdE9uSW1wbFRocmVh
ZCgpOworICAgIHN0cnVjdCBSZWFkYmFja1JlcXVlc3QgeworICAgICAgICBDQ0NvbXBsZXRpb25F
dmVudCBjb21wbGV0aW9uOworICAgICAgICBib29sIHN1Y2Nlc3M7CisgICAgICAgIHZvaWQqIHBp
eGVsczsKKyAgICAgICAgSW50UmVjdCByZWN0OworICAgIH07CiAgICAgUGFzc093blB0cjxDQ01h
aW5UaHJlYWQ6OlRhc2s+IGNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25JbXBsVGhyZWFk
KCk7CiAgICAgdm9pZCBvYnRhaW5CZWdpbkZyYW1lQW5kQ29tbWl0VGFza0Zyb21DQ1RocmVhZChD
Q0NvbXBsZXRpb25FdmVudCosIENDTWFpblRocmVhZDo6VGFzayoqKTsKLSAgICB2b2lkIGNvbW1p
dE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOworICAgIHZvaWQgYmVnaW5GcmFtZUNv
bXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCBkcmF3TGF5
ZXJzQW5kU3dhcE9uSW1wbFRocmVhZCgpOwogICAgIHZvaWQgZHJhd0xheWVyc09uSW1wbFRocmVh
ZCgpOwotICAgIHZvaWQgZHJhd0xheWVyc0FuZFJlYWRiYWNrT25JbXBsVGhyZWFkKENDQ29tcGxl
dGlvbkV2ZW50KiwgYm9vbCogc3VjY2Vzcywgdm9pZCogcGl4ZWxzLCBjb25zdCBJbnRSZWN0Jik7
CisgICAgdm9pZCByZXF1ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQoUmVhZGJhY2tSZXF1ZXN0Kik7
CiAgICAgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmdPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZl
bnQqKTsKICAgICB2b2lkIGluaXRpYWxpemVJbXBsT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2
ZW50Kik7CiAgICAgdm9pZCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZChHcmFw
aGljc0NvbnRleHQzRCosIENDQ29tcGxldGlvbkV2ZW50KiwgYm9vbCogaW5pdGlhbGl6ZVN1Y2Nl
ZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyosIGludCogY29tcG9zaXRvcklkZW50aWZp
ZXIpOwpAQCAtMTA4LDEwICsxMjEsMjIgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8Q0NJbnB1dEhh
bmRsZXI+IG1faW5wdXRIYW5kbGVyT25JbXBsVGhyZWFkOwogCiAgICAgT3duUHRyPENDU2NoZWR1
bGVyPiBtX3NjaGVkdWxlck9uSW1wbFRocmVhZDsKLSAgICBPd25QdHI8Q0NUaHJlYWRQcm94eVNj
aGVkdWxlckNsaWVudD4gbV9zY2hlZHVsZXJDbGllbnRPbkltcGxUaHJlYWQ7CiAKICAgICBSZWZQ
dHI8Q0NTY29wZWRNYWluVGhyZWFkUHJveHk+IG1fbWFpblRocmVhZFByb3h5OwogCisgICAgLy8g
U2V0IHdoZW50IGhlIG1haW4gdGhyZWFkIGlzIHdhaWl0bmcgb24gYSByZWFkYmFjaworICAgIFJl
YWRiYWNrUmVxdWVzdCogbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQ7CisKKyAgICAvLyBT
ZXQgd2hlbiB0aGUgbWFpbiB0aHJlYWQgaXMgd2FpdGluZyBvbiBhIGZpbmlzaEFsbFJlbmRlcmlu
ZyBjYWxsCisgICAgQ0NDb21wbGV0aW9uRXZlbnQqIG1fZmluaXNoQWxsUmVuZGVyaW5nQ29tcGxl
dGlvbkV2ZW50T25JbXBsVGhyZWFkOworCisgICAgLy8gU2V0IHdoZW4gdGhlIG1haW4gdGhyZWFk
IGlzIHdhaXRpbmcgb24gYSBjb21taXQgdG8gY29tcGxldGUKKyAgICBDQ0NvbXBsZXRpb25FdmVu
dCogbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQ7CisgICAgT3duUHRyPENDVGV4
dHVyZVVwZGF0ZXI+IG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkOworCisgICAg
Ly8gU2V0IHdoZW4gdGhlIG5leHQgZHJhdyBzaG91bGQgcG9zdCBkaWRDb21taXRBbmREcmF3RnJh
bWUgdG8gdGhlIG1haW4gdGhyZWFkLgorICAgIGJvb2wgbV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0
dGVkRnJhbWVPbkltcGxUaHJlYWQ7CisKICAgICBzdGF0aWMgQ0NUaHJlYWQqIHNfY2NUaHJlYWQ7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKaW5kZXggMzg0ZGFmZmQyYWNjMmVhZDZhZjJh
ZDk0ZTU0MDU1MDE0NjJmNTBkMy4uNjYzZTg2ODYxNjMyMmYyMWM3YTA3Mzc1NWNmMjFjNTUzMmQ4
MDk0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxl
clN0YXRlTWFjaGluZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcApAQCAtNTQsOCArNTQsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXROZWVkc1JlZHJhdyhib29sIGIpIHsgbV9uZWVkc1JlZHJhdyA9IGI7IH0K
ICAgICBib29sIG5lZWRzUmVkcmF3KCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc1JlZHJhdzsgfQog
Ci0gICAgdm9pZCBzZXRVcGRhdGVkVGhpc0ZyYW1lKGJvb2wgYikgeyBtX3VwZGF0ZWRUaGlzRnJh
bWUgPSBiOyB9Ci0gICAgYm9vbCB1cGRhdGVkVGhpc0ZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV91
cGRhdGVkVGhpc0ZyYW1lOyB9CisgICAgdm9pZCBzZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGlu
Zyhib29sIGIpIHsgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IGI7IH0KKyAgICBib29s
IHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV91cGRhdGVNb3Jl
UmVzb3VyY2VzUGVuZGluZzsgfQogfTsKIAogVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRl
c3QsIFRlc3ROZXh0QWN0aW9uQmVnaW5zRnJhbWVJZk5lZWRlZCkKQEAgLTY2LDcgKzY2LDcgQEAg
VEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3ROZXh0QWN0aW9uQmVnaW5zRnJh
bWVJZk5lZWRlZCkKICAgICAgICAgc3RhdGUuc2V0Q29tbWl0U3RhdGUoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9JRExFKTsKICAgICAgICAgc3RhdGUuc2V0TmVlZHNSZWRy
YXcoZmFsc2UpOwogICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdChmYWxzZSk7Ci0gICAgICAg
IHN0YXRlLnNldFVwZGF0ZWRUaGlzRnJhbWUoZmFsc2UpOworICAgICAgICBzdGF0ZS5zZXRVcGRh
dGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7CiAgICAgICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oZmFsc2UpKTsK
ICAgICAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwg
c3RhdGUubmV4dEFjdGlvbih0cnVlKSk7CiAgICAgfQpAQCAtNzcsNyArNzcsNyBAQCBURVNUKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5leHRBY3Rpb25CZWdpbnNGcmFtZUlmTmVl
ZGVkKQogICAgICAgICBzdGF0ZS5zZXRDb21taXRTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6Q09NTUlUX1NUQVRFX0lETEUpOwogICAgICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyhmYWxz
ZSk7CiAgICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOwotICAgICAgICBzdGF0ZS5z
ZXRVcGRhdGVkVGhpc0ZyYW1lKGZhbHNlKTsKKyAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJl
c291cmNlc1BlbmRpbmcoZmFsc2UpOwogICAgICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbihmYWxzZSkpOwog
ICAgIH0KIApAQCAtOTksMjQgKzk5LDI0IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVU
ZXN0LCBUZXN0TmV4dEFjdGlvbkRyYXdzT25WU3luYykKICAgICAgICAgc3RhdGUuc2V0Q29tbWl0
U3RhdGUoYWxsQ29tbWl0U3RhdGVzW2ldKTsKICAgICAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXco
dHJ1ZSk7CiAKLSAgICAgICAgLy8gQ2FzZSAxOiBuZWVkc0NvbW1pdD1mYWxzZSB1cGRhdGVkVGhp
c0ZyYW1lPWZhbHNlIHZzeW5jPWZhbHNlLgorICAgICAgICAvLyBDYXNlIDE6IG5lZWRzQ29tbWl0
PWZhbHNlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPWZhbHNlIHZzeW5jPWZhbHNlLgogICAg
ICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdChmYWxzZSk7Ci0gICAgICAgIHN0YXRlLnNldFVwZGF0
ZWRUaGlzRnJhbWUoZmFsc2UpOworICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2Vz
UGVuZGluZyhmYWxzZSk7CiAgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oZmFsc2UpKTsKIAotICAgICAgICAvLyBD
YXNlIDI6IG5lZWRzQ29tbWl0PWZhbHNlIHVwZGF0ZWRUaGlzRnJhbWU9dHJ1ZSB2c3luYz1mYWxz
ZS4KKyAgICAgICAgLy8gQ2FzZSAyOiBuZWVkc0NvbW1pdD1mYWxzZSB1cGRhdGVNb3JlUmVzb3Vy
Y2VzUGVuZGluZz10cnVlIHZzeW5jPWZhbHNlLgogICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1p
dChmYWxzZSk7Ci0gICAgICAgIHN0YXRlLnNldFVwZGF0ZWRUaGlzRnJhbWUodHJ1ZSk7CisgICAg
ICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKHRydWUpOwogICAgICAgICBF
WFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0
QWN0aW9uKGZhbHNlKSk7CiAKLSAgICAgICAgLy8gQ2FzZSAzOiBuZWVkc0NvbW1pdD10cnVlIHVw
ZGF0ZWRUaGlzRnJhbWU9ZmFsc2UgdnN5bmM9ZmFsc2UuCisgICAgICAgIC8vIENhc2UgMzogbmVl
ZHNDb21taXQ9dHJ1ZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz1mYWxzZSB2c3luYz1mYWxz
ZS4KICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7Ci0gICAgICAgIHN0YXRlLnNl
dFVwZGF0ZWRUaGlzRnJhbWUoZmFsc2UpOworICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVz
b3VyY2VzUGVuZGluZyhmYWxzZSk7CiAgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oZmFsc2UpKTsKIAotICAgICAg
ICAvLyBDYXNlIDQ6IG5lZWRzQ29tbWl0PXRydWUgdXBkYXRlZFRoaXNGcmFtZT10cnVlIHZzeW5j
PWZhbHNlLgorICAgICAgICAvLyBDYXNlIDQ6IG5lZWRzQ29tbWl0PXRydWUgdXBkYXRlTW9yZVJl
c291cmNlc1BlbmRpbmc9dHJ1ZSB2c3luYz1mYWxzZS4KICAgICAgICAgc3RhdGUuc2V0TmVlZHND
b21taXQodHJ1ZSk7Ci0gICAgICAgIHN0YXRlLnNldFVwZGF0ZWRUaGlzRnJhbWUodHJ1ZSk7Cisg
ICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKHRydWUpOwogICAgICAg
ICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5u
ZXh0QWN0aW9uKGZhbHNlKSk7CiAgICAgfQogCkBAIC0xMzEsNTYgKzEzMSw5OSBAQCBURVNUKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5leHRBY3Rpb25EcmF3c09uVlN5bmMpCiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGV4cGVjdGVkQWN0aW9uID0gQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQ7CiAKLSAgICAgICAgLy8gQ2FzZSAxOiBuZWVkc0NvbW1p
dD1mYWxzZSB1cGRhdGVkVGhpc0ZyYW1lPWZhbHNlIHZzeW5jPXRydWUuCisgICAgICAgIC8vIENh
c2UgMTogbmVlZHNDb21taXQ9ZmFsc2UgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc9ZmFsc2Ug
dnN5bmM9dHJ1ZS4KICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQoZmFsc2UpOwotICAgICAg
ICBzdGF0ZS5zZXRVcGRhdGVkVGhpc0ZyYW1lKGZhbHNlKTsKKyAgICAgICAgc3RhdGUuc2V0VXBk
YXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwogICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0
ZWRBY3Rpb24sIHN0YXRlLm5leHRBY3Rpb24odHJ1ZSkpOwogCi0gICAgICAgIC8vIENhc2UgMjog
bmVlZHNDb21taXQ9ZmFsc2UgdXBkYXRlZFRoaXNGcmFtZT10cnVlIHZzeW5jPXRydWUuCisgICAg
ICAgIC8vIENhc2UgMjogbmVlZHNDb21taXQ9ZmFsc2UgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRp
bmc9dHJ1ZSB2c3luYz10cnVlLgogICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdChmYWxzZSk7
Ci0gICAgICAgIHN0YXRlLnNldFVwZGF0ZWRUaGlzRnJhbWUodHJ1ZSk7CisgICAgICAgIHN0YXRl
LnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKHRydWUpOwogICAgICAgICBFWFBFQ1RfRVEo
ZXhwZWN0ZWRBY3Rpb24sIHN0YXRlLm5leHRBY3Rpb24odHJ1ZSkpOwogCi0gICAgICAgIC8vIENh
c2UgMzogbmVlZHNDb21taXQ9dHJ1ZSB1cGRhdGVkVGhpc0ZyYW1lPWZhbHNlIHZzeW5jPXRydWUu
CisgICAgICAgIC8vIENhc2UgMzogbmVlZHNDb21taXQ9dHJ1ZSB1cGRhdGVNb3JlUmVzb3VyY2Vz
UGVuZGluZz1mYWxzZSB2c3luYz10cnVlLgogICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0
cnVlKTsKLSAgICAgICAgc3RhdGUuc2V0VXBkYXRlZFRoaXNGcmFtZShmYWxzZSk7CisgICAgICAg
IHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKICAgICAgICAgRVhQ
RUNUX0VRKGV4cGVjdGVkQWN0aW9uLCBzdGF0ZS5uZXh0QWN0aW9uKHRydWUpKTsKIAotICAgICAg
ICAvLyBDYXNlIDQ6IG5lZWRzQ29tbWl0PXRydWUgdXBkYXRlZFRoaXNGcmFtZT10cnVlIHZzeW5j
PXRydWUuCisgICAgICAgIC8vIENhc2UgNDogbmVlZHNDb21taXQ9dHJ1ZSB1cGRhdGVNb3JlUmVz
b3VyY2VzUGVuZGluZz10cnVlIHZzeW5jPXRydWUuCiAgICAgICAgIHN0YXRlLnNldE5lZWRzQ29t
bWl0KHRydWUpOwotICAgICAgICBzdGF0ZS5zZXRVcGRhdGVkVGhpc0ZyYW1lKHRydWUpOworICAg
ICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsKICAgICAgICAg
RVhQRUNUX0VRKGV4cGVjdGVkQWN0aW9uLCBzdGF0ZS5uZXh0QWN0aW9uKHRydWUpKTsKICAgICB9
CiB9CiAKLVRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc1Jlc291
cmNlc09uY2VQZXJGcmFtZSkKK1RFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0
VXBkYXRlc19Ob1JlZHJhd19PbmVSb3VuZE9mVXBkYXRlcykKIHsKLSAgICAvLyBXaGVuIG5vIHJl
ZHJhdyBpcyBuZWVkZWQgLS0tIHVwZGF0ZSB1bnRpbCBkb25lCi0gICAgewotICAgICAgICBTdGF0
ZU1hY2hpbmUgc3RhdGU7Ci0gICAgICAgIHN0YXRlLnNldENvbW1pdFN0YXRlKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTKTsKLSAgICAgICAg
c3RhdGUuc2V0TmVlZHNSZWRyYXcoZmFsc2UpOwotICAgICAgICBzdGF0ZS5zZXRVcGRhdGVkVGhp
c0ZyYW1lKGZhbHNlKTsKLSAgICAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKGZhbHNlKSk7
Ci0gICAgICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX1VQREFU
RV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbih0cnVlKSk7Ci0gICAgfQorICAgIFN0
YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5zZXRDb21taXRTdGF0ZShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUyk7CisgICAgc3RhdGUu
c2V0TmVlZHNSZWRyYXcoZmFsc2UpOworICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQ
ZW5kaW5nKGZhbHNlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oZmFsc2Up
KTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9V
UERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24odHJ1ZSkpOworCisgICAgLy8g
QmVnaW4gYW4gdXBkYXRlLgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKKyAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9u
KGZhbHNlKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
Tk9ORSwgc3RhdGUubmV4dEFjdGlvbih0cnVlKSk7CiAKLSAgICAvLyBPbmNlIHdlIHVwZGF0ZSBy
ZXNvdXJjZXMsIGRvbid0IGRvIGl0IGFnYWluIHVudGlsIGEgZHJhdwotICAgIHsKLSAgICAgICAg
U3RhdGVNYWNoaW5lIHN0YXRlOwotICAgICAgICBzdGF0ZS5zZXRDb21taXRTdGF0ZShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUyk7Ci0gICAg
ICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KHRydWUpOwotICAgICAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5l
eHRBY3Rpb24oZmFsc2UpKTsKLSAgICAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOwotICAgICAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0
aW9uKGZhbHNlKSk7CisgICAgLy8gRW5kIHVwZGF0ZSB3aXRoIG5vIG1vcmUgdXBkYXRlcyBwZW5k
aW5nLgorICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsK
KyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0
YXRlLm5leHRBY3Rpb24oZmFsc2UpKTsKK30KIAotICAgICAgICAvLyBvbmNlIHdlJ3ZlIGRyYXdu
IGFnYWluLCBpdCBzaG91bGQgYWxsb3cgdXMgdG8gdXBkYXRlIChyZWdhcmRsZXNzIG9mIHZzeW5j
IHN0YXRlKQotICAgICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKHRydWUpKTsKLSAgICAgICAgc3RhdGUudXBkYXRlU3Rh
dGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXKTsKK1RFU1QoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19Ud29Sb3VuZHNPZlVwZGF0
ZXMpCit7CisgICAgU3RhdGVNYWNoaW5lIHN0YXRlOworICAgIHN0YXRlLnNldENvbW1pdFN0YXRl
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VT
KTsKKyAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyhmYWxzZSk7CisgICAgc3RhdGUuc2V0VXBkYXRl
TW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4
dEFjdGlvbihmYWxzZSkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbih0cnVl
KSk7CisKKyAgICAvLyBCZWdpbiBhbiB1ZHBhdGUuCisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMp
OworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0
YXRlLm5leHRBY3Rpb24oZmFsc2UpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKHRydWUpKTsKIAotICAgICAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9VUERBVEVfTU9SRV9SRVNP
VVJDRVMsIHN0YXRlLm5leHRBY3Rpb24odHJ1ZSkpOwotICAgICAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5l
eHRBY3Rpb24oZmFsc2UpKTsKLSAgICB9CisgICAgLy8gQWNrIHRoZSB1cGRhdGUgd2l0aCBtb3Jl
IHBlbmRpbmcuCisgICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUodHJ1
ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5f
VVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKGZhbHNlKSk7CisgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVf
UkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKHRydWUpKTsKKworICAgIC8vIEJlZ2luIGFub3Ro
ZXIgdXBkYXRlLCBlbmQgaXQgd2l0aCBub25lIGVwZW5kaW5nLgorICAgIHN0YXRlLnVwZGF0ZVN0
YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVT
T1VSQ0VTKTsKKyAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxz
ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlU
LCBzdGF0ZS5uZXh0QWN0aW9uKGZhbHNlKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9uKHRydWUpKTsKK30KKwor
VEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX1dpdGhSZWRyYXdf
T25lUm91bmRPZlVwZGF0ZXMpCit7CisgICAgU3RhdGVNYWNoaW5lIHN0YXRlOworICAgIHN0YXRl
LnNldENvbW1pdFN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBE
QVRJTkdfUkVTT1VSQ0VTKTsKKyAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0cnVlKTsKKyAgICBz
dGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7CisgICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VS
Q0VTLCBzdGF0ZS5uZXh0QWN0aW9uKGZhbHNlKSk7CisKKyAgICAvLyBCZWdpbiBhbiB1cGRhdGUu
CisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9C
RUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24odHJ1ZSkpOworCisgICAg
Ly8gRHJhdy4KKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX0RSQVcpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24odHJ1ZSkpOworCisgICAgLy8gRmluaXNoIHVwZGF0
ZSwgbGV2YWUgbW9yZSByZXNvdXJjZXMgcGVuZGluZy4KKyAgICBzdGF0ZS5iZWdpblVwZGF0ZU1v
cmVSZXNvdXJjZXNDb21wbGV0ZSh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRB
Y3Rpb24oZmFsc2UpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24odHJ1ZSkp
OworCisgICAgLy8gQmVnaW4gYW5vdGhlciB1cGRhdGUuIEZpbmlzaCBpdCBpbW1lZGlhdGVseS4K
KyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JF
R0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CisgICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVz
b3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbihmYWxzZSkpOworICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFj
dGlvbih0cnVlKSk7CiB9CiAKIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0
U2V0TmVlZHNDb21taXRJc05vdExvc3QpCkBAIC0yMDAsMTcgKzI0MywxNyBAQCBURVNUKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFNldE5lZWRzQ29tbWl0SXNOb3RMb3N0KQogICAg
IC8vIExldCB0aGUgZnJhbWUgZmluaXNoLgogICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgp
OwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQ
REFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7Ci0gICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0
ZS5uZXh0QWN0aW9uKGZhbHNlKSk7Ci0gICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOworICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09V
UkNFUywgc3RhdGUubmV4dEFjdGlvbihmYWxzZSkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VT
KTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBz
dGF0ZS5uZXh0QWN0aW9uKGZhbHNlKSk7Ci0gICAgc3RhdGUudXBkYXRlUmVzb3VyY2VzQ29tcGxl
dGUoKTsKKyAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7
CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVB
RFlfVE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oZmFsc2Up
KTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQs
IHN0YXRlLm5leHRBY3Rpb24odHJ1ZSkpOwogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlUKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9JRExFLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsK
IAotICAgIC8vIHZlcmlmeSB0aGF0IGFub3RoZXIgY29tbWl0IHdpbGwgYmVnaW4KKyAgICAvLyBW
ZXJpZnkgdGhhdCBhbm90aGVyIGNvbW1pdCB3aWxsIGJlZ2luLgogICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9u
KGZhbHNlKSk7CiB9CiAKQEAgLTIzMSwxMCArMjc0LDExIEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xlKQogICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0
aGUgZnJhbWUgZmluaXNoZWQuCiAgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CiAgICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdf
UkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRB
Y3Rpb24oZmFsc2UpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oZmFsc2Up
KTsKIAotICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgdXBkYXRlIGlzIGRvbmUuCi0gICAg
c3RhdGUudXBkYXRlUmVzb3VyY2VzQ29tcGxldGUoKTsKKyAgICAvLyBUZWxsIHRoZSBzY2hlZHVs
ZXIgdGhlIHVwZGF0ZSBiZWdhbiBhbmQgZmluaXNoZWQKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNF
Uyk7CisgICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwog
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1JFQURZ
X1RPX0NPTU1JVCwgc3RhdGUuY29tbWl0U3RhdGUoKSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9uKGZhbHNlKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNw
cAppbmRleCBkZTJjYzU2YmU3OTMzZmJkMzY4ODRiYjZkYjRmZjZjZjkzNGIxN2RjLi5kZWY5MTJj
YTQyYmQ5NTRjZTc1YmI1MjRjNTYwNmE5ZGU1M2IxMDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCkBAIC0zMyw2ICszMyw4IEBACiB1
c2luZyBuYW1lc3BhY2UgV1RGOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKKy8vIEZJWE1F
OiBkbyB3ZSBuZWVkIHRlc3RzIG9mIHRoZSBzY2hlZHVsZXI/IEl0cyBtb3N0bHkgYSBwYXNzdGhy
b3VnaC4KKyNpZiAwCiBuYW1lc3BhY2UgewogCiBjbGFzcyBNb2NrQ0NTY2hlZHVsZXJDbGllbnQg
OiBwdWJsaWMgQ0NTY2hlZHVsZXJDbGllbnQgewpAQCAtODAsMyArODIsNCBAQCBURVNUX0YoQ0NT
Y2hlZHVsZXJUZXN0LCBSZXF1ZXN0UmVkcmF3KQogfQogCiB9CisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113007</attachid>
            <date>2011-10-30 18:24:08 -0700</date>
            <delta_ts>2011-10-31 13:29:02 -0700</delta_ts>
            <desc>nits and tests</desc>
            <filename>bug-71100-20111030182407.patch</filename>
            <type>text/plain</type>
            <size>75636</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTg3MDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiZWU1ZjU4MmNiMDlhZjdl
NmFiOWQ0ZGZiZTkxZDY2MTIzYmZhMzk1Li4wNTJmNjRkOTY2NGE5NjA5MThkOTVkMmM4OTFkYTE0
YTFmY2RmODQxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMTEtMTAtMjggIE5hdCBE
dWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQ29ubmVjdCBD
Q1RocmVhZFByb3h5IHRvIEZyYW1lUmF0ZUNvbnRyb2xsZXIgYW5kIFNjaGVkdWxlclN0YXRlTWFj
aGluZSB2aWEgQ0NTY2hlZHVsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTcxMTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGF5QmFzZWRU
aW1lU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlbGF5QmFzZWRUaW1lU291cmNlOjpt
b25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0Q2xpZW50OjpkaWRDb21taXRBbmREcmF3RnJhbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0OjpkaWRDb21taXRBbmREcmF3RnJhbWUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDU2NoZWR1bGVyRnJhbWVSYXRlQ29udHJvbGxlckNsaWVudEFkYXB0ZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlckZyYW1lUmF0ZUNvbnRyb2xsZXJDbGll
bnRBZGFwdGVyOjp+Q0NTY2hlZHVsZXJGcmFtZVJhdGVDb250cm9sbGVyQ2xpZW50QWRhcHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlckZyYW1lUmF0ZUNvbnRyb2xsZXJDbGllbnRB
ZGFwdGVyOjpiZWdpbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyRnJhbWVS
YXRlQ29udHJvbGxlckNsaWVudEFkYXB0ZXI6OkNDU2NoZWR1bGVyRnJhbWVSYXRlQ29udHJvbGxl
ckNsaWVudEFkYXB0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OkNDU2NoZWR1
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjp+Q0NTY2hlZHVsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OnNldE5lZWRzQW5pbWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1NjaGVkdWxlcjo6c2V0TmVlZHNDb21taXQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NTY2hlZHVsZXI6OnNldE5lZWRzUmVkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1
bGVyOjpiZWdpbkZyYW1lQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6
OmRpZFN3YXBCdWZmZXJzQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6
OmRpZFN3YXBCdWZmZXJzQWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6Om9u
QmVnaW5GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVk
dWxlZEFjdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjpjb21taXRQZW5kaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDU2NoZWR1bGVyOjpyZWRyYXdQZW5kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVwZGF0ZVN0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpiZWdpblVw
ZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpyZWRyYXdQZW5kaW5nKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OkNDU2luZ2xlVGhyZWFkUHJveHkpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21wb3NpdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6Omhhc01vcmVVcGRhdGVzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpDQ1RocmVhZFByb3h5KToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmNvbXBvc2l0ZUFuZFJlYWRiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnJlcXVlc3RSZWFkYmFja09uSW1wbFRo
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzZXROZWVkc0FuaW1hdGVP
bkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2V0TmVlZHND
b21taXRPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2V0
TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94
eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkND
VGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aGFzTW9yZVJlc291cmNlVXBkYXRlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVz
b3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlv
bkNvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJzQW5k
U3dhcE9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpkaWRD
b21taXRBbmREcmF3RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW5p
dGlhbGl6ZUltcGxPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94
eTo6bGF5ZXJUcmVlSG9zdENsb3NlZE9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorCiAyMDExLTEwLTI2
ICBOYXQgRHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIElt
cGxlbWVudCBmcmFtZSByYXRlIGNvbnRyb2wgcG9ydGlvbnMgb2YgQ0NTY2hlZHVsZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNTljYzQwOTdiNmNlZWEyZDE2M2YwNjcwOTYzN2RlZjRi
ZjRmNmY0ZC4uYmQyOTA4ODViYWMzZmY0NDgzNjllMTg1YmUxZDk2NzM1YzA1NTg1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0xMC0yOCAgTmF0IER1
Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDb25uZWN0IEND
VGhyZWFkUHJveHkgdG8gRnJhbWVSYXRlQ29udHJvbGxlciBhbmQgU2NoZWR1bGVyU3RhdGVNYWNo
aW5lIHZpYSBDQ1NjaGVkdWxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzExMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHRlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdGF0ZU1hY2hpbmU6OnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRlTWFjaGluZTo6dXBkYXRlTW9yZVJlc291cmNlc1Bl
bmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgICogdGVzdHMvQ0NTY2hl
ZHVsZXJUZXN0LmNwcDoKKwogMjAxMS0xMC0yNiAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBJbXBsZW1lbnQgZnJhbWUgcmF0ZSBjb250cm9sIHBv
cnRpb25zIG9mIENDU2NoZWR1bGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsYXlCYXNlZFRpbWVT
b3VyY2UuY3BwCmluZGV4IGE5ZDIzN2E0YTI1NzUwM2E3YTAyZmUyOTNkN2RhZTM5NzA3NGVkNjQu
LmQxM2ZkMzMzMGZjZTA1YTRhZGJiMjVhM2UyMTQyMjYyMzUzNjliYTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsYXlCYXNlZFRp
bWVTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
bmNsdWRlICJjYy9DQ1RocmVhZC5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkVGFzay5oIgorI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTc0
LDYgKzc1LDExIEBAIHZvaWQgQ0NEZWxheUJhc2VkVGltZVNvdXJjZTo6b25UaWNrKCkKICAgICB0
aGlzLT5kZXJlZigpOwogfQogCitkb3VibGUgQ0NEZWxheUJhc2VkVGltZVNvdXJjZTo6bW9ub3Rv
bmljYWxseUluY3JlYXNpbmdUaW1lTXMoKSBjb25zdAoreworICAgIHJldHVybiBXVEY6Om1vbm90
b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpICogMTAwMC4wOworfQorCiAvLyBUaGlzIGNvZGUgdHJp
ZXMgdG8gYWNoaWV2ZSBhbiBhdmVyYWdlIHRpY2sgcmF0ZSBhcyBjbG9zZSB0byBtX2ludGVydmFs
TXMgYXMgcG9zc2libGUuCiAvLyBUbyBkbyB0aGlzLCBpdCBoYXMgdG8gZGVhbCB3aXRoIGEgZmV3
IGJhc2ljIGlzc3VlczoKIC8vICAgMS4gcG9zdERlbGF5ZWRUYXNrIGNhbiBkZWxheSBvbmx5IGF0
IGEgbWlsbGlzZWNvbmQgZ3JhbnVsYXJpdHkuIFNvLCAxNi42NjYgaGFzIHRvCkBAIC0xMjUsNyAr
MTMxLDcgQEAgdm9pZCBDQ0RlbGF5QmFzZWRUaW1lU291cmNlOjp1cGRhdGVTdGF0ZSgpCiAgICAg
aWYgKG1fc3RhdGUgPT0gU1RBVEVfSU5BQ1RJVkUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRv
dWJsZSBub3cgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICBkb3VibGUgbm93
ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lTXMoKTsKIAogICAgIGlmIChtX3N0YXRlID09
IFNUQVRFX1NUQVJUSU5HKSB7CiAgICAgICAgIG1fdGlja1RhcmdldCA9IG5vdzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsYXlC
YXNlZFRpbWVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuaAppbmRleCAzNzY0ZjBkYTZlNjE0OTAxNDhh
YjI3Zjk3MTQxYWQ2ZTk4ZjkzY2VkLi42Y2M3MzM4ZDUzNjdhMDk4ZGViNDI0MDc4YzUzZmYxNTBk
MTFhYTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5oCkBAIC0y
Nyw3ICsyNyw2IEBACiAKICNpbmNsdWRlICJjYy9DQ1RpbWVTb3VyY2UuaCIKIAotI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzZXRBY3RpdmUoYm9vbCk7CiAKICAgICAvLyBWaXJ0dWFsIGZvciB0ZXN0aW5nLgotICAgIHZp
cnR1YWwgZG91YmxlIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIGNvbnN0IHsgcmV0dXJu
IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7IH0KKyAgICB2aXJ0dWFsIGRvdWJs
ZSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWVNcygpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAg
ICAgQ0NEZWxheUJhc2VkVGltZVNvdXJjZShkb3VibGUgaW50ZXJ2YWxNcywgQ0NUaHJlYWQqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggMWM0ZDQzMWQ4NjAyMzQ4Y2Q3ZmVkODdl
NjBmODhmZmI1NTQ2OTFkMC4uZDg0OWIwZGI3ZDQzZjJlZTQ5MDFhMGU5MDc1MzM5ZjdhZmJkZmQz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTU3LDYgKzU3LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbERlbHRhKGNvbnN0IEludFNpemUmKSA9IDA7
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVMYXllclRy
ZWVIb3N0Q29udGV4dDNEKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZUdyYXBo
aWNzQ29udGV4dChib29sIHN1Y2Nlc3MpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0
QW5kRHJhd0ZyYW1lKGludCBmcmFtZU51bWJlcikgPSAwOwogCiAgICAgLy8gVXNlZCBvbmx5IGlu
IHRoZSBzaW5nbGUtdGhyZWFkZWQgcGF0aC4KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21w
b3NpdGUoKSA9IDA7CkBAIC0xMTEsNiArMTEyLDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8
R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUxheWVyVHJlZUhvc3RDb250ZXh0M0QoKTsKICAgICB2
aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gY3JlYXRlTGF5ZXJUcmVlSG9z
dEltcGwoQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCopOwogICAgIHZvaWQgZGlkUmVjcmVhdGVH
cmFwaGljc0NvbnRleHQoYm9vbCBzdWNjZXNzKTsKKyAgICB2b2lkIGRpZENvbW1pdEFuZERyYXdG
cmFtZShpbnQgZnJhbWVOdW1iZXIpIHsgbV9jbGllbnQtPmRpZENvbW1pdEFuZERyYXdGcmFtZShm
cmFtZU51bWJlcik7IH0KICAgICB2b2lkIGRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJl
YWQoVGV4dHVyZUFsbG9jYXRvciopOwogCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0IGludGVyZmFj
ZSB0byBXZWJWaWV3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCmluZGV4IGNlOTc3MGJlZTYxYjdm
ZGY4YTNkZDhhY2YwMGYwY2JhYjMwMjdjOGUuLjFhNDliN2E5NTMxMWY4Mjk4NTViOTczZDRjYmM5
MjBkZjFhM2U1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKQEAgLTI1LDU4ICsyNSwxMTMg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgImNjL0NDU2NoZWR1bGVyLmgiCisj
aW5jbHVkZSAiVHJhY2VFdmVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNDU2NoZWR1
bGVyOjpDQ1NjaGVkdWxlcihDQ1NjaGVkdWxlckNsaWVudCogY2xpZW50KQorQ0NTY2hlZHVsZXI6
OkNDU2NoZWR1bGVyKENDU2NoZWR1bGVyQ2xpZW50KiBjbGllbnQsIFBhc3NPd25QdHI8Q0NGcmFt
ZVJhdGVDb250cm9sbGVyPiBmcmFtZVJhdGVDb250cm9sbGVyKQogICAgIDogbV9jbGllbnQoY2xp
ZW50KQotICAgICwgbV9jb21taXRQZW5kaW5nKGZhbHNlKQotICAgICwgbV9yZWRyYXdQZW5kaW5n
KGZhbHNlKQorICAgICwgbV9mcmFtZVJhdGVDb250cm9sbGVyKGZyYW1lUmF0ZUNvbnRyb2xsZXIp
CisgICAgLCBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKQogewogICAgIEFTU0VS
VChtX2NsaWVudCk7CisgICAgbV9mcmFtZVJhdGVDb250cm9sbGVyLT5zZXRDbGllbnQodGhpcyk7
CisKKyAgICAvLyBGSVhNRTogbWFrZSB0aGUgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUgdHVybiBv
ZmYgRnJhbWVSYXRlQ29udHJvbGxlciBpdCBpc24ndCBuZWVkZWQuCisgICAgbV9mcmFtZVJhdGVD
b250cm9sbGVyLT5zZXRBY3RpdmUodHJ1ZSk7CiB9CiAKLXZvaWQgQ0NTY2hlZHVsZXI6OnJlcXVl
c3RBbmltYXRlKCkKK0NDU2NoZWR1bGVyOjp+Q0NTY2hlZHVsZXIoKQogewotICAgIC8vIFN0dWIg
dGhyb3VnaCB0byByZXF1ZXN0Q29tbWl0IGZvciBub3cuCi0gICAgcmVxdWVzdENvbW1pdCgpOwor
ICAgIG1fZnJhbWVSYXRlQ29udHJvbGxlci0+c2V0QWN0aXZlKGZhbHNlKTsKIH0KIAotdm9pZCBD
Q1NjaGVkdWxlcjo6cmVxdWVzdENvbW1pdCgpCit2b2lkIENDU2NoZWR1bGVyOjpzZXROZWVkc0Fu
aW1hdGUoKQogewotICAgIGlmIChtX2NvbW1pdFBlbmRpbmcpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIG1fY29tbWl0UGVuZGluZyA9IHRydWU7Ci0gICAgbV9jbGllbnQtPnNjaGVkdWxlQmVnaW5G
cmFtZUFuZENvbW1pdCgpOworICAgIC8vIFN0dWIgdGhyb3VnaCB0byByZXF1ZXN0Q29tbWl0IGZv
ciBub3cuCisgICAgc2V0TmVlZHNDb21taXQoKTsKIH0KIAotdm9pZCBDQ1NjaGVkdWxlcjo6cmVx
dWVzdFJlZHJhdygpCit2b2lkIENDU2NoZWR1bGVyOjpzZXROZWVkc0NvbW1pdCgpCiB7Ci0gICAg
aWYgKG1fcmVkcmF3UGVuZGluZykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9yZWRyYXdQZW5k
aW5nID0gdHJ1ZTsKLQotICAgIG1fY2xpZW50LT5zY2hlZHVsZURyYXdBbmRTd2FwKCk7CisgICAg
bV9zdGF0ZU1hY2hpbmUuc2V0TmVlZHNDb21taXQoKTsKKyAgICBwcm9jZXNzU2NoZWR1bGVkQWN0
aW9ucyhDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRFX05PTkUpOwogfQog
Ci12b2lkIENDU2NoZWR1bGVyOjpkaWRDb21taXQoKQordm9pZCBDQ1NjaGVkdWxlcjo6c2V0TmVl
ZHNSZWRyYXcoKQogewotICAgIG1fY29tbWl0UGVuZGluZyA9IGZhbHNlOworICAgIG1fc3RhdGVN
YWNoaW5lLnNldE5lZWRzUmVkcmF3KCk7CisgICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFURV9TVEFURV9OT05FKTsKIH0KIAotdm9pZCBD
Q1NjaGVkdWxlcjo6ZGlkRHJhd0FuZFN3YXAoKQordm9pZCBDQ1NjaGVkdWxlcjo6YmVnaW5GcmFt
ZUNvbXBsZXRlKCkKIHsKLSAgICBtX3JlZHJhd1BlbmRpbmcgPSBmYWxzZTsKKyAgICBUUkFDRV9F
VkVOVCgiQ0NTY2hlZHVsZXI6OmJlZ2luRnJhbWVDb21wbGV0ZSIsIHRoaXMsIDApOworICAgIG1f
c3RhdGVNYWNoaW5lLmJlZ2luRnJhbWVDb21wbGV0ZSgpOworICAgIHByb2Nlc3NTY2hlZHVsZWRB
Y3Rpb25zKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfTk9ORSk7CiB9
CiAKIHZvaWQgQ0NTY2hlZHVsZXI6OmRpZFN3YXBCdWZmZXJzQ29tcGxldGUoKQogeworICAgIFRS
QUNFX0VWRU5UKCJDQ1NjaGVkdWxlcjo6ZGlkU3dhcEJ1ZmZlcnNDb21wbGV0ZSIsIHRoaXMsIDAp
OworICAgIG1fZnJhbWVSYXRlQ29udHJvbGxlci0+ZGlkRmluaXNoRnJhbWUoKTsKIH0KIAogdm9p
ZCBDQ1NjaGVkdWxlcjo6ZGlkU3dhcEJ1ZmZlcnNBYm9ydCgpCiB7CisgICAgVFJBQ0VfRVZFTlQo
IkNDU2NoZWR1bGVyOjpkaWRTd2FwQnVmZmVyc0Fib3J0IiwgdGhpcywgMCk7CisgICAgbV9mcmFt
ZVJhdGVDb250cm9sbGVyLT5kaWRBYm9ydEFsbFBlbmRpbmdGcmFtZXMoKTsKK30KKwordm9pZCBD
Q1NjaGVkdWxlcjo6YmVnaW5GcmFtZSgpCit7CisgICAgaWYgKG1fdXBkYXRlTW9yZVJlc291cmNl
c1BlbmRpbmcpIHsKKyAgICAgICAgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IGZhbHNl
OworICAgICAgICBtX3N0YXRlTWFjaGluZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0
ZShtX2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKTsKKyAgICB9CisgICAgcHJvY2Vz
c1NjaGVkdWxlZEFjdGlvbnMoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFURV9TVEFU
RV9JTlNJREVfVlNZTkMpOworfQorCit2b2lkIENDU2NoZWR1bGVyOjpwcm9jZXNzU2NoZWR1bGVk
QWN0aW9ucyhDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SW1tZWRpYXRlU3RhdGUgaW1tZWRpYXRl
U3RhdGUpCit7CisgICAgLy8gRWFybHkgb3V0IHNvIHdlIGRvbid0IHNwYW0gVFJBQ0VfRVZFTlRT
IHdpdGggdXNlbGVzcyBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucworICAgIGlmIChtX3N0YXRlTWFj
aGluZS5uZXh0QWN0aW9uKGltbWVkaWF0ZVN0YXRlKSA9PSBDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX05PTkUpCisgICAgICAgIHJldHVybjsKKworICAgIFRSQUNFX0VWRU5UKCJDQ1Nj
aGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMiLCB0aGlzLCAwKTsKKyAgICBDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QWN0aW9uIGFjdGlvbjsKKyAgICBkbyB7CisgICAgICAgIGFjdGlv
biA9IG1fc3RhdGVNYWNoaW5lLm5leHRBY3Rpb24oaW1tZWRpYXRlU3RhdGUpOworICAgICAgICBz
d2l0Y2ggKGFjdGlvbikgeworICAgICAgICBjYXNlIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fTk9ORToKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FOgorICAgICAgICAgICAgbV9jbGllbnQt
PnNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVf
UkVTT1VSQ0VTOgorICAgICAgICAgICAgbV9jbGllbnQtPnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1v
cmVSZXNvdXJjZXMoKTsKKyAgICAgICAgICAgIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcg
PSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQ6CisgICAgICAgICAgICBtX2NsaWVudC0+c2NoZWR1bGVk
QWN0aW9uQ29tbWl0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVc6CisgICAgICAgICAgICBtX2NsaWVudC0+c2No
ZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAg
ICAgICAgbV9zdGF0ZU1hY2hpbmUudXBkYXRlU3RhdGUoYWN0aW9uKTsKKworICAgICAgICAvLyBJ
ZiB3ZSB3ZXJlIGp1c3QgdG9sZCB0byB1ZHBhdGUgcmVzb3VyY2VzLCBidXQgdGhlcmUKKyAgICAg
ICAgLy8gYXJlIG5vIG1vcmUgcGVuZGluZywgdGhlbiBjbGVhcgorICAgICAgICBpZiAoYWN0aW9u
ID09IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVT
T1VSQ0VTCisgICAgICAgICAgICAmJiAhbV9jbGllbnQtPmhhc01vcmVSZXNvdXJjZVVwZGF0ZXMo
KSkgeworICAgICAgICAgICAgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IGZhbHNlOwor
ICAgICAgICAgICAgbV9zdGF0ZU1hY2hpbmUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxl
dGUoZmFsc2UpOworICAgICAgICB9CisKKyAgICB9IHdoaWxlIChhY3Rpb24gIT0gQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgK
aW5kZXggMjI0MjA1MmM2OTUwMzc1OTQ2OGMxYWEzNWFkODI0ZWY2YzRmZWRjNC4uOTFjNTMyNDQw
NDE0NGQwZjQ4NWRhMmQ3NmU5Y2ZiNDY4NDlmZDBjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCkBA
IC0yNSw2ICsyNSw5IEBACiAjaWZuZGVmIENDU2NoZWR1bGVyX2gKICNkZWZpbmUgQ0NTY2hlZHVs
ZXJfaAogCisjaW5jbHVkZSAiY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmgiCisjaW5jbHVkZSAi
Y2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaCIKKwogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKQEAgLTM0LDQwICszNyw1MCBAQCBj
bGFzcyBDQ1RocmVhZDsKIAogY2xhc3MgQ0NTY2hlZHVsZXJDbGllbnQgewogcHVibGljOgotICAg
IHZpcnR1YWwgdm9pZCBzY2hlZHVsZUJlZ2luRnJhbWVBbmRDb21taXQoKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHNjaGVkdWxlRHJhd0FuZFN3YXAoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGhh
c01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2No
ZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVk
QWN0aW9uRHJhd0FuZFN3YXAoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlv
blVwZGF0ZU1vcmVSZXNvdXJjZXMoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFj
dGlvbkNvbW1pdCgpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkNDU2NoZWR1bGVy
Q2xpZW50KCkgeyB9CiB9OwogCi1jbGFzcyBDQ1NjaGVkdWxlciB7CitjbGFzcyBDQ1NjaGVkdWxl
ciA6IENDRnJhbWVSYXRlQ29udHJvbGxlckNsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoQ0NTY2hlZHVsZXIpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDU2NoZWR1
bGVyPiBjcmVhdGUoQ0NTY2hlZHVsZXJDbGllbnQqIGNsaWVudCkKKyAgICBzdGF0aWMgUGFzc093
blB0cjxDQ1NjaGVkdWxlcj4gY3JlYXRlKENDU2NoZWR1bGVyQ2xpZW50KiBjbGllbnQsIFBhc3NP
d25QdHI8Q0NGcmFtZVJhdGVDb250cm9sbGVyPiBmcmFtZVJhdGVDb250cm9sbGVyKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1NjaGVkdWxlcihjbGllbnQpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1NjaGVkdWxlcihjbGllbnQsIGZyYW1lUmF0ZUNvbnRy
b2xsZXIpKTsKICAgICB9CisgICAgfkNDU2NoZWR1bGVyKCk7CisKKyAgICB2b2lkIHNldE5lZWRz
QW5pbWF0ZSgpOworICAgIHZvaWQgc2V0TmVlZHNDb21taXQoKTsKKyAgICB2b2lkIHNldE5lZWRz
UmVkcmF3KCk7CiAKLSAgICB2b2lkIHJlcXVlc3RBbmltYXRlKCk7Ci0gICAgdm9pZCByZXF1ZXN0
Q29tbWl0KCk7Ci0gICAgdm9pZCByZXF1ZXN0UmVkcmF3KCk7CisgICAgdm9pZCBiZWdpbkZyYW1l
Q29tcGxldGUoKTsKIAotICAgIHZvaWQgZGlkQ29tbWl0KCk7Ci0gICAgdm9pZCBkaWREcmF3QW5k
U3dhcCgpOwogICAgIHZvaWQgZGlkU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpOwogICAgIHZvaWQgZGlk
U3dhcEJ1ZmZlcnNBYm9ydCgpOwogCi0gICAgYm9vbCBjb21taXRQZW5kaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb21taXRQZW5kaW5nOyB9Ci0gICAgYm9vbCByZWRyYXdQZW5kaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWRyYXdQZW5kaW5nOyB9CisgICAgYm9vbCBjb21taXRQZW5kaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZU1hY2hpbmUuY29tbWl0UGVuZGluZygpOyB9CisgICAgYm9vbCBy
ZWRyYXdQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZU1hY2hpbmUucmVkcmF3UGVuZGlu
ZygpOyB9CisKKyAgICAvLyBDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXJDbGllbnQgaW1wbGVtZW50YXRp
b24KKyAgICB2b2lkIGJlZ2luRnJhbWUoKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBDQ1Nj
aGVkdWxlcihDQ1NjaGVkdWxlckNsaWVudCopOworICAgIENDU2NoZWR1bGVyKENDU2NoZWR1bGVy
Q2xpZW50KiwgUGFzc093blB0cjxDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXI+KTsKIAotICAgIENDU2No
ZWR1bGVyQ2xpZW50KiBtX2NsaWVudDsKKyAgICB2b2lkIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25z
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJbW1lZGlhdGVTdGF0ZSk7CiAKLSAgICBib29sIG1f
Y29tbWl0UGVuZGluZzsKLSAgICBib29sIG1fcmVkcmF3UGVuZGluZzsKKyAgICBDQ1NjaGVkdWxl
ckNsaWVudCogbV9jbGllbnQ7CisgICAgT3duUHRyPENDRnJhbWVSYXRlQ29udHJvbGxlcj4gbV9m
cmFtZVJhdGVDb250cm9sbGVyOworICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lIG1fc3RhdGVN
YWNoaW5lOworICAgIGJvb2wgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZzsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcAppbmRleCAwMDMw
MTI5NGVhMjBkYmMxYTJmODY5OWI2NDlkODgzNjI0N2U3ZDE1Li40MjgxYmRkZWQxMTBmMWFiNGUy
MDAxNjdjZTE0YjhkN2M2MWY3N2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmUuY3BwCkBAIC0zMiwxMCArMzIsMTEgQEAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lKCkKICAgICA6IG1fY29tbWl0U3RhdGUoQ09NTUlU
X1NUQVRFX0lETEUpCiAgICAgLCBtX25lZWRzUmVkcmF3KGZhbHNlKQogICAgICwgbV9uZWVkc0Nv
bW1pdChmYWxzZSkKLSAgICAsIG1fdXBkYXRlZFRoaXNGcmFtZShmYWxzZSkgeyB9CisgICAgLCBt
X3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKSB7IH0KIAotQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFjdGlvbiBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6bmV4dEFjdGlvbihib29s
IGluc2lkZVZTeW5jVGljaykgY29uc3QKK0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24g
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24oSW1tZWRpYXRlU3RhdGUgaW1tZWRp
YXRlU3RhdGUpIGNvbnN0CiB7CisgICAgYm9vbCBpbnNpZGVWU3luY1RpY2sgPSBpbW1lZGlhdGVT
dGF0ZSAmIElNTUVESUFURV9TVEFURV9JTlNJREVfVlNZTkM7CiAgICAgc3dpdGNoIChtX2NvbW1p
dFN0YXRlKSB7CiAgICAgY2FzZSBDT01NSVRfU1RBVEVfSURMRToKICAgICAgICAgaWYgKG1fbmVl
ZHNSZWRyYXcgJiYgaW5zaWRlVlN5bmNUaWNrKQpAQCAtNTIsOCArNTMsOCBAQCBDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QWN0aW9uIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9u
KGJvb2wgaW5zaWRlVgogICAgIGNhc2UgQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUzoK
ICAgICAgICAgaWYgKG1fbmVlZHNSZWRyYXcgJiYgaW5zaWRlVlN5bmNUaWNrKQogICAgICAgICAg
ICAgcmV0dXJuIEFDVElPTl9EUkFXOwotICAgICAgICBpZiAoIW1fdXBkYXRlZFRoaXNGcmFtZSkK
LSAgICAgICAgICAgIHJldHVybiBBQ1RJT05fVVBEQVRFX01PUkVfUkVTT1VSQ0VTOworICAgICAg
ICBpZiAoIW1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcpCisgICAgICAgICAgICByZXR1cm4g
QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUzsKICAgICAgICAgcmV0dXJuIEFDVElP
Tl9OT05FOwogCiAgICAgY2FzZSBDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlUOgpAQCAtNzQs
MTUgKzc1LDkgQEAgdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6dXBkYXRlU3RhdGUoQWN0
aW9uIGFjdGlvbikKICAgICAgICAgbV9uZWVkc0NvbW1pdCA9IGZhbHNlOwogICAgICAgICByZXR1
cm47CiAKLSAgICBjYXNlIEFDVElPTl9VUERBVEVfTU9SRV9SRVNPVVJDRVM6CisgICAgY2FzZSBB
Q1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTOgogICAgICAgICBBU1NFUlQobV9jb21t
aXRTdGF0ZSA9PSBDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTKTsKLSAgICAgICAgLy8g
Z2V0TmV4dFN0YXRlKCkgaW4gQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUyB3aWxsIG9u
bHkgcmV0dXJuCi0gICAgICAgIC8vIEFDVElPTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMgd2hlbiBt
X3VwZGF0ZWRUaGlzRnJhbWUgaXMgdHJ1ZS4gSGVyZSwKLSAgICAgICAgLy8gc2V0IG1fdXBkYXRl
ZFRoaXNGcmFtZSB0byB0cnVlIHRvIHByZXZlbnQgYWRkaXRpb25hbAotICAgICAgICAvLyBBQ1RJ
T05fVVBEQVRFX01PUkVfUkVTT1VSQ0VTIGZyb20gYmVpbmcgaXNzdWVkLgotICAgICAgICAvLyBU
aGlzIHdpbGwgdGhlbiBiZSBjbGVhcmVkIGJ5IGEgZHJhdyBhY3Rpb24sIGVmZmVjdGl2ZWx5IGxp
bWl0aW5nIHVzCi0gICAgICAgIC8vIHRvIG9uZSBBQ1RJT05fVVBEQVRFX01PUkVfUkVTT1VSQ0VT
IHBlciBmcmFtZS4KLSAgICAgICAgbV91cGRhdGVkVGhpc0ZyYW1lID0gdHJ1ZTsKKyAgICAgICAg
bV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IHRydWU7CiAgICAgICAgIHJldHVybjsKIAog
ICAgIGNhc2UgQUNUSU9OX0NPTU1JVDoKQEAgLTkxLDcgKzg2LDYgQEAgdm9pZCBDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6dXBkYXRlU3RhdGUoQWN0aW9uIGFjdGlvbikKICAgICAgICAgcmV0dXJu
OwogCiAgICAgY2FzZSBBQ1RJT05fRFJBVzoKLSAgICAgICAgbV91cGRhdGVkVGhpc0ZyYW1lID0g
ZmFsc2U7CiAgICAgICAgIG1fbmVlZHNSZWRyYXcgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTExMywxMCArMTA3LDEzIEBAIHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OmJlZ2luRnJhbWVDb21wbGV0ZSgpCiAgICAgbV9jb21taXRTdGF0ZSA9IENPTU1JVF9TVEFURV9V
UERBVElOR19SRVNPVVJDRVM7CiB9CiAKLXZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVw
ZGF0ZVJlc291cmNlc0NvbXBsZXRlKCkKK3ZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OmJl
Z2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGJvb2wgbW9yZVBlbmRpbmcpCiB7CiAgICAg
QVNTRVJUKG1fY29tbWl0U3RhdGUgPT0gQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUyk7
Ci0gICAgbV9jb21taXRTdGF0ZSA9IENPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQ7CisgICAg
QVNTRVJUKG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcpOworICAgIG1fdXBkYXRlTW9yZVJl
c291cmNlc1BlbmRpbmcgPSBmYWxzZTsKKyAgICBpZiAoIW1vcmVQZW5kaW5nKQorICAgICAgICBt
X2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVDsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKaW5kZXggNjQwNWUwN2VkMjlj
MGJiYzMyODMxMjZhNDNiNGQwZGNmOGFmZDJkMC4uM2Y0MWU2MDM4MGZiMDYxMjhlMDBhZDRkZDc5
OWIwOWM5MDUyNDkxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZS5oCkBAIC01NSwxNCArNTUsMjAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9jb21taXRT
dGF0ZSAhPSBDT01NSVRfU1RBVEVfSURMRTsKICAgICB9CiAKKyAgICBib29sIHJlZHJhd1BlbmRp
bmcoKSBjb25zdCB7IHJldHVybiBtX25lZWRzUmVkcmF3OyB9CisKICAgICBlbnVtIEFjdGlvbiB7
CiAgICAgICAgIEFDVElPTl9OT05FLAogICAgICAgICBBQ1RJT05fQkVHSU5fRlJBTUUsCi0gICAg
ICAgIEFDVElPTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsCisgICAgICAgIEFDVElPTl9CRUdJTl9V
UERBVEVfTU9SRV9SRVNPVVJDRVMsCiAgICAgICAgIEFDVElPTl9DT01NSVQsCiAgICAgICAgIEFD
VElPTl9EUkFXLAogICAgIH07Ci0gICAgQWN0aW9uIG5leHRBY3Rpb24oYm9vbCBpbnNpZGVWU3lu
Y1RpY2spIGNvbnN0OworICAgIGVudW0gSW1tZWRpYXRlU3RhdGUgeworICAgICAgICBJTU1FRElB
VEVfU1RBVEVfTk9ORSA9IDAsCisgICAgICAgIElNTUVESUFURV9TVEFURV9JTlNJREVfVlNZTkMg
PSAxLAorICAgIH07CisgICAgQWN0aW9uIG5leHRBY3Rpb24oSW1tZWRpYXRlU3RhdGUpIGNvbnN0
OwogICAgIHZvaWQgdXBkYXRlU3RhdGUoQWN0aW9uKTsKIAogICAgIC8vIEluZGljYXRlcyB0aGF0
IGEgcmVkcmF3IGlzIHJlcXVpcmVkLCBlaXRoZXIgZHVlIHRvIHRoZSBpbXBsIHRyZWUgY2hhbmdp
bmcKQEAgLTgwLDE2ICs4NiwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBiZWdpbkZyYW1lQ29tcGxl
dGUoKTsKIAogICAgIC8vIENhbGwgdGhpcyBvbmx5IGluIHJlc3BvbnNlIHRvIHJlY2VpdmluZyBh
biBBQ1RJT05fVVBEQVRFX01PUkVfUkVTT1VSQ0VTCi0gICAgLy8gZnJvbSBuZXh0U3RhdGUuIElu
ZGljYXRlc3QgdGhhdCBhbGwgcmVzb3VjZXMgaGF2ZSBiZWVuIHVwZGF0ZWQgYW5kIHRoYXQKLSAg
ICAvLyB0aGUgbWFpbiB0aHJlYWQgdHJlZSBjYW4gYmUgY29tbWl0dGVkIHRvIHRoZSBpbXBsIHRy
ZWUuCi0gICAgdm9pZCB1cGRhdGVSZXNvdXJjZXNDb21wbGV0ZSgpOworICAgIC8vIGZyb20gbmV4
dFN0YXRlLiBJbmRpY2F0ZXN0IHRoYXQgdGhlIHNwZWNpZmljIHVwZGF0ZSByZXF1ZXN0IGNvbXBs
ZXRlZC4KKyAgICB2b2lkIGJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGJvb2wgbW9y
ZVBlbmRpbmcpOwogCiBwcm90ZWN0ZWQ6CiAgICAgQ29tbWl0U3RhdGUgbV9jb21taXRTdGF0ZTsK
IAogICAgIGJvb2wgbV9uZWVkc1JlZHJhdzsKICAgICBib29sIG1fbmVlZHNDb21taXQ7Ci0gICAg
Ym9vbCBtX3VwZGF0ZWRUaGlzRnJhbWU7CisgICAgYm9vbCBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQ
ZW5kaW5nOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApp
bmRleCAxNDE4MjYxMDQ3ZmJiMTQ3MWE4Mzk3ZTI4ZWIyY2I1NGUzZTRmMTFhLi4wMmYzNzBlZTA4
OGQ3YWNiM2VmNzk4YTZhNjZiZWQ5YTdlNzNjYWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Npbmds
ZVRocmVhZFByb3h5LmNwcApAQCAtNTAsNiArNTAsNyBAQCBDQ1NpbmdsZVRocmVhZFByb3h5OjpD
Q1NpbmdsZVRocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCkKICAgICAs
IG1fbnVtRmFpbGVkUmVjcmVhdGVBdHRlbXB0cygwKQogICAgICwgbV9ncmFwaGljc0NvbnRleHRM
b3N0KGZhbHNlKQogICAgICwgbV90aW1lc1JlY3JlYXRlU2hvdWxkRmFpbCgwKQorICAgICwgbV9u
ZXh0RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJhbWUoZmFsc2UpCiB7CiAgICAgVFJBQ0VfRVZFTlQo
IkNDU2luZ2xlVGhyZWFkUHJveHk6OkNDU2luZ2xlVGhyZWFkUHJveHkiLCB0aGlzLCAwKTsKICAg
ICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwpAQCAtMTc1LDYgKzE3Niw3IEBAIHZv
aWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQoKQogI2VuZGlmCiAgICAgfQogICAgIG1f
bGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKKyAgICBtX25leHRGcmFtZUlzTmV3bHlD
b21taXR0ZWRGcmFtZSA9IHRydWU7CiB9CiAKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0
TmVlZHNDb21taXRUaGVuUmVkcmF3KCkKQEAgLTI5Myw2ICsyOTUsMTEgQEAgYm9vbCBDQ1Npbmds
ZVRocmVhZFByb3h5Ojpkb0NvbXBvc2l0ZSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKKyAgICBpZiAobV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJhbWUpIHsKKyAgICAgICAg
bV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJhbWUgPSBmYWxzZTsKKyAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5kaWRDb21taXRBbmREcmF3RnJhbWUobV9sYXllclRyZWVIb3N0SW1wbC0+c291
cmNlRnJhbWVOdW1iZXIoKSk7CisgICAgfQorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRleCAxMWE4M2ZiNTdkYzc5MDMwNTBlYTZh
NGU1ZjQzZWVlYWVmMjQ2ZjE0Li4zMjEzYmIxZDRkOTY5OTk5OTMzZTkzMGQ1NWI5MDdiMmIyN2Zk
NTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCkBAIC04MSw2ICs4MSw3
IEBAIHByaXZhdGU6CiAgICAgaW50IG1fbnVtRmFpbGVkUmVjcmVhdGVBdHRlbXB0czsKICAgICBi
b29sIG1fZ3JhcGhpY3NDb250ZXh0TG9zdDsKICAgICBpbnQgbV90aW1lc1JlY3JlYXRlU2hvdWxk
RmFpbDsgLy8gVXNlZCBkdXJpbmcgdGVzdGluZy4KKyAgICBib29sIG1fbmV4dEZyYW1lSXNOZXds
eUNvbW1pdHRlZEZyYW1lOwogfTsKIAogLy8gRm9yIHVzZSBpbiB0aGUgc2luZ2xlLXRocmVhZGVk
IGNhc2UuIEluIGRlYnVnIGJ1aWxkcywgaXQgcHJldGVuZHMgdGhhdCB0aGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVw
ZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggNDA4NGRlZWFmMGZiYzcwYjA4NTRiYWU2MGQ4ZWEy
N2E3NDM3YmEyMy4uOTg0MzcwZWRhOTVjNTIzZjU5ZWU1NWM4N2FjODI4NzFlMDJhNzNiYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTYxLDYgKzYxLDExIEBAIHZvaWQg
Q0NUZXh0dXJlVXBkYXRlcjo6YXBwZW5kKE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBMYXllclRl
eHR1cmVVcGRhdGVyKiB1cGRhCiAgICAgbV9lbnRyaWVzLmFwcGVuZChlbnRyeSk7CiB9CiAKK2Jv
b2wgQ0NUZXh0dXJlVXBkYXRlcjo6aGFzTW9yZVVwZGF0ZXMoKSBjb25zdAoreworICAgIHJldHVy
biBtX2VudHJpZXMuc2l6ZSgpOworfQorCiBib29sIENDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZShH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgc2l6ZV90IGNvdW50KQogewogICAgIHNpemVfdCBt
YXhJbmRleCA9IG1pbihtX2VudHJ5SW5kZXggKyBjb3VudCwgbV9lbnRyaWVzLnNpemUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKaW5kZXggMzAzMWMzOWU2MGQ4MDJhZmZlMTZhY2Rl
Yjc4OGJhYjIwMjE5YjJhYy4uMTdiOGFhZmEwNmNlN2E2ZDIwYTBlNWZiNGM5MTRlNzJmYzkzOTRh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDMsNiArNDMsOCBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGFwcGVuZChNYW5hZ2VkVGV4dHVyZSosIExheWVyVGV4dHVyZVVwZGF0
ZXIqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7
CiAKKyAgICBib29sIGhhc01vcmVVcGRhdGVzKCkgY29uc3Q7CisKICAgICAvLyBVcGRhdGUgc29t
ZSB0ZXh0dXJlcy4gUmV0dXJucyB0cnVlIGlmIG1vcmUgdGV4dHVyZXMgbGVmdCB0byBwcm9jZXNz
LgogICAgIGJvb2wgdXBkYXRlKEdyYXBoaWNzQ29udGV4dDNEKiwgc2l6ZV90IGNvdW50KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCA3MTc2YzI0MDcwZmNjN2YzYzM4Y2UwMmY5
ZDhhMDYwYTgzNDFlZDg3Li40ZWJiYWViZWRhYTU5MDM5MDRlNTg2Y2RjOWQ5YWNhMzY4NGNjMGE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCisjaW5j
bHVkZSAiY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5oIgorI2luY2x1ZGUgImNjL0NDRnJhbWVS
YXRlQ29udHJvbGxlci5oIgogI2luY2x1ZGUgImNjL0NDSW5wdXRIYW5kbGVyLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiY2MvQ0NNYWluVGhyZWFkVGFzay5o
IgpAQCAtNTMsMzMgKzU1LDYgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzZXRUaHJlYWQoQ0NUaHJl
YWQqIGNjVGhyZWFkKQogI2VuZGlmCiB9CiAKLWNsYXNzIENDVGhyZWFkUHJveHlTY2hlZHVsZXJD
bGllbnQgOiBwdWJsaWMgQ0NTY2hlZHVsZXJDbGllbnQgewotcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPENDVGhyZWFkUHJveHlTY2hlZHVsZXJDbGllbnQ+IGNyZWF0ZShDQ1RocmVhZFBy
b3h5KiBwcm94eSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NUaHJlYWRQ
cm94eVNjaGVkdWxlckNsaWVudChwcm94eSkpOwotICAgIH0KLSAgICB2aXJ0dWFsIH5DQ1RocmVh
ZFByb3h5U2NoZWR1bGVyQ2xpZW50KCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVC
ZWdpbkZyYW1lQW5kQ29tbWl0KCkKLSAgICB7Ci0gICAgICAgIG1fcHJveHktPnBvc3RCZWdpbkZy
YW1lQW5kQ29tbWl0T25JbXBsVGhyZWFkKCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHNj
aGVkdWxlRHJhd0FuZFN3YXAoKQotICAgIHsKLSAgICAgICAgbV9wcm94eS0+ZHJhd0xheWVyc0Fu
ZFN3YXBPbkltcGxUaHJlYWQoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgQ0NU
aHJlYWRQcm94eVNjaGVkdWxlckNsaWVudChDQ1RocmVhZFByb3h5KiBwcm94eSkKLSAgICB7Ci0g
ICAgICAgIG1fcHJveHkgPSBwcm94eTsKLSAgICB9Ci0KLSAgICBDQ1RocmVhZFByb3h5KiBtX3By
b3h5OwotfTsKLQogUGFzc093blB0cjxDQ1Byb3h5PiBDQ1RocmVhZFByb3h5OjpjcmVhdGUoQ0NM
YXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcg
Q0NUaHJlYWRQcm94eShsYXllclRyZWVIb3N0KSk7CkBAIC05Myw2ICs2OCwxMCBAQCBDQ1RocmVh
ZFByb3h5OjpDQ1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCkKICAg
ICAsIG1fbGFzdEV4ZWN1dGVkQmVnaW5GcmFtZUFuZENvbW1pdFNlcXVlbmNlTnVtYmVyKC0xKQog
ICAgICwgbV9udW1CZWdpbkZyYW1lQW5kQ29tbWl0c0lzc3VlZE9uSW1wbFRocmVhZCgwKQogICAg
ICwgbV9tYWluVGhyZWFkUHJveHkoQ0NTY29wZWRNYWluVGhyZWFkUHJveHk6OmNyZWF0ZSgpKQor
ICAgICwgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQoMCkKKyAgICAsIG1fZmluaXNoQWxs
UmVuZGVyaW5nQ29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKDApCisgICAgLCBtX2NvbW1pdENv
bXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCgwKQorICAgICwgbV9uZXh0RnJhbWVJc05ld2x5Q29t
bWl0dGVkRnJhbWVPbkltcGxUaHJlYWQoZmFsc2UpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhy
ZWFkUHJveHk6OkNDVGhyZWFkUHJveHkiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwpAQCAtMTMwLDI4ICsxMDksMjUgQEAgYm9vbCBDQ1RocmVhZFByb3h5Ojpjb21wb3Np
dGVBbmRSZWFkYmFjayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgfQog
CiAgICAgLy8gRHJhdyB1c2luZyB0aGUgbmV3IHRyZWUgYW5kIHJlYWQgYmFjayB0aGUgcmVzdWx0
cy4KLSAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICBDQ0NvbXBsZXRpb25FdmVudCBjb21w
bGV0aW9uOwotICAgIHNfY2NUaHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlz
LCAmQ0NUaHJlYWRQcm94eTo6ZHJhd0xheWVyc0FuZFJlYWRiYWNrT25JbXBsVGhyZWFkLCBBbGxv
d0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9uKSwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcygm
c3VjY2VzcyksIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MocGl4ZWxzKSwgcmVjdCkpOwotICAgIGNv
bXBsZXRpb24ud2FpdCgpOwotICAgIHJldHVybiBzdWNjZXNzOworICAgIFJlYWRiYWNrUmVxdWVz
dCByZXF1ZXN0OworICAgIHJlcXVlc3QucmVjdCA9IHJlY3Q7CisgICAgcmVxdWVzdC5waXhlbHMg
PSBwaXhlbHM7CisgICAgc19jY1RocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRo
aXMsICZDQ1RocmVhZFByb3h5OjpyZXF1ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQsIEFsbG93Q3Jv
c3NUaHJlYWRBY2Nlc3MoJnJlcXVlc3QpKSk7CisgICAgcmVxdWVzdC5jb21wbGV0aW9uLndhaXQo
KTsKKyAgICByZXR1cm4gcmVxdWVzdC5zdWNjZXNzOwogfQogCi12b2lkIENDVGhyZWFkUHJveHk6
OmRyYXdMYXllcnNBbmRSZWFkYmFja09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29t
cGxldGlvbiwgYm9vbCogc3VjY2Vzcywgdm9pZCogcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiByZWN0
KQordm9pZCBDQ1RocmVhZFByb3h5OjpyZXF1ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQoUmVhZGJh
Y2tSZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQo
KSk7CisgICAgQVNTRVJUKCFtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZCk7CiAgICAgaWYg
KCFtX2xheWVyVHJlZUhvc3RJbXBsKSB7Ci0gICAgICAgICpzdWNjZXNzID0gZmFsc2U7Ci0gICAg
ICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOworICAgICAgICByZXF1ZXN0LT5zdWNjZXNzID0gZmFs
c2U7CisgICAgICAgIHJlcXVlc3QtPmNvbXBsZXRpb24uc2lnbmFsKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgZHJhd0xheWVyc09uSW1wbFRocmVhZCgpOwotICAgIG1fbGF5ZXJUcmVl
SG9zdEltcGwtPnJlYWRiYWNrKHBpeGVscywgcmVjdCk7Ci0gICAgYm9vbCBsb3N0ID0gbV9sYXll
clRyZWVIb3N0SW1wbC0+aXNDb250ZXh0TG9zdCgpOwotICAgIGlmIChsb3N0KQotICAgICAgICBt
X3NjaGVkdWxlck9uSW1wbFRocmVhZC0+ZGlkU3dhcEJ1ZmZlcnNBYm9ydCgpOwotICAgICpzdWNj
ZXNzID0gIWxvc3Q7Ci0gICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CisgICAgbV9yZWFkYmFja1Jl
cXVlc3RPbkltcGxUaHJlYWQgPSByZXF1ZXN0OworICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFk
LT5zZXROZWVkc1JlZHJhdygpOwogfQogCiBHcmFwaGljc0NvbnRleHQzRCogQ0NUaHJlYWRQcm94
eTo6Y29udGV4dCgpCkBAIC0yNTMsNyArMjI5LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzZXRO
ZWVkc0FuaW1hdGVPbkltcGxUaHJlYWQoKQogewogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7
CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0T25JbXBsVGhy
ZWFkIiwgdGhpcywgMCk7Ci0gICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnJlcXVlc3RBbmlt
YXRlKCk7CisgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNldE5lZWRzQW5pbWF0ZSgpOwog
fQogCiB2b2lkIENDVGhyZWFkUHJveHk6Om9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRocmVh
ZCgpCkBAIC0yNjcsNyArMjQzLDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1p
dE9uSW1wbFRocmVhZCgpCiB7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBUUkFD
RV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQiLCB0aGlz
LCAwKTsKLSAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+cmVxdWVzdENvbW1pdCgpOworICAg
IG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXROZWVkc0NvbW1pdCgpOwogfQogCiB2b2lkIEND
VGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3KCkKQEAgLTI4MSw3ICsyNTcsNyBAQCB2b2lkIEND
VGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCkKIHsKICAgICBBU1NFUlQo
aXNJbXBsVGhyZWFkKCkpOwogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzZXROZWVk
c1JlZHJhd09uSW1wbFRocmVhZCIsIHRoaXMsIDApOwotICAgIG1fc2NoZWR1bGVyT25JbXBsVGhy
ZWFkLT5yZXF1ZXN0UmVkcmF3KCk7CisgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNldE5l
ZWRzUmVkcmF3KCk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c3RhcnQoKQpAQCAtMzE4LDE3
ICsyOTQsMTQgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJpbmdPbkltcGxU
aHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24KIHsKICAgICBUUkFDRV9FVkVOVCgi
Q0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7
CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKLSAgICBpZiAobV9zY2hlZHVsZXJPbkltcGxU
aHJlYWQtPnJlZHJhd1BlbmRpbmcoKSkgewotICAgICAgICBkcmF3TGF5ZXJzT25JbXBsVGhyZWFk
KCk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnN3YXBCdWZmZXJzKCk7Ci0gICAgICAg
IG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5kaWREcmF3QW5kU3dhcCgpOwotICAgIH0KLSAgICBt
X2xheWVyVHJlZUhvc3RJbXBsLT5maW5pc2hBbGxSZW5kZXJpbmcoKTsKLSAgICBjb21wbGV0aW9u
LT5zaWduYWwoKTsKKyAgICBBU1NFUlQoIW1fZmluaXNoQWxsUmVuZGVyaW5nQ29tcGxldGlvbkV2
ZW50T25JbXBsVGhyZWFkKTsKKyAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0TmVlZHNS
ZWRyYXcoKTsKKyAgICBtX2ZpbmlzaEFsbFJlbmRlcmluZ0NvbXBsZXRpb25FdmVudE9uSW1wbFRo
cmVhZCA9IGNvbXBsZXRpb247CiB9CiAKLXZvaWQgQ0NUaHJlYWRQcm94eTo6cG9zdEJlZ2luRnJh
bWVBbmRDb21taXRPbkltcGxUaHJlYWQoKQordm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRB
Y3Rpb25CZWdpbkZyYW1lKCkKIHsKKyAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2No
ZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSIsIHRoaXMsIDApOwogICAgIG1fbWFpblRocmVhZFByb3h5
LT5wb3N0VGFzayhjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uSW1wbFRocmVhZCgpKTsK
IH0KIApAQCAtMzk0LDEwICszNjcsMTMgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1l
QW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KICAgICBt
X2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOwogCiAgICAgewotICAgICAgICAvLyBCbG9j
a2luZyBjYWxsIHRvIENDVGhyZWFkUHJveHk6OmNvbW1pdE9uSW1wbFRocmVhZAorICAgICAgICAv
LyBOb3RpZnkgdGhlIGltcGwgdGhyZWFkIHRoYXQgdGhlIGJlZ2luRnJhbWUgaGFzIGNvbXBsZXRl
ZC4gVGhpcyB3aWxsCisgICAgICAgIC8vIGJlZ2luIHRoZSBjb21taXQgcHJvY2Vzcywgd2hpY2gg
aXMgYmxvY2tpbmcgZnJvbSB0aGUgbWFpbiB0aHJlYWQncworICAgICAgICAvLyBwb2ludCBvZiB2
aWV3LCBidXQgYXN5bmNocm9ub3VzbHkgcGVyZm9ybWQgb24gdGhlIGltcGwgdGhyZWFkLAorICAg
ICAgICAvLyBjb29yZGluYXRlZCBieSB0aGUgQ0NTY2hlZHVsZXIuCiAgICAgICAgIFRSQUNFX0VW
RU5UKCJjb21taXQiLCB0aGlzLCAwKTsKICAgICAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxl
dGlvbjsKLSAgICAgICAgc19jY1RocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRo
aXMsICZDQ1RocmVhZFByb3h5Ojpjb21taXRPbkltcGxUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRB
Y2Nlc3MoJmNvbXBsZXRpb24pKSk7CisgICAgICAgIHNfY2NUaHJlYWQtPnBvc3RUYXNrKGNyZWF0
ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25J
bXBsVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9uKSkpOwogICAgICAg
ICBjb21wbGV0aW9uLndhaXQoKTsKICAgICB9CiAKQEAgLTQxMCwyOCArMzg2LDYzIEBAIHZvaWQg
Q0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRv
dWJsZSBmcmFtZUJlZ2luVGltCiAgICAgQVNTRVJUKG1fbGFzdEV4ZWN1dGVkQmVnaW5GcmFtZUFu
ZENvbW1pdFNlcXVlbmNlTnVtYmVyID09IHNlcXVlbmNlTnVtYmVyKTsKIH0KIAotdm9pZCBDQ1Ro
cmVhZFByb3h5Ojpjb21taXRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRp
b24pCit2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChD
Q0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJl
YWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdE9uSW1wbFRocmVhZCIsIHRoaXMsIDApOworICAg
IFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJl
YWQiLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQoIW1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBs
VGhyZWFkKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgIEFTU0VSVChtX3NjaGVk
dWxlck9uSW1wbFRocmVhZCk7CiAgICAgQVNTRVJUKG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5j
b21taXRQZW5kaW5nKCkpOwogICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbCkgewogICAgICAg
ICBjb21wbGV0aW9uLT5zaWduYWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIG1f
Y29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkID0gY29tcGxldGlvbjsKKworICAgIEFT
U0VSVCghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOworICAgIG1fY3VycmVu
dFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkID0gYWRvcHRQdHIobmV3IENDVGV4dHVyZVVwZGF0
ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpKTsKKyAg
ICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVI
b3N0SW1wbC0+Y29udGV4dCgpLCAqbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQp
OworCisgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmJlZ2luRnJhbWVDb21wbGV0ZSgpOwor
fQorCitib29sIENDVGhyZWFkUHJveHk6Omhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25zdAor
eworICAgIGlmICghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxU
aHJlYWQtPmhhc01vcmVVcGRhdGVzKCk7Cit9CisKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1
bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhy
ZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCB0aGlzLCAwKTsK
KyAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOworICAgIG1f
Y3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT51cGRhdGUobV9sYXllclRyZWVIb3N0
SW1wbC0+Y29udGV4dCgpLCBVcGRhdGVzUGVyRnJhbWUpOworfQorCit2b2lkIENDVGhyZWFkUHJv
eHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFk
UHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIHRoaXMsIDApOworICAgIEFTU0VSVChtX2N1
cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7CisgICAgQVNTRVJUKCFtX2N1cnJlbnRU
ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+aGFzTW9yZVVwZGF0ZXMoKSk7CisgICAgQVNTRVJU
KG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKKworICAgIG1fY3VycmVudFRl
eHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmNsZWFyKCk7CisKKwogICAgIG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmJlZ2luQ29tbWl0KCk7CiAKICAgICBtX2xheWVyVHJlZUhvc3QtPmJlZ2luQ29tbWl0
T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwogICAgIENDVGV4dHVyZVVw
ZGF0ZXIgdXBkYXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0
b3IoKSk7Ci0gICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgdXBkYXRlcik7Ci0gICAgd2hpbGUgKHVwZGF0
ZXIudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgMSkpIHsgfQogICAgIG1f
bGF5ZXJUcmVlSG9zdC0+ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdElt
cGwuZ2V0KCkpOwogCiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29tbWl0Q29tcGxldGUoKTsK
IAotICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOworICAgIG1fbmV4dEZyYW1lSXNOZXdseUNvbW1p
dHRlZEZyYW1lT25JbXBsVGhyZWFkID0gdHJ1ZTsKIAotICAgIG1fc2NoZWR1bGVyT25JbXBsVGhy
ZWFkLT5kaWRDb21taXQoKTsKKyAgICBtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVh
ZC0+c2lnbmFsKCk7CisgICAgbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQgPSAw
OwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OmRyYXdMYXllcnNBbmRTd2FwT25JbXBsVGhyZWFk
KCkKQEAgLTQ0MSwyMSArNDUyLDQyIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZHJhd0xheWVyc0Fu
ZFN3YXBPbkltcGxUaHJlYWQoKQogICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgZHJhd0xheWVyc09uSW1wbFRocmVhZCgpOwotICAgIG1fbGF5ZXJU
cmVlSG9zdEltcGwtPnN3YXBCdWZmZXJzKCk7Ci0gICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQt
PmRpZERyYXdBbmRTd2FwKCk7Ci19CisgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVy
cygpOwogCi12b2lkIENDVGhyZWFkUHJveHk6OmRyYXdMYXllcnNPbkltcGxUaHJlYWQoKQotewot
ICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJzT25JbXBsVGhyZWFkIiwg
dGhpcywgMCk7Ci0gICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKLSAgICBBU1NFUlQobV9sYXll
clRyZWVIb3N0SW1wbCk7CisgICAgLy8gQ2hlY2sgZm9yIGEgcGVuZGluZyBjb21wb3NpdGVBbmRS
ZWFkYmFjaworICAgIGlmIChtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZCkgeworICAgICAg
bV9sYXllclRyZWVIb3N0SW1wbC0+cmVhZGJhY2sobV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJl
YWQtPnBpeGVscywgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQtPnJlY3QpOworICAgICAg
bV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQtPnN1Y2Nlc3MgPSAhbV9sYXllclRyZWVIb3N0
SW1wbC0+aXNDb250ZXh0TG9zdCgpOworICAgICAgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJl
YWQtPmNvbXBsZXRpb24uc2lnbmFsKCk7CisgICAgICBtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRo
cmVhZCA9IDA7CisgICAgfQorCisgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c3dhcEJ1ZmZlcnMo
KTsKIAotICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMoKTsKICAgICAvLyBGSVhN
RTogaGFuZGxlIGNhc2Ugd2hlcmUgbV9sYXllclRyZWVIb3N0SW1wbC0+aXNDb250ZXh0TG9zdC4K
ICAgICAvLyBGSVhNRTogcGFzcyBkaWRTd2FwQnVmZmVyc0Fib3J0IGlmIG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmlzQ29udGV4dExvc3QuCiAgICAgQVNTRVJUKCFtX2xheWVyVHJlZUhvc3RJbXBsLT5p
c0NvbnRleHRMb3N0KCkpOworCisgICAgLy8gUHJvY2VzcyBhbnkgZmluaXNoIHJlcXVlc3QKKyAg
ICBpZiAobV9maW5pc2hBbGxSZW5kZXJpbmdDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpIHsK
KyAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+ZmluaXNoQWxsUmVuZGVyaW5nKCk7CisgICAg
ICAgIG1fZmluaXNoQWxsUmVuZGVyaW5nQ29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkLT5zaWdu
YWwoKTsKKyAgICAgICAgbV9maW5pc2hBbGxSZW5kZXJpbmdDb21wbGV0aW9uRXZlbnRPbkltcGxU
aHJlYWQgPSAwOworICAgIH0KKworICAgIC8vIFRlbGwgdGhlIG1haW4gdGhyZWFkIHRoYXQgdGhl
IHRoZSBuZXdseS1jb21taXRlZCBmcmFtZSB3YXMgZHJhd24uCisgICAgaWYgKG1fbmV4dEZyYW1l
SXNOZXdseUNvbW1pdHRlZEZyYW1lT25JbXBsVGhyZWFkKSB7CisgICAgICAgIG1fbmV4dEZyYW1l
SXNOZXdseUNvbW1pdHRlZEZyYW1lT25JbXBsVGhyZWFkID0gZmFsc2U7CisgICAgICAgIG1fbWFp
blRocmVhZFByb3h5LT5wb3N0VGFzayhjcmVhdGVNYWluVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJl
YWRQcm94eTo6ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5zb3Vy
Y2VGcmFtZU51bWJlcigpKSk7CisgICAgfQorfQorCit2b2lkIENDVGhyZWFkUHJveHk6OmRpZENv
bW1pdEFuZERyYXdGcmFtZShpbnQgZnJhbWVOdW1iZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdCkKKyAgICAgICAgcmV0dXJuOworICAg
IG1fbGF5ZXJUcmVlSG9zdC0+ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKGZyYW1lTnVtYmVyKTsKIH0K
IAogdm9pZCBDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplSW1wbE9uSW1wbFRocmVhZChDQ0NvbXBs
ZXRpb25FdmVudCogY29tcGxldGlvbikKQEAgLTQ2Myw4ICs0OTUsOSBAQCB2b2lkIENDVGhyZWFk
UHJveHk6OmluaXRpYWxpemVJbXBsT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21w
bGV0aW9uKQogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplSW1wbE9u
SW1wbFRocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAg
bV9sYXllclRyZWVIb3N0SW1wbCA9IG1fbGF5ZXJUcmVlSG9zdC0+Y3JlYXRlTGF5ZXJUcmVlSG9z
dEltcGwodGhpcyk7Ci0gICAgbV9zY2hlZHVsZXJDbGllbnRPbkltcGxUaHJlYWQgPSBDQ1RocmVh
ZFByb3h5U2NoZWR1bGVyQ2xpZW50OjpjcmVhdGUodGhpcyk7Ci0gICAgbV9zY2hlZHVsZXJPbklt
cGxUaHJlYWQgPSBDQ1NjaGVkdWxlcjo6Y3JlYXRlKG1fc2NoZWR1bGVyQ2xpZW50T25JbXBsVGhy
ZWFkLmdldCgpKTsKKyAgICBjb25zdCBkb3VibGUgZGlzcGxheVJlZnJlc2hJbnRlcnZhbE1zID0g
MTAwMC4wIC8gNjAuMDsKKyAgICBPd25QdHI8Q0NGcmFtZVJhdGVDb250cm9sbGVyPiBmcmFtZVJh
dGVDb250cm9sbGVyID0gYWRvcHRQdHIobmV3IENDRnJhbWVSYXRlQ29udHJvbGxlcihDQ0RlbGF5
QmFzZWRUaW1lU291cmNlOjpjcmVhdGUoZGlzcGxheVJlZnJlc2hJbnRlcnZhbE1zLCBzX2NjVGhy
ZWFkKSkpOworICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkID0gQ0NTY2hlZHVsZXI6OmNyZWF0
ZSh0aGlzLCBmcmFtZVJhdGVDb250cm9sbGVyLnJlbGVhc2UoKSk7CiAgICAgY29tcGxldGlvbi0+
c2lnbmFsKCk7CiB9CiAKQEAgLTQ5MCw3ICs1MjMsMTQgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojps
YXllclRyZWVIb3N0Q2xvc2VkT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0
aW8KICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJl
YWQobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOwogICAg
IG1fbGF5ZXJUcmVlSG9zdEltcGwuY2xlYXIoKTsKICAgICBtX2lucHV0SGFuZGxlck9uSW1wbFRo
cmVhZC5jbGVhcigpOworICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLmNsZWFyKCk7CiAgICAg
Y29tcGxldGlvbi0+c2lnbmFsKCk7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVk
QWN0aW9uRHJhd0FuZFN3YXAoKQoreworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojpz
Y2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCIsIHRoaXMsIDApOworICAgIGRyYXdMYXllcnNBbmRT
d2FwT25JbXBsVGhyZWFkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuaAppbmRleCA3MTEwZjczMjIyNzFkMGY2ZWQ5M2MxZjQ5ZDA5MDA0NWQ1ZTBj
ZDcyLi5hOGI1MjI4OTc4N2FhNzBhZWEwMGVmOWYwYWNlYzU4YzQ0MWEzZjdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDTWFpblRocmVhZC5oIgogI2luY2x1ZGUgImNj
L0NDUHJveHkuaCIKKyNpbmNsdWRlICJjYy9DQ1NjaGVkdWxlci5oIgogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcsMTEgKzM4LDEwIEBAIGNsYXNz
IENDSW5wdXRIYW5kbGVyOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0OwogY2xhc3MgQ0NTY2hlZHVs
ZXI7CiBjbGFzcyBDQ1Njb3BlZE1haW5UaHJlYWRQcm94eTsKK2NsYXNzIENDVGV4dHVyZVVwZGF0
ZXI7CiBjbGFzcyBDQ1RocmVhZDsKLWNsYXNzIENDVGhyZWFkUHJveHlTY2hlZHVsZXJDbGllbnQ7
CiAKLWNsYXNzIENDVGhyZWFkUHJveHkgOiBwdWJsaWMgQ0NQcm94eSwgQ0NMYXllclRyZWVIb3N0
SW1wbENsaWVudCB7Ci0gICAgZnJpZW5kIGNsYXNzIENDVGhyZWFkUHJveHlTY2hlZHVsZXJDbGll
bnQ7CitjbGFzcyBDQ1RocmVhZFByb3h5IDogcHVibGljIENDUHJveHksIENDTGF5ZXJUcmVlSG9z
dEltcGxDbGllbnQsIENDU2NoZWR1bGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9p
ZCBzZXRUaHJlYWQoQ0NUaHJlYWQqKTsKIApAQCAtNzAsMjAgKzcwLDMzIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKTsKIAorICAgIC8vIENDU2NoZWR1bGVy
Q2xpZW50IGltcGxlbWVudGF0aW9uCisgICAgdmlydHVhbCBib29sIGhhc01vcmVSZXNvdXJjZVVw
ZGF0ZXMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFt
ZSgpOworICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpOworICAg
IHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCk7CisgICAg
dmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpOworCiBwcml2YXRlOgogICAgIGV4
cGxpY2l0IENDVGhyZWFkUHJveHkoQ0NMYXllclRyZWVIb3N0Kik7CiAKICAgICAvLyBDYWxsZWQg
b24gQ0NNYWluVGhyZWFkCiAgICAgdm9pZCBiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5j
ZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW1lLCBQYXNzT3duUHRyPENDU2Nyb2xsVXBkYXRl
U2V0Pik7CisgICAgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoaW50IGZyYW1lTnVtYmVyKTsK
IAogICAgIC8vIENhbGxlZCBvbiBDQ1RocmVhZAotICAgIHZvaWQgcG9zdEJlZ2luRnJhbWVBbmRD
b21taXRPbkltcGxUaHJlYWQoKTsKKyAgICBzdHJ1Y3QgUmVhZGJhY2tSZXF1ZXN0IHsKKyAgICAg
ICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsKKyAgICAgICAgYm9vbCBzdWNjZXNzOwor
ICAgICAgICB2b2lkKiBwaXhlbHM7CisgICAgICAgIEludFJlY3QgcmVjdDsKKyAgICB9OwogICAg
IFBhc3NPd25QdHI8Q0NNYWluVGhyZWFkOjpUYXNrPiBjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0
VGFza09uSW1wbFRocmVhZCgpOwogICAgIHZvaWQgb2J0YWluQmVnaW5GcmFtZUFuZENvbW1pdFRh
c2tGcm9tQ0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBDQ01haW5UaHJlYWQ6OlRhc2sqKik7
Ci0gICAgdm9pZCBjb21taXRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKKyAgICB2
b2lkIGJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwog
ICAgIHZvaWQgZHJhd0xheWVyc0FuZFN3YXBPbkltcGxUaHJlYWQoKTsKICAgICB2b2lkIGRyYXdM
YXllcnNPbkltcGxUaHJlYWQoKTsKLSAgICB2b2lkIGRyYXdMYXllcnNBbmRSZWFkYmFja09uSW1w
bFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIGJvb2wqIHN1Y2Nlc3MsIHZvaWQqIHBpeGVscywg
Y29uc3QgSW50UmVjdCYpOworICAgIHZvaWQgcmVxdWVzdFJlYWRiYWNrT25JbXBsVGhyZWFkKFJl
YWRiYWNrUmVxdWVzdCopOwogICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFk
KENDQ29tcGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCBpbml0aWFsaXplSW1wbE9uSW1wbFRocmVh
ZChDQ0NvbXBsZXRpb25FdmVudCopOwogICAgIHZvaWQgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJP
bkltcGxUaHJlYWQoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ0NvbXBsZXRpb25FdmVudCosIGJvb2wq
IGluaXRpYWxpemVTdWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMqLCBpbnQqIGNv
bXBvc2l0b3JJZGVudGlmaWVyKTsKQEAgLTEwMSwxNyArMTE0LDMyIEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX3N0YXJ0ZWQ7CiAgICAgaW50IG1fbGFzdEV4ZWN1dGVkQmVnaW5GcmFtZUFuZENvbW1p
dFNlcXVlbmNlTnVtYmVyOwogCi0gICAgLy8gVXNlZCBvbiB0aGUgQ0NUaHJlYWQgb25seQorICAg
IC8vIFVzZWQgb24gdGhlIENDVGhyZWFkIG9ubHkuCiAgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9z
dEltcGw+IG1fbGF5ZXJUcmVlSG9zdEltcGw7CiAgICAgaW50IG1fbnVtQmVnaW5GcmFtZUFuZENv
bW1pdHNJc3N1ZWRPbkltcGxUaHJlYWQ7CiAKICAgICBPd25QdHI8Q0NJbnB1dEhhbmRsZXI+IG1f
aW5wdXRIYW5kbGVyT25JbXBsVGhyZWFkOwogCiAgICAgT3duUHRyPENDU2NoZWR1bGVyPiBtX3Nj
aGVkdWxlck9uSW1wbFRocmVhZDsKLSAgICBPd25QdHI8Q0NUaHJlYWRQcm94eVNjaGVkdWxlckNs
aWVudD4gbV9zY2hlZHVsZXJDbGllbnRPbkltcGxUaHJlYWQ7CiAKICAgICBSZWZQdHI8Q0NTY29w
ZWRNYWluVGhyZWFkUHJveHk+IG1fbWFpblRocmVhZFByb3h5OwogCisgICAgLy8gU2V0IHdoZW50
IHRoZSBtYWluIHRocmVhZCBpcyB3YWlpbmcgb24gYSByZWFkYmFjay4KKyAgICBSZWFkYmFja1Jl
cXVlc3QqIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkOworCisgICAgLy8gU2V0IHdoZW4g
dGhlIG1haW4gdGhyZWFkIGlzIHdhaXRpbmcgb24gYSBmaW5pc2hBbGxSZW5kZXJpbmcgY2FsbC4K
KyAgICBDQ0NvbXBsZXRpb25FdmVudCogbV9maW5pc2hBbGxSZW5kZXJpbmdDb21wbGV0aW9uRXZl
bnRPbkltcGxUaHJlYWQ7CisKKyAgICAvLyBTZXQgd2hlbiB0aGUgbWFpbiB0aHJlYWQgaXMgd2Fp
dGluZyBvbiBhIGNvbW1pdCB0byBjb21wbGV0ZS4KKyAgICBDQ0NvbXBsZXRpb25FdmVudCogbV9j
b21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQ7CisgICAgT3duUHRyPENDVGV4dHVyZVVw
ZGF0ZXI+IG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkOworCisgICAgLy8gU2V0
IHdoZW4gdGhlIG5leHQgZHJhdyBzaG91bGQgcG9zdCBkaWRDb21taXRBbmREcmF3RnJhbWUgdG8g
dGhlIG1haW4gdGhyZWFkLgorICAgIGJvb2wgbV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJh
bWVPbkltcGxUaHJlYWQ7CisKKyAgICBlbnVtIHsgVXBkYXRlc1BlckZyYW1lID0gMTYgfTsKKwor
CiAgICAgc3RhdGljIENDVGhyZWFkKiBzX2NjVGhyZWFkOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCmluZGV4IDE3ZjI1
NTE0NzJmZmQ4MTllNTZkMTQwODk2MDhiYzBkMDcwNWIwMGMuLjg5ZGJiYTYxNjY2NGFhN2JhZGUy
NjkwNzk4NzhmYWEzZjZiMWRiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKQEAgLTk1LDYgKzk1LDExIEBAIFBhc3NSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0M0Q+IFdlYkxheWVyVHJlZVZpZXdJbXBsOjpjcmVhdGVMYXllclRy
ZWVIb3N0Q29udGV4dDNECiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQod2ViQ29udGV4dC5yZWxlYXNlKCksIGF0
dHJpYnV0ZXMsIDAsIHN0eWxlLCB1c2FnZSk7CiB9CiAKK3ZvaWQgV2ViTGF5ZXJUcmVlVmlld0lt
cGw6OmRpZENvbW1pdEFuZERyYXdGcmFtZShpbnQgZnJhbWVOdW1iZXIpCit7CisgICAgLy8gRklY
TUU6IHJvdXRlIHRoaXMgdXAgdG8gdGhlIFdlYkxheWVyVHJlZVZpZXcgY2xpZW50Cit9CisKIHZv
aWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmRpZFJlY3JlYXRlR3JhcGhpY3NDb250ZXh0KGJvb2wg
c3VjY2VzcykKIHsKICAgICBpZiAobV9jbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaAppbmRleCBmNTlmZTVmOGI3MzdiYWNhZmJi
M2FhODU4NDM0MDg1MGNkYmE1MzllLi4xYjEzYmYzNDU5MTMxODFiN2UwN2Q3ZDJiZTc4Njg4Y2Y5
YzQ0M2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRy
ZWVWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJl
ZVZpZXdJbXBsLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
YW5pbWF0ZUFuZExheW91dChkb3VibGUgZnJhbWVCZWdpblRpbWUpOwogICAgIHZpcnR1YWwgdm9p
ZCBhcHBseVNjcm9sbERlbHRhKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUxheWVyVHJlZUhv
c3RDb250ZXh0M0QoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKGlu
dCBmcmFtZU51bWJlcik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlR3JhcGhpY3NDb250
ZXh0KGJvb2wgc3VjY2Vzcyk7CiAKICAgICAvLyBPbmx5IHVzZWQgaW4gdGhlIHNpbmdsZSB0aHJl
YWRlZCBwYXRoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmlu
ZGV4IDE1ODYxNzMzODgyZjQ1OWI2MTc3Y2FiNzJlYzNkZTRiYTc5NTI5ZjUuLmU5MDM1NmI5NjI1
OGFiYmZkNWZiMWMzNDhiZjhhZTlhMTIyZmI1ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTI2NTYsNiArMjY1NiwxMSBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjphcHBseVNjcm9sbERlbHRhKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKQogICAgIG1h
aW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCktPnNjcm9sbEJ5KHNjcm9sbERlbHRhKTsKIH0KIAor
dm9pZCBXZWJWaWV3SW1wbDo6ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKGludCBmcmFtZU51bWJlcikK
K3sKKyAgICAvLyBGSVhNRTogcm91dGUgdGhpcyB1cCB0byBSZW5kZXJXaWRnZXQncyBkaWRGbHVz
aFBhaW50LgorfQorCiB2b2lkIFdlYlZpZXdJbXBsOjpkaWRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4
dChib29sIHN1Y2Nlc3MpCiB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5oCmluZGV4IDMxNTY0NGQyMjJhZWM5NWRjOWJiYjkzNzUzY2I0NzEyZmRjNmQ2ZTEuLjRhOTA2
OThhYTliNzkxOTBjZDUxNjhjZGZkNzE1ZGY3MmI2MWU5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtMjIwLDYgKzIyMCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgYW5pbWF0ZUFuZExheW91dChkb3VibGUgZnJhbWVCZWdpblRpbWUpOwogICAg
IHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbERlbHRhKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0
ZUxheWVyVHJlZUhvc3RDb250ZXh0M0QoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5k
RHJhd0ZyYW1lKGludCBmcmFtZU51bWJlcik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRl
R3JhcGhpY3NDb250ZXh0KGJvb2wgc3VjY2Vzcyk7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxl
Q29tcG9zaXRlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NEZWxheUJhc2VkVGltZVNvdXJjZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlVGVzdC5jcHAKaW5kZXggMDllMWZjZTYyNmI4YzBm
YjM2ZDIyMWYyNDY2MWZhMDg3MTllYmE2Ni4uYjQ1MTVjMjhlNTY5MGM2MjY0ZjNmYTZmOWJjMWU0
ZWRiZGM1MjlmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0Rl
bGF5QmFzZWRUaW1lU291cmNlVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlVGVzdC5jcHAKQEAgLTQ0LDExICs0NCwxMSBAQCBU
RVNUKENDRGVsYXlCYXNlZFRpbWVTb3VyY2VUZXN0LCBUYXNrUG9zdGVkQW5kVGlja0NhbGxlZCkK
ICAgICBSZWZQdHI8RmFrZUNDRGVsYXlCYXNlZFRpbWVTb3VyY2U+IHRpbWVyID0gRmFrZUNDRGVs
YXlCYXNlZFRpbWVTb3VyY2U6OmNyZWF0ZSgxMDAwLjAgLyA2MC4wLCAmdGhyZWFkKTsKICAgICB0
aW1lci0+c2V0Q2xpZW50KCZjbGllbnQpOwogCi0gICAgdGltZXItPnNldE1vbm90b25pY2FsbHlJ
bmNyZWFzaW5nVGltZSgwKTsKKyAgICB0aW1lci0+c2V0TW9ub3RvbmljYWxseUluY3JlYXNpbmdU
aW1lTXMoMCk7CiAgICAgdGltZXItPnNldEFjdGl2ZSh0cnVlKTsKICAgICBFWFBFQ1RfVFJVRSh0
aHJlYWQuaGFzUGVuZGluZ1Rhc2soKSk7CiAKLSAgICB0aW1lci0+c2V0TW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKDE2KTsKKyAgICB0aW1lci0+c2V0TW9ub3RvbmljYWxseUluY3JlYXNpbmdU
aW1lTXMoMTYpOwogICAgIHRocmVhZC5ydW5QZW5kaW5nVGFzaygpOwogICAgIEVYUEVDVF9UUlVF
KGNsaWVudC50aWNrQ2FsbGVkKCkpOwogfQpAQCAtMTEwLDggKzExMCw4IEBAIFRFU1QoQ0NEZWxh
eUJhc2VkVGltZVNvdXJjZVRlc3QsIEFjaGlldmVzVGFyZ2V0UmF0ZVdpdGhOb05vaXNlKQogICAg
ICAgICB0b3RhbEZyYW1lVGltZSArPSBkZWxheTsKIAogICAgICAgICAvLyBSdW4gdGhlIGNhbGxi
YWNrIGV4YWN0bHkgd2hlbiBhc2tlZAotICAgICAgICBkb3VibGUgbm93ID0gdGltZXItPm1vbm90
b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpICsgZGVsYXk7Ci0gICAgICAgIHRpbWVyLT5zZXRNb25v
dG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUobm93KTsKKyAgICAgICAgZG91YmxlIG5vdyA9IHRpbWVy
LT5tb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWVNcygpICsgZGVsYXk7CisgICAgICAgIHRpbWVy
LT5zZXRNb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWVNcyhub3cpOwogICAgICAgICB0aHJlYWQu
cnVuUGVuZGluZ1Rhc2soKTsKICAgICB9CiAgICAgZG91YmxlIGF2ZXJhZ2VJbnRlcnZhbCA9IHRv
dGFsRnJhbWVUaW1lIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihudW1JdGVyYXRpb25zKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NGcmFtZVJhdGVDb250cm9sbGVy
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDRnJhbWVSYXRlQ29udHJv
bGxlclRlc3QuY3BwCmluZGV4IDNlNWMzYjE3MWU5ODM2Y2IzZjM1NTRkNjRjMTcxNTAzNzE3ZWQ0
ZmQuLmNmNzc2YzljZTc3NDM2MjRkMTE0YjJlNzc4NWZmNTEyYzI2MGFmOTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NGcmFtZVJhdGVDb250cm9sbGVyVGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0ZyYW1lUmF0ZUNvbnRyb2xs
ZXJUZXN0LmNwcApAQCAtNjMsNyArNjMsNyBAQCBURVNUKENDRnJhbWVSYXRlQ29udHJvbGxlclRl
c3QsIFRlc3RGcmFtZVRocm90dGxpbmdfSW1tZWRpYXRlQWNrKQogCiAgICAgLy8gVHJpZ2dlciBv
bmUgZnJhbWUsIG1ha2Ugc3VyZSB0aGUgdnN5bmMgY2FsbGJhY2sgaXMgY2FsbGVkCiAgICAgZWxh
cHNlZCArPSB0aHJlYWQucGVuZGluZ0RlbGF5KCk7Ci0gICAgdGltZVNvdXJjZS0+c2V0TW9ub3Rv
bmljYWxseUluY3JlYXNpbmdUaW1lKGVsYXBzZWQpOworICAgIHRpbWVTb3VyY2UtPnNldE1vbm90
b25pY2FsbHlJbmNyZWFzaW5nVGltZU1zKGVsYXBzZWQpOwogICAgIHRocmVhZC5ydW5QZW5kaW5n
VGFzaygpOwogICAgIEVYUEVDVF9UUlVFKGNsaWVudC5mcmFtZUJlZ3VuKCkpOwogICAgIGNsaWVu
dC5yZXNldCgpOwpAQCAtNzIsMTMgKzcyLDEzIEBAIFRFU1QoQ0NGcmFtZVJhdGVDb250cm9sbGVy
VGVzdCwgVGVzdEZyYW1lVGhyb3R0bGluZ19JbW1lZGlhdGVBY2spCiAgICAgY29udHJvbGxlci5k
aWRCZWdpbkZyYW1lKCk7CiAKICAgICAvLyBUZWxsIHRoZSBjb250cm9sbGVyIHRoZSBmcmFtZSBl
bmRlZCA1bXMgbGF0ZXIKLSAgICB0aW1lU291cmNlLT5zZXRNb25vdG9uaWNhbGx5SW5jcmVhc2lu
Z1RpbWUodGltZVNvdXJjZS0+bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgKyA1KTsKKyAg
ICB0aW1lU291cmNlLT5zZXRNb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWVNcyh0aW1lU291cmNl
LT5tb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWVNcygpICsgNSk7CiAgICAgY29udHJvbGxlci5k
aWRGaW5pc2hGcmFtZSgpOwogCiAgICAgLy8gVHJpZ2dlciBhbm90aGVyIGZyYW1lLCBtYWtlIHN1
cmUgdnN5bmMgcnVucyBhZ2FpbgogICAgIGVsYXBzZWQgKz0gdGhyZWFkLnBlbmRpbmdEZWxheSgp
OwotICAgIEVYUEVDVF9UUlVFKGVsYXBzZWQgPj0gdGltZVNvdXJjZS0+bW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKCkpOyAvLyBTYW5pdHkgY2hlY2sgdGhhdCBwcmV2aW91cyBjb2RlIGRpZG4n
dCBtb3ZlIHRpbWUgYmFja3dhcmQuCi0gICAgdGltZVNvdXJjZS0+c2V0TW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKGVsYXBzZWQpOworICAgIEVYUEVDVF9UUlVFKGVsYXBzZWQgPj0gdGltZVNv
dXJjZS0+bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lTXMoKSk7IC8vIFNhbml0eSBjaGVjayB0
aGF0IHByZXZpb3VzIGNvZGUgZGlkbid0IG1vdmUgdGltZSBiYWNrd2FyZC4KKyAgICB0aW1lU291
cmNlLT5zZXRNb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWVNcyhlbGFwc2VkKTsKICAgICB0aHJl
YWQucnVuUGVuZGluZ1Rhc2soKTsKICAgICBFWFBFQ1RfVFJVRShjbGllbnQuZnJhbWVCZWd1bigp
KTsKIH0KQEAgLTEwMCw3ICsxMDAsNyBAQCBURVNUKENDRnJhbWVSYXRlQ29udHJvbGxlclRlc3Qs
IFRlc3RGcmFtZVRocm90dGxpbmdfVHdvRnJhbWVzSW5GbGlnaHQpCiAKICAgICAvLyBUcmlnZ2Vy
IG9uZSBmcmFtZSwgbWFrZSBzdXJlIHRoZSB2c3luYyBjYWxsYmFjayBpcyBjYWxsZWQKICAgICBl
bGFwc2VkICs9IHRocmVhZC5wZW5kaW5nRGVsYXkoKTsKLSAgICB0aW1lU291cmNlLT5zZXRNb25v
dG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoZWxhcHNlZCk7CisgICAgdGltZVNvdXJjZS0+c2V0TW9u
b3RvbmljYWxseUluY3JlYXNpbmdUaW1lTXMoZWxhcHNlZCk7CiAgICAgdGhyZWFkLnJ1blBlbmRp
bmdUYXNrKCk7CiAgICAgRVhQRUNUX1RSVUUoY2xpZW50LmZyYW1lQmVndW4oKSk7CiAgICAgY2xp
ZW50LnJlc2V0KCk7CkBAIC0xMTAsOCArMTEwLDggQEAgVEVTVChDQ0ZyYW1lUmF0ZUNvbnRyb2xs
ZXJUZXN0LCBUZXN0RnJhbWVUaHJvdHRsaW5nX1R3b0ZyYW1lc0luRmxpZ2h0KQogCiAgICAgLy8g
VHJpZ2dlciBhbm90aGVyIGZyYW1lLCBtYWtlIHN1cmUgdnN5bmMgY2FsbGJhY2sgcnVucyBhZ2Fp
bgogICAgIGVsYXBzZWQgKz0gdGhyZWFkLnBlbmRpbmdEZWxheSgpOwotICAgIEVYUEVDVF9UUlVF
KGVsYXBzZWQgPj0gdGltZVNvdXJjZS0+bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkpOyAv
LyBTYW5pdHkgY2hlY2sgdGhhdCBwcmV2aW91cyBjb2RlIGRpZG4ndCBtb3ZlIHRpbWUgYmFja3dh
cmQuCi0gICAgdGltZVNvdXJjZS0+c2V0TW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKGVsYXBz
ZWQpOworICAgIEVYUEVDVF9UUlVFKGVsYXBzZWQgPj0gdGltZVNvdXJjZS0+bW9ub3RvbmljYWxs
eUluY3JlYXNpbmdUaW1lTXMoKSk7IC8vIFNhbml0eSBjaGVjayB0aGF0IHByZXZpb3VzIGNvZGUg
ZGlkbid0IG1vdmUgdGltZSBiYWNrd2FyZC4KKyAgICB0aW1lU291cmNlLT5zZXRNb25vdG9uaWNh
bGx5SW5jcmVhc2luZ1RpbWVNcyhlbGFwc2VkKTsKICAgICB0aHJlYWQucnVuUGVuZGluZ1Rhc2so
KTsKICAgICBFWFBFQ1RfVFJVRShjbGllbnQuZnJhbWVCZWd1bigpKTsKICAgICBjbGllbnQucmVz
ZXQoKTsKQEAgLTEyMSwxMyArMTIxLDEzIEBAIFRFU1QoQ0NGcmFtZVJhdGVDb250cm9sbGVyVGVz
dCwgVGVzdEZyYW1lVGhyb3R0bGluZ19Ud29GcmFtZXNJbkZsaWdodCkKIAogICAgIC8vIFRyaWdn
ZXIgYW5vdGhlciBmcmFtZS4gU2luY2UgdHdvIGZyYW1lcyBhcmUgcGVuZGluZywgd2Ugc2hvdWxk
IG5vdCBkcmF3LgogICAgIGVsYXBzZWQgKz0gdGhyZWFkLnBlbmRpbmdEZWxheSgpOwotICAgIEVY
UEVDVF9UUlVFKGVsYXBzZWQgPj0gdGltZVNvdXJjZS0+bW9ub3RvbmljYWxseUluY3JlYXNpbmdU
aW1lKCkpOyAvLyBTYW5pdHkgY2hlY2sgdGhhdCBwcmV2aW91cyBjb2RlIGRpZG4ndCBtb3ZlIHRp
bWUgYmFja3dhcmQuCi0gICAgdGltZVNvdXJjZS0+c2V0TW9ub3RvbmljYWxseUluY3JlYXNpbmdU
aW1lKGVsYXBzZWQpOworICAgIEVYUEVDVF9UUlVFKGVsYXBzZWQgPj0gdGltZVNvdXJjZS0+bW9u
b3RvbmljYWxseUluY3JlYXNpbmdUaW1lTXMoKSk7IC8vIFNhbml0eSBjaGVjayB0aGF0IHByZXZp
b3VzIGNvZGUgZGlkbid0IG1vdmUgdGltZSBiYWNrd2FyZC4KKyAgICB0aW1lU291cmNlLT5zZXRN
b25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWVNcyhlbGFwc2VkKTsKICAgICB0aHJlYWQucnVuUGVu
ZGluZ1Rhc2soKTsKICAgICBFWFBFQ1RfRkFMU0UoY2xpZW50LmZyYW1lQmVndW4oKSk7CiAKICAg
ICAvLyBUZWxsIHRoZSBjb250cm9sbGVyIHRoZSBmaXJzdCBmcmFtZSBlbmRlZCA1bXMgbGF0ZXIK
LSAgICB0aW1lU291cmNlLT5zZXRNb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUodGltZVNvdXJj
ZS0+bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgKyA1KTsKKyAgICB0aW1lU291cmNlLT5z
ZXRNb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWVNcyh0aW1lU291cmNlLT5tb25vdG9uaWNhbGx5
SW5jcmVhc2luZ1RpbWVNcygpICsgNSk7CiAgICAgY29udHJvbGxlci5kaWRGaW5pc2hGcmFtZSgp
OwogCiAgICAgLy8gVGljayBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQKQEAgLTEzNSw4ICsx
MzUsOCBAQCBURVNUKENDRnJhbWVSYXRlQ29udHJvbGxlclRlc3QsIFRlc3RGcmFtZVRocm90dGxp
bmdfVHdvRnJhbWVzSW5GbGlnaHQpCiAKICAgICAvLyBUcmlnZ2VyIHlldCBhbm90aGVyIGZyYW1l
LiBTaW5jZSBvbmUgZnJhbWVzIGlzIHBlbmRpbmcsIGFub3RoZXIgdnN5bmMgY2FsbGJhY2sgc2hv
dWxkIHJ1bi4KICAgICBlbGFwc2VkICs9IHRocmVhZC5wZW5kaW5nRGVsYXkoKTsKLSAgICBFWFBF
Q1RfVFJVRShlbGFwc2VkID49IHRpbWVTb3VyY2UtPm1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGlt
ZSgpKTsgLy8gU2FuaXR5IGNoZWNrIHRoYXQgcHJldmlvdXMgY29kZSBkaWRuJ3QgbW92ZSB0aW1l
IGJhY2t3YXJkLgotICAgIHRpbWVTb3VyY2UtPnNldE1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGlt
ZShlbGFwc2VkKTsKKyAgICBFWFBFQ1RfVFJVRShlbGFwc2VkID49IHRpbWVTb3VyY2UtPm1vbm90
b25pY2FsbHlJbmNyZWFzaW5nVGltZU1zKCkpOyAvLyBTYW5pdHkgY2hlY2sgdGhhdCBwcmV2aW91
cyBjb2RlIGRpZG4ndCBtb3ZlIHRpbWUgYmFja3dhcmQuCisgICAgdGltZVNvdXJjZS0+c2V0TW9u
b3RvbmljYWxseUluY3JlYXNpbmdUaW1lTXMoZWxhcHNlZCk7CiAgICAgdGhyZWFkLnJ1blBlbmRp
bmdUYXNrKCk7CiAgICAgRVhQRUNUX1RSVUUoY2xpZW50LmZyYW1lQmVndW4oKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cAppbmRleCA1M2UyNGY5NmQ2MjIxZDc1MjJmNDhlNzcyY2FhZDk5OTczYmE3ZDU5Li5iOGIxYWQ1
Yjg4YTM1ODhiZjFmYWZjMmUwZTljNTAyYjhjYzM2YjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTE2NSw2ICsx
NjUsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gY29udGV4dDsKICAgICB9CiAKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKGludCBmcmFtZU51bWJlcikKKyAgICB7
CisgICAgfQorCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlR3JhcGhpY3NDb250ZXh0KGJv
b2wpCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAppbmRleCAzODRkYWZmZDJh
Y2MyZWFkNmFmMmFkOTRlNTQwNTUwMTQ2MmY1MGQzLi40YjVlYWM0YzM3NjUwZGQ1ZWRhNzJiY2M3
OTMyNTUyZmExMjU4NDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCkBAIC01NCw4ICs1NCw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5lZWRzUmVkcmF3KGJvb2wgYikgeyBtX25lZWRzUmVk
cmF3ID0gYjsgfQogICAgIGJvb2wgbmVlZHNSZWRyYXcoKSBjb25zdCB7IHJldHVybiBtX25lZWRz
UmVkcmF3OyB9CiAKLSAgICB2b2lkIHNldFVwZGF0ZWRUaGlzRnJhbWUoYm9vbCBiKSB7IG1fdXBk
YXRlZFRoaXNGcmFtZSA9IGI7IH0KLSAgICBib29sIHVwZGF0ZWRUaGlzRnJhbWUoKSBjb25zdCB7
IHJldHVybiBtX3VwZGF0ZWRUaGlzRnJhbWU7IH0KKyAgICB2b2lkIHNldFVwZGF0ZU1vcmVSZXNv
dXJjZXNQZW5kaW5nKGJvb2wgYikgeyBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nID0gYjsg
fQorICAgIGJvb2wgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBt
X3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nOyB9CiB9OwogCiBURVNUKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lVGVzdCwgVGVzdE5leHRBY3Rpb25CZWdpbnNGcmFtZUlmTmVlZGVkKQpAQCAtNjYs
OSArNjYsOSBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5leHRBY3Rp
b25CZWdpbnNGcmFtZUlmTmVlZGVkKQogICAgICAgICBzdGF0ZS5zZXRDb21taXRTdGF0ZShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0lETEUpOwogICAgICAgICBzdGF0ZS5z
ZXROZWVkc1JlZHJhdyhmYWxzZSk7CiAgICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KGZhbHNl
KTsKLSAgICAgICAgc3RhdGUuc2V0VXBkYXRlZFRoaXNGcmFtZShmYWxzZSk7Ci0gICAgICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRB
Y3Rpb24oZmFsc2UpKTsKLSAgICAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbih0cnVlKSk7CisgICAgICAgIHN0YXRlLnNl
dFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKKyAgICAgICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbihDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRFX05PTkUpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFj
dGlvbihDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRFX0lOU0lERV9WU1lO
QykpOwogICAgIH0KIAogICAgIC8vIElmIGNvbW1pdCByZXF1ZXN0ZWQsIGJlZ2luIGEgZnJhbWUK
QEAgLTc3LDggKzc3LDggQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RO
ZXh0QWN0aW9uQmVnaW5zRnJhbWVJZk5lZWRlZCkKICAgICAgICAgc3RhdGUuc2V0Q29tbWl0U3Rh
dGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9JRExFKTsKICAgICAgICAg
c3RhdGUuc2V0TmVlZHNSZWRyYXcoZmFsc2UpOwogICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1p
dCh0cnVlKTsKLSAgICAgICAgc3RhdGUuc2V0VXBkYXRlZFRoaXNGcmFtZShmYWxzZSk7Ci0gICAg
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1F
LCBzdGF0ZS5uZXh0QWN0aW9uKGZhbHNlKSk7CisgICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVS
ZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKKyAgICAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUsIHN0YXRlLm5leHRBY3Rpb24oQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFURV9TVEFURV9OT05FKSk7CiAgICAgfQogCiAgICAgLy8g
QmVnaW4gdGhlIGZyYW1lLCBtYWtlIHN1cmUgbmVlZHNDb21taXQgYW5kIGNvbW1pdFN0YXRlIHVw
ZGF0ZSBjb3JyZWN0bHkuCkBAIC05OSwyNSArOTksMjUgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QsIFRlc3ROZXh0QWN0aW9uRHJhd3NPblZTeW5jKQogICAgICAgICBzdGF0ZS5z
ZXRDb21taXRTdGF0ZShhbGxDb21taXRTdGF0ZXNbaV0pOwogICAgICAgICBzdGF0ZS5zZXROZWVk
c1JlZHJhdyh0cnVlKTsKIAotICAgICAgICAvLyBDYXNlIDE6IG5lZWRzQ29tbWl0PWZhbHNlIHVw
ZGF0ZWRUaGlzRnJhbWU9ZmFsc2UgdnN5bmM9ZmFsc2UuCisgICAgICAgIC8vIENhc2UgMTogbmVl
ZHNDb21taXQ9ZmFsc2UgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc9ZmFsc2UgdnN5bmM9ZmFs
c2UuCiAgICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KGZhbHNlKTsKLSAgICAgICAgc3RhdGUu
c2V0VXBkYXRlZFRoaXNGcmFtZShmYWxzZSk7Ci0gICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oZmFsc2UpKTsKKyAg
ICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOworICAgICAg
ICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5u
ZXh0QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfTk9ORSkp
OwogCi0gICAgICAgIC8vIENhc2UgMjogbmVlZHNDb21taXQ9ZmFsc2UgdXBkYXRlZFRoaXNGcmFt
ZT10cnVlIHZzeW5jPWZhbHNlLgorICAgICAgICAvLyBDYXNlIDI6IG5lZWRzQ29tbWl0PWZhbHNl
IHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPXRydWUgdnN5bmM9ZmFsc2UuCiAgICAgICAgIHN0
YXRlLnNldE5lZWRzQ29tbWl0KGZhbHNlKTsKLSAgICAgICAgc3RhdGUuc2V0VXBkYXRlZFRoaXNG
cmFtZSh0cnVlKTsKLSAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbihmYWxzZSkpOworICAgICAgICBzdGF0ZS5zZXRV
cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsKKyAgICAgICAgRVhQRUNUX05FKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbihDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRFX05PTkUpKTsKIAotICAgICAgICAvLyBD
YXNlIDM6IG5lZWRzQ29tbWl0PXRydWUgdXBkYXRlZFRoaXNGcmFtZT1mYWxzZSB2c3luYz1mYWxz
ZS4KKyAgICAgICAgLy8gQ2FzZSAzOiBuZWVkc0NvbW1pdD10cnVlIHVwZGF0ZU1vcmVSZXNvdXJj
ZXNQZW5kaW5nPWZhbHNlIHZzeW5jPWZhbHNlLgogICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1p
dCh0cnVlKTsKLSAgICAgICAgc3RhdGUuc2V0VXBkYXRlZFRoaXNGcmFtZShmYWxzZSk7Ci0gICAg
ICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRl
Lm5leHRBY3Rpb24oZmFsc2UpKTsKKyAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNl
c1BlbmRpbmcoZmFsc2UpOworICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpJTU1FRElBVEVfU1RBVEVfTk9ORSkpOwogCi0gICAgICAgIC8vIENhc2UgNDogbmVlZHNDb21t
aXQ9dHJ1ZSB1cGRhdGVkVGhpc0ZyYW1lPXRydWUgdnN5bmM9ZmFsc2UuCisgICAgICAgIC8vIENh
c2UgNDogbmVlZHNDb21taXQ9dHJ1ZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz10cnVlIHZz
eW5jPWZhbHNlLgogICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKLSAgICAgICAg
c3RhdGUuc2V0VXBkYXRlZFRoaXNGcmFtZSh0cnVlKTsKLSAgICAgICAgRVhQRUNUX05FKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbihmYWxzZSkp
OworICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsKKyAg
ICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3Rh
dGUubmV4dEFjdGlvbihDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRFX05P
TkUpKTsKICAgICB9CiAKICAgICAvLyBXaGVuIG9uIHZzeW5jLCB5b3Ugc2hvdWxkIGFsd2F5cyBk
cmF3LiBFeHBlY3QgaWYgeW91J3JlIHJlYWR5IHRvIGNvbW1pdCwgaW4gd2hpY2ggY2FzZSBjb21t
aXQuCkBAIC0xMzEsNTYgKzEzMSw5OSBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVz
dCwgVGVzdE5leHRBY3Rpb25EcmF3c09uVlN5bmMpCiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGV4cGVjdGVkQWN0aW9uID0gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQ7
CiAKLSAgICAgICAgLy8gQ2FzZSAxOiBuZWVkc0NvbW1pdD1mYWxzZSB1cGRhdGVkVGhpc0ZyYW1l
PWZhbHNlIHZzeW5jPXRydWUuCisgICAgICAgIC8vIENhc2UgMTogbmVlZHNDb21taXQ9ZmFsc2Ug
dXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc9ZmFsc2UgdnN5bmM9dHJ1ZS4KICAgICAgICAgc3Rh
dGUuc2V0TmVlZHNDb21taXQoZmFsc2UpOwotICAgICAgICBzdGF0ZS5zZXRVcGRhdGVkVGhpc0Zy
YW1lKGZhbHNlKTsKLSAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkQWN0aW9uLCBzdGF0ZS5uZXh0
QWN0aW9uKHRydWUpKTsKKyAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRp
bmcoZmFsc2UpOworICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRBY3Rpb24sIHN0YXRlLm5leHRB
Y3Rpb24oQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFURV9TVEFURV9JTlNJREVfVlNZ
TkMpKTsKIAotICAgICAgICAvLyBDYXNlIDI6IG5lZWRzQ29tbWl0PWZhbHNlIHVwZGF0ZWRUaGlz
RnJhbWU9dHJ1ZSB2c3luYz10cnVlLgorICAgICAgICAvLyBDYXNlIDI6IG5lZWRzQ29tbWl0PWZh
bHNlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPXRydWUgdnN5bmM9dHJ1ZS4KICAgICAgICAg
c3RhdGUuc2V0TmVlZHNDb21taXQoZmFsc2UpOwotICAgICAgICBzdGF0ZS5zZXRVcGRhdGVkVGhp
c0ZyYW1lKHRydWUpOwotICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRBY3Rpb24sIHN0YXRlLm5l
eHRBY3Rpb24odHJ1ZSkpOworICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVu
ZGluZyh0cnVlKTsKKyAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkQWN0aW9uLCBzdGF0ZS5uZXh0
QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfSU5TSURFX1ZT
WU5DKSk7CiAKLSAgICAgICAgLy8gQ2FzZSAzOiBuZWVkc0NvbW1pdD10cnVlIHVwZGF0ZWRUaGlz
RnJhbWU9ZmFsc2UgdnN5bmM9dHJ1ZS4KKyAgICAgICAgLy8gQ2FzZSAzOiBuZWVkc0NvbW1pdD10
cnVlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPWZhbHNlIHZzeW5jPXRydWUuCiAgICAgICAg
IHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOwotICAgICAgICBzdGF0ZS5zZXRVcGRhdGVkVGhp
c0ZyYW1lKGZhbHNlKTsKLSAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkQWN0aW9uLCBzdGF0ZS5u
ZXh0QWN0aW9uKHRydWUpKTsKKyAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1Bl
bmRpbmcoZmFsc2UpOworICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRBY3Rpb24sIHN0YXRlLm5l
eHRBY3Rpb24oQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFURV9TVEFURV9JTlNJREVf
VlNZTkMpKTsKIAotICAgICAgICAvLyBDYXNlIDQ6IG5lZWRzQ29tbWl0PXRydWUgdXBkYXRlZFRo
aXNGcmFtZT10cnVlIHZzeW5jPXRydWUuCisgICAgICAgIC8vIENhc2UgNDogbmVlZHNDb21taXQ9
dHJ1ZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz10cnVlIHZzeW5jPXRydWUuCiAgICAgICAg
IHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOwotICAgICAgICBzdGF0ZS5zZXRVcGRhdGVkVGhp
c0ZyYW1lKHRydWUpOwotICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRBY3Rpb24sIHN0YXRlLm5l
eHRBY3Rpb24odHJ1ZSkpOworICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVu
ZGluZyh0cnVlKTsKKyAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkQWN0aW9uLCBzdGF0ZS5uZXh0
QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfSU5TSURFX1ZT
WU5DKSk7CiAgICAgfQogfQogCi1URVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVz
dFVwZGF0ZXNSZXNvdXJjZXNPbmNlUGVyRnJhbWUpCitURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lVGVzdCwgVGVzdFVwZGF0ZXNfTm9SZWRyYXdfT25lUm91bmRPZlVwZGF0ZXMpCiB7Ci0gICAg
Ly8gV2hlbiBubyByZWRyYXcgaXMgbmVlZGVkIC0tLSB1cGRhdGUgdW50aWwgZG9uZQotICAgIHsK
LSAgICAgICAgU3RhdGVNYWNoaW5lIHN0YXRlOwotICAgICAgICBzdGF0ZS5zZXRDb21taXRTdGF0
ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNF
Uyk7Ci0gICAgICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KGZhbHNlKTsKLSAgICAgICAgc3RhdGUu
c2V0VXBkYXRlZFRoaXNGcmFtZShmYWxzZSk7Ci0gICAgICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFj
dGlvbihmYWxzZSkpOwotICAgICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24odHJ1ZSkpOwot
ICAgIH0KKyAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAgc3RhdGUuc2V0Q29tbWl0U3RhdGUo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMp
OworICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KGZhbHNlKTsKKyAgICBzdGF0ZS5zZXRVcGRhdGVN
b3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0
QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfTk9ORSkpOwor
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFU
RV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbihDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6SU1NRURJQVRFX1NUQVRFX0lOU0lERV9WU1lOQykpOworCisgICAgLy8gQmVnaW4gYW4gdXBk
YXRlLgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfTk9ORSkpOworICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFURV9TVEFURV9JTlNJREVfVlNZTkMpKTsKKworICAg
IC8vIEVuZCB1cGRhdGUgd2l0aCBubyBtb3JlIHVwZGF0ZXMgcGVuZGluZy4KKyAgICBzdGF0ZS5i
ZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CisgICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9uKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfTk9ORSkpOworfQogCi0gICAg
Ly8gT25jZSB3ZSB1cGRhdGUgcmVzb3VyY2VzLCBkb24ndCBkbyBpdCBhZ2FpbiB1bnRpbCBhIGRy
YXcKLSAgICB7Ci0gICAgICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKLSAgICAgICAgc3RhdGUuc2V0
Q29tbWl0U3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElO
R19SRVNPVVJDRVMpOwotICAgICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0cnVlKTsKLSAgICAg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fVVBEQVRFX01PUkVf
UkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKGZhbHNlKSk7Ci0gICAgICAgIHN0YXRlLnVwZGF0
ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fVVBEQVRFX01PUkVfUkVTT1VS
Q0VTKTsKLSAgICAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
Tk9ORSwgc3RhdGUubmV4dEFjdGlvbihmYWxzZSkpOworVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X1R3b1JvdW5kc09mVXBkYXRlcykKK3sKKyAg
ICBTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAgc3RhdGUuc2V0Q29tbWl0U3RhdGUoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMpOworICAgIHN0
YXRlLnNldE5lZWRzUmVkcmF3KGZhbHNlKTsKKyAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3Vy
Y2VzUGVuZGluZyhmYWxzZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfTk9ORSkpOworICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JF
U09VUkNFUywgc3RhdGUubmV4dEFjdGlvbihDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SU1NRURJ
QVRFX1NUQVRFX0lOU0lERV9WU1lOQykpOworCisgICAgLy8gQmVnaW4gYW4gdWRwYXRlLgorICAg
IHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5f
VVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpJTU1FRElBVEVfU1RBVEVfTk9ORSkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OklNTUVESUFURV9TVEFURV9JTlNJREVfVlNZTkMpKTsKKworICAgIC8vIEFjayB0
aGUgdXBkYXRlIHdpdGggbW9yZSBwZW5kaW5nLgorICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJl
c291cmNlc0NvbXBsZXRlKHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlv
bihDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRFX05PTkUpKTsKKyAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9S
RV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OklN
TUVESUFURV9TVEFURV9JTlNJREVfVlNZTkMpKTsKKworICAgIC8vIEJlZ2luIGFub3RoZXIgdXBk
YXRlLCBlbmQgaXQgd2l0aCBub25lIGVwZW5kaW5nLgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VT
KTsKKyAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7Cisg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0
ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfTk9O
RSkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1J
VCwgc3RhdGUubmV4dEFjdGlvbihDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NU
QVRFX0lOU0lERV9WU1lOQykpOworfQorCitURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVz
dCwgVGVzdFVwZGF0ZXNfV2l0aFJlZHJhd19PbmVSb3VuZE9mVXBkYXRlcykKK3sKKyAgICBTdGF0
ZU1hY2hpbmUgc3RhdGU7CisgICAgc3RhdGUuc2V0Q29tbWl0U3RhdGUoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMpOworICAgIHN0YXRlLnNl
dE5lZWRzUmVkcmF3KHRydWUpOworICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5k
aW5nKGZhbHNlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFURV9TVEFURV9OT05FKSk7CiAKLSAgICAgICAgLy8gb25j
ZSB3ZSd2ZSBkcmF3biBhZ2FpbiwgaXQgc2hvdWxkIGFsbG93IHVzIHRvIHVwZGF0ZSAocmVnYXJk
bGVzcyBvZiB2c3luYyBzdGF0ZSkKLSAgICAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbih0cnVlKSk7Ci0gICAgICAgIHN0
YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVyk7Cisg
ICAgLy8gQmVnaW4gYW4gdXBkYXRlLgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKKyAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0
QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfSU5TSURFX1ZT
WU5DKSk7CiAKLSAgICAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKHRydWUpKTsKLSAgICAg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fVVBEQVRFX01PUkVf
UkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKGZhbHNlKSk7Ci0gICAgfQorICAgIC8vIERyYXcu
CisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9E
UkFXKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05F
LCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RB
VEVfSU5TSURFX1ZTWU5DKSk7CisKKyAgICAvLyBGaW5pc2ggdXBkYXRlLCBsZXZhZSBtb3JlIHJl
c291cmNlcyBwZW5kaW5nLgorICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBs
ZXRlKHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbihDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRFX05PTkUpKTsKKyAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMs
IHN0YXRlLm5leHRBY3Rpb24oQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFURV9TVEFU
RV9JTlNJREVfVlNZTkMpKTsKKworICAgIC8vIEJlZ2luIGFub3RoZXIgdXBkYXRlLiBGaW5pc2gg
aXQgaW1tZWRpYXRlbHkuCisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOworICAgIHN0YXRlLmJl
Z2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKyAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFURV9TVEFURV9OT05FKSk7CisgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0
aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfSU5TSURFX1ZTWU5D
KSk7CiB9CiAKIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0U2V0TmVlZHND
b21taXRJc05vdExvc3QpCkBAIC0xODksOCArMjMyLDggQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QsIFRlc3RTZXROZWVkc0NvbW1pdElzTm90TG9zdCkKICAgICBzdGF0ZS5zZXRO
ZWVkc0NvbW1pdCh0cnVlKTsKIAogICAgIC8vIEJlZ2luIHRoZSBmcmFtZS4KLSAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4
dEFjdGlvbihmYWxzZSkpOwotICAgIHN0YXRlLnVwZGF0ZVN0YXRlKHN0YXRlLm5leHRBY3Rpb24o
ZmFsc2UpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9C
RUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbihDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SU1N
RURJQVRFX1NUQVRFX05PTkUpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0
aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfTk9ORSkpOwogICAg
IEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0ZSQU1FX0lO
X1BST0dSRVNTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKIAogICAgIC8vIE5vdywgd2hpbGUgdGhl
IGZyYW1lIGlzIGluIHByb2dyZXNzLCBzZXQgYW5vdGhlciBjb21taXQuCkBAIC0yMDAsMTggKzI0
MywxOCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFNldE5lZWRzQ29t
bWl0SXNOb3RMb3N0KQogICAgIC8vIExldCB0aGUgZnJhbWUgZmluaXNoLgogICAgIHN0YXRlLmJl
Z2luRnJhbWVDb21wbGV0ZSgpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7
Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fVVBEQVRFX01P
UkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKGZhbHNlKSk7Ci0gICAgc3RhdGUudXBkYXRl
U3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9VUERBVEVfTU9SRV9SRVNPVVJD
RVMpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUs
IHN0YXRlLm5leHRBY3Rpb24oZmFsc2UpKTsKLSAgICBzdGF0ZS51cGRhdGVSZXNvdXJjZXNDb21w
bGV0ZSgpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JF
R0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbihDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRFX05PTkUpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0
ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09V
UkNFUyk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9O
RSwgc3RhdGUubmV4dEFjdGlvbihDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NU
QVRFX05PTkUpKTsKKyAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShm
YWxzZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RB
VEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKLSAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24o
ZmFsc2UpKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9D
T01NSVQsIHN0YXRlLm5leHRBY3Rpb24odHJ1ZSkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbihDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRFX05PTkUpKTsKKyAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFURV9TVEFURV9JTlNJREVfVlNZTkMpKTsKICAg
ICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1J
VCk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVf
SURMRSwgc3RhdGUuY29tbWl0U3RhdGUoKSk7CiAKLSAgICAvLyB2ZXJpZnkgdGhhdCBhbm90aGVy
IGNvbW1pdCB3aWxsIGJlZ2luCi0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fQkVHSU5fRlJBTUUsIHN0YXRlLm5leHRBY3Rpb24oZmFsc2UpKTsKKyAgICAvLyBW
ZXJpZnkgdGhhdCBhbm90aGVyIGNvbW1pdCB3aWxsIGJlZ2luLgorICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9u
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfTk9ORSkpOwogfQogCiBU
RVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZ1bGxDeWNsZSkKQEAgLTIyMCwy
MyArMjYzLDI0IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5
Y2xlKQogCiAgICAgLy8gU3RhcnQgY2xlYW4gYW5kIHNldCBjb21taXQuCiAgICAgc3RhdGUuc2V0
TmVlZHNDb21taXQodHJ1ZSk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fQkVHSU5fRlJBTUUsIHN0YXRlLm5leHRBY3Rpb24oZmFsc2UpKTsKKyAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUu
bmV4dEFjdGlvbihDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRFX05PTkUp
KTsKIAogICAgIC8vIEJlZ2luIHRoZSBmcmFtZS4KICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FKTsKICAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUywg
c3RhdGUuY29tbWl0U3RhdGUoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLm5lZWRzQ29tbWl0
KCkpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUs
IHN0YXRlLm5leHRBY3Rpb24oZmFsc2UpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfTk9ORSkpOwogCiAgICAgLy8gVGVsbCB0aGUgc2NoZWR1
bGVyIHRoZSBmcmFtZSBmaW5pc2hlZC4KICAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsK
ICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERB
VElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwotICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUu
bmV4dEFjdGlvbihmYWxzZSkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbihD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRFX05PTkUpKTsKIAotICAgIC8v
IFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgdXBkYXRlIGlzIGRvbmUuCi0gICAgc3RhdGUudXBkYXRl
UmVzb3VyY2VzQ29tcGxldGUoKTsKKyAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIHVwZGF0
ZSBiZWdhbiBhbmQgZmluaXNoZWQKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CisgICAgc3Rh
dGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwogICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCwg
c3RhdGUuY29tbWl0U3RhdGUoKSk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9uKGZhbHNlKSk7CisgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0
aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfTk9ORSkpOwogCiAg
ICAgLy8gQ29tbWl0LgogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fQ09NTUlUKTsKQEAgLTI0NCwxNiArMjg4LDE2IEBAIFRFU1QoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xlKQogICAgIEVYUEVDVF9UUlVFKHN0YXRl
Lm5lZWRzUmVkcmF3KCkpOwogCiAgICAgLy8gRXhwZWN0IHRvIGRvIG5vdGhpbmcgdW50aWwgdnN5
bmMuCi0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwg
c3RhdGUubmV4dEFjdGlvbihmYWxzZSkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OklNTUVESUFURV9TVEFURV9OT05FKSk7CiAKICAgICAvLyBBdCB2c3luYywgZHJhdy4K
LSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0
ZS5uZXh0QWN0aW9uKHRydWUpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpJTU1FRElBVEVfU1RBVEVfSU5TSURFX1ZTWU5DKSk7CiAgICAgc3RhdGUudXBkYXRlU3RhdGUo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXKTsKIAogICAgIC8vIFNob3VsZCBi
ZSBzeW5jaHJvbml6ZWQsIG5vIGRyYXcgbmVlZGVkLCBubyBhY3Rpb24gbmVlZGVkLgogICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0lETEUsIHN0YXRl
LmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc1JlZHJhdygpKTsK
LSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0
ZS5uZXh0QWN0aW9uKGZhbHNlKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbihDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6SU1NRURJQVRFX1NUQVRFX05PTkUpKTsKIH0KIAogVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZVRlc3QsIFRlc3RGdWxsQ3ljbGVXaXRoQ29tbWl0UmVxdWVzdEluYmV0d2VlbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcAppbmRleCBk
ZTJjYzU2YmU3OTMzZmJkMzY4ODRiYjZkYjRmZjZjZjkzNGIxN2RjLi5iNzdmYWU5NGY3MGEyYTBj
ZTI0OWJhNDUyOGNiNDFiMmNhMmU1YjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCkBAIC0yNiw1NyArMjYsMTA1IEBACiAKICNpbmNs
dWRlICJjYy9DQ1NjaGVkdWxlci5oIgogCisjaW5jbHVkZSAiQ0NTY2hlZHVsZXJUZXN0Q29tbW9u
LmgiCiAjaW5jbHVkZSA8Z21vY2svZ21vY2suaD4KICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdURjsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdFRlc3RzOwogCiBuYW1lc3Bh
Y2UgewogCi1jbGFzcyBNb2NrQ0NTY2hlZHVsZXJDbGllbnQgOiBwdWJsaWMgQ0NTY2hlZHVsZXJD
bGllbnQgeworY2xhc3MgRmFrZUNDU2NoZWR1bGVyQ2xpZW50IDogcHVibGljIENDU2NoZWR1bGVy
Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBNT0NLX01FVEhPRDAoc2NoZWR1bGVCZWdpbkZyYW1lQW5k
Q29tbWl0LCB2b2lkKCkpOwotICAgIE1PQ0tfTUVUSE9EMChzY2hlZHVsZURyYXdBbmRTd2FwLCB2
b2lkKCkpOwotfTsKKyAgICBGYWtlQ0NTY2hlZHVsZXJDbGllbnQoKSB7IHJlc2V0KCk7IH0KKyAg
ICB2b2lkIHJlc2V0KCkgeyBtX2FjdGlvbnMuY2xlYXIoKTsgbV9oYXNNb3JlUmVzb3VyY2VVcGRh
dGVzID0gZmFsc2U7IH0KIAotY2xhc3MgQ0NTY2hlZHVsZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgewotcHVibGljOgotICAgIENDU2NoZWR1bGVyVGVzdCgpCi0gICAgICAgIDogbV9jbGll
bnQoYWRvcHRQdHIobmV3IE1vY2tDQ1NjaGVkdWxlckNsaWVudCkpCi0gICAgICAgICwgbV9zY2hl
ZHVsZXIoQ0NTY2hlZHVsZXI6OmNyZWF0ZShtX2NsaWVudC5nZXQoKSkpCi0gICAgewotICAgICAg
ICBFWFBFQ1RfQ0FMTCgqbV9jbGllbnQsIHNjaGVkdWxlQmVnaW5GcmFtZUFuZENvbW1pdCgpKS5U
aW1lcygwKTsKLSAgICAgICAgRVhQRUNUX0NBTEwoKm1fY2xpZW50LCBzY2hlZHVsZURyYXdBbmRT
d2FwKCkpLlRpbWVzKDApOwotICAgIH0KKyAgICB2b2lkIHNldEhhc01vcmVSZXNvdXJjZVVwZGF0
ZXMoYm9vbCBiKSB7IG1faGFzTW9yZVJlc291cmNlVXBkYXRlcyA9IGI7IH0KKworICAgIGludCBu
dW1BY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihtX2FjdGlvbnMuc2l6
ZSgpKTsgfQorICAgIGNvbnN0IGNoYXIqIGFjdGlvbihpbnQgaSkgY29uc3QgeyByZXR1cm4gbV9h
Y3Rpb25zW2ldOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFzTW9yZVJlc291cmNlVXBkYXRlcygp
IGNvbnN0IHsgcmV0dXJuIG1faGFzTW9yZVJlc291cmNlVXBkYXRlczsgfQorCisgICAgdmlydHVh
bCB2b2lkIHNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUoKSB7IG1fYWN0aW9ucy5wdXNoX2JhY2so
InNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUiKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVs
ZWRBY3Rpb25EcmF3QW5kU3dhcCgpIHsgbV9hY3Rpb25zLnB1c2hfYmFjaygic2NoZWR1bGVkQWN0
aW9uRHJhd0FuZFN3YXAiKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25VcGRh
dGVNb3JlUmVzb3VyY2VzKCkgeyBtX2FjdGlvbnMucHVzaF9iYWNrKCJzY2hlZHVsZWRBY3Rpb25V
cGRhdGVNb3JlUmVzb3VyY2VzIik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9u
Q29tbWl0KCkgeyBtX2FjdGlvbnMucHVzaF9iYWNrKCJzY2hlZHVsZWRBY3Rpb25Db21taXQiKTsg
fQogCiBwcm90ZWN0ZWQ6Ci0gICAgT3duUHRyPE1vY2tDQ1NjaGVkdWxlckNsaWVudD4gbV9jbGll
bnQ7Ci0gICAgT3duUHRyPENDU2NoZWR1bGVyPiBtX3NjaGVkdWxlcjsKKyAgICBib29sIG1faGFz
TW9yZVJlc291cmNlVXBkYXRlczsKKyAgICBzdGQ6OnZlY3Rvcjxjb25zdCBjaGFyKj4gbV9hY3Rp
b25zOwogfTsKIAotVEVTVF9GKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1pdCkKK1RFU1Qo
Q0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0Q29tbWl0KQogewotICAgIEVYUEVDVF9DQUxMKCptX2Ns
aWVudCwgc2NoZWR1bGVCZWdpbkZyYW1lQW5kQ29tbWl0KCkpLlRpbWVzKDEpOwotICAgIG1fc2No
ZWR1bGVyLT5yZXF1ZXN0Q29tbWl0KCk7CisgICAgRmFrZUNDU2NoZWR1bGVyQ2xpZW50IGNsaWVu
dDsKKyAgICBSZWZQdHI8RmFrZUNDVGltZVNvdXJjZT4gdGltZVNvdXJjZSA9IGFkb3B0UmVmKG5l
dyBGYWtlQ0NUaW1lU291cmNlKCkpOworICAgIE93blB0cjxDQ1NjaGVkdWxlcj4gc2NoZWR1bGVy
ID0gQ0NTY2hlZHVsZXI6OmNyZWF0ZSgmY2xpZW50LCBhZG9wdFB0cihuZXcgQ0NGcmFtZVJhdGVD
b250cm9sbGVyKHRpbWVTb3VyY2UpKSk7CisKKyAgICAvLyBTZXROZWRzQ29tbWl0IHNob3VsZCBi
ZWdpbiB0aGUgZnJhbWUuCisgICAgc2NoZWR1bGVyLT5zZXROZWVkc0NvbW1pdCgpOworICAgIEVY
UEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBFWFBFQ1RfRVEoInNjaGVkdWxl
ZEFjdGlvbkJlZ2luRnJhbWUiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBjbGllbnQucmVzZXQo
KTsKKworICAgIC8vIFNpbmNlLCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzIGlzIHNldCB0byBmYWxz
ZSwKKyAgICAvLyBiZWdpbkZyYW1lQ29tcGxldGUgc2hvdWxkIHVwZGF0ZU1vcmVSZXNvdXJjZXMs
IHRoZW4KKyAgICAvLyBjb21taXQKKyAgICBzY2hlZHVsZXItPmJlZ2luRnJhbWVDb21wbGV0ZSgp
OworICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBFWFBFQ1RfRVEo
InNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBjbGllbnQuYWN0aW9uKDApKTsK
KyAgICBFWFBFQ1RfRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5hY3Rpb24oMSkp
OworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgLy8gVGljayBzaG91bGQgZHJhdy4KKyAgICB0
aW1lU291cmNlLT50aWNrKCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkp
OworICAgIEVYUEVDVF9FUSgic2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAiLCBjbGllbnQuYWN0
aW9uKDApKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIC8vIFRpY2sgc2hvdWxkIGRvIG5v
dGhpbmcuCisgICAgdGltZVNvdXJjZS0+dGljaygpOworICAgIEVYUEVDVF9FUSgwLCBjbGllbnQu
bnVtQWN0aW9ucygpKTsKIH0KIAotVEVTVF9GKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1p
dFR3aWNlQmVmb3JlQ29tbWl0KQorVEVTVChDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RDb21taXRB
ZnRlckJlZ2luRnJhbWUpCiB7Ci0gICAgRVhQRUNUX0NBTEwoKm1fY2xpZW50LCBzY2hlZHVsZUJl
Z2luRnJhbWVBbmRDb21taXQoKSkuVGltZXMoMSk7Ci0gICAgbV9zY2hlZHVsZXItPnJlcXVlc3RD
b21taXQoKTsKLSAgICBtX3NjaGVkdWxlci0+cmVxdWVzdENvbW1pdCgpOworICAgIEZha2VDQ1Nj
aGVkdWxlckNsaWVudCBjbGllbnQ7CisgICAgUmVmUHRyPEZha2VDQ1RpbWVTb3VyY2U+IHRpbWVT
b3VyY2UgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGltZVNvdXJjZSgpKTsKKyAgICBPd25QdHI8Q0NT
Y2hlZHVsZXI+IHNjaGVkdWxlciA9IENDU2NoZWR1bGVyOjpjcmVhdGUoJmNsaWVudCwgYWRvcHRQ
dHIobmV3IENDRnJhbWVSYXRlQ29udHJvbGxlcih0aW1lU291cmNlKSkpOworCisgICAgLy8gU2V0
TmVkc0NvbW1pdCBzaG91bGQgYmVnaW4gdGhlIGZyYW1lLgorICAgIHNjaGVkdWxlci0+c2V0TmVl
ZHNDb21taXQoKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAg
RVhQRUNUX0VRKCJzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lIiwgY2xpZW50LmFjdGlvbigwKSk7
CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBOb3cgc2V0TmVlZHNDb21taXQgYWdhaW4u
IENhbGxpbmcgaGVyZSBtZWFucyB3ZSBuZWVkIGEgc2Vjb25kIGZyYW1lLgorICAgIHNjaGVkdWxl
ci0+c2V0TmVlZHNDb21taXQoKTsKKworICAgIC8vIFNpbmNlLCBoYXNNb3JlUmVzb3VyY2VVcGRh
dGVzIGlzIHNldCB0byBmYWxzZSwgYW5kIGFub3RoZXIgY29tbWl0IGlzCisgICAgLy8gbmVlZGVk
LCBiZWdpbkZyYW1lQ29tcGxldGUgc2hvdWxkIHVwZGF0ZU1vcmVSZXNvdXJjZXMsIHRoZW4gY29t
bWl0LCB0aGVuCisgICAgLy8gYmVnaW4gYW5vdGhlciBmcmFtZS4KKyAgICBzY2hlZHVsZXItPmJl
Z2luRnJhbWVDb21wbGV0ZSgpOworICAgIEVYUEVDVF9FUSgzLCBjbGllbnQubnVtQWN0aW9ucygp
KTsKKyAgICBFWFBFQ1RfRVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBj
bGllbnQuYWN0aW9uKDApKTsKKyAgICBFWFBFQ1RfRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIs
IGNsaWVudC5hY3Rpb24oMSkpOworICAgIEVYUEVDVF9FUSgic2NoZWR1bGVkQWN0aW9uQmVnaW5G
cmFtZSIsIGNsaWVudC5hY3Rpb24oMikpOworICAgIGNsaWVudC5yZXNldCgpOwogCi0gICAgRVhQ
RUNUX0NBTEwoKm1fY2xpZW50LCBzY2hlZHVsZUJlZ2luRnJhbWVBbmRDb21taXQoKSkuVGltZXMo
MSk7Ci0gICAgbV9zY2hlZHVsZXItPmRpZENvbW1pdCgpOwotICAgIG1fc2NoZWR1bGVyLT5yZXF1
ZXN0Q29tbWl0KCk7CisgICAgLy8gVGljayBzaG91bGQgZHJhdyBidXQgdGhlbiBiZWdpbiBhbm90
aGVyIGZyYW1lLgorICAgIHRpbWVTb3VyY2UtPnRpY2soKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xp
ZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX0VRKCJzY2hlZHVsZWRBY3Rpb25EcmF3QW5k
U3dhcCIsIGNsaWVudC5hY3Rpb24oMCkpOworICAgIGNsaWVudC5yZXNldCgpOwogfQogCi1URVNU
X0YoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0UmVkcmF3KQorVEVTVChDQ1NjaGVkdWxlclRlc3Qs
IFJlcXVlc3RSZWRyYXcpCiB7Ci0gICAgRVhQRUNUX0NBTEwoKm1fY2xpZW50LCBzY2hlZHVsZURy
YXdBbmRTd2FwKCkpLlRpbWVzKDEpOwotICAgIG1fc2NoZWR1bGVyLT5yZXF1ZXN0UmVkcmF3KCk7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hl
ZHVsZXJUZXN0Q29tbW9uLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1
bGVyVGVzdENvbW1vbi5oCmluZGV4IGYwY2I1ZmQwMGNhNDhkYWUwNmFlZDQ1NzcwOWQ1YjFhNzg1
NjllOTguLjMyYjcwYzAxY2ViZTA0M2ZlY2Q2OTAwNTMxNmI2Y2JiZmZiMDM5YmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0Q29tbW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3RDb21tb24u
aApAQCAtODEsNiArODEsMjkgQEAgcHJvdGVjdGVkOgogICAgIGxvbmcgbG9uZyBtX3BlbmRpbmdU
YXNrRGVsYXk7CiB9OwogCitjbGFzcyBGYWtlQ0NUaW1lU291cmNlIDogcHVibGljIFdlYkNvcmU6
OkNDVGltZVNvdXJjZSB7CitwdWJsaWM6CisgICAgRmFrZUNDVGltZVNvdXJjZSgpCisgICAgICAg
IDogbV9hY3RpdmUoZmFsc2UpCisgICAgICAgICwgbV9jbGllbnQoMCkgeyB9CisKKyAgICB2aXJ0
dWFsIH5GYWtlQ0NUaW1lU291cmNlKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50
KFdlYkNvcmU6OkNDVGltZVNvdXJjZUNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50
OyB9CisgICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShib29sIGIpIHsgbV9hY3RpdmUgPSBiOyB9
CisKKyAgICB2b2lkIHRpY2soKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYWN0aXZlKTsKKyAg
ICAgICAgaWYgKG1fY2xpZW50KQorICAgICAgICAgICAgbV9jbGllbnQtPm9uVGltZXJUaWNrKCk7
CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgYm9vbCBtX2FjdGl2ZTsKKyAgICBXZWJDb3JlOjpD
Q1RpbWVTb3VyY2VDbGllbnQqIG1fY2xpZW50OworfTsKKwogY2xhc3MgRmFrZUNDRGVsYXlCYXNl
ZFRpbWVTb3VyY2UgOiBwdWJsaWMgV2ViQ29yZTo6Q0NEZWxheUJhc2VkVGltZVNvdXJjZSB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RmFrZUNDRGVsYXlCYXNlZFRpbWVTb3VyY2U+
IGNyZWF0ZShkb3VibGUgaW50ZXJ2YWxNcywgV2ViQ29yZTo6Q0NUaHJlYWQqIHRocmVhZCkKQEAg
LTg4LDE1ICsxMTEsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZh
a2VDQ0RlbGF5QmFzZWRUaW1lU291cmNlKGludGVydmFsTXMsIHRocmVhZCkpOwogICAgIH0KIAot
ICAgIHZvaWQgc2V0TW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKGRvdWJsZSB0aW1lKSB7IG1f
bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lID0gdGltZTsgfQotICAgIHZpcnR1YWwgZG91Ymxl
IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9ub3Rvbmlj
YWxseUluY3JlYXNpbmdUaW1lOyB9CisgICAgdm9pZCBzZXRNb25vdG9uaWNhbGx5SW5jcmVhc2lu
Z1RpbWVNcyhkb3VibGUgdGltZSkgeyBtX21vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZU1zID0g
dGltZTsgfQorICAgIHZpcnR1YWwgZG91YmxlIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZU1z
KCkgY29uc3QgeyByZXR1cm4gbV9tb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWVNczsgfQogCiBw
cm90ZWN0ZWQ6CiAgICAgRmFrZUNDRGVsYXlCYXNlZFRpbWVTb3VyY2UoZG91YmxlIGludGVydmFs
TXMsIFdlYkNvcmU6OkNDVGhyZWFkKiB0aHJlYWQpCiAgICAgICAgIDogQ0NEZWxheUJhc2VkVGlt
ZVNvdXJjZShpbnRlcnZhbE1zLCB0aHJlYWQpCi0gICAgICAgICwgbV9tb25vdG9uaWNhbGx5SW5j
cmVhc2luZ1RpbWUoMCkgeyB9CisgICAgICAgICwgbV9tb25vdG9uaWNhbGx5SW5jcmVhc2luZ1Rp
bWVNcygwKSB7IH0KIAotICAgIGRvdWJsZSBtX21vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZTsK
KyAgICBkb3VibGUgbV9tb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWVNczsKIH07CiAKIH0K
</data>
<flag name="review"
          id="111231"
          type_id="1"
          status="+"
          setter="jamesr"
    />
          </attachment>
      

    </bug>

</bugzilla>