<?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>12798</bug_id>
          
          <creation_ts>2007-02-17 11:28:01 -0800</creation_ts>
          <short_desc>Resizing right-aligned textarea moves the left edge</short_desc>
          <delta_ts>2010-06-11 10:08:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adele Peterson">adele</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bdakin</cc>
    
    <cc>dbates</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>22821</commentid>
    <comment_count>0</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2007-02-17 11:28:01 -0800</bug_when>
    <thetext>Resizing right-aligned textarea moves the left edge

In the attached test case, try resizing the textarea.  It looks pretty weird when the left edge moves as you drag the lower-right corner.

Maybe we need to do more than just change the width / height when resizing.  I&apos;m not exactly sure how this would work, but maybe we can somehow keep the top/left corner pinned to the position where it started.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22818</commentid>
    <comment_count>1</comment_count>
      <attachid>13214</attachid>
    <who name="Adele Peterson">adele</who>
    <bug_when>2007-02-17 11:29:33 -0800</bug_when>
    <thetext>Created attachment 13214
 testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22819</commentid>
    <comment_count>2</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2007-02-17 11:31:11 -0800</bug_when>
    <thetext>&lt;rdar://problem/4977927&gt;

Btw, I made this a P1 since its a problem with a new feature (resize)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22807</commentid>
    <comment_count>3</comment_count>
    <who name="">mitz</who>
    <bug_when>2007-02-17 12:07:46 -0800</bug_when>
    <thetext>Bug 9223 mentions the possibility of moving the resize corner to the left for RTL textareas (which are commonly right-aligned). As long as textareas are not resizable by default, I suppose authors will not make them resizable where it would not make sense given how the feature works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21984</commentid>
    <comment_count>4</comment_count>
    <who name="">mitz</who>
    <bug_when>2007-02-23 04:11:25 -0800</bug_when>
    <thetext>My opinion is that for the time being, it would be best to limiting resizing to the vertical axis in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21972</commentid>
    <comment_count>5</comment_count>
    <who name="">mitz</who>
    <bug_when>2007-02-23 04:12:04 -0800</bug_when>
    <thetext>s/limiting/limit/
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>11776</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-04-29 01:47:56 -0700</bug_when>
    <thetext>&lt;rdar://problem/4118559&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>11777</commentid>
    <comment_count>7</comment_count>
      <attachid>14257</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-04-29 01:50:26 -0700</bug_when>
    <thetext>Created attachment 14257
patch that should help Gmail To field, doesn&apos;t resolve this bug based on title</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>11817</commentid>
    <comment_count>8</comment_count>
      <attachid>14257</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-04-29 13:55:58 -0700</bug_when>
    <thetext>Comment on attachment 14257
patch that should help Gmail To field, doesn&apos;t resolve this bug based on title

Landed this patch. Clearing the review flag since the bug isn&apos;t necessarily fixed yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>11818</commentid>
    <comment_count>9</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-04-29 14:17:12 -0700</bug_when>
    <thetext>All that code about resizing in Element.cpp is completely misplaced.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>11819</commentid>
    <comment_count>10</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-04-29 14:58:13 -0700</bug_when>
    <thetext>resize is purely presentational, so you shouldn&apos;t have to touch the DOM at all to change its behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199452</commentid>
    <comment_count>11</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-03-13 23:54:44 -0800</bug_when>
    <thetext>For completeness, the patch &lt;https://bugs.webkit.org/attachment.cgi?id=14257&gt; was committed in changeset 21184 &lt;http://trac.webkit.org/changeset/21184&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>13214</attachid>
            <date>2007-02-17 11:29:33 -0800</date>
            <delta_ts>2007-02-17 11:29:33 -0800</delta_ts>
            <desc> testcase</desc>
            <filename>textarea-align-resize.html</filename>
            <type>text/html</type>
            <size>178</size>
            <attacher name="Adele Peterson">adele</attacher>
            
              <data encoding="base64">PHRhYmxlIGJvcmRlcj0xIHN0eWxlPSJ3aWR0aDogMzAwcHgiPgogICAgPHRyIGFsaWduPSJyaWdo
dCI+CiAgICAgICAgPHRkPgogICAgICAgICAgICA8dGV4dGFyZWEgc3R5bGU9InJlc2l6ZTogaG9y
aXpvbnRhbCI+cmVzaXplIG1lITwvdGV4dGFyZWE+CiAgICAgICAgPC90ZD4KICAgIDwvdHI+Cjwv
dGFibGU+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14257</attachid>
            <date>2007-04-29 01:50:26 -0700</date>
            <delta_ts>2010-06-11 10:08:59 -0700</delta_ts>
            <desc>patch that should help Gmail To field, doesn&apos;t resolve this bug based on title</desc>
            <filename>GMailShrinkPatch.txt</filename>
            <type>text/plain</type>
            <size>35343</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMTE3OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjkgQEAKKzIwMDctMDQtMjkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gZml4
IHRoZSBHbWFpbCBwYXJ0IG9mIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyNzk4CisgICAgICAgICAgYW5kIDxyZGFyOi8vcHJvYmxlbS80MTE4NTU5PgorCisgICAgICAg
IFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGluZ3Mgc28gdGhhdCByZXNpemluZyBjYW4gbWFrZSB0aGlu
Z3MgbGFyZ2VyIHRoYW4gdGhlaXIKKyAgICAgICAgaW5pdGlhbCBzaXplLCBidXQgbm90IHNtYWxs
ZXIuIEkgYmVsaWV2ZSB0aGlzIHJlc29sdmVzIHRoZSBwcm9ibGVtIGZvciBHbWFpbCwKKyAgICAg
ICAgYnV0IHlvdSBjYW4gc3RpbGwgZ2V0IHN0cmFuZ2UgYmVoYXZpb3IgaWYgeW91IGhhdmUgYSBz
bWFsbCByaWdodC1hbGlnbmVkIDx0ZXh0YXJlYT4uCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwOiAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlc2l6ZSk6IFJld3JvdGUgdG8g
dXNlIG1vcmUKKyAgICAgICAgSW50UG9pbnQgYW5kIEludFNpemUgYW5kIGFkZCBpbiBhIG5ldyBt
aW5pbXVtLXNpemUgYWxnb3JpdGhtLiBUaGlzIGZ1bmN0aW9uIG5vdworICAgICAgICBoYXMgdGhl
IHNpZGUgZWZmZWN0IG9mIHN0b3JpbmcgYSBuZXcgbWluaW11bVNpemVGb3JSZXNpemluZyBpbiB0
aGUgZWxlbWVudCBiZWluZworICAgICAgICByZXNpemVkLCBhbmQgcmVzcGVjdHMgYW55IGV4aXN0
aW5nIG1pbmltdW0gYXMgd2VsbC4KKworICAgICAgICAqIGRvbS9FbGVtZW50Lmg6IFJlbW92ZWQg
dW5uZWVkZWQgaW5jbHVkZSBvZiBBdHRyLmgsIGFuZCBhZGRlZCBmb3J3YXJkIGRlY2xhcmF0aW9u
cworICAgICAgICBhcyBuZWVkZWQuIFJlbW92ZWQgYWxsIGZyaWVuZCBkZWNsYXJhdGlvbnM7IHRo
ZXJlIHdhcyBubyBuZWVkIGZvciBhbnkgb2YgdGhlbS4KKyAgICAgICAgVHdlYWtlZCBmb3JtYXR0
aW5nIG9mIHZhcmlvdXMgZGVjbGFyYXRpb25zIGFuZCByZW1vdmVkIHVubmVlZGVkIHBhcmFtZXRl
ciBuYW1lcy4KKyAgICAgICAgTWFkZSBhcyBtdWNoIGFzIHBvc3NpYmxlIHByaXZhdGUsIGFuZCBh
IGNvdXBsZSB0aGluZ3MgcHVibGljIHRvIGF2b2lkIHRoZSBuZWVkIGZvcgorICAgICAgICBmcmll
bmQgY2xhc3Nlcy4gQWRkZWQgbWluaW11bVNpemVGb3JSZXNpemluZywgc2V0TWluaW11bVNpemVG
b3JSZXNpemluZywgcmFyZURhdGEsCisgICAgICAgIGFuZCBjcmVhdGVSYXJlRGF0YSBmdW5jdGlv
bnMuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyYXJl
RGF0YU1hcCk6IEFkZGVkLiBGdW5jdGlvbiB0byByZXR1cm4gdGhlIHNpbmdsZSBnbG9iYWwgbWFw
LgorICAgICAgICAoV2ViQ29yZTo6cmFyZURhdGFGcm9tTWFwKTogQWRkZWQuIEZvciB1c2UgYnkg
aW5saW5lZCBmdW5jdGlvbnMgdG8gZ2V0IHRoZQorICAgICAgICBkYXRhIGZyb20gdGhlIG1hcCBp
biB0aGUgY2FzZSB3aGVyZSBpdCdzIHByZXNlbnQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6fkVsZW1lbnQpOiBBZGRlZCBjb2RlIHRvIGRlbGV0ZSB0aGUgZWxlbWVudCBmcm9tIHRo
ZSByYXJlCisgICAgICAgIGRhdGEgbWFwIHdoZW4gYXBwcm9wcmlhdGUuCisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjpyYXJlRGF0YSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6Y3JlYXRlUmFyZURhdGEpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNl
dEF0dHJpYnV0ZU5vZGVOUyk6IEdvdCByaWQgb2YgdGhlIG9sZCBpbmxpbmUgdmVyc2lvbiBvZiB0
aGlzLAorICAgICAgICBzaW5jZSBpdCB3YXMgdGhlIHNvbGUgcmVhc29uIHdlIGhhZCB0byBpbmNs
dWRlIEF0dHIuaCBpbiBFbGVtZW50LmguCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjptaW5p
bXVtU2l6ZUZvclJlc2l6aW5nKTogQWRkZWQuIEFjY2Vzc2VzIHJhcmUgZGF0YS4KKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OnNldE1pbmltdW1TaXplRm9yUmVzaXppbmcpOiBEaXR0by4KKwor
ICAgICAgICAqIGRvbS9Ob2RlLmg6IFJlbmFtZWQgdGhlIG1fc3BlY2lmaWVkIGJpdCBzaW5jZSBp
dCdzIG5vdyB1c2VkIGZvciB0d28gcHVycG9zZXMuCisgICAgICAgIEl0cyBuZXcgbG9uZyBuYW1l
IGlzIG1fYXR0cldhc1NwZWNpZmllZE9yRWxlbWVudEhhc1JhcmVEYXRhLgorCisgICAgICAgICog
ZG9tL0F0dHIuY3BwOiAoV2ViQ29yZTo6QXR0cjo6QXR0cik6IFVwZGF0ZWQgZm9yIGJpdCBuYW1l
IGNoYW5nZS4KKyAgICAgICAgKiBkb20vQXR0ci5oOgorICAgICAgICAoV2ViQ29yZTo6QXR0cjo6
c3BlY2lmaWVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBdHRyOjpzZXRTcGVjaWZpZWQp
OiBBZGRlZCwgc2luY2Ugc2V0dGluZyB0aGUgYml0IGRpcmVjdGx5IGlzIHByZXR0eSB1Z2x5IG5v
dy4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOiAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkb3B0
Tm9kZSk6IFVwZGF0ZWQgZm9yIGJpdCBuYW1lIGNoYW5nZS4KKyAgICAgICAgKiBkb20vTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpOb2RlKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpkdW1wKTogRGl0dG8uCisKKyAgICAgICAgKiBkb20vTmFtZWRBdHRyTWFwLmNw
cDogKFdlYkNvcmU6Ok5hbWVkQXR0ck1hcDo6aXNSZWFkT25seU5vZGUpOiBNb3ZlZCBvdXQgb2Yg
bGluZSwKKyAgICAgICAgc2luY2UgdGhpcyB3YXMgdGhlIHNvbGUgcmVhc29uIHdlIGhhZCB0byBp
bmNsdWRlIEVsZW1lbnQuaCBpbiBOYW1lZEF0dHJNYXAuaC4KKworICAgICAgICAqIGh0bWwvSFRN
TEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6Om5vZGVOYW1lKTog
Q2hhbmdlZCB0byB1c2UgdGFnUU5hbWUoKSBzaW5jZSB0aGF0J3MgYSBwdWJsaWMKKyAgICAgICAg
d2F5IHRvIGRvIHNvbWV0aGluZyB0aGF0J3Mgbm93IHByaXZhdGUuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRWxlbWVudDo6Y2xvbmVOb2RlKTogRGl0dG8uCisKKyAgICAgICAgKiBkb20vQXR0cmli
dXRlLmNwcDoKKyAgICAgICAgKiBkb20vTmFtZWRBdHRyTWFwLmg6CisgICAgICAgICogZG9tL05h
bWVkTWFwcGVkQXR0ck1hcC5jcHA6CisgICAgICAgICogZG9tL1N0eWxlZEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL0hUTUxUb2tlbml6ZXIuaDoKKyAgICAgICAgKiB4bWwvWFBhdGhGdW5jdGlv
bnMuY3BwOgorICAgICAgICAqIHhtbC9YUGF0aFN0ZXAuY3BwOgorICAgICAgICBVcGRhdGVkIGlu
Y2x1ZGVzLCBhbmQgb3RoZXIgYWRtaW5pc3RyaXZpYS4KKwogMjAwNy0wNC0yOCAgTWFjaWVqIFN0
YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIGFu
ZCBPbGl2ZXIuCkluZGV4OiBXZWJDb3JlL2RvbS9BdHRyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9BdHRyLmNwcAkocmV2aXNpb24gMjExNzApCisrKyBXZWJDb3JlL2RvbS9BdHRyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMSw5IEBACi0vKioKLSAqIFRoaXMgZmlsZSBpcyBw
YXJ0IG9mIHRoZSBET00gaW1wbGVtZW50YXRpb24gZm9yIEtERS4KLSAqCisvKgogICogQ29weXJp
Z2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMp
IDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMp
IDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqICAgICAgICAgICAoQykgMjAwMSBE
aXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtNDAsNyArMzgsNyBAQCBBdHRyOjpBdHRyKEVsZW1lbnQqIGVsZW1lbnQsIERv
Y3VtZW50KiBkCiB7CiAgICAgQVNTRVJUKCFtX2F0dHJpYnV0ZS0+YXR0cigpKTsKICAgICBtX2F0
dHJpYnV0ZS0+bV9pbXBsID0gdGhpczsKLSAgICBtX3NwZWNpZmllZCA9IHRydWU7CisgICAgbV9h
dHRyV2FzU3BlY2lmaWVkT3JFbGVtZW50SGFzUmFyZURhdGEgPSB0cnVlOwogfQogCiBBdHRyOjp+
QXR0cigpCkluZGV4OiBXZWJDb3JlL2RvbS9BdHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vQXR0ci5oCShyZXZpc2lvbiAyMTE3MCkKKysrIFdlYkNvcmUvZG9tL0F0dHIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMSArMSw5IEBACiAvKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IERPTSBpbXBsZW1lbnRhdGlvbiBmb3IgS0RFLgotICoKICAqIENvcHlyaWdodCAoQykgMTk5OSBM
YXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtv
aXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAxIFBldGVyIEtl
bGx5IChwbWtAcG9zdC5jb20pCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyICht
dWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYg
QXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTMyLDcgKzMwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0KIC8vIHRo
aXMgaGFzIG5vIGNvdW50ZXJwYXJ0IGluIERPTSwgcHVyZWx5IGludGVybmFsCiAvLyByZXByZXNl
bnRhdGlvbiBvZiB0aGUgbm9kZXZhbHVlIG9mIGFuIEF0dHIuCiAvLyB0aGUgYWN0dWFsIEF0dHIg
KEF0dHIpIHdpdGggaXRzIHZhbHVlIGFzIHRleHRjaGlsZApAQCAtNTgsNyArNTUsNyBAQCBwdWJs
aWM6CiAgICAgCiAgICAgLy8gRE9NIG1ldGhvZHMgJiBhdHRyaWJ1dGVzIGZvciBBdHRyCiAgICAg
U3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBxdWFsaWZpZWROYW1lKCkudG9TdHJpbmcoKTsg
fQotICAgIGJvb2wgc3BlY2lmaWVkKCkgY29uc3QgeyByZXR1cm4gbV9zcGVjaWZpZWQ7IH0KKyAg
ICBib29sIHNwZWNpZmllZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cldhc1NwZWNpZmllZE9yRWxl
bWVudEhhc1JhcmVEYXRhOyB9CiAgICAgRWxlbWVudCogb3duZXJFbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9lbGVtZW50OyB9CiAKICAgICBTdHJpbmcgdmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X2F0dHJpYnV0ZS0+dmFsdWUoKTsgfQpAQCAtODksNiArODYsOCBAQCBwdWJsaWM6CiAgICAgLy8g
QW4gZXh0ZW5zaW9uIHRvIGdldCBwcmVzZW50YXRpb25hbCBpbmZvcm1hdGlvbiBmb3IgYXR0cmli
dXRlcy4KICAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSgpIHsgcmV0dXJuIG1fYXR0cmli
dXRlLT5zdHlsZSgpOyB9CiAKKyAgICB2b2lkIHNldFNwZWNpZmllZChib29sIHNwZWNpZmllZCkg
eyBtX2F0dHJXYXNTcGVjaWZpZWRPckVsZW1lbnRIYXNSYXJlRGF0YSA9IHNwZWNpZmllZDsgfQor
CiBwcml2YXRlOgogICAgIEVsZW1lbnQqIG1fZWxlbWVudDsKICAgICBSZWZQdHI8QXR0cmlidXRl
PiBtX2F0dHJpYnV0ZTsKSW5kZXg6IFdlYkNvcmUvZG9tL0F0dHJpYnV0ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vQXR0cmlidXRlLmNwcAkocmV2aXNpb24gMjExNzApCisrKyBXZWJD
b3JlL2RvbS9BdHRyaWJ1dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICsxLDkgQEAKLS8q
KgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIERPTSBpbXBsZW1lbnRhdGlvbiBmb3IgS0RF
LgotICoKKy8qCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9y
ZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9y
ZykKICAqICAgICAgICAgICAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICog
ICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNiw2ICsyNCw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAKKyNpbmNsdWRlICJBdHRyLmgiCiAj
aW5jbHVkZSAiRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNyw3ICszNiw3
IEBAIEF0dHJpYnV0ZSogQXR0cmlidXRlOjpjbG9uZShib29sKSBjb25zdAogCiBQYXNzUmVmUHRy
PEF0dHI+IEF0dHJpYnV0ZTo6Y3JlYXRlQXR0cklmTmVlZGVkKEVsZW1lbnQqIGUpCiB7Ci0gICAg
UmVmUHRyPEF0dHI+IHIobV9pbXBsKTsKKyAgICBSZWZQdHI8QXR0cj4gciA9IG1faW1wbDsKICAg
ICBpZiAoIXIpIHsKICAgICAgICAgciA9IG5ldyBBdHRyKGUsIGUtPmRvY3VtZW50KCksIHRoaXMp
OwogICAgICAgICByLT5jcmVhdGVUZXh0Q2hpbGQoKTsKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9u
IDIxMTcwKQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
MzUsNyArNjM1LDcgQEAgUGFzc1JlZlB0cjxOb2RlPiBEb2N1bWVudDo6YWRvcHROb2RlKFBhcwog
ICAgICAgICAgICAgQXR0ciogYXR0ciA9IHN0YXRpY19jYXN0PEF0dHIqPihzb3VyY2UuZ2V0KCkp
OwogICAgICAgICAgICAgaWYgKGF0dHItPm93bmVyRWxlbWVudCgpKQogICAgICAgICAgICAgICAg
IGF0dHItPm93bmVyRWxlbWVudCgpLT5yZW1vdmVBdHRyaWJ1dGVOb2RlKGF0dHIsIGVjKTsKLSAg
ICAgICAgICAgIGF0dHItPm1fc3BlY2lmaWVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGF0dHItPm1f
YXR0cldhc1NwZWNpZmllZE9yRWxlbWVudEhhc1JhcmVEYXRhID0gdHJ1ZTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9ICAgICAgIAogICAgICAgICBkZWZhdWx0OgpJbmRleDogV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDIxMTcwKQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTEgKzEsOSBAQAotLyoqCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRE9N
IGltcGxlbWVudGF0aW9uIGZvciBLREUuCi0gKgorLyoKICAqIENvcHlyaWdodCAoQykgMTk5OSBM
YXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtv
aXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAxIFBldGVyIEtl
bGx5IChwbWtAcG9zdC5jb20pCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyICht
dWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUg
Q29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQ5
LDYgKzQ3LDMyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CiB1c2luZyBuYW1lc3BhY2UgWE1MTmFtZXM7CiAKK3N0YXRpYyBjb25zdCBJbnRTaXplIGRl
ZmF1bHRNaW5pbXVtU2l6ZUZvclJlc2l6aW5nKElOVF9NQVgsIElOVF9NQVgpOworCitjbGFzcyBF
bGVtZW50UmFyZURhdGEgeworcHVibGljOgorICAgIEVsZW1lbnRSYXJlRGF0YShFbGVtZW50Kik7
CisgICAgSW50U2l6ZSBtX21pbmltdW1TaXplRm9yUmVzaXppbmc7Cit9OworCit0eXBlZGVmIEhh
c2hNYXA8Y29uc3QgRWxlbWVudCosIEVsZW1lbnRSYXJlRGF0YSo+IEVsZW1lbnRSYXJlRGF0YU1h
cDsKKworc3RhdGljIEVsZW1lbnRSYXJlRGF0YU1hcCYgcmFyZURhdGFNYXAoKQoreworICAgIHN0
YXRpYyBFbGVtZW50UmFyZURhdGFNYXAqIGRhdGFNYXAgPSBuZXcgRWxlbWVudFJhcmVEYXRhTWFw
OworICAgIHJldHVybiAqZGF0YU1hcDsKK30KKworc3RhdGljIEVsZW1lbnRSYXJlRGF0YSogcmFy
ZURhdGFGcm9tTWFwKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIHJhcmVE
YXRhTWFwKCkuZ2V0KGVsZW1lbnQpOworfQorCitpbmxpbmUgRWxlbWVudFJhcmVEYXRhOjpFbGVt
ZW50UmFyZURhdGEoRWxlbWVudCogZWxlbWVudCkKKyAgICA6IG1fbWluaW11bVNpemVGb3JSZXNp
emluZyhkZWZhdWx0TWluaW11bVNpemVGb3JSZXNpemluZykKK3sKK30KKwogRWxlbWVudDo6RWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSwgRG9jdW1lbnQgKmRvYykKICAgICA6IENv
bnRhaW5lck5vZGUoZG9jKQogICAgICwgbV91cGRhdGVGb2N1c0FwcGVhcmFuY2VUaW1lcih0aGlz
LCAmRWxlbWVudDo6dXBkYXRlRm9jdXNBcHBlYXJhbmNlVGltZXJGaXJlZCkKQEAgLTYxLDYgKzg1
LDM3IEBAIEVsZW1lbnQ6On5FbGVtZW50KCkKIHsKICAgICBpZiAobmFtZWRBdHRyTWFwKQogICAg
ICAgICBuYW1lZEF0dHJNYXAtPmRldGFjaEZyb21FbGVtZW50KCk7CisKKyAgICBpZiAoIW1fYXR0
cldhc1NwZWNpZmllZE9yRWxlbWVudEhhc1JhcmVEYXRhKQorICAgICAgICBBU1NFUlQoIXJhcmVE
YXRhTWFwKCkuY29udGFpbnModGhpcykpOworICAgIGVsc2UgeworICAgICAgICBFbGVtZW50UmFy
ZURhdGFNYXAmIGRhdGFNYXAgPSByYXJlRGF0YU1hcCgpOworICAgICAgICBFbGVtZW50UmFyZURh
dGFNYXA6Oml0ZXJhdG9yIGl0ID0gZGF0YU1hcC5maW5kKHRoaXMpOworICAgICAgICBBU1NFUlQo
aXQgIT0gZGF0YU1hcC5lbmQoKSk7CisgICAgICAgIGRlbGV0ZSBpdC0+c2Vjb25kOworICAgICAg
ICBkYXRhTWFwLnJlbW92ZShpdCk7CisgICAgfQorfQorCitpbmxpbmUgRWxlbWVudFJhcmVEYXRh
KiBFbGVtZW50OjpyYXJlRGF0YSgpCit7CisgICAgcmV0dXJuIG1fYXR0cldhc1NwZWNpZmllZE9y
RWxlbWVudEhhc1JhcmVEYXRhID8gcmFyZURhdGFGcm9tTWFwKHRoaXMpIDogMDsKK30KKworaW5s
aW5lIGNvbnN0IEVsZW1lbnRSYXJlRGF0YSogRWxlbWVudDo6cmFyZURhdGEoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2F0dHJXYXNTcGVjaWZpZWRPckVsZW1lbnRIYXNSYXJlRGF0YSA/IHJhcmVE
YXRhRnJvbU1hcCh0aGlzKSA6IDA7Cit9CisKK0VsZW1lbnRSYXJlRGF0YSogRWxlbWVudDo6Y3Jl
YXRlUmFyZURhdGEoKQoreworICAgIGlmIChtX2F0dHJXYXNTcGVjaWZpZWRPckVsZW1lbnRIYXNS
YXJlRGF0YSkKKyAgICAgICAgcmV0dXJuIHJhcmVEYXRhTWFwKCkuZ2V0KHRoaXMpOworICAgIEFT
U0VSVCghcmFyZURhdGFNYXAoKS5jb250YWlucyh0aGlzKSk7CisgICAgRWxlbWVudFJhcmVEYXRh
KiBkYXRhID0gbmV3IEVsZW1lbnRSYXJlRGF0YSh0aGlzKTsKKyAgICByYXJlRGF0YU1hcCgpLnNl
dCh0aGlzLCBkYXRhKTsKKyAgICBtX2F0dHJXYXNTcGVjaWZpZWRPckVsZW1lbnRIYXNSYXJlRGF0
YSA9IHRydWU7CisgICAgcmV0dXJuIGRhdGE7CiB9CiAKIFBhc3NSZWZQdHI8Tm9kZT4gRWxlbWVu
dDo6Y2xvbmVOb2RlKGJvb2wgZGVlcCkKQEAgLTgxNSw2ICs4NzAsMTIgQEAgUGFzc1JlZlB0cjxB
dHRyPiBFbGVtZW50OjpzZXRBdHRyaWJ1dGVObwogICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9j
YXN0PEF0dHI+KGF0dHJpYnV0ZXMoZmFsc2UpLT5zZXROYW1lZEl0ZW0oYXR0ciwgZWMpKTsKIH0K
IAorUGFzc1JlZlB0cjxBdHRyPiBFbGVtZW50OjpzZXRBdHRyaWJ1dGVOb2RlTlMoQXR0ciogYXR0
ciwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgQVNTRVJUKGF0dHIpOworICAgIHJldHVybiBz
dGF0aWNfcG9pbnRlcl9jYXN0PEF0dHI+KGF0dHJpYnV0ZXMoZmFsc2UpLT5zZXROYW1lZEl0ZW0o
YXR0ciwgZWMpKTsKK30KKwogUGFzc1JlZlB0cjxBdHRyPiBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1
dGVOb2RlKEF0dHIgKmF0dHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghYXR0ciB8
fCBhdHRyLT5vd25lckVsZW1lbnQoKSAhPSB0aGlzKSB7CkBAIC05ODUsNCArMTA0NiwxNyBAQCBT
dHJpbmcgRWxlbWVudDo6dGl0bGUoKSBjb25zdAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAor
SW50U2l6ZSBFbGVtZW50OjptaW5pbXVtU2l6ZUZvclJlc2l6aW5nKCkgY29uc3QKK3sKKyAgICBj
b25zdCBFbGVtZW50UmFyZURhdGEqIHJkID0gcmFyZURhdGEoKTsKKyAgICByZXR1cm4gcmQgPyBy
ZC0+bV9taW5pbXVtU2l6ZUZvclJlc2l6aW5nIDogZGVmYXVsdE1pbmltdW1TaXplRm9yUmVzaXpp
bmc7Cit9CisKK3ZvaWQgRWxlbWVudDo6c2V0TWluaW11bVNpemVGb3JSZXNpemluZyhjb25zdCBJ
bnRTaXplJiBzaXplKQoreworICAgIGlmIChzaXplID09IGRlZmF1bHRNaW5pbXVtU2l6ZUZvclJl
c2l6aW5nICYmICFyYXJlRGF0YSgpKQorICAgICAgICByZXR1cm47CisgICAgY3JlYXRlUmFyZURh
dGEoKS0+bV9taW5pbXVtU2l6ZUZvclJlc2l6aW5nID0gc2l6ZTsKK30KKwogfQpJbmRleDogV2Vi
Q29yZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuaAko
cmV2aXNpb24gMjExNzApCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTEgKzEsOSBAQAogLyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBET00gaW1w
bGVtZW50YXRpb24gZm9yIEtERS4KLSAqCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9s
bCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAo
a29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBQZXRlciBLZWxseSAocG1r
QHBvc3QuY29tKQogICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBr
ZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIENv
bXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0yNywyMSArMjUsMjEgQEAKICNpZm5kZWYgRWxlbWVudF9oCiAjZGVmaW5lIEVsZW1lbnRfaAog
Ci0jaW5jbHVkZSAiQXR0ci5oIgorI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKKyNpbmNsdWRl
ICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJU
aW1lci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF0b21pY1N0cmluZ0xpc3Q7
CitjbGFzcyBBdHRyOwogY2xhc3MgQXR0cmlidXRlOworY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlv
bjsKK2NsYXNzIEVsZW1lbnRSYXJlRGF0YTsKK2NsYXNzIEludFNpemU7CiAKIGNsYXNzIEVsZW1l
bnQgOiBwdWJsaWMgQ29udGFpbmVyTm9kZSB7Ci0gICAgZnJpZW5kIGNsYXNzIERvY3VtZW50Owot
ICAgIGZyaWVuZCBjbGFzcyBOYW1lZEF0dHJNYXA7Ci0gICAgZnJpZW5kIGNsYXNzIEF0dHI7Ci0g
ICAgZnJpZW5kIGNsYXNzIE5vZGU7Ci0gICAgZnJpZW5kIGNsYXNzIENTU1N0eWxlU2VsZWN0b3I7
CiBwdWJsaWM6CiAgICAgRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsK
ICAgICB+RWxlbWVudCgpOwpAQCAtNDksMTAgKzQ3LDEwIEBAIHB1YmxpYzoKICAgICAvLyBVc2Vk
IHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGFuIGVsZW1lbnQgaGFzIGEgZ2l2
ZW4gQ1NTIGNsYXNzLgogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nTGlzdCogZ2V0Q2xh
c3NMaXN0KCkgY29uc3Q7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRJREF0dHJpYnV0ZSgp
IGNvbnN0OwotICAgIGJvb2wgaGFzQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUp
IGNvbnN0OwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUpIGNvbnN0OwotICAgIHZvaWQgc2V0QXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIFN0cmluZ0ltcGwqIHZhbHVlLCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
dm9pZCByZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgRXhjZXB0aW9u
Q29kZSYpOworICAgIGJvb2wgaGFzQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25z
dDsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJikgY29uc3Q7CisgICAgdm9pZCBzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IFN0cmluZ0ltcGwqIHZhbHVlLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCByZW1vdmVBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIGJvb2wg
aGFzQXR0cmlidXRlcygpIGNvbnN0OwogCkBAIC04OCwxNiArODYsMTYgQEAgcHVibGljOgogICAg
IGludCBzY3JvbGxXaWR0aCgpOwogICAgIGludCBzY3JvbGxIZWlnaHQoKTsKIAotICAgIHZvaWQg
cmVtb3ZlQXR0cmlidXRlKGNvbnN0IFN0cmluZyAmbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpOwot
ICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlTlMoY29uc3QgU3RyaW5nICZuYW1lc3BhY2VVUkksIGNv
bnN0IFN0cmluZyYgbG9jYWxOYW1lLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCByZW1vdmVB
dHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBy
ZW1vdmVBdHRyaWJ1dGVOUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5n
JiBsb2NhbE5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFBhc3NSZWZQdHI8QXR0cj4gZ2V0
QXR0cmlidXRlTm9kZShjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIFBhc3NSZWZQdHI8QXR0cj4g
Z2V0QXR0cmlidXRlTm9kZU5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJp
bmcmIGxvY2FsTmFtZSk7CiAgICAgUGFzc1JlZlB0cjxBdHRyPiBzZXRBdHRyaWJ1dGVOb2RlKEF0
dHIqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxBdHRyPiBzZXRBdHRyaWJ1dGVO
b2RlTlMoQXR0ciogbmV3QXR0ciwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIHNldEF0dHJp
YnV0ZU5vZGUobmV3QXR0ciwgZWMpOyB9CisgICAgUGFzc1JlZlB0cjxBdHRyPiBzZXRBdHRyaWJ1
dGVOb2RlTlMoQXR0ciosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPEF0dHI+IHJl
bW92ZUF0dHJpYnV0ZU5vZGUoQXR0ciosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAKLSAgICB2aXJ0
dWFsIENTU1N0eWxlRGVjbGFyYXRpb24gKnN0eWxlKCk7CisgICAgdmlydHVhbCBDU1NTdHlsZURl
Y2xhcmF0aW9uKiBzdHlsZSgpOwogCiAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnUU5hbWUo
KSBjb25zdCB7IHJldHVybiBtX3RhZ05hbWU7IH0KICAgICBTdHJpbmcgdGFnTmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG5vZGVOYW1lKCk7IH0KQEAgLTEyNSwzNyArMTIzLDM3IEBAIHB1YmxpYzoKICAg
ICBTdHJpbmcgbm9kZU5hbWVQcmVzZXJ2aW5nQ2FzZSgpIGNvbnN0OwogCiAgICAgLy8gY29udmVu
aWVuY2UgbWV0aG9kcyB3aGljaCBpZ25vcmUgZXhjZXB0aW9ucwotICAgIHZvaWQgc2V0QXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOworICAg
IHZvaWQgc2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmIHZh
bHVlKTsKIAotICAgIHZpcnR1YWwgTmFtZWRBdHRyTWFwICphdHRyaWJ1dGVzKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBOYW1lZEF0dHJNYXAqIGF0dHJpYnV0ZXMoKSBjb25zdDsKICAgICBOYW1lZEF0
dHJNYXAqIGF0dHJpYnV0ZXMoYm9vbCByZWFkb25seSkgY29uc3Q7CiAKICAgICAvLyBUaGlzIG1l
dGhvZCBpcyBjYWxsZWQgd2hlbmV2ZXIgYW4gYXR0cmlidXRlIGlzIGFkZGVkLCBjaGFuZ2VkIG9y
IHJlbW92ZWQuCi0gICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKiBh
dHRyLCBib29sIHByZXNlcnZlRGVjbHMgPSBmYWxzZSkge30KKyAgICB2aXJ0dWFsIHZvaWQgYXR0
cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqLCBib29sIHByZXNlcnZlRGVjbHMgPSBmYWxzZSkge30K
IAogICAgIC8vIG5vdCBwYXJ0IG9mIHRoZSBET00KICAgICB2b2lkIHNldEF0dHJpYnV0ZU1hcChO
YW1lZEF0dHJNYXAqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBjb3B5Tm9uQXR0cmlidXRlUHJvcGVy
dGllcyhjb25zdCBFbGVtZW50ICpzb3VyY2UpIHt9CisgICAgdmlydHVhbCB2b2lkIGNvcHlOb25B
dHRyaWJ1dGVQcm9wZXJ0aWVzKGNvbnN0IEVsZW1lbnQqIHNvdXJjZSkge30KIAogICAgIHZpcnR1
YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7Ci0gICAgdmlydHVh
bCBSZW5kZXJTdHlsZSAqc3R5bGVGb3JSZW5kZXJlcihSZW5kZXJPYmplY3QgKnBhcmVudCk7Ci0g
ICAgdmlydHVhbCBSZW5kZXJPYmplY3QgKmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hICosIFJl
bmRlclN0eWxlICopOwotICAgIHZpcnR1YWwgdm9pZCByZWNhbGNTdHlsZSggU3R5bGVDaGFuZ2Ug
PSBOb0NoYW5nZSApOworICAgIHZpcnR1YWwgUmVuZGVyU3R5bGUqIHN0eWxlRm9yUmVuZGVyZXIo
UmVuZGVyT2JqZWN0KiBwYXJlbnQpOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVS
ZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCB2b2lkIHJl
Y2FsY1N0eWxlKFN0eWxlQ2hhbmdlID0gTm9DaGFuZ2UpOwogCiAgICAgdmlydHVhbCBib29sIGNo
aWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpOwogCiAgICAgdmlydHVhbCBBdHRyaWJ1dGUqIGNyZWF0
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBTdHJpbmdJbXBsKiB2YWx1ZSk7
CiAgICAgCi0gICAgdm9pZCBkaXNwYXRjaEF0dHJSZW1vdmFsRXZlbnQoQXR0cmlidXRlICphdHRy
KTsKLSAgICB2b2lkIGRpc3BhdGNoQXR0ckFkZGl0aW9uRXZlbnQoQXR0cmlidXRlICphdHRyKTsK
KyAgICB2b2lkIGRpc3BhdGNoQXR0clJlbW92YWxFdmVudChBdHRyaWJ1dGUqKTsKKyAgICB2b2lk
IGRpc3BhdGNoQXR0ckFkZGl0aW9uRXZlbnQoQXR0cmlidXRlKik7CiAKICAgICB2aXJ0dWFsIHZv
aWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZFRvQW55RXZlbnQpIHsgfQogCiAgICAgdmlydHVh
bCBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJp
YnV0ZShBdHRyaWJ1dGUgKmF0dHIpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJp
YnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyB0YXJnZXQoKSBjb25z
dCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZm9jdXMo
Ym9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24gPSB0cnVlKTsKQEAgLTE2MywxMyArMTYxLDEz
IEBAIHB1YmxpYzoKICAgICB2b2lkIGJsdXIoKTsKICAgICBib29sIG5lZWRzRm9jdXNBcHBlYXJh
bmNlVXBkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0ZvY3VzQXBwZWFyYW5jZVVwZGF0ZTsg
fQogICAgIHZvaWQgc2V0TmVlZHNGb2N1c0FwcGVhcmFuY2VVcGRhdGUoYm9vbCBiKSB7IG1fbmVl
ZHNGb2N1c0FwcGVhcmFuY2VVcGRhdGUgPSBiOyB9Ci0gICAgCisKICNpZm5kZWYgTkRFQlVHCi0g
ICAgdmlydHVhbCB2b2lkIGR1bXAoVGV4dFN0cmVhbSAqc3RyZWFtLCBEZXByZWNhdGVkU3RyaW5n
IGluZCA9ICIiKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgZm9ybWF0Rm9yRGVidWdnZXIoY2hh
ciAqYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBkdW1w
KFRleHRTdHJlYW0qICwgRGVwcmVjYXRlZFN0cmluZyBpbmQgPSAiIikgY29uc3Q7CisgICAgdmly
dHVhbCB2b2lkIGZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3Ro
KSBjb25zdDsKICNlbmRpZgogCi0gICAgTm9kZSogaW5zZXJ0QWRqYWNlbnRFbGVtZW50KGNvbnN0
IFN0cmluZyYgd2hlcmUsIE5vZGUqIG5ld0NoaWxkLCBpbnQmIGV4Y2VwdGlvbik7CisgICAgTm9k
ZSogaW5zZXJ0QWRqYWNlbnRFbGVtZW50KGNvbnN0IFN0cmluZyYgd2hlcmUsIE5vZGUqIG5ld0No
aWxkLCBFeGNlcHRpb25Db2RlJik7CiAgICAgYm9vbCBjb250YWlucyhjb25zdCBOb2RlKikgY29u
c3Q7CiAKICAgICBTdHJpbmcgaW5uZXJUZXh0KCkgY29uc3Q7CkBAIC0xNzcsMTMgKzE3NSwyMCBA
QCBwdWJsaWM6CiAgCiAgICAgdmlydHVhbCBTdHJpbmcgdGl0bGUoKSBjb25zdDsKIAotcHJvdGVj
dGVkOgotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVBdHRyaWJ1dGVNYXAoKSBjb25zdDsKICAgICBT
dHJpbmcgb3BlblRhZ1N0YXJ0VG9TdHJpbmcoKSBjb25zdDsKIAotcHJpdmF0ZToKICAgICB2b2lk
IHVwZGF0ZUlkKGNvbnN0IEF0b21pY1N0cmluZyYgb2xkSWQsIGNvbnN0IEF0b21pY1N0cmluZyYg
bmV3SWQpOwogCisgICAgSW50U2l6ZSBtaW5pbXVtU2l6ZUZvclJlc2l6aW5nKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXRNaW5pbXVtU2l6ZUZvclJlc2l6aW5nKGNvbnN0IEludFNpemUmKTsKKworcHJp
dmF0ZToKKyAgICBFbGVtZW50UmFyZURhdGEqIHJhcmVEYXRhKCk7CisgICAgY29uc3QgRWxlbWVu
dFJhcmVEYXRhKiByYXJlRGF0YSgpIGNvbnN0OworICAgIEVsZW1lbnRSYXJlRGF0YSogY3JlYXRl
UmFyZURhdGEoKTsKKworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVBdHRyaWJ1dGVNYXAoKSBjb25z
dDsKKwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdHlsZUF0dHJpYnV0ZUlmTmVlZGVkKCkgY29u
c3Qge30KICAgICAKICAgICB2b2lkIHVwZGF0ZUZvY3VzQXBwZWFyYW5jZVRpbWVyRmlyZWQoVGlt
ZXI8RWxlbWVudD4qKTsKQEAgLTE5MSw4ICsxOTYsMTAgQEAgcHJpdmF0ZToKICAgICBUaW1lcjxF
bGVtZW50PiBtX3VwZGF0ZUZvY3VzQXBwZWFyYW5jZVRpbWVyOwogICAgIGJvb2wgbV9uZWVkc0Zv
Y3VzQXBwZWFyYW5jZVVwZGF0ZTsKIAotcHJvdGVjdGVkOiAvLyBtZW1iZXIgdmFyaWFibGVzCitw
cm90ZWN0ZWQ6CiAgICAgbXV0YWJsZSBSZWZQdHI8TmFtZWRBdHRyTWFwPiBuYW1lZEF0dHJNYXA7
CisKK3ByaXZhdGU6CiAgICAgUXVhbGlmaWVkTmFtZSBtX3RhZ05hbWU7CiB9OwogCkluZGV4OiBX
ZWJDb3JlL2RvbS9OYW1lZEF0dHJNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05h
bWVkQXR0ck1hcC5jcHAJKHJldmlzaW9uIDIxMTcwKQorKysgV2ViQ29yZS9kb20vTmFtZWRBdHRy
TWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMSw5IEBACi0vKioKLSAqIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBET00gaW1wbGVtZW50YXRpb24gZm9yIEtERS4KLSAqCisvKgogICog
Q29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAg
ICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAg
ICAgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqICAgICAgICAgICAoQykg
MjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwpAQCAtMjIsMTAgKzIwLDEyIEBACiAgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCiAgKiBCb3N0b24s
IE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLworCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiTmFtZWRBdHRyTWFwLmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkVs
ZW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAKQEAgLTM1OCw0ICszNTgsOSBAQCBib29sIE5hbWVkQXR0ck1hcDo6bWFwc0VxdWl2YWxl
bnQoY29uc3QgCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgTmFtZWRBdHRyTWFwOjppc1Jl
YWRPbmx5Tm9kZSgpCit7CisgICAgcmV0dXJuIGVsZW1lbnQgJiYgZWxlbWVudC0+aXNSZWFkT25s
eU5vZGUoKTsKK30KKwogfQpJbmRleDogV2ViQ29yZS9kb20vTmFtZWRBdHRyTWFwLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9kb20vTmFtZWRBdHRyTWFwLmgJKHJldmlzaW9uIDIxMTcwKQorKysg
V2ViQ29yZS9kb20vTmFtZWRBdHRyTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcg
QEAKICNpZm5kZWYgTmFtZWRBdHRyTWFwX2gKICNkZWZpbmUgTmFtZWRBdHRyTWFwX2gKIAotI2lu
Y2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJOYW1l
ZE5vZGVNYXAuaCIKIAogI2lmZGVmIF9fT0JKQ19fCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIE5hbWVkQXR0ck1hcCA6IHB1YmxpYyBOYW1lZE5vZGVNYXAgewog
ICAgIGZyaWVuZCBjbGFzcyBFbGVtZW50OwogcHVibGljOgotICAgIE5hbWVkQXR0ck1hcChFbGVt
ZW50ICplKTsKKyAgICBOYW1lZEF0dHJNYXAoRWxlbWVudCopOwogICAgIHZpcnR1YWwgfk5hbWVk
QXR0ck1hcCgpOwogICAgIE5hbWVkQXR0ck1hcChjb25zdCBOYW1lZEF0dHJNYXAmKTsKICAgICBO
YW1lZEF0dHJNYXAgJm9wZXJhdG9yID0oY29uc3QgTmFtZWRBdHRyTWFwICZvdGhlcik7CkBAIC02
NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZUl0ZW0odW5zaWdu
ZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGF0dHJzID8gYXR0cnNbaW5kZXhdIDogMDsgfQogICAg
IEF0dHJpYnV0ZSogZ2V0QXR0cmlidXRlSXRlbShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBj
b25zdDsKICAgICBBdHRyaWJ1dGUqIGdldEF0dHJpYnV0ZUl0ZW0oY29uc3QgU3RyaW5nJiBuYW1l
KSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFkT25seU5vZGUoKSB7IHJldHVybiBlbGVt
ZW50ID8gZWxlbWVudC0+aXNSZWFkT25seU5vZGUoKSA6IGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzUmVhZE9ubHlOb2RlKCk7CiAKICAgICAvLyB1c2VkIGR1cmluZyBwYXJzaW5nOiBvbmx5
IGluc2VydHMgaWYgbm90IGFscmVhZHkgdGhlcmUKICAgICAvLyBubyBlcnJvciBjaGVja2luZyEK
SW5kZXg6IFdlYkNvcmUvZG9tL05hbWVkTWFwcGVkQXR0ck1hcC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vTmFtZWRNYXBwZWRBdHRyTWFwLmNwcAkocmV2aXNpb24gMjExNzApCisrKyBX
ZWJDb3JlL2RvbS9OYW1lZE1hcHBlZEF0dHJNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEx
ICsxLDkgQEAKLS8qKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIERPTSBpbXBsZW1lbnRh
dGlvbiBmb3IgS0RFLgotICoKKy8qCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAo
a25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29p
dmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBv
c3QuY29tKQogICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUu
b3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJ
bmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiwxMCArMjAsMTIg
QEAKICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFj
ZSAtIFN1aXRlIDMzMCwKICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogICovCisKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOYW1lZE1hcHBlZEF0dHJNYXAuaCIKIAogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKSW5kZXg6IFdlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL05vZGUuY3BwCShyZXZpc2lvbiAyMTE3MCkKKysrIFdlYkNvcmUvZG9tL05vZGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDggQEAKLS8qKgotICogVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIERPTSBpbXBsZW1lbnRhdGlvbiBmb3IgS0RFLgotICoKKy8qCiAgKiBDb3B5cmln
aHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykg
MTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykg
MjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAwNyBUcm9sbHRlY2ggQVNBCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMzAsNiArMjgs
NyBAQAogI2luY2x1ZGUgIkNoaWxkTm9kZUxpc3QuaCIKICNpbmNsdWRlICJET01JbXBsZW1lbnRh
dGlvbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgpAQCAtMTQ5LDcgKzE0OCw3IEBAIE5vZGU6Ok5vZGUoRG9jdW1lbnQgKmRvYykK
ICAgICAgIG1faGFzQ2hhbmdlZENoaWxkKGZhbHNlKSwKICAgICAgIG1faW5Eb2N1bWVudChmYWxz
ZSksCiAgICAgICBtX2lzTGluayhmYWxzZSksCi0gICAgICBtX3NwZWNpZmllZChmYWxzZSksCisg
ICAgICBtX2F0dHJXYXNTcGVjaWZpZWRPckVsZW1lbnRIYXNSYXJlRGF0YShmYWxzZSksCiAgICAg
ICBtX2ZvY3VzZWQoZmFsc2UpLAogICAgICAgbV9hY3RpdmUoZmFsc2UpLAogICAgICAgbV9ob3Zl
cmVkKGZhbHNlKSwKQEAgLTc5Nyw3ICs3OTYsNiBAQCB2b2lkIE5vZGU6OmR1bXAoVGV4dFN0cmVh
bSogc3RyZWFtLCBEZXByCiAgICAgaWYgKG1faGFzSWQpIHsgKnN0cmVhbSA8PCAiIGhhc0lkIjsg
fQogICAgIGlmIChtX2hhc0NsYXNzKSB7ICpzdHJlYW0gPDwgIiBoYXNDbGFzcyI7IH0KICAgICBp
ZiAobV9oYXNTdHlsZSkgeyAqc3RyZWFtIDw8ICIgaGFzU3R5bGUiOyB9Ci0gICAgaWYgKG1fc3Bl
Y2lmaWVkKSB7ICpzdHJlYW0gPDwgIiBzcGVjaWZpZWQiOyB9CiAgICAgaWYgKG1fZm9jdXNlZCkg
eyAqc3RyZWFtIDw8ICIgZm9jdXNlZCI7IH0KICAgICBpZiAobV9hY3RpdmUpIHsgKnN0cmVhbSA8
PCAiIGFjdGl2ZSI7IH0KICAgICBpZiAobV9pbXBsaWNpdCkgeyAqc3RyZWFtIDw8ICIgaW1wbGlj
aXQiOyB9CkluZGV4OiBXZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vTm9kZS5oCShyZXZpc2lvbiAyMTE3MCkKKysrIFdlYkNvcmUvZG9tL05vZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMCArMSw4IEBACiAvKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IERPTSBpbXBsZW1lbnRhdGlvbiBmb3IgS0RFLgotICoKICAqIENvcHlyaWdodCAoQykgMTk5OSBM
YXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtv
aXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVl
bGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC00NzEsNyArNDY5LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9pbkRvY3VtZW50IDog
MTsKIAogICAgIGJvb2wgbV9pc0xpbmsgOiAxOwotICAgIGJvb2wgbV9zcGVjaWZpZWQgOiAxOyAv
LyB1c2VkIGluIEF0dHI7IGFjY2Vzc29yIGZ1bmN0aW9ucyB0aGVyZQorICAgIGJvb2wgbV9hdHRy
V2FzU3BlY2lmaWVkT3JFbGVtZW50SGFzUmFyZURhdGEgOiAxOyAvLyB1c2VkIGluIEF0dHIgZm9y
IG9uZSB0aGluZyBhbmQgRWxlbWVudCBmb3IgYW5vdGhlcgogICAgIGJvb2wgbV9mb2N1c2VkIDog
MTsKICAgICBib29sIG1fYWN0aXZlIDogMTsKICAgICBib29sIG1faG92ZXJlZCA6IDE7CkluZGV4
OiBXZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
U3R5bGVkRWxlbWVudC5oCShyZXZpc2lvbiAyMTE3MCkKKysrIFdlYkNvcmUvZG9tL1N0eWxlZEVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMSw5IEBACiAvKgotICogVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIERPTSBpbXBsZW1lbnRhdGlvbiBmb3IgS0RFLgotICoKICAqIENvcHly
aWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChD
KSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChD
KSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCiAgKiAgICAgICAgICAgKEMpIDIwMDEg
RGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIw
MDQsIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAw
MywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI3LDYgKzI1LDcgQEAKICNpZm5kZWYgU3R5bGVkRWxl
bWVudF9oCiAjZGVmaW5lIFN0eWxlZEVsZW1lbnRfaAogCisjaW5jbHVkZSAiRWxlbWVudC5oIgog
I2luY2x1ZGUgIk5hbWVkTWFwcGVkQXR0ck1hcC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0zNCw4ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENTU01hcHBlZEF0dHJp
YnV0ZURlY2xhcmF0aW9uOwogY2xhc3MgTWFwcGVkQXR0cmlidXRlOwogCi1jbGFzcyBTdHlsZWRF
bGVtZW50IDogcHVibGljIEVsZW1lbnQKLXsKK2NsYXNzIFN0eWxlZEVsZW1lbnQgOiBwdWJsaWMg
RWxlbWVudCB7CiBwdWJsaWM6CiAgICAgU3R5bGVkRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIH5TdHlsZWRFbGVtZW50KCk7CkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAJKHJldmlzaW9uIDIxMTcwKQorKysgV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDQgQEAKLS8qKgotICogVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIERPTSBpbXBsZW1lbnRhdGlvbiBmb3IgS0RFLgotICoKKy8qCiAgKiBDb3B5
cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAo
QykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgpAQCAtNjUsNyArNjMsNyBA
QCBTdHJpbmcgSFRNTEVsZW1lbnQ6Om5vZGVOYW1lKCkgY29uc3QKICAgICAvLyBGSVhNRTogV291
bGQgYmUgbmljZSB0byBoYXZlIGFuIGF0b21pY3N0cmluZyBsb29rdXAgYmFzZWQgb2ZmIHVwcGVy
Y2FzZSBjaGFycyB0aGF0IGRvZXMgbm90IGhhdmUgdG8gY29weQogICAgIC8vIHRoZSBzdHJpbmcg
b24gYSBoaXQgaW4gdGhlIGhhc2guCiAgICAgaWYgKGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50
KCkpCi0gICAgICAgIHJldHVybiBtX3RhZ05hbWUubG9jYWxOYW1lKCkuaW1wbCgpLT51cHBlcigp
OworICAgICAgICByZXR1cm4gdGFnUU5hbWUoKS5sb2NhbE5hbWUoKS5pbXBsKCktPnVwcGVyKCk7
CiAgICAgcmV0dXJuIEVsZW1lbnQ6Om5vZGVOYW1lKCk7CiB9CiAgICAgCkBAIC05Myw3ICs5MSw3
IEBAIGludCBIVE1MRWxlbWVudDo6dGFnUHJpb3JpdHkoKSBjb25zdAogCiBQYXNzUmVmUHRyPE5v
ZGU+IEhUTUxFbGVtZW50OjpjbG9uZU5vZGUoYm9vbCBkZWVwKQogewotICAgIFJlZlB0cjxIVE1M
RWxlbWVudD4gY2xvbmUgPSBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUhUTUxFbGVtZW50KG1f
dGFnTmFtZS5sb2NhbE5hbWUoKSwgZG9jdW1lbnQoKSwgMCwgZmFsc2UpOworICAgIFJlZlB0cjxI
VE1MRWxlbWVudD4gY2xvbmUgPSBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUhUTUxFbGVtZW50
KHRhZ1FOYW1lKCkubG9jYWxOYW1lKCksIGRvY3VtZW50KCksIDAsIGZhbHNlKTsKICAgICBpZiAo
IWNsb25lKQogICAgICAgICByZXR1cm4gMDsKIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxUb2tl
bml6ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5oCShyZXZp
c2lvbiAyMTE3MCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNiArMSw0IEBACiAvKgotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUg
bGlicmFyaWVzCi0KICAgICBDb3B5cmlnaHQgKEMpIDE5OTcgTWFydGluIEpvbmVzIChtam9uZXNA
a2RlLm9yZykKICAgICAgICAgICAgICAgKEMpIDE5OTcgVG9yYmVuIFdlaXMgKHdlaXNAa2RlLm9y
ZykKICAgICAgICAgICAgICAgKEMpIDE5OTggV2FsZG8gQmFzdGlhbiAoYmFzdGlhbkBrZGUub3Jn
KQpAQCAtMTE0LDcgKzExMiw3IEBAIHByaXZhdGU6CiAgICAgU3RhdGUgcGFyc2VFbnRpdHkoU2Vn
bWVudGVkU3RyaW5nJiwgVUNoYXIqJiBkZXN0LCBTdGF0ZSwgdW5zaWduZWQmIF9jQnVmZmVyUG9z
LCBib29sIHN0YXJ0LCBib29sIHBhcnNpbmdUYWcpOwogICAgIFN0YXRlIHBhcnNlUHJvY2Vzc2lu
Z0luc3RydWN0aW9uKFNlZ21lbnRlZFN0cmluZyYsIFN0YXRlKTsKICAgICBTdGF0ZSBzY3JpcHRI
YW5kbGVyKFN0YXRlKTsKLSAgICBTdGF0ZSBzY3JpcHRFeGVjdXRpb24oY29uc3QgRGVwcmVjYXRl
ZFN0cmluZyYgc2NyaXB0LCBTdGF0ZSBzdGF0ZSwgRGVwcmVjYXRlZFN0cmluZyBzY3JpcHRVUkwg
PSBEZXByZWNhdGVkU3RyaW5nKCksIGludCBiYXNlTGluZSA9IDApOworICAgIFN0YXRlIHNjcmlw
dEV4ZWN1dGlvbihjb25zdCBEZXByZWNhdGVkU3RyaW5nJiBzY3JpcHQsIFN0YXRlLCBEZXByZWNh
dGVkU3RyaW5nIHNjcmlwdFVSTCwgaW50IGJhc2VMaW5lID0gMCk7CiAgICAgdm9pZCBzZXRTcmMo
Y29uc3QgU2VnbWVudGVkU3RyaW5nJik7CiAKICAgICAvLyBjaGVjayBpZiB3ZSBoYXZlIGVub3Vn
aCBzcGFjZSBpbiB0aGUgYnVmZmVyLgpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAko
cmV2aXNpb24gMjExNzApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFw
cGxlIENvbXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFBvcnRpb25zIGFyZSBDb3B5cmlnaHQgKEMp
IDE5OTggTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24uCiAgKgpAQCAtODg5LDU5
ICs4ODksNjcgQEAgdm9pZCBSZW5kZXJMYXllcjo6YXV0b3Njcm9sbCgpCiAKIHZvaWQgUmVuZGVy
TGF5ZXI6OnJlc2l6ZShjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCwgY29uc3QgSW50U2l6
ZSYgb2Zmc2V0RnJvbVJlc2l6ZUNvcm5lcikKIHsKLSAgICBpZiAoIWluUmVzaXplTW9kZSgpIHx8
ICFyZW5kZXJlcigpLT5oYXNPdmVyZmxvd0NsaXAoKSB8fCBtX29iamVjdC0+c3R5bGUoKS0+cmVz
aXplKCkgPT0gUkVTSVpFX05PTkUpCisgICAgaWYgKCFpblJlc2l6ZU1vZGUoKSB8fCAhbV9vYmpl
Y3QtPmhhc092ZXJmbG93Q2xpcCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fb2Jq
ZWN0LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+bW91c2VQcmVzc2VkKCkp
CisgICAgLy8gU2V0IHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSBzaGFkb3cgYW5jZXN0b3Ig
bm9kZSBpZiB0aGVyZSBpcyBvbmUuCisgICAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIHRleHRh
cmVhIGVsZW1lbnRzIHNpbmNlIHRoZSByZXNpemFibGUgbGF5ZXIgaXMgaW4gdGhlIHNoYWRvdyBj
b250ZW50LgorICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obV9v
YmplY3QtPm5vZGUoKS0+c2hhZG93QW5jZXN0b3JOb2RlKCkpOworICAgIFJlbmRlckJveCogcmVu
ZGVyZXIgPSBzdGF0aWNfY2FzdDxSZW5kZXJCb3gqPihlbGVtZW50LT5yZW5kZXJlcigpKTsKKwor
ICAgIEVSZXNpemUgcmVzaXplID0gcmVuZGVyZXItPnN0eWxlKCktPnJlc2l6ZSgpOworICAgIGlm
IChyZXNpemUgPT0gUkVTSVpFX05PTkUpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1F
IFJhZGFyIDQxMTg1NTk6IFRoaXMgYmVoYXZlcyB2ZXJ5IG9kZGx5IGZvciB0ZXh0YXJlYXMgdGhh
dCBhcmUgaW4gYmxvY2tzIHdpdGggcmlnaHQtYWxpZ25lZCB0ZXh0OyB5b3UgaGF2ZQotICAgIC8v
IHRvIGRyYWcgdGhlIGJvdHRvbS1yaWdodCBjb3JuZXIgdG8gbWFrZSB0aGUgYm90dG9tLWxlZnQg
Y29ybmVyIG1vdmUuCi0gICAgLy8gRklYTUUgUmFkYXIgNDExODU2NDogaWRlYWxseSB3ZSdkIGF1
dG9zY3JvbGwgdGhlIHdpbmRvdyBhcyBuZWNlc3NhcnkgdG8ga2VlcCB0aGUgcG9pbnQgdW5kZXIK
LSAgICAvLyB0aGUgY3Vyc29yIGluIHZpZXcuCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZWxl
bWVudC0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50LT5mcmFtZSgpLT5ldmVudEhhbmRs
ZXIoKS0+bW91c2VQcmVzc2VkKCkpCisgICAgICAgIHJldHVybjsKIAotICAgIEludFBvaW50IGN1
cnJlbnRQb2ludCA9IG1fb2JqZWN0LT5kb2N1bWVudCgpLT52aWV3KCktPndpbmRvd1RvQ29udGVu
dHMoZXZ0LnBvcygpKTsKLSAgICBjdXJyZW50UG9pbnQgKz0gb2Zmc2V0RnJvbVJlc2l6ZUNvcm5l
cjsKKyAgICBJbnRQb2ludCBjdXJzb3JQb3NpdGlvbiA9IGRvY3VtZW50LT52aWV3KCktPndpbmRv
d1RvQ29udGVudHMoZXZ0LnBvcygpKTsKIAogICAgIGludCB4OwogICAgIGludCB5OwotICAgIG1f
b2JqZWN0LT5hYnNvbHV0ZVBvc2l0aW9uKHgsIHkpOwotICAgIGludCByaWdodCA9IHggKyBtX29i
amVjdC0+d2lkdGgoKTsKLSAgICBpbnQgYm90dG9tID0geSArIG1fb2JqZWN0LT5oZWlnaHQoKTsK
LSAgICBpbnQgZGlmZldpZHRoID0gIG1heChjdXJyZW50UG9pbnQueCgpIC0gcmlnaHQsIG1pbigw
LCBNaW5pbXVtV2lkdGhXaGlsZVJlc2l6aW5nIC0gbV9vYmplY3QtPndpZHRoKCkpKTsKLSAgICBp
bnQgZGlmZkhlaWdodCA9IG1heChjdXJyZW50UG9pbnQueSgpIC0gYm90dG9tLCBtaW4oMCwgTWlu
aW11bUhlaWdodFdoaWxlUmVzaXppbmcgLSBtX29iamVjdC0+aGVpZ2h0KCkpKTsKLSAgICAKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAvLyBTZXQgdGhlIHdpZHRoIGFuZCBoZWlnaHQg
Zm9yIHRoZSBzaGFkb3cgYW5jZXN0b3Igbm9kZS4gIFRoaXMgaXMgbmVjZXNzYXJ5IGZvciB0ZXh0
YXJlYXMgc2luY2UgdGhlIHJlc2l6YWJsZSBsYXllciBpcyBvbiB0aGUgaW5uZXIgZGl2LgotICAg
IC8vIEZvciBub24tc2hhZG93IGNvbnRlbnQsIHRoaXMgd2lsbCBzZXQgdGhlIHdpZHRoIGFuZCBo
ZWlnaHQgb24gdGhlIG9yaWdpbmFsIG5vZGUuCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IG1fb2JqZWN0LT5ub2RlKCktPnNoYWRvd0FuY2VzdG9yTm9kZSgpLT5yZW5kZXJlcigpOwotICAg
IGlmIChkaWZmV2lkdGggJiYgKG1fb2JqZWN0LT5zdHlsZSgpLT5yZXNpemUoKSA9PSBSRVNJWkVf
SE9SSVpPTlRBTCB8fCBtX29iamVjdC0+c3R5bGUoKS0+cmVzaXplKCkgPT0gUkVTSVpFX0JPVEgp
KSB7Ci0gICAgICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlID0gc3RhdGljX2Nhc3Q8RWxl
bWVudCo+KG1fb2JqZWN0LT5ub2RlKCktPnNoYWRvd0FuY2VzdG9yTm9kZSgpKS0+c3R5bGUoKTsK
LSAgICAgICAgaWYgKHJlbmRlcmVyLT5lbGVtZW50KCkgJiYgcmVuZGVyZXItPmVsZW1lbnQoKS0+
aXNDb250cm9sKCkpIHsKKyAgICByZW5kZXJlci0+YWJzb2x1dGVQb3NpdGlvbih4LCB5KTsKKyAg
ICBJbnRQb2ludCB0b3BMZWZ0Q29ybmVyID0gSW50UG9pbnQoeCwgeSk7CisKKyAgICBJbnRTaXpl
IGN1cnJlbnRTaXplID0gSW50U2l6ZShyZW5kZXJlci0+d2lkdGgoKSwgcmVuZGVyZXItPmhlaWdo
dCgpKTsKKworICAgIEludFNpemUgbWluaW11bVNpemUgPSBlbGVtZW50LT5taW5pbXVtU2l6ZUZv
clJlc2l6aW5nKCkuc2hydW5rVG8oY3VycmVudFNpemUpOworICAgIGVsZW1lbnQtPnNldE1pbmlt
dW1TaXplRm9yUmVzaXppbmcobWluaW11bVNpemUpOworCisgICAgSW50U2l6ZSBuZXdTaXplID0g
KGN1cnNvclBvc2l0aW9uICsgb2Zmc2V0RnJvbVJlc2l6ZUNvcm5lciAtIHRvcExlZnRDb3JuZXIp
LmV4cGFuZGVkVG8obWluaW11bVNpemUpOworICAgIEludFNpemUgZGlmZmVyZW5jZSA9IG5ld1Np
emUgLSBjdXJyZW50U2l6ZTsKKworICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlID0gZWxl
bWVudC0+c3R5bGUoKTsKKyAgICBib29sIGlzQm94U2l6aW5nQm9yZGVyID0gcmVuZGVyZXItPnN0
eWxlKCktPmJveFNpemluZygpID09IEJPUkRFUl9CT1g7CisKKyAgICBFeGNlcHRpb25Db2RlIGVj
OworCisgICAgaWYgKGRpZmZlcmVuY2Uud2lkdGgoKSkgeworICAgICAgICBpZiAoZWxlbWVudCAm
JiBlbGVtZW50LT5pc0NvbnRyb2woKSkgeworICAgICAgICAgICAgLy8gTWFrZSBpbXBsaWNpdCBt
YXJnaW5zIGZyb20gdGhlIHRoZW1lIGV4cGxpY2l0IGJlY2F1c2Ugc2V0dGluZyBhbiBleHBsaWNp
dCBzaXplIGNvdWxkIG1ha2UgdGhlbSBnbyBhd2F5IG90aGVyd2lzZS4KICAgICAgICAgICAgIHN0
eWxlLT5zZXRQcm9wZXJ0eShDU1NfUFJPUF9NQVJHSU5fTEVGVCwgU3RyaW5nOjpudW1iZXIocmVu
ZGVyZXItPm1hcmdpbkxlZnQoKSkgKyAicHgiLCBmYWxzZSwgZWMpOwogICAgICAgICAgICAgc3R5
bGUtPnNldFByb3BlcnR5KENTU19QUk9QX01BUkdJTl9SSUdIVCwgU3RyaW5nOjpudW1iZXIocmVu
ZGVyZXItPm1hcmdpblJpZ2h0KCkpICsgInB4IiwgZmFsc2UsIGVjKTsKICAgICAgICAgfQotICAg
ICAgICBpbnQgYmFzZVdpZHRoID0gcmVuZGVyZXItPndpZHRoKCkgLSAocmVuZGVyZXItPnN0eWxl
KCktPmJveFNpemluZygpID09IEJPUkRFUl9CT1ggPyAwIDogcmVuZGVyZXItPmJvcmRlckxlZnQo
KSArIHJlbmRlcmVyLT5wYWRkaW5nTGVmdCgpICsgcmVuZGVyZXItPmJvcmRlclJpZ2h0KCkgKyBy
ZW5kZXJlci0+cGFkZGluZ1JpZ2h0KCkpOwotICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NT
X1BST1BfV0lEVEgsIFN0cmluZzo6bnVtYmVyKGJhc2VXaWR0aCArIGRpZmZXaWR0aCkgKyAicHgi
LCBmYWxzZSwgZWMpOworICAgICAgICBpbnQgYmFzZVdpZHRoID0gcmVuZGVyZXItPndpZHRoKCkg
LSAoaXNCb3hTaXppbmdCb3JkZXIgPyAwCisgICAgICAgICAgICA6IHJlbmRlcmVyLT5ib3JkZXJM
ZWZ0KCkgKyByZW5kZXJlci0+cGFkZGluZ0xlZnQoKSArIHJlbmRlcmVyLT5ib3JkZXJSaWdodCgp
ICsgcmVuZGVyZXItPnBhZGRpbmdSaWdodCgpKTsKKyAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5
KENTU19QUk9QX1dJRFRILCBTdHJpbmc6Om51bWJlcihiYXNlV2lkdGggKyBkaWZmZXJlbmNlLndp
ZHRoKCkpICsgInB4IiwgZmFsc2UsIGVjKTsKICAgICB9CiAKLSAgICBpZiAoZGlmZkhlaWdodCAm
JiAobV9vYmplY3QtPnN0eWxlKCktPnJlc2l6ZSgpID09IFJFU0laRV9WRVJUSUNBTCB8fCBtX29i
amVjdC0+c3R5bGUoKS0+cmVzaXplKCkgPT0gUkVTSVpFX0JPVEgpKSB7Ci0gICAgICAgIENTU1N0
eWxlRGVjbGFyYXRpb24qIHN0eWxlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG1fb2JqZWN0LT5u
b2RlKCktPnNoYWRvd0FuY2VzdG9yTm9kZSgpKS0+c3R5bGUoKTsKLSAgICAgICAgaWYgKHJlbmRl
cmVyLT5lbGVtZW50KCkgJiYgcmVuZGVyZXItPmVsZW1lbnQoKS0+aXNDb250cm9sKCkpIHsKKyAg
ICBpZiAoZGlmZmVyZW5jZS5oZWlnaHQoKSkgeworICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVt
ZW50LT5pc0NvbnRyb2woKSkgeworICAgICAgICAgICAgLy8gTWFrZSBpbXBsaWNpdCBtYXJnaW5z
IGZyb20gdGhlIHRoZW1lIGV4cGxpY2l0IGJlY2F1c2Ugc2V0dGluZyBhbiBleHBsaWNpdCBzaXpl
IGNvdWxkIG1ha2UgdGhlbSBnbyBhd2F5IG90aGVyd2lzZS4KICAgICAgICAgICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NfUFJPUF9NQVJHSU5fVE9QLCBTdHJpbmc6Om51bWJlcihyZW5kZXJlci0+
bWFyZ2luVG9wKCkpICsgInB4IiwgZmFsc2UsIGVjKTsKICAgICAgICAgICAgIHN0eWxlLT5zZXRQ
cm9wZXJ0eShDU1NfUFJPUF9NQVJHSU5fQk9UVE9NLCBTdHJpbmc6Om51bWJlcihyZW5kZXJlci0+
bWFyZ2luQm90dG9tKCkpICsgInB4IiwgZmFsc2UsIGVjKTsKICAgICAgICAgfQotICAgICAgICBp
bnQgYmFzZUhlaWdodCA9IHJlbmRlcmVyLT5oZWlnaHQoKSAtIChyZW5kZXJlci0+c3R5bGUoKS0+
Ym94U2l6aW5nKCkgPT0gQk9SREVSX0JPWCA/IDAgOiByZW5kZXJlci0+Ym9yZGVyVG9wKCkgKyBy
ZW5kZXJlci0+cGFkZGluZ1RvcCgpICsgcmVuZGVyZXItPmJvcmRlckJvdHRvbSgpICsgcmVuZGVy
ZXItPnBhZGRpbmdCb3R0b20oKSk7Ci0gICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NfUFJP
UF9IRUlHSFQsIFN0cmluZzo6bnVtYmVyKGJhc2VIZWlnaHQgKyBkaWZmSGVpZ2h0KSArICJweCIs
IGZhbHNlLCBlYyk7CisgICAgICAgIGludCBiYXNlSGVpZ2h0ID0gcmVuZGVyZXItPmhlaWdodCgp
IC0gKGlzQm94U2l6aW5nQm9yZGVyID8gMAorICAgICAgICAgICAgOiByZW5kZXJlci0+Ym9yZGVy
VG9wKCkgKyByZW5kZXJlci0+cGFkZGluZ1RvcCgpICsgcmVuZGVyZXItPmJvcmRlckJvdHRvbSgp
ICsgcmVuZGVyZXItPnBhZGRpbmdCb3R0b20oKSk7CisgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0
eShDU1NfUFJPUF9IRUlHSFQsIFN0cmluZzo6bnVtYmVyKGJhc2VIZWlnaHQgKyBkaWZmZXJlbmNl
LmhlaWdodCgpKSArICJweCIsIGZhbHNlLCBlYyk7CiAgICAgfQotICAgIAotICAgIEFTU0VSVChl
YyA9PSAwKTsKIAotICAgIGlmIChtX29iamVjdC0+c3R5bGUoKS0+cmVzaXplKCkgIT0gUkVTSVpF
X05PTkUpIHsKLSAgICAgICAgbV9vYmplY3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOwotICAgICAg
ICBtX29iamVjdC0+bm9kZSgpLT5zaGFkb3dBbmNlc3Rvck5vZGUoKS0+cmVuZGVyZXIoKS0+c2V0
TmVlZHNMYXlvdXQodHJ1ZSk7Ci0gICAgICAgIG1fb2JqZWN0LT5kb2N1bWVudCgpLT51cGRhdGVM
YXlvdXQoKTsKLSAgICB9CisgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dCgpOworCisgICAgLy8g
RklYTUUgKFJhZGFyIDQxMTg1NjQpOiBXZSBzaG91bGQgYWxzbyBhdXRvc2Nyb2xsIHRoZSB3aW5k
b3cgYXMgbmVjZXNzYXJ5IHRvIGtlZXAgdGhlIHBvaW50IHVuZGVyIHRoZSBjdXJzb3IgaW4gdmll
dy4KIH0KIAogUGxhdGZvcm1TY3JvbGxiYXIqIFJlbmRlckxheWVyOjpob3Jpem9udGFsU2Nyb2xs
YmFyV2lkZ2V0KCkgY29uc3QKSW5kZXg6IFdlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDIx
MTcwKQorKysgV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw2ICszMSw3IEBACiAjaWYgRU5BQkxFKFhQQVRIKQogCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiTmFtZWRBdHRyTWFwLmgiCiAjaW5j
bHVkZSAiWE1MTmFtZXMuaCIKICNpbmNsdWRlICJYUGF0aFV0aWwuaCIKSW5kZXg6IFdlYkNvcmUv
eG1sL1hQYXRoU3RlcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWFBhdGhTdGVwLmNw
cAkocmV2aXNpb24gMjExNzApCisrKyBXZWJDb3JlL3htbC9YUGF0aFN0ZXAuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaWYgRU5BQkxFKFhQQVRIKQogCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiTmFtZWRBdHRyTWFw
LmgiCiAjaW5jbHVkZSAiWFBhdGhOU1Jlc29sdmVyLmgiCiAjaW5jbHVkZSAiWFBhdGhQYXJzZXIu
aCIK
</data>

          </attachment>
      

    </bug>

</bugzilla>