<?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>141751</bug_id>
          
          <creation_ts>2015-02-18 04:31:00 -0800</creation_ts>
          <short_desc>Adopt WebCore::IOSurface in ImageBuffer</short_desc>
          <delta_ts>2015-02-18 16:38:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1070097</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-02-18 04:31:00 -0800</bug_when>
    <thetext>Adopt WebCore::IOSurface in ImageBuffer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070098</commentid>
    <comment_count>1</comment_count>
      <attachid>246811</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-02-18 04:36:40 -0800</bug_when>
    <thetext>Created attachment 246811
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070099</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-02-18 04:38:55 -0800</bug_when>
    <thetext>There are a few more cleanups that could come after this:
    * Add some kind of IOSurface::Locker and byte-ptr getter and whatnot.
    * Make it harder to get to ImageBuffer::m_surface. Move it to ImageBufferData, in the software-only section?
    * Decide whether we should keep 160121 and delete a bunch of code if not
    * Turn on pooling of ImageBuffer backing surfaces</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070182</commentid>
    <comment_count>3</comment_count>
      <attachid>246835</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-02-18 12:06:44 -0800</bug_when>
    <thetext>Created attachment 246835
Windows build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070218</commentid>
    <comment_count>4</comment_count>
      <attachid>246845</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-02-18 13:49:52 -0800</bug_when>
    <thetext>Created attachment 246845
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070220</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-02-18 13:50:25 -0800</bug_when>
    <thetext>Simon reviewed this, just trying to get through Windows EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070241</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-02-18 15:06:16 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/180308</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070274</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-02-18 16:38:20 -0800</bug_when>
    <thetext>Build fix in http://trac.webkit.org/changeset/180330</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246811</attachid>
            <date>2015-02-18 04:36:40 -0800</date>
            <delta_ts>2015-02-18 12:06:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141751-20150218043642.patch</filename>
            <type>text/plain</type>
            <size>28135</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwMjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYwZmE3ZDNjNGRlOGU4
YmNiNDUwZjhlYjU4NmI2MmExYWM5ZDhjYi4uYTk4ODRmNWQ5MWJlOTg2NDQ3MDg0OTZiMzExMzk0
MmJmNTYwNjE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc1IEBACiAyMDE1LTAyLTE4ICBUaW1v
dGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAorICAgICAgICBBZG9wdCBX
ZWJDb3JlOjpJT1N1cmZhY2UgaW4gSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTc1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJT1N1cmZhY2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgTWFr
ZSB1c2Ugb2YgY2FjaGVkQ0dDb2xvclNwYWNlLgorICAgICAgICBNYWtlIHVzZSBvZiBXZWJDb3Jl
OjpJT1N1cmZhY2UuCisgICAgICAgIFJlbW92ZSB0aGUgdW51c2VkIHNpemUgYXJndW1lbnQgZnJv
bSBJbWFnZUJ1ZmZlckRhdGFDRy4KKyAgICAgICAgQ2xlYXIgdGhlIElPU3VyZmFjZSBvbmNlIHdl
J3ZlIGFsbG9jYXRlZCBpdDsgV2ViQ29yZTo6SU9TdXJmYWNlIGRvZXNuJ3QKKyAgICAgICAgZG8g
dGhpcyBmb3IgdXMsIHVubGlrZSB3a0lPU3VyZmFjZUNvbnRleHRDcmVhdGUuCisgICAgICAgIEFw
cGx5IHRoZSBmbGlwcGluZyBhbmQgc2NhbGUgZmFjdG9yIHRvIHdoaWNoZXZlciBjb250ZXh0IHdl
IG1hZGUuCisgICAgICAgIFdlIGRvbid0IG5lZWQgdG8gc2V0SXNBY2NlbGVyYXRlZENvbnRleHQg
YW55bW9yZSBiZWNhdXNlIGl0J3MgYWx3YXlzCisgICAgICAgIGZhbHNlIGZvciBzb2Z0d2FyZSBj
b250ZXh0cywgYW5kIFdlYkNvcmU6OklPU3VyZmFjZSB3aWxsIHNldCBpdCBmb3IKKyAgICAgICAg
YW55IGFjY2VsZXJhdGVkIGNvbnRleHRzLgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cjo6Y29udGV4dCk6CisgICAgICAgIElmIHdlIGFyZSBJT1N1cmZhY2UtYmFja2VkLCByZXR1cm4g
V2ViQ29yZTo6SU9TdXJmYWNlJ3MgR3JhcGhpY3NDb250ZXh0LgorCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6Zmx1c2hDb250ZXh0KToKKyAgICAgICAgTWFrZSB1c2Ugb2YgY29udGV4
dCgpOyBtX2NvbnRleHQgaXMgbm93IG51bGwgZm9yIGFjY2VsZXJhdGVkIEltYWdlQnVmZmVycy4K
KworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZSk6CisgICAg
ICAgIEFkb3B0IGluLWxpbmUgd2l0aCB0aGUgQ3JlYXRlIGZ1bmN0aW9ucyBmb3IgY2xhcml0eS4g
TWFrZSB1c2Ugb2YKKyAgICAgICAgSU9TdXJmYWNlOjpjcmVhdGVJbWFnZSBpbnN0ZWFkIG9mIHdr
SU9TdXJmYWNlQ29udGV4dENyZWF0ZUltYWdlLgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdl
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjp0b0RhdGFVUkwpOgorICAgICAgICBNYWtlIHVz
ZSBvZiBjb250ZXh0KCk7IG1fY29udGV4dCBpcyBub3cgbnVsbCBmb3IgYWNjZWxlcmF0ZWQgSW1h
Z2VCdWZmZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJE
YXRhQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpJbWFnZUJ1ZmZl
ckRhdGEpOgorICAgICAgICBJbmRlbnRhdGlvbiBmaXgsIGFuZCB1c2UgbnVsbHB0ci4KKworICAg
ICAgICAoV2ViQ29yZTo6Y29udmVydFNjYW5saW5lKToKKyAgICAgICAgR3JhbW1hciBmaXggKGlz
IC0+IGFyZSkuCisKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGF0YTo6Z2V0RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEpOgorICAgICAgICBH
cmFiIHRoZSBJT1N1cmZhY2VSZWYgZnJvbSB0aGUgSU9TdXJmYWNlIHdyYXBwZXIuIEV2ZW50dWFs
bHkgdGhlc2UgdGhpbmdzCisgICAgICAgIHNob3VsZCBiZSBtYWRlIG1vcmUgY29udmVuaWVudCBi
eSB0aGUgd3JhcHBlci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyRGF0YUNHLmg6CisgICAgICAgIERyb3AgdGhlIHVudXNlZCBzaXplIGFyZ3VtZW50IGZyb20g
dGhlIGNvbnN0cnVjdG9yLgorICAgICAgICBSZW9yZ2FuaXplIGFuZCBsYWJlbCB0aGUgdmFyaW91
cyBtZW1iZXJzIHdoaWNoIGFyZSBvbmx5IHVzZWQKKyAgICAgICAgZm9yIGEgcGFydGljdWxhciB0
eXBlIG9mIEltYWdlQnVmZmVyRGF0YUNHLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvSU9TdXJmYWNlLm1tOgorICAgICAgICAoSU9TdXJmYWNlOjplbnN1cmVHcmFwaGljc0Nv
bnRleHQpOgorICAgICAgICBJT1N1cmZhY2UtYmFja2VkIEdyYXBoaWNzQ29udGV4dHMgYXJlIGFs
d2F5cyBjb25zaWRlcmVkIGFjY2VsZXJhdGVkLgorCisgICAgICAgIChJT1N1cmZhY2U6OmNyZWF0
ZSk6CisgICAgICAgIChJT1N1cmZhY2U6OklPU3VyZmFjZSk6CisgICAgICAgIEFkZCBhIGNvbnN0
cnVjdG9yIHRoYXQgdGFrZSBhbiBleHRyYSBzaXplIHRvIHVzZSB3aGVuIG1ha2luZyB0aGUgQ0dD
b250ZXh0OworICAgICAgICBpdCBjYW4gb25seSBiZSBsZXNzIHRoYW4gdGhlIGFjdHVhbCBiYWNr
aW5nIElPU3VyZmFjZSBzaXplLgorICAgICAgICBUaGlzIGlzIG5lZWRlZCBmb3IgcjE2MDEyMS4K
KworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIFJlbW92
ZSBvbGQgV0tTSSBJT1N1cmZhY2UtcmVsYXRlZCBmdW5jdGlvbnMuCisKKzIwMTUtMDItMTggIFRp
bW90aHkgSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCiAgICAgICAgIFJlbW92
ZSBtb3JlIHJlZmVyZW5jZXMgdG8gV2ViQ29yZS5leHAuaW4KICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTc0NwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
ZTBkMGVlMGFkMzhiN2Q5YjhiYThmOWE0MzM5ZTc3YzVlZGMwZDY2Ny4uZGMyMzRlODdlNGZhMWNj
NTBmYzA4YTdmOWU1NGU3Zjk3OTVhOGVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDE1LTAyLTE4ICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KKworICAgICAgICBBZG9wdCBXZWJDb3JlOjpJT1N1cmZhY2UgaW4gSW1hZ2VCdWZmZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTc1MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UpOgorICAgICAgICBSZW1vdmUgb2xkIFdLU0kgSU9TdXJmYWNlLXJlbGF0ZWQgZnVu
Y3Rpb25zLgorCiAyMDE1LTAyLTE3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgQWNjZXNzIE1lbW9yeVByZXNzdXJlSGFuZGxlciBnbG9iYWwgaW5zdGFuY2Ugdmlh
IGEgc2luZ2xldG9uKCkgc3RhdGljIG1lbWJlciBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDI0OGM0
ZWFhNmI3MjdmOGFhNDQ2MDYxN2IyZjFmMDAwZDkzMDgzM2MuLjk1ZjhiYjQxODU2MmUwZWE5MmE5
YmE1MDkyZTEwNjRkMzYwMTlhZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0w
Mi0xOCAgVGltb3RoeSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgQWRvcHQgV2ViQ29yZTo6SU9TdXJmYWNlIGluIEltYWdlQnVmZmVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE3NTEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lz
dGVtSW50ZXJmYWNlKToKKyAgICAgICAgUmVtb3ZlIG9sZCBXS1NJIElPU3VyZmFjZS1yZWxhdGVk
IGZ1bmN0aW9ucy4KKwogMjAxNS0wMi0xNyAgVGltb3RoeSBIb3J0b24gIDx0aW1vdGh5X2hvcnRv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjE3ODU5NSk6IENsaWNraW5nIG9u
IEREIGhpZ2hsaWdodHMgc29tZXRpbWVzIGRvIG5vdCB3b3JrCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IGY1ODI1
ZjUwNDJiZTEzMTZlZWNmOTA2ODE0MDkxY2M5OWMyMzNlZDAuLmI5ZTI1MWRhMjkzODVkZTA3YzY0
ZWE1MTk2YmFhMTIwZGI0YzcxYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC01Nyw1NyArNTcsNiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NU
T1JFKQotCi0vLyBGSVhNRTogQWRvcHQgV2ViQ29yZTo6SU9TdXJmYWNlLgotc3RhdGljIFJldGFp
blB0cjxJT1N1cmZhY2VSZWY+IGNyZWF0ZUlPU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplKQot
ewotICAgIHVuc2lnbmVkIHBpeGVsRm9ybWF0ID0gJ0JHUkEnOwotICAgIHVuc2lnbmVkIGJ5dGVz
UGVyRWxlbWVudCA9IDQ7Ci0gICAgaW50IHdpZHRoID0gc2l6ZS53aWR0aCgpOwotICAgIGludCBo
ZWlnaHQgPSBzaXplLmhlaWdodCgpOwotCi0gICAgdW5zaWduZWQgbG9uZyBieXRlc1BlclJvdyA9
IElPU3VyZmFjZUFsaWduUHJvcGVydHkoa0lPU3VyZmFjZUJ5dGVzUGVyUm93LCBzaXplLndpZHRo
KCkgKiBieXRlc1BlckVsZW1lbnQpOwotICAgIGlmICghYnl0ZXNQZXJSb3cpCi0gICAgICAgIHJl
dHVybiAwOwotCi0gICAgdW5zaWduZWQgbG9uZyBhbGxvY1NpemUgPSBJT1N1cmZhY2VBbGlnblBy
b3BlcnR5KGtJT1N1cmZhY2VBbGxvY1NpemUsIHNpemUuaGVpZ2h0KCkgKiBieXRlc1BlclJvdyk7
Ci0gICAgaWYgKCFhbGxvY1NpemUpCi0gICAgICAgIHJldHVybiAwOwotCi0jaWYgIVBMQVRGT1JN
KElPUykKLSAgICBjb25zdCB2b2lkKiBrZXlzWzZdOwotICAgIGNvbnN0IHZvaWQqIHZhbHVlc1s2
XTsKLSNlbHNlCi0gICAgY29uc3Qgdm9pZCoga2V5c1s3XTsKLSAgICBjb25zdCB2b2lkKiB2YWx1
ZXNbN107Ci0jZW5kaWYKLSAgICBrZXlzWzBdID0ga0lPU3VyZmFjZVdpZHRoOwotICAgIHZhbHVl
c1swXSA9IENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUsICZ3aWR0aCk7Ci0gICAg
a2V5c1sxXSA9IGtJT1N1cmZhY2VIZWlnaHQ7Ci0gICAgdmFsdWVzWzFdID0gQ0ZOdW1iZXJDcmVh
dGUoMCwga0NGTnVtYmVySW50VHlwZSwgJmhlaWdodCk7Ci0gICAga2V5c1syXSA9IGtJT1N1cmZh
Y2VQaXhlbEZvcm1hdDsKLSAgICB2YWx1ZXNbMl0gPSBDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1i
ZXJJbnRUeXBlLCAmcGl4ZWxGb3JtYXQpOwotICAgIGtleXNbM10gPSBrSU9TdXJmYWNlQnl0ZXNQ
ZXJFbGVtZW50OwotICAgIHZhbHVlc1szXSA9IENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlcklu
dFR5cGUsICZieXRlc1BlckVsZW1lbnQpOwotICAgIGtleXNbNF0gPSBrSU9TdXJmYWNlQnl0ZXNQ
ZXJSb3c7Ci0gICAgdmFsdWVzWzRdID0gQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyTG9uZ1R5
cGUsICZieXRlc1BlclJvdyk7Ci0gICAga2V5c1s1XSA9IGtJT1N1cmZhY2VBbGxvY1NpemU7Ci0g
ICAgdmFsdWVzWzVdID0gQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyTG9uZ1R5cGUsICZhbGxv
Y1NpemUpOwotI2lmIFBMQVRGT1JNKElPUykKLSAgICBrZXlzWzZdID0ga0lPU3VyZmFjZUNhY2hl
TW9kZTsKLSAgICBpbnQgY2FjaGVNb2RlID0ga0lPTWFwV3JpdGVDb21iaW5lQ2FjaGU7Ci0gICAg
dmFsdWVzWzZdID0gQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJmNhY2hlTW9k
ZSk7Ci0jZW5kaWYKLQotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGRpY3QgPSBhZG9w
dENGKENGRGljdGlvbmFyeUNyZWF0ZSgwLCBrZXlzLCB2YWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgo
dmFsdWVzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25h
cnlWYWx1ZUNhbGxCYWNrcykpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJS
QVlfTEVOR1RIKHZhbHVlcyk7ICsraSkKLSAgICAgICAgQ0ZSZWxlYXNlKHZhbHVlc1tpXSk7Ci0K
LSAgICByZXR1cm4gYWRvcHRDRihJT1N1cmZhY2VDcmVhdGUoZGljdC5nZXQoKSkpOwotfQotI2Vu
ZGlmCi0KIHN0YXRpYyB2b2lkIHJlbGVhc2VJbWFnZURhdGEodm9pZCosIGNvbnN0IHZvaWQqIGRh
dGEsIHNpemVfdCkKIHsKICAgICBmYXN0RnJlZShjb25zdF9jYXN0PHZvaWQqPihkYXRhKSk7CkBA
IC0xMjEsOCArNzAsNyBAQCBzdGF0aWMgRmxvYXRTaXplIHNjYWxlU2l6ZVRvVXNlclNwYWNlKGNv
bnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpegogfQogCiBJbWFnZUJ1ZmZl
cjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIENvbG9yU3BhY2UgaW1hZ2VDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGUsIGJvb2wmIHN1Y2Nlc3MpCi0gICAgOiBtX2RhdGEoSW50U2l6ZShzaXplKSkgLy8gTk9URTog
VGhlIGlucHV0IGhlcmUgaXNuJ3QgaW1wb3J0YW50IGFzIEltYWdlQnVmZmVyRGF0YUNHJ3MgY29u
c3RydWN0b3IganVzdCBpZ25vcmVzIGl0LgotICAgICwgbV9sb2dpY2FsU2l6ZShzaXplKQorICAg
IDogbV9sb2dpY2FsU2l6ZShzaXplKQogICAgICwgbV9yZXNvbHV0aW9uU2NhbGUocmVzb2x1dGlv
blNjYWxlKQogewogICAgIGZsb2F0IHNjYWxlZFdpZHRoID0gY2VpbGYocmVzb2x1dGlvblNjYWxl
ICogc2l6ZS53aWR0aCgpKTsKQEAgLTE1OSwyNiArMTA3LDE4IEBAIEltYWdlQnVmZmVyOjpJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjCiAgICAgQVNTRVJUKHJlbmRlcmluZ01vZGUgPT0gVW5hY2NlbGVyYXRlZCk7CiAjZW5k
aWYKIAotICAgIHN3aXRjaCAoaW1hZ2VDb2xvclNwYWNlKSB7Ci0gICAgY2FzZSBDb2xvclNwYWNl
RGV2aWNlUkdCOgotICAgICAgICBtX2RhdGEubV9jb2xvclNwYWNlID0gZGV2aWNlUkdCQ29sb3JT
cGFjZVJlZigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENvbG9yU3BhY2VTUkdCOgotICAg
ICAgICBtX2RhdGEubV9jb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBDb2xvclNwYWNlTGluZWFyUkdCOgotICAgICAgICBtX2RhdGEubV9j
b2xvclNwYWNlID0gbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpOwotICAgICAgICBicmVhazsKLSAg
ICB9CisgICAgbV9kYXRhLm1fY29sb3JTcGFjZSA9IGNhY2hlZENHQ29sb3JTcGFjZShpbWFnZUNv
bG9yU3BhY2UpOwogCiAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY2dDb250ZXh0OwogICAg
IGlmIChhY2NlbGVyYXRlUmVuZGVyaW5nKSB7CiAjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFD
S0lOR19TVE9SRSkKLSAgICAgICAgbV9kYXRhLm1fc3VyZmFjZSA9IGNyZWF0ZUlPU3VyZmFjZSht
X2RhdGEubV9iYWNraW5nU3RvcmVTaXplKTsKICAgICAgICAgRmxvYXRTaXplIHVzZXJCb3VuZHMg
PSBzY2FsZVNpemVUb1VzZXJTcGFjZShGbG9hdFNpemUod2lkdGgudW5zYWZlR2V0KCksIGhlaWdo
dC51bnNhZmVHZXQoKSksIG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUsIG1fc2l6ZSk7Ci0gICAg
ICAgIGNnQ29udGV4dCA9IGFkb3B0Q0Yod2tJT1N1cmZhY2VDb250ZXh0Q3JlYXRlKG1fZGF0YS5t
X3N1cmZhY2UuZ2V0KCksIHVzZXJCb3VuZHMud2lkdGgoKSwgdXNlckJvdW5kcy5oZWlnaHQoKSwg
bV9kYXRhLm1fY29sb3JTcGFjZSkpOworICAgICAgICBtX2RhdGEubV9zdXJmYWNlID0gSU9TdXJm
YWNlOjpjcmVhdGUobV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZSwgSW50U2l6ZSh1c2VyQm91bmRz
KSwgaW1hZ2VDb2xvclNwYWNlKTsKKyAgICAgICAgY2dDb250ZXh0ID0gbV9kYXRhLm1fc3VyZmFj
ZS0+ZW5zdXJlUGxhdGZvcm1Db250ZXh0KCk7CiAjZW5kaWYKLSAgICAgICAgaWYgKCFjZ0NvbnRl
eHQpCisgICAgICAgIGlmIChjZ0NvbnRleHQpCisgICAgICAgICAgICBDR0NvbnRleHRDbGVhclJl
Y3QoY2dDb250ZXh0LmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCB1c2VyQm91bmRzKSk7
CisgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFjY2VsZXJhdGVSZW5kZXJpbmcgPSBmYWxzZTsg
Ly8gSWYgYWxsb2NhdGlvbiBmYWlscywgZmFsbCBiYWNrIHRvIG5vbi1hY2NlbGVyYXRlZCBwYXRo
LgogICAgIH0KIApAQCAtMTk1LDE2ICsxMzUsMTcgQEAgSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVy
KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWMK
ICAgICAgICAgY2dDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUobV9kYXRh
Lm1fZGF0YSwgbV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS53aWR0aCgpLCBtX2RhdGEubV9iYWNr
aW5nU3RvcmVTaXplLmhlaWdodCgpLCA4LCBtX2RhdGEubV9ieXRlc1BlclJvdy51bnNhZmVHZXQo
KSwgbV9kYXRhLm1fY29sb3JTcGFjZSwgbV9kYXRhLm1fYml0bWFwSW5mbykpOwogICAgICAgICAv
LyBDcmVhdGUgYSBsaXZlIGltYWdlIHRoYXQgd3JhcHMgdGhlIGRhdGEuCiAgICAgICAgIG1fZGF0
YS5tX2RhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YSgw
LCBtX2RhdGEubV9kYXRhLCBudW1CeXRlcy51bnNhZmVHZXQoKSwgcmVsZWFzZUltYWdlRGF0YSkp
OworCisgICAgICAgIGlmICghY2dDb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIG1fY29udGV4dCA9IGFkb3B0UHRyKG5ldyBHcmFwaGljc0NvbnRleHQoY2dDb250ZXh0Lmdl
dCgpKSk7CiAgICAgfQogCi0gICAgaWYgKCFjZ0NvbnRleHQpCi0gICAgICAgIHJldHVybjsKKyAg
ICBjb250ZXh0KCktPnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOworICAgIGNvbnRleHQoKS0+dHJh
bnNsYXRlKDAsIC1tX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLmhlaWdodCgpKTsKKyAgICBjb250
ZXh0KCktPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IobV9yZXNvbHV0aW9uU2NhbGUpOwogCi0gICAg
bV9jb250ZXh0ID0gYWRvcHRQdHIobmV3IEdyYXBoaWNzQ29udGV4dChjZ0NvbnRleHQuZ2V0KCkp
KTsKLSAgICBtX2NvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwotICAgIG1fY29udGV4
dC0+dHJhbnNsYXRlKDAsIC1tX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLmhlaWdodCgpKTsKLSAg
ICBtX2NvbnRleHQtPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IobV9yZXNvbHV0aW9uU2NhbGUpOwot
ICAgIG1fY29udGV4dC0+c2V0SXNBY2NlbGVyYXRlZENvbnRleHQoYWNjZWxlcmF0ZVJlbmRlcmlu
Zyk7CiAgICAgc3VjY2VzcyA9IHRydWU7CiB9CiAKQEAgLTIxNCwxMiArMTU1LDE0IEBAIEltYWdl
QnVmZmVyOjp+SW1hZ2VCdWZmZXIoKQogCiBHcmFwaGljc0NvbnRleHQqIEltYWdlQnVmZmVyOjpj
b250ZXh0KCkgY29uc3QKIHsKKyAgICBpZiAobV9kYXRhLm1fc3VyZmFjZSkKKyAgICAgICAgcmV0
dXJuICZtX2RhdGEubV9zdXJmYWNlLT5lbnN1cmVHcmFwaGljc0NvbnRleHQoKTsKICAgICByZXR1
cm4gbV9jb250ZXh0LmdldCgpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpmbHVzaENvbnRleHQo
KSBjb25zdAogewotICAgIENHQ29udGV4dEZsdXNoKG1fY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCkpOworICAgIENHQ29udGV4dEZsdXNoKGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCkpOwog
fQogCiBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVj
ZXNzYXJ5KENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFNpemUmIGJvdW5kcykKQEAgLTI2Mywx
NCArMjA2LDE0IEBAIEJhY2tpbmdTdG9yZUNvcHkgSW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VN
b2RlKCkKIAogUmV0YWluUHRyPENHSW1hZ2VSZWY+IEltYWdlQnVmZmVyOjpjb3B5TmF0aXZlSW1h
Z2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CiB7Ci0gICAgQ0dJbWFnZVJl
ZiBpbWFnZSA9IDA7Ci0gICAgaWYgKCFtX2NvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkp
IHsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CisgICAgaWYgKCFjb250ZXh0KCkt
PmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKICAgICAgICAgc3dpdGNoIChjb3B5QmVoYXZpb3Ip
IHsKICAgICAgICAgY2FzZSBEb250Q29weUJhY2tpbmdTdG9yZToKLSAgICAgICAgICAgIGltYWdl
ID0gQ0dJbWFnZUNyZWF0ZShtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLndpZHRoKCksIG1fZGF0
YS5tX2JhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCksIDgsIDMyLCBtX2RhdGEubV9ieXRlc1BlclJv
dy51bnNhZmVHZXQoKSwgbV9kYXRhLm1fY29sb3JTcGFjZSwgbV9kYXRhLm1fYml0bWFwSW5mbywg
bV9kYXRhLm1fZGF0YVByb3ZpZGVyLmdldCgpLCAwLCB0cnVlLCBrQ0dSZW5kZXJpbmdJbnRlbnRE
ZWZhdWx0KTsKKyAgICAgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKG1fZGF0
YS5tX2JhY2tpbmdTdG9yZVNpemUud2lkdGgoKSwgbV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS5o
ZWlnaHQoKSwgOCwgMzIsIG1fZGF0YS5tX2J5dGVzUGVyUm93LnVuc2FmZUdldCgpLCBtX2RhdGEu
bV9jb2xvclNwYWNlLCBtX2RhdGEubV9iaXRtYXBJbmZvLCBtX2RhdGEubV9kYXRhUHJvdmlkZXIu
Z2V0KCksIDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENvcHlCYWNraW5nU3RvcmU6Ci0gICAgICAgICAgICBpbWFn
ZSA9IENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0
KCkpOworICAgICAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUlt
YWdlKGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCkpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0y
NzksMTkgKzIyMiwxOSBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXI6OmNvcHlO
YXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcgogICAgIH0KICNpZiBVU0Uo
SU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQogICAgIGVsc2UKLSAgICAgICAgaW1hZ2Ug
PSB3a0lPU3VyZmFjZUNvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0KCktPnBsYXRmb3JtQ29udGV4
dCgpKTsKKyAgICAgICAgaW1hZ2UgPSBtX2RhdGEubV9zdXJmYWNlLT5jcmVhdGVJbWFnZSgpOwog
I2VuZGlmCiAKLSAgICByZXR1cm4gYWRvcHRDRihpbWFnZSk7CisgICAgcmV0dXJuIGltYWdlOwog
fQogCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQs
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICBVTlVTRURfUEFSQU0o
dXNlTG93UXVhbGl0eVNjYWxlKTsKLSAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSAoZGVzdENv
bnRleHQgPT0gbV9jb250ZXh0KSA/IENvbG9yU3BhY2VEZXZpY2VSR0IgOiBzdHlsZUNvbG9yU3Bh
Y2U7CisgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gKGRlc3RDb250ZXh0ID09IGNvbnRleHQo
KSkgPyBDb2xvclNwYWNlRGV2aWNlUkdCIDogc3R5bGVDb2xvclNwYWNlOwogCiAgICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IGltYWdlOwotICAgIGlmIChkZXN0Q29udGV4dCA9PSBtX2NvbnRleHQg
fHwgZGVzdENvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCisgICAgaWYgKGRlc3RDb250
ZXh0ID09IGNvbnRleHQoKSB8fCBkZXN0Q29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkK
ICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7IC8vIERy
YXdpbmcgaW50byBvdXIgb3duIGJ1ZmZlciwgbmVlZCB0byBkZWVwIGNvcHkuCiAgICAgZWxzZQog
ICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CkBA
IC0zMDYsOCArMjQ5LDggQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0KiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmMKICAgICBGbG9hdFJlY3Qg
YWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9y
ZXNvbHV0aW9uU2NhbGUsIG1fcmVzb2x1dGlvblNjYWxlKTsKIAotICAgIGlmICghbV9jb250ZXh0
LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7Ci0gICAgICAgIGlmIChkZXN0Q29udGV4dCA9PSBt
X2NvbnRleHQgfHwgZGVzdENvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKKyAgICBp
ZiAoIWNvbnRleHQoKS0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkgeworICAgICAgICBpZiAoZGVz
dENvbnRleHQgPT0gY29udGV4dCgpIHx8IGRlc3RDb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4
dCgpKSB7CiAgICAgICAgICAgICBSZWZQdHI8SW1hZ2U+IGNvcHkgPSBjb3B5SW1hZ2UoQ29weUJh
Y2tpbmdTdG9yZSk7IC8vIERyYXdpbmcgaW50byBvdXIgb3duIGJ1ZmZlciwgbmVlZCB0byBkZWVw
IGNvcHkuCiAgICAgICAgICAgICBjb3B5LT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0
ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3R5bGVDb2xvclNwYWNlLCBvcCwg
ZGVzdFJlY3QsIGJsZW5kTW9kZSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0zMzcsMzEgKzI4MCwz
MSBAQCB2b2lkIEltYWdlQnVmZmVyOjpjbGlwKEdyYXBoaWNzQ29udGV4dCogY29udGV4dFRvQ2xp
cCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjbwogCiBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3Qm
IHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKLSAgICBp
ZiAobV9jb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQorICAgIGlmIChjb250ZXh0KCkt
PmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCiAgICAgICAgIGZsdXNoQ29udGV4dCgpOwogCiAgICAg
SW50UmVjdCBzcmNSZWN0ID0gcmVjdDsKICAgICBpZiAoY29vcmRpbmF0ZVN5c3RlbSA9PSBMb2dp
Y2FsQ29vcmRpbmF0ZVN5c3RlbSkKICAgICAgICAgc3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25T
Y2FsZSk7CiAKLSAgICByZXR1cm4gbV9kYXRhLmdldERhdGEoc3JjUmVjdCwgaW50ZXJuYWxTaXpl
KCksIG1fY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSwgdHJ1ZSwgMSk7CisgICAgcmV0
dXJuIG1fZGF0YS5nZXREYXRhKHNyY1JlY3QsIGludGVybmFsU2l6ZSgpLCBjb250ZXh0KCktPmlz
QWNjZWxlcmF0ZWRDb250ZXh0KCksIHRydWUsIDEpOwogfQogCiBQYXNzUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJ
bnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CiB7
Ci0gICAgaWYgKG1fY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkKKyAgICBpZiAoY29u
dGV4dCgpLT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQogICAgICAgICBmbHVzaENvbnRleHQoKTsK
IAogICAgIEludFJlY3Qgc3JjUmVjdCA9IHJlY3Q7CiAgICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0g
PT0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pCiAgICAgICAgIHNyY1JlY3Quc2NhbGUobV9yZXNv
bHV0aW9uU2NhbGUpOwogCi0gICAgcmV0dXJuIG1fZGF0YS5nZXREYXRhKHNyY1JlY3QsIGludGVy
bmFsU2l6ZSgpLCBtX2NvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCksIGZhbHNlLCAxKTsK
KyAgICByZXR1cm4gbV9kYXRhLmdldERhdGEoc3JjUmVjdCwgaW50ZXJuYWxTaXplKCksIGNvbnRl
eHQoKS0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSwgZmFsc2UsIDEpOwogfQogCiB2b2lkIEltYWdl
QnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJy
YXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29y
ZGluYXRlU3lzdGVtKQogewotICAgIGlmICghbV9jb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4
dCgpKSB7CisgICAgaWYgKCFjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKICAg
ICAgICAgSW50UmVjdCBzY2FsZWRTb3VyY2VSZWN0ID0gc291cmNlUmVjdDsKICAgICAgICAgSW50
U2l6ZSBzY2FsZWRTb3VyY2VTaXplID0gc291cmNlU2l6ZTsKICAgICAgICAgaWYgKGNvb3JkaW5h
dGVTeXN0ZW0gPT0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pIHsKQEAgLTQ4NCw3ICs0MjcsNyBA
QCBTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBkb3VibGUqIHF1YWxpdHksIENvbwogewogICAgIEFTU0VSVChNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhtaW1lVHlwZSkpOwogCi0gICAg
aWYgKG1fY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkKKyAgICBpZiAoY29udGV4dCgp
LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQogICAgICAgICBmbHVzaENvbnRleHQoKTsKIAogICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpID0gdXRpRnJvbU1JTUVUeXBlKG1pbWVUeXBlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyRGF0YUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyRGF0YUNHLmNwcAppbmRleCA4MjJiZTdmZDYzMWJmNDJhZWMyZDJiODc2MTI2ODkzN2Rh
N2FlNjQ5Li41ZjQ5MGEwMGYyMTdkZmY5ZDQ2ZmY2MzJkYmE3NTcwMGVhZDQ2YTQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFD
Ry5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJEYXRhQ0cuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiSW1hZ2VCdWZmZXJEYXRhLmgiCiAKKyNpbmNsdWRlICJJT1N1cmZhY2UuaCIKICNpbmNs
dWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgog
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC01NCwxMCArNTUsMTAgQEAgc3RydWN0IFNj
YW5saW5lRGF0YSB7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW1hZ2VCdWZmZXJEYXRhOjpJ
bWFnZUJ1ZmZlckRhdGEoY29uc3QgSW50U2l6ZSYpCi06IG1fZGF0YSgwKQorSW1hZ2VCdWZmZXJE
YXRhOjpJbWFnZUJ1ZmZlckRhdGEoKQorICAgIDogbV9kYXRhKG51bGxwdHIpCiAjaWYgVVNFKElP
U1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKLSwgbV9zdXJmYWNlKDApCisgICAgLCBtX3N1
cmZhY2UobnVsbHB0cikKICNlbmRpZgogewogfQpAQCAtODksNyArOTAsNyBAQCBzdGF0aWMgdm9p
ZCBjb252ZXJ0U2NhbmxpbmUodm9pZCogZGF0YSwgc2l6ZV90IHRpbGVOdW1iZXIsIGJvb2wgcHJl
bXVsdGlwbHkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gU3dhcCBjaGFu
bmVscyAxIGFuZCAzLCB0byBjb252ZXJ0IEJHUkE8LT5SR0JBLiBJT1N1cmZhY2VzIGlzIEJHUkEs
IEltYWdlRGF0YSBleHBlY3RzIFJHQkEuCisgICAgLy8gU3dhcCBjaGFubmVscyAxIGFuZCAzLCB0
byBjb252ZXJ0IEJHUkE8LT5SR0JBLiBJT1N1cmZhY2VzIGFyZSBCR1JBLCBJbWFnZURhdGEgZXhw
ZWN0cyBSR0JBLgogICAgIGNvbnN0IHVpbnQ4X3QgbWFwWzRdID0geyAyLCAxLCAwLCAzIH07CiAg
ICAgdkltYWdlUGVybXV0ZUNoYW5uZWxzX0FSR0I4ODg4KCZkZXN0LCAmZGVzdCwgbWFwLCBrdklt
YWdlRG9Ob3RUaWxlKTsKIH0KQEAgLTI2OSw3ICsyNzAsOCBAQCBQYXNzUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBJbWFnZUJ1ZmZlckRhdGE6OmdldERhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwg
Y29ucwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19C
QUNLSU5HX1NUT1JFKQotICAgICAgICBJT1N1cmZhY2VSZWYgc3VyZmFjZSA9IG1fc3VyZmFjZS5n
ZXQoKTsKKyAgICAgICAgLy8gRklYTUU6IFdlYkNvcmU6OklPU3VyZmFjZSBzaG91bGQgaGF2ZSBh
IGxvY2tpbmcgUkFJSSBvYmplY3QgYW5kIGJhc2UtYWRkcmVzcyBnZXR0ZXIuCisgICAgICAgIElP
U3VyZmFjZVJlZiBzdXJmYWNlID0gbV9zdXJmYWNlLT5zdXJmYWNlKCk7CiAgICAgICAgIElPU3Vy
ZmFjZUxvY2soc3VyZmFjZSwga0lPU3VyZmFjZUxvY2tSZWFkT25seSwgMCk7CiAgICAgICAgIHNy
Y0J5dGVzUGVyUm93ID0gSU9TdXJmYWNlR2V0Qnl0ZXNQZXJSb3coc3VyZmFjZSk7CiAgICAgICAg
IHNyY1Jvd3MgPSAodW5zaWduZWQgY2hhciopKElPU3VyZmFjZUdldEJhc2VBZGRyZXNzKHN1cmZh
Y2UpKSArIG9yaWdpbnkgKiBzcmNCeXRlc1BlclJvdyArIG9yaWdpbnggKiA0OwpAQCAtNTEzLDcg
KzUxNSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKFVpbnQ4Q2xhbXBlZEFycmF5
KiYgc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTCiAgICAgICAgIH0KICAgICB9IGVsc2Ug
ewogI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCi0gICAgICAgIElPU3Vy
ZmFjZVJlZiBzdXJmYWNlID0gbV9zdXJmYWNlLmdldCgpOworICAgICAgICBJT1N1cmZhY2VSZWYg
c3VyZmFjZSA9IG1fc3VyZmFjZS0+c3VyZmFjZSgpOwogICAgICAgICBJT1N1cmZhY2VMb2NrKHN1
cmZhY2UsIDAsIDApOwogICAgICAgICBkZXN0Qnl0ZXNQZXJSb3cgPSBJT1N1cmZhY2VHZXRCeXRl
c1BlclJvdyhzdXJmYWNlKTsKICAgICAgICAgZGVzdFJvd3MgPSAodW5zaWduZWQgY2hhciopKElP
U3VyZmFjZUdldEJhc2VBZGRyZXNzKHN1cmZhY2UpKSArIChkZXN0eSAqIGRlc3RCeXRlc1BlclJv
dyArIGRlc3R4ICogNCkudW5zYWZlR2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaAppbmRleCBmMzYxMzVhNzA2
YWEyNjdlNWVkYzVjMzhjZDZlYTczZDYzZGNiMmFlLi4xZDIzZDQwM2NhNDVlNzk2ZmZkZjBlOGVj
ZDNkNDQ5NmQ4NTNlNGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmgKQEAgLTQzLDIwICs0MywyNCBAQCB0eXBl
ZGVmIHVpbnQzMl90IENHQml0bWFwSW5mbzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBJT1N1cmZhY2U7CiBjbGFzcyBJbnRTaXplOwogCiBjbGFzcyBJbWFnZUJ1ZmZlckRhdGEgewog
cHVibGljOgotICAgIEltYWdlQnVmZmVyRGF0YShjb25zdCBJbnRTaXplJik7CisgICAgSW1hZ2VC
dWZmZXJEYXRhKCk7CiAKKyAgICBJbnRTaXplIG1fYmFja2luZ1N0b3JlU2l6ZTsKKyAgICBDaGVj
a2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gbV9ieXRlc1BlclJvdzsKKyAgICBDR0NvbG9y
U3BhY2VSZWYgbV9jb2xvclNwYWNlOworCisgICAgLy8gT25seSBmb3IgU29mdHdhcmUgSW1hZ2VC
dWZmZXJzLgogICAgIHZvaWQqIG1fZGF0YTsKLSAgICAKICAgICBSZXRhaW5QdHI8Q0dEYXRhUHJv
dmlkZXJSZWY+IG1fZGF0YVByb3ZpZGVyOwogICAgIENHQml0bWFwSW5mbyBtX2JpdG1hcEluZm87
Ci0gICAgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IG1fYnl0ZXNQZXJSb3c7Ci0g
ICAgQ0dDb2xvclNwYWNlUmVmIG1fY29sb3JTcGFjZTsKLSAgICBSZXRhaW5QdHI8SU9TdXJmYWNl
UmVmPiBtX3N1cmZhY2U7Ci0gICAgSW50U2l6ZSBtX2JhY2tpbmdTdG9yZVNpemU7CisKKyAgICAv
LyBPbmx5IGZvciBBY2NlbGVyYXRlZCBJbWFnZUJ1ZmZlcnMuCisgICAgc3RkOjp1bmlxdWVfcHRy
PElPU3VyZmFjZT4gbV9zdXJmYWNlOwogCiAgICAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJh
eT4gZ2V0RGF0YShjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIGJvb2wgYWNjZWxlcmF0
ZVJlbmRlcmluZywgYm9vbCB1bm11bHRpcGxpZWQsIGZsb2F0IHJlc29sdXRpb25TY2FsZSkgY29u
c3Q7CiAgICAgdm9pZCBwdXREYXRhKFVpbnQ4Q2xhbXBlZEFycmF5KiYgc291cmNlLCBjb25zdCBJ
bnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQ
b2ludCYgZGVzdFBvaW50LCBjb25zdCBJbnRTaXplJiwgYm9vbCBhY2NlbGVyYXRlUmVuZGVyaW5n
LCBib29sIHVubXVsdGlwbGllZCwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgKaW5kZXggMGQx
MzJmZTZkNjM0YmYzMmUyNjMyNTlhYzk4M2UyZjgwYjE1NmZmMC4uZTc1MmEyNmM0MWRmZjBjNWJh
YTFlZmI4MGVlNTU2MDQxYmM2ZDMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgTWFj
aFNlbmRSaWdodDsKIGNsYXNzIElPU3VyZmFjZSBmaW5hbCB7CiBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZShJbnRTaXpl
LCBDb2xvclNwYWNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PElPU3VyZmFjZT4gY3JlYXRlKEludFNpemUsIEludFNpemUgY29udGV4dFNpemUsIENvbG9yU3Bh
Y2UpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNl
PiBjcmVhdGVGcm9tU2VuZFJpZ2h0KGNvbnN0IE1hY2hTZW5kUmlnaHQmLCBDb2xvclNwYWNlKTsK
ICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbVN1cmZhY2Uo
SU9TdXJmYWNlUmVmLCBDb2xvclNwYWNlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbUltYWdlKENHSW1hZ2VSZWYpOwpAQCAt
ODEsMTAgKzgyLDEyIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBJT1N1cmZhY2UoSW50U2l6
ZSwgQ29sb3JTcGFjZSk7CisgICAgSU9TdXJmYWNlKEludFNpemUsIEludFNpemUgY29udGV4dFNp
emUsIENvbG9yU3BhY2UpOwogICAgIElPU3VyZmFjZShJT1N1cmZhY2VSZWYsIENvbG9yU3BhY2Up
OwogCiAgICAgQ29sb3JTcGFjZSBtX2NvbG9yU3BhY2U7CiAgICAgSW50U2l6ZSBtX3NpemU7Cisg
ICAgSW50U2l6ZSBtX2NvbnRleHRTaXplOwogICAgIHNpemVfdCBtX3RvdGFsQnl0ZXM7CiAKICAg
ICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBtX2dyYXBoaWNzQ29udGV4dDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQppbmRleCA1
YzRjZTJlYjc4ZTg2YmZlZjFhODZhNmRhZDhiZTc3NWNkNTE2OTEwLi4yODdjNzRkNTg5YWQ0ZTI2
MDE5ODAwZDQxYzNhNmE5NmMwMjI4ZjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCkBAIC00OCw2ICs0OCwxMiBAQCBzdGQ6
OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZShJbnRTaXplIHNpemUsIENv
bG9yU3BhY2UgY29sb3JTcGFjZQogICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNl
PihuZXcgSU9TdXJmYWNlKHNpemUsIGNvbG9yU3BhY2UpKTsKIH0KIAorc3RkOjp1bmlxdWVfcHRy
PElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGUoSW50U2l6ZSBzaXplLCBJbnRTaXplIGNvbnRl
eHRTaXplLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit7CisgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBiZSBhYmxlIHRvIHB1bGwgc3VyZmFjZXMgb3V0IG9mIHRoZSBJT1N1cmZhY2VQb29sIGFuZCBh
ZGp1c3QgdGhlaXIgY29udGV4dFNpemUuCisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJT1N1
cmZhY2U+KG5ldyBJT1N1cmZhY2Uoc2l6ZSwgY29udGV4dFNpemUsIGNvbG9yU3BhY2UpKTsKK30K
Kwogc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJp
Z2h0KGNvbnN0IE1hY2hTZW5kUmlnaHQmIHNlbmRSaWdodCwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
KQogewogICAgIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IHN1cmZhY2UgPSBhZG9wdENGKElPU3Vy
ZmFjZUxvb2t1cEZyb21NYWNoUG9ydChzZW5kUmlnaHQuc2VuZFJpZ2h0KCkpKTsKQEAgLTc4LDYg
Kzg0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGVGcm9t
SW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZSkKIElPU3VyZmFjZTo6SU9TdXJmYWNlKEludFNpemUgc2l6
ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogICAgIDogbV9jb2xvclNwYWNlKGNvbG9yU3BhY2Up
CiAgICAgLCBtX3NpemUoc2l6ZSkKKyAgICAsIG1fY29udGV4dFNpemUoc2l6ZSkKIHsKICAgICB1
bnNpZ25lZCBwaXhlbEZvcm1hdCA9ICdCR1JBJzsKICAgICB1bnNpZ25lZCBieXRlc1BlckVsZW1l
bnQgPSA0OwpAQCAtMTA1LDYgKzExMiwxNCBAQCBJT1N1cmZhY2U6OklPU3VyZmFjZShJbnRTaXpl
IHNpemUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKICAgICBtX3N1cmZhY2UgPSBhZG9wdENGKElP
U3VyZmFjZUNyZWF0ZSgoQ0ZEaWN0aW9uYXJ5UmVmKW9wdGlvbnMpKTsKIH0KIAorSU9TdXJmYWNl
OjpJT1N1cmZhY2UoSW50U2l6ZSBzaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UpCisgICAgOiBJT1N1cmZhY2Uoc2l6ZSwgY29sb3JTcGFjZSkKK3sKKyAgICBB
U1NFUlQoY29udGV4dFNpemUud2lkdGgoKSA8PSBzaXplLndpZHRoKCkpOworICAgIEFTU0VSVChj
b250ZXh0U2l6ZS5oZWlnaHQoKSA8PSBzaXplLmhlaWdodCgpKTsKKyAgICBtX2NvbnRleHRTaXpl
ID0gY29udGV4dFNpemU7Cit9CisKIElPU3VyZmFjZTo6SU9TdXJmYWNlKElPU3VyZmFjZVJlZiBz
dXJmYWNlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiAgICAgOiBtX2NvbG9yU3BhY2UoY29sb3JT
cGFjZSkKICAgICAsIG1fc3VyZmFjZShzdXJmYWNlKQpAQCAtMTM2LDcgKzE1MSw3IEBAIENHQ29u
dGV4dFJlZiBJT1N1cmZhY2U6OmVuc3VyZVBsYXRmb3JtQ29udGV4dCgpCiAgICAgQ0dCaXRtYXBJ
bmZvIGJpdG1hcEluZm8gPSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0
bWFwQnl0ZU9yZGVyMzJIb3N0OwogICAgIHNpemVfdCBiaXRzUGVyQ29tcG9uZW50ID0gODsKICAg
ICBzaXplX3QgYml0c1BlclBpeGVsID0gMzI7Ci0gICAgbV9jZ0NvbnRleHQgPSBhZG9wdENGKENH
SU9TdXJmYWNlQ29udGV4dENyZWF0ZShtX3N1cmZhY2UuZ2V0KCksIG1fc2l6ZS53aWR0aCgpLCBt
X3NpemUuaGVpZ2h0KCksIGJpdHNQZXJDb21wb25lbnQsIGJpdHNQZXJQaXhlbCwgY2FjaGVkQ0dD
b2xvclNwYWNlKG1fY29sb3JTcGFjZSksIGJpdG1hcEluZm8pKTsKKyAgICBtX2NnQ29udGV4dCA9
IGFkb3B0Q0YoQ0dJT1N1cmZhY2VDb250ZXh0Q3JlYXRlKG1fc3VyZmFjZS5nZXQoKSwgbV9jb250
ZXh0U2l6ZS53aWR0aCgpLCBtX2NvbnRleHRTaXplLmhlaWdodCgpLCBiaXRzUGVyQ29tcG9uZW50
LCBiaXRzUGVyUGl4ZWwsIGNhY2hlZENHQ29sb3JTcGFjZShtX2NvbG9yU3BhY2UpLCBiaXRtYXBJ
bmZvKSk7CiAKICAgICByZXR1cm4gbV9jZ0NvbnRleHQuZ2V0KCk7CiB9CkBAIC0xNDcsNiArMTYy
LDcgQEAgR3JhcGhpY3NDb250ZXh0JiBJT1N1cmZhY2U6OmVuc3VyZUdyYXBoaWNzQ29udGV4dCgp
CiAgICAgICAgIHJldHVybiAqbV9ncmFwaGljc0NvbnRleHQ7CiAKICAgICBtX2dyYXBoaWNzQ29u
dGV4dCA9IGFkb3B0UHRyKG5ldyBHcmFwaGljc0NvbnRleHQoZW5zdXJlUGxhdGZvcm1Db250ZXh0
KCkpKTsKKyAgICBtX2dyYXBoaWNzQ29udGV4dC0+c2V0SXNBY2NlbGVyYXRlZENvbnRleHQodHJ1
ZSk7CiAKICAgICByZXR1cm4gKm1fZ3JhcGhpY3NDb250ZXh0OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQpp
bmRleCA1ZGI0NjZiZjIwZjc4YjA2NzNiYWY2YzkzYTNlYzA3ZjNmZDNiM2M5Li5jN2U1OTcwNTYw
NTU0MWJlNjc4MzA3OTg5N2RlMmE3N2IwMDI4YjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQpAQCAtNzAs
MTEgKzcwLDYgQEAgV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0Q0ZVUkxSZXF1ZXN0U2hvdWxk
Q29udGVudFNuaWZmKShDRk11dGFibGVVUkxSZXF1ZXN0UmUKIFdFQkNPUkVfRVhQT1JUIHZvaWQg
KCp3a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbikoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiwgQ0ZN
dXRhYmxlVVJMUmVxdWVzdFJlZik7CiAjZW5kaWYKIAotI2lmICFQTEFURk9STShJT1NfU0lNVUxB
VE9SKQotV0VCQ09SRV9FWFBPUlQgQ0dDb250ZXh0UmVmICgqd2tJT1N1cmZhY2VDb250ZXh0Q3Jl
YXRlKShJT1N1cmZhY2VSZWYgc3VyZmFjZSwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdo
dCwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UpOwotV0VCQ09SRV9FWFBPUlQgQ0dJbWFnZVJl
ZiAoKndrSU9TdXJmYWNlQ29udGV4dENyZWF0ZUltYWdlKShDR0NvbnRleHRSZWYgY29udGV4dCk7
Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPU19TSU1VTEFUT1IpCi0KIFdFQkNPUkVfRVhQT1JUIENG
VVJMU3RvcmFnZVNlc3Npb25SZWYgKCp3a0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbikoQ0ZT
dHJpbmdSZWYpOwogV0VCQ09SRV9FWFBPUlQgTlNVUkxSZXF1ZXN0KiAoKndrQ29weVJlcXVlc3RX
aXRoU3RvcmFnZVNlc3Npb24pKENGVVJMU3RvcmFnZVNlc3Npb25SZWYsIE5TVVJMUmVxdWVzdCop
OwogV0VCQ09SRV9FWFBPUlQgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiAoKndrQ29weUhUVFBDb29r
aWVTdG9yYWdlKShDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCmluZGV4IGI3Njg1ZDg3
YmExOGViYTkzM2U5ZWUwM2ZkZmZiNDY3YjRmYzcxOTUuLjQ5ZDc4OGY3MzQwZDI4OGFmMWFkZTVi
Nzg3ZWFkYjkwZmVjODk5NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaApAQCAtMjIxLDExICsyMjEsNiBAQCBleHRlcm4g
Q0ZIVFRQTWVzc2FnZVJlZiAoKndrQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKShDRlJlYWRTdHJl
YW1SZWYsIENGVVJMUmVmCiBleHRlcm4gdm9pZCogd2tHZXRIeXBoZW5hdGlvbkxvY2F0aW9uQmVm
b3JlSW5kZXg7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoQ0EpICYmICFQ
TEFURk9STShJT1NfU0lNVUxBVE9SKQotZXh0ZXJuIENHQ29udGV4dFJlZiAoKndrSU9TdXJmYWNl
Q29udGV4dENyZWF0ZSkoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIHVuc2lnbmVkIHdpZHRoLCB1bnNp
Z25lZCBoZWlnaHQsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKTsKLWV4dGVybiBDR0ltYWdl
UmVmICgqd2tJT1N1cmZhY2VDb250ZXh0Q3JlYXRlSW1hZ2UpKENHQ29udGV4dFJlZiBjb250ZXh0
KTsKLSNlbmRpZgotCiAjaWYgIVBMQVRGT1JNKElPUykKIGV4dGVybiBpbnQgKCp3a1JlY29tbWVu
ZGVkU2Nyb2xsZXJTdHlsZSkodm9pZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggYmRiOTkwZDVlNGNiMTVh
OWY2NjcxN2JiMDczMmFiNWM1NTRhMWM4Ni4uMjk0MjYyMTQ4MDg0Mjg5YWYwNGJmYzc1MWYzM2M5
NjVlOWQ2N2Y4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNv
cmVTeXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTEwMiw5ICsxMDIsNiBAQCB2b2lkICgqd2tTZXRS
ZXF1ZXN0U3RvcmFnZVNlc3Npb24pKENGVVJMU3RvcmFnZVNlc3Npb25SZWYsIENGTXV0YWJsZVVS
TFJlcXVlc3RSZQogCiB2b2lkKiB3a0dldEh5cGhlbmF0aW9uTG9jYXRpb25CZWZvcmVJbmRleDsK
IAotQ0dDb250ZXh0UmVmICgqd2tJT1N1cmZhY2VDb250ZXh0Q3JlYXRlKShJT1N1cmZhY2VSZWYg
c3VyZmFjZSwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgQ0dDb2xvclNwYWNlUmVm
IGNvbG9yU3BhY2UpOwotQ0dJbWFnZVJlZiAoKndrSU9TdXJmYWNlQ29udGV4dENyZWF0ZUltYWdl
KShDR0NvbnRleHRSZWYgY29udGV4dCk7Ci0KIGludCAoKndrUmVjb21tZW5kZWRTY3JvbGxlclN0
eWxlKSh2b2lkKTsKIAogYm9vbCAoKndrRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVTbm93
TGVvcGFyZCkodm9pZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggMGU2N2M4YjkxOTQyMWQ2NWEwMTAwOTAx
Mjg1NjIwOTljNGE5NjkyZi4uODFkYzZlODBhOWYxNjhlNmExNTYyNjVmM2Q0YzhjMTMyYWIyZGVh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVt
SW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5
c3RlbUludGVyZmFjZS5tbQpAQCAtMTI4LDEwICsxMjgsNiBAQCB2b2lkIEluaXRXZWJDb3JlU3lz
dGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgSU5JVChHZXRNZWRpYVVJSW1hZ2VEYXRhKTsKICNlbmRp
ZgogCi0jaWYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1IpCi0gICAgSU5JVChJT1N1cmZhY2VDb250
ZXh0Q3JlYXRlKTsKLSAgICBJTklUKElPU3VyZmFjZUNvbnRleHRDcmVhdGVJbWFnZSk7Ci0jZW5k
aWYKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIElOSVQoUmVjb21tZW5kZWRTY3JvbGxlclN0eWxl
KTsKICAgICBJTklUKEV4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQmVmb3JlU25vd0xlb3BhcmQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IGE2YTQ5YjYyYWM3OGU4Yjc5
MjkxMGUwNTQ1MzA3ODQwM2U3NDhkODEuLjhjMzU3YTNjNzQwY2IxM2EyNzkxNmM3NmU1ZWM3NTBi
Y2IyNjUwM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTExOSwx
MCArMTE5LDYgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgICAg
ICBJTklUKFNldE1ldGFkYXRhVVJMKTsKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCi0jaWYg
IVBMQVRGT1JNKElPU19TSU1VTEFUT1IpCi0gICAgICAgIElOSVQoSU9TdXJmYWNlQ29udGV4dENy
ZWF0ZSk7Ci0gICAgICAgIElOSVQoSU9TdXJmYWNlQ29udGV4dENyZWF0ZUltYWdlKTsKLSNlbmRp
ZiAvLyAhUExBVEZPUk0oSU9TX1NJTVVMQVRPUikKICNpZiAhUExBVEZPUk0oSU9TKQogICAgICAg
ICBJTklUKFJlY29tbWVuZGVkU2Nyb2xsZXJTdHlsZSk7CiAgICAgICAgIElOSVQoRXhlY3V0YWJs
ZVdhc0xpbmtlZE9uT3JCZWZvcmVTbm93TGVvcGFyZCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246835</attachid>
            <date>2015-02-18 12:06:44 -0800</date>
            <delta_ts>2015-02-18 13:49:49 -0800</delta_ts>
            <desc>Windows build fix</desc>
            <filename>bug-141751-20150218120637.patch</filename>
            <type>text/plain</type>
            <size>28147</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwMjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDA1NDA0YjkxMjU4YmVk
MzA5NTc5YjkyOTA3ZjJhZTM5OWYwM2VlMC4uYmM2MDYwMjYzZGM0YjZjOWQ1OTA0YTZkNWM4NmRk
ODRmZjg0MzVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE1LTAyLTE4ICBUaW1v
dGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBX
ZWJDb3JlOjpJT1N1cmZhY2UgaW4gSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTc1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJT1N1cmZhY2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgTWFr
ZSB1c2Ugb2YgY2FjaGVkQ0dDb2xvclNwYWNlLgorICAgICAgICBNYWtlIHVzZSBvZiBXZWJDb3Jl
OjpJT1N1cmZhY2UuCisgICAgICAgIFJlbW92ZSB0aGUgdW51c2VkIHNpemUgYXJndW1lbnQgZnJv
bSBJbWFnZUJ1ZmZlckRhdGFDRy4KKyAgICAgICAgQ2xlYXIgdGhlIElPU3VyZmFjZSBvbmNlIHdl
J3ZlIGFsbG9jYXRlZCBpdDsgV2ViQ29yZTo6SU9TdXJmYWNlIGRvZXNuJ3QKKyAgICAgICAgZG8g
dGhpcyBmb3IgdXMsIHVubGlrZSB3a0lPU3VyZmFjZUNvbnRleHRDcmVhdGUuCisgICAgICAgIEFw
cGx5IHRoZSBmbGlwcGluZyBhbmQgc2NhbGUgZmFjdG9yIHRvIHdoaWNoZXZlciBjb250ZXh0IHdl
IG1hZGUuCisgICAgICAgIFdlIGRvbid0IG5lZWQgdG8gc2V0SXNBY2NlbGVyYXRlZENvbnRleHQg
YW55bW9yZSBiZWNhdXNlIGl0J3MgYWx3YXlzCisgICAgICAgIGZhbHNlIGZvciBzb2Z0d2FyZSBj
b250ZXh0cywgYW5kIFdlYkNvcmU6OklPU3VyZmFjZSB3aWxsIHNldCBpdCBmb3IKKyAgICAgICAg
YW55IGFjY2VsZXJhdGVkIGNvbnRleHRzLgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cjo6Y29udGV4dCk6CisgICAgICAgIElmIHdlIGFyZSBJT1N1cmZhY2UtYmFja2VkLCByZXR1cm4g
V2ViQ29yZTo6SU9TdXJmYWNlJ3MgR3JhcGhpY3NDb250ZXh0LgorCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6Zmx1c2hDb250ZXh0KToKKyAgICAgICAgTWFrZSB1c2Ugb2YgY29udGV4
dCgpOyBtX2NvbnRleHQgaXMgbm93IG51bGwgZm9yIGFjY2VsZXJhdGVkIEltYWdlQnVmZmVycy4K
KworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZSk6CisgICAg
ICAgIEFkb3B0IGluLWxpbmUgd2l0aCB0aGUgQ3JlYXRlIGZ1bmN0aW9ucyBmb3IgY2xhcml0eS4g
TWFrZSB1c2Ugb2YKKyAgICAgICAgSU9TdXJmYWNlOjpjcmVhdGVJbWFnZSBpbnN0ZWFkIG9mIHdr
SU9TdXJmYWNlQ29udGV4dENyZWF0ZUltYWdlLgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdl
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjp0b0RhdGFVUkwpOgorICAgICAgICBNYWtlIHVz
ZSBvZiBjb250ZXh0KCk7IG1fY29udGV4dCBpcyBub3cgbnVsbCBmb3IgYWNjZWxlcmF0ZWQgSW1h
Z2VCdWZmZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJE
YXRhQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpJbWFnZUJ1ZmZl
ckRhdGEpOgorICAgICAgICBJbmRlbnRhdGlvbiBmaXgsIGFuZCB1c2UgbnVsbHB0ci4KKworICAg
ICAgICAoV2ViQ29yZTo6Y29udmVydFNjYW5saW5lKToKKyAgICAgICAgR3JhbW1hciBmaXggKGlz
IC0+IGFyZSkuCisKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGF0YTo6Z2V0RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEpOgorICAgICAgICBH
cmFiIHRoZSBJT1N1cmZhY2VSZWYgZnJvbSB0aGUgSU9TdXJmYWNlIHdyYXBwZXIuIEV2ZW50dWFs
bHkgdGhlc2UgdGhpbmdzCisgICAgICAgIHNob3VsZCBiZSBtYWRlIG1vcmUgY29udmVuaWVudCBi
eSB0aGUgd3JhcHBlci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyRGF0YUNHLmg6CisgICAgICAgIERyb3AgdGhlIHVudXNlZCBzaXplIGFyZ3VtZW50IGZyb20g
dGhlIGNvbnN0cnVjdG9yLgorICAgICAgICBSZW9yZ2FuaXplIGFuZCBsYWJlbCB0aGUgdmFyaW91
cyBtZW1iZXJzIHdoaWNoIGFyZSBvbmx5IHVzZWQKKyAgICAgICAgZm9yIGEgcGFydGljdWxhciB0
eXBlIG9mIEltYWdlQnVmZmVyRGF0YUNHLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvSU9TdXJmYWNlLm1tOgorICAgICAgICAoSU9TdXJmYWNlOjplbnN1cmVHcmFwaGljc0Nv
bnRleHQpOgorICAgICAgICBJT1N1cmZhY2UtYmFja2VkIEdyYXBoaWNzQ29udGV4dHMgYXJlIGFs
d2F5cyBjb25zaWRlcmVkIGFjY2VsZXJhdGVkLgorCisgICAgICAgIChJT1N1cmZhY2U6OmNyZWF0
ZSk6CisgICAgICAgIChJT1N1cmZhY2U6OklPU3VyZmFjZSk6CisgICAgICAgIEFkZCBhIGNvbnN0
cnVjdG9yIHRoYXQgdGFrZSBhbiBleHRyYSBzaXplIHRvIHVzZSB3aGVuIG1ha2luZyB0aGUgQ0dD
b250ZXh0OworICAgICAgICBpdCBjYW4gb25seSBiZSBsZXNzIHRoYW4gdGhlIGFjdHVhbCBiYWNr
aW5nIElPU3VyZmFjZSBzaXplLgorICAgICAgICBUaGlzIGlzIG5lZWRlZCBmb3IgcjE2MDEyMS4K
KworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIFJlbW92
ZSBvbGQgV0tTSSBJT1N1cmZhY2UtcmVsYXRlZCBmdW5jdGlvbnMuCisKIDIwMTUtMDItMTggIEFs
ZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2hlcyB1bmRl
ciBJREJEYXRhYmFzZTo6Y2xvc2VDb25uZWN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGUwZDBl
ZTBhZDM4YjdkOWI4YmE4ZjlhNDMzOWU3N2M1ZWRjMGQ2NjcuLmRjMjM0ZTg3ZTRmYTFjYzUwZmMw
OGE3ZjllNTRlN2Y5Nzk1YThlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxNS0wMi0xOCAgVGltb3RoeSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRvcHQgV2ViQ29yZTo6SU9TdXJmYWNlIGluIEltYWdlQnVmZmVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE3NTEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYlN5c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJm
YWNlKToKKyAgICAgICAgUmVtb3ZlIG9sZCBXS1NJIElPU3VyZmFjZS1yZWxhdGVkIGZ1bmN0aW9u
cy4KKwogMjAxNS0wMi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFjY2VzcyBNZW1vcnlQcmVzc3VyZUhhbmRsZXIgZ2xvYmFsIGluc3RhbmNlIHZpYSBhIHNp
bmdsZXRvbigpIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4ODIzOTExMDFj
Zjg4OWJlNjkwZTFlM2NkZDU0Yjc1YmRiMTA1OTVkLi5lZGRiNDFkMDAxN2I3NWI2ODYwNjM5YWY2
ZDZlMDFlM2JlYzZjZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTYgQEAKIDIwMTUtMDItMTgg
IFRpbW90aHkgSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCisgICAgICAgIEFk
b3B0IFdlYkNvcmU6OklPU3VyZmFjZSBpbiBJbWFnZUJ1ZmZlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxNzUxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUlu
dGVyZmFjZSk6CisgICAgICAgIFJlbW92ZSBvbGQgV0tTSSBJT1N1cmZhY2UtcmVsYXRlZCBmdW5j
dGlvbnMuCisKKzIwMTUtMDItMTggIFRpbW90aHkgSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBw
bGUuY29tPgorCiAgICAgICAgIEFkZCBXS0NvbnRleHQgU1BJIHRvIGNsZWFyIGFsbCB2aXNpdGVk
IGxpbmtzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDE3NTIKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzk5OTc5NjY+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IGY1
ODI1ZjUwNDJiZTEzMTZlZWNmOTA2ODE0MDkxY2M5OWMyMzNlZDAuLmU3ZjczZjVkOTJlYzE3ZWQ3
YmQwYWMzOWZmNmNiMzQ0Y2I4YWJiMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC01Nyw1NyArNTcsNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5H
X1NUT1JFKQotCi0vLyBGSVhNRTogQWRvcHQgV2ViQ29yZTo6SU9TdXJmYWNlLgotc3RhdGljIFJl
dGFpblB0cjxJT1N1cmZhY2VSZWY+IGNyZWF0ZUlPU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXpl
KQotewotICAgIHVuc2lnbmVkIHBpeGVsRm9ybWF0ID0gJ0JHUkEnOwotICAgIHVuc2lnbmVkIGJ5
dGVzUGVyRWxlbWVudCA9IDQ7Ci0gICAgaW50IHdpZHRoID0gc2l6ZS53aWR0aCgpOwotICAgIGlu
dCBoZWlnaHQgPSBzaXplLmhlaWdodCgpOwotCi0gICAgdW5zaWduZWQgbG9uZyBieXRlc1BlclJv
dyA9IElPU3VyZmFjZUFsaWduUHJvcGVydHkoa0lPU3VyZmFjZUJ5dGVzUGVyUm93LCBzaXplLndp
ZHRoKCkgKiBieXRlc1BlckVsZW1lbnQpOwotICAgIGlmICghYnl0ZXNQZXJSb3cpCi0gICAgICAg
IHJldHVybiAwOwotCi0gICAgdW5zaWduZWQgbG9uZyBhbGxvY1NpemUgPSBJT1N1cmZhY2VBbGln
blByb3BlcnR5KGtJT1N1cmZhY2VBbGxvY1NpemUsIHNpemUuaGVpZ2h0KCkgKiBieXRlc1BlclJv
dyk7Ci0gICAgaWYgKCFhbGxvY1NpemUpCi0gICAgICAgIHJldHVybiAwOwotCi0jaWYgIVBMQVRG
T1JNKElPUykKLSAgICBjb25zdCB2b2lkKiBrZXlzWzZdOwotICAgIGNvbnN0IHZvaWQqIHZhbHVl
c1s2XTsKLSNlbHNlCi0gICAgY29uc3Qgdm9pZCoga2V5c1s3XTsKLSAgICBjb25zdCB2b2lkKiB2
YWx1ZXNbN107Ci0jZW5kaWYKLSAgICBrZXlzWzBdID0ga0lPU3VyZmFjZVdpZHRoOwotICAgIHZh
bHVlc1swXSA9IENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUsICZ3aWR0aCk7Ci0g
ICAga2V5c1sxXSA9IGtJT1N1cmZhY2VIZWlnaHQ7Ci0gICAgdmFsdWVzWzFdID0gQ0ZOdW1iZXJD
cmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJmhlaWdodCk7Ci0gICAga2V5c1syXSA9IGtJT1N1
cmZhY2VQaXhlbEZvcm1hdDsKLSAgICB2YWx1ZXNbMl0gPSBDRk51bWJlckNyZWF0ZSgwLCBrQ0ZO
dW1iZXJJbnRUeXBlLCAmcGl4ZWxGb3JtYXQpOwotICAgIGtleXNbM10gPSBrSU9TdXJmYWNlQnl0
ZXNQZXJFbGVtZW50OwotICAgIHZhbHVlc1szXSA9IENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJl
ckludFR5cGUsICZieXRlc1BlckVsZW1lbnQpOwotICAgIGtleXNbNF0gPSBrSU9TdXJmYWNlQnl0
ZXNQZXJSb3c7Ci0gICAgdmFsdWVzWzRdID0gQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyTG9u
Z1R5cGUsICZieXRlc1BlclJvdyk7Ci0gICAga2V5c1s1XSA9IGtJT1N1cmZhY2VBbGxvY1NpemU7
Ci0gICAgdmFsdWVzWzVdID0gQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyTG9uZ1R5cGUsICZh
bGxvY1NpemUpOwotI2lmIFBMQVRGT1JNKElPUykKLSAgICBrZXlzWzZdID0ga0lPU3VyZmFjZUNh
Y2hlTW9kZTsKLSAgICBpbnQgY2FjaGVNb2RlID0ga0lPTWFwV3JpdGVDb21iaW5lQ2FjaGU7Ci0g
ICAgdmFsdWVzWzZdID0gQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJmNhY2hl
TW9kZSk7Ci0jZW5kaWYKLQotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGRpY3QgPSBh
ZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZSgwLCBrZXlzLCB2YWx1ZXMsIFdURl9BUlJBWV9MRU5H
VEgodmFsdWVzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rp
b25hcnlWYWx1ZUNhbGxCYWNrcykpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZf
QVJSQVlfTEVOR1RIKHZhbHVlcyk7ICsraSkKLSAgICAgICAgQ0ZSZWxlYXNlKHZhbHVlc1tpXSk7
Ci0KLSAgICByZXR1cm4gYWRvcHRDRihJT1N1cmZhY2VDcmVhdGUoZGljdC5nZXQoKSkpOwotfQot
I2VuZGlmCi0KIHN0YXRpYyB2b2lkIHJlbGVhc2VJbWFnZURhdGEodm9pZCosIGNvbnN0IHZvaWQq
IGRhdGEsIHNpemVfdCkKIHsKICAgICBmYXN0RnJlZShjb25zdF9jYXN0PHZvaWQqPihkYXRhKSk7
CkBAIC0xMjEsOCArNzAsNyBAQCBzdGF0aWMgRmxvYXRTaXplIHNjYWxlU2l6ZVRvVXNlclNwYWNl
KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpegogfQogCiBJbWFnZUJ1
ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIENvbG9yU3BhY2UgaW1hZ2VDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUsIGJvb2wmIHN1Y2Nlc3MpCi0gICAgOiBtX2RhdGEoSW50U2l6ZShzaXplKSkgLy8gTk9U
RTogVGhlIGlucHV0IGhlcmUgaXNuJ3QgaW1wb3J0YW50IGFzIEltYWdlQnVmZmVyRGF0YUNHJ3Mg
Y29uc3RydWN0b3IganVzdCBpZ25vcmVzIGl0LgotICAgICwgbV9sb2dpY2FsU2l6ZShzaXplKQor
ICAgIDogbV9sb2dpY2FsU2l6ZShzaXplKQogICAgICwgbV9yZXNvbHV0aW9uU2NhbGUocmVzb2x1
dGlvblNjYWxlKQogewogICAgIGZsb2F0IHNjYWxlZFdpZHRoID0gY2VpbGYocmVzb2x1dGlvblNj
YWxlICogc2l6ZS53aWR0aCgpKTsKQEAgLTE1OSwyNSArMTA3LDE4IEBAIEltYWdlQnVmZmVyOjpJ
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Q29sb3JTcGFjCiAgICAgQVNTRVJUKHJlbmRlcmluZ01vZGUgPT0gVW5hY2NlbGVyYXRlZCk7CiAj
ZW5kaWYKIAotICAgIHN3aXRjaCAoaW1hZ2VDb2xvclNwYWNlKSB7Ci0gICAgY2FzZSBDb2xvclNw
YWNlRGV2aWNlUkdCOgotICAgICAgICBtX2RhdGEubV9jb2xvclNwYWNlID0gZGV2aWNlUkdCQ29s
b3JTcGFjZVJlZigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENvbG9yU3BhY2VTUkdCOgot
ICAgICAgICBtX2RhdGEubV9jb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDb2xvclNwYWNlTGluZWFyUkdCOgotICAgICAgICBtX2RhdGEu
bV9jb2xvclNwYWNlID0gbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpOwotICAgICAgICBicmVhazsK
LSAgICB9CisgICAgbV9kYXRhLm1fY29sb3JTcGFjZSA9IGNhY2hlZENHQ29sb3JTcGFjZShpbWFn
ZUNvbG9yU3BhY2UpOwogCiAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY2dDb250ZXh0Owog
ICAgIGlmIChhY2NlbGVyYXRlUmVuZGVyaW5nKSB7CiAjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNf
QkFDS0lOR19TVE9SRSkKLSAgICAgICAgbV9kYXRhLm1fc3VyZmFjZSA9IGNyZWF0ZUlPU3VyZmFj
ZShtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplKTsKICAgICAgICAgRmxvYXRTaXplIHVzZXJCb3Vu
ZHMgPSBzY2FsZVNpemVUb1VzZXJTcGFjZShGbG9hdFNpemUod2lkdGgudW5zYWZlR2V0KCksIGhl
aWdodC51bnNhZmVHZXQoKSksIG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUsIG1fc2l6ZSk7Ci0g
ICAgICAgIGNnQ29udGV4dCA9IGFkb3B0Q0Yod2tJT1N1cmZhY2VDb250ZXh0Q3JlYXRlKG1fZGF0
YS5tX3N1cmZhY2UuZ2V0KCksIHVzZXJCb3VuZHMud2lkdGgoKSwgdXNlckJvdW5kcy5oZWlnaHQo
KSwgbV9kYXRhLm1fY29sb3JTcGFjZSkpOworICAgICAgICBtX2RhdGEubV9zdXJmYWNlID0gSU9T
dXJmYWNlOjpjcmVhdGUobV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZSwgSW50U2l6ZSh1c2VyQm91
bmRzKSwgaW1hZ2VDb2xvclNwYWNlKTsKKyAgICAgICAgY2dDb250ZXh0ID0gbV9kYXRhLm1fc3Vy
ZmFjZS0+ZW5zdXJlUGxhdGZvcm1Db250ZXh0KCk7CisgICAgICAgIGlmIChjZ0NvbnRleHQpCisg
ICAgICAgICAgICBDR0NvbnRleHRDbGVhclJlY3QoY2dDb250ZXh0LmdldCgpLCBGbG9hdFJlY3Qo
RmxvYXRQb2ludCgpLCB1c2VyQm91bmRzKSk7CiAjZW5kaWYKKwogICAgICAgICBpZiAoIWNnQ29u
dGV4dCkKICAgICAgICAgICAgIGFjY2VsZXJhdGVSZW5kZXJpbmcgPSBmYWxzZTsgLy8gSWYgYWxs
b2NhdGlvbiBmYWlscywgZmFsbCBiYWNrIHRvIG5vbi1hY2NlbGVyYXRlZCBwYXRoLgogICAgIH0K
QEAgLTE5NSwxNiArMTM2LDE3IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjCiAgICAgICAgIGNn
Q29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKG1fZGF0YS5tX2RhdGEsIG1f
ZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUud2lkdGgoKSwgbV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6
ZS5oZWlnaHQoKSwgOCwgbV9kYXRhLm1fYnl0ZXNQZXJSb3cudW5zYWZlR2V0KCksIG1fZGF0YS5t
X2NvbG9yU3BhY2UsIG1fZGF0YS5tX2JpdG1hcEluZm8pKTsKICAgICAgICAgLy8gQ3JlYXRlIGEg
bGl2ZSBpbWFnZSB0aGF0IHdyYXBzIHRoZSBkYXRhLgogICAgICAgICBtX2RhdGEubV9kYXRhUHJv
dmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEoMCwgbV9kYXRhLm1f
ZGF0YSwgbnVtQnl0ZXMudW5zYWZlR2V0KCksIHJlbGVhc2VJbWFnZURhdGEpKTsKKworICAgICAg
ICBpZiAoIWNnQ29udGV4dCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2NvbnRl
eHQgPSBhZG9wdFB0cihuZXcgR3JhcGhpY3NDb250ZXh0KGNnQ29udGV4dC5nZXQoKSkpOwogICAg
IH0KIAotICAgIGlmICghY2dDb250ZXh0KQotICAgICAgICByZXR1cm47CisgICAgY29udGV4dCgp
LT5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKyAgICBjb250ZXh0KCktPnRyYW5zbGF0ZSgwLCAt
bV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSk7CisgICAgY29udGV4dCgpLT5hcHBs
eURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlvblNjYWxlKTsKIAotICAgIG1fY29udGV4dCA9
IGFkb3B0UHRyKG5ldyBHcmFwaGljc0NvbnRleHQoY2dDb250ZXh0LmdldCgpKSk7Ci0gICAgbV9j
b250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKLSAgICBtX2NvbnRleHQtPnRyYW5zbGF0
ZSgwLCAtbV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSk7Ci0gICAgbV9jb250ZXh0
LT5hcHBseURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlvblNjYWxlKTsKLSAgICBtX2NvbnRl
eHQtPnNldElzQWNjZWxlcmF0ZWRDb250ZXh0KGFjY2VsZXJhdGVSZW5kZXJpbmcpOwogICAgIHN1
Y2Nlc3MgPSB0cnVlOwogfQogCkBAIC0yMTQsMTIgKzE1NiwxNiBAQCBJbWFnZUJ1ZmZlcjo6fklt
YWdlQnVmZmVyKCkKIAogR3JhcGhpY3NDb250ZXh0KiBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNv
bnN0CiB7CisjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKKyAgICBpZiAo
bV9kYXRhLm1fc3VyZmFjZSkKKyAgICAgICAgcmV0dXJuICZtX2RhdGEubV9zdXJmYWNlLT5lbnN1
cmVHcmFwaGljc0NvbnRleHQoKTsKKyNlbmRpZgogICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7
CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmZsdXNoQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgQ0dD
b250ZXh0Rmx1c2gobV9jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgQ0dDb250ZXh0
Rmx1c2goY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKSk7CiB9CiAKIHN0YXRpYyBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoQ0dJbWFnZVJlZiBp
bWFnZSwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQpAQCAtMjYzLDE0ICsyMDksMTQgQEAgQmFja2lu
Z1N0b3JlQ29weSBJbWFnZUJ1ZmZlcjo6ZmFzdENvcHlJbWFnZU1vZGUoKQogCiBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5
IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKLSAgICBDR0ltYWdlUmVmIGltYWdlID0gMDsKLSAgICBp
ZiAoIW1fY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkgeworICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBpbWFnZTsKKyAgICBpZiAoIWNvbnRleHQoKS0+aXNBY2NlbGVyYXRlZENvbnRl
eHQoKSkgewogICAgICAgICBzd2l0Y2ggKGNvcHlCZWhhdmlvcikgewogICAgICAgICBjYXNlIERv
bnRDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICAgICAgaW1hZ2UgPSBDR0ltYWdlQ3JlYXRlKG1f
ZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUud2lkdGgoKSwgbV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6
ZS5oZWlnaHQoKSwgOCwgMzIsIG1fZGF0YS5tX2J5dGVzUGVyUm93LnVuc2FmZUdldCgpLCBtX2Rh
dGEubV9jb2xvclNwYWNlLCBtX2RhdGEubV9iaXRtYXBJbmZvLCBtX2RhdGEubV9kYXRhUHJvdmlk
ZXIuZ2V0KCksIDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpOworICAgICAgICAg
ICAgaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUobV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6
ZS53aWR0aCgpLCBtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLmhlaWdodCgpLCA4LCAzMiwgbV9k
YXRhLm1fYnl0ZXNQZXJSb3cudW5zYWZlR2V0KCksIG1fZGF0YS5tX2NvbG9yU3BhY2UsIG1fZGF0
YS5tX2JpdG1hcEluZm8sIG1fZGF0YS5tX2RhdGFQcm92aWRlci5nZXQoKSwgMCwgdHJ1ZSwga0NH
UmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ29weUJhY2tpbmdTdG9yZToKLSAgICAgICAgICAgIGltYWdlID0gQ0dCaXRtYXBDb250ZXh0
Q3JlYXRlSW1hZ2UoY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgICAgICAgICBp
bWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dCgpLT5wbGF0
Zm9ybUNvbnRleHQoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI3OSwxOSArMjI1LDE5IEBAIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZUJ1ZmZlcjo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdT
dG9yZUNvcHkgY29weUJlaGF2aW9yCiAgICAgfQogI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JB
Q0tJTkdfU1RPUkUpCiAgICAgZWxzZQotICAgICAgICBpbWFnZSA9IHdrSU9TdXJmYWNlQ29udGV4
dENyZWF0ZUltYWdlKGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCkpOworICAgICAgICBpbWFn
ZSA9IG1fZGF0YS5tX3N1cmZhY2UtPmNyZWF0ZUltYWdlKCk7CiAjZW5kaWYKIAotICAgIHJldHVy
biBhZG9wdENGKGltYWdlKTsKKyAgICByZXR1cm4gaW1hZ2U7CiB9CiAKIHZvaWQgSW1hZ2VCdWZm
ZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBkZXN0Q29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIGJvb2wgdXNl
TG93UXVhbGl0eVNjYWxlKQogewogICAgIFVOVVNFRF9QQVJBTSh1c2VMb3dRdWFsaXR5U2NhbGUp
OwotICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IChkZXN0Q29udGV4dCA9PSBtX2NvbnRleHQp
ID8gQ29sb3JTcGFjZURldmljZVJHQiA6IHN0eWxlQ29sb3JTcGFjZTsKKyAgICBDb2xvclNwYWNl
IGNvbG9yU3BhY2UgPSAoZGVzdENvbnRleHQgPT0gY29udGV4dCgpKSA/IENvbG9yU3BhY2VEZXZp
Y2VSR0IgOiBzdHlsZUNvbG9yU3BhY2U7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1h
Z2U7Ci0gICAgaWYgKGRlc3RDb250ZXh0ID09IG1fY29udGV4dCB8fCBkZXN0Q29udGV4dC0+aXNB
Y2NlbGVyYXRlZENvbnRleHQoKSkKKyAgICBpZiAoZGVzdENvbnRleHQgPT0gY29udGV4dCgpIHx8
IGRlc3RDb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQogICAgICAgICBpbWFnZSA9IGNv
cHlOYXRpdmVJbWFnZShDb3B5QmFja2luZ1N0b3JlKTsgLy8gRHJhd2luZyBpbnRvIG91ciBvd24g
YnVmZmVyLCBuZWVkIHRvIGRlZXAgY29weS4KICAgICBlbHNlCiAgICAgICAgIGltYWdlID0gY29w
eU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKQEAgLTMwNiw4ICsyNTIsOCBAQCB2
b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHNyYwogICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBz
cmNSZWN0OwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSwgbV9y
ZXNvbHV0aW9uU2NhbGUpOwogCi0gICAgaWYgKCFtX2NvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250
ZXh0KCkpIHsKLSAgICAgICAgaWYgKGRlc3RDb250ZXh0ID09IG1fY29udGV4dCB8fCBkZXN0Q29u
dGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkgeworICAgIGlmICghY29udGV4dCgpLT5pc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpKSB7CisgICAgICAgIGlmIChkZXN0Q29udGV4dCA9PSBjb250ZXh0
KCkgfHwgZGVzdENvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKICAgICAgICAgICAg
IFJlZlB0cjxJbWFnZT4gY29weSA9IGNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKTsgLy8gRHJh
d2luZyBpbnRvIG91ciBvd24gYnVmZmVyLCBuZWVkIHRvIGRlZXAgY29weS4KICAgICAgICAgICAg
IGNvcHktPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5U
cmFuc2Zvcm0sIHBoYXNlLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2Rl
KTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTMzNywzMSArMjgzLDMxIEBAIHZvaWQgSW1hZ2VCdWZm
ZXI6OmNsaXAoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0VG9DbGlwLCBjb25zdCBGbG9hdFJlY3Qm
IHJlY3QpIGNvCiAKIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpn
ZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5
c3RlbSBjb29yZGluYXRlU3lzdGVtKSBjb25zdAogewotICAgIGlmIChtX2NvbnRleHQtPmlzQWNj
ZWxlcmF0ZWRDb250ZXh0KCkpCisgICAgaWYgKGNvbnRleHQoKS0+aXNBY2NlbGVyYXRlZENvbnRl
eHQoKSkKICAgICAgICAgZmx1c2hDb250ZXh0KCk7CiAKICAgICBJbnRSZWN0IHNyY1JlY3QgPSBy
ZWN0OwogICAgIGlmIChjb29yZGluYXRlU3lzdGVtID09IExvZ2ljYWxDb29yZGluYXRlU3lzdGVt
KQogICAgICAgICBzcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKIAotICAgIHJldHVy
biBtX2RhdGEuZ2V0RGF0YShzcmNSZWN0LCBpbnRlcm5hbFNpemUoKSwgbV9jb250ZXh0LT5pc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpLCB0cnVlLCAxKTsKKyAgICByZXR1cm4gbV9kYXRhLmdldERhdGEo
c3JjUmVjdCwgaW50ZXJuYWxTaXplKCksIGNvbnRleHQoKS0+aXNBY2NlbGVyYXRlZENvbnRleHQo
KSwgdHJ1ZSwgMSk7CiB9CiAKIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVm
ZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3Jk
aW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKLSAgICBpZiAobV9jb250ZXh0
LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQorICAgIGlmIChjb250ZXh0KCktPmlzQWNjZWxlcmF0
ZWRDb250ZXh0KCkpCiAgICAgICAgIGZsdXNoQ29udGV4dCgpOwogCiAgICAgSW50UmVjdCBzcmNS
ZWN0ID0gcmVjdDsKICAgICBpZiAoY29vcmRpbmF0ZVN5c3RlbSA9PSBMb2dpY2FsQ29vcmRpbmF0
ZVN5c3RlbSkKICAgICAgICAgc3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CiAKLSAg
ICByZXR1cm4gbV9kYXRhLmdldERhdGEoc3JjUmVjdCwgaW50ZXJuYWxTaXplKCksIG1fY29udGV4
dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSwgZmFsc2UsIDEpOworICAgIHJldHVybiBtX2RhdGEu
Z2V0RGF0YShzcmNSZWN0LCBpbnRlcm5hbFNpemUoKSwgY29udGV4dCgpLT5pc0FjY2VsZXJhdGVk
Q29udGV4dCgpLCBmYWxzZSwgMSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJh
eShNdWx0aXBseSBtdWx0aXBsaWVkLCBVaW50OENsYW1wZWRBcnJheSogc291cmNlLCBjb25zdCBJ
bnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQ
b2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pCiB7Ci0g
ICAgaWYgKCFtX2NvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKKyAgICBpZiAoIWNv
bnRleHQoKS0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICBJbnRSZWN0IHNjYWxl
ZFNvdXJjZVJlY3QgPSBzb3VyY2VSZWN0OwogICAgICAgICBJbnRTaXplIHNjYWxlZFNvdXJjZVNp
emUgPSBzb3VyY2VTaXplOwogICAgICAgICBpZiAoY29vcmRpbmF0ZVN5c3RlbSA9PSBMb2dpY2Fs
Q29vcmRpbmF0ZVN5c3RlbSkgewpAQCAtNDg0LDcgKzQzMCw3IEBAIFN0cmluZyBJbWFnZUJ1ZmZl
cjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJsZSogcXVhbGl0
eSwgQ29vCiB7CiAgICAgQVNTRVJUKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZUZvckVuY29kaW5nKG1pbWVUeXBlKSk7CiAKLSAgICBpZiAobV9jb250ZXh0LT5pc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpKQorICAgIGlmIChjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250
ZXh0KCkpCiAgICAgICAgIGZsdXNoQ29udGV4dCgpOwogCiAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiB1dGkgPSB1dGlGcm9tTUlNRVR5cGUobWltZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCmlu
ZGV4IDgyMmJlN2ZkNjMxYmY0MmFlYzJkMmI4NzYxMjY4OTM3ZGE3YWU2NDkuLmFkM2ZlZDZkMWNm
MmNhMTZmOGIzMzY4YzcyZjlhZWZlMDQzOGFiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKQEAgLTM1
LDYgKzM1LDcgQEAKICNlbmRpZgogCiAjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19T
VE9SRSkKKyNpbmNsdWRlICJJT1N1cmZhY2UuaCIKICNpbmNsdWRlICJJT1N1cmZhY2VTUEkuaCIK
ICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2VuZGlmCkBAIC01NCwxMCArNTUsMTAg
QEAgc3RydWN0IFNjYW5saW5lRGF0YSB7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW1hZ2VC
dWZmZXJEYXRhOjpJbWFnZUJ1ZmZlckRhdGEoY29uc3QgSW50U2l6ZSYpCi06IG1fZGF0YSgwKQor
SW1hZ2VCdWZmZXJEYXRhOjpJbWFnZUJ1ZmZlckRhdGEoKQorICAgIDogbV9kYXRhKG51bGxwdHIp
CiAjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKLSwgbV9zdXJmYWNlKDAp
CisgICAgLCBtX3N1cmZhY2UobnVsbHB0cikKICNlbmRpZgogewogfQpAQCAtODksNyArOTAsNyBA
QCBzdGF0aWMgdm9pZCBjb252ZXJ0U2NhbmxpbmUodm9pZCogZGF0YSwgc2l6ZV90IHRpbGVOdW1i
ZXIsIGJvb2wgcHJlbXVsdGlwbHkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
Ly8gU3dhcCBjaGFubmVscyAxIGFuZCAzLCB0byBjb252ZXJ0IEJHUkE8LT5SR0JBLiBJT1N1cmZh
Y2VzIGlzIEJHUkEsIEltYWdlRGF0YSBleHBlY3RzIFJHQkEuCisgICAgLy8gU3dhcCBjaGFubmVs
cyAxIGFuZCAzLCB0byBjb252ZXJ0IEJHUkE8LT5SR0JBLiBJT1N1cmZhY2VzIGFyZSBCR1JBLCBJ
bWFnZURhdGEgZXhwZWN0cyBSR0JBLgogICAgIGNvbnN0IHVpbnQ4X3QgbWFwWzRdID0geyAyLCAx
LCAwLCAzIH07CiAgICAgdkltYWdlUGVybXV0ZUNoYW5uZWxzX0FSR0I4ODg4KCZkZXN0LCAmZGVz
dCwgbWFwLCBrdkltYWdlRG9Ob3RUaWxlKTsKIH0KQEAgLTI2OSw3ICsyNzAsOCBAQCBQYXNzUmVm
UHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlckRhdGE6OmdldERhdGEoY29uc3QgSW50
UmVjdCYgcmVjdCwgY29ucwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICNpZiBVU0UoSU9TVVJG
QUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQotICAgICAgICBJT1N1cmZhY2VSZWYgc3VyZmFjZSA9
IG1fc3VyZmFjZS5nZXQoKTsKKyAgICAgICAgLy8gRklYTUU6IFdlYkNvcmU6OklPU3VyZmFjZSBz
aG91bGQgaGF2ZSBhIGxvY2tpbmcgUkFJSSBvYmplY3QgYW5kIGJhc2UtYWRkcmVzcyBnZXR0ZXIu
CisgICAgICAgIElPU3VyZmFjZVJlZiBzdXJmYWNlID0gbV9zdXJmYWNlLT5zdXJmYWNlKCk7CiAg
ICAgICAgIElPU3VyZmFjZUxvY2soc3VyZmFjZSwga0lPU3VyZmFjZUxvY2tSZWFkT25seSwgMCk7
CiAgICAgICAgIHNyY0J5dGVzUGVyUm93ID0gSU9TdXJmYWNlR2V0Qnl0ZXNQZXJSb3coc3VyZmFj
ZSk7CiAgICAgICAgIHNyY1Jvd3MgPSAodW5zaWduZWQgY2hhciopKElPU3VyZmFjZUdldEJhc2VB
ZGRyZXNzKHN1cmZhY2UpKSArIG9yaWdpbnkgKiBzcmNCeXRlc1BlclJvdyArIG9yaWdpbnggKiA0
OwpAQCAtNTEzLDcgKzUxNSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKFVpbnQ4
Q2xhbXBlZEFycmF5KiYgc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTCiAgICAgICAgIH0K
ICAgICB9IGVsc2UgewogI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCi0g
ICAgICAgIElPU3VyZmFjZVJlZiBzdXJmYWNlID0gbV9zdXJmYWNlLmdldCgpOworICAgICAgICBJ
T1N1cmZhY2VSZWYgc3VyZmFjZSA9IG1fc3VyZmFjZS0+c3VyZmFjZSgpOwogICAgICAgICBJT1N1
cmZhY2VMb2NrKHN1cmZhY2UsIDAsIDApOwogICAgICAgICBkZXN0Qnl0ZXNQZXJSb3cgPSBJT1N1
cmZhY2VHZXRCeXRlc1BlclJvdyhzdXJmYWNlKTsKICAgICAgICAgZGVzdFJvd3MgPSAodW5zaWdu
ZWQgY2hhciopKElPU3VyZmFjZUdldEJhc2VBZGRyZXNzKHN1cmZhY2UpKSArIChkZXN0eSAqIGRl
c3RCeXRlc1BlclJvdyArIGRlc3R4ICogNCkudW5zYWZlR2V0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaAppbmRl
eCBmMzYxMzVhNzA2YWEyNjdlNWVkYzVjMzhjZDZlYTczZDYzZGNiMmFlLi4xZDIzZDQwM2NhNDVl
Nzk2ZmZkZjBlOGVjZDNkNDQ5NmQ4NTNlNGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmgKQEAgLTQzLDIwICs0
MywyNCBAQCB0eXBlZGVmIHVpbnQzMl90IENHQml0bWFwSW5mbzsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBJT1N1cmZhY2U7CiBjbGFzcyBJbnRTaXplOwogCiBjbGFzcyBJbWFnZUJ1
ZmZlckRhdGEgewogcHVibGljOgotICAgIEltYWdlQnVmZmVyRGF0YShjb25zdCBJbnRTaXplJik7
CisgICAgSW1hZ2VCdWZmZXJEYXRhKCk7CiAKKyAgICBJbnRTaXplIG1fYmFja2luZ1N0b3JlU2l6
ZTsKKyAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gbV9ieXRlc1BlclJvdzsK
KyAgICBDR0NvbG9yU3BhY2VSZWYgbV9jb2xvclNwYWNlOworCisgICAgLy8gT25seSBmb3IgU29m
dHdhcmUgSW1hZ2VCdWZmZXJzLgogICAgIHZvaWQqIG1fZGF0YTsKLSAgICAKICAgICBSZXRhaW5Q
dHI8Q0dEYXRhUHJvdmlkZXJSZWY+IG1fZGF0YVByb3ZpZGVyOwogICAgIENHQml0bWFwSW5mbyBt
X2JpdG1hcEluZm87Ci0gICAgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IG1fYnl0
ZXNQZXJSb3c7Ci0gICAgQ0dDb2xvclNwYWNlUmVmIG1fY29sb3JTcGFjZTsKLSAgICBSZXRhaW5Q
dHI8SU9TdXJmYWNlUmVmPiBtX3N1cmZhY2U7Ci0gICAgSW50U2l6ZSBtX2JhY2tpbmdTdG9yZVNp
emU7CisKKyAgICAvLyBPbmx5IGZvciBBY2NlbGVyYXRlZCBJbWFnZUJ1ZmZlcnMuCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9zdXJmYWNlOwogCiAgICAgUGFzc1JlZlB0cjxVaW50
OENsYW1wZWRBcnJheT4gZ2V0RGF0YShjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIGJv
b2wgYWNjZWxlcmF0ZVJlbmRlcmluZywgYm9vbCB1bm11bHRpcGxpZWQsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSkgY29uc3Q7CiAgICAgdm9pZCBwdXREYXRhKFVpbnQ4Q2xhbXBlZEFycmF5KiYgc291
cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBJbnRTaXplJiwgYm9vbCBhY2NlbGVy
YXRlUmVuZGVyaW5nLCBib29sIHVubXVsdGlwbGllZCwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNl
LmgKaW5kZXggMGQxMzJmZTZkNjM0YmYzMmUyNjMyNTlhYzk4M2UyZjgwYjE1NmZmMC4uZTc1MmEy
NmM0MWRmZjBjNWJhYTFlZmI4MGVlNTU2MDQxYmM2ZDMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgKQEAgLTM5LDYgKzM5LDcg
QEAgY2xhc3MgTWFjaFNlbmRSaWdodDsKIGNsYXNzIElPU3VyZmFjZSBmaW5hbCB7CiBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNy
ZWF0ZShJbnRTaXplLCBDb2xvclNwYWNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlKEludFNpemUsIEludFNpemUgY29udGV4dFNp
emUsIENvbG9yU3BhY2UpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8SU9TdXJmYWNlPiBjcmVhdGVGcm9tU2VuZFJpZ2h0KGNvbnN0IE1hY2hTZW5kUmlnaHQmLCBD
b2xvclNwYWNlKTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRl
RnJvbVN1cmZhY2UoSU9TdXJmYWNlUmVmLCBDb2xvclNwYWNlKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbUltYWdlKENHSW1h
Z2VSZWYpOwpAQCAtODEsMTAgKzgyLDEyIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBJT1N1
cmZhY2UoSW50U2l6ZSwgQ29sb3JTcGFjZSk7CisgICAgSU9TdXJmYWNlKEludFNpemUsIEludFNp
emUgY29udGV4dFNpemUsIENvbG9yU3BhY2UpOwogICAgIElPU3VyZmFjZShJT1N1cmZhY2VSZWYs
IENvbG9yU3BhY2UpOwogCiAgICAgQ29sb3JTcGFjZSBtX2NvbG9yU3BhY2U7CiAgICAgSW50U2l6
ZSBtX3NpemU7CisgICAgSW50U2l6ZSBtX2NvbnRleHRTaXplOwogICAgIHNpemVfdCBtX3RvdGFs
Qnl0ZXM7CiAKICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBtX2dyYXBoaWNzQ29udGV4dDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFj
ZS5tbQppbmRleCA1YzRjZTJlYjc4ZTg2YmZlZjFhODZhNmRhZDhiZTc3NWNkNTE2OTEwLi4yODdj
NzRkNTg5YWQ0ZTI2MDE5ODAwZDQxYzNhNmE5NmMwMjI4ZjZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCkBAIC00OCw2ICs0
OCwxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZShJbnRT
aXplIHNpemUsIENvbG9yU3BhY2UgY29sb3JTcGFjZQogICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8SU9TdXJmYWNlPihuZXcgSU9TdXJmYWNlKHNpemUsIGNvbG9yU3BhY2UpKTsKIH0KIAorc3Rk
Ojp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGUoSW50U2l6ZSBzaXplLCBJ
bnRTaXplIGNvbnRleHRTaXplLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit7CisgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIHB1bGwgc3VyZmFjZXMgb3V0IG9mIHRoZSBJT1N1cmZh
Y2VQb29sIGFuZCBhZGp1c3QgdGhlaXIgY29udGV4dFNpemUuCisgICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxJT1N1cmZhY2U+KG5ldyBJT1N1cmZhY2Uoc2l6ZSwgY29udGV4dFNpemUsIGNvbG9y
U3BhY2UpKTsKK30KKwogc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVh
dGVGcm9tU2VuZFJpZ2h0KGNvbnN0IE1hY2hTZW5kUmlnaHQmIHNlbmRSaWdodCwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlKQogewogICAgIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IHN1cmZhY2UgPSBh
ZG9wdENGKElPU3VyZmFjZUxvb2t1cEZyb21NYWNoUG9ydChzZW5kUmlnaHQuc2VuZFJpZ2h0KCkp
KTsKQEAgLTc4LDYgKzg0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNl
OjpjcmVhdGVGcm9tSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZSkKIElPU3VyZmFjZTo6SU9TdXJmYWNl
KEludFNpemUgc2l6ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogICAgIDogbV9jb2xvclNwYWNl
KGNvbG9yU3BhY2UpCiAgICAgLCBtX3NpemUoc2l6ZSkKKyAgICAsIG1fY29udGV4dFNpemUoc2l6
ZSkKIHsKICAgICB1bnNpZ25lZCBwaXhlbEZvcm1hdCA9ICdCR1JBJzsKICAgICB1bnNpZ25lZCBi
eXRlc1BlckVsZW1lbnQgPSA0OwpAQCAtMTA1LDYgKzExMiwxNCBAQCBJT1N1cmZhY2U6OklPU3Vy
ZmFjZShJbnRTaXplIHNpemUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKICAgICBtX3N1cmZhY2Ug
PSBhZG9wdENGKElPU3VyZmFjZUNyZWF0ZSgoQ0ZEaWN0aW9uYXJ5UmVmKW9wdGlvbnMpKTsKIH0K
IAorSU9TdXJmYWNlOjpJT1N1cmZhY2UoSW50U2l6ZSBzaXplLCBJbnRTaXplIGNvbnRleHRTaXpl
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCisgICAgOiBJT1N1cmZhY2Uoc2l6ZSwgY29sb3JTcGFj
ZSkKK3sKKyAgICBBU1NFUlQoY29udGV4dFNpemUud2lkdGgoKSA8PSBzaXplLndpZHRoKCkpOwor
ICAgIEFTU0VSVChjb250ZXh0U2l6ZS5oZWlnaHQoKSA8PSBzaXplLmhlaWdodCgpKTsKKyAgICBt
X2NvbnRleHRTaXplID0gY29udGV4dFNpemU7Cit9CisKIElPU3VyZmFjZTo6SU9TdXJmYWNlKElP
U3VyZmFjZVJlZiBzdXJmYWNlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiAgICAgOiBtX2NvbG9y
U3BhY2UoY29sb3JTcGFjZSkKICAgICAsIG1fc3VyZmFjZShzdXJmYWNlKQpAQCAtMTM2LDcgKzE1
MSw3IEBAIENHQ29udGV4dFJlZiBJT1N1cmZhY2U6OmVuc3VyZVBsYXRmb3JtQ29udGV4dCgpCiAg
ICAgQ0dCaXRtYXBJbmZvIGJpdG1hcEluZm8gPSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZp
cnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0OwogICAgIHNpemVfdCBiaXRzUGVyQ29tcG9u
ZW50ID0gODsKICAgICBzaXplX3QgYml0c1BlclBpeGVsID0gMzI7Ci0gICAgbV9jZ0NvbnRleHQg
PSBhZG9wdENGKENHSU9TdXJmYWNlQ29udGV4dENyZWF0ZShtX3N1cmZhY2UuZ2V0KCksIG1fc2l6
ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIGJpdHNQZXJDb21wb25lbnQsIGJpdHNQZXJQaXhl
bCwgY2FjaGVkQ0dDb2xvclNwYWNlKG1fY29sb3JTcGFjZSksIGJpdG1hcEluZm8pKTsKKyAgICBt
X2NnQ29udGV4dCA9IGFkb3B0Q0YoQ0dJT1N1cmZhY2VDb250ZXh0Q3JlYXRlKG1fc3VyZmFjZS5n
ZXQoKSwgbV9jb250ZXh0U2l6ZS53aWR0aCgpLCBtX2NvbnRleHRTaXplLmhlaWdodCgpLCBiaXRz
UGVyQ29tcG9uZW50LCBiaXRzUGVyUGl4ZWwsIGNhY2hlZENHQ29sb3JTcGFjZShtX2NvbG9yU3Bh
Y2UpLCBiaXRtYXBJbmZvKSk7CiAKICAgICByZXR1cm4gbV9jZ0NvbnRleHQuZ2V0KCk7CiB9CkBA
IC0xNDcsNiArMTYyLDcgQEAgR3JhcGhpY3NDb250ZXh0JiBJT1N1cmZhY2U6OmVuc3VyZUdyYXBo
aWNzQ29udGV4dCgpCiAgICAgICAgIHJldHVybiAqbV9ncmFwaGljc0NvbnRleHQ7CiAKICAgICBt
X2dyYXBoaWNzQ29udGV4dCA9IGFkb3B0UHRyKG5ldyBHcmFwaGljc0NvbnRleHQoZW5zdXJlUGxh
dGZvcm1Db250ZXh0KCkpKTsKKyAgICBtX2dyYXBoaWNzQ29udGV4dC0+c2V0SXNBY2NlbGVyYXRl
ZENvbnRleHQodHJ1ZSk7CiAKICAgICByZXR1cm4gKm1fZ3JhcGhpY3NDb250ZXh0OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2VJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVy
ZmFjZUlPUy5tbQppbmRleCA1ZGI0NjZiZjIwZjc4YjA2NzNiYWY2YzkzYTNlYzA3ZjNmZDNiM2M5
Li5jN2U1OTcwNTYwNTU0MWJlNjc4MzA3OTg5N2RlMmE3N2IwMDI4YjBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlP
Uy5tbQpAQCAtNzAsMTEgKzcwLDYgQEAgV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0Q0ZVUkxS
ZXF1ZXN0U2hvdWxkQ29udGVudFNuaWZmKShDRk11dGFibGVVUkxSZXF1ZXN0UmUKIFdFQkNPUkVf
RVhQT1JUIHZvaWQgKCp3a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbikoQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZiwgQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZik7CiAjZW5kaWYKIAotI2lmICFQTEFURk9S
TShJT1NfU0lNVUxBVE9SKQotV0VCQ09SRV9FWFBPUlQgQ0dDb250ZXh0UmVmICgqd2tJT1N1cmZh
Y2VDb250ZXh0Q3JlYXRlKShJT1N1cmZhY2VSZWYgc3VyZmFjZSwgdW5zaWduZWQgd2lkdGgsIHVu
c2lnbmVkIGhlaWdodCwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UpOwotV0VCQ09SRV9FWFBP
UlQgQ0dJbWFnZVJlZiAoKndrSU9TdXJmYWNlQ29udGV4dENyZWF0ZUltYWdlKShDR0NvbnRleHRS
ZWYgY29udGV4dCk7Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPU19TSU1VTEFUT1IpCi0KIFdFQkNP
UkVfRVhQT1JUIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgKCp3a0NyZWF0ZVByaXZhdGVTdG9yYWdl
U2Vzc2lvbikoQ0ZTdHJpbmdSZWYpOwogV0VCQ09SRV9FWFBPUlQgTlNVUkxSZXF1ZXN0KiAoKndr
Q29weVJlcXVlc3RXaXRoU3RvcmFnZVNlc3Npb24pKENGVVJMU3RvcmFnZVNlc3Npb25SZWYsIE5T
VVJMUmVxdWVzdCopOwogV0VCQ09SRV9FWFBPUlQgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiAoKndr
Q29weUhUVFBDb29raWVTdG9yYWdlKShDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCmlu
ZGV4IGI3Njg1ZDg3YmExOGViYTkzM2U5ZWUwM2ZkZmZiNDY3YjRmYzcxOTUuLjQ5ZDc4OGY3MzQw
ZDI4OGFmMWFkZTViNzg3ZWFkYjkwZmVjODk5NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaApAQCAtMjIxLDExICsyMjEs
NiBAQCBleHRlcm4gQ0ZIVFRQTWVzc2FnZVJlZiAoKndrQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNl
KShDRlJlYWRTdHJlYW1SZWYsIENGVVJMUmVmCiBleHRlcm4gdm9pZCogd2tHZXRIeXBoZW5hdGlv
bkxvY2F0aW9uQmVmb3JlSW5kZXg7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBV
U0UoQ0EpICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQotZXh0ZXJuIENHQ29udGV4dFJlZiAo
KndrSU9TdXJmYWNlQ29udGV4dENyZWF0ZSkoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIHVuc2lnbmVk
IHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKTsKLWV4
dGVybiBDR0ltYWdlUmVmICgqd2tJT1N1cmZhY2VDb250ZXh0Q3JlYXRlSW1hZ2UpKENHQ29udGV4
dFJlZiBjb250ZXh0KTsKLSNlbmRpZgotCiAjaWYgIVBMQVRGT1JNKElPUykKIGV4dGVybiBpbnQg
KCp3a1JlY29tbWVuZGVkU2Nyb2xsZXJTdHlsZSkodm9pZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggYmRi
OTkwZDVlNGNiMTVhOWY2NjcxN2JiMDczMmFiNWM1NTRhMWM4Ni4uMjk0MjYyMTQ4MDg0Mjg5YWYw
NGJmYzc1MWYzM2M5NjVlOWQ2N2Y4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTEwMiw5ICsxMDIsNiBAQCB2
b2lkICgqd2tTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24pKENGVVJMU3RvcmFnZVNlc3Npb25SZWYs
IENGTXV0YWJsZVVSTFJlcXVlc3RSZQogCiB2b2lkKiB3a0dldEh5cGhlbmF0aW9uTG9jYXRpb25C
ZWZvcmVJbmRleDsKIAotQ0dDb250ZXh0UmVmICgqd2tJT1N1cmZhY2VDb250ZXh0Q3JlYXRlKShJ
T1N1cmZhY2VSZWYgc3VyZmFjZSwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgQ0dD
b2xvclNwYWNlUmVmIGNvbG9yU3BhY2UpOwotQ0dJbWFnZVJlZiAoKndrSU9TdXJmYWNlQ29udGV4
dENyZWF0ZUltYWdlKShDR0NvbnRleHRSZWYgY29udGV4dCk7Ci0KIGludCAoKndrUmVjb21tZW5k
ZWRTY3JvbGxlclN0eWxlKSh2b2lkKTsKIAogYm9vbCAoKndrRXhlY3V0YWJsZVdhc0xpbmtlZE9u
T3JCZWZvcmVTbm93TGVvcGFyZCkodm9pZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggMGU2N2M4YjkxOTQy
MWQ2NWEwMTAwOTAxMjg1NjIwOTljNGE5NjkyZi4uODFkYzZlODBhOWYxNjhlNmExNTYyNjVmM2Q0
YzhjMTMyYWIyZGVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtMTI4LDEwICsxMjgsNiBAQCB2b2lkIElu
aXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgSU5JVChHZXRNZWRpYVVJSW1hZ2VE
YXRhKTsKICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1IpCi0gICAgSU5JVChJ
T1N1cmZhY2VDb250ZXh0Q3JlYXRlKTsKLSAgICBJTklUKElPU3VyZmFjZUNvbnRleHRDcmVhdGVJ
bWFnZSk7Ci0jZW5kaWYKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIElOSVQoUmVjb21tZW5kZWRT
Y3JvbGxlclN0eWxlKTsKICAgICBJTklUKEV4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQmVmb3JlU25v
d0xlb3BhcmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IGE2YTQ5
YjYyYWM3OGU4Yjc5MjkxMGUwNTQ1MzA3ODQwM2U3NDhkODEuLjhjMzU3YTNjNzQwY2IxM2EyNzkx
NmM3NmU1ZWM3NTBiY2IyNjUwM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2Uu
bW0KQEAgLTExOSwxMCArMTE5LDYgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2
b2lkKQogICAgICAgICBJTklUKFNldE1ldGFkYXRhVVJMKTsKICNlbmRpZiAvLyAhUExBVEZPUk0o
SU9TKQogCi0jaWYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1IpCi0gICAgICAgIElOSVQoSU9TdXJm
YWNlQ29udGV4dENyZWF0ZSk7Ci0gICAgICAgIElOSVQoSU9TdXJmYWNlQ29udGV4dENyZWF0ZUlt
YWdlKTsKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX1NJTVVMQVRPUikKICNpZiAhUExBVEZPUk0o
SU9TKQogICAgICAgICBJTklUKFJlY29tbWVuZGVkU2Nyb2xsZXJTdHlsZSk7CiAgICAgICAgIElO
SVQoRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVTbm93TGVvcGFyZCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246845</attachid>
            <date>2015-02-18 13:49:52 -0800</date>
            <delta_ts>2015-02-18 13:50:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141751-20150218134945.patch</filename>
            <type>text/plain</type>
            <size>28199</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwMjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDA1NDA0YjkxMjU4YmVk
MzA5NTc5YjkyOTA3ZjJhZTM5OWYwM2VlMC4uYmM2MDYwMjYzZGM0YjZjOWQ1OTA0YTZkNWM4NmRk
ODRmZjg0MzVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE1LTAyLTE4ICBUaW1v
dGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBX
ZWJDb3JlOjpJT1N1cmZhY2UgaW4gSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTc1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJT1N1cmZhY2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgTWFr
ZSB1c2Ugb2YgY2FjaGVkQ0dDb2xvclNwYWNlLgorICAgICAgICBNYWtlIHVzZSBvZiBXZWJDb3Jl
OjpJT1N1cmZhY2UuCisgICAgICAgIFJlbW92ZSB0aGUgdW51c2VkIHNpemUgYXJndW1lbnQgZnJv
bSBJbWFnZUJ1ZmZlckRhdGFDRy4KKyAgICAgICAgQ2xlYXIgdGhlIElPU3VyZmFjZSBvbmNlIHdl
J3ZlIGFsbG9jYXRlZCBpdDsgV2ViQ29yZTo6SU9TdXJmYWNlIGRvZXNuJ3QKKyAgICAgICAgZG8g
dGhpcyBmb3IgdXMsIHVubGlrZSB3a0lPU3VyZmFjZUNvbnRleHRDcmVhdGUuCisgICAgICAgIEFw
cGx5IHRoZSBmbGlwcGluZyBhbmQgc2NhbGUgZmFjdG9yIHRvIHdoaWNoZXZlciBjb250ZXh0IHdl
IG1hZGUuCisgICAgICAgIFdlIGRvbid0IG5lZWQgdG8gc2V0SXNBY2NlbGVyYXRlZENvbnRleHQg
YW55bW9yZSBiZWNhdXNlIGl0J3MgYWx3YXlzCisgICAgICAgIGZhbHNlIGZvciBzb2Z0d2FyZSBj
b250ZXh0cywgYW5kIFdlYkNvcmU6OklPU3VyZmFjZSB3aWxsIHNldCBpdCBmb3IKKyAgICAgICAg
YW55IGFjY2VsZXJhdGVkIGNvbnRleHRzLgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cjo6Y29udGV4dCk6CisgICAgICAgIElmIHdlIGFyZSBJT1N1cmZhY2UtYmFja2VkLCByZXR1cm4g
V2ViQ29yZTo6SU9TdXJmYWNlJ3MgR3JhcGhpY3NDb250ZXh0LgorCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6Zmx1c2hDb250ZXh0KToKKyAgICAgICAgTWFrZSB1c2Ugb2YgY29udGV4
dCgpOyBtX2NvbnRleHQgaXMgbm93IG51bGwgZm9yIGFjY2VsZXJhdGVkIEltYWdlQnVmZmVycy4K
KworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZSk6CisgICAg
ICAgIEFkb3B0IGluLWxpbmUgd2l0aCB0aGUgQ3JlYXRlIGZ1bmN0aW9ucyBmb3IgY2xhcml0eS4g
TWFrZSB1c2Ugb2YKKyAgICAgICAgSU9TdXJmYWNlOjpjcmVhdGVJbWFnZSBpbnN0ZWFkIG9mIHdr
SU9TdXJmYWNlQ29udGV4dENyZWF0ZUltYWdlLgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdl
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjp0b0RhdGFVUkwpOgorICAgICAgICBNYWtlIHVz
ZSBvZiBjb250ZXh0KCk7IG1fY29udGV4dCBpcyBub3cgbnVsbCBmb3IgYWNjZWxlcmF0ZWQgSW1h
Z2VCdWZmZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJE
YXRhQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpJbWFnZUJ1ZmZl
ckRhdGEpOgorICAgICAgICBJbmRlbnRhdGlvbiBmaXgsIGFuZCB1c2UgbnVsbHB0ci4KKworICAg
ICAgICAoV2ViQ29yZTo6Y29udmVydFNjYW5saW5lKToKKyAgICAgICAgR3JhbW1hciBmaXggKGlz
IC0+IGFyZSkuCisKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGF0YTo6Z2V0RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEpOgorICAgICAgICBH
cmFiIHRoZSBJT1N1cmZhY2VSZWYgZnJvbSB0aGUgSU9TdXJmYWNlIHdyYXBwZXIuIEV2ZW50dWFs
bHkgdGhlc2UgdGhpbmdzCisgICAgICAgIHNob3VsZCBiZSBtYWRlIG1vcmUgY29udmVuaWVudCBi
eSB0aGUgd3JhcHBlci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyRGF0YUNHLmg6CisgICAgICAgIERyb3AgdGhlIHVudXNlZCBzaXplIGFyZ3VtZW50IGZyb20g
dGhlIGNvbnN0cnVjdG9yLgorICAgICAgICBSZW9yZ2FuaXplIGFuZCBsYWJlbCB0aGUgdmFyaW91
cyBtZW1iZXJzIHdoaWNoIGFyZSBvbmx5IHVzZWQKKyAgICAgICAgZm9yIGEgcGFydGljdWxhciB0
eXBlIG9mIEltYWdlQnVmZmVyRGF0YUNHLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvSU9TdXJmYWNlLm1tOgorICAgICAgICAoSU9TdXJmYWNlOjplbnN1cmVHcmFwaGljc0Nv
bnRleHQpOgorICAgICAgICBJT1N1cmZhY2UtYmFja2VkIEdyYXBoaWNzQ29udGV4dHMgYXJlIGFs
d2F5cyBjb25zaWRlcmVkIGFjY2VsZXJhdGVkLgorCisgICAgICAgIChJT1N1cmZhY2U6OmNyZWF0
ZSk6CisgICAgICAgIChJT1N1cmZhY2U6OklPU3VyZmFjZSk6CisgICAgICAgIEFkZCBhIGNvbnN0
cnVjdG9yIHRoYXQgdGFrZSBhbiBleHRyYSBzaXplIHRvIHVzZSB3aGVuIG1ha2luZyB0aGUgQ0dD
b250ZXh0OworICAgICAgICBpdCBjYW4gb25seSBiZSBsZXNzIHRoYW4gdGhlIGFjdHVhbCBiYWNr
aW5nIElPU3VyZmFjZSBzaXplLgorICAgICAgICBUaGlzIGlzIG5lZWRlZCBmb3IgcjE2MDEyMS4K
KworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIFJlbW92
ZSBvbGQgV0tTSSBJT1N1cmZhY2UtcmVsYXRlZCBmdW5jdGlvbnMuCisKIDIwMTUtMDItMTggIEFs
ZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2hlcyB1bmRl
ciBJREJEYXRhYmFzZTo6Y2xvc2VDb25uZWN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGUwZDBl
ZTBhZDM4YjdkOWI4YmE4ZjlhNDMzOWU3N2M1ZWRjMGQ2NjcuLmRjMjM0ZTg3ZTRmYTFjYzUwZmMw
OGE3ZjllNTRlN2Y5Nzk1YThlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxNS0wMi0xOCAgVGltb3RoeSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRvcHQgV2ViQ29yZTo6SU9TdXJmYWNlIGluIEltYWdlQnVmZmVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE3NTEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYlN5c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJm
YWNlKToKKyAgICAgICAgUmVtb3ZlIG9sZCBXS1NJIElPU3VyZmFjZS1yZWxhdGVkIGZ1bmN0aW9u
cy4KKwogMjAxNS0wMi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFjY2VzcyBNZW1vcnlQcmVzc3VyZUhhbmRsZXIgZ2xvYmFsIGluc3RhbmNlIHZpYSBhIHNp
bmdsZXRvbigpIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4ODIzOTExMDFj
Zjg4OWJlNjkwZTFlM2NkZDU0Yjc1YmRiMTA1OTVkLi5lZGRiNDFkMDAxN2I3NWI2ODYwNjM5YWY2
ZDZlMDFlM2JlYzZjZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTYgQEAKIDIwMTUtMDItMTgg
IFRpbW90aHkgSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCisgICAgICAgIEFk
b3B0IFdlYkNvcmU6OklPU3VyZmFjZSBpbiBJbWFnZUJ1ZmZlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxNzUxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUlu
dGVyZmFjZSk6CisgICAgICAgIFJlbW92ZSBvbGQgV0tTSSBJT1N1cmZhY2UtcmVsYXRlZCBmdW5j
dGlvbnMuCisKKzIwMTUtMDItMTggIFRpbW90aHkgSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBw
bGUuY29tPgorCiAgICAgICAgIEFkZCBXS0NvbnRleHQgU1BJIHRvIGNsZWFyIGFsbCB2aXNpdGVk
IGxpbmtzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDE3NTIKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzk5OTc5NjY+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IGY1
ODI1ZjUwNDJiZTEzMTZlZWNmOTA2ODE0MDkxY2M5OWMyMzNlZDAuLmU3ZjczZjVkOTJlYzE3ZWQ3
YmQwYWMzOWZmNmNiMzQ0Y2I4YWJiMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC01Nyw1NyArNTcsNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5H
X1NUT1JFKQotCi0vLyBGSVhNRTogQWRvcHQgV2ViQ29yZTo6SU9TdXJmYWNlLgotc3RhdGljIFJl
dGFpblB0cjxJT1N1cmZhY2VSZWY+IGNyZWF0ZUlPU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXpl
KQotewotICAgIHVuc2lnbmVkIHBpeGVsRm9ybWF0ID0gJ0JHUkEnOwotICAgIHVuc2lnbmVkIGJ5
dGVzUGVyRWxlbWVudCA9IDQ7Ci0gICAgaW50IHdpZHRoID0gc2l6ZS53aWR0aCgpOwotICAgIGlu
dCBoZWlnaHQgPSBzaXplLmhlaWdodCgpOwotCi0gICAgdW5zaWduZWQgbG9uZyBieXRlc1BlclJv
dyA9IElPU3VyZmFjZUFsaWduUHJvcGVydHkoa0lPU3VyZmFjZUJ5dGVzUGVyUm93LCBzaXplLndp
ZHRoKCkgKiBieXRlc1BlckVsZW1lbnQpOwotICAgIGlmICghYnl0ZXNQZXJSb3cpCi0gICAgICAg
IHJldHVybiAwOwotCi0gICAgdW5zaWduZWQgbG9uZyBhbGxvY1NpemUgPSBJT1N1cmZhY2VBbGln
blByb3BlcnR5KGtJT1N1cmZhY2VBbGxvY1NpemUsIHNpemUuaGVpZ2h0KCkgKiBieXRlc1BlclJv
dyk7Ci0gICAgaWYgKCFhbGxvY1NpemUpCi0gICAgICAgIHJldHVybiAwOwotCi0jaWYgIVBMQVRG
T1JNKElPUykKLSAgICBjb25zdCB2b2lkKiBrZXlzWzZdOwotICAgIGNvbnN0IHZvaWQqIHZhbHVl
c1s2XTsKLSNlbHNlCi0gICAgY29uc3Qgdm9pZCoga2V5c1s3XTsKLSAgICBjb25zdCB2b2lkKiB2
YWx1ZXNbN107Ci0jZW5kaWYKLSAgICBrZXlzWzBdID0ga0lPU3VyZmFjZVdpZHRoOwotICAgIHZh
bHVlc1swXSA9IENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUsICZ3aWR0aCk7Ci0g
ICAga2V5c1sxXSA9IGtJT1N1cmZhY2VIZWlnaHQ7Ci0gICAgdmFsdWVzWzFdID0gQ0ZOdW1iZXJD
cmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJmhlaWdodCk7Ci0gICAga2V5c1syXSA9IGtJT1N1
cmZhY2VQaXhlbEZvcm1hdDsKLSAgICB2YWx1ZXNbMl0gPSBDRk51bWJlckNyZWF0ZSgwLCBrQ0ZO
dW1iZXJJbnRUeXBlLCAmcGl4ZWxGb3JtYXQpOwotICAgIGtleXNbM10gPSBrSU9TdXJmYWNlQnl0
ZXNQZXJFbGVtZW50OwotICAgIHZhbHVlc1szXSA9IENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJl
ckludFR5cGUsICZieXRlc1BlckVsZW1lbnQpOwotICAgIGtleXNbNF0gPSBrSU9TdXJmYWNlQnl0
ZXNQZXJSb3c7Ci0gICAgdmFsdWVzWzRdID0gQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyTG9u
Z1R5cGUsICZieXRlc1BlclJvdyk7Ci0gICAga2V5c1s1XSA9IGtJT1N1cmZhY2VBbGxvY1NpemU7
Ci0gICAgdmFsdWVzWzVdID0gQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyTG9uZ1R5cGUsICZh
bGxvY1NpemUpOwotI2lmIFBMQVRGT1JNKElPUykKLSAgICBrZXlzWzZdID0ga0lPU3VyZmFjZUNh
Y2hlTW9kZTsKLSAgICBpbnQgY2FjaGVNb2RlID0ga0lPTWFwV3JpdGVDb21iaW5lQ2FjaGU7Ci0g
ICAgdmFsdWVzWzZdID0gQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJmNhY2hl
TW9kZSk7Ci0jZW5kaWYKLQotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGRpY3QgPSBh
ZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZSgwLCBrZXlzLCB2YWx1ZXMsIFdURl9BUlJBWV9MRU5H
VEgodmFsdWVzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rp
b25hcnlWYWx1ZUNhbGxCYWNrcykpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZf
QVJSQVlfTEVOR1RIKHZhbHVlcyk7ICsraSkKLSAgICAgICAgQ0ZSZWxlYXNlKHZhbHVlc1tpXSk7
Ci0KLSAgICByZXR1cm4gYWRvcHRDRihJT1N1cmZhY2VDcmVhdGUoZGljdC5nZXQoKSkpOwotfQot
I2VuZGlmCi0KIHN0YXRpYyB2b2lkIHJlbGVhc2VJbWFnZURhdGEodm9pZCosIGNvbnN0IHZvaWQq
IGRhdGEsIHNpemVfdCkKIHsKICAgICBmYXN0RnJlZShjb25zdF9jYXN0PHZvaWQqPihkYXRhKSk7
CkBAIC0xMjEsOCArNzAsNyBAQCBzdGF0aWMgRmxvYXRTaXplIHNjYWxlU2l6ZVRvVXNlclNwYWNl
KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpegogfQogCiBJbWFnZUJ1
ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIENvbG9yU3BhY2UgaW1hZ2VDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUsIGJvb2wmIHN1Y2Nlc3MpCi0gICAgOiBtX2RhdGEoSW50U2l6ZShzaXplKSkgLy8gTk9U
RTogVGhlIGlucHV0IGhlcmUgaXNuJ3QgaW1wb3J0YW50IGFzIEltYWdlQnVmZmVyRGF0YUNHJ3Mg
Y29uc3RydWN0b3IganVzdCBpZ25vcmVzIGl0LgotICAgICwgbV9sb2dpY2FsU2l6ZShzaXplKQor
ICAgIDogbV9sb2dpY2FsU2l6ZShzaXplKQogICAgICwgbV9yZXNvbHV0aW9uU2NhbGUocmVzb2x1
dGlvblNjYWxlKQogewogICAgIGZsb2F0IHNjYWxlZFdpZHRoID0gY2VpbGYocmVzb2x1dGlvblNj
YWxlICogc2l6ZS53aWR0aCgpKTsKQEAgLTE1OSwyNSArMTA3LDE4IEBAIEltYWdlQnVmZmVyOjpJ
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Q29sb3JTcGFjCiAgICAgQVNTRVJUKHJlbmRlcmluZ01vZGUgPT0gVW5hY2NlbGVyYXRlZCk7CiAj
ZW5kaWYKIAotICAgIHN3aXRjaCAoaW1hZ2VDb2xvclNwYWNlKSB7Ci0gICAgY2FzZSBDb2xvclNw
YWNlRGV2aWNlUkdCOgotICAgICAgICBtX2RhdGEubV9jb2xvclNwYWNlID0gZGV2aWNlUkdCQ29s
b3JTcGFjZVJlZigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENvbG9yU3BhY2VTUkdCOgot
ICAgICAgICBtX2RhdGEubV9jb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDb2xvclNwYWNlTGluZWFyUkdCOgotICAgICAgICBtX2RhdGEu
bV9jb2xvclNwYWNlID0gbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpOwotICAgICAgICBicmVhazsK
LSAgICB9CisgICAgbV9kYXRhLm1fY29sb3JTcGFjZSA9IGNhY2hlZENHQ29sb3JTcGFjZShpbWFn
ZUNvbG9yU3BhY2UpOwogCiAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY2dDb250ZXh0Owog
ICAgIGlmIChhY2NlbGVyYXRlUmVuZGVyaW5nKSB7CiAjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNf
QkFDS0lOR19TVE9SRSkKLSAgICAgICAgbV9kYXRhLm1fc3VyZmFjZSA9IGNyZWF0ZUlPU3VyZmFj
ZShtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplKTsKICAgICAgICAgRmxvYXRTaXplIHVzZXJCb3Vu
ZHMgPSBzY2FsZVNpemVUb1VzZXJTcGFjZShGbG9hdFNpemUod2lkdGgudW5zYWZlR2V0KCksIGhl
aWdodC51bnNhZmVHZXQoKSksIG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUsIG1fc2l6ZSk7Ci0g
ICAgICAgIGNnQ29udGV4dCA9IGFkb3B0Q0Yod2tJT1N1cmZhY2VDb250ZXh0Q3JlYXRlKG1fZGF0
YS5tX3N1cmZhY2UuZ2V0KCksIHVzZXJCb3VuZHMud2lkdGgoKSwgdXNlckJvdW5kcy5oZWlnaHQo
KSwgbV9kYXRhLm1fY29sb3JTcGFjZSkpOworICAgICAgICBtX2RhdGEubV9zdXJmYWNlID0gSU9T
dXJmYWNlOjpjcmVhdGUobV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZSwgSW50U2l6ZSh1c2VyQm91
bmRzKSwgaW1hZ2VDb2xvclNwYWNlKTsKKyAgICAgICAgY2dDb250ZXh0ID0gbV9kYXRhLm1fc3Vy
ZmFjZS0+ZW5zdXJlUGxhdGZvcm1Db250ZXh0KCk7CisgICAgICAgIGlmIChjZ0NvbnRleHQpCisg
ICAgICAgICAgICBDR0NvbnRleHRDbGVhclJlY3QoY2dDb250ZXh0LmdldCgpLCBGbG9hdFJlY3Qo
RmxvYXRQb2ludCgpLCB1c2VyQm91bmRzKSk7CiAjZW5kaWYKKwogICAgICAgICBpZiAoIWNnQ29u
dGV4dCkKICAgICAgICAgICAgIGFjY2VsZXJhdGVSZW5kZXJpbmcgPSBmYWxzZTsgLy8gSWYgYWxs
b2NhdGlvbiBmYWlscywgZmFsbCBiYWNrIHRvIG5vbi1hY2NlbGVyYXRlZCBwYXRoLgogICAgIH0K
QEAgLTE5NSwxNiArMTM2LDE3IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjCiAgICAgICAgIGNn
Q29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKG1fZGF0YS5tX2RhdGEsIG1f
ZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUud2lkdGgoKSwgbV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6
ZS5oZWlnaHQoKSwgOCwgbV9kYXRhLm1fYnl0ZXNQZXJSb3cudW5zYWZlR2V0KCksIG1fZGF0YS5t
X2NvbG9yU3BhY2UsIG1fZGF0YS5tX2JpdG1hcEluZm8pKTsKICAgICAgICAgLy8gQ3JlYXRlIGEg
bGl2ZSBpbWFnZSB0aGF0IHdyYXBzIHRoZSBkYXRhLgogICAgICAgICBtX2RhdGEubV9kYXRhUHJv
dmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEoMCwgbV9kYXRhLm1f
ZGF0YSwgbnVtQnl0ZXMudW5zYWZlR2V0KCksIHJlbGVhc2VJbWFnZURhdGEpKTsKKworICAgICAg
ICBpZiAoIWNnQ29udGV4dCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2NvbnRl
eHQgPSBhZG9wdFB0cihuZXcgR3JhcGhpY3NDb250ZXh0KGNnQ29udGV4dC5nZXQoKSkpOwogICAg
IH0KIAotICAgIGlmICghY2dDb250ZXh0KQotICAgICAgICByZXR1cm47CisgICAgY29udGV4dCgp
LT5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKyAgICBjb250ZXh0KCktPnRyYW5zbGF0ZSgwLCAt
bV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSk7CisgICAgY29udGV4dCgpLT5hcHBs
eURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlvblNjYWxlKTsKIAotICAgIG1fY29udGV4dCA9
IGFkb3B0UHRyKG5ldyBHcmFwaGljc0NvbnRleHQoY2dDb250ZXh0LmdldCgpKSk7Ci0gICAgbV9j
b250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKLSAgICBtX2NvbnRleHQtPnRyYW5zbGF0
ZSgwLCAtbV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSk7Ci0gICAgbV9jb250ZXh0
LT5hcHBseURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlvblNjYWxlKTsKLSAgICBtX2NvbnRl
eHQtPnNldElzQWNjZWxlcmF0ZWRDb250ZXh0KGFjY2VsZXJhdGVSZW5kZXJpbmcpOwogICAgIHN1
Y2Nlc3MgPSB0cnVlOwogfQogCkBAIC0yMTQsMTIgKzE1NiwxNiBAQCBJbWFnZUJ1ZmZlcjo6fklt
YWdlQnVmZmVyKCkKIAogR3JhcGhpY3NDb250ZXh0KiBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNv
bnN0CiB7CisjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKKyAgICBpZiAo
bV9kYXRhLm1fc3VyZmFjZSkKKyAgICAgICAgcmV0dXJuICZtX2RhdGEubV9zdXJmYWNlLT5lbnN1
cmVHcmFwaGljc0NvbnRleHQoKTsKKyNlbmRpZgogICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7
CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmZsdXNoQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgQ0dD
b250ZXh0Rmx1c2gobV9jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgQ0dDb250ZXh0
Rmx1c2goY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKSk7CiB9CiAKIHN0YXRpYyBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoQ0dJbWFnZVJlZiBp
bWFnZSwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQpAQCAtMjYzLDE0ICsyMDksMTQgQEAgQmFja2lu
Z1N0b3JlQ29weSBJbWFnZUJ1ZmZlcjo6ZmFzdENvcHlJbWFnZU1vZGUoKQogCiBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5
IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKLSAgICBDR0ltYWdlUmVmIGltYWdlID0gMDsKLSAgICBp
ZiAoIW1fY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkgeworICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBpbWFnZTsKKyAgICBpZiAoIWNvbnRleHQoKS0+aXNBY2NlbGVyYXRlZENvbnRl
eHQoKSkgewogICAgICAgICBzd2l0Y2ggKGNvcHlCZWhhdmlvcikgewogICAgICAgICBjYXNlIERv
bnRDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICAgICAgaW1hZ2UgPSBDR0ltYWdlQ3JlYXRlKG1f
ZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUud2lkdGgoKSwgbV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6
ZS5oZWlnaHQoKSwgOCwgMzIsIG1fZGF0YS5tX2J5dGVzUGVyUm93LnVuc2FmZUdldCgpLCBtX2Rh
dGEubV9jb2xvclNwYWNlLCBtX2RhdGEubV9iaXRtYXBJbmZvLCBtX2RhdGEubV9kYXRhUHJvdmlk
ZXIuZ2V0KCksIDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpOworICAgICAgICAg
ICAgaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUobV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6
ZS53aWR0aCgpLCBtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLmhlaWdodCgpLCA4LCAzMiwgbV9k
YXRhLm1fYnl0ZXNQZXJSb3cudW5zYWZlR2V0KCksIG1fZGF0YS5tX2NvbG9yU3BhY2UsIG1fZGF0
YS5tX2JpdG1hcEluZm8sIG1fZGF0YS5tX2RhdGFQcm92aWRlci5nZXQoKSwgMCwgdHJ1ZSwga0NH
UmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ29weUJhY2tpbmdTdG9yZToKLSAgICAgICAgICAgIGltYWdlID0gQ0dCaXRtYXBDb250ZXh0
Q3JlYXRlSW1hZ2UoY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgICAgICAgICBp
bWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dCgpLT5wbGF0
Zm9ybUNvbnRleHQoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI3OSwxOSArMjI1LDE5IEBAIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZUJ1ZmZlcjo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdT
dG9yZUNvcHkgY29weUJlaGF2aW9yCiAgICAgfQogI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JB
Q0tJTkdfU1RPUkUpCiAgICAgZWxzZQotICAgICAgICBpbWFnZSA9IHdrSU9TdXJmYWNlQ29udGV4
dENyZWF0ZUltYWdlKGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCkpOworICAgICAgICBpbWFn
ZSA9IG1fZGF0YS5tX3N1cmZhY2UtPmNyZWF0ZUltYWdlKCk7CiAjZW5kaWYKIAotICAgIHJldHVy
biBhZG9wdENGKGltYWdlKTsKKyAgICByZXR1cm4gaW1hZ2U7CiB9CiAKIHZvaWQgSW1hZ2VCdWZm
ZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBkZXN0Q29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIGJvb2wgdXNl
TG93UXVhbGl0eVNjYWxlKQogewogICAgIFVOVVNFRF9QQVJBTSh1c2VMb3dRdWFsaXR5U2NhbGUp
OwotICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IChkZXN0Q29udGV4dCA9PSBtX2NvbnRleHQp
ID8gQ29sb3JTcGFjZURldmljZVJHQiA6IHN0eWxlQ29sb3JTcGFjZTsKKyAgICBDb2xvclNwYWNl
IGNvbG9yU3BhY2UgPSAoZGVzdENvbnRleHQgPT0gY29udGV4dCgpKSA/IENvbG9yU3BhY2VEZXZp
Y2VSR0IgOiBzdHlsZUNvbG9yU3BhY2U7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1h
Z2U7Ci0gICAgaWYgKGRlc3RDb250ZXh0ID09IG1fY29udGV4dCB8fCBkZXN0Q29udGV4dC0+aXNB
Y2NlbGVyYXRlZENvbnRleHQoKSkKKyAgICBpZiAoZGVzdENvbnRleHQgPT0gY29udGV4dCgpIHx8
IGRlc3RDb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQogICAgICAgICBpbWFnZSA9IGNv
cHlOYXRpdmVJbWFnZShDb3B5QmFja2luZ1N0b3JlKTsgLy8gRHJhd2luZyBpbnRvIG91ciBvd24g
YnVmZmVyLCBuZWVkIHRvIGRlZXAgY29weS4KICAgICBlbHNlCiAgICAgICAgIGltYWdlID0gY29w
eU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKQEAgLTMwNiw4ICsyNTIsOCBAQCB2
b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHNyYwogICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBz
cmNSZWN0OwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSwgbV9y
ZXNvbHV0aW9uU2NhbGUpOwogCi0gICAgaWYgKCFtX2NvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250
ZXh0KCkpIHsKLSAgICAgICAgaWYgKGRlc3RDb250ZXh0ID09IG1fY29udGV4dCB8fCBkZXN0Q29u
dGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkgeworICAgIGlmICghY29udGV4dCgpLT5pc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpKSB7CisgICAgICAgIGlmIChkZXN0Q29udGV4dCA9PSBjb250ZXh0
KCkgfHwgZGVzdENvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKICAgICAgICAgICAg
IFJlZlB0cjxJbWFnZT4gY29weSA9IGNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKTsgLy8gRHJh
d2luZyBpbnRvIG91ciBvd24gYnVmZmVyLCBuZWVkIHRvIGRlZXAgY29weS4KICAgICAgICAgICAg
IGNvcHktPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5U
cmFuc2Zvcm0sIHBoYXNlLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2Rl
KTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTMzNywzMSArMjgzLDMxIEBAIHZvaWQgSW1hZ2VCdWZm
ZXI6OmNsaXAoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0VG9DbGlwLCBjb25zdCBGbG9hdFJlY3Qm
IHJlY3QpIGNvCiAKIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpn
ZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5
c3RlbSBjb29yZGluYXRlU3lzdGVtKSBjb25zdAogewotICAgIGlmIChtX2NvbnRleHQtPmlzQWNj
ZWxlcmF0ZWRDb250ZXh0KCkpCisgICAgaWYgKGNvbnRleHQoKS0+aXNBY2NlbGVyYXRlZENvbnRl
eHQoKSkKICAgICAgICAgZmx1c2hDb250ZXh0KCk7CiAKICAgICBJbnRSZWN0IHNyY1JlY3QgPSBy
ZWN0OwogICAgIGlmIChjb29yZGluYXRlU3lzdGVtID09IExvZ2ljYWxDb29yZGluYXRlU3lzdGVt
KQogICAgICAgICBzcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKIAotICAgIHJldHVy
biBtX2RhdGEuZ2V0RGF0YShzcmNSZWN0LCBpbnRlcm5hbFNpemUoKSwgbV9jb250ZXh0LT5pc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpLCB0cnVlLCAxKTsKKyAgICByZXR1cm4gbV9kYXRhLmdldERhdGEo
c3JjUmVjdCwgaW50ZXJuYWxTaXplKCksIGNvbnRleHQoKS0+aXNBY2NlbGVyYXRlZENvbnRleHQo
KSwgdHJ1ZSwgMSk7CiB9CiAKIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVm
ZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3Jk
aW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKLSAgICBpZiAobV9jb250ZXh0
LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQorICAgIGlmIChjb250ZXh0KCktPmlzQWNjZWxlcmF0
ZWRDb250ZXh0KCkpCiAgICAgICAgIGZsdXNoQ29udGV4dCgpOwogCiAgICAgSW50UmVjdCBzcmNS
ZWN0ID0gcmVjdDsKICAgICBpZiAoY29vcmRpbmF0ZVN5c3RlbSA9PSBMb2dpY2FsQ29vcmRpbmF0
ZVN5c3RlbSkKICAgICAgICAgc3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CiAKLSAg
ICByZXR1cm4gbV9kYXRhLmdldERhdGEoc3JjUmVjdCwgaW50ZXJuYWxTaXplKCksIG1fY29udGV4
dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSwgZmFsc2UsIDEpOworICAgIHJldHVybiBtX2RhdGEu
Z2V0RGF0YShzcmNSZWN0LCBpbnRlcm5hbFNpemUoKSwgY29udGV4dCgpLT5pc0FjY2VsZXJhdGVk
Q29udGV4dCgpLCBmYWxzZSwgMSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJh
eShNdWx0aXBseSBtdWx0aXBsaWVkLCBVaW50OENsYW1wZWRBcnJheSogc291cmNlLCBjb25zdCBJ
bnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQ
b2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pCiB7Ci0g
ICAgaWYgKCFtX2NvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKKyAgICBpZiAoIWNv
bnRleHQoKS0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICBJbnRSZWN0IHNjYWxl
ZFNvdXJjZVJlY3QgPSBzb3VyY2VSZWN0OwogICAgICAgICBJbnRTaXplIHNjYWxlZFNvdXJjZVNp
emUgPSBzb3VyY2VTaXplOwogICAgICAgICBpZiAoY29vcmRpbmF0ZVN5c3RlbSA9PSBMb2dpY2Fs
Q29vcmRpbmF0ZVN5c3RlbSkgewpAQCAtNDg0LDcgKzQzMCw3IEBAIFN0cmluZyBJbWFnZUJ1ZmZl
cjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJsZSogcXVhbGl0
eSwgQ29vCiB7CiAgICAgQVNTRVJUKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZUZvckVuY29kaW5nKG1pbWVUeXBlKSk7CiAKLSAgICBpZiAobV9jb250ZXh0LT5pc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpKQorICAgIGlmIChjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250
ZXh0KCkpCiAgICAgICAgIGZsdXNoQ29udGV4dCgpOwogCiAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiB1dGkgPSB1dGlGcm9tTUlNRVR5cGUobWltZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCmlu
ZGV4IDgyMmJlN2ZkNjMxYmY0MmFlYzJkMmI4NzYxMjY4OTM3ZGE3YWU2NDkuLmFkM2ZlZDZkMWNm
MmNhMTZmOGIzMzY4YzcyZjlhZWZlMDQzOGFiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKQEAgLTM1
LDYgKzM1LDcgQEAKICNlbmRpZgogCiAjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19T
VE9SRSkKKyNpbmNsdWRlICJJT1N1cmZhY2UuaCIKICNpbmNsdWRlICJJT1N1cmZhY2VTUEkuaCIK
ICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2VuZGlmCkBAIC01NCwxMCArNTUsMTAg
QEAgc3RydWN0IFNjYW5saW5lRGF0YSB7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW1hZ2VC
dWZmZXJEYXRhOjpJbWFnZUJ1ZmZlckRhdGEoY29uc3QgSW50U2l6ZSYpCi06IG1fZGF0YSgwKQor
SW1hZ2VCdWZmZXJEYXRhOjpJbWFnZUJ1ZmZlckRhdGEoKQorICAgIDogbV9kYXRhKG51bGxwdHIp
CiAjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKLSwgbV9zdXJmYWNlKDAp
CisgICAgLCBtX3N1cmZhY2UobnVsbHB0cikKICNlbmRpZgogewogfQpAQCAtODksNyArOTAsNyBA
QCBzdGF0aWMgdm9pZCBjb252ZXJ0U2NhbmxpbmUodm9pZCogZGF0YSwgc2l6ZV90IHRpbGVOdW1i
ZXIsIGJvb2wgcHJlbXVsdGlwbHkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
Ly8gU3dhcCBjaGFubmVscyAxIGFuZCAzLCB0byBjb252ZXJ0IEJHUkE8LT5SR0JBLiBJT1N1cmZh
Y2VzIGlzIEJHUkEsIEltYWdlRGF0YSBleHBlY3RzIFJHQkEuCisgICAgLy8gU3dhcCBjaGFubmVs
cyAxIGFuZCAzLCB0byBjb252ZXJ0IEJHUkE8LT5SR0JBLiBJT1N1cmZhY2VzIGFyZSBCR1JBLCBJ
bWFnZURhdGEgZXhwZWN0cyBSR0JBLgogICAgIGNvbnN0IHVpbnQ4X3QgbWFwWzRdID0geyAyLCAx
LCAwLCAzIH07CiAgICAgdkltYWdlUGVybXV0ZUNoYW5uZWxzX0FSR0I4ODg4KCZkZXN0LCAmZGVz
dCwgbWFwLCBrdkltYWdlRG9Ob3RUaWxlKTsKIH0KQEAgLTI2OSw3ICsyNzAsOCBAQCBQYXNzUmVm
UHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlckRhdGE6OmdldERhdGEoY29uc3QgSW50
UmVjdCYgcmVjdCwgY29ucwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICNpZiBVU0UoSU9TVVJG
QUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQotICAgICAgICBJT1N1cmZhY2VSZWYgc3VyZmFjZSA9
IG1fc3VyZmFjZS5nZXQoKTsKKyAgICAgICAgLy8gRklYTUU6IFdlYkNvcmU6OklPU3VyZmFjZSBz
aG91bGQgaGF2ZSBhIGxvY2tpbmcgUkFJSSBvYmplY3QgYW5kIGJhc2UtYWRkcmVzcyBnZXR0ZXIu
CisgICAgICAgIElPU3VyZmFjZVJlZiBzdXJmYWNlID0gbV9zdXJmYWNlLT5zdXJmYWNlKCk7CiAg
ICAgICAgIElPU3VyZmFjZUxvY2soc3VyZmFjZSwga0lPU3VyZmFjZUxvY2tSZWFkT25seSwgMCk7
CiAgICAgICAgIHNyY0J5dGVzUGVyUm93ID0gSU9TdXJmYWNlR2V0Qnl0ZXNQZXJSb3coc3VyZmFj
ZSk7CiAgICAgICAgIHNyY1Jvd3MgPSAodW5zaWduZWQgY2hhciopKElPU3VyZmFjZUdldEJhc2VB
ZGRyZXNzKHN1cmZhY2UpKSArIG9yaWdpbnkgKiBzcmNCeXRlc1BlclJvdyArIG9yaWdpbnggKiA0
OwpAQCAtNTEzLDcgKzUxNSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKFVpbnQ4
Q2xhbXBlZEFycmF5KiYgc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTCiAgICAgICAgIH0K
ICAgICB9IGVsc2UgewogI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCi0g
ICAgICAgIElPU3VyZmFjZVJlZiBzdXJmYWNlID0gbV9zdXJmYWNlLmdldCgpOworICAgICAgICBJ
T1N1cmZhY2VSZWYgc3VyZmFjZSA9IG1fc3VyZmFjZS0+c3VyZmFjZSgpOwogICAgICAgICBJT1N1
cmZhY2VMb2NrKHN1cmZhY2UsIDAsIDApOwogICAgICAgICBkZXN0Qnl0ZXNQZXJSb3cgPSBJT1N1
cmZhY2VHZXRCeXRlc1BlclJvdyhzdXJmYWNlKTsKICAgICAgICAgZGVzdFJvd3MgPSAodW5zaWdu
ZWQgY2hhciopKElPU3VyZmFjZUdldEJhc2VBZGRyZXNzKHN1cmZhY2UpKSArIChkZXN0eSAqIGRl
c3RCeXRlc1BlclJvdyArIGRlc3R4ICogNCkudW5zYWZlR2V0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaAppbmRl
eCBmMzYxMzVhNzA2YWEyNjdlNWVkYzVjMzhjZDZlYTczZDYzZGNiMmFlLi5jZDgyOTE0Y2RkNmY4
NzBiNjBiZmE5NzQ0OGEwZWRjZmRkNTA4NDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmgKQEAgLTQzLDIwICs0
MywyNiBAQCB0eXBlZGVmIHVpbnQzMl90IENHQml0bWFwSW5mbzsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBJT1N1cmZhY2U7CiBjbGFzcyBJbnRTaXplOwogCiBjbGFzcyBJbWFnZUJ1
ZmZlckRhdGEgewogcHVibGljOgotICAgIEltYWdlQnVmZmVyRGF0YShjb25zdCBJbnRTaXplJik7
CisgICAgSW1hZ2VCdWZmZXJEYXRhKCk7CiAKKyAgICBJbnRTaXplIG1fYmFja2luZ1N0b3JlU2l6
ZTsKKyAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gbV9ieXRlc1BlclJvdzsK
KyAgICBDR0NvbG9yU3BhY2VSZWYgbV9jb2xvclNwYWNlOworCisgICAgLy8gT25seSBmb3IgU29m
dHdhcmUgSW1hZ2VCdWZmZXJzLgogICAgIHZvaWQqIG1fZGF0YTsKLSAgICAKICAgICBSZXRhaW5Q
dHI8Q0dEYXRhUHJvdmlkZXJSZWY+IG1fZGF0YVByb3ZpZGVyOwogICAgIENHQml0bWFwSW5mbyBt
X2JpdG1hcEluZm87Ci0gICAgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IG1fYnl0
ZXNQZXJSb3c7Ci0gICAgQ0dDb2xvclNwYWNlUmVmIG1fY29sb3JTcGFjZTsKLSAgICBSZXRhaW5Q
dHI8SU9TdXJmYWNlUmVmPiBtX3N1cmZhY2U7Ci0gICAgSW50U2l6ZSBtX2JhY2tpbmdTdG9yZVNp
emU7CisKKyNpZiBXVEZfVVNFX0lPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRQorICAgIC8v
IE9ubHkgZm9yIEFjY2VsZXJhdGVkIEltYWdlQnVmZmVycy4KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
SU9TdXJmYWNlPiBtX3N1cmZhY2U7CisjZW5kaWYKIAogICAgIFBhc3NSZWZQdHI8VWludDhDbGFt
cGVkQXJyYXk+IGdldERhdGEoY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFNpemUmLCBib29sIGFj
Y2VsZXJhdGVSZW5kZXJpbmcsIGJvb2wgdW5tdWx0aXBsaWVkLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUpIGNvbnN0OwogICAgIHZvaWQgcHV0RGF0YShVaW50OENsYW1wZWRBcnJheSomIHNvdXJjZSwg
Y29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UG9pbnQmIGRlc3RQb2ludCwgY29uc3QgSW50U2l6ZSYsIGJvb2wgYWNjZWxlcmF0ZVJl
bmRlcmluZywgYm9vbCB1bm11bHRpcGxpZWQsIGZsb2F0IHJlc29sdXRpb25TY2FsZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCmlu
ZGV4IDBkMTMyZmU2ZDYzNGJmMzJlMjYzMjU5YWM5ODNlMmY4MGIxNTZmZjAuLmU3NTJhMjZjNDFk
ZmYwYzViYWExZWZiODBlZTU1NjA0MWJjNmQzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCkBAIC0zOSw2ICszOSw3IEBAIGNs
YXNzIE1hY2hTZW5kUmlnaHQ7CiBjbGFzcyBJT1N1cmZhY2UgZmluYWwgewogcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGUo
SW50U2l6ZSwgQ29sb3JTcGFjZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZShJbnRTaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBD
b2xvclNwYWNlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElP
U3VyZmFjZT4gY3JlYXRlRnJvbVNlbmRSaWdodChjb25zdCBNYWNoU2VuZFJpZ2h0JiwgQ29sb3JT
cGFjZSk7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZUZyb21T
dXJmYWNlKElPU3VyZmFjZVJlZiwgQ29sb3JTcGFjZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZUZyb21JbWFnZShDR0ltYWdlUmVm
KTsKQEAgLTgxLDEwICs4MiwxMiBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgSU9TdXJmYWNl
KEludFNpemUsIENvbG9yU3BhY2UpOworICAgIElPU3VyZmFjZShJbnRTaXplLCBJbnRTaXplIGNv
bnRleHRTaXplLCBDb2xvclNwYWNlKTsKICAgICBJT1N1cmZhY2UoSU9TdXJmYWNlUmVmLCBDb2xv
clNwYWNlKTsKIAogICAgIENvbG9yU3BhY2UgbV9jb2xvclNwYWNlOwogICAgIEludFNpemUgbV9z
aXplOworICAgIEludFNpemUgbV9jb250ZXh0U2l6ZTsKICAgICBzaXplX3QgbV90b3RhbEJ5dGVz
OwogCiAgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gbV9ncmFwaGljc0NvbnRleHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2Uu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0K
aW5kZXggNWM0Y2UyZWI3OGU4NmJmZWYxYTg2YTZkYWQ4YmU3NzVjZDUxNjkxMC4uMjg3Yzc0ZDU4
OWFkNGUyNjAxOTgwMGQ0MWMzYTZhOTZjMDIyOGY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQpAQCAtNDgsNiArNDgsMTIg
QEAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGUoSW50U2l6ZSBz
aXplLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPElP
U3VyZmFjZT4obmV3IElPU3VyZmFjZShzaXplLCBjb2xvclNwYWNlKSk7CiB9CiAKK3N0ZDo6dW5p
cXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3JlYXRlKEludFNpemUgc2l6ZSwgSW50U2l6
ZSBjb250ZXh0U2l6ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQoreworICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgYmUgYWJsZSB0byBwdWxsIHN1cmZhY2VzIG91dCBvZiB0aGUgSU9TdXJmYWNlUG9v
bCBhbmQgYWRqdXN0IHRoZWlyIGNvbnRleHRTaXplLgorICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8SU9TdXJmYWNlPihuZXcgSU9TdXJmYWNlKHNpemUsIGNvbnRleHRTaXplLCBjb2xvclNwYWNl
KSk7Cit9CisKIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3JlYXRlRnJv
bVNlbmRSaWdodChjb25zdCBNYWNoU2VuZFJpZ2h0JiBzZW5kUmlnaHQsIENvbG9yU3BhY2UgY29s
b3JTcGFjZSkKIHsKICAgICBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiBzdXJmYWNlID0gYWRvcHRD
RihJT1N1cmZhY2VMb29rdXBGcm9tTWFjaFBvcnQoc2VuZFJpZ2h0LnNlbmRSaWdodCgpKSk7CkBA
IC03OCw2ICs4NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3Jl
YXRlRnJvbUltYWdlKENHSW1hZ2VSZWYgaW1hZ2UpCiBJT1N1cmZhY2U6OklPU3VyZmFjZShJbnRT
aXplIHNpemUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKICAgICA6IG1fY29sb3JTcGFjZShjb2xv
clNwYWNlKQogICAgICwgbV9zaXplKHNpemUpCisgICAgLCBtX2NvbnRleHRTaXplKHNpemUpCiB7
CiAgICAgdW5zaWduZWQgcGl4ZWxGb3JtYXQgPSAnQkdSQSc7CiAgICAgdW5zaWduZWQgYnl0ZXNQ
ZXJFbGVtZW50ID0gNDsKQEAgLTEwNSw2ICsxMTIsMTQgQEAgSU9TdXJmYWNlOjpJT1N1cmZhY2Uo
SW50U2l6ZSBzaXplLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiAgICAgbV9zdXJmYWNlID0gYWRv
cHRDRihJT1N1cmZhY2VDcmVhdGUoKENGRGljdGlvbmFyeVJlZilvcHRpb25zKSk7CiB9CiAKK0lP
U3VyZmFjZTo6SU9TdXJmYWNlKEludFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlKQorICAgIDogSU9TdXJmYWNlKHNpemUsIGNvbG9yU3BhY2UpCit7
CisgICAgQVNTRVJUKGNvbnRleHRTaXplLndpZHRoKCkgPD0gc2l6ZS53aWR0aCgpKTsKKyAgICBB
U1NFUlQoY29udGV4dFNpemUuaGVpZ2h0KCkgPD0gc2l6ZS5oZWlnaHQoKSk7CisgICAgbV9jb250
ZXh0U2l6ZSA9IGNvbnRleHRTaXplOworfQorCiBJT1N1cmZhY2U6OklPU3VyZmFjZShJT1N1cmZh
Y2VSZWYgc3VyZmFjZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogICAgIDogbV9jb2xvclNwYWNl
KGNvbG9yU3BhY2UpCiAgICAgLCBtX3N1cmZhY2Uoc3VyZmFjZSkKQEAgLTEzNiw3ICsxNTEsNyBA
QCBDR0NvbnRleHRSZWYgSU9TdXJmYWNlOjplbnN1cmVQbGF0Zm9ybUNvbnRleHQoKQogICAgIENH
Qml0bWFwSW5mbyBiaXRtYXBJbmZvID0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8
IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdDsKICAgICBzaXplX3QgYml0c1BlckNvbXBvbmVudCA9
IDg7CiAgICAgc2l6ZV90IGJpdHNQZXJQaXhlbCA9IDMyOwotICAgIG1fY2dDb250ZXh0ID0gYWRv
cHRDRihDR0lPU3VyZmFjZUNvbnRleHRDcmVhdGUobV9zdXJmYWNlLmdldCgpLCBtX3NpemUud2lk
dGgoKSwgbV9zaXplLmhlaWdodCgpLCBiaXRzUGVyQ29tcG9uZW50LCBiaXRzUGVyUGl4ZWwsIGNh
Y2hlZENHQ29sb3JTcGFjZShtX2NvbG9yU3BhY2UpLCBiaXRtYXBJbmZvKSk7CisgICAgbV9jZ0Nv
bnRleHQgPSBhZG9wdENGKENHSU9TdXJmYWNlQ29udGV4dENyZWF0ZShtX3N1cmZhY2UuZ2V0KCks
IG1fY29udGV4dFNpemUud2lkdGgoKSwgbV9jb250ZXh0U2l6ZS5oZWlnaHQoKSwgYml0c1BlckNv
bXBvbmVudCwgYml0c1BlclBpeGVsLCBjYWNoZWRDR0NvbG9yU3BhY2UobV9jb2xvclNwYWNlKSwg
Yml0bWFwSW5mbykpOwogCiAgICAgcmV0dXJuIG1fY2dDb250ZXh0LmdldCgpOwogfQpAQCAtMTQ3
LDYgKzE2Miw3IEBAIEdyYXBoaWNzQ29udGV4dCYgSU9TdXJmYWNlOjplbnN1cmVHcmFwaGljc0Nv
bnRleHQoKQogICAgICAgICByZXR1cm4gKm1fZ3JhcGhpY3NDb250ZXh0OwogCiAgICAgbV9ncmFw
aGljc0NvbnRleHQgPSBhZG9wdFB0cihuZXcgR3JhcGhpY3NDb250ZXh0KGVuc3VyZVBsYXRmb3Jt
Q29udGV4dCgpKSk7CisgICAgbV9ncmFwaGljc0NvbnRleHQtPnNldElzQWNjZWxlcmF0ZWRDb250
ZXh0KHRydWUpOwogCiAgICAgcmV0dXJuICptX2dyYXBoaWNzQ29udGV4dDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJ
T1MubW0KaW5kZXggNWRiNDY2YmYyMGY3OGIwNjczYmFmNmM5M2EzZWMwN2YzZmQzYjNjOS4uYzdl
NTk3MDU2MDU1NDFiZTY3ODMwNzk4OTdkZTJhNzdiMDAyOGIwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0K
QEAgLTcwLDExICs3MCw2IEBAIFdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldENGVVJMUmVxdWVz
dFNob3VsZENvbnRlbnRTbmlmZikoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlCiBXRUJDT1JFX0VYUE9S
VCB2b2lkICgqd2tTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24pKENGVVJMU3RvcmFnZVNlc3Npb25S
ZWYsIENGTXV0YWJsZVVSTFJlcXVlc3RSZWYpOwogI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9T
X1NJTVVMQVRPUikKLVdFQkNPUkVfRVhQT1JUIENHQ29udGV4dFJlZiAoKndrSU9TdXJmYWNlQ29u
dGV4dENyZWF0ZSkoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25l
ZCBoZWlnaHQsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKTsKLVdFQkNPUkVfRVhQT1JUIENH
SW1hZ2VSZWYgKCp3a0lPU3VyZmFjZUNvbnRleHRDcmVhdGVJbWFnZSkoQ0dDb250ZXh0UmVmIGNv
bnRleHQpOwotI2VuZGlmIC8vICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQotCiBXRUJDT1JFX0VY
UE9SVCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmICgqd2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Np
b24pKENGU3RyaW5nUmVmKTsKIFdFQkNPUkVfRVhQT1JUIE5TVVJMUmVxdWVzdCogKCp3a0NvcHlS
ZXF1ZXN0V2l0aFN0b3JhZ2VTZXNzaW9uKShDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmLCBOU1VSTFJl
cXVlc3QqKTsKIFdFQkNPUkVfRVhQT1JUIENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgKCp3a0NvcHlI
VFRQQ29va2llU3RvcmFnZSkoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAppbmRleCBi
NzY4NWQ4N2JhMThlYmE5MzNlOWVlMDNmZGZmYjQ2N2I0ZmM3MTk1Li40OWQ3ODhmNzM0MGQyODhh
ZjFhZGU1Yjc4N2VhZGI5MGZlYzg5OTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKQEAgLTIyMSwxMSArMjIxLDYgQEAg
ZXh0ZXJuIENGSFRUUE1lc3NhZ2VSZWYgKCp3a0NvcHlDT05ORUNUUHJveHlSZXNwb25zZSkoQ0ZS
ZWFkU3RyZWFtUmVmLCBDRlVSTFJlZgogZXh0ZXJuIHZvaWQqIHdrR2V0SHlwaGVuYXRpb25Mb2Nh
dGlvbkJlZm9yZUluZGV4OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKENB
KSAmJiAhUExBVEZPUk0oSU9TX1NJTVVMQVRPUikKLWV4dGVybiBDR0NvbnRleHRSZWYgKCp3a0lP
U3VyZmFjZUNvbnRleHRDcmVhdGUpKElPU3VyZmFjZVJlZiBzdXJmYWNlLCB1bnNpZ25lZCB3aWR0
aCwgdW5zaWduZWQgaGVpZ2h0LCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSk7Ci1leHRlcm4g
Q0dJbWFnZVJlZiAoKndrSU9TdXJmYWNlQ29udGV4dENyZWF0ZUltYWdlKShDR0NvbnRleHRSZWYg
Y29udGV4dCk7Ci0jZW5kaWYKLQogI2lmICFQTEFURk9STShJT1MpCiBleHRlcm4gaW50ICgqd2tS
ZWNvbW1lbmRlZFNjcm9sbGVyU3R5bGUpKHZvaWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IGJkYjk5MGQ1
ZTRjYjE1YTlmNjY3MTdiYjA3MzJhYjVjNTU0YTFjODYuLjI5NDI2MjE0ODA4NDI4OWFmMDRiZmM3
NTFmMzNjOTY1ZTlkNjdmODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC0xMDIsOSArMTAyLDYgQEAgdm9pZCAo
KndrU2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKShDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmLCBDRk11
dGFibGVVUkxSZXF1ZXN0UmUKIAogdm9pZCogd2tHZXRIeXBoZW5hdGlvbkxvY2F0aW9uQmVmb3Jl
SW5kZXg7CiAKLUNHQ29udGV4dFJlZiAoKndrSU9TdXJmYWNlQ29udGV4dENyZWF0ZSkoSU9TdXJm
YWNlUmVmIHN1cmZhY2UsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIENHQ29sb3JT
cGFjZVJlZiBjb2xvclNwYWNlKTsKLUNHSW1hZ2VSZWYgKCp3a0lPU3VyZmFjZUNvbnRleHRDcmVh
dGVJbWFnZSkoQ0dDb250ZXh0UmVmIGNvbnRleHQpOwotCiBpbnQgKCp3a1JlY29tbWVuZGVkU2Ny
b2xsZXJTdHlsZSkodm9pZCk7CiAKIGJvb2wgKCp3a0V4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQmVm
b3JlU25vd0xlb3BhcmQpKHZvaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IDBlNjdjOGI5MTk0MjFkNjVh
MDEwMDkwMTI4NTYyMDk5YzRhOTY5MmYuLjgxZGM2ZTgwYTlmMTY4ZTZhMTU2MjY1ZjNkNGM4YzEz
MmFiMmRlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTEyOCwxMCArMTI4LDYgQEAgdm9pZCBJbml0V2Vi
Q29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgIElOSVQoR2V0TWVkaWFVSUltYWdlRGF0YSk7
CiAjZW5kaWYKIAotI2lmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQotICAgIElOSVQoSU9TdXJm
YWNlQ29udGV4dENyZWF0ZSk7Ci0gICAgSU5JVChJT1N1cmZhY2VDb250ZXh0Q3JlYXRlSW1hZ2Up
OwotI2VuZGlmCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBJTklUKFJlY29tbWVuZGVkU2Nyb2xs
ZXJTdHlsZSk7CiAgICAgSU5JVChFeGVjdXRhYmxlV2FzTGlua2VkT25PckJlZm9yZVNub3dMZW9w
YXJkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQppbmRleCBhNmE0OWI2MmFj
NzhlOGI3OTI5MTBlMDU0NTMwNzg0MDNlNzQ4ZDgxLi44YzM1N2EzYzc0MGNiMTNhMjc5MTZjNzZl
NWVjNzUwYmNiMjY1MDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCkBA
IC0xMTksMTAgKzExOSw2IEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkK
ICAgICAgICAgSU5JVChTZXRNZXRhZGF0YVVSTCk7CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykK
IAotI2lmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQotICAgICAgICBJTklUKElPU3VyZmFjZUNv
bnRleHRDcmVhdGUpOwotICAgICAgICBJTklUKElPU3VyZmFjZUNvbnRleHRDcmVhdGVJbWFnZSk7
Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPU19TSU1VTEFUT1IpCiAjaWYgIVBMQVRGT1JNKElPUykK
ICAgICAgICAgSU5JVChSZWNvbW1lbmRlZFNjcm9sbGVyU3R5bGUpOwogICAgICAgICBJTklUKEV4
ZWN1dGFibGVXYXNMaW5rZWRPbk9yQmVmb3JlU25vd0xlb3BhcmQpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>