<?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>167961</bug_id>
          
          <creation_ts>2017-02-07 15:28:02 -0800</creation_ts>
          <short_desc>[WebRTC] Implement Incoming libwebrtc audio source support.</short_desc>
          <delta_ts>2017-02-21 15:17:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit 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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>agouaillard</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1274183</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-02-07 15:28:02 -0800</bug_when>
    <thetext>[WebRTC] Implement Incoming libwebrtc audio source support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274184</commentid>
    <comment_count>1</comment_count>
      <attachid>300855</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-02-07 15:30:25 -0800</bug_when>
    <thetext>Created attachment 300855
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274187</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-02-07 15:32:25 -0800</bug_when>
    <thetext>Patch is not working in my branch.
startProducingData is not called.
The timer in an audio element consuming this track gets updated to &quot;ty aN:aN&quot;, so something is probably not correct in the set-up of the audio source.

If somebody has an idea, please let me know.
Otherwise, I&apos;ll debug this tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1275176</commentid>
    <comment_count>3</comment_count>
      <attachid>301116</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-02-09 18:15:45 -0800</bug_when>
    <thetext>Created attachment 301116
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1275334</commentid>
    <comment_count>4</comment_count>
      <attachid>301116</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-02-10 08:45:38 -0800</bug_when>
    <thetext>Comment on attachment 301116
Patch

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

&gt; Source/WebCore/platform/audio/mac/AudioSampleDataSource.cpp:299
&gt; +    if (!m_ringBuffer || m_muted)

Nit: won&apos;t get this far if there isn&apos;t a ring buffer.

&gt; Source/WebCore/platform/mediastream/mac/RealtimeIncomingAudioSource.cpp:116
&gt; +    size_t dataSize = numberOfFrames * numberOfChannels * sizeof(uint16_t);
&gt; +    CMBlockBufferRef dataBuffer;
&gt; +    OSStatus error = CMBlockBufferCreateWithMemoryBlock(nullptr, nullptr, dataSize, nullptr, nullptr, 0, dataSize, 0, &amp;dataBuffer);
&gt; +    ASSERT_UNUSED(error, !error);
&gt; +
&gt; +    error = CMBlockBufferReplaceDataBytes(data, dataBuffer, 0 , dataSize);
&gt; +    ASSERT(!error);
&gt; +
&gt; +    CMSampleBufferRef sampleBuffer;
&gt; +    OSStatus result = CMAudioSampleBufferCreateWithPacketDescriptions(nullptr, nullptr, true, nullptr, nullptr, m_formatDescription.get(), numberOfFrames, startTime, nullptr, &amp;sampleBuffer);
&gt; +    ASSERT(sampleBuffer);
&gt; +    ASSERT_UNUSED(result, !result);
&gt; +    if (!sampleBuffer)
&gt; +        return;
&gt; +
&gt; +    result = CMSampleBufferSetDataReady(sampleBuffer);
&gt; +    ASSERT(!result);
&gt; +

Nit: none of this is necessary if m_audioSourceObservers is empty. We should change the web audio audio observer callback to take a buffer list instead of a sample buffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279136</commentid>
    <comment_count>5</comment_count>
      <attachid>302205</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-02-20 16:53:29 -0800</bug_when>
    <thetext>Created attachment 302205
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279437</commentid>
    <comment_count>6</comment_count>
      <attachid>302287</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-02-21 11:09:50 -0800</bug_when>
    <thetext>Created attachment 302287
Copying data</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279531</commentid>
    <comment_count>7</comment_count>
      <attachid>302287</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-02-21 14:26:49 -0800</bug_when>
    <thetext>Comment on attachment 302287
Copying data

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Hooking libwebrtc incoming audio source into WebCore audio rendering path.

Nit: &quot;Hooking&quot; -&gt; &quot;Hook&quot;

&gt; Source/WebCore/platform/mediastream/mac/RealtimeIncomingAudioSource.cpp:98
&gt; +    WebAudioBufferList audioBufferList { CAAudioStreamDescription(m_streamFormat), WTF::safeCast&lt;uint32_t&gt;(numberOfFrames) };
&gt; +    audioBufferList.buffer(0)-&gt;mDataByteSize = numberOfChannels * numberOfFrames * bitsPerSample / 8;
&gt; +    audioBufferList.buffer(0)-&gt;mNumberChannels = numberOfChannels;
&gt; +    memcpy(audioBufferList.buffer(0)-&gt;mData, audioData, audioBufferList.buffer(0)-&gt;mDataByteSize);
&gt; +
&gt; +    audioSamplesAvailable(mediaTime, audioBufferList, CAAudioStreamDescription(m_streamFormat), numberOfFrames);

Nit: please add a FIXME here, we should not have to copy this data because it will be copied into the data source on the other end of this call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279534</commentid>
    <comment_count>8</comment_count>
      <attachid>302308</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-02-21 14:31:47 -0800</bug_when>
    <thetext>Created attachment 302308
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279536</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-02-21 14:32:10 -0800</bug_when>
    <thetext>Thanks for the review.

(In reply to comment #7)
&gt; Comment on attachment 302287 [details]
&gt; Copying data
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=302287&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        Hooking libwebrtc incoming audio source into WebCore audio rendering path.
&gt; 
&gt; Nit: &quot;Hooking&quot; -&gt; &quot;Hook&quot;

Done

&gt; &gt; Source/WebCore/platform/mediastream/mac/RealtimeIncomingAudioSource.cpp:98
&gt; &gt; +    WebAudioBufferList audioBufferList { CAAudioStreamDescription(m_streamFormat), WTF::safeCast&lt;uint32_t&gt;(numberOfFrames) };
&gt; &gt; +    audioBufferList.buffer(0)-&gt;mDataByteSize = numberOfChannels * numberOfFrames * bitsPerSample / 8;
&gt; &gt; +    audioBufferList.buffer(0)-&gt;mNumberChannels = numberOfChannels;
&gt; &gt; +    memcpy(audioBufferList.buffer(0)-&gt;mData, audioData, audioBufferList.buffer(0)-&gt;mDataByteSize);
&gt; &gt; +
&gt; &gt; +    audioSamplesAvailable(mediaTime, audioBufferList, CAAudioStreamDescription(m_streamFormat), numberOfFrames);
&gt; 
&gt; Nit: please add a FIXME here, we should not have to copy this data because
&gt; it will be copied into the data source on the other end of this call.

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279567</commentid>
    <comment_count>10</comment_count>
      <attachid>302308</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-21 15:17:48 -0800</bug_when>
    <thetext>Comment on attachment 302308
Patch for landing

Clearing flags on attachment: 302308

Committed r212769: &lt;http://trac.webkit.org/changeset/212769&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279568</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-21 15:17:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300855</attachid>
            <date>2017-02-07 15:30:25 -0800</date>
            <delta_ts>2017-02-09 18:15:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167961-20170207152802.patch</filename>
            <type>text/plain</type>
            <size>23773</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExODM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTg4ZWEwYjAxMTc5Yzgx
NDE1YzgxZDAwZTg3MzQ1MDgxNzk5ZjQ5Yi4uMTlkMTNiN2YxY2M1MGJlYWUwMjY3MjNmOWRiYzc0
YmM3ZTRhNjU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE3LTAyLTA3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViUlRDXSBJbXBsZW1l
bnQgSW5jb21pbmcgbGlid2VicnRjIGF1ZGlvIHNvdXJjZSBzdXBwb3J0LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3OTYxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hvdWxkIGJlIGNvdmVyZWQgYnkg
d2ViIGF1ZGlvIGZ1dHVyZSB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb1NhbXBsZUJ1ZmZlckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVC
dWZmZXJMaXN0Ojpjb25maWd1cmVCdWZmZXJMaXN0Rm9yU3RyZWFtKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVCdWZmZXJMaXN0Lmg6CisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1c2hTYW1wbGVzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFsdGltZU1lZGlhU291cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyOjphdWRpb1NhbXBsZXNBdmFpbGFibGUp
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJj
ZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9DYXB0dXJlU291cmNlOjpjYXB0dXJlT3V0
cHV0RGlkT3V0cHV0U2FtcGxlQnVmZmVyRnJvbUNvbm5lY3Rpb24pOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjph
dWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6ZW1pdFNhbXBsZUJ1ZmZlcnMp
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3RyZWFtRGVzY3JpcHRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpPbkRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzdGFydFByb2R1Y2lu
Z0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29t
aW5nQXVkaW9Tb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1l
T3V0Z29pbmdBdWRpb1NvdXJjZTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmg6CisK
IDIwMTctMDItMDcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5mQGdtYWlsLmNvbT4KIAogICAgICAg
ICBbV2ViUlRDXSBMaWJXZWJSVENFbmRwb2ludCBzaG91bGQgbm90IG93biBvYmplY3RzIHRoYXQg
c2hvdWxkIGJlIGRlc3Ryb3llZCBvbiB0aGUgbWFpbiB0aHJlYWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZUJ1ZmZlckxpc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5j
cHAKaW5kZXggYWZjNzE0ZGYzOGJmMTM1MjY4MTlkNTE1ZTkxOTEyNDcwMmU2MGYyOC4uODE1Njcz
ZjI3OGI0Yzk1YWI1OGM4MzM5YTExNjUxOTExZGU0Y2MxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5j
cHAKQEAgLTMxOSw3ICszMTksNyBAQCBPU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNv
cHlGcm9tKENBUmluZ0J1ZmZlciYgcmluZ0J1ZmZlciwgc2l6ZV90IHNhbXBsZQogICAgIHJldHVy
biAwOwogfQogCi12b2lkIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6Y29uZmlndXJlQnVmZmVyTGlz
dEZvclN0cmVhbShBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlckxpc3QsIGNvbnN0IENBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiYgZm9ybWF0LCB1aW50OF90KiBidWZmZXJEYXRhLCBzaXplX3Qgc2FtcGxl
Q291bnQpCit2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6Y29uZmlndXJlQnVmZmVyTGlzdEZv
clN0cmVhbShBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlckxpc3QsIGNvbnN0IENBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbiYgZm9ybWF0LCBjb25zdCB1aW50OF90KiBidWZmZXJEYXRhLCBzaXplX3Qgc2Ft
cGxlQ291bnQpCiB7CiAgICAgc2l6ZV90IGJ1ZmZlckNvdW50ID0gZm9ybWF0Lm51bWJlck9mQ2hh
bm5lbFN0cmVhbXMoKTsKICAgICBzaXplX3QgY2hhbm5lbENvdW50ID0gZm9ybWF0Lm51bWJlck9m
SW50ZXJsZWF2ZWRDaGFubmVscygpOwpAQCAtMzI5LDcgKzMyOSw3IEBAIHZvaWQgQXVkaW9TYW1w
bGVCdWZmZXJMaXN0Ojpjb25maWd1cmVCdWZmZXJMaXN0Rm9yU3RyZWFtKEF1ZGlvQnVmZmVyTGlz
dCYgYnVmZmVyCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJ1ZmZlckNvdW50OyArK2kp
IHsKICAgICAgICAgYnVmZmVyTGlzdC5tQnVmZmVyc1tpXS5tTnVtYmVyQ2hhbm5lbHMgPSBjaGFu
bmVsQ291bnQ7CiAgICAgICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbaV0ubURhdGFCeXRlU2l6ZSA9
IGJ5dGVzUGVyQ2hhbm5lbDsKLSAgICAgICAgYnVmZmVyTGlzdC5tQnVmZmVyc1tpXS5tRGF0YSA9
IGJ1ZmZlckRhdGE7CisgICAgICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbaV0ubURhdGEgPSBjb25z
dF9jYXN0PHVpbnQ4X3QqPihidWZmZXJEYXRhKTsKICAgICAgICAgaWYgKGJ1ZmZlckRhdGEpCiAg
ICAgICAgICAgICBidWZmZXJEYXRhID0gYnVmZmVyRGF0YSArIGJ5dGVzUGVyQ2hhbm5lbDsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9T
YW1wbGVCdWZmZXJMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9TYW1wbGVCdWZmZXJMaXN0LmgKaW5kZXggMGU4ZTI0YzIzMjAxNTZhODNhNzU5NGNmNWZiYzUx
OWFhOGJjYTJiNC4uOWQwODMwM2IxMzQ5MTAzNWI2NjYwNDRjOGU1MGMyOTM5YTk5YjMzZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlQnVm
ZmVyTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nh
bXBsZUJ1ZmZlckxpc3QuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICB+QXVkaW9T
YW1wbGVCdWZmZXJMaXN0KCk7CiAKLSAgICBzdGF0aWMgdm9pZCBjb25maWd1cmVCdWZmZXJMaXN0
Rm9yU3RyZWFtKEF1ZGlvQnVmZmVyTGlzdCYsIGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
biYsIHVpbnQ4X3QqLCBzaXplX3QpOworICAgIHN0YXRpYyB2b2lkIGNvbmZpZ3VyZUJ1ZmZlckxp
c3RGb3JTdHJlYW0oQXVkaW9CdWZmZXJMaXN0JiwgY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uJiwgY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAgc3RhdGljIGlubGluZSBzaXplX3Qg
YXVkaW9CdWZmZXJMaXN0U2l6ZUZvclN0cmVhbShjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24mKTsKIAogICAgIHN0YXRpYyB2b2lkIGFwcGx5R2FpbihBdWRpb0J1ZmZlckxpc3QmLCBmbG9h
dCwgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjo6UENNRm9ybWF0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5j
cHAKaW5kZXggN2I2MzkxYmM3ODNmOWU4OGVkN2ExMDljMjk3MjZkZTBiYjUwN2JhNi4uY2U3MjAx
NjQ5MWNiYjkyMWJhOTYyY2Q2OTkxODkxYzI2MTc5YjhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5j
cHAKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVzaFNh
bXBsZXMoY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBzYW1wbAogICAgIHB1c2hT
YW1wbGVzSW50ZXJuYWwoKmJ1ZmZlckxpc3QsIHRvTWVkaWFUaW1lKENNU2FtcGxlQnVmZmVyR2V0
UHJlc2VudGF0aW9uVGltZVN0YW1wKHNhbXBsZUJ1ZmZlcikpLCBDTVNhbXBsZUJ1ZmZlckdldE51
bVNhbXBsZXMoc2FtcGxlQnVmZmVyKSk7CiB9CiAKLXZvaWQgQXVkaW9TYW1wbGVEYXRhU291cmNl
OjpwdXNoU2FtcGxlcyhjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mIHNhbXBsZURl
c2NyaXB0aW9uLCBjb25zdCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUsIHZvaWQqIGF1ZGlvRGF0YSwg
c2l6ZV90IHNhbXBsZUNvdW50KQordm9pZCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1c2hTYW1w
bGVzKGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgc2FtcGxlRGVzY3JpcHRpb24s
IGNvbnN0IE1lZGlhVGltZSYgc2FtcGxlVGltZSwgY29uc3Qgdm9pZCogYXVkaW9EYXRhLCBzaXpl
X3Qgc2FtcGxlQ291bnQpCiB7CiAgICAgc3RkOjp1bmlxdWVfbG9jazxMb2NrPiBsb2NrKG1fbG9j
aywgc3RkOjp0cnlfdG9fbG9jayk7CiAgICAgQVNTRVJUKCptX2lucHV0RGVzY3JpcHRpb24gPT0g
c2FtcGxlRGVzY3JpcHRpb24pOwpAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgQXVkaW9TYW1wbGVE
YXRhU291cmNlOjpwdXNoU2FtcGxlcyhjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24m
IHNhbXBsCiAgICAgdWludDhfdCBidWZmZXJEYXRhW2J1ZmZlclNpemVdOwogICAgIEF1ZGlvQnVm
ZmVyTGlzdCogYnVmZmVyTGlzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXVkaW9CdWZmZXJMaXN0Kj4o
YnVmZmVyRGF0YSk7CiAKLSAgICBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNvbmZpZ3VyZUJ1ZmZl
ckxpc3RGb3JTdHJlYW0oKmJ1ZmZlckxpc3QsIGRlc2NyaXB0aW9uLCByZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPihhdWRpb0RhdGEpLCBzYW1wbGVDb3VudCk7CisgICAgQXVkaW9TYW1wbGVCdWZm
ZXJMaXN0Ojpjb25maWd1cmVCdWZmZXJMaXN0Rm9yU3RyZWFtKCpidWZmZXJMaXN0LCBkZXNjcmlw
dGlvbiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYXVkaW9EYXRhKSwgc2FtcGxl
Q291bnQpOwogICAgIHB1c2hTYW1wbGVzSW50ZXJuYWwoKmJ1ZmZlckxpc3QsIHNhbXBsZVRpbWUs
IHNhbXBsZUNvdW50KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oCmluZGV4IGRlY2RlZWVmZTJmNzI5
MzkzMTI0ODAyZDg1NjFhNzk3YWI2MjA2MzEuLjczZDUwYzNkMzZmZjkzNjAzNDc2ODdmMmQ0MGZm
NWQ2YjFlYzUxMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21h
Yy9BdWRpb1NhbXBsZURhdGFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGlj
OgogICAgIE9TU3RhdHVzIHNldElucHV0Rm9ybWF0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiYpOwogICAgIE9TU3RhdHVzIHNldE91dHB1dEZvcm1hdChjb25zdCBDQUF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24mKTsKIAotICAgIHZvaWQgcHVzaFNhbXBsZXMoY29uc3QgQXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uJiwgY29uc3QgTWVkaWFUaW1lJiwgdm9pZCosIHNpemVfdCk7CisgICAg
dm9pZCBwdXNoU2FtcGxlcyhjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mLCBjb25z
dCBNZWRpYVRpbWUmLCBjb25zdCB2b2lkKiwgc2l6ZV90KTsKICAgICB2b2lkIHB1c2hTYW1wbGVz
KGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYsIENNU2FtcGxlQnVmZmVyUmVmKTsK
IAogICAgIGVudW0gUHVsbE1vZGUgeyBDb3B5LCBNaXggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAK
aW5kZXggZWJkYWQyNTNiMjI3ZjBlNzBkNzAzNzcyOTFjZjA5NzI4MTY4ZDFlYS4uNTljYzU3YTZm
NmY3OWI3ZWZlYTYxMmYyYzU1MWNkNTcwNDAzZWI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAK
QEAgLTExOSwxMCArMTE5LDEwIEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6dmlkZW9TYW1w
bGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKQogICAgICAgICBvYnNlcnZlci0+
dmlkZW9TYW1wbGVBdmFpbGFibGUobWVkaWFTYW1wbGUpOwogfQogCi12b2lkIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmIHRpbWUsIHZv
aWQqIGF1ZGlvRGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24s
IHNpemVfdCBudW1iZXJPZkZyYW1lcykKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXVkaW9T
YW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYgdGltZSwgY29uc3QgQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IHZvaWQqIGF1ZGlvRGF0YSwgc2l6ZV90IG51
bWJlck9mRnJhbWVzKQogewogICAgIGZvciAoY29uc3QgYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2Vy
dmVycykKLSAgICAgICAgb2JzZXJ2ZXItPmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSh0aW1lLCBhdWRp
b0RhdGEsIGRlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7CisgICAgICAgIG9ic2VydmVyLT5h
dWRpb1NhbXBsZXNBdmFpbGFibGUodGltZSwgZGVzY3JpcHRpb24sIGF1ZGlvRGF0YSwgbnVtYmVy
T2ZGcmFtZXMpOwogfQogCiBib29sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlYWRvbmx5KCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuaAppbmRleCA4ZmJlNjk0NjFlNWRmZDEzOWIxMTMzN2JmZjVlZWNm
MzVlYmEwYjVkLi45OGIzYzg3OWFiYWE5MjYzNGU5ZWM4NTAyMjE1ZmQ1NjViYTM3OWI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlh
U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVNZWRpYVNvdXJjZS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVh
bCB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJikgeyB9CiAKICAgICAgICAg
Ly8gTWF5IGJlIGNhbGxlZCBvbiBhIGJhY2tncm91bmQgdGhyZWFkLgotICAgICAgICB2aXJ0dWFs
IHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIHZvaWQqIC8qYXVk
aW9EYXRhKi8sIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QgLypudW1iZXJP
ZkZyYW1lcyovKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJs
ZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgY29uc3Qg
dm9pZCogLyphdWRpb0RhdGEqLywgc2l6ZV90IC8qbnVtYmVyT2ZGcmFtZXMqLykgeyB9CiAgICAg
fTsKIAogICAgIHZpcnR1YWwgflJlYWx0aW1lTWVkaWFTb3VyY2UoKSB7IH0KQEAgLTEwOSw3ICsx
MDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKCk7CiAK
ICAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJik7Ci0gICAgdm9pZCBh
dWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgdm9pZCosIGNvbnN0IEF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOworICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxh
YmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBjb25z
dCB2b2lkKiwgc2l6ZV90KTsKICAgICAKICAgICBib29sIHN0b3BwZWQoKSBjb25zdCB7IHJldHVy
biBtX3N0b3BwZWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLm1tCmluZGV4IDAyMGYy
ODA4NmE5NjNiYTU0NjViYzJiYzU3N2I2NDAwN2IwNTUyYzUuLjAyODNiNzgyNDNhNjc5MGIwMjdk
NmRkNGJlYzZhZTNmOTQ1YzIyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0KQEAg
LTIwOCw3ICsyMDgsNyBAQCB2b2lkIEFWQXVkaW9DYXB0dXJlU291cmNlOjpjYXB0dXJlT3V0cHV0
RGlkT3V0cHV0U2FtcGxlQnVmZmVyRnJvbUNvbm5lY3Rpb24oQVZDYQogICAgIENNQmxvY2tCdWZm
ZXJSZWYgYnVmZmVyID0gbmlsOwogICAgIE9TU3RhdHVzIGVyciA9IENNU2FtcGxlQnVmZmVyR2V0
QXVkaW9CdWZmZXJMaXN0V2l0aFJldGFpbmVkQmxvY2tCdWZmZXIoc2FtcGxlQnVmZmVyLCBudWxs
cHRyLCBtX2xpc3QuZ2V0KCksIG1fbGlzdEJ1ZmZlclNpemUsIGtDRkFsbG9jYXRvclN5c3RlbURl
ZmF1bHQsIGtDRkFsbG9jYXRvclN5c3RlbURlZmF1bHQsIGtDTVNhbXBsZUJ1ZmZlckZsYWdfQXVk
aW9CdWZmZXJMaXN0X0Fzc3VyZTE2Qnl0ZUFsaWdubWVudCwgJmJ1ZmZlcik7CiAgICAgaWYgKCFl
cnIpCi0gICAgICAgIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZSh0b01lZGlhVGltZShDTVNhbXBsZUJ1
ZmZlckdldFByZXNlbnRhdGlvblRpbWVTdGFtcChzYW1wbGVCdWZmZXIpKSwgbV9saXN0LT5tQnVm
ZmVyc1swXS5tRGF0YSwgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKCpzdHJlYW1EZXNjcmlwdGlv
biksIGZyYW1lQ291bnQpOworICAgICAgICBhdWRpb1NhbXBsZXNBdmFpbGFibGUodG9NZWRpYVRp
bWUoQ01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoc2FtcGxlQnVmZmVyKSks
IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbigqc3RyZWFtRGVzY3JpcHRpb24pLCBtX2xpc3QtPm1C
dWZmZXJzWzBdLm1EYXRhLCBmcmFtZUNvdW50KTsKICAgICBlbHNlCiAgICAgICAgIExPR19FUlJP
UigiQVZBdWRpb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVPdXRwdXREaWRPdXRwdXRTYW1wbGVCdWZm
ZXJGcm9tQ29ubmVjdGlvbiglcCkgLSBDTVNhbXBsZUJ1ZmZlckdldEF1ZGlvQnVmZmVyTGlzdFdp
dGhSZXRhaW5lZEJsb2NrQnVmZmVyIHJldHVybmVkIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChp
bnQpZXJyLCAoY2hhciopJmVycik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKaW5kZXggNmQ2M2I3ZWM0MDU5NDRlNmY0MmEwYzEzNjVj
ZjJhY2YzNTAwOTkzYy4uYjFmY2Q5MjYwZmRhOTQ5NTE4NTBiZTg5YjMxMzc2MWY3OTNkZDZmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5j
cHAKQEAgLTE3OCw3ICsxNzgsNyBAQCBPU1N0YXR1cyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtQ29jb2E6OnNldHVwQXVkaW9Vbml0KCkKICAgICByZXR1cm4gZXJyOwogfQogCi12b2lkIEF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNv
bnN0IE1lZGlhVGltZSYgc2FtcGxlVGltZSwgdm9pZCogYXVkaW9EYXRhLCBjb25zdCBBdWRpb1N0
cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KQordm9pZCBB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShj
b25zdCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uLCBjb25zdCB2b2lkKiBhdWRpb0RhdGEsIHNpemVfdCBzYW1wbGVDb3VudCkK
IHsKICAgICBBU1NFUlQoZGVzY3JpcHRpb24ucGxhdGZvcm1EZXNjcmlwdGlvbigpLnR5cGUgPT0g
UGxhdGZvcm1EZXNjcmlwdGlvbjo6Q0FBdWRpb1N0cmVhbUJhc2ljVHlwZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaAppbmRleCAyN2Y5OWRh
OTNlNTg4MWYyYjNhMzU0YWExZmYzZWI5ZDhkMWMxODQ3Li43NjIzYzk3MDEwNTEwZTYwYTJkZjYy
OGQ4OGMxYmJlM2E5M2UyNDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW1Db2NvYS5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
b3VyY2VNdXRlZENoYW5nZWQoKSAgZmluYWwgeyB9CiAgICAgdm9pZCBzb3VyY2VTZXR0aW5nc0No
YW5nZWQoKSBmaW5hbCB7IH0KICAgICBib29sIHByZXZlbnRTb3VyY2VGcm9tU3RvcHBpbmcoKSBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNv
bnN0IE1lZGlhVGltZSYsIHZvaWQqLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6
ZV90KSBmaW5hbDsKKyAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRp
bWUmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgY29uc3Qgdm9pZCosIHNpemVfdCkg
ZmluYWw7CiAKICAgICBzdGF0aWMgT1NTdGF0dXMgaW5wdXRQcm9jKHZvaWQqLCBBdWRpb1VuaXRS
ZW5kZXJBY3Rpb25GbGFncyosIGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIGluQnVzTnVt
YmVyLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCopOwogICAgIE9TU3Rh
dHVzIHJlbmRlcihVSW50MzIgc2FtcGxlQ291bnQsIEF1ZGlvQnVmZmVyTGlzdCYsIFVJbnQzMiBp
bkJ1c051bWJlciwgY29uc3QgQXVkaW9UaW1lU3RhbXAmLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25G
bGFncyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCmluZGV4IGI0
Zjg3NDUzNTIxMzQ4ZDBmNWU1MjEwYTYzZDFjYTUxODk4N2YwNDMuLmU3YTIzODY2Zjk2MGJkNjk2
ZTQ2ODE1OWQ2NTRiOTc1NzNlZjVkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2VNYWMubW0KQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291
cmNlTWFjOjplbWl0U2FtcGxlQnVmZmVycyh1aW50MzJfdCBmcmFtZUNvdW50KQogICAgIENNVGlt
ZSBzdGFydFRpbWUgPSBDTVRpbWVNYWtlKG1fYnl0ZXNFbWl0dGVkLCBtX3NhbXBsZVJhdGUpOwog
ICAgIG1fYnl0ZXNFbWl0dGVkICs9IGZyYW1lQ291bnQ7CiAKLSAgICBhdWRpb1NhbXBsZXNBdmFp
bGFibGUodG9NZWRpYVRpbWUoc3RhcnRUaW1lKSwgbV9hdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJz
WzBdLm1EYXRhLCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24obV9zdHJlYW1Gb3JtYXQpLCBmcmFt
ZUNvdW50KTsKKyAgICBhdWRpb1NhbXBsZXNBdmFpbGFibGUodG9NZWRpYVRpbWUoc3RhcnRUaW1l
KSwgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKG1fc3RyZWFtRm9ybWF0KSwgbV9hdWRpb0J1ZmZl
ckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRhLCBmcmFtZUNvdW50KTsKIAogICAgIENNU2FtcGxlQnVm
ZmVyUmVmIHNhbXBsZUJ1ZmZlcjsKICAgICBPU1N0YXR1cyByZXN1bHQgPSBDTUF1ZGlvU2FtcGxl
QnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucyhudWxscHRyLCBudWxscHRyLCB0cnVl
LCBudWxscHRyLCBudWxscHRyLCBtX2Zvcm1hdERlc2NyaXB0aW9uLmdldCgpLCBmcmFtZUNvdW50
LCBzdGFydFRpbWUsIG51bGxwdHIsICZzYW1wbGVCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcAppbmRleCA5NzMyYjczNWRlZjFhYjc4NDFlYzMwZmNk
ZWYwNmQ4YTkxZmYzN2Q2Li44ODU5ZTU3YzIyNGFhNmQyNDU0MjkxZmZhOWExZWQ5NzBkZTM1M2E4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcApAQCAtMjgs
MTMgKzI4LDE5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKy8vIEZJWE1FOiBEbyBjbGVhbi11
cCBpbiB0aGUgaW5jbHVkZXMKKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIgogCiAjaWYgVVNFKExJQldFQlJUQykKIAotI2luY2x1
ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oIgorI2luY2x1ZGUgIkNBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgorI2luY2x1
ZGUgIk1lZGlhVGltZUFWRm91bmRhdGlvbi5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgog
I2luY2x1ZGUgIldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmgiCisjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KIAogI2luY2x1ZGUgIkNvcmVNZWRpYVNvZnRMaW5rLmgiCiAKQEAgLTUx
LDE0ICs1Nyw3NiBAQCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OlJlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicgogewogfQogCitzdGF0aWMgaW5s
aW5lIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1EZXNjcmlwdGlvbihpbnQgc2Ft
cGxlUmF0ZSwgc2l6ZV90IGNoYW5uZWxzUGVyRnJhbWUpCit7CisgICAgQXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uIGZvcm1hdDsKKyAgICBmb3JtYXQubVNhbXBsZVJhdGUgPSBzYW1wbGVSYXRl
OworICAgIGZvcm1hdC5tRm9ybWF0SUQgPSBrQXVkaW9Gb3JtYXRMaW5lYXJQQ007CisgICAgZm9y
bWF0Lm1Gb3JtYXRGbGFncyA9IGtBdWRpb0Zvcm1hdEZsYWdJc1NpZ25lZEludGVnZXIgfCBrQXVk
aW9Gb3JtYXRGbGFnSXNQYWNrZWQgfCBrQXVkaW9Gb3JtYXRGbGFnSXNOb25JbnRlcmxlYXZlZDsK
KyAgICBmb3JtYXQubUZyYW1lc1BlclBhY2tldCA9IDE7CisgICAgZm9ybWF0Lm1DaGFubmVsc1Bl
ckZyYW1lID0gY2hhbm5lbHNQZXJGcmFtZTsKKyAgICBmb3JtYXQubUJpdHNQZXJDaGFubmVsID0g
MTY7CisgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBtdWx0aXBseSB0aGVzZSB0d28gYnkgY2hhbm5l
bHNQZXJGcmFtZT8KKyAgICBmb3JtYXQubUJ5dGVzUGVyUGFja2V0ID0gMjsKKyAgICBmb3JtYXQu
bUJ5dGVzUGVyRnJhbWUgPSAyOworCisgICAgcmV0dXJuIGZvcm1hdDsKK30KKwogdm9pZCBSZWFs
dGltZUluY29taW5nQXVkaW9Tb3VyY2U6Ok9uRGF0YShjb25zdCB2b2lkKiBhdWRpb0RhdGEsIGlu
dCBiaXRzUGVyU2FtcGxlLCBpbnQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMs
IHNpemVfdCBudW1iZXJPZkZyYW1lcykKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMu
Ci0gICAgVU5VU0VEX1BBUkFNKGF1ZGlvRGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGJpdHNQZXJT
YW1wbGUpOwotICAgIFVOVVNFRF9QQVJBTShzYW1wbGVSYXRlKTsKLSAgICBVTlVTRURfUEFSQU0o
bnVtYmVyT2ZDaGFubmVscyk7Ci0gICAgVU5VU0VEX1BBUkFNKG51bWJlck9mRnJhbWVzKTsKKyAg
ICAvLyBBdCB0aGUgYmVnaW5uaW5nLCB3ZSBtYXkgcmVjZWl2ZSBPbkRhdGEgY2FsbHMgd2l0aCBl
bXB0eSBzb3VuZCBkYXRhIChtb25vLCBzYW1wbGVzIGVxdWFsIHRvIHplcm8gYW5kIHNhbXBsZVJh
dGUgZXF1YWwgdG8gMTYwMDApLgorICAgIC8vIEZJWE1FOiBGb3IgdGhlIG1vbWVudCB3ZSBza2lw
IHRoZW0sIHdlIHNob3VsZCBmaW5kIGEgYmV0dGVyIHNvbHV0aW9uIGF0IGxpYndlYnJ0YyBsZXZl
bC4KKyAgICBpZiAoc2FtcGxlUmF0ZSA9PSAxNjAwMCAmJiBudW1iZXJPZkNoYW5uZWxzID09IDEp
CisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVF9VTlVTRUQoYml0c1BlclNhbXBsZSwgYml0
c1BlclNhbXBsZSA9PSAxNik7CisgICAgQVNTRVJUKG51bWJlck9mQ2hhbm5lbHMgPT0gMik7Cisg
ICAgQVNTRVJUKHNhbXBsZVJhdGUgPT0gNDgwMDApOworCisgICAgQ01UaW1lIHN0YXJ0VGltZSA9
IENNVGltZU1ha2UobV9udW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7CisgICAgYXV0byBtZWRp
YVRpbWUgPSB0b01lZGlhVGltZShzdGFydFRpbWUpOworICAgIG1fbnVtYmVyT2ZGcmFtZXMgKz0g
bnVtYmVyT2ZGcmFtZXM7CisKKyAgICBpZiAoIW1fZm9ybWF0RGVzY3JpcHRpb24pIHsKKyAgICAg
ICAgYXV0byBkZXNjcmlwdGlvbiA9IHN0cmVhbURlc2NyaXB0aW9uKHNhbXBsZVJhdGUsIG51bWJl
ck9mQ2hhbm5lbHMpOworICAgICAgICBmb3IgKEF1ZGlvU291cmNlT2JzZXJ2ZXJPYmpDJiBvYnNl
cnZlciA6IG1fYXVkaW9Tb3VyY2VPYnNlcnZlcnMpCisgICAgICAgICAgICBvYnNlcnZlci5wcmVw
YXJlKCZkZXNjcmlwdGlvbik7CisKKyAgICAgICAgQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3Jt
YXREZXNjcmlwdGlvbjsKKyAgICAgICAgYXV0byBlcnJvciA9IENNQXVkaW9Gb3JtYXREZXNjcmlw
dGlvbkNyZWF0ZShudWxscHRyLCAmZGVzY3JpcHRpb24sIDAsIG51bGxwdHIsIDAsIG51bGxwdHIs
IG51bGxwdHIsICZmb3JtYXREZXNjcmlwdGlvbik7CisgICAgICAgIEFTU0VSVCghZXJyb3IpOwor
ICAgICAgICBtX2Zvcm1hdERlc2NyaXB0aW9uID0gZm9ybWF0RGVzY3JpcHRpb247CisgICAgfQor
ICAgIEFTU0VSVChDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRTdHJlYW1CYXNpY0Rlc2NyaXB0
aW9uKG1fZm9ybWF0RGVzY3JpcHRpb24uZ2V0KCkpLT5tU2FtcGxlUmF0ZSA9PSBzYW1wbGVSYXRl
KTsKKyAgICBBU1NFUlQoQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0U3RyZWFtQmFzaWNEZXNj
cmlwdGlvbihtX2Zvcm1hdERlc2NyaXB0aW9uLmdldCgpKS0+bUNoYW5uZWxzUGVyRnJhbWUgPT0g
bnVtYmVyT2ZDaGFubmVscyk7CisKKyAgICBzaXplX3QgZGF0YVNpemUgPSBudW1iZXJPZkZyYW1l
cyAqIGJpdHNQZXJTYW1wbGUgLyA4OworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYXVkaW9EYXRhKSwgZGF0YVNpemUp
OworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
bWVkaWFUaW1lID0gV1RGTW92ZShtZWRpYVRpbWUpLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciks
IHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzXSB7CisgICAgICAg
IGJvb2wgaXNOb25JbnRlcmxlYXZlZCA9IHRydWU7CisgICAgICAgIENBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbiBzdHJlYW1EZXNjcmlwdGlvbihzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzLCBB
dWRpb1N0cmVhbURlc2NyaXB0aW9uOjpQQ01Gb3JtYXQ6OkludDE2LCBpc05vbkludGVybGVhdmVk
KTsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+YXVkaW9TYW1wbGVzQXZhaWxhYmxlKG1lZGlhVGlt
ZSwgc3RyZWFtRGVzY3JpcHRpb24sIGJ1ZmZlci0+ZGF0YSgpLCBudW1iZXJPZkZyYW1lcyk7Cisg
ICAgfSk7CisKKyAgICBDTUJsb2NrQnVmZmVyUmVmIGRhdGFCdWZmZXI7CisgICAgT1NTdGF0dXMg
ZXJyb3IgPSBDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKG51bGxwdHIsIG51bGxw
dHIsIGRhdGFTaXplLCBudWxscHRyLCBudWxscHRyLCAwLCBkYXRhU2l6ZSwgMCwgJmRhdGFCdWZm
ZXIpOworICAgIEFTU0VSVF9VTlVTRUQoZXJyb3IsICFlcnJvcik7CisKKyAgICBlcnJvciA9IENN
QmxvY2tCdWZmZXJSZXBsYWNlRGF0YUJ5dGVzKGF1ZGlvRGF0YSwgZGF0YUJ1ZmZlciwgMCAsIGRh
dGFTaXplKTsKKyAgICBBU1NFUlQoIWVycm9yKTsKKworICAgIENNU2FtcGxlQnVmZmVyUmVmIHNh
bXBsZUJ1ZmZlcjsKKyAgICBPU1N0YXR1cyByZXN1bHQgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3Jl
YXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucyhudWxscHRyLCBudWxscHRyLCB0cnVlLCBudWxscHRy
LCBudWxscHRyLCBtX2Zvcm1hdERlc2NyaXB0aW9uLmdldCgpLCBudW1iZXJPZkZyYW1lcywgc3Rh
cnRUaW1lLCBudWxscHRyLCAmc2FtcGxlQnVmZmVyKTsKKyAgICBBU1NFUlQoc2FtcGxlQnVmZmVy
KTsKKyAgICBBU1NFUlQoIXJlc3VsdCk7CisKKyAgICBpZiAoIXNhbXBsZUJ1ZmZlcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZm9yIChBdWRpb1NvdXJjZU9ic2VydmVyT2JqQyYgb2JzZXJ2ZXIg
OiBtX2F1ZGlvU291cmNlT2JzZXJ2ZXJzKQorICAgICAgICBvYnNlcnZlci5wcm9jZXNzKG1fZm9y
bWF0RGVzY3JpcHRpb24uZ2V0KCksIHNhbXBsZUJ1ZmZlcik7CisKIH0KIAogdm9pZCBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCkBAIC02Niw2ICsxMzQs
NyBAQCB2b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRh
KCkKICAgICBpZiAobV9pc1Byb2R1Y2luZ0RhdGEpCiAgICAgICAgIHJldHVybjsKIAorICAgIG1f
bnVtYmVyT2ZGcmFtZXMgPSAwOwogICAgIG1faXNQcm9kdWNpbmdEYXRhID0gdHJ1ZTsKICAgICBp
ZiAobV9hdWRpb1RyYWNrKQogICAgICAgICBtX2F1ZGlvVHJhY2stPkFkZFNpbmsodGhpcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKaW5kZXggMzJiMTQ2YjI1MDM3
ZDUwZWMxZTI0YzAzYjgwNGVmM2ZkMTU5YTJkNi4uM2EzOTYyMjZiZWUxNzkxZjBhNmE5OGRjZDcw
MTdjMzJiZDVhNGZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2Uu
aApAQCAtODIsNiArODIsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJBdWRpb1NvdXJjZVBy
b3ZpZGVyQVZGT2JqQz4gbV9hdWRpb1NvdXJjZVByb3ZpZGVyOwogICAgIFJldGFpblB0cjxDTUZv
cm1hdERlc2NyaXB0aW9uUmVmPiBtX2Zvcm1hdERlc2NyaXB0aW9uOwogICAgIFZlY3RvcjxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPEF1ZGlvU291cmNlT2JzZXJ2ZXJPYmpDPj4gbV9hdWRpb1NvdXJj
ZU9ic2VydmVyczsKKyAgICB1aW50NjRfdCBtX251bWJlck9mRnJhbWVzIHsgMCB9OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlLmNwcAppbmRleCAzZWJhYzJkZjNkNGRlNDQ2YjAyNDFjY2UzM2NmNGU1MzIwY2JkMzJi
Li5jNWFlZTk4NmM1M2QxOWEyMDFmZmE1YjU2OTIxZWFjNGYxMmE5YTU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjph
dWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgdm9pZCosIGNvbnN0IEF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IEF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24mLCBjb25zdCB2b2lkKiwgc2l6ZV90KQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKaW5k
ZXggNGM0ZTkxOGE4Njg0ZDcxMDQ2YzJhMjJiNzMyYzJlZDhlYWZjMzNlOC4uZjgwYWU5MmIxY2Zl
YjhhOTkwZGZkNjJjZWYyM2E4NmQyMWU2ZjVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2UuaApAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc291
cmNlTXV0ZWRDaGFuZ2VkKCkgZmluYWwgeyB9CiAgICAgdm9pZCBzb3VyY2VTZXR0aW5nc0NoYW5n
ZWQoKSBmaW5hbCB7IH0KICAgICBib29sIHByZXZlbnRTb3VyY2VGcm9tU3RvcHBpbmcoKSBmaW5h
bCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0
IE1lZGlhVGltZSYsIHZvaWQqLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90
KSBmaW5hbDsKKyAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUm
LCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgY29uc3Qgdm9pZCosIHNpemVfdCkgZmlu
YWw7CiAKICAgICB2b2lkIGNvbnZlcnRBbmRTZW5kTW9ub1NhbXBsZXMoKTsKICAgICB2b2lkIGNv
bnZlcnRBbmRTZW5kU3RlcmVvU2FtcGxlcygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU2NDYwMjgwMzNiNWE2Yjc5ZGE4ZDc5YTg4MTZkMGVm
MGVkNGUzMjEuLmE2MmZhOWUwNmMxNDA4ODg1Nzk2ZDU3NDBkMGJmMjYyNmFmOGZjYWEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NSBAQAorMjAxNy0wMi0wNyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkaW5nIHN1cHBvcnQgZm9yIGluY29taW5nIGF1ZGlvCisKKyAgICAgICAgW1dlYlJU
Q10gSW1wbGVtZW50IEluY29taW5nIGxpYndlYnJ0YyBhdWRpbyBzb3VyY2Ugc3VwcG9ydC4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Nzk2MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpDQVJpbmdCdWZmZXJUZXN0Ojpjb25maWd1cmVCdWZmZXJMaXN0Rm9yU3RyZWFtKToKKwor
MjAxNy0wMi0wNyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAg
W1dlYlJUQ10gSW1wbGVtZW50IEluY29taW5nIGxpYndlYnJ0YyBhdWRpbyBzb3VyY2Ugc3VwcG9y
dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Nzk2
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHA6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpDQVJpbmdCdWZmZXJUZXN0Ojpjb25maWd1cmVCdWZmZXJMaXN0Rm9yU3RyZWFt
KToKKwogMjAxNy0wMi0wNyAgT2xpdmllciBCbGluICA8b2xpdmllci5ibGluQHNvZnRhdGhvbWUu
Y29tPgogCiAgICAgICAgIFt3ZWJraXRkaXJzXSByZW1vdmUgdW51c2VkIGhvc3RfcHJvY2Vzc29y
IHZhcmlhYmxlIGluIGRldGVybWluZUFyY2hpdGVjdHVyZSgpCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ0FSaW5nQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwCmluZGV4IDJhYWI2NWRkOGZk
N2VmMDcwNTFmYjZmNzU2NzU4Y2RlNzAyZTA3YTEuLjkwMWRiYWRmNTJlNjc2OWM2NDVjNDM1MDMz
ZDU0NGUzNWVkYjAyOTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9DQVJpbmdCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9DQVJpbmdCdWZmZXIuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgICAg
IHJldHVybiBvZmZzZXRvZihBdWRpb0J1ZmZlckxpc3QsIG1CdWZmZXJzKSArIChzaXplb2YoQXVk
aW9CdWZmZXIpICogc3RkOjptYXg8dWludDMyX3Q+KDEsIGZvcm1hdC5udW1iZXJPZkNoYW5uZWxT
dHJlYW1zKCkpKTsKICAgICB9CiAKLSAgICB2b2lkIGNvbmZpZ3VyZUJ1ZmZlckxpc3RGb3JTdHJl
YW0oQXVkaW9CdWZmZXJMaXN0JiBidWZmZXJMaXN0LCBjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mIGZvcm1hdCwgdWludDhfdCogYnVmZmVyRGF0YSwgc2l6ZV90IHNhbXBsZUNvdW50KQor
ICAgIHZvaWQgY29uZmlndXJlQnVmZmVyTGlzdEZvclN0cmVhbShBdWRpb0J1ZmZlckxpc3QmIGJ1
ZmZlckxpc3QsIGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZm9ybWF0LCBjb25zdCB1
aW50OF90KiBidWZmZXJEYXRhLCBzaXplX3Qgc2FtcGxlQ291bnQpCiAgICAgewogICAgICAgICBz
aXplX3QgYnVmZmVyQ291bnQgPSBmb3JtYXQubnVtYmVyT2ZDaGFubmVsU3RyZWFtcygpOwogICAg
ICAgICBzaXplX3QgY2hhbm5lbENvdW50ID0gZm9ybWF0Lm51bWJlck9mSW50ZXJsZWF2ZWRDaGFu
bmVscygpOwpAQCAtOTEsNyArOTEsNyBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgYnVmZmVyQ291bnQ7ICsraSkgewogICAgICAgICAgICAgYnVmZmVyTGlzdC5t
QnVmZmVyc1tpXS5tTnVtYmVyQ2hhbm5lbHMgPSBjaGFubmVsQ291bnQ7CiAgICAgICAgICAgICBi
dWZmZXJMaXN0Lm1CdWZmZXJzW2ldLm1EYXRhQnl0ZVNpemUgPSBieXRlc1BlckNoYW5uZWw7Ci0g
ICAgICAgICAgICBidWZmZXJMaXN0Lm1CdWZmZXJzW2ldLm1EYXRhID0gYnVmZmVyRGF0YTsKKyAg
ICAgICAgICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbaV0ubURhdGEgPSBjb25zdF9jYXN0PHVpbnQ4
X3QqPihidWZmZXJEYXRhKTsKICAgICAgICAgICAgIGlmIChidWZmZXJEYXRhKQogICAgICAgICAg
ICAgICAgIGJ1ZmZlckRhdGEgPSBidWZmZXJEYXRhICsgYnl0ZXNQZXJDaGFubmVsOwogICAgICAg
ICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301116</attachid>
            <date>2017-02-09 18:15:45 -0800</date>
            <delta_ts>2017-02-20 16:53:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167961-20170209181319.patch</filename>
            <type>text/plain</type>
            <size>28482</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExOTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzE3MDc4MDU1MmM2Mzc4OTAxYWVmYzk2
MmYwZDA4ZGRhZjA3NWIxNC4uODA1ZWI3MzM2MjJjODk5ODQ3ODNmNDkwYjIxMjU5MmIyM2EwMWMz
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTYxMSw2ICsxNjExLDcgQEAKIAkJNDFDRjhCRTcxRDQ2MjI2NzAwNzA3REM5IC8q
IEZldGNoQm9keUNvbnN1bWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxQ0Y4QkU0MUQ0NjIyMjAwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25zdW1l
ci5jcHAgKi87IH07CiAJCTQxRDAxNUNBMEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMDE1Qzgw
RjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi87IH07CiAJCTQxRDAxNUNCMEY0QjVD
NzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQwMTVDOTBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5
cGUuY3BwICovOyB9OworCQk0MUQ1MUJBRjFFNENFNkZEMDAxMzFBNUIgLyogTGliV2ViUlRDQXVk
aW9Gb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxRDUxQkFFMUU0Q0U2M0UwMDEzMUE1QiAvKiBMaWJXZWJSVENBdWRpb0Zvcm1hdC5oICovOyB9
OwogCQk0MUUxQjFEMDBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMUIxQ0EwRkY1OTg2
OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNwcCAqLzsgfTsKIAkJNDFFMUIxRDEwRkY1OTg2
OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFDQjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RX
b3JrZXIuaCAqLzsgfTsKIAkJNDFFNDA4MzkxRENCNzQ4OTAwRUZDRTE5IC8qIFBlZXJDb25uZWN0
aW9uQmFja2VuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUU0MDgzODFEQ0I3NDc5MDBFRkNFMTkgLyogUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNw
cCAqLzsgfTsKQEAgLTg4ODIsNiArODg4Myw3IEBACiAJCTQxQ0Y4QkU2MUQ0NjIyMkMwMDcwN0RD
OSAvKiBGZXRjaEludGVybmFscy5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsg
cGF0aCA9IEZldGNoSW50ZXJuYWxzLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MUQwMTVDODBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDFEMDE1QzkwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRUeXBlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFENTFCQUUxRTRDRTYzRTAwMTMxQTVCIC8qIExpYldlYlJU
Q0F1ZGlvRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJU
Q0F1ZGlvRm9ybWF0Lmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDQXVkaW9Gb3JtYXQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFFMUIxQ0EwRkY1OTg2OTAwNTc2QjNCIC8q
IEFic3RyYWN0V29ya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEFic3RyYWN0V29ya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFFMUIx
Q0IwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0V29ya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxRTFCMUNDMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gQWJzdHJhY3RXb3JrZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTY4NTUsNiArMTY4NTcsNyBAQAogCQk0MTU3NDc0MjFFMzg2OTgwMDBF
OTE0RDggLyogbGlid2VicnRjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQk0MUQ1MUJBRTFFNENFNjNFMDAxMzFBNUIgLyogTGliV2ViUlRDQXVkaW9Gb3Jt
YXQuaCAqLywKIAkJCQk0MTUwODAzNDFFM0YwMEFBMDA1MUQ3NUQgLyogTGliV2ViUlRDQXVkaW9N
b2R1bGUuY3BwICovLAogCQkJCTQxNTA4MDM1MUUzRjAwQUEwMDUxRDc1RCAvKiBMaWJXZWJSVENB
dWRpb01vZHVsZS5oICovLAogCQkJCTQxNTc0NzQzMUUzODY5OUUwMEU5MTREOCAvKiBMaWJXZWJS
VENNYWNyb3MuaCAqLywKQEAgLTI2MzY0LDYgKzI2MzY3LDcgQEAKIAkJCQk1MTYxMDNBRjFDQURC
QTc3MDAxNkI0QzcgLyogSURCVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxODVGQ0IwMUJC
NEM0RTgwMDEyODk4RiAvKiBJREJWZXJzaW9uQ2hhbmdlRXZlbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUU0QTgxNEUwMUM3MzM4RUIwMEJGODVBQyAvKiBJZENoYW5nZUludmFsaWRhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDFENTFCQUYxRTRDRTZGRDAwMTMxQTVCIC8qIExpYldlYlJUQ0F1
ZGlvRm9ybWF0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTcxRDU3QzBGMzM4MTkwMDBGOUNFNEUg
LyogSWRlbnRpZmllclJlcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQzUwRUY4NkQ0NzAw
OUQwQ0FGIC8qIElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDMEMwNTRDRDExMThDOEU0MDBDRTI2MzYgLyogSURMUGFyc2VyLnBtIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9XZWJBdWRpb0J1ZmZl
ckxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vV2ViQXVkaW9CdWZmZXJM
aXN0LmNwcAppbmRleCAwOTM2OThjMzliYzlhNWI2NjY1ZGU2OTdkMjkxMTgyMjgxYThjYmMwLi4z
N2I1MTI1ZjEwZDYzZmU3NzRmZjI4ZmQyMWU3MDhlYWQ1NjhiMmI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1dlYkF1ZGlvQnVmZmVyTGlzdC5jcHAKQEAgLTY0
LDYgKzY0LDcgQEAgV2ViQXVkaW9CdWZmZXJMaXN0OjpXZWJBdWRpb0J1ZmZlckxpc3QoY29uc3Qg
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBmb3JtYXQsIHUKIAogICAgIGZvciAodWludDMyX3Qg
YnVmZmVyID0gMDsgYnVmZmVyIDwgbV9saXN0LT5tTnVtYmVyQnVmZmVyczsgKytidWZmZXIpIHsK
ICAgICAgICAgbV9saXN0LT5tQnVmZmVyc1tidWZmZXJdLm1EYXRhID0gZGF0YTsKKyAgICAgICAg
bV9saXN0LT5tQnVmZmVyc1tidWZmZXJdLm1EYXRhQnl0ZVNpemUgPSBieXRlc1BlckJ1ZmZlcjsK
ICAgICAgICAgZGF0YSArPSBieXRlc1BlckJ1ZmZlcjsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZUJ1ZmZlckxp
c3QuY3BwCmluZGV4IDBiNTNhMzNkMzk5M2NkMTA1N2E0NzBlMGRjZjMzZThhYzhkMDFiZWQuLmY4
MjIwMDYxYzBhZDgzODY5MGQ3ZjIyNjU5MjNmYTBmODAxYzk3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZUJ1ZmZlckxpc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZUJ1ZmZlckxp
c3QuY3BwCkBAIC0yNTksNyArMjU5LDcgQEAgT1NTdGF0dXMgQXVkaW9TYW1wbGVCdWZmZXJMaXN0
Ojpjb3B5RnJvbShBdWRpb0J1ZmZlckxpc3QmIHNvdXJjZSwgQXVkaW9Db252ZXJ0ZXIKICAgICBw
cm9wZXJ0eURhdGFTaXplID0gc2l6ZW9mKG91dHB1dEZvcm1hdCk7CiAgICAgQXVkaW9Db252ZXJ0
ZXJHZXRQcm9wZXJ0eShjb252ZXJ0ZXIsIGtBdWRpb0NvbnZlcnRlckN1cnJlbnRPdXRwdXRTdHJl
YW1EZXNjcmlwdGlvbiwgJnByb3BlcnR5RGF0YVNpemUsICZvdXRwdXRGb3JtYXQpOwogCi0gICAg
QVNTRVJUKG91dHB1dEZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZSA9PSBtX2J1ZmZlckxpc3QtPmJ1
ZmZlckNvdW50KCkpOworICAgIEFTU0VSVChDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24ob3V0cHV0
Rm9ybWF0KS5udW1iZXJPZkNoYW5uZWxTdHJlYW1zKCkgPT0gbV9idWZmZXJMaXN0LT5idWZmZXJD
b3VudCgpKTsKICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgbV9idWZmZXJMaXN0LT5idWZm
ZXJDb3VudCgpOyArK2kpIHsKICAgICAgICAgQVNTRVJUKG1fYnVmZmVyTGlzdC0+YnVmZmVyKGkp
LT5tRGF0YSk7CiAgICAgICAgIEFTU0VSVChtX2J1ZmZlckxpc3QtPmJ1ZmZlcihpKS0+bURhdGFC
eXRlU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMv
QXVkaW9TYW1wbGVEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UuY3BwCmluZGV4IDlmMTYzNTIyNGVmYzgxYmNjZTI1
MmViMjg5MjFkNzVlMzljODE1YTUuLjY1MzgyNDE3MDVmYmU5NzJjOTcyYzQ0MTBiYjVmMTU2M2I2
YzU4OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b1NhbXBsZURhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBB
dWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1c2hTYW1wbGVzKGNvbnN0IE1lZGlhVGltZSYgc2FtcGxl
VGltZSwgUGxhdGZvcm1BdWQKIHsKICAgICBzdGQ6OnVuaXF1ZV9sb2NrPExvY2s+IGxvY2sobV9s
b2NrLCBzdGQ6OnRyeV90b19sb2NrKTsKICAgICBBU1NFUlQoaXM8V2ViQXVkaW9CdWZmZXJMaXN0
PihhdWRpb0RhdGEpKTsKLSAgICBwdXNoU2FtcGxlc0ludGVybmFsKGRvd25jYXN0PFdlYkF1ZGlv
QnVmZmVyTGlzdD4oYXVkaW9EYXRhKSwgc2FtcGxlVGltZSwgc2FtcGxlQ291bnQpOworICAgIHB1
c2hTYW1wbGVzSW50ZXJuYWwoKmRvd25jYXN0PFdlYkF1ZGlvQnVmZmVyTGlzdD4oYXVkaW9EYXRh
KS5saXN0KCksIHNhbXBsZVRpbWUsIHNhbXBsZUNvdW50KTsKIH0KIAogYm9vbCBBdWRpb1NhbXBs
ZURhdGFTb3VyY2U6OnB1bGxTYW1wbGVzSW50ZXJuYWwoQXVkaW9CdWZmZXJMaXN0JiBidWZmZXIs
IHNpemVfdCYgc2FtcGxlQ291bnQsIHVpbnQ2NF90IHRpbWVTdGFtcCwgZG91YmxlIC8qaG9zdFRp
bWUqLywgUHVsbE1vZGUgbW9kZSkKQEAgLTI4Niw2ICsyODYsMzEgQEAgYm9vbCBBdWRpb1NhbXBs
ZURhdGFTb3VyY2U6OnB1bGxTYW1wbGVzSW50ZXJuYWwoQXVkaW9CdWZmZXJMaXN0JiBidWZmZXIs
IHNpemVfdCYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBBdWRpb1NhbXBsZURhdGFTb3Vy
Y2U6OnB1bGxBdmFsYWlibGVTYW1wbGVzQXNDaHVua3MoQXVkaW9CdWZmZXJMaXN0JiBidWZmZXIs
IHNpemVfdCBzYW1wbGVDb3VudFBlckNodW5rLCBGdW5jdGlvbjx2b2lkKCk+JiYgYnVmZmVySXNG
aWxsZWQpCit7CisgICAgc3RkOjp1bmlxdWVfbG9jazxMb2NrPiBsb2NrKG1fbG9jaywgc3RkOjp0
cnlfdG9fbG9jayk7CisgICAgaWYgKCFsb2NrLm93bnNfbG9jaygpIHx8ICFtX3JpbmdCdWZmZXIp
CisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChidWZmZXIubU51bWJlckJ1ZmZlcnMgPT0g
bV9yaW5nQnVmZmVyLT5jaGFubmVsQ291bnQoKSk7CisgICAgaWYgKGJ1ZmZlci5tTnVtYmVyQnVm
ZmVycyAhPSBtX3JpbmdCdWZmZXItPmNoYW5uZWxDb3VudCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoIW1fcmluZ0J1ZmZlciB8fCBtX211dGVkKQorICAgICAgICByZXR1cm47CisKKyAg
ICB1aW50NjRfdCBzdGFydEZyYW1lID0gMDsKKyAgICB1aW50NjRfdCBlbmRGcmFtZSA9IDA7Cisg
ICAgbV9yaW5nQnVmZmVyLT5nZXRDdXJyZW50RnJhbWVCb3VuZHMoc3RhcnRGcmFtZSwgZW5kRnJh
bWUpOworCisgICAgd2hpbGUgKGVuZEZyYW1lIC0gc3RhcnRGcmFtZSA+PSBzYW1wbGVDb3VudFBl
ckNodW5rKSB7CisgICAgICAgIGlmIChtX3JpbmdCdWZmZXItPmZldGNoKCZidWZmZXIsIHNhbXBs
ZUNvdW50UGVyQ2h1bmssIHN0YXJ0RnJhbWUsIENBUmluZ0J1ZmZlcjo6Q29weSkpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIGJ1ZmZlcklzRmlsbGVkKCk7CisgICAgICAgIHN0YXJ0RnJh
bWUgKz0gc2FtcGxlQ291bnRQZXJDaHVuazsKKyAgICB9Cit9CisKIGJvb2wgQXVkaW9TYW1wbGVE
YXRhU291cmNlOjpwdWxsU2FtcGxlcyhBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlciwgc2l6ZV90IHNh
bXBsZUNvdW50LCB1aW50NjRfdCB0aW1lU3RhbXAsIGRvdWJsZSBob3N0VGltZSwgUHVsbE1vZGUg
bW9kZSkKIHsKICAgICBzdGQ6OnVuaXF1ZV9sb2NrPExvY2s+IGxvY2sobV9sb2NrLCBzdGQ6OnRy
eV90b19sb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21h
Yy9BdWRpb1NhbXBsZURhdGFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UuaAppbmRleCA5YWMzMTQ2ZDJmYzlhMTc2M2JhMzdk
NTE0YjRiZjUxNmE1YTlmMzk1Li4zNDgzZGU0MzVkMThjZTRhYzZlYzhlY2JjYjVkMWU4ODdmMmE3
ZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9T
YW1wbGVEYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oCkBAIC01OSw2ICs1OSw4IEBAIHB1YmxpYzoKICAgICBi
b29sIHB1bGxTYW1wbGVzKEF1ZGlvU2FtcGxlQnVmZmVyTGlzdCYsIHNpemVfdCwgdWludDY0X3Qs
IGRvdWJsZSwgUHVsbE1vZGUpOwogICAgIGJvb2wgcHVsbFNhbXBsZXMoQXVkaW9CdWZmZXJMaXN0
Jiwgc2l6ZV90LCB1aW50NjRfdCwgZG91YmxlLCBQdWxsTW9kZSk7CiAKKyAgICB2b2lkIHB1bGxB
dmFsYWlibGVTYW1wbGVzQXNDaHVua3MoQXVkaW9CdWZmZXJMaXN0Jiwgc2l6ZV90LCBGdW5jdGlv
bjx2b2lkKCk+JiYpOworCiAgICAgdm9pZCBzZXRQYXVzZWQoYm9vbCk7CiAKICAgICB2b2lkIHNl
dFZvbHVtZShmbG9hdCB2b2x1bWUpIHsgbV92b2x1bWUgPSB2b2x1bWU7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENB
dWRpb0Zvcm1hdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0F1ZGlvRm9ybWF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQ5MTA3ZjEwMmViNjcyODVl
NjhhNjYyYWMzNGY4YzU3NGVhOWE1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENBdWRpb0Zvcm1hdC5oCkBA
IC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShMSUJX
RUJSVEMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIExpYldlYlJUQ0F1ZGlv
Rm9ybWF0IHsKKworc3RhdGljIGNvbnN0IHNpemVfdCBzYW1wbGVSYXRlID0gNDgwMDA7CitzdGF0
aWMgY29uc3Qgc2l6ZV90IGNodW5rU2FtcGxlQ291bnQgPSA0ODA7CitzdGF0aWMgY29uc3Qgc2l6
ZV90IHNhbXBsZVNpemUgPSAxNjsKK3N0YXRpYyBjb25zdCBzaXplX3Qgc2FtcGxlQnl0ZVNpemUg
PSAyOworc3RhdGljIGNvbnN0IGJvb2wgaXNGbG9hdCA9IGZhbHNlOworc3RhdGljIGNvbnN0IGJv
b2wgaXNCaWdFbmRpYW4gPSBmYWxzZTsKK3N0YXRpYyBjb25zdCBib29sIGlzTm9uSW50ZXJsZWF2
ZWQgPSBmYWxzZTsKKworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBV
U0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuaAppbmRleCBlMTEyNmQ4NWNk
YjA4YzMxZTdjMDg3OGMwODFmNWQ1NTJjNWVhOGFkLi44NGUxYTEyMzJhOWI5ZDA1ZWI5ZGViYmJj
YWQ2Yzg1ZjMzMzc1MDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuaApAQCAtNTEsNiAr
NTEsNyBAQCBXRUJDT1JFX0VYUE9SVCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29u
bmVjdGlvbkludGVyZmFjZT4gY3JlYXRlUGVlckNvbgogV0VCQ09SRV9FWFBPUlQgcnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IGNyZWF0ZVBlZXJDb25u
ZWN0aW9uKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYpOwogCiBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNhbGxPbldlYlJUQ05ldHdvcmtUaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmKTsKK2lu
bGluZSB2b2lkIGNhbGxPbldlYlJUQ1dvcmtlclRocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgY2Fs
bGJhY2spIHsgY2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChXVEZNb3ZlKGNhbGxiYWNrKSk7IH0K
IAogLy8gVXNlZCBmb3IgbW9jayB0ZXN0aW5nCiBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFBlZXJD
b25uZWN0aW9uRmFjdG9yeShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlv
bkZhY3RvcnlJbnRlcmZhY2U+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlLmNwcAppbmRleCA5NzMyYjczNWRlZjFhYjc4NDFlYzMwZmNkZWYwNmQ4YTkxZmYzN2Q2
Li5kYTVhMjRkZTExYWJmNWQyNGY5ODhlYWU1ZTU3MjkxYzQ5N2IyNTcwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcApAQCAtMjgsMTMgKzI4LDIxIEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKKy8vIEZJWE1FOiBEbyBjbGVhbi11cCBpbiB0aGUgaW5jbHVk
ZXMKKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZS5oIgogCiAjaWYgVVNFKExJQldFQlJUQykKIAotI2luY2x1ZGUgIlJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncy5oIgorI2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5o
IgorI2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlvRm9ybWF0LmgiCisjaW5jbHVkZSAiTWVkaWFTYW1w
bGVBVkZPYmpDLmgiCisjaW5jbHVkZSAiTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmgiCisjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViQXVkaW9CdWZmZXJMaXN0LmgiCiAjaW5j
bHVkZSAiV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaCIKKyNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgogCiAjaW5jbHVkZSAiQ29yZU1lZGlhU29mdExpbmsuaCIKIApAQCAtNDIsNyAr
NTAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZjxSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2U+IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYg
YXVkaW9UcmFja0lkKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvVHJhY2spLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCkp
KTsKKyAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKCpuZXcgUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlKFdURk1vdmUoYXVkaW9UcmFjayksIFdURk1vdmUoYXVkaW9UcmFja0lkKSkpOworICAg
IHNvdXJjZS0+c3RhcnRQcm9kdWNpbmdEYXRhKCk7CisgICAgcmV0dXJuIHNvdXJjZTsKIH0KIAog
UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2Uo
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiBhdWRpb1Ry
YWNrLCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQpCkBAIC01MSwxNCArNjEsNjYgQEAgUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlOjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UocnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnIKIHsKIH0KIAotdm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6
Ok9uRGF0YShjb25zdCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBpbnQgc2Ft
cGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykK
K3N0YXRpYyBpbmxpbmUgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbURlc2NyaXB0
aW9uKHNpemVfdCBzYW1wbGVSYXRlLCBzaXplX3QgY2hhbm5lbENvdW50KQoreworICAgIEF1ZGlv
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CisgICAgRmlsbE91dEFTQkRGb3JM
UENNKHN0cmVhbUZvcm1hdCwgc2FtcGxlUmF0ZSwgY2hhbm5lbENvdW50LCBMaWJXZWJSVENBdWRp
b0Zvcm1hdDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIExp
YldlYlJUQ0F1ZGlvRm9ybWF0Ojppc0Zsb2F0LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNCaWdF
bmRpYW4sIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc05vbkludGVybGVhdmVkKTsKKyAgICByZXR1
cm4gc3RyZWFtRm9ybWF0OworfQorCit2b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6
T25EYXRhKGNvbnN0IHZvaWQqIGRhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBpbnQgc2FtcGxlUmF0
ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKIHsKLSAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi0gICAgVU5VU0VEX1BBUkFNKGF1ZGlvRGF0YSk7
Ci0gICAgVU5VU0VEX1BBUkFNKGJpdHNQZXJTYW1wbGUpOwotICAgIFVOVVNFRF9QQVJBTShzYW1w
bGVSYXRlKTsKLSAgICBVTlVTRURfUEFSQU0obnVtYmVyT2ZDaGFubmVscyk7Ci0gICAgVU5VU0VE
X1BBUkFNKG51bWJlck9mRnJhbWVzKTsKKyAgICAvLyBXZSBtYXkgcmVjZWl2ZSBPbkRhdGEgY2Fs
bHMgd2l0aCBlbXB0eSBzb3VuZCBkYXRhIChtb25vLCBzYW1wbGVzIGVxdWFsIHRvIHplcm8gYW5k
IHNhbXBsZVJhdGUgZXF1YWwgdG8gMTYwMDApIHdoZW4gc3RhcnRpbmcgdGhlIGNhbGwuCisgICAg
Ly8gRklYTUU6IEZvciB0aGUgbW9tZW50IHdlIHNraXAgdGhlbSwgd2Ugc2hvdWxkIGZpbmQgYSBi
ZXR0ZXIgc29sdXRpb24gYXQgbGlid2VicnRjIGxldmVsIHRvIG5vdCBiZSBjYWxsZWQgdW50aWwg
Z2V0dGluZyBzb21lIHJlYWwgZGF0YS4KKyAgICBpZiAoc2FtcGxlUmF0ZSA9PSAxNjAwMCAmJiBu
dW1iZXJPZkNoYW5uZWxzID09IDEpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVF9VTlVT
RUQoYml0c1BlclNhbXBsZSwgYml0c1BlclNhbXBsZSA9PSAxNik7CisgICAgQVNTRVJUKG51bWJl
ck9mQ2hhbm5lbHMgPT0gMik7CisgICAgQVNTRVJUKHNhbXBsZVJhdGUgPT0gNDgwMDApOworICAg
IAorICAgIENNVGltZSBzdGFydFRpbWUgPSBDTVRpbWVNYWtlKG1fbnVtYmVyT2ZGcmFtZXMsIHNh
bXBsZVJhdGUpOworICAgIGF1dG8gbWVkaWFUaW1lID0gdG9NZWRpYVRpbWUoc3RhcnRUaW1lKTsK
KyAgICBtX251bWJlck9mRnJhbWVzICs9IG51bWJlck9mRnJhbWVzOworCisgICAgaWYgKCFtX2Zv
cm1hdERlc2NyaXB0aW9uKSB7CisgICAgICAgIGF1dG8gZGVzY3JpcHRpb24gPSBzdHJlYW1EZXNj
cmlwdGlvbihzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKTsKKyAgICAgICAgZm9yIChBdWRp
b1NvdXJjZU9ic2VydmVyT2JqQyYgb2JzZXJ2ZXIgOiBtX2F1ZGlvU291cmNlT2JzZXJ2ZXJzKQor
ICAgICAgICAgICAgb2JzZXJ2ZXIucHJlcGFyZSgmZGVzY3JpcHRpb24pOworCisgICAgICAgIENN
Rm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb247CisgICAgICAgIGF1dG8gZXJy
b3IgPSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUobnVsbHB0ciwgJmRlc2NyaXB0aW9u
LCAwLCBudWxscHRyLCAwLCBudWxscHRyLCBudWxscHRyLCAmZm9ybWF0RGVzY3JpcHRpb24pOwor
ICAgICAgICBBU1NFUlRfVU5VU0VEKGVycm9yLCAhZXJyb3IpOworICAgICAgICBtX2Zvcm1hdERl
c2NyaXB0aW9uID0gZm9ybWF0RGVzY3JpcHRpb247CisgICAgfQorICAgIEFTU0VSVChDTUF1ZGlv
Rm9ybWF0RGVzY3JpcHRpb25HZXRTdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKG1fZm9ybWF0RGVzY3Jp
cHRpb24uZ2V0KCkpLT5tU2FtcGxlUmF0ZSA9PSBzYW1wbGVSYXRlKTsKKyAgICBBU1NFUlQoQ01B
dWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0U3RyZWFtQmFzaWNEZXNjcmlwdGlvbihtX2Zvcm1hdERl
c2NyaXB0aW9uLmdldCgpKS0+bUNoYW5uZWxzUGVyRnJhbWUgPT0gbnVtYmVyT2ZDaGFubmVscyk7
CisKKyAgICBzaXplX3QgZGF0YVNpemUgPSBudW1iZXJPZkZyYW1lcyAqIG51bWJlck9mQ2hhbm5l
bHMgKiBzaXplb2YodWludDE2X3QpOworICAgIENNQmxvY2tCdWZmZXJSZWYgZGF0YUJ1ZmZlcjsK
KyAgICBPU1N0YXR1cyBlcnJvciA9IENNQmxvY2tCdWZmZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2so
bnVsbHB0ciwgbnVsbHB0ciwgZGF0YVNpemUsIG51bGxwdHIsIG51bGxwdHIsIDAsIGRhdGFTaXpl
LCAwLCAmZGF0YUJ1ZmZlcik7CisgICAgQVNTRVJUX1VOVVNFRChlcnJvciwgIWVycm9yKTsKKwor
ICAgIGVycm9yID0gQ01CbG9ja0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMoZGF0YSwgZGF0YUJ1ZmZl
ciwgMCAsIGRhdGFTaXplKTsKKyAgICBBU1NFUlQoIWVycm9yKTsKKworICAgIENNU2FtcGxlQnVm
ZmVyUmVmIHNhbXBsZUJ1ZmZlcjsKKyAgICBPU1N0YXR1cyByZXN1bHQgPSBDTUF1ZGlvU2FtcGxl
QnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucyhudWxscHRyLCBudWxscHRyLCB0cnVl
LCBudWxscHRyLCBudWxscHRyLCBtX2Zvcm1hdERlc2NyaXB0aW9uLmdldCgpLCBudW1iZXJPZkZy
YW1lcywgc3RhcnRUaW1lLCBudWxscHRyLCAmc2FtcGxlQnVmZmVyKTsKKyAgICBBU1NFUlQoc2Ft
cGxlQnVmZmVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgIXJlc3VsdCk7CisgICAgaWYg
KCFzYW1wbGVCdWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHJlc3VsdCA9IENNU2FtcGxl
QnVmZmVyU2V0RGF0YVJlYWR5KHNhbXBsZUJ1ZmZlcik7CisgICAgQVNTRVJUKCFyZXN1bHQpOwor
CisgICAgZm9yIChBdWRpb1NvdXJjZU9ic2VydmVyT2JqQyYgb2JzZXJ2ZXIgOiBtX2F1ZGlvU291
cmNlT2JzZXJ2ZXJzKQorICAgICAgICBvYnNlcnZlci5wcm9jZXNzKG1fZm9ybWF0RGVzY3JpcHRp
b24uZ2V0KCksIHNhbXBsZUJ1ZmZlcik7CisKKyAgICBib29sIGlzSW50ZXJsZWF2ZWQgPSB0cnVl
OworICAgIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBzdHJlYW1EZXNjcmlwdGlvbihzYW1wbGVS
YXRlLCBudW1iZXJPZkNoYW5uZWxzLCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uOjpQQ01Gb3JtYXQ6
OkludDE2LCBpc0ludGVybGVhdmVkKTsKKyAgICBXZWJBdWRpb0J1ZmZlckxpc3QgYXVkaW9CdWZm
ZXJMaXN0IHsgc3RyZWFtRGVzY3JpcHRpb24sIHNhbXBsZUJ1ZmZlciB9OworICAgIGF1ZGlvU2Ft
cGxlc0F2YWlsYWJsZShtZWRpYVRpbWUsIGF1ZGlvQnVmZmVyTGlzdCwgc3RyZWFtRGVzY3JpcHRp
b24sIG51bWJlck9mRnJhbWVzKTsKIH0KIAogdm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3Vy
Y2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCkBAIC02Niw2ICsxMjgsNyBAQCB2b2lkIFJlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKICAgICBpZiAobV9pc1By
b2R1Y2luZ0RhdGEpCiAgICAgICAgIHJldHVybjsKIAorICAgIG1fbnVtYmVyT2ZGcmFtZXMgPSAw
OwogICAgIG1faXNQcm9kdWNpbmdEYXRhID0gdHJ1ZTsKICAgICBpZiAobV9hdWRpb1RyYWNrKQog
ICAgICAgICBtX2F1ZGlvVHJhY2stPkFkZFNpbmsodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmgKaW5kZXggMzJiMTQ2YjI1MDM3ZDUwZWMxZTI0YzAzYjgwNGVm
M2ZkMTU5YTJkNi4uMzUzMjJiZWI1NDY4ZTJiOWQ5ZGVjMTY4MjE2ZjZmMDU3ZWI3Mjk1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaApAQCAtODIsNiArODIsNyBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQz4gbV9h
dWRpb1NvdXJjZVByb3ZpZGVyOwogICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVm
PiBtX2Zvcm1hdERlc2NyaXB0aW9uOwogICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PEF1ZGlvU291cmNlT2JzZXJ2ZXJPYmpDPj4gbV9hdWRpb1NvdXJjZU9ic2VydmVyczsKKyAgICBz
aXplX3QgbV9udW1iZXJPZkZyYW1lcyB7IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAKaW5kZXggM2Q2
ZTFkYmIyY2U5NWIyMWNlMGNlY2Y2NTJiZDhiYzMzZTAyM2FjMC4uMWI5NDkwZDI2Y2M1ZjFkZjdk
OTAxMjFmMTcyMzQzNzhmMWFlNWMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZS5jcHAKQEAgLTMxLDE0NyArMzEsNjMgQEAKIAogI2lmIFVTRShMSUJXRUJSVEMp
CiAKLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFi
bGUoY29uc3QgTWVkaWFUaW1lJiwgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJiwgc2l6ZV90KQotewotCi19Ci0KLQotI2luY2x1ZGUgPEF1ZGlvVG9vbGJv
eC9BdWRpb1Rvb2xib3guaD4KLSNpbmNsdWRlICJDb3JlTWVkaWFTb2Z0TGluay5oIgotCi1TT0ZU
X0xJTktfRlJBTUVXT1JLKEF1ZGlvVG9vbGJveCkKLQotU09GVF9MSU5LKEF1ZGlvVG9vbGJveCwg
QXVkaW9Db252ZXJ0ZXJDb252ZXJ0Q29tcGxleEJ1ZmZlciwgT1NTdGF0dXMsIChBdWRpb0NvbnZl
cnRlclJlZiBpbkF1ZGlvQ29udmVydGVyLCBVSW50MzIgaW5OdW1iZXJQQ01GcmFtZXMsIGNvbnN0
IEF1ZGlvQnVmZmVyTGlzdCogaW5JbnB1dERhdGEsIEF1ZGlvQnVmZmVyTGlzdCogb3V0T3V0cHV0
RGF0YSksIChpbkF1ZGlvQ29udmVydGVyLCBpbk51bWJlclBDTUZyYW1lcywgaW5JbnB1dERhdGEs
IG91dE91dHB1dERhdGEpKQotU09GVF9MSU5LKEF1ZGlvVG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJO
ZXcsIE9TU3RhdHVzLCAoY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKiBpblNvdXJj
ZUZvcm1hdCwgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKiBpbkRlc3RpbmF0aW9u
Rm9ybWF0LCBBdWRpb0NvbnZlcnRlclJlZiogb3V0QXVkaW9Db252ZXJ0ZXIpLCAoaW5Tb3VyY2VG
b3JtYXQsIGluRGVzdGluYXRpb25Gb3JtYXQsIG91dEF1ZGlvQ29udmVydGVyKSkKKyNpbmNsdWRl
ICJDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJMaWJXZWJSVENBdWRpb0Zv
cm1hdC5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ1V0aWxzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmNvbnZlcnRBbmRTZW5kTW9u
b1NhbXBsZXMoKQorc3RhdGljIGlubGluZSBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gbGli
d2VicnRjQXVkaW9Gb3JtYXQoc2l6ZV90IGNoYW5uZWxDb3VudCkKIHsKLSAgICBpbnQxNl90IGNv
bnZlcnRlZFNhbXBsZXNbNDgwXTsKLQotICAgIGNvbnZlcnRlZFNhbXBsZXNbMF0gPSBzdGF0aWNf
Y2FzdDxpbnQxNl90PihtX2NoYW5uZWwxU2FtcGxlc1swXSk7Ci0gICAgY29udmVydGVkU2FtcGxl
c1s0NzldID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4obV9jaGFubmVsMVNhbXBsZXNbNDQwXSk7Ci0K
LSAgICAvLyBTaW1wbGUgbGluZWFyIGludGVycG9sYXRpb24gdG8gdXBzYW1wbGUgZGF0YQotICAg
IGZvciAodW5zaWduZWQgY3B0ciA9IDE7IGNwdHIgPCA0Nzk7ICsrY3B0cikgewotICAgICAgICBm
bG9hdCByYXRpbyA9IGNwdHIgKiA0NDAuMCAvIDQ3OS4wOwotICAgICAgICB1bnNpZ25lZCBpbmRl
eCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYXRpbyk7Ci0KLSAgICAgICAgZmxvYXQgd2VpZ2h0
MiA9IHJhdGlvIC0gaW5kZXg7Ci0gICAgICAgIGZsb2F0IHdlaWdodDEgPSAxIC0gd2VpZ2h0MjsK
LQotICAgICAgICBjb252ZXJ0ZWRTYW1wbGVzW2NwdHJdID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4o
KG1fY2hhbm5lbDFTYW1wbGVzW2luZGV4XSAqIHdlaWdodDEpICsgKG1fY2hhbm5lbDFTYW1wbGVz
W2luZGV4ICsgMV0gKiB3ZWlnaHQyKSk7Ci0gICAgfQotICAgIGZvciAoYXV0byBzaW5rIDogbV9z
aW5rcykKLSAgICAgICAgc2luay0+T25EYXRhKGNvbnZlcnRlZFNhbXBsZXMsIDE2LCA0ODAwMCwg
MSwgNDgwKTsKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0Owor
ICAgIEZpbGxPdXRBU0JERm9yTFBDTShzdHJlYW1Gb3JtYXQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0
OjpzYW1wbGVSYXRlLCBjaGFubmVsQ291bnQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVT
aXplLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9Gb3Jt
YXQ6OmlzRmxvYXQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc0JpZ0VuZGlhbiwgTGliV2ViUlRD
QXVkaW9Gb3JtYXQ6OmlzTm9uSW50ZXJsZWF2ZWQpOworICAgIHJldHVybiBzdHJlYW1Gb3JtYXQ7
CiB9CiAKLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpjb252ZXJ0QW5kU2VuZFN0
ZXJlb1NhbXBsZXMoKQorUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2UoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgYXVkaW9Tb3VyY2UpCisg
ICAgOiBtX2F1ZGlvU291cmNlKFdURk1vdmUoYXVkaW9Tb3VyY2UpKQorICAgICwgbV9zYW1wbGVD
b252ZXJ0ZXIoQXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUoTGliV2ViUlRDQXVkaW9Gb3Jt
YXQ6OnNhbXBsZVJhdGUgKiAyKSkKIHsKLSAgICBpbnQxNl90IGNvbnZlcnRlZFNhbXBsZXNbMiAq
IDQ4MF07Ci0KLSAgICBjb252ZXJ0ZWRTYW1wbGVzWzBdID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4o
bV9jaGFubmVsMVNhbXBsZXNbMF0pOwotICAgIGNvbnZlcnRlZFNhbXBsZXNbMV0gPSBzdGF0aWNf
Y2FzdDxpbnQxNl90PihtX2NoYW5uZWwyU2FtcGxlc1swXSk7Ci0gICAgY29udmVydGVkU2FtcGxl
c1s0NzkgKiAyXSA9IHN0YXRpY19jYXN0PGludDE2X3Q+KG1fY2hhbm5lbDFTYW1wbGVzWzQ0MF0p
OwotICAgIGNvbnZlcnRlZFNhbXBsZXNbNDc5ICogMiArIDFdID0gc3RhdGljX2Nhc3Q8aW50MTZf
dD4obV9jaGFubmVsMlNhbXBsZXNbNDQwXSk7Ci0KLSAgICAvLyBTaW1wbGUgbGluZWFyIGludGVy
cG9sYXRpb24gdG8gdXBzYW1wbGUgZGF0YQotICAgIGZvciAodW5zaWduZWQgY3B0ciA9IDE7IGNw
dHIgPCA0Nzk7ICsrY3B0cikgewotICAgICAgICBmbG9hdCByYXRpbyA9IGNwdHIgKiA0NDAuMCAv
IDQ3OS4wOwotICAgICAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihy
YXRpbyk7CisgICAgbV9hdWRpb1NvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOworfQogCi0gICAg
ICAgIGZsb2F0IHdlaWdodDIgPSByYXRpbyAtIGluZGV4OwotICAgICAgICBmbG9hdCB3ZWlnaHQx
ID0gMSAtIHdlaWdodDI7Cit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6YXVkaW9T
YW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYgdGltZSwgUGxhdGZvcm1BdWRpb0RhdGEm
IGF1ZGlvRGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgc3RyZWFtRGVzY3JpcHRp
b24sIHNpemVfdCBzYW1wbGVDb3VudCkKK3sKKyAgICBpZiAobV9pbnB1dFN0cmVhbURlc2NyaXB0
aW9uICE9IHN0cmVhbURlc2NyaXB0aW9uKSB7CisgICAgICAgIG1faW5wdXRTdHJlYW1EZXNjcmlw
dGlvbiA9IHRvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKHN0cmVhbURlc2NyaXB0aW9uKTsKKyAg
ICAgICAgYXV0byBzdGF0dXMgID0gbV9zYW1wbGVDb252ZXJ0ZXItPnNldElucHV0Rm9ybWF0KG1f
aW5wdXRTdHJlYW1EZXNjcmlwdGlvbik7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc3RhdHVzLCAh
c3RhdHVzKTsKIAotICAgICAgICBjb252ZXJ0ZWRTYW1wbGVzWzIgKiBjcHRyXSA9IHN0YXRpY19j
YXN0PGludDE2X3Q+KChtX2NoYW5uZWwxU2FtcGxlc1tpbmRleF0gKiB3ZWlnaHQxKSArIChtX2No
YW5uZWwxU2FtcGxlc1tpbmRleCArIDFdICogd2VpZ2h0MikpOwotICAgICAgICBjb252ZXJ0ZWRT
YW1wbGVzWzIgKiBjcHRyICsgMV0gPSBzdGF0aWNfY2FzdDxpbnQxNl90PigobV9jaGFubmVsMlNh
bXBsZXNbaW5kZXhdICogd2VpZ2h0MSkgKyAobV9jaGFubmVsMlNhbXBsZXNbaW5kZXggKyAxXSAq
IHdlaWdodDIpKTsKKyAgICAgICAgc3RhdHVzID0gbV9zYW1wbGVDb252ZXJ0ZXItPnNldE91dHB1
dEZvcm1hdChsaWJ3ZWJydGNBdWRpb0Zvcm1hdChzdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNo
YW5uZWxzKCkpKTsKKyAgICAgICAgQVNTRVJUKCFzdGF0dXMpOwogICAgIH0KLSAgICBmb3IgKGF1
dG8gc2luayA6IG1fc2lua3MpCi0gICAgICAgIHNpbmstPk9uRGF0YShjb252ZXJ0ZWRTYW1wbGVz
LCAxNiwgNDgwMDAsIDIsIDQ4MCk7Ci19CisgICAgbV9zYW1wbGVDb252ZXJ0ZXItPnB1c2hTYW1w
bGVzKHRpbWUsIGF1ZGlvRGF0YSwgc2FtcGxlQ291bnQpOwogCisgICAgY2FsbE9uV2ViUlRDU2ln
bmFsaW5nVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAg
cHJvdGVjdGVkVGhpcy0+cHVsbEF1ZGlvRGF0YSgpOworICAgIH0pOwogCi1zdGF0aWMgaW5saW5l
IGZsb2F0IHNjYWxlQXVkaW9WYWx1ZShmbG9hdCB2YWx1ZSkKLXsKLSAgICBmbG9hdCBzYW1wbGUg
PSAzMjc2OCAqIHZhbHVlOwotICAgIGlmIChzYW1wbGUgPiAzMjc2NykKLSAgICAgICAgcmV0dXJu
IDMyNzY3OwotICAgIGlmIChzYW1wbGUgPCAtMzI3NjgpCi0gICAgICAgIHJldHVybiAtMzI3Njg7
Ci0gICAgcmV0dXJuIHNhbXBsZTsKIH0KIAotI2lmbmRlZiBOREVCVUcKLXN0YXRpYyBpbmxpbmUg
Ym9vbCBjYW5Db252ZXJ0U2FtcGxlKGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiog
Y2FwdHVyZUZvcm1hdCkKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpwdWxsQXVk
aW9EYXRhKCkKIHsKLSAgICAvLyBGSVhNRTogQ3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCB0aGUg
aW5wdXQgZm9ybWF0cyBhcyB0ZXN0ZWQgYmVsb3cuCi0gICAgLy8gV2Ugc2hvdWxkIHVzZSBDb3Jl
QXVkaW8gY29udmVyc2lvbiByb3V0aW5lcyB0byBpbXByb3ZlIHRoZSBzdXBwb3J0IGFuZCB0aGUg
ZWZmaWNpZW5jeS4KLSAgICAvLyBUaGUgb3V0cHV0IHNob3VsZCBiZSBhcyBhc3N1bWVkIGJ5IGxp
YldlYlJUQzoKLSAgICAvLyBQQ00gMTYgYml0cyBpbnRlZ2VyLCA0ODAwMCBIeiwgNDgwIHNhbXBs
ZXMgKDEwbXMpLCBpbnRlcmxlYXZlZCBjaGFubmVscwotICAgIHJldHVybiAoY2FwdHVyZUZvcm1h
dC0+bUNoYW5uZWxzUGVyRnJhbWUgPT0gMSB8fCBjYXB0dXJlRm9ybWF0LT5tQ2hhbm5lbHNQZXJG
cmFtZSA9PSAyKQotICAgICAgICAmJiBjYXB0dXJlRm9ybWF0LT5tU2FtcGxlUmF0ZSA9PSA0NDEw
MAotICAgICAgICAmJiAoY2FwdHVyZUZvcm1hdC0+bUZvcm1hdEZsYWdzID09IDQxIHx8IGNhcHR1
cmVGb3JtYXQtPm1Gb3JtYXRGbGFncyA9PSAoa0F1ZGlvRm9ybWF0RmxhZ3NOYXRpdmVGbG9hdFBh
Y2tlZCB8IGtBdWRpb0Zvcm1hdEZsYWdJc05vbkludGVybGVhdmVkKSkKLSAgICAgICAgJiYgY2Fw
dHVyZUZvcm1hdC0+bUZvcm1hdElEID09IGtBdWRpb0Zvcm1hdExpbmVhclBDTTsKLX0KLSNlbmRp
ZgotCi12b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c291cmNlSGFzTW9yZU1lZGlh
RGF0YShNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpCi17Ci0gICAgQVNTRVJUKG1lZGlhU2FtcGxl
LnBsYXRmb3JtU2FtcGxlKCkudHlwZSA9PSBQbGF0Zm9ybVNhbXBsZTo6Q01TYW1wbGVCdWZmZXJU
eXBlKTsKLSAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUgPSBtZWRpYVNhbXBsZS5wbGF0Zm9y
bVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcjsKLQotICAgIENNRm9ybWF0RGVzY3JpcHRp
b25SZWYgZm9ybWF0RGVzY3JpcHRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0
aW9uKHNhbXBsZSk7Ci0gICAgQVNTRVJUKGZvcm1hdERlc2NyaXB0aW9uKTsKLSAgICBjb25zdCBB
dWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGNhcHR1cmVGb3JtYXQgPSBDTUF1ZGlvRm9ybWF0
RGVzY3JpcHRpb25HZXRTdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKGZvcm1hdERlc2NyaXB0aW9uKTsK
LQotICAgIEFTU0VSVChjYW5Db252ZXJ0U2FtcGxlKGNhcHR1cmVGb3JtYXQpKTsKLQotICAgIENN
SXRlbUNvdW50IGZyYW1lQ291bnQgPSBDTVNhbXBsZUJ1ZmZlckdldE51bVNhbXBsZXMoc2FtcGxl
KTsKLQotICAgIENNQmxvY2tCdWZmZXJSZWYgYnVmZmVyID0gbnVsbHB0cjsKLSAgICBBdWRpb0J1
ZmZlckxpc3QgYnVmZmVyTGlzdFsyXTsKLSAgICBzaXplX3QgYnVmZmVyTGlzdFNpemUgPSBjYXB0
dXJlRm9ybWF0LT5tQ2hhbm5lbHNQZXJGcmFtZSA9PSAyID8gNDAgOiBzaXplb2YoQXVkaW9CdWZm
ZXJMaXN0KTsKLSAgICBtZW1zZXQoYnVmZmVyTGlzdCwgMCAsIGJ1ZmZlckxpc3RTaXplKTsKLQot
ICAgIE9TU3RhdHVzIGVycm9yID0gQ01TYW1wbGVCdWZmZXJHZXRBdWRpb0J1ZmZlckxpc3RXaXRo
UmV0YWluZWRCbG9ja0J1ZmZlcihzYW1wbGUsIG51bGxwdHIsIGJ1ZmZlckxpc3QsIGJ1ZmZlckxp
c3RTaXplLCBrQ0ZBbGxvY2F0b3JTeXN0ZW1EZWZhdWx0LCBrQ0ZBbGxvY2F0b3JTeXN0ZW1EZWZh
dWx0LCBrQ01TYW1wbGVCdWZmZXJGbGFnX0F1ZGlvQnVmZmVyTGlzdF9Bc3N1cmUxNkJ5dGVBbGln
bm1lbnQsICZidWZmZXIpOwotICAgIGlmIChlcnJvcikKKyAgICBBU1NFUlQobV9pbnB1dFN0cmVh
bURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKSA8PSAyKTsKKyAgICBpZiAobV9pbnB1dFN0
cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKSA+IDIpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChidWZmZXJMaXN0LT5tTnVtYmVyQnVmZmVycyA9PSAxKSB7Ci0gICAgICAgIGNv
bnN0IGZsb2F0KiB2YWx1ZXMxID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGJ1ZmZl
ckxpc3RbMF0ubUJ1ZmZlcnNbMF0ubURhdGEpOworICAgIHNpemVfdCBidWZmZXJTaXplID0gTGli
V2ViUlRDQXVkaW9Gb3JtYXQ6OmNodW5rU2FtcGxlQ291bnQgKiBMaWJXZWJSVENBdWRpb0Zvcm1h
dDo6c2FtcGxlQnl0ZVNpemUgKiBtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFu
bmVscygpOworICAgIG1fYXVkaW9CdWZmZXIucmVzZXJ2ZUNhcGFjaXR5KGJ1ZmZlclNpemUpOwog
Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKLSAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAg
ICAgICAgICAgIGZvciAoOyBtX3N0b3JlZFNhbXBsZUNvdW50IDwgNDQxICYmIGluZGV4IDwgZnJh
bWVDb3VudDsrK2luZGV4LCArK21fc3RvcmVkU2FtcGxlQ291bnQpCi0gICAgICAgICAgICAgICAg
bV9jaGFubmVsMVNhbXBsZXNbbV9zdG9yZWRTYW1wbGVDb3VudF0gPSBzY2FsZUF1ZGlvVmFsdWUo
dmFsdWVzMVtpbmRleF0pOworICAgIEF1ZGlvQnVmZmVyTGlzdCBidWZmZXJMaXN0OworICAgIGJ1
ZmZlckxpc3QubU51bWJlckJ1ZmZlcnMgPSAxOworICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0u
bU51bWJlckNoYW5uZWxzID0gbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5l
bHMoKTsKKyAgICBidWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSBidWZmZXJT
aXplOworICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGEgPSBtX2F1ZGlvQnVmZmVyLmRh
dGEoKTsKIAotICAgICAgICAgICAgaWYgKG1fc3RvcmVkU2FtcGxlQ291bnQgIT0gNDQxKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgY29udmVydEFuZFNlbmRNb25vU2Ft
cGxlcygpOwotICAgICAgICAgICAgbV9zdG9yZWRTYW1wbGVDb3VudCA9IDA7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbnN0IGZsb2F0KiB2YWx1ZXMxID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGJ1ZmZlckxpc3RbMF0ubUJ1ZmZlcnNbMF0ubURh
dGEpOwotICAgIGNvbnN0IGZsb2F0KiB2YWx1ZXMyID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBm
bG9hdCo+KGJ1ZmZlckxpc3RbMF0ubUJ1ZmZlcnNbMV0ubURhdGEpOwotCi0gICAgdW5zaWduZWQg
aW5kZXggPSAwOwotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGZvciAoOyBtX3N0b3JlZFNh
bXBsZUNvdW50IDwgNDQxICYmIGluZGV4IDwgZnJhbWVDb3VudDsrK2luZGV4LCArK21fc3RvcmVk
U2FtcGxlQ291bnQpIHsKLSAgICAgICAgICAgIG1fY2hhbm5lbDFTYW1wbGVzW21fc3RvcmVkU2Ft
cGxlQ291bnRdID0gc2NhbGVBdWRpb1ZhbHVlKHZhbHVlczFbaW5kZXhdKTsKLSAgICAgICAgICAg
IG1fY2hhbm5lbDJTYW1wbGVzW21fc3RvcmVkU2FtcGxlQ291bnRdID0gc2NhbGVBdWRpb1ZhbHVl
KHZhbHVlczJbaW5kZXhdKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtX3N0b3JlZFNhbXBs
ZUNvdW50ICE9IDQ0MSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBjb252ZXJ0QW5k
U2VuZFN0ZXJlb1NhbXBsZXMoKTsKLSAgICAgICAgbV9zdG9yZWRTYW1wbGVDb3VudCA9IDA7Ci0g
ICAgfQorICAgIG1fc2FtcGxlQ29udmVydGVyLT5wdWxsQXZhbGFpYmxlU2FtcGxlc0FzQ2h1bmtz
KGJ1ZmZlckxpc3QsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpjaHVua1NhbXBsZUNvdW50LCBbdGhp
c10geworICAgICAgICBmb3IgKGF1dG8gc2luayA6IG1fc2lua3MpCisgICAgICAgICAgICBzaW5r
LT5PbkRhdGEobV9hdWRpb0J1ZmZlci5kYXRhKCksIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1w
bGVTaXplLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlUmF0ZSwgbV9pbnB1dFN0cmVhbURl
c2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmNodW5r
U2FtcGxlQ291bnQpOworICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKaW5kZXggZmUxNDEwYzc2ZjZmNjAx
YzA2MmVmNzdjZWQ1OTI5OTE4ZjI5YWJmMS4uNTA2MTA5YzRjOGIxMWU1MmNiNmQ4NGUxYWMwMDNj
MzRiYTg1M2YxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaApA
QCAtMzAsNiArMzAsNyBAQAogCiAjaWYgVVNFKExJQldFQlJUQykKIAorI2luY2x1ZGUgIkF1ZGlv
U2FtcGxlRGF0YVNvdXJjZS5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgogI2luY2x1
ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3Ry
ZWFtaW50ZXJmYWNlLmg+CkBAIC00OSw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRy
YWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgdHJh
Y2spIHsgbV90cmFjayA9IFdURk1vdmUodHJhY2spOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYm
IGF1ZGlvU291cmNlKSA6IG1fYXVkaW9Tb3VyY2UoV1RGTW92ZShhdWRpb1NvdXJjZSkpIHsgbV9h
dWRpb1NvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOyB9CisgICAgZXhwbGljaXQgUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlKFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBBZGRTaW5rKHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UqIHNpbmsp
IHsgbV9zaW5rcy5hcHBlbmQoc2luayk7IH0KICAgICB2aXJ0dWFsIHZvaWQgUmVtb3ZlU2luayh3
ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBzaW5rKSB7IG1fc2lua3MucmVtb3ZlRmly
c3Qoc2luayk7IH0KQEAgLTY4LDEyICs2OSwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgcHJldmVu
dFNvdXJjZUZyb21TdG9wcGluZygpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBh
dWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgUGxhdGZvcm1BdWRpb0RhdGEm
LCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKIAotICAgIHZv
aWQgY29udmVydEFuZFNlbmRNb25vU2FtcGxlcygpOwotICAgIHZvaWQgY29udmVydEFuZFNlbmRT
dGVyZW9TYW1wbGVzKCk7CisgICAgdm9pZCBwdWxsQXVkaW9EYXRhKCk7CiAKICAgICBWZWN0b3I8
d2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSo+IG1fc2lua3M7CiAgICAgUmVmPFJlYWx0
aW1lTWVkaWFTb3VyY2U+IG1fYXVkaW9Tb3VyY2U7CiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4gbV90cmFjazsKKyAgICBSZWY8QXVkaW9TYW1wbGVE
YXRhU291cmNlPiBtX3NhbXBsZUNvbnZlcnRlcjsKKyAgICBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24gbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uOworICAgIFZlY3Rvcjx1aW50MTZfdD4gbV9hdWRp
b0J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302205</attachid>
            <date>2017-02-20 16:53:29 -0800</date>
            <delta_ts>2017-02-21 11:09:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167961-20170220165045.patch</filename>
            <type>text/plain</type>
            <size>5936</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODYxOTU4Y2NlNWNkYTFl
MjhkYzkzMDE5YjMwMjRiNTIzNDIxYzFhOC4uMzc0Y2IxY2QwMTllYTAxNTc4NjUyYWIyNDYyOWMw
YTcxNDdlZmQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE3LTAyLTIwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViUlRDXSBJbXBsZW1l
bnQgSW5jb21pbmcgbGlid2VicnRjIGF1ZGlvIHNvdXJjZSBzdXBwb3J0LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3OTYxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSG9va2luZyBsaWJ3ZWJydGMgaW5j
b21pbmcgYXVkaW8gc291cmNlIGludG8gV2ViQ29yZSBhdWRpbyByZW5kZXJpbmcgcGF0aC4KKyAg
ICAgICAgTWFudWFsbHkgdGVzdGluZyB0aGF0IG11dGVkIHNvdXJjZXMgcHJvZHVjZSBkYXRhIHdp
dGggemVyb3MgYW5kIHVubXV0ZWQgc291cmNlcyBwcm92aWRlIGRhdGEgd2l0aCBub24gemVyb3Mu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnN0cmVhbURlc2NyaXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6T25EYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6YXVkaW9Tb3VyY2VQ
cm92aWRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5j
b21pbmdBdWRpb1NvdXJjZS5oOgorCiAyMDE3LTAyLTIwICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgogCiAgICAgICAgIExvY2FsIGF1ZGlvLW9ubHkgc3RyZWFtIHdpbGwgbm90IHRy
aWdnZXIgcGxheWJhY2sgdG8gYmVnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZS5jcHAKaW5kZXggOTYxMjdjYjRiYjQyZDJlM2M4ZDA3NmUzNTBhZTI0NWFmOTMyYzJi
MS4uY2U5MTlkNWQyOTgwYjRhYmJiOGE1ZmFjMmZjMDkzNzQ0MGU4NjNlZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAKQEAgLTMzLDcgKzMzLDExIEBACiAK
ICNpZiBVU0UoTElCV0VCUlRDKQogCi0jaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzLmgiCisjaW5jbHVkZSAiQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIkNB
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlvRm9ybWF0
LmgiCisjaW5jbHVkZSAiTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmgiCisjaW5jbHVkZSAiV2ViQXVk
aW9CdWZmZXJMaXN0LmgiCiAjaW5jbHVkZSAiV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMu
aCIKIAogI2luY2x1ZGUgIkNvcmVNZWRpYVNvZnRMaW5rLmgiCkBAIC00Miw3ICs0Niw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogUmVmPFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZT4gUmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjcmVhdGUocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiBhdWRpb1RyYWNrLCBTdHJpbmcmJiBhdWRpb1RyYWNr
SWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291
cmNlKFdURk1vdmUoYXVkaW9UcmFjayksIFdURk1vdmUoYXVkaW9UcmFja0lkKSkpOworICAgIGF1
dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UoV1RG
TW92ZShhdWRpb1RyYWNrKSwgV1RGTW92ZShhdWRpb1RyYWNrSWQpKSk7CisgICAgc291cmNlLT5z
dGFydFByb2R1Y2luZ0RhdGEoKTsKKyAgICByZXR1cm4gc291cmNlOwogfQogCiBSZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2U6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZShydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmIGF1ZGlvVHJhY2ssIFN0cmlu
ZyYmIGF1ZGlvVHJhY2tJZCkKQEAgLTU5LDE0ICs2NSwzNyBAQCBSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2U6On5SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UoKQogICAgIH0KIH0KIAorCitz
dGF0aWMgaW5saW5lIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1EZXNjcmlwdGlv
bihzaXplX3Qgc2FtcGxlUmF0ZSwgc2l6ZV90IGNoYW5uZWxDb3VudCkKK3sKKyAgICBBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OworICAgIEZpbGxPdXRBU0JERm9yTFBD
TShzdHJlYW1Gb3JtYXQsIHNhbXBsZVJhdGUsIGNoYW5uZWxDb3VudCwgTGliV2ViUlRDQXVkaW9G
b3JtYXQ6OnNhbXBsZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJX
ZWJSVENBdWRpb0Zvcm1hdDo6aXNGbG9hdCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzQmlnRW5k
aWFuLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNOb25JbnRlcmxlYXZlZCk7CisgICAgcmV0dXJu
IHN0cmVhbUZvcm1hdDsKK30KKwogdm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6Ok9u
RGF0YShjb25zdCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBpbnQgc2FtcGxl
UmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKIHsK
LSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi0gICAgVU5VU0VEX1BBUkFNKGF1ZGlvRGF0
YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGJpdHNQZXJTYW1wbGUpOwotICAgIFVOVVNFRF9QQVJBTShz
YW1wbGVSYXRlKTsKLSAgICBVTlVTRURfUEFSQU0obnVtYmVyT2ZDaGFubmVscyk7Ci0gICAgVU5V
U0VEX1BBUkFNKG51bWJlck9mRnJhbWVzKTsKKyAgICAvLyBXZSBtYXkgcmVjZWl2ZSBPbkRhdGEg
Y2FsbHMgd2l0aCBlbXB0eSBzb3VuZCBkYXRhIChtb25vLCBzYW1wbGVzIGVxdWFsIHRvIHplcm8g
YW5kIHNhbXBsZVJhdGUgZXF1YWwgdG8gMTYwMDApIHdoZW4gc3RhcnRpbmcgdGhlIGNhbGwuCisg
ICAgLy8gRklYTUU6IEZvciB0aGUgbW9tZW50IHdlIHNraXAgdGhlbSwgd2Ugc2hvdWxkIGZpbmQg
YSBiZXR0ZXIgc29sdXRpb24gYXQgbGlid2VicnRjIGxldmVsIHRvIG5vdCBiZSBjYWxsZWQgdW50
aWwgZ2V0dGluZyBzb21lIHJlYWwgZGF0YS4KKyAgICBpZiAoc2FtcGxlUmF0ZSA9PSAxNjAwMCAm
JiBudW1iZXJPZkNoYW5uZWxzID09IDEpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChi
aXRzUGVyU2FtcGxlID09IDE2KTsKKyAgICBBU1NFUlQobnVtYmVyT2ZDaGFubmVscyA9PSAyKTsK
KyAgICBBU1NFUlQoc2FtcGxlUmF0ZSA9PSA0ODAwMCk7CisKKyAgICBDTVRpbWUgc3RhcnRUaW1l
ID0gQ01UaW1lTWFrZShtX251bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRlKTsKKyAgICBhdXRvIG1l
ZGlhVGltZSA9IHRvTWVkaWFUaW1lKHN0YXJ0VGltZSk7CisgICAgbV9udW1iZXJPZkZyYW1lcyAr
PSBudW1iZXJPZkZyYW1lczsKKworICAgIG1fc3RyZWFtRm9ybWF0ID0gc3RyZWFtRGVzY3JpcHRp
b24oc2FtcGxlUmF0ZSwgbnVtYmVyT2ZDaGFubmVscyk7CisKKyAgICBXZWJBdWRpb0J1ZmZlckxp
c3QgYXVkaW9CdWZmZXJMaXN0IHsgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKG1fc3RyZWFtRm9y
bWF0KSB9OworICAgIGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1EYXRhID0gY29uc3RfY2Fz
dDx2b2lkKj4oYXVkaW9EYXRhKTsKKyAgICBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0
YUJ5dGVTaXplID0gbnVtYmVyT2ZDaGFubmVscyAqIG51bWJlck9mRnJhbWVzICogYml0c1BlclNh
bXBsZSAvIDg7CisgICAgYXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bU51bWJlckNoYW5uZWxz
ID0gbnVtYmVyT2ZDaGFubmVsczsKKworICAgIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShtZWRpYVRp
bWUsIGF1ZGlvQnVmZmVyTGlzdCwgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKG1fc3RyZWFtRm9y
bWF0KSwgbnVtYmVyT2ZGcmFtZXMpOwogfQogCiB2b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKQEAgLTEwOSw4ICsxMzgsOCBAQCBBdWRpb1NvdXJj
ZVByb3ZpZGVyKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OmF1ZGlvU291cmNlUHJvdmlk
ZXIoKQogewogICAgIGlmICghbV9hdWRpb1NvdXJjZVByb3ZpZGVyKSB7CiAgICAgICAgIG1fYXVk
aW9Tb3VyY2VQcm92aWRlciA9IFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpjcmVhdGUo
KnRoaXMpOwotICAgICAgICBjb25zdCBhdXRvKiBkZXNjcmlwdGlvbiA9IENNQXVkaW9Gb3JtYXRE
ZXNjcmlwdGlvbkdldFN0cmVhbUJhc2ljRGVzY3JpcHRpb24obV9mb3JtYXREZXNjcmlwdGlvbi5n
ZXQoKSk7Ci0gICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlci0+cHJlcGFyZShkZXNjcmlwdGlv
bik7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY2FsbCBtX2F1ZGlvU291cmNlUHJvdmlk
ZXItPnByZXBhcmUgYnV0IG1fc3RyZWFtRm9ybWF0IG1heSBiZSBtb2RpZmllZCBpbiB0aGUgUlRD
IHdvcmtlciB0aHJlYWQuCisgICAgICAgIC8vIG1fYXVkaW9Tb3VyY2VQcm92aWRlci0+cHJlcGFy
ZSgmbV9zdHJlYW1Gb3JtYXQpOwogICAgIH0KIAogICAgIHJldHVybiBtX2F1ZGlvU291cmNlUHJv
dmlkZXIuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKaW5k
ZXggOGE3ZDdkOGNkMDZiZjgxY2YxMmQ0MDQ0YjRhNzE2ZGVmYjcwYWQ3ZC4uMjE3ODIwNGJkM2U0
MjQzOTEyOTQxZTBmYmM4MDdiYzgxMzVmYWMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29t
aW5nQXVkaW9Tb3VyY2UuaApAQCAtNzcsNyArNzcsOCBAQCBwcml2YXRlOgogICAgIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+IG1fYXVkaW9UcmFjazsKIAog
ICAgIFJlZlB0cjxXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQz4gbV9hdWRpb1NvdXJjZVBy
b3ZpZGVyOwotICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBtX2Zvcm1hdERl
c2NyaXB0aW9uOworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBtX3N0cmVhbUZvcm1h
dDsKKyAgICB1aW50NjRfdCBtX251bWJlck9mRnJhbWVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302287</attachid>
            <date>2017-02-21 11:09:50 -0800</date>
            <delta_ts>2017-02-21 14:31:43 -0800</delta_ts>
            <desc>Copying data</desc>
            <filename>bug-167961-20170221110705.patch</filename>
            <type>text/plain</type>
            <size>6001</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODYxOTU4Y2NlNWNkYTFl
MjhkYzkzMDE5YjMwMjRiNTIzNDIxYzFhOC4uMzc0Y2IxY2QwMTllYTAxNTc4NjUyYWIyNDYyOWMw
YTcxNDdlZmQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE3LTAyLTIwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViUlRDXSBJbXBsZW1l
bnQgSW5jb21pbmcgbGlid2VicnRjIGF1ZGlvIHNvdXJjZSBzdXBwb3J0LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3OTYxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSG9va2luZyBsaWJ3ZWJydGMgaW5j
b21pbmcgYXVkaW8gc291cmNlIGludG8gV2ViQ29yZSBhdWRpbyByZW5kZXJpbmcgcGF0aC4KKyAg
ICAgICAgTWFudWFsbHkgdGVzdGluZyB0aGF0IG11dGVkIHNvdXJjZXMgcHJvZHVjZSBkYXRhIHdp
dGggemVyb3MgYW5kIHVubXV0ZWQgc291cmNlcyBwcm92aWRlIGRhdGEgd2l0aCBub24gemVyb3Mu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnN0cmVhbURlc2NyaXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6T25EYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6YXVkaW9Tb3VyY2VQ
cm92aWRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5j
b21pbmdBdWRpb1NvdXJjZS5oOgorCiAyMDE3LTAyLTIwICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgogCiAgICAgICAgIExvY2FsIGF1ZGlvLW9ubHkgc3RyZWFtIHdpbGwgbm90IHRy
aWdnZXIgcGxheWJhY2sgdG8gYmVnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZS5jcHAKaW5kZXggOTYxMjdjYjRiYjQyZDJlM2M4ZDA3NmUzNTBhZTI0NWFmOTMyYzJi
MS4uNzAxNTI4ZTRiZTUzMmJjYmRiMDM3MDg4ZTQwMWE4MWQwMjFjOTc1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAKQEAgLTMzLDcgKzMzLDExIEBACiAK
ICNpZiBVU0UoTElCV0VCUlRDKQogCi0jaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzLmgiCisjaW5jbHVkZSAiQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIkNB
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlvRm9ybWF0
LmgiCisjaW5jbHVkZSAiTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmgiCisjaW5jbHVkZSAiV2ViQXVk
aW9CdWZmZXJMaXN0LmgiCiAjaW5jbHVkZSAiV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMu
aCIKIAogI2luY2x1ZGUgIkNvcmVNZWRpYVNvZnRMaW5rLmgiCkBAIC00Miw3ICs0Niw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogUmVmPFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZT4gUmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjcmVhdGUocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiBhdWRpb1RyYWNrLCBTdHJpbmcmJiBhdWRpb1RyYWNr
SWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291
cmNlKFdURk1vdmUoYXVkaW9UcmFjayksIFdURk1vdmUoYXVkaW9UcmFja0lkKSkpOworICAgIGF1
dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UoV1RG
TW92ZShhdWRpb1RyYWNrKSwgV1RGTW92ZShhdWRpb1RyYWNrSWQpKSk7CisgICAgc291cmNlLT5z
dGFydFByb2R1Y2luZ0RhdGEoKTsKKyAgICByZXR1cm4gc291cmNlOwogfQogCiBSZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2U6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZShydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmIGF1ZGlvVHJhY2ssIFN0cmlu
ZyYmIGF1ZGlvVHJhY2tJZCkKQEAgLTU5LDE0ICs2NSwzNyBAQCBSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2U6On5SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UoKQogICAgIH0KIH0KIAorCitz
dGF0aWMgaW5saW5lIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1EZXNjcmlwdGlv
bihzaXplX3Qgc2FtcGxlUmF0ZSwgc2l6ZV90IGNoYW5uZWxDb3VudCkKK3sKKyAgICBBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OworICAgIEZpbGxPdXRBU0JERm9yTFBD
TShzdHJlYW1Gb3JtYXQsIHNhbXBsZVJhdGUsIGNoYW5uZWxDb3VudCwgTGliV2ViUlRDQXVkaW9G
b3JtYXQ6OnNhbXBsZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJX
ZWJSVENBdWRpb0Zvcm1hdDo6aXNGbG9hdCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzQmlnRW5k
aWFuLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNOb25JbnRlcmxlYXZlZCk7CisgICAgcmV0dXJu
IHN0cmVhbUZvcm1hdDsKK30KKwogdm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6Ok9u
RGF0YShjb25zdCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBpbnQgc2FtcGxl
UmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKIHsK
LSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi0gICAgVU5VU0VEX1BBUkFNKGF1ZGlvRGF0
YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGJpdHNQZXJTYW1wbGUpOwotICAgIFVOVVNFRF9QQVJBTShz
YW1wbGVSYXRlKTsKLSAgICBVTlVTRURfUEFSQU0obnVtYmVyT2ZDaGFubmVscyk7Ci0gICAgVU5V
U0VEX1BBUkFNKG51bWJlck9mRnJhbWVzKTsKKyAgICAvLyBXZSBtYXkgcmVjZWl2ZSBPbkRhdGEg
Y2FsbHMgd2l0aCBlbXB0eSBzb3VuZCBkYXRhIChtb25vLCBzYW1wbGVzIGVxdWFsIHRvIHplcm8g
YW5kIHNhbXBsZVJhdGUgZXF1YWwgdG8gMTYwMDApIHdoZW4gc3RhcnRpbmcgdGhlIGNhbGwuCisg
ICAgLy8gRklYTUU6IEZvciB0aGUgbW9tZW50IHdlIHNraXAgdGhlbSwgd2Ugc2hvdWxkIGZpbmQg
YSBiZXR0ZXIgc29sdXRpb24gYXQgbGlid2VicnRjIGxldmVsIHRvIG5vdCBiZSBjYWxsZWQgdW50
aWwgZ2V0dGluZyBzb21lIHJlYWwgZGF0YS4KKyAgICBpZiAoc2FtcGxlUmF0ZSA9PSAxNjAwMCAm
JiBudW1iZXJPZkNoYW5uZWxzID09IDEpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChi
aXRzUGVyU2FtcGxlID09IDE2KTsKKyAgICBBU1NFUlQobnVtYmVyT2ZDaGFubmVscyA9PSAyKTsK
KyAgICBBU1NFUlQoc2FtcGxlUmF0ZSA9PSA0ODAwMCk7CisKKyAgICBDTVRpbWUgc3RhcnRUaW1l
ID0gQ01UaW1lTWFrZShtX251bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRlKTsKKyAgICBhdXRvIG1l
ZGlhVGltZSA9IHRvTWVkaWFUaW1lKHN0YXJ0VGltZSk7CisgICAgbV9udW1iZXJPZkZyYW1lcyAr
PSBudW1iZXJPZkZyYW1lczsKKworICAgIG1fc3RyZWFtRm9ybWF0ID0gc3RyZWFtRGVzY3JpcHRp
b24oc2FtcGxlUmF0ZSwgbnVtYmVyT2ZDaGFubmVscyk7CisKKyAgICBXZWJBdWRpb0J1ZmZlckxp
c3QgYXVkaW9CdWZmZXJMaXN0IHsgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKG1fc3RyZWFtRm9y
bWF0KSwgV1RGOjpzYWZlQ2FzdDx1aW50MzJfdD4obnVtYmVyT2ZGcmFtZXMpIH07CisgICAgYXVk
aW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSA9IG51bWJlck9mQ2hhbm5lbHMg
KiBudW1iZXJPZkZyYW1lcyAqIGJpdHNQZXJTYW1wbGUgLyA4OworICAgIGF1ZGlvQnVmZmVyTGlz
dC5idWZmZXIoMCktPm1OdW1iZXJDaGFubmVscyA9IG51bWJlck9mQ2hhbm5lbHM7CisgICAgbWVt
Y3B5KGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1EYXRhLCBhdWRpb0RhdGEsIGF1ZGlvQnVm
ZmVyTGlzdC5idWZmZXIoMCktPm1EYXRhQnl0ZVNpemUpOworCisgICAgYXVkaW9TYW1wbGVzQXZh
aWxhYmxlKG1lZGlhVGltZSwgYXVkaW9CdWZmZXJMaXN0LCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24obV9zdHJlYW1Gb3JtYXQpLCBudW1iZXJPZkZyYW1lcyk7CiB9CiAKIHZvaWQgUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQpAQCAtMTA3LDEzICsxMzYs
OCBAQCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIFJlYWx0aW1lSW5j
b21pbmdBdWRpb1NvdXJjZTo6c3VwcG9ydGVkQwogCiBBdWRpb1NvdXJjZVByb3ZpZGVyKiBSZWFs
dGltZUluY29taW5nQXVkaW9Tb3VyY2U6OmF1ZGlvU291cmNlUHJvdmlkZXIoKQogewotICAgIGlm
ICghbV9hdWRpb1NvdXJjZVByb3ZpZGVyKSB7Ci0gICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRl
ciA9IFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpjcmVhdGUoKnRoaXMpOwotICAgICAg
ICBjb25zdCBhdXRvKiBkZXNjcmlwdGlvbiA9IENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFN0
cmVhbUJhc2ljRGVzY3JpcHRpb24obV9mb3JtYXREZXNjcmlwdGlvbi5nZXQoKSk7Ci0gICAgICAg
IG1fYXVkaW9Tb3VyY2VQcm92aWRlci0+cHJlcGFyZShkZXNjcmlwdGlvbik7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIG1fYXVkaW9Tb3VyY2VQcm92aWRlci5nZXQoKTsKKyAgICAvLyBGSVhNRTogQ3Jl
YXRlIHRoZSBhdWRpb1NvdXJjZVByb3ZpZGVyCisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3Vy
Y2UuaAppbmRleCA4YTdkN2Q4Y2QwNmJmODFjZjEyZDQwNDRiNGE3MTZkZWZiNzBhZDdkLi4yMTc4
MjA0YmQzZTQyNDM5MTI5NDFlMGZiYzgwN2JjODEzNWZhYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oCkBAIC03Nyw3ICs3Nyw4IEBAIHByaXZhdGU6CiAgICAg
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4gbV9hdWRpb1Ry
YWNrOwogCiAgICAgUmVmUHRyPFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDPiBtX2F1ZGlv
U291cmNlUHJvdmlkZXI7Ci0gICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1f
Zm9ybWF0RGVzY3JpcHRpb247CisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIG1fc3Ry
ZWFtRm9ybWF0OworICAgIHVpbnQ2NF90IG1fbnVtYmVyT2ZGcmFtZXM7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302308</attachid>
            <date>2017-02-21 14:31:47 -0800</date>
            <delta_ts>2017-02-21 15:17:48 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-167961-20170221142901.patch</filename>
            <type>text/plain</type>
            <size>6114</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTIyMTY5MGViOTNkMWEx
YjJhZjZhNTA1YzE4NTMwMDYwNzk5NzE2Mi4uMTBmMDlkNWRlZWI2ZTljYThkNmJhYzk4NjllM2Q4
MmI4MGE4MTkzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE3LTAyLTIxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViUlRDXSBJbXBsZW1l
bnQgSW5jb21pbmcgbGlid2VicnRjIGF1ZGlvIHNvdXJjZSBzdXBwb3J0LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3OTYxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIEhvb2sgbGlid2VicnRjIGluY29taW5n
IGF1ZGlvIHNvdXJjZSBpbnRvIFdlYkNvcmUgYXVkaW8gcmVuZGVyaW5nIHBhdGguCisgICAgICAg
IE1hbnVhbGx5IHRlc3RpbmcgdGhhdCBtdXRlZCBzb3VyY2VzIHByb2R1Y2UgZGF0YSB3aXRoIHpl
cm9zIGFuZCB1bm11dGVkIHNvdXJjZXMgcHJvdmlkZSBkYXRhIHdpdGggbm9uIHplcm9zLgorCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzdHJlYW1EZXNjcmlwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6Ok9uRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OmF1ZGlvU291cmNlUHJvdmlk
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2UuaDoKKwogMjAxNy0wMi0yMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBDTWFrZSBidWlsZC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAKaW5kZXggOTYxMjdjYjRiYjQyZDJlM2M4
ZDA3NmUzNTBhZTI0NWFmOTMyYzJiMS4uY2NkOTZhMGY2NmFlODBmOTg4OGUxNGQ1OGQ1NjI1NGRh
Y2EzMTEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAK
QEAgLTMzLDcgKzMzLDExIEBACiAKICNpZiBVU0UoTElCV0VCUlRDKQogCi0jaW5jbHVkZSAiUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgiCisjaW5jbHVkZSAiQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbi5oIgorI2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUg
IkxpYldlYlJUQ0F1ZGlvRm9ybWF0LmgiCisjaW5jbHVkZSAiTWVkaWFUaW1lQVZGb3VuZGF0aW9u
LmgiCisjaW5jbHVkZSAiV2ViQXVkaW9CdWZmZXJMaXN0LmgiCiAjaW5jbHVkZSAiV2ViQXVkaW9T
b3VyY2VQcm92aWRlckFWRk9iakMuaCIKIAogI2luY2x1ZGUgIkNvcmVNZWRpYVNvZnRMaW5rLmgi
CkBAIC00Miw3ICs0Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVmPFJlYWx0aW1lSW5j
b21pbmdBdWRpb1NvdXJjZT4gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjcmVhdGUocnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiBhdWRpb1RyYWNr
LCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKFdURk1vdmUoYXVkaW9UcmFjayksIFdURk1vdmUoYXVk
aW9UcmFja0lkKSkpOworICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBSZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UoV1RGTW92ZShhdWRpb1RyYWNrKSwgV1RGTW92ZShhdWRpb1RyYWNr
SWQpKSk7CisgICAgc291cmNlLT5zdGFydFByb2R1Y2luZ0RhdGEoKTsKKyAgICByZXR1cm4gc291
cmNlOwogfQogCiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OlJlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNl
PiYmIGF1ZGlvVHJhY2ssIFN0cmluZyYmIGF1ZGlvVHJhY2tJZCkKQEAgLTU5LDE0ICs2NSwzOSBA
QCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6On5SZWFsdGltZUluY29taW5nQXVkaW9Tb3Vy
Y2UoKQogICAgIH0KIH0KIAorCitzdGF0aWMgaW5saW5lIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbiBzdHJlYW1EZXNjcmlwdGlvbihzaXplX3Qgc2FtcGxlUmF0ZSwgc2l6ZV90IGNoYW5uZWxD
b3VudCkKK3sKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0Owor
ICAgIEZpbGxPdXRBU0JERm9yTFBDTShzdHJlYW1Gb3JtYXQsIHNhbXBsZVJhdGUsIGNoYW5uZWxD
b3VudCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9y
bWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNGbG9hdCwgTGliV2ViUlRD
QXVkaW9Gb3JtYXQ6OmlzQmlnRW5kaWFuLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNOb25JbnRl
cmxlYXZlZCk7CisgICAgcmV0dXJuIHN0cmVhbUZvcm1hdDsKK30KKwogdm9pZCBSZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2U6Ok9uRGF0YShjb25zdCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRz
UGVyU2FtcGxlLCBpbnQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIHNpemVf
dCBudW1iZXJPZkZyYW1lcykKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi0gICAg
VU5VU0VEX1BBUkFNKGF1ZGlvRGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGJpdHNQZXJTYW1wbGUp
OwotICAgIFVOVVNFRF9QQVJBTShzYW1wbGVSYXRlKTsKLSAgICBVTlVTRURfUEFSQU0obnVtYmVy
T2ZDaGFubmVscyk7Ci0gICAgVU5VU0VEX1BBUkFNKG51bWJlck9mRnJhbWVzKTsKKyAgICAvLyBX
ZSBtYXkgcmVjZWl2ZSBPbkRhdGEgY2FsbHMgd2l0aCBlbXB0eSBzb3VuZCBkYXRhIChtb25vLCBz
YW1wbGVzIGVxdWFsIHRvIHplcm8gYW5kIHNhbXBsZVJhdGUgZXF1YWwgdG8gMTYwMDApIHdoZW4g
c3RhcnRpbmcgdGhlIGNhbGwuCisgICAgLy8gRklYTUU6IEZvciB0aGUgbW9tZW50IHdlIHNraXAg
dGhlbSwgd2Ugc2hvdWxkIGZpbmQgYSBiZXR0ZXIgc29sdXRpb24gYXQgbGlid2VicnRjIGxldmVs
IHRvIG5vdCBiZSBjYWxsZWQgdW50aWwgZ2V0dGluZyBzb21lIHJlYWwgZGF0YS4KKyAgICBpZiAo
c2FtcGxlUmF0ZSA9PSAxNjAwMCAmJiBudW1iZXJPZkNoYW5uZWxzID09IDEpCisgICAgICAgIHJl
dHVybjsKKworICAgIEFTU0VSVChiaXRzUGVyU2FtcGxlID09IDE2KTsKKyAgICBBU1NFUlQobnVt
YmVyT2ZDaGFubmVscyA9PSAyKTsKKyAgICBBU1NFUlQoc2FtcGxlUmF0ZSA9PSA0ODAwMCk7CisK
KyAgICBDTVRpbWUgc3RhcnRUaW1lID0gQ01UaW1lTWFrZShtX251bWJlck9mRnJhbWVzLCBzYW1w
bGVSYXRlKTsKKyAgICBhdXRvIG1lZGlhVGltZSA9IHRvTWVkaWFUaW1lKHN0YXJ0VGltZSk7Cisg
ICAgbV9udW1iZXJPZkZyYW1lcyArPSBudW1iZXJPZkZyYW1lczsKKworICAgIG1fc3RyZWFtRm9y
bWF0ID0gc3RyZWFtRGVzY3JpcHRpb24oc2FtcGxlUmF0ZSwgbnVtYmVyT2ZDaGFubmVscyk7CisK
KyAgICBXZWJBdWRpb0J1ZmZlckxpc3QgYXVkaW9CdWZmZXJMaXN0IHsgQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uKG1fc3RyZWFtRm9ybWF0KSwgV1RGOjpzYWZlQ2FzdDx1aW50MzJfdD4obnVtYmVy
T2ZGcmFtZXMpIH07CisgICAgYXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFCeXRlU2l6
ZSA9IG51bWJlck9mQ2hhbm5lbHMgKiBudW1iZXJPZkZyYW1lcyAqIGJpdHNQZXJTYW1wbGUgLyA4
OworICAgIGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1OdW1iZXJDaGFubmVscyA9IG51bWJl
ck9mQ2hhbm5lbHM7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0byBkbyB0aGUg
ZXh0cmEgbWVtb3J5IGFsbG9jYXRpb24gYW5kIGNvcHkuCisgICAgLy8gSW5zdGVhZCwgd2Ugc2hv
dWxkIGJlIGFibGUgdG8gZGlyZWN0bHkgcGFzcyBhdWRpb0RhdGEgcG9pbnRlci4KKyAgICBtZW1j
cHkoYXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGEsIGF1ZGlvRGF0YSwgYXVkaW9CdWZm
ZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSk7CisKKyAgICBhdWRpb1NhbXBsZXNBdmFp
bGFibGUobWVkaWFUaW1lLCBhdWRpb0J1ZmZlckxpc3QsIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bihtX3N0cmVhbUZvcm1hdCksIG51bWJlck9mRnJhbWVzKTsKIH0KIAogdm9pZCBSZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCkBAIC0xMDcsMTMgKzEzOCw4
IEBAIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgUmVhbHRpbWVJbmNv
bWluZ0F1ZGlvU291cmNlOjpzdXBwb3J0ZWRDCiAKIEF1ZGlvU291cmNlUHJvdmlkZXIqIFJlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6YXVkaW9Tb3VyY2VQcm92aWRlcigpCiB7Ci0gICAgaWYg
KCFtX2F1ZGlvU291cmNlUHJvdmlkZXIpIHsKLSAgICAgICAgbV9hdWRpb1NvdXJjZVByb3ZpZGVy
ID0gV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OmNyZWF0ZSgqdGhpcyk7Ci0gICAgICAg
IGNvbnN0IGF1dG8qIGRlc2NyaXB0aW9uID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0U3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbihtX2Zvcm1hdERlc2NyaXB0aW9uLmdldCgpKTsKLSAgICAgICAg
bV9hdWRpb1NvdXJjZVByb3ZpZGVyLT5wcmVwYXJlKGRlc2NyaXB0aW9uKTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gbV9hdWRpb1NvdXJjZVByb3ZpZGVyLmdldCgpOworICAgIC8vIEZJWE1FOiBDcmVh
dGUgdGhlIGF1ZGlvU291cmNlUHJvdmlkZXIKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZS5oCmluZGV4IDhhN2Q3ZDhjZDA2YmY4MWNmMTJkNDA0NGI0YTcxNmRlZmI3MGFkN2QuLjIxNzgy
MDRiZDNlNDI0MzkxMjk0MWUwZmJjODA3YmM4MTM1ZmFjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKQEAgLTc3LDcgKzc3LDggQEAgcHJpdmF0ZToKICAgICBy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiBtX2F1ZGlvVHJh
Y2s7CiAKICAgICBSZWZQdHI8V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM+IG1fYXVkaW9T
b3VyY2VQcm92aWRlcjsKLSAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV9m
b3JtYXREZXNjcmlwdGlvbjsKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gbV9zdHJl
YW1Gb3JtYXQ7CisgICAgdWludDY0X3QgbV9udW1iZXJPZkZyYW1lczsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>