<?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>66534</bug_id>
          
          <creation_ts>2011-08-18 21:17:35 -0700</creation_ts>
          <short_desc>Switch RenderBoxModelObject to to new layout types</short_desc>
          <delta_ts>2011-08-19 13:41:17 -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>Layout and Rendering</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>
          
          <blocked>63567</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Emil A Eklund">eae</reporter>
          <assigned_to name="Emil A Eklund">eae</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>leviw</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>453612</commentid>
    <comment_count>0</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-08-18 21:17:35 -0700</bug_when>
    <thetext>Convert RenderBoxModelObject to new layout abstraction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453622</commentid>
    <comment_count>1</comment_count>
      <attachid>104456</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-08-18 21:38:06 -0700</bug_when>
    <thetext>Created attachment 104456
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453638</commentid>
    <comment_count>2</comment_count>
      <attachid>104456</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-18 22:10:28 -0700</bug_when>
    <thetext>Comment on attachment 104456
Patch

Attachment 104456 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9436074

New failing tests:
fast/backgrounds/gradient-background-leakage.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453690</commentid>
    <comment_count>3</comment_count>
      <attachid>104456</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-08-19 00:57:32 -0700</bug_when>
    <thetext>Comment on attachment 104456
Patch

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

Otherwise looks OK.

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:590
&gt; -    FloatSize contextScale(static_cast&lt;float&gt;(ctm.xScale()), static_cast&lt;float&gt;(ctm.yScale()));
&gt; +    FloatSize contextScale(static_cast&lt;LayoutUnit&gt;(ctm.xScale()), static_cast&lt;LayoutUnit&gt;(ctm.yScale()));

LayoutUnit is currently an int, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453969</commentid>
    <comment_count>4</comment_count>
      <attachid>104541</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-08-19 12:00:30 -0700</bug_when>
    <thetext>Created attachment 104541
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454043</commentid>
    <comment_count>5</comment_count>
      <attachid>104541</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-19 13:41:12 -0700</bug_when>
    <thetext>Comment on attachment 104541
Patch for landing

Clearing flags on attachment: 104541

Committed r93435: &lt;http://trac.webkit.org/changeset/93435&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454044</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-19 13:41:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104456</attachid>
            <date>2011-08-18 21:38:06 -0700</date>
            <delta_ts>2011-08-19 12:00:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66534-20110818213805.patch</filename>
            <type>text/plain</type>
            <size>38401</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzMzg0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDgtMTggIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN3aXRjaCBSZW5kZXJCb3hNb2Rl
bE9iamVjdCB0byB0byBuZXcgbGF5b3V0IHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjUzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENvbnZlcnQgUmVuZGVyQm94TW9kZWxPYmplY3QgdG8gbmV3
IGxheW91dCBhYnN0cmFjdGlvbi4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXMgbm8gbmV3IGZ1
bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dR
dWFsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpzaG91bGRQ
YWludEF0TG93UXVhbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3JvdW5kUmVjdEFkanVz
dGVkRm9yQmxlZWRBdm9pZGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUZpbGxUaWxlU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnVzZUZpeGVk
QXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2Fs
Y3VsYXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50TmluZVBpZWNlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
Ym9yZGVyV2lsbEFyY0lubmVyRWRnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRPbmVCb3JkZXJTaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWludEJvcmRlclNpZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29uKToKKyAgICAgICAgKFdl
YkNvcmU6OmFyZWFDYXN0aW5nU2hhZG93SW5Ib2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6Y29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6CisKIDIwMTEtMDgt
MTggIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBNaWQtd29yZCBi
cmVhayBjYW4gb2NjdXIgYmV0d2VlbiBhIGNoYXJhY3RlciBhbmQgYSBjb21iaW5pbmcgbWFyawpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwCShyZXZpc2lvbiA5MzM0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgYm9v
bCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c19sYXllcldhc1NlbAogc3RhdGljIGNvbnN0IGRvdWJs
ZSBjSW50ZXJwb2xhdGlvbkN1dG9mZiA9IDgwMC4gKiA4MDAuOwogc3RhdGljIGNvbnN0IGRvdWJs
ZSBjTG93UXVhbGl0eVRpbWVUaHJlc2hvbGQgPSAwLjUwMDsgLy8gNTAwIG1zCiAKLXR5cGVkZWYg
SGFzaE1hcDxjb25zdCB2b2lkKiwgSW50U2l6ZT4gTGF5ZXJTaXplTWFwOwordHlwZWRlZiBIYXNo
TWFwPGNvbnN0IHZvaWQqLCBMYXlvdXRTaXplPiBMYXllclNpemVNYXA7CiB0eXBlZGVmIEhhc2hN
YXA8UmVuZGVyQm94TW9kZWxPYmplY3QqLCBMYXllclNpemVNYXA+IE9iamVjdExheWVyU2l6ZU1h
cDsKIAogLy8gVGhlIEhhc2hNYXAgZm9yIHN0b3JpbmcgY29udGludWF0aW9uIHBvaW50ZXJzLgpA
QCAtNjgsOSArNjgsOSBAQCBjbGFzcyBJbWFnZVF1YWxpdHlDb250cm9sbGVyIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShJbWFnZVF1YWxpdHlDb250cm9sbGVyKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcigpOwotICAgIGJv
b2wgc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0KiwgUmVuZGVyQm94TW9k
ZWxPYmplY3QqLCBJbWFnZSosIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBJbnRTaXplJik7Cisg
ICAgYm9vbCBzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQqLCBSZW5kZXJC
b3hNb2RlbE9iamVjdCosIEltYWdlKiwgY29uc3Qgdm9pZCogbGF5ZXIsIGNvbnN0IExheW91dFNp
emUmKTsKICAgICB2b2lkIHJlbW92ZUxheWVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiwgTGF5ZXJT
aXplTWFwKiBpbm5lck1hcCwgY29uc3Qgdm9pZCogbGF5ZXIpOwotICAgIHZvaWQgc2V0KFJlbmRl
ckJveE1vZGVsT2JqZWN0KiwgTGF5ZXJTaXplTWFwKiBpbm5lck1hcCwgY29uc3Qgdm9pZCogbGF5
ZXIsIGNvbnN0IEludFNpemUmKTsKKyAgICB2b2lkIHNldChSZW5kZXJCb3hNb2RlbE9iamVjdCos
IExheWVyU2l6ZU1hcCogaW5uZXJNYXAsIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBMYXlvdXRT
aXplJik7CiAgICAgdm9pZCBvYmplY3REZXN0cm95ZWQoUmVuZGVyQm94TW9kZWxPYmplY3QqKTsK
ICAgICBib29sIGlzRW1wdHkoKSB7IHJldHVybiBtX29iamVjdExheWVyU2l6ZU1hcC5pc0VtcHR5
KCk7IH0KIApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnJl
bW92ZUxheWVyCiAgICAgfQogfQogICAgIAotdm9pZCBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpz
ZXQoUmVuZGVyQm94TW9kZWxPYmplY3QqIG9iamVjdCwgTGF5ZXJTaXplTWFwKiBpbm5lck1hcCwg
Y29uc3Qgdm9pZCogbGF5ZXIsIGNvbnN0IEludFNpemUmIHNpemUpCit2b2lkIEltYWdlUXVhbGl0
eUNvbnRyb2xsZXI6OnNldChSZW5kZXJCb3hNb2RlbE9iamVjdCogb2JqZWN0LCBMYXllclNpemVN
YXAqIGlubmVyTWFwLCBjb25zdCB2b2lkKiBsYXllciwgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkK
IHsKICAgICBpZiAoaW5uZXJNYXApCiAgICAgICAgIGlubmVyTWFwLT5zZXQobGF5ZXIsIHNpemUp
OwpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6cmVzdGFy
dFRpbWUKICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChjTG93UXVhbGl0eVRpbWVUaHJlc2hvbGQp
OwogfQogCi1ib29sIEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dRdWFs
aXR5KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUmVuZGVyQm94TW9kZWxPYmplY3QqIG9iamVj
dCwgSW1hZ2UqIGltYWdlLCBjb25zdCB2b2lkICpsYXllciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkK
K2Jvb2wgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBSZW5kZXJCb3hNb2RlbE9iamVjdCogb2JqZWN0LCBJbWFn
ZSogaW1hZ2UsIGNvbnN0IHZvaWQgKmxheWVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQogewog
ICAgIC8vIElmIHRoZSBpbWFnZSBpcyBub3QgYSBiaXRtYXAgaW1hZ2UsIHRoZW4gbm9uZSBvZiB0
aGlzIGlzIHJlbGV2YW50IGFuZCB3ZSBqdXN0IHBhaW50IGF0IGhpZ2gKICAgICAvLyBxdWFsaXR5
LgpAQCAtMTQ5LDcgKzE0OSw3IEBAIGJvb2wgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxk
UGFpbnQKICAgICAvLyBMb29rIG91cnNlbHZlcyB1cCBpbiB0aGUgaGFzaHRhYmxlcy4KICAgICBP
YmplY3RMYXllclNpemVNYXA6Oml0ZXJhdG9yIGkgPSBtX29iamVjdExheWVyU2l6ZU1hcC5maW5k
KG9iamVjdCk7CiAgICAgTGF5ZXJTaXplTWFwKiBpbm5lck1hcCA9IGkgIT0gbV9vYmplY3RMYXll
clNpemVNYXAuZW5kKCkgPyAmaS0+c2Vjb25kIDogMDsKLSAgICBJbnRTaXplIG9sZFNpemU7Cisg
ICAgTGF5b3V0U2l6ZSBvbGRTaXplOwogICAgIGJvb2wgaXNGaXJzdFJlc2l6ZSA9IHRydWU7CiAg
ICAgaWYgKGlubmVyTWFwKSB7CiAgICAgICAgIExheWVyU2l6ZU1hcDo6aXRlcmF0b3IgaiA9IGlu
bmVyTWFwLT5maW5kKGxheWVyKTsKQEAgLTE2MSw3ICsxNjEsOSBAQCBib29sIEltYWdlUXVhbGl0
eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50CiAKICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGN1
cnJlbnRUcmFuc2Zvcm0gPSBjb250ZXh0LT5nZXRDVE0oKTsKICAgICBib29sIGNvbnRleHRJc1Nj
YWxlZCA9ICFjdXJyZW50VHJhbnNmb3JtLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVk
KCk7Ci0gICAgaWYgKCFjb250ZXh0SXNTY2FsZWQgJiYgaW1hZ2VTaXplID09IHNpemUpIHsKKyAg
ICAvLyBGSVhNRTogQ2hhbmdlIHRvIHVzZSByb3VnaGx5RXF1YWxzIHdoZW4gd2UgbW92ZSB0byBm
bG9hdC4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY2MTQ4CisgICAgaWYgKCFjb250ZXh0SXNTY2FsZWQgJiYgc2l6ZSA9PSBpbWFnZVNpemUpIHsK
ICAgICAgICAgLy8gVGhlcmUgaXMgbm8gc2NhbGUgaW4gZWZmZWN0LiBJZiB3ZSBoYWQgYSBzY2Fs
ZSBpbiBlZmZlY3QgYmVmb3JlLCB3ZSBjYW4ganVzdCByZW1vdmUgdGhpcyBvYmplY3QgZnJvbSB0
aGUgbGlzdC4KICAgICAgICAgcmVtb3ZlTGF5ZXIob2JqZWN0LCBpbm5lck1hcCwgbGF5ZXIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xODMsNiArMTg1LDggQEAgYm9vbCBJbWFnZVF1YWxp
dHlDb250cm9sbGVyOjpzaG91bGRQYWludAogICAgIC8vIElmIHRoaXMgaXMgdGhlIGZpcnN0IHRp
bWUgcmVzaXppbmcgdGhpcyBpbWFnZSwgb3IgaXRzIHNpemUgaXMgdGhlCiAgICAgLy8gc2FtZSBh
cyB0aGUgbGFzdCByZXNpemUsIGRyYXcgYXQgaGlnaCByZXMsIGJ1dCByZWNvcmQgdGhlIHBhaW50
CiAgICAgLy8gc2l6ZSBhbmQgc2V0IHRoZSB0aW1lci4KKyAgICAvLyBGSVhNRTogQ2hhbmdlIHRv
IHVzZSByb3VnaGx5RXF1YWxzIHdoZW4gd2UgbW92ZSB0byBmbG9hdC4KKyAgICAvLyBTZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MTQ4CiAgICAgaWYgKGlzRmly
c3RSZXNpemUgfHwgb2xkU2l6ZSA9PSBzaXplKSB7CiAgICAgICAgIHJlc3RhcnRUaW1lcigpOwog
ICAgICAgICBzZXQob2JqZWN0LCBpbm5lck1hcCwgbGF5ZXIsIHNpemUpOwpAQCAtMjM1LDcgKzIz
OSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnNldFNlbGVjdGlvblMKICAgICAgICAg
Y2ItPnNldFNlbGVjdGlvblN0YXRlKHMpOwogfQogCi1ib29sIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIEltYWdl
KiBpbWFnZSwgY29uc3Qgdm9pZCogbGF5ZXIsIGNvbnN0IEludFNpemUmIHNpemUpCitib29sIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIEltYWdlKiBpbWFnZSwgY29uc3Qgdm9pZCogbGF5ZXIsIGNvbnN0IExheW91
dFNpemUmIHNpemUpCiB7CiAgICAgcmV0dXJuIGltYWdlUXVhbGl0eUNvbnRyb2xsZXIoKS0+c2hv
dWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgdGhpcywgaW1hZ2UsIGxheWVyLCBzaXplKTsK
IH0KQEAgLTU3NSwxNSArNTc5LDE1IEBAIFJvdW5kZWRSZWN0IFJlbmRlckJveE1vZGVsT2JqZWN0
OjpnZXRCYWMKICAgICByZXR1cm4gYm9yZGVyOwogfQogCi1zdGF0aWMgSW50UmVjdCBiYWNrZ3Jv
dW5kUmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFuY2UoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBib3JkZXJSZWN0LCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxl
ZWRBdm9pZGFuY2UpCitzdGF0aWMgTGF5b3V0UmVjdCBiYWNrZ3JvdW5kUmVjdEFkanVzdGVkRm9y
QmxlZWRBdm9pZGFuY2UoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0
JiBib3JkZXJSZWN0LCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UpCiB7
CiAgICAgaWYgKGJsZWVkQXZvaWRhbmNlICE9IEJhY2tncm91bmRCbGVlZFNocmlua0JhY2tncm91
bmQpCiAgICAgICAgIHJldHVybiBib3JkZXJSZWN0OwogCi0gICAgSW50UmVjdCBhZGp1c3RlZFJl
Y3QgPSBib3JkZXJSZWN0OworICAgIExheW91dFJlY3QgYWRqdXN0ZWRSZWN0ID0gYm9yZGVyUmVj
dDsKICAgICAvLyBXZSBuZWVkIHRvIHNocmluayB0aGUgYm9yZGVyIGJ5IG9uZSBkZXZpY2UgcGl4
ZWwgb24gZWFjaCBzaWRlLgogICAgIEFmZmluZVRyYW5zZm9ybSBjdG0gPSBjb250ZXh0LT5nZXRD
VE0oKTsKLSAgICBGbG9hdFNpemUgY29udGV4dFNjYWxlKHN0YXRpY19jYXN0PGZsb2F0PihjdG0u
eFNjYWxlKCkpLCBzdGF0aWNfY2FzdDxmbG9hdD4oY3RtLnlTY2FsZSgpKSk7CisgICAgRmxvYXRT
aXplIGNvbnRleHRTY2FsZShzdGF0aWNfY2FzdDxMYXlvdXRVbml0PihjdG0ueFNjYWxlKCkpLCBz
dGF0aWNfY2FzdDxMYXlvdXRVbml0PihjdG0ueVNjYWxlKCkpKTsKICAgICBhZGp1c3RlZFJlY3Qu
aW5mbGF0ZVgoLWNlaWxmKDEgLyBjb250ZXh0U2NhbGUud2lkdGgoKSkpOwogICAgIGFkanVzdGVk
UmVjdC5pbmZsYXRlWSgtY2VpbGYoMSAvIGNvbnRleHRTY2FsZS5oZWlnaHQoKSkpOwogICAgIHJl
dHVybiBhZGp1c3RlZFJlY3Q7CkBAIC03NzcsNyArNzgxLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRGaWxsTGF5ZQogICAgIH0KIH0KIAotSW50U2l6ZSBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6Y2FsY3VsYXRlRmlsbFRpbGVTaXplKGNvbnN0IEZpbGxMYXllciogZmlsbExheWVy
LCBJbnRTaXplIHBvc2l0aW9uaW5nQXJlYVNpemUpIGNvbnN0CitMYXlvdXRTaXplIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVGaWxsVGlsZVNpemUoY29uc3QgRmlsbExheWVyKiBmaWxs
TGF5ZXIsIExheW91dFNpemUgcG9zaXRpb25pbmdBcmVhU2l6ZSkgY29uc3QKIHsKICAgICBTdHls
ZUltYWdlKiBpbWFnZSA9IGZpbGxMYXllci0+aW1hZ2UoKTsKICAgICBpbWFnZS0+c2V0SW1hZ2VD
b250YWluZXJTaXplKHBvc2l0aW9uaW5nQXJlYVNpemUpOyAvLyBVc2UgdGhlIGJveCBlc3RhYmxp
c2hlZCBieSBiYWNrZ3JvdW5kLW9yaWdpbi4KQEAgLTc4Niw4ICs3OTAsOCBAQCBJbnRTaXplIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVGCiAKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAg
ICAgICAgY2FzZSBTaXplTGVuZ3RoOiB7Ci0gICAgICAgICAgICBpbnQgdyA9IHBvc2l0aW9uaW5n
QXJlYVNpemUud2lkdGgoKTsKLSAgICAgICAgICAgIGludCBoID0gcG9zaXRpb25pbmdBcmVhU2l6
ZS5oZWlnaHQoKTsKKyAgICAgICAgICAgIExheW91dFVuaXQgdyA9IHBvc2l0aW9uaW5nQXJlYVNp
emUud2lkdGgoKTsKKyAgICAgICAgICAgIExheW91dFVuaXQgaCA9IHBvc2l0aW9uaW5nQXJlYVNp
emUuaGVpZ2h0KCk7CiAKICAgICAgICAgICAgIExlbmd0aCBsYXllcldpZHRoID0gZmlsbExheWVy
LT5zaXplKCkuc2l6ZS53aWR0aCgpOwogICAgICAgICAgICAgTGVuZ3RoIGxheWVySGVpZ2h0ID0g
ZmlsbExheWVyLT5zaXplKCkuc2l6ZS5oZWlnaHQoKTsKQEAgLTgwNSwzMSArODA5LDMxIEBAIElu
dFNpemUgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUYKICAgICAgICAgICAgIC8vIElm
IG9uZSBvZiB0aGUgdmFsdWVzIGlzIGF1dG8gd2UgaGF2ZSB0byB1c2UgdGhlIGFwcHJvcHJpYXRl
CiAgICAgICAgICAgICAvLyBzY2FsZSB0byBtYWludGFpbiBvdXIgYXNwZWN0IHJhdGlvLgogICAg
ICAgICAgICAgaWYgKGxheWVyV2lkdGguaXNBdXRvKCkgJiYgIWxheWVySGVpZ2h0LmlzQXV0bygp
KSB7Ci0gICAgICAgICAgICAgICAgSW50U2l6ZSBpbWFnZUludHJpbnNpY1NpemUgPSBpbWFnZS0+
aW1hZ2VTaXplKHRoaXMsIHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSk7CisgICAgICAgICAgICAg
ICAgTGF5b3V0U2l6ZSBpbWFnZUludHJpbnNpY1NpemUgPSBpbWFnZS0+aW1hZ2VTaXplKHRoaXMs
IHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSk7CiAgICAgICAgICAgICAgICAgaWYgKGltYWdlSW50
cmluc2ljU2l6ZS5oZWlnaHQoKSkKICAgICAgICAgICAgICAgICAgICAgdyA9IGltYWdlSW50cmlu
c2ljU2l6ZS53aWR0aCgpICogaCAvIGltYWdlSW50cmluc2ljU2l6ZS5oZWlnaHQoKTsgICAgICAg
IAogICAgICAgICAgICAgfSBlbHNlIGlmICghbGF5ZXJXaWR0aC5pc0F1dG8oKSAmJiBsYXllckhl
aWdodC5pc0F1dG8oKSkgewotICAgICAgICAgICAgICAgIEludFNpemUgaW1hZ2VJbnRyaW5zaWNT
aXplID0gaW1hZ2UtPmltYWdlU2l6ZSh0aGlzLCBzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpOwor
ICAgICAgICAgICAgICAgIExheW91dFNpemUgaW1hZ2VJbnRyaW5zaWNTaXplID0gaW1hZ2UtPmlt
YWdlU2l6ZSh0aGlzLCBzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpOwogICAgICAgICAgICAgICAg
IGlmIChpbWFnZUludHJpbnNpY1NpemUud2lkdGgoKSkKICAgICAgICAgICAgICAgICAgICAgaCA9
IGltYWdlSW50cmluc2ljU2l6ZS5oZWlnaHQoKSAqIHcgLyBpbWFnZUludHJpbnNpY1NpemUud2lk
dGgoKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobGF5ZXJXaWR0aC5pc0F1dG8oKSAmJiBsYXll
ckhlaWdodC5pc0F1dG8oKSkgewogICAgICAgICAgICAgICAgIC8vIElmIGJvdGggd2lkdGggYW5k
IGhlaWdodCBhcmUgYXV0bywgdXNlIHRoZSBpbWFnZSdzIGludHJpbnNpYyBzaXplLgotICAgICAg
ICAgICAgICAgIEludFNpemUgaW1hZ2VJbnRyaW5zaWNTaXplID0gaW1hZ2UtPmltYWdlU2l6ZSh0
aGlzLCBzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpOworICAgICAgICAgICAgICAgIExheW91dFNp
emUgaW1hZ2VJbnRyaW5zaWNTaXplID0gaW1hZ2UtPmltYWdlU2l6ZSh0aGlzLCBzdHlsZSgpLT5l
ZmZlY3RpdmVab29tKCkpOwogICAgICAgICAgICAgICAgIHcgPSBpbWFnZUludHJpbnNpY1NpemUu
d2lkdGgoKTsKICAgICAgICAgICAgICAgICBoID0gaW1hZ2VJbnRyaW5zaWNTaXplLmhlaWdodCgp
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICByZXR1cm4gSW50U2l6
ZShtYXgoMSwgdyksIG1heCgxLCBoKSk7CisgICAgICAgICAgICByZXR1cm4gTGF5b3V0U2l6ZSht
YXg8TGF5b3V0VW5pdD4oMSwgdyksIG1heDxMYXlvdXRVbml0PigxLCBoKSk7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBDb250YWluOgogICAgICAgICBjYXNlIENvdmVyOiB7Ci0gICAgICAgICAg
ICBJbnRTaXplIGltYWdlSW50cmluc2ljU2l6ZSA9IGltYWdlLT5pbWFnZVNpemUodGhpcywgMSk7
CisgICAgICAgICAgICBMYXlvdXRTaXplIGltYWdlSW50cmluc2ljU2l6ZSA9IGltYWdlLT5pbWFn
ZVNpemUodGhpcywgMSk7CiAgICAgICAgICAgICBmbG9hdCBob3Jpem9udGFsU2NhbGVGYWN0b3Ig
PSBpbWFnZUludHJpbnNpY1NpemUud2lkdGgoKQogICAgICAgICAgICAgICAgID8gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHBvc2l0aW9uaW5nQXJlYVNpemUud2lkdGgoKSkgLyBpbWFnZUludHJpbnNpY1Np
emUud2lkdGgoKSA6IDE7CiAgICAgICAgICAgICBmbG9hdCB2ZXJ0aWNhbFNjYWxlRmFjdG9yID0g
aW1hZ2VJbnRyaW5zaWNTaXplLmhlaWdodCgpCiAgICAgICAgICAgICAgICAgPyBzdGF0aWNfY2Fz
dDxmbG9hdD4ocG9zaXRpb25pbmdBcmVhU2l6ZS5oZWlnaHQoKSkgLyBpbWFnZUludHJpbnNpY1Np
emUuaGVpZ2h0KCkgOiAxOwogICAgICAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSB0eXBlID09
IENvbnRhaW4gPyBtaW4oaG9yaXpvbnRhbFNjYWxlRmFjdG9yLCB2ZXJ0aWNhbFNjYWxlRmFjdG9y
KSA6IG1heChob3Jpem9udGFsU2NhbGVGYWN0b3IsIHZlcnRpY2FsU2NhbGVGYWN0b3IpOwotICAg
ICAgICAgICAgcmV0dXJuIEludFNpemUobWF4PGludD4oMSwgaW1hZ2VJbnRyaW5zaWNTaXplLndp
ZHRoKCkgKiBzY2FsZUZhY3RvciksIG1heDxpbnQ+KDEsIGltYWdlSW50cmluc2ljU2l6ZS5oZWln
aHQoKSAqIHNjYWxlRmFjdG9yKSk7CisgICAgICAgICAgICByZXR1cm4gTGF5b3V0U2l6ZShtYXg8
TGF5b3V0VW5pdD4oMSwgaW1hZ2VJbnRyaW5zaWNTaXplLndpZHRoKCkgKiBzY2FsZUZhY3Rvciks
IG1heDxMYXlvdXRVbml0PigxLCBpbWFnZUludHJpbnNpY1NpemUuaGVpZ2h0KCkgKiBzY2FsZUZh
Y3RvcikpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgU2l6ZU5vbmU6CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTg1Myw3ICs4NTcsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpCYWNr
Z3JvdW5kSW1hCiAKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OkJhY2tncm91bmRJbWFnZUdl
b21ldHJ5Ojp1c2VGaXhlZEF0dGFjaG1lbnQoY29uc3QgTGF5b3V0UG9pbnQmIGF0dGFjaG1lbnRQ
b2ludCkKIHsKLSAgICBtX3BoYXNlLm1vdmUobWF4KGF0dGFjaG1lbnRQb2ludC54KCkgLSBtX2Rl
c3RSZWN0LngoKSwgMCksIG1heChhdHRhY2htZW50UG9pbnQueSgpIC0gbV9kZXN0UmVjdC55KCks
IDApKTsKKyAgICBtX3BoYXNlLm1vdmUobWF4PExheW91dFVuaXQ+KGF0dGFjaG1lbnRQb2ludC54
KCkgLSBtX2Rlc3RSZWN0LngoKSwgMCksIG1heDxMYXlvdXRVbml0PihhdHRhY2htZW50UG9pbnQu
eSgpIC0gbV9kZXN0UmVjdC55KCksIDApKTsKIH0KIAogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OmNsaXAoY29uc3QgTGF5b3V0UmVjdCYgY2xpcFJl
Y3QpCkBAIC04NjgsMTIgKzg3MiwxMiBAQCBMYXlvdXRQb2ludCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6QmFja2dyCiAgICAgcmV0dXJuIHBoYXNlOwogfQogCi12b2lkIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShjb25zdCBGaWxsTGF5ZXIqIGZp
bGxMYXllciwgY29uc3QgSW50UmVjdCYgcGFpbnRSZWN0LCAKK3ZvaWQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OmNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KGNvbnN0IEZpbGxMYXllciog
ZmlsbExheWVyLCBjb25zdCBMYXlvdXRSZWN0JiBwYWludFJlY3QsIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFja2dyb3VuZElt
YWdlR2VvbWV0cnkmIGdlb21ldHJ5KQogewotICAgIGludCBsZWZ0ID0gMDsKLSAgICBpbnQgdG9w
ID0gMDsKLSAgICBJbnRTaXplIHBvc2l0aW9uaW5nQXJlYVNpemU7CisgICAgTGF5b3V0VW5pdCBs
ZWZ0ID0gMDsKKyAgICBMYXlvdXRVbml0IHRvcCA9IDA7CisgICAgTGF5b3V0U2l6ZSBwb3NpdGlv
bmluZ0FyZWFTaXplOwogCiAgICAgLy8gRGV0ZXJtaW5lIHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9u
aW5nIGFyZWEgYW5kIHNldCBkZXN0UmVjdCB0byB0aGUgYmFja2dyb3VuZCBwYWludGluZyBhcmVh
LgogICAgIC8vIGRlc3RSZWN0IHdpbGwgYmUgYWRqdXN0ZWQgbGF0ZXIgaWYgdGhlIGJhY2tncm91
bmQgaXMgbm9uLXJlcGVhdGluZy4KQEAgLTg5Miw4ICs4OTYsOCBAQCB2b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpjYWxjdWxhdGVCYWNrCiAgICAgaWYgKCFmaXhlZEF0dGFjaG1lbnQpIHsKICAg
ICAgICAgZ2VvbWV0cnkuc2V0RGVzdFJlY3QocGFpbnRSZWN0KTsKIAotICAgICAgICBpbnQgcmln
aHQgPSAwOwotICAgICAgICBpbnQgYm90dG9tID0gMDsKKyAgICAgICAgTGF5b3V0VW5pdCByaWdo
dCA9IDA7CisgICAgICAgIExheW91dFVuaXQgYm90dG9tID0gMDsKICAgICAgICAgLy8gU2Nyb2xs
IGFuZCBMb2NhbC4KICAgICAgICAgaWYgKGZpbGxMYXllci0+b3JpZ2luKCkgIT0gQm9yZGVyRmls
bEJveCkgewogICAgICAgICAgICAgbGVmdCA9IGJvcmRlckxlZnQoKTsKQEAgLTkxMiwxMSArOTE2
LDExIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUJhY2sKICAgICAgICAg
Ly8gaXRzIG1hcmdpbnMuIFNpbmNlIHRob3NlIHdlcmUgYWRkZWQgaW4gYWxyZWFkeSwgd2UgaGF2
ZSB0byBmYWN0b3IgdGhlbSBvdXQgd2hlbiBjb21wdXRpbmcKICAgICAgICAgLy8gdGhlIGJhY2tn
cm91bmQgcG9zaXRpb25pbmcgYXJlYS4KICAgICAgICAgaWYgKGlzUm9vdCgpKSB7Ci0gICAgICAg
ICAgICBwb3NpdGlvbmluZ0FyZWFTaXplID0gSW50U2l6ZSh0b1JlbmRlckJveCh0aGlzKS0+d2lk
dGgoKSAtIGxlZnQgLSByaWdodCwgdG9SZW5kZXJCb3godGhpcyktPmhlaWdodCgpIC0gdG9wIC0g
Ym90dG9tKTsKKyAgICAgICAgICAgIHBvc2l0aW9uaW5nQXJlYVNpemUgPSBMYXlvdXRTaXplKHRv
UmVuZGVyQm94KHRoaXMpLT53aWR0aCgpIC0gbGVmdCAtIHJpZ2h0LCB0b1JlbmRlckJveCh0aGlz
KS0+aGVpZ2h0KCkgLSB0b3AgLSBib3R0b20pOwogICAgICAgICAgICAgbGVmdCArPSBtYXJnaW5M
ZWZ0KCk7CiAgICAgICAgICAgICB0b3AgKz0gbWFyZ2luVG9wKCk7CiAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgcG9zaXRpb25pbmdBcmVhU2l6ZSA9IEludFNpemUocGFpbnRSZWN0LndpZHRo
KCkgLSBsZWZ0IC0gcmlnaHQsIHBhaW50UmVjdC5oZWlnaHQoKSAtIHRvcCAtIGJvdHRvbSk7Cisg
ICAgICAgICAgICBwb3NpdGlvbmluZ0FyZWFTaXplID0gTGF5b3V0U2l6ZShwYWludFJlY3Qud2lk
dGgoKSAtIGxlZnQgLSByaWdodCwgcGFpbnRSZWN0LmhlaWdodCgpIC0gdG9wIC0gYm90dG9tKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBnZW9tZXRyeS5zZXREZXN0UmVjdCh2aWV3UmVjdCgpKTsK
ICAgICAgICAgcG9zaXRpb25pbmdBcmVhU2l6ZSA9IGdlb21ldHJ5LmRlc3RSZWN0KCkuc2l6ZSgp
OwpAQCAtOTI3LDE1ICs5MzEsMTUgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3Vs
YXRlQmFjawogICAgIEVGaWxsUmVwZWF0IGJhY2tncm91bmRSZXBlYXRYID0gZmlsbExheWVyLT5y
ZXBlYXRYKCk7CiAgICAgRUZpbGxSZXBlYXQgYmFja2dyb3VuZFJlcGVhdFkgPSBmaWxsTGF5ZXIt
PnJlcGVhdFkoKTsKIAotICAgIGludCB4UG9zaXRpb24gPSBmaWxsTGF5ZXItPnhQb3NpdGlvbigp
LmNhbGNNaW5WYWx1ZShwb3NpdGlvbmluZ0FyZWFTaXplLndpZHRoKCkgLSBnZW9tZXRyeS50aWxl
U2l6ZSgpLndpZHRoKCksIHRydWUpOworICAgIExheW91dFVuaXQgeFBvc2l0aW9uID0gZmlsbExh
eWVyLT54UG9zaXRpb24oKS5jYWxjTWluVmFsdWUocG9zaXRpb25pbmdBcmVhU2l6ZS53aWR0aCgp
IC0gZ2VvbWV0cnkudGlsZVNpemUoKS53aWR0aCgpLCB0cnVlKTsKICAgICBpZiAoYmFja2dyb3Vu
ZFJlcGVhdFggPT0gUmVwZWF0RmlsbCkKLSAgICAgICAgZ2VvbWV0cnkuc2V0UGhhc2VYKGdlb21l
dHJ5LnRpbGVTaXplKCkud2lkdGgoKSA/IGdlb21ldHJ5LnRpbGVTaXplKCkud2lkdGgoKSAtICh4
UG9zaXRpb24gKyBsZWZ0KSAlIGdlb21ldHJ5LnRpbGVTaXplKCkud2lkdGgoKSA6IDApOworICAg
ICAgICBnZW9tZXRyeS5zZXRQaGFzZVgoZ2VvbWV0cnkudGlsZVNpemUoKS53aWR0aCgpID8gbGF5
b3V0TW9kKGdlb21ldHJ5LnRpbGVTaXplKCkud2lkdGgoKSAtICh4UG9zaXRpb24gKyBsZWZ0KSwg
Z2VvbWV0cnkudGlsZVNpemUoKS53aWR0aCgpKSA6IDApOwogICAgIGVsc2UKICAgICAgICAgZ2Vv
bWV0cnkuc2V0Tm9SZXBlYXRYKHhQb3NpdGlvbiArIGxlZnQpOwogCi0gICAgaW50IHlQb3NpdGlv
biA9IGZpbGxMYXllci0+eVBvc2l0aW9uKCkuY2FsY01pblZhbHVlKHBvc2l0aW9uaW5nQXJlYVNp
emUuaGVpZ2h0KCkgLSBnZW9tZXRyeS50aWxlU2l6ZSgpLmhlaWdodCgpLCB0cnVlKTsKKyAgICBM
YXlvdXRVbml0IHlQb3NpdGlvbiA9IGZpbGxMYXllci0+eVBvc2l0aW9uKCkuY2FsY01pblZhbHVl
KHBvc2l0aW9uaW5nQXJlYVNpemUuaGVpZ2h0KCkgLSBnZW9tZXRyeS50aWxlU2l6ZSgpLmhlaWdo
dCgpLCB0cnVlKTsKICAgICBpZiAoYmFja2dyb3VuZFJlcGVhdFkgPT0gUmVwZWF0RmlsbCkKLSAg
ICAgICAgZ2VvbWV0cnkuc2V0UGhhc2VZKGdlb21ldHJ5LnRpbGVTaXplKCkuaGVpZ2h0KCkgPyBn
ZW9tZXRyeS50aWxlU2l6ZSgpLmhlaWdodCgpIC0gKHlQb3NpdGlvbiArIHRvcCkgJSBnZW9tZXRy
eS50aWxlU2l6ZSgpLmhlaWdodCgpIDogMCk7CisgICAgICAgIGdlb21ldHJ5LnNldFBoYXNlWShn
ZW9tZXRyeS50aWxlU2l6ZSgpLmhlaWdodCgpID8gbGF5b3V0TW9kKGdlb21ldHJ5LnRpbGVTaXpl
KCkuaGVpZ2h0KCkgLSAoeVBvc2l0aW9uICsgdG9wKSwgZ2VvbWV0cnkudGlsZVNpemUoKS5oZWln
aHQoKSkgOiAwKTsKICAgICBlbHNlIAogICAgICAgICBnZW9tZXRyeS5zZXROb1JlcGVhdFkoeVBv
c2l0aW9uICsgdG9wKTsKIApAQCAtOTQ2LDcgKzk1MCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OmNhbGN1bGF0ZUJhY2sKICAgICBnZW9tZXRyeS5zZXREZXN0T3JpZ2luKGdlb21ldHJ5
LmRlc3RSZWN0KCkubG9jYXRpb24oKSk7CiB9CiAKLWJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50TmluZVBpZWNlSW1hZ2UoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNv
bnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwKK2Jvb2wgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50TmluZVBpZWNlSW1hZ2UoR3JhcGhpY3NDb250ZXh0KiBncmFw
aGljc0NvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlclN0eWxlKiBz
dHlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgTmluZVBpZWNlSW1hZ2UmIG5pbmVQaWVjZUltYWdlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkK
IHsKICAgICBTdHlsZUltYWdlKiBzdHlsZUltYWdlID0gbmluZVBpZWNlSW1hZ2UuaW1hZ2UoKTsK
QEAgLTk2MiwyNCArOTY2LDI0IEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Tmlu
ZVBpZWMKICAgICAvLyBGSVhNRTogYm9yZGVyLWltYWdlIGlzIGJyb2tlbiB3aXRoIGZ1bGwgcGFn
ZSB6b29taW5nIHdoZW4gdGlsaW5nIGhhcyB0byBoYXBwZW4sIHNpbmNlIHRoZSB0aWxpbmcgZnVu
Y3Rpb24KICAgICAvLyBkb2Vzbid0IGhhdmUgYW55IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHpvb20g
dGhhdCBpcyBpbiBlZmZlY3Qgb24gdGhlIHRpbGUuCiAgICAgc3R5bGVJbWFnZS0+c2V0SW1hZ2VD
b250YWluZXJTaXplKHJlY3Quc2l6ZSgpKTsKLSAgICBJbnRTaXplIGltYWdlU2l6ZSA9IHN0eWxl
SW1hZ2UtPmltYWdlU2l6ZSh0aGlzLCAxLjBmKTsKLSAgICBpbnQgaW1hZ2VXaWR0aCA9IGltYWdl
U2l6ZS53aWR0aCgpOwotICAgIGludCBpbWFnZUhlaWdodCA9IGltYWdlU2l6ZS5oZWlnaHQoKTsK
LQotICAgIGludCB0b3BTbGljZSA9IG1pbihpbWFnZUhlaWdodCwgbmluZVBpZWNlSW1hZ2Uuc2xp
Y2VzKCkudG9wKCkuY2FsY1ZhbHVlKGltYWdlSGVpZ2h0KSk7Ci0gICAgaW50IGJvdHRvbVNsaWNl
ID0gbWluKGltYWdlSGVpZ2h0LCBuaW5lUGllY2VJbWFnZS5zbGljZXMoKS5ib3R0b20oKS5jYWxj
VmFsdWUoaW1hZ2VIZWlnaHQpKTsKLSAgICBpbnQgbGVmdFNsaWNlID0gbWluKGltYWdlV2lkdGgs
IG5pbmVQaWVjZUltYWdlLnNsaWNlcygpLmxlZnQoKS5jYWxjVmFsdWUoaW1hZ2VXaWR0aCkpOwot
ICAgIGludCByaWdodFNsaWNlID0gbWluKGltYWdlV2lkdGgsIG5pbmVQaWVjZUltYWdlLnNsaWNl
cygpLnJpZ2h0KCkuY2FsY1ZhbHVlKGltYWdlV2lkdGgpKTsKKyAgICBMYXlvdXRTaXplIGltYWdl
U2l6ZSA9IHN0eWxlSW1hZ2UtPmltYWdlU2l6ZSh0aGlzLCAxLjBmKTsKKyAgICBMYXlvdXRVbml0
IGltYWdlV2lkdGggPSBpbWFnZVNpemUud2lkdGgoKTsKKyAgICBMYXlvdXRVbml0IGltYWdlSGVp
Z2h0ID0gaW1hZ2VTaXplLmhlaWdodCgpOworCisgICAgTGF5b3V0VW5pdCB0b3BTbGljZSA9IG1p
bjxMYXlvdXRVbml0PihpbWFnZUhlaWdodCwgbmluZVBpZWNlSW1hZ2Uuc2xpY2VzKCkudG9wKCku
Y2FsY1ZhbHVlKGltYWdlSGVpZ2h0KSk7CisgICAgTGF5b3V0VW5pdCBib3R0b21TbGljZSA9IG1p
bjxMYXlvdXRVbml0PihpbWFnZUhlaWdodCwgbmluZVBpZWNlSW1hZ2Uuc2xpY2VzKCkuYm90dG9t
KCkuY2FsY1ZhbHVlKGltYWdlSGVpZ2h0KSk7CisgICAgTGF5b3V0VW5pdCBsZWZ0U2xpY2UgPSBt
aW48TGF5b3V0VW5pdD4oaW1hZ2VXaWR0aCwgbmluZVBpZWNlSW1hZ2Uuc2xpY2VzKCkubGVmdCgp
LmNhbGNWYWx1ZShpbWFnZVdpZHRoKSk7CisgICAgTGF5b3V0VW5pdCByaWdodFNsaWNlID0gbWlu
PExheW91dFVuaXQ+KGltYWdlV2lkdGgsIG5pbmVQaWVjZUltYWdlLnNsaWNlcygpLnJpZ2h0KCku
Y2FsY1ZhbHVlKGltYWdlV2lkdGgpKTsKIAogICAgIEVOaW5lUGllY2VJbWFnZVJ1bGUgaFJ1bGUg
PSBuaW5lUGllY2VJbWFnZS5ob3Jpem9udGFsUnVsZSgpOwogICAgIEVOaW5lUGllY2VJbWFnZVJ1
bGUgdlJ1bGUgPSBuaW5lUGllY2VJbWFnZS52ZXJ0aWNhbFJ1bGUoKTsKIAogICAgIGJvb2wgZml0
VG9Cb3JkZXIgPSBzdHlsZS0+Ym9yZGVySW1hZ2UoKSA9PSBuaW5lUGllY2VJbWFnZTsKICAgICAK
LSAgICBpbnQgbGVmdFdpZHRoID0gZml0VG9Cb3JkZXIgPyBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRo
KCkgOiBsZWZ0U2xpY2U7Ci0gICAgaW50IHRvcFdpZHRoID0gZml0VG9Cb3JkZXIgPyBzdHlsZS0+
Ym9yZGVyVG9wV2lkdGgoKSA6IHRvcFNsaWNlOwotICAgIGludCByaWdodFdpZHRoID0gZml0VG9C
b3JkZXIgPyBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpIDogcmlnaHRTbGljZTsKLSAgICBpbnQg
Ym90dG9tV2lkdGggPSBmaXRUb0JvcmRlciA/IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpIDog
Ym90dG9tU2xpY2U7CisgICAgTGF5b3V0VW5pdCBsZWZ0V2lkdGggPSBmaXRUb0JvcmRlciA/IHN0
eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSA6IGxlZnRTbGljZTsKKyAgICBMYXlvdXRVbml0IHRvcFdp
ZHRoID0gZml0VG9Cb3JkZXIgPyBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSA6IHRvcFNsaWNlOwor
ICAgIExheW91dFVuaXQgcmlnaHRXaWR0aCA9IGZpdFRvQm9yZGVyID8gc3R5bGUtPmJvcmRlclJp
Z2h0V2lkdGgoKSA6IHJpZ2h0U2xpY2U7CisgICAgTGF5b3V0VW5pdCBib3R0b21XaWR0aCA9IGZp
dFRvQm9yZGVyID8gc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkgOiBib3R0b21TbGljZTsKIAog
ICAgIGJvb2wgZHJhd0xlZnQgPSBsZWZ0U2xpY2UgPiAwICYmIGxlZnRXaWR0aCA+IDA7CiAgICAg
Ym9vbCBkcmF3VG9wID0gdG9wU2xpY2UgPiAwICYmIHRvcFdpZHRoID4gMDsKQEAgLTk5NywyMCAr
MTAwMSwyMCBAQCBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE5pbmVQaWVjCiAgICAg
ICAgIC8vIFRoZSB0b3AgbGVmdCBjb3JuZXIgcmVjdCBpcyAodHgsIHR5LCBsZWZ0V2lkdGgsIHRv
cFdpZHRoKQogICAgICAgICAvLyBUaGUgcmVjdCB0byB1c2UgZnJvbSB3aXRoaW4gdGhlIGltYWdl
IGlzIG9idGFpbmVkIGZyb20gb3VyIHNsaWNlLCBhbmQgaXMgKDAsIDAsIGxlZnRTbGljZSwgdG9w
U2xpY2UpCiAgICAgICAgIGlmIChkcmF3VG9wKQotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIEludFJlY3QocmVjdC5sb2NhdGlv
bigpLCBJbnRTaXplKGxlZnRXaWR0aCwgdG9wV2lkdGgpKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEludFJlY3QoMCwgMCwgbGVmdFNsaWNlLCB0b3BTbGljZSksIG9w
KTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBj
b2xvclNwYWNlLCBMYXlvdXRSZWN0KHJlY3QubG9jYXRpb24oKSwgTGF5b3V0U2l6ZShsZWZ0V2lk
dGgsIHRvcFdpZHRoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM
YXlvdXRSZWN0KDAsIDAsIGxlZnRTbGljZSwgdG9wU2xpY2UpLCBvcCk7CiAKICAgICAgICAgLy8g
VGhlIGJvdHRvbSBsZWZ0IGNvcm5lciByZWN0IGlzICh0eCwgdHkgKyBoIC0gYm90dG9tV2lkdGgs
IGxlZnRXaWR0aCwgYm90dG9tV2lkdGgpCiAgICAgICAgIC8vIFRoZSByZWN0IHRvIHVzZSBmcm9t
IHdpdGhpbiB0aGUgaW1hZ2UgaXMgKDAsIGltYWdlSGVpZ2h0IC0gYm90dG9tU2xpY2UsIGxlZnRT
bGljZSwgYm90b21TbGljZSkKICAgICAgICAgaWYgKGRyYXdCb3R0b20pCi0gICAgICAgICAgICBn
cmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwgSW50UmVj
dChyZWN0LngoKSwgcmVjdC55KCkgKyByZWN0LmhlaWdodCgpIC0gYm90dG9tV2lkdGgsIGxlZnRX
aWR0aCwgYm90dG9tV2lkdGgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSW50UmVjdCgwLCBpbWFnZUhlaWdodCAtIGJvdHRvbVNsaWNlLCBsZWZ0U2xpY2UsIGJvdHRv
bVNsaWNlKSwgb3ApOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoaW1h
Z2UuZ2V0KCksIGNvbG9yU3BhY2UsIExheW91dFJlY3QocmVjdC54KCksIHJlY3QueSgpICsgcmVj
dC5oZWlnaHQoKSAtIGJvdHRvbVdpZHRoLCBsZWZ0V2lkdGgsIGJvdHRvbVdpZHRoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFJlY3QoMCwgaW1hZ2VIZWln
aHQgLSBib3R0b21TbGljZSwgbGVmdFNsaWNlLCBib3R0b21TbGljZSksIG9wKTsKIAogICAgICAg
ICAvLyBQYWludCB0aGUgbGVmdCBlZGdlLgogICAgICAgICAvLyBIYXZlIHRvIHNjYWxlIGFuZCB0
aWxlIGludG8gdGhlIGJvcmRlciByZWN0LgotICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdU
aWxlZEltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNlLCBJbnRSZWN0KHJlY3QueCgpLCByZWN0
LnkoKSArIHRvcFdpZHRoLCBsZWZ0V2lkdGgsCisgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJh
d1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIExheW91dFJlY3QocmVjdC54KCks
IHJlY3QueSgpICsgdG9wV2lkdGgsIGxlZnRXaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWN0LmhlaWdodCgpIC0gdG9wV2lkdGggLSBib3R0b21XaWR0aCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UmVjdCgwLCB0b3BT
bGljZSwgbGVmdFNsaWNlLCBpbWFnZUhlaWdodCAtIHRvcFNsaWNlIC0gYm90dG9tU2xpY2UpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFJlY3QoMCwgdG9w
U2xpY2UsIGxlZnRTbGljZSwgaW1hZ2VIZWlnaHQgLSB0b3BTbGljZSAtIGJvdHRvbVNsaWNlKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbWFnZTo6U3RyZXRjaFRp
bGUsIChJbWFnZTo6VGlsZVJ1bGUpdlJ1bGUsIG9wKTsKICAgICB9CiAKQEAgLTEwMTksNDAgKzEw
MjMsNDAgQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnROaW5lUGllYwogICAgICAg
ICAvLyBUaGUgdG9wIHJpZ2h0IGNvcm5lciByZWN0IGlzICh0eCArIHcgLSByaWdodFdpZHRoLCB0
eSwgcmlnaHRXaWR0aCwgdG9wV2lkdGgpCiAgICAgICAgIC8vIFRoZSByZWN0IHRvIHVzZSBmcm9t
IHdpdGhpbiB0aGUgaW1hZ2UgaXMgb2J0YWluZWQgZnJvbSBvdXIgc2xpY2UsIGFuZCBpcyAoaW1h
Z2VXaWR0aCAtIHJpZ2h0U2xpY2UsIDAsIHJpZ2h0U2xpY2UsIHRvcFNsaWNlKQogICAgICAgICBp
ZiAoZHJhd1RvcCkKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdl
LmdldCgpLCBjb2xvclNwYWNlLCBJbnRSZWN0KHJlY3QueCgpICsgcmVjdC53aWR0aCgpIC0gcmln
aHRXaWR0aCwgcmVjdC55KCksIHJpZ2h0V2lkdGgsIHRvcFdpZHRoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEludFJlY3QoaW1hZ2VXaWR0aCAtIHJpZ2h0U2xpY2Us
IDAsIHJpZ2h0U2xpY2UsIHRvcFNsaWNlKSwgb3ApOworICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIExheW91dFJlY3QocmVjdC54
KCkgKyByZWN0LndpZHRoKCkgLSByaWdodFdpZHRoLCByZWN0LnkoKSwgcmlnaHRXaWR0aCwgdG9w
V2lkdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0UmVj
dChpbWFnZVdpZHRoIC0gcmlnaHRTbGljZSwgMCwgcmlnaHRTbGljZSwgdG9wU2xpY2UpLCBvcCk7
CiAKICAgICAgICAgLy8gVGhlIGJvdHRvbSByaWdodCBjb3JuZXIgcmVjdCBpcyAodHggKyB3IC0g
cmlnaHRXaWR0aCwgdHkgKyBoIC0gYm90dG9tV2lkdGgsIHJpZ2h0V2lkdGgsIGJvdHRvbVdpZHRo
KQogICAgICAgICAvLyBUaGUgcmVjdCB0byB1c2UgZnJvbSB3aXRoaW4gdGhlIGltYWdlIGlzIChp
bWFnZVdpZHRoIC0gcmlnaHRTbGljZSwgaW1hZ2VIZWlnaHQgLSBib3R0b21TbGljZSwgcmlnaHRT
bGljZSwgYm90dG9tU2xpY2UpCiAgICAgICAgIGlmIChkcmF3Qm90dG9tKQotICAgICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIEludFJl
Y3QocmVjdC54KCkgKyByZWN0LndpZHRoKCkgLSByaWdodFdpZHRoLCByZWN0LnkoKSArIHJlY3Qu
aGVpZ2h0KCkgLSBib3R0b21XaWR0aCwgcmlnaHRXaWR0aCwgYm90dG9tV2lkdGgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UmVjdChpbWFnZVdpZHRoIC0gcmln
aHRTbGljZSwgaW1hZ2VIZWlnaHQgLSBib3R0b21TbGljZSwgcmlnaHRTbGljZSwgYm90dG9tU2xp
Y2UpLCBvcCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5n
ZXQoKSwgY29sb3JTcGFjZSwgTGF5b3V0UmVjdChyZWN0LngoKSArIHJlY3Qud2lkdGgoKSAtIHJp
Z2h0V2lkdGgsIHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSAtIGJvdHRvbVdpZHRoLCByaWdodFdp
ZHRoLCBib3R0b21XaWR0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBMYXlvdXRSZWN0KGltYWdlV2lkdGggLSByaWdodFNsaWNlLCBpbWFnZUhlaWdodCAtIGJvdHRv
bVNsaWNlLCByaWdodFNsaWNlLCBib3R0b21TbGljZSksIG9wKTsKIAogICAgICAgICAvLyBQYWlu
dCB0aGUgcmlnaHQgZWRnZS4KLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3VGlsZWRJbWFn
ZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwgSW50UmVjdChyZWN0LngoKSArIHJlY3Qud2lkdGgo
KSAtIHJpZ2h0V2lkdGgsIHJlY3QueSgpICsgdG9wV2lkdGgsIHJpZ2h0V2lkdGgsCisgICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2Us
IExheW91dFJlY3QocmVjdC54KCkgKyByZWN0LndpZHRoKCkgLSByaWdodFdpZHRoLCByZWN0Lnko
KSArIHRvcFdpZHRoLCByaWdodFdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlY3QuaGVpZ2h0KCkgLSB0b3BXaWR0aCAtIGJvdHRvbVdpZHRoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRSZWN0KGltYWdlV2lkdGggLSBy
aWdodFNsaWNlLCB0b3BTbGljZSwgcmlnaHRTbGljZSwgaW1hZ2VIZWlnaHQgLSB0b3BTbGljZSAt
IGJvdHRvbVNsaWNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM
YXlvdXRSZWN0KGltYWdlV2lkdGggLSByaWdodFNsaWNlLCB0b3BTbGljZSwgcmlnaHRTbGljZSwg
aW1hZ2VIZWlnaHQgLSB0b3BTbGljZSAtIGJvdHRvbVNsaWNlKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJbWFnZTo6U3RyZXRjaFRpbGUsIChJbWFnZTo6VGlsZVJ1
bGUpdlJ1bGUsIG9wKTsKICAgICB9CiAKICAgICAvLyBQYWludCB0aGUgdG9wIGVkZ2UuCiAgICAg
aWYgKGRyYXdUb3ApCi0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1RpbGVkSW1hZ2UoaW1h
Z2UuZ2V0KCksIGNvbG9yU3BhY2UsIEludFJlY3QocmVjdC54KCkgKyBsZWZ0V2lkdGgsIHJlY3Qu
eSgpLCByZWN0LndpZHRoKCkgLSBsZWZ0V2lkdGggLSByaWdodFdpZHRoLCB0b3BXaWR0aCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UmVjdChsZWZ0U2xpY2Us
IDAsIGltYWdlV2lkdGggLSByaWdodFNsaWNlIC0gbGVmdFNsaWNlLCB0b3BTbGljZSksCisgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3Bh
Y2UsIExheW91dFJlY3QocmVjdC54KCkgKyBsZWZ0V2lkdGgsIHJlY3QueSgpLCByZWN0LndpZHRo
KCkgLSBsZWZ0V2lkdGggLSByaWdodFdpZHRoLCB0b3BXaWR0aCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0UmVjdChsZWZ0U2xpY2UsIDAsIGltYWdlV2lk
dGggLSByaWdodFNsaWNlIC0gbGVmdFNsaWNlLCB0b3BTbGljZSksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKEltYWdlOjpUaWxlUnVsZSloUnVsZSwgSW1hZ2U6OlN0
cmV0Y2hUaWxlLCBvcCk7CiAKICAgICAvLyBQYWludCB0aGUgYm90dG9tIGVkZ2UuCiAgICAgaWYg
KGRyYXdCb3R0b20pCi0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1RpbGVkSW1hZ2UoaW1h
Z2UuZ2V0KCksIGNvbG9yU3BhY2UsIEludFJlY3QocmVjdC54KCkgKyBsZWZ0V2lkdGgsIHJlY3Qu
eSgpICsgcmVjdC5oZWlnaHQoKSAtIGJvdHRvbVdpZHRoLAorICAgICAgICBncmFwaGljc0NvbnRl
eHQtPmRyYXdUaWxlZEltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNlLCBMYXlvdXRSZWN0KHJl
Y3QueCgpICsgbGVmdFdpZHRoLCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkgLSBib3R0b21XaWR0
aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LndpZHRoKCkg
LSBsZWZ0V2lkdGggLSByaWdodFdpZHRoLCBib3R0b21XaWR0aCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSW50UmVjdChsZWZ0U2xpY2UsIGltYWdlSGVpZ2h0IC0g
Ym90dG9tU2xpY2UsIGltYWdlV2lkdGggLSByaWdodFNsaWNlIC0gbGVmdFNsaWNlLCBib3R0b21T
bGljZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0UmVj
dChsZWZ0U2xpY2UsIGltYWdlSGVpZ2h0IC0gYm90dG9tU2xpY2UsIGltYWdlV2lkdGggLSByaWdo
dFNsaWNlIC0gbGVmdFNsaWNlLCBib3R0b21TbGljZSksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKEltYWdlOjpUaWxlUnVsZSloUnVsZSwgSW1hZ2U6OlN0cmV0Y2hU
aWxlLCBvcCk7CiAKICAgICAvLyBQYWludCB0aGUgbWlkZGxlLgogICAgIGlmIChkcmF3TWlkZGxl
KQotICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdUaWxlZEltYWdlKGltYWdlLmdldCgpLCBj
b2xvclNwYWNlLCBJbnRSZWN0KHJlY3QueCgpICsgbGVmdFdpZHRoLCByZWN0LnkoKSArIHRvcFdp
ZHRoLCByZWN0LndpZHRoKCkgLSBsZWZ0V2lkdGggLSByaWdodFdpZHRoLAorICAgICAgICBncmFw
aGljc0NvbnRleHQtPmRyYXdUaWxlZEltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNlLCBMYXlv
dXRSZWN0KHJlY3QueCgpICsgbGVmdFdpZHRoLCByZWN0LnkoKSArIHRvcFdpZHRoLCByZWN0Lndp
ZHRoKCkgLSBsZWZ0V2lkdGggLSByaWdodFdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlY3QuaGVpZ2h0KCkgLSB0b3BXaWR0aCAtIGJvdHRvbVdpZHRoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRSZWN0KGxlZnRTbGlj
ZSwgdG9wU2xpY2UsIGltYWdlV2lkdGggLSByaWdodFNsaWNlIC0gbGVmdFNsaWNlLCBpbWFnZUhl
aWdodCAtIHRvcFNsaWNlIC0gYm90dG9tU2xpY2UpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIExheW91dFJlY3QobGVmdFNsaWNlLCB0b3BTbGljZSwgaW1hZ2VXaWR0
aCAtIHJpZ2h0U2xpY2UgLSBsZWZ0U2xpY2UsIGltYWdlSGVpZ2h0IC0gdG9wU2xpY2UgLSBib3R0
b21TbGljZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEltYWdl
OjpUaWxlUnVsZSloUnVsZSwgKEltYWdlOjpUaWxlUnVsZSl2UnVsZSwgb3ApOwogCiAgICAgcmV0
dXJuIHRydWU7CkBAIC0xMTYxLDcgKzExNjUsNyBAQCBzdGF0aWMgYm9vbCBhbGxDb3JuZXJzQ2xp
cHBlZE91dChjb25zdCBSCiB9CiAKICNpZiBIQVZFKFBBVEhfQkFTRURfQk9SREVSX1JBRElVU19E
UkFXSU5HKQotc3RhdGljIGJvb2wgYm9yZGVyV2lsbEFyY0lubmVyRWRnZShjb25zdCBJbnRTaXpl
JiBmaXJzdFJhZGl1cywgY29uc3QgSW50U2l6ZSYgc2Vjb25kUmFkaXVzKQorc3RhdGljIGJvb2wg
Ym9yZGVyV2lsbEFyY0lubmVyRWRnZShjb25zdCBMYXlvdXRTaXplJiBmaXJzdFJhZGl1cywgY29u
c3QgRmxvYXRTaXplJiBzZWNvbmRSYWRpdXMpCiB7CiAgICAgcmV0dXJuICFmaXJzdFJhZGl1cy5p
c1plcm8oKSB8fCAhc2Vjb25kUmFkaXVzLmlzWmVybygpOwogfQpAQCAtMTI5Miw3ICsxMjk2LDcg
QEAgc3RhdGljIGJvb2wgam9pblJlcXVpcmVzTWl0cmUoQm94U2lkZSBzaQogfQogCiB2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludE9uZUJvcmRlclNpZGUoR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgUm91bmRlZFJl
Y3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCi0gICAgY29u
c3QgSW50UmVjdCYgc2lkZVJlY3QsIEJveFNpZGUgc2lkZSwgQm94U2lkZSBhZGphY2VudFNpZGUx
LCBCb3hTaWRlIGFkamFjZW50U2lkZTIsIGNvbnN0IEJvcmRlckVkZ2UgZWRnZXNbXSwgY29uc3Qg
UGF0aCogcGF0aCwgCisgICAgY29uc3QgTGF5b3V0UmVjdCYgc2lkZVJlY3QsIEJveFNpZGUgc2lk
ZSwgQm94U2lkZSBhZGphY2VudFNpZGUxLCBCb3hTaWRlIGFkamFjZW50U2lkZTIsIGNvbnN0IEJv
cmRlckVkZ2UgZWRnZXNbXSwgY29uc3QgUGF0aCogcGF0aCwKICAgICBCYWNrZ3JvdW5kQmxlZWRB
dm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9v
bCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwgYm9vbCBhbnRpYWxpYXMsIGNvbnN0IENvbG9yKiBv
dmVycmlkZUNvbG9yKQogewogICAgIGNvbnN0IEJvcmRlckVkZ2UmIGVkZ2VUb1JlbmRlciA9IGVk
Z2VzW3NpZGVdOwpAQCAtMTM1NywyOCArMTM2MSwzMiBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpwYWludEJvcmRlclNpCiAgICAgICAgIHJvdW5kZWRQYXRoLmFkZFJvdW5kZWRSZWN0KG91
dGVyQm9yZGVyKTsKICAgICAKICAgICBpZiAoZWRnZXNbQlNUb3BdLnNob3VsZFJlbmRlcigpICYm
IGluY2x1ZGVzRWRnZShlZGdlU2V0LCBCU1RvcCkpIHsKLSAgICAgICAgTGF5b3V0UmVjdCBzaWRl
UmVjdCA9IGNhbGN1bGF0ZVNpZGVSZWN0KG91dGVyQm9yZGVyLCBlZGdlcywgQlNUb3ApOworICAg
ICAgICBMYXlvdXRSZWN0IHNpZGVSZWN0ID0gb3V0ZXJCb3JkZXIucmVjdCgpOworICAgICAgICBz
aWRlUmVjdC5zZXRIZWlnaHQoZWRnZXNbQlNUb3BdLndpZHRoKTsKIAogICAgICAgICBib29sIHVz
ZVBhdGggPSByZW5kZXJSYWRpaSAmJiAoYm9yZGVyU3R5bGVIYXNJbm5lckRldGFpbChlZGdlc1tC
U1RvcF0uc3R5bGUpIHx8IGJvcmRlcldpbGxBcmNJbm5lckVkZ2UoaW5uZXJCb3JkZXIucmFkaWko
KS50b3BMZWZ0KCksIGlubmVyQm9yZGVyLnJhZGlpKCkudG9wUmlnaHQoKSkpOwogICAgICAgICBw
YWludE9uZUJvcmRlclNpZGUoZ3JhcGhpY3NDb250ZXh0LCBzdHlsZSwgb3V0ZXJCb3JkZXIsIGlu
bmVyQm9yZGVyLCBzaWRlUmVjdCwgQlNUb3AsIEJTTGVmdCwgQlNSaWdodCwgZWRnZXMsIHVzZVBh
dGggPyAmcm91bmRlZFBhdGggOiAwLCBibGVlZEF2b2lkYW5jZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0
RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGFudGlhbGlhcywgb3ZlcnJpZGVDb2xvcik7
CiAgICAgfQogCiAgICAgaWYgKGVkZ2VzW0JTQm90dG9tXS5zaG91bGRSZW5kZXIoKSAmJiBpbmNs
dWRlc0VkZ2UoZWRnZVNldCwgQlNCb3R0b20pKSB7Ci0gICAgICAgIExheW91dFJlY3Qgc2lkZVJl
Y3QgPSBjYWxjdWxhdGVTaWRlUmVjdChvdXRlckJvcmRlciwgZWRnZXMsIEJTQm90dG9tKTsKKyAg
ICAgICAgTGF5b3V0UmVjdCBzaWRlUmVjdCA9IG91dGVyQm9yZGVyLnJlY3QoKTsKKyAgICAgICAg
c2lkZVJlY3Quc2hpZnRZRWRnZVRvKHNpZGVSZWN0Lm1heFkoKSAtIGVkZ2VzW0JTQm90dG9tXS53
aWR0aCk7CiAKICAgICAgICAgYm9vbCB1c2VQYXRoID0gcmVuZGVyUmFkaWkgJiYgKGJvcmRlclN0
eWxlSGFzSW5uZXJEZXRhaWwoZWRnZXNbQlNCb3R0b21dLnN0eWxlKSB8fCBib3JkZXJXaWxsQXJj
SW5uZXJFZGdlKGlubmVyQm9yZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgpLCBpbm5lckJvcmRlci5y
YWRpaSgpLmJvdHRvbVJpZ2h0KCkpKTsKICAgICAgICAgcGFpbnRPbmVCb3JkZXJTaWRlKGdyYXBo
aWNzQ29udGV4dCwgc3R5bGUsIG91dGVyQm9yZGVyLCBpbm5lckJvcmRlciwgc2lkZVJlY3QsIEJT
Qm90dG9tLCBCU0xlZnQsIEJTUmlnaHQsIGVkZ2VzLCB1c2VQYXRoID8gJnJvdW5kZWRQYXRoIDog
MCwgYmxlZWRBdm9pZGFuY2UsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2Fs
UmlnaHRFZGdlLCBhbnRpYWxpYXMsIG92ZXJyaWRlQ29sb3IpOwogICAgIH0KIAogICAgIGlmIChl
ZGdlc1tCU0xlZnRdLnNob3VsZFJlbmRlcigpICYmIGluY2x1ZGVzRWRnZShlZGdlU2V0LCBCU0xl
ZnQpKSB7Ci0gICAgICAgIExheW91dFJlY3Qgc2lkZVJlY3QgPSBjYWxjdWxhdGVTaWRlUmVjdChv
dXRlckJvcmRlciwgZWRnZXMsIEJTTGVmdCk7CisgICAgICAgIExheW91dFJlY3Qgc2lkZVJlY3Qg
PSBvdXRlckJvcmRlci5yZWN0KCk7CisgICAgICAgIHNpZGVSZWN0LnNldFdpZHRoKGVkZ2VzW0JT
TGVmdF0ud2lkdGgpOwogCiAgICAgICAgIGJvb2wgdXNlUGF0aCA9IHJlbmRlclJhZGlpICYmIChi
b3JkZXJTdHlsZUhhc0lubmVyRGV0YWlsKGVkZ2VzW0JTTGVmdF0uc3R5bGUpIHx8IGJvcmRlcldp
bGxBcmNJbm5lckVkZ2UoaW5uZXJCb3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0KCksIGlubmVyQm9y
ZGVyLnJhZGlpKCkudG9wTGVmdCgpKSk7CiAgICAgICAgIHBhaW50T25lQm9yZGVyU2lkZShncmFw
aGljc0NvbnRleHQsIHN0eWxlLCBvdXRlckJvcmRlciwgaW5uZXJCb3JkZXIsIHNpZGVSZWN0LCBC
U0xlZnQsIEJTVG9wLCBCU0JvdHRvbSwgZWRnZXMsIHVzZVBhdGggPyAmcm91bmRlZFBhdGggOiAw
LCBibGVlZEF2b2lkYW5jZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxS
aWdodEVkZ2UsIGFudGlhbGlhcywgb3ZlcnJpZGVDb2xvcik7CiAgICAgfQogCiAgICAgaWYgKGVk
Z2VzW0JTUmlnaHRdLnNob3VsZFJlbmRlcigpICYmIGluY2x1ZGVzRWRnZShlZGdlU2V0LCBCU1Jp
Z2h0KSkgewotICAgICAgICBMYXlvdXRSZWN0IHNpZGVSZWN0ID0gY2FsY3VsYXRlU2lkZVJlY3Qo
b3V0ZXJCb3JkZXIsIGVkZ2VzLCBCU1JpZ2h0KTsKKyAgICAgICAgTGF5b3V0UmVjdCBzaWRlUmVj
dCA9IG91dGVyQm9yZGVyLnJlY3QoKTsKKyAgICAgICAgc2lkZVJlY3Quc2hpZnRYRWRnZVRvKHNp
ZGVSZWN0Lm1heFgoKSAtIGVkZ2VzW0JTUmlnaHRdLndpZHRoKTsKIAogICAgICAgICBib29sIHVz
ZVBhdGggPSByZW5kZXJSYWRpaSAmJiAoYm9yZGVyU3R5bGVIYXNJbm5lckRldGFpbChlZGdlc1tC
U1JpZ2h0XS5zdHlsZSkgfHwgYm9yZGVyV2lsbEFyY0lubmVyRWRnZShpbm5lckJvcmRlci5yYWRp
aSgpLmJvdHRvbVJpZ2h0KCksIGlubmVyQm9yZGVyLnJhZGlpKCkudG9wUmlnaHQoKSkpOwogICAg
ICAgICBwYWludE9uZUJvcmRlclNpZGUoZ3JhcGhpY3NDb250ZXh0LCBzdHlsZSwgb3V0ZXJCb3Jk
ZXIsIGlubmVyQm9yZGVyLCBzaWRlUmVjdCwgQlNSaWdodCwgQlNUb3AsIEJTQm90dG9tLCBlZGdl
cywgdXNlUGF0aCA/ICZyb3VuZGVkUGF0aCA6IDAsIGJsZWVkQXZvaWRhbmNlLCBpbmNsdWRlTG9n
aWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwgYW50aWFsaWFzLCBvdmVycmlk
ZUNvbG9yKTsKQEAgLTE0MjUsNyArMTQzMyw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50VHJhbnNsdWMKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCwgY29u
c3QgUmVuZGVyU3R5bGUqIHN0eWxlLAordm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRC
b3JkZXIoY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0LCBjb25z
dCBSZW5kZXJTdHlsZSogc3R5bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UsIGJvb2wgaW5jbHVk
ZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkKIHsKICAgICBH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCA9IGluZm8uY29udGV4dDsKQEAgLTE1Mzcs
NyArMTU0NSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKGMKICAg
ICAgICAgcGFpbnRCb3JkZXJTaWRlcyhncmFwaGljc0NvbnRleHQsIHN0eWxlLCBvdXRlckJvcmRl
ciwgaW5uZXJCb3JkZXIsIGVkZ2VzLCBBbGxCb3JkZXJFZGdlcywgYmxlZWRBdm9pZGFuY2UsIGlu
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBhbnRpYWxpYXMp
OwogfQogCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdy
YXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBib3JkZXJSZWN0
LCBjb25zdCBQYXRoJiBib3JkZXJQYXRoLCBjb25zdCBCb3JkZXJFZGdlIGVkZ2VzW10sCit2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBib3JkZXJSZWN0LCBjb25zdCBQ
YXRoJiBib3JkZXJQYXRoLCBjb25zdCBCb3JkZXJFZGdlIGVkZ2VzW10sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB0aGlja25lc3MsIGZsb2F0IGRyYXdUaGlja25l
c3MsIEJveFNpZGUgc2lkZSwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yIGNvbG9yLCBFQm9yZGVyU3R5bGUgYm9yZGVy
U3R5bGUsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgYm9vbCBpbmNs
dWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKQogewpAQCAt
MTYyNCw3ICsxNjMyLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVG
cgogICAgICAgICAvLyBEcmF3IG91dGVyIGJvcmRlciBsaW5lCiAgICAgICAgIHsKICAgICAgICAg
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0
KTsKLSAgICAgICAgICAgIEludFJlY3Qgb3V0ZXJSZWN0ID0gYm9yZGVyUmVjdDsKKyAgICAgICAg
ICAgIExheW91dFJlY3Qgb3V0ZXJSZWN0ID0gYm9yZGVyUmVjdDsKICAgICAgICAgICAgIGlmIChi
bGVlZEF2b2lkYW5jZSA9PSBCYWNrZ3JvdW5kQmxlZWRVc2VUcmFuc3BhcmVuY3lMYXllcikgewog
ICAgICAgICAgICAgICAgIG91dGVyUmVjdC5pbmZsYXRlKDEpOwogICAgICAgICAgICAgICAgICsr
b3V0ZXJCb3JkZXJUb3BXaWR0aDsKQEAgLTIwMjksOCArMjAzNyw4IEBAIHZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWQKIHsKICAgICBGbG9hdFBvaW50IHF1YWRbNF07CiAK
LSAgICBjb25zdCBJbnRSZWN0JiBvdXRlclJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7Ci0gICAg
Y29uc3QgSW50UmVjdCYgaW5uZXJSZWN0ID0gaW5uZXJCb3JkZXIucmVjdCgpOworICAgIGNvbnN0
IExheW91dFJlY3QmIG91dGVyUmVjdCA9IG91dGVyQm9yZGVyLnJlY3QoKTsKKyAgICBjb25zdCBM
YXlvdXRSZWN0JiBpbm5lclJlY3QgPSBpbm5lckJvcmRlci5yZWN0KCk7CiAKICAgICBGbG9hdFBv
aW50IGNlbnRlclBvaW50KGlubmVyUmVjdC5sb2NhdGlvbigpLngoKSArIHN0YXRpY19jYXN0PGZs
b2F0Pihpbm5lclJlY3Qud2lkdGgoKSkgLyAyLCBpbm5lclJlY3QubG9jYXRpb24oKS55KCkgKyBz
dGF0aWNfY2FzdDxmbG9hdD4oaW5uZXJSZWN0LmhlaWdodCgpKSAvIDIpOwogCkBAIC0yMTk1LDE2
ICsyMjAzLDE2IEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmJvcmRlck9ic2N1cmUKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGlubGluZSBJbnRSZWN0IGFyZWFDYXN0aW5nU2hh
ZG93SW5Ib2xlKGNvbnN0IEludFJlY3QmIGhvbGVSZWN0LCBpbnQgc2hhZG93Qmx1ciwgaW50IHNo
YWRvd1NwcmVhZCwgY29uc3QgSW50U2l6ZSYgc2hhZG93T2Zmc2V0KQorc3RhdGljIGlubGluZSBM
YXlvdXRSZWN0IGFyZWFDYXN0aW5nU2hhZG93SW5Ib2xlKGNvbnN0IExheW91dFJlY3QmIGhvbGVS
ZWN0LCBpbnQgc2hhZG93Qmx1ciwgaW50IHNoYWRvd1NwcmVhZCwgY29uc3QgTGF5b3V0U2l6ZSYg
c2hhZG93T2Zmc2V0KQogewotICAgIEludFJlY3QgYm91bmRzKGhvbGVSZWN0KTsKKyAgICBMYXlv
dXRSZWN0IGJvdW5kcyhob2xlUmVjdCk7CiAgICAgCiAgICAgYm91bmRzLmluZmxhdGUoc2hhZG93
Qmx1cik7CiAKICAgICBpZiAoc2hhZG93U3ByZWFkIDwgMCkKICAgICAgICAgYm91bmRzLmluZmxh
dGUoLXNoYWRvd1NwcmVhZCk7CiAgICAgCi0gICAgSW50UmVjdCBvZmZzZXRCb3VuZHMgPSBib3Vu
ZHM7CisgICAgTGF5b3V0UmVjdCBvZmZzZXRCb3VuZHMgPSBib3VuZHM7CiAgICAgb2Zmc2V0Qm91
bmRzLm1vdmUoLXNoYWRvd09mZnNldCk7CiAgICAgcmV0dXJuIHVuaW9uUmVjdChib3VuZHMsIG9m
ZnNldEJvdW5kcyk7CiB9CkBAIC0yMjQyLDcgKzIyNTAsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludEJveFNoYWRvCiAgICAgICAgICAgICBpZiAoZmlsbFJlY3QuaXNFbXB0eSgp
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBMYXlvdXRSZWN0IHNo
YWRvd1JlY3QgPSBib3JkZXIucmVjdCgpOworICAgICAgICAgICAgTGF5b3V0UmVjdCBzaGFkb3dS
ZWN0KGJvcmRlci5yZWN0KCkpOwogICAgICAgICAgICAgc2hhZG93UmVjdC5pbmZsYXRlKHNoYWRv
d0JsdXIgKyBzaGFkb3dTcHJlYWQpOwogICAgICAgICAgICAgc2hhZG93UmVjdC5tb3ZlKHNoYWRv
d09mZnNldCk7CiAKQEAgLTIzNTYsNyArMjM2NCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50Qm94U2hhZG8KICAgICB9CiB9CiAKLWludCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
Y29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudCgpIGNvbnN0CitMYXlvdXRVbml0
IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250
ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gY29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmgJKHJldmlzaW9uIDkzMzQzKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMiwx
OCArMTEyLDE4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0lubGluZURpcmVjdGlvbkJvcmRlcnNQ
YWRkaW5nT3JNYXJnaW4oKSBjb25zdCB7IHJldHVybiBoYXNJbmxpbmVEaXJlY3Rpb25Cb3JkZXJz
T3JQYWRkaW5nKCkgfHwgbWFyZ2luU3RhcnQoKXx8IG1hcmdpbkVuZCgpOyB9CiAgICAgYm9vbCBo
YXNJbmxpbmVEaXJlY3Rpb25Cb3JkZXJzT3JQYWRkaW5nKCkgY29uc3QgeyByZXR1cm4gYm9yZGVy
U3RhcnQoKSB8fCBib3JkZXJFbmQoKSB8fCBwYWRkaW5nU3RhcnQoKXx8IHBhZGRpbmdFbmQoKTsg
fQogCi0gICAgdmlydHVhbCBpbnQgY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVu
dCgpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tMb2dpY2Fs
V2lkdGhGb3JDb250ZW50KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRCZWNhbWVO
b25JbmxpbmUoUmVuZGVyT2JqZWN0KiAvKmNoaWxkKi8pIHsgfQogCi0gICAgdm9pZCBwYWludEJv
cmRlcihjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUq
LCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgPSBCYWNrZ3JvdW5kQmxlZWROb25lLCBib29sIGlu
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0cnVlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdl
ID0gdHJ1ZSk7Ci0gICAgYm9vbCBwYWludE5pbmVQaWVjZUltYWdlKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEludFJlY3QmLCBjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IE5pbmVQaWVjZUltYWdl
JiwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICB2b2lkIHBh
aW50Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5k
ZXJTdHlsZSosIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSA9IEJhY2tncm91bmRCbGVlZE5vbmUs
IGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSA9IHRydWUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxS
aWdodEVkZ2UgPSB0cnVlKTsKKyAgICBib29sIHBhaW50TmluZVBpZWNlSW1hZ2UoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3QgTmlu
ZVBpZWNlSW1hZ2UmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwog
ICAgIHZvaWQgcGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UmVj
dCYsIGNvbnN0IFJlbmRlclN0eWxlKiwgU2hhZG93U3R5bGUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxM
ZWZ0RWRnZSA9IHRydWUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UgPSB0cnVlKTsKICAg
ICB2b2lkIHBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgQ29s
b3ImLCBjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBMYXlvdXRSZWN0JiwgQmFja2dyb3VuZEJsZWVk
QXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KiA9IDAsIGNvbnN0IExheW91dFNpemUmID0gTGF5b3V0
U2l6ZSgpLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIFJlbmRlck9i
amVjdCogYmFja2dyb3VuZE9iamVjdCA9IDApOwogICAgIAogICAgIC8vIE92ZXJyaWRkZW4gYnkg
c3ViY2xhc3NlcyB0byBkZXRlcm1pbmUgbGluZSBoZWlnaHQgYW5kIGJhc2VsaW5lIHBvc2l0aW9u
LgotICAgIHZpcnR1YWwgaW50IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rp
b25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25z
dCA9IDA7Ci0gICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJv
b2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0
aW9uT25Db250YWluaW5nTGluZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBs
aW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9u
TW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
TGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUs
IExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5p
bmdMaW5lKSBjb25zdCA9IDA7CiAKICAgICAvLyBDYWxsZWQgYnkgUmVuZGVyT2JqZWN0Ojp3aWxs
QmVEZXN0cm95ZWQoKSBhbmQgaXMgdGhlIG9ubHkgd2F5IGxheWVycyBzaG91bGQgZXZlciBiZSBk
ZXN0cm95ZWQKICAgICB2b2lkIGRlc3Ryb3lMYXllcigpOwpAQCAtMTgwLDEyICsxODAsMTIgQEAg
cHJvdGVjdGVkOgogICAgICAgICBMYXlvdXRTaXplIG1fdGlsZVNpemU7CiAgICAgfTsKIAotICAg
IHZvaWQgY2FsY3VsYXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkoY29uc3QgRmlsbExheWVyKiwg
Y29uc3QgSW50UmVjdCYgcGFpbnRSZWN0LCBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSYpOworICAg
IHZvaWQgY2FsY3VsYXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkoY29uc3QgRmlsbExheWVyKiwg
Y29uc3QgTGF5b3V0UmVjdCYgcGFpbnRSZWN0LCBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSYpOwog
ICAgIHZvaWQgZ2V0Qm9yZGVyRWRnZUluZm8oY2xhc3MgQm9yZGVyRWRnZVtdLCBib29sIGluY2x1
ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0cnVlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlID0g
dHJ1ZSkgY29uc3Q7CiAgICAgYm9vbCBib3JkZXJPYnNjdXJlc0JhY2tncm91bmRFZGdlKGNvbnN0
IEZsb2F0U2l6ZSYgY29udGV4dFNjYWxlKSBjb25zdDsKICAgICBib29sIGJvcmRlck9ic2N1cmVz
QmFja2dyb3VuZCgpIGNvbnN0OwogCi0gICAgYm9vbCBzaG91bGRQYWludEF0TG93UXVhbGl0eShH
cmFwaGljc0NvbnRleHQqLCBJbWFnZSosIGNvbnN0IHZvaWQqLCBjb25zdCBJbnRTaXplJik7Cisg
ICAgYm9vbCBzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQqLCBJbWFnZSos
IGNvbnN0IHZvaWQqLCBjb25zdCBMYXlvdXRTaXplJik7CiAKICAgICBSZW5kZXJCb3hNb2RlbE9i
amVjdCogY29udGludWF0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDb250aW51YXRpb24oUmVu
ZGVyQm94TW9kZWxPYmplY3QqKTsKQEAgLTE5Myw3ICsxOTMsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2
YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc0JveE1vZGVsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogCi0gICAgSW50U2l6ZSBjYWxjdWxhdGVGaWxsVGlsZVNpemUoY29uc3QgRmlsbExh
eWVyKiwgSW50U2l6ZSBzY2FsZWRTaXplKSBjb25zdDsKKyAgICBMYXlvdXRTaXplIGNhbGN1bGF0
ZUZpbGxUaWxlU2l6ZShjb25zdCBGaWxsTGF5ZXIqLCBMYXlvdXRTaXplIHNjYWxlZFNpemUpIGNv
bnN0OwogCiAgICAgUm91bmRlZFJlY3QgZ2V0QmFja2dyb3VuZFJvdW5kZWRSZWN0KGNvbnN0IExh
eW91dFJlY3QmLCBJbmxpbmVGbG93Qm94KiwgTGF5b3V0VW5pdCBpbmxpbmVCb3hXaWR0aCwgTGF5
b3V0VW5pdCBpbmxpbmVCb3hIZWlnaHQsCiAgICAgICAgIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0
RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CkBAIC0yMDEsMTQgKzIwMSwxNCBA
QCBwcml2YXRlOgogICAgIHZvaWQgY2xpcEJvcmRlclNpZGVQb2x5Z29uKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlu
bmVyQm9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJveFNpZGUsIGJvb2wg
Zmlyc3RFZGdlTWF0Y2hlcywgYm9vbCBzZWNvbmRFZGdlTWF0Y2hlcyk7CiAgICAgdm9pZCBwYWlu
dE9uZUJvcmRlclNpZGUoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUmVuZGVyU3R5bGUqLCBjb25z
dCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRl
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgc2lkZVJl
Y3QsIEJveFNpZGUsIEJveFNpZGUgYWRqYWNlbnRTaWRlMSwgQm94U2lkZSBhZGphY2VudFNpZGUy
LCBjb25zdCBjbGFzcyBCb3JkZXJFZGdlW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IExheW91dFJlY3QmIHNpZGVSZWN0LCBCb3hTaWRlLCBCb3hTaWRlIGFkamFjZW50
U2lkZTEsIEJveFNpZGUgYWRqYWNlbnRTaWRlMiwgY29uc3QgY2xhc3MgQm9yZGVyRWRnZVtdLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQYXRoKiwgQmFja2dyb3VuZEJs
ZWVkQXZvaWRhbmNlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxv
Z2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50aWFsaWFzLCBjb25zdCBDb2xvciogb3ZlcnJpZGVDb2xv
ciA9IDApOwogICAgIHZvaWQgcGFpbnRUcmFuc2x1Y2VudEJvcmRlclNpZGVzKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVy
LCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNsYXNzIEJvcmRlckVkZ2VbXSwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBi
b29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2Us
IGJvb2wgYW50aWFsaWFzID0gZmFsc2UpOwogICAgIHZvaWQgcGFpbnRCb3JkZXJTaWRlcyhHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRl
ckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9yZGVyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjbGFzcyBCb3JkZXJFZGdlW10sIEJvcmRlckVkZ2VGbGFncywgQmFj
a2dyb3VuZEJsZWVkQXZvaWRhbmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlu
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wg
YW50aWFsaWFzID0gZmFsc2UsIGNvbnN0IENvbG9yKiBvdmVycmlkZUNvbG9yID0gMCk7Ci0gICAg
dm9pZCBkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3Qm
LCBjb25zdCBQYXRoJiwgY29uc3QgY2xhc3MgQm9yZGVyRWRnZVtdLAorICAgIHZvaWQgZHJhd0Jv
eFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3Qg
UGF0aCYsIGNvbnN0IGNsYXNzIEJvcmRlckVkZ2VbXSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmbG9hdCB0aGlja25lc3MsIGZsb2F0IGRyYXdUaGlja25lc3MsIEJveFNpZGUsIGNvbnN0
IFJlbmRlclN0eWxlKiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3IsIEVCb3Jk
ZXJTdHlsZSwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVm
dEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104541</attachid>
            <date>2011-08-19 12:00:30 -0700</date>
            <delta_ts>2011-08-19 13:41:12 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-66534-20110819120029.patch</filename>
            <type>text/plain</type>
            <size>38146</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzNDI0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDgtMTkgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN3aXRjaCBSZW5kZXJCb3hNb2Rl
bE9iamVjdCB0byB0byBuZXcgbGF5b3V0IHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjUzNAorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
U2VpZGVsLgorCisgICAgICAgIENvbnZlcnQgUmVuZGVyQm94TW9kZWxPYmplY3QgdG8gbmV3IGxh
eW91dCBhYnN0cmFjdGlvbi4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXMgbm8gbmV3IGZ1bmN0
aW9uYWxpdHkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dRdWFs
aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpzaG91bGRQYWlu
dEF0TG93UXVhbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3JvdW5kUmVjdEFkanVzdGVk
Rm9yQmxlZWRBdm9pZGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUZpbGxUaWxlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnVzZUZpeGVkQXR0
YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3Vs
YXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50TmluZVBpZWNlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Ym9y
ZGVyV2lsbEFyY0lubmVyRWRnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRPbmVCb3JkZXJTaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludEJvcmRlclNpZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29uKToKKyAgICAgICAgKFdlYkNv
cmU6OmFyZWFDYXN0aW5nU2hhZG93SW5Ib2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3hNb2RlbE9iamVjdDo6Y29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6CisKIDIwMTEtMDgtMTcg
IEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1d
IFNwbGl0IHRpbGVyIGludG8gbWFpbiB0aHJlYWQgLyBjb21wb3NpdG9yIHRocmVhZCB2ZXJzaW9u
cwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuY3BwCShyZXZpc2lvbiA5MzQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAg
Ym9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c19sYXllcldhc1NlbAogc3RhdGljIGNvbnN0IGRv
dWJsZSBjSW50ZXJwb2xhdGlvbkN1dG9mZiA9IDgwMC4gKiA4MDAuOwogc3RhdGljIGNvbnN0IGRv
dWJsZSBjTG93UXVhbGl0eVRpbWVUaHJlc2hvbGQgPSAwLjUwMDsgLy8gNTAwIG1zCiAKLXR5cGVk
ZWYgSGFzaE1hcDxjb25zdCB2b2lkKiwgSW50U2l6ZT4gTGF5ZXJTaXplTWFwOwordHlwZWRlZiBI
YXNoTWFwPGNvbnN0IHZvaWQqLCBMYXlvdXRTaXplPiBMYXllclNpemVNYXA7CiB0eXBlZGVmIEhh
c2hNYXA8UmVuZGVyQm94TW9kZWxPYmplY3QqLCBMYXllclNpemVNYXA+IE9iamVjdExheWVyU2l6
ZU1hcDsKIAogLy8gVGhlIEhhc2hNYXAgZm9yIHN0b3JpbmcgY29udGludWF0aW9uIHBvaW50ZXJz
LgpAQCAtNjgsOSArNjgsOSBAQCBjbGFzcyBJbWFnZVF1YWxpdHlDb250cm9sbGVyIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZVF1YWxpdHlDb250cm9sbGVyKTsgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcigpOwotICAg
IGJvb2wgc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0KiwgUmVuZGVyQm94
TW9kZWxPYmplY3QqLCBJbWFnZSosIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBJbnRTaXplJik7
CisgICAgYm9vbCBzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQqLCBSZW5k
ZXJCb3hNb2RlbE9iamVjdCosIEltYWdlKiwgY29uc3Qgdm9pZCogbGF5ZXIsIGNvbnN0IExheW91
dFNpemUmKTsKICAgICB2b2lkIHJlbW92ZUxheWVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiwgTGF5
ZXJTaXplTWFwKiBpbm5lck1hcCwgY29uc3Qgdm9pZCogbGF5ZXIpOwotICAgIHZvaWQgc2V0KFJl
bmRlckJveE1vZGVsT2JqZWN0KiwgTGF5ZXJTaXplTWFwKiBpbm5lck1hcCwgY29uc3Qgdm9pZCog
bGF5ZXIsIGNvbnN0IEludFNpemUmKTsKKyAgICB2b2lkIHNldChSZW5kZXJCb3hNb2RlbE9iamVj
dCosIExheWVyU2l6ZU1hcCogaW5uZXJNYXAsIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBMYXlv
dXRTaXplJik7CiAgICAgdm9pZCBvYmplY3REZXN0cm95ZWQoUmVuZGVyQm94TW9kZWxPYmplY3Qq
KTsKICAgICBib29sIGlzRW1wdHkoKSB7IHJldHVybiBtX29iamVjdExheWVyU2l6ZU1hcC5pc0Vt
cHR5KCk7IH0KIApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6
OnJlbW92ZUxheWVyCiAgICAgfQogfQogICAgIAotdm9pZCBJbWFnZVF1YWxpdHlDb250cm9sbGVy
OjpzZXQoUmVuZGVyQm94TW9kZWxPYmplY3QqIG9iamVjdCwgTGF5ZXJTaXplTWFwKiBpbm5lck1h
cCwgY29uc3Qgdm9pZCogbGF5ZXIsIGNvbnN0IEludFNpemUmIHNpemUpCit2b2lkIEltYWdlUXVh
bGl0eUNvbnRyb2xsZXI6OnNldChSZW5kZXJCb3hNb2RlbE9iamVjdCogb2JqZWN0LCBMYXllclNp
emVNYXAqIGlubmVyTWFwLCBjb25zdCB2b2lkKiBsYXllciwgY29uc3QgTGF5b3V0U2l6ZSYgc2l6
ZSkKIHsKICAgICBpZiAoaW5uZXJNYXApCiAgICAgICAgIGlubmVyTWFwLT5zZXQobGF5ZXIsIHNp
emUpOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6cmVz
dGFydFRpbWUKICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChjTG93UXVhbGl0eVRpbWVUaHJlc2hv
bGQpOwogfQogCi1ib29sIEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dR
dWFsaXR5KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUmVuZGVyQm94TW9kZWxPYmplY3QqIG9i
amVjdCwgSW1hZ2UqIGltYWdlLCBjb25zdCB2b2lkICpsYXllciwgY29uc3QgSW50U2l6ZSYgc2l6
ZSkKK2Jvb2wgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHko
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBSZW5kZXJCb3hNb2RlbE9iamVjdCogb2JqZWN0LCBJ
bWFnZSogaW1hZ2UsIGNvbnN0IHZvaWQgKmxheWVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQog
ewogICAgIC8vIElmIHRoZSBpbWFnZSBpcyBub3QgYSBiaXRtYXAgaW1hZ2UsIHRoZW4gbm9uZSBv
ZiB0aGlzIGlzIHJlbGV2YW50IGFuZCB3ZSBqdXN0IHBhaW50IGF0IGhpZ2gKICAgICAvLyBxdWFs
aXR5LgpAQCAtMTQ5LDcgKzE0OSw3IEBAIGJvb2wgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hv
dWxkUGFpbnQKICAgICAvLyBMb29rIG91cnNlbHZlcyB1cCBpbiB0aGUgaGFzaHRhYmxlcy4KICAg
ICBPYmplY3RMYXllclNpemVNYXA6Oml0ZXJhdG9yIGkgPSBtX29iamVjdExheWVyU2l6ZU1hcC5m
aW5kKG9iamVjdCk7CiAgICAgTGF5ZXJTaXplTWFwKiBpbm5lck1hcCA9IGkgIT0gbV9vYmplY3RM
YXllclNpemVNYXAuZW5kKCkgPyAmaS0+c2Vjb25kIDogMDsKLSAgICBJbnRTaXplIG9sZFNpemU7
CisgICAgTGF5b3V0U2l6ZSBvbGRTaXplOwogICAgIGJvb2wgaXNGaXJzdFJlc2l6ZSA9IHRydWU7
CiAgICAgaWYgKGlubmVyTWFwKSB7CiAgICAgICAgIExheWVyU2l6ZU1hcDo6aXRlcmF0b3IgaiA9
IGlubmVyTWFwLT5maW5kKGxheWVyKTsKQEAgLTE2MSw3ICsxNjEsOSBAQCBib29sIEltYWdlUXVh
bGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50CiAKICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IGN1cnJlbnRUcmFuc2Zvcm0gPSBjb250ZXh0LT5nZXRDVE0oKTsKICAgICBib29sIGNvbnRleHRJ
c1NjYWxlZCA9ICFjdXJyZW50VHJhbnNmb3JtLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlw
cGVkKCk7Ci0gICAgaWYgKCFjb250ZXh0SXNTY2FsZWQgJiYgaW1hZ2VTaXplID09IHNpemUpIHsK
KyAgICAvLyBGSVhNRTogQ2hhbmdlIHRvIHVzZSByb3VnaGx5RXF1YWxzIHdoZW4gd2UgbW92ZSB0
byBmbG9hdC4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY2MTQ4CisgICAgaWYgKCFjb250ZXh0SXNTY2FsZWQgJiYgc2l6ZSA9PSBpbWFnZVNpemUp
IHsKICAgICAgICAgLy8gVGhlcmUgaXMgbm8gc2NhbGUgaW4gZWZmZWN0LiBJZiB3ZSBoYWQgYSBz
Y2FsZSBpbiBlZmZlY3QgYmVmb3JlLCB3ZSBjYW4ganVzdCByZW1vdmUgdGhpcyBvYmplY3QgZnJv
bSB0aGUgbGlzdC4KICAgICAgICAgcmVtb3ZlTGF5ZXIob2JqZWN0LCBpbm5lck1hcCwgbGF5ZXIp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xODMsNiArMTg1LDggQEAgYm9vbCBJbWFnZVF1
YWxpdHlDb250cm9sbGVyOjpzaG91bGRQYWludAogICAgIC8vIElmIHRoaXMgaXMgdGhlIGZpcnN0
IHRpbWUgcmVzaXppbmcgdGhpcyBpbWFnZSwgb3IgaXRzIHNpemUgaXMgdGhlCiAgICAgLy8gc2Ft
ZSBhcyB0aGUgbGFzdCByZXNpemUsIGRyYXcgYXQgaGlnaCByZXMsIGJ1dCByZWNvcmQgdGhlIHBh
aW50CiAgICAgLy8gc2l6ZSBhbmQgc2V0IHRoZSB0aW1lci4KKyAgICAvLyBGSVhNRTogQ2hhbmdl
IHRvIHVzZSByb3VnaGx5RXF1YWxzIHdoZW4gd2UgbW92ZSB0byBmbG9hdC4KKyAgICAvLyBTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MTQ4CiAgICAgaWYgKGlz
Rmlyc3RSZXNpemUgfHwgb2xkU2l6ZSA9PSBzaXplKSB7CiAgICAgICAgIHJlc3RhcnRUaW1lcigp
OwogICAgICAgICBzZXQob2JqZWN0LCBpbm5lck1hcCwgbGF5ZXIsIHNpemUpOwpAQCAtMjM1LDcg
KzIzOSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnNldFNlbGVjdGlvblMKICAgICAg
ICAgY2ItPnNldFNlbGVjdGlvblN0YXRlKHMpOwogfQogCi1ib29sIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIElt
YWdlKiBpbWFnZSwgY29uc3Qgdm9pZCogbGF5ZXIsIGNvbnN0IEludFNpemUmIHNpemUpCitib29s
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIEltYWdlKiBpbWFnZSwgY29uc3Qgdm9pZCogbGF5ZXIsIGNvbnN0IExh
eW91dFNpemUmIHNpemUpCiB7CiAgICAgcmV0dXJuIGltYWdlUXVhbGl0eUNvbnRyb2xsZXIoKS0+
c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgdGhpcywgaW1hZ2UsIGxheWVyLCBzaXpl
KTsKIH0KQEAgLTU3NSwxMiArNTc5LDEyIEBAIFJvdW5kZWRSZWN0IFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpnZXRCYWMKICAgICByZXR1cm4gYm9yZGVyOwogfQogCi1zdGF0aWMgSW50UmVjdCBiYWNr
Z3JvdW5kUmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFuY2UoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBib3JkZXJSZWN0LCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2Ug
YmxlZWRBdm9pZGFuY2UpCitzdGF0aWMgTGF5b3V0UmVjdCBiYWNrZ3JvdW5kUmVjdEFkanVzdGVk
Rm9yQmxlZWRBdm9pZGFuY2UoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRS
ZWN0JiBib3JkZXJSZWN0LCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2Up
CiB7CiAgICAgaWYgKGJsZWVkQXZvaWRhbmNlICE9IEJhY2tncm91bmRCbGVlZFNocmlua0JhY2tn
cm91bmQpCiAgICAgICAgIHJldHVybiBib3JkZXJSZWN0OwogCi0gICAgSW50UmVjdCBhZGp1c3Rl
ZFJlY3QgPSBib3JkZXJSZWN0OworICAgIExheW91dFJlY3QgYWRqdXN0ZWRSZWN0ID0gYm9yZGVy
UmVjdDsKICAgICAvLyBXZSBuZWVkIHRvIHNocmluayB0aGUgYm9yZGVyIGJ5IG9uZSBkZXZpY2Ug
cGl4ZWwgb24gZWFjaCBzaWRlLgogICAgIEFmZmluZVRyYW5zZm9ybSBjdG0gPSBjb250ZXh0LT5n
ZXRDVE0oKTsKICAgICBGbG9hdFNpemUgY29udGV4dFNjYWxlKHN0YXRpY19jYXN0PGZsb2F0Pihj
dG0ueFNjYWxlKCkpLCBzdGF0aWNfY2FzdDxmbG9hdD4oY3RtLnlTY2FsZSgpKSk7CkBAIC03Nzcs
NyArNzgxLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZQogICAg
IH0KIH0KIAotSW50U2l6ZSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3VsYXRlRmlsbFRpbGVT
aXplKGNvbnN0IEZpbGxMYXllciogZmlsbExheWVyLCBJbnRTaXplIHBvc2l0aW9uaW5nQXJlYVNp
emUpIGNvbnN0CitMYXlvdXRTaXplIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVGaWxs
VGlsZVNpemUoY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIsIExheW91dFNpemUgcG9zaXRpb25p
bmdBcmVhU2l6ZSkgY29uc3QKIHsKICAgICBTdHlsZUltYWdlKiBpbWFnZSA9IGZpbGxMYXllci0+
aW1hZ2UoKTsKICAgICBpbWFnZS0+c2V0SW1hZ2VDb250YWluZXJTaXplKHBvc2l0aW9uaW5nQXJl
YVNpemUpOyAvLyBVc2UgdGhlIGJveCBlc3RhYmxpc2hlZCBieSBiYWNrZ3JvdW5kLW9yaWdpbi4K
QEAgLTc4Niw4ICs3OTAsOCBAQCBJbnRTaXplIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxh
dGVGCiAKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBTaXplTGVuZ3RoOiB7Ci0g
ICAgICAgICAgICBpbnQgdyA9IHBvc2l0aW9uaW5nQXJlYVNpemUud2lkdGgoKTsKLSAgICAgICAg
ICAgIGludCBoID0gcG9zaXRpb25pbmdBcmVhU2l6ZS5oZWlnaHQoKTsKKyAgICAgICAgICAgIExh
eW91dFVuaXQgdyA9IHBvc2l0aW9uaW5nQXJlYVNpemUud2lkdGgoKTsKKyAgICAgICAgICAgIExh
eW91dFVuaXQgaCA9IHBvc2l0aW9uaW5nQXJlYVNpemUuaGVpZ2h0KCk7CiAKICAgICAgICAgICAg
IExlbmd0aCBsYXllcldpZHRoID0gZmlsbExheWVyLT5zaXplKCkuc2l6ZS53aWR0aCgpOwogICAg
ICAgICAgICAgTGVuZ3RoIGxheWVySGVpZ2h0ID0gZmlsbExheWVyLT5zaXplKCkuc2l6ZS5oZWln
aHQoKTsKQEAgLTgwNSwzMSArODA5LDMxIEBAIEludFNpemUgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OmNhbGN1bGF0ZUYKICAgICAgICAgICAgIC8vIElmIG9uZSBvZiB0aGUgdmFsdWVzIGlzIGF1dG8g
d2UgaGF2ZSB0byB1c2UgdGhlIGFwcHJvcHJpYXRlCiAgICAgICAgICAgICAvLyBzY2FsZSB0byBt
YWludGFpbiBvdXIgYXNwZWN0IHJhdGlvLgogICAgICAgICAgICAgaWYgKGxheWVyV2lkdGguaXNB
dXRvKCkgJiYgIWxheWVySGVpZ2h0LmlzQXV0bygpKSB7Ci0gICAgICAgICAgICAgICAgSW50U2l6
ZSBpbWFnZUludHJpbnNpY1NpemUgPSBpbWFnZS0+aW1hZ2VTaXplKHRoaXMsIHN0eWxlKCktPmVm
ZmVjdGl2ZVpvb20oKSk7CisgICAgICAgICAgICAgICAgTGF5b3V0U2l6ZSBpbWFnZUludHJpbnNp
Y1NpemUgPSBpbWFnZS0+aW1hZ2VTaXplKHRoaXMsIHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSk7
CiAgICAgICAgICAgICAgICAgaWYgKGltYWdlSW50cmluc2ljU2l6ZS5oZWlnaHQoKSkKICAgICAg
ICAgICAgICAgICAgICAgdyA9IGltYWdlSW50cmluc2ljU2l6ZS53aWR0aCgpICogaCAvIGltYWdl
SW50cmluc2ljU2l6ZS5oZWlnaHQoKTsgICAgICAgIAogICAgICAgICAgICAgfSBlbHNlIGlmICgh
bGF5ZXJXaWR0aC5pc0F1dG8oKSAmJiBsYXllckhlaWdodC5pc0F1dG8oKSkgewotICAgICAgICAg
ICAgICAgIEludFNpemUgaW1hZ2VJbnRyaW5zaWNTaXplID0gaW1hZ2UtPmltYWdlU2l6ZSh0aGlz
LCBzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpOworICAgICAgICAgICAgICAgIExheW91dFNpemUg
aW1hZ2VJbnRyaW5zaWNTaXplID0gaW1hZ2UtPmltYWdlU2l6ZSh0aGlzLCBzdHlsZSgpLT5lZmZl
Y3RpdmVab29tKCkpOwogICAgICAgICAgICAgICAgIGlmIChpbWFnZUludHJpbnNpY1NpemUud2lk
dGgoKSkKICAgICAgICAgICAgICAgICAgICAgaCA9IGltYWdlSW50cmluc2ljU2l6ZS5oZWlnaHQo
KSAqIHcgLyBpbWFnZUludHJpbnNpY1NpemUud2lkdGgoKTsKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAobGF5ZXJXaWR0aC5pc0F1dG8oKSAmJiBsYXllckhlaWdodC5pc0F1dG8oKSkgewogICAgICAg
ICAgICAgICAgIC8vIElmIGJvdGggd2lkdGggYW5kIGhlaWdodCBhcmUgYXV0bywgdXNlIHRoZSBp
bWFnZSdzIGludHJpbnNpYyBzaXplLgotICAgICAgICAgICAgICAgIEludFNpemUgaW1hZ2VJbnRy
aW5zaWNTaXplID0gaW1hZ2UtPmltYWdlU2l6ZSh0aGlzLCBzdHlsZSgpLT5lZmZlY3RpdmVab29t
KCkpOworICAgICAgICAgICAgICAgIExheW91dFNpemUgaW1hZ2VJbnRyaW5zaWNTaXplID0gaW1h
Z2UtPmltYWdlU2l6ZSh0aGlzLCBzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpOwogICAgICAgICAg
ICAgICAgIHcgPSBpbWFnZUludHJpbnNpY1NpemUud2lkdGgoKTsKICAgICAgICAgICAgICAgICBo
ID0gaW1hZ2VJbnRyaW5zaWNTaXplLmhlaWdodCgpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCi0gICAgICAgICAgICByZXR1cm4gSW50U2l6ZShtYXgoMSwgdyksIG1heCgxLCBoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gTGF5b3V0U2l6ZShtYXg8TGF5b3V0VW5pdD4oMSwgdyksIG1heDxM
YXlvdXRVbml0PigxLCBoKSk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDb250YWluOgogICAg
ICAgICBjYXNlIENvdmVyOiB7Ci0gICAgICAgICAgICBJbnRTaXplIGltYWdlSW50cmluc2ljU2l6
ZSA9IGltYWdlLT5pbWFnZVNpemUodGhpcywgMSk7CisgICAgICAgICAgICBMYXlvdXRTaXplIGlt
YWdlSW50cmluc2ljU2l6ZSA9IGltYWdlLT5pbWFnZVNpemUodGhpcywgMSk7CiAgICAgICAgICAg
ICBmbG9hdCBob3Jpem9udGFsU2NhbGVGYWN0b3IgPSBpbWFnZUludHJpbnNpY1NpemUud2lkdGgo
KQogICAgICAgICAgICAgICAgID8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBvc2l0aW9uaW5nQXJlYVNp
emUud2lkdGgoKSkgLyBpbWFnZUludHJpbnNpY1NpemUud2lkdGgoKSA6IDE7CiAgICAgICAgICAg
ICBmbG9hdCB2ZXJ0aWNhbFNjYWxlRmFjdG9yID0gaW1hZ2VJbnRyaW5zaWNTaXplLmhlaWdodCgp
CiAgICAgICAgICAgICAgICAgPyBzdGF0aWNfY2FzdDxmbG9hdD4ocG9zaXRpb25pbmdBcmVhU2l6
ZS5oZWlnaHQoKSkgLyBpbWFnZUludHJpbnNpY1NpemUuaGVpZ2h0KCkgOiAxOwogICAgICAgICAg
ICAgZmxvYXQgc2NhbGVGYWN0b3IgPSB0eXBlID09IENvbnRhaW4gPyBtaW4oaG9yaXpvbnRhbFNj
YWxlRmFjdG9yLCB2ZXJ0aWNhbFNjYWxlRmFjdG9yKSA6IG1heChob3Jpem9udGFsU2NhbGVGYWN0
b3IsIHZlcnRpY2FsU2NhbGVGYWN0b3IpOwotICAgICAgICAgICAgcmV0dXJuIEludFNpemUobWF4
PGludD4oMSwgaW1hZ2VJbnRyaW5zaWNTaXplLndpZHRoKCkgKiBzY2FsZUZhY3RvciksIG1heDxp
bnQ+KDEsIGltYWdlSW50cmluc2ljU2l6ZS5oZWlnaHQoKSAqIHNjYWxlRmFjdG9yKSk7CisgICAg
ICAgICAgICByZXR1cm4gTGF5b3V0U2l6ZShtYXg8TGF5b3V0VW5pdD4oMSwgaW1hZ2VJbnRyaW5z
aWNTaXplLndpZHRoKCkgKiBzY2FsZUZhY3RvciksIG1heDxMYXlvdXRVbml0PigxLCBpbWFnZUlu
dHJpbnNpY1NpemUuaGVpZ2h0KCkgKiBzY2FsZUZhY3RvcikpOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgU2l6ZU5vbmU6CiAgICAgICAgICAgICBicmVhazsKQEAgLTg1Myw3ICs4NTcsNyBAQCB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpCYWNrZ3JvdW5kSW1hCiAKIHZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5Ojp1c2VGaXhlZEF0dGFjaG1lbnQo
Y29uc3QgTGF5b3V0UG9pbnQmIGF0dGFjaG1lbnRQb2ludCkKIHsKLSAgICBtX3BoYXNlLm1vdmUo
bWF4KGF0dGFjaG1lbnRQb2ludC54KCkgLSBtX2Rlc3RSZWN0LngoKSwgMCksIG1heChhdHRhY2ht
ZW50UG9pbnQueSgpIC0gbV9kZXN0UmVjdC55KCksIDApKTsKKyAgICBtX3BoYXNlLm1vdmUobWF4
PExheW91dFVuaXQ+KGF0dGFjaG1lbnRQb2ludC54KCkgLSBtX2Rlc3RSZWN0LngoKSwgMCksIG1h
eDxMYXlvdXRVbml0PihhdHRhY2htZW50UG9pbnQueSgpIC0gbV9kZXN0UmVjdC55KCksIDApKTsK
IH0KIAogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6
OmNsaXAoY29uc3QgTGF5b3V0UmVjdCYgY2xpcFJlY3QpCkBAIC04NjgsMTIgKzg3MiwxMiBAQCBM
YXlvdXRQb2ludCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyCiAgICAgcmV0dXJuIHBoYXNl
OwogfQogCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVCYWNrZ3JvdW5kSW1h
Z2VHZW9tZXRyeShjb25zdCBGaWxsTGF5ZXIqIGZpbGxMYXllciwgY29uc3QgSW50UmVjdCYgcGFp
bnRSZWN0LCAKK3ZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUJhY2tncm91bmRJ
bWFnZUdlb21ldHJ5KGNvbnN0IEZpbGxMYXllciogZmlsbExheWVyLCBjb25zdCBMYXlvdXRSZWN0
JiBwYWludFJlY3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQmFja2dyb3VuZEltYWdlR2VvbWV0cnkmIGdlb21ldHJ5KQogewot
ICAgIGludCBsZWZ0ID0gMDsKLSAgICBpbnQgdG9wID0gMDsKLSAgICBJbnRTaXplIHBvc2l0aW9u
aW5nQXJlYVNpemU7CisgICAgTGF5b3V0VW5pdCBsZWZ0ID0gMDsKKyAgICBMYXlvdXRVbml0IHRv
cCA9IDA7CisgICAgTGF5b3V0U2l6ZSBwb3NpdGlvbmluZ0FyZWFTaXplOwogCiAgICAgLy8gRGV0
ZXJtaW5lIHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEgYW5kIHNldCBkZXN0UmVjdCB0
byB0aGUgYmFja2dyb3VuZCBwYWludGluZyBhcmVhLgogICAgIC8vIGRlc3RSZWN0IHdpbGwgYmUg
YWRqdXN0ZWQgbGF0ZXIgaWYgdGhlIGJhY2tncm91bmQgaXMgbm9uLXJlcGVhdGluZy4KQEAgLTg5
Miw4ICs4OTYsOCBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVCYWNrCiAg
ICAgaWYgKCFmaXhlZEF0dGFjaG1lbnQpIHsKICAgICAgICAgZ2VvbWV0cnkuc2V0RGVzdFJlY3Qo
cGFpbnRSZWN0KTsKIAotICAgICAgICBpbnQgcmlnaHQgPSAwOwotICAgICAgICBpbnQgYm90dG9t
ID0gMDsKKyAgICAgICAgTGF5b3V0VW5pdCByaWdodCA9IDA7CisgICAgICAgIExheW91dFVuaXQg
Ym90dG9tID0gMDsKICAgICAgICAgLy8gU2Nyb2xsIGFuZCBMb2NhbC4KICAgICAgICAgaWYgKGZp
bGxMYXllci0+b3JpZ2luKCkgIT0gQm9yZGVyRmlsbEJveCkgewogICAgICAgICAgICAgbGVmdCA9
IGJvcmRlckxlZnQoKTsKQEAgLTkxMiwxMSArOTE2LDExIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OmNhbGN1bGF0ZUJhY2sKICAgICAgICAgLy8gaXRzIG1hcmdpbnMuIFNpbmNlIHRob3Nl
IHdlcmUgYWRkZWQgaW4gYWxyZWFkeSwgd2UgaGF2ZSB0byBmYWN0b3IgdGhlbSBvdXQgd2hlbiBj
b21wdXRpbmcKICAgICAgICAgLy8gdGhlIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4KICAg
ICAgICAgaWYgKGlzUm9vdCgpKSB7Ci0gICAgICAgICAgICBwb3NpdGlvbmluZ0FyZWFTaXplID0g
SW50U2l6ZSh0b1JlbmRlckJveCh0aGlzKS0+d2lkdGgoKSAtIGxlZnQgLSByaWdodCwgdG9SZW5k
ZXJCb3godGhpcyktPmhlaWdodCgpIC0gdG9wIC0gYm90dG9tKTsKKyAgICAgICAgICAgIHBvc2l0
aW9uaW5nQXJlYVNpemUgPSBMYXlvdXRTaXplKHRvUmVuZGVyQm94KHRoaXMpLT53aWR0aCgpIC0g
bGVmdCAtIHJpZ2h0LCB0b1JlbmRlckJveCh0aGlzKS0+aGVpZ2h0KCkgLSB0b3AgLSBib3R0b20p
OwogICAgICAgICAgICAgbGVmdCArPSBtYXJnaW5MZWZ0KCk7CiAgICAgICAgICAgICB0b3AgKz0g
bWFyZ2luVG9wKCk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcG9zaXRpb25pbmdBcmVh
U2l6ZSA9IEludFNpemUocGFpbnRSZWN0LndpZHRoKCkgLSBsZWZ0IC0gcmlnaHQsIHBhaW50UmVj
dC5oZWlnaHQoKSAtIHRvcCAtIGJvdHRvbSk7CisgICAgICAgICAgICBwb3NpdGlvbmluZ0FyZWFT
aXplID0gTGF5b3V0U2l6ZShwYWludFJlY3Qud2lkdGgoKSAtIGxlZnQgLSByaWdodCwgcGFpbnRS
ZWN0LmhlaWdodCgpIC0gdG9wIC0gYm90dG9tKTsKICAgICB9IGVsc2UgewogICAgICAgICBnZW9t
ZXRyeS5zZXREZXN0UmVjdCh2aWV3UmVjdCgpKTsKICAgICAgICAgcG9zaXRpb25pbmdBcmVhU2l6
ZSA9IGdlb21ldHJ5LmRlc3RSZWN0KCkuc2l6ZSgpOwpAQCAtOTI3LDE1ICs5MzEsMTUgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3VsYXRlQmFjawogICAgIEVGaWxsUmVwZWF0IGJh
Y2tncm91bmRSZXBlYXRYID0gZmlsbExheWVyLT5yZXBlYXRYKCk7CiAgICAgRUZpbGxSZXBlYXQg
YmFja2dyb3VuZFJlcGVhdFkgPSBmaWxsTGF5ZXItPnJlcGVhdFkoKTsKIAotICAgIGludCB4UG9z
aXRpb24gPSBmaWxsTGF5ZXItPnhQb3NpdGlvbigpLmNhbGNNaW5WYWx1ZShwb3NpdGlvbmluZ0Fy
ZWFTaXplLndpZHRoKCkgLSBnZW9tZXRyeS50aWxlU2l6ZSgpLndpZHRoKCksIHRydWUpOworICAg
IExheW91dFVuaXQgeFBvc2l0aW9uID0gZmlsbExheWVyLT54UG9zaXRpb24oKS5jYWxjTWluVmFs
dWUocG9zaXRpb25pbmdBcmVhU2l6ZS53aWR0aCgpIC0gZ2VvbWV0cnkudGlsZVNpemUoKS53aWR0
aCgpLCB0cnVlKTsKICAgICBpZiAoYmFja2dyb3VuZFJlcGVhdFggPT0gUmVwZWF0RmlsbCkKLSAg
ICAgICAgZ2VvbWV0cnkuc2V0UGhhc2VYKGdlb21ldHJ5LnRpbGVTaXplKCkud2lkdGgoKSA/IGdl
b21ldHJ5LnRpbGVTaXplKCkud2lkdGgoKSAtICh4UG9zaXRpb24gKyBsZWZ0KSAlIGdlb21ldHJ5
LnRpbGVTaXplKCkud2lkdGgoKSA6IDApOworICAgICAgICBnZW9tZXRyeS5zZXRQaGFzZVgoZ2Vv
bWV0cnkudGlsZVNpemUoKS53aWR0aCgpID8gbGF5b3V0TW9kKGdlb21ldHJ5LnRpbGVTaXplKCku
d2lkdGgoKSAtICh4UG9zaXRpb24gKyBsZWZ0KSwgZ2VvbWV0cnkudGlsZVNpemUoKS53aWR0aCgp
KSA6IDApOwogICAgIGVsc2UKICAgICAgICAgZ2VvbWV0cnkuc2V0Tm9SZXBlYXRYKHhQb3NpdGlv
biArIGxlZnQpOwogCi0gICAgaW50IHlQb3NpdGlvbiA9IGZpbGxMYXllci0+eVBvc2l0aW9uKCku
Y2FsY01pblZhbHVlKHBvc2l0aW9uaW5nQXJlYVNpemUuaGVpZ2h0KCkgLSBnZW9tZXRyeS50aWxl
U2l6ZSgpLmhlaWdodCgpLCB0cnVlKTsKKyAgICBMYXlvdXRVbml0IHlQb3NpdGlvbiA9IGZpbGxM
YXllci0+eVBvc2l0aW9uKCkuY2FsY01pblZhbHVlKHBvc2l0aW9uaW5nQXJlYVNpemUuaGVpZ2h0
KCkgLSBnZW9tZXRyeS50aWxlU2l6ZSgpLmhlaWdodCgpLCB0cnVlKTsKICAgICBpZiAoYmFja2dy
b3VuZFJlcGVhdFkgPT0gUmVwZWF0RmlsbCkKLSAgICAgICAgZ2VvbWV0cnkuc2V0UGhhc2VZKGdl
b21ldHJ5LnRpbGVTaXplKCkuaGVpZ2h0KCkgPyBnZW9tZXRyeS50aWxlU2l6ZSgpLmhlaWdodCgp
IC0gKHlQb3NpdGlvbiArIHRvcCkgJSBnZW9tZXRyeS50aWxlU2l6ZSgpLmhlaWdodCgpIDogMCk7
CisgICAgICAgIGdlb21ldHJ5LnNldFBoYXNlWShnZW9tZXRyeS50aWxlU2l6ZSgpLmhlaWdodCgp
ID8gbGF5b3V0TW9kKGdlb21ldHJ5LnRpbGVTaXplKCkuaGVpZ2h0KCkgLSAoeVBvc2l0aW9uICsg
dG9wKSwgZ2VvbWV0cnkudGlsZVNpemUoKS5oZWlnaHQoKSkgOiAwKTsKICAgICBlbHNlIAogICAg
ICAgICBnZW9tZXRyeS5zZXROb1JlcGVhdFkoeVBvc2l0aW9uICsgdG9wKTsKIApAQCAtOTQ2LDcg
Kzk1MCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUJhY2sKICAgICBn
ZW9tZXRyeS5zZXREZXN0T3JpZ2luKGdlb21ldHJ5LmRlc3RSZWN0KCkubG9jYXRpb24oKSk7CiB9
CiAKLWJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TmluZVBpZWNlSW1hZ2UoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFJl
bmRlclN0eWxlKiBzdHlsZSwKK2Jvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TmluZVBp
ZWNlSW1hZ2UoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IExheW91dFJl
Y3QmIHJlY3QsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTmluZVBpZWNlSW1hZ2UmIG5pbmVQaWVj
ZUltYWdlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKICAgICBTdHlsZUltYWdlKiBzdHlsZUlt
YWdlID0gbmluZVBpZWNlSW1hZ2UuaW1hZ2UoKTsKQEAgLTk2MiwyNCArOTY2LDI0IEBAIGJvb2wg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TmluZVBpZWMKICAgICAvLyBGSVhNRTogYm9yZGVy
LWltYWdlIGlzIGJyb2tlbiB3aXRoIGZ1bGwgcGFnZSB6b29taW5nIHdoZW4gdGlsaW5nIGhhcyB0
byBoYXBwZW4sIHNpbmNlIHRoZSB0aWxpbmcgZnVuY3Rpb24KICAgICAvLyBkb2Vzbid0IGhhdmUg
YW55IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHpvb20gdGhhdCBpcyBpbiBlZmZlY3Qgb24gdGhlIHRp
bGUuCiAgICAgc3R5bGVJbWFnZS0+c2V0SW1hZ2VDb250YWluZXJTaXplKHJlY3Quc2l6ZSgpKTsK
LSAgICBJbnRTaXplIGltYWdlU2l6ZSA9IHN0eWxlSW1hZ2UtPmltYWdlU2l6ZSh0aGlzLCAxLjBm
KTsKLSAgICBpbnQgaW1hZ2VXaWR0aCA9IGltYWdlU2l6ZS53aWR0aCgpOwotICAgIGludCBpbWFn
ZUhlaWdodCA9IGltYWdlU2l6ZS5oZWlnaHQoKTsKLQotICAgIGludCB0b3BTbGljZSA9IG1pbihp
bWFnZUhlaWdodCwgbmluZVBpZWNlSW1hZ2Uuc2xpY2VzKCkudG9wKCkuY2FsY1ZhbHVlKGltYWdl
SGVpZ2h0KSk7Ci0gICAgaW50IGJvdHRvbVNsaWNlID0gbWluKGltYWdlSGVpZ2h0LCBuaW5lUGll
Y2VJbWFnZS5zbGljZXMoKS5ib3R0b20oKS5jYWxjVmFsdWUoaW1hZ2VIZWlnaHQpKTsKLSAgICBp
bnQgbGVmdFNsaWNlID0gbWluKGltYWdlV2lkdGgsIG5pbmVQaWVjZUltYWdlLnNsaWNlcygpLmxl
ZnQoKS5jYWxjVmFsdWUoaW1hZ2VXaWR0aCkpOwotICAgIGludCByaWdodFNsaWNlID0gbWluKGlt
YWdlV2lkdGgsIG5pbmVQaWVjZUltYWdlLnNsaWNlcygpLnJpZ2h0KCkuY2FsY1ZhbHVlKGltYWdl
V2lkdGgpKTsKKyAgICBMYXlvdXRTaXplIGltYWdlU2l6ZSA9IHN0eWxlSW1hZ2UtPmltYWdlU2l6
ZSh0aGlzLCAxLjBmKTsKKyAgICBMYXlvdXRVbml0IGltYWdlV2lkdGggPSBpbWFnZVNpemUud2lk
dGgoKTsKKyAgICBMYXlvdXRVbml0IGltYWdlSGVpZ2h0ID0gaW1hZ2VTaXplLmhlaWdodCgpOwor
CisgICAgTGF5b3V0VW5pdCB0b3BTbGljZSA9IG1pbjxMYXlvdXRVbml0PihpbWFnZUhlaWdodCwg
bmluZVBpZWNlSW1hZ2Uuc2xpY2VzKCkudG9wKCkuY2FsY1ZhbHVlKGltYWdlSGVpZ2h0KSk7Cisg
ICAgTGF5b3V0VW5pdCBib3R0b21TbGljZSA9IG1pbjxMYXlvdXRVbml0PihpbWFnZUhlaWdodCwg
bmluZVBpZWNlSW1hZ2Uuc2xpY2VzKCkuYm90dG9tKCkuY2FsY1ZhbHVlKGltYWdlSGVpZ2h0KSk7
CisgICAgTGF5b3V0VW5pdCBsZWZ0U2xpY2UgPSBtaW48TGF5b3V0VW5pdD4oaW1hZ2VXaWR0aCwg
bmluZVBpZWNlSW1hZ2Uuc2xpY2VzKCkubGVmdCgpLmNhbGNWYWx1ZShpbWFnZVdpZHRoKSk7Cisg
ICAgTGF5b3V0VW5pdCByaWdodFNsaWNlID0gbWluPExheW91dFVuaXQ+KGltYWdlV2lkdGgsIG5p
bmVQaWVjZUltYWdlLnNsaWNlcygpLnJpZ2h0KCkuY2FsY1ZhbHVlKGltYWdlV2lkdGgpKTsKIAog
ICAgIEVOaW5lUGllY2VJbWFnZVJ1bGUgaFJ1bGUgPSBuaW5lUGllY2VJbWFnZS5ob3Jpem9udGFs
UnVsZSgpOwogICAgIEVOaW5lUGllY2VJbWFnZVJ1bGUgdlJ1bGUgPSBuaW5lUGllY2VJbWFnZS52
ZXJ0aWNhbFJ1bGUoKTsKIAogICAgIGJvb2wgZml0VG9Cb3JkZXIgPSBzdHlsZS0+Ym9yZGVySW1h
Z2UoKSA9PSBuaW5lUGllY2VJbWFnZTsKICAgICAKLSAgICBpbnQgbGVmdFdpZHRoID0gZml0VG9C
b3JkZXIgPyBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgOiBsZWZ0U2xpY2U7Ci0gICAgaW50IHRv
cFdpZHRoID0gZml0VG9Cb3JkZXIgPyBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSA6IHRvcFNsaWNl
OwotICAgIGludCByaWdodFdpZHRoID0gZml0VG9Cb3JkZXIgPyBzdHlsZS0+Ym9yZGVyUmlnaHRX
aWR0aCgpIDogcmlnaHRTbGljZTsKLSAgICBpbnQgYm90dG9tV2lkdGggPSBmaXRUb0JvcmRlciA/
IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpIDogYm90dG9tU2xpY2U7CisgICAgTGF5b3V0VW5p
dCBsZWZ0V2lkdGggPSBmaXRUb0JvcmRlciA/IHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSA6IGxl
ZnRTbGljZTsKKyAgICBMYXlvdXRVbml0IHRvcFdpZHRoID0gZml0VG9Cb3JkZXIgPyBzdHlsZS0+
Ym9yZGVyVG9wV2lkdGgoKSA6IHRvcFNsaWNlOworICAgIExheW91dFVuaXQgcmlnaHRXaWR0aCA9
IGZpdFRvQm9yZGVyID8gc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSA6IHJpZ2h0U2xpY2U7Cisg
ICAgTGF5b3V0VW5pdCBib3R0b21XaWR0aCA9IGZpdFRvQm9yZGVyID8gc3R5bGUtPmJvcmRlckJv
dHRvbVdpZHRoKCkgOiBib3R0b21TbGljZTsKIAogICAgIGJvb2wgZHJhd0xlZnQgPSBsZWZ0U2xp
Y2UgPiAwICYmIGxlZnRXaWR0aCA+IDA7CiAgICAgYm9vbCBkcmF3VG9wID0gdG9wU2xpY2UgPiAw
ICYmIHRvcFdpZHRoID4gMDsKQEAgLTk5NywyMCArMTAwMSwyMCBAQCBib29sIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludE5pbmVQaWVjCiAgICAgICAgIC8vIFRoZSB0b3AgbGVmdCBjb3JuZXIg
cmVjdCBpcyAodHgsIHR5LCBsZWZ0V2lkdGgsIHRvcFdpZHRoKQogICAgICAgICAvLyBUaGUgcmVj
dCB0byB1c2UgZnJvbSB3aXRoaW4gdGhlIGltYWdlIGlzIG9idGFpbmVkIGZyb20gb3VyIHNsaWNl
LCBhbmQgaXMgKDAsIDAsIGxlZnRTbGljZSwgdG9wU2xpY2UpCiAgICAgICAgIGlmIChkcmF3VG9w
KQotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIGNv
bG9yU3BhY2UsIEludFJlY3QocmVjdC5sb2NhdGlvbigpLCBJbnRTaXplKGxlZnRXaWR0aCwgdG9w
V2lkdGgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFJlY3Qo
MCwgMCwgbGVmdFNsaWNlLCB0b3BTbGljZSksIG9wKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNlLCBMYXlvdXRSZWN0KHJlY3Qu
bG9jYXRpb24oKSwgTGF5b3V0U2l6ZShsZWZ0V2lkdGgsIHRvcFdpZHRoKSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRSZWN0KDAsIDAsIGxlZnRTbGljZSwg
dG9wU2xpY2UpLCBvcCk7CiAKICAgICAgICAgLy8gVGhlIGJvdHRvbSBsZWZ0IGNvcm5lciByZWN0
IGlzICh0eCwgdHkgKyBoIC0gYm90dG9tV2lkdGgsIGxlZnRXaWR0aCwgYm90dG9tV2lkdGgpCiAg
ICAgICAgIC8vIFRoZSByZWN0IHRvIHVzZSBmcm9tIHdpdGhpbiB0aGUgaW1hZ2UgaXMgKDAsIGlt
YWdlSGVpZ2h0IC0gYm90dG9tU2xpY2UsIGxlZnRTbGljZSwgYm90b21TbGljZSkKICAgICAgICAg
aWYgKGRyYXdCb3R0b20pCi0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZShp
bWFnZS5nZXQoKSwgY29sb3JTcGFjZSwgSW50UmVjdChyZWN0LngoKSwgcmVjdC55KCkgKyByZWN0
LmhlaWdodCgpIC0gYm90dG9tV2lkdGgsIGxlZnRXaWR0aCwgYm90dG9tV2lkdGgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UmVjdCgwLCBpbWFnZUhlaWdodCAt
IGJvdHRvbVNsaWNlLCBsZWZ0U2xpY2UsIGJvdHRvbVNsaWNlKSwgb3ApOworICAgICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIExheW91
dFJlY3QocmVjdC54KCksIHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSAtIGJvdHRvbVdpZHRoLCBs
ZWZ0V2lkdGgsIGJvdHRvbVdpZHRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIExheW91dFJlY3QoMCwgaW1hZ2VIZWlnaHQgLSBib3R0b21TbGljZSwgbGVmdFNsaWNl
LCBib3R0b21TbGljZSksIG9wKTsKIAogICAgICAgICAvLyBQYWludCB0aGUgbGVmdCBlZGdlLgog
ICAgICAgICAvLyBIYXZlIHRvIHNjYWxlIGFuZCB0aWxlIGludG8gdGhlIGJvcmRlciByZWN0Lgot
ICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdUaWxlZEltYWdlKGltYWdlLmdldCgpLCBjb2xv
clNwYWNlLCBJbnRSZWN0KHJlY3QueCgpLCByZWN0LnkoKSArIHRvcFdpZHRoLCBsZWZ0V2lkdGgs
CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIGNv
bG9yU3BhY2UsIExheW91dFJlY3QocmVjdC54KCksIHJlY3QueSgpICsgdG9wV2lkdGgsIGxlZnRX
aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LmhlaWdo
dCgpIC0gdG9wV2lkdGggLSBib3R0b21XaWR0aCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSW50UmVjdCgwLCB0b3BTbGljZSwgbGVmdFNsaWNlLCBpbWFnZUhlaWdo
dCAtIHRvcFNsaWNlIC0gYm90dG9tU2xpY2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIExheW91dFJlY3QoMCwgdG9wU2xpY2UsIGxlZnRTbGljZSwgaW1hZ2VIZWln
aHQgLSB0b3BTbGljZSAtIGJvdHRvbVNsaWNlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJbWFnZTo6U3RyZXRjaFRpbGUsIChJbWFnZTo6VGlsZVJ1bGUpdlJ1bGUs
IG9wKTsKICAgICB9CiAKQEAgLTEwMTksNDAgKzEwMjMsNDAgQEAgYm9vbCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnROaW5lUGllYwogICAgICAgICAvLyBUaGUgdG9wIHJpZ2h0IGNvcm5lciBy
ZWN0IGlzICh0eCArIHcgLSByaWdodFdpZHRoLCB0eSwgcmlnaHRXaWR0aCwgdG9wV2lkdGgpCiAg
ICAgICAgIC8vIFRoZSByZWN0IHRvIHVzZSBmcm9tIHdpdGhpbiB0aGUgaW1hZ2UgaXMgb2J0YWlu
ZWQgZnJvbSBvdXIgc2xpY2UsIGFuZCBpcyAoaW1hZ2VXaWR0aCAtIHJpZ2h0U2xpY2UsIDAsIHJp
Z2h0U2xpY2UsIHRvcFNsaWNlKQogICAgICAgICBpZiAoZHJhd1RvcCkKLSAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNlLCBJbnRSZWN0
KHJlY3QueCgpICsgcmVjdC53aWR0aCgpIC0gcmlnaHRXaWR0aCwgcmVjdC55KCksIHJpZ2h0V2lk
dGgsIHRvcFdpZHRoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElu
dFJlY3QoaW1hZ2VXaWR0aCAtIHJpZ2h0U2xpY2UsIDAsIHJpZ2h0U2xpY2UsIHRvcFNsaWNlKSwg
b3ApOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCks
IGNvbG9yU3BhY2UsIExheW91dFJlY3QocmVjdC54KCkgKyByZWN0LndpZHRoKCkgLSByaWdodFdp
ZHRoLCByZWN0LnkoKSwgcmlnaHRXaWR0aCwgdG9wV2lkdGgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTGF5b3V0UmVjdChpbWFnZVdpZHRoIC0gcmlnaHRTbGljZSwg
MCwgcmlnaHRTbGljZSwgdG9wU2xpY2UpLCBvcCk7CiAKICAgICAgICAgLy8gVGhlIGJvdHRvbSBy
aWdodCBjb3JuZXIgcmVjdCBpcyAodHggKyB3IC0gcmlnaHRXaWR0aCwgdHkgKyBoIC0gYm90dG9t
V2lkdGgsIHJpZ2h0V2lkdGgsIGJvdHRvbVdpZHRoKQogICAgICAgICAvLyBUaGUgcmVjdCB0byB1
c2UgZnJvbSB3aXRoaW4gdGhlIGltYWdlIGlzIChpbWFnZVdpZHRoIC0gcmlnaHRTbGljZSwgaW1h
Z2VIZWlnaHQgLSBib3R0b21TbGljZSwgcmlnaHRTbGljZSwgYm90dG9tU2xpY2UpCiAgICAgICAg
IGlmIChkcmF3Qm90dG9tKQotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2Uo
aW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIEludFJlY3QocmVjdC54KCkgKyByZWN0LndpZHRoKCkg
LSByaWdodFdpZHRoLCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkgLSBib3R0b21XaWR0aCwgcmln
aHRXaWR0aCwgYm90dG9tV2lkdGgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSW50UmVjdChpbWFnZVdpZHRoIC0gcmlnaHRTbGljZSwgaW1hZ2VIZWlnaHQgLSBib3R0
b21TbGljZSwgcmlnaHRTbGljZSwgYm90dG9tU2xpY2UpLCBvcCk7CisgICAgICAgICAgICBncmFw
aGljc0NvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwgTGF5b3V0UmVj
dChyZWN0LngoKSArIHJlY3Qud2lkdGgoKSAtIHJpZ2h0V2lkdGgsIHJlY3QueSgpICsgcmVjdC5o
ZWlnaHQoKSAtIGJvdHRvbVdpZHRoLCByaWdodFdpZHRoLCBib3R0b21XaWR0aCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRSZWN0KGltYWdlV2lkdGggLSBy
aWdodFNsaWNlLCBpbWFnZUhlaWdodCAtIGJvdHRvbVNsaWNlLCByaWdodFNsaWNlLCBib3R0b21T
bGljZSksIG9wKTsKIAogICAgICAgICAvLyBQYWludCB0aGUgcmlnaHQgZWRnZS4KLSAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5kcmF3VGlsZWRJbWFnZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwg
SW50UmVjdChyZWN0LngoKSArIHJlY3Qud2lkdGgoKSAtIHJpZ2h0V2lkdGgsIHJlY3QueSgpICsg
dG9wV2lkdGgsIHJpZ2h0V2lkdGgsCisgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1RpbGVk
SW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIExheW91dFJlY3QocmVjdC54KCkgKyByZWN0
LndpZHRoKCkgLSByaWdodFdpZHRoLCByZWN0LnkoKSArIHRvcFdpZHRoLCByaWdodFdpZHRoLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuaGVpZ2h0KCkgLSB0
b3BXaWR0aCAtIGJvdHRvbVdpZHRoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJbnRSZWN0KGltYWdlV2lkdGggLSByaWdodFNsaWNlLCB0b3BTbGljZSwgcmlnaHRT
bGljZSwgaW1hZ2VIZWlnaHQgLSB0b3BTbGljZSAtIGJvdHRvbVNsaWNlKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRSZWN0KGltYWdlV2lkdGggLSByaWdo
dFNsaWNlLCB0b3BTbGljZSwgcmlnaHRTbGljZSwgaW1hZ2VIZWlnaHQgLSB0b3BTbGljZSAtIGJv
dHRvbVNsaWNlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbWFn
ZTo6U3RyZXRjaFRpbGUsIChJbWFnZTo6VGlsZVJ1bGUpdlJ1bGUsIG9wKTsKICAgICB9CiAKICAg
ICAvLyBQYWludCB0aGUgdG9wIGVkZ2UuCiAgICAgaWYgKGRyYXdUb3ApCi0gICAgICAgIGdyYXBo
aWNzQ29udGV4dC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIEludFJl
Y3QocmVjdC54KCkgKyBsZWZ0V2lkdGgsIHJlY3QueSgpLCByZWN0LndpZHRoKCkgLSBsZWZ0V2lk
dGggLSByaWdodFdpZHRoLCB0b3BXaWR0aCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSW50UmVjdChsZWZ0U2xpY2UsIDAsIGltYWdlV2lkdGggLSByaWdodFNsaWNl
IC0gbGVmdFNsaWNlLCB0b3BTbGljZSksCisgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1Rp
bGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIExheW91dFJlY3QocmVjdC54KCkgKyBs
ZWZ0V2lkdGgsIHJlY3QueSgpLCByZWN0LndpZHRoKCkgLSBsZWZ0V2lkdGggLSByaWdodFdpZHRo
LCB0b3BXaWR0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5
b3V0UmVjdChsZWZ0U2xpY2UsIDAsIGltYWdlV2lkdGggLSByaWdodFNsaWNlIC0gbGVmdFNsaWNl
LCB0b3BTbGljZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKElt
YWdlOjpUaWxlUnVsZSloUnVsZSwgSW1hZ2U6OlN0cmV0Y2hUaWxlLCBvcCk7CiAKICAgICAvLyBQ
YWludCB0aGUgYm90dG9tIGVkZ2UuCiAgICAgaWYgKGRyYXdCb3R0b20pCi0gICAgICAgIGdyYXBo
aWNzQ29udGV4dC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIEludFJl
Y3QocmVjdC54KCkgKyBsZWZ0V2lkdGgsIHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSAtIGJvdHRv
bVdpZHRoLAorICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdUaWxlZEltYWdlKGltYWdlLmdl
dCgpLCBjb2xvclNwYWNlLCBMYXlvdXRSZWN0KHJlY3QueCgpICsgbGVmdFdpZHRoLCByZWN0Lnko
KSArIHJlY3QuaGVpZ2h0KCkgLSBib3R0b21XaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWN0LndpZHRoKCkgLSBsZWZ0V2lkdGggLSByaWdodFdpZHRoLCBi
b3R0b21XaWR0aCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50
UmVjdChsZWZ0U2xpY2UsIGltYWdlSGVpZ2h0IC0gYm90dG9tU2xpY2UsIGltYWdlV2lkdGggLSBy
aWdodFNsaWNlIC0gbGVmdFNsaWNlLCBib3R0b21TbGljZSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTGF5b3V0UmVjdChsZWZ0U2xpY2UsIGltYWdlSGVpZ2h0IC0g
Ym90dG9tU2xpY2UsIGltYWdlV2lkdGggLSByaWdodFNsaWNlIC0gbGVmdFNsaWNlLCBib3R0b21T
bGljZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEltYWdlOjpU
aWxlUnVsZSloUnVsZSwgSW1hZ2U6OlN0cmV0Y2hUaWxlLCBvcCk7CiAKICAgICAvLyBQYWludCB0
aGUgbWlkZGxlLgogICAgIGlmIChkcmF3TWlkZGxlKQotICAgICAgICBncmFwaGljc0NvbnRleHQt
PmRyYXdUaWxlZEltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNlLCBJbnRSZWN0KHJlY3QueCgp
ICsgbGVmdFdpZHRoLCByZWN0LnkoKSArIHRvcFdpZHRoLCByZWN0LndpZHRoKCkgLSBsZWZ0V2lk
dGggLSByaWdodFdpZHRoLAorICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdUaWxlZEltYWdl
KGltYWdlLmdldCgpLCBjb2xvclNwYWNlLCBMYXlvdXRSZWN0KHJlY3QueCgpICsgbGVmdFdpZHRo
LCByZWN0LnkoKSArIHRvcFdpZHRoLCByZWN0LndpZHRoKCkgLSBsZWZ0V2lkdGggLSByaWdodFdp
ZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuaGVpZ2h0
KCkgLSB0b3BXaWR0aCAtIGJvdHRvbVdpZHRoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJbnRSZWN0KGxlZnRTbGljZSwgdG9wU2xpY2UsIGltYWdlV2lkdGggLSBy
aWdodFNsaWNlIC0gbGVmdFNsaWNlLCBpbWFnZUhlaWdodCAtIHRvcFNsaWNlIC0gYm90dG9tU2xp
Y2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFJlY3Qo
bGVmdFNsaWNlLCB0b3BTbGljZSwgaW1hZ2VXaWR0aCAtIHJpZ2h0U2xpY2UgLSBsZWZ0U2xpY2Us
IGltYWdlSGVpZ2h0IC0gdG9wU2xpY2UgLSBib3R0b21TbGljZSksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKEltYWdlOjpUaWxlUnVsZSloUnVsZSwgKEltYWdlOjpU
aWxlUnVsZSl2UnVsZSwgb3ApOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTYxLDcgKzExNjUs
NyBAQCBzdGF0aWMgYm9vbCBhbGxDb3JuZXJzQ2xpcHBlZE91dChjb25zdCBSCiB9CiAKICNpZiBI
QVZFKFBBVEhfQkFTRURfQk9SREVSX1JBRElVU19EUkFXSU5HKQotc3RhdGljIGJvb2wgYm9yZGVy
V2lsbEFyY0lubmVyRWRnZShjb25zdCBJbnRTaXplJiBmaXJzdFJhZGl1cywgY29uc3QgSW50U2l6
ZSYgc2Vjb25kUmFkaXVzKQorc3RhdGljIGJvb2wgYm9yZGVyV2lsbEFyY0lubmVyRWRnZShjb25z
dCBMYXlvdXRTaXplJiBmaXJzdFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBzZWNvbmRSYWRpdXMp
CiB7CiAgICAgcmV0dXJuICFmaXJzdFJhZGl1cy5pc1plcm8oKSB8fCAhc2Vjb25kUmFkaXVzLmlz
WmVybygpOwogfQpAQCAtMTI5Miw3ICsxMjk2LDcgQEAgc3RhdGljIGJvb2wgam9pblJlcXVpcmVz
TWl0cmUoQm94U2lkZSBzaQogfQogCiB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE9u
ZUJvcmRlclNpZGUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFJlbmRl
clN0eWxlKiBzdHlsZSwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3Vu
ZGVkUmVjdCYgaW5uZXJCb3JkZXIsCi0gICAgY29uc3QgSW50UmVjdCYgc2lkZVJlY3QsIEJveFNp
ZGUgc2lkZSwgQm94U2lkZSBhZGphY2VudFNpZGUxLCBCb3hTaWRlIGFkamFjZW50U2lkZTIsIGNv
bnN0IEJvcmRlckVkZ2UgZWRnZXNbXSwgY29uc3QgUGF0aCogcGF0aCwgCisgICAgY29uc3QgTGF5
b3V0UmVjdCYgc2lkZVJlY3QsIEJveFNpZGUgc2lkZSwgQm94U2lkZSBhZGphY2VudFNpZGUxLCBC
b3hTaWRlIGFkamFjZW50U2lkZTIsIGNvbnN0IEJvcmRlckVkZ2UgZWRnZXNbXSwgY29uc3QgUGF0
aCogcGF0aCwKICAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UsIGJv
b2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwg
Ym9vbCBhbnRpYWxpYXMsIGNvbnN0IENvbG9yKiBvdmVycmlkZUNvbG9yKQogewogICAgIGNvbnN0
IEJvcmRlckVkZ2UmIGVkZ2VUb1JlbmRlciA9IGVkZ2VzW3NpZGVdOwpAQCAtMTM1NywyOCArMTM2
MSwzMiBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlclNpCiAgICAgICAg
IHJvdW5kZWRQYXRoLmFkZFJvdW5kZWRSZWN0KG91dGVyQm9yZGVyKTsKICAgICAKICAgICBpZiAo
ZWRnZXNbQlNUb3BdLnNob3VsZFJlbmRlcigpICYmIGluY2x1ZGVzRWRnZShlZGdlU2V0LCBCU1Rv
cCkpIHsKLSAgICAgICAgTGF5b3V0UmVjdCBzaWRlUmVjdCA9IGNhbGN1bGF0ZVNpZGVSZWN0KG91
dGVyQm9yZGVyLCBlZGdlcywgQlNUb3ApOworICAgICAgICBMYXlvdXRSZWN0IHNpZGVSZWN0ID0g
b3V0ZXJCb3JkZXIucmVjdCgpOworICAgICAgICBzaWRlUmVjdC5zZXRIZWlnaHQoZWRnZXNbQlNU
b3BdLndpZHRoKTsKIAogICAgICAgICBib29sIHVzZVBhdGggPSByZW5kZXJSYWRpaSAmJiAoYm9y
ZGVyU3R5bGVIYXNJbm5lckRldGFpbChlZGdlc1tCU1RvcF0uc3R5bGUpIHx8IGJvcmRlcldpbGxB
cmNJbm5lckVkZ2UoaW5uZXJCb3JkZXIucmFkaWkoKS50b3BMZWZ0KCksIGlubmVyQm9yZGVyLnJh
ZGlpKCkudG9wUmlnaHQoKSkpOwogICAgICAgICBwYWludE9uZUJvcmRlclNpZGUoZ3JhcGhpY3ND
b250ZXh0LCBzdHlsZSwgb3V0ZXJCb3JkZXIsIGlubmVyQm9yZGVyLCBzaWRlUmVjdCwgQlNUb3As
IEJTTGVmdCwgQlNSaWdodCwgZWRnZXMsIHVzZVBhdGggPyAmcm91bmRlZFBhdGggOiAwLCBibGVl
ZEF2b2lkYW5jZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVk
Z2UsIGFudGlhbGlhcywgb3ZlcnJpZGVDb2xvcik7CiAgICAgfQogCiAgICAgaWYgKGVkZ2VzW0JT
Qm90dG9tXS5zaG91bGRSZW5kZXIoKSAmJiBpbmNsdWRlc0VkZ2UoZWRnZVNldCwgQlNCb3R0b20p
KSB7Ci0gICAgICAgIExheW91dFJlY3Qgc2lkZVJlY3QgPSBjYWxjdWxhdGVTaWRlUmVjdChvdXRl
ckJvcmRlciwgZWRnZXMsIEJTQm90dG9tKTsKKyAgICAgICAgTGF5b3V0UmVjdCBzaWRlUmVjdCA9
IG91dGVyQm9yZGVyLnJlY3QoKTsKKyAgICAgICAgc2lkZVJlY3Quc2hpZnRZRWRnZVRvKHNpZGVS
ZWN0Lm1heFkoKSAtIGVkZ2VzW0JTQm90dG9tXS53aWR0aCk7CiAKICAgICAgICAgYm9vbCB1c2VQ
YXRoID0gcmVuZGVyUmFkaWkgJiYgKGJvcmRlclN0eWxlSGFzSW5uZXJEZXRhaWwoZWRnZXNbQlNC
b3R0b21dLnN0eWxlKSB8fCBib3JkZXJXaWxsQXJjSW5uZXJFZGdlKGlubmVyQm9yZGVyLnJhZGlp
KCkuYm90dG9tTGVmdCgpLCBpbm5lckJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkpKTsKICAg
ICAgICAgcGFpbnRPbmVCb3JkZXJTaWRlKGdyYXBoaWNzQ29udGV4dCwgc3R5bGUsIG91dGVyQm9y
ZGVyLCBpbm5lckJvcmRlciwgc2lkZVJlY3QsIEJTQm90dG9tLCBCU0xlZnQsIEJTUmlnaHQsIGVk
Z2VzLCB1c2VQYXRoID8gJnJvdW5kZWRQYXRoIDogMCwgYmxlZWRBdm9pZGFuY2UsIGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBhbnRpYWxpYXMsIG92ZXJy
aWRlQ29sb3IpOwogICAgIH0KIAogICAgIGlmIChlZGdlc1tCU0xlZnRdLnNob3VsZFJlbmRlcigp
ICYmIGluY2x1ZGVzRWRnZShlZGdlU2V0LCBCU0xlZnQpKSB7Ci0gICAgICAgIExheW91dFJlY3Qg
c2lkZVJlY3QgPSBjYWxjdWxhdGVTaWRlUmVjdChvdXRlckJvcmRlciwgZWRnZXMsIEJTTGVmdCk7
CisgICAgICAgIExheW91dFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7CisgICAg
ICAgIHNpZGVSZWN0LnNldFdpZHRoKGVkZ2VzW0JTTGVmdF0ud2lkdGgpOwogCiAgICAgICAgIGJv
b2wgdXNlUGF0aCA9IHJlbmRlclJhZGlpICYmIChib3JkZXJTdHlsZUhhc0lubmVyRGV0YWlsKGVk
Z2VzW0JTTGVmdF0uc3R5bGUpIHx8IGJvcmRlcldpbGxBcmNJbm5lckVkZ2UoaW5uZXJCb3JkZXIu
cmFkaWkoKS5ib3R0b21MZWZ0KCksIGlubmVyQm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpKSk7CiAg
ICAgICAgIHBhaW50T25lQm9yZGVyU2lkZShncmFwaGljc0NvbnRleHQsIHN0eWxlLCBvdXRlckJv
cmRlciwgaW5uZXJCb3JkZXIsIHNpZGVSZWN0LCBCU0xlZnQsIEJTVG9wLCBCU0JvdHRvbSwgZWRn
ZXMsIHVzZVBhdGggPyAmcm91bmRlZFBhdGggOiAwLCBibGVlZEF2b2lkYW5jZSwgaW5jbHVkZUxv
Z2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGFudGlhbGlhcywgb3ZlcnJp
ZGVDb2xvcik7CiAgICAgfQogCiAgICAgaWYgKGVkZ2VzW0JTUmlnaHRdLnNob3VsZFJlbmRlcigp
ICYmIGluY2x1ZGVzRWRnZShlZGdlU2V0LCBCU1JpZ2h0KSkgewotICAgICAgICBMYXlvdXRSZWN0
IHNpZGVSZWN0ID0gY2FsY3VsYXRlU2lkZVJlY3Qob3V0ZXJCb3JkZXIsIGVkZ2VzLCBCU1JpZ2h0
KTsKKyAgICAgICAgTGF5b3V0UmVjdCBzaWRlUmVjdCA9IG91dGVyQm9yZGVyLnJlY3QoKTsKKyAg
ICAgICAgc2lkZVJlY3Quc2hpZnRYRWRnZVRvKHNpZGVSZWN0Lm1heFgoKSAtIGVkZ2VzW0JTUmln
aHRdLndpZHRoKTsKIAogICAgICAgICBib29sIHVzZVBhdGggPSByZW5kZXJSYWRpaSAmJiAoYm9y
ZGVyU3R5bGVIYXNJbm5lckRldGFpbChlZGdlc1tCU1JpZ2h0XS5zdHlsZSkgfHwgYm9yZGVyV2ls
bEFyY0lubmVyRWRnZShpbm5lckJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCksIGlubmVyQm9y
ZGVyLnJhZGlpKCkudG9wUmlnaHQoKSkpOwogICAgICAgICBwYWludE9uZUJvcmRlclNpZGUoZ3Jh
cGhpY3NDb250ZXh0LCBzdHlsZSwgb3V0ZXJCb3JkZXIsIGlubmVyQm9yZGVyLCBzaWRlUmVjdCwg
QlNSaWdodCwgQlNUb3AsIEJTQm90dG9tLCBlZGdlcywgdXNlUGF0aCA/ICZyb3VuZGVkUGF0aCA6
IDAsIGJsZWVkQXZvaWRhbmNlLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNh
bFJpZ2h0RWRnZSwgYW50aWFsaWFzLCBvdmVycmlkZUNvbG9yKTsKQEAgLTE0MjUsNyArMTQzMyw3
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50VHJhbnNsdWMKICAgICB9CiB9CiAK
LXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYg
aW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLAordm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBpbmZv
LCBjb25zdCBMYXlvdXRSZWN0JiByZWN0LCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFu
Y2UgYmxlZWRBdm9pZGFuY2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNs
dWRlTG9naWNhbFJpZ2h0RWRnZSkKIHsKICAgICBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCA9IGluZm8uY29udGV4dDsKQEAgLTE1MzcsNyArMTU0NSw3IEBAIHZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKGMKICAgICAgICAgcGFpbnRCb3JkZXJTaWRlcyhncmFw
aGljc0NvbnRleHQsIHN0eWxlLCBvdXRlckJvcmRlciwgaW5uZXJCb3JkZXIsIGVkZ2VzLCBBbGxC
b3JkZXJFZGdlcywgYmxlZWRBdm9pZGFuY2UsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1
ZGVMb2dpY2FsUmlnaHRFZGdlLCBhbnRpYWxpYXMpOwogfQogCi12b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBib3JkZXJSZWN0LCBjb25zdCBQYXRoJiBib3JkZXJQYXRoLCBj
b25zdCBCb3JkZXJFZGdlIGVkZ2VzW10sCit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpkcmF3
Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBM
YXlvdXRSZWN0JiBib3JkZXJSZWN0LCBjb25zdCBQYXRoJiBib3JkZXJQYXRoLCBjb25zdCBCb3Jk
ZXJFZGdlIGVkZ2VzW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9h
dCB0aGlja25lc3MsIGZsb2F0IGRyYXdUaGlja25lc3MsIEJveFNpZGUgc2lkZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv
bG9yIGNvbG9yLCBFQm9yZGVyU3R5bGUgYm9yZGVyU3R5bGUsIEJhY2tncm91bmRCbGVlZEF2b2lk
YW5jZSBibGVlZEF2b2lkYW5jZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGlu
Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKQogewpAQCAtMTYyNCw3ICsxNjMyLDcgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcgogICAgICAgICAvLyBEcmF3IG91dGVyIGJv
cmRlciBsaW5lCiAgICAgICAgIHsKICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0KTsKLSAgICAgICAgICAgIEludFJlY3Qgb3V0
ZXJSZWN0ID0gYm9yZGVyUmVjdDsKKyAgICAgICAgICAgIExheW91dFJlY3Qgb3V0ZXJSZWN0ID0g
Ym9yZGVyUmVjdDsKICAgICAgICAgICAgIGlmIChibGVlZEF2b2lkYW5jZSA9PSBCYWNrZ3JvdW5k
QmxlZWRVc2VUcmFuc3BhcmVuY3lMYXllcikgewogICAgICAgICAgICAgICAgIG91dGVyUmVjdC5p
bmZsYXRlKDEpOwogICAgICAgICAgICAgICAgICsrb3V0ZXJCb3JkZXJUb3BXaWR0aDsKQEAgLTIw
MjksOCArMjAzNyw4IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWQK
IHsKICAgICBGbG9hdFBvaW50IHF1YWRbNF07CiAKLSAgICBjb25zdCBJbnRSZWN0JiBvdXRlclJl
Y3QgPSBvdXRlckJvcmRlci5yZWN0KCk7Ci0gICAgY29uc3QgSW50UmVjdCYgaW5uZXJSZWN0ID0g
aW5uZXJCb3JkZXIucmVjdCgpOworICAgIGNvbnN0IExheW91dFJlY3QmIG91dGVyUmVjdCA9IG91
dGVyQm9yZGVyLnJlY3QoKTsKKyAgICBjb25zdCBMYXlvdXRSZWN0JiBpbm5lclJlY3QgPSBpbm5l
ckJvcmRlci5yZWN0KCk7CiAKICAgICBGbG9hdFBvaW50IGNlbnRlclBvaW50KGlubmVyUmVjdC5s
b2NhdGlvbigpLngoKSArIHN0YXRpY19jYXN0PGZsb2F0Pihpbm5lclJlY3Qud2lkdGgoKSkgLyAy
LCBpbm5lclJlY3QubG9jYXRpb24oKS55KCkgKyBzdGF0aWNfY2FzdDxmbG9hdD4oaW5uZXJSZWN0
LmhlaWdodCgpKSAvIDIpOwogCkBAIC0yMTk1LDE2ICsyMjAzLDE2IEBAIGJvb2wgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OmJvcmRlck9ic2N1cmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGlj
IGlubGluZSBJbnRSZWN0IGFyZWFDYXN0aW5nU2hhZG93SW5Ib2xlKGNvbnN0IEludFJlY3QmIGhv
bGVSZWN0LCBpbnQgc2hhZG93Qmx1ciwgaW50IHNoYWRvd1NwcmVhZCwgY29uc3QgSW50U2l6ZSYg
c2hhZG93T2Zmc2V0KQorc3RhdGljIGlubGluZSBMYXlvdXRSZWN0IGFyZWFDYXN0aW5nU2hhZG93
SW5Ib2xlKGNvbnN0IExheW91dFJlY3QmIGhvbGVSZWN0LCBpbnQgc2hhZG93Qmx1ciwgaW50IHNo
YWRvd1NwcmVhZCwgY29uc3QgTGF5b3V0U2l6ZSYgc2hhZG93T2Zmc2V0KQogewotICAgIEludFJl
Y3QgYm91bmRzKGhvbGVSZWN0KTsKKyAgICBMYXlvdXRSZWN0IGJvdW5kcyhob2xlUmVjdCk7CiAg
ICAgCiAgICAgYm91bmRzLmluZmxhdGUoc2hhZG93Qmx1cik7CiAKICAgICBpZiAoc2hhZG93U3By
ZWFkIDwgMCkKICAgICAgICAgYm91bmRzLmluZmxhdGUoLXNoYWRvd1NwcmVhZCk7CiAgICAgCi0g
ICAgSW50UmVjdCBvZmZzZXRCb3VuZHMgPSBib3VuZHM7CisgICAgTGF5b3V0UmVjdCBvZmZzZXRC
b3VuZHMgPSBib3VuZHM7CiAgICAgb2Zmc2V0Qm91bmRzLm1vdmUoLXNoYWRvd09mZnNldCk7CiAg
ICAgcmV0dXJuIHVuaW9uUmVjdChib3VuZHMsIG9mZnNldEJvdW5kcyk7CiB9CkBAIC0yMjQyLDcg
KzIyNTAsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvCiAgICAg
ICAgICAgICBpZiAoZmlsbFJlY3QuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgICAgICBMYXlvdXRSZWN0IHNoYWRvd1JlY3QgPSBib3JkZXIucmVjdCgpOwor
ICAgICAgICAgICAgTGF5b3V0UmVjdCBzaGFkb3dSZWN0KGJvcmRlci5yZWN0KCkpOwogICAgICAg
ICAgICAgc2hhZG93UmVjdC5pbmZsYXRlKHNoYWRvd0JsdXIgKyBzaGFkb3dTcHJlYWQpOwogICAg
ICAgICAgICAgc2hhZG93UmVjdC5tb3ZlKHNoYWRvd09mZnNldCk7CiAKQEAgLTIzNTYsNyArMjM2
NCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG8KICAgICB9CiB9
CiAKLWludCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRo
Rm9yQ29udGVudCgpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb250
YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4g
Y29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgJKHJldmlz
aW9uIDkzNDI0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMiwxOCArMTEyLDE4IEBAIHB1YmxpYzoKICAgICBi
b29sIGhhc0lubGluZURpcmVjdGlvbkJvcmRlcnNQYWRkaW5nT3JNYXJnaW4oKSBjb25zdCB7IHJl
dHVybiBoYXNJbmxpbmVEaXJlY3Rpb25Cb3JkZXJzT3JQYWRkaW5nKCkgfHwgbWFyZ2luU3RhcnQo
KXx8IG1hcmdpbkVuZCgpOyB9CiAgICAgYm9vbCBoYXNJbmxpbmVEaXJlY3Rpb25Cb3JkZXJzT3JQ
YWRkaW5nKCkgY29uc3QgeyByZXR1cm4gYm9yZGVyU3RhcnQoKSB8fCBib3JkZXJFbmQoKSB8fCBw
YWRkaW5nU3RhcnQoKXx8IHBhZGRpbmdFbmQoKTsgfQogCi0gICAgdmlydHVhbCBpbnQgY29udGFp
bmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudCgpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5
b3V0VW5pdCBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50KCkgY29uc3Q7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRCZWNhbWVOb25JbmxpbmUoUmVuZGVyT2JqZWN0KiAvKmNo
aWxkKi8pIHsgfQogCi0gICAgdm9pZCBwYWludEJvcmRlcihjb25zdCBQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUqLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2Ug
PSBCYWNrZ3JvdW5kQmxlZWROb25lLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0cnVl
LCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlID0gdHJ1ZSk7Ci0gICAgYm9vbCBwYWludE5p
bmVQaWVjZUltYWdlKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmLCBjb25zdCBSZW5k
ZXJTdHlsZSosIGNvbnN0IE5pbmVQaWVjZUltYWdlJiwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21w
b3NpdGVTb3VyY2VPdmVyKTsKKyAgICB2b2lkIHBhaW50Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYs
IGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJTdHlsZSosIEJhY2tncm91bmRCbGVlZEF2
b2lkYW5jZSA9IEJhY2tncm91bmRCbGVlZE5vbmUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRn
ZSA9IHRydWUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UgPSB0cnVlKTsKKyAgICBib29s
IHBhaW50TmluZVBpZWNlSW1hZ2UoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UmVjdCYs
IGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3QgTmluZVBpZWNlSW1hZ2UmLCBDb21wb3NpdGVPcGVy
YXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwogICAgIHZvaWQgcGFpbnRCb3hTaGFkb3coY29u
c3QgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFJlbmRlclN0eWxlKiwgU2hh
ZG93U3R5bGUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSA9IHRydWUsIGJvb2wgaW5jbHVk
ZUxvZ2ljYWxSaWdodEVkZ2UgPSB0cnVlKTsKICAgICB2b2lkIHBhaW50RmlsbExheWVyRXh0ZW5k
ZWQoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgQ29sb3ImLCBjb25zdCBGaWxsTGF5ZXIqLCBjb25z
dCBMYXlvdXRSZWN0JiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KiA9
IDAsIGNvbnN0IExheW91dFNpemUmID0gTGF5b3V0U2l6ZSgpLCBDb21wb3NpdGVPcGVyYXRvciA9
IENvbXBvc2l0ZVNvdXJjZU92ZXIsIFJlbmRlck9iamVjdCogYmFja2dyb3VuZE9iamVjdCA9IDAp
OwogICAgIAogICAgIC8vIE92ZXJyaWRkZW4gYnkgc3ViY2xhc3NlcyB0byBkZXRlcm1pbmUgbGlu
ZSBoZWlnaHQgYW5kIGJhc2VsaW5lIHBvc2l0aW9uLgotICAgIHZpcnR1YWwgaW50IGxpbmVIZWln
aHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0g
UG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBpbnQgYmFz
ZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9u
TW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBM
aW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5n
TGluZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9u
KEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9z
aXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCA9IDA7CiAKICAgICAv
LyBDYWxsZWQgYnkgUmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKSBhbmQgaXMgdGhlIG9u
bHkgd2F5IGxheWVycyBzaG91bGQgZXZlciBiZSBkZXN0cm95ZWQKICAgICB2b2lkIGRlc3Ryb3lM
YXllcigpOwpAQCAtMTgwLDEyICsxODAsMTIgQEAgcHJvdGVjdGVkOgogICAgICAgICBMYXlvdXRT
aXplIG1fdGlsZVNpemU7CiAgICAgfTsKIAotICAgIHZvaWQgY2FsY3VsYXRlQmFja2dyb3VuZElt
YWdlR2VvbWV0cnkoY29uc3QgRmlsbExheWVyKiwgY29uc3QgSW50UmVjdCYgcGFpbnRSZWN0LCBC
YWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSYpOworICAgIHZvaWQgY2FsY3VsYXRlQmFja2dyb3VuZElt
YWdlR2VvbWV0cnkoY29uc3QgRmlsbExheWVyKiwgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnRSZWN0
LCBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSYpOwogICAgIHZvaWQgZ2V0Qm9yZGVyRWRnZUluZm8o
Y2xhc3MgQm9yZGVyRWRnZVtdLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0cnVlLCBi
b29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlID0gdHJ1ZSkgY29uc3Q7CiAgICAgYm9vbCBib3Jk
ZXJPYnNjdXJlc0JhY2tncm91bmRFZGdlKGNvbnN0IEZsb2F0U2l6ZSYgY29udGV4dFNjYWxlKSBj
b25zdDsKICAgICBib29sIGJvcmRlck9ic2N1cmVzQmFja2dyb3VuZCgpIGNvbnN0OwogCi0gICAg
Ym9vbCBzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQqLCBJbWFnZSosIGNv
bnN0IHZvaWQqLCBjb25zdCBJbnRTaXplJik7CisgICAgYm9vbCBzaG91bGRQYWludEF0TG93UXVh
bGl0eShHcmFwaGljc0NvbnRleHQqLCBJbWFnZSosIGNvbnN0IHZvaWQqLCBjb25zdCBMYXlvdXRT
aXplJik7CiAKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGludWF0aW9uKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRDb250aW51YXRpb24oUmVuZGVyQm94TW9kZWxPYmplY3QqKTsKQEAgLTE5
Myw3ICsxOTMsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc0Jv
eE1vZGVsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgSW50U2l6ZSBjYWxj
dWxhdGVGaWxsVGlsZVNpemUoY29uc3QgRmlsbExheWVyKiwgSW50U2l6ZSBzY2FsZWRTaXplKSBj
b25zdDsKKyAgICBMYXlvdXRTaXplIGNhbGN1bGF0ZUZpbGxUaWxlU2l6ZShjb25zdCBGaWxsTGF5
ZXIqLCBMYXlvdXRTaXplIHNjYWxlZFNpemUpIGNvbnN0OwogCiAgICAgUm91bmRlZFJlY3QgZ2V0
QmFja2dyb3VuZFJvdW5kZWRSZWN0KGNvbnN0IExheW91dFJlY3QmLCBJbmxpbmVGbG93Qm94Kiwg
TGF5b3V0VW5pdCBpbmxpbmVCb3hXaWR0aCwgTGF5b3V0VW5pdCBpbmxpbmVCb3hIZWlnaHQsCiAg
ICAgICAgIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJp
Z2h0RWRnZSk7CkBAIC0yMDEsMTQgKzIwMSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xpcEJv
cmRlclNpZGVQb2x5Z29uKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRl
ckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9yZGVyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEJveFNpZGUsIGJvb2wgZmlyc3RFZGdlTWF0Y2hlcywgYm9vbCBzZWNv
bmRFZGdlTWF0Y2hlcyk7CiAgICAgdm9pZCBwYWludE9uZUJvcmRlclNpZGUoR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIs
IGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgSW50UmVjdCYgc2lkZVJlY3QsIEJveFNpZGUsIEJveFNpZGUgYWRqYWNl
bnRTaWRlMSwgQm94U2lkZSBhZGphY2VudFNpZGUyLCBjb25zdCBjbGFzcyBCb3JkZXJFZGdlW10s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExheW91dFJlY3QmIHNpZGVS
ZWN0LCBCb3hTaWRlLCBCb3hTaWRlIGFkamFjZW50U2lkZTEsIEJveFNpZGUgYWRqYWNlbnRTaWRl
MiwgY29uc3QgY2xhc3MgQm9yZGVyRWRnZVtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBQYXRoKiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBib29sIGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50aWFs
aWFzLCBjb25zdCBDb2xvciogb3ZlcnJpZGVDb2xvciA9IDApOwogICAgIHZvaWQgcGFpbnRUcmFu
c2x1Y2VudEJvcmRlclNpZGVzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJlbmRlclN0eWxlKiwg
Y29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJC
b3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsYXNzIEJvcmRlckVkZ2Vb
XSwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2Us
IGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50aWFsaWFzID0gZmFsc2UpOwog
ICAgIHZvaWQgcGFpbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBSZW5kZXJT
dHlsZSosIGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3Qm
IGlubmVyQm9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbGFzcyBCb3Jk
ZXJFZGdlW10sIEJvcmRlckVkZ2VGbGFncywgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wg
aW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50aWFsaWFzID0gZmFsc2UsIGNvbnN0IENv
bG9yKiBvdmVycmlkZUNvbG9yID0gMCk7Ci0gICAgdm9pZCBkcmF3Qm94U2lkZUZyb21QYXRoKEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmLCBjb25zdCBQYXRoJiwgY29uc3QgY2xhc3Mg
Qm9yZGVyRWRnZVtdLAorICAgIHZvaWQgZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUGF0aCYsIGNvbnN0IGNsYXNzIEJvcmRlckVk
Z2VbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB0aGlja25lc3MsIGZsb2F0
IGRyYXdUaGlja25lc3MsIEJveFNpZGUsIGNvbnN0IFJlbmRlclN0eWxlKiwgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ29sb3IsIEVCb3JkZXJTdHlsZSwgQmFja2dyb3VuZEJsZWVkQXZv
aWRhbmNlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxS
aWdodEVkZ2UpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>