<?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>93591</bug_id>
          
          <creation_ts>2012-08-09 01:10:58 -0700</creation_ts>
          <short_desc>Use the new AVPlayerItemVideoOutput API in MediaPlayerPrivateAVFoundation.</short_desc>
          <delta_ts>2012-08-10 13:13:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>691326</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-08-09 01:10:58 -0700</bug_when>
    <thetext>Use the new AVPlayerItemVideoOutput API in MediaPlayerPrivateAVFoundation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691816</commentid>
    <comment_count>1</comment_count>
      <attachid>157542</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-08-09 13:58:18 -0700</bug_when>
    <thetext>Created attachment 157542
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691826</commentid>
    <comment_count>2</comment_count>
      <attachid>157542</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-08-09 14:07:48 -0700</bug_when>
    <thetext>Comment on attachment 157542
Patch

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

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:837
&gt; +    m_imageGenerator = [AVAssetImageGenerator assetImageGeneratorWithAsset:m_avAsset.get()];

Shouldn&apos;t this use an adopt?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691829</commentid>
    <comment_count>3</comment_count>
      <attachid>157542</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-08-09 14:11:41 -0700</bug_when>
    <thetext>Comment on attachment 157542
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:837
&gt;&gt; +    m_imageGenerator = [AVAssetImageGenerator assetImageGeneratorWithAsset:m_avAsset.get()];
&gt; 
&gt; Shouldn&apos;t this use an adopt?

It isn&apos;t clear that this function was simply moved, but if you look above (at original line 196), you see that this has always been like this.

It could be re-written to use the non-autoreleased version of the constructor, which would then need an adopt.  Or I could move this back to where it originally was and just add more  #if __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 1080.  But either way, modifying the old path is probably out of scope for this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691860</commentid>
    <comment_count>4</comment_count>
      <attachid>157552</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-08-09 14:33:31 -0700</bug_when>
    <thetext>Created attachment 157552
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692634</commentid>
    <comment_count>5</comment_count>
      <attachid>157752</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-08-10 09:58:04 -0700</bug_when>
    <thetext>Created attachment 157752
Patch

Fixed a logic error in setUpVideorendering()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692666</commentid>
    <comment_count>6</comment_count>
      <attachid>157752</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-08-10 10:45:15 -0700</bug_when>
    <thetext>Comment on attachment 157752
Patch

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

&gt; Source/WebCore/ChangeLog:23
&gt; +        Pull out existing the AVAssetImageGenerator into its own functions:

Nit: typo &quot;Pull out existing the ...&quot; -&gt; &quot;Pull out the existing ...&quot;

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:833
&gt; +    NSDictionary* attributes = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithUnsignedInt:k32BGRAPixelFormat], kCVPixelBufferPixelFormatTypeKey,

I assume you are using k32BGRAPixelFormat because it is the most efficient format to draw? A comment about why this is so (is that the format &lt;canvas&gt; uses?) would be helpful.

Nit: I would prefer (slightly) if we didn&apos;t use autoreleased NSObjects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692676</commentid>
    <comment_count>7</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-08-10 10:57:15 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 157752 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=157752&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:23
&gt; &gt; +        Pull out existing the AVAssetImageGenerator into its own functions:
&gt; 
&gt; Nit: typo &quot;Pull out existing the ...&quot; -&gt; &quot;Pull out the existing ...&quot;

Fixed.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:833
&gt; &gt; +    NSDictionary* attributes = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithUnsignedInt:k32BGRAPixelFormat], kCVPixelBufferPixelFormatTypeKey,
&gt; 
&gt; I assume you are using k32BGRAPixelFormat because it is the most efficient format to draw? A comment about why this is so (is that the format &lt;canvas&gt; uses?) would be helpful.

Indeed.  I&apos;ll add a comment.

&gt; Nit: I would prefer (slightly) if we didn&apos;t use autoreleased NSObjects.

I&apos;d prefer if we could use dictionary literals.  One day... (Fixed)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692836</commentid>
    <comment_count>8</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-08-10 13:13:14 -0700</bug_when>
    <thetext>Committed r125318: &lt;http://trac.webkit.org/changeset/125318&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157542</attachid>
            <date>2012-08-09 13:58:18 -0700</date>
            <delta_ts>2012-08-09 14:33:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93591-20120809135751.patch</filename>
            <type>text/plain</type>
            <size>20874</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGI5OTc3Yzk0NmRhMzY4
M2Y4ZjJmNzMwMTM5OGNkNmY1MzFjN2UxYi4uZDMyOTAwZGNhYjQzMzBmZGI0NjI2MDdiZjMyODgx
OGYzMzllZmU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTA4LTA5ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSB0aGUgbmV3IEFWUGxh
eWVySXRlbVZpZGVvT3V0cHV0IEFQSSBpbiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzU5MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQg
dGhlIG5ldyBBVlBsYXllckl0ZW1WaWRlb091dHB1dCBBUEkgZnJvbSBNb3VudGFpbiBMaW9uLCB3
aGljaCBoYXMgbXVjaCBpbmNyZWFzZWQgcGVyZm9ybWFuY2Ugb3ZlcgorICAgICAgICBBVkFzc2V0
SW1hZ2VHZW5lcmF0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOyBQZXJmb3JtYW5jZSBjaGFu
Z2Ugb25seSwgbm8gbmV0IGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIEFWUGxh
eWVySXRlbVZpZGVvT3V0cHV0IHJlcXVpcmVzIGFuIGF0dGFjaGVkIENBTGF5ZXIgZm9yIHJlbmRl
cmluZyB0byBvY2N1ci4gIE1ha2UgdGhlIHJlbmRlcmluZyBtb2RlcyBub24tZXhjbHVzaXZlLCAK
KyAgICAgICAgc28gbGF5ZXItcmVuZGVyaW5nIGFuZCBjb250ZXh0LXJlbmRlcmluZyBjYW4gZXhp
c3Qgc2ltdWx0YW5lb3VzbHk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOiBNYWtlIHRoZSBNZWRpYVJlbmRl
cmluZ01vZGUgZW51bQorICAgICAgICAgICAgYSBiaXRmaWVsZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6Y3Vy
cmVudFJlbmRlcmluZ01vZGVzKTogUmVuYW1lZCBmcm9tIGN1cnJlbnRSZW5kZXJpbmdNb2RlKCku
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNldFVw
VmlkZW9SZW5kZXJpbmcpOiBDaGVjayBmb3IgdGhlIHByZXNlbmNlIG9mIHRoZSBNZWRpYVJlbmRl
cmluZ1RvTGF5ZXIgYml0LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uOjpwcmVwYXJlRm9yUmVuZGVyaW5nKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnVwZGF0ZVN0YXRlcyk6IERpdHRvLgor
CisgICAgICAgIFB1bGwgb3V0IGV4aXN0aW5nIHRoZSBBVkFzc2V0SW1hZ2VHZW5lcmF0b3IgaW50
byBpdHMgb3duIGZ1bmN0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlSW1h
Z2VHZW5lcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6ZGVzdHJveUltYWdlR2VuZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aEltYWdlR2VuZXJhdG9y
KToKKworICAgICAgICBBZGQgbmV3IEFWUGxheWVySXRlbVZpZGVvT3V0cHV0IGVxdWl2YWxlbnQg
ZnVuY3Rpb25zOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRlb091dHB1dCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpk
ZXN0cm95VmlkZW9PdXRwdXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlUGl4ZWxCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQp
OgorCisgICAgICAgIFN3aXRjaCBiZXR3ZWVuIHRoZSBBVkFzc2V0SW1hZ2VHZW5lcmF0b3IgYW5k
IEFWUGxheWVySXRlbVZpZGVvT3V0cHV0IGZ1bmN0aW9ucyBmcm9tCisgICAgICAgIHdpdGhpbiB0
aGUgb3JpZ2luYWwgZnVuY3Rpb25zOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVD
b250ZXh0VmlkZW9SZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpkZXN0cm95Q29udGV4dFZpZGVvUmVuZGVyZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aGFzQ29udGV4
dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnBhaW50KToKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVJbWFn
ZUZvclRpbWVJblJlY3QpOiBDYWxsIHRoZSAKKyAgICAgICAgICAgIEFWQXNzZXRJbWFnZUdlbmVy
YXRvciBjcmVhdGlvbiBmdW5jdGlvbiBkaXJlY3RseS4KKwogMjAxMi0wOC0wOCAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCBiYWNraW5nIHN0
b3JlIG9uIGxheWVycyBjcmVhdGVkIGZvciBDb3JlQW5pbWF0aW9uIHBsdWdpbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKaW5k
ZXggNmUxOTk5Mjc3NGYxNzlmNzU1YzE4NjZmNmUwNWE2NzA4ZmU3MTc1NS4uNDZhZWFmMTE5YzFm
NGZkYTJhYTkwM2MwZjMwNGNlY2M4YzU2OTAxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTgzLDE3ICs4MywxOCBA
QCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246On5NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24oKQogICAgIGNhbmNlbENhbGxPbk1haW5UaHJlYWQobWFpblRocmVhZENhbGxiYWNr
LCB0aGlzKTsKIH0KIAotTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpNZWRpYVJlbmRl
cmluZ01vZGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpjdXJyZW50UmVuZGVyaW5n
TW9kZSgpIGNvbnN0CitNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246Ok1lZGlhUmVuZGVy
aW5nTW9kZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmN1cnJlbnRSZW5kZXJpbmdN
b2RlcygpIGNvbnN0CiB7CisgICAgTWVkaWFSZW5kZXJpbmdNb2RlIG1vZGVzID0gTWVkaWFSZW5k
ZXJpbmdOb25lOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBpZiAocGxh
dGZvcm1MYXllcigpKQotICAgICAgICByZXR1cm4gTWVkaWFSZW5kZXJpbmdUb0xheWVyOworICAg
ICAgICBtb2RlcyB8PSBNZWRpYVJlbmRlcmluZ1RvTGF5ZXI7CiAjZW5kaWYKIAogICAgIGlmICho
YXNDb250ZXh0UmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhUmVuZGVyaW5nVG9Db250
ZXh0OworICAgICAgICBtb2RlcyB8PSBNZWRpYVJlbmRlcmluZ1RvQ29udGV4dDsKIAotICAgIHJl
dHVybiBNZWRpYVJlbmRlcmluZ05vbmU7CisgICAgcmV0dXJuIG1vZGVzOwogfQogCiBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb246Ok1lZGlhUmVuZGVyaW5nTW9kZSBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb246OnByZWZlcnJlZFJlbmRlcmluZ01vZGUoKSBjb25zdApAQCAtMTE0
LDE5ICsxMTUsMTUgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNldFVw
VmlkZW9SZW5kZXJpbmcoKQogICAgIGlmICghaXNSZWFkeUZvclZpZGVvU2V0dXAoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgTWVkaWFSZW5kZXJpbmdNb2RlIGN1cnJlbnRNb2RlID0gY3VycmVu
dFJlbmRlcmluZ01vZGUoKTsKKyAgICBNZWRpYVJlbmRlcmluZ01vZGUgY3VycmVudE1vZGVzID0g
Y3VycmVudFJlbmRlcmluZ01vZGVzKCk7CiAgICAgTWVkaWFSZW5kZXJpbmdNb2RlIHByZWZlcnJl
ZE1vZGUgPSBwcmVmZXJyZWRSZW5kZXJpbmdNb2RlKCk7Ci0gICAgaWYgKGN1cnJlbnRNb2RlID09
IHByZWZlcnJlZE1vZGUgJiYgY3VycmVudE1vZGUgIT0gTWVkaWFSZW5kZXJpbmdOb25lKQorICAg
IGlmIChjdXJyZW50TW9kZXMgJiBwcmVmZXJyZWRNb2RlICYmIGN1cnJlbnRNb2RlcyAhPSBNZWRp
YVJlbmRlcmluZ05vbmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhNZWRpYSwgIk1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2V0VXBWaWRlb1JlbmRlcmluZyglcCkgLSBjdXJy
ZW50IG1vZGUgPSAlZCwgcHJlZmVycmVkIG1vZGUgPSAlZCIsIAotICAgICAgICB0aGlzLCBzdGF0
aWNfY2FzdDxpbnQ+KGN1cnJlbnRNb2RlKSwgc3RhdGljX2Nhc3Q8aW50PihwcmVmZXJyZWRNb2Rl
KSk7Ci0KLSAgICBpZiAoY3VycmVudE1vZGUgIT0gTWVkaWFSZW5kZXJpbmdOb25lKSAgCi0gICAg
ICAgIHRlYXJEb3duVmlkZW9SZW5kZXJpbmcoKTsKKyAgICBMT0coTWVkaWEsICJNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb246OnNldFVwVmlkZW9SZW5kZXJpbmcoJXApIC0gY3VycmVudCBt
b2RlcyA9IDB4JXgsIHByZWZlcnJlZCBtb2RlID0gMHgleCIsIAorICAgICAgICB0aGlzLCBzdGF0
aWNfY2FzdDxpbnQ+KGN1cnJlbnRNb2RlcyksIHN0YXRpY19jYXN0PGludD4ocHJlZmVycmVkTW9k
ZSkpOwogCiAgICAgc3dpdGNoIChwcmVmZXJyZWRNb2RlKSB7Ci0gICAgY2FzZSBNZWRpYVJlbmRl
cmluZ05vbmU6CiAgICAgY2FzZSBNZWRpYVJlbmRlcmluZ1RvQ29udGV4dDoKICAgICAgICAgY3Jl
YXRlQ29udGV4dFZpZGVvUmVuZGVyZXIoKTsKICAgICAgICAgYnJlYWs7CkBAIC0xMzYsMTEgKzEz
MywxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2V0VXBWaWRlb1Jl
bmRlcmluZygpCiAgICAgICAgIGNyZWF0ZVZpZGVvTGF5ZXIoKTsKICAgICAgICAgYnJlYWs7CiAj
ZW5kaWYKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKICAgICB9CiAKICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgLy8gSWYgdXNpbmcgYSBtb3ZpZSBsYXllciwgaW5m
b3JtIHRoZSBjbGllbnQgc28gdGhlIGNvbXBvc2l0aW5nIHRyZWUgaXMgdXBkYXRlZC4KLSAgICBp
ZiAoY3VycmVudE1vZGUgPT0gTWVkaWFSZW5kZXJpbmdUb0xheWVyIHx8IHByZWZlcnJlZE1vZGUg
PT0gTWVkaWFSZW5kZXJpbmdUb0xheWVyKSB7CisgICAgaWYgKGN1cnJlbnRNb2RlcyAmIE1lZGlh
UmVuZGVyaW5nVG9MYXllciB8fCBwcmVmZXJyZWRNb2RlID09IE1lZGlhUmVuZGVyaW5nVG9MYXll
cikgewogICAgICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246
OnNldFVwVmlkZW9SZW5kZXJpbmcoJXApIC0gY2FsbGluZyBtZWRpYVBsYXllclJlbmRlcmluZ01v
ZGVDaGFuZ2VkKCkiLCB0aGlzKTsKICAgICAgICAgbV9wbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50
KCktPm1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQobV9wbGF5ZXIpOwogICAgIH0KQEAg
LTM5NCw3ICszOTMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6cHJl
cGFyZUZvclJlbmRlcmluZygpCiAKICAgICBzZXRVcFZpZGVvUmVuZGVyaW5nKCk7CiAKLSAgICBp
ZiAoY3VycmVudFJlbmRlcmluZ01vZGUoKSA9PSBNZWRpYVJlbmRlcmluZ1RvTGF5ZXIgfHwgcHJl
ZmVycmVkUmVuZGVyaW5nTW9kZSgpID09IE1lZGlhUmVuZGVyaW5nVG9MYXllcikKKyAgICBpZiAo
Y3VycmVudFJlbmRlcmluZ01vZGVzKCkgJiBNZWRpYVJlbmRlcmluZ1RvTGF5ZXIgfHwgcHJlZmVy
cmVkUmVuZGVyaW5nTW9kZSgpID09IE1lZGlhUmVuZGVyaW5nVG9MYXllcikKICAgICAgICAgbV9w
bGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5n
ZWQobV9wbGF5ZXIpOwogfQogCkBAIC00ODQsNyArNDgzLDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb246OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBpZiAoaXNSZWFkeUZvclZpZGVvU2V0dXAoKSAmJiBjdXJyZW50UmVuZGVyaW5nTW9kZSgpICE9
IHByZWZlcnJlZFJlbmRlcmluZ01vZGUoKSkKKyAgICBpZiAoaXNSZWFkeUZvclZpZGVvU2V0dXAo
KSAmJiBjdXJyZW50UmVuZGVyaW5nTW9kZXMoKSAmIHByZWZlcnJlZFJlbmRlcmluZ01vZGUoKSkK
ICAgICAgICAgc2V0VXBWaWRlb1JlbmRlcmluZygpOwogCiAgICAgaWYgKCFtX2hhdmVSZXBvcnRl
ZEZpcnN0VmlkZW9GcmFtZSAmJiBtX2NhY2hlZEhhc1ZpZGVvICYmIGhhc0F2YWlsYWJsZVZpZGVv
RnJhbWUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbi5oCmluZGV4IGI3YzNiMzlhZmMzODAzNGQ0ZjVkZDhiYzViZDNjN2VjMGJkMzVm
YjUuLmQ1Njc3ZTE5ODFiMGVhYzZhMDc3OGEwMzllNzRiMTAzYmI0MDUxMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKQEAgLTIy
Myw4ICsyMjMsMTMgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0TmF0dXJhbFNpemUoSW50U2l6
ZSk7CiAgICAgYm9vbCBpc0xpdmVTdHJlYW0oKSBjb25zdCB7IHJldHVybiBpc2luZihkdXJhdGlv
bigpKTsgfQogCi0gICAgZW51bSBNZWRpYVJlbmRlcmluZ01vZGUgeyBNZWRpYVJlbmRlcmluZ05v
bmUsIE1lZGlhUmVuZGVyaW5nVG9Db250ZXh0LCBNZWRpYVJlbmRlcmluZ1RvTGF5ZXIgfTsKLSAg
ICBNZWRpYVJlbmRlcmluZ01vZGUgY3VycmVudFJlbmRlcmluZ01vZGUoKSBjb25zdDsKKyAgICBl
bnVtIHsKKyAgICAgICAgTWVkaWFSZW5kZXJpbmdOb25lID0gMCwKKyAgICAgICAgTWVkaWFSZW5k
ZXJpbmdUb0NvbnRleHQgPSAxIDw8IDEsCisgICAgICAgIE1lZGlhUmVuZGVyaW5nVG9MYXllciA9
IDEgPDwgMiwKKyAgICB9OworICAgIHR5cGVkZWYgdWludDMyX3QgTWVkaWFSZW5kZXJpbmdNb2Rl
OworICAgIE1lZGlhUmVuZGVyaW5nTW9kZSBjdXJyZW50UmVuZGVyaW5nTW9kZXMoKSBjb25zdDsK
ICAgICBNZWRpYVJlbmRlcmluZ01vZGUgcHJlZmVycmVkUmVuZGVyaW5nTW9kZSgpIGNvbnN0Owog
CiAgICAgYm9vbCBtZXRhRGF0YUF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZHlTdGF0
ZSA+PSBNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5k
ZXggZTVjZmNiNDQ1ZmZhNGE5MTRjODgyZGZmMjdiNTRmNGU2ZTQ3NTc4Yi4uMGZlNjEzMWQ2YzA5
ODRhNGU5MWMxMzAyZDVmODc3NTllOTBjNTRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAt
MzMsNiArMzMsNyBAQAogT0JKQ19DTEFTUyBBVkFzc2V0OwogT0JKQ19DTEFTUyBBVlBsYXllcjsK
IE9CSkNfQ0xBU1MgQVZQbGF5ZXJJdGVtOworT0JKQ19DTEFTUyBBVlBsYXllckl0ZW1WaWRlb091
dHB1dDsKIE9CSkNfQ0xBU1MgQVZQbGF5ZXJMYXllcjsKIE9CSkNfQ0xBU1MgQVZBc3NldEltYWdl
R2VuZXJhdG9yOwogT0JKQ19DTEFTUyBXZWJDb3JlQVZGTW92aWVPYnNlcnZlcjsKQEAgLTQyLDYg
KzQzLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QgKmlkOwogI2VuZGlmCiAKIHR5cGVk
ZWYgc3RydWN0IENHSW1hZ2UgKkNHSW1hZ2VSZWY7Cit0eXBlZGVmIHN0cnVjdCBfX0NWQnVmZmVy
ICpDVlBpeGVsQnVmZmVyUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTExMCw3ICsx
MTIsMTcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9y
aWdpbigpIGNvbnN0OwogCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEw
ODAKKyAgICB2b2lkIGNyZWF0ZUltYWdlR2VuZXJhdG9yKCk7CisgICAgdm9pZCBkZXN0cm95SW1h
Z2VHZW5lcmF0b3IoKTsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlSW1hZ2VGb3JU
aW1lSW5SZWN0KGZsb2F0LCBjb25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCBwYWludFdpdGhJbWFn
ZUdlbmVyYXRvcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7CisjZWxzZQorICAg
IHZvaWQgY3JlYXRlVmlkZW9PdXRwdXQoKTsKKyAgICB2b2lkIGRlc3Ryb3lWaWRlb091dHB1dCgp
OworICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBjcmVhdGVQaXhlbEJ1ZmZlcigpOwor
ICAgIHZvaWQgcGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50
UmVjdCYpOworI2VuZGlmCiAKICAgICBNZWRpYVBsYXllciogbV9wbGF5ZXI7CiAgICAgUmV0YWlu
UHRyPEFWQXNzZXQ+IG1fYXZBc3NldDsKQEAgLTExOCwxMCArMTMwLDE2IEBAIHByaXZhdGU6CiAg
ICAgUmV0YWluUHRyPEFWUGxheWVySXRlbT4gbV9hdlBsYXllckl0ZW07CiAgICAgUmV0YWluUHRy
PEFWUGxheWVyTGF5ZXI+IG1fdmlkZW9MYXllcjsKICAgICBSZXRhaW5QdHI8V2ViQ29yZUFWRk1v
dmllT2JzZXJ2ZXI+IG1fb2JqY09ic2VydmVyOwotICAgIFJldGFpblB0cjxBVkFzc2V0SW1hZ2VH
ZW5lcmF0b3I+IG1faW1hZ2VHZW5lcmF0b3I7CiAgICAgUmV0YWluUHRyPGlkPiBtX3RpbWVPYnNl
cnZlcjsKICAgICBib29sIG1fdmlkZW9GcmFtZUhhc0RyYXduOwogICAgIGJvb2wgbV9oYXZlQ2hl
Y2tlZFBsYXlhYmlsaXR5OworCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8
IDEwODAKKyAgICBSZXRhaW5QdHI8QVZBc3NldEltYWdlR2VuZXJhdG9yPiBtX2ltYWdlR2VuZXJh
dG9yOworI2Vsc2UKKyAgICBSZXRhaW5QdHI8QVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQ+IG1fdmlk
ZW9PdXRwdXQ7CisgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IG1fbGFzdEltYWdlOwor
I2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA1OWE3MmY3ODk1ZDlj
ZTY2NDA3NmZjOGRkYTJjYmQwNDBlMTJlMDgwLi4wMTE3MWQxZDQzMTUzYWFhZDFkMTNkNGQ2NWI1
MWE1ZjVkNDc3NDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTU2LDYgKzU2LDcgQEAg
U09GVF9MSU5LKENvcmVNZWRpYSwgQ01UaW1lUmFuZ2VHZXRFbmQsIENNVGltZSwgKENNVGltZVJh
bmdlIHJhbmdlKSwgKHJhbmdlKSkKIAogU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZQ
bGF5ZXIpCiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW0pCitTT0ZU
X0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW1WaWRlb091dHB1dCkKIFNPRlRf
TElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWUGxheWVyTGF5ZXIpCiBTT0ZUX0xJTktfQ0xBU1Mo
QVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0KQogU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwg
QVZBc3NldEltYWdlR2VuZXJhdG9yKQpAQCAtNzMsNiArNzQsNyBAQCBTT0ZUX0xJTktfQ09OU1RB
TlQoQ29yZU1lZGlhLCBrQ01UaW1lWmVybywgQ01UaW1lKQogCiAjZGVmaW5lIEFWUGxheWVyIGdl
dEFWUGxheWVyQ2xhc3MoKQogI2RlZmluZSBBVlBsYXllckl0ZW0gZ2V0QVZQbGF5ZXJJdGVtQ2xh
c3MoKQorI2RlZmluZSBBVlBsYXllckl0ZW1WaWRlb091dHB1dCBnZXRBVlBsYXllckl0ZW1WaWRl
b091dHB1dENsYXNzKCkKICNkZWZpbmUgQVZQbGF5ZXJMYXllciBnZXRBVlBsYXllckxheWVyQ2xh
c3MoKQogI2RlZmluZSBBVlVSTEFzc2V0IGdldEFWVVJMQXNzZXRDbGFzcygpCiAjZGVmaW5lIEFW
QXNzZXRJbWFnZUdlbmVyYXRvciBnZXRBVkFzc2V0SW1hZ2VHZW5lcmF0b3JDbGFzcygpCkBAIC0x
ODMsMzQgKzE4NSwyOSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
Omhhc0xheWVyUmVuZGVyZXIoKSBjb25zdAogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6Omhhc0NvbnRleHRSZW5kZXJlcigpIGNvbnN0CiB7CisjaWYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDgwCisgICAgcmV0dXJuIG1fdmlkZW9PdXRwdXQ7
CisjZWxzZQogICAgIHJldHVybiBtX2ltYWdlR2VuZXJhdG9yOworI2VuZGlmCiB9CiAKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQ29udGV4dFZpZGVvUmVu
ZGVyZXIoKQogewotICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OmNyZWF0ZUNvbnRleHRWaWRlb1JlbmRlcmVyKCVwKSIsIHRoaXMpOwotCi0gICAgaWYg
KCFtX2F2QXNzZXQgfHwgbV9pbWFnZUdlbmVyYXRvcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
bV9pbWFnZUdlbmVyYXRvciA9IFtBVkFzc2V0SW1hZ2VHZW5lcmF0b3IgYXNzZXRJbWFnZUdlbmVy
YXRvcldpdGhBc3NldDptX2F2QXNzZXQuZ2V0KCldOwotCi0gICAgW21faW1hZ2VHZW5lcmF0b3Iu
Z2V0KCkgc2V0QXBlcnR1cmVNb2RlOkFWQXNzZXRJbWFnZUdlbmVyYXRvckFwZXJ0dXJlTW9kZUNs
ZWFuQXBlcnR1cmVdOwotICAgIFttX2ltYWdlR2VuZXJhdG9yLmdldCgpIHNldEFwcGxpZXNQcmVm
ZXJyZWRUcmFja1RyYW5zZm9ybTpZRVNdOwotICAgIFttX2ltYWdlR2VuZXJhdG9yLmdldCgpIHNl
dFJlcXVlc3RlZFRpbWVUb2xlcmFuY2VCZWZvcmU6a0NNVGltZVplcm9dOwotICAgIFttX2ltYWdl
R2VuZXJhdG9yLmdldCgpIHNldFJlcXVlc3RlZFRpbWVUb2xlcmFuY2VBZnRlcjprQ01UaW1lWmVy
b107Ci0KLSAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpjcmVhdGVJbWFnZUdlbmVyYXRvciglcCkgLSByZXR1cm5pbmcgJXAiLCB0aGlzLCBtX2ltYWdl
R2VuZXJhdG9yLmdldCgpKTsKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwODAKKyAgICBjcmVhdGVWaWRlb091dHB1dCgpOworI2Vsc2UKKyAgICBjcmVhdGVJbWFnZUdl
bmVyYXRvcigpOworI2VuZGlmCiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6ZGVzdHJveUNvbnRleHRWaWRlb1JlbmRlcmVyKCkKIHsKLSAgICBpZiAoIW1faW1h
Z2VHZW5lcmF0b3IpCi0gICAgICAgIHJldHVybjsKLQotICAgIExPRyhNZWRpYSwgIk1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRlc3Ryb3lDb250ZXh0VmlkZW9SZW5kZXJlcigl
cCkgLSBkZXN0cm95aW5nICAlcCIsIHRoaXMsIG1faW1hZ2VHZW5lcmF0b3IuZ2V0KCkpOwotCi0g
ICAgbV9pbWFnZUdlbmVyYXRvciA9IDA7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDgwCisgICAgZGVzdHJveVZpZGVvT3V0cHV0KCk7CisjZWxzZQorICAgIGRlc3Ry
b3lJbWFnZUdlbmVyYXRvcigpOworI2VuZGlmCiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9MYXllcigpCkBAIC02MTEsMTYgKzYwOCwxMSBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgSQogICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwog
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBpbWFnZSA9IGNyZWF0ZUltYWdlRm9yVGltZUluUmVjdChjdXJyZW50VGltZSgpLCByZWN0
KTsKLSAgICBpZiAoaW1hZ2UpIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKHJlY3QueCgp
LCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkpOwotICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9h
dFNpemUoMS4wZiwgLTEuMGYpKTsKLSAgICAgICAgY29udGV4dC0+c2V0SW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uTG93KTsKLSAgICAgICAgSW50UmVjdCBwYWludFJlY3Qo
SW50UG9pbnQoMCwgMCksIEludFNpemUocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKSk7Ci0g
ICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dS
ZWN0TWFrZSgwLCAwLCBwYWludFJlY3Qud2lkdGgoKSwgcGFpbnRSZWN0LmhlaWdodCgpKSwgaW1h
Z2UuZ2V0KCkpOwotICAgICAgICBpbWFnZSA9IDA7Ci0gICAgfQorI2lmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA4MAorICAgIHBhaW50V2l0aFZpZGVvT3V0cHV0KGNvbnRl
eHQsIHJlY3QpOworI2Vsc2UKKyAgICBwYWludFdpdGhJbWFnZUdlbmVyYXRvcihjb250ZXh0LCBy
ZWN0KTsKKyNlbmRpZgogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKICAgICBzZXRE
ZWxheUNhbGxiYWNrcyhmYWxzZSk7CkBAIC02NDQsMjcgKzYzNiw2IEBAIHN0YXRpYyBIYXNoU2V0
PFN0cmluZz4gbWltZVR5cGVDYWNoZSgpCiAgICAgcmV0dXJuIGNhY2hlOwogfSAKIAotUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0
ZUltYWdlRm9yVGltZUluUmVjdChmbG9hdCB0aW1lLCBjb25zdCBJbnRSZWN0JiByZWN0KQotewot
ICAgIGlmICghbV9pbWFnZUdlbmVyYXRvcikKLSAgICAgICAgY3JlYXRlQ29udGV4dFZpZGVvUmVu
ZGVyZXIoKTsKLSAgICBBU1NFUlQobV9pbWFnZUdlbmVyYXRvcik7Ci0KLSNpZiAhTE9HX0RJU0FC
TEVECi0gICAgZG91YmxlIHN0YXJ0ID0gV1RGOjpjdXJyZW50VGltZSgpOwotI2VuZGlmCi0KLSAg
ICBbbV9pbWFnZUdlbmVyYXRvci5nZXQoKSBzZXRNYXhpbXVtU2l6ZTpDR1NpemUocmVjdC5zaXpl
KCkpXTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBhZG9wdENGKFttX2ltYWdl
R2VuZXJhdG9yLmdldCgpIGNvcHlDR0ltYWdlQXRUaW1lOkNNVGltZU1ha2VXaXRoU2Vjb25kcyh0
aW1lLCA2MDApIGFjdHVhbFRpbWU6bmlsIGVycm9yOm5pbF0pOwotCi0jaWYgIUxPR19ESVNBQkxF
RAotICAgIGRvdWJsZSBkdXJhdGlvbiA9IFdURjo6Y3VycmVudFRpbWUoKSAtIHN0YXJ0OwotICAg
IExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUlt
YWdlRm9yVGltZUluUmVjdCglcCkgLSBjcmVhdGluZyBpbWFnZSB0b29rICUuNGYiLCB0aGlzLCBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGR1cmF0aW9uKSk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBp
bWFnZTsKLX0KLQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpnZXRT
dXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4mIHN1cHBvcnRlZFR5cGVzKQogewogICAgIHN1
cHBvcnRlZFR5cGVzID0gbWltZVR5cGVDYWNoZSgpOwpAQCAtNzgxLDYgKzc1MiwxNDQgQEAgYm9v
bCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpoYXNTaW5nbGVTZWN1cml0eU9y
aWdpbigpIGNvbnN0CiAgICAgcmV0dXJuIHJlc29sdmVkT3JpZ2luLT5pc1NhbWVTY2hlbWVIb3N0
UG9ydChyZXF1ZXN0ZWRPcmlnaW4uZ2V0KCkpOwogfQogCisjaWYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDgwCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OmNyZWF0ZVZpZGVvT3V0cHV0KCkKK3sKKyAgICBMT0coTWVkaWEsICJNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRlb091dHB1dCglcCkiLCB0aGlzKTsK
KworICAgIGlmICghbV9hdlBsYXllckl0ZW0gfHwgbV92aWRlb091dHB1dCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgTlNEaWN0aW9uYXJ5KiBhdHRyaWJ1dGVzID0gW05TRGljdGlvbmFyeSBkaWN0
aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6
azMyQkdSQVBpeGVsRm9ybWF0XSwga0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07CisgICAgbV92aWRlb091dHB1dC5h
ZG9wdE5TKFtbQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQgYWxsb2NdIGluaXRXaXRoUGl4ZWxCdWZm
ZXJBdHRyaWJ1dGVzOmF0dHJpYnV0ZXNdKTsKKyAgICBBU1NFUlQobV92aWRlb091dHB1dCk7CisK
KyAgICBbbV9hdlBsYXllckl0ZW0uZ2V0KCkgYWRkT3V0cHV0Om1fdmlkZW9PdXRwdXQuZ2V0KCld
OworCisgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
Y3JlYXRlVmlkZW9PdXRwdXQoJXApIC0gcmV0dXJuaW5nICVwIiwgdGhpcywgbV92aWRlb091dHB1
dC5nZXQoKSk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
ZGVzdHJveVZpZGVvT3V0cHV0KCkKK3sKKyAgICBpZiAoIW1fdmlkZW9PdXRwdXQpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChtX2F2UGxheWVySXRlbSkKKyAgICAgICAgW21fYXZQbGF5ZXJJ
dGVtLmdldCgpIHJlbW92ZU91dHB1dDptX3ZpZGVvT3V0cHV0LmdldCgpXTsKKyAgICBMT0coTWVk
aWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpkZXN0cm95VmlkZW9PdXRw
dXQoJXApIC0gZGVzdHJveWluZyAgJXAiLCB0aGlzLCBtX3ZpZGVvT3V0cHV0LmdldCgpKTsKKwor
ICAgIG1fdmlkZW9PdXRwdXQgPSAwOworfQorCitSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4g
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlUGl4ZWxCdWZmZXIoKQor
eworICAgIGlmICghbV92aWRlb091dHB1dCkKKyAgICAgICAgY3JlYXRlVmlkZW9PdXRwdXQoKTsK
KyAgICBBU1NFUlQobV92aWRlb091dHB1dCk7CisKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgZG91
YmxlIHN0YXJ0ID0gV1RGOjpjdXJyZW50VGltZSgpOworI2VuZGlmCisKKyAgICBSZXRhaW5QdHI8
Q1ZQaXhlbEJ1ZmZlclJlZj4gYnVmZmVyID0gYWRvcHRDRihbbV92aWRlb091dHB1dC5nZXQoKSBj
b3B5UGl4ZWxCdWZmZXJGb3JJdGVtVGltZTpbbV9hdlBsYXllckl0ZW0uZ2V0KCkgY3VycmVudFRp
bWVdIGl0ZW1UaW1lRm9yRGlzcGxheTpuaWxdKTsKKworI2lmICFMT0dfRElTQUJMRUQKKyAgICBk
b3VibGUgZHVyYXRpb24gPSBXVEY6OmN1cnJlbnRUaW1lKCkgLSBzdGFydDsKKyAgICBMT0coTWVk
aWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVQaXhlbEJ1ZmZl
cigpIC0gY3JlYXRpbmcgYnVmZmVyIHRvb2sgJS40ZiIsIHRoaXMsIG5hcnJvd1ByZWNpc2lvblRv
RmxvYXQoZHVyYXRpb24pKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKwordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1
dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAg
UmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHBpeGVsQnVmZmVyID0gY3JlYXRlUGl4ZWxCdWZm
ZXIoKTsKKworICAgIC8vIENhbGxzIHRvIGNvcHlQaXhlbEJ1ZmZlckZvckl0ZW1UaW1lOml0ZW1U
aW1lRm9yRGlzcGxheTogbWF5IHJldHVybiBuaWwgaWYgdGhlIHBpeGVsIGJ1ZmZlcgorICAgIC8v
IGZvciB0aGUgcmVxdWVzdGVkIHRpbWUgaGFzIGFscmVhZHkgYmVlbiByZXRyaWV2ZWQuIEluIHRo
aXMgY2FzZSwgdGhlIGxhc3QgdmFsaWQgaW1hZ2UgKGlmIGFueSkKKyAgICAvLyBzaG91bGQgYmUg
ZGlzcGxheWVkLgorICAgIGlmIChwaXhlbEJ1ZmZlcikKKyAgICAgICAgbV9sYXN0SW1hZ2UgPSBw
aXhlbEJ1ZmZlcjsKKworICAgIGlmIChtX2xhc3RJbWFnZSkgeworICAgICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOworICAgICAgICBjb250ZXh0LT50
cmFuc2xhdGUocmVjdC54KCksIHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSk7CisgICAgICAgIGNv
bnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgxLjBmLCAtMS4wZikpOworICAgICAgICBSZXRhaW5QdHI8
Q0lJbWFnZT4gaW1hZ2UoQWRvcHROUywgW1tDSUltYWdlIGFsbG9jXSBpbml0V2l0aENWSW1hZ2VC
dWZmZXI6bV9sYXN0SW1hZ2UuZ2V0KCldKTsKKworICAgICAgICAvLyBjaUNvbnRleHQgZG9lcyBu
b3QgdXNlIGEgUmV0YWluUHRyIGZvciByZXN1bHRzIG9mIGNvbnRleHRXaXRoQ0dDb250ZXh0Oiwg
YXMgdGhlIHJldHVybmVkIHZhbHVlCisgICAgICAgIC8vIGlzIGF1dG9yZWxlYXNlZCwgYW5kIHRo
ZXJlIGlzIG5vIG5vbi1hdXRvcmVsZWFzZWQgdmVyc2lvbiBvZiB0aGF0IGZ1bmN0aW9uLgorICAg
ICAgICBDSUNvbnRleHQqIGNpQ29udGV4dCA9IFtDSUNvbnRleHQgY29udGV4dFdpdGhDR0NvbnRl
eHQ6Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkgb3B0aW9uczpuaWxdOworICAgICAgICBbY2lD
b250ZXh0IGRyYXdJbWFnZTppbWFnZS5nZXQoKSBpblJlY3Q6cmVjdCBmcm9tUmVjdDpyZWN0XTsK
KyAgICB9Cit9CisKKyNlbHNlCisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6Y3JlYXRlSW1hZ2VHZW5lcmF0b3IoKQoreworICAgIExPRyhNZWRpYSwgIk1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUltYWdlR2VuZXJhdG9yKCVwKSIsIHRo
aXMpOworCisgICAgaWYgKCFtX2F2QXNzZXQgfHwgbV9pbWFnZUdlbmVyYXRvcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9pbWFnZUdlbmVyYXRvciA9IFtBVkFzc2V0SW1hZ2VHZW5lcmF0b3Ig
YXNzZXRJbWFnZUdlbmVyYXRvcldpdGhBc3NldDptX2F2QXNzZXQuZ2V0KCldOworCisgICAgW21f
aW1hZ2VHZW5lcmF0b3IuZ2V0KCkgc2V0QXBlcnR1cmVNb2RlOkFWQXNzZXRJbWFnZUdlbmVyYXRv
ckFwZXJ0dXJlTW9kZUNsZWFuQXBlcnR1cmVdOworICAgIFttX2ltYWdlR2VuZXJhdG9yLmdldCgp
IHNldEFwcGxpZXNQcmVmZXJyZWRUcmFja1RyYW5zZm9ybTpZRVNdOworICAgIFttX2ltYWdlR2Vu
ZXJhdG9yLmdldCgpIHNldFJlcXVlc3RlZFRpbWVUb2xlcmFuY2VCZWZvcmU6a0NNVGltZVplcm9d
OworICAgIFttX2ltYWdlR2VuZXJhdG9yLmdldCgpIHNldFJlcXVlc3RlZFRpbWVUb2xlcmFuY2VB
ZnRlcjprQ01UaW1lWmVyb107CisKKyAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpjcmVhdGVJbWFnZUdlbmVyYXRvciglcCkgLSByZXR1cm5pbmcgJXAi
LCB0aGlzLCBtX2ltYWdlR2VuZXJhdG9yLmdldCgpKTsKK30KKwordm9pZCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpkZXN0cm95SW1hZ2VHZW5lcmF0b3IoKQoreworICAgIGlm
ICghbV9pbWFnZUdlbmVyYXRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgTE9HKE1lZGlhLCAi
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZGVzdHJveUltYWdlR2VuZXJhdG9y
KCVwKSAtIGRlc3Ryb3lpbmcgICVwIiwgdGhpcywgbV9pbWFnZUdlbmVyYXRvci5nZXQoKSk7CisK
KyAgICBtX2ltYWdlR2VuZXJhdG9yID0gMDsKK30KKworUmV0YWluUHRyPENHSW1hZ2VSZWY+IE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUltYWdlRm9yVGltZUluUmVj
dChmbG9hdCB0aW1lLCBjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIGlmICghbV9pbWFnZUdl
bmVyYXRvcikKKyAgICAgICAgY3JlYXRlSW1hZ2VHZW5lcmF0b3IoKTsKKyAgICBBU1NFUlQobV9p
bWFnZUdlbmVyYXRvcik7CisKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgZG91YmxlIHN0YXJ0ID0g
V1RGOjpjdXJyZW50VGltZSgpOworI2VuZGlmCisKKyAgICBbbV9pbWFnZUdlbmVyYXRvci5nZXQo
KSBzZXRNYXhpbXVtU2l6ZTpDR1NpemUocmVjdC5zaXplKCkpXTsKKyAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gaW1hZ2UgPSBhZG9wdENGKFttX2ltYWdlR2VuZXJhdG9yLmdldCgpIGNvcHlDR0lt
YWdlQXRUaW1lOkNNVGltZU1ha2VXaXRoU2Vjb25kcyh0aW1lLCA2MDApIGFjdHVhbFRpbWU6bmls
IGVycm9yOm5pbF0pOworCisjaWYgIUxPR19ESVNBQkxFRAorICAgIGRvdWJsZSBkdXJhdGlvbiA9
IFdURjo6Y3VycmVudFRpbWUoKSAtIHN0YXJ0OworICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUltYWdlRm9yVGltZUluUmVjdCglcCkgLSBj
cmVhdGluZyBpbWFnZSB0b29rICUuNGYiLCB0aGlzLCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGR1
cmF0aW9uKSk7CisjZW5kaWYKKworICAgIHJldHVybiBpbWFnZTsKK30KKwordm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhJbWFnZUdlbmVyYXRvcihHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IGltYWdlID0gY3JlYXRlSW1hZ2VGb3JUaW1lSW5SZWN0KGN1cnJlbnRU
aW1lKCksIHJlY3QpOworICAgIGlmIChpbWFnZSkgeworICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOworICAgICAgICBjb250ZXh0LT50cmFuc2xh
dGUocmVjdC54KCksIHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSk7CisgICAgICAgIGNvbnRleHQt
PnNjYWxlKEZsb2F0U2l6ZSgxLjBmLCAtMS4wZikpOworICAgICAgICBjb250ZXh0LT5zZXRJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25Mb3cpOworICAgICAgICBJbnRSZWN0
IHBhaW50UmVjdChJbnRQb2ludCgwLCAwKSwgSW50U2l6ZShyZWN0LndpZHRoKCksIHJlY3QuaGVp
Z2h0KCkpKTsKKyAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAsIHBhaW50UmVjdC53aWR0aCgpLCBwYWludFJlY3QuaGVp
Z2h0KCkpLCBpbWFnZS5nZXQoKSk7CisgICAgICAgIGltYWdlID0gMDsKKyAgICB9Cit9CisjZW5k
aWYKKwogTlNBcnJheSogYXNzZXRNZXRhZGF0YUtleU5hbWVzKCkKIHsKICAgICBzdGF0aWMgTlNB
cnJheSoga2V5czsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157552</attachid>
            <date>2012-08-09 14:33:31 -0700</date>
            <delta_ts>2012-08-10 09:58:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93591-20120809143304.patch</filename>
            <type>text/plain</type>
            <size>18385</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGI5OTc3Yzk0NmRhMzY4
M2Y4ZjJmNzMwMTM5OGNkNmY1MzFjN2UxYi4uZDMyOTAwZGNhYjQzMzBmZGI0NjI2MDdiZjMyODgx
OGYzMzllZmU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTA4LTA5ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSB0aGUgbmV3IEFWUGxh
eWVySXRlbVZpZGVvT3V0cHV0IEFQSSBpbiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzU5MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQg
dGhlIG5ldyBBVlBsYXllckl0ZW1WaWRlb091dHB1dCBBUEkgZnJvbSBNb3VudGFpbiBMaW9uLCB3
aGljaCBoYXMgbXVjaCBpbmNyZWFzZWQgcGVyZm9ybWFuY2Ugb3ZlcgorICAgICAgICBBVkFzc2V0
SW1hZ2VHZW5lcmF0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOyBQZXJmb3JtYW5jZSBjaGFu
Z2Ugb25seSwgbm8gbmV0IGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIEFWUGxh
eWVySXRlbVZpZGVvT3V0cHV0IHJlcXVpcmVzIGFuIGF0dGFjaGVkIENBTGF5ZXIgZm9yIHJlbmRl
cmluZyB0byBvY2N1ci4gIE1ha2UgdGhlIHJlbmRlcmluZyBtb2RlcyBub24tZXhjbHVzaXZlLCAK
KyAgICAgICAgc28gbGF5ZXItcmVuZGVyaW5nIGFuZCBjb250ZXh0LXJlbmRlcmluZyBjYW4gZXhp
c3Qgc2ltdWx0YW5lb3VzbHk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOiBNYWtlIHRoZSBNZWRpYVJlbmRl
cmluZ01vZGUgZW51bQorICAgICAgICAgICAgYSBiaXRmaWVsZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6Y3Vy
cmVudFJlbmRlcmluZ01vZGVzKTogUmVuYW1lZCBmcm9tIGN1cnJlbnRSZW5kZXJpbmdNb2RlKCku
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNldFVw
VmlkZW9SZW5kZXJpbmcpOiBDaGVjayBmb3IgdGhlIHByZXNlbmNlIG9mIHRoZSBNZWRpYVJlbmRl
cmluZ1RvTGF5ZXIgYml0LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uOjpwcmVwYXJlRm9yUmVuZGVyaW5nKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnVwZGF0ZVN0YXRlcyk6IERpdHRvLgor
CisgICAgICAgIFB1bGwgb3V0IGV4aXN0aW5nIHRoZSBBVkFzc2V0SW1hZ2VHZW5lcmF0b3IgaW50
byBpdHMgb3duIGZ1bmN0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlSW1h
Z2VHZW5lcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6ZGVzdHJveUltYWdlR2VuZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aEltYWdlR2VuZXJhdG9y
KToKKworICAgICAgICBBZGQgbmV3IEFWUGxheWVySXRlbVZpZGVvT3V0cHV0IGVxdWl2YWxlbnQg
ZnVuY3Rpb25zOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRlb091dHB1dCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpk
ZXN0cm95VmlkZW9PdXRwdXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlUGl4ZWxCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQp
OgorCisgICAgICAgIFN3aXRjaCBiZXR3ZWVuIHRoZSBBVkFzc2V0SW1hZ2VHZW5lcmF0b3IgYW5k
IEFWUGxheWVySXRlbVZpZGVvT3V0cHV0IGZ1bmN0aW9ucyBmcm9tCisgICAgICAgIHdpdGhpbiB0
aGUgb3JpZ2luYWwgZnVuY3Rpb25zOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVD
b250ZXh0VmlkZW9SZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpkZXN0cm95Q29udGV4dFZpZGVvUmVuZGVyZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aGFzQ29udGV4
dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnBhaW50KToKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVJbWFn
ZUZvclRpbWVJblJlY3QpOiBDYWxsIHRoZSAKKyAgICAgICAgICAgIEFWQXNzZXRJbWFnZUdlbmVy
YXRvciBjcmVhdGlvbiBmdW5jdGlvbiBkaXJlY3RseS4KKwogMjAxMi0wOC0wOCAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCBiYWNraW5nIHN0
b3JlIG9uIGxheWVycyBjcmVhdGVkIGZvciBDb3JlQW5pbWF0aW9uIHBsdWdpbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKaW5k
ZXggNmUxOTk5Mjc3NGYxNzlmNzU1YzE4NjZmNmUwNWE2NzA4ZmU3MTc1NS4uNDZhZWFmMTE5YzFm
NGZkYTJhYTkwM2MwZjMwNGNlY2M4YzU2OTAxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTgzLDE3ICs4MywxOCBA
QCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246On5NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24oKQogICAgIGNhbmNlbENhbGxPbk1haW5UaHJlYWQobWFpblRocmVhZENhbGxiYWNr
LCB0aGlzKTsKIH0KIAotTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpNZWRpYVJlbmRl
cmluZ01vZGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpjdXJyZW50UmVuZGVyaW5n
TW9kZSgpIGNvbnN0CitNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246Ok1lZGlhUmVuZGVy
aW5nTW9kZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmN1cnJlbnRSZW5kZXJpbmdN
b2RlcygpIGNvbnN0CiB7CisgICAgTWVkaWFSZW5kZXJpbmdNb2RlIG1vZGVzID0gTWVkaWFSZW5k
ZXJpbmdOb25lOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBpZiAocGxh
dGZvcm1MYXllcigpKQotICAgICAgICByZXR1cm4gTWVkaWFSZW5kZXJpbmdUb0xheWVyOworICAg
ICAgICBtb2RlcyB8PSBNZWRpYVJlbmRlcmluZ1RvTGF5ZXI7CiAjZW5kaWYKIAogICAgIGlmICho
YXNDb250ZXh0UmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhUmVuZGVyaW5nVG9Db250
ZXh0OworICAgICAgICBtb2RlcyB8PSBNZWRpYVJlbmRlcmluZ1RvQ29udGV4dDsKIAotICAgIHJl
dHVybiBNZWRpYVJlbmRlcmluZ05vbmU7CisgICAgcmV0dXJuIG1vZGVzOwogfQogCiBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb246Ok1lZGlhUmVuZGVyaW5nTW9kZSBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb246OnByZWZlcnJlZFJlbmRlcmluZ01vZGUoKSBjb25zdApAQCAtMTE0
LDE5ICsxMTUsMTUgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNldFVw
VmlkZW9SZW5kZXJpbmcoKQogICAgIGlmICghaXNSZWFkeUZvclZpZGVvU2V0dXAoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgTWVkaWFSZW5kZXJpbmdNb2RlIGN1cnJlbnRNb2RlID0gY3VycmVu
dFJlbmRlcmluZ01vZGUoKTsKKyAgICBNZWRpYVJlbmRlcmluZ01vZGUgY3VycmVudE1vZGVzID0g
Y3VycmVudFJlbmRlcmluZ01vZGVzKCk7CiAgICAgTWVkaWFSZW5kZXJpbmdNb2RlIHByZWZlcnJl
ZE1vZGUgPSBwcmVmZXJyZWRSZW5kZXJpbmdNb2RlKCk7Ci0gICAgaWYgKGN1cnJlbnRNb2RlID09
IHByZWZlcnJlZE1vZGUgJiYgY3VycmVudE1vZGUgIT0gTWVkaWFSZW5kZXJpbmdOb25lKQorICAg
IGlmIChjdXJyZW50TW9kZXMgJiBwcmVmZXJyZWRNb2RlICYmIGN1cnJlbnRNb2RlcyAhPSBNZWRp
YVJlbmRlcmluZ05vbmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhNZWRpYSwgIk1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2V0VXBWaWRlb1JlbmRlcmluZyglcCkgLSBjdXJy
ZW50IG1vZGUgPSAlZCwgcHJlZmVycmVkIG1vZGUgPSAlZCIsIAotICAgICAgICB0aGlzLCBzdGF0
aWNfY2FzdDxpbnQ+KGN1cnJlbnRNb2RlKSwgc3RhdGljX2Nhc3Q8aW50PihwcmVmZXJyZWRNb2Rl
KSk7Ci0KLSAgICBpZiAoY3VycmVudE1vZGUgIT0gTWVkaWFSZW5kZXJpbmdOb25lKSAgCi0gICAg
ICAgIHRlYXJEb3duVmlkZW9SZW5kZXJpbmcoKTsKKyAgICBMT0coTWVkaWEsICJNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb246OnNldFVwVmlkZW9SZW5kZXJpbmcoJXApIC0gY3VycmVudCBt
b2RlcyA9IDB4JXgsIHByZWZlcnJlZCBtb2RlID0gMHgleCIsIAorICAgICAgICB0aGlzLCBzdGF0
aWNfY2FzdDxpbnQ+KGN1cnJlbnRNb2RlcyksIHN0YXRpY19jYXN0PGludD4ocHJlZmVycmVkTW9k
ZSkpOwogCiAgICAgc3dpdGNoIChwcmVmZXJyZWRNb2RlKSB7Ci0gICAgY2FzZSBNZWRpYVJlbmRl
cmluZ05vbmU6CiAgICAgY2FzZSBNZWRpYVJlbmRlcmluZ1RvQ29udGV4dDoKICAgICAgICAgY3Jl
YXRlQ29udGV4dFZpZGVvUmVuZGVyZXIoKTsKICAgICAgICAgYnJlYWs7CkBAIC0xMzYsMTEgKzEz
MywxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2V0VXBWaWRlb1Jl
bmRlcmluZygpCiAgICAgICAgIGNyZWF0ZVZpZGVvTGF5ZXIoKTsKICAgICAgICAgYnJlYWs7CiAj
ZW5kaWYKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKICAgICB9CiAKICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgLy8gSWYgdXNpbmcgYSBtb3ZpZSBsYXllciwgaW5m
b3JtIHRoZSBjbGllbnQgc28gdGhlIGNvbXBvc2l0aW5nIHRyZWUgaXMgdXBkYXRlZC4KLSAgICBp
ZiAoY3VycmVudE1vZGUgPT0gTWVkaWFSZW5kZXJpbmdUb0xheWVyIHx8IHByZWZlcnJlZE1vZGUg
PT0gTWVkaWFSZW5kZXJpbmdUb0xheWVyKSB7CisgICAgaWYgKGN1cnJlbnRNb2RlcyAmIE1lZGlh
UmVuZGVyaW5nVG9MYXllciB8fCBwcmVmZXJyZWRNb2RlID09IE1lZGlhUmVuZGVyaW5nVG9MYXll
cikgewogICAgICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246
OnNldFVwVmlkZW9SZW5kZXJpbmcoJXApIC0gY2FsbGluZyBtZWRpYVBsYXllclJlbmRlcmluZ01v
ZGVDaGFuZ2VkKCkiLCB0aGlzKTsKICAgICAgICAgbV9wbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50
KCktPm1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQobV9wbGF5ZXIpOwogICAgIH0KQEAg
LTM5NCw3ICszOTMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6cHJl
cGFyZUZvclJlbmRlcmluZygpCiAKICAgICBzZXRVcFZpZGVvUmVuZGVyaW5nKCk7CiAKLSAgICBp
ZiAoY3VycmVudFJlbmRlcmluZ01vZGUoKSA9PSBNZWRpYVJlbmRlcmluZ1RvTGF5ZXIgfHwgcHJl
ZmVycmVkUmVuZGVyaW5nTW9kZSgpID09IE1lZGlhUmVuZGVyaW5nVG9MYXllcikKKyAgICBpZiAo
Y3VycmVudFJlbmRlcmluZ01vZGVzKCkgJiBNZWRpYVJlbmRlcmluZ1RvTGF5ZXIgfHwgcHJlZmVy
cmVkUmVuZGVyaW5nTW9kZSgpID09IE1lZGlhUmVuZGVyaW5nVG9MYXllcikKICAgICAgICAgbV9w
bGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5n
ZWQobV9wbGF5ZXIpOwogfQogCkBAIC00ODQsNyArNDgzLDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb246OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBpZiAoaXNSZWFkeUZvclZpZGVvU2V0dXAoKSAmJiBjdXJyZW50UmVuZGVyaW5nTW9kZSgpICE9
IHByZWZlcnJlZFJlbmRlcmluZ01vZGUoKSkKKyAgICBpZiAoaXNSZWFkeUZvclZpZGVvU2V0dXAo
KSAmJiBjdXJyZW50UmVuZGVyaW5nTW9kZXMoKSAmIHByZWZlcnJlZFJlbmRlcmluZ01vZGUoKSkK
ICAgICAgICAgc2V0VXBWaWRlb1JlbmRlcmluZygpOwogCiAgICAgaWYgKCFtX2hhdmVSZXBvcnRl
ZEZpcnN0VmlkZW9GcmFtZSAmJiBtX2NhY2hlZEhhc1ZpZGVvICYmIGhhc0F2YWlsYWJsZVZpZGVv
RnJhbWUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbi5oCmluZGV4IGI3YzNiMzlhZmMzODAzNGQ0ZjVkZDhiYzViZDNjN2VjMGJkMzVm
YjUuLmQ1Njc3ZTE5ODFiMGVhYzZhMDc3OGEwMzllNzRiMTAzYmI0MDUxMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKQEAgLTIy
Myw4ICsyMjMsMTMgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0TmF0dXJhbFNpemUoSW50U2l6
ZSk7CiAgICAgYm9vbCBpc0xpdmVTdHJlYW0oKSBjb25zdCB7IHJldHVybiBpc2luZihkdXJhdGlv
bigpKTsgfQogCi0gICAgZW51bSBNZWRpYVJlbmRlcmluZ01vZGUgeyBNZWRpYVJlbmRlcmluZ05v
bmUsIE1lZGlhUmVuZGVyaW5nVG9Db250ZXh0LCBNZWRpYVJlbmRlcmluZ1RvTGF5ZXIgfTsKLSAg
ICBNZWRpYVJlbmRlcmluZ01vZGUgY3VycmVudFJlbmRlcmluZ01vZGUoKSBjb25zdDsKKyAgICBl
bnVtIHsKKyAgICAgICAgTWVkaWFSZW5kZXJpbmdOb25lID0gMCwKKyAgICAgICAgTWVkaWFSZW5k
ZXJpbmdUb0NvbnRleHQgPSAxIDw8IDEsCisgICAgICAgIE1lZGlhUmVuZGVyaW5nVG9MYXllciA9
IDEgPDwgMiwKKyAgICB9OworICAgIHR5cGVkZWYgdWludDMyX3QgTWVkaWFSZW5kZXJpbmdNb2Rl
OworICAgIE1lZGlhUmVuZGVyaW5nTW9kZSBjdXJyZW50UmVuZGVyaW5nTW9kZXMoKSBjb25zdDsK
ICAgICBNZWRpYVJlbmRlcmluZ01vZGUgcHJlZmVycmVkUmVuZGVyaW5nTW9kZSgpIGNvbnN0Owog
CiAgICAgYm9vbCBtZXRhRGF0YUF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZHlTdGF0
ZSA+PSBNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5k
ZXggZTVjZmNiNDQ1ZmZhNGE5MTRjODgyZGZmMjdiNTRmNGU2ZTQ3NTc4Yi4uMGZlNjEzMWQ2YzA5
ODRhNGU5MWMxMzAyZDVmODc3NTllOTBjNTRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAt
MzMsNiArMzMsNyBAQAogT0JKQ19DTEFTUyBBVkFzc2V0OwogT0JKQ19DTEFTUyBBVlBsYXllcjsK
IE9CSkNfQ0xBU1MgQVZQbGF5ZXJJdGVtOworT0JKQ19DTEFTUyBBVlBsYXllckl0ZW1WaWRlb091
dHB1dDsKIE9CSkNfQ0xBU1MgQVZQbGF5ZXJMYXllcjsKIE9CSkNfQ0xBU1MgQVZBc3NldEltYWdl
R2VuZXJhdG9yOwogT0JKQ19DTEFTUyBXZWJDb3JlQVZGTW92aWVPYnNlcnZlcjsKQEAgLTQyLDYg
KzQzLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QgKmlkOwogI2VuZGlmCiAKIHR5cGVk
ZWYgc3RydWN0IENHSW1hZ2UgKkNHSW1hZ2VSZWY7Cit0eXBlZGVmIHN0cnVjdCBfX0NWQnVmZmVy
ICpDVlBpeGVsQnVmZmVyUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTExMCw3ICsx
MTIsMTcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9y
aWdpbigpIGNvbnN0OwogCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEw
ODAKKyAgICB2b2lkIGNyZWF0ZUltYWdlR2VuZXJhdG9yKCk7CisgICAgdm9pZCBkZXN0cm95SW1h
Z2VHZW5lcmF0b3IoKTsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlSW1hZ2VGb3JU
aW1lSW5SZWN0KGZsb2F0LCBjb25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCBwYWludFdpdGhJbWFn
ZUdlbmVyYXRvcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7CisjZWxzZQorICAg
IHZvaWQgY3JlYXRlVmlkZW9PdXRwdXQoKTsKKyAgICB2b2lkIGRlc3Ryb3lWaWRlb091dHB1dCgp
OworICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBjcmVhdGVQaXhlbEJ1ZmZlcigpOwor
ICAgIHZvaWQgcGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50
UmVjdCYpOworI2VuZGlmCiAKICAgICBNZWRpYVBsYXllciogbV9wbGF5ZXI7CiAgICAgUmV0YWlu
UHRyPEFWQXNzZXQ+IG1fYXZBc3NldDsKQEAgLTExOCwxMCArMTMwLDE2IEBAIHByaXZhdGU6CiAg
ICAgUmV0YWluUHRyPEFWUGxheWVySXRlbT4gbV9hdlBsYXllckl0ZW07CiAgICAgUmV0YWluUHRy
PEFWUGxheWVyTGF5ZXI+IG1fdmlkZW9MYXllcjsKICAgICBSZXRhaW5QdHI8V2ViQ29yZUFWRk1v
dmllT2JzZXJ2ZXI+IG1fb2JqY09ic2VydmVyOwotICAgIFJldGFpblB0cjxBVkFzc2V0SW1hZ2VH
ZW5lcmF0b3I+IG1faW1hZ2VHZW5lcmF0b3I7CiAgICAgUmV0YWluUHRyPGlkPiBtX3RpbWVPYnNl
cnZlcjsKICAgICBib29sIG1fdmlkZW9GcmFtZUhhc0RyYXduOwogICAgIGJvb2wgbV9oYXZlQ2hl
Y2tlZFBsYXlhYmlsaXR5OworCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8
IDEwODAKKyAgICBSZXRhaW5QdHI8QVZBc3NldEltYWdlR2VuZXJhdG9yPiBtX2ltYWdlR2VuZXJh
dG9yOworI2Vsc2UKKyAgICBSZXRhaW5QdHI8QVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQ+IG1fdmlk
ZW9PdXRwdXQ7CisgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IG1fbGFzdEltYWdlOwor
I2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA1OWE3MmY3ODk1ZDlj
ZTY2NDA3NmZjOGRkYTJjYmQwNDBlMTJlMDgwLi5jZjc1ZDBjZjZjZmQ3NjA4YWQ3MWQ2NzdmNDZm
MWU3Njk4NzhhMzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTU2LDYgKzU2LDcgQEAg
U09GVF9MSU5LKENvcmVNZWRpYSwgQ01UaW1lUmFuZ2VHZXRFbmQsIENNVGltZSwgKENNVGltZVJh
bmdlIHJhbmdlKSwgKHJhbmdlKSkKIAogU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZQ
bGF5ZXIpCiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW0pCitTT0ZU
X0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW1WaWRlb091dHB1dCkKIFNPRlRf
TElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWUGxheWVyTGF5ZXIpCiBTT0ZUX0xJTktfQ0xBU1Mo
QVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0KQogU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwg
QVZBc3NldEltYWdlR2VuZXJhdG9yKQpAQCAtNzMsNiArNzQsNyBAQCBTT0ZUX0xJTktfQ09OU1RB
TlQoQ29yZU1lZGlhLCBrQ01UaW1lWmVybywgQ01UaW1lKQogCiAjZGVmaW5lIEFWUGxheWVyIGdl
dEFWUGxheWVyQ2xhc3MoKQogI2RlZmluZSBBVlBsYXllckl0ZW0gZ2V0QVZQbGF5ZXJJdGVtQ2xh
c3MoKQorI2RlZmluZSBBVlBsYXllckl0ZW1WaWRlb091dHB1dCBnZXRBVlBsYXllckl0ZW1WaWRl
b091dHB1dENsYXNzKCkKICNkZWZpbmUgQVZQbGF5ZXJMYXllciBnZXRBVlBsYXllckxheWVyQ2xh
c3MoKQogI2RlZmluZSBBVlVSTEFzc2V0IGdldEFWVVJMQXNzZXRDbGFzcygpCiAjZGVmaW5lIEFW
QXNzZXRJbWFnZUdlbmVyYXRvciBnZXRBVkFzc2V0SW1hZ2VHZW5lcmF0b3JDbGFzcygpCkBAIC0x
ODMsMTIgKzE4NSwyNiBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
Omhhc0xheWVyUmVuZGVyZXIoKSBjb25zdAogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6Omhhc0NvbnRleHRSZW5kZXJlcigpIGNvbnN0CiB7CisjaWYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDgwCisgICAgcmV0dXJuIG1fdmlkZW9PdXRwdXQ7
CisjZWxzZQogICAgIHJldHVybiBtX2ltYWdlR2VuZXJhdG9yOworI2VuZGlmCiB9CiAKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQ29udGV4dFZpZGVvUmVu
ZGVyZXIoKQogewotICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OmNyZWF0ZUNvbnRleHRWaWRlb1JlbmRlcmVyKCVwKSIsIHRoaXMpOworI2lmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA4MAorICAgIGNyZWF0ZVZpZGVvT3V0cHV0
KCk7CisjZWxzZQorICAgIGNyZWF0ZUltYWdlR2VuZXJhdG9yKCk7CisjZW5kaWYKK30KKworI2lm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDgwCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUltYWdlR2VuZXJhdG9yKCkKK3sKKyAgICBM
T0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVJbWFn
ZUdlbmVyYXRvciglcCkiLCB0aGlzKTsKIAogICAgIGlmICghbV9hdkFzc2V0IHx8IG1faW1hZ2VH
ZW5lcmF0b3IpCiAgICAgICAgIHJldHVybjsKQEAgLTIwMiwxNiArMjE4LDI4IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQ29udGV4dFZpZGVvUmVuZGVy
ZXIoKQogCiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6Y3JlYXRlSW1hZ2VHZW5lcmF0b3IoJXApIC0gcmV0dXJuaW5nICVwIiwgdGhpcywgbV9pbWFn
ZUdlbmVyYXRvci5nZXQoKSk7CiB9CisjZW5kaWYKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpkZXN0cm95Q29udGV4dFZpZGVvUmVuZGVyZXIoKQogeworI2lmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA4MAorICAgIGRlc3Ryb3lWaWRlb091
dHB1dCgpOworI2Vsc2UKKyAgICBkZXN0cm95SW1hZ2VHZW5lcmF0b3IoKTsKKyNlbmRpZgorfQor
CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwODAKK3ZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZGVzdHJveUltYWdlR2VuZXJhdG9yKCkKK3sK
ICAgICBpZiAoIW1faW1hZ2VHZW5lcmF0b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhN
ZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRlc3Ryb3lDb250ZXh0
VmlkZW9SZW5kZXJlciglcCkgLSBkZXN0cm95aW5nICAlcCIsIHRoaXMsIG1faW1hZ2VHZW5lcmF0
b3IuZ2V0KCkpOworICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OmRlc3Ryb3lJbWFnZUdlbmVyYXRvciglcCkgLSBkZXN0cm95aW5nICAlcCIsIHRoaXMs
IG1faW1hZ2VHZW5lcmF0b3IuZ2V0KCkpOwogCiAgICAgbV9pbWFnZUdlbmVyYXRvciA9IDA7CiB9
CisjZW5kaWYKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVh
dGVWaWRlb0xheWVyKCkKIHsKQEAgLTYxMSw2ICs2MzksMjEgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEkKICAgICBzZXREZWxheUNhbGxiYWNrcyh0cnVlKTsKICAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlM7CiAKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
ODAKKyAgICBwYWludFdpdGhWaWRlb091dHB1dChjb250ZXh0LCByZWN0KTsKKyNlbHNlCisgICAg
cGFpbnRXaXRoSW1hZ2VHZW5lcmF0b3IoY29udGV4dCwgcmVjdCk7CisjZW5kaWYKKworICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgc2V0RGVsYXlDYWxsYmFja3MoZmFsc2UpOwor
CisgICAgbV92aWRlb0ZyYW1lSGFzRHJhd24gPSB0cnVlOworfQorCisjaWYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwODAKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6cGFpbnRXaXRoSW1hZ2VHZW5lcmF0b3IoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQorewogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBp
bWFnZSA9IGNyZWF0ZUltYWdlRm9yVGltZUluUmVjdChjdXJyZW50VGltZSgpLCByZWN0KTsKICAg
ICBpZiAoaW1hZ2UpIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKCpjb250ZXh0KTsKQEAgLTYyMSwxMiArNjY0LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEkKICAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LCBDR1JlY3RNYWtlKDAsIDAsIHBhaW50UmVjdC53aWR0aCgpLCBwYWludFJlY3QuaGVpZ2h0KCkp
LCBpbWFnZS5nZXQoKSk7CiAgICAgICAgIGltYWdlID0gMDsKICAgICB9Ci0KLSAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TOwotICAgIHNldERlbGF5Q2FsbGJhY2tzKGZhbHNlKTsKLQotICAg
IG1fdmlkZW9GcmFtZUhhc0RyYXduID0gdHJ1ZTsKIH0KKyNlbmRpZgogCiBzdGF0aWMgSGFzaFNl
dDxTdHJpbmc+IG1pbWVUeXBlQ2FjaGUoKQogewpAQCAtNjQ0LDEwICs2ODMsMTEgQEAgc3RhdGlj
IEhhc2hTZXQ8U3RyaW5nPiBtaW1lVHlwZUNhY2hlKCkKICAgICByZXR1cm4gY2FjaGU7CiB9IAog
CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwODAKIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVJbWFn
ZUZvclRpbWVJblJlY3QoZmxvYXQgdGltZSwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBp
ZiAoIW1faW1hZ2VHZW5lcmF0b3IpCi0gICAgICAgIGNyZWF0ZUNvbnRleHRWaWRlb1JlbmRlcmVy
KCk7CisgICAgICAgIGNyZWF0ZUltYWdlR2VuZXJhdG9yKCk7CiAgICAgQVNTRVJUKG1faW1hZ2VH
ZW5lcmF0b3IpOwogCiAjaWYgIUxPR19ESVNBQkxFRApAQCAtNjY0LDYgKzcwNCw3IEBAIFJldGFp
blB0cjxDR0ltYWdlUmVmPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVh
dGVJbWFnZUZvclRpbWVJblJlCiAKICAgICByZXR1cm4gaW1hZ2U7CiB9CisjZW5kaWYKIAogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpnZXRTdXBwb3J0ZWRUeXBlcyhI
YXNoU2V0PFN0cmluZz4mIHN1cHBvcnRlZFR5cGVzKQogewpAQCAtNzgxLDYgKzgyMiw4MSBAQCBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Omhhc1NpbmdsZVNlY3VyaXR5
T3JpZ2luKCkgY29uc3QKICAgICByZXR1cm4gcmVzb2x2ZWRPcmlnaW4tPmlzU2FtZVNjaGVtZUhv
c3RQb3J0KHJlcXVlc3RlZE9yaWdpbi5nZXQoKSk7CiB9CiAKKyNpZiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwODAKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y3JlYXRlVmlkZW9PdXRwdXQoKQoreworICAgIExPRyhNZWRpYSwgIk1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVZpZGVvT3V0cHV0KCVwKSIsIHRoaXMp
OworCisgICAgaWYgKCFtX2F2UGxheWVySXRlbSB8fCBtX3ZpZGVvT3V0cHV0KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBOU0RpY3Rpb25hcnkqIGF0dHJpYnV0ZXMgPSBbTlNEaWN0aW9uYXJ5IGRp
Y3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6W05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZElu
dDprMzJCR1JBUGl4ZWxGb3JtYXRdLCBrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsXTsKKyAgICBtX3ZpZGVvT3V0cHV0
LmFkb3B0TlMoW1tBVlBsYXllckl0ZW1WaWRlb091dHB1dCBhbGxvY10gaW5pdFdpdGhQaXhlbEJ1
ZmZlckF0dHJpYnV0ZXM6YXR0cmlidXRlc10pOworICAgIEFTU0VSVChtX3ZpZGVvT3V0cHV0KTsK
KworICAgIFttX2F2UGxheWVySXRlbS5nZXQoKSBhZGRPdXRwdXQ6bV92aWRlb091dHB1dC5nZXQo
KV07CisKKyAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpjcmVhdGVWaWRlb091dHB1dCglcCkgLSByZXR1cm5pbmcgJXAiLCB0aGlzLCBtX3ZpZGVvT3V0
cHV0LmdldCgpKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpkZXN0cm95VmlkZW9PdXRwdXQoKQoreworICAgIGlmICghbV92aWRlb091dHB1dCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKG1fYXZQbGF5ZXJJdGVtKQorICAgICAgICBbbV9hdlBsYXll
ckl0ZW0uZ2V0KCkgcmVtb3ZlT3V0cHV0Om1fdmlkZW9PdXRwdXQuZ2V0KCldOworICAgIExPRyhN
ZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRlc3Ryb3lWaWRlb091
dHB1dCglcCkgLSBkZXN0cm95aW5nICAlcCIsIHRoaXMsIG1fdmlkZW9PdXRwdXQuZ2V0KCkpOwor
CisgICAgbV92aWRlb091dHB1dCA9IDA7Cit9CisKK1JldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVm
PiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVQaXhlbEJ1ZmZlcigp
Cit7CisgICAgaWYgKCFtX3ZpZGVvT3V0cHV0KQorICAgICAgICBjcmVhdGVWaWRlb091dHB1dCgp
OworICAgIEFTU0VSVChtX3ZpZGVvT3V0cHV0KTsKKworI2lmICFMT0dfRElTQUJMRUQKKyAgICBk
b3VibGUgc3RhcnQgPSBXVEY6OmN1cnJlbnRUaW1lKCk7CisjZW5kaWYKKworICAgIFJldGFpblB0
cjxDVlBpeGVsQnVmZmVyUmVmPiBidWZmZXIgPSBhZG9wdENGKFttX3ZpZGVvT3V0cHV0LmdldCgp
IGNvcHlQaXhlbEJ1ZmZlckZvckl0ZW1UaW1lOlttX2F2UGxheWVySXRlbS5nZXQoKSBjdXJyZW50
VGltZV0gaXRlbVRpbWVGb3JEaXNwbGF5Om5pbF0pOworCisjaWYgIUxPR19ESVNBQkxFRAorICAg
IGRvdWJsZSBkdXJhdGlvbiA9IFdURjo6Y3VycmVudFRpbWUoKSAtIHN0YXJ0OworICAgIExPRyhN
ZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVBpeGVsQnVm
ZmVyKCkgLSBjcmVhdGluZyBidWZmZXIgdG9vayAlLjRmIiwgdGhpcywgbmFycm93UHJlY2lzaW9u
VG9GbG9hdChkdXJhdGlvbikpOworI2VuZGlmCisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCit2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0
cHV0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAg
ICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcGl4ZWxCdWZmZXIgPSBjcmVhdGVQaXhlbEJ1
ZmZlcigpOworCisgICAgLy8gQ2FsbHMgdG8gY29weVBpeGVsQnVmZmVyRm9ySXRlbVRpbWU6aXRl
bVRpbWVGb3JEaXNwbGF5OiBtYXkgcmV0dXJuIG5pbCBpZiB0aGUgcGl4ZWwgYnVmZmVyCisgICAg
Ly8gZm9yIHRoZSByZXF1ZXN0ZWQgdGltZSBoYXMgYWxyZWFkeSBiZWVuIHJldHJpZXZlZC4gSW4g
dGhpcyBjYXNlLCB0aGUgbGFzdCB2YWxpZCBpbWFnZSAoaWYgYW55KQorICAgIC8vIHNob3VsZCBi
ZSBkaXNwbGF5ZWQuCisgICAgaWYgKHBpeGVsQnVmZmVyKQorICAgICAgICBtX2xhc3RJbWFnZSA9
IHBpeGVsQnVmZmVyOworCisgICAgaWYgKG1fbGFzdEltYWdlKSB7CisgICAgICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgICAgIGNvbnRleHQt
PnRyYW5zbGF0ZShyZWN0LngoKSwgcmVjdC55KCkgKyByZWN0LmhlaWdodCgpKTsKKyAgICAgICAg
Y29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEuMGYsIC0xLjBmKSk7CisgICAgICAgIFJldGFpblB0
cjxDSUltYWdlPiBpbWFnZShBZG9wdE5TLCBbW0NJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ1ZJbWFn
ZUJ1ZmZlcjptX2xhc3RJbWFnZS5nZXQoKV0pOworCisgICAgICAgIC8vIGNpQ29udGV4dCBkb2Vz
IG5vdCB1c2UgYSBSZXRhaW5QdHIgZm9yIHJlc3VsdHMgb2YgY29udGV4dFdpdGhDR0NvbnRleHQ6
LCBhcyB0aGUgcmV0dXJuZWQgdmFsdWUKKyAgICAgICAgLy8gaXMgYXV0b3JlbGVhc2VkLCBhbmQg
dGhlcmUgaXMgbm8gbm9uLWF1dG9yZWxlYXNlZCB2ZXJzaW9uIG9mIHRoYXQgZnVuY3Rpb24uCisg
ICAgICAgIENJQ29udGV4dCogY2lDb250ZXh0ID0gW0NJQ29udGV4dCBjb250ZXh0V2l0aENHQ29u
dGV4dDpjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSBvcHRpb25zOm5pbF07CisgICAgICAgIFtj
aUNvbnRleHQgZHJhd0ltYWdlOmltYWdlLmdldCgpIGluUmVjdDpyZWN0IGZyb21SZWN0OnJlY3Rd
OworICAgIH0KK30KKworI2VuZGlmCisKIE5TQXJyYXkqIGFzc2V0TWV0YWRhdGFLZXlOYW1lcygp
CiB7CiAgICAgc3RhdGljIE5TQXJyYXkqIGtleXM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157752</attachid>
            <date>2012-08-10 09:58:04 -0700</date>
            <delta_ts>2012-08-10 10:45:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93591-20120810095736.patch</filename>
            <type>text/plain</type>
            <size>18358</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGI5OTc3Yzk0NmRhMzY4
M2Y4ZjJmNzMwMTM5OGNkNmY1MzFjN2UxYi4uZDMyOTAwZGNhYjQzMzBmZGI0NjI2MDdiZjMyODgx
OGYzMzllZmU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTA4LTA5ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSB0aGUgbmV3IEFWUGxh
eWVySXRlbVZpZGVvT3V0cHV0IEFQSSBpbiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzU5MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQg
dGhlIG5ldyBBVlBsYXllckl0ZW1WaWRlb091dHB1dCBBUEkgZnJvbSBNb3VudGFpbiBMaW9uLCB3
aGljaCBoYXMgbXVjaCBpbmNyZWFzZWQgcGVyZm9ybWFuY2Ugb3ZlcgorICAgICAgICBBVkFzc2V0
SW1hZ2VHZW5lcmF0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOyBQZXJmb3JtYW5jZSBjaGFu
Z2Ugb25seSwgbm8gbmV0IGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIEFWUGxh
eWVySXRlbVZpZGVvT3V0cHV0IHJlcXVpcmVzIGFuIGF0dGFjaGVkIENBTGF5ZXIgZm9yIHJlbmRl
cmluZyB0byBvY2N1ci4gIE1ha2UgdGhlIHJlbmRlcmluZyBtb2RlcyBub24tZXhjbHVzaXZlLCAK
KyAgICAgICAgc28gbGF5ZXItcmVuZGVyaW5nIGFuZCBjb250ZXh0LXJlbmRlcmluZyBjYW4gZXhp
c3Qgc2ltdWx0YW5lb3VzbHk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOiBNYWtlIHRoZSBNZWRpYVJlbmRl
cmluZ01vZGUgZW51bQorICAgICAgICAgICAgYSBiaXRmaWVsZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6Y3Vy
cmVudFJlbmRlcmluZ01vZGVzKTogUmVuYW1lZCBmcm9tIGN1cnJlbnRSZW5kZXJpbmdNb2RlKCku
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNldFVw
VmlkZW9SZW5kZXJpbmcpOiBDaGVjayBmb3IgdGhlIHByZXNlbmNlIG9mIHRoZSBNZWRpYVJlbmRl
cmluZ1RvTGF5ZXIgYml0LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uOjpwcmVwYXJlRm9yUmVuZGVyaW5nKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnVwZGF0ZVN0YXRlcyk6IERpdHRvLgor
CisgICAgICAgIFB1bGwgb3V0IGV4aXN0aW5nIHRoZSBBVkFzc2V0SW1hZ2VHZW5lcmF0b3IgaW50
byBpdHMgb3duIGZ1bmN0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlSW1h
Z2VHZW5lcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6ZGVzdHJveUltYWdlR2VuZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aEltYWdlR2VuZXJhdG9y
KToKKworICAgICAgICBBZGQgbmV3IEFWUGxheWVySXRlbVZpZGVvT3V0cHV0IGVxdWl2YWxlbnQg
ZnVuY3Rpb25zOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRlb091dHB1dCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpk
ZXN0cm95VmlkZW9PdXRwdXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlUGl4ZWxCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQp
OgorCisgICAgICAgIFN3aXRjaCBiZXR3ZWVuIHRoZSBBVkFzc2V0SW1hZ2VHZW5lcmF0b3IgYW5k
IEFWUGxheWVySXRlbVZpZGVvT3V0cHV0IGZ1bmN0aW9ucyBmcm9tCisgICAgICAgIHdpdGhpbiB0
aGUgb3JpZ2luYWwgZnVuY3Rpb25zOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVD
b250ZXh0VmlkZW9SZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpkZXN0cm95Q29udGV4dFZpZGVvUmVuZGVyZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aGFzQ29udGV4
dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnBhaW50KToKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVJbWFn
ZUZvclRpbWVJblJlY3QpOiBDYWxsIHRoZSAKKyAgICAgICAgICAgIEFWQXNzZXRJbWFnZUdlbmVy
YXRvciBjcmVhdGlvbiBmdW5jdGlvbiBkaXJlY3RseS4KKwogMjAxMi0wOC0wOCAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCBiYWNraW5nIHN0
b3JlIG9uIGxheWVycyBjcmVhdGVkIGZvciBDb3JlQW5pbWF0aW9uIHBsdWdpbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKaW5k
ZXggNmUxOTk5Mjc3NGYxNzlmNzU1YzE4NjZmNmUwNWE2NzA4ZmU3MTc1NS4uMzI5YmU4NGUxN2Vi
ODU0YjY1YjdkNjZkZTE3NTZjNDk2MDQ0OTcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTgzLDE3ICs4MywxOCBA
QCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246On5NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24oKQogICAgIGNhbmNlbENhbGxPbk1haW5UaHJlYWQobWFpblRocmVhZENhbGxiYWNr
LCB0aGlzKTsKIH0KIAotTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpNZWRpYVJlbmRl
cmluZ01vZGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpjdXJyZW50UmVuZGVyaW5n
TW9kZSgpIGNvbnN0CitNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246Ok1lZGlhUmVuZGVy
aW5nTW9kZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmN1cnJlbnRSZW5kZXJpbmdN
b2RlcygpIGNvbnN0CiB7CisgICAgTWVkaWFSZW5kZXJpbmdNb2RlIG1vZGVzID0gTWVkaWFSZW5k
ZXJpbmdOb25lOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBpZiAocGxh
dGZvcm1MYXllcigpKQotICAgICAgICByZXR1cm4gTWVkaWFSZW5kZXJpbmdUb0xheWVyOworICAg
ICAgICBtb2RlcyB8PSBNZWRpYVJlbmRlcmluZ1RvTGF5ZXI7CiAjZW5kaWYKIAogICAgIGlmICho
YXNDb250ZXh0UmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhUmVuZGVyaW5nVG9Db250
ZXh0OworICAgICAgICBtb2RlcyB8PSBNZWRpYVJlbmRlcmluZ1RvQ29udGV4dDsKIAotICAgIHJl
dHVybiBNZWRpYVJlbmRlcmluZ05vbmU7CisgICAgcmV0dXJuIG1vZGVzOwogfQogCiBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb246Ok1lZGlhUmVuZGVyaW5nTW9kZSBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb246OnByZWZlcnJlZFJlbmRlcmluZ01vZGUoKSBjb25zdApAQCAtMTE0
LDE5ICsxMTUsMjEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNldFVw
VmlkZW9SZW5kZXJpbmcoKQogICAgIGlmICghaXNSZWFkeUZvclZpZGVvU2V0dXAoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgTWVkaWFSZW5kZXJpbmdNb2RlIGN1cnJlbnRNb2RlID0gY3VycmVu
dFJlbmRlcmluZ01vZGUoKTsKKyAgICBNZWRpYVJlbmRlcmluZ01vZGUgY3VycmVudE1vZGVzID0g
Y3VycmVudFJlbmRlcmluZ01vZGVzKCk7CiAgICAgTWVkaWFSZW5kZXJpbmdNb2RlIHByZWZlcnJl
ZE1vZGUgPSBwcmVmZXJyZWRSZW5kZXJpbmdNb2RlKCk7Ci0gICAgaWYgKGN1cnJlbnRNb2RlID09
IHByZWZlcnJlZE1vZGUgJiYgY3VycmVudE1vZGUgIT0gTWVkaWFSZW5kZXJpbmdOb25lKQorICAg
IGlmIChjdXJyZW50TW9kZXMgJiBwcmVmZXJyZWRNb2RlICYmIGN1cnJlbnRNb2RlcyAhPSBNZWRp
YVJlbmRlcmluZ05vbmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhNZWRpYSwgIk1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2V0VXBWaWRlb1JlbmRlcmluZyglcCkgLSBjdXJy
ZW50IG1vZGUgPSAlZCwgcHJlZmVycmVkIG1vZGUgPSAlZCIsIAotICAgICAgICB0aGlzLCBzdGF0
aWNfY2FzdDxpbnQ+KGN1cnJlbnRNb2RlKSwgc3RhdGljX2Nhc3Q8aW50PihwcmVmZXJyZWRNb2Rl
KSk7CisgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZXRV
cFZpZGVvUmVuZGVyaW5nKCVwKSAtIGN1cnJlbnQgbW9kZXMgPSAweCV4LCBwcmVmZXJyZWQgbW9k
ZSA9IDB4JXgiLAorICAgICAgICB0aGlzLCBzdGF0aWNfY2FzdDxpbnQ+KGN1cnJlbnRNb2Rlcyks
IHN0YXRpY19jYXN0PGludD4ocHJlZmVycmVkTW9kZSkpOwogCi0gICAgaWYgKGN1cnJlbnRNb2Rl
ICE9IE1lZGlhUmVuZGVyaW5nTm9uZSkgIAorICAgIGlmIChjdXJyZW50TW9kZXMgIT0gTWVkaWFS
ZW5kZXJpbmdOb25lKQogICAgICAgICB0ZWFyRG93blZpZGVvUmVuZGVyaW5nKCk7CiAKICAgICBz
d2l0Y2ggKHByZWZlcnJlZE1vZGUpIHsKICAgICBjYXNlIE1lZGlhUmVuZGVyaW5nTm9uZToKKyAg
ICAgICAgYnJlYWs7CisKICAgICBjYXNlIE1lZGlhUmVuZGVyaW5nVG9Db250ZXh0OgogICAgICAg
ICBjcmVhdGVDb250ZXh0VmlkZW9SZW5kZXJlcigpOwogICAgICAgICBicmVhazsKQEAgLTE0MCw3
ICsxNDMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2V0VXBWaWRl
b1JlbmRlcmluZygpCiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgLy8g
SWYgdXNpbmcgYSBtb3ZpZSBsYXllciwgaW5mb3JtIHRoZSBjbGllbnQgc28gdGhlIGNvbXBvc2l0
aW5nIHRyZWUgaXMgdXBkYXRlZC4KLSAgICBpZiAoY3VycmVudE1vZGUgPT0gTWVkaWFSZW5kZXJp
bmdUb0xheWVyIHx8IHByZWZlcnJlZE1vZGUgPT0gTWVkaWFSZW5kZXJpbmdUb0xheWVyKSB7Cisg
ICAgaWYgKGN1cnJlbnRNb2RlcyAmIE1lZGlhUmVuZGVyaW5nVG9MYXllciB8fCBwcmVmZXJyZWRN
b2RlID09IE1lZGlhUmVuZGVyaW5nVG9MYXllcikgewogICAgICAgICBMT0coTWVkaWEsICJNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNldFVwVmlkZW9SZW5kZXJpbmcoJXApIC0gY2Fs
bGluZyBtZWRpYVBsYXllclJlbmRlcmluZ01vZGVDaGFuZ2VkKCkiLCB0aGlzKTsKICAgICAgICAg
bV9wbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNo
YW5nZWQobV9wbGF5ZXIpOwogICAgIH0KQEAgLTM5NCw3ICszOTcsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6cHJlcGFyZUZvclJlbmRlcmluZygpCiAKICAgICBzZXRV
cFZpZGVvUmVuZGVyaW5nKCk7CiAKLSAgICBpZiAoY3VycmVudFJlbmRlcmluZ01vZGUoKSA9PSBN
ZWRpYVJlbmRlcmluZ1RvTGF5ZXIgfHwgcHJlZmVycmVkUmVuZGVyaW5nTW9kZSgpID09IE1lZGlh
UmVuZGVyaW5nVG9MYXllcikKKyAgICBpZiAoY3VycmVudFJlbmRlcmluZ01vZGVzKCkgJiBNZWRp
YVJlbmRlcmluZ1RvTGF5ZXIgfHwgcHJlZmVycmVkUmVuZGVyaW5nTW9kZSgpID09IE1lZGlhUmVu
ZGVyaW5nVG9MYXllcikKICAgICAgICAgbV9wbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1l
ZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQobV9wbGF5ZXIpOwogfQogCkBAIC00ODQsNyAr
NDg3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnVwZGF0ZVN0YXRl
cygpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoaXNSZWFkeUZvclZpZGVvU2V0dXAoKSAm
JiBjdXJyZW50UmVuZGVyaW5nTW9kZSgpICE9IHByZWZlcnJlZFJlbmRlcmluZ01vZGUoKSkKKyAg
ICBpZiAoaXNSZWFkeUZvclZpZGVvU2V0dXAoKSAmJiAhKGN1cnJlbnRSZW5kZXJpbmdNb2Rlcygp
ICYgcHJlZmVycmVkUmVuZGVyaW5nTW9kZSgpKSkKICAgICAgICAgc2V0VXBWaWRlb1JlbmRlcmlu
ZygpOwogCiAgICAgaWYgKCFtX2hhdmVSZXBvcnRlZEZpcnN0VmlkZW9GcmFtZSAmJiBtX2NhY2hl
ZEhhc1ZpZGVvICYmIGhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCmluZGV4IGI3YzNiMzlh
ZmMzODAzNGQ0ZjVkZDhiYzViZDNjN2VjMGJkMzVmYjUuLmQ1Njc3ZTE5ODFiMGVhYzZhMDc3OGEw
MzllNzRiMTAzYmI0MDUxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKQEAgLTIyMyw4ICsyMjMsMTMgQEAgcHJvdGVjdGVkOgog
ICAgIHZvaWQgc2V0TmF0dXJhbFNpemUoSW50U2l6ZSk7CiAgICAgYm9vbCBpc0xpdmVTdHJlYW0o
KSBjb25zdCB7IHJldHVybiBpc2luZihkdXJhdGlvbigpKTsgfQogCi0gICAgZW51bSBNZWRpYVJl
bmRlcmluZ01vZGUgeyBNZWRpYVJlbmRlcmluZ05vbmUsIE1lZGlhUmVuZGVyaW5nVG9Db250ZXh0
LCBNZWRpYVJlbmRlcmluZ1RvTGF5ZXIgfTsKLSAgICBNZWRpYVJlbmRlcmluZ01vZGUgY3VycmVu
dFJlbmRlcmluZ01vZGUoKSBjb25zdDsKKyAgICBlbnVtIHsKKyAgICAgICAgTWVkaWFSZW5kZXJp
bmdOb25lID0gMCwKKyAgICAgICAgTWVkaWFSZW5kZXJpbmdUb0NvbnRleHQgPSAxIDw8IDEsCisg
ICAgICAgIE1lZGlhUmVuZGVyaW5nVG9MYXllciA9IDEgPDwgMiwKKyAgICB9OworICAgIHR5cGVk
ZWYgdWludDMyX3QgTWVkaWFSZW5kZXJpbmdNb2RlOworICAgIE1lZGlhUmVuZGVyaW5nTW9kZSBj
dXJyZW50UmVuZGVyaW5nTW9kZXMoKSBjb25zdDsKICAgICBNZWRpYVJlbmRlcmluZ01vZGUgcHJl
ZmVycmVkUmVuZGVyaW5nTW9kZSgpIGNvbnN0OwogCiAgICAgYm9vbCBtZXRhRGF0YUF2YWlsYWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZHlTdGF0ZSA+PSBNZWRpYVBsYXllcjo6SGF2ZU1ldGFk
YXRhOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggZTVjZmNiNDQ1ZmZhNGE5MTRjODgyZGZm
MjdiNTRmNGU2ZTQ3NTc4Yi4uMGZlNjEzMWQ2YzA5ODRhNGU5MWMxMzAyZDVmODc3NTllOTBjNTRj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtMzMsNiArMzMsNyBAQAogT0JKQ19DTEFTUyBB
VkFzc2V0OwogT0JKQ19DTEFTUyBBVlBsYXllcjsKIE9CSkNfQ0xBU1MgQVZQbGF5ZXJJdGVtOwor
T0JKQ19DTEFTUyBBVlBsYXllckl0ZW1WaWRlb091dHB1dDsKIE9CSkNfQ0xBU1MgQVZQbGF5ZXJM
YXllcjsKIE9CSkNfQ0xBU1MgQVZBc3NldEltYWdlR2VuZXJhdG9yOwogT0JKQ19DTEFTUyBXZWJD
b3JlQVZGTW92aWVPYnNlcnZlcjsKQEAgLTQyLDYgKzQzLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qgb2Jq
Y19vYmplY3QgKmlkOwogI2VuZGlmCiAKIHR5cGVkZWYgc3RydWN0IENHSW1hZ2UgKkNHSW1hZ2VS
ZWY7Cit0eXBlZGVmIHN0cnVjdCBfX0NWQnVmZmVyICpDVlBpeGVsQnVmZmVyUmVmOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTExMCw3ICsxMTIsMTcgQEAgcHJpdmF0ZToKIAogICAgIHZp
cnR1YWwgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0OwogCisjaWYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwODAKKyAgICB2b2lkIGNyZWF0ZUltYWdlR2Vu
ZXJhdG9yKCk7CisgICAgdm9pZCBkZXN0cm95SW1hZ2VHZW5lcmF0b3IoKTsKICAgICBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gY3JlYXRlSW1hZ2VGb3JUaW1lSW5SZWN0KGZsb2F0LCBjb25zdCBJbnRS
ZWN0Jik7CisgICAgdm9pZCBwYWludFdpdGhJbWFnZUdlbmVyYXRvcihHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBJbnRSZWN0Jik7CisjZWxzZQorICAgIHZvaWQgY3JlYXRlVmlkZW9PdXRwdXQoKTsK
KyAgICB2b2lkIGRlc3Ryb3lWaWRlb091dHB1dCgpOworICAgIFJldGFpblB0cjxDVlBpeGVsQnVm
ZmVyUmVmPiBjcmVhdGVQaXhlbEJ1ZmZlcigpOworICAgIHZvaWQgcGFpbnRXaXRoVmlkZW9PdXRw
dXQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOworI2VuZGlmCiAKICAgICBNZWRp
YVBsYXllciogbV9wbGF5ZXI7CiAgICAgUmV0YWluUHRyPEFWQXNzZXQ+IG1fYXZBc3NldDsKQEAg
LTExOCwxMCArMTMwLDE2IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWUGxheWVySXRlbT4g
bV9hdlBsYXllckl0ZW07CiAgICAgUmV0YWluUHRyPEFWUGxheWVyTGF5ZXI+IG1fdmlkZW9MYXll
cjsKICAgICBSZXRhaW5QdHI8V2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXI+IG1fb2JqY09ic2VydmVy
OwotICAgIFJldGFpblB0cjxBVkFzc2V0SW1hZ2VHZW5lcmF0b3I+IG1faW1hZ2VHZW5lcmF0b3I7
CiAgICAgUmV0YWluUHRyPGlkPiBtX3RpbWVPYnNlcnZlcjsKICAgICBib29sIG1fdmlkZW9GcmFt
ZUhhc0RyYXduOwogICAgIGJvb2wgbV9oYXZlQ2hlY2tlZFBsYXlhYmlsaXR5OworCisjaWYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwODAKKyAgICBSZXRhaW5QdHI8QVZBc3Nl
dEltYWdlR2VuZXJhdG9yPiBtX2ltYWdlR2VuZXJhdG9yOworI2Vsc2UKKyAgICBSZXRhaW5QdHI8
QVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQ+IG1fdmlkZW9PdXRwdXQ7CisgICAgUmV0YWluUHRyPENW
UGl4ZWxCdWZmZXJSZWY+IG1fbGFzdEltYWdlOworI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQppbmRleCA1OWE3MmY3ODk1ZDljZTY2NDA3NmZjOGRkYTJjYmQwNDBlMTJlMDgw
Li5jZjc1ZDBjZjZjZmQ3NjA4YWQ3MWQ2NzdmNDZmMWU3Njk4NzhhMzY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KQEAgLTU2LDYgKzU2LDcgQEAgU09GVF9MSU5LKENvcmVNZWRpYSwgQ01UaW1l
UmFuZ2VHZXRFbmQsIENNVGltZSwgKENNVGltZVJhbmdlIHJhbmdlKSwgKHJhbmdlKSkKIAogU09G
VF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZQbGF5ZXIpCiBTT0ZUX0xJTktfQ0xBU1MoQVZG
b3VuZGF0aW9uLCBBVlBsYXllckl0ZW0pCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBB
VlBsYXllckl0ZW1WaWRlb091dHB1dCkKIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFW
UGxheWVyTGF5ZXIpCiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0KQog
U09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZBc3NldEltYWdlR2VuZXJhdG9yKQpAQCAt
NzMsNiArNzQsNyBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQ29yZU1lZGlhLCBrQ01UaW1lWmVybywg
Q01UaW1lKQogCiAjZGVmaW5lIEFWUGxheWVyIGdldEFWUGxheWVyQ2xhc3MoKQogI2RlZmluZSBB
VlBsYXllckl0ZW0gZ2V0QVZQbGF5ZXJJdGVtQ2xhc3MoKQorI2RlZmluZSBBVlBsYXllckl0ZW1W
aWRlb091dHB1dCBnZXRBVlBsYXllckl0ZW1WaWRlb091dHB1dENsYXNzKCkKICNkZWZpbmUgQVZQ
bGF5ZXJMYXllciBnZXRBVlBsYXllckxheWVyQ2xhc3MoKQogI2RlZmluZSBBVlVSTEFzc2V0IGdl
dEFWVVJMQXNzZXRDbGFzcygpCiAjZGVmaW5lIEFWQXNzZXRJbWFnZUdlbmVyYXRvciBnZXRBVkFz
c2V0SW1hZ2VHZW5lcmF0b3JDbGFzcygpCkBAIC0xODMsMTIgKzE4NSwyNiBAQCBib29sIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Omhhc0xheWVyUmVuZGVyZXIoKSBjb25zdAog
CiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Omhhc0NvbnRleHRSZW5k
ZXJlcigpIGNvbnN0CiB7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDgwCisgICAgcmV0dXJuIG1fdmlkZW9PdXRwdXQ7CisjZWxzZQogICAgIHJldHVybiBtX2ltYWdl
R2VuZXJhdG9yOworI2VuZGlmCiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y3JlYXRlQ29udGV4dFZpZGVvUmVuZGVyZXIoKQogewotICAgIExPRyhNZWRpYSwg
Ik1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUNvbnRleHRWaWRlb1Jl
bmRlcmVyKCVwKSIsIHRoaXMpOworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTA4MAorICAgIGNyZWF0ZVZpZGVvT3V0cHV0KCk7CisjZWxzZQorICAgIGNyZWF0ZUltYWdl
R2VuZXJhdG9yKCk7CisjZW5kaWYKK30KKworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPCAxMDgwCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNy
ZWF0ZUltYWdlR2VuZXJhdG9yKCkKK3sKKyAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVJbWFnZUdlbmVyYXRvciglcCkiLCB0aGlzKTsKIAog
ICAgIGlmICghbV9hdkFzc2V0IHx8IG1faW1hZ2VHZW5lcmF0b3IpCiAgICAgICAgIHJldHVybjsK
QEAgLTIwMiwxNiArMjE4LDI4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6Y3JlYXRlQ29udGV4dFZpZGVvUmVuZGVyZXIoKQogCiAgICAgTE9HKE1lZGlhLCAiTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlSW1hZ2VHZW5lcmF0b3IoJXAp
IC0gcmV0dXJuaW5nICVwIiwgdGhpcywgbV9pbWFnZUdlbmVyYXRvci5nZXQoKSk7CiB9CisjZW5k
aWYKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpkZXN0cm95Q29u
dGV4dFZpZGVvUmVuZGVyZXIoKQogeworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTA4MAorICAgIGRlc3Ryb3lWaWRlb091dHB1dCgpOworI2Vsc2UKKyAgICBkZXN0cm95
SW1hZ2VHZW5lcmF0b3IoKTsKKyNlbmRpZgorfQorCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA8IDEwODAKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6ZGVzdHJveUltYWdlR2VuZXJhdG9yKCkKK3sKICAgICBpZiAoIW1faW1hZ2VHZW5lcmF0b3Ip
CiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmRlc3Ryb3lDb250ZXh0VmlkZW9SZW5kZXJlciglcCkgLSBkZXN0cm95
aW5nICAlcCIsIHRoaXMsIG1faW1hZ2VHZW5lcmF0b3IuZ2V0KCkpOworICAgIExPRyhNZWRpYSwg
Ik1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRlc3Ryb3lJbWFnZUdlbmVyYXRv
ciglcCkgLSBkZXN0cm95aW5nICAlcCIsIHRoaXMsIG1faW1hZ2VHZW5lcmF0b3IuZ2V0KCkpOwog
CiAgICAgbV9pbWFnZUdlbmVyYXRvciA9IDA7CiB9CisjZW5kaWYKIAogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRlb0xheWVyKCkKIHsKQEAgLTYxMSw2
ICs2MzksMjEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWlu
dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEkKICAgICBzZXREZWxheUNhbGxiYWNr
cyh0cnVlKTsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKKyNpZiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwODAKKyAgICBwYWludFdpdGhWaWRlb091dHB1
dChjb250ZXh0LCByZWN0KTsKKyNlbHNlCisgICAgcGFpbnRXaXRoSW1hZ2VHZW5lcmF0b3IoY29u
dGV4dCwgcmVjdCk7CisjZW5kaWYKKworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Cisg
ICAgc2V0RGVsYXlDYWxsYmFja3MoZmFsc2UpOworCisgICAgbV92aWRlb0ZyYW1lSGFzRHJhd24g
PSB0cnVlOworfQorCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwODAK
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoSW1hZ2VH
ZW5lcmF0b3IoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQor
ewogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IGNyZWF0ZUltYWdlRm9yVGltZUlu
UmVjdChjdXJyZW50VGltZSgpLCByZWN0KTsKICAgICBpZiAoaW1hZ2UpIHsKICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKQEAgLTYyMSwxMiAr
NjY0LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEkKICAgICAgICAgQ0dDb250ZXh0RHJhd0lt
YWdlKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAsIHBhaW50UmVj
dC53aWR0aCgpLCBwYWludFJlY3QuaGVpZ2h0KCkpLCBpbWFnZS5nZXQoKSk7CiAgICAgICAgIGlt
YWdlID0gMDsKICAgICB9Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHNl
dERlbGF5Q2FsbGJhY2tzKGZhbHNlKTsKLQotICAgIG1fdmlkZW9GcmFtZUhhc0RyYXduID0gdHJ1
ZTsKIH0KKyNlbmRpZgogCiBzdGF0aWMgSGFzaFNldDxTdHJpbmc+IG1pbWVUeXBlQ2FjaGUoKQog
ewpAQCAtNjQ0LDEwICs2ODMsMTEgQEAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiBtaW1lVHlwZUNh
Y2hlKCkKICAgICByZXR1cm4gY2FjaGU7CiB9IAogCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA8IDEwODAKIFJldGFpblB0cjxDR0ltYWdlUmVmPiBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVJbWFnZUZvclRpbWVJblJlY3QoZmxvYXQgdGltZSwg
Y29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoIW1faW1hZ2VHZW5lcmF0b3IpCi0gICAg
ICAgIGNyZWF0ZUNvbnRleHRWaWRlb1JlbmRlcmVyKCk7CisgICAgICAgIGNyZWF0ZUltYWdlR2Vu
ZXJhdG9yKCk7CiAgICAgQVNTRVJUKG1faW1hZ2VHZW5lcmF0b3IpOwogCiAjaWYgIUxPR19ESVNB
QkxFRApAQCAtNjY0LDYgKzcwNCw3IEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVJbWFnZUZvclRpbWVJblJlCiAKICAgICBy
ZXR1cm4gaW1hZ2U7CiB9CisjZW5kaWYKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4mIHN1cHBvcnRlZFR5
cGVzKQogewpAQCAtNzgxLDYgKzgyMiw4MSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKICAgICByZXR1cm4g
cmVzb2x2ZWRPcmlnaW4tPmlzU2FtZVNjaGVtZUhvc3RQb3J0KHJlcXVlc3RlZE9yaWdpbi5nZXQo
KSk7CiB9CiAKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwODAKK3Zv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9PdXRwdXQo
KQoreworICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OmNyZWF0ZVZpZGVvT3V0cHV0KCVwKSIsIHRoaXMpOworCisgICAgaWYgKCFtX2F2UGxheWVySXRl
bSB8fCBtX3ZpZGVvT3V0cHV0KQorICAgICAgICByZXR1cm47CisKKyAgICBOU0RpY3Rpb25hcnkq
IGF0dHJpYnV0ZXMgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6
W05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDprMzJCR1JBUGl4ZWxGb3JtYXRdLCBrQ1ZQ
aXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbmlsXTsKKyAgICBtX3ZpZGVvT3V0cHV0LmFkb3B0TlMoW1tBVlBsYXllckl0ZW1WaWRl
b091dHB1dCBhbGxvY10gaW5pdFdpdGhQaXhlbEJ1ZmZlckF0dHJpYnV0ZXM6YXR0cmlidXRlc10p
OworICAgIEFTU0VSVChtX3ZpZGVvT3V0cHV0KTsKKworICAgIFttX2F2UGxheWVySXRlbS5nZXQo
KSBhZGRPdXRwdXQ6bV92aWRlb091dHB1dC5nZXQoKV07CisKKyAgICBMT0coTWVkaWEsICJNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRlb091dHB1dCglcCkgLSBy
ZXR1cm5pbmcgJXAiLCB0aGlzLCBtX3ZpZGVvT3V0cHV0LmdldCgpKTsKK30KKwordm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpkZXN0cm95VmlkZW9PdXRwdXQoKQorewor
ICAgIGlmICghbV92aWRlb091dHB1dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fYXZQ
bGF5ZXJJdGVtKQorICAgICAgICBbbV9hdlBsYXllckl0ZW0uZ2V0KCkgcmVtb3ZlT3V0cHV0Om1f
dmlkZW9PdXRwdXQuZ2V0KCldOworICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmRlc3Ryb3lWaWRlb091dHB1dCglcCkgLSBkZXN0cm95aW5nICAlcCIs
IHRoaXMsIG1fdmlkZW9PdXRwdXQuZ2V0KCkpOworCisgICAgbV92aWRlb091dHB1dCA9IDA7Cit9
CisKK1JldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpjcmVhdGVQaXhlbEJ1ZmZlcigpCit7CisgICAgaWYgKCFtX3ZpZGVvT3V0cHV0
KQorICAgICAgICBjcmVhdGVWaWRlb091dHB1dCgpOworICAgIEFTU0VSVChtX3ZpZGVvT3V0cHV0
KTsKKworI2lmICFMT0dfRElTQUJMRUQKKyAgICBkb3VibGUgc3RhcnQgPSBXVEY6OmN1cnJlbnRU
aW1lKCk7CisjZW5kaWYKKworICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBidWZmZXIg
PSBhZG9wdENGKFttX3ZpZGVvT3V0cHV0LmdldCgpIGNvcHlQaXhlbEJ1ZmZlckZvckl0ZW1UaW1l
OlttX2F2UGxheWVySXRlbS5nZXQoKSBjdXJyZW50VGltZV0gaXRlbVRpbWVGb3JEaXNwbGF5Om5p
bF0pOworCisjaWYgIUxPR19ESVNBQkxFRAorICAgIGRvdWJsZSBkdXJhdGlvbiA9IFdURjo6Y3Vy
cmVudFRpbWUoKSAtIHN0YXJ0OworICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNyZWF0ZVBpeGVsQnVmZmVyKCkgLSBjcmVhdGluZyBidWZmZXIgdG9v
ayAlLjRmIiwgdGhpcywgbmFycm93UHJlY2lzaW9uVG9GbG9hdChkdXJhdGlvbikpOworI2VuZGlm
CisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJl
Zj4gcGl4ZWxCdWZmZXIgPSBjcmVhdGVQaXhlbEJ1ZmZlcigpOworCisgICAgLy8gQ2FsbHMgdG8g
Y29weVBpeGVsQnVmZmVyRm9ySXRlbVRpbWU6aXRlbVRpbWVGb3JEaXNwbGF5OiBtYXkgcmV0dXJu
IG5pbCBpZiB0aGUgcGl4ZWwgYnVmZmVyCisgICAgLy8gZm9yIHRoZSByZXF1ZXN0ZWQgdGltZSBo
YXMgYWxyZWFkeSBiZWVuIHJldHJpZXZlZC4gSW4gdGhpcyBjYXNlLCB0aGUgbGFzdCB2YWxpZCBp
bWFnZSAoaWYgYW55KQorICAgIC8vIHNob3VsZCBiZSBkaXNwbGF5ZWQuCisgICAgaWYgKHBpeGVs
QnVmZmVyKQorICAgICAgICBtX2xhc3RJbWFnZSA9IHBpeGVsQnVmZmVyOworCisgICAgaWYgKG1f
bGFzdEltYWdlKSB7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqY29udGV4dCk7CisgICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShyZWN0LngoKSwgcmVjdC55
KCkgKyByZWN0LmhlaWdodCgpKTsKKyAgICAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEu
MGYsIC0xLjBmKSk7CisgICAgICAgIFJldGFpblB0cjxDSUltYWdlPiBpbWFnZShBZG9wdE5TLCBb
W0NJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ1ZJbWFnZUJ1ZmZlcjptX2xhc3RJbWFnZS5nZXQoKV0p
OworCisgICAgICAgIC8vIGNpQ29udGV4dCBkb2VzIG5vdCB1c2UgYSBSZXRhaW5QdHIgZm9yIHJl
c3VsdHMgb2YgY29udGV4dFdpdGhDR0NvbnRleHQ6LCBhcyB0aGUgcmV0dXJuZWQgdmFsdWUKKyAg
ICAgICAgLy8gaXMgYXV0b3JlbGVhc2VkLCBhbmQgdGhlcmUgaXMgbm8gbm9uLWF1dG9yZWxlYXNl
ZCB2ZXJzaW9uIG9mIHRoYXQgZnVuY3Rpb24uCisgICAgICAgIENJQ29udGV4dCogY2lDb250ZXh0
ID0gW0NJQ29udGV4dCBjb250ZXh0V2l0aENHQ29udGV4dDpjb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKSBvcHRpb25zOm5pbF07CisgICAgICAgIFtjaUNvbnRleHQgZHJhd0ltYWdlOmltYWdlLmdl
dCgpIGluUmVjdDpyZWN0IGZyb21SZWN0OnJlY3RdOworICAgIH0KK30KKworI2VuZGlmCisKIE5T
QXJyYXkqIGFzc2V0TWV0YWRhdGFLZXlOYW1lcygpCiB7CiAgICAgc3RhdGljIE5TQXJyYXkqIGtl
eXM7Cg==
</data>
<flag name="review"
          id="167715"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>