<?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>124256</bug_id>
          
          <creation_ts>2013-11-12 18:02:08 -0800</creation_ts>
          <short_desc>Update ResourceHandleCF to use the didReceiveBuffer() callback</short_desc>
          <delta_ts>2013-12-12 20:55:30 -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="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>949993</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-11-12 18:02:08 -0800</bug_when>
    <thetext>Update ResourceHandleCF to use the didReceiveBuffer() callback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949999</commentid>
    <comment_count>1</comment_count>
      <attachid>216758</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-11-12 18:04:56 -0800</bug_when>
    <thetext>Created attachment 216758
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950014</commentid>
    <comment_count>2</comment_count>
      <attachid>216758</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-12 18:46:15 -0800</bug_when>
    <thetext>Comment on attachment 216758
Patch

Attachment 216758 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/22888893</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950024</commentid>
    <comment_count>3</comment_count>
      <attachid>216764</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-11-12 19:16:53 -0800</bug_when>
    <thetext>Created attachment 216764
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950352</commentid>
    <comment_count>4</comment_count>
      <attachid>216764</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-11-13 14:04:25 -0800</bug_when>
    <thetext>Comment on attachment 216764
Patch

Clearing flags on attachment: 216764

Committed r159235: &lt;http://trac.webkit.org/changeset/159235&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950353</commentid>
    <comment_count>5</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-11-13 14:04:27 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955763</commentid>
    <comment_count>6</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-12-02 21:09:04 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955764</commentid>
    <comment_count>7</comment_count>
      <attachid>218263</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-12-02 21:09:06 -0800</bug_when>
    <thetext>Created attachment 218263
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955765</commentid>
    <comment_count>8</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-12-02 21:11:31 -0800</bug_when>
    <thetext>Windows does not handle blocks, that sucks :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955766</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-02 21:11:33 -0800</bug_when>
    <thetext>Attachment 218263 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/platform/network/ResourceHandle.cpp&apos;, u&apos;Source/WebCore/platform/network/ResourceHandle.h&apos;, u&apos;Source/WebCore/platform/network/ResourceHandleClient.cpp&apos;, u&apos;Source/WebCore/platform/network/ResourceHandleClient.h&apos;, u&apos;Source/WebCore/platform/network/ResourceHandleInternal.h&apos;, u&apos;Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp:206:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp:283:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp:322:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp:364:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp:391:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp:431:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp:463:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp:506:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp:541:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp:582:  Missing space before {  [whitespace/braces] [5]
Total errors found: 10 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955770</commentid>
    <comment_count>10</comment_count>
      <attachid>218263</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-02 21:52:13 -0800</bug_when>
    <thetext>Comment on attachment 218263
Patch

Attachment 218263 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/42058036</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216758</attachid>
            <date>2013-11-12 18:04:56 -0800</date>
            <delta_ts>2013-11-12 19:16:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124256-20131112180455.patch</filename>
            <type>text/plain</type>
            <size>3320</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGNiZDg3MDYzN2JiMTI0
ODRjMzkzOGRmYzY4ZDY4ZjQ3NDhjZTY0OC4uNWQ1ZmIwZGI1Yjg1ZDdkYjlkNzIxNDQ3NTczNjk5
MWE1MTYxZTkzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTExLTEyICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBSZXNv
dXJjZUhhbmRsZUNGIHRvIHVzZSB0aGUgZGlkUmVjZWl2ZUJ1ZmZlcigpIGNhbGxiYWNrCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQyNTYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgZGlkUmVjZWl2
ZUJ1ZmZlcigpIGluc3RlYWQgb2YgZGlkUmVjZWl2ZURhdGEoKSB0byBwYXNzIGRhdGEgYmFjayB0
bworICAgICAgICB0aGUgUmVzb3VyY2VIYW5kbGVDbGllbnQuIFRoaXMgdW5pZnkgdGhlIHVwZGF0
ZSBjb2RlIHdpdGggdGhlIE5TVVJMQ29ubmVjdGlvbiBsb2FkZXIuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6Omhh
bmRsZURhdGFBcnJheSk6CisKIDIwMTMtMTEtMTEgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUu
Y29tPgogCiAgICAgICAgIE1ha2UgUmVuZGVyQmxvY2tSYXJlRGF0YSBiZSBpbiBhIGhhc2h0YWJs
ZSBpbnN0ZWFkIG9mIGJlaW5nIGEgbWVtYmVyIHZhcmlhYmxlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAK
aW5kZXggMmU0NGE5ZWZkZGEzNmMwYTkxY2U5NTYyOTkwOThiOTQ5ZGQ3N2RhZC4uM2UwOWEwMWYw
OTJhNWU0NjYzMzE2ZTQ0NjJjZjI3ZjA4NmE5N2IzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCkBA
IC0yMTQsMTcgKzIxNCwxNyBAQCBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YUFycmF5KENGVVJM
Q29ubmVjdGlvblJlZiBjb25uLCBDRkFycmF5UmVmIGRhdGFBcnJheSwgYwogCiBzdGF0aWMgdm9p
ZCBkaWRSZWNlaXZlRGF0YShDRlVSTENvbm5lY3Rpb25SZWYgY29ubiwgQ0ZEYXRhUmVmIGRhdGEs
IENGSW5kZXggb3JpZ2luYWxMZW5ndGgsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CisgICAg
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4oY29u
c3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOworCiAjaWYgTE9HX0RJU0FCTEVECiAgICAgVU5V
U0VEX1BBUkFNKGNvbm4pOwotI2VuZGlmCi0gICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0
YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykp
OwotICAgIGNvbnN0IFVJbnQ4KiBieXRlcyA9IENGRGF0YUdldEJ5dGVQdHIoZGF0YSk7CisjZWxz
ZQogICAgIENGSW5kZXggbGVuZ3RoID0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwotCiAgICAgTE9H
KE5ldHdvcmssICJDRk5ldCAtIGRpZFJlY2VpdmVEYXRhKGNvbm49JXAsIGhhbmRsZT0lcCwgYnl0
ZXM9JWxkKSAoJXMpIiwgY29ubiwgaGFuZGxlLCBsZW5ndGgsIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0
KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisjZW5kaWYKIAogICAgIGlmIChoYW5k
bGUtPmNsaWVudCgpKQotICAgICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlRGF0YSho
YW5kbGUsIChjb25zdCBjaGFyKilieXRlcywgbGVuZ3RoLCBvcmlnaW5hbExlbmd0aCk7CisgICAg
ICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKHRoaXMsIFNoYXJlZEJ1ZmZlcjo6d3JhcENG
RGF0YShkYXRhKSwgb3JpZ2luYWxMZW5ndGgpOwogfQogCiBzdGF0aWMgdm9pZCBkaWRTZW5kQm9k
eURhdGEoQ0ZVUkxDb25uZWN0aW9uUmVmLCBDRkluZGV4LCBDRkluZGV4IHRvdGFsQnl0ZXNXcml0
dGVuLCBDRkluZGV4IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUsIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pCkBAIC03ODQsOCArNzg0LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6aGFuZGxlRGF0
YUFycmF5KENGQXJyYXlSZWYgZGF0YUFycmF5KQogICAgIEFTU0VSVChjb3VudCk7CiAgICAgaWYg
KGNvdW50ID09IDEpIHsKICAgICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSBzdGF0aWNfY2FzdDxDRkRh
dGFSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoZGF0YUFycmF5LCAwKSk7Ci0gICAgICAgIENG
SW5kZXggbGVuZ3RoID0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwotICAgICAgICBjbGllbnQoKS0+
ZGlkUmVjZWl2ZURhdGEodGhpcywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oQ0ZEYXRh
R2V0Qnl0ZVB0cihkYXRhKSksIGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihsZW5ndGgpKTsKKyAg
ICAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIodGhpcywgU2hhcmVkQnVmZmVyOjp3cmFw
Q0ZEYXRhKGRhdGEpLCAtMSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTgwMCw3ICs3
OTksNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpoYW5kbGVEYXRhQXJyYXkoQ0ZBcnJheVJlZiBk
YXRhQXJyYXkpCiAgICAgICAgIENGRGF0YUFwcGVuZEJ5dGVzKG1lcmdlZERhdGEuZ2V0KCksIENG
RGF0YUdldEJ5dGVQdHIoZGF0YSksIENGRGF0YUdldExlbmd0aChkYXRhKSk7CiAgICAgfQogCi0g
ICAgY2xpZW50KCktPmRpZFJlY2VpdmVEYXRhKHRoaXMsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KENGRGF0YUdldEJ5dGVQdHIobWVyZ2VkRGF0YS5nZXQoKSkpLCB0b3RhbFNpemUsIHN0
YXRpY19jYXN0PGludD4odG90YWxTaXplKSk7CisgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZm
ZXIodGhpcywgU2hhcmVkQnVmZmVyOjp3cmFwQ0ZEYXRhKG1lcmdlZERhdGEuZ2V0KCkpLCAtMSk7
CiB9CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216764</attachid>
            <date>2013-11-12 19:16:53 -0800</date>
            <delta_ts>2013-12-02 21:09:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124256-20131112191652.patch</filename>
            <type>text/plain</type>
            <size>3378</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGNiZDg3MDYzN2JiMTI0
ODRjMzkzOGRmYzY4ZDY4ZjQ3NDhjZTY0OC4uNWQ1ZmIwZGI1Yjg1ZDdkYjlkNzIxNDQ3NTczNjk5
MWE1MTYxZTkzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTExLTEyICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBSZXNv
dXJjZUhhbmRsZUNGIHRvIHVzZSB0aGUgZGlkUmVjZWl2ZUJ1ZmZlcigpIGNhbGxiYWNrCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQyNTYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgZGlkUmVjZWl2
ZUJ1ZmZlcigpIGluc3RlYWQgb2YgZGlkUmVjZWl2ZURhdGEoKSB0byBwYXNzIGRhdGEgYmFjayB0
bworICAgICAgICB0aGUgUmVzb3VyY2VIYW5kbGVDbGllbnQuIFRoaXMgdW5pZnkgdGhlIHVwZGF0
ZSBjb2RlIHdpdGggdGhlIE5TVVJMQ29ubmVjdGlvbiBsb2FkZXIuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6Omhh
bmRsZURhdGFBcnJheSk6CisKIDIwMTMtMTEtMTEgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUu
Y29tPgogCiAgICAgICAgIE1ha2UgUmVuZGVyQmxvY2tSYXJlRGF0YSBiZSBpbiBhIGhhc2h0YWJs
ZSBpbnN0ZWFkIG9mIGJlaW5nIGEgbWVtYmVyIHZhcmlhYmxlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAK
aW5kZXggMmU0NGE5ZWZkZGEzNmMwYTkxY2U5NTYyOTkwOThiOTQ5ZGQ3N2RhZC4uZmI4NGQ4MWI0
OWRjZDVjZWU4NjNiODQ2NGVjMTI2ZTE4MWY0OWFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCkBA
IC0yMTQsMTcgKzIxNCwxNyBAQCBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YUFycmF5KENGVVJM
Q29ubmVjdGlvblJlZiBjb25uLCBDRkFycmF5UmVmIGRhdGFBcnJheSwgYwogCiBzdGF0aWMgdm9p
ZCBkaWRSZWNlaXZlRGF0YShDRlVSTENvbm5lY3Rpb25SZWYgY29ubiwgQ0ZEYXRhUmVmIGRhdGEs
IENGSW5kZXggb3JpZ2luYWxMZW5ndGgsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CisgICAg
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4oY29u
c3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOworCiAjaWYgTE9HX0RJU0FCTEVECiAgICAgVU5V
U0VEX1BBUkFNKGNvbm4pOwotI2VuZGlmCi0gICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0
YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykp
OwotICAgIGNvbnN0IFVJbnQ4KiBieXRlcyA9IENGRGF0YUdldEJ5dGVQdHIoZGF0YSk7CisjZWxz
ZQogICAgIENGSW5kZXggbGVuZ3RoID0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwotCiAgICAgTE9H
KE5ldHdvcmssICJDRk5ldCAtIGRpZFJlY2VpdmVEYXRhKGNvbm49JXAsIGhhbmRsZT0lcCwgYnl0
ZXM9JWxkKSAoJXMpIiwgY29ubiwgaGFuZGxlLCBsZW5ndGgsIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0
KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisjZW5kaWYKIAotICAgIGlmIChoYW5k
bGUtPmNsaWVudCgpKQotICAgICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlRGF0YSho
YW5kbGUsIChjb25zdCBjaGFyKilieXRlcywgbGVuZ3RoLCBvcmlnaW5hbExlbmd0aCk7CisgICAg
aWYgKFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQgPSBoYW5kbGUtPmNsaWVudCgpKQorICAg
ICAgICBjbGllbnQtPmRpZFJlY2VpdmVCdWZmZXIoaGFuZGxlLCBTaGFyZWRCdWZmZXI6OndyYXBD
RkRhdGEoZGF0YSksIG9yaWdpbmFsTGVuZ3RoKTsKIH0KIAogc3RhdGljIHZvaWQgZGlkU2VuZEJv
ZHlEYXRhKENGVVJMQ29ubmVjdGlvblJlZiwgQ0ZJbmRleCwgQ0ZJbmRleCB0b3RhbEJ5dGVzV3Jp
dHRlbiwgQ0ZJbmRleCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlLCBjb25zdCB2b2lkICpjbGll
bnRJbmZvKQpAQCAtNzg0LDggKzc4NCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmhhbmRsZURh
dGFBcnJheShDRkFycmF5UmVmIGRhdGFBcnJheSkKICAgICBBU1NFUlQoY291bnQpOwogICAgIGlm
IChjb3VudCA9PSAxKSB7CiAgICAgICAgIENGRGF0YVJlZiBkYXRhID0gc3RhdGljX2Nhc3Q8Q0ZE
YXRhUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGRhdGFBcnJheSwgMCkpOwotICAgICAgICBD
RkluZGV4IGxlbmd0aCA9IENGRGF0YUdldExlbmd0aChkYXRhKTsKLSAgICAgICAgY2xpZW50KCkt
PmRpZFJlY2VpdmVEYXRhKHRoaXMsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KENGRGF0
YUdldEJ5dGVQdHIoZGF0YSkpLCBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4obGVuZ3RoKSk7Cisg
ICAgICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKHRoaXMsIFNoYXJlZEJ1ZmZlcjo6d3Jh
cENGRGF0YShkYXRhKSwgLTEpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04MDAsNyAr
Nzk5LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6aGFuZGxlRGF0YUFycmF5KENGQXJyYXlSZWYg
ZGF0YUFycmF5KQogICAgICAgICBDRkRhdGFBcHBlbmRCeXRlcyhtZXJnZWREYXRhLmdldCgpLCBD
RkRhdGFHZXRCeXRlUHRyKGRhdGEpLCBDRkRhdGFHZXRMZW5ndGgoZGF0YSkpOwogICAgIH0KIAot
ICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlRGF0YSh0aGlzLCByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihDRkRhdGFHZXRCeXRlUHRyKG1lcmdlZERhdGEuZ2V0KCkpKSwgdG90YWxTaXplLCBz
dGF0aWNfY2FzdDxpbnQ+KHRvdGFsU2l6ZSkpOworICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVm
ZmVyKHRoaXMsIFNoYXJlZEJ1ZmZlcjo6d3JhcENGRGF0YShtZXJnZWREYXRhLmdldCgpKSwgLTEp
OwogfQogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218263</attachid>
            <date>2013-12-02 21:09:06 -0800</date>
            <delta_ts>2013-12-02 21:52:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124256-20131202210905.patch</filename>
            <type>text/plain</type>
            <size>34137</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5OTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM0OWJkMjJiZjQyYWQ5
MzU5Mjk1OGYzOTMwNDQxMGIxYzUxOTQwZC4uZGQzYjljODlkZmFjOTI3ZDE4ODFiMzA0MzQwNWNi
YTQyM2RiYThhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEzLTEyLTAyICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB0aGUgQ0ZO
ZXR3b3JrIGltcGxlbWVudGF0aW9uIG9mIHRoZSBhc3luY2hyb25vdXMgUmVzb3VyY2VIYW5kbGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDQ0MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZS5leHAuaW46CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y29ubmVjdGlvbldhc0NhbmNlbGxlZCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVS
ZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OndpbGxTZW5kUmVxdWVzdEFzeW5jKToKKyAgICAgICAgKFdlYkNvcmU6
OnVwZGF0ZVJlc3BvbnNlSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKToK
KyAgICAgICAgKFdlYkNvcmU6OmRpZFJlY2VpdmVEYXRhQXJyYXlBc3luYyk6CisgICAgICAgIChX
ZWJDb3JlOjpkaWRTZW5kQm9keURhdGFBc3luYyk6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRV
c2VDcmVkZW50aWFsU3RvcmFnZUFzeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OmRpZEZpbmlzaExv
YWRpbmdBc3luYyk6CisgICAgICAgIChXZWJDb3JlOjpkaWRGYWlsQXN5bmMpOgorICAgICAgICAo
V2ViQ29yZTo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyk6CisgICAgICAgIChXZWJDb3JlOjpkaWRS
ZWNlaXZlQ2hhbGxlbmdlQXN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6Y2FuUmVzcG9uZFRvUHJv
dGVjdGlvblNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNhblJlc3BvbmRUb1Byb3RlY3Rpb25T
cGFjZUFzeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlSW50ZXJuYWw6OlRo
cmVhZFNoYXJlZERhdGE6OlRocmVhZFNoYXJlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGVJbnRlcm5hbDo6VGhyZWFkU2hhcmVkRGF0YTo6flRocmVhZFNoYXJlZERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6On5SZXNvdXJjZUhhbmRsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzdGFydCk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZTo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0
aW9uU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9h
ZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZTo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGU6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlOjpjb250aW51ZVNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0
ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOgorCiAyMDEzLTEyLTAyICBSb2dlciBaYW5vbmkgIDxy
b2dlcnphbm9uaUBnbWFpbC5jb20+CiAKICAgICAgICAgW01lZGlhU3RyZWFtXSBVc2UgaXRlcmF0
b3ItYmFzZWQgbG9vcHMgaW5zdGVhZCBvZiBpbmRleC1iYXNlZCBsb29wcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgppbmRleCAyYjhhNTQ4ZGZkNTBiM2E5MzdiNWJjZGEyZDUxODA1MjMwMzMyMzc1Li5iZWRm
NDkyYjFhOGQ4MTA4NjQ5MjQxYWZmOWNkN2IxZGY5NjA5NzhhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgpAQCAtMjI3Niw2ICsyMjc2LDcgQEAgX19aTjdXZWJDb3JlMTh0ZXh0QnJlYWtGb2xsb3dpbmdF
UE5TXzE3VGV4dEJyZWFrSXRlcmF0b3JFaQogX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RC
YXNlMTRzZXRDYWNoZVBvbGljeUVOU18yNlJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5RQogX19a
TjdXZWJDb3JlMTlhcHBsaWNhdGlvbklzV2ViQXBwRXYKIF9fWk43V2ViQ29yZTIwTmV0d29ya1N0
YXRlTm90aWZpZXIxMXNldElzT25MaW5lRWIKK19fWk43V2ViQ29yZTIwUmVzb3VyY2VIYW5kbGVD
bGllbnQyMndpbGxDYWNoZVJlc3BvbnNlQXN5bmNFUE5TXzE0UmVzb3VyY2VIYW5kbGVFUEsyMF9D
RkNhY2hlZFVSTFJlc3BvbnNlCiBfX1pON1dlYkNvcmUyMGFwcGxpY2F0aW9uSXNPa0N1cGlkRXYK
IF9fWk43V2ViQ29yZTIwZW5kT2ZFZGl0YWJsZUNvbnRlbnRFUktOU18xNVZpc2libGVQb3NpdGlv
bkUKIF9fWk43V2ViQ29yZTIwbGFzdE9mZnNldEZvckVkaXRpbmdFUEtOU180Tm9kZUUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKaW5k
ZXggMjhjZjA5NzM5M2VkZWJhOGRkNjIxMDhjNGFjZTY4ZjI1MGM5NzU1OS4uYzRhNzEwYmI1Y2E0
NWNkNjM3ODlkZDI4ZDQ4NzQ4YjUyNmRkYTk3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2
b2lkIFJlc291cmNlSGFuZGxlOjpzZXRDbGllbnQoUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVu
dCkKICAgICBkLT5tX2NsaWVudCA9IGNsaWVudDsKIH0KIAotI2lmICFQTEFURk9STShNQUMpCisj
aWYgIVVTRShDRk5FVFdPUkspICYmICFQTEFURk9STShNQUMpCiAvLyBSZXNvdXJjZUhhbmRsZSBu
ZXZlciB1c2VzIGFzeW5jIGNsaWVudCBjYWxscyBvbiB0aGVzZSBwbGF0Zm9ybXMgeWV0Lgogdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGUuaAppbmRleCBmZjgwNjc0OWE2MWIzNjZlN2FiZjgyNmI5NGIwMmM3NGQ4YWNiMDJh
Li4zNWEyNzk2MWMyYjgzZTYzNGJkZjg0NGI1ZGMxOWU4MjMwM2E1OWQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCkBAIC02OSw2ICs2
OSw3IEBAIHR5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0ICppZDsKICNlbmRpZgogCiAjaWYgVVNF
KENGTkVUV09SSykKK3R5cGVkZWYgY29uc3Qgc3RydWN0IF9DRkNhY2hlZFVSTFJlc3BvbnNlKiBD
RkNhY2hlZFVSTFJlc3BvbnNlUmVmOwogdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMQ29ubmVjdGlvbiog
Q0ZVUkxDb25uZWN0aW9uUmVmOwogdHlwZWRlZiBpbnQgQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2Vw
dFBvbGljeTsKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0b3JhZ2UqIENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY7CkBAIC0yMTQsOCArMjE1LDEwIEBAIHB1YmxpYzoKICAgICB2b2lk
IGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sKTsKICNl
bmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIENhbGxlZCBpbiByZXNwb25zZSB0byBS
ZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYygpLgorI2lmIFVTRShD
Rk5FVFdPUkspCisgICAgdm9pZCBjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKENGQ2FjaGVkVVJM
UmVzcG9uc2VSZWYpOworI2VsaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgY29udGludWVXaWxs
Q2FjaGVSZXNwb25zZShOU0NhY2hlZFVSTFJlc3BvbnNlICopOwogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5jcHAKaW5kZXggNjM5N2Q3MDI3ZWI0YjQ0MTlkMWRjOGIyZTNjMDYwZDViM2E5YmY2ZS4uOGVi
NGVlYjZhZjU0OWY5YWEwY2RlODUyNjRkN2E4ZmFhODJhYzFmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAK
QEAgLTYxLDcgKzYxLDEyIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhSZXNvdXJjZUhhCiB9CiAjZW5kaWYKIAot
I2lmIFBMQVRGT1JNKE1BQykKKyNpZiBVU0UoQ0ZORVRXT1JLKQordm9pZCBSZXNvdXJjZUhhbmRs
ZUNsaWVudDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBD
RkNhY2hlZFVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlKQoreworICAgIGhhbmRsZS0+Y29udGludWVX
aWxsQ2FjaGVSZXNwb25zZShyZXNwb25zZSk7Cit9CisjZWxpZiBQTEFURk9STShNQUMpCiB2b2lk
IFJlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFu
ZGxlKiBoYW5kbGUsIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKnJlc3BvbnNlKQogewogICAgIGhhbmRs
ZS0+Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZShyZXNwb25zZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKaW5kZXgg
YTJkODcxZDIzYjc3M2EwOWI5ZDlmNzlmMzIwNDcwNmZiZmNhYjdkMy4uYjNhNTkyMzA0Mjg1MGJh
YzRiN2FkZjIzNzM3YzhhYTUxMjY2MWE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaApAQCAtODksOCArODksMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBDbGllbnQgd2lsbCBwYXNzIGFuIHVw
ZGF0ZWQgcmVxdWVzdCB1c2luZyBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVDYW5BdXRoZW50aWNh
dGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKCkgd2hlbiByZWFkeS4KICAgICAgICAgdmlydHVhbCB2
b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oTUFD
KSAmJiAhVVNFKENGTkVUV09SSykKICAgICAgICAgLy8gQ2xpZW50IHdpbGwgcGFzcyBhbiB1cGRh
dGVkIHJlcXVlc3QgdXNpbmcgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbENhY2hlUmVzcG9u
c2UoKSB3aGVuIHJlYWR5LgorI2lmIFVTRShDRk5FVFdPUkspCisgICAgICAgIHZpcnR1YWwgdm9p
ZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNw
b25zZVJlZik7CisjZWxpZiBQTEFURk9STShNQUMpCiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxs
Q2FjaGVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSAq
KTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCmluZGV4IDc1ZTIyN2I2NjcyOWU0MGZiMjk1YzE2
YTVhZWUxNWI3MDVmMDcwZDIuLjkyMmIyMjI3MjYxN2Q4NDlhOTJlOTEzMDdkMDI2NWZlZTI0ZWQ0
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBAIC0xNDgsNyArMTQ4LDIxIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDb25uZWN0
aW9uUmVmPiBtX2Nvbm5lY3Rpb247CiAgICAgICAgIFJlc291cmNlUmVxdWVzdCBtX2N1cnJlbnRS
ZXF1ZXN0OwotI2VuZGlmCisKKyAgICAgICAgc3RydWN0IFRocmVhZFNoYXJlZERhdGEgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkU2hhcmVkRGF0YT4geworICAgICAgICAgICAg
VGhyZWFkU2hhcmVkRGF0YShSZXNvdXJjZUhhbmRsZSopOworICAgICAgICAgICAgflRocmVhZFNo
YXJlZERhdGEoKTsKKworICAgICAgICAgICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZTsKKyAgICAg
ICAgICAgIGRpc3BhdGNoX3F1ZXVlX3QgcXVldWU7CisgICAgICAgICAgICBkaXNwYXRjaF9zZW1h
cGhvcmVfdCBzZW1hcGhvcmU7CisKKyAgICAgICAgICAgIFJldGFpblB0cjxDRlVSTFJlcXVlc3RS
ZWY+IHJlcXVlc3RSZXN1bHQ7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZDYWNoZWRVUkxSZXNw
b25zZVJlZj4gY2FjaGVkUmVzcG9uc2VSZXN1bHQ7CisgICAgICAgICAgICBib29sIGJvb2xSZXN1
bHQ7CisgICAgICAgIH07CisgICAgICAgIFJlZlB0cjxUaHJlYWRTaGFyZWREYXRhPiBtX2FzeW5j
aHJvbm91c1NoYXJlZERhdGE7CisjZW5kaWYgLy8gVVNFKENGTkVUV09SSykKICNpZiBQTEFURk9S
TShNQUMpICYmICFVU0UoQ0ZORVRXT1JLKQogICAgICAgICBSZXRhaW5QdHI8TlNVUkxDb25uZWN0
aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgICAgIFJldGFpblB0cjxpZD4gbV9kZWxlZ2F0ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5k
bGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
SGFuZGxlQ0ZOZXQuY3BwCmluZGV4IGZlNjIwMTFiZDViMTMyMmE3MDViNjA0M2Q4NGFjZTkzMTEy
ODFjNTAuLmYyYTFkNzViYjQzYzFkYWQ5YTE2MDMwZTA0MWY5N2YxNGMyZDRlZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5l
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGTmV0LmNwcApAQCAtODksNiArODksMTEgQEAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYg
YWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3RzKCkKICAgICByZXR1cm4gaG9zdHM7CiB9CiAK
K3N0YXRpYyBib29sIGNvbm5lY3Rpb25XYXNDYW5jZWxsZWQoUmVzb3VyY2VIYW5kbGVJbnRlcm5h
bDo6VGhyZWFkU2hhcmVkRGF0YSogZGF0YSkKK3sKKyAgICByZXR1cm4gIWRhdGEtPmhhbmRsZTsK
K30KKwogc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4mIGNsaWVu
dENlcnRzKCkKIHsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPj4gQ2VydHNNYXA7CkBAIC0xMzQsNiArMTM5LDM4IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0ZV
UkxSZXNwb25zZVJlZj4gc3ludGhlc2l6ZVJlZGlyZWN0UmVzcG9uc2VJZk5lY2Vzc2FyeShjb25z
dCBSCiAgICAgcmV0dXJuIG5ld1Jlc3BvbnNlOwogfQogCitzdGF0aWMgUmVzb3VyY2VSZXF1ZXN0
IGNyZWF0ZVJlc291cmNlUmVxdWVzdChDRlVSTFJlcXVlc3RSZWYgY2ZSZXF1ZXN0LCBjb25zdCBS
ZXRhaW5QdHI8Q0ZVUkxSZXNwb25zZVJlZj4mIHJlZGlyZWN0UmVzcG9uc2UsIFJlc291cmNlSGFu
ZGxlJiBoYW5kbGUpCit7CisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Q7CisgICAgQ0ZIVFRQ
TWVzc2FnZVJlZiBodHRwTWVzc2FnZSA9IENGVVJMUmVzcG9uc2VHZXRIVFRQUmVzcG9uc2UocmVk
aXJlY3RSZXNwb25zZS5nZXQoKSk7CisgICAgaWYgKGh0dHBNZXNzYWdlICYmIENGSFRUUE1lc3Nh
Z2VHZXRSZXNwb25zZVN0YXR1c0NvZGUoaHR0cE1lc3NhZ2UpID09IDMwNykgeworICAgICAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGxhc3RIVFRQTWV0aG9kID0gaGFuZGxlLmxhc3RIVFRQTWV0
aG9kKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBu
ZXdNZXRob2QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdE1ldGhvZChjZlJl
cXVlc3QpKTsKKyAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZVdpdGhPcHRpb25zKGxhc3RIVFRQ
TWV0aG9kLmdldCgpLCBuZXdNZXRob2QuZ2V0KCksIENGUmFuZ2VNYWtlKDAsIENGU3RyaW5nR2V0
TGVuZ3RoKGxhc3RIVFRQTWV0aG9kLmdldCgpKSksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUp
KSB7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlVVJMUmVxdWVzdFJlZj4gbXV0YWJs
ZVJlcXVlc3QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KDAsIGNmUmVx
dWVzdCkpOworICAgICAgICAgICAgd2tTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24oaGFuZGxlLnN0
b3JhZ2VTZXNzaW9uKCksIG11dGFibGVSZXF1ZXN0LmdldCgpKTsKKyAgICAgICAgICAgIENGVVJM
UmVxdWVzdFNldEhUVFBSZXF1ZXN0TWV0aG9kKG11dGFibGVSZXF1ZXN0LmdldCgpLCBsYXN0SFRU
UE1ldGhvZC5nZXQoKSk7CisKKyAgICAgICAgICAgIEZvcm1EYXRhKiBib2R5ID0gaGFuZGxlLmZp
cnN0UmVxdWVzdCgpLmh0dHBCb2R5KCk7CisgICAgICAgICAgICBpZiAoIWVxdWFsSWdub3JpbmdD
YXNlKGhhbmRsZS5maXJzdFJlcXVlc3QoKS5odHRwTWV0aG9kKCksICJHRVQiKSAmJiBib2R5ICYm
ICFib2R5LT5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgV2ViQ29yZTo6c2V0SFRUUEJvZHko
bXV0YWJsZVJlcXVlc3QuZ2V0KCksIGJvZHkpOworCisgICAgICAgICAgICBTdHJpbmcgb3JpZ2lu
YWxDb250ZW50VHlwZSA9IGhhbmRsZS5maXJzdFJlcXVlc3QoKS5odHRwQ29udGVudFR5cGUoKTsK
KyAgICAgICAgICAgIGlmICghb3JpZ2luYWxDb250ZW50VHlwZS5pc0VtcHR5KCkpCisgICAgICAg
ICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUEhlYWRlckZpZWxkVmFsdWUobXV0YWJsZVJlcXVl
c3QuZ2V0KCksIENGU1RSKCJDb250ZW50LVR5cGUiKSwgb3JpZ2luYWxDb250ZW50VHlwZS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKKworICAgICAgICAgICAgcmVxdWVzdCA9IG11dGFibGVSZXF1
ZXN0LmdldCgpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHJlcXVlc3QuaXNOdWxsKCkp
CisgICAgICAgIHJlcXVlc3QgPSBjZlJlcXVlc3Q7CisKKyAgICBpZiAoIXJlcXVlc3QudXJsKCku
cHJvdG9jb2xJcygiaHR0cHMiKSAmJiBwcm90b2NvbElzKHJlcXVlc3QuaHR0cFJlZmVycmVyKCks
ICJodHRwcyIpICYmIGhhbmRsZS5jb250ZXh0KCktPnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QoKSkKKyAgICAgICAgcmVxdWVzdC5jbGVhckhUVFBSZWZlcnJlcigpOwor
ICAgIHJldHVybiByZXF1ZXN0OworfQorCiBzdGF0aWMgQ0ZVUkxSZXF1ZXN0UmVmIHdpbGxTZW5k
UmVxdWVzdChDRlVSTENvbm5lY3Rpb25SZWYgY29ubiwgQ0ZVUkxSZXF1ZXN0UmVmIGNmUmVxdWVz
dCwgQ0ZVUkxSZXNwb25zZVJlZiBvcmlnaW5hbFJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCiB7CiAjaWYgTE9HX0RJU0FCTEVECkBAIC0xNDksMzYgKzE4Niw3IEBAIHN0
YXRpYyBDRlVSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1ZXN0KENGVVJMQ29ubmVjdGlvblJlZiBj
b25uLCBDRlVSTFJlcXVlc3RSZWYKIAogICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSB3aWxsU2Vu
ZFJlcXVlc3QoY29ubj0lcCwgaGFuZGxlPSVwKSAoJXMpIiwgY29ubiwgaGFuZGxlLCBoYW5kbGUt
PmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgUmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3Q7Ci0gICAgaWYgKHJlZGlyZWN0UmVzcG9uc2UpIHsKLSAgICAg
ICAgQ0ZIVFRQTWVzc2FnZVJlZiBodHRwTWVzc2FnZSA9IENGVVJMUmVzcG9uc2VHZXRIVFRQUmVz
cG9uc2UocmVkaXJlY3RSZXNwb25zZS5nZXQoKSk7Ci0gICAgICAgIGlmIChodHRwTWVzc2FnZSAm
JiBDRkhUVFBNZXNzYWdlR2V0UmVzcG9uc2VTdGF0dXNDb2RlKGh0dHBNZXNzYWdlKSA9PSAzMDcp
IHsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbGFzdEhUVFBNZXRob2QgPSBo
YW5kbGUtPmxhc3RIVFRQTWV0aG9kKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAgICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gbmV3TWV0aG9kID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5
SFRUUFJlcXVlc3RNZXRob2QoY2ZSZXF1ZXN0KSk7Ci0gICAgICAgICAgICBpZiAoQ0ZTdHJpbmdD
b21wYXJlV2l0aE9wdGlvbnMobGFzdEhUVFBNZXRob2QuZ2V0KCksIG5ld01ldGhvZC5nZXQoKSwg
Q0ZSYW5nZU1ha2UoMCwgQ0ZTdHJpbmdHZXRMZW5ndGgobGFzdEhUVFBNZXRob2QuZ2V0KCkpKSwg
a0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkpIHsKLSAgICAgICAgICAgICAgICBSZXRhaW5QdHI8
Q0ZNdXRhYmxlVVJMUmVxdWVzdFJlZj4gbXV0YWJsZVJlcXVlc3QgPSBhZG9wdENGKENGVVJMUmVx
dWVzdENyZWF0ZU11dGFibGVDb3B5KDAsIGNmUmVxdWVzdCkpOwotICAgICAgICAgICAgICAgIHdr
U2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKGhhbmRsZS0+c3RvcmFnZVNlc3Npb24oKSwgbXV0YWJs
ZVJlcXVlc3QuZ2V0KCkpOwotICAgICAgICAgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1
ZXN0TWV0aG9kKG11dGFibGVSZXF1ZXN0LmdldCgpLCBsYXN0SFRUUE1ldGhvZC5nZXQoKSk7Ci0K
LSAgICAgICAgICAgICAgICBGb3JtRGF0YSogYm9keSA9IGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCku
aHR0cEJvZHkoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKGhhbmRs
ZS0+Zmlyc3RSZXF1ZXN0KCkuaHR0cE1ldGhvZCgpLCAiR0VUIikgJiYgYm9keSAmJiAhYm9keS0+
aXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICBXZWJDb3JlOjpzZXRIVFRQQm9keShtdXRh
YmxlUmVxdWVzdC5nZXQoKSwgYm9keSk7Ci0KLSAgICAgICAgICAgICAgICBTdHJpbmcgb3JpZ2lu
YWxDb250ZW50VHlwZSA9IGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkuaHR0cENvbnRlbnRUeXBlKCk7
Ci0gICAgICAgICAgICAgICAgaWYgKCFvcmlnaW5hbENvbnRlbnRUeXBlLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUEhlYWRlckZpZWxkVmFsdWUobXV0
YWJsZVJlcXVlc3QuZ2V0KCksIENGU1RSKCJDb250ZW50LVR5cGUiKSwgb3JpZ2luYWxDb250ZW50
VHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKLQotICAgICAgICAgICAgICAgIHJlcXVlc3Qg
PSBtdXRhYmxlUmVxdWVzdC5nZXQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LSAgICBpZiAocmVxdWVzdC5pc051bGwoKSkKLSAgICAgICAgcmVxdWVzdCA9IGNmUmVxdWVzdDsK
LQotICAgIC8vIFNob3VsZCBub3Qgc2V0IFJlZmVyZXIgYWZ0ZXIgYSByZWRpcmVjdCBmcm9tIGEg
c2VjdXJlIHJlc291cmNlIHRvIG5vbi1zZWN1cmUgb25lLgotICAgIGlmICghcmVxdWVzdC51cmwo
KS5wcm90b2NvbElzKCJodHRwcyIpICYmIHByb3RvY29sSXMocmVxdWVzdC5odHRwUmVmZXJyZXIo
KSwgImh0dHBzIikgJiYgaGFuZGxlLT5jb250ZXh0KCktPnNob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3QoKSkKLSAgICAgICAgcmVxdWVzdC5jbGVhckhUVFBSZWZlcnJlcigp
OwotCisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSBjcmVhdGVSZXNvdXJjZVJlcXVlc3Qo
Y2ZSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCAqaGFuZGxlKTsKICAgICBoYW5kbGUtPndpbGxT
ZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLmdldCgpKTsKIAogICAgIGlmIChy
ZXF1ZXN0LmlzTnVsbCgpKQpAQCAtMTkwLDE4ICsxOTgsMzkgQEAgc3RhdGljIENGVVJMUmVxdWVz
dFJlZiB3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm4sIENGVVJMUmVxdWVz
dFJlZgogICAgIHJldHVybiBjZlJlcXVlc3Q7CiB9CiAKLXN0YXRpYyB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShDRlVSTENvbm5lY3Rpb25SZWYgY29ubiwgQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3Bv
bnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQorc3RhdGljIENGVVJMUmVxdWVzdFJlZiB3aWxs
U2VuZFJlcXVlc3RBc3luYyhDRlVSTENvbm5lY3Rpb25SZWYgY29ubmVjdGlvbiwgQ0ZVUkxSZXF1
ZXN0UmVmIGNmUmVxdWVzdCwgQ0ZVUkxSZXNwb25zZVJlZiBvcmlnaW5hbFJlZGlyZWN0UmVzcG9u
c2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0jaWYgTE9HX0RJU0FCTEVEICYmICFVU0Uo
UVVJQ0tfTE9PSykKLSAgICBVTlVTRURfUEFSQU0oY29ubik7Ci0jZW5kaWYKLSAgICBSZXNvdXJj
ZUhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihjb25zdF9jYXN0
PHZvaWQqPihjbGllbnRJbmZvKSk7CisjaWYgIVBMQVRGT1JNKFdJTikKKyAgICBSZWZQdHI8UmVz
b3VyY2VIYW5kbGVJbnRlcm5hbDo6VGhyZWFkU2hhcmVkRGF0YT4gZGF0YSA9IHN0YXRpY19jYXN0
PFJlc291cmNlSGFuZGxlSW50ZXJuYWw6OlRocmVhZFNoYXJlZERhdGEqPihjb25zdF9jYXN0PHZv
aWQqPihjbGllbnRJbmZvKSk7CiAKLSAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbm49JXAsIGhhbmRsZT0lcCkgKCVzKSIsIGNvbm4sIGhhbmRsZSwgaGFuZGxl
LT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBMT0coTmV0
d29yaywgIkNGTmV0IC0gd2lsbFNlbmRSZXF1ZXN0QXN5bmMoY29ubj0lcCwgaGFuZGxlPSVwKSAo
JXMpIiwgY29ubmVjdGlvbiwgZGF0YS0+aGFuZGxlLCBkYXRhLT5oYW5kbGUtPmZpcnN0UmVxdWVz
dCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgaWYgKCFoYW5kbGUtPmNs
aWVudCgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChjb25uZWN0aW9uV2FzQ2FuY2Vs
bGVkKGRhdGEuZ2V0KCkpKSB7CisgICAgICAgICAgICBkYXRhLT5yZXF1ZXN0UmVzdWx0ID0gbnVs
bHB0cjsKKyAgICAgICAgICAgIGRpc3BhdGNoX3NlbWFwaG9yZV9zaWduYWwoZGF0YS0+c2VtYXBo
b3JlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFJldGFpblB0
cjxDRlVSTFJlc3BvbnNlUmVmPiByZWRpcmVjdFJlc3BvbnNlID0gc3ludGhlc2l6ZVJlZGlyZWN0
UmVzcG9uc2VJZk5lY2Vzc2FyeShkYXRhLT5oYW5kbGUtPmN1cnJlbnRSZXF1ZXN0KCksIGNmUmVx
dWVzdCwgb3JpZ2luYWxSZWRpcmVjdFJlc3BvbnNlKTsKKworICAgICAgICBpZiAoIXJlZGlyZWN0
UmVzcG9uc2UpIHsKKyAgICAgICAgICAgIGRhdGEtPmhhbmRsZS0+Y29udGludWVXaWxsU2VuZFJl
cXVlc3QoY2ZSZXF1ZXN0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0ID0gY3JlYXRlUmVzb3VyY2VSZXF1ZXN0KGNmUmVx
dWVzdCwgcmVkaXJlY3RSZXNwb25zZSwgKmRhdGEtPmhhbmRsZSk7CisgICAgICAgIGRhdGEtPmhh
bmRsZS0+d2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkpOwor
ICAgIH0pOwogCisgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3dhaXQoZGF0YS0+c2VtYXBob3JlLCBE
SVNQQVRDSF9USU1FX0ZPUkVWRVIpOworCisgICAgcmV0dXJuIGRhdGEtPnJlcXVlc3RSZXN1bHQu
bGVha1JlZigpOworI2VuZGlmIC8vICFQTEFURk9STShXSU4pCit9CisKK3N0YXRpYyBDRlVSTFJl
c3BvbnNlUmVmIHVwZGF0ZVJlc3BvbnNlSWZOZWNlc3NhcnkoQ0ZVUkxDb25uZWN0aW9uUmVmIGNv
bm5lY3Rpb24sIFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNw
b25zZSkKK3sKICNpZiBQTEFURk9STShNQUMpCiAgICAgLy8gQXZvaWQgTUlNRSB0eXBlIHNuaWZm
aW5nIGlmIHRoZSByZXNwb25zZSBjb21lcyBiYWNrIGFzIDMwNCBOb3QgTW9kaWZpZWQuCiAgICAg
Q0ZIVFRQTWVzc2FnZVJlZiBtc2cgPSB3a0dldENGVVJMUmVzcG9uc2VIVFRQUmVzcG9uc2UoY2ZS
ZXNwb25zZSk7CkBAIC0yMjMsMTQgKzI1Miw0NiBAQCBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm4sIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwbwog
I2VuZGlmCiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKLSAgICBoYW5kbGUtPnNldFF1aWNrTG9va0hh
bmRsZShRdWlja0xvb2tIYW5kbGU6OmNyZWF0ZShoYW5kbGUsIGNvbm4sIGNmUmVzcG9uc2UpKTsK
KyAgICBoYW5kbGUtPnNldFF1aWNrTG9va0hhbmRsZShRdWlja0xvb2tIYW5kbGU6OmNyZWF0ZSho
YW5kbGUsIGNvbm5lY3Rpb24sIGNmUmVzcG9uc2UpKTsKICAgICBpZiAoaGFuZGxlLT5xdWlja0xv
b2tIYW5kbGUoKSkKICAgICAgICAgY2ZSZXNwb25zZSA9IGhhbmRsZS0+cXVpY2tMb29rSGFuZGxl
KCktPmNmUmVzcG9uc2UoKTsKICNlbmRpZgotICAgIAorICAgIHJldHVybiBjZlJlc3BvbnNlOwor
fQorCitzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoQ0ZVUkxDb25uZWN0aW9uUmVmIGNv
bm4sIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
K3sKKyNpZiBMT0dfRElTQUJMRUQgJiYgIVVTRShRVUlDS19MT09LKQorICAgIFVOVVNFRF9QQVJB
TShjb25uKTsKKyNlbmRpZgorICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2Fz
dDxSZXNvdXJjZUhhbmRsZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKKworICAg
IExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBkaWRSZWNlaXZlUmVzcG9uc2UoY29ubj0lcCwgaGFuZGxl
PSVwKSAoJXMpIiwgY29ubiwgaGFuZGxlLCBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgaWYgKCFoYW5kbGUtPmNsaWVudCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBjZlJlc3BvbnNlID0gdXBkYXRlUmVzcG9uc2VJZk5lY2Vzc2Fy
eShjb25uLCBoYW5kbGUsIGNmUmVzcG9uc2UpOwogICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJl
Y2VpdmVSZXNwb25zZShoYW5kbGUsIGNmUmVzcG9uc2UpOwogfQogCitzdGF0aWMgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2VBc3luYyhDRlVSTENvbm5lY3Rpb25SZWYgY29ubmVjdGlvbiwgQ0ZVUkxS
ZXNwb25zZVJlZiBjZlJlc3BvbnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworI2lmICFQ
TEFURk9STShXSU4pCisgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlSW50ZXJuYWw6OlRocmVhZFNo
YXJlZERhdGE+IGRhdGEgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZUludGVybmFsOjpUaHJl
YWRTaGFyZWREYXRhKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOworCisgICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgTE9HKE5l
dHdvcmssICJDRk5ldCAtIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKGNvbm49JXAsIGhhbmRsZT0l
cCkgKCVzKSIsIGNvbm5lY3Rpb24sIGRhdGEtPmhhbmRsZSwgZGF0YS0+aGFuZGxlLT5maXJzdFJl
cXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgICAgICBpZiAoY29u
bmVjdGlvbldhc0NhbmNlbGxlZChkYXRhLmdldCgpKSkKKyAgICAgICAgICAgIGRpc3BhdGNoX3Nl
bWFwaG9yZV9zaWduYWwoZGF0YS0+c2VtYXBob3JlKTsKKyAgICAgICAgQ0ZVUkxSZXNwb25zZVJl
ZiBsb2NhbFJlc3BvbnNlID0gdXBkYXRlUmVzcG9uc2VJZk5lY2Vzc2FyeShjb25uZWN0aW9uLCBk
YXRhLT5oYW5kbGUsIGNmUmVzcG9uc2UpOworICAgICAgICBkYXRhLT5oYW5kbGUtPmNsaWVudCgp
LT5kaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhkYXRhLT5oYW5kbGUsIGxvY2FsUmVzcG9uc2UpOwor
ICAgIH0pOworICAgIGRpc3BhdGNoX3NlbWFwaG9yZV93YWl0KGRhdGEtPnNlbWFwaG9yZSwgRElT
UEFUQ0hfVElNRV9GT1JFVkVSKTsKKyNlbmRpZiAvLyAhUExBVEZPUk0oV0lOKQorfQorCiAjaWYg
VVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQogc3RhdGljIHZvaWQgZGlkUmVjZWl2
ZURhdGFBcnJheShDRlVSTENvbm5lY3Rpb25SZWYgY29ubiwgQ0ZBcnJheVJlZiBkYXRhQXJyYXks
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CkBAIC0yNTAsNiArMzExLDIyIEBAIHN0YXRpYyB2
b2lkIGRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm4sIENGQXJyYXlS
ZWYgZGF0YUFycmF5LCBjCiAKICAgICBoYW5kbGUtPmhhbmRsZURhdGFBcnJheShkYXRhQXJyYXkp
OwogfQorCitzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YUFycmF5QXN5bmMoQ0ZVUkxDb25uZWN0
aW9uUmVmIGNvbm4sIENGQXJyYXlSZWYgZGF0YUFycmF5LCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQoreworI2lmICFQTEFURk9STShXSU4pCisgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlSW50ZXJu
YWw6OlRocmVhZFNoYXJlZERhdGE+IGRhdGEgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZUlu
dGVybmFsOjpUaHJlYWRTaGFyZWREYXRhKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykp
OworICAgIENGUmV0YWluKGNvbm4pOworICAgIENGUmV0YWluKGRhdGFBcnJheSk7CisKKyAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBpZiAo
IWNvbm5lY3Rpb25XYXNDYW5jZWxsZWQoZGF0YS5nZXQoKSkpCisgICAgICAgICAgICBkaWRSZWNl
aXZlRGF0YUFycmF5KGNvbm4sIGRhdGFBcnJheSwgZGF0YS0+aGFuZGxlKTsKKyAgICAgICAgQ0ZS
ZWxlYXNlKGRhdGFBcnJheSk7CisgICAgICAgIENGUmVsZWFzZShjb25uKTsKKyAgICB9KTsKKyNl
bmRpZiAvLyAhUExBVEZPUk0oV0lOKQorfQogI2VuZGlmCiAKIHN0YXRpYyB2b2lkIGRpZFJlY2Vp
dmVEYXRhKENGVVJMQ29ubmVjdGlvblJlZiBjb25uLCBDRkRhdGFSZWYgZGF0YSwgQ0ZJbmRleCBv
cmlnaW5hbExlbmd0aCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTI4MCw2ICszNTcsMTcg
QEAgc3RhdGljIHZvaWQgZGlkU2VuZEJvZHlEYXRhKENGVVJMQ29ubmVjdGlvblJlZiwgQ0ZJbmRl
eCwgQ0ZJbmRleCB0b3RhbEJ5dGVzV3JpdHQKICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRTZW5k
RGF0YShoYW5kbGUsIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRl
KTsKIH0KIAorc3RhdGljIHZvaWQgZGlkU2VuZEJvZHlEYXRhQXN5bmMoQ0ZVUkxDb25uZWN0aW9u
UmVmLCBDRkluZGV4LCBDRkluZGV4IHRvdGFsQnl0ZXNXcml0dGVuLCBDRkluZGV4IHRvdGFsQnl0
ZXNFeHBlY3RlZFRvV3JpdGUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCit7CisjaWYgIVBMQVRG
T1JNKFdJTikKKyAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6VGhyZWFkU2hhcmVk
RGF0YT4gZGF0YSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlSW50ZXJuYWw6OlRocmVhZFNo
YXJlZERhdGEqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CisgICAgZGlzcGF0Y2hf
YXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgaWYgKCFjb25uZWN0
aW9uV2FzQ2FuY2VsbGVkKGRhdGEuZ2V0KCkpKQorICAgICAgICAgICAgZGF0YS0+aGFuZGxlLT5j
bGllbnQoKS0+ZGlkU2VuZERhdGEoZGF0YS0+aGFuZGxlLCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90
YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSk7CisgICAgfSk7CisjZW5kaWYgLy8gIVBMQVRGT1JNKFdJ
TikKK30KKwogc3RhdGljIEJvb2xlYW4gc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2VDYWxsYmFj
ayhDRlVSTENvbm5lY3Rpb25SZWYgY29ubiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKICNp
ZiBMT0dfRElTQUJMRUQKQEAgLTI5NSw2ICszODMsMjggQEAgc3RhdGljIEJvb2xlYW4gc2hvdWxk
VXNlQ3JlZGVudGlhbFN0b3JhZ2VDYWxsYmFjayhDRlVSTENvbm5lY3Rpb25SZWYgY29ubiwgY29u
c3QKICAgICByZXR1cm4gaGFuZGxlLT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpOwogfQog
CitzdGF0aWMgQm9vbGVhbiBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZUFzeW5jKENGVVJMQ29u
bmVjdGlvblJlZiBjb25uLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworI2lmICFQTEFURk9S
TShXSU4pCisgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlSW50ZXJuYWw6OlRocmVhZFNoYXJlZERh
dGE+IGRhdGEgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZUludGVybmFsOjpUaHJlYWRTaGFy
ZWREYXRhKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOworCisgICAgZGlzcGF0Y2hf
YXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgTE9HKE5ldHdvcmss
ICJDRk5ldCAtIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlQXN5bmMoY29ubj0lcCwgaGFuZGxl
PSVwKSAoJXMpIiwgY29ubiwgZGF0YS0+aGFuZGxlLCBkYXRhLT5oYW5kbGUtPmZpcnN0UmVxdWVz
dCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgICAgIGlmIChjb25uZWN0
aW9uV2FzQ2FuY2VsbGVkKGRhdGEuZ2V0KCkpKSB7CisgICAgICAgICAgICBkYXRhLT5ib29sUmVz
dWx0ID0gZmFsc2U7CisgICAgICAgICAgICBkaXNwYXRjaF9zZW1hcGhvcmVfc2lnbmFsKGRhdGEt
PnNlbWFwaG9yZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZGF0
YS0+aGFuZGxlLT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpOworICAgIH0pOworCisgICAg
ZGlzcGF0Y2hfc2VtYXBob3JlX3dhaXQoZGF0YS0+c2VtYXBob3JlLCBESVNQQVRDSF9USU1FX0ZP
UkVWRVIpOworCisgICAgcmV0dXJuIGRhdGEtPmJvb2xSZXN1bHQ7CisjZW5kaWYgLy8gIVBMQVRG
T1JNKFdJTikKK30KKwogc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhDRlVSTENvbm5lY3Rp
b25SZWYgY29ubiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKICNpZiBMT0dfRElTQUJMRUQK
QEAgLTMxMyw2ICs0MjMsMTkgQEAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhDRlVSTENv
bm5lY3Rpb25SZWYgY29ubiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKICAgICAgICAgaGFuZGxl
LT5jbGllbnQoKS0+ZGlkRmluaXNoTG9hZGluZyhoYW5kbGUsIDApOwogfQogCitzdGF0aWMgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nQXN5bmMoQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm4sIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCit7CisjaWYgIVBMQVRGT1JNKFdJTikKKyAgICBSZWZQdHI8UmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbDo6VGhyZWFkU2hhcmVkRGF0YT4gZGF0YSA9IHN0YXRpY19jYXN0PFJl
c291cmNlSGFuZGxlSW50ZXJuYWw6OlRocmVhZFNoYXJlZERhdGEqPihjb25zdF9jYXN0PHZvaWQq
PihjbGllbnRJbmZvKSk7CisgICAgQ0ZSZXRhaW4oY29ubik7CisgICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgaWYgKCFjb25uZWN0aW9uV2Fz
Q2FuY2VsbGVkKGRhdGEuZ2V0KCkpKQorICAgICAgICAgICAgZGlkRmluaXNoTG9hZGluZyhjb25u
LCBkYXRhLT5oYW5kbGUpOworICAgICAgICBDRlJlbGVhc2UoY29ubik7CisgICAgfSk7CisjZW5k
aWYgLy8gIVBMQVRGT1JNKFdJTikKK30KKwogc3RhdGljIHZvaWQgZGlkRmFpbChDRlVSTENvbm5l
Y3Rpb25SZWYgY29ubiwgQ0ZFcnJvclJlZiBlcnJvciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
IHsKICNpZiBMT0dfRElTQUJMRUQKQEAgLTMzMSw2ICs0NTQsMjEgQEAgc3RhdGljIHZvaWQgZGlk
RmFpbChDRlVSTENvbm5lY3Rpb25SZWYgY29ubiwgQ0ZFcnJvclJlZiBlcnJvciwgY29uc3Qgdm9p
ZCogY2xpZW4KICAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkRmFpbChoYW5kbGUsIFJlc291
cmNlRXJyb3IoZXJyb3IpKTsKIH0KIAorc3RhdGljIHZvaWQgZGlkRmFpbEFzeW5jKENGVVJMQ29u
bmVjdGlvblJlZiBjb25uLCBDRkVycm9yUmVmIGVycm9yLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQoreworI2lmICFQTEFURk9STShXSU4pCisgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlSW50ZXJu
YWw6OlRocmVhZFNoYXJlZERhdGE+IGRhdGEgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZUlu
dGVybmFsOjpUaHJlYWRTaGFyZWREYXRhKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykp
OworICAgIENGUmV0YWluKGNvbm4pOworICAgIENGUmV0YWluKGVycm9yKTsKKyAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBpZiAoIWNvbm5l
Y3Rpb25XYXNDYW5jZWxsZWQoZGF0YS5nZXQoKSkpCisgICAgICAgICAgICBkaWRGYWlsKGNvbm4s
IGVycm9yLCBkYXRhLT5oYW5kbGUpOworICAgICAgICBDRlJlbGVhc2UoZXJyb3IpOworICAgICAg
ICBDRlJlbGVhc2UoY29ubik7CisgICAgfSk7CisjZW5kaWYgLy8gIVBMQVRGT1JNKFdJTikKK30K
Kwogc3RhdGljIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgd2lsbENhY2hlUmVzcG9uc2UoQ0ZVUkxD
b25uZWN0aW9uUmVmLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBzdGF0
aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsK
QEAgLTM2MSw2ICs0OTksMjMgQEAgc3RhdGljIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgd2lsbENh
Y2hlUmVzcG9uc2UoQ0ZVUkxDb25uZWN0aW9uUmVmLCBDRkNhY2hlZFVSTFIKICAgICByZXR1cm4g
Y2FjaGVkUmVzcG9uc2U7CiB9CiAKK3N0YXRpYyBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdpbGxD
YWNoZVJlc3BvbnNlQXN5bmMoQ0ZVUkxDb25uZWN0aW9uUmVmLCBDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmIGNhY2hlZFJlc3BvbnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworI2lmICFQTEFU
Rk9STShXSU4pCisgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlSW50ZXJuYWw6OlRocmVhZFNoYXJl
ZERhdGE+IGRhdGEgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZUludGVybmFsOjpUaHJlYWRT
aGFyZWREYXRhKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOworICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgIGlmIChjb25uZWN0
aW9uV2FzQ2FuY2VsbGVkKGRhdGEuZ2V0KCkpKSB7CisgICAgICAgICAgICBkYXRhLT5jYWNoZWRS
ZXNwb25zZVJlc3VsdCA9IG51bGxwdHI7CisgICAgICAgICAgICBkaXNwYXRjaF9zZW1hcGhvcmVf
c2lnbmFsKGRhdGEtPnNlbWFwaG9yZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgZGF0YS0+aGFuZGxlLT5jbGllbnQoKS0+d2lsbENhY2hlUmVzcG9uc2VBc3luYyhk
YXRhLT5oYW5kbGUsIGNhY2hlZFJlc3BvbnNlKTsKKyAgICB9KTsKKyAgICBkaXNwYXRjaF9zZW1h
cGhvcmVfd2FpdChkYXRhLT5zZW1hcGhvcmUsIERJU1BBVENIX1RJTUVfRk9SRVZFUik7CisgICAg
cmV0dXJuIGRhdGEtPmNhY2hlZFJlc3BvbnNlUmVzdWx0LmxlYWtSZWYoKTsKKyNlbmRpZiAvLyAh
UExBVEZPUk0oV0lOKQorfQorCiBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKENGVVJM
Q29ubmVjdGlvblJlZiBjb25uLCBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY2hhbGxlbmdlLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQogewogI2lmIExPR19ESVNBQkxFRApAQCAtMzczLDYgKzUyOCwy
NiBAQCBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKENGVVJMQ29ubmVjdGlvblJlZiBj
b25uLCBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgYwogICAgIGhhbmRsZS0+ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSwgaGFu
ZGxlKSk7CiB9CiAKK3N0YXRpYyB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2VBc3luYyhDRlVSTENv
bm5lY3Rpb25SZWYgY29ubiwgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNoYWxsZW5nZSwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKK3sKKyNpZiAhUExBVEZPUk0oV0lOKQorI2lmIExPR19ESVNBQkxF
RAorICAgIFVOVVNFRF9QQVJBTShjb25uKTsKKyNlbmRpZgorCisgICAgUmVmUHRyPFJlc291cmNl
SGFuZGxlSW50ZXJuYWw6OlRocmVhZFNoYXJlZERhdGE+IGRhdGEgPSBzdGF0aWNfY2FzdDxSZXNv
dXJjZUhhbmRsZUludGVybmFsOjpUaHJlYWRTaGFyZWREYXRhKj4oY29uc3RfY2FzdDx2b2lkKj4o
Y2xpZW50SW5mbykpOworICAgIENGUmV0YWluKGNvbm4pOworICAgIENGUmV0YWluKGNoYWxsZW5n
ZSk7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAg
ICAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIGRpZFJlY2VpdmVDaGFsbGVuZ2VBc3luYyhjb25u
PSVwLCBoYW5kbGU9JXAgKCVzKSIsIGNvbm4sIGRhdGEtPmhhbmRsZSwgZGF0YS0+aGFuZGxlLT5m
aXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaWYg
KCFjb25uZWN0aW9uV2FzQ2FuY2VsbGVkKGRhdGEuZ2V0KCkpKQorICAgICAgICAgICAgZGF0YS0+
aGFuZGxlLT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoY2hhbGxlbmdlLCBkYXRhLT5oYW5kbGUpKTsKKyAgICAgICAgQ0ZSZWxlYXNlKGNo
YWxsZW5nZSk7CisgICAgICAgIENGUmVsZWFzZShjb25uKTsKKyAgICB9KTsKKyNlbmRpZiAvLyAh
UExBVEZPUk0oV0lOKQorfQorCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFD
SykKIHN0YXRpYyBCb29sZWFuIGNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZShDRlVSTENvbm5l
Y3Rpb25SZWYgY29ubiwgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgcHJvdGVjdGlvblNwYWNlLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQogewpAQCAtMzg1LDYgKzU2MCw3IEBAIHN0YXRpYyBCb29s
ZWFuIGNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZShDRlVSTENvbm5lY3Rpb25SZWYgY29ubiwg
Q0ZVUkxQcm90ZWN0CiAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIGNhblJlc3BvbmRUb1Byb3Rl
Y3Rpb25TcGFjZShjb25uPSVwLCBoYW5kbGU9JXAgKCVzKSIsIGNvbm4sIGhhbmRsZSwgaGFuZGxl
LT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogI2lmIFBM
QVRGT1JNKElPUykKKyAgICAvLyBPbiBXZWJLaXQxLCB3aGVuIGNvbnZlcnRpbmcgZnJvbSBQcm90
ZWN0aW9uU3BhY2UgdG8gTlNVUkxQcm90ZWN0aW9uU3BhY2UgaW4gdGhlIEFQSSwgdGhlIHNjaGVt
ZSAiVW5rbm93biIgaXMgbG9zdC4KICAgICBQcm90ZWN0aW9uU3BhY2UgY29yZVByb3RlY3Rpb25T
cGFjZSA9IGNvcmUocHJvdGVjdGlvblNwYWNlKTsKICAgICBpZiAoY29yZVByb3RlY3Rpb25TcGFj
ZS5hdXRoZW50aWNhdGlvblNjaGVtZSgpID09IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9u
U2NoZW1lVW5rbm93bikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzkzLDYgKzU2OSwzMiBA
QCBzdGF0aWMgQm9vbGVhbiBjYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UoQ0ZVUkxDb25uZWN0
aW9uUmVmIGNvbm4sIENGVVJMUHJvdGVjdAogICAgIHJldHVybiBoYW5kbGUtPmNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29yZShwcm90ZWN0aW9uU3BhY2UpKTsKICNlbmRp
ZgogfQorCitzdGF0aWMgQm9vbGVhbiBjYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2VBc3luYyhD
RlVSTENvbm5lY3Rpb25SZWYgY29ubiwgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgcHJvdGVjdGlv
blNwYWNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworI2lmICFQTEFURk9STShXSU4pCisj
aWYgTE9HX0RJU0FCTEVECisgICAgVU5VU0VEX1BBUkFNKGNvbm4pOworI2VuZGlmCisKKyAgICBS
ZWZQdHI8UmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6VGhyZWFkU2hhcmVkRGF0YT4gZGF0YSA9IHN0
YXRpY19jYXN0PFJlc291cmNlSGFuZGxlSW50ZXJuYWw6OlRocmVhZFNoYXJlZERhdGEqPihjb25z
dF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CisKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gY2Fu
UmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlQXN5bmMoY29ubj0lcCwgaGFuZGxlPSVwICglcykiLCBj
b25uLCBkYXRhLT5oYW5kbGUsIGRhdGEtPmhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICAgICAgaWYgKGNvbm5lY3Rpb25XYXNDYW5jZWxs
ZWQoZGF0YS5nZXQoKSkpIHsKKyAgICAgICAgICAgIGRhdGEtPmJvb2xSZXN1bHQgPSBmYWxzZTsK
KyAgICAgICAgICAgIGRpc3BhdGNoX3NlbWFwaG9yZV9zaWduYWwoZGF0YS0+c2VtYXBob3JlKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBkYXRhLT5oYW5kbGUtPmNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29yZShwcm90ZWN0aW9uU3BhY2Up
KTsKKyAgICB9KTsKKworICAgIGRpc3BhdGNoX3NlbWFwaG9yZV93YWl0KGRhdGEtPnNlbWFwaG9y
ZSwgRElTUEFUQ0hfVElNRV9GT1JFVkVSKTsKKworICAgIHJldHVybiBkYXRhLT5ib29sUmVzdWx0
OworI2VuZGlmIC8vICFQTEFURk9STShXSU4pCit9CiAjZW5kaWYKIAogUmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbDo6flJlc291cmNlSGFuZGxlSW50ZXJuYWwoKQpAQCAtNDAzLDkgKzYwNSwyNyBAQCBS
ZXNvdXJjZUhhbmRsZUludGVybmFsOjp+UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCgpCiAgICAgfQog
fQogCitSZXNvdXJjZUhhbmRsZUludGVybmFsOjpUaHJlYWRTaGFyZWREYXRhOjpUaHJlYWRTaGFy
ZWREYXRhKFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCisgICAgOiBoYW5kbGUoaGFuZGxlKQorICAg
ICwgcXVldWUoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViQ29yZS9DRk5ldHdv
cmsiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKQorICAgICwgc2VtYXBob3JlKGRpc3BhdGNoX3Nl
bWFwaG9yZV9jcmVhdGUoMCkpCit7CisgICAgZGlzcGF0Y2hfcXVldWVfdCBiYWNrZ3JvdW5kUXVl
dWUgPSBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0hJ
R0gsIDApOworICAgIGRpc3BhdGNoX3NldF90YXJnZXRfcXVldWUocXVldWUsIGJhY2tncm91bmRR
dWV1ZSk7Cit9CisKK1Jlc291cmNlSGFuZGxlSW50ZXJuYWw6OlRocmVhZFNoYXJlZERhdGE6On5U
aHJlYWRTaGFyZWREYXRhKCkKK3sKKyAgICBkaXNwYXRjaF9yZWxlYXNlKHNlbWFwaG9yZSk7Cisg
ICAgZGlzcGF0Y2hfcmVsZWFzZShxdWV1ZSk7Cit9CisKIFJlc291cmNlSGFuZGxlOjp+UmVzb3Vy
Y2VIYW5kbGUoKQogewogICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBEZXN0cm95aW5nIGpvYiAl
cCAoJXMpIiwgdGhpcywgZC0+bV9maXJzdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CisKKyAgICBpZiAoZC0+bV9hc3luY2hyb25vdXNTaGFyZWREYXRhKQorICAgICAgICBk
LT5tX2FzeW5jaHJvbm91c1NoYXJlZERhdGEtPmhhbmRsZSA9IDA7CiB9CiAKIHZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgQ0ZEaWN0aW9uYXJ5UmVmIGNsaWVudFBy
b3BlcnRpZXMpCkBAIC00NzgsNyArNjk4LDI1IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0
ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sCiAj
ZW5kaWYKIAogICAgIENGVVJMQ29ubmVjdGlvbkNsaWVudF9WNiBjbGllbnQgPSAqUmVzb3VyY2VI
YW5kbGU6OmNvbm5lY3Rpb25DbGllbnRDYWxsYmFja3MoKTsKLSAgICBjbGllbnQuY2xpZW50SW5m
byA9IHRoaXM7CisgICAgaWYgKHRoaXMtPmNsaWVudCgpICYmIHRoaXMtPmNsaWVudCgpLT51c2Vz
QXN5bmNDYWxsYmFja3MoKSkgeworICAgICAgICBkLT5tX2FzeW5jaHJvbm91c1NoYXJlZERhdGEg
PSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6VGhyZWFkU2hhcmVkRGF0YSh0
aGlzKSk7CisgICAgICAgIGNsaWVudC5jbGllbnRJbmZvID0gZC0+bV9hc3luY2hyb25vdXNTaGFy
ZWREYXRhLmdldCgpOworICAgICAgICBjbGllbnQud2lsbFNlbmRSZXF1ZXN0ID0gd2lsbFNlbmRS
ZXF1ZXN0QXN5bmM7CisgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2UgPSBkaWRSZWNl
aXZlUmVzcG9uc2VBc3luYzsKKyAgICAgICAgY2xpZW50LmRpZEZpbmlzaExvYWRpbmcgPSBkaWRG
aW5pc2hMb2FkaW5nQXN5bmM7CisgICAgICAgIGNsaWVudC5kaWRGYWlsID0gZGlkRmFpbEFzeW5j
OworICAgICAgICBjbGllbnQud2lsbENhY2hlUmVzcG9uc2UgPSB3aWxsQ2FjaGVSZXNwb25zZUFz
eW5jOworICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0g
ZGlkUmVjZWl2ZUNoYWxsZW5nZUFzeW5jOworICAgICAgICBjbGllbnQuZGlkU2VuZEJvZHlEYXRh
ID0gZGlkU2VuZEJvZHlEYXRhQXN5bmM7CisgICAgICAgIGNsaWVudC5zaG91bGRVc2VDcmVkZW50
aWFsU3RvcmFnZSA9IHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlQXN5bmM7CisjaWYgVVNFKFBS
T1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKKyAgICAgICAgY2xpZW50LmNhblJlc3BvbmRU
b1Byb3RlY3Rpb25TcGFjZSA9IGNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZUFzeW5jOworI2Vu
ZGlmIC8vIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCisjaWYgVVNFKE5FVFdP
UktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQorICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZURhdGFB
cnJheSA9IGRpZFJlY2VpdmVEYXRhQXJyYXlBc3luYzsKKyNlbmRpZiAvLyBVU0UoTkVUV09SS19D
RkRBVEFfQVJSQVlfQ0FMTEJBQ0spCisgICAgfSBlbHNlCisgICAgICAgIGNsaWVudC5jbGllbnRJ
bmZvID0gdGhpczsKIAogICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgc3RyZWFtUHJvcGVydGll
cyAgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtl
eUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwogICAgIGlmICgh
c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpCkBAIC00OTcsMTAgKzczNSwxNCBAQCB2b2lkIFJl
c291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24oYm9vbCBzaG91bGRVc2VDcmVkZW50
aWFsU3RvcmFnZSwgYm9vbAogICAgIGVsc2UKICAgICAgICAgcHJvcGVydGllc0RpY3Rpb25hcnkg
PSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
MCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1
ZUNhbGxCYWNrcykpOwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKHByb3BlcnRpZXNEaWN0aW9u
YXJ5LmdldCgpLCBrQ0ZVUkxDb25uZWN0aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcywgc3RyZWFt
UHJvcGVydGllcyk7CisKKyAgICBpZiAoU2V0dGluZ3M6Om5ldHdvcmtEYXRhVXNhZ2VUcmFja2lu
Z0VuYWJsZWQoKSAmJiAhQ0ZEaWN0aW9uYXJ5Q29udGFpbnNLZXkocHJvcGVydGllc0RpY3Rpb25h
cnkuZ2V0KCksIF9rQ0ZVUkxDb25uZWN0aW9uUHJvcGVydHlSYXdCeXRlcykpCisgICAgICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKHByb3BlcnRpZXNEaWN0aW9uYXJ5LmdldCgpLCBfa0NGVVJMQ29u
bmVjdGlvblByb3BlcnR5UmF3Qnl0ZXMsIGtDRkJvb2xlYW5UcnVlKTsKICAgICBDRlJlbGVhc2Uo
c3RyZWFtUHJvcGVydGllcyk7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgQ0ZVUkxSZXF1ZXN0
U2V0U2hvdWxkU3RhcnRTeW5jaHJvbm91c2x5KHJlcXVlc3QuZ2V0KCksIDEpOworICAgIGlmICgh
KHRoaXMtPmNsaWVudCgpICYmIHRoaXMtPmNsaWVudCgpLT51c2VzQXN5bmNDYWxsYmFja3MoKSkp
CisgICAgICAgIENGVVJMUmVxdWVzdFNldFNob3VsZFN0YXJ0U3luY2hyb25vdXNseShyZXF1ZXN0
LmdldCgpLCAxKTsKICNlbmRpZgogICAgIGQtPm1fY29ubmVjdGlvbiA9IGFkb3B0Q0YoQ0ZVUkxD
b25uZWN0aW9uQ3JlYXRlV2l0aFByb3BlcnRpZXMoMCwgcmVxdWVzdC5nZXQoKSwgcmVpbnRlcnBy
ZXRfY2FzdDxDRlVSTENvbm5lY3Rpb25DbGllbnQqPigmY2xpZW50KSwgcHJvcGVydGllc0RpY3Rp
b25hcnkuZ2V0KCkpKTsKIH0KQEAgLTUyMSwxMyArNzYzLDE3IEBAIGJvb2wgUmVzb3VyY2VIYW5k
bGU6OnN0YXJ0KCkKIAogICAgIGNyZWF0ZUNGVVJMQ29ubmVjdGlvbihzaG91bGRVc2VDcmVkZW50
aWFsU3RvcmFnZSwgZC0+bV9zaG91bGRDb250ZW50U25pZmYsIGNsaWVudCgpLT5jb25uZWN0aW9u
UHJvcGVydGllcyh0aGlzKS5nZXQoKSk7CiAKKyAgICBpZiAoY2xpZW50KCkgJiYgY2xpZW50KCkt
PnVzZXNBc3luY0NhbGxiYWNrcygpKQorICAgICAgICBDRlVSTENvbm5lY3Rpb25TZXREZWxlZ2F0
ZURpc3BhdGNoUXVldWUoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBkLT5tX2FzeW5jaHJvbm91c1No
YXJlZERhdGEtPnF1ZXVlKTsKKyAgICBlbHNlIHsKICNpZiBQTEFURk9STShXSU4pCi0gICAgQ0ZV
UkxDb25uZWN0aW9uU2NoZWR1bGVXaXRoQ3VycmVudE1lc3NhZ2VRdWV1ZShkLT5tX2Nvbm5lY3Rp
b24uZ2V0KCkpOworICAgICAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZVdpdGhDdXJyZW50TWVz
c2FnZVF1ZXVlKGQtPm1fY29ubmVjdGlvbi5nZXQoKSk7CiAjZWxpZiBQTEFURk9STShJT1MpCi0g
ICAgQ0ZVUkxDb25uZWN0aW9uU2NoZWR1bGVXaXRoUnVuTG9vcChkLT5tX2Nvbm5lY3Rpb24uZ2V0
KCksIFdlYlRocmVhZFJ1bkxvb3AoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICAgICAg
Q0ZVUkxDb25uZWN0aW9uU2NoZWR1bGVXaXRoUnVuTG9vcChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCks
IFdlYlRocmVhZFJ1bkxvb3AoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKICNlbHNlCi0gICAg
Q0ZVUkxDb25uZWN0aW9uU2NoZWR1bGVXaXRoUnVuTG9vcChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCks
IENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICAgICAg
Q0ZVUkxDb25uZWN0aW9uU2NoZWR1bGVXaXRoUnVuTG9vcChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCks
IENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKICNlbmRpZgor
ICAgIH0KICAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZURvd25sb2FkV2l0aFJ1bkxvb3AoZC0+
bV9jb25uZWN0aW9uLmdldCgpLCBsb2FkZXJSdW5Mb29wKCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9k
ZSk7CiAgICAgQ0ZVUkxDb25uZWN0aW9uU3RhcnQoZC0+bV9jb25uZWN0aW9uLmdldCgpKTsKIApA
QCAtNTg0LDggKzgzMCwxMiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcwogYm9vbCBSZXNvdXJj
ZUhhbmRsZTo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKQogewogICAgIExPRyhOZXR3b3Jr
LCAiQ0ZOZXQgLSBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpIik7Ci0gICAgaWYgKGNsaWVu
dCgpKQotICAgICAgICByZXR1cm4gY2xpZW50KCktPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
KHRoaXMpOworICAgIGlmIChSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50ID0gdGhpcy0+Y2xp
ZW50KCkpIHsKKyAgICAgICAgaWYgKGNsaWVudC0+dXNlc0FzeW5jQ2FsbGJhY2tzKCkpCisgICAg
ICAgICAgICBjbGllbnQtPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlQXN5bmModGhpcyk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBjbGllbnQtPnNob3VsZFVzZUNyZWRlbnRp
YWxTdG9yYWdlKHRoaXMpOworICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTY1Niw4
ICs5MDYsMTIgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGwKICNpZiBVU0UoUFJPVEVDVElPTl9T
UEFDRV9BVVRIX0NBTExCQUNLKQogYm9vbCBSZXNvdXJjZUhhbmRsZTo6Y2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25T
cGFjZSkKIHsKLSAgICBpZiAoY2xpZW50KCkpCi0gICAgICAgIHJldHVybiBjbGllbnQoKS0+Y2Fu
QXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSh0aGlzLCBwcm90ZWN0aW9uU3BhY2Up
OworICAgIGlmIChSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkp
IHsKKyAgICAgICAgaWYgKGNsaWVudC0+dXNlc0FzeW5jQ2FsbGJhY2tzKCkpCisgICAgICAgICAg
ICBjbGllbnQtPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyh0aGlz
LCBwcm90ZWN0aW9uU3BhY2UpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gY2xp
ZW50LT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHRoaXMsIHByb3RlY3Rp
b25TcGFjZSk7CisgICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtNzc0LDcgKzEwMjgs
NyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleAogICAgIGVycm9yID0gY2xpZW50LT5lcnJvcigp
OwogCiAgICAgQ0ZVUkxDb25uZWN0aW9uQ2FuY2VsKGhhbmRsZS0+Y29ubmVjdGlvbigpKTsKLSAg
ICAKKwogICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQt
PnJlc3BvbnNlKCk7CiAgICAgZWxzZSB7CkBAIC04NDMsNiArMTA5Nyw0MSBAQCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIFJlc291cmNlSGFuZGxlOjpjdXJyZW50UmVxdWVzdCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGQtPm1fY3VycmVudFJlcXVlc3Q7CiB9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6
OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
K3sKKyAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdFJlc3VsdCA9IHJlcXVlc3Q7CisgICAgaWYg
KCFyZXF1ZXN0UmVzdWx0LmlzTnVsbCgpKQorICAgICAgICByZXF1ZXN0UmVzdWx0LnNldFN0b3Jh
Z2VTZXNzaW9uKGQtPm1fc3RvcmFnZVNlc3Npb24uZ2V0KCkpOworICAgIGQtPm1fYXN5bmNocm9u
b3VzU2hhcmVkRGF0YS0+cmVxdWVzdFJlc3VsdCA9IHJlcXVlc3RSZXN1bHQuY2ZVUkxSZXF1ZXN0
KFVwZGF0ZUhUVFBCb2R5KTsKKyAgICBkaXNwYXRjaF9zZW1hcGhvcmVfc2lnbmFsKGQtPm1fYXN5
bmNocm9ub3VzU2hhcmVkRGF0YS0+c2VtYXBob3JlKTsKK30KKwordm9pZCBSZXNvdXJjZUhhbmRs
ZTo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQoreworICAgIGRpc3BhdGNoX3NlbWFwaG9y
ZV9zaWduYWwoZC0+bV9hc3luY2hyb25vdXNTaGFyZWREYXRhLT5zZW1hcGhvcmUpOworfQorCit2
b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKGJv
b2wgdXNlQ3JlZGVudGlhbFN0b3JhZ2UpCit7CisgICAgZC0+bV9hc3luY2hyb25vdXNTaGFyZWRE
YXRhLT5ib29sUmVzdWx0ID0gdXNlQ3JlZGVudGlhbFN0b3JhZ2U7CisgICAgZGlzcGF0Y2hfc2Vt
YXBob3JlX3NpZ25hbChkLT5tX2FzeW5jaHJvbm91c1NoYXJlZERhdGEtPnNlbWFwaG9yZSk7Cit9
CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UoQ0ZDYWNo
ZWRVUkxSZXNwb25zZVJlZiByZXNwb25zZSkKK3sKKyAgICBkLT5tX2FzeW5jaHJvbm91c1NoYXJl
ZERhdGEtPmNhY2hlZFJlc3BvbnNlUmVzdWx0ID0gcmVzcG9uc2U7CisgICAgZGlzcGF0Y2hfc2Vt
YXBob3JlX3NpZ25hbChkLT5tX2FzeW5jaHJvbm91c1NoYXJlZERhdGEtPnNlbWFwaG9yZSk7Cit9
CisKKyNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQordm9pZCBSZXNvdXJj
ZUhhbmRsZTo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGJv
b2wgY2FuQXV0aGVudGljYXRlKQoreworICAgIGQtPm1fYXN5bmNocm9ub3VzU2hhcmVkRGF0YS0+
Ym9vbFJlc3VsdCA9IGNhbkF1dGhlbnRpY2F0ZTsKKyAgICBkaXNwYXRjaF9zZW1hcGhvcmVfc2ln
bmFsKGQtPm1fYXN5bmNocm9ub3VzU2hhcmVkRGF0YS0+c2VtYXBob3JlKTsKK30KKyNlbmRpZiAv
LyBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQorCiAjZW5kaWYgLy8gVVNFKENG
TkVUV09SSykKIAogI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykK
</data>
<flag name="commit-queue"
          id="241623"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>