<?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>191100</bug_id>
          
          <creation_ts>2018-10-30 20:34:51 -0700</creation_ts>
          <short_desc>[LFC] Do not pass LayoutState&amp; to compute* and layout* functions</short_desc>
          <delta_ts>2018-10-31 06:53:29 -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>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1473592</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-10-30 20:34:51 -0700</bug_when>
    <thetext>ssia.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473595</commentid>
    <comment_count>1</comment_count>
      <attachid>353462</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-10-30 20:37:21 -0700</bug_when>
    <thetext>Created attachment 353462
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473694</commentid>
    <comment_count>2</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-10-31 06:52:03 -0700</bug_when>
    <thetext>Committed r237634: &lt;https://trac.webkit.org/changeset/237634&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473695</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-31 06:53:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/45698996&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353462</attachid>
            <date>2018-10-30 20:37:21 -0700</date>
            <delta_ts>2018-10-31 05:51:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>45211</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxNjllOGZmNmQ5Ni4uYmUxYjIzNzU2YTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAxOC0xMC0zMCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgor
CisgICAgICAgIFtMRkNdIERvIG5vdCBwYXNzIExheW91dFN0YXRlJiB0byBjb21wdXRlKiBhbmQg
bGF5b3V0KiBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5MTEwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlZHVjZSBub2lzZSBieSByZW1vdmUgTGF5b3V0U3RhdGUmIHBhcmFtZXRlciB3
aGVyZSBwb3NzaWJsZS4KKworICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0
T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1
dGVCb3JkZXJBbmRQYWRkaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9y
bWF0dGluZ0NvbnRleHQ6OnBsYWNlSW5GbG93UG9zaXRpb25lZENoaWxkcmVuIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dE91dE9mRmxv
d0Rlc2NlbmRhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGlu
Z0NvbnRleHQ6OnZhbGlkYXRlR2VvbWV0cnlDb25zdHJhaW50c0FmdGVyTGF5b3V0IGNvbnN0KToK
KyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBsYXlvdXQv
Rm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6c2hyaW5rVG9GaXRXaWR0aCk6CisgICAgICAg
ICogbGF5b3V0L0xheW91dEZvcm1hdHRpbmdTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkxheW91dFN0YXRlOjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1YnRyZWUpOgorICAg
ICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNQb3NpdGlvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5Ub3AgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkTWFyZ2luVG9wRm9y
QW5jZXN0b3JzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6cHJlY29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JGb3JtYXR0aW5nUm9vdElm
TmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6Y29tcHV0ZUZsb2F0aW5nUG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlUG9zaXRpb25Ub0F2b2lk
RmxvYXRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6Y29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JGbG9hdENsZWFyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUlu
Rmxvd1Bvc2l0aW9uZWRQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVXaWR0aEFuZE1hcmdpbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVI
ZWlnaHRBbmRNYXJnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0OjppbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyBjb25zdCk6CisgICAg
ICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0Lmg6Cisg
ICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
bGF5b3V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmluaXRpYWxpemVOZXdMaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dElubGluZUNvbnRlbnQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5
b3V0Rm9ybWF0dGluZ0NvbnRleHRSb290IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVXaWR0aEFuZEhlaWdodEZvcklubGlu
ZUJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdD
b250ZXh0Ojpjb21wdXRlRmxvYXRQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGljUG9zaXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZUluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjppbnN0cmluc2ljV2lkdGhDb25zdHJh
aW50cyBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQuaDoKKwogMjAxOC0xMC0zMCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtMRkNdIEZvcm1hdHRpbmdDb250ZXh0IGNsYXNzIHNob3VsZCB0
YWtlIEZvcm1hdHRpbmdTdGF0ZSYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9G
b3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0Nv
bnRleHQuY3BwCmluZGV4IDI5ZjgzMmQ1ZGMyLi40YTMzZGY5NTJmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC02Myw4ICs2MywxMCBAQCBMYXlv
dXRTdGF0ZSYgRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dFN0YXRlKCkgY29uc3QKICAgICByZXR1
cm4gbV9mb3JtYXR0aW5nU3RhdGUubGF5b3V0U3RhdGUoKTsKIH0KIAotdm9pZCBGb3JtYXR0aW5n
Q29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd0hvcml6b250YWxHZW9tZXRyeShMYXlvdXRTdGF0ZSYg
bGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAordm9pZCBGb3JtYXR0aW5n
Q29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd0hvcml6b250YWxHZW9tZXRyeShjb25zdCBCb3gmIGxh
eW91dEJveCkgY29uc3QKIHsKKyAgICBhdXRvJiBsYXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0
YXRlKCk7CisKICAgICBhdXRvIGNvbXB1dGUgPSBbJl0oc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiB1c2VkV2lkdGgpIHsKICAgICAgICAgcmV0dXJuIEdlb21ldHJ5OjpvdXRPZkZsb3dIb3Jpem9u
dGFsR2VvbWV0cnkobGF5b3V0U3RhdGUsICp0aGlzLCBsYXlvdXRCb3gsIHVzZWRXaWR0aCk7CiAg
ICAgfTsKQEAgLTkxLDggKzkzLDEwIEBAIHZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVP
dXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkoTGF5b3V0U3RhdGUmIGxheW91dFN0CiAgICAgZGlz
cGxheUJveC5zZXRIb3Jpem9udGFsTm9uQ29tcHV0ZWRNYXJnaW4oaG9yaXpvbnRhbEdlb21ldHJ5
LndpZHRoQW5kTWFyZ2luLm5vbkNvbXB1dGVkTWFyZ2luKTsKIH0KIAotdm9pZCBGb3JtYXR0aW5n
Q29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkoY29uc3QgTGF5b3V0U3Rh
dGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKK3ZvaWQgRm9ybWF0
dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IEJveCYg
bGF5b3V0Qm94KSBjb25zdAogeworICAgIGF1dG8mIGxheW91dFN0YXRlID0gdGhpcy0+bGF5b3V0
U3RhdGUoKTsKKwogICAgIGF1dG8gY29tcHV0ZSA9IFsmXShzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IHVzZWRIZWlnaHQpIHsKICAgICAgICAgcmV0dXJuIEdlb21ldHJ5OjpvdXRPZkZsb3dWZXJ0
aWNhbEdlb21ldHJ5KGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIHVzZWRIZWlnaHQpOwogICAgIH07
CkBAIC0xMTgsMjkgKzEyMiwzMCBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0
T2ZGbG93VmVydGljYWxHZW9tZXRyeShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5bwogICAgIGRpc3Bs
YXlCb3guc2V0VmVydGljYWxOb25Db2xsYXBzZWRNYXJnaW4odmVydGljYWxHZW9tZXRyeS5oZWln
aHRBbmRNYXJnaW4ubWFyZ2luKTsKIH0KIAotdm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0
ZUJvcmRlckFuZFBhZGRpbmcoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBC
b3gmIGxheW91dEJveCkgY29uc3QKK3ZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVCb3Jk
ZXJBbmRQYWRkaW5nKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogeworICAgIGF1dG8mIGxh
eW91dFN0YXRlID0gdGhpcy0+bGF5b3V0U3RhdGUoKTsKICAgICBhdXRvJiBkaXNwbGF5Qm94ID0g
bGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpOwogICAgIGRpc3Bs
YXlCb3guc2V0Qm9yZGVyKEdlb21ldHJ5Ojpjb21wdXRlZEJvcmRlcihsYXlvdXRTdGF0ZSwgbGF5
b3V0Qm94KSk7CiAgICAgZGlzcGxheUJveC5zZXRQYWRkaW5nKEdlb21ldHJ5Ojpjb21wdXRlZFBh
ZGRpbmcobGF5b3V0U3RhdGUsIGxheW91dEJveCkpOwogfQogCi12b2lkIEZvcm1hdHRpbmdDb250
ZXh0OjpwbGFjZUluRmxvd1Bvc2l0aW9uZWRDaGlsZHJlbihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5
b3V0U3RhdGUsIGNvbnN0IENvbnRhaW5lciYgY29udGFpbmVyKSBjb25zdAordm9pZCBGb3JtYXR0
aW5nQ29udGV4dDo6cGxhY2VJbkZsb3dQb3NpdGlvbmVkQ2hpbGRyZW4oY29uc3QgQ29udGFpbmVy
JiBjb250YWluZXIpIGNvbnN0CiB7CiAgICAgLy8gSWYgdGhpcyBjb250YWluZXIgYWxzbyBlc3Rh
Ymxpc2hlcyBhIGZvcm1hdHRpbmcgY29udGV4dCwgdGhlbiBwb3NpdGlvbmluZyBhbHJlYWR5IGhh
cyBoYXBwZW5kIGluIHRoYXQgdGhlIGZvcm1hdHRpbmcgY29udGV4dC4KICAgICBpZiAoY29udGFp
bmVyLmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSAmJiAmY29udGFpbmVyICE9ICZyb290
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29u
dGV4dExheW91dCwgc3RyZWFtIDw8ICJTdGFydDogbW92ZSBpbi1mbG93IHBvc2l0aW9uZWQgY2hp
bGRyZW4gLT4gY29udGV4dDogIiA8PCAmbGF5b3V0U3RhdGUgPDwgIiBwYXJlbnQ6ICIgPDwgJmNv
bnRhaW5lcik7CisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBz
dHJlYW0gPDwgIlN0YXJ0OiBtb3ZlIGluLWZsb3cgcG9zaXRpb25lZCBjaGlsZHJlbiAtPiBwYXJl
bnQ6ICIgPDwgJmNvbnRhaW5lcik7CiAgICAgZm9yIChhdXRvJiBsYXlvdXRCb3ggOiBjaGlsZHJl
bk9mVHlwZTxCb3g+KGNvbnRhaW5lcikpIHsKICAgICAgICAgaWYgKCFsYXlvdXRCb3guaXNJbkZs
b3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgY29tcHV0ZUlu
Rmxvd1Bvc2l0aW9uZWRQb3NpdGlvbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAgICAgICAg
Y29tcHV0ZUluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbihsYXlvdXRCb3gpOwogICAgIH0KLSAgICBM
T0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiRW5kOiBt
b3ZlIGluLWZsb3cgcG9zaXRpb25lZCBjaGlsZHJlbiAtPiBjb250ZXh0OiAiIDw8ICZsYXlvdXRT
dGF0ZSA8PCAiIHBhcmVudDogIiA8PCAmY29udGFpbmVyKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0o
Rm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiRW5kOiBtb3ZlIGluLWZsb3cgcG9z
aXRpb25lZCBjaGlsZHJlbiAtPiBwYXJlbnQ6ICIgPDwgJmNvbnRhaW5lcik7CiB9CiAKLXZvaWQg
Rm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dE91dE9mRmxvd0Rlc2NlbmRhbnRzKExheW91dFN0YXRl
JiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0Cit2b2lkIEZvcm1hdHRp
bmdDb250ZXh0OjpsYXlvdXRPdXRPZkZsb3dEZXNjZW5kYW50cyhjb25zdCBCb3gmIGxheW91dEJv
eCkgY29uc3QKIHsKICAgICAvLyBJbml0aWFsIGNvbnRhaW5pbmcgYmxvY2sgYnkgZGVmaW5pdGlv
biBpcyBhIGNvbnRhaW5pbmcgYmxvY2suCiAgICAgaWYgKCFsYXlvdXRCb3guaXNQb3NpdGlvbmVk
KCkgJiYgIWxheW91dEJveC5pc0luaXRpYWxDb250YWluaW5nQmxvY2soKSkKQEAgLTE1Myw2ICsx
NTgsNyBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRPdXRPZkZsb3dEZXNjZW5kYW50
cyhMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbgogICAgIGlmICghY29udGFpbmVyLmhhc0No
aWxkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8mIGxheW91dFN0YXRlID0gdGhpcy0+
bGF5b3V0U3RhdGUoKTsKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlv
dXQsIHN0cmVhbSA8PCAiU3RhcnQ6IGxheW91dCBvdXQtb2YtZmxvdyBkZXNjZW5kYW50cyAtPiBj
b250ZXh0OiAiIDw8ICZsYXlvdXRTdGF0ZSA8PCAiIHJvb3Q6ICIgPDwgJnJvb3QoKSk7CiAKICAg
ICBmb3IgKGF1dG8mIG91dE9mRmxvd0JveCA6IGNvbnRhaW5lci5vdXRPZkZsb3dEZXNjZW5kYW50
cygpKSB7CkBAIC0xNjAsMTQgKzE2NiwxMyBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0OjpsYXlv
dXRPdXRPZkZsb3dEZXNjZW5kYW50cyhMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbgogCiAg
ICAgICAgIEFTU0VSVChsYXlvdXRCb3guZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsK
IAotICAgICAgICBjb21wdXRlQm9yZGVyQW5kUGFkZGluZyhsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94
KTsKLSAgICAgICAgY29tcHV0ZU91dE9mRmxvd0hvcml6b250YWxHZW9tZXRyeShsYXlvdXRTdGF0
ZSwgbGF5b3V0Qm94KTsKKyAgICAgICAgY29tcHV0ZUJvcmRlckFuZFBhZGRpbmcobGF5b3V0Qm94
KTsKKyAgICAgICAgY29tcHV0ZU91dE9mRmxvd0hvcml6b250YWxHZW9tZXRyeShsYXlvdXRCb3gp
OwogCi0gICAgICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IGxheW91dFN0YXRlLmNyZWF0ZUZv
cm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQobGF5b3V0Qm94KTsKLSAgICAg
ICAgZm9ybWF0dGluZ1N0YXRlLmZvcm1hdHRpbmdDb250ZXh0KGxheW91dEJveCktPmxheW91dChs
YXlvdXRTdGF0ZSwgZm9ybWF0dGluZ1N0YXRlKTsKKyAgICAgICAgbGF5b3V0U3RhdGUuY3JlYXRl
Rm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChsYXlvdXRCb3gpLmZvcm1h
dHRpbmdDb250ZXh0KGxheW91dEJveCktPmxheW91dCgpOwogCi0gICAgICAgIGNvbXB1dGVPdXRP
ZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwotICAgICAgICBs
YXlvdXRPdXRPZkZsb3dEZXNjZW5kYW50cyhsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAgICAg
ICAgY29tcHV0ZU91dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkobGF5b3V0Qm94KTsKKyAgICAgICAg
bGF5b3V0T3V0T2ZGbG93RGVzY2VuZGFudHMobGF5b3V0Qm94KTsKICAgICB9CiAgICAgTE9HX1dJ
VEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIkVuZDogbGF5b3V0
IG91dC1vZi1mbG93IGRlc2NlbmRhbnRzIC0+IGNvbnRleHQ6ICIgPDwgJmxheW91dFN0YXRlIDw8
ICIgcm9vdDogIiA8PCAmcm9vdCgpKTsKIH0KQEAgLTIxNSwxMSArMjIwLDEyIEBAIFBvc2l0aW9u
IEZvcm1hdHRpbmdDb250ZXh0OjptYXBDb29yZGluYXRlVG9BbmNlc3Rvcihjb25zdCBMYXlvdXRT
dGF0ZSYgbGF5b3V0U3RhCiB9CiAKICNpZm5kZWYgTkRFQlVHCi12b2lkIEZvcm1hdHRpbmdDb250
ZXh0Ojp2YWxpZGF0ZUdlb21ldHJ5Q29uc3RyYWludHNBZnRlckxheW91dChjb25zdCBMYXlvdXRT
dGF0ZSYgbGF5b3V0U3RhdGUpIGNvbnN0Cit2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojp2YWxpZGF0
ZUdlb21ldHJ5Q29uc3RyYWludHNBZnRlckxheW91dCgpIGNvbnN0CiB7CiAgICAgaWYgKCFpczxD
b250YWluZXI+KHJvb3QoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvJiBmb3JtYXR0aW5n
Q29udGV4dFJvb3QgPSBkb3duY2FzdDxDb250YWluZXI+KHJvb3QoKSk7CisgICAgYXV0byYgbGF5
b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwogICAgIC8vIEZJWE1FOiBhZGQgYSBkZXNj
ZW5kYW50c09mVHlwZTw+IGZsYXZvciB0aGF0IHN0b3BzIGF0IG5lc3RlZCBmb3JtYXR0aW5nIGNv
bnRleHRzCiAgICAgZm9yIChhdXRvJiBsYXlvdXRCb3ggOiBkZXNjZW5kYW50c09mVHlwZTxCb3g+
KGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpIHsKICAgICAgICAgaWYgKCZsYXlvdXRCb3guZm9ybWF0
dGluZ0NvbnRleHRSb290KCkgIT0gJmZvcm1hdHRpbmdDb250ZXh0Um9vdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggNDlkODkyNjc4ZmYuLmEyMzQ3N2Zj
YjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNDks
MTQgKzQ5LDE0IEBAIHB1YmxpYzoKICAgICBGb3JtYXR0aW5nQ29udGV4dChjb25zdCBCb3gmIGZv
cm1hdHRpbmdDb250ZXh0Um9vdCwgRm9ybWF0dGluZ1N0YXRlJik7CiAgICAgdmlydHVhbCB+Rm9y
bWF0dGluZ0NvbnRleHQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoTGF5b3V0U3RhdGUm
LCBGb3JtYXR0aW5nU3RhdGUmKSBjb25zdCA9IDA7Ci0gICAgdm9pZCBsYXlvdXRPdXRPZkZsb3dE
ZXNjZW5kYW50cyhMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpIGNvbnN0OworICAgIHZpcnR1YWwg
dm9pZCBsYXlvdXQoKSBjb25zdCA9IDA7CisgICAgdm9pZCBsYXlvdXRPdXRPZkZsb3dEZXNjZW5k
YW50cyhjb25zdCBCb3gmKSBjb25zdDsKIAogICAgIHN0cnVjdCBJbnN0cmluc2ljV2lkdGhDb25z
dHJhaW50cyB7CiAgICAgICAgIExheW91dFVuaXQgbWluaW11bTsKICAgICAgICAgTGF5b3V0VW5p
dCBtYXhpbXVtOwogICAgIH07Ci0gICAgdmlydHVhbCBJbnN0cmluc2ljV2lkdGhDb25zdHJhaW50
cyBpbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyhMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIEluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGluc3RyaW5z
aWNXaWR0aENvbnN0cmFpbnRzKGNvbnN0IEJveCYpIGNvbnN0ID0gMDsKIAogICAgIHN0YXRpYyBE
aXNwbGF5OjpCb3ggbWFwQm94VG9BbmNlc3Rvcihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJv
eCYsIGNvbnN0IENvbnRhaW5lciYgYW5jZXN0b3IpOwogICAgIHN0YXRpYyBQb3NpdGlvbiBtYXBU
b3BMZWZ0VG9BbmNlc3Rvcihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIGNvbnN0IENv
bnRhaW5lciYgYW5jZXN0b3IpOwpAQCAtNjksMTUgKzY5LDE1IEBAIHByb3RlY3RlZDoKICAgICBM
YXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUoKSBjb25zdDsKICAgICBjb25zdCBCb3gmIHJvb3QoKSBj
b25zdCB7IHJldHVybiAqbV9yb290OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVN0YXRp
Y1Bvc2l0aW9uKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94JikgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBjb21wdXRlSW5GbG93UG9zaXRpb25lZFBvc2l0aW9uKGNvbnN0IExheW91
dFN0YXRlJiwgY29uc3QgQm94JikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRl
U3RhdGljUG9zaXRpb24oY29uc3QgQm94JikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBj
b21wdXRlSW5GbG93UG9zaXRpb25lZFBvc2l0aW9uKGNvbnN0IEJveCYpIGNvbnN0ID0gMDsKIAot
ICAgIHZvaWQgY29tcHV0ZUJvcmRlckFuZFBhZGRpbmcoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25z
dCBCb3gmKSBjb25zdDsKKyAgICB2b2lkIGNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nKGNvbnN0IEJv
eCYpIGNvbnN0OwogCi0gICAgdm9pZCBwbGFjZUluRmxvd1Bvc2l0aW9uZWRDaGlsZHJlbihjb25z
dCBMYXlvdXRTdGF0ZSYsIGNvbnN0IENvbnRhaW5lciYpIGNvbnN0OworICAgIHZvaWQgcGxhY2VJ
bkZsb3dQb3NpdGlvbmVkQ2hpbGRyZW4oY29uc3QgQ29udGFpbmVyJikgY29uc3Q7CiAKICNpZm5k
ZWYgTkRFQlVHCi0gICAgdmlydHVhbCB2b2lkIHZhbGlkYXRlR2VvbWV0cnlDb25zdHJhaW50c0Fm
dGVyTGF5b3V0KGNvbnN0IExheW91dFN0YXRlJikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHZh
bGlkYXRlR2VvbWV0cnlDb25zdHJhaW50c0FmdGVyTGF5b3V0KCkgY29uc3Q7CiAjZW5kaWYKIAog
ICAgIC8vIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBnZW5lcmljIHBvc2l0aW9uaW5nIGFuZCBzaXpp
bmcuCkBAIC0xMjMsOCArMTIzLDggQEAgcHJvdGVjdGVkOgogICAgIH07CiAKIHByaXZhdGU6Ci0g
ICAgdm9pZCBjb21wdXRlT3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeShjb25zdCBMYXlvdXRTdGF0
ZSYsIGNvbnN0IEJveCYpIGNvbnN0OwotICAgIHZvaWQgY29tcHV0ZU91dE9mRmxvd0hvcml6b250
YWxHZW9tZXRyeShMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpIGNvbnN0OworICAgIHZvaWQgY29t
cHV0ZU91dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkoY29uc3QgQm94JikgY29uc3Q7CisgICAgdm9p
ZCBjb21wdXRlT3V0T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0IEJveCYpIGNvbnN0Owog
CiAgICAgV2Vha1B0cjxjb25zdCBCb3g+IG1fcm9vdDsKICAgICBGb3JtYXR0aW5nU3RhdGUmIG1f
Zm9ybWF0dGluZ1N0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1h
dHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRp
bmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IGMyN2YyYTI2MTYyLi40Y2Y3ZGJkOWU1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5
LmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjpzaHJpbmtUb0ZpdFdpZHRoKExheW91dFN0YXRlJiBsYXlvdXRTdGF0CiAKICAgICAv
LyBUaGVuIHRoZSBzaHJpbmstdG8tZml0IHdpZHRoIGlzOiBtaW4obWF4KHByZWZlcnJlZCBtaW5p
bXVtIHdpZHRoLCBhdmFpbGFibGUgd2lkdGgpLCBwcmVmZXJyZWQgd2lkdGgpLgogICAgIGF1dG8g
YXZhaWxhYmxlV2lkdGggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlv
dXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLndpZHRoKCk7Ci0gICAgYXV0byBpbnN0cmluc2ljV2lk
dGhDb25zdHJhaW50cyA9IGZvcm1hdHRpbmdDb250ZXh0Lmluc3RyaW5zaWNXaWR0aENvbnN0cmFp
bnRzKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOworICAgIGF1dG8gaW5zdHJpbnNpY1dpZHRoQ29u
c3RyYWludHMgPSBmb3JtYXR0aW5nQ29udGV4dC5pbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyhs
YXlvdXRCb3gpOwogICAgIHJldHVybiBzdGQ6Om1pbihzdGQ6Om1heChpbnN0cmluc2ljV2lkdGhD
b25zdHJhaW50cy5taW5pbXVtLCBhdmFpbGFibGVXaWR0aCksIGluc3RyaW5zaWNXaWR0aENvbnN0
cmFpbnRzLm1heGltdW0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
TGF5b3V0Rm9ybWF0dGluZ1N0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRG
b3JtYXR0aW5nU3RhdGUuY3BwCmluZGV4IGQ3Y2E0OGExMTlkLi44YjRjOTM2ZDY2OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dEZvcm1hdHRpbmdTdGF0ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dEZvcm1hdHRpbmdTdGF0ZS5jcHAKQEAgLTgz
LDggKzgzLDggQEAgdm9pZCBMYXlvdXRTdGF0ZTo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRTdWJ0
cmVlKGNvbnN0IEJveCYgbGF5b3V0Um9vdCkKICAgICBSRUxFQVNFX0FTU0VSVChsYXlvdXRSb290
LmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAgICAgYXV0byYgZm9ybWF0dGluZ1N0
YXRlID0gY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChsYXlv
dXRSb290KTsKICAgICBhdXRvIGZvcm1hdHRpbmdDb250ZXh0ID0gZm9ybWF0dGluZ1N0YXRlLmZv
cm1hdHRpbmdDb250ZXh0KGxheW91dFJvb3QpOwotICAgIGZvcm1hdHRpbmdDb250ZXh0LT5sYXlv
dXQoKnRoaXMsIGZvcm1hdHRpbmdTdGF0ZSk7Ci0gICAgZm9ybWF0dGluZ0NvbnRleHQtPmxheW91
dE91dE9mRmxvd0Rlc2NlbmRhbnRzKCp0aGlzLCBsYXlvdXRSb290KTsKKyAgICBmb3JtYXR0aW5n
Q29udGV4dC0+bGF5b3V0KCk7CisgICAgZm9ybWF0dGluZ0NvbnRleHQtPmxheW91dE91dE9mRmxv
d0Rlc2NlbmRhbnRzKGxheW91dFJvb3QpOwogfQogCiBEaXNwbGF5OjpCb3gmIExheW91dFN0YXRl
OjpkaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcv
QmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggOGNjMWVkZTNmYzUuLjNhNGY3OTFkZWI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zv
cm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dChjb25zdCBCb3gmIGZv
cm1hdHRpbmdDb250ZXh0Um9vdCwKIHsKIH0KIAotdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
OjpsYXlvdXQoTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBGb3JtYXR0aW5nU3RhdGUmIGZvcm1h
dHRpbmdTdGF0ZSkgY29uc3QKK3ZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0KCkg
Y29uc3QKIHsKICAgICAvLyA5LjQuMSBCbG9jayBmb3JtYXR0aW5nIGNvbnRleHRzCiAgICAgLy8g
SW4gYSBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQsIGJveGVzIGFyZSBsYWlkIG91dCBvbmUgYWZ0
ZXIgdGhlIG90aGVyLCB2ZXJ0aWNhbGx5LCBiZWdpbm5pbmcgYXQgdGhlIHRvcCBvZiBhIGNvbnRh
aW5pbmcgYmxvY2suCkBAIC01OCwxMSArNTgsMTEgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpsYXlvdXQoTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBGb3JtYXR0aW5nU3RhdGUmIGYK
ICAgICBpZiAoIWlzPENvbnRhaW5lcj4ocm9vdCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
TE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltTdGFy
dF0gLT4gYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IC0+IGxheW91dCBjb250ZXh0KCIgPDwgJmxh
eW91dFN0YXRlIDw8ICIpIGZvcm1hdHRpbmcgcm9vdCgiIDw8ICZyb290KCkgPDwgIikiKTsKKyAg
ICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1N0
YXJ0XSAtPiBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgLT4gZm9ybWF0dGluZyByb290KCIgPDwg
JnJvb3QoKSA8PCAiKSIpOwogCiAgICAgYXV0byYgZm9ybWF0dGluZ1Jvb3QgPSBkb3duY2FzdDxD
b250YWluZXI+KHJvb3QoKSk7CiAgICAgTGF5b3V0UXVldWUgbGF5b3V0UXVldWU7Ci0gICAgRmxv
YXRpbmdDb250ZXh0IGZsb2F0aW5nQ29udGV4dChmb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0
ZSgpKTsKKyAgICBGbG9hdGluZ0NvbnRleHQgZmxvYXRpbmdDb250ZXh0KGZvcm1hdHRpbmdTdGF0
ZSgpLmZsb2F0aW5nU3RhdGUoKSk7CiAgICAgLy8gVGhpcyBpcyBhIHBvc3Qtb3JkZXIgdHJlZSB0
cmF2ZXJzYWwgbGF5b3V0LgogICAgIC8vIFRoZSByb290IGNvbnRhaW5lciBsYXlvdXQgaXMgZG9u
ZSBpbiB0aGUgZm9ybWF0dGluZyBjb250ZXh0IGl0IGxpdmVzIGluLCBub3QgdGhhdCBvbmUgaXQg
Y3JlYXRlcywgc28gbGV0J3Mgc3RhcnQgd2l0aCB0aGUgZmlyc3QgY2hpbGQuCiAgICAgaWYgKGF1
dG8qIGZpcnN0Q2hpbGQgPSBmb3JtYXR0aW5nUm9vdC5maXJzdEluRmxvd09yRmxvYXRpbmdDaGls
ZCgpKQpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91
dChMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIEZvcm1hdHRpbmdTdGF0ZSYgZgogICAgICAgICAg
ICAgYXV0byYgbGF5b3V0Qm94ID0gKmxheW91dFF1ZXVlLmxhc3QoKTsKIAogICAgICAgICAgICAg
aWYgKGxheW91dEJveC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpIHsKLSAgICAgICAg
ICAgICAgICBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJvb3QobGF5b3V0U3RhdGUsIGZsb2F0aW5n
Q29udGV4dCwgZm9ybWF0dGluZ1N0YXRlLCBsYXlvdXRCb3gpOworICAgICAgICAgICAgICAgIGxh
eW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdChmbG9hdGluZ0NvbnRleHQsIGxheW91dEJveCk7CiAg
ICAgICAgICAgICAgICAgbGF5b3V0UXVldWUucmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAgICAg
IC8vIFNpbmNlIHRoaXMgYm94IGlzIGEgZm9ybWF0dGluZyBjb250ZXh0IHJvb3QsIGl0IHRha2Vz
IGNhcmUgb2YgaXRzIGVudGlyZSBzdWJ0cmVlLgogICAgICAgICAgICAgICAgIC8vIENvbnRpbnVl
IHdpdGggbmV4dCBzaWJsaW5nIGlmIGV4aXN0cy4KQEAgLTg4LDkgKzg4LDkgQEAgdm9pZCBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBGb3Jt
YXR0aW5nU3RhdGUmIGYKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgTE9HX1dJVEhfU1RS
RUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltDb21wdXRlXSAtPiBbUG9z
aXRpb25dW0JvcmRlcl1bUGFkZGluZ11bV2lkdGhdW01hcmdpbl0gLT4gZm9yIGxheW91dEJveCgi
IDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKLSAgICAgICAgICAgIGNvbXB1dGVTdGF0aWNQb3NpdGlv
bihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKLSAgICAgICAgICAgIGNvbXB1dGVCb3JkZXJBbmRQ
YWRkaW5nKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwotICAgICAgICAgICAgY29tcHV0ZVdpZHRo
QW5kTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOworICAgICAgICAgICAgY29tcHV0ZVN0
YXRpY1Bvc2l0aW9uKGxheW91dEJveCk7CisgICAgICAgICAgICBjb21wdXRlQm9yZGVyQW5kUGFk
ZGluZyhsYXlvdXRCb3gpOworICAgICAgICAgICAgY29tcHV0ZVdpZHRoQW5kTWFyZ2luKGxheW91
dEJveCk7CiAgICAgICAgICAgICBpZiAoIWlzPENvbnRhaW5lcj4obGF5b3V0Qm94KSB8fCAhZG93
bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgpKQog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgbGF5b3V0UXVldWUuYXBwZW5kKGRv
d25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5maXJzdEluRmxvd09yRmxvYXRpbmdDaGlsZCgp
KTsKQEAgLTEwNCwxNSArMTA0LDE1IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5
b3V0KExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgRm9ybWF0dGluZ1N0YXRlJiBmCiAgICAgICAg
ICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAi
W0NvbXB1dGVdIC0+IFtIZWlnaHRdW01hcmdpbl0gLT4gZm9yIGxheW91dEJveCgiIDw8ICZsYXlv
dXRCb3ggPDwgIikiKTsKICAgICAgICAgICAgIC8vIEZvcm1hdHRpbmcgcm9vdCBib3hlcyBhcmUg
c3BlY2lhbC1jYXNlZCBhbmQgdGhleSBkb24ndCBjb21lIGhlcmUuCiAgICAgICAgICAgICBBU1NF
UlQoIWxheW91dEJveC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpOwotICAgICAgICAg
ICAgY29tcHV0ZUhlaWdodEFuZE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAgICAg
ICAgICAgIGNvbXB1dGVIZWlnaHRBbmRNYXJnaW4obGF5b3V0Qm94KTsKICAgICAgICAgICAgIC8v
IEZpbmFsaXplIHBvc2l0aW9uIHdpdGggY2xlYXJhbmNlLgogICAgICAgICAgICAgaWYgKGxheW91
dEJveC5oYXNGbG9hdENsZWFyKCkpCi0gICAgICAgICAgICAgICAgY29tcHV0ZVZlcnRpY2FsUG9z
aXRpb25Gb3JGbG9hdENsZWFyKGxheW91dFN0YXRlLCBmbG9hdGluZ0NvbnRleHQsIGxheW91dEJv
eCk7CisgICAgICAgICAgICAgICAgY29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JGbG9hdENsZWFy
KGZsb2F0aW5nQ29udGV4dCwgbGF5b3V0Qm94KTsKICAgICAgICAgICAgIGlmICghaXM8Q29udGFp
bmVyPihsYXlvdXRCb3gpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
YXV0byYgY29udGFpbmVyID0gZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpOwogICAgICAg
ICAgICAgLy8gTW92ZSBpbi1mbG93IHBvc2l0aW9uZWQgY2hpbGRyZW4gdG8gdGhlaXIgZmluYWwg
cG9zaXRpb24uCi0gICAgICAgICAgICBwbGFjZUluRmxvd1Bvc2l0aW9uZWRDaGlsZHJlbihsYXlv
dXRTdGF0ZSwgY29udGFpbmVyKTsKKyAgICAgICAgICAgIHBsYWNlSW5GbG93UG9zaXRpb25lZENo
aWxkcmVuKGNvbnRhaW5lcik7CiAgICAgICAgICAgICBpZiAoYXV0byogbmV4dFNpYmxpbmcgPSBj
b250YWluZXIubmV4dEluRmxvd09yRmxvYXRpbmdTaWJsaW5nKCkpIHsKICAgICAgICAgICAgICAg
ICBsYXlvdXRRdWV1ZS5hcHBlbmQobmV4dFNpYmxpbmcpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMTIwLDQ4ICsxMjAsNDkgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlv
dXQoTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBGb3JtYXR0aW5nU3RhdGUmIGYKICAgICAgICAg
fQogICAgIH0KICAgICAvLyBQbGFjZSB0aGUgaW5mbG93IHBvc2l0aW9uZWQgY2hpbGRyZW4uCi0g
ICAgcGxhY2VJbkZsb3dQb3NpdGlvbmVkQ2hpbGRyZW4obGF5b3V0U3RhdGUsIGZvcm1hdHRpbmdS
b290KTsKLSAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVh
bSA8PCAiW0VuZF0gLT4gYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IC0+IGxheW91dCBjb250ZXh0
KCIgPDwgJmxheW91dFN0YXRlIDw8ICIpIGZvcm1hdHRpbmcgcm9vdCgiIDw8ICZyb290KCkgPDwg
IikiKTsKKyAgICBwbGFjZUluRmxvd1Bvc2l0aW9uZWRDaGlsZHJlbihmb3JtYXR0aW5nUm9vdCk7
CisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwg
IltFbmRdIC0+IGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCAtPiBmb3JtYXR0aW5nIHJvb3QoIiA8
PCAmcm9vdCgpIDw8ICIpIik7CiB9CiAKLXZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5
b3V0Rm9ybWF0dGluZ0NvbnRleHRSb290KExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgRmxvYXRp
bmdDb250ZXh0JiBmbG9hdGluZ0NvbnRleHQsIEZvcm1hdHRpbmdTdGF0ZSYsIGNvbnN0IEJveCYg
bGF5b3V0Qm94KSBjb25zdAordm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRGb3Jt
YXR0aW5nQ29udGV4dFJvb3QoRmxvYXRpbmdDb250ZXh0JiBmbG9hdGluZ0NvbnRleHQsIGNvbnN0
IEJveCYgbGF5b3V0Qm94KSBjb25zdAogewogICAgIC8vIFN0YXJ0IGxheWluZyBvdXQgdGhpcyBm
b3JtYXR0aW5nIHJvb3QgaW4gdGhlIGZvcm1hdHRpbmcgY29udGVueHQgaXQgbGl2ZXMgaW4uCiAg
ICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltD
b21wdXRlXSAtPiBbUG9zaXRpb25dW0JvcmRlcl1bUGFkZGluZ11bV2lkdGhdW01hcmdpbl0gLT4g
Zm9yIGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKLSAgICBjb21wdXRlU3RhdGlj
UG9zaXRpb24obGF5b3V0U3RhdGUsIGxheW91dEJveCk7Ci0gICAgY29tcHV0ZUJvcmRlckFuZFBh
ZGRpbmcobGF5b3V0U3RhdGUsIGxheW91dEJveCk7Ci0gICAgY29tcHV0ZVdpZHRoQW5kTWFyZ2lu
KGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOworICAgIGNvbXB1dGVTdGF0aWNQb3NpdGlvbihsYXlv
dXRCb3gpOworICAgIGNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nKGxheW91dEJveCk7CisgICAgY29t
cHV0ZVdpZHRoQW5kTWFyZ2luKGxheW91dEJveCk7CiAKLSAgICBwcmVjb21wdXRlVmVydGljYWxQ
b3NpdGlvbkZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQobGF5b3V0U3RhdGUsIGxheW91dEJveCk7
CisgICAgcHJlY29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVk
KGxheW91dEJveCk7CiAgICAgLy8gU3dpY2ggb3ZlciB0byB0aGUgbmV3IGZvcm1hdHRpbmcgY29u
dGV4dCAodGhlIG9uZSB0aGF0IHRoZSByb290IGNyZWF0ZXMpLgotICAgIGF1dG8mIGZvcm1hdHRp
bmdTdGF0ZSA9IGxheW91dFN0YXRlLmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdS
b290SWZOZWVkZWQobGF5b3V0Qm94KTsKLSAgICBhdXRvIGZvcm1hdHRpbmdDb250ZXh0ID0gZm9y
bWF0dGluZ1N0YXRlLmZvcm1hdHRpbmdDb250ZXh0KGxheW91dEJveCk7Ci0gICAgZm9ybWF0dGlu
Z0NvbnRleHQtPmxheW91dChsYXlvdXRTdGF0ZSwgZm9ybWF0dGluZ1N0YXRlKTsKKyAgICBhdXRv
IGZvcm1hdHRpbmdDb250ZXh0ID0gbGF5b3V0U3RhdGUoKS5jcmVhdGVGb3JtYXR0aW5nU3RhdGVG
b3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGxheW91dEJveCkuZm9ybWF0dGluZ0NvbnRleHQobGF5
b3V0Qm94KTsKKyAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0KCk7CiAKICAgICAvLyBDb21l
IGJhY2sgYW5kIGZpbmFsaXplIHRoZSByb290J3MgZ2VvbWV0cnkuCiAgICAgTE9HX1dJVEhfU1RS
RUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltDb21wdXRlXSAtPiBbSGVp
Z2h0XVtNYXJnaW5dIC0+IGZvciBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7Ci0g
ICAgY29tcHV0ZUhlaWdodEFuZE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAgICBj
b21wdXRlSGVpZ2h0QW5kTWFyZ2luKGxheW91dEJveCk7CiAKICAgICAvLyBGbG9hdCByZWxhdGVk
IGZpbmFsIHBvc2l0aW9uaW5nLgogICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9u
ZWQoKSkgewotICAgICAgICBjb21wdXRlRmxvYXRpbmdQb3NpdGlvbihsYXlvdXRTdGF0ZSwgZmxv
YXRpbmdDb250ZXh0LCBsYXlvdXRCb3gpOworICAgICAgICBjb21wdXRlRmxvYXRpbmdQb3NpdGlv
bihmbG9hdGluZ0NvbnRleHQsIGxheW91dEJveCk7CiAgICAgICAgIGZsb2F0aW5nQ29udGV4dC5m
bG9hdGluZ1N0YXRlKCkuYXBwZW5kKGxheW91dEJveCk7CiAgICAgfSBlbHNlIGlmIChsYXlvdXRC
b3guaGFzRmxvYXRDbGVhcigpKQotICAgICAgICBjb21wdXRlVmVydGljYWxQb3NpdGlvbkZvckZs
b2F0Q2xlYXIobGF5b3V0U3RhdGUsIGZsb2F0aW5nQ29udGV4dCwgbGF5b3V0Qm94KTsKKyAgICAg
ICAgY29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JGbG9hdENsZWFyKGZsb2F0aW5nQ29udGV4dCwg
bGF5b3V0Qm94KTsKICAgICBlbHNlIGlmIChsYXlvdXRCb3guZXN0YWJsaXNoZXNCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0KCkpCi0gICAgICAgIGNvbXB1dGVQb3NpdGlvblRvQXZvaWRGbG9hdHMobGF5
b3V0U3RhdGUsIGZsb2F0aW5nQ29udGV4dCwgbGF5b3V0Qm94KTsKKyAgICAgICAgY29tcHV0ZVBv
c2l0aW9uVG9Bdm9pZEZsb2F0cyhmbG9hdGluZ0NvbnRleHQsIGxheW91dEJveCk7CiAKICAgICAv
LyBOb3cgdGhhdCB3ZSBjb21wdXRlZCB0aGUgcm9vdCdzIGhlaWdodCwgd2UgY2FuIGdvIGJhY2sg
YW5kIGxheW91dCB0aGUgb3V0LW9mLWZsb3cgZGVzY2VkYW50cyAoaWYgYW55KS4KLSAgICBmb3Jt
YXR0aW5nQ29udGV4dC0+bGF5b3V0T3V0T2ZGbG93RGVzY2VuZGFudHMobGF5b3V0U3RhdGUsIGxh
eW91dEJveCk7CisgICAgZm9ybWF0dGluZ0NvbnRleHQtPmxheW91dE91dE9mRmxvd0Rlc2NlbmRh
bnRzKGxheW91dEJveCk7CiB9CiAKLXZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0
ZVN0YXRpY1Bvc2l0aW9uKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94
JiBsYXlvdXRCb3gpIGNvbnN0Cit2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVT
dGF0aWNQb3NpdGlvbihjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKIHsKKyAgICBhdXRvJiBs
YXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7CiAgICAgbGF5b3V0U3RhdGUuZGlzcGxh
eUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLnNldFRvcExlZnQoR2VvbWV0cnk6OnN0YXRpY1Bv
c2l0aW9uKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKTsKIH0KIAotdm9pZCBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkTWFyZ2luVG9wKGNvbnN0IExheW91dFN0YXRlJiBs
YXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0Cit2b2lkIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5Ub3AoY29uc3QgQm94JiBsYXlvdXRC
b3gpIGNvbnN0CiB7CisgICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgp
OwogICAgIGF1dG8gZXN0aW1hdGVkTWFyZ2luVG9wID0gR2VvbWV0cnk6OmVzdGltYXRlZE1hcmdp
blRvcChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKIAogICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBs
YXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CkBAIC0xNjksNyAr
MTcwLDcgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkTWFy
Z2luVG9wKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXQKICAgICBkaXNwbGF5Qm94Lm1vdmVWZXJ0
aWNhbGx5KGVzdGltYXRlZE1hcmdpblRvcCk7CiB9CiAKLXZvaWQgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6Y29tcHV0ZUVzdGltYXRlZE1hcmdpblRvcEZvckFuY2VzdG9ycyhjb25zdCBMYXlvdXRT
dGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAordm9pZCBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkTWFyZ2luVG9wRm9yQW5jZXN0b3Jz
KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogewogICAgIC8vIFdlIG9ubHkgbmVlZCB0byBl
c3RpbWF0ZSBtYXJnaW4gdG9wIGZvciBmbG9hdCByZWxhdGVkIGxheW91dCAoZm9ybWF0dGluZyBj
b250ZXh0IHJvb3RzIGF2b2lkIGZsb2F0cykuCiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Zsb2F0
aW5nUG9zaXRpb25lZCgpIHx8IGxheW91dEJveC5oYXNGbG9hdENsZWFyKCkgfHwgbGF5b3V0Qm94
LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpIHx8IGxheW91dEJveC5lc3RhYmxp
c2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpOwpAQCAtMTgzLDYgKzE4NCw3IEBAIHZvaWQg
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUVzdGltYXRlZE1hcmdpblRvcEZvckFuY2Vz
dG9ycyhjb25zdCBMYXlvdXRTCiAgICAgLy8gU28gd2hlbiB3ZSBnZXQgdG8gdGhlIHBvaW50IHdo
ZXJlIHdlIGludGVyc2VjdCB0aGUgYm94IHdpdGggdGhlIGZsb2F0IHRvIGRlY2lkZSBpZiB0aGUg
Ym94IG5lZWRzIHRvIG1vdmUsIHdlIGRvbid0IHlldCBoYXZlIHRoZSBmaW5hbCB2ZXJ0aWNhbCBw
b3NpdGlvbi4KICAgICAvLwogICAgIC8vIFRoZSBpZGVhIGhlcmUgaXMgdGhhdCBhcyBsb25nIGFz
IHdlIGRvbid0IGNyb3NzIHRoZSBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgYm91bmRhcnksIHdl
IHNob3VsZCBiZSBhYmxlIHRvIHByZS1jb21wdXRlIHRoZSBmaW5hbCB0b3AgbWFyZ2luLgorICAg
IGF1dG8mIGxheW91dFN0YXRlID0gdGhpcy0+bGF5b3V0U3RhdGUoKTsKIAogICAgIGZvciAoYXV0
byogYW5jZXN0b3IgPSBsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCk7IGFuY2VzdG9yICYmICFh
bmNlc3Rvci0+ZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCk7IGFuY2VzdG9yID0g
YW5jZXN0b3ItPmNvbnRhaW5pbmdCbG9jaygpKSB7CiAgICAgICAgIGF1dG8mIGRpc3BsYXlCb3gg
PSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCphbmNlc3Rvcik7CkBAIC0xOTAs
MjQgKzE5MiwyNCBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3RpbWF0
ZWRNYXJnaW5Ub3BGb3JBbmNlc3RvcnMoY29uc3QgTGF5b3V0UwogICAgICAgICBpZiAoZGlzcGxh
eUJveC5lc3RpbWF0ZWRNYXJnaW5Ub3AoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBjb21wdXRlRXN0aW1hdGVkTWFyZ2luVG9wKGxheW91dFN0YXRlLCAqYW5jZXN0b3IpOworICAg
ICAgICBjb21wdXRlRXN0aW1hdGVkTWFyZ2luVG9wKCphbmNlc3Rvcik7CiAgICAgfQogfQogCi12
b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnByZWNvbXB1dGVWZXJ0aWNhbFBvc2l0aW9uRm9y
Rm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNv
bnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAordm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpw
cmVjb21wdXRlVmVydGljYWxQb3NpdGlvbkZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoY29uc3Qg
Qm94JiBsYXlvdXRCb3gpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5lc3RhYmxpc2hl
c0Zvcm1hdHRpbmdDb250ZXh0KCkpOwogCiAgICAgYXV0byBhdm9pZHNGbG9hdHMgPSBsYXlvdXRC
b3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guZXN0YWJsaXNoZXNCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0KCkgfHwgbGF5b3V0Qm94Lmhhc0Zsb2F0Q2xlYXIoKTsKICAgICBpZiAo
YXZvaWRzRmxvYXRzKQotICAgICAgICBjb21wdXRlRXN0aW1hdGVkTWFyZ2luVG9wRm9yQW5jZXN0
b3JzKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOworICAgICAgICBjb21wdXRlRXN0aW1hdGVkTWFy
Z2luVG9wRm9yQW5jZXN0b3JzKGxheW91dEJveCk7CiAKICAgICAvLyBJZiB0aGUgaW5saW5lIGZv
cm1hdHRpbmcgcm9vdCBpcyBhbHNvIHRoZSByb290IGZvciB0aGUgZmxvYXRzIChoYXBwZW5zIHdo
ZW4gdGhlIHJvb3QgYm94IGFsc28gZXN0YWJsaXNoZXMgYSBibG9jayBmb3JtYXR0aW5nIGNvbnRl
eHQpCiAgICAgLy8gdGhlIGZsb2F0cyBhcmUgaW4gdGhlIGNvb3JkaW5hdGUgc3lzdGVtIG9mIHRo
aXMgcm9vdC4gTm8gbmVlZCB0byBmaW5kIHRoZSBmaW5hbCB2ZXJ0aWNhbCBwb3NpdGlvbi4KICAg
ICBhdXRvIGlubGluZUNvbnRleHRJbmhlcml0c0Zsb2F0cyA9IGxheW91dEJveC5lc3RhYmxpc2hl
c0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkgJiYgIWxheW91dEJveC5lc3RhYmxpc2hlc0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQoKTsKICAgICBpZiAoaW5saW5lQ29udGV4dEluaGVyaXRzRmxvYXRz
KSB7Ci0gICAgICAgIGNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5Ub3AobGF5b3V0U3RhdGUsIGxheW91
dEJveCk7Ci0gICAgICAgIGNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5Ub3BGb3JBbmNlc3RvcnMobGF5
b3V0U3RhdGUsIGxheW91dEJveCk7CisgICAgICAgIGNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5Ub3Ao
bGF5b3V0Qm94KTsKKyAgICAgICAgY29tcHV0ZUVzdGltYXRlZE1hcmdpblRvcEZvckFuY2VzdG9y
cyhsYXlvdXRCb3gpOwogICAgIH0KIH0KIApAQCAtMjIzLDggKzIyNSw5IEBAIHN0YXRpYyBib29s
IGhhc1ByZWNvbXB1dGVkTWFyZ2luVG9wKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwg
Y29uc3QgQm94JiBsCiB9CiAjZW5kaWYKIAotdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpj
b21wdXRlRmxvYXRpbmdQb3NpdGlvbihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNv
bnN0IEZsb2F0aW5nQ29udGV4dCYgZmxvYXRpbmdDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJv
eCkgY29uc3QKK3ZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUZsb2F0aW5nUG9z
aXRpb24oY29uc3QgRmxvYXRpbmdDb250ZXh0JiBmbG9hdGluZ0NvbnRleHQsIGNvbnN0IEJveCYg
bGF5b3V0Qm94KSBjb25zdAogeworICAgIGF1dG8mIGxheW91dFN0YXRlID0gdGhpcy0+bGF5b3V0
U3RhdGUoKTsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpOwog
ICAgIEFTU0VSVChoYXNQcmVjb21wdXRlZE1hcmdpblRvcChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94
KSk7CiAKQEAgLTIzOSw4ICsyNDIsOSBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNv
bXB1dGVGbG9hdGluZ1Bvc2l0aW9uKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdAogICAgIGRp
c3BsYXlCb3guc2V0VG9wTGVmdChmbG9hdGluZ0NvbnRleHQucG9zaXRpb25Gb3JGbG9hdChsYXlv
dXRCb3gpKTsKIH0KIAotdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlUG9zaXRp
b25Ub0F2b2lkRmxvYXRzKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgRmxv
YXRpbmdDb250ZXh0JiBmbG9hdGluZ0NvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25z
dAordm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlUG9zaXRpb25Ub0F2b2lkRmxv
YXRzKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYgZmxvYXRpbmdDb250ZXh0LCBjb25zdCBCb3gmIGxh
eW91dEJveCkgY29uc3QKIHsKKyAgICBhdXRvJiBsYXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0
YXRlKCk7CiAgICAgLy8gRm9ybWF0dGluZyBjb250ZXh0IHJvb3RzIGF2b2lkIGZsb2F0cy4KICAg
ICBBU1NFUlQobGF5b3V0Qm94LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpKTsK
ICAgICBBU1NFUlQoIWxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKTsKQEAgLTI1NCwy
OCArMjU4LDMyIEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVBvc2l0aW9u
VG9Bdm9pZEZsb2F0cyhjb25zdCBMYXlvdXRTdGF0ZSYgbGF5CiAgICAgICAgIGxheW91dFN0YXRl
LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KS5zZXRUb3BMZWZ0KCphZGp1c3RlZFBv
c2l0aW9uKTsKIH0KIAotdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlVmVydGlj
YWxQb3NpdGlvbkZvckZsb2F0Q2xlYXIoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBj
b25zdCBGbG9hdGluZ0NvbnRleHQmIGZsb2F0aW5nQ29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRC
b3gpIGNvbnN0Cit2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVWZXJ0aWNhbFBv
c2l0aW9uRm9yRmxvYXRDbGVhcihjb25zdCBGbG9hdGluZ0NvbnRleHQmIGZsb2F0aW5nQ29udGV4
dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5o
YXNGbG9hdENsZWFyKCkpOwogICAgIGlmIChmbG9hdGluZ0NvbnRleHQuZmxvYXRpbmdTdGF0ZSgp
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0
aGlzLT5sYXlvdXRTdGF0ZSgpOwogICAgIC8vIEZvciBmb3JtYXR0aW5nIHJvb3RzLCB3ZSBhbHJl
YWR5IHByZWNvbXB1dGVkIGZpbmFsIHBvc2l0aW9uLgogICAgIGlmICghbGF5b3V0Qm94LmVzdGFi
bGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSkKLSAgICAgICAgY29tcHV0ZUVzdGltYXRlZE1hcmdp
blRvcEZvckFuY2VzdG9ycyhsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAgICAgICAgY29tcHV0
ZUVzdGltYXRlZE1hcmdpblRvcEZvckFuY2VzdG9ycyhsYXlvdXRCb3gpOwogICAgIEFTU0VSVCho
YXNQcmVjb21wdXRlZE1hcmdpblRvcChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSk7CiAKICAgICBp
ZiAoYXV0byB2ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFyYW5jZSA9IGZsb2F0aW5nQ29udGV4dC52
ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFyYW5jZShsYXlvdXRCb3gpKQogICAgICAgICBsYXlvdXRT
dGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCkuc2V0VG9wKCp2ZXJ0aWNhbFBv
c2l0aW9uV2l0aENsZWFyYW5jZSk7CiB9CiAKLXZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZUluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0
U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAordm9pZCBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0Ojpjb21wdXRlSW5GbG93UG9zaXRpb25lZFBvc2l0aW9uKGNvbnN0IEJveCYgbGF5b3V0
Qm94KSBjb25zdAogeworICAgIGF1dG8mIGxheW91dFN0YXRlID0gdGhpcy0+bGF5b3V0U3RhdGUo
KTsKICAgICBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCkuc2V0
VG9wTGVmdChHZW9tZXRyeTo6aW5GbG93UG9zaXRpb25lZFBvc2l0aW9uKGxheW91dFN0YXRlLCBs
YXlvdXRCb3gpKTsKIH0KIAotdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lk
dGhBbmRNYXJnaW4oTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJv
eCkgY29uc3QKK3ZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFy
Z2luKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogeworICAgIGF1dG8mIGxheW91dFN0YXRl
ID0gdGhpcy0+bGF5b3V0U3RhdGUoKTsKKwogICAgIGF1dG8gY29tcHV0ZSA9IFsmXShzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IHVzZWRXaWR0aCkgLT4gV2lkdGhBbmRNYXJnaW4gewogCiAgICAg
ICAgIGlmIChsYXlvdXRCb3guaXNJbkZsb3coKSkKQEAgLTMxMCw4ICszMTgsMTAgQEAgdm9pZCBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4oTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlLCBjb24KICAgICBkaXNwbGF5Qm94LnNldEhvcml6b250YWxOb25Db21wdXRl
ZE1hcmdpbih3aWR0aEFuZE1hcmdpbi5ub25Db21wdXRlZE1hcmdpbik7CiB9CiAKLXZvaWQgQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbihjb25zdCBMYXlvdXRT
dGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAordm9pZCBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5
b3V0Qm94KSBjb25zdAogeworICAgIGF1dG8mIGxheW91dFN0YXRlID0gdGhpcy0+bGF5b3V0U3Rh
dGUoKTsKKwogICAgIGF1dG8gY29tcHV0ZSA9IFsmXShzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+
IHVzZWRIZWlnaHQpIC0+IEhlaWdodEFuZE1hcmdpbiB7CiAKICAgICAgICAgaWYgKGxheW91dEJv
eC5pc0luRmxvdygpKQpAQCAtMzQ3LDggKzM1Nyw5IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3Rh
CiAgICAgICAgIGRpc3BsYXlCb3gubW92ZVZlcnRpY2FsbHkoaGVpZ2h0QW5kTWFyZ2luLmNvbGxh
cHNlZE1hcmdpbi52YWx1ZV9vcihoZWlnaHRBbmRNYXJnaW4ubWFyZ2luKS50b3ApOwogfQogCi1G
b3JtYXR0aW5nQ29udGV4dDo6SW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMgQmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6aW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMoTGF5b3V0U3RhdGUmIGxheW91
dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKK0Zvcm1hdHRpbmdDb250ZXh0OjpJ
bnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjppbnN0cmlu
c2ljV2lkdGhDb25zdHJhaW50cyhjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKIHsKKyAgICBh
dXRvJiBsYXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7CiAgICAgYXV0byYgZm9ybWF0
dGluZ1N0YXRlID0gbGF5b3V0U3RhdGUuZm9ybWF0dGluZ1N0YXRlRm9yQm94KGxheW91dEJveCk7
CiAgICAgQVNTRVJUKGZvcm1hdHRpbmdTdGF0ZS5pc0Jsb2NrRm9ybWF0dGluZ1N0YXRlKCkpOwog
ICAgIGlmIChhdXRvIGluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzID0gZm9ybWF0dGluZ1N0YXRl
Lmluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzKGxheW91dEJveCkpCkBAIC0zODMsNyArMzk0LDcg
QEAgRm9ybWF0dGluZ0NvbnRleHQ6Okluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6Omluc3RyaW5zaWMKICAgICAgICAgICAgICAgICBpbnN0cmluc2ljV2lk
dGhDb25zdHJhaW50cyA9IEdlb21ldHJ5OjppbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyhsYXlv
dXRTdGF0ZSwgY2hpbGRCb3gpOwogICAgICAgICAgICAgLy8gSXMgaXQgYSBmb3JtYXR0aW5nIGNv
bnRleHQgcm9vdD8KICAgICAgICAgICAgIGlmICghaW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMg
JiYgY2hpbGRCb3guZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKQotICAgICAgICAgICAg
ICAgIGluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzID0gZm9ybWF0dGluZ1N0YXRlRm9yQ2hpbGRy
ZW4uZm9ybWF0dGluZ0NvbnRleHQoY2hpbGRCb3gpLT5pbnN0cmluc2ljV2lkdGhDb25zdHJhaW50
cyhsYXlvdXRTdGF0ZSwgY2hpbGRCb3gpOworICAgICAgICAgICAgICAgIGluc3RyaW5zaWNXaWR0
aENvbnN0cmFpbnRzID0gZm9ybWF0dGluZ1N0YXRlRm9yQ2hpbGRyZW4uZm9ybWF0dGluZ0NvbnRl
eHQoY2hpbGRCb3gpLT5pbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyhjaGlsZEJveCk7CiAgICAg
ICAgICAgICAvLyBHbyB0byB0aGUgbmV4dCBzaWJsaW5nIChhbmQgc2tpcCB0aGUgZGVzY2VuZGFu
dHMpIGlmIHRoaXMgYm94J3MgbWluL21heCB3aWR0aCBpcyBjb21wdXRlZC4KICAgICAgICAgICAg
IGlmIChpbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cykgewogICAgICAgICAgICAgICAgIGZvcm1h
dHRpbmdTdGF0ZUZvckNoaWxkcmVuLnNldEluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzKGNoaWxk
Qm94LCAqaW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMpOyAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250
ZXh0LmgKaW5kZXggOGMwNDI2YTljMjAuLmM3NjdiYTRlOTcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQuaApAQCAtNDcsMjYgKzQ3LDI2IEBAIGNsYXNzIEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQgOiBwdWJsaWMgRm9ybWF0dGluZ0NvbnRleHQgewogcHVibGljOgogICAgIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQoY29uc3QgQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIEZvcm1hdHRpbmdT
dGF0ZSYgZm9ybWF0dGluZ1N0YXRlKTsKIAotICAgIHZvaWQgbGF5b3V0KExheW91dFN0YXRlJiwg
Rm9ybWF0dGluZ1N0YXRlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBsYXlvdXQoKSBjb25z
dCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGxheW91dEZvcm1hdHRpbmdDb250ZXh0
Um9vdChMYXlvdXRTdGF0ZSYsIEZsb2F0aW5nQ29udGV4dCYsIEZvcm1hdHRpbmdTdGF0ZSYsIGNv
bnN0IEJveCYpIGNvbnN0OworICAgIHZvaWQgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRSb290KEZs
b2F0aW5nQ29udGV4dCYsIGNvbnN0IEJveCYpIGNvbnN0OwogCi0gICAgdm9pZCBjb21wdXRlV2lk
dGhBbmRNYXJnaW4oTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKSBjb25zdDsKLSAgICB2b2lkIGNv
bXB1dGVIZWlnaHRBbmRNYXJnaW4oY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKSBjb25z
dDsKKyAgICB2b2lkIGNvbXB1dGVXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmKSBjb25zdDsKKyAg
ICB2b2lkIGNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JikgY29uc3Q7CiAKLSAgICB2
b2lkIGNvbXB1dGVTdGF0aWNQb3NpdGlvbihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHV0ZUZsb2F0aW5nUG9zaXRpb24oY29uc3Qg
TGF5b3V0U3RhdGUmLCBjb25zdCBGbG9hdGluZ0NvbnRleHQmLCBjb25zdCBCb3gmKSBjb25zdDsK
LSAgICB2b2lkIGNvbXB1dGVQb3NpdGlvblRvQXZvaWRGbG9hdHMoY29uc3QgTGF5b3V0U3RhdGUm
LCBjb25zdCBGbG9hdGluZ0NvbnRleHQmLCBjb25zdCBCb3gmKSBjb25zdDsKLSAgICB2b2lkIGNv
bXB1dGVWZXJ0aWNhbFBvc2l0aW9uRm9yRmxvYXRDbGVhcihjb25zdCBMYXlvdXRTdGF0ZSYsIGNv
bnN0IEZsb2F0aW5nQ29udGV4dCYsIGNvbnN0IEJveCYpIGNvbnN0OworICAgIHZvaWQgY29tcHV0
ZVN0YXRpY1Bvc2l0aW9uKGNvbnN0IEJveCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgY29t
cHV0ZUZsb2F0aW5nUG9zaXRpb24oY29uc3QgRmxvYXRpbmdDb250ZXh0JiwgY29uc3QgQm94Jikg
Y29uc3Q7CisgICAgdm9pZCBjb21wdXRlUG9zaXRpb25Ub0F2b2lkRmxvYXRzKGNvbnN0IEZsb2F0
aW5nQ29udGV4dCYsIGNvbnN0IEJveCYpIGNvbnN0OworICAgIHZvaWQgY29tcHV0ZVZlcnRpY2Fs
UG9zaXRpb25Gb3JGbG9hdENsZWFyKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYsIGNvbnN0IEJveCYp
IGNvbnN0OwogCi0gICAgdm9pZCBjb21wdXRlSW5GbG93UG9zaXRpb25lZFBvc2l0aW9uKGNvbnN0
IExheW91dFN0YXRlJiwgY29uc3QgQm94JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21w
dXRlRXN0aW1hdGVkTWFyZ2luVG9wRm9yQW5jZXN0b3JzKGNvbnN0IExheW91dFN0YXRlJiwgY29u
c3QgQm94JikgY29uc3Q7Ci0gICAgdm9pZCBjb21wdXRlRXN0aW1hdGVkTWFyZ2luVG9wKGNvbnN0
IExheW91dFN0YXRlJiwgY29uc3QgQm94JikgY29uc3Q7CisgICAgdm9pZCBjb21wdXRlSW5GbG93
UG9zaXRpb25lZFBvc2l0aW9uKGNvbnN0IEJveCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQg
Y29tcHV0ZUVzdGltYXRlZE1hcmdpblRvcEZvckFuY2VzdG9ycyhjb25zdCBCb3gmKSBjb25zdDsK
KyAgICB2b2lkIGNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5Ub3AoY29uc3QgQm94JikgY29uc3Q7CiAK
LSAgICB2b2lkIHByZWNvbXB1dGVWZXJ0aWNhbFBvc2l0aW9uRm9yRm9ybWF0dGluZ1Jvb3RJZk5l
ZWRlZChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpIGNvbnN0OworICAgIHZvaWQgcHJl
Y29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGNvbnN0IEJv
eCYpIGNvbnN0OwogCi0gICAgSW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMgaW5zdHJpbnNpY1dp
ZHRoQ29uc3RyYWludHMoTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKSBjb25zdCBvdmVycmlkZTsK
KyAgICBJbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyBpbnN0cmluc2ljV2lkdGhDb25zdHJhaW50
cyhjb25zdCBCb3gmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIFRoaXMgY2xhc3MgaW1wbGVt
ZW50cyBwb3NpdGlvbmluZyBhbmQgc2l6aW5nIGZvciBib3hlcyBwYXJ0aWNpcGF0aW5nIGluIGEg
YmxvY2sgZm9ybWF0dGluZyBjb250ZXh0LgogICAgIGNsYXNzIEdlb21ldHJ5IDogcHVibGljIEZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4
dC5jcHAKaW5kZXggN2JjMGVlZGE1MWMuLmVkMDJjMzY3MzIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQuY3BwCkBAIC01MSwxNCArNTEsMTQgQEAgSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IEJveCYgZm9ybWF0dGluZ0NvbnRl
eHRSb28KIHsKIH0KIAotdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0KExheW91
dFN0YXRlJiBsYXlvdXRTdGF0ZSwgRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUpIGNv
bnN0Cit2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoKSBjb25zdAogewogICAg
IGlmICghaXM8Q29udGFpbmVyPihyb290KCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMT0df
V0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1N0YXJ0XSAt
PiBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0IC0+IGxheW91dCBjb250ZXh0KCIgPDwgJmxheW91
dFN0YXRlIDw8ICIpIGZvcm1hdHRpbmcgcm9vdCgiIDw8ICZyb290KCkgPDwgIikiKTsKKyAgICBM
T0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1N0YXJ0
XSAtPiBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0IC0+IGZvcm1hdHRpbmcgcm9vdCgiIDw8ICZy
b290KCkgPDwgIikiKTsKIAotICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IGRvd25j
YXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oZm9ybWF0dGluZ1N0YXRlKTsKKyAgICBhdXRvJiBp
bmxpbmVGb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGZv
cm1hdHRpbmdTdGF0ZSgpKTsKICAgICBJbmxpbmVSdW5Qcm92aWRlciBpbmxpbmVSdW5Qcm92aWRl
cihpbmxpbmVGb3JtYXR0aW5nU3RhdGUpOwogICAgIGF1dG8mIGZvcm1hdHRpbmdSb290ID0gZG93
bmNhc3Q8Q29udGFpbmVyPihyb290KCkpOwogICAgIGF1dG8qIGxheW91dEJveCA9IGZvcm1hdHRp
bmdSb290LmZpcnN0SW5GbG93T3JGbG9hdGluZ0NoaWxkKCk7CkBAIC02Niw3ICs2Niw3IEBAIHZv
aWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dChMYXlvdXRTdGF0ZSYgbGF5b3V0U3Rh
dGUsIEZvcm1hdHRpbmdTdGF0ZSYKICAgICB3aGlsZSAobGF5b3V0Qm94KSB7CiAKICAgICAgICAg
aWYgKGxheW91dEJveC0+ZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKSB7Ci0gICAgICAg
ICAgICBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJvb3QobGF5b3V0U3RhdGUsICpsYXlvdXRCb3gp
OworICAgICAgICAgICAgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRSb290KCpsYXlvdXRCb3gpOwog
ICAgICAgICAgICAgLy8gRm9ybWF0dGluZyBjb250ZXh0IHJvb3RzIHRha2UgY2FyZSBvZiB0aGVp
ciBlbnRpcmUgc3VidHJlZS4gQ29udGludWUgd2l0aCBuZXh0IHNpYmxpbmcuCiAgICAgICAgICAg
ICBpbmxpbmVSdW5Qcm92aWRlci5hcHBlbmQoKmxheW91dEJveCk7CiAgICAgICAgICAgICBsYXlv
dXRCb3ggPSBsYXlvdXRCb3gtPm5leHRJbkZsb3dPckZsb2F0aW5nU2libGluZygpOwpAQCAtODAs
NyArODAsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoTGF5b3V0U3Rh
dGUmIGxheW91dFN0YXRlLCBGb3JtYXR0aW5nU3RhdGUmCiAgICAgICAgIH0KIAogICAgICAgICBp
bmxpbmVSdW5Qcm92aWRlci5hcHBlbmQoKmxheW91dEJveCk7Ci0gICAgICAgIGNvbXB1dGVXaWR0
aEFuZEhlaWdodEZvcklubGluZUJveChsYXlvdXRTdGF0ZSwgKmxheW91dEJveCk7CisgICAgICAg
IGNvbXB1dGVXaWR0aEFuZEhlaWdodEZvcklubGluZUJveCgqbGF5b3V0Qm94KTsKIAogICAgICAg
ICBmb3IgKDsgbGF5b3V0Qm94OyBsYXlvdXRCb3ggPSBsYXlvdXRCb3gtPnBhcmVudCgpKSB7CiAg
ICAgICAgICAgICBpZiAobGF5b3V0Qm94ID09ICZmb3JtYXR0aW5nUm9vdCkgewpAQCAtOTUsOSAr
OTUsOSBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlLCBGb3JtYXR0aW5nU3RhdGUmCiAgICAgICAgIEFTU0VSVCghbGF5b3V0Qm94
IHx8IGxheW91dEJveC0+aXNEZXNjZW5kYW50T2YoZm9ybWF0dGluZ1Jvb3QpKTsKICAgICB9CiAK
LSAgICBsYXlvdXRJbmxpbmVDb250ZW50KGxheW91dFN0YXRlLCBpbmxpbmVGb3JtYXR0aW5nU3Rh
dGUsIGlubGluZVJ1blByb3ZpZGVyKTsKKyAgICBsYXlvdXRJbmxpbmVDb250ZW50KGlubGluZVJ1
blByb3ZpZGVyKTsKIAotICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91
dCwgc3RyZWFtIDw8ICJbRW5kXSAtPiBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0IC0+IGxheW91
dCBjb250ZXh0KCIgPDwgJmxheW91dFN0YXRlIDw8ICIpIGZvcm1hdHRpbmcgcm9vdCgiIDw8ICZy
b290KCkgPDwgIikiKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlv
dXQsIHN0cmVhbSA8PCAiW0VuZF0gLT4gaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dCAtPiBmb3Jt
YXR0aW5nIHJvb3QoIiA8PCAmcm9vdCgpIDw8ICIpIik7CiB9CiAKIHN0YXRpYyBib29sIGlzVHJp
bW1hYmxlQ29udGVudChjb25zdCBJbmxpbmVMaW5lQnJlYWtlcjo6UnVuJiBydW4pCkBAIC0xMDUs
MTcgKzEwNSwxNyBAQCBzdGF0aWMgYm9vbCBpc1RyaW1tYWJsZUNvbnRlbnQoY29uc3QgSW5saW5l
TGluZUJyZWFrZXI6OlJ1biYgcnVuKQogICAgIHJldHVybiBydW4uY29udGVudC5pc1doaXRlc3Bh
Y2UoKSAmJiBydW4uY29udGVudC5zdHlsZSgpLmNvbGxhcHNlV2hpdGVTcGFjZSgpOwogfQogCi12
b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojppbml0aWFsaXplTmV3TGluZShjb25zdCBMYXlv
dXRTdGF0ZSYgbGF5b3V0U3RhdGUsIElubGluZUZvcm1hdHRpbmdTdGF0ZSYgaW5saW5lRm9ybWF0
dGluZ1N0YXRlLCBMaW5lJiBsaW5lKSBjb25zdAordm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6aW5pdGlhbGl6ZU5ld0xpbmUoTGluZSYgbGluZSkgY29uc3QKIHsKICAgICBhdXRvJiBmb3Jt
YXR0aW5nUm9vdCA9IGRvd25jYXN0PENvbnRhaW5lcj4ocm9vdCgpKTsKLSAgICBhdXRvJiBmb3Jt
YXR0aW5nUm9vdERpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94
KGZvcm1hdHRpbmdSb290KTsKKyAgICBhdXRvJiBmb3JtYXR0aW5nUm9vdERpc3BsYXlCb3ggPSBs
YXlvdXRTdGF0ZSgpLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goZm9ybWF0dGluZ1Jvb3QpOwogCiAg
ICAgYXV0byBsaW5lTG9naWNhbExlZnQgPSBmb3JtYXR0aW5nUm9vdERpc3BsYXlCb3guY29udGVu
dEJveExlZnQoKTsKICAgICBhdXRvIGxpbmVMb2dpY2FsVG9wID0gbGluZS5pc0ZpcnN0TGluZSgp
ID8gZm9ybWF0dGluZ1Jvb3REaXNwbGF5Qm94LmNvbnRlbnRCb3hUb3AoKSA6IGxpbmUubG9naWNh
bEJvdHRvbSgpOwogICAgIGF1dG8gYXZhaWxhYmxlV2lkdGggPSBmb3JtYXR0aW5nUm9vdERpc3Bs
YXlCb3guY29udGVudEJveFdpZHRoKCk7CiAKICAgICAvLyBDaGVjayBmb3IgaW50cnVkaW5nIGZs
b2F0cyBhbmQgYWRqdXN0IGxvZ2ljYWwgbGVmdC9hdmFpbGFibGUgd2lkdGggZm9yIHRoaXMgbGlu
ZSBhY2NvcmRpbmdseS4KLSAgICBhdXRvJiBmbG9hdGluZ1N0YXRlID0gaW5saW5lRm9ybWF0dGlu
Z1N0YXRlLmZsb2F0aW5nU3RhdGUoKTsKKyAgICBhdXRvJiBmbG9hdGluZ1N0YXRlID0gZm9ybWF0
dGluZ1N0YXRlKCkuZmxvYXRpbmdTdGF0ZSgpOwogICAgIGlmICghZmxvYXRpbmdTdGF0ZS5pc0Vt
cHR5KCkpIHsKICAgICAgICAgYXV0byBmbG9hdENvbnN0cmFpbnRzID0gZmxvYXRpbmdTdGF0ZS5j
b25zdHJhaW50cyhsaW5lTG9naWNhbFRvcCwgZm9ybWF0dGluZ1Jvb3QpOwogICAgICAgICAvLyBD
aGVjayBpZiB0aGVzZSBjb25zdHJhaW50cyBhY3R1YWxseSBwdXQgbGltaXRhdGlvbiBvbiB0aGUg
bGluZS4KQEAgLTE0OCwxMiArMTQ4LDE0IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmluaXRpYWxpemVOZXdMaW5lKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwKICAgICBs
aW5lLmluaXQobG9naWNhbFJlY3QpOwogfQogCi12b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0
OjpsYXlvdXRJbmxpbmVDb250ZW50KGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgSW5s
aW5lRm9ybWF0dGluZ1N0YXRlJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUsIGNvbnN0IElubGluZVJ1
blByb3ZpZGVyJiBpbmxpbmVSdW5Qcm92aWRlcikgY29uc3QKK3ZvaWQgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmxheW91dElubGluZUNvbnRlbnQoY29uc3QgSW5saW5lUnVuUHJvdmlkZXImIGlu
bGluZVJ1blByb3ZpZGVyKSBjb25zdAogeworICAgIGF1dG8mIGxheW91dFN0YXRlID0gdGhpcy0+
bGF5b3V0U3RhdGUoKTsKKyAgICBhdXRvJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUgPSBkb3duY2Fz
dDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGZvcm1hdHRpbmdTdGF0ZSgpKTsKICAgICBhdXRvIGZs
b2F0aW5nQ29udGV4dCA9IEZsb2F0aW5nQ29udGV4dCB7IGlubGluZUZvcm1hdHRpbmdTdGF0ZS5m
bG9hdGluZ1N0YXRlKCkgfTsKIAogICAgIExpbmUgbGluZShpbmxpbmVGb3JtYXR0aW5nU3RhdGUs
IHJvb3QoKSk7Ci0gICAgaW5pdGlhbGl6ZU5ld0xpbmUobGF5b3V0U3RhdGUsIGlubGluZUZvcm1h
dHRpbmdTdGF0ZSwgbGluZSk7CisgICAgaW5pdGlhbGl6ZU5ld0xpbmUobGluZSk7CiAKICAgICBJ
bmxpbmVMaW5lQnJlYWtlciBsaW5lQnJlYWtlcihsYXlvdXRTdGF0ZSwgaW5saW5lRm9ybWF0dGlu
Z1N0YXRlLmlubGluZUNvbnRlbnQoKSwgaW5saW5lUnVuUHJvdmlkZXIucnVucygpKTsKICAgICB3
aGlsZSAoYXV0byBydW4gPSBsaW5lQnJlYWtlci5uZXh0UnVuKGxpbmUuY29udGVudExvZ2ljYWxS
aWdodCgpLCBsaW5lLmF2YWlsYWJsZVdpZHRoKCksICFsaW5lLmhhc0NvbnRlbnQoKSkpIHsKQEAg
LTE2NCw3ICsxNjYsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbmxp
bmVDb250ZW50KGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZQogICAgICAgICAvLyBQb3Np
dGlvbiBmbG9hdCBhbmQgYWRqdXN0IHRoZSBydW5zIG9uIGxpbmUuCiAgICAgICAgIGlmIChydW4t
PmNvbnRlbnQuaXNGbG9hdCgpKSB7CiAgICAgICAgICAgICBhdXRvJiBmbG9hdEJveCA9IHJ1bi0+
Y29udGVudC5pbmxpbmVJdGVtKCkubGF5b3V0Qm94KCk7Ci0gICAgICAgICAgICBjb21wdXRlRmxv
YXRQb3NpdGlvbihsYXlvdXRTdGF0ZSwgZmxvYXRpbmdDb250ZXh0LCBsaW5lLCBmbG9hdEJveCk7
CisgICAgICAgICAgICBjb21wdXRlRmxvYXRQb3NpdGlvbihmbG9hdGluZ0NvbnRleHQsIGxpbmUs
IGZsb2F0Qm94KTsKICAgICAgICAgICAgIGlubGluZUZvcm1hdHRpbmdTdGF0ZS5mbG9hdGluZ1N0
YXRlKCkuYXBwZW5kKGZsb2F0Qm94KTsKIAogICAgICAgICAgICAgYXV0byBmbG9hdEJveFdpZHRo
ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChmbG9hdEJveCkud2lkdGgoKTsK
QEAgLTE4OCw3ICsxOTAsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJ
bmxpbmVDb250ZW50KGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZQogICAgICAgICAgICAg
ICAgIC8vIFByZXZpb3VzIHJ1biBlbmRlZCB1cCBiZWluZyBhdCB0aGUgbGluZSBlbmQuIEFkanVz
dCB0aGUgbGluZSBhY2NvcmRpbmdseS4KICAgICAgICAgICAgICAgICBpZiAoIWxpbmUuaXNDbG9z
ZWQoKSkKICAgICAgICAgICAgICAgICAgICAgbGluZS5jbG9zZShMaW5lOjpMYXN0TGluZTo6Tm8p
OwotICAgICAgICAgICAgICAgIGluaXRpYWxpemVOZXdMaW5lKGxheW91dFN0YXRlLCBpbmxpbmVG
b3JtYXR0aW5nU3RhdGUsIGxpbmUpOworICAgICAgICAgICAgICAgIGluaXRpYWxpemVOZXdMaW5l
KGxpbmUpOwogICAgICAgICAgICAgfQogICAgICAgICAgfQogCkBAIC0yMDIsOCArMjA0LDEwIEBA
IHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dElubGluZUNvbnRlbnQoY29uc3Qg
TGF5b3V0U3RhdGUmIGxheW91dFN0YXRlCiAgICAgbGluZS5jbG9zZShMaW5lOjpMYXN0TGluZTo6
WWVzKTsKIH0KIAotdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0Rm9ybWF0dGlu
Z0NvbnRleHRSb290KExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRC
b3gpIGNvbnN0Cit2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRGb3JtYXR0aW5n
Q29udGV4dFJvb3QoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiB7CisgICAgYXV0byYgbGF5
b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOworCiAgICAgQVNTRVJUKGxheW91dEJveC5p
c0Zsb2F0aW5nUG9zaXRpb25lZCgpIHx8IGxheW91dEJveC5pc0lubGluZUJsb2NrQm94KCkpOwog
ICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94
KGxheW91dEJveCk7CiAKQEAgLTIzNywxOCArMjQxLDE3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdChMYXlvdXRTdGF0ZSYgbGF5b3V0
U3RhCiAgICAgICAgIGRpc3BsYXlCb3guc2V0VmVydGljYWxNYXJnaW4oaGVpZ2h0QW5kTWFyZ2lu
LmNvbGxhcHNlZE1hcmdpbi52YWx1ZV9vcihoZWlnaHRBbmRNYXJnaW4ubWFyZ2luKSk7CiAgICAg
fTsKIAotICAgIGNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nKGxheW91dFN0YXRlLCBsYXlvdXRCb3gp
OworICAgIGNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nKGxheW91dEJveCk7CiAgICAgY29tcHV0ZVdp
ZHRoQW5kTWFyZ2luKCk7CiAKICAgICAvLyBTd2ljaCBvdmVyIHRvIHRoZSBuZXcgZm9ybWF0dGlu
ZyBjb250ZXh0ICh0aGUgb25lIHRoYXQgdGhlIHJvb3QgY3JlYXRlcykuCi0gICAgYXV0byYgZm9y
bWF0dGluZ1N0YXRlID0gbGF5b3V0U3RhdGUuY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0
dGluZ1Jvb3RJZk5lZWRlZChsYXlvdXRCb3gpOwotICAgIGZvcm1hdHRpbmdTdGF0ZS5mb3JtYXR0
aW5nQ29udGV4dChsYXlvdXRCb3gpLT5sYXlvdXQobGF5b3V0U3RhdGUsIGZvcm1hdHRpbmdTdGF0
ZSk7CisgICAgbGF5b3V0U3RhdGUuY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jv
b3RJZk5lZWRlZChsYXlvdXRCb3gpLmZvcm1hdHRpbmdDb250ZXh0KGxheW91dEJveCktPmxheW91
dCgpOwogCiAgICAgLy8gQ29tZSBiYWNrIGFuZCBmaW5hbGl6ZSB0aGUgcm9vdCdzIGhlaWdodCBh
bmQgbWFyZ2luLgogICAgIGNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oKTsKIH0KIAotdm9pZCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kSGVpZ2h0Rm9ySW5saW5lQm94KExh
eW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0Cit2b2lk
IElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRIZWlnaHRGb3JJbmxpbmVC
b3goY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFsYXlvdXRCb3gu
aXNDb250YWluZXIoKSk7CiAgICAgQVNTRVJUKCFsYXlvdXRCb3guZXN0YWJsaXNoZXNGb3JtYXR0
aW5nQ29udGV4dCgpKTsKQEAgLTI1OSw5ICsyNjIsMTAgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kSGVpZ2h0Rm9ySW5saW5lQm94KExheW91dFN0YXRlJiBs
YXkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGF1dG8mIGxheW91dFN0YXRlID0gdGhp
cy0+bGF5b3V0U3RhdGUoKTsKICAgICAvLyBUaGlzIGlzIHByZXR0eSBtdWNoIG9ubHkgZm9yIHJl
cGxhY2VkIGlubGluZSBib3hlcyBhdG0uCiAgICAgQVNTRVJUKGxheW91dEJveC5yZXBsYWNlZCgp
KTsKLSAgICBjb21wdXRlQm9yZGVyQW5kUGFkZGluZyhsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsK
KyAgICBjb21wdXRlQm9yZGVyQW5kUGFkZGluZyhsYXlvdXRCb3gpOwogCiAgICAgYXV0byB3aWR0
aEFuZE1hcmdpbiA9IEdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91
dFN0YXRlLCBsYXlvdXRCb3gpOwogICAgIGF1dG8gaGVpZ2h0QW5kTWFyZ2luID0gR2VvbWV0cnk6
OmlubGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwpA
QCAtMjc2LDggKzI4MCw5IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVX
aWR0aEFuZEhlaWdodEZvcklubGluZUJveChMYXlvdXRTdGF0ZSYgbGF5CiAgICAgZGlzcGxheUJv
eC5zZXRWZXJ0aWNhbE1hcmdpbihoZWlnaHRBbmRNYXJnaW4uY29sbGFwc2VkTWFyZ2luLnZhbHVl
X29yKGhlaWdodEFuZE1hcmdpbi5tYXJnaW4pKTsKIH0KIAotdm9pZCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6Y29tcHV0ZUZsb2F0UG9zaXRpb24oY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0
YXRlLCBjb25zdCBGbG9hdGluZ0NvbnRleHQmIGZsb2F0aW5nQ29udGV4dCwgTGluZSYgbGluZSwg
Y29uc3QgQm94JiBmbG9hdEJveCkgY29uc3QKK3ZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbXB1dGVGbG9hdFBvc2l0aW9uKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYgZmxvYXRpbmdDb250
ZXh0LCBMaW5lJiBsaW5lLCBjb25zdCBCb3gmIGZsb2F0Qm94KSBjb25zdAogeworICAgIGF1dG8m
IGxheW91dFN0YXRlID0gdGhpcy0+bGF5b3V0U3RhdGUoKTsKICAgICBBU1NFUlQobGF5b3V0U3Rh
dGUuaGFzRGlzcGxheUJveChmbG9hdEJveCkpOwogICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlv
dXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGZsb2F0Qm94KTsKIApAQCAtMjg3LDE1ICsy
OTIsMTUgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUZsb2F0UG9zaXRp
b24oY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXQKICAgICBkaXNwbGF5Qm94LnNldFRvcExl
ZnQoZmxvYXRpbmdDb250ZXh0LnBvc2l0aW9uRm9yRmxvYXQoZmxvYXRCb3gpKTsKIH0KIAotdm9p
ZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVN0YXRpY1Bvc2l0aW9uKGNvbnN0IExh
eW91dFN0YXRlJiwgY29uc3QgQm94JikgY29uc3QKK3ZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQ6OmNvbXB1dGVTdGF0aWNQb3NpdGlvbihjb25zdCBCb3gmKSBjb25zdAogewogfQogCi12b2lk
IElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSW5GbG93UG9zaXRpb25lZFBvc2l0aW9u
KGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94JikgY29uc3QKK3ZvaWQgSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQ6OmNvbXB1dGVJbkZsb3dQb3NpdGlvbmVkUG9zaXRpb24oY29uc3QgQm94Jikg
Y29uc3QKIHsKIH0KIAotRm9ybWF0dGluZ0NvbnRleHQ6Okluc3RyaW5zaWNXaWR0aENvbnN0cmFp
bnRzIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjppbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyhM
YXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpIGNvbnN0CitGb3JtYXR0aW5nQ29udGV4dDo6SW5zdHJp
bnNpY1dpZHRoQ29uc3RyYWludHMgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Omluc3RyaW5zaWNX
aWR0aENvbnN0cmFpbnRzKGNvbnN0IEJveCYpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHsgfTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDE4NGRkMjRjMTgxLi42ZDhjOGM2
ZWQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC00NSw3ICs0NSw3IEBA
IGNsYXNzIElubGluZUZvcm1hdHRpbmdDb250ZXh0IDogcHVibGljIEZvcm1hdHRpbmdDb250ZXh0
IHsKIHB1YmxpYzoKICAgICBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBCb3gmIGZvcm1h
dHRpbmdDb250ZXh0Um9vdCwgRm9ybWF0dGluZ1N0YXRlJik7CiAKLSAgICB2b2lkIGxheW91dChM
YXlvdXRTdGF0ZSYsIEZvcm1hdHRpbmdTdGF0ZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQg
bGF5b3V0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgY2xhc3MgTGluZSB7CkBA
IC0xMDIsMTYgKzEwMiwxNiBAQCBwcml2YXRlOgogICAgICAgICBzdGF0aWMgV2lkdGhBbmRNYXJn
aW4gaW5saW5lQmxvY2tXaWR0aEFuZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJv
eCYpOwogICAgIH07CiAKLSAgICB2b2lkIGxheW91dElubGluZUNvbnRlbnQoY29uc3QgTGF5b3V0
U3RhdGUmLCBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmLCBjb25zdCBJbmxpbmVSdW5Qcm92aWRlciYp
IGNvbnN0OwotICAgIHZvaWQgaW5pdGlhbGl6ZU5ld0xpbmUoY29uc3QgTGF5b3V0U3RhdGUmLCBJ
bmxpbmVGb3JtYXR0aW5nU3RhdGUmLCBMaW5lJikgY29uc3Q7CisgICAgdm9pZCBsYXlvdXRJbmxp
bmVDb250ZW50KGNvbnN0IElubGluZVJ1blByb3ZpZGVyJikgY29uc3Q7CisgICAgdm9pZCBpbml0
aWFsaXplTmV3TGluZShMaW5lJikgY29uc3Q7CiAKLSAgICB2b2lkIGxheW91dEZvcm1hdHRpbmdD
b250ZXh0Um9vdChMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpIGNvbnN0OwotICAgIHZvaWQgY29t
cHV0ZVdpZHRoQW5kSGVpZ2h0Rm9ySW5saW5lQm94KExheW91dFN0YXRlJiwgY29uc3QgQm94Jikg
Y29uc3Q7Ci0gICAgdm9pZCBjb21wdXRlRmxvYXRQb3NpdGlvbihjb25zdCBMYXlvdXRTdGF0ZSYs
IGNvbnN0IEZsb2F0aW5nQ29udGV4dCYsIExpbmUmLCBjb25zdCBCb3gmKSBjb25zdDsKLSAgICB2
b2lkIGNvbXB1dGVTdGF0aWNQb3NpdGlvbihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHV0ZUluRmxvd1Bvc2l0aW9uZWRQb3NpdGlv
bihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZv
aWQgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRSb290KGNvbnN0IEJveCYpIGNvbnN0OworICAgIHZv
aWQgY29tcHV0ZVdpZHRoQW5kSGVpZ2h0Rm9ySW5saW5lQm94KGNvbnN0IEJveCYpIGNvbnN0Owor
ICAgIHZvaWQgY29tcHV0ZUZsb2F0UG9zaXRpb24oY29uc3QgRmxvYXRpbmdDb250ZXh0JiwgTGlu
ZSYsIGNvbnN0IEJveCYpIGNvbnN0OworICAgIHZvaWQgY29tcHV0ZVN0YXRpY1Bvc2l0aW9uKGNv
bnN0IEJveCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgY29tcHV0ZUluRmxvd1Bvc2l0aW9u
ZWRQb3NpdGlvbihjb25zdCBCb3gmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIEluc3RyaW5zaWNX
aWR0aENvbnN0cmFpbnRzIGluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzKExheW91dFN0YXRlJiwg
Y29uc3QgQm94JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW5zdHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMgaW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMoY29uc3QgQm94JikgY29uc3Qgb3ZlcnJpZGU7
CiB9OwogCiB9Cg==
</data>
<flag name="review"
          id="370682"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>