<?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>205238</bug_id>
          
          <creation_ts>2019-12-14 11:10:03 -0800</creation_ts>
          <short_desc>Remove the &quot;needsFullOrderingComparisons&quot; feature from PODRedBlackTree</short_desc>
          <delta_ts>2020-01-13 22:24:37 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>andersca</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1598652</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-12-14 11:10:03 -0800</bug_when>
    <thetext>Remove the &quot;needsFullOrderingComparisons&quot; feature from PODRedBlackTree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598656</commentid>
    <comment_count>1</comment_count>
      <attachid>385695</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-12-14 11:20:49 -0800</bug_when>
    <thetext>Created attachment 385695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600775</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-12-20 09:53:10 -0800</bug_when>
    <thetext>I am not able to reproduce the mac-wk2 EWS test failure locally. Re-running the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600817</commentid>
    <comment_count>3</comment_count>
      <attachid>386227</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-12-20 11:11:01 -0800</bug_when>
    <thetext>Created attachment 386227
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600918</commentid>
    <comment_count>4</comment_count>
      <attachid>386227</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-12-20 14:04:28 -0800</bug_when>
    <thetext>Comment on attachment 386227
Patch

Seems to me that the media/track/track-cue-rendering-horizontal.html must be a real regression. I wonder why i can’t reproduce it locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602281</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-02 16:23:26 -0800</bug_when>
    <thetext>No that failure went away when I retried the EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605676</commentid>
    <comment_count>6</comment_count>
      <attachid>387479</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-12 11:17:25 -0800</bug_when>
    <thetext>Created attachment 387479
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605710</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-12 15:07:34 -0800</bug_when>
    <thetext>OK, worked around the Windows build failure, all tests are passing, so this is now ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605862</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-13 08:48:42 -0800</bug_when>
    <thetext>I have another patch to follow this one with further refinements, but I think it’s best to land this is smaller incremental steps. So I want to get this reviewed and landed as-is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606166</commentid>
    <comment_count>9</comment_count>
      <attachid>387479</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-01-13 17:41:33 -0800</bug_when>
    <thetext>Comment on attachment 387479
Patch

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

&gt; Source/WebCore/platform/PODInterval.h:3
&gt; + * Copyright (C) 2019 Apple Inc. All rights reserved.

2020!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606204</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-13 19:18:13 -0800</bug_when>
    <thetext>Committed r254483: &lt;https://trac.webkit.org/changeset/254483&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606205</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-13 19:19:10 -0800</bug_when>
    <thetext>&lt;rdar://problem/58554372&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385695</attachid>
            <date>2019-12-14 11:20:49 -0800</date>
            <delta_ts>2019-12-20 11:11:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205238-20191214112044.patch</filename>
            <type>text/plain</type>
            <size>31492</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVkMTQzM2ZhNWExZjdh
ZDY3YTQ0M2Q3ZmRjOTMxYjk5NmIzMmI0MS4uNTdjMWUyNmJkNjAyMGIwNzg3NTc0MWVjYzIwMjY4
ODNjNDFlODI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE5LTEyLTE0ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlICJuZWVkc0Z1
bGxPcmRlcmluZ0NvbXBhcmlzb25zIiBmZWF0dXJlIGZyb20gUE9EUmVkQmxhY2tUcmVlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVBY3RpdmVUZXh0VHJhY2tDdWVzKTogU2ltcGxpZmllZCBjb2RlIGFuZAorICAgICAgICBlbGlt
aW5hdGUgdXNlcyBvZiB0aGUgY3JlYXRlSW50ZXJ2YWwgZnVuY3Rpb24gdG8gY29uc3RydWN0IFBP
REludGVydmFsIG9iamVjdHMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0
ZXh0VHJhY2tBZGRDdWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OnRleHRUcmFja1JlbW92ZUN1ZSk6IERpdHRvLgorCisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6IFJlbW92ZWQgdW5uZWNlc3NhcnkgaW5jbHVkZSBvZiBQT0RJbnRlcnZhbC5o
LgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOiBBZGRl
ZCBpbmNsdWRlIG9mIFBPREludGVydmFsLmguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QT0RJbnRl
cnZhbC5oOiBDaGFuZ2VkIG9wZXJhdG9yPCB0byBjb21wYXJlIGxvdywgaGlnaCwgYW5kIHVzZXIK
KyAgICAgICAgZGF0YSwgbm90IGp1c3QgbG93IGFuZCBoaWdoIHNvIGl0J3MgY29uc2lzdGVudCB3
aXRoIG9wZXJhdG9yPT0gYW5kIHdlCisgICAgICAgIGNhbiB1c2UgaXQgdG8gc2VhcmNoIGEgdHJl
ZS4gQWRkZWQgYSBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIGZvciBXZWFrUHRyCisgICAgICAgIHNp
bmNlIGEgV2Vha1B0cidzIHZhbHVlIGNhbiBjaGFuZ2UgKHRvIG51bGwpIHNvIGl0IGNhbid0IGJl
IHVzZWQgZm9yCisgICAgICAgIG9yZGVyaW5nIGFuZCBlcXVhbGl0eSBjaGVja3M7IGx1Y2tpbHkg
dGhlIGNsaWVudHMgZG9uJ3QgbmVlZCB0byB1c2UgaXQKKyAgICAgICAgdGhhdCB3YXk7IHRoZXkg
YnVpbGQgYW4gaW50ZXJ2YWwgdHJlZSBidXQgbmV2ZXIgc2VhcmNoIGZvciBhbnl0aGluZyBvcgor
ICAgICAgICByZW1vdmUgYW55dGhpbmcgZnJvbSB0aGUgdHJlZS4KKworICAgICAgICAqIHBsYXRm
b3JtL1BPREludGVydmFsVHJlZS5oOiBNYWtlIHRoZSBzZWFyY2ggYWRhcHRlciB1c2VkIHRvIGZp
bmQgb3ZlcmxhcHMKKyAgICAgICAgYSBtZW1iZXIgY2xhc3MgaW5zdGVhZCBvZiBhIHRvcCBsZXZl
bCBjbGFzcyB0ZW1wbGF0ZSBhbmQgc2ltcGxpZmllZCBpdCBhIGJpdC4KKyAgICAgICAgUmVtb3Zl
ZCB0aGUgdW5uZWVkZWQgY3JlYXRlSW50ZXJ2YWwgZnVuY3Rpb24uIFN0b3BwZWQgcGFzc2luZyB0
cnVlIGZvcgorICAgICAgICAibmVlZHNGdWxsT3JkZXJpbmdDb21wYXJpc29ucyIgc2luY2UgaXQn
cyBub3QgbmVlZGVkIGFueSBtb3JlIGR1ZSB0byB0aGUKKyAgICAgICAgY2hhbmdlcyB0byBQT0RJ
bnRlcnZhbC4KKworICAgICAgICAqIHBsYXRmb3JtL1BPRFJlZEJsYWNrVHJlZS5oOiBSZW1vdmVk
IHRoZSAibmVlZHNGdWxsT3JkZXJpbmdDb21wYXJpc29ucyIKKyAgICAgICAgdGVtcGxhdGUgYXJn
dW1lbnQgZm9yIHRoZSBQT0RSZWRCbGFja1RyZWUgY2xhc3MgdGVtcGxhdGUuCisgICAgICAgIChX
ZWJDb3JlOjpQT0RSZWRCbGFja1RyZWU6Ok5vZGU6Om1vdmVEYXRhRnJvbSk6IFRha2UgYSByZWZl
cmVuY2UgKHdoeSBub3QsCisgICAgICAgIHNpbmNlIHRoaXMgYWx3YXlzIHJlcXVpcmVzIGEgbm9u
LW51bGwgcG9pbnRlcikuCisgICAgICAgIChXZWJDb3JlOjpQT0RSZWRCbGFja1RyZWU6OnVwZGF0
ZU5vZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBPRFJlZEJsYWNrVHJlZTo6dHJlZVNl
YXJjaCBjb25zdCk6IE1lcmdlZCB0aGUgdGhyZWUgc2VhcmNoCisgICAgICAgIGZ1bmN0aW9ucyBp
bnRvIGEgc2luZ2xlIG9uZSBzaW5jZSB3ZSBkb24ndCBuZWVkIHRoZSBwZWN1bGlhcgorICAgICAg
ICAiZnVsbCBjb21wYXJpc29ucyIgbW9kZS4KKyAgICAgICAgKFdlYkNvcmU6OlBPRFJlZEJsYWNr
VHJlZTo6cHJvcGFnYXRlVXBkYXRlcyk6IFNpbXBsaWZpZWQgbG9naWMgdG8gcmVtb3ZlCisgICAg
ICAgIHRoZSBib29sZWFuIGxvY2FsIHZhcmlhYmxlLgorICAgICAgICAoV2ViQ29yZTo6UE9EUmVk
QmxhY2tUcmVlOjpkdW1wU3VidHJlZSBjb25zdCk6IFJlbmFtZWQgZnJvbSBkdW1wRnJvbU5vZGUK
KyAgICAgICAgc2luY2UgdGhlIGNvbW1lbnQgc2FpZCAiZHVtcHMgdGhlIHN1YnRyZWUiLiBBbHNv
IHJlbW92ZWQgdGhlIGNvbW1lbnQgbm93CisgICAgICAgIHRoYXQgdGhlIGZ1bmN0aW9uIG5hbWUg
c2F5cyB3aGF0IGl0IHNhaWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvRmxvYXRpbmdPYmplY3Rz
Lmg6IFJlbW92ZWQgdW5uZWNlc3NhcnkgaW5jbHVkZSBvZiBQT0RJbnRlcnZhbC5oLgorCiAyMDE5
LTEyLTEyICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1v
dmUgZGVidWcgQVNTRVJUIGluIFBlZXJDb25uZWN0aW9uQmFja2VuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZWI1ZmY1NjdlZDgxMGRmYzE4NTEwNjgwMzI5
M2EyZDU2NGNlMjM0OS4uM2U3OTdhMTM5YTVmODFjYTk5NWFjYjM2NTkyY2M3ZDIxODgwMmE1OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xNjkzLDkgKzE2
OTMsOCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMo
Y29uc3QgTWVkaWFUaW1lJiBtb3ZpZVRpbWUpCiAKICAgICAvLyBUaGUgdXNlciBhZ2VudCBtdXN0
IHN5bmNocm9ub3VzbHkgdW5zZXQgW3RoZSB0ZXh0IHRyYWNrIGN1ZSBhY3RpdmVdIGZsYWcKICAg
ICAvLyB3aGVuZXZlciAuLi4gdGhlIG1lZGlhIGVsZW1lbnQncyByZWFkeVN0YXRlIGlzIGNoYW5n
ZWQgYmFjayB0byBIQVZFX05PVEhJTkcuCi0gICAgYXV0byBtb3ZpZVRpbWVJbnRlcnZhbCA9IG1f
Y3VlRGF0YS0+Y3VlVHJlZS5jcmVhdGVJbnRlcnZhbChtb3ZpZVRpbWUsIG1vdmllVGltZSk7CiAg
ICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBIQVZFX05PVEhJTkcgJiYgbV9wbGF5ZXIpIHsKLSAgICAg
ICAgY3VycmVudEN1ZXMgPSBtX2N1ZURhdGEtPmN1ZVRyZWUuYWxsT3ZlcmxhcHMobW92aWVUaW1l
SW50ZXJ2YWwpOworICAgICAgICBjdXJyZW50Q3VlcyA9IG1fY3VlRGF0YS0+Y3VlVHJlZS5hbGxP
dmVybGFwcyh7IG1vdmllVGltZSwgbW92aWVUaW1lIH0pOwogICAgICAgICBpZiAoY3VycmVudEN1
ZXMuc2l6ZSgpID4gMSkKICAgICAgICAgICAgIHN0ZDo6c29ydChjdXJyZW50Q3Vlcy5iZWdpbigp
LCBjdXJyZW50Q3Vlcy5lbmQoKSwgJmNvbXBhcmVDdWVJbnRlcnZhbCk7CiAgICAgfQpAQCAtMTc2
NSw3ICsxNzY0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJh
Y2tDdWVzKGNvbnN0IE1lZGlhVGltZSYgbW92aWVUaW1lKQogICAgIGlmIChhdXRvIG5lYXJlc3RF
bmRpbmdDdWUgPSBzdGQ6Om1pbl9lbGVtZW50KGN1cnJlbnRDdWVzLmJlZ2luKCksIGN1cnJlbnRD
dWVzLmVuZCgpLCBjb21wYXJlQ3VlSW50ZXJ2YWxFbmRUaW1lKSkKICAgICAgICAgbmV4dEludGVy
ZXN0aW5nVGltZSA9IG5lYXJlc3RFbmRpbmdDdWUtPmRhdGEoKS0+ZW5kTWVkaWFUaW1lKCk7CiAK
LSAgICBPcHRpb25hbDxDdWVJbnRlcnZhbD4gbmV4dEN1ZSA9IG1fY3VlRGF0YS0+Y3VlVHJlZS5u
ZXh0SW50ZXJ2YWxBZnRlcihtb3ZpZVRpbWVJbnRlcnZhbC5oaWdoKCkpOworICAgIE9wdGlvbmFs
PEN1ZUludGVydmFsPiBuZXh0Q3VlID0gbV9jdWVEYXRhLT5jdWVUcmVlLm5leHRJbnRlcnZhbEFm
dGVyKG1vdmllVGltZSk7CiAgICAgaWYgKG5leHRDdWUpCiAgICAgICAgIG5leHRJbnRlcmVzdGlu
Z1RpbWUgPSBzdGQ6Om1pbihuZXh0SW50ZXJlc3RpbmdUaW1lLCBuZXh0Q3VlLT5sb3coKSk7CiAK
QEAgLTIwNTQsNyArMjA1Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrQWRk
Q3VlKFRleHRUcmFjayYgdHJhY2ssIFRleHRUcmFja0N1ZSYgY3VlKQogICAgIC8vIHplcm8tbGVu
Z3RoIGN1ZXMuCiAgICAgTWVkaWFUaW1lIGVuZFRpbWUgPSBzdGQ6Om1heChjdWUuc3RhcnRNZWRp
YVRpbWUoKSwgY3VlLmVuZE1lZGlhVGltZSgpKTsKIAotICAgIEN1ZUludGVydmFsIGludGVydmFs
ID0gbV9jdWVEYXRhLT5jdWVUcmVlLmNyZWF0ZUludGVydmFsKGN1ZS5zdGFydE1lZGlhVGltZSgp
LCBlbmRUaW1lLCAmY3VlKTsKKyAgICBDdWVJbnRlcnZhbCBpbnRlcnZhbChjdWUuc3RhcnRNZWRp
YVRpbWUoKSwgZW5kVGltZSwgJmN1ZSk7CiAgICAgaWYgKCFtX2N1ZURhdGEtPmN1ZVRyZWUuY29u
dGFpbnMoaW50ZXJ2YWwpKQogICAgICAgICBtX2N1ZURhdGEtPmN1ZVRyZWUuYWRkKGludGVydmFs
KTsKICAgICB1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKGN1cnJlbnRNZWRpYVRpbWUoKSk7CkBA
IC0yMDY5LDcgKzIwNjgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja1JlbW92
ZUN1ZShUZXh0VHJhY2smLCBUZXh0VHJhY2tDdWUmIGN1ZSkKICAgICAvLyB6ZXJvLWxlbmd0aCBj
dWVzLgogICAgIE1lZGlhVGltZSBlbmRUaW1lID0gc3RkOjptYXgoY3VlLnN0YXJ0TWVkaWFUaW1l
KCksIGN1ZS5lbmRNZWRpYVRpbWUoKSk7CiAKLSAgICBDdWVJbnRlcnZhbCBpbnRlcnZhbCA9IG1f
Y3VlRGF0YS0+Y3VlVHJlZS5jcmVhdGVJbnRlcnZhbChjdWUuc3RhcnRNZWRpYVRpbWUoKSwgZW5k
VGltZSwgJmN1ZSk7CisgICAgQ3VlSW50ZXJ2YWwgaW50ZXJ2YWwoY3VlLnN0YXJ0TWVkaWFUaW1l
KCksIGVuZFRpbWUsICZjdWUpOwogICAgIG1fY3VlRGF0YS0+Y3VlVHJlZS5yZW1vdmUoaW50ZXJ2
YWwpOwogCiAgICAgLy8gU2luY2UgdGhlIGN1ZSB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgbWVk
aWEgZWxlbWVudCBhbmQgbGlrZWx5IHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaAppbmRleCBhNWYxODdiNzhmOTQ2MTQxNDllZDJjM2Q2NGY0ZGE2ODRhM2JjNjJlLi45ZTg5
NzVmMzJiNWMxOGVmMmFmZTRiNmE5OGVhZDNlMTU4MTlmNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNDcsNyArNDcsNiBAQAogI2lmIEVOQUJMRShWSURFT19U
UkFDSykKICNpbmNsdWRlICJBdWRpb1RyYWNrLmgiCiAjaW5jbHVkZSAiQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlcy5oIgotI2luY2x1ZGUgIlBPREludGVydmFsLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNr
LmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlLmgiCiAjaW5jbHVkZSAiVlRUQ3VlLmgiCkBAIC0x
MDYsNiArMTA1LDcgQEAgY2xhc3MgVmlkZW9UcmFja1ByaXZhdGU7CiBjbGFzcyBXZWJLaXRNZWRp
YUtleXM7CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBET01Qcm9taXNlRGVmZXJyZWQ7Cit0
ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWU+IGNsYXNzIFBPREludGVydmFsOwogCiAjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKIGNsYXNzIFJlbW90ZVBsYXliYWNrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3Bw
CmluZGV4IDBjYmQwYTNjY2UwMzkyOTViNDkyNWNlMzFhMDU0ZTFmNjkxMGQ5MzAuLjM0YmEzNzJk
NDkxNDNjZmUyOTNhN2MyYTg5NDVlNDBmMzUxYjEwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKQEAgLTQ4LDYgKzQ4LDcg
QEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFDb250cm9scy5oIgogI2lu
Y2x1ZGUgIk1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJQT0RJbnRlcnZhbC5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BPREludGVydmFsLmgKaW5kZXggOTZlMDQ3YjZkODQxOWQ1
MWQ4ODQzYjY0NGVlNmVlYjgwMmQ0ZjExMi4uMWUxNGNhNTg5NjNhZjU2YWEwNWY1NWU2NWE2YWQy
NDQyMDdhMjYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2
YWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QT0RJbnRlcnZhbC5oCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNTcgKzMyLDQz
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQ2xhc3MgcmVwcmVzZW50aW5nIGEgY2xv
c2VkIGludGVydmFsIHdoaWNoIGNhbiBob2xkIGFyYml0cmFyeQotLy8gZW5kcG9pbnRzIGFuZCBh
IHBpZWNlIG9mIHVzZXIKLS8vIGRhdGEuIEFuIGltcG9ydGFudCBjaGFyYWN0ZXJpc3RpYyBmb3Ig
dGhlIGFsZ29yaXRobXMgd2UgdXNlIGlzIHRoYXQKLS8vIGlmIHR3byBpbnRlcnZhbHMgaGF2ZSBp
ZGVudGljYWwgZW5kcG9pbnRzIGJ1dCBkaWZmZXJlbnQgdXNlciBkYXRhLAotLy8gdGhleSBhcmUg
bm90IGNvbnNpZGVyZWQgdG8gYmUgZXF1YWwuIFRoaXMgc2l0dWF0aW9uIGNhbiBhcmlzZSB3aGVu
Ci0vLyByZXByZXNlbnRpbmcgdGhlIHZlcnRpY2FsIGV4dGVudHMgb2YgYm91bmRpbmcgYm94ZXMg
b2Ygb3ZlcmxhcHBpbmcKLS8vIHRyaWFuZ2xlcywgd2hlcmUgdGhlIHBvaW50ZXIgdG8gdGhlIHRy
aWFuZ2xlIGlzIHRoZSB1c2VyIGRhdGEgb2YKLS8vIHRoZSBpbnRlcnZhbC4KKy8vIENsYXNzIHRl
bXBsYXRlIHJlcHJlc2VudGluZyBhIGNsb3NlZCBpbnRlcnZhbCB3aGljaCBjYW4gaG9sZCBhcmJp
dHJhcnkKKy8vIGVuZHBvaW50cyBhbmQgYSBwaWVjZSBvZiB1c2VyIGRhdGEuIE9yZGVyaW5nIGFu
ZCBlcXVhbGl0eSBhcmUgZGVmaW5lZAorLy8gaW5jbHVkaW5nIHRoZSBVc2VyRGF0YSwgZXhjZXB0
IGluIHRoZSBzcGVjaWFsIGNhc2Ugb2YgV2Vha1B0ci4KIC8vCi0vLyAqTm90ZSogdGhhdCB0aGUg
ZGVzdHJ1Y3RvcnMgb2YgdHlwZSBUIGFuZCBVc2VyRGF0YSB3aWxsICpub3QqIGJlCi0vLyBjYWxs
ZWQgYnkgdGhpcyBjbGFzcy4gVGhleSBtdXN0IG5vdCBhbGxvY2F0ZSBhbnkgbWVtb3J5IHRoYXQg
aXMKLS8vIHJlcXVpcmVkIHRvIGJlIGNsZWFuZWQgdXAgaW4gdGhlaXIgZGVzdHJ1Y3RvcnMuCi0v
LwotLy8gVGhlIGZvbGxvd2luZyBjb25zdHJ1Y3RvcnMgYW5kIG9wZXJhdG9ycyBtdXN0IGJlIGlt
cGxlbWVudGVkIG9uCi0vLyB0eXBlIFQ6Ci0vLwotLy8gICAtIENvcHkgY29uc3RydWN0b3IKLS8v
ICAgLSBvcGVyYXRvcjwKLS8vICAgLSBvcGVyYXRvcj09Ci0vLyAgIC0gb3BlcmF0b3I9Ci0vLwot
Ly8gVGhlIFVzZXJEYXRhIHR5cGUgbXVzdCBzdXBwb3J0IGEgY29weSBjb25zdHJ1Y3RvciBhbmQg
YXNzaWdubWVudAotLy8gb3BlcmF0b3IuCisvLyBCb3RoIHRoZSBUIGFuZCBVc2VyRGF0YSB0eXBl
cyBtdXN0IHN1cHBvcnQgYSBjb3B5IGNvbnN0cnVjdG9yLCBvcGVyYXRvcjwsCisvLyBvcGVyYXRv
cj09LCBhbmQgb3BlcmF0b3I9LCBleGNlcHQgdGhhdCB0aGlzIGRvZXMgbm90IGRlcGVuZCBvbiBv
cGVyYXRvcjwKKy8vIG9yIG9wZXJhdG9yPT0gZm9yIFdlYWtQdHIuCiAvLwogLy8gSW4gZGVidWcg
bW9kZSwgcHJpbnRpbmcgb2YgaW50ZXJ2YWxzIGFuZCB0aGUgZGF0YSB0aGV5IGNvbnRhaW4gaXMK
IC8vIGVuYWJsZWQuIFRoaXMgdXNlcyBXVEY6OlRleHRTdHJlYW0uCiAvLwotLy8gTm90ZSB0aGF0
IHRoaXMgY2xhc3MgcmVxdWlyZXMgYSBjb3B5IGNvbnN0cnVjdG9yIGFuZCBhc3NpZ25tZW50Ci0v
LyBvcGVyYXRvciBpbiBvcmRlciB0byBiZSBzdG9yZWQgaW4gdGhlIHJlZC1ibGFjayB0cmVlLgor
Ly8gTm90ZSB0aGF0IHRoaXMgY2xhc3Mgc3VwcGxpZXMgYSBjb3B5IGNvbnN0cnVjdG9yIGFuZCBh
c3NpZ25tZW50CisvLyBvcGVyYXRvciBpbiBvcmRlciBzbyBpdCBjYW4gYmUgc3RvcmVkIGluIHRo
ZSByZWQtYmxhY2sgdHJlZS4KIAogLy8gRklYTUU6IFRoZSBwcmVmaXggIlBPRCIgaGVyZSBpc24n
dCBjb3JyZWN0OyB0aGlzIHdvcmtzIHdpdGggbm9uLVBPRCB0eXBlcy4KIAotdGVtcGxhdGU8Y2xh
c3MgVCwgY2xhc3MgVXNlckRhdGE+Ci1jbGFzcyBQT0RJbnRlcnZhbCB7Cit0ZW1wbGF0ZTxjbGFz
cyBULCBjbGFzcyBVc2VyRGF0YT4gY2xhc3MgUE9ESW50ZXJ2YWxCYXNlIHsKIHB1YmxpYzoKLSAg
ICBQT0RJbnRlcnZhbChjb25zdCBUJiBsb3csIGNvbnN0IFQmIGhpZ2gpCi0gICAgICAgIDogbV9s
b3cobG93KQotICAgICAgICAsIG1faGlnaChoaWdoKQotICAgICAgICAsIG1fbWF4SGlnaChoaWdo
KQorICAgIGNvbnN0IFQmIGxvdygpIGNvbnN0IHsgcmV0dXJuIG1fbG93OyB9CisgICAgY29uc3Qg
VCYgaGlnaCgpIGNvbnN0IHsgcmV0dXJuIG1faGlnaDsgfQorICAgIGNvbnN0IFVzZXJEYXRhJiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisKKyAgICBib29sIG92ZXJsYXBzKGNvbnN0
IFQmIGxvdywgY29uc3QgVCYgaGlnaCkgY29uc3QKICAgICB7CisgICAgICAgIHJldHVybiAhKG1f
aGlnaCA8IGxvdyB8fCBoaWdoIDwgbV9sb3cpOwogICAgIH0KIAotICAgIFBPREludGVydmFsKGNv
bnN0IFQmIGxvdywgY29uc3QgVCYgaGlnaCwgY29uc3QgVXNlckRhdGEmIGRhdGEpCi0gICAgICAg
IDogbV9sb3cobG93KQotICAgICAgICAsIG1faGlnaChoaWdoKQotICAgICAgICAsIG1fZGF0YShk
YXRhKQotICAgICAgICAsIG1fbWF4SGlnaChoaWdoKQorICAgIGJvb2wgb3ZlcmxhcHMoY29uc3Qg
UE9ESW50ZXJ2YWxCYXNlJiBvdGhlcikgY29uc3QKICAgICB7CisgICAgICAgIHJldHVybiBvdmVy
bGFwcyhvdGhlci5tX2xvdywgb3RoZXIubV9oaWdoKTsKICAgICB9CiAKLSAgICBQT0RJbnRlcnZh
bChjb25zdCBUJiBsb3csIGNvbnN0IFQmIGhpZ2gsIFVzZXJEYXRhJiYgZGF0YSkKKyAgICBjb25z
dCBUJiBtYXhIaWdoKCkgY29uc3QgeyByZXR1cm4gbV9tYXhIaWdoOyB9CisgICAgdm9pZCBzZXRN
YXhIaWdoKGNvbnN0IFQmIG1heEhpZ2gpIHsgbV9tYXhIaWdoID0gbWF4SGlnaDsgfQorCitwcm90
ZWN0ZWQ6CisgICAgUE9ESW50ZXJ2YWxCYXNlKGNvbnN0IFQmIGxvdywgY29uc3QgVCYgaGlnaCwg
VXNlckRhdGEmJiBkYXRhKQogICAgICAgICA6IG1fbG93KGxvdykKICAgICAgICAgLCBtX2hpZ2go
aGlnaCkKICAgICAgICAgLCBtX2RhdGEoV1RGTW92ZShkYXRhKSkKQEAgLTg5LDQ4ICs3Niw2NyBA
QCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIGNvbnN0IFQmIGxvdygpIGNvbnN0IHsgcmV0
dXJuIG1fbG93OyB9Ci0gICAgY29uc3QgVCYgaGlnaCgpIGNvbnN0IHsgcmV0dXJuIG1faGlnaDsg
fQotICAgIGNvbnN0IFVzZXJEYXRhJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9Citw
cml2YXRlOgorICAgIFQgbV9sb3c7CisgICAgVCBtX2hpZ2g7CisgICAgVXNlckRhdGEgbV9kYXRh
IHsgfTsKKyAgICBUIG1fbWF4SGlnaDsKK307CiAKLSAgICBib29sIG92ZXJsYXBzKGNvbnN0IFQm
IGxvdywgY29uc3QgVCYgaGlnaCkgY29uc3QKK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFVzZXJE
YXRhPiBjbGFzcyBQT0RJbnRlcnZhbCA6IHB1YmxpYyBQT0RJbnRlcnZhbEJhc2U8VCwgVXNlckRh
dGE+IHsKK3B1YmxpYzoKKyAgICBQT0RJbnRlcnZhbChjb25zdCBUJiBsb3csIGNvbnN0IFQmIGhp
Z2gsIFVzZXJEYXRhJiYgZGF0YSA9IHsgfSkKKyAgICAgICAgOiBQT0RJbnRlcnZhbEJhc2U8VCwg
VXNlckRhdGE+KGxvdywgaGlnaCwgV1RGTW92ZShkYXRhKSkKICAgICB7Ci0gICAgICAgIGlmICh0
aGlzLT5oaWdoKCkgPCBsb3cpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlm
IChoaWdoIDwgdGhpcy0+bG93KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGJvb2wgb3ZlcmxhcHMoY29uc3QgUE9ESW50ZXJ2
YWwmIG90aGVyKSBjb25zdAorICAgIFBPREludGVydmFsKGNvbnN0IFQmIGxvdywgY29uc3QgVCYg
aGlnaCwgY29uc3QgVXNlckRhdGEmIGRhdGEpCisgICAgICAgIDogUE9ESW50ZXJ2YWwobG93LCBo
aWdoLCBVc2VyRGF0YSB7IGRhdGEgfSkKICAgICB7Ci0gICAgICAgIHJldHVybiBvdmVybGFwcyhv
dGhlci5sb3coKSwgb3RoZXIuaGlnaCgpKTsKICAgICB9CiAKLSAgICAvLyBSZXR1cm5zIHRydWUg
aWYgdGhpcyBpbnRlcnZhbCBpcyAibGVzcyIgdGhhbiB0aGUgb3RoZXIuIFRoZQotICAgIC8vIGNv
bXBhcmlzb24gaXMgcGVyZm9ybWVkIG9uIHRoZSBsb3cgZW5kcG9pbnRzIG9mIHRoZSBpbnRlcnZh
bHMuCiAgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgUE9ESW50ZXJ2YWwmIG90aGVyKSBjb25zdAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGxvdygpIDwgb3RoZXIubG93KCk7CisgICAgICAgIGlmIChC
YXNlOjpsb3coKSA8IG90aGVyLkJhc2U6OmxvdygpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIGlmIChvdGhlci5CYXNlOjpsb3coKSA8IEJhc2U6OmxvdygpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoQmFzZTo6aGlnaCgpIDwgb3RoZXIuQmFzZTo6
aGlnaCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChvdGhlci5CYXNl
OjpoaWdoKCkgPCBCYXNlOjpoaWdoKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHJldHVybiBCYXNlOjpkYXRhKCkgPCBvdGhlci5CYXNlOjpkYXRhKCk7CiAgICAgfQogCi0g
ICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgaW50ZXJ2YWwgaXMgc3RyaWN0bHkgZXF1YWwgdG8g
dGhlIG90aGVyLAotICAgIC8vIGluY2x1ZGluZyBjb21wYXJpc29uIG9mIHRoZSB1c2VyIGRhdGEu
CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBPREludGVydmFsJiBvdGhlcikgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiAobG93KCkgPT0gb3RoZXIubG93KCkKLSAgICAgICAgICAgICAg
ICAmJiBoaWdoKCkgPT0gb3RoZXIuaGlnaCgpCi0gICAgICAgICAgICAgICAgJiYgZGF0YSgpID09
IG90aGVyLmRhdGEoKSk7CisgICAgICAgIHJldHVybiBCYXNlOjpsb3coKSA9PSBvdGhlci5CYXNl
Ojpsb3coKQorICAgICAgICAgICAgJiYgQmFzZTo6aGlnaCgpID09IG90aGVyLkJhc2U6OmhpZ2go
KQorICAgICAgICAgICAgJiYgQmFzZTo6ZGF0YSgpID09IG90aGVyLkJhc2U6OmRhdGEoKTsKICAg
ICB9CiAKLSAgICBjb25zdCBUJiBtYXhIaWdoKCkgY29uc3QgeyByZXR1cm4gbV9tYXhIaWdoOyB9
Ci0gICAgdm9pZCBzZXRNYXhIaWdoKGNvbnN0IFQmIG1heEhpZ2gpIHsgbV9tYXhIaWdoID0gbWF4
SGlnaDsgfQorcHJpdmF0ZToKKyAgICB1c2luZyBCYXNlID0gUE9ESW50ZXJ2YWxCYXNlPFQsIFVz
ZXJEYXRhPjsKK307CisKK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+IGNsYXNzIFBPREludGVy
dmFsPFQsIFdURjo6V2Vha1B0cjxVPj4gOiBwdWJsaWMgUE9ESW50ZXJ2YWxCYXNlPFQsIFdURjo6
V2Vha1B0cjxVPj4geworcHVibGljOgorICAgIFBPREludGVydmFsKGNvbnN0IFQmIGxvdywgY29u
c3QgVCYgaGlnaCwgV1RGOjpXZWFrUHRyPFU+JiYgZGF0YSkKKyAgICAgICAgOiBQT0RJbnRlcnZh
bEJhc2U8VCwgV1RGOjpXZWFrUHRyPFU+Pihsb3csIGhpZ2gsIFdURk1vdmUoZGF0YSkpCisgICAg
eworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFBPREludGVydmFsJiBvdGhlcikg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmIChCYXNlOjpsb3coKSA8IG90aGVyLkJhc2U6Omxvdygp
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChvdGhlci5CYXNlOjpsb3co
KSA8IEJhc2U6OmxvdygpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm4gQmFzZTo6aGlnaCgpIDwgb3RoZXIuQmFzZTo6aGlnaCgpOworICAgIH0KIAogcHJpdmF0ZToK
LSAgICBUIG1fbG93OwotICAgIFQgbV9oaWdoOwotICAgIFVzZXJEYXRhIG1fZGF0YSB7IH07Ci0g
ICAgVCBtX21heEhpZ2g7CisgICAgdXNpbmcgQmFzZSA9IFBPREludGVydmFsQmFzZTxULCBXVEY6
OldlYWtQdHI8VT4+OwogfTsKIAogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BPREludGVydmFsVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUE9ESW50ZXJ2YWxUcmVlLmgKaW5kZXggYmU0Yjg4ZjczNmM2MDhjNzQxYmM5ZTY2MjdmN2I5
YTQ3ZGI4NzJlNS4uMmQwMzcxMjQ2MDlhNDg2MTdjYWFjMjI0YjgzM2UwZmZmZGQ1YmNlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWxUcmVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWxUcmVlLmgKQEAgLTM1LDY5ICszNSwy
OSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBV
c2VyRGF0YT4KLWNsYXNzIFBPREludGVydmFsU2VhcmNoQWRhcHRlciB7Ci1wdWJsaWM6Ci0gICAg
dHlwZWRlZiBQT0RJbnRlcnZhbDxULCBVc2VyRGF0YT4gSW50ZXJ2YWxUeXBlOwotICAgIAotICAg
IFBPREludGVydmFsU2VhcmNoQWRhcHRlcihWZWN0b3I8SW50ZXJ2YWxUeXBlPiYgcmVzdWx0LCBj
b25zdCBUJiBsb3dWYWx1ZSwgY29uc3QgVCYgaGlnaFZhbHVlKQotICAgICAgICA6IG1fcmVzdWx0
KHJlc3VsdCkKLSAgICAgICAgLCBtX2xvd1ZhbHVlKGxvd1ZhbHVlKQotICAgICAgICAsIG1faGln
aFZhbHVlKGhpZ2hWYWx1ZSkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGNvbnN0IFQmIGxvd1Zh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV9sb3dWYWx1ZTsgfQotICAgIGNvbnN0IFQmIGhpZ2hWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faGlnaFZhbHVlOyB9Ci0gICAgdm9pZCBjb2xsZWN0SWZOZWVk
ZWQoY29uc3QgSW50ZXJ2YWxUeXBlJiBkYXRhKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGRh
dGEub3ZlcmxhcHMobV9sb3dWYWx1ZSwgbV9oaWdoVmFsdWUpKQotICAgICAgICAgICAgbV9yZXN1
bHQuYXBwZW5kKGRhdGEpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBWZWN0b3I8SW50ZXJ2YWxU
eXBlPiYgbV9yZXN1bHQ7Ci0gICAgVCBtX2xvd1ZhbHVlOwotICAgIFQgbV9oaWdoVmFsdWU7Ci19
OwotCiBzdHJ1Y3QgUE9ESW50ZXJ2YWxOb2RlVXBkYXRlcjsKIAogLy8gQW4gaW50ZXJ2YWwgdHJl
ZSwgd2hpY2ggaXMgYSBmb3JtIG9mIGF1Z21lbnRlZCByZWQtYmxhY2sgdHJlZS4gSXQKIC8vIHN1
cHBvcnRzIGVmZmljaWVudCAoTyhsZyBuKSkgaW5zZXJ0aW9uLCByZW1vdmFsIGFuZCBxdWVyeWlu
ZyBvZgogLy8gaW50ZXJ2YWxzIGluIHRoZSB0cmVlLgotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3Mg
VXNlckRhdGE+Ci1jbGFzcyBQT0RJbnRlcnZhbFRyZWUgZmluYWwgOiBwdWJsaWMgUE9EUmVkQmxh
Y2tUcmVlPFBPREludGVydmFsPFQsIFVzZXJEYXRhPiwgUE9ESW50ZXJ2YWxOb2RlVXBkYXRlciwg
dHJ1ZT4gewordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVXNlckRhdGE+IGNsYXNzIFBP
REludGVydmFsVHJlZSBmaW5hbCA6IHB1YmxpYyBQT0RSZWRCbGFja1RyZWU8UE9ESW50ZXJ2YWw8
VCwgVXNlckRhdGE+LCBQT0RJbnRlcnZhbE5vZGVVcGRhdGVyPiB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgLy8gVHlwZWRlZiB0byByZWR1Y2UgdHlwaW5nIHdo
ZW4gZGVjbGFyaW5nIGludGVydmFscyB0byBiZSBzdG9yZWQgaW4KLSAgICAvLyB0aGlzIHRyZWUu
Ci0gICAgdHlwZWRlZiBQT0RJbnRlcnZhbDxULCBVc2VyRGF0YT4gSW50ZXJ2YWxUeXBlOwotICAg
IHR5cGVkZWYgUE9ESW50ZXJ2YWxTZWFyY2hBZGFwdGVyPFQsIFVzZXJEYXRhPiBJbnRlcnZhbFNl
YXJjaEFkYXB0ZXJUeXBlOwotCi0gICAgLy8gUmV0dXJucyBhbGwgaW50ZXJ2YWxzIGluIHRoZSB0
cmVlIHdoaWNoIG92ZXJsYXAgdGhlIGdpdmVuIHF1ZXJ5Ci0gICAgLy8gaW50ZXJ2YWwuIFRoZSBy
ZXR1cm5lZCBpbnRlcnZhbHMgYXJlIHNvcnRlZCBieSBpbmNyZWFzaW5nIGxvdwotICAgIC8vIGVu
ZHBvaW50LgorICAgIHVzaW5nIEludGVydmFsVHlwZSA9IFBPREludGVydmFsPFQsIFVzZXJEYXRh
PjsKKyAgICBjbGFzcyBPdmVybGFwc1NlYXJjaEFkYXB0ZXI7CisKKyAgICAvLyBSZXR1cm5zIGFs
bCBpbnRlcnZhbHMgaW4gdGhlIHRyZWUgd2hpY2ggb3ZlcmxhcCB0aGUgZ2l2ZW4gcXVlcnkgaW50
ZXJ2YWwsIHNvcnRlZCBieSB0aGUgPCBvcGVyYXRvci4KICAgICBWZWN0b3I8SW50ZXJ2YWxUeXBl
PiBhbGxPdmVybGFwcyhjb25zdCBJbnRlcnZhbFR5cGUmIGludGVydmFsKSBjb25zdAogICAgIHsK
ICAgICAgICAgVmVjdG9yPEludGVydmFsVHlwZT4gcmVzdWx0OwotICAgICAgICBJbnRlcnZhbFNl
YXJjaEFkYXB0ZXJUeXBlIGFkYXB0ZXIocmVzdWx0LCBpbnRlcnZhbC5sb3coKSwgaW50ZXJ2YWwu
aGlnaCgpKTsKLSAgICAgICAgYWxsT3ZlcmxhcHNXaXRoQWRhcHRlcjxJbnRlcnZhbFNlYXJjaEFk
YXB0ZXJUeXBlPihhZGFwdGVyKTsKKyAgICAgICAgT3ZlcmxhcHNTZWFyY2hBZGFwdGVyIGFkYXB0
ZXIocmVzdWx0LCBpbnRlcnZhbCk7CisgICAgICAgIGFsbE92ZXJsYXBzV2l0aEFkYXB0ZXIoYWRh
cHRlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPGNs
YXNzIEFkYXB0ZXJUeXBlPgotICAgIHZvaWQgYWxsT3ZlcmxhcHNXaXRoQWRhcHRlcihBZGFwdGVy
VHlwZSYgYWRhcHRlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIC8vIEV4cGxpY2l0IGRlcmVmZXJl
bmNlIG9mICJ0aGlzIiByZXF1aXJlZCBiZWNhdXNlIG9mCi0gICAgICAgIC8vIGluaGVyaXRhbmNl
IHJ1bGVzIGluIHRlbXBsYXRlIGNsYXNzZXMuCi0gICAgICAgIHNlYXJjaEZvck92ZXJsYXBzRnJv
bTxBZGFwdGVyVHlwZT4odGhpcy0+cm9vdCgpLCBhZGFwdGVyKTsKLSAgICB9Ci0KLSAgICAvLyBI
ZWxwZXIgdG8gY3JlYXRlIGludGVydmFsIG9iamVjdHMuCi0gICAgc3RhdGljIEludGVydmFsVHlw
ZSBjcmVhdGVJbnRlcnZhbChjb25zdCBUJiBsb3csIGNvbnN0IFQmIGhpZ2gsIFVzZXJEYXRhJiYg
ZGF0YSA9IHsgfSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdGVyVHlwZT4gdm9pZCBhbGxP
dmVybGFwc1dpdGhBZGFwdGVyKEFkYXB0ZXJUeXBlJiBhZGFwdGVyKSBjb25zdAogICAgIHsKLSAg
ICAgICAgcmV0dXJuIEludGVydmFsVHlwZShsb3csIGhpZ2gsIFdURk1vdmUoZGF0YSkpOworICAg
ICAgICBzZWFyY2hGb3JPdmVybGFwc0Zyb20odGhpcy0+cm9vdCgpLCBhZGFwdGVyKTsKICAgICB9
CiAKICAgICBPcHRpb25hbDxJbnRlcnZhbFR5cGU+IG5leHRJbnRlcnZhbEFmdGVyKGNvbnN0IFQm
IHBvaW50KQpAQCAtMTE2LDIwICs3NiwxOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIGlmICghdGhpcy0+cm9vdCgpKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgIHJldHVybiBjaGVja0ludmFyaWFudHNGcm9tTm9kZSh0aGlzLT5yb290KCks
IDApOworICAgICAgICByZXR1cm4gY2hlY2tJbnZhcmlhbnRzRnJvbU5vZGUodGhpcy0+cm9vdCgp
LCBudWxscHRyKTsKICAgICB9CiAKICNlbmRpZgogCiBwcml2YXRlOgotICAgIHVzaW5nIEJhc2Ug
PSBQT0RSZWRCbGFja1RyZWU8UE9ESW50ZXJ2YWw8VCwgVXNlckRhdGE+LCBQT0RJbnRlcnZhbE5v
ZGVVcGRhdGVyLCB0cnVlPjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEJhc2U6Ok5vZGUgSW50ZXJ2
YWxOb2RlOworICAgIHVzaW5nIEJhc2UgPSBQT0RSZWRCbGFja1RyZWU8UE9ESW50ZXJ2YWw8VCwg
VXNlckRhdGE+LCBQT0RJbnRlcnZhbE5vZGVVcGRhdGVyPjsKKyAgICB1c2luZyBJbnRlcnZhbE5v
ZGUgPSB0eXBlbmFtZSBCYXNlOjpOb2RlOwogCiAgICAgLy8gU3RhcnRpbmcgZnJvbSB0aGUgZ2l2
ZW4gbm9kZSwgYWRkcyBhbGwgb3ZlcmxhcHMgd2l0aCB0aGUgZ2l2ZW4KICAgICAvLyBpbnRlcnZh
bCB0byB0aGUgcmVzdWx0IHZlY3Rvci4gVGhlIGludGVydmFscyBhcmUgc29ydGVkIGJ5CiAgICAg
Ly8gaW5jcmVhc2luZyBsb3cgZW5kcG9pbnQuCi0gICAgdGVtcGxhdGUgPGNsYXNzIEFkYXB0ZXJU
eXBlPgotICAgIHZvaWQgc2VhcmNoRm9yT3ZlcmxhcHNGcm9tKEludGVydmFsTm9kZSogbm9kZSwg
QWRhcHRlclR5cGUmIGFkYXB0ZXIpIGNvbnN0CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRl
clR5cGU+IHZvaWQgc2VhcmNoRm9yT3ZlcmxhcHNGcm9tKEludGVydmFsTm9kZSogbm9kZSwgQWRh
cHRlclR5cGUmIGFkYXB0ZXIpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIW5vZGUpCiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0yMTksNiArMTc4LDI5IEBAIHByaXZhdGU6CiAKIH07CiAKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFVzZXJEYXRhPiBjbGFzcyBQT0RJbnRlcnZhbFRy
ZWU8VCwgVXNlckRhdGE+OjpPdmVybGFwc1NlYXJjaEFkYXB0ZXIgeworcHVibGljOgorICAgIHVz
aW5nIEludGVydmFsVHlwZSA9IFBPREludGVydmFsPFQsIFVzZXJEYXRhPjsKKworICAgIE92ZXJs
YXBzU2VhcmNoQWRhcHRlcihWZWN0b3I8SW50ZXJ2YWxUeXBlPiYgcmVzdWx0LCBjb25zdCBJbnRl
cnZhbFR5cGUmIGludGVydmFsKQorICAgICAgICA6IG1fcmVzdWx0KHJlc3VsdCkKKyAgICAgICAg
LCBtX2ludGVydmFsKGludGVydmFsKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBUJiBsb3dW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJ2YWwubG93KCk7IH0KKyAgICBjb25zdCBUJiBo
aWdoVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2ludGVydmFsLmhpZ2goKTsgfQorICAgIHZvaWQg
Y29sbGVjdElmTmVlZGVkKGNvbnN0IEludGVydmFsVHlwZSYgZGF0YSkgY29uc3QKKyAgICB7Cisg
ICAgICAgIGlmIChkYXRhLm92ZXJsYXBzKG1faW50ZXJ2YWwpKQorICAgICAgICAgICAgbV9yZXN1
bHQuYXBwZW5kKGRhdGEpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBWZWN0b3I8SW50ZXJ2YWxU
eXBlPiYgbV9yZXN1bHQ7CisgICAgY29uc3QgSW50ZXJ2YWxUeXBlJiBtX2ludGVydmFsOworfTsK
Kwogc3RydWN0IFBPREludGVydmFsTm9kZVVwZGF0ZXIgewogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE5vZGU+IHN0YXRpYyBib29sIHVwZGF0ZShOb2RlJiBub2RlKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BPRFJlZEJsYWNrVHJlZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUE9EUmVkQmxhY2tUcmVlLmgKaW5kZXggZDQ4ZjQ5OGVhNmFkZDIzM2MxMDFi
ZGM1ZDM4NDVlOTE3NTdkYmI1Mi4uNGIzMThmZGFjMjIwNTE3Y2Y5MThjNzRjMjlkMDVmMTAzMzE1
OTAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9EUmVkQmxhY2tUcmVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9EUmVkQmxhY2tUcmVlLmgKQEAgLTM5
LDE3ICszOSw2IEBACiAvLyBJbiBkZWJ1ZyBtb2RlLCBwcmludGluZyBvZiB0aGUgZGF0YSBjb250
YWluZWQgaW4gdGhlIHRyZWUgaXMKIC8vIGVuYWJsZWQuIFRoaXMgbWFrZXMgdXNlIG9mIFdURjo6
VGV4dFN0cmVhbS4KIC8vCi0vLyBOb3RlIHRoYXQgd2hlbiBjb21wbGV4IHR5cGVzIGFyZSBzdG9y
ZWQgaW4gdGhpcyByZWQvYmxhY2sgdHJlZSwgaXQKLS8vIGlzIHBvc3NpYmxlIHRoYXQgc2luZ2xl
IGludm9jYXRpb25zIG9mIHRoZSAiPCIgYW5kICI9PSIgb3BlcmF0b3JzCi0vLyB3aWxsIGJlIGlu
c3VmZmljaWVudCB0byBkZXNjcmliZSB0aGUgb3JkZXJpbmcgb2YgZWxlbWVudHMgaW4gdGhlCi0v
LyB0cmVlIGR1cmluZyBxdWVyaWVzLiBBcyBhIGNvbmNyZXRlIGV4YW1wbGUsIGNvbnNpZGVyIHRo
ZSBjYXNlIHdoZXJlCi0vLyBpbnRlcnZhbHMgYXJlIHN0b3JlZCBpbiB0aGUgdHJlZSBzb3J0ZWQg
YnkgbG93IGVuZHBvaW50LiBUaGUgIjwiCi0vLyBvcGVyYXRvciBvbiB0aGUgSW50ZXJ2YWwgY2xh
c3Mgb25seSBjb21wYXJlcyB0aGUgbG93IGVuZHBvaW50LCBidXQKLS8vIHRoZSAiPT0iIG9wZXJh
dG9yIHRha2VzIGludG8gYWNjb3VudCB0aGUgaGlnaCBlbmRwb2ludCBhcyB3ZWxsLgotLy8gVGhp
cyBtYWtlcyB0aGUgbmVjZXNzYXJ5IGxvZ2ljIGZvciBxdWVyeWluZyBhbmQgZGVsZXRpb24gc29t
ZXdoYXQKLS8vIG1vcmUgY29tcGxleC4gSW4gb3JkZXIgdG8gcHJvcGVybHkgaGFuZGxlIHN1Y2gg
c2l0dWF0aW9ucywgdGhlCi0vLyB0ZW1wbGF0ZSBhcmd1bWVudCAibmVlZHNGdWxsT3JkZXJpbmdD
b21wYXJpc29ucyIgbXVzdCBiZSB0cnVlLgotLy8KIC8vIFRoaXMgcmVkLWJsYWNrIHRyZWUgaXMg
ZGVzaWduZWQgdG8gYmUgX2F1Z21lbnRlZF87IHN1YmNsYXNzZXMgY2FuCiAvLyBhZGQgYWRkaXRp
b25hbCBhbmQgc3VtbWFyeSBpbmZvcm1hdGlvbiB0byBlYWNoIG5vZGUgdG8gZWZmaWNpZW50bHkK
IC8vIHN0b3JlIGFuZCBpbmRleCBtb3JlIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzLiBBIGNvbmNy
ZXRlIGV4YW1wbGUgaXMKQEAgLTcwLDEzICs1OSwxMSBAQAogI2VuZGlmCiAKIC8vIEZJWE1FOiBU
aGUgcHJlZml4ICJQT0QiIGhlcmUgaXNuJ3QgY29ycmVjdDsgdGhpcyB0cmVlIHdvcmtzIHdpdGgg
bm9uLVBPRCB0eXBlcyB0b28uCi0vLyBGSVhNRTogUmVtb3ZlIHRoZSB1bnVzdWFsIG5lZWRzRnVs
bE9yZGVyaW5nQ29tcGFyaXNvbnMgZmVhdHVyZSBieSBjaGFuZ2luZyB0aGUgaW50ZXJ2YWwgdHJl
ZSB0byB1c2UgZnVsbCBvcmRlcmluZywgc29ydGluZyBiYXNlZCBvbiBsb3csIGhpZ2gsIGFuZCBk
YXRhLgotLy8gRklYTUU6IFdvdWxkIGJlIHdvcnRod2hpbGUgdG8gaW1wbGVtZW50IHRoaXMgb24g
dG9wIG9mIFdURjo6UmVkQmxhY2tUcmVlIHJhdGhlciB0aGFuIGtlZXBpbmcgdHdvIHNlcGFyYXRl
IGNsYXNzIHRlbXBsYXRlcyBhcm91bmQuCisvLyBGSVhNRTogRXh0ZW5kIFdURjo6UmVkQmxhY2tU
cmVlIGFuZCBpbXBsZW1lbnQgdGhpcyBvbiB0b3Agb2YgaXQgcmF0aGVyIHRoYW4ga2VlcGluZyB0
d28gcXVpdGUgc2ltaWxhciBjbGFzcyB0ZW1wbGF0ZXMgYXJvdW5kLgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIE5vZGVVcGRhdGVyVHlwZSwg
Ym9vbCBuZWVkc0Z1bGxPcmRlcmluZ0NvbXBhcmlzb25zPgotY2xhc3MgUE9EUmVkQmxhY2tUcmVl
IHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIE5vZGVVcGRhdGVyVHlwZT4gY2xhc3Mg
UE9EUmVkQmxhY2tUcmVlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQT0RSZWRCbGFja1Ry
ZWUpOwogcHVibGljOgogICAgIFBPRFJlZEJsYWNrVHJlZSgpID0gZGVmYXVsdDsKQEAgLTg2LDcg
KzczLDYgQEAgcHVibGljOgogICAgICAgICBjbGVhcigpOwogICAgIH0KIAotICAgIC8vIENsZWFy
aW5nIHdpbGwgZGVsZXRlIHRoZSBjb250ZW50cyBvZiB0aGUgdHJlZS4KICAgICB2b2lkIGNsZWFy
KCkKICAgICB7CiAgICAgICAgIGlmICghbV9yb290KQpAQCAtMTAxLDcgKzg3LDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBhZGQoY29uc3QgVCYgZGF0YSkKICAgICB7Ci0gICAgICAgIGluc2VydE5v
ZGUobmV3IE5vZGUoVCB7IGRhdGEgfSkpOworICAgICAgICBhZGQoVCB7IGRhdGEgfSk7CiAgICAg
fQogCiAgICAgdm9pZCBhZGQoVCYmIGRhdGEpCkBAIC0xMzUsMTQgKzEyMSwxMyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBjaGVja0ludmFyaWFudHMoKSBjb25zdAogICAgIHsKICAgICAgICAgaW50IGJs
YWNrQ291bnQ7Ci0gICAgICAgIHJldHVybiBjaGVja0ludmFyaWFudHNGcm9tTm9kZShtX3Jvb3Qs
ICZibGFja0NvdW50KTsKKyAgICAgICAgcmV0dXJuIGNoZWNrSW52YXJpYW50c0Zyb21Ob2RlKG1f
cm9vdCwgYmxhY2tDb3VudCk7CiAgICAgfQogCi0gICAgLy8gRHVtcHMgdGhlIHRyZWUncyBjb250
ZW50cyB0byB0aGUgbG9nZ2luZyBpbmZvIHN0cmVhbSBmb3IKLSAgICAvLyBkZWJ1Z2dpbmcgcHVy
cG9zZXMuCisgICAgLy8gRHVtcHMgdGhlIHRyZWUncyBjb250ZW50cyB0byB0aGUgbG9nZ2luZyBp
bmZvIHN0cmVhbSBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLgogICAgIHZvaWQgZHVtcCgpIGNvbnN0
CiAgICAgewotICAgICAgICBkdW1wRnJvbU5vZGUobV9yb290LCAwKTsKKyAgICAgICAgZHVtcFN1
YnRyZWUobV9yb290LCAwKTsKICAgICB9CiAKICAgICAvLyBUdXJucyBvbiBvciBvZmYgdmVyYm9z
ZSBkZWJ1Z2dpbmcgb2YgdGhlIHRyZWUsIGNhdXNpbmcgbWFueQpAQCAtMTU4LDE0ICsxNDMsMTAg
QEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIGVudW0gQ29sb3IgeyBSZWQsIEJsYWNrIH07CiAK
LSAgICAvLyBUaGUgYmFzZSBOb2RlIGNsYXNzIHdoaWNoIGlzIHN0b3JlZCBpbiB0aGUgdHJlZS4g
Tm9kZXMgYXJlIG9ubHkKLSAgICAvLyBhbiBpbnRlcm5hbCBjb25jZXB0OyB1c2VycyBvZiB0aGUg
dHJlZSBkZWFsIG9ubHkgd2l0aCB0aGUgZGF0YQotICAgIC8vIHRoZXkgc3RvcmUgaW4gaXQuCiAg
ICAgY2xhc3MgTm9kZSB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShOb2RlKTsKICAgICBwdWJsaWM6Ci0gICAgICAgIC8vIENv
bnN0cnVjdG9yLiBOZXdseS1jcmVhdGVkIG5vZGVzIGFyZSBjb2xvcmVkIHJlZC4KICAgICAgICAg
ZXhwbGljaXQgTm9kZShUJiYgZGF0YSkKICAgICAgICAgICAgIDogbV9kYXRhKFdURk1vdmUoZGF0
YSkpCiAgICAgICAgIHsKQEAgLTE3Niw3ICsxNTcsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICAgICAg
VCYgZGF0YSgpIHsgcmV0dXJuIG1fZGF0YTsgfQogCi0gICAgICAgIHZvaWQgbW92ZURhdGFGcm9t
KE5vZGUqIHNyYykgeyBtX2RhdGEgPSBXVEZNb3ZlKHNyYy0+bV9kYXRhKTsgfQorICAgICAgICB2
b2lkIG1vdmVEYXRhRnJvbShOb2RlJiBzcmMpIHsgbV9kYXRhID0gV1RGTW92ZShzcmMubV9kYXRh
KTsgfQogCiAgICAgICAgIE5vZGUqIGxlZnQoKSBjb25zdCB7IHJldHVybiBtX2xlZnQ7IH0KICAg
ICAgICAgdm9pZCBzZXRMZWZ0KE5vZGUqIG5vZGUpIHsgbV9sZWZ0ID0gbm9kZTsgfQpAQCAtMTk5
LDM4ICsxODAsMjMgQEAgcHJvdGVjdGVkOgogICAgIE5vZGUqIHJvb3QoKSBjb25zdCB7IHJldHVy
biBtX3Jvb3Q7IH0KIAogcHJpdmF0ZToKLSAgICAvLyBUaGlzIGlzIHRoZSBob29rIHRoYXQgc3Vi
Y2xhc3NlcyBzaG91bGQgdXNlIHdoZW4KKyAgICAvLyBUaGUgdXBkYXRlIGZ1bmN0aW9uIGlzIHRo
ZSBob29rIHRoYXQgc3ViY2xhc3NlcyBzaG91bGQgdXNlIHdoZW4KICAgICAvLyBhdWdtZW50aW5n
IHRoZSByZWQtYmxhY2sgdHJlZSB3aXRoIGFkZGl0aW9uYWwgcGVyLW5vZGUgc3VtbWFyeQogICAg
IC8vIGluZm9ybWF0aW9uLiBGb3IgZXhhbXBsZSwgaW4gdGhlIGNhc2Ugb2YgYW4gaW50ZXJ2YWwg
dHJlZSwgdGhpcwogICAgIC8vIGlzIHVzZWQgdG8gY29tcHV0ZSB0aGUgbWF4aW11bSBlbmRwb2lu
dCBvZiB0aGUgc3VidHJlZSBiZWxvdyB0aGUKICAgICAvLyBnaXZlbiBub2RlIGJhc2VkIG9uIHRo
ZSB2YWx1ZXMgaW4gdGhlIGxlZnQgYW5kIHJpZ2h0IGNoaWxkcmVuLiBJdAogICAgIC8vIGlzIGd1
YXJhbnRlZWQgdGhhdCB0aGlzIHdpbGwgYmUgY2FsbGVkIGluIHRoZSBjb3JyZWN0IG9yZGVyIHRv
CiAgICAgLy8gcHJvcGVybHkgdXBkYXRlIHN1Y2ggc3VtbWFyeSBpbmZvcm1hdGlvbiBiYXNlZCBv
bmx5IG9uIHRoZSB2YWx1ZXMKLSAgICAvLyBpbiB0aGUgbGVmdCBhbmQgcmlnaHQgY2hpbGRyZW4u
IFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gdHJ1ZSBpZgorICAgIC8vIGluIHRoZSBsZWZ0IGFu
ZCByaWdodCBjaGlsZHJlbi4gVGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gdHJ1ZSBpZgogICAg
IC8vIHRoZSBub2RlJ3Mgc3VtbWFyeSBpbmZvcm1hdGlvbiBjaGFuZ2VkLgotICAgIGJvb2wgdXBk
YXRlTm9kZShOb2RlKiBub2RlKQorICAgIHN0YXRpYyBib29sIHVwZGF0ZU5vZGUoTm9kZSYgbm9k
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBOb2RlVXBkYXRlclR5cGU6OnVwZGF0ZSgqbm9kZSk7
CisgICAgICAgIHJldHVybiBOb2RlVXBkYXRlclR5cGU6OnVwZGF0ZShub2RlKTsKICAgICB9CiAK
LSAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAvLyBHZW5lcmljIGJpbmFyeSBzZWFyY2ggdHJlZSBv
cGVyYXRpb25zCi0gICAgLy8KLQotICAgIC8vIFNlYXJjaGVzIHRoZSB0cmVlIGZvciB0aGUgZ2l2
ZW4gZGF0dW0uCiAgICAgTm9kZSogdHJlZVNlYXJjaChjb25zdCBUJiBkYXRhKSBjb25zdAogICAg
IHsKLSAgICAgICAgaWYgKG5lZWRzRnVsbE9yZGVyaW5nQ29tcGFyaXNvbnMpCi0gICAgICAgICAg
ICByZXR1cm4gdHJlZVNlYXJjaEZ1bGxDb21wYXJpc29ucyhtX3Jvb3QsIGRhdGEpOwotCi0gICAg
ICAgIHJldHVybiB0cmVlU2VhcmNoTm9ybWFsKG1fcm9vdCwgZGF0YSk7Ci0gICAgfQotCi0gICAg
Ly8gU2VhcmNoZXMgdGhlIHRyZWUgdXNpbmcgdGhlIG5vcm1hbCBjb21wYXJpc29uIG9wZXJhdGlv
bnMsCi0gICAgLy8gc3VpdGFibGUgZm9yIHNpbXBsZSBkYXRhIHR5cGVzIHN1Y2ggYXMgbnVtYmVy
cy4KLSAgICBOb2RlKiB0cmVlU2VhcmNoTm9ybWFsKE5vZGUqIGN1cnJlbnQsIGNvbnN0IFQmIGRh
dGEpIGNvbnN0Ci0gICAgewotICAgICAgICB3aGlsZSAoY3VycmVudCkgeworICAgICAgICBmb3Ig
KGF1dG8qIGN1cnJlbnQgPSBtX3Jvb3Q7IGN1cnJlbnQ7ICkgewogICAgICAgICAgICAgaWYgKGN1
cnJlbnQtPmRhdGEoKSA9PSBkYXRhKQogICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50Owog
ICAgICAgICAgICAgaWYgKGRhdGEgPCBjdXJyZW50LT5kYXRhKCkpCkBAIC0yMzgsMzIgKzIwNCwx
MiBAQCBwcml2YXRlOgogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGN1cnJlbnQg
PSBjdXJyZW50LT5yaWdodCgpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0K
LQotICAgIC8vIFNlYXJjaGVzIHRoZSB0cmVlIHVzaW5nIG11bHRpcGxlIGNvbXBhcmlzb24gb3Bl
cmF0aW9ucywgcmVxdWlyZWQKLSAgICAvLyBmb3IgZGF0YSB0eXBlcyB3aXRoIG1vcmUgY29tcGxl
eCBiZWhhdmlvciBzdWNoIGFzIGludGVydmFscy4KLSAgICBOb2RlKiB0cmVlU2VhcmNoRnVsbENv
bXBhcmlzb25zKE5vZGUqIGN1cnJlbnQsIGNvbnN0IFQmIGRhdGEpIGNvbnN0Ci0gICAgewotICAg
ICAgICBpZiAoIWN1cnJlbnQpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKGRh
dGEgPCBjdXJyZW50LT5kYXRhKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJlZVNlYXJjaEZ1bGxD
b21wYXJpc29ucyhjdXJyZW50LT5sZWZ0KCksIGRhdGEpOwotICAgICAgICBpZiAoY3VycmVudC0+
ZGF0YSgpIDwgZGF0YSkKLSAgICAgICAgICAgIHJldHVybiB0cmVlU2VhcmNoRnVsbENvbXBhcmlz
b25zKGN1cnJlbnQtPnJpZ2h0KCksIGRhdGEpOwotICAgICAgICBpZiAoZGF0YSA9PSBjdXJyZW50
LT5kYXRhKCkpCi0gICAgICAgICAgICByZXR1cm4gY3VycmVudDsKLQotICAgICAgICAvLyBXZSBt
YXkgbmVlZCB0byB0cmF2ZXJzZSBib3RoIHRoZSBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlcy4KLSAg
ICAgICAgTm9kZSogcmVzdWx0ID0gdHJlZVNlYXJjaEZ1bGxDb21wYXJpc29ucyhjdXJyZW50LT5s
ZWZ0KCksIGRhdGEpOwotICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAgIHJlc3VsdCA9
IHRyZWVTZWFyY2hGdWxsQ29tcGFyaXNvbnMoY3VycmVudC0+cmlnaHQoKSwgZGF0YSk7Ci0gICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAg
IHZvaWQgdHJlZUluc2VydChOb2RlKiB6KQogICAgIHsKLSAgICAgICAgTm9kZSogeSA9IDA7Cisg
ICAgICAgIE5vZGUqIHkgPSBudWxscHRyOwogICAgICAgICBOb2RlKiB4ID0gbV9yb290OwogICAg
ICAgICB3aGlsZSAoeCkgewogICAgICAgICAgICAgeSA9IHg7CkBAIC0yOTcsOCArMjQzLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHk7CiAgICAgfQogCi0gICAgLy8gRmluZHMgdGhlIG1p
bmltdW0gZWxlbWVudCBpbiB0aGUgc3ViLXRyZWUgcm9vdGVkIGF0IHRoZSBnaXZlbgotICAgIC8v
IG5vZGUuCisgICAgLy8gRmluZHMgdGhlIG1pbmltdW0gZWxlbWVudCBpbiB0aGUgc3ViLXRyZWUg
cm9vdGVkIGF0IHRoZSBnaXZlbiBub2RlLgogICAgIHN0YXRpYyBOb2RlKiB0cmVlTWluaW11bShO
b2RlKiB4KQogICAgIHsKICAgICAgICAgd2hpbGUgKHgtPmxlZnQoKSkKQEAgLTMxNCwxNiArMjU5
LDYgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHk7CiAgICAgfQogCi0gICAgLy8gSGVscGVy
IGZvciBtYWludGFpbmluZyB0aGUgYXVnbWVudGVkIHJlZC1ibGFjayB0cmVlLgotICAgIHZvaWQg
cHJvcGFnYXRlVXBkYXRlcyhOb2RlKiBzdGFydCkKLSAgICB7Ci0gICAgICAgIGJvb2wgc2hvdWxk
Q29udGludWUgPSB0cnVlOwotICAgICAgICB3aGlsZSAoc3RhcnQgJiYgc2hvdWxkQ29udGludWUp
IHsKLSAgICAgICAgICAgIHNob3VsZENvbnRpbnVlID0gdXBkYXRlTm9kZShzdGFydCk7Ci0gICAg
ICAgICAgICBzdGFydCA9IHN0YXJ0LT5wYXJlbnQoKTsKLSAgICAgICAgfQotICAgIH0KLQogICAg
IC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogICAgIC8vIFJlZC1CbGFjayB0cmVlIG9wZXJhdGlvbnMKICAgICAv
LwpAQCAtMzU2LDExICsyOTEsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgeC0+c2V0UGFyZW50KHkp
OwogCiAgICAgICAgIC8vIFVwZGF0ZSBub2RlcyBsb3dlc3QgdG8gaGlnaGVzdC4KLSAgICAgICAg
dXBkYXRlTm9kZSh4KTsKLSAgICAgICAgdXBkYXRlTm9kZSh5KTsKKyAgICAgICAgdXBkYXRlTm9k
ZSgqeCk7CisgICAgICAgIHVwZGF0ZU5vZGUoKnkpOwogICAgICAgICByZXR1cm4geTsKICAgICB9
CiAKKyAgICBzdGF0aWMgdm9pZCBwcm9wYWdhdGVVcGRhdGVzKE5vZGUqIHN0YXJ0KQorICAgIHsK
KyAgICAgICAgd2hpbGUgKHN0YXJ0ICYmIHVwZGF0ZU5vZGUoKnN0YXJ0KSkKKyAgICAgICAgICAg
IHN0YXJ0ID0gc3RhcnQtPnBhcmVudCgpOworICAgIH0KKwogICAgIC8vIFJpZ2h0LXJvdGF0ZXMg
dGhlIHN1YnRyZWUgcm9vdGVkIGF0IHkuCiAgICAgLy8gUmV0dXJucyB0aGUgbmV3IHJvb3Qgb2Yg
dGhlIHN1YnRyZWUgKHkncyBsZWZ0IGNoaWxkKS4KICAgICBOb2RlKiByaWdodFJvdGF0ZShOb2Rl
KiB5KQpAQCAtMzg5LDggKzMzMCw4IEBAIHByaXZhdGU6CiAgICAgICAgIHktPnNldFBhcmVudCh4
KTsKIAogICAgICAgICAvLyBVcGRhdGUgbm9kZXMgbG93ZXN0IHRvIGhpZ2hlc3QuCi0gICAgICAg
IHVwZGF0ZU5vZGUoeSk7Ci0gICAgICAgIHVwZGF0ZU5vZGUoeCk7CisgICAgICAgIHVwZGF0ZU5v
ZGUoKnkpOworICAgICAgICB1cGRhdGVOb2RlKCp4KTsKICAgICAgICAgcmV0dXJuIHg7CiAgICAg
fQogCkBAIC0zOTksNyArMzQwLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHRyZWVJbnNl
cnQoeCk7CiAgICAgICAgIHgtPnNldENvbG9yKFJlZCk7Ci0gICAgICAgIHVwZGF0ZU5vZGUoeCk7
CisgICAgICAgIHVwZGF0ZU5vZGUoKngpOwogCiAgICAgICAgIGxvZ0lmVmVyYm9zZSgiICBQT0RS
ZWRCbGFja1RyZWU6Okluc2VydE5vZGUiKTsKIApAQCAtNDE1LDkgKzM1Niw5IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgIHgtPnBhcmVudCgpLT5zZXRDb2xvcihCbGFjayk7CiAgICAg
ICAgICAgICAgICAgICAgIHktPnNldENvbG9yKEJsYWNrKTsKICAgICAgICAgICAgICAgICAgICAg
eC0+cGFyZW50KCktPnBhcmVudCgpLT5zZXRDb2xvcihSZWQpOwotICAgICAgICAgICAgICAgICAg
ICB1cGRhdGVOb2RlKHgtPnBhcmVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgdXBkYXRlTm9k
ZSgqeC0+cGFyZW50KCkpOwogICAgICAgICAgICAgICAgICAgICB4ID0geC0+cGFyZW50KCktPnBh
cmVudCgpOwotICAgICAgICAgICAgICAgICAgICB1cGRhdGVOb2RlKHgpOworICAgICAgICAgICAg
ICAgICAgICB1cGRhdGVOb2RlKCp4KTsKICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhcnQg
PSB4LT5wYXJlbnQoKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICBpZiAoeCA9PSB4LT5wYXJlbnQoKS0+cmlnaHQoKSkgewpAQCAtNDQyLDkgKzM4Myw5IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHgtPnBhcmVudCgpLT5zZXRDb2xvcihCbGFj
ayk7CiAgICAgICAgICAgICAgICAgICAgIHktPnNldENvbG9yKEJsYWNrKTsKICAgICAgICAgICAg
ICAgICAgICAgeC0+cGFyZW50KCktPnBhcmVudCgpLT5zZXRDb2xvcihSZWQpOwotICAgICAgICAg
ICAgICAgICAgICB1cGRhdGVOb2RlKHgtPnBhcmVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
dXBkYXRlTm9kZSgqeC0+cGFyZW50KCkpOwogICAgICAgICAgICAgICAgICAgICB4ID0geC0+cGFy
ZW50KCktPnBhcmVudCgpOwotICAgICAgICAgICAgICAgICAgICB1cGRhdGVOb2RlKHgpOworICAg
ICAgICAgICAgICAgICAgICB1cGRhdGVOb2RlKCp4KTsKICAgICAgICAgICAgICAgICAgICAgdXBk
YXRlU3RhcnQgPSB4LT5wYXJlbnQoKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICBpZiAoeCA9PSB4LT5wYXJlbnQoKS0+bGVmdCgpKSB7CkBAIC00NjksOCAr
NDEwLDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICAvLyBSZXN0b3JlcyB0aGUgcmVkLWJsYWNr
IHByb3BlcnR5IHRvIHRoZSB0cmVlIGFmdGVyIHNwbGljaW5nIG91dAotICAgIC8vIGEgbm9kZS4g
Tm90ZSB0aGF0IHggbWF5IGJlIG51bGwsIHdoaWNoIGlzIHdoeSB4UGFyZW50IG11c3QgYmUKLSAg
ICAvLyBzdXBwbGllZC4KKyAgICAvLyBhIG5vZGUuIE5vdGUgdGhhdCB4IG1heSBiZSBudWxsLCB3
aGljaCBpcyB3aHkgeFBhcmVudCBtdXN0IGJlIHN1cHBsaWVkLgogICAgIHZvaWQgZGVsZXRlRml4
dXAoTm9kZSogeCwgTm9kZSogeFBhcmVudCkKICAgICB7CiAgICAgICAgIHdoaWxlICh4ICE9IG1f
cm9vdCAmJiAoIXggfHwgeC0+Y29sb3IoKSA9PSBCbGFjaykpIHsKQEAgLTU5NCw5ICs1MzQsOSBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHktPnBhcmVudCgpLT5zZXRSaWdodCh4KTsKICAg
ICAgICAgfQogICAgICAgICBpZiAoeSAhPSB6KSB7Ci0gICAgICAgICAgICB6LT5tb3ZlRGF0YUZy
b20oeSk7CisgICAgICAgICAgICB6LT5tb3ZlRGF0YUZyb20oKnkpOwogICAgICAgICAgICAgLy8g
VGhpcyBub2RlIGhhcyBjaGFuZ2VkIGxvY2F0aW9uIGluIHRoZSB0cmVlIGFuZCBtdXN0IGJlIHVw
ZGF0ZWQuCi0gICAgICAgICAgICB1cGRhdGVOb2RlKHopOworICAgICAgICAgICAgdXBkYXRlTm9k
ZSgqeik7CiAgICAgICAgICAgICAvLyBUaGUgcGFyZW50IGFuZCBpdHMgcGFyZW50cyBtYXkgbm93
IGJlIG91dCBvZiBkYXRlLgogICAgICAgICAgICAgcHJvcGFnYXRlVXBkYXRlcyh6LT5wYXJlbnQo
KSk7CiAgICAgICAgIH0KQEAgLTYxOCwxMSArNTU4LDExIEBAIHByaXZhdGU6CiAKICAgICAvLyBS
ZXR1cm5zIGluIHRoZSAiYmxhY2tDb3VudCIgcGFyYW1ldGVyIHRoZSBudW1iZXIgb2YgYmxhY2sK
ICAgICAvLyBjaGlsZHJlbiBhbG9uZyBhbGwgcGF0aHMgdG8gYWxsIGxlYXZlcyBvZiB0aGUgZ2l2
ZW4gbm9kZS4KLSAgICBib29sIGNoZWNrSW52YXJpYW50c0Zyb21Ob2RlKE5vZGUqIG5vZGUsIGlu
dCogYmxhY2tDb3VudCkgY29uc3QKKyAgICBib29sIGNoZWNrSW52YXJpYW50c0Zyb21Ob2RlKE5v
ZGUqIG5vZGUsIGludCYgYmxhY2tDb3VudCkgY29uc3QKICAgICB7CiAgICAgICAgIC8vIEJhc2Ug
Y2FzZSBpcyBhIGxlYWYgbm9kZS4KICAgICAgICAgaWYgKCFub2RlKSB7Ci0gICAgICAgICAgICAq
YmxhY2tDb3VudCA9IDE7CisgICAgICAgICAgICBibGFja0NvdW50ID0gMTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CiAKQEAgLTY0MCwxNCArNTgwLDEzIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgLy8g
RXZlcnkgc2ltcGxlIHBhdGggdG8gYSBsZWFmIG5vZGUgY29udGFpbnMgdGhlIHNhbWUgbnVtYmVy
IG9mCi0gICAgICAgIC8vIGJsYWNrIG5vZGVzLgorICAgICAgICAvLyBFdmVyeSBzaW1wbGUgcGF0
aCB0byBhIGxlYWYgbm9kZSBjb250YWlucyB0aGUgc2FtZSBudW1iZXIgb2YgYmxhY2sgbm9kZXMu
CiAgICAgICAgIGludCBsZWZ0Q291bnQgPSAwLCByaWdodENvdW50ID0gMDsKLSAgICAgICAgYm9v
bCBsZWZ0VmFsaWQgPSBjaGVja0ludmFyaWFudHNGcm9tTm9kZShub2RlLT5sZWZ0KCksICZsZWZ0
Q291bnQpOwotICAgICAgICBib29sIHJpZ2h0VmFsaWQgPSBjaGVja0ludmFyaWFudHNGcm9tTm9k
ZShub2RlLT5yaWdodCgpLCAmcmlnaHRDb3VudCk7CisgICAgICAgIGJvb2wgbGVmdFZhbGlkID0g
Y2hlY2tJbnZhcmlhbnRzRnJvbU5vZGUobm9kZS0+bGVmdCgpLCBsZWZ0Q291bnQpOworICAgICAg
ICBib29sIHJpZ2h0VmFsaWQgPSBjaGVja0ludmFyaWFudHNGcm9tTm9kZShub2RlLT5yaWdodCgp
LCByaWdodENvdW50KTsKICAgICAgICAgaWYgKCFsZWZ0VmFsaWQgfHwgIXJpZ2h0VmFsaWQpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICpibGFja0NvdW50ID0gbGVmdENvdW50
ICsgKG5vZGUtPmNvbG9yKCkgPT0gQmxhY2sgPyAxIDogMCk7CisgICAgICAgIGJsYWNrQ291bnQg
PSBsZWZ0Q291bnQgKyAobm9kZS0+Y29sb3IoKSA9PSBCbGFjayA/IDEgOiAwKTsKICAgICAgICAg
cmV0dXJuIGxlZnRDb3VudCA9PSByaWdodENvdW50OwogICAgIH0KIApAQCAtNjY1LDggKzYwNCw3
IEBAIHByaXZhdGU6CiAKICNpZm5kZWYgTkRFQlVHCiAKLSAgICAvLyBEdW1wcyB0aGUgc3VidHJl
ZSByb290ZWQgYXQgdGhlIGdpdmVuIG5vZGUuCi0gICAgdm9pZCBkdW1wRnJvbU5vZGUoTm9kZSog
bm9kZSwgaW50IGluZGVudGF0aW9uKSBjb25zdAorICAgIHZvaWQgZHVtcFN1YnRyZWUoTm9kZSog
bm9kZSwgaW50IGluZGVudGF0aW9uKSBjb25zdAogICAgIHsKICAgICAgICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGluZGVudGF0aW9uOyBpKysp
CkBAIC02ODEsMTYgKzYxOSwxMyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIExPR19F
UlJPUigiJXMiLCBidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGlm
IChub2RlKSB7Ci0gICAgICAgICAgICBkdW1wRnJvbU5vZGUobm9kZS0+bGVmdCgpLCBpbmRlbnRh
dGlvbiArIDIpOwotICAgICAgICAgICAgZHVtcEZyb21Ob2RlKG5vZGUtPnJpZ2h0KCksIGluZGVu
dGF0aW9uICsgMik7CisgICAgICAgICAgICBkdW1wU3VidHJlZShub2RlLT5sZWZ0KCksIGluZGVu
dGF0aW9uICsgMik7CisgICAgICAgICAgICBkdW1wU3VidHJlZShub2RlLT5yaWdodCgpLCBpbmRl
bnRhdGlvbiArIDIpOwogICAgICAgICB9CiAgICAgfQogCiAjZW5kaWYKIAotICAgIC8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotICAgIC8vIERhdGEgbWVtYmVycwotCiAgICAgTm9kZSogbV9yb290IHsgbnVsbHB0
ciB9OwogI2lmbmRlZiBOREVCVUcKICAgICBib29sIG1fdmVyYm9zZURlYnVnZ2luZyB7IGZhbHNl
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3Rz
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmgKaW5kZXggY2Zi
MjI3MzljZDU2N2MxYjI2MmFkNmYwYjNlZjA5NjUyZTExMTE0YS4uOTc1Y2FjMWVlMDg2N2QzZjMw
Y2JmMWNiZWVkNWY5ZmNlZGM2MTUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0Zsb2F0aW5nT2JqZWN0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9h
dGluZ09iamVjdHMuaApAQCAtMjMsNyArMjMsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgIlBPREludGVydmFsLmgiCiAjaW5jbHVkZSAiUm9vdElubGluZUJveC5oIgogI2luY2x1ZGUg
PHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC0zMyw2ICsz
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlbmRlckJsb2NrRmxvdzsKIGNsYXNz
IFJlbmRlckJveDsKIAordGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lPiBjbGFzcyBQT0RJbnRl
cnZhbDsKIHRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZT4gY2xhc3MgUE9ESW50ZXJ2YWxUcmVl
OwogCiBjbGFzcyBGbG9hdGluZ09iamVjdCB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386227</attachid>
            <date>2019-12-20 11:11:01 -0800</date>
            <delta_ts>2020-01-12 11:17:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205238-20191220111057.patch</filename>
            <type>text/plain</type>
            <size>31523</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzODI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDFkYjliYWZkNjU0MzNi
MDFhYzliMDFlOTI3NTFmNmY5NTJmNmU4Ny4uYTAzMmQxYWNiODY3NzZiMzJjZDEzNWQ4MGMxZDAy
ZDNkMDRhZDNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE5LTEyLTE0ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlICJuZWVkc0Z1
bGxPcmRlcmluZ0NvbXBhcmlzb25zIiBmZWF0dXJlIGZyb20gUE9EUmVkQmxhY2tUcmVlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVBY3RpdmVUZXh0VHJhY2tDdWVzKTogU2ltcGxpZmllZCBjb2RlIGFuZAorICAgICAgICBlbGlt
aW5hdGUgdXNlcyBvZiB0aGUgY3JlYXRlSW50ZXJ2YWwgZnVuY3Rpb24gdG8gY29uc3RydWN0IFBP
REludGVydmFsIG9iamVjdHMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0
ZXh0VHJhY2tBZGRDdWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OnRleHRUcmFja1JlbW92ZUN1ZSk6IERpdHRvLgorCisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6IFJlbW92ZWQgdW5uZWNlc3NhcnkgaW5jbHVkZSBvZiBQT0RJbnRlcnZhbC5o
LgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOiBBZGRl
ZCBpbmNsdWRlIG9mIFBPREludGVydmFsLmguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QT0RJbnRl
cnZhbC5oOiBDaGFuZ2VkIG9wZXJhdG9yPCB0byBjb21wYXJlIGxvdywgaGlnaCwgYW5kIHVzZXIK
KyAgICAgICAgZGF0YSwgbm90IGp1c3QgbG93IGFuZCBoaWdoIHNvIGl0J3MgY29uc2lzdGVudCB3
aXRoIG9wZXJhdG9yPT0gYW5kIHdlCisgICAgICAgIGNhbiB1c2UgaXQgdG8gc2VhcmNoIGEgdHJl
ZS4gQWRkZWQgYSBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIGZvciBXZWFrUHRyCisgICAgICAgIHNp
bmNlIGEgV2Vha1B0cidzIHZhbHVlIGNhbiBjaGFuZ2UgKHRvIG51bGwpIHNvIGl0IGNhbid0IGJl
IHVzZWQgZm9yCisgICAgICAgIG9yZGVyaW5nIGFuZCBlcXVhbGl0eSBjaGVja3M7IGx1Y2tpbHkg
dGhlIGNsaWVudHMgZG9uJ3QgbmVlZCB0byB1c2UgaXQKKyAgICAgICAgdGhhdCB3YXk7IHRoZXkg
YnVpbGQgYW4gaW50ZXJ2YWwgdHJlZSBidXQgbmV2ZXIgc2VhcmNoIGZvciBhbnl0aGluZyBvcgor
ICAgICAgICByZW1vdmUgYW55dGhpbmcgZnJvbSB0aGUgdHJlZS4KKworICAgICAgICAqIHBsYXRm
b3JtL1BPREludGVydmFsVHJlZS5oOiBNYWtlIHRoZSBzZWFyY2ggYWRhcHRlciB1c2VkIHRvIGZp
bmQgb3ZlcmxhcHMKKyAgICAgICAgYSBtZW1iZXIgY2xhc3MgaW5zdGVhZCBvZiBhIHRvcCBsZXZl
bCBjbGFzcyB0ZW1wbGF0ZSBhbmQgc2ltcGxpZmllZCBpdCBhIGJpdC4KKyAgICAgICAgUmVtb3Zl
ZCB0aGUgdW5uZWVkZWQgY3JlYXRlSW50ZXJ2YWwgZnVuY3Rpb24uIFN0b3BwZWQgcGFzc2luZyB0
cnVlIGZvcgorICAgICAgICAibmVlZHNGdWxsT3JkZXJpbmdDb21wYXJpc29ucyIgc2luY2UgaXQn
cyBub3QgbmVlZGVkIGFueSBtb3JlIGR1ZSB0byB0aGUKKyAgICAgICAgY2hhbmdlcyB0byBQT0RJ
bnRlcnZhbC4KKworICAgICAgICAqIHBsYXRmb3JtL1BPRFJlZEJsYWNrVHJlZS5oOiBSZW1vdmVk
IHRoZSAibmVlZHNGdWxsT3JkZXJpbmdDb21wYXJpc29ucyIKKyAgICAgICAgdGVtcGxhdGUgYXJn
dW1lbnQgZm9yIHRoZSBQT0RSZWRCbGFja1RyZWUgY2xhc3MgdGVtcGxhdGUuCisgICAgICAgIChX
ZWJDb3JlOjpQT0RSZWRCbGFja1RyZWU6Ok5vZGU6Om1vdmVEYXRhRnJvbSk6IFRha2UgYSByZWZl
cmVuY2UgKHdoeSBub3QsCisgICAgICAgIHNpbmNlIHRoaXMgYWx3YXlzIHJlcXVpcmVzIGEgbm9u
LW51bGwgcG9pbnRlcikuCisgICAgICAgIChXZWJDb3JlOjpQT0RSZWRCbGFja1RyZWU6OnVwZGF0
ZU5vZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBPRFJlZEJsYWNrVHJlZTo6dHJlZVNl
YXJjaCBjb25zdCk6IE1lcmdlZCB0aGUgdGhyZWUgc2VhcmNoCisgICAgICAgIGZ1bmN0aW9ucyBp
bnRvIGEgc2luZ2xlIG9uZSBzaW5jZSB3ZSBkb24ndCBuZWVkIHRoZSBwZWN1bGlhcgorICAgICAg
ICAiZnVsbCBjb21wYXJpc29ucyIgbW9kZS4KKyAgICAgICAgKFdlYkNvcmU6OlBPRFJlZEJsYWNr
VHJlZTo6cHJvcGFnYXRlVXBkYXRlcyk6IFNpbXBsaWZpZWQgbG9naWMgdG8gcmVtb3ZlCisgICAg
ICAgIHRoZSBib29sZWFuIGxvY2FsIHZhcmlhYmxlLgorICAgICAgICAoV2ViQ29yZTo6UE9EUmVk
QmxhY2tUcmVlOjpkdW1wU3VidHJlZSBjb25zdCk6IFJlbmFtZWQgZnJvbSBkdW1wRnJvbU5vZGUK
KyAgICAgICAgc2luY2UgdGhlIGNvbW1lbnQgc2FpZCAiZHVtcHMgdGhlIHN1YnRyZWUiLiBBbHNv
IHJlbW92ZWQgdGhlIGNvbW1lbnQgbm93CisgICAgICAgIHRoYXQgdGhlIGZ1bmN0aW9uIG5hbWUg
c2F5cyB3aGF0IGl0IHNhaWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvRmxvYXRpbmdPYmplY3Rz
Lmg6IFJlbW92ZWQgdW5uZWNlc3NhcnkgaW5jbHVkZSBvZiBQT0RJbnRlcnZhbC5oLgorCiAyMDE5
LTEyLTIwICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1v
dmUgdGhlIGNlcnRpZmljYXRlIGluZm8gY2hlY2tzIHJlbGF0ZWQgdG8gZ2V0VXNlck1lZGlhCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAzMzY5MGVhNmRkYzM4
ZDk4N2E2NGRiYTRiODFkNzA5NzgyMjM4ZGVkLi4wNmIwMmU2NjU2YTYyZGQzNDBiYTZiYWJkNWNm
ZjY5M2VlNzdkYjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
QEAgLTE2OTMsOSArMTY5Myw4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZl
VGV4dFRyYWNrQ3Vlcyhjb25zdCBNZWRpYVRpbWUmIG1vdmllVGltZSkKIAogICAgIC8vIFRoZSB1
c2VyIGFnZW50IG11c3Qgc3luY2hyb25vdXNseSB1bnNldCBbdGhlIHRleHQgdHJhY2sgY3VlIGFj
dGl2ZV0gZmxhZwogICAgIC8vIHdoZW5ldmVyIC4uLiB0aGUgbWVkaWEgZWxlbWVudCdzIHJlYWR5
U3RhdGUgaXMgY2hhbmdlZCBiYWNrIHRvIEhBVkVfTk9USElORy4KLSAgICBhdXRvIG1vdmllVGlt
ZUludGVydmFsID0gbV9jdWVEYXRhLT5jdWVUcmVlLmNyZWF0ZUludGVydmFsKG1vdmllVGltZSwg
bW92aWVUaW1lKTsKICAgICBpZiAobV9yZWFkeVN0YXRlICE9IEhBVkVfTk9USElORyAmJiBtX3Bs
YXllcikgewotICAgICAgICBjdXJyZW50Q3VlcyA9IG1fY3VlRGF0YS0+Y3VlVHJlZS5hbGxPdmVy
bGFwcyhtb3ZpZVRpbWVJbnRlcnZhbCk7CisgICAgICAgIGN1cnJlbnRDdWVzID0gbV9jdWVEYXRh
LT5jdWVUcmVlLmFsbE92ZXJsYXBzKHsgbW92aWVUaW1lLCBtb3ZpZVRpbWUgfSk7CiAgICAgICAg
IGlmIChjdXJyZW50Q3Vlcy5zaXplKCkgPiAxKQogICAgICAgICAgICAgc3RkOjpzb3J0KGN1cnJl
bnRDdWVzLmJlZ2luKCksIGN1cnJlbnRDdWVzLmVuZCgpLCAmY29tcGFyZUN1ZUludGVydmFsKTsK
ICAgICB9CkBAIC0xNzY1LDcgKzE3NjQsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0
ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY29uc3QgTWVkaWFUaW1lJiBtb3ZpZVRpbWUpCiAgICAgaWYg
KGF1dG8gbmVhcmVzdEVuZGluZ0N1ZSA9IHN0ZDo6bWluX2VsZW1lbnQoY3VycmVudEN1ZXMuYmVn
aW4oKSwgY3VycmVudEN1ZXMuZW5kKCksIGNvbXBhcmVDdWVJbnRlcnZhbEVuZFRpbWUpKQogICAg
ICAgICBuZXh0SW50ZXJlc3RpbmdUaW1lID0gbmVhcmVzdEVuZGluZ0N1ZS0+ZGF0YSgpLT5lbmRN
ZWRpYVRpbWUoKTsKIAotICAgIE9wdGlvbmFsPEN1ZUludGVydmFsPiBuZXh0Q3VlID0gbV9jdWVE
YXRhLT5jdWVUcmVlLm5leHRJbnRlcnZhbEFmdGVyKG1vdmllVGltZUludGVydmFsLmhpZ2goKSk7
CisgICAgT3B0aW9uYWw8Q3VlSW50ZXJ2YWw+IG5leHRDdWUgPSBtX2N1ZURhdGEtPmN1ZVRyZWUu
bmV4dEludGVydmFsQWZ0ZXIobW92aWVUaW1lKTsKICAgICBpZiAobmV4dEN1ZSkKICAgICAgICAg
bmV4dEludGVyZXN0aW5nVGltZSA9IHN0ZDo6bWluKG5leHRJbnRlcmVzdGluZ1RpbWUsIG5leHRD
dWUtPmxvdygpKTsKIApAQCAtMjA1NCw3ICsyMDUzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrJiB0cmFjaywgVGV4dFRyYWNrQ3VlJiBjdWUpCiAg
ICAgLy8gemVyby1sZW5ndGggY3Vlcy4KICAgICBNZWRpYVRpbWUgZW5kVGltZSA9IHN0ZDo6bWF4
KGN1ZS5zdGFydE1lZGlhVGltZSgpLCBjdWUuZW5kTWVkaWFUaW1lKCkpOwogCi0gICAgQ3VlSW50
ZXJ2YWwgaW50ZXJ2YWwgPSBtX2N1ZURhdGEtPmN1ZVRyZWUuY3JlYXRlSW50ZXJ2YWwoY3VlLnN0
YXJ0TWVkaWFUaW1lKCksIGVuZFRpbWUsICZjdWUpOworICAgIEN1ZUludGVydmFsIGludGVydmFs
KGN1ZS5zdGFydE1lZGlhVGltZSgpLCBlbmRUaW1lLCAmY3VlKTsKICAgICBpZiAoIW1fY3VlRGF0
YS0+Y3VlVHJlZS5jb250YWlucyhpbnRlcnZhbCkpCiAgICAgICAgIG1fY3VlRGF0YS0+Y3VlVHJl
ZS5hZGQoaW50ZXJ2YWwpOwogICAgIHVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY3VycmVudE1l
ZGlhVGltZSgpKTsKQEAgLTIwNjksNyArMjA2OCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYgY3VlKQogICAgIC8v
IHplcm8tbGVuZ3RoIGN1ZXMuCiAgICAgTWVkaWFUaW1lIGVuZFRpbWUgPSBzdGQ6Om1heChjdWUu
c3RhcnRNZWRpYVRpbWUoKSwgY3VlLmVuZE1lZGlhVGltZSgpKTsKIAotICAgIEN1ZUludGVydmFs
IGludGVydmFsID0gbV9jdWVEYXRhLT5jdWVUcmVlLmNyZWF0ZUludGVydmFsKGN1ZS5zdGFydE1l
ZGlhVGltZSgpLCBlbmRUaW1lLCAmY3VlKTsKKyAgICBDdWVJbnRlcnZhbCBpbnRlcnZhbChjdWUu
c3RhcnRNZWRpYVRpbWUoKSwgZW5kVGltZSwgJmN1ZSk7CiAgICAgbV9jdWVEYXRhLT5jdWVUcmVl
LnJlbW92ZShpbnRlcnZhbCk7CiAKICAgICAvLyBTaW5jZSB0aGUgY3VlIHdpbGwgYmUgcmVtb3Zl
ZCBmcm9tIHRoZSBtZWRpYSBlbGVtZW50IGFuZCBsaWtlbHkgdGhlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGViOTFmM2VkMjJjNjIwMjY3N2IzNDg4YjMyNDAyMzhj
YmYxOGU4NzguLmEzNWI2MmYyZDIxY2EzY2E5ZjE0MGQ0MjExNzFkMDgwMWMwMDQ1Y2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC00Nyw3ICs0Nyw2IEBACiAjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQogI2luY2x1ZGUgIkF1ZGlvVHJhY2suaCIKICNpbmNsdWRlICJD
YXB0aW9uVXNlclByZWZlcmVuY2VzLmgiCi0jaW5jbHVkZSAiUE9ESW50ZXJ2YWwuaCIKICNpbmNs
dWRlICJUZXh0VHJhY2suaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKICNpbmNsdWRlICJW
VFRDdWUuaCIKQEAgLTEwNiw2ICsxMDUsNyBAQCBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZTsKIGNs
YXNzIFdlYktpdE1lZGlhS2V5czsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIERPTVByb21p
c2VEZWZlcnJlZDsKK3RlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZT4gY2xhc3MgUE9ESW50ZXJ2
YWw7CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogY2xhc3MgUmVtb3Rl
UGxheWJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xFbGVtZW50cy5jcHAKaW5kZXggMGNiZDBhM2NjZTAzOTI5NWI0OTI1Y2UzMWEwNTRlMWY2OTEw
ZDkzMC4uMzRiYTM3MmQ0OTE0M2NmZTI5M2E3YzJhODk0NWU0MGYzNTFiMTA1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcApA
QCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYUNv
bnRyb2xzLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIlBPREludGVydmFs
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUg
IlJlbmRlckxheWVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QT0RJ
bnRlcnZhbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWwuaAppbmRleCA5
NmUwNDdiNmQ4NDE5ZDUxZDg4NDNiNjQ0ZWU2ZWViODAyZDRmMTEyLi4xNzMwZjYzY2ExZGI2ZTc4
MzYzOWIyNDgyOGMzMTcyMGRkYjY1NTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QT0RJbnRlcnZhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BPREludGVy
dmFsLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zMSw1NyArMzIsNDMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBDbGFzcyByZXBy
ZXNlbnRpbmcgYSBjbG9zZWQgaW50ZXJ2YWwgd2hpY2ggY2FuIGhvbGQgYXJiaXRyYXJ5Ci0vLyBl
bmRwb2ludHMgYW5kIGEgcGllY2Ugb2YgdXNlcgotLy8gZGF0YS4gQW4gaW1wb3J0YW50IGNoYXJh
Y3RlcmlzdGljIGZvciB0aGUgYWxnb3JpdGhtcyB3ZSB1c2UgaXMgdGhhdAotLy8gaWYgdHdvIGlu
dGVydmFscyBoYXZlIGlkZW50aWNhbCBlbmRwb2ludHMgYnV0IGRpZmZlcmVudCB1c2VyIGRhdGEs
Ci0vLyB0aGV5IGFyZSBub3QgY29uc2lkZXJlZCB0byBiZSBlcXVhbC4gVGhpcyBzaXR1YXRpb24g
Y2FuIGFyaXNlIHdoZW4KLS8vIHJlcHJlc2VudGluZyB0aGUgdmVydGljYWwgZXh0ZW50cyBvZiBi
b3VuZGluZyBib3hlcyBvZiBvdmVybGFwcGluZwotLy8gdHJpYW5nbGVzLCB3aGVyZSB0aGUgcG9p
bnRlciB0byB0aGUgdHJpYW5nbGUgaXMgdGhlIHVzZXIgZGF0YSBvZgotLy8gdGhlIGludGVydmFs
LgorLy8gQ2xhc3MgdGVtcGxhdGUgcmVwcmVzZW50aW5nIGEgY2xvc2VkIGludGVydmFsIHdoaWNo
IGNhbiBob2xkIGFyYml0cmFyeQorLy8gZW5kcG9pbnRzIGFuZCBhIHBpZWNlIG9mIHVzZXIgZGF0
YS4gT3JkZXJpbmcgYW5kIGVxdWFsaXR5IGFyZSBkZWZpbmVkCisvLyBpbmNsdWRpbmcgdGhlIFVz
ZXJEYXRhLCBleGNlcHQgaW4gdGhlIHNwZWNpYWwgY2FzZSBvZiBXZWFrUHRyLgogLy8KLS8vICpO
b3RlKiB0aGF0IHRoZSBkZXN0cnVjdG9ycyBvZiB0eXBlIFQgYW5kIFVzZXJEYXRhIHdpbGwgKm5v
dCogYmUKLS8vIGNhbGxlZCBieSB0aGlzIGNsYXNzLiBUaGV5IG11c3Qgbm90IGFsbG9jYXRlIGFu
eSBtZW1vcnkgdGhhdCBpcwotLy8gcmVxdWlyZWQgdG8gYmUgY2xlYW5lZCB1cCBpbiB0aGVpciBk
ZXN0cnVjdG9ycy4KLS8vCi0vLyBUaGUgZm9sbG93aW5nIGNvbnN0cnVjdG9ycyBhbmQgb3BlcmF0
b3JzIG11c3QgYmUgaW1wbGVtZW50ZWQgb24KLS8vIHR5cGUgVDoKLS8vCi0vLyAgIC0gQ29weSBj
b25zdHJ1Y3RvcgotLy8gICAtIG9wZXJhdG9yPAotLy8gICAtIG9wZXJhdG9yPT0KLS8vICAgLSBv
cGVyYXRvcj0KLS8vCi0vLyBUaGUgVXNlckRhdGEgdHlwZSBtdXN0IHN1cHBvcnQgYSBjb3B5IGNv
bnN0cnVjdG9yIGFuZCBhc3NpZ25tZW50Ci0vLyBvcGVyYXRvci4KKy8vIEJvdGggdGhlIFQgYW5k
IFVzZXJEYXRhIHR5cGVzIG11c3Qgc3VwcG9ydCBhIGNvcHkgY29uc3RydWN0b3IsIG9wZXJhdG9y
PCwKKy8vIG9wZXJhdG9yPT0sIGFuZCBvcGVyYXRvcj0sIGV4Y2VwdCB0aGF0IHRoaXMgZG9lcyBu
b3QgZGVwZW5kIG9uIG9wZXJhdG9yPAorLy8gb3Igb3BlcmF0b3I9PSBmb3IgV2Vha1B0ci4KIC8v
CiAvLyBJbiBkZWJ1ZyBtb2RlLCBwcmludGluZyBvZiBpbnRlcnZhbHMgYW5kIHRoZSBkYXRhIHRo
ZXkgY29udGFpbiBpcwogLy8gZW5hYmxlZC4gVGhpcyB1c2VzIFdURjo6VGV4dFN0cmVhbS4KIC8v
Ci0vLyBOb3RlIHRoYXQgdGhpcyBjbGFzcyByZXF1aXJlcyBhIGNvcHkgY29uc3RydWN0b3IgYW5k
IGFzc2lnbm1lbnQKLS8vIG9wZXJhdG9yIGluIG9yZGVyIHRvIGJlIHN0b3JlZCBpbiB0aGUgcmVk
LWJsYWNrIHRyZWUuCisvLyBOb3RlIHRoYXQgdGhpcyBjbGFzcyBzdXBwbGllcyBhIGNvcHkgY29u
c3RydWN0b3IgYW5kIGFzc2lnbm1lbnQKKy8vIG9wZXJhdG9yIGluIG9yZGVyIHNvIGl0IGNhbiBi
ZSBzdG9yZWQgaW4gdGhlIHJlZC1ibGFjayB0cmVlLgogCiAvLyBGSVhNRTogVGhlIHByZWZpeCAi
UE9EIiBoZXJlIGlzbid0IGNvcnJlY3Q7IHRoaXMgd29ya3Mgd2l0aCBub24tUE9EIHR5cGVzLgog
Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVc2VyRGF0YT4KLWNsYXNzIFBPREludGVydmFsIHsK
K3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFVzZXJEYXRhPiBjbGFzcyBQT0RJbnRlcnZhbEJhc2Ug
ewogcHVibGljOgotICAgIFBPREludGVydmFsKGNvbnN0IFQmIGxvdywgY29uc3QgVCYgaGlnaCkK
LSAgICAgICAgOiBtX2xvdyhsb3cpCi0gICAgICAgICwgbV9oaWdoKGhpZ2gpCi0gICAgICAgICwg
bV9tYXhIaWdoKGhpZ2gpCisgICAgY29uc3QgVCYgbG93KCkgY29uc3QgeyByZXR1cm4gbV9sb3c7
IH0KKyAgICBjb25zdCBUJiBoaWdoKCkgY29uc3QgeyByZXR1cm4gbV9oaWdoOyB9CisgICAgY29u
c3QgVXNlckRhdGEmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKworICAgIGJvb2wg
b3ZlcmxhcHMoY29uc3QgVCYgbG93LCBjb25zdCBUJiBoaWdoKSBjb25zdAogICAgIHsKKyAgICAg
ICAgcmV0dXJuICEobV9oaWdoIDwgbG93IHx8IGhpZ2ggPCBtX2xvdyk7CiAgICAgfQogCi0gICAg
UE9ESW50ZXJ2YWwoY29uc3QgVCYgbG93LCBjb25zdCBUJiBoaWdoLCBjb25zdCBVc2VyRGF0YSYg
ZGF0YSkKLSAgICAgICAgOiBtX2xvdyhsb3cpCi0gICAgICAgICwgbV9oaWdoKGhpZ2gpCi0gICAg
ICAgICwgbV9kYXRhKGRhdGEpCi0gICAgICAgICwgbV9tYXhIaWdoKGhpZ2gpCisgICAgYm9vbCBv
dmVybGFwcyhjb25zdCBQT0RJbnRlcnZhbEJhc2UmIG90aGVyKSBjb25zdAogICAgIHsKKyAgICAg
ICAgcmV0dXJuIG92ZXJsYXBzKG90aGVyLm1fbG93LCBvdGhlci5tX2hpZ2gpOwogICAgIH0KIAot
ICAgIFBPREludGVydmFsKGNvbnN0IFQmIGxvdywgY29uc3QgVCYgaGlnaCwgVXNlckRhdGEmJiBk
YXRhKQorICAgIGNvbnN0IFQmIG1heEhpZ2goKSBjb25zdCB7IHJldHVybiBtX21heEhpZ2g7IH0K
KyAgICB2b2lkIHNldE1heEhpZ2goY29uc3QgVCYgbWF4SGlnaCkgeyBtX21heEhpZ2ggPSBtYXhI
aWdoOyB9CisKK3Byb3RlY3RlZDoKKyAgICBQT0RJbnRlcnZhbEJhc2UoY29uc3QgVCYgbG93LCBj
b25zdCBUJiBoaWdoLCBVc2VyRGF0YSYmIGRhdGEpCiAgICAgICAgIDogbV9sb3cobG93KQogICAg
ICAgICAsIG1faGlnaChoaWdoKQogICAgICAgICAsIG1fZGF0YShXVEZNb3ZlKGRhdGEpKQpAQCAt
ODksNDggKzc2LDY3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgY29uc3QgVCYgbG93
KCkgY29uc3QgeyByZXR1cm4gbV9sb3c7IH0KLSAgICBjb25zdCBUJiBoaWdoKCkgY29uc3QgeyBy
ZXR1cm4gbV9oaWdoOyB9Ci0gICAgY29uc3QgVXNlckRhdGEmIGRhdGEoKSBjb25zdCB7IHJldHVy
biBtX2RhdGE7IH0KK3ByaXZhdGU6CisgICAgVCBtX2xvdzsKKyAgICBUIG1faGlnaDsKKyAgICBV
c2VyRGF0YSBtX2RhdGEgeyB9OworICAgIFQgbV9tYXhIaWdoOworfTsKIAotICAgIGJvb2wgb3Zl
cmxhcHMoY29uc3QgVCYgbG93LCBjb25zdCBUJiBoaWdoKSBjb25zdAordGVtcGxhdGU8Y2xhc3Mg
VCwgY2xhc3MgVXNlckRhdGE+IGNsYXNzIFBPREludGVydmFsIDogcHVibGljIFBPREludGVydmFs
QmFzZTxULCBVc2VyRGF0YT4geworcHVibGljOgorICAgIFBPREludGVydmFsKGNvbnN0IFQmIGxv
dywgY29uc3QgVCYgaGlnaCwgVXNlckRhdGEmJiBkYXRhID0geyB9KQorICAgICAgICA6IFBPRElu
dGVydmFsQmFzZTxULCBVc2VyRGF0YT4obG93LCBoaWdoLCBXVEZNb3ZlKGRhdGEpKQogICAgIHsK
LSAgICAgICAgaWYgKHRoaXMtPmhpZ2goKSA8IGxvdykKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgaWYgKGhpZ2ggPCB0aGlzLT5sb3coKSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgYm9vbCBvdmVybGFwcyhj
b25zdCBQT0RJbnRlcnZhbCYgb3RoZXIpIGNvbnN0CisgICAgUE9ESW50ZXJ2YWwoY29uc3QgVCYg
bG93LCBjb25zdCBUJiBoaWdoLCBjb25zdCBVc2VyRGF0YSYgZGF0YSkKKyAgICAgICAgOiBQT0RJ
bnRlcnZhbEJhc2U8VCwgVXNlckRhdGE+KGxvdywgaGlnaCwgVXNlckRhdGEgeyBkYXRhIH0pCiAg
ICAgewotICAgICAgICByZXR1cm4gb3ZlcmxhcHMob3RoZXIubG93KCksIG90aGVyLmhpZ2goKSk7
CiAgICAgfQogCi0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgaW50ZXJ2YWwgaXMgImxlc3Mi
IHRoYW4gdGhlIG90aGVyLiBUaGUKLSAgICAvLyBjb21wYXJpc29uIGlzIHBlcmZvcm1lZCBvbiB0
aGUgbG93IGVuZHBvaW50cyBvZiB0aGUgaW50ZXJ2YWxzLgogICAgIGJvb2wgb3BlcmF0b3I8KGNv
bnN0IFBPREludGVydmFsJiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBsb3co
KSA8IG90aGVyLmxvdygpOworICAgICAgICBpZiAoQmFzZTo6bG93KCkgPCBvdGhlci5CYXNlOjps
b3coKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAob3RoZXIuQmFzZTo6
bG93KCkgPCBCYXNlOjpsb3coKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
aWYgKEJhc2U6OmhpZ2goKSA8IG90aGVyLkJhc2U6OmhpZ2goKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICBpZiAob3RoZXIuQmFzZTo6aGlnaCgpIDwgQmFzZTo6aGlnaCgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gQmFzZTo6ZGF0YSgpIDwg
b3RoZXIuQmFzZTo6ZGF0YSgpOwogICAgIH0KIAotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlz
IGludGVydmFsIGlzIHN0cmljdGx5IGVxdWFsIHRvIHRoZSBvdGhlciwKLSAgICAvLyBpbmNsdWRp
bmcgY29tcGFyaXNvbiBvZiB0aGUgdXNlciBkYXRhLgogICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBQT0RJbnRlcnZhbCYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gKGxvdygp
ID09IG90aGVyLmxvdygpCi0gICAgICAgICAgICAgICAgJiYgaGlnaCgpID09IG90aGVyLmhpZ2go
KQotICAgICAgICAgICAgICAgICYmIGRhdGEoKSA9PSBvdGhlci5kYXRhKCkpOworICAgICAgICBy
ZXR1cm4gQmFzZTo6bG93KCkgPT0gb3RoZXIuQmFzZTo6bG93KCkKKyAgICAgICAgICAgICYmIEJh
c2U6OmhpZ2goKSA9PSBvdGhlci5CYXNlOjpoaWdoKCkKKyAgICAgICAgICAgICYmIEJhc2U6OmRh
dGEoKSA9PSBvdGhlci5CYXNlOjpkYXRhKCk7CiAgICAgfQogCi0gICAgY29uc3QgVCYgbWF4SGln
aCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4SGlnaDsgfQotICAgIHZvaWQgc2V0TWF4SGlnaChjb25z
dCBUJiBtYXhIaWdoKSB7IG1fbWF4SGlnaCA9IG1heEhpZ2g7IH0KK3ByaXZhdGU6CisgICAgdXNp
bmcgQmFzZSA9IFBPREludGVydmFsQmFzZTxULCBVc2VyRGF0YT47Cit9OworCit0ZW1wbGF0ZTxj
bGFzcyBULCBjbGFzcyBVPiBjbGFzcyBQT0RJbnRlcnZhbDxULCBXVEY6OldlYWtQdHI8VT4+IDog
cHVibGljIFBPREludGVydmFsQmFzZTxULCBXVEY6OldlYWtQdHI8VT4+IHsKK3B1YmxpYzoKKyAg
ICBQT0RJbnRlcnZhbChjb25zdCBUJiBsb3csIGNvbnN0IFQmIGhpZ2gsIFdURjo6V2Vha1B0cjxV
PiYmIGRhdGEpCisgICAgICAgIDogUE9ESW50ZXJ2YWxCYXNlPFQsIFdURjo6V2Vha1B0cjxVPj4o
bG93LCBoaWdoLCBXVEZNb3ZlKGRhdGEpKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIG9wZXJh
dG9yPChjb25zdCBQT0RJbnRlcnZhbCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBpZiAo
QmFzZTo6bG93KCkgPCBvdGhlci5CYXNlOjpsb3coKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICBpZiAob3RoZXIuQmFzZTo6bG93KCkgPCBCYXNlOjpsb3coKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmhpZ2goKSA8IG90aGVyLkJh
c2U6OmhpZ2goKTsKKyAgICB9CiAKIHByaXZhdGU6Ci0gICAgVCBtX2xvdzsKLSAgICBUIG1faGln
aDsKLSAgICBVc2VyRGF0YSBtX2RhdGEgeyB9OwotICAgIFQgbV9tYXhIaWdoOworICAgIHVzaW5n
IEJhc2UgPSBQT0RJbnRlcnZhbEJhc2U8VCwgV1RGOjpXZWFrUHRyPFU+PjsKIH07CiAKICNpZm5k
ZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QT0RJbnRlcnZh
bFRyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BPREludGVydmFsVHJlZS5oCmluZGV4
IGJlNGI4OGY3MzZjNjA4Yzc0MWJjOWU2NjI3ZjdiOWE0N2RiODcyZTUuLjJkMDM3MTI0NjA5YTQ4
NjE3Y2FhYzIyNGI4MzNlMGZmZmRkNWJjZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BPREludGVydmFsVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BP
REludGVydmFsVHJlZS5oCkBAIC0zNSw2OSArMzUsMjkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVXNlckRhdGE+Ci1jbGFzcyBQT0RJbnRlcnZh
bFNlYXJjaEFkYXB0ZXIgewotcHVibGljOgotICAgIHR5cGVkZWYgUE9ESW50ZXJ2YWw8VCwgVXNl
ckRhdGE+IEludGVydmFsVHlwZTsKLSAgICAKLSAgICBQT0RJbnRlcnZhbFNlYXJjaEFkYXB0ZXIo
VmVjdG9yPEludGVydmFsVHlwZT4mIHJlc3VsdCwgY29uc3QgVCYgbG93VmFsdWUsIGNvbnN0IFQm
IGhpZ2hWYWx1ZSkKLSAgICAgICAgOiBtX3Jlc3VsdChyZXN1bHQpCi0gICAgICAgICwgbV9sb3dW
YWx1ZShsb3dWYWx1ZSkKLSAgICAgICAgLCBtX2hpZ2hWYWx1ZShoaWdoVmFsdWUpCi0gICAgewot
ICAgIH0KLSAgICAKLSAgICBjb25zdCBUJiBsb3dWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG93
VmFsdWU7IH0KLSAgICBjb25zdCBUJiBoaWdoVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2hpZ2hW
YWx1ZTsgfQotICAgIHZvaWQgY29sbGVjdElmTmVlZGVkKGNvbnN0IEludGVydmFsVHlwZSYgZGF0
YSkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChkYXRhLm92ZXJsYXBzKG1fbG93VmFsdWUsIG1f
aGlnaFZhbHVlKSkKLSAgICAgICAgICAgIG1fcmVzdWx0LmFwcGVuZChkYXRhKTsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgVmVjdG9yPEludGVydmFsVHlwZT4mIG1fcmVzdWx0OwotICAgIFQgbV9s
b3dWYWx1ZTsKLSAgICBUIG1faGlnaFZhbHVlOwotfTsKLQogc3RydWN0IFBPREludGVydmFsTm9k
ZVVwZGF0ZXI7CiAKIC8vIEFuIGludGVydmFsIHRyZWUsIHdoaWNoIGlzIGEgZm9ybSBvZiBhdWdt
ZW50ZWQgcmVkLWJsYWNrIHRyZWUuIEl0CiAvLyBzdXBwb3J0cyBlZmZpY2llbnQgKE8obGcgbikp
IGluc2VydGlvbiwgcmVtb3ZhbCBhbmQgcXVlcnlpbmcgb2YKIC8vIGludGVydmFscyBpbiB0aGUg
dHJlZS4KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFVzZXJEYXRhPgotY2xhc3MgUE9ESW50ZXJ2
YWxUcmVlIGZpbmFsIDogcHVibGljIFBPRFJlZEJsYWNrVHJlZTxQT0RJbnRlcnZhbDxULCBVc2Vy
RGF0YT4sIFBPREludGVydmFsTm9kZVVwZGF0ZXIsIHRydWU+IHsKK3RlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFVzZXJEYXRhPiBjbGFzcyBQT0RJbnRlcnZhbFRyZWUgZmluYWwgOiBwdWJs
aWMgUE9EUmVkQmxhY2tUcmVlPFBPREludGVydmFsPFQsIFVzZXJEYXRhPiwgUE9ESW50ZXJ2YWxO
b2RlVXBkYXRlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IC8vIFR5cGVkZWYgdG8gcmVkdWNlIHR5cGluZyB3aGVuIGRlY2xhcmluZyBpbnRlcnZhbHMgdG8g
YmUgc3RvcmVkIGluCi0gICAgLy8gdGhpcyB0cmVlLgotICAgIHR5cGVkZWYgUE9ESW50ZXJ2YWw8
VCwgVXNlckRhdGE+IEludGVydmFsVHlwZTsKLSAgICB0eXBlZGVmIFBPREludGVydmFsU2VhcmNo
QWRhcHRlcjxULCBVc2VyRGF0YT4gSW50ZXJ2YWxTZWFyY2hBZGFwdGVyVHlwZTsKLQotICAgIC8v
IFJldHVybnMgYWxsIGludGVydmFscyBpbiB0aGUgdHJlZSB3aGljaCBvdmVybGFwIHRoZSBnaXZl
biBxdWVyeQotICAgIC8vIGludGVydmFsLiBUaGUgcmV0dXJuZWQgaW50ZXJ2YWxzIGFyZSBzb3J0
ZWQgYnkgaW5jcmVhc2luZyBsb3cKLSAgICAvLyBlbmRwb2ludC4KKyAgICB1c2luZyBJbnRlcnZh
bFR5cGUgPSBQT0RJbnRlcnZhbDxULCBVc2VyRGF0YT47CisgICAgY2xhc3MgT3ZlcmxhcHNTZWFy
Y2hBZGFwdGVyOworCisgICAgLy8gUmV0dXJucyBhbGwgaW50ZXJ2YWxzIGluIHRoZSB0cmVlIHdo
aWNoIG92ZXJsYXAgdGhlIGdpdmVuIHF1ZXJ5IGludGVydmFsLCBzb3J0ZWQgYnkgdGhlIDwgb3Bl
cmF0b3IuCiAgICAgVmVjdG9yPEludGVydmFsVHlwZT4gYWxsT3ZlcmxhcHMoY29uc3QgSW50ZXJ2
YWxUeXBlJiBpbnRlcnZhbCkgY29uc3QKICAgICB7CiAgICAgICAgIFZlY3RvcjxJbnRlcnZhbFR5
cGU+IHJlc3VsdDsKLSAgICAgICAgSW50ZXJ2YWxTZWFyY2hBZGFwdGVyVHlwZSBhZGFwdGVyKHJl
c3VsdCwgaW50ZXJ2YWwubG93KCksIGludGVydmFsLmhpZ2goKSk7Ci0gICAgICAgIGFsbE92ZXJs
YXBzV2l0aEFkYXB0ZXI8SW50ZXJ2YWxTZWFyY2hBZGFwdGVyVHlwZT4oYWRhcHRlcik7CisgICAg
ICAgIE92ZXJsYXBzU2VhcmNoQWRhcHRlciBhZGFwdGVyKHJlc3VsdCwgaW50ZXJ2YWwpOworICAg
ICAgICBhbGxPdmVybGFwc1dpdGhBZGFwdGVyKGFkYXB0ZXIpOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KIAotICAgIHRlbXBsYXRlIDxjbGFzcyBBZGFwdGVyVHlwZT4KLSAgICB2b2lk
IGFsbE92ZXJsYXBzV2l0aEFkYXB0ZXIoQWRhcHRlclR5cGUmIGFkYXB0ZXIpIGNvbnN0Ci0gICAg
ewotICAgICAgICAvLyBFeHBsaWNpdCBkZXJlZmVyZW5jZSBvZiAidGhpcyIgcmVxdWlyZWQgYmVj
YXVzZSBvZgotICAgICAgICAvLyBpbmhlcml0YW5jZSBydWxlcyBpbiB0ZW1wbGF0ZSBjbGFzc2Vz
LgotICAgICAgICBzZWFyY2hGb3JPdmVybGFwc0Zyb208QWRhcHRlclR5cGU+KHRoaXMtPnJvb3Qo
KSwgYWRhcHRlcik7Ci0gICAgfQotCi0gICAgLy8gSGVscGVyIHRvIGNyZWF0ZSBpbnRlcnZhbCBv
YmplY3RzLgotICAgIHN0YXRpYyBJbnRlcnZhbFR5cGUgY3JlYXRlSW50ZXJ2YWwoY29uc3QgVCYg
bG93LCBjb25zdCBUJiBoaWdoLCBVc2VyRGF0YSYmIGRhdGEgPSB7IH0pCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQWRhcHRlclR5cGU+IHZvaWQgYWxsT3ZlcmxhcHNXaXRoQWRhcHRlcihBZGFwdGVy
VHlwZSYgYWRhcHRlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBJbnRlcnZhbFR5cGUo
bG93LCBoaWdoLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgc2VhcmNoRm9yT3ZlcmxhcHNGcm9t
KHRoaXMtPnJvb3QoKSwgYWRhcHRlcik7CiAgICAgfQogCiAgICAgT3B0aW9uYWw8SW50ZXJ2YWxU
eXBlPiBuZXh0SW50ZXJ2YWxBZnRlcihjb25zdCBUJiBwb2ludCkKQEAgLTExNiwyMCArNzYsMTkg
QEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoIXRoaXMt
PnJvb3QoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4gY2hlY2tJ
bnZhcmlhbnRzRnJvbU5vZGUodGhpcy0+cm9vdCgpLCAwKTsKKyAgICAgICAgcmV0dXJuIGNoZWNr
SW52YXJpYW50c0Zyb21Ob2RlKHRoaXMtPnJvb3QoKSwgbnVsbHB0cik7CiAgICAgfQogCiAjZW5k
aWYKIAogcHJpdmF0ZToKLSAgICB1c2luZyBCYXNlID0gUE9EUmVkQmxhY2tUcmVlPFBPREludGVy
dmFsPFQsIFVzZXJEYXRhPiwgUE9ESW50ZXJ2YWxOb2RlVXBkYXRlciwgdHJ1ZT47Ci0gICAgdHlw
ZWRlZiB0eXBlbmFtZSBCYXNlOjpOb2RlIEludGVydmFsTm9kZTsKKyAgICB1c2luZyBCYXNlID0g
UE9EUmVkQmxhY2tUcmVlPFBPREludGVydmFsPFQsIFVzZXJEYXRhPiwgUE9ESW50ZXJ2YWxOb2Rl
VXBkYXRlcj47CisgICAgdXNpbmcgSW50ZXJ2YWxOb2RlID0gdHlwZW5hbWUgQmFzZTo6Tm9kZTsK
IAogICAgIC8vIFN0YXJ0aW5nIGZyb20gdGhlIGdpdmVuIG5vZGUsIGFkZHMgYWxsIG92ZXJsYXBz
IHdpdGggdGhlIGdpdmVuCiAgICAgLy8gaW50ZXJ2YWwgdG8gdGhlIHJlc3VsdCB2ZWN0b3IuIFRo
ZSBpbnRlcnZhbHMgYXJlIHNvcnRlZCBieQogICAgIC8vIGluY3JlYXNpbmcgbG93IGVuZHBvaW50
LgotICAgIHRlbXBsYXRlIDxjbGFzcyBBZGFwdGVyVHlwZT4KLSAgICB2b2lkIHNlYXJjaEZvck92
ZXJsYXBzRnJvbShJbnRlcnZhbE5vZGUqIG5vZGUsIEFkYXB0ZXJUeXBlJiBhZGFwdGVyKSBjb25z
dAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0ZXJUeXBlPiB2b2lkIHNlYXJjaEZvck92ZXJs
YXBzRnJvbShJbnRlcnZhbE5vZGUqIG5vZGUsIEFkYXB0ZXJUeXBlJiBhZGFwdGVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgaWYgKCFub2RlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjE5LDYg
KzE3OCwyOSBAQCBwcml2YXRlOgogCiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVc2VyRGF0YT4gY2xhc3MgUE9ESW50ZXJ2YWxUcmVlPFQsIFVzZXJEYXRhPjo6T3ZlcmxhcHNT
ZWFyY2hBZGFwdGVyIHsKK3B1YmxpYzoKKyAgICB1c2luZyBJbnRlcnZhbFR5cGUgPSBQT0RJbnRl
cnZhbDxULCBVc2VyRGF0YT47CisKKyAgICBPdmVybGFwc1NlYXJjaEFkYXB0ZXIoVmVjdG9yPElu
dGVydmFsVHlwZT4mIHJlc3VsdCwgY29uc3QgSW50ZXJ2YWxUeXBlJiBpbnRlcnZhbCkKKyAgICAg
ICAgOiBtX3Jlc3VsdChyZXN1bHQpCisgICAgICAgICwgbV9pbnRlcnZhbChpbnRlcnZhbCkKKyAg
ICB7CisgICAgfQorCisgICAgY29uc3QgVCYgbG93VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2lu
dGVydmFsLmxvdygpOyB9CisgICAgY29uc3QgVCYgaGlnaFZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV9pbnRlcnZhbC5oaWdoKCk7IH0KKyAgICB2b2lkIGNvbGxlY3RJZk5lZWRlZChjb25zdCBJbnRl
cnZhbFR5cGUmIGRhdGEpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoZGF0YS5vdmVybGFwcyht
X2ludGVydmFsKSkKKyAgICAgICAgICAgIG1fcmVzdWx0LmFwcGVuZChkYXRhKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgVmVjdG9yPEludGVydmFsVHlwZT4mIG1fcmVzdWx0OworICAgIGNvbnN0
IEludGVydmFsVHlwZSYgbV9pbnRlcnZhbDsKK307CisKIHN0cnVjdCBQT0RJbnRlcnZhbE5vZGVV
cGRhdGVyIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlPiBzdGF0aWMgYm9vbCB1cGRhdGUo
Tm9kZSYgbm9kZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
T0RSZWRCbGFja1RyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BPRFJlZEJsYWNrVHJl
ZS5oCmluZGV4IGQ0OGY0OThlYTZhZGQyMzNjMTAxYmRjNWQzODQ1ZTkxNzU3ZGJiNTIuLjRiMzE4
ZmRhYzIyMDUxN2NmOTE4Yzc0YzI5ZDA1ZjEwMzMxNTkwMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BPRFJlZEJsYWNrVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BPRFJlZEJsYWNrVHJlZS5oCkBAIC0zOSwxNyArMzksNiBAQAogLy8gSW4gZGVidWcg
bW9kZSwgcHJpbnRpbmcgb2YgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSB0cmVlIGlzCiAvLyBl
bmFibGVkLiBUaGlzIG1ha2VzIHVzZSBvZiBXVEY6OlRleHRTdHJlYW0uCiAvLwotLy8gTm90ZSB0
aGF0IHdoZW4gY29tcGxleCB0eXBlcyBhcmUgc3RvcmVkIGluIHRoaXMgcmVkL2JsYWNrIHRyZWUs
IGl0Ci0vLyBpcyBwb3NzaWJsZSB0aGF0IHNpbmdsZSBpbnZvY2F0aW9ucyBvZiB0aGUgIjwiIGFu
ZCAiPT0iIG9wZXJhdG9ycwotLy8gd2lsbCBiZSBpbnN1ZmZpY2llbnQgdG8gZGVzY3JpYmUgdGhl
IG9yZGVyaW5nIG9mIGVsZW1lbnRzIGluIHRoZQotLy8gdHJlZSBkdXJpbmcgcXVlcmllcy4gQXMg
YSBjb25jcmV0ZSBleGFtcGxlLCBjb25zaWRlciB0aGUgY2FzZSB3aGVyZQotLy8gaW50ZXJ2YWxz
IGFyZSBzdG9yZWQgaW4gdGhlIHRyZWUgc29ydGVkIGJ5IGxvdyBlbmRwb2ludC4gVGhlICI8Igot
Ly8gb3BlcmF0b3Igb24gdGhlIEludGVydmFsIGNsYXNzIG9ubHkgY29tcGFyZXMgdGhlIGxvdyBl
bmRwb2ludCwgYnV0Ci0vLyB0aGUgIj09IiBvcGVyYXRvciB0YWtlcyBpbnRvIGFjY291bnQgdGhl
IGhpZ2ggZW5kcG9pbnQgYXMgd2VsbC4KLS8vIFRoaXMgbWFrZXMgdGhlIG5lY2Vzc2FyeSBsb2dp
YyBmb3IgcXVlcnlpbmcgYW5kIGRlbGV0aW9uIHNvbWV3aGF0Ci0vLyBtb3JlIGNvbXBsZXguIElu
IG9yZGVyIHRvIHByb3Blcmx5IGhhbmRsZSBzdWNoIHNpdHVhdGlvbnMsIHRoZQotLy8gdGVtcGxh
dGUgYXJndW1lbnQgIm5lZWRzRnVsbE9yZGVyaW5nQ29tcGFyaXNvbnMiIG11c3QgYmUgdHJ1ZS4K
LS8vCiAvLyBUaGlzIHJlZC1ibGFjayB0cmVlIGlzIGRlc2lnbmVkIHRvIGJlIF9hdWdtZW50ZWRf
OyBzdWJjbGFzc2VzIGNhbgogLy8gYWRkIGFkZGl0aW9uYWwgYW5kIHN1bW1hcnkgaW5mb3JtYXRp
b24gdG8gZWFjaCBub2RlIHRvIGVmZmljaWVudGx5CiAvLyBzdG9yZSBhbmQgaW5kZXggbW9yZSBj
b21wbGV4IGRhdGEgc3RydWN0dXJlcy4gQSBjb25jcmV0ZSBleGFtcGxlIGlzCkBAIC03MCwxMyAr
NTksMTEgQEAKICNlbmRpZgogCiAvLyBGSVhNRTogVGhlIHByZWZpeCAiUE9EIiBoZXJlIGlzbid0
IGNvcnJlY3Q7IHRoaXMgdHJlZSB3b3JrcyB3aXRoIG5vbi1QT0QgdHlwZXMgdG9vLgotLy8gRklY
TUU6IFJlbW92ZSB0aGUgdW51c3VhbCBuZWVkc0Z1bGxPcmRlcmluZ0NvbXBhcmlzb25zIGZlYXR1
cmUgYnkgY2hhbmdpbmcgdGhlIGludGVydmFsIHRyZWUgdG8gdXNlIGZ1bGwgb3JkZXJpbmcsIHNv
cnRpbmcgYmFzZWQgb24gbG93LCBoaWdoLCBhbmQgZGF0YS4KLS8vIEZJWE1FOiBXb3VsZCBiZSB3
b3J0aHdoaWxlIHRvIGltcGxlbWVudCB0aGlzIG9uIHRvcCBvZiBXVEY6OlJlZEJsYWNrVHJlZSBy
YXRoZXIgdGhhbiBrZWVwaW5nIHR3byBzZXBhcmF0ZSBjbGFzcyB0ZW1wbGF0ZXMgYXJvdW5kLgor
Ly8gRklYTUU6IEV4dGVuZCBXVEY6OlJlZEJsYWNrVHJlZSBhbmQgaW1wbGVtZW50IHRoaXMgb24g
dG9wIG9mIGl0IHJhdGhlciB0aGFuIGtlZXBpbmcgdHdvIHF1aXRlIHNpbWlsYXIgY2xhc3MgdGVt
cGxhdGVzIGFyb3VuZC4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBOb2RlVXBkYXRlclR5cGUsIGJvb2wgbmVlZHNGdWxsT3JkZXJpbmdDb21w
YXJpc29ucz4KLWNsYXNzIFBPRFJlZEJsYWNrVHJlZSB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBOb2RlVXBkYXRlclR5cGU+IGNsYXNzIFBPRFJlZEJsYWNrVHJlZSB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoUE9EUmVkQmxhY2tUcmVlKTsKIHB1YmxpYzoKICAgICBQT0RSZWRC
bGFja1RyZWUoKSA9IGRlZmF1bHQ7CkBAIC04Niw3ICs3Myw2IEBAIHB1YmxpYzoKICAgICAgICAg
Y2xlYXIoKTsKICAgICB9CiAKLSAgICAvLyBDbGVhcmluZyB3aWxsIGRlbGV0ZSB0aGUgY29udGVu
dHMgb2YgdGhlIHRyZWUuCiAgICAgdm9pZCBjbGVhcigpCiAgICAgewogICAgICAgICBpZiAoIW1f
cm9vdCkKQEAgLTEwMSw3ICs4Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkKGNvbnN0IFQm
IGRhdGEpCiAgICAgewotICAgICAgICBpbnNlcnROb2RlKG5ldyBOb2RlKFQgeyBkYXRhIH0pKTsK
KyAgICAgICAgYWRkKFQgeyBkYXRhIH0pOwogICAgIH0KIAogICAgIHZvaWQgYWRkKFQmJiBkYXRh
KQpAQCAtMTM1LDE0ICsxMjEsMTMgQEAgcHVibGljOgogICAgIGJvb2wgY2hlY2tJbnZhcmlhbnRz
KCkgY29uc3QKICAgICB7CiAgICAgICAgIGludCBibGFja0NvdW50OwotICAgICAgICByZXR1cm4g
Y2hlY2tJbnZhcmlhbnRzRnJvbU5vZGUobV9yb290LCAmYmxhY2tDb3VudCk7CisgICAgICAgIHJl
dHVybiBjaGVja0ludmFyaWFudHNGcm9tTm9kZShtX3Jvb3QsIGJsYWNrQ291bnQpOwogICAgIH0K
IAotICAgIC8vIER1bXBzIHRoZSB0cmVlJ3MgY29udGVudHMgdG8gdGhlIGxvZ2dpbmcgaW5mbyBz
dHJlYW0gZm9yCi0gICAgLy8gZGVidWdnaW5nIHB1cnBvc2VzLgorICAgIC8vIER1bXBzIHRoZSB0
cmVlJ3MgY29udGVudHMgdG8gdGhlIGxvZ2dpbmcgaW5mbyBzdHJlYW0gZm9yIGRlYnVnZ2luZyBw
dXJwb3Nlcy4KICAgICB2b2lkIGR1bXAoKSBjb25zdAogICAgIHsKLSAgICAgICAgZHVtcEZyb21O
b2RlKG1fcm9vdCwgMCk7CisgICAgICAgIGR1bXBTdWJ0cmVlKG1fcm9vdCwgMCk7CiAgICAgfQog
CiAgICAgLy8gVHVybnMgb24gb3Igb2ZmIHZlcmJvc2UgZGVidWdnaW5nIG9mIHRoZSB0cmVlLCBj
YXVzaW5nIG1hbnkKQEAgLTE1OCwxNCArMTQzLDEwIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAg
ICBlbnVtIENvbG9yIHsgUmVkLCBCbGFjayB9OwogCi0gICAgLy8gVGhlIGJhc2UgTm9kZSBjbGFz
cyB3aGljaCBpcyBzdG9yZWQgaW4gdGhlIHRyZWUuIE5vZGVzIGFyZSBvbmx5Ci0gICAgLy8gYW4g
aW50ZXJuYWwgY29uY2VwdDsgdXNlcnMgb2YgdGhlIHRyZWUgZGVhbCBvbmx5IHdpdGggdGhlIGRh
dGEKLSAgICAvLyB0aGV5IHN0b3JlIGluIGl0LgogICAgIGNsYXNzIE5vZGUgewogICAgICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTm9k
ZSk7CiAgICAgcHVibGljOgotICAgICAgICAvLyBDb25zdHJ1Y3Rvci4gTmV3bHktY3JlYXRlZCBu
b2RlcyBhcmUgY29sb3JlZCByZWQuCiAgICAgICAgIGV4cGxpY2l0IE5vZGUoVCYmIGRhdGEpCiAg
ICAgICAgICAgICA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKQogICAgICAgICB7CkBAIC0xNzYsNyAr
MTU3LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIFQmIGRhdGEoKSB7IHJldHVybiBtX2RhdGE7
IH0KIAotICAgICAgICB2b2lkIG1vdmVEYXRhRnJvbShOb2RlKiBzcmMpIHsgbV9kYXRhID0gV1RG
TW92ZShzcmMtPm1fZGF0YSk7IH0KKyAgICAgICAgdm9pZCBtb3ZlRGF0YUZyb20oTm9kZSYgc3Jj
KSB7IG1fZGF0YSA9IFdURk1vdmUoc3JjLm1fZGF0YSk7IH0KIAogICAgICAgICBOb2RlKiBsZWZ0
KCkgY29uc3QgeyByZXR1cm4gbV9sZWZ0OyB9CiAgICAgICAgIHZvaWQgc2V0TGVmdChOb2RlKiBu
b2RlKSB7IG1fbGVmdCA9IG5vZGU7IH0KQEAgLTE5OSwzOCArMTgwLDIzIEBAIHByb3RlY3RlZDoK
ICAgICBOb2RlKiByb290KCkgY29uc3QgeyByZXR1cm4gbV9yb290OyB9CiAKIHByaXZhdGU6Ci0g
ICAgLy8gVGhpcyBpcyB0aGUgaG9vayB0aGF0IHN1YmNsYXNzZXMgc2hvdWxkIHVzZSB3aGVuCisg
ICAgLy8gVGhlIHVwZGF0ZSBmdW5jdGlvbiBpcyB0aGUgaG9vayB0aGF0IHN1YmNsYXNzZXMgc2hv
dWxkIHVzZSB3aGVuCiAgICAgLy8gYXVnbWVudGluZyB0aGUgcmVkLWJsYWNrIHRyZWUgd2l0aCBh
ZGRpdGlvbmFsIHBlci1ub2RlIHN1bW1hcnkKICAgICAvLyBpbmZvcm1hdGlvbi4gRm9yIGV4YW1w
bGUsIGluIHRoZSBjYXNlIG9mIGFuIGludGVydmFsIHRyZWUsIHRoaXMKICAgICAvLyBpcyB1c2Vk
IHRvIGNvbXB1dGUgdGhlIG1heGltdW0gZW5kcG9pbnQgb2YgdGhlIHN1YnRyZWUgYmVsb3cgdGhl
CiAgICAgLy8gZ2l2ZW4gbm9kZSBiYXNlZCBvbiB0aGUgdmFsdWVzIGluIHRoZSBsZWZ0IGFuZCBy
aWdodCBjaGlsZHJlbi4gSXQKICAgICAvLyBpcyBndWFyYW50ZWVkIHRoYXQgdGhpcyB3aWxsIGJl
IGNhbGxlZCBpbiB0aGUgY29ycmVjdCBvcmRlciB0bwogICAgIC8vIHByb3Blcmx5IHVwZGF0ZSBz
dWNoIHN1bW1hcnkgaW5mb3JtYXRpb24gYmFzZWQgb25seSBvbiB0aGUgdmFsdWVzCi0gICAgLy8g
aW4gdGhlIGxlZnQgYW5kIHJpZ2h0IGNoaWxkcmVuLiBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJu
IHRydWUgaWYKKyAgICAvLyBpbiB0aGUgbGVmdCBhbmQgcmlnaHQgY2hpbGRyZW4uIFRoZSBmdW5j
dGlvbiBzaG91bGQgcmV0dXJuIHRydWUgaWYKICAgICAvLyB0aGUgbm9kZSdzIHN1bW1hcnkgaW5m
b3JtYXRpb24gY2hhbmdlZC4KLSAgICBib29sIHVwZGF0ZU5vZGUoTm9kZSogbm9kZSkKKyAgICBz
dGF0aWMgYm9vbCB1cGRhdGVOb2RlKE5vZGUmIG5vZGUpCiAgICAgewotICAgICAgICByZXR1cm4g
Tm9kZVVwZGF0ZXJUeXBlOjp1cGRhdGUoKm5vZGUpOworICAgICAgICByZXR1cm4gTm9kZVVwZGF0
ZXJUeXBlOjp1cGRhdGUobm9kZSk7CiAgICAgfQogCi0gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAg
Ly8gR2VuZXJpYyBiaW5hcnkgc2VhcmNoIHRyZWUgb3BlcmF0aW9ucwotICAgIC8vCi0KLSAgICAv
LyBTZWFyY2hlcyB0aGUgdHJlZSBmb3IgdGhlIGdpdmVuIGRhdHVtLgogICAgIE5vZGUqIHRyZWVT
ZWFyY2goY29uc3QgVCYgZGF0YSkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChuZWVkc0Z1bGxP
cmRlcmluZ0NvbXBhcmlzb25zKQotICAgICAgICAgICAgcmV0dXJuIHRyZWVTZWFyY2hGdWxsQ29t
cGFyaXNvbnMobV9yb290LCBkYXRhKTsKLQotICAgICAgICByZXR1cm4gdHJlZVNlYXJjaE5vcm1h
bChtX3Jvb3QsIGRhdGEpOwotICAgIH0KLQotICAgIC8vIFNlYXJjaGVzIHRoZSB0cmVlIHVzaW5n
IHRoZSBub3JtYWwgY29tcGFyaXNvbiBvcGVyYXRpb25zLAotICAgIC8vIHN1aXRhYmxlIGZvciBz
aW1wbGUgZGF0YSB0eXBlcyBzdWNoIGFzIG51bWJlcnMuCi0gICAgTm9kZSogdHJlZVNlYXJjaE5v
cm1hbChOb2RlKiBjdXJyZW50LCBjb25zdCBUJiBkYXRhKSBjb25zdAotICAgIHsKLSAgICAgICAg
d2hpbGUgKGN1cnJlbnQpIHsKKyAgICAgICAgZm9yIChhdXRvKiBjdXJyZW50ID0gbV9yb290OyBj
dXJyZW50OyApIHsKICAgICAgICAgICAgIGlmIChjdXJyZW50LT5kYXRhKCkgPT0gZGF0YSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gY3VycmVudDsKICAgICAgICAgICAgIGlmIChkYXRhIDwgY3Vy
cmVudC0+ZGF0YSgpKQpAQCAtMjM4LDMyICsyMDQsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+cmlnaHQoKTsKICAgICAg
ICAgfQotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICAvLyBTZWFyY2hlcyB0aGUgdHJl
ZSB1c2luZyBtdWx0aXBsZSBjb21wYXJpc29uIG9wZXJhdGlvbnMsIHJlcXVpcmVkCi0gICAgLy8g
Zm9yIGRhdGEgdHlwZXMgd2l0aCBtb3JlIGNvbXBsZXggYmVoYXZpb3Igc3VjaCBhcyBpbnRlcnZh
bHMuCi0gICAgTm9kZSogdHJlZVNlYXJjaEZ1bGxDb21wYXJpc29ucyhOb2RlKiBjdXJyZW50LCBj
b25zdCBUJiBkYXRhKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKCFjdXJyZW50KQotICAgICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmIChkYXRhIDwgY3VycmVudC0+ZGF0YSgpKQotICAg
ICAgICAgICAgcmV0dXJuIHRyZWVTZWFyY2hGdWxsQ29tcGFyaXNvbnMoY3VycmVudC0+bGVmdCgp
LCBkYXRhKTsKLSAgICAgICAgaWYgKGN1cnJlbnQtPmRhdGEoKSA8IGRhdGEpCi0gICAgICAgICAg
ICByZXR1cm4gdHJlZVNlYXJjaEZ1bGxDb21wYXJpc29ucyhjdXJyZW50LT5yaWdodCgpLCBkYXRh
KTsKLSAgICAgICAgaWYgKGRhdGEgPT0gY3VycmVudC0+ZGF0YSgpKQotICAgICAgICAgICAgcmV0
dXJuIGN1cnJlbnQ7Ci0KLSAgICAgICAgLy8gV2UgbWF5IG5lZWQgdG8gdHJhdmVyc2UgYm90aCB0
aGUgbGVmdCBhbmQgcmlnaHQgc3VidHJlZXMuCi0gICAgICAgIE5vZGUqIHJlc3VsdCA9IHRyZWVT
ZWFyY2hGdWxsQ29tcGFyaXNvbnMoY3VycmVudC0+bGVmdCgpLCBkYXRhKTsKLSAgICAgICAgaWYg
KCFyZXN1bHQpCi0gICAgICAgICAgICByZXN1bHQgPSB0cmVlU2VhcmNoRnVsbENvbXBhcmlzb25z
KGN1cnJlbnQtPnJpZ2h0KCksIGRhdGEpOwotICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICB2b2lkIHRyZWVJbnNlcnQoTm9kZSogeikK
ICAgICB7Ci0gICAgICAgIE5vZGUqIHkgPSAwOworICAgICAgICBOb2RlKiB5ID0gbnVsbHB0cjsK
ICAgICAgICAgTm9kZSogeCA9IG1fcm9vdDsKICAgICAgICAgd2hpbGUgKHgpIHsKICAgICAgICAg
ICAgIHkgPSB4OwpAQCAtMjk3LDggKzI0Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB5
OwogICAgIH0KIAotICAgIC8vIEZpbmRzIHRoZSBtaW5pbXVtIGVsZW1lbnQgaW4gdGhlIHN1Yi10
cmVlIHJvb3RlZCBhdCB0aGUgZ2l2ZW4KLSAgICAvLyBub2RlLgorICAgIC8vIEZpbmRzIHRoZSBt
aW5pbXVtIGVsZW1lbnQgaW4gdGhlIHN1Yi10cmVlIHJvb3RlZCBhdCB0aGUgZ2l2ZW4gbm9kZS4K
ICAgICBzdGF0aWMgTm9kZSogdHJlZU1pbmltdW0oTm9kZSogeCkKICAgICB7CiAgICAgICAgIHdo
aWxlICh4LT5sZWZ0KCkpCkBAIC0zMTQsMTYgKzI1OSw2IEBAIHByaXZhdGU6CiAgICAgICAgIHJl
dHVybiB5OwogICAgIH0KIAotICAgIC8vIEhlbHBlciBmb3IgbWFpbnRhaW5pbmcgdGhlIGF1Z21l
bnRlZCByZWQtYmxhY2sgdHJlZS4KLSAgICB2b2lkIHByb3BhZ2F0ZVVwZGF0ZXMoTm9kZSogc3Rh
cnQpCi0gICAgewotICAgICAgICBib29sIHNob3VsZENvbnRpbnVlID0gdHJ1ZTsKLSAgICAgICAg
d2hpbGUgKHN0YXJ0ICYmIHNob3VsZENvbnRpbnVlKSB7Ci0gICAgICAgICAgICBzaG91bGRDb250
aW51ZSA9IHVwZGF0ZU5vZGUoc3RhcnQpOwotICAgICAgICAgICAgc3RhcnQgPSBzdGFydC0+cGFy
ZW50KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAvLyBS
ZWQtQmxhY2sgdHJlZSBvcGVyYXRpb25zCiAgICAgLy8KQEAgLTM1NiwxMSArMjkxLDE3IEBAIHBy
aXZhdGU6CiAgICAgICAgIHgtPnNldFBhcmVudCh5KTsKIAogICAgICAgICAvLyBVcGRhdGUgbm9k
ZXMgbG93ZXN0IHRvIGhpZ2hlc3QuCi0gICAgICAgIHVwZGF0ZU5vZGUoeCk7Ci0gICAgICAgIHVw
ZGF0ZU5vZGUoeSk7CisgICAgICAgIHVwZGF0ZU5vZGUoKngpOworICAgICAgICB1cGRhdGVOb2Rl
KCp5KTsKICAgICAgICAgcmV0dXJuIHk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcHJvcGFn
YXRlVXBkYXRlcyhOb2RlKiBzdGFydCkKKyAgICB7CisgICAgICAgIHdoaWxlIChzdGFydCAmJiB1
cGRhdGVOb2RlKCpzdGFydCkpCisgICAgICAgICAgICBzdGFydCA9IHN0YXJ0LT5wYXJlbnQoKTsK
KyAgICB9CisKICAgICAvLyBSaWdodC1yb3RhdGVzIHRoZSBzdWJ0cmVlIHJvb3RlZCBhdCB5Lgog
ICAgIC8vIFJldHVybnMgdGhlIG5ldyByb290IG9mIHRoZSBzdWJ0cmVlICh5J3MgbGVmdCBjaGls
ZCkuCiAgICAgTm9kZSogcmlnaHRSb3RhdGUoTm9kZSogeSkKQEAgLTM4OSw4ICszMzAsOCBAQCBw
cml2YXRlOgogICAgICAgICB5LT5zZXRQYXJlbnQoeCk7CiAKICAgICAgICAgLy8gVXBkYXRlIG5v
ZGVzIGxvd2VzdCB0byBoaWdoZXN0LgotICAgICAgICB1cGRhdGVOb2RlKHkpOwotICAgICAgICB1
cGRhdGVOb2RlKHgpOworICAgICAgICB1cGRhdGVOb2RlKCp5KTsKKyAgICAgICAgdXBkYXRlTm9k
ZSgqeCk7CiAgICAgICAgIHJldHVybiB4OwogICAgIH0KIApAQCAtMzk5LDcgKzM0MCw3IEBAIHBy
aXZhdGU6CiAgICAgewogICAgICAgICB0cmVlSW5zZXJ0KHgpOwogICAgICAgICB4LT5zZXRDb2xv
cihSZWQpOwotICAgICAgICB1cGRhdGVOb2RlKHgpOworICAgICAgICB1cGRhdGVOb2RlKCp4KTsK
IAogICAgICAgICBsb2dJZlZlcmJvc2UoIiAgUE9EUmVkQmxhY2tUcmVlOjpJbnNlcnROb2RlIik7
CiAKQEAgLTQxNSw5ICszNTYsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICB4LT5w
YXJlbnQoKS0+c2V0Q29sb3IoQmxhY2spOwogICAgICAgICAgICAgICAgICAgICB5LT5zZXRDb2xv
cihCbGFjayk7CiAgICAgICAgICAgICAgICAgICAgIHgtPnBhcmVudCgpLT5wYXJlbnQoKS0+c2V0
Q29sb3IoUmVkKTsKLSAgICAgICAgICAgICAgICAgICAgdXBkYXRlTm9kZSh4LT5wYXJlbnQoKSk7
CisgICAgICAgICAgICAgICAgICAgIHVwZGF0ZU5vZGUoKngtPnBhcmVudCgpKTsKICAgICAgICAg
ICAgICAgICAgICAgeCA9IHgtPnBhcmVudCgpLT5wYXJlbnQoKTsKLSAgICAgICAgICAgICAgICAg
ICAgdXBkYXRlTm9kZSh4KTsKKyAgICAgICAgICAgICAgICAgICAgdXBkYXRlTm9kZSgqeCk7CiAg
ICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXJ0ID0geC0+cGFyZW50KCk7CiAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHggPT0geC0+cGFyZW50KCkt
PnJpZ2h0KCkpIHsKQEAgLTQ0Miw5ICszODMsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICB4LT5wYXJlbnQoKS0+c2V0Q29sb3IoQmxhY2spOwogICAgICAgICAgICAgICAgICAgICB5
LT5zZXRDb2xvcihCbGFjayk7CiAgICAgICAgICAgICAgICAgICAgIHgtPnBhcmVudCgpLT5wYXJl
bnQoKS0+c2V0Q29sb3IoUmVkKTsKLSAgICAgICAgICAgICAgICAgICAgdXBkYXRlTm9kZSh4LT5w
YXJlbnQoKSk7CisgICAgICAgICAgICAgICAgICAgIHVwZGF0ZU5vZGUoKngtPnBhcmVudCgpKTsK
ICAgICAgICAgICAgICAgICAgICAgeCA9IHgtPnBhcmVudCgpLT5wYXJlbnQoKTsKLSAgICAgICAg
ICAgICAgICAgICAgdXBkYXRlTm9kZSh4KTsKKyAgICAgICAgICAgICAgICAgICAgdXBkYXRlTm9k
ZSgqeCk7CiAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXJ0ID0geC0+cGFyZW50KCk7CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHggPT0geC0+
cGFyZW50KCktPmxlZnQoKSkgewpAQCAtNDY5LDggKzQxMCw3IEBAIHByaXZhdGU6CiAgICAgfQog
CiAgICAgLy8gUmVzdG9yZXMgdGhlIHJlZC1ibGFjayBwcm9wZXJ0eSB0byB0aGUgdHJlZSBhZnRl
ciBzcGxpY2luZyBvdXQKLSAgICAvLyBhIG5vZGUuIE5vdGUgdGhhdCB4IG1heSBiZSBudWxsLCB3
aGljaCBpcyB3aHkgeFBhcmVudCBtdXN0IGJlCi0gICAgLy8gc3VwcGxpZWQuCisgICAgLy8gYSBu
b2RlLiBOb3RlIHRoYXQgeCBtYXkgYmUgbnVsbCwgd2hpY2ggaXMgd2h5IHhQYXJlbnQgbXVzdCBi
ZSBzdXBwbGllZC4KICAgICB2b2lkIGRlbGV0ZUZpeHVwKE5vZGUqIHgsIE5vZGUqIHhQYXJlbnQp
CiAgICAgewogICAgICAgICB3aGlsZSAoeCAhPSBtX3Jvb3QgJiYgKCF4IHx8IHgtPmNvbG9yKCkg
PT0gQmxhY2spKSB7CkBAIC01OTQsOSArNTM0LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICB5LT5wYXJlbnQoKS0+c2V0UmlnaHQoeCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHkgIT0g
eikgewotICAgICAgICAgICAgei0+bW92ZURhdGFGcm9tKHkpOworICAgICAgICAgICAgei0+bW92
ZURhdGFGcm9tKCp5KTsKICAgICAgICAgICAgIC8vIFRoaXMgbm9kZSBoYXMgY2hhbmdlZCBsb2Nh
dGlvbiBpbiB0aGUgdHJlZSBhbmQgbXVzdCBiZSB1cGRhdGVkLgotICAgICAgICAgICAgdXBkYXRl
Tm9kZSh6KTsKKyAgICAgICAgICAgIHVwZGF0ZU5vZGUoKnopOwogICAgICAgICAgICAgLy8gVGhl
IHBhcmVudCBhbmQgaXRzIHBhcmVudHMgbWF5IG5vdyBiZSBvdXQgb2YgZGF0ZS4KICAgICAgICAg
ICAgIHByb3BhZ2F0ZVVwZGF0ZXMoei0+cGFyZW50KCkpOwogICAgICAgICB9CkBAIC02MTgsMTEg
KzU1OCwxMSBAQCBwcml2YXRlOgogCiAgICAgLy8gUmV0dXJucyBpbiB0aGUgImJsYWNrQ291bnQi
IHBhcmFtZXRlciB0aGUgbnVtYmVyIG9mIGJsYWNrCiAgICAgLy8gY2hpbGRyZW4gYWxvbmcgYWxs
IHBhdGhzIHRvIGFsbCBsZWF2ZXMgb2YgdGhlIGdpdmVuIG5vZGUuCi0gICAgYm9vbCBjaGVja0lu
dmFyaWFudHNGcm9tTm9kZShOb2RlKiBub2RlLCBpbnQqIGJsYWNrQ291bnQpIGNvbnN0CisgICAg
Ym9vbCBjaGVja0ludmFyaWFudHNGcm9tTm9kZShOb2RlKiBub2RlLCBpbnQmIGJsYWNrQ291bnQp
IGNvbnN0CiAgICAgewogICAgICAgICAvLyBCYXNlIGNhc2UgaXMgYSBsZWFmIG5vZGUuCiAgICAg
ICAgIGlmICghbm9kZSkgewotICAgICAgICAgICAgKmJsYWNrQ291bnQgPSAxOworICAgICAgICAg
ICAgYmxhY2tDb3VudCA9IDE7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQog
CkBAIC02NDAsMTQgKzU4MCwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIEV2ZXJ5IHNpbXBsZSBwYXRoIHRvIGEgbGVh
ZiBub2RlIGNvbnRhaW5zIHRoZSBzYW1lIG51bWJlciBvZgotICAgICAgICAvLyBibGFjayBub2Rl
cy4KKyAgICAgICAgLy8gRXZlcnkgc2ltcGxlIHBhdGggdG8gYSBsZWFmIG5vZGUgY29udGFpbnMg
dGhlIHNhbWUgbnVtYmVyIG9mIGJsYWNrIG5vZGVzLgogICAgICAgICBpbnQgbGVmdENvdW50ID0g
MCwgcmlnaHRDb3VudCA9IDA7Ci0gICAgICAgIGJvb2wgbGVmdFZhbGlkID0gY2hlY2tJbnZhcmlh
bnRzRnJvbU5vZGUobm9kZS0+bGVmdCgpLCAmbGVmdENvdW50KTsKLSAgICAgICAgYm9vbCByaWdo
dFZhbGlkID0gY2hlY2tJbnZhcmlhbnRzRnJvbU5vZGUobm9kZS0+cmlnaHQoKSwgJnJpZ2h0Q291
bnQpOworICAgICAgICBib29sIGxlZnRWYWxpZCA9IGNoZWNrSW52YXJpYW50c0Zyb21Ob2RlKG5v
ZGUtPmxlZnQoKSwgbGVmdENvdW50KTsKKyAgICAgICAgYm9vbCByaWdodFZhbGlkID0gY2hlY2tJ
bnZhcmlhbnRzRnJvbU5vZGUobm9kZS0+cmlnaHQoKSwgcmlnaHRDb3VudCk7CiAgICAgICAgIGlm
ICghbGVmdFZhbGlkIHx8ICFyaWdodFZhbGlkKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAqYmxhY2tDb3VudCA9IGxlZnRDb3VudCArIChub2RlLT5jb2xvcigpID09IEJsYWNr
ID8gMSA6IDApOworICAgICAgICBibGFja0NvdW50ID0gbGVmdENvdW50ICsgKG5vZGUtPmNvbG9y
KCkgPT0gQmxhY2sgPyAxIDogMCk7CiAgICAgICAgIHJldHVybiBsZWZ0Q291bnQgPT0gcmlnaHRD
b3VudDsKICAgICB9CiAKQEAgLTY2NSw4ICs2MDQsNyBAQCBwcml2YXRlOgogCiAjaWZuZGVmIE5E
RUJVRwogCi0gICAgLy8gRHVtcHMgdGhlIHN1YnRyZWUgcm9vdGVkIGF0IHRoZSBnaXZlbiBub2Rl
LgotICAgIHZvaWQgZHVtcEZyb21Ob2RlKE5vZGUqIG5vZGUsIGludCBpbmRlbnRhdGlvbikgY29u
c3QKKyAgICB2b2lkIGR1bXBTdWJ0cmVlKE5vZGUqIG5vZGUsIGludCBpbmRlbnRhdGlvbikgY29u
c3QKICAgICB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBpbmRlbnRhdGlvbjsgaSsrKQpAQCAtNjgxLDE2ICs2MTksMTMgQEAgcHJp
dmF0ZToKICAgICAgICAgfQogICAgICAgICBMT0dfRVJST1IoIiVzIiwgYnVpbGRlci50b1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBpZiAobm9kZSkgewotICAgICAgICAgICAgZHVt
cEZyb21Ob2RlKG5vZGUtPmxlZnQoKSwgaW5kZW50YXRpb24gKyAyKTsKLSAgICAgICAgICAgIGR1
bXBGcm9tTm9kZShub2RlLT5yaWdodCgpLCBpbmRlbnRhdGlvbiArIDIpOworICAgICAgICAgICAg
ZHVtcFN1YnRyZWUobm9kZS0+bGVmdCgpLCBpbmRlbnRhdGlvbiArIDIpOworICAgICAgICAgICAg
ZHVtcFN1YnRyZWUobm9kZS0+cmlnaHQoKSwgaW5kZW50YXRpb24gKyAyKTsKICAgICAgICAgfQog
ICAgIH0KIAogI2VuZGlmCiAKLSAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAvLyBEYXRhIG1lbWJl
cnMKLQogICAgIE5vZGUqIG1fcm9vdCB7IG51bGxwdHIgfTsKICNpZm5kZWYgTkRFQlVHCiAgICAg
Ym9vbCBtX3ZlcmJvc2VEZWJ1Z2dpbmcgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0Zsb2F0aW5nT2JqZWN0cy5oCmluZGV4IGNmYjIyNzM5Y2Q1NjdjMWIyNjJhZDZmMGIzZWYw
OTY1MmUxMTExNGEuLjk3NWNhYzFlZTA4NjdkM2YzMGNiZjFjYmVlZDVmOWZjZWRjNjE1MGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmgKQEAgLTIzLDcgKzIz
LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJQT0RJbnRlcnZhbC5oIgogI2luY2x1
ZGUgIlJvb3RJbmxpbmVCb3guaCIKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtMzMsNiArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBSZW5kZXJCbG9ja0Zsb3c7CiBjbGFzcyBSZW5kZXJCb3g7CiAKK3RlbXBsYXRlPHR5
cGVuYW1lLCB0eXBlbmFtZT4gY2xhc3MgUE9ESW50ZXJ2YWw7CiB0ZW1wbGF0ZTx0eXBlbmFtZSwg
dHlwZW5hbWU+IGNsYXNzIFBPREludGVydmFsVHJlZTsKIAogY2xhc3MgRmxvYXRpbmdPYmplY3Qg
ewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387479</attachid>
            <date>2020-01-12 11:17:25 -0800</date>
            <delta_ts>2020-01-13 17:41:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205238-20200112111739.patch</filename>
            <type>text/plain</type>
            <size>31714</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDRhMzVkM2U5MDBmMWMw
MjBlOTg5OTExOGFkOTg0MTMyNTMwZTFhNC4uYWRhODIzNDdmNDA4ZTFmNTA4NmZhMWQ0YjllY2Yy
MzQ5ZGU2MDdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE5LTEyLTE0ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlICJuZWVkc0Z1
bGxPcmRlcmluZ0NvbXBhcmlzb25zIiBmZWF0dXJlIGZyb20gUE9EUmVkQmxhY2tUcmVlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUyMzgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVBY3RpdmVUZXh0VHJhY2tDdWVzKTogU2ltcGxpZmllZCBjb2RlIGFuZAorICAgICAgICBlbGlt
aW5hdGUgdXNlcyBvZiB0aGUgY3JlYXRlSW50ZXJ2YWwgZnVuY3Rpb24gdG8gY29uc3RydWN0IFBP
REludGVydmFsIG9iamVjdHMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0
ZXh0VHJhY2tBZGRDdWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OnRleHRUcmFja1JlbW92ZUN1ZSk6IERpdHRvLgorCisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6IFJlbW92ZWQgdW5uZWNlc3NhcnkgaW5jbHVkZSBvZiBQT0RJbnRlcnZhbC5o
LgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOiBBZGRl
ZCBpbmNsdWRlIG9mIFBPREludGVydmFsLmguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QT0RJbnRl
cnZhbC5oOiBDaGFuZ2VkIG9wZXJhdG9yPCB0byBjb21wYXJlIGxvdywgaGlnaCwgYW5kIHVzZXIK
KyAgICAgICAgZGF0YSwgbm90IGp1c3QgbG93IGFuZCBoaWdoIHNvIGl0J3MgY29uc2lzdGVudCB3
aXRoIG9wZXJhdG9yPT0gYW5kIHdlCisgICAgICAgIGNhbiB1c2UgaXQgdG8gc2VhcmNoIGEgdHJl
ZS4gQWRkZWQgYSBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIGZvciBXZWFrUHRyCisgICAgICAgIHNp
bmNlIGEgV2Vha1B0cidzIHZhbHVlIGNhbiBjaGFuZ2UgKHRvIG51bGwpIHNvIGl0IGNhbid0IGJl
IHVzZWQgZm9yCisgICAgICAgIG9yZGVyaW5nIGFuZCBlcXVhbGl0eSBjaGVja3M7IGx1Y2tpbHkg
dGhlIGNsaWVudHMgZG9uJ3QgbmVlZCB0byB1c2UgaXQKKyAgICAgICAgdGhhdCB3YXk7IHRoZXkg
YnVpbGQgYW4gaW50ZXJ2YWwgdHJlZSBidXQgbmV2ZXIgc2VhcmNoIGZvciBhbnl0aGluZyBvcgor
ICAgICAgICByZW1vdmUgYW55dGhpbmcgZnJvbSB0aGUgdHJlZS4KKworICAgICAgICAqIHBsYXRm
b3JtL1BPREludGVydmFsVHJlZS5oOiBNYWtlIHRoZSBzZWFyY2ggYWRhcHRlciB1c2VkIHRvIGZp
bmQgb3ZlcmxhcHMKKyAgICAgICAgYSBtZW1iZXIgY2xhc3MgaW5zdGVhZCBvZiBhIHRvcCBsZXZl
bCBjbGFzcyB0ZW1wbGF0ZSBhbmQgc2ltcGxpZmllZCBpdCBhIGJpdC4KKyAgICAgICAgUmVtb3Zl
ZCB0aGUgdW5uZWVkZWQgY3JlYXRlSW50ZXJ2YWwgZnVuY3Rpb24uIFN0b3BwZWQgcGFzc2luZyB0
cnVlIGZvcgorICAgICAgICAibmVlZHNGdWxsT3JkZXJpbmdDb21wYXJpc29ucyIgc2luY2UgaXQn
cyBub3QgbmVlZGVkIGFueSBtb3JlIGR1ZSB0byB0aGUKKyAgICAgICAgY2hhbmdlcyB0byBQT0RJ
bnRlcnZhbC4KKworICAgICAgICAqIHBsYXRmb3JtL1BPRFJlZEJsYWNrVHJlZS5oOiBSZW1vdmVk
IHRoZSAibmVlZHNGdWxsT3JkZXJpbmdDb21wYXJpc29ucyIKKyAgICAgICAgdGVtcGxhdGUgYXJn
dW1lbnQgZm9yIHRoZSBQT0RSZWRCbGFja1RyZWUgY2xhc3MgdGVtcGxhdGUuCisgICAgICAgIChX
ZWJDb3JlOjpQT0RSZWRCbGFja1RyZWU6Ok5vZGU6Om1vdmVEYXRhRnJvbSk6IFRha2UgYSByZWZl
cmVuY2UgKHdoeSBub3QsCisgICAgICAgIHNpbmNlIHRoaXMgYWx3YXlzIHJlcXVpcmVzIGEgbm9u
LW51bGwgcG9pbnRlcikuCisgICAgICAgIChXZWJDb3JlOjpQT0RSZWRCbGFja1RyZWU6OnVwZGF0
ZU5vZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBPRFJlZEJsYWNrVHJlZTo6dHJlZVNl
YXJjaCBjb25zdCk6IE1lcmdlZCB0aGUgdGhyZWUgc2VhcmNoCisgICAgICAgIGZ1bmN0aW9ucyBp
bnRvIGEgc2luZ2xlIG9uZSBzaW5jZSB3ZSBkb24ndCBuZWVkIHRoZSBwZWN1bGlhcgorICAgICAg
ICAiZnVsbCBjb21wYXJpc29ucyIgbW9kZS4KKyAgICAgICAgKFdlYkNvcmU6OlBPRFJlZEJsYWNr
VHJlZTo6cHJvcGFnYXRlVXBkYXRlcyk6IFNpbXBsaWZpZWQgbG9naWMgdG8gcmVtb3ZlCisgICAg
ICAgIHRoZSBib29sZWFuIGxvY2FsIHZhcmlhYmxlLgorICAgICAgICAoV2ViQ29yZTo6UE9EUmVk
QmxhY2tUcmVlOjpkdW1wU3VidHJlZSBjb25zdCk6IFJlbmFtZWQgZnJvbSBkdW1wRnJvbU5vZGUK
KyAgICAgICAgc2luY2UgdGhlIGNvbW1lbnQgc2FpZCAiZHVtcHMgdGhlIHN1YnRyZWUiLiBBbHNv
IHJlbW92ZWQgdGhlIGNvbW1lbnQgbm93CisgICAgICAgIHRoYXQgdGhlIGZ1bmN0aW9uIG5hbWUg
c2F5cyB3aGF0IGl0IHNhaWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvRmxvYXRpbmdPYmplY3Rz
Lmg6IFJlbW92ZWQgdW5uZWNlc3NhcnkgaW5jbHVkZSBvZiBQT0RJbnRlcnZhbC5oLgorCiAyMDE5
LTEyLTIwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUg
dW5uZWVkZWQgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGNiZjMxZWJmMzU4ZTc4MmI0MzhiOGMyODhlYTZh
OGE1NDA4ZGY0NWMuLmMyNmE3ZThlZWRkMmRmZDlkMzFmOTc2M2Q0NDY1YzYyOGNiZmE4ODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTYzNSw5ICsxNjM1
LDggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKGNv
bnN0IE1lZGlhVGltZSYgbW92aWVUaW1lKQogCiAgICAgLy8gVGhlIHVzZXIgYWdlbnQgbXVzdCBz
eW5jaHJvbm91c2x5IHVuc2V0IFt0aGUgdGV4dCB0cmFjayBjdWUgYWN0aXZlXSBmbGFnCiAgICAg
Ly8gd2hlbmV2ZXIgLi4uIHRoZSBtZWRpYSBlbGVtZW50J3MgcmVhZHlTdGF0ZSBpcyBjaGFuZ2Vk
IGJhY2sgdG8gSEFWRV9OT1RISU5HLgotICAgIGF1dG8gbW92aWVUaW1lSW50ZXJ2YWwgPSBtX2N1
ZURhdGEtPmN1ZVRyZWUuY3JlYXRlSW50ZXJ2YWwobW92aWVUaW1lLCBtb3ZpZVRpbWUpOwogICAg
IGlmIChtX3JlYWR5U3RhdGUgIT0gSEFWRV9OT1RISU5HICYmIG1fcGxheWVyKSB7Ci0gICAgICAg
IGN1cnJlbnRDdWVzID0gbV9jdWVEYXRhLT5jdWVUcmVlLmFsbE92ZXJsYXBzKG1vdmllVGltZUlu
dGVydmFsKTsKKyAgICAgICAgY3VycmVudEN1ZXMgPSBtX2N1ZURhdGEtPmN1ZVRyZWUuYWxsT3Zl
cmxhcHMoeyBtb3ZpZVRpbWUsIG1vdmllVGltZSB9KTsKICAgICAgICAgaWYgKGN1cnJlbnRDdWVz
LnNpemUoKSA+IDEpCiAgICAgICAgICAgICBzdGQ6OnNvcnQoY3VycmVudEN1ZXMuYmVnaW4oKSwg
Y3VycmVudEN1ZXMuZW5kKCksICZjb21wYXJlQ3VlSW50ZXJ2YWwpOwogICAgIH0KQEAgLTE3MDcs
NyArMTcwNiw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4dFRyYWNr
Q3Vlcyhjb25zdCBNZWRpYVRpbWUmIG1vdmllVGltZSkKICAgICBpZiAoYXV0byBuZWFyZXN0RW5k
aW5nQ3VlID0gc3RkOjptaW5fZWxlbWVudChjdXJyZW50Q3Vlcy5iZWdpbigpLCBjdXJyZW50Q3Vl
cy5lbmQoKSwgY29tcGFyZUN1ZUludGVydmFsRW5kVGltZSkpCiAgICAgICAgIG5leHRJbnRlcmVz
dGluZ1RpbWUgPSBuZWFyZXN0RW5kaW5nQ3VlLT5kYXRhKCktPmVuZE1lZGlhVGltZSgpOwogCi0g
ICAgT3B0aW9uYWw8Q3VlSW50ZXJ2YWw+IG5leHRDdWUgPSBtX2N1ZURhdGEtPmN1ZVRyZWUubmV4
dEludGVydmFsQWZ0ZXIobW92aWVUaW1lSW50ZXJ2YWwuaGlnaCgpKTsKKyAgICBPcHRpb25hbDxD
dWVJbnRlcnZhbD4gbmV4dEN1ZSA9IG1fY3VlRGF0YS0+Y3VlVHJlZS5uZXh0SW50ZXJ2YWxBZnRl
cihtb3ZpZVRpbWUpOwogICAgIGlmIChuZXh0Q3VlKQogICAgICAgICBuZXh0SW50ZXJlc3RpbmdU
aW1lID0gc3RkOjptaW4obmV4dEludGVyZXN0aW5nVGltZSwgbmV4dEN1ZS0+bG93KCkpOwogCkBA
IC0xOTk2LDcgKzE5OTUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0FkZEN1
ZShUZXh0VHJhY2smIHRyYWNrLCBUZXh0VHJhY2tDdWUmIGN1ZSkKICAgICAvLyB6ZXJvLWxlbmd0
aCBjdWVzLgogICAgIE1lZGlhVGltZSBlbmRUaW1lID0gc3RkOjptYXgoY3VlLnN0YXJ0TWVkaWFU
aW1lKCksIGN1ZS5lbmRNZWRpYVRpbWUoKSk7CiAKLSAgICBDdWVJbnRlcnZhbCBpbnRlcnZhbCA9
IG1fY3VlRGF0YS0+Y3VlVHJlZS5jcmVhdGVJbnRlcnZhbChjdWUuc3RhcnRNZWRpYVRpbWUoKSwg
ZW5kVGltZSwgJmN1ZSk7CisgICAgQ3VlSW50ZXJ2YWwgaW50ZXJ2YWwoY3VlLnN0YXJ0TWVkaWFU
aW1lKCksIGVuZFRpbWUsICZjdWUpOwogICAgIGlmICghbV9jdWVEYXRhLT5jdWVUcmVlLmNvbnRh
aW5zKGludGVydmFsKSkKICAgICAgICAgbV9jdWVEYXRhLT5jdWVUcmVlLmFkZChpbnRlcnZhbCk7
CiAgICAgdXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3VlcyhjdXJyZW50TWVkaWFUaW1lKCkpOwpAQCAt
MjAxMSw3ICsyMDEwLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVD
dWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJiBjdWUpCiAgICAgLy8gemVyby1sZW5ndGggY3Vl
cy4KICAgICBNZWRpYVRpbWUgZW5kVGltZSA9IHN0ZDo6bWF4KGN1ZS5zdGFydE1lZGlhVGltZSgp
LCBjdWUuZW5kTWVkaWFUaW1lKCkpOwogCi0gICAgQ3VlSW50ZXJ2YWwgaW50ZXJ2YWwgPSBtX2N1
ZURhdGEtPmN1ZVRyZWUuY3JlYXRlSW50ZXJ2YWwoY3VlLnN0YXJ0TWVkaWFUaW1lKCksIGVuZFRp
bWUsICZjdWUpOworICAgIEN1ZUludGVydmFsIGludGVydmFsKGN1ZS5zdGFydE1lZGlhVGltZSgp
LCBlbmRUaW1lLCAmY3VlKTsKICAgICBtX2N1ZURhdGEtPmN1ZVRyZWUucmVtb3ZlKGludGVydmFs
KTsKIAogICAgIC8vIFNpbmNlIHRoZSBjdWUgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIG1lZGlh
IGVsZW1lbnQgYW5kIGxpa2VseSB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKaW5kZXggMWQ2ZGQyZWQ0NDUxYTFmYzBiMTMwZjA2ZmU3OGZiZThiZjU0Y2FjMS4uNzlhODAz
ZDIxNGIwOGMwMGM5MTJiMTYxNjU4YTQ2NDE2OGM5ZjlhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKQEAgLTQ2LDcgKzQ2LDYgQEAKICNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCiAjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgogI2luY2x1ZGUgIkNhcHRpb25Vc2VyUHJlZmVy
ZW5jZXMuaCIKLSNpbmNsdWRlICJQT0RJbnRlcnZhbC5oIgogI2luY2x1ZGUgIlRleHRUcmFjay5o
IgogI2luY2x1ZGUgIlRleHRUcmFja0N1ZS5oIgogI2luY2x1ZGUgIlZUVEN1ZS5oIgpAQCAtMTA1
LDYgKzEwNCw3IEBAIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwogY2xhc3MgV2ViS2l0TWVkaWFL
ZXlzOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVycmVkOwordGVt
cGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lPiBjbGFzcyBQT0RJbnRlcnZhbDsKIAogI2lmIEVOQUJM
RShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiBjbGFzcyBSZW1vdGVQbGF5YmFjazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcApp
bmRleCAwY2JkMGEzY2NlMDM5Mjk1YjQ5MjVjZTMxYTA1NGUxZjY5MTBkOTMwLi4zNGJhMzcyZDQ5
MTQzY2ZlMjkzYTdjMmE4OTQ1ZTQwZjM1MWIxMDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC00OCw2ICs0OCw3IEBA
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhQ29udHJvbHMuaCIKICNpbmNs
dWRlICJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiUE9ESW50ZXJ2YWwuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BPREludGVydmFsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QT0RJbnRlcnZhbC5oCmluZGV4IDk2ZTA0N2I2ZDg0MTlkNTFk
ODg0M2I2NDRlZTZlZWI4MDJkNGYxMTIuLmExNzg4ZDVhM2E1ZGI0NzFmZjBiOTBjYzlhNjA5ZDI2
M2ZhZTQ5ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BPREludGVydmFs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWwuaApAQCAtMSw1ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDEwNiArMzIsMTIy
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQ2xhc3MgcmVwcmVzZW50aW5nIGEgY2xv
c2VkIGludGVydmFsIHdoaWNoIGNhbiBob2xkIGFyYml0cmFyeQotLy8gZW5kcG9pbnRzIGFuZCBh
IHBpZWNlIG9mIHVzZXIKLS8vIGRhdGEuIEFuIGltcG9ydGFudCBjaGFyYWN0ZXJpc3RpYyBmb3Ig
dGhlIGFsZ29yaXRobXMgd2UgdXNlIGlzIHRoYXQKLS8vIGlmIHR3byBpbnRlcnZhbHMgaGF2ZSBp
ZGVudGljYWwgZW5kcG9pbnRzIGJ1dCBkaWZmZXJlbnQgdXNlciBkYXRhLAotLy8gdGhleSBhcmUg
bm90IGNvbnNpZGVyZWQgdG8gYmUgZXF1YWwuIFRoaXMgc2l0dWF0aW9uIGNhbiBhcmlzZSB3aGVu
Ci0vLyByZXByZXNlbnRpbmcgdGhlIHZlcnRpY2FsIGV4dGVudHMgb2YgYm91bmRpbmcgYm94ZXMg
b2Ygb3ZlcmxhcHBpbmcKLS8vIHRyaWFuZ2xlcywgd2hlcmUgdGhlIHBvaW50ZXIgdG8gdGhlIHRy
aWFuZ2xlIGlzIHRoZSB1c2VyIGRhdGEgb2YKLS8vIHRoZSBpbnRlcnZhbC4KKy8vIENsYXNzIHRl
bXBsYXRlIHJlcHJlc2VudGluZyBhIGNsb3NlZCBpbnRlcnZhbCB3aGljaCBjYW4gaG9sZCBhcmJp
dHJhcnkKKy8vIGVuZHBvaW50cyBhbmQgYSBwaWVjZSBvZiB1c2VyIGRhdGEuIE9yZGVyaW5nIGFu
ZCBlcXVhbGl0eSBhcmUgZGVmaW5lZAorLy8gaW5jbHVkaW5nIHRoZSBVc2VyRGF0YSwgZXhjZXB0
IGluIHRoZSBzcGVjaWFsIGNhc2Ugb2YgV2Vha1B0ci4KIC8vCi0vLyAqTm90ZSogdGhhdCB0aGUg
ZGVzdHJ1Y3RvcnMgb2YgdHlwZSBUIGFuZCBVc2VyRGF0YSB3aWxsICpub3QqIGJlCi0vLyBjYWxs
ZWQgYnkgdGhpcyBjbGFzcy4gVGhleSBtdXN0IG5vdCBhbGxvY2F0ZSBhbnkgbWVtb3J5IHRoYXQg
aXMKLS8vIHJlcXVpcmVkIHRvIGJlIGNsZWFuZWQgdXAgaW4gdGhlaXIgZGVzdHJ1Y3RvcnMuCi0v
LwotLy8gVGhlIGZvbGxvd2luZyBjb25zdHJ1Y3RvcnMgYW5kIG9wZXJhdG9ycyBtdXN0IGJlIGlt
cGxlbWVudGVkIG9uCi0vLyB0eXBlIFQ6Ci0vLwotLy8gICAtIENvcHkgY29uc3RydWN0b3IKLS8v
ICAgLSBvcGVyYXRvcjwKLS8vICAgLSBvcGVyYXRvcj09Ci0vLyAgIC0gb3BlcmF0b3I9Ci0vLwot
Ly8gVGhlIFVzZXJEYXRhIHR5cGUgbXVzdCBzdXBwb3J0IGEgY29weSBjb25zdHJ1Y3RvciBhbmQg
YXNzaWdubWVudAotLy8gb3BlcmF0b3IuCisvLyBCb3RoIHRoZSBUIGFuZCBVc2VyRGF0YSB0eXBl
cyBtdXN0IHN1cHBvcnQgYSBjb3B5IGNvbnN0cnVjdG9yLCBvcGVyYXRvcjwsCisvLyBvcGVyYXRv
cj09LCBhbmQgb3BlcmF0b3I9LCBleGNlcHQgdGhhdCB0aGlzIGRvZXMgbm90IGRlcGVuZCBvbiBv
cGVyYXRvcjwKKy8vIG9yIG9wZXJhdG9yPT0gZm9yIFdlYWtQdHIuCiAvLwogLy8gSW4gZGVidWcg
bW9kZSwgcHJpbnRpbmcgb2YgaW50ZXJ2YWxzIGFuZCB0aGUgZGF0YSB0aGV5IGNvbnRhaW4gaXMK
IC8vIGVuYWJsZWQuIFRoaXMgdXNlcyBXVEY6OlRleHRTdHJlYW0uCiAvLwotLy8gTm90ZSB0aGF0
IHRoaXMgY2xhc3MgcmVxdWlyZXMgYSBjb3B5IGNvbnN0cnVjdG9yIGFuZCBhc3NpZ25tZW50Ci0v
LyBvcGVyYXRvciBpbiBvcmRlciB0byBiZSBzdG9yZWQgaW4gdGhlIHJlZC1ibGFjayB0cmVlLgor
Ly8gTm90ZSB0aGF0IHRoaXMgY2xhc3Mgc3VwcGxpZXMgYSBjb3B5IGNvbnN0cnVjdG9yIGFuZCBh
c3NpZ25tZW50CisvLyBvcGVyYXRvciBpbiBvcmRlciBzbyBpdCBjYW4gYmUgc3RvcmVkIGluIHRo
ZSByZWQtYmxhY2sgdHJlZS4KIAogLy8gRklYTUU6IFRoZSBwcmVmaXggIlBPRCIgaGVyZSBpc24n
dCBjb3JyZWN0OyB0aGlzIHdvcmtzIHdpdGggbm9uLVBPRCB0eXBlcy4KIAotdGVtcGxhdGU8Y2xh
c3MgVCwgY2xhc3MgVXNlckRhdGE+Ci1jbGFzcyBQT0RJbnRlcnZhbCB7Cit0ZW1wbGF0ZTxjbGFz
cyBULCBjbGFzcyBVc2VyRGF0YT4gY2xhc3MgUE9ESW50ZXJ2YWxCYXNlIHsKIHB1YmxpYzoKLSAg
ICBQT0RJbnRlcnZhbChjb25zdCBUJiBsb3csIGNvbnN0IFQmIGhpZ2gpCi0gICAgICAgIDogbV9s
b3cobG93KQotICAgICAgICAsIG1faGlnaChoaWdoKQotICAgICAgICAsIG1fbWF4SGlnaChoaWdo
KQorICAgIGNvbnN0IFQmIGxvdygpIGNvbnN0IHsgcmV0dXJuIG1fbG93OyB9CisgICAgY29uc3Qg
VCYgaGlnaCgpIGNvbnN0IHsgcmV0dXJuIG1faGlnaDsgfQorICAgIGNvbnN0IFVzZXJEYXRhJiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisKKyAgICBib29sIG92ZXJsYXBzKGNvbnN0
IFQmIGxvdywgY29uc3QgVCYgaGlnaCkgY29uc3QKICAgICB7CisgICAgICAgIHJldHVybiAhKG1f
aGlnaCA8IGxvdyB8fCBoaWdoIDwgbV9sb3cpOwogICAgIH0KIAotICAgIFBPREludGVydmFsKGNv
bnN0IFQmIGxvdywgY29uc3QgVCYgaGlnaCwgY29uc3QgVXNlckRhdGEmIGRhdGEpCisgICAgYm9v
bCBvdmVybGFwcyhjb25zdCBQT0RJbnRlcnZhbEJhc2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG92ZXJsYXBzKG90aGVyLm1fbG93LCBvdGhlci5tX2hpZ2gpOworICAgIH0K
KworICAgIGNvbnN0IFQmIG1heEhpZ2goKSBjb25zdCB7IHJldHVybiBtX21heEhpZ2g7IH0KKyAg
ICB2b2lkIHNldE1heEhpZ2goY29uc3QgVCYgbWF4SGlnaCkgeyBtX21heEhpZ2ggPSBtYXhIaWdo
OyB9CisKK3Byb3RlY3RlZDoKKyAgICBQT0RJbnRlcnZhbEJhc2UoY29uc3QgVCYgbG93LCBjb25z
dCBUJiBoaWdoLCBVc2VyRGF0YSYmIGRhdGEpCiAgICAgICAgIDogbV9sb3cobG93KQogICAgICAg
ICAsIG1faGlnaChoaWdoKQotICAgICAgICAsIG1fZGF0YShkYXRhKQorICAgICAgICAsIG1fZGF0
YShXVEZNb3ZlKGRhdGEpKQogICAgICAgICAsIG1fbWF4SGlnaChoaWdoKQogICAgIHsKICAgICB9
CiAKLSAgICBQT0RJbnRlcnZhbChjb25zdCBUJiBsb3csIGNvbnN0IFQmIGhpZ2gsIFVzZXJEYXRh
JiYgZGF0YSkKKyNpZiBDT01QSUxFUihNU1ZDKQorICAgIC8vIFdvcmsgYXJvdW5kIGFuIE1TVkMg
YnVnLgorICAgIFBPREludGVydmFsQmFzZShjb25zdCBUJiBsb3csIGNvbnN0IFQmIGhpZ2gsIGNv
bnN0IFVzZXJEYXRhJiBkYXRhKQogICAgICAgICA6IG1fbG93KGxvdykKICAgICAgICAgLCBtX2hp
Z2goaGlnaCkKLSAgICAgICAgLCBtX2RhdGEoV1RGTW92ZShkYXRhKSkKKyAgICAgICAgLCBtX2Rh
dGEoZGF0YSkKICAgICAgICAgLCBtX21heEhpZ2goaGlnaCkKICAgICB7CiAgICAgfQorI2VuZGlm
CiAKLSAgICBjb25zdCBUJiBsb3coKSBjb25zdCB7IHJldHVybiBtX2xvdzsgfQotICAgIGNvbnN0
IFQmIGhpZ2goKSBjb25zdCB7IHJldHVybiBtX2hpZ2g7IH0KLSAgICBjb25zdCBVc2VyRGF0YSYg
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorcHJpdmF0ZToKKyAgICBUIG1fbG93Owor
ICAgIFQgbV9oaWdoOworICAgIFVzZXJEYXRhIG1fZGF0YSB7IH07CisgICAgVCBtX21heEhpZ2g7
Cit9OwogCi0gICAgYm9vbCBvdmVybGFwcyhjb25zdCBUJiBsb3csIGNvbnN0IFQmIGhpZ2gpIGNv
bnN0Cit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVc2VyRGF0YT4gY2xhc3MgUE9ESW50ZXJ2YWwg
OiBwdWJsaWMgUE9ESW50ZXJ2YWxCYXNlPFQsIFVzZXJEYXRhPiB7CitwdWJsaWM6CisgICAgUE9E
SW50ZXJ2YWwoY29uc3QgVCYgbG93LCBjb25zdCBUJiBoaWdoLCBVc2VyRGF0YSYmIGRhdGEgPSB7
IH0pCisgICAgICAgIDogUE9ESW50ZXJ2YWxCYXNlPFQsIFVzZXJEYXRhPihsb3csIGhpZ2gsIFdU
Rk1vdmUoZGF0YSkpCiAgICAgewotICAgICAgICBpZiAodGhpcy0+aGlnaCgpIDwgbG93KQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoaGlnaCA8IHRoaXMtPmxvdygpKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
LSAgICBib29sIG92ZXJsYXBzKGNvbnN0IFBPREludGVydmFsJiBvdGhlcikgY29uc3QKKyAgICBQ
T0RJbnRlcnZhbChjb25zdCBUJiBsb3csIGNvbnN0IFQmIGhpZ2gsIGNvbnN0IFVzZXJEYXRhJiBk
YXRhKQorICAgICAgICA6IFBPREludGVydmFsQmFzZTxULCBVc2VyRGF0YT4obG93LCBoaWdoLCBV
c2VyRGF0YSB7IGRhdGEgfSkKICAgICB7Ci0gICAgICAgIHJldHVybiBvdmVybGFwcyhvdGhlci5s
b3coKSwgb3RoZXIuaGlnaCgpKTsKICAgICB9CiAKLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhp
cyBpbnRlcnZhbCBpcyAibGVzcyIgdGhhbiB0aGUgb3RoZXIuIFRoZQotICAgIC8vIGNvbXBhcmlz
b24gaXMgcGVyZm9ybWVkIG9uIHRoZSBsb3cgZW5kcG9pbnRzIG9mIHRoZSBpbnRlcnZhbHMuCiAg
ICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgUE9ESW50ZXJ2YWwmIG90aGVyKSBjb25zdAogICAgIHsK
LSAgICAgICAgcmV0dXJuIGxvdygpIDwgb3RoZXIubG93KCk7CisgICAgICAgIGlmIChCYXNlOjps
b3coKSA8IG90aGVyLkJhc2U6OmxvdygpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIGlmIChvdGhlci5CYXNlOjpsb3coKSA8IEJhc2U6OmxvdygpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBpZiAoQmFzZTo6aGlnaCgpIDwgb3RoZXIuQmFzZTo6aGlnaCgp
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChvdGhlci5CYXNlOjpoaWdo
KCkgPCBCYXNlOjpoaWdoKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJl
dHVybiBCYXNlOjpkYXRhKCkgPCBvdGhlci5CYXNlOjpkYXRhKCk7CiAgICAgfQogCi0gICAgLy8g
UmV0dXJucyB0cnVlIGlmIHRoaXMgaW50ZXJ2YWwgaXMgc3RyaWN0bHkgZXF1YWwgdG8gdGhlIG90
aGVyLAotICAgIC8vIGluY2x1ZGluZyBjb21wYXJpc29uIG9mIHRoZSB1c2VyIGRhdGEuCiAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFBPREludGVydmFsJiBvdGhlcikgY29uc3QKICAgICB7Ci0g
ICAgICAgIHJldHVybiAobG93KCkgPT0gb3RoZXIubG93KCkKLSAgICAgICAgICAgICAgICAmJiBo
aWdoKCkgPT0gb3RoZXIuaGlnaCgpCi0gICAgICAgICAgICAgICAgJiYgZGF0YSgpID09IG90aGVy
LmRhdGEoKSk7CisgICAgICAgIHJldHVybiBCYXNlOjpsb3coKSA9PSBvdGhlci5CYXNlOjpsb3co
KQorICAgICAgICAgICAgJiYgQmFzZTo6aGlnaCgpID09IG90aGVyLkJhc2U6OmhpZ2goKQorICAg
ICAgICAgICAgJiYgQmFzZTo6ZGF0YSgpID09IG90aGVyLkJhc2U6OmRhdGEoKTsKICAgICB9CiAK
LSAgICBjb25zdCBUJiBtYXhIaWdoKCkgY29uc3QgeyByZXR1cm4gbV9tYXhIaWdoOyB9Ci0gICAg
dm9pZCBzZXRNYXhIaWdoKGNvbnN0IFQmIG1heEhpZ2gpIHsgbV9tYXhIaWdoID0gbWF4SGlnaDsg
fQorcHJpdmF0ZToKKyAgICB1c2luZyBCYXNlID0gUE9ESW50ZXJ2YWxCYXNlPFQsIFVzZXJEYXRh
PjsKK307CisKK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+IGNsYXNzIFBPREludGVydmFsPFQs
IFdURjo6V2Vha1B0cjxVPj4gOiBwdWJsaWMgUE9ESW50ZXJ2YWxCYXNlPFQsIFdURjo6V2Vha1B0
cjxVPj4geworcHVibGljOgorICAgIFBPREludGVydmFsKGNvbnN0IFQmIGxvdywgY29uc3QgVCYg
aGlnaCwgV1RGOjpXZWFrUHRyPFU+JiYgZGF0YSkKKyAgICAgICAgOiBQT0RJbnRlcnZhbEJhc2U8
VCwgV1RGOjpXZWFrUHRyPFU+Pihsb3csIGhpZ2gsIFdURk1vdmUoZGF0YSkpCisgICAgeworICAg
IH0KKworICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFBPREludGVydmFsJiBvdGhlcikgY29uc3QK
KyAgICB7CisgICAgICAgIGlmIChCYXNlOjpsb3coKSA8IG90aGVyLkJhc2U6OmxvdygpKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChvdGhlci5CYXNlOjpsb3coKSA8IEJh
c2U6OmxvdygpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gQmFz
ZTo6aGlnaCgpIDwgb3RoZXIuQmFzZTo6aGlnaCgpOworICAgIH0KIAogcHJpdmF0ZToKLSAgICBU
IG1fbG93OwotICAgIFQgbV9oaWdoOwotICAgIFVzZXJEYXRhIG1fZGF0YSB7IH07Ci0gICAgVCBt
X21heEhpZ2g7CisgICAgdXNpbmcgQmFzZSA9IFBPREludGVydmFsQmFzZTxULCBXVEY6OldlYWtQ
dHI8VT4+OwogfTsKIAogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BPREludGVydmFsVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9E
SW50ZXJ2YWxUcmVlLmgKaW5kZXggYmU0Yjg4ZjczNmM2MDhjNzQxYmM5ZTY2MjdmN2I5YTQ3ZGI4
NzJlNS4uMmQwMzcxMjQ2MDlhNDg2MTdjYWFjMjI0YjgzM2UwZmZmZGQ1YmNlZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWxUcmVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWxUcmVlLmgKQEAgLTM1LDY5ICszNSwyOSBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVc2VyRGF0
YT4KLWNsYXNzIFBPREludGVydmFsU2VhcmNoQWRhcHRlciB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRl
ZiBQT0RJbnRlcnZhbDxULCBVc2VyRGF0YT4gSW50ZXJ2YWxUeXBlOwotICAgIAotICAgIFBPRElu
dGVydmFsU2VhcmNoQWRhcHRlcihWZWN0b3I8SW50ZXJ2YWxUeXBlPiYgcmVzdWx0LCBjb25zdCBU
JiBsb3dWYWx1ZSwgY29uc3QgVCYgaGlnaFZhbHVlKQotICAgICAgICA6IG1fcmVzdWx0KHJlc3Vs
dCkKLSAgICAgICAgLCBtX2xvd1ZhbHVlKGxvd1ZhbHVlKQotICAgICAgICAsIG1faGlnaFZhbHVl
KGhpZ2hWYWx1ZSkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGNvbnN0IFQmIGxvd1ZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV9sb3dWYWx1ZTsgfQotICAgIGNvbnN0IFQmIGhpZ2hWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1faGlnaFZhbHVlOyB9Ci0gICAgdm9pZCBjb2xsZWN0SWZOZWVkZWQoY29u
c3QgSW50ZXJ2YWxUeXBlJiBkYXRhKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGRhdGEub3Zl
cmxhcHMobV9sb3dWYWx1ZSwgbV9oaWdoVmFsdWUpKQotICAgICAgICAgICAgbV9yZXN1bHQuYXBw
ZW5kKGRhdGEpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBWZWN0b3I8SW50ZXJ2YWxUeXBlPiYg
bV9yZXN1bHQ7Ci0gICAgVCBtX2xvd1ZhbHVlOwotICAgIFQgbV9oaWdoVmFsdWU7Ci19OwotCiBz
dHJ1Y3QgUE9ESW50ZXJ2YWxOb2RlVXBkYXRlcjsKIAogLy8gQW4gaW50ZXJ2YWwgdHJlZSwgd2hp
Y2ggaXMgYSBmb3JtIG9mIGF1Z21lbnRlZCByZWQtYmxhY2sgdHJlZS4gSXQKIC8vIHN1cHBvcnRz
IGVmZmljaWVudCAoTyhsZyBuKSkgaW5zZXJ0aW9uLCByZW1vdmFsIGFuZCBxdWVyeWluZyBvZgog
Ly8gaW50ZXJ2YWxzIGluIHRoZSB0cmVlLgotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVXNlckRh
dGE+Ci1jbGFzcyBQT0RJbnRlcnZhbFRyZWUgZmluYWwgOiBwdWJsaWMgUE9EUmVkQmxhY2tUcmVl
PFBPREludGVydmFsPFQsIFVzZXJEYXRhPiwgUE9ESW50ZXJ2YWxOb2RlVXBkYXRlciwgdHJ1ZT4g
ewordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVXNlckRhdGE+IGNsYXNzIFBPREludGVy
dmFsVHJlZSBmaW5hbCA6IHB1YmxpYyBQT0RSZWRCbGFja1RyZWU8UE9ESW50ZXJ2YWw8VCwgVXNl
ckRhdGE+LCBQT0RJbnRlcnZhbE5vZGVVcGRhdGVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgLy8gVHlwZWRlZiB0byByZWR1Y2UgdHlwaW5nIHdoZW4gZGVj
bGFyaW5nIGludGVydmFscyB0byBiZSBzdG9yZWQgaW4KLSAgICAvLyB0aGlzIHRyZWUuCi0gICAg
dHlwZWRlZiBQT0RJbnRlcnZhbDxULCBVc2VyRGF0YT4gSW50ZXJ2YWxUeXBlOwotICAgIHR5cGVk
ZWYgUE9ESW50ZXJ2YWxTZWFyY2hBZGFwdGVyPFQsIFVzZXJEYXRhPiBJbnRlcnZhbFNlYXJjaEFk
YXB0ZXJUeXBlOwotCi0gICAgLy8gUmV0dXJucyBhbGwgaW50ZXJ2YWxzIGluIHRoZSB0cmVlIHdo
aWNoIG92ZXJsYXAgdGhlIGdpdmVuIHF1ZXJ5Ci0gICAgLy8gaW50ZXJ2YWwuIFRoZSByZXR1cm5l
ZCBpbnRlcnZhbHMgYXJlIHNvcnRlZCBieSBpbmNyZWFzaW5nIGxvdwotICAgIC8vIGVuZHBvaW50
LgorICAgIHVzaW5nIEludGVydmFsVHlwZSA9IFBPREludGVydmFsPFQsIFVzZXJEYXRhPjsKKyAg
ICBjbGFzcyBPdmVybGFwc1NlYXJjaEFkYXB0ZXI7CisKKyAgICAvLyBSZXR1cm5zIGFsbCBpbnRl
cnZhbHMgaW4gdGhlIHRyZWUgd2hpY2ggb3ZlcmxhcCB0aGUgZ2l2ZW4gcXVlcnkgaW50ZXJ2YWws
IHNvcnRlZCBieSB0aGUgPCBvcGVyYXRvci4KICAgICBWZWN0b3I8SW50ZXJ2YWxUeXBlPiBhbGxP
dmVybGFwcyhjb25zdCBJbnRlcnZhbFR5cGUmIGludGVydmFsKSBjb25zdAogICAgIHsKICAgICAg
ICAgVmVjdG9yPEludGVydmFsVHlwZT4gcmVzdWx0OwotICAgICAgICBJbnRlcnZhbFNlYXJjaEFk
YXB0ZXJUeXBlIGFkYXB0ZXIocmVzdWx0LCBpbnRlcnZhbC5sb3coKSwgaW50ZXJ2YWwuaGlnaCgp
KTsKLSAgICAgICAgYWxsT3ZlcmxhcHNXaXRoQWRhcHRlcjxJbnRlcnZhbFNlYXJjaEFkYXB0ZXJU
eXBlPihhZGFwdGVyKTsKKyAgICAgICAgT3ZlcmxhcHNTZWFyY2hBZGFwdGVyIGFkYXB0ZXIocmVz
dWx0LCBpbnRlcnZhbCk7CisgICAgICAgIGFsbE92ZXJsYXBzV2l0aEFkYXB0ZXIoYWRhcHRlcik7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPGNsYXNzIEFk
YXB0ZXJUeXBlPgotICAgIHZvaWQgYWxsT3ZlcmxhcHNXaXRoQWRhcHRlcihBZGFwdGVyVHlwZSYg
YWRhcHRlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIC8vIEV4cGxpY2l0IGRlcmVmZXJlbmNlIG9m
ICJ0aGlzIiByZXF1aXJlZCBiZWNhdXNlIG9mCi0gICAgICAgIC8vIGluaGVyaXRhbmNlIHJ1bGVz
IGluIHRlbXBsYXRlIGNsYXNzZXMuCi0gICAgICAgIHNlYXJjaEZvck92ZXJsYXBzRnJvbTxBZGFw
dGVyVHlwZT4odGhpcy0+cm9vdCgpLCBhZGFwdGVyKTsKLSAgICB9Ci0KLSAgICAvLyBIZWxwZXIg
dG8gY3JlYXRlIGludGVydmFsIG9iamVjdHMuCi0gICAgc3RhdGljIEludGVydmFsVHlwZSBjcmVh
dGVJbnRlcnZhbChjb25zdCBUJiBsb3csIGNvbnN0IFQmIGhpZ2gsIFVzZXJEYXRhJiYgZGF0YSA9
IHsgfSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdGVyVHlwZT4gdm9pZCBhbGxPdmVybGFw
c1dpdGhBZGFwdGVyKEFkYXB0ZXJUeXBlJiBhZGFwdGVyKSBjb25zdAogICAgIHsKLSAgICAgICAg
cmV0dXJuIEludGVydmFsVHlwZShsb3csIGhpZ2gsIFdURk1vdmUoZGF0YSkpOworICAgICAgICBz
ZWFyY2hGb3JPdmVybGFwc0Zyb20odGhpcy0+cm9vdCgpLCBhZGFwdGVyKTsKICAgICB9CiAKICAg
ICBPcHRpb25hbDxJbnRlcnZhbFR5cGU+IG5leHRJbnRlcnZhbEFmdGVyKGNvbnN0IFQmIHBvaW50
KQpAQCAtMTE2LDIwICs3NiwxOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIGlmICghdGhpcy0+cm9vdCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIHJldHVybiBjaGVja0ludmFyaWFudHNGcm9tTm9kZSh0aGlzLT5yb290KCksIDApOwor
ICAgICAgICByZXR1cm4gY2hlY2tJbnZhcmlhbnRzRnJvbU5vZGUodGhpcy0+cm9vdCgpLCBudWxs
cHRyKTsKICAgICB9CiAKICNlbmRpZgogCiBwcml2YXRlOgotICAgIHVzaW5nIEJhc2UgPSBQT0RS
ZWRCbGFja1RyZWU8UE9ESW50ZXJ2YWw8VCwgVXNlckRhdGE+LCBQT0RJbnRlcnZhbE5vZGVVcGRh
dGVyLCB0cnVlPjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEJhc2U6Ok5vZGUgSW50ZXJ2YWxOb2Rl
OworICAgIHVzaW5nIEJhc2UgPSBQT0RSZWRCbGFja1RyZWU8UE9ESW50ZXJ2YWw8VCwgVXNlckRh
dGE+LCBQT0RJbnRlcnZhbE5vZGVVcGRhdGVyPjsKKyAgICB1c2luZyBJbnRlcnZhbE5vZGUgPSB0
eXBlbmFtZSBCYXNlOjpOb2RlOwogCiAgICAgLy8gU3RhcnRpbmcgZnJvbSB0aGUgZ2l2ZW4gbm9k
ZSwgYWRkcyBhbGwgb3ZlcmxhcHMgd2l0aCB0aGUgZ2l2ZW4KICAgICAvLyBpbnRlcnZhbCB0byB0
aGUgcmVzdWx0IHZlY3Rvci4gVGhlIGludGVydmFscyBhcmUgc29ydGVkIGJ5CiAgICAgLy8gaW5j
cmVhc2luZyBsb3cgZW5kcG9pbnQuCi0gICAgdGVtcGxhdGUgPGNsYXNzIEFkYXB0ZXJUeXBlPgot
ICAgIHZvaWQgc2VhcmNoRm9yT3ZlcmxhcHNGcm9tKEludGVydmFsTm9kZSogbm9kZSwgQWRhcHRl
clR5cGUmIGFkYXB0ZXIpIGNvbnN0CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRlclR5cGU+
IHZvaWQgc2VhcmNoRm9yT3ZlcmxhcHNGcm9tKEludGVydmFsTm9kZSogbm9kZSwgQWRhcHRlclR5
cGUmIGFkYXB0ZXIpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIW5vZGUpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0yMTksNiArMTc4LDI5IEBAIHByaXZhdGU6CiAKIH07CiAKK3RlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFVzZXJEYXRhPiBjbGFzcyBQT0RJbnRlcnZhbFRyZWU8VCwg
VXNlckRhdGE+OjpPdmVybGFwc1NlYXJjaEFkYXB0ZXIgeworcHVibGljOgorICAgIHVzaW5nIElu
dGVydmFsVHlwZSA9IFBPREludGVydmFsPFQsIFVzZXJEYXRhPjsKKworICAgIE92ZXJsYXBzU2Vh
cmNoQWRhcHRlcihWZWN0b3I8SW50ZXJ2YWxUeXBlPiYgcmVzdWx0LCBjb25zdCBJbnRlcnZhbFR5
cGUmIGludGVydmFsKQorICAgICAgICA6IG1fcmVzdWx0KHJlc3VsdCkKKyAgICAgICAgLCBtX2lu
dGVydmFsKGludGVydmFsKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBUJiBsb3dWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1faW50ZXJ2YWwubG93KCk7IH0KKyAgICBjb25zdCBUJiBoaWdoVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX2ludGVydmFsLmhpZ2goKTsgfQorICAgIHZvaWQgY29sbGVj
dElmTmVlZGVkKGNvbnN0IEludGVydmFsVHlwZSYgZGF0YSkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmIChkYXRhLm92ZXJsYXBzKG1faW50ZXJ2YWwpKQorICAgICAgICAgICAgbV9yZXN1bHQuYXBw
ZW5kKGRhdGEpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBWZWN0b3I8SW50ZXJ2YWxUeXBlPiYg
bV9yZXN1bHQ7CisgICAgY29uc3QgSW50ZXJ2YWxUeXBlJiBtX2ludGVydmFsOworfTsKKwogc3Ry
dWN0IFBPREludGVydmFsTm9kZVVwZGF0ZXIgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE5vZGU+
IHN0YXRpYyBib29sIHVwZGF0ZShOb2RlJiBub2RlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BPRFJlZEJsYWNrVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUE9EUmVkQmxhY2tUcmVlLmgKaW5kZXggZDQ4ZjQ5OGVhNmFkZDIzM2MxMDFiZGM1ZDM4
NDVlOTE3NTdkYmI1Mi4uNGIzMThmZGFjMjIwNTE3Y2Y5MThjNzRjMjlkMDVmMTAzMzE1OTAyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9EUmVkQmxhY2tUcmVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9EUmVkQmxhY2tUcmVlLmgKQEAgLTM5LDE3ICsz
OSw2IEBACiAvLyBJbiBkZWJ1ZyBtb2RlLCBwcmludGluZyBvZiB0aGUgZGF0YSBjb250YWluZWQg
aW4gdGhlIHRyZWUgaXMKIC8vIGVuYWJsZWQuIFRoaXMgbWFrZXMgdXNlIG9mIFdURjo6VGV4dFN0
cmVhbS4KIC8vCi0vLyBOb3RlIHRoYXQgd2hlbiBjb21wbGV4IHR5cGVzIGFyZSBzdG9yZWQgaW4g
dGhpcyByZWQvYmxhY2sgdHJlZSwgaXQKLS8vIGlzIHBvc3NpYmxlIHRoYXQgc2luZ2xlIGludm9j
YXRpb25zIG9mIHRoZSAiPCIgYW5kICI9PSIgb3BlcmF0b3JzCi0vLyB3aWxsIGJlIGluc3VmZmlj
aWVudCB0byBkZXNjcmliZSB0aGUgb3JkZXJpbmcgb2YgZWxlbWVudHMgaW4gdGhlCi0vLyB0cmVl
IGR1cmluZyBxdWVyaWVzLiBBcyBhIGNvbmNyZXRlIGV4YW1wbGUsIGNvbnNpZGVyIHRoZSBjYXNl
IHdoZXJlCi0vLyBpbnRlcnZhbHMgYXJlIHN0b3JlZCBpbiB0aGUgdHJlZSBzb3J0ZWQgYnkgbG93
IGVuZHBvaW50LiBUaGUgIjwiCi0vLyBvcGVyYXRvciBvbiB0aGUgSW50ZXJ2YWwgY2xhc3Mgb25s
eSBjb21wYXJlcyB0aGUgbG93IGVuZHBvaW50LCBidXQKLS8vIHRoZSAiPT0iIG9wZXJhdG9yIHRh
a2VzIGludG8gYWNjb3VudCB0aGUgaGlnaCBlbmRwb2ludCBhcyB3ZWxsLgotLy8gVGhpcyBtYWtl
cyB0aGUgbmVjZXNzYXJ5IGxvZ2ljIGZvciBxdWVyeWluZyBhbmQgZGVsZXRpb24gc29tZXdoYXQK
LS8vIG1vcmUgY29tcGxleC4gSW4gb3JkZXIgdG8gcHJvcGVybHkgaGFuZGxlIHN1Y2ggc2l0dWF0
aW9ucywgdGhlCi0vLyB0ZW1wbGF0ZSBhcmd1bWVudCAibmVlZHNGdWxsT3JkZXJpbmdDb21wYXJp
c29ucyIgbXVzdCBiZSB0cnVlLgotLy8KIC8vIFRoaXMgcmVkLWJsYWNrIHRyZWUgaXMgZGVzaWdu
ZWQgdG8gYmUgX2F1Z21lbnRlZF87IHN1YmNsYXNzZXMgY2FuCiAvLyBhZGQgYWRkaXRpb25hbCBh
bmQgc3VtbWFyeSBpbmZvcm1hdGlvbiB0byBlYWNoIG5vZGUgdG8gZWZmaWNpZW50bHkKIC8vIHN0
b3JlIGFuZCBpbmRleCBtb3JlIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzLiBBIGNvbmNyZXRlIGV4
YW1wbGUgaXMKQEAgLTcwLDEzICs1OSwxMSBAQAogI2VuZGlmCiAKIC8vIEZJWE1FOiBUaGUgcHJl
Zml4ICJQT0QiIGhlcmUgaXNuJ3QgY29ycmVjdDsgdGhpcyB0cmVlIHdvcmtzIHdpdGggbm9uLVBP
RCB0eXBlcyB0b28uCi0vLyBGSVhNRTogUmVtb3ZlIHRoZSB1bnVzdWFsIG5lZWRzRnVsbE9yZGVy
aW5nQ29tcGFyaXNvbnMgZmVhdHVyZSBieSBjaGFuZ2luZyB0aGUgaW50ZXJ2YWwgdHJlZSB0byB1
c2UgZnVsbCBvcmRlcmluZywgc29ydGluZyBiYXNlZCBvbiBsb3csIGhpZ2gsIGFuZCBkYXRhLgot
Ly8gRklYTUU6IFdvdWxkIGJlIHdvcnRod2hpbGUgdG8gaW1wbGVtZW50IHRoaXMgb24gdG9wIG9m
IFdURjo6UmVkQmxhY2tUcmVlIHJhdGhlciB0aGFuIGtlZXBpbmcgdHdvIHNlcGFyYXRlIGNsYXNz
IHRlbXBsYXRlcyBhcm91bmQuCisvLyBGSVhNRTogRXh0ZW5kIFdURjo6UmVkQmxhY2tUcmVlIGFu
ZCBpbXBsZW1lbnQgdGhpcyBvbiB0b3Agb2YgaXQgcmF0aGVyIHRoYW4ga2VlcGluZyB0d28gcXVp
dGUgc2ltaWxhciBjbGFzcyB0ZW1wbGF0ZXMgYXJvdW5kLgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIE5vZGVVcGRhdGVyVHlwZSwgYm9vbCBu
ZWVkc0Z1bGxPcmRlcmluZ0NvbXBhcmlzb25zPgotY2xhc3MgUE9EUmVkQmxhY2tUcmVlIHsKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIE5vZGVVcGRhdGVyVHlwZT4gY2xhc3MgUE9EUmVk
QmxhY2tUcmVlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQT0RSZWRCbGFja1RyZWUpOwog
cHVibGljOgogICAgIFBPRFJlZEJsYWNrVHJlZSgpID0gZGVmYXVsdDsKQEAgLTg2LDcgKzczLDYg
QEAgcHVibGljOgogICAgICAgICBjbGVhcigpOwogICAgIH0KIAotICAgIC8vIENsZWFyaW5nIHdp
bGwgZGVsZXRlIHRoZSBjb250ZW50cyBvZiB0aGUgdHJlZS4KICAgICB2b2lkIGNsZWFyKCkKICAg
ICB7CiAgICAgICAgIGlmICghbV9yb290KQpAQCAtMTAxLDcgKzg3LDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBhZGQoY29uc3QgVCYgZGF0YSkKICAgICB7Ci0gICAgICAgIGluc2VydE5vZGUobmV3
IE5vZGUoVCB7IGRhdGEgfSkpOworICAgICAgICBhZGQoVCB7IGRhdGEgfSk7CiAgICAgfQogCiAg
ICAgdm9pZCBhZGQoVCYmIGRhdGEpCkBAIC0xMzUsMTQgKzEyMSwxMyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBjaGVja0ludmFyaWFudHMoKSBjb25zdAogICAgIHsKICAgICAgICAgaW50IGJsYWNrQ291
bnQ7Ci0gICAgICAgIHJldHVybiBjaGVja0ludmFyaWFudHNGcm9tTm9kZShtX3Jvb3QsICZibGFj
a0NvdW50KTsKKyAgICAgICAgcmV0dXJuIGNoZWNrSW52YXJpYW50c0Zyb21Ob2RlKG1fcm9vdCwg
YmxhY2tDb3VudCk7CiAgICAgfQogCi0gICAgLy8gRHVtcHMgdGhlIHRyZWUncyBjb250ZW50cyB0
byB0aGUgbG9nZ2luZyBpbmZvIHN0cmVhbSBmb3IKLSAgICAvLyBkZWJ1Z2dpbmcgcHVycG9zZXMu
CisgICAgLy8gRHVtcHMgdGhlIHRyZWUncyBjb250ZW50cyB0byB0aGUgbG9nZ2luZyBpbmZvIHN0
cmVhbSBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLgogICAgIHZvaWQgZHVtcCgpIGNvbnN0CiAgICAg
ewotICAgICAgICBkdW1wRnJvbU5vZGUobV9yb290LCAwKTsKKyAgICAgICAgZHVtcFN1YnRyZWUo
bV9yb290LCAwKTsKICAgICB9CiAKICAgICAvLyBUdXJucyBvbiBvciBvZmYgdmVyYm9zZSBkZWJ1
Z2dpbmcgb2YgdGhlIHRyZWUsIGNhdXNpbmcgbWFueQpAQCAtMTU4LDE0ICsxNDMsMTAgQEAgcHVi
bGljOgogcHJvdGVjdGVkOgogICAgIGVudW0gQ29sb3IgeyBSZWQsIEJsYWNrIH07CiAKLSAgICAv
LyBUaGUgYmFzZSBOb2RlIGNsYXNzIHdoaWNoIGlzIHN0b3JlZCBpbiB0aGUgdHJlZS4gTm9kZXMg
YXJlIG9ubHkKLSAgICAvLyBhbiBpbnRlcm5hbCBjb25jZXB0OyB1c2VycyBvZiB0aGUgdHJlZSBk
ZWFsIG9ubHkgd2l0aCB0aGUgZGF0YQotICAgIC8vIHRoZXkgc3RvcmUgaW4gaXQuCiAgICAgY2xh
c3MgTm9kZSB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShOb2RlKTsKICAgICBwdWJsaWM6Ci0gICAgICAgIC8vIENvbnN0cnVj
dG9yLiBOZXdseS1jcmVhdGVkIG5vZGVzIGFyZSBjb2xvcmVkIHJlZC4KICAgICAgICAgZXhwbGlj
aXQgTm9kZShUJiYgZGF0YSkKICAgICAgICAgICAgIDogbV9kYXRhKFdURk1vdmUoZGF0YSkpCiAg
ICAgICAgIHsKQEAgLTE3Niw3ICsxNTcsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICAgICAgVCYgZGF0
YSgpIHsgcmV0dXJuIG1fZGF0YTsgfQogCi0gICAgICAgIHZvaWQgbW92ZURhdGFGcm9tKE5vZGUq
IHNyYykgeyBtX2RhdGEgPSBXVEZNb3ZlKHNyYy0+bV9kYXRhKTsgfQorICAgICAgICB2b2lkIG1v
dmVEYXRhRnJvbShOb2RlJiBzcmMpIHsgbV9kYXRhID0gV1RGTW92ZShzcmMubV9kYXRhKTsgfQog
CiAgICAgICAgIE5vZGUqIGxlZnQoKSBjb25zdCB7IHJldHVybiBtX2xlZnQ7IH0KICAgICAgICAg
dm9pZCBzZXRMZWZ0KE5vZGUqIG5vZGUpIHsgbV9sZWZ0ID0gbm9kZTsgfQpAQCAtMTk5LDM4ICsx
ODAsMjMgQEAgcHJvdGVjdGVkOgogICAgIE5vZGUqIHJvb3QoKSBjb25zdCB7IHJldHVybiBtX3Jv
b3Q7IH0KIAogcHJpdmF0ZToKLSAgICAvLyBUaGlzIGlzIHRoZSBob29rIHRoYXQgc3ViY2xhc3Nl
cyBzaG91bGQgdXNlIHdoZW4KKyAgICAvLyBUaGUgdXBkYXRlIGZ1bmN0aW9uIGlzIHRoZSBob29r
IHRoYXQgc3ViY2xhc3NlcyBzaG91bGQgdXNlIHdoZW4KICAgICAvLyBhdWdtZW50aW5nIHRoZSBy
ZWQtYmxhY2sgdHJlZSB3aXRoIGFkZGl0aW9uYWwgcGVyLW5vZGUgc3VtbWFyeQogICAgIC8vIGlu
Zm9ybWF0aW9uLiBGb3IgZXhhbXBsZSwgaW4gdGhlIGNhc2Ugb2YgYW4gaW50ZXJ2YWwgdHJlZSwg
dGhpcwogICAgIC8vIGlzIHVzZWQgdG8gY29tcHV0ZSB0aGUgbWF4aW11bSBlbmRwb2ludCBvZiB0
aGUgc3VidHJlZSBiZWxvdyB0aGUKICAgICAvLyBnaXZlbiBub2RlIGJhc2VkIG9uIHRoZSB2YWx1
ZXMgaW4gdGhlIGxlZnQgYW5kIHJpZ2h0IGNoaWxkcmVuLiBJdAogICAgIC8vIGlzIGd1YXJhbnRl
ZWQgdGhhdCB0aGlzIHdpbGwgYmUgY2FsbGVkIGluIHRoZSBjb3JyZWN0IG9yZGVyIHRvCiAgICAg
Ly8gcHJvcGVybHkgdXBkYXRlIHN1Y2ggc3VtbWFyeSBpbmZvcm1hdGlvbiBiYXNlZCBvbmx5IG9u
IHRoZSB2YWx1ZXMKLSAgICAvLyBpbiB0aGUgbGVmdCBhbmQgcmlnaHQgY2hpbGRyZW4uIFRoaXMg
bWV0aG9kIHNob3VsZCByZXR1cm4gdHJ1ZSBpZgorICAgIC8vIGluIHRoZSBsZWZ0IGFuZCByaWdo
dCBjaGlsZHJlbi4gVGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gdHJ1ZSBpZgogICAgIC8vIHRo
ZSBub2RlJ3Mgc3VtbWFyeSBpbmZvcm1hdGlvbiBjaGFuZ2VkLgotICAgIGJvb2wgdXBkYXRlTm9k
ZShOb2RlKiBub2RlKQorICAgIHN0YXRpYyBib29sIHVwZGF0ZU5vZGUoTm9kZSYgbm9kZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBOb2RlVXBkYXRlclR5cGU6OnVwZGF0ZSgqbm9kZSk7CisgICAg
ICAgIHJldHVybiBOb2RlVXBkYXRlclR5cGU6OnVwZGF0ZShub2RlKTsKICAgICB9CiAKLSAgICAv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLSAgICAvLyBHZW5lcmljIGJpbmFyeSBzZWFyY2ggdHJlZSBvcGVyYXRp
b25zCi0gICAgLy8KLQotICAgIC8vIFNlYXJjaGVzIHRoZSB0cmVlIGZvciB0aGUgZ2l2ZW4gZGF0
dW0uCiAgICAgTm9kZSogdHJlZVNlYXJjaChjb25zdCBUJiBkYXRhKSBjb25zdAogICAgIHsKLSAg
ICAgICAgaWYgKG5lZWRzRnVsbE9yZGVyaW5nQ29tcGFyaXNvbnMpCi0gICAgICAgICAgICByZXR1
cm4gdHJlZVNlYXJjaEZ1bGxDb21wYXJpc29ucyhtX3Jvb3QsIGRhdGEpOwotCi0gICAgICAgIHJl
dHVybiB0cmVlU2VhcmNoTm9ybWFsKG1fcm9vdCwgZGF0YSk7Ci0gICAgfQotCi0gICAgLy8gU2Vh
cmNoZXMgdGhlIHRyZWUgdXNpbmcgdGhlIG5vcm1hbCBjb21wYXJpc29uIG9wZXJhdGlvbnMsCi0g
ICAgLy8gc3VpdGFibGUgZm9yIHNpbXBsZSBkYXRhIHR5cGVzIHN1Y2ggYXMgbnVtYmVycy4KLSAg
ICBOb2RlKiB0cmVlU2VhcmNoTm9ybWFsKE5vZGUqIGN1cnJlbnQsIGNvbnN0IFQmIGRhdGEpIGNv
bnN0Ci0gICAgewotICAgICAgICB3aGlsZSAoY3VycmVudCkgeworICAgICAgICBmb3IgKGF1dG8q
IGN1cnJlbnQgPSBtX3Jvb3Q7IGN1cnJlbnQ7ICkgewogICAgICAgICAgICAgaWYgKGN1cnJlbnQt
PmRhdGEoKSA9PSBkYXRhKQogICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50OwogICAgICAg
ICAgICAgaWYgKGRhdGEgPCBjdXJyZW50LT5kYXRhKCkpCkBAIC0yMzgsMzIgKzIwNCwxMiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJy
ZW50LT5yaWdodCgpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAg
IC8vIFNlYXJjaGVzIHRoZSB0cmVlIHVzaW5nIG11bHRpcGxlIGNvbXBhcmlzb24gb3BlcmF0aW9u
cywgcmVxdWlyZWQKLSAgICAvLyBmb3IgZGF0YSB0eXBlcyB3aXRoIG1vcmUgY29tcGxleCBiZWhh
dmlvciBzdWNoIGFzIGludGVydmFscy4KLSAgICBOb2RlKiB0cmVlU2VhcmNoRnVsbENvbXBhcmlz
b25zKE5vZGUqIGN1cnJlbnQsIGNvbnN0IFQmIGRhdGEpIGNvbnN0Ci0gICAgewotICAgICAgICBp
ZiAoIWN1cnJlbnQpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKGRhdGEgPCBj
dXJyZW50LT5kYXRhKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJlZVNlYXJjaEZ1bGxDb21wYXJp
c29ucyhjdXJyZW50LT5sZWZ0KCksIGRhdGEpOwotICAgICAgICBpZiAoY3VycmVudC0+ZGF0YSgp
IDwgZGF0YSkKLSAgICAgICAgICAgIHJldHVybiB0cmVlU2VhcmNoRnVsbENvbXBhcmlzb25zKGN1
cnJlbnQtPnJpZ2h0KCksIGRhdGEpOwotICAgICAgICBpZiAoZGF0YSA9PSBjdXJyZW50LT5kYXRh
KCkpCi0gICAgICAgICAgICByZXR1cm4gY3VycmVudDsKLQotICAgICAgICAvLyBXZSBtYXkgbmVl
ZCB0byB0cmF2ZXJzZSBib3RoIHRoZSBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlcy4KLSAgICAgICAg
Tm9kZSogcmVzdWx0ID0gdHJlZVNlYXJjaEZ1bGxDb21wYXJpc29ucyhjdXJyZW50LT5sZWZ0KCks
IGRhdGEpOwotICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAgIHJlc3VsdCA9IHRyZWVT
ZWFyY2hGdWxsQ29tcGFyaXNvbnMoY3VycmVudC0+cmlnaHQoKSwgZGF0YSk7Ci0gICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIHZvaWQg
dHJlZUluc2VydChOb2RlKiB6KQogICAgIHsKLSAgICAgICAgTm9kZSogeSA9IDA7CisgICAgICAg
IE5vZGUqIHkgPSBudWxscHRyOwogICAgICAgICBOb2RlKiB4ID0gbV9yb290OwogICAgICAgICB3
aGlsZSAoeCkgewogICAgICAgICAgICAgeSA9IHg7CkBAIC0yOTcsOCArMjQzLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgcmV0dXJuIHk7CiAgICAgfQogCi0gICAgLy8gRmluZHMgdGhlIG1pbmltdW0g
ZWxlbWVudCBpbiB0aGUgc3ViLXRyZWUgcm9vdGVkIGF0IHRoZSBnaXZlbgotICAgIC8vIG5vZGUu
CisgICAgLy8gRmluZHMgdGhlIG1pbmltdW0gZWxlbWVudCBpbiB0aGUgc3ViLXRyZWUgcm9vdGVk
IGF0IHRoZSBnaXZlbiBub2RlLgogICAgIHN0YXRpYyBOb2RlKiB0cmVlTWluaW11bShOb2RlKiB4
KQogICAgIHsKICAgICAgICAgd2hpbGUgKHgtPmxlZnQoKSkKQEAgLTMxNCwxNiArMjU5LDYgQEAg
cHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHk7CiAgICAgfQogCi0gICAgLy8gSGVscGVyIGZvciBt
YWludGFpbmluZyB0aGUgYXVnbWVudGVkIHJlZC1ibGFjayB0cmVlLgotICAgIHZvaWQgcHJvcGFn
YXRlVXBkYXRlcyhOb2RlKiBzdGFydCkKLSAgICB7Ci0gICAgICAgIGJvb2wgc2hvdWxkQ29udGlu
dWUgPSB0cnVlOwotICAgICAgICB3aGlsZSAoc3RhcnQgJiYgc2hvdWxkQ29udGludWUpIHsKLSAg
ICAgICAgICAgIHNob3VsZENvbnRpbnVlID0gdXBkYXRlTm9kZShzdGFydCk7Ci0gICAgICAgICAg
ICBzdGFydCA9IHN0YXJ0LT5wYXJlbnQoKTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIC8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogICAgIC8vIFJlZC1CbGFjayB0cmVlIG9wZXJhdGlvbnMKICAgICAvLwpAQCAt
MzU2LDExICsyOTEsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgeC0+c2V0UGFyZW50KHkpOwogCiAg
ICAgICAgIC8vIFVwZGF0ZSBub2RlcyBsb3dlc3QgdG8gaGlnaGVzdC4KLSAgICAgICAgdXBkYXRl
Tm9kZSh4KTsKLSAgICAgICAgdXBkYXRlTm9kZSh5KTsKKyAgICAgICAgdXBkYXRlTm9kZSgqeCk7
CisgICAgICAgIHVwZGF0ZU5vZGUoKnkpOwogICAgICAgICByZXR1cm4geTsKICAgICB9CiAKKyAg
ICBzdGF0aWMgdm9pZCBwcm9wYWdhdGVVcGRhdGVzKE5vZGUqIHN0YXJ0KQorICAgIHsKKyAgICAg
ICAgd2hpbGUgKHN0YXJ0ICYmIHVwZGF0ZU5vZGUoKnN0YXJ0KSkKKyAgICAgICAgICAgIHN0YXJ0
ID0gc3RhcnQtPnBhcmVudCgpOworICAgIH0KKwogICAgIC8vIFJpZ2h0LXJvdGF0ZXMgdGhlIHN1
YnRyZWUgcm9vdGVkIGF0IHkuCiAgICAgLy8gUmV0dXJucyB0aGUgbmV3IHJvb3Qgb2YgdGhlIHN1
YnRyZWUgKHkncyBsZWZ0IGNoaWxkKS4KICAgICBOb2RlKiByaWdodFJvdGF0ZShOb2RlKiB5KQpA
QCAtMzg5LDggKzMzMCw4IEBAIHByaXZhdGU6CiAgICAgICAgIHktPnNldFBhcmVudCh4KTsKIAog
ICAgICAgICAvLyBVcGRhdGUgbm9kZXMgbG93ZXN0IHRvIGhpZ2hlc3QuCi0gICAgICAgIHVwZGF0
ZU5vZGUoeSk7Ci0gICAgICAgIHVwZGF0ZU5vZGUoeCk7CisgICAgICAgIHVwZGF0ZU5vZGUoKnkp
OworICAgICAgICB1cGRhdGVOb2RlKCp4KTsKICAgICAgICAgcmV0dXJuIHg7CiAgICAgfQogCkBA
IC0zOTksNyArMzQwLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHRyZWVJbnNlcnQoeCk7
CiAgICAgICAgIHgtPnNldENvbG9yKFJlZCk7Ci0gICAgICAgIHVwZGF0ZU5vZGUoeCk7CisgICAg
ICAgIHVwZGF0ZU5vZGUoKngpOwogCiAgICAgICAgIGxvZ0lmVmVyYm9zZSgiICBQT0RSZWRCbGFj
a1RyZWU6Okluc2VydE5vZGUiKTsKIApAQCAtNDE1LDkgKzM1Niw5IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgIHgtPnBhcmVudCgpLT5zZXRDb2xvcihCbGFjayk7CiAgICAgICAgICAg
ICAgICAgICAgIHktPnNldENvbG9yKEJsYWNrKTsKICAgICAgICAgICAgICAgICAgICAgeC0+cGFy
ZW50KCktPnBhcmVudCgpLT5zZXRDb2xvcihSZWQpOwotICAgICAgICAgICAgICAgICAgICB1cGRh
dGVOb2RlKHgtPnBhcmVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgdXBkYXRlTm9kZSgqeC0+
cGFyZW50KCkpOwogICAgICAgICAgICAgICAgICAgICB4ID0geC0+cGFyZW50KCktPnBhcmVudCgp
OwotICAgICAgICAgICAgICAgICAgICB1cGRhdGVOb2RlKHgpOworICAgICAgICAgICAgICAgICAg
ICB1cGRhdGVOb2RlKCp4KTsKICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhcnQgPSB4LT5w
YXJlbnQoKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBp
ZiAoeCA9PSB4LT5wYXJlbnQoKS0+cmlnaHQoKSkgewpAQCAtNDQyLDkgKzM4Myw5IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgIHgtPnBhcmVudCgpLT5zZXRDb2xvcihCbGFjayk7CiAg
ICAgICAgICAgICAgICAgICAgIHktPnNldENvbG9yKEJsYWNrKTsKICAgICAgICAgICAgICAgICAg
ICAgeC0+cGFyZW50KCktPnBhcmVudCgpLT5zZXRDb2xvcihSZWQpOwotICAgICAgICAgICAgICAg
ICAgICB1cGRhdGVOb2RlKHgtPnBhcmVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgdXBkYXRl
Tm9kZSgqeC0+cGFyZW50KCkpOwogICAgICAgICAgICAgICAgICAgICB4ID0geC0+cGFyZW50KCkt
PnBhcmVudCgpOwotICAgICAgICAgICAgICAgICAgICB1cGRhdGVOb2RlKHgpOworICAgICAgICAg
ICAgICAgICAgICB1cGRhdGVOb2RlKCp4KTsKICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3Rh
cnQgPSB4LT5wYXJlbnQoKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICBpZiAoeCA9PSB4LT5wYXJlbnQoKS0+bGVmdCgpKSB7CkBAIC00NjksOCArNDEwLDcg
QEAgcHJpdmF0ZToKICAgICB9CiAKICAgICAvLyBSZXN0b3JlcyB0aGUgcmVkLWJsYWNrIHByb3Bl
cnR5IHRvIHRoZSB0cmVlIGFmdGVyIHNwbGljaW5nIG91dAotICAgIC8vIGEgbm9kZS4gTm90ZSB0
aGF0IHggbWF5IGJlIG51bGwsIHdoaWNoIGlzIHdoeSB4UGFyZW50IG11c3QgYmUKLSAgICAvLyBz
dXBwbGllZC4KKyAgICAvLyBhIG5vZGUuIE5vdGUgdGhhdCB4IG1heSBiZSBudWxsLCB3aGljaCBp
cyB3aHkgeFBhcmVudCBtdXN0IGJlIHN1cHBsaWVkLgogICAgIHZvaWQgZGVsZXRlRml4dXAoTm9k
ZSogeCwgTm9kZSogeFBhcmVudCkKICAgICB7CiAgICAgICAgIHdoaWxlICh4ICE9IG1fcm9vdCAm
JiAoIXggfHwgeC0+Y29sb3IoKSA9PSBCbGFjaykpIHsKQEAgLTU5NCw5ICs1MzQsOSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIHktPnBhcmVudCgpLT5zZXRSaWdodCh4KTsKICAgICAgICAg
fQogICAgICAgICBpZiAoeSAhPSB6KSB7Ci0gICAgICAgICAgICB6LT5tb3ZlRGF0YUZyb20oeSk7
CisgICAgICAgICAgICB6LT5tb3ZlRGF0YUZyb20oKnkpOwogICAgICAgICAgICAgLy8gVGhpcyBu
b2RlIGhhcyBjaGFuZ2VkIGxvY2F0aW9uIGluIHRoZSB0cmVlIGFuZCBtdXN0IGJlIHVwZGF0ZWQu
Ci0gICAgICAgICAgICB1cGRhdGVOb2RlKHopOworICAgICAgICAgICAgdXBkYXRlTm9kZSgqeik7
CiAgICAgICAgICAgICAvLyBUaGUgcGFyZW50IGFuZCBpdHMgcGFyZW50cyBtYXkgbm93IGJlIG91
dCBvZiBkYXRlLgogICAgICAgICAgICAgcHJvcGFnYXRlVXBkYXRlcyh6LT5wYXJlbnQoKSk7CiAg
ICAgICAgIH0KQEAgLTYxOCwxMSArNTU4LDExIEBAIHByaXZhdGU6CiAKICAgICAvLyBSZXR1cm5z
IGluIHRoZSAiYmxhY2tDb3VudCIgcGFyYW1ldGVyIHRoZSBudW1iZXIgb2YgYmxhY2sKICAgICAv
LyBjaGlsZHJlbiBhbG9uZyBhbGwgcGF0aHMgdG8gYWxsIGxlYXZlcyBvZiB0aGUgZ2l2ZW4gbm9k
ZS4KLSAgICBib29sIGNoZWNrSW52YXJpYW50c0Zyb21Ob2RlKE5vZGUqIG5vZGUsIGludCogYmxh
Y2tDb3VudCkgY29uc3QKKyAgICBib29sIGNoZWNrSW52YXJpYW50c0Zyb21Ob2RlKE5vZGUqIG5v
ZGUsIGludCYgYmxhY2tDb3VudCkgY29uc3QKICAgICB7CiAgICAgICAgIC8vIEJhc2UgY2FzZSBp
cyBhIGxlYWYgbm9kZS4KICAgICAgICAgaWYgKCFub2RlKSB7Ci0gICAgICAgICAgICAqYmxhY2tD
b3VudCA9IDE7CisgICAgICAgICAgICBibGFja0NvdW50ID0gMTsKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CiAKQEAgLTY0MCwxNCArNTgwLDEzIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gRXZlcnkg
c2ltcGxlIHBhdGggdG8gYSBsZWFmIG5vZGUgY29udGFpbnMgdGhlIHNhbWUgbnVtYmVyIG9mCi0g
ICAgICAgIC8vIGJsYWNrIG5vZGVzLgorICAgICAgICAvLyBFdmVyeSBzaW1wbGUgcGF0aCB0byBh
IGxlYWYgbm9kZSBjb250YWlucyB0aGUgc2FtZSBudW1iZXIgb2YgYmxhY2sgbm9kZXMuCiAgICAg
ICAgIGludCBsZWZ0Q291bnQgPSAwLCByaWdodENvdW50ID0gMDsKLSAgICAgICAgYm9vbCBsZWZ0
VmFsaWQgPSBjaGVja0ludmFyaWFudHNGcm9tTm9kZShub2RlLT5sZWZ0KCksICZsZWZ0Q291bnQp
OwotICAgICAgICBib29sIHJpZ2h0VmFsaWQgPSBjaGVja0ludmFyaWFudHNGcm9tTm9kZShub2Rl
LT5yaWdodCgpLCAmcmlnaHRDb3VudCk7CisgICAgICAgIGJvb2wgbGVmdFZhbGlkID0gY2hlY2tJ
bnZhcmlhbnRzRnJvbU5vZGUobm9kZS0+bGVmdCgpLCBsZWZ0Q291bnQpOworICAgICAgICBib29s
IHJpZ2h0VmFsaWQgPSBjaGVja0ludmFyaWFudHNGcm9tTm9kZShub2RlLT5yaWdodCgpLCByaWdo
dENvdW50KTsKICAgICAgICAgaWYgKCFsZWZ0VmFsaWQgfHwgIXJpZ2h0VmFsaWQpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICpibGFja0NvdW50ID0gbGVmdENvdW50ICsgKG5v
ZGUtPmNvbG9yKCkgPT0gQmxhY2sgPyAxIDogMCk7CisgICAgICAgIGJsYWNrQ291bnQgPSBsZWZ0
Q291bnQgKyAobm9kZS0+Y29sb3IoKSA9PSBCbGFjayA/IDEgOiAwKTsKICAgICAgICAgcmV0dXJu
IGxlZnRDb3VudCA9PSByaWdodENvdW50OwogICAgIH0KIApAQCAtNjY1LDggKzYwNCw3IEBAIHBy
aXZhdGU6CiAKICNpZm5kZWYgTkRFQlVHCiAKLSAgICAvLyBEdW1wcyB0aGUgc3VidHJlZSByb290
ZWQgYXQgdGhlIGdpdmVuIG5vZGUuCi0gICAgdm9pZCBkdW1wRnJvbU5vZGUoTm9kZSogbm9kZSwg
aW50IGluZGVudGF0aW9uKSBjb25zdAorICAgIHZvaWQgZHVtcFN1YnRyZWUoTm9kZSogbm9kZSwg
aW50IGluZGVudGF0aW9uKSBjb25zdAogICAgIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGluZGVudGF0aW9uOyBpKyspCkBAIC02
ODEsMTYgKzYxOSwxMyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIExPR19FUlJPUigi
JXMiLCBidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGlmIChub2Rl
KSB7Ci0gICAgICAgICAgICBkdW1wRnJvbU5vZGUobm9kZS0+bGVmdCgpLCBpbmRlbnRhdGlvbiAr
IDIpOwotICAgICAgICAgICAgZHVtcEZyb21Ob2RlKG5vZGUtPnJpZ2h0KCksIGluZGVudGF0aW9u
ICsgMik7CisgICAgICAgICAgICBkdW1wU3VidHJlZShub2RlLT5sZWZ0KCksIGluZGVudGF0aW9u
ICsgMik7CisgICAgICAgICAgICBkdW1wU3VidHJlZShub2RlLT5yaWdodCgpLCBpbmRlbnRhdGlv
biArIDIpOwogICAgICAgICB9CiAgICAgfQogCiAjZW5kaWYKIAotICAgIC8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotICAgIC8vIERhdGEgbWVtYmVycwotCiAgICAgTm9kZSogbV9yb290IHsgbnVsbHB0ciB9Owog
I2lmbmRlZiBOREVCVUcKICAgICBib29sIG1fdmVyYm9zZURlYnVnZ2luZyB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmgKaW5kZXggZWI3MzhmYmJk
NjM1ZTdhOTQxZTFmOGVmZGU2Nzk3NjI0MTdlOWRkNS4uOGY0MDkxMjJlOWY0YzVjMmFmNTdkZDNl
MTIyNTBkNjg2OTliNmU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zs
b2F0aW5nT2JqZWN0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09i
amVjdHMuaApAQCAtMjMsNyArMjMsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlBP
REludGVydmFsLmgiCiAjaW5jbHVkZSAiUm9vdElubGluZUJveC5oIgogI2luY2x1ZGUgPHd0Zi9M
aXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC0zMyw2ICszMiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlbmRlckJsb2NrRmxvdzsKIGNsYXNzIFJlbmRl
ckJveDsKIAordGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lPiBjbGFzcyBQT0RJbnRlcnZhbDsK
IHRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZT4gY2xhc3MgUE9ESW50ZXJ2YWxUcmVlOwogCiBj
bGFzcyBGbG9hdGluZ09iamVjdCB7Cg==
</data>
<flag name="review"
          id="403280"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="403281"
          type_id="3"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>