<?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>189331</bug_id>
          
          <creation_ts>2018-09-05 18:18:56 -0700</creation_ts>
          <short_desc>[LFC] Pass in const LayoutContext&amp; to geometry methods when possible</short_desc>
          <delta_ts>2018-09-05 18:43:23 -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>1456954</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-09-05 18:18:56 -0700</bug_when>
    <thetext>instead of non-cost LayoutContext&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456956</commentid>
    <comment_count>1</comment_count>
      <attachid>348991</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-09-05 18:22:36 -0700</bug_when>
    <thetext>Created attachment 348991
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456959</commentid>
    <comment_count>2</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-09-05 18:42:16 -0700</bug_when>
    <thetext>Committed r235716: &lt;https://trac.webkit.org/changeset/235716&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456960</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-05 18:43:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/44164257&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348991</attachid>
            <date>2018-09-05 18:22:36 -0700</date>
            <delta_ts>2018-09-05 18:38:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189331-20180905182231.patch</filename>
            <type>text/plain</type>
            <size>39773</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWI0YjhlN2Q3N2JiNmFm
YWEzNjA4MjlmODUyODRhYzhjNDAxM2IyNi4uYTQ2ODA3YTkyOWE0MzRlOGFhMDgzZDg4MmY1ZWMz
YzE3YTcxMmJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDE4LTA5LTA1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gUGFzcyBpbiBjb25z
dCBMYXlvdXRDb250ZXh0JiB0byBnZW9tZXRyeSBtZXRob2RzIHdoZW4gcG9zc2libGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTMzMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE9ubHkgbGF5b3V0IGFu
ZCBsYXlvdXQtbGlrZSBtZXRob2RzIChpbnRyaW5zaWMgd2lkdGggY29tcHV0YXRpb24gLT4gc2hy
aW5rIHRvIGZpdCAtPiBvdXQtb2YtZmxvdy9mbG9hdGluZyBib3hlcykgc2hvdWxkIHRha2UgYSAK
KyAgICAgICAgbm9uLWNvbnN0IExheW91dENvbnRleHQmLiBPdGhlciBnZW9tZXRyeSBmdW5jdGlv
bnMgc2hvdWxkIG5vdCBtdXRhdGUgdGhlIHRoZSBjb250ZXh0LgorCisgICAgICAgICogbGF5b3V0
L0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0
dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVCb3JkZXJB
bmRQYWRkaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0Nv
bnRleHQ6OnBsYWNlSW5GbG93UG9zaXRpb25lZENoaWxkcmVuIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dE91dE9mRmxvd0Rlc2NlbmRh
bnRzIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVS
ZXBsYWNlZFdpZHRoQW5kTWFyZ2luKToKKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OmNvbnRlbnRIZWlnaHRG
b3JGb3JtYXR0aW5nQ29udGV4dFJvb3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9t
ZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNl
ZEhvcml6b250YWxHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcGxpY2F0ZWRDYXNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZEhl
aWdodEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dW
ZXJ0aWNhbEdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ0hlaWdodEFuZE1hcmdpbik6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRI
ZWlnaHRBbmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkQm9y
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5Ojpjb21wdXRlZFBhZGRpbmcpOgorICAgICAgICAqIGxheW91dC9MYXlvdXRDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0Q29udGV4dDo6bGF5b3V0Rm9ybWF0
dGluZ0NvbnRleHRTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0Q29u
dGV4dDo6ZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpMYXlvdXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0
aW5nUm9vdElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0Q29udGV4
dDo6Zm9ybWF0dGluZ0NvbnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpM
YXlvdXRDb250ZXh0Ojplc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dENvbnRleHQ6OmZvcm1hdHRpbmdDb250ZXh0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvTGF5b3V0Q29udGV4dC5oOgorICAgICAgICAqIGxh
eW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEZvcm1hdHRp
bmdDb250ZXh0Um9vdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3RpbWF0ZWRN
YXJnaW5Ub3AgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkTWFyZ2luVG9wRm9yQW5jZXN0b3JzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0
ZUZsb2F0aW5nUG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlUG9zaXRpb25Ub0F2b2lkRmxvYXRzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0
ZVZlcnRpY2FsUG9zaXRpb25Gb3JGbG9hdENsZWFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUluRmxvd1Bvc2l0aW9uZWRQ
b3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjppbnN0cmluc2ljV2lkdGhDb25zdHJh
aW50cyBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zv
cm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRIZWlnaHRB
bmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbik6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZs
b3dSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnN0YXRpY1Bvc2l0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxv
d1Bvc2l0aW9uZWRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dIZWlnaHRBbmRNYXJnaW4pOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5G
bG93V2lkdGhBbmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMpOgorICAg
ICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNv
bXB1dGVTdGF0aWNQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Oklu
bGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSW5GbG93UG9zaXRpb25lZFBvc2l0aW9uIGNv
bnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5oOgorCiAyMDE4LTA5LTA1ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW0xGQ10gQ29uc3RydWN0IHRoZSBEaXNwbGF5OjpCb3ggb2JqZWN0cyBvbiBk
ZW1hbmQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRl
eCAxYWI2ZjcxMjg4NDRkMzFhMzFkYWE2NzA3NjMzYmY5Y2Y1OTgzYzE4Li4zMmMyZDA2ZTEzYzQ5
NjkzMjJlZTAyNWE1ZDk5YzQ4OTI0YjU3MTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9G
b3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBGb3JtYXR0aW5nQ29u
dGV4dDo6Y29tcHV0ZU91dE9mRmxvd0hvcml6b250YWxHZW9tZXRyeShMYXlvdXRDb250ZXh0JiBs
YXlvdXQKICAgICBkaXNwbGF5Qm94LnNldEhvcml6b250YWxOb25Db21wdXRlZE1hcmdpbihob3Jp
em9udGFsR2VvbWV0cnkud2lkdGhBbmRNYXJnaW4ubm9uQ29tcHV0ZWRNYXJnaW4pOwogfQogCi12
b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeShM
YXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QK
K3ZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5
KGNvbnN0IExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94
KSBjb25zdAogewogICAgIGF1dG8gdmVydGljYWxHZW9tZXRyeSA9IEdlb21ldHJ5OjpvdXRPZkZs
b3dWZXJ0aWNhbEdlb21ldHJ5KGxheW91dENvbnRleHQsIGxheW91dEJveCk7CiAKQEAgLTc0LDE0
ICs3NCwxNCBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93VmVydGlj
YWxHZW9tZXRyeShMYXlvdXRDb250ZXh0JiBsYXlvdXRDbwogICAgIGRpc3BsYXlCb3guc2V0VmVy
dGljYWxOb25Db2xsYXBzZWRNYXJnaW4odmVydGljYWxHZW9tZXRyeS5oZWlnaHRBbmRNYXJnaW4u
bWFyZ2luKTsKIH0KIAotdm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUJvcmRlckFuZFBh
ZGRpbmcoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gp
IGNvbnN0Cit2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlQm9yZGVyQW5kUGFkZGluZyhj
b25zdCBMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkg
Y29uc3QKIHsKICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94
Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiAgICAgZGlzcGxheUJveC5zZXRCb3JkZXIoR2VvbWV0
cnk6OmNvbXB1dGVkQm9yZGVyKGxheW91dENvbnRleHQsIGxheW91dEJveCkpOwogICAgIGRpc3Bs
YXlCb3guc2V0UGFkZGluZyhHZW9tZXRyeTo6Y29tcHV0ZWRQYWRkaW5nKGxheW91dENvbnRleHQs
IGxheW91dEJveCkpOwogfQogCi12b2lkIEZvcm1hdHRpbmdDb250ZXh0OjpwbGFjZUluRmxvd1Bv
c2l0aW9uZWRDaGlsZHJlbihMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBDb250
YWluZXImIGNvbnRhaW5lcikgY29uc3QKK3ZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OnBsYWNlSW5G
bG93UG9zaXRpb25lZENoaWxkcmVuKGNvbnN0IExheW91dENvbnRleHQmIGxheW91dENvbnRleHQs
IGNvbnN0IENvbnRhaW5lciYgY29udGFpbmVyKSBjb25zdAogewogICAgIC8vIElmIHRoaXMgY29u
dGFpbmVyIGFsc28gZXN0YWJsaXNoZXMgYSBmb3JtYXR0aW5nIGNvbnRleHQsIHRoZW4gcG9zaXRp
b25pbmcgYWxyZWFkeSBoYXMgaGFwcGVuZCBpbiB0aGF0IHRoZSBmb3JtYXR0aW5nIGNvbnRleHQu
CiAgICAgaWYgKGNvbnRhaW5lci5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkgJiYgJmNv
bnRhaW5lciAhPSAmcm9vdCgpKQpAQCAtMTIwLDcgKzEyMCw4IEBAIHZvaWQgRm9ybWF0dGluZ0Nv
bnRleHQ6OmxheW91dE91dE9mRmxvd0Rlc2NlbmRhbnRzKExheW91dENvbnRleHQmIGxheW91dENv
bnRleHQsCiAgICAgICAgIGNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nKGxheW91dENvbnRleHQsIGxh
eW91dEJveCk7CiAgICAgICAgIGNvbXB1dGVPdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkobGF5
b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKIAotICAgICAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5
b3V0KGxheW91dENvbnRleHQsIGxheW91dENvbnRleHQuZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3Rh
dGUobGF5b3V0Qm94KSk7CisgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IGxheW91dENv
bnRleHQuY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChsYXlv
dXRCb3gpOworICAgICAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0KGxheW91dENvbnRleHQs
IGZvcm1hdHRpbmdTdGF0ZSk7CiAKICAgICAgICAgY29tcHV0ZU91dE9mRmxvd1ZlcnRpY2FsR2Vv
bWV0cnkobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKICAgICAgICAgbGF5b3V0T3V0T2ZGbG93
RGVzY2VuZGFudHMobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggMTE0YTQzMTgyNGVmZmYxNzk4YzFjODFiM2Uz
ZDhjODI2NDBjNTcwNy4uZTg1YmYyZmI5NGU1YjFmOTFkMTFjMmFlNGM3NzZhMDQ5N2Q4YjQyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTY4LDEyICs2
OCwxMiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBjb25zdCBCb3gmIHJvb3QoKSBjb25zdCB7IHJldHVy
biAqbV9yb290OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVN0YXRpY1Bvc2l0aW9uKExh
eW91dENvbnRleHQmLCBjb25zdCBCb3gmKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNv
bXB1dGVJbkZsb3dQb3NpdGlvbmVkUG9zaXRpb24oTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVN0YXRpY1Bvc2l0aW9uKGNvbnN0
IExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGNvbXB1dGVJbkZsb3dQb3NpdGlvbmVkUG9zaXRpb24oY29uc3QgTGF5b3V0Q29udGV4dCYsIGNv
bnN0IEJveCYpIGNvbnN0ID0gMDsKIAotICAgIHZvaWQgY29tcHV0ZUJvcmRlckFuZFBhZGRpbmco
TGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpIGNvbnN0OworICAgIHZvaWQgY29tcHV0ZUJvcmRl
ckFuZFBhZGRpbmcoY29uc3QgTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpIGNvbnN0OwogCi0g
ICAgdm9pZCBwbGFjZUluRmxvd1Bvc2l0aW9uZWRDaGlsZHJlbihMYXlvdXRDb250ZXh0JiwgY29u
c3QgQ29udGFpbmVyJikgY29uc3Q7CisgICAgdm9pZCBwbGFjZUluRmxvd1Bvc2l0aW9uZWRDaGls
ZHJlbihjb25zdCBMYXlvdXRDb250ZXh0JiwgY29uc3QgQ29udGFpbmVyJikgY29uc3Q7CiAKICNp
Zm5kZWYgTkRFQlVHCiAgICAgdmlydHVhbCB2b2lkIHZhbGlkYXRlR2VvbWV0cnlDb25zdHJhaW50
c0FmdGVyTGF5b3V0KGNvbnN0IExheW91dENvbnRleHQmKSBjb25zdDsKQEAgLTgyLDIwICs4Miwy
MCBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGdlbmVyaWMgcG9z
aXRpb25pbmcgYW5kIHNpemluZy4KICAgICBjbGFzcyBHZW9tZXRyeSB7CiAgICAgcHVibGljOgot
ICAgICAgICBzdGF0aWMgVmVydGljYWxHZW9tZXRyeSBvdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5
KExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIFZlcnRpY2FsR2Vv
bWV0cnkgb3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeShjb25zdCBMYXlvdXRDb250ZXh0JiwgY29u
c3QgQm94Jik7CiAgICAgICAgIHN0YXRpYyBIb3Jpem9udGFsR2VvbWV0cnkgb3V0T2ZGbG93SG9y
aXpvbnRhbEdlb21ldHJ5KExheW91dENvbnRleHQmLCBjb25zdCBGb3JtYXR0aW5nQ29udGV4dCYs
IGNvbnN0IEJveCYpOwogCi0gICAgICAgIHN0YXRpYyBIZWlnaHRBbmRNYXJnaW4gZmxvYXRpbmdI
ZWlnaHRBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0
aWMgSGVpZ2h0QW5kTWFyZ2luIGZsb2F0aW5nSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IExheW91dENv
bnRleHQmLCBjb25zdCBCb3gmKTsKICAgICAgICAgc3RhdGljIFdpZHRoQW5kTWFyZ2luIGZsb2F0
aW5nV2lkdGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYsIGNvbnN0IEZvcm1hdHRpbmdDb250ZXh0
JiwgY29uc3QgQm94Jik7CiAKLSAgICAgICAgc3RhdGljIEhlaWdodEFuZE1hcmdpbiBpbmxpbmVS
ZXBsYWNlZEhlaWdodEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7Ci0gICAg
ICAgIHN0YXRpYyBXaWR0aEFuZE1hcmdpbiBpbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKExh
eW91dENvbnRleHQmLCBjb25zdCBCb3gmLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHByZWNv
bXB1dGVkTWFyZ2luTGVmdCA9IHsgfSwKKyAgICAgICAgc3RhdGljIEhlaWdodEFuZE1hcmdpbiBp
bmxpbmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihjb25zdCBMYXlvdXRDb250ZXh0JiwgY29uc3Qg
Qm94Jik7CisgICAgICAgIHN0YXRpYyBXaWR0aEFuZE1hcmdpbiBpbmxpbmVSZXBsYWNlZFdpZHRo
QW5kTWFyZ2luKGNvbnN0IExheW91dENvbnRleHQmLCBjb25zdCBCb3gmLCBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IHByZWNvbXB1dGVkTWFyZ2luTGVmdCA9IHsgfSwKICAgICAgICAgICAgIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gcHJlY29tcHV0ZWRNYXJnaW5SaWdodCA9IHsgfSk7CiAK
LSAgICAgICAgc3RhdGljIEhlaWdodEFuZE1hcmdpbiBjb21wbGljYXRlZENhc2VzKExheW91dENv
bnRleHQmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIEhlaWdodEFuZE1hcmdpbiBjb21w
bGljYXRlZENhc2VzKGNvbnN0IExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKIAotICAgICAg
ICBzdGF0aWMgRWRnZXMgY29tcHV0ZWRCb3JkZXIoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYp
OwotICAgICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxFZGdlcz4gY29tcHV0ZWRQYWRkaW5nKExh
eW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIEVkZ2VzIGNvbXB1dGVk
Qm9yZGVyKGNvbnN0IExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8RWRnZXM+IGNvbXB1dGVkUGFkZGluZyhjb25zdCBMYXlvdXRDb250ZXh0
JiwgY29uc3QgQm94Jik7CiAKICAgICAgICAgc3RhdGljIEhvcml6b250YWxFZGdlcyBjb21wdXRl
ZE5vbkNvbGxhcHNlZEhvcml6b250YWxNYXJnaW5WYWx1ZShjb25zdCBMYXlvdXRDb250ZXh0Jiwg
Y29uc3QgQm94Jik7CiAgICAgICAgIHN0YXRpYyBWZXJ0aWNhbEVkZ2VzIGNvbXB1dGVkTm9uQ29s
bGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZShjb25zdCBMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94
Jik7CkBAIC0xMDQsMTQgKzEwNCwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IGZpeGVkVmFsdWUoY29uc3QgTGVuZ3RoJiBnZW9tZXRyeVBy
b3BlcnR5KTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyBWZXJ0aWNhbEdlb21ldHJ5
IG91dE9mRmxvd1JlcGxhY2VkVmVydGljYWxHZW9tZXRyeShMYXlvdXRDb250ZXh0JiwgY29uc3Qg
Qm94Jik7Ci0gICAgICAgIHN0YXRpYyBIb3Jpem9udGFsR2VvbWV0cnkgb3V0T2ZGbG93UmVwbGFj
ZWRIb3Jpem9udGFsR2VvbWV0cnkoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOworICAgICAg
ICBzdGF0aWMgVmVydGljYWxHZW9tZXRyeSBvdXRPZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0
cnkoY29uc3QgTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgSG9y
aXpvbnRhbEdlb21ldHJ5IG91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0
IExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKIAotICAgICAgICBzdGF0aWMgVmVydGljYWxH
ZW9tZXRyeSBvdXRPZkZsb3dOb25SZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoTGF5b3V0Q29udGV4
dCYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgVmVydGljYWxHZW9tZXRyeSBvdXRPZkZs
b3dOb25SZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoY29uc3QgTGF5b3V0Q29udGV4dCYsIGNvbnN0
IEJveCYpOwogICAgICAgICBzdGF0aWMgSG9yaXpvbnRhbEdlb21ldHJ5IG91dE9mRmxvd05vblJl
cGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KExheW91dENvbnRleHQmLCBjb25zdCBGb3JtYXR0aW5n
Q29udGV4dCYsIGNvbnN0IEJveCYpOwogCi0gICAgICAgIHN0YXRpYyBIZWlnaHRBbmRNYXJnaW4g
ZmxvYXRpbmdSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94
Jik7Ci0gICAgICAgIHN0YXRpYyBXaWR0aEFuZE1hcmdpbiBmbG9hdGluZ1JlcGxhY2VkV2lkdGhB
bmRNYXJnaW4oTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgSGVp
Z2h0QW5kTWFyZ2luIGZsb2F0aW5nUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4oY29uc3QgTGF5b3V0
Q29udGV4dCYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgV2lkdGhBbmRNYXJnaW4gZmxv
YXRpbmdSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IExheW91dENvbnRleHQmLCBjb25zdCBC
b3gmKTsKIAogICAgICAgICBzdGF0aWMgV2lkdGhBbmRNYXJnaW4gZmxvYXRpbmdOb25SZXBsYWNl
ZFdpZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQmLCBjb25zdCBGb3JtYXR0aW5nQ29udGV4dCYs
IGNvbnN0IEJveCYpOwogCkBAIC0xMTksNyArMTE5LDcgQEAgcHJvdGVjdGVkOgogICAgIH07CiAK
IHByaXZhdGU6Ci0gICAgdm9pZCBjb21wdXRlT3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeShMYXlv
dXRDb250ZXh0JiwgY29uc3QgQm94JikgY29uc3Q7CisgICAgdm9pZCBjb21wdXRlT3V0T2ZGbG93
VmVydGljYWxHZW9tZXRyeShjb25zdCBMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94JikgY29uc3Q7
CiAgICAgdm9pZCBjb21wdXRlT3V0T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5KExheW91dENvbnRl
eHQmLCBjb25zdCBCb3gmKSBjb25zdDsKIAogICAgIFdlYWtQdHI8Qm94PiBtX3Jvb3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAK
aW5kZXggNzdkOTI0MWM0YWIzNmJhYzM1YzQ3MGQxZGU0NTU0NGZlYzBhYmQ3Yi4uMmIwZGMxNDQ5
NTk4MjZkNTczZTA0YzFlNjUyNDZlYzA3ZTQ0NTBjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAtMzQsNyArMzQsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CiAKLXN0YXRpYyBMYXlv
dXRVbml0IGNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QoTGF5b3V0Q29udGV4
dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitzdGF0aWMgTGF5b3V0VW5p
dCBjb250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290KGNvbnN0IExheW91dENvbnRl
eHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIEFTU0VSVChs
YXlvdXRCb3guc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNBdXRvKCkgJiYgKGxheW91dEJveC5l
c3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkgfHwgbGF5b3V0Qm94LmlzRG9jdW1lbnRCb3go
KSkpOwogCkBAIC0xNTgsNyArMTU4LDcgQEAgTGF5b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OnNocmlua1RvRml0V2lkdGgoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q28KICAgICBy
ZXR1cm4gc3RkOjptaW4oc3RkOjptYXgoaW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMubWluaW11
bSwgYXZhaWxhYmxlV2lkdGgpLCBpbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cy5tYXhpbXVtKTsK
IH0KIAotVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9m
Rmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9tZXRyeShMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250
ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKK1ZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoY29u
c3QgTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7
CiAgICAgQVNTRVJUKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAhbGF5b3V0
Qm94LnJlcGxhY2VkKCkpOwogCkBAIC00MjAsNyArNDIwLDcgQEAgSG9yaXpvbnRhbEdlb21ldHJ5
IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9u
dGFsR2UKICAgICByZXR1cm4geyAqbGVmdCwgKnJpZ2h0LCB7ICp3aWR0aCwgeyAqbWFyZ2luTGVm
dCwgKm1hcmdpblJpZ2h0IH0sIHsgbm9uQ29tcHV0ZWRNYXJnaW5MZWZ0LCBub25Db21wdXRlZE1h
cmdpblJpZ2h0IH0gfSB9OwogfQogCi1WZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KExheW91dENvbnRl
eHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQorVmVydGljYWxHZW9tZXRy
eSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkVmVydGljYWxH
ZW9tZXRyeShjb25zdCBMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxh
eW91dEJveCkKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgp
ICYmIGxheW91dEJveC5yZXBsYWNlZCgpKTsKIApAQCAtNDg5LDcgKzQ4OSw3IEBAIFZlcnRpY2Fs
R2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZl
cnRpY2FsR2VvbWV0cnkoCiAgICAgcmV0dXJuIHsgKnRvcCwgKmJvdHRvbSwgeyBoZWlnaHQsIHsg
Km1hcmdpblRvcCwgKm1hcmdpbkJvdHRvbSB9LCB7IH0gfSB9OwogfQogCi1Ib3Jpem9udGFsR2Vv
bWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZEhvcml6
b250YWxHZW9tZXRyeShMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxh
eW91dEJveCkKK0hvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
Om91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0IExheW91dENvbnRleHQm
IGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIEFTU0VSVChsYXlv
dXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwog
CkBAIC01ODcsNyArNTg3LDcgQEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRIb3Jpem9udGFsR2VvbWUKICAgICByZXR1cm4g
eyAqbGVmdCwgKnJpZ2h0LCB7IHdpZHRoLCB7ICptYXJnaW5MZWZ0LCAqbWFyZ2luUmlnaHQgfSwg
eyBub25Db21wdXRlZE1hcmdpbkxlZnQsIG5vbkNvbXB1dGVkTWFyZ2luUmlnaHQgfSB9IH07CiB9
CiAKLUhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXBsaWNh
dGVkQ2FzZXMoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRC
b3gpCitIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wbGlj
YXRlZENhc2VzKGNvbnN0IExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYg
bGF5b3V0Qm94KQogewogICAgIEFTU0VSVCghbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwogICAgIC8v
IFRPRE86IFVzZSBjb21wbGljYXRlZC1jYXNlIGZvciBkb2N1bWVudCByZW5kZXJlciBmb3Igbm93
IChzZWUgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd0hlaWdodEFuZE1h
cmdpbikuCkBAIC02NTMsNyArNjUzLDcgQEAgV2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpmbG9hdGluZ05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4oTGEKICAgICBy
ZXR1cm4gV2lkdGhBbmRNYXJnaW4geyAqd2lkdGgsIG1hcmdpbiwgbWFyZ2luIH07CiB9CiAKLUhl
aWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nUmVwbGFj
ZWRIZWlnaHRBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94
JiBsYXlvdXRCb3gpCitIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpmbG9hdGluZ1JlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IExheW91dENvbnRleHQmIGxh
eW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIEFTU0VSVChsYXlvdXRC
b3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSAmJiBsYXlvdXRCb3gucmVwbGFjZWQoKSk7CiAKQEAg
LTY2Myw3ICs2NjMsNyBAQCBIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpmbG9hdGluZ1JlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKExheQogICAgIHJldHVybiBpbmxp
bmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOwogfQog
Ci1XaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nUmVw
bGFjZWRXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBC
b3gmIGxheW91dEJveCkKK1dpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6ZmxvYXRpbmdSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IExheW91dENvbnRleHQmIGxh
eW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIEFTU0VSVChsYXlvdXRC
b3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSAmJiBsYXlvdXRCb3gucmVwbGFjZWQoKSk7CiAKQEAg
LTY3Nyw3ICs2NzcsNyBAQCBXaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmZsb2F0aW5nUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihMYXlvdQogICAgIHJldHVybiBpbmxp
bmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dENvbnRleHQsIGxheW91dEJveCwgbWFyZ2lu
LmxlZnQsIG1hcmdpbi5yaWdodCk7CiB9CiAKLVZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KExheW91dENvbnRleHQm
IGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQorVmVydGljYWxHZW9tZXRyeSBG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkoY29u
c3QgTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7
CiAgICAgQVNTRVJUKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSk7CiAKQEAgLTY5
NSw3ICs2OTUsNyBAQCBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpvdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkoTGF5bwogICAgIHJldHVybiBvdXRPZkZs
b3dSZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOwog
fQogCi1IZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGlu
Z0hlaWdodEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gm
IGxheW91dEJveCkKK0hlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OmZsb2F0aW5nSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IExheW91dENvbnRleHQmIGxheW91dENvbnRl
eHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNGbG9h
dGluZ1Bvc2l0aW9uZWQoKSk7CiAKQEAgLTcxMyw3ICs3MTMsNyBAQCBXaWR0aEFuZE1hcmdpbiBG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nV2lkdGhBbmRNYXJnaW4oTGF5b3V0
Q29udGV4dAogICAgIHJldHVybiBmbG9hdGluZ1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0
Q29udGV4dCwgbGF5b3V0Qm94KTsKIH0KIAotSGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4oTGF5b3V0Q29udGV4
dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitIZWlnaHRBbmRNYXJnaW4g
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZEhlaWdodEFuZE1hcmdp
bihjb25zdCBMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJv
eCkKIHsKICAgICBBU1NFUlQoKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fCBs
YXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNJbkZsb3coKSkg
JiYgbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwogCkBAIC03NjIsNyArNzYyLDcgQEAgSGVpZ2h0QW5k
TWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRIZWlnaHRB
bmRNYXJnaW4oTGF5b3UKICAgICByZXR1cm4geyAqaGVpZ2h0LCBtYXJnaW4sIHsgfSB9OwogfQog
Ci1XaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxh
Y2VkV2lkdGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94
JiBsYXlvdXRCb3gsCitXaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OmlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4oY29uc3QgTGF5b3V0Q29udGV4dCYgbGF5b3V0
Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gsCiAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRV
bml0PiBwcmVjb21wdXRlZE1hcmdpbkxlZnQsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gcHJl
Y29tcHV0ZWRNYXJnaW5SaWdodCkKIHsKICAgICBBU1NFUlQoKGxheW91dEJveC5pc091dE9mRmxv
d1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSB8fCBsYXlv
dXRCb3guaXNJbkZsb3coKSkgJiYgbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwpAQCAtODQzLDcgKzg0
Myw3IEBAIFdpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5l
UmVwbGFjZWRXaWR0aEFuZE1hcmdpbihMYXlvdXRDCiAgICAgcmV0dXJuIHsgKndpZHRoLCB7IG1h
cmdpbkxlZnQsIG1hcmdpblJpZ2h0IH0sIHsgbm9uQ29tcHV0ZWRNYXJnaW5MZWZ0LCBub25Db21w
dXRlZE1hcmdpblJpZ2h0IH0gfTsKIH0KIAotRWRnZXMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5Ojpjb21wdXRlZEJvcmRlcihMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94JiBsYXlvdXRCb3gp
CitFZGdlcyBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkQm9yZGVyKGNvbnN0
IExheW91dENvbnRleHQmLCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBhdXRvJiBzdHls
ZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29u
dGV4dExheW91dCwgc3RyZWFtIDw8ICJbQm9yZGVyXSAtPiBsYXlvdXRCb3g6ICIgPDwgJmxheW91
dEJveCk7CkBAIC04NTMsNyArODUzLDcgQEAgRWRnZXMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5Ojpjb21wdXRlZEJvcmRlcihMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94JiBsYXkKICAgICB9
OwogfQogCi1zdGQ6Om9wdGlvbmFsPEVkZ2VzPiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OmNvbXB1dGVkUGFkZGluZyhMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gm
IGxheW91dEJveCkKK3N0ZDo6b3B0aW9uYWw8RWRnZXM+IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6Y29tcHV0ZWRQYWRkaW5nKGNvbnN0IExheW91dENvbnRleHQmIGxheW91dENvbnRleHQs
IGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIGlmICghbGF5b3V0Qm94LmlzUGFkZGluZ0Fw
cGxpY2FibGUoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9MYXlvdXRDb250ZXh0LmNwcAppbmRleCAwNzM5OGM5YTEyYzE5MTE1MjRjMjliYzU3YTI1
MjY2NjU2ZGJkYWNkLi5mZTY3ODVlZTg1ZmMwY2NhNzljYzQzYzEzYTIyMGMzZTFhZTU3MzgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Q29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuY3BwCkBAIC04Miw3ICs4Miw4IEBA
IHZvaWQgTGF5b3V0Q29udGV4dDo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRTdWJ0cmVlKGNvbnN0
IEJveCYgbGF5b3V0Um9vdCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChsYXlvdXRSb290LmVzdGFi
bGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAgICAgYXV0byBmb3JtYXR0aW5nQ29udGV4dCA9
IHRoaXMtPmZvcm1hdHRpbmdDb250ZXh0KGxheW91dFJvb3QpOwotICAgIGZvcm1hdHRpbmdDb250
ZXh0LT5sYXlvdXQoKnRoaXMsIGVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGxheW91dFJvb3Qp
KTsKKyAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSBjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JG
b3JtYXR0aW5nUm9vdElmTmVlZGVkKGxheW91dFJvb3QpOworICAgIGZvcm1hdHRpbmdDb250ZXh0
LT5sYXlvdXQoKnRoaXMsIGZvcm1hdHRpbmdTdGF0ZSk7CiAgICAgZm9ybWF0dGluZ0NvbnRleHQt
PmxheW91dE91dE9mRmxvd0Rlc2NlbmRhbnRzKCp0aGlzLCBsYXlvdXRSb290KTsKIH0KIApAQCAt
MTE4LDggKzExOSwxNyBAQCBGb3JtYXR0aW5nU3RhdGUmIExheW91dENvbnRleHQ6OmZvcm1hdHRp
bmdTdGF0ZUZvckJveChjb25zdCBCb3gmIGxheW91dEJveCkgY29ucwogICAgIHJldHVybiAqbV9m
b3JtYXR0aW5nU3RhdGVzLmdldCgmcm9vdCk7CiB9CiAKLUZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0
Q29udGV4dDo6ZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUoY29uc3QgQm94JiBmb3JtYXR0aW5n
Um9vdCkKK0Zvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0Q29udGV4dDo6ZXN0YWJsaXNoZWRGb3JtYXR0
aW5nU3RhdGUoY29uc3QgQm94JiBmb3JtYXR0aW5nUm9vdCkgY29uc3QKIHsKKyAgICBBU1NFUlQo
Zm9ybWF0dGluZ1Jvb3QuZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsKKyAgICBSRUxF
QVNFX0FTU0VSVChtX2Zvcm1hdHRpbmdTdGF0ZXMuY29udGFpbnMoJmZvcm1hdHRpbmdSb290KSk7
CisgICAgcmV0dXJuICptX2Zvcm1hdHRpbmdTdGF0ZXMuZ2V0KCZmb3JtYXR0aW5nUm9vdCk7Cit9
CisKK0Zvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0Q29udGV4dDo6Y3JlYXRlRm9ybWF0dGluZ1N0YXRl
Rm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChjb25zdCBCb3gmIGZvcm1hdHRpbmdSb290KQorewor
ICAgIEFTU0VSVChmb3JtYXR0aW5nUm9vdC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkp
OworCiAgICAgaWYgKGZvcm1hdHRpbmdSb290LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQoKSkgewogICAgICAgICByZXR1cm4gKm1fZm9ybWF0dGluZ1N0YXRlcy5lbnN1cmUoJmZv
cm1hdHRpbmdSb290LCBbJl0gewogCkBAIC0xNDIsMTAgKzE1MiwxMSBAQCBGb3JtYXR0aW5nU3Rh
dGUmIExheW91dENvbnRleHQ6OmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGNvbnN0IEJveCYg
Zm9ybWF0dGluZwogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmxvY2tGb3Jt
YXR0aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3Qp
LCAqdGhpcyk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICB9CisKICAgICBDUkFT
SCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9ybWF0dGluZ0NvbnRleHQ+IExheW91dENvbnRl
eHQ6OmZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290KQor
c3RkOjp1bmlxdWVfcHRyPEZvcm1hdHRpbmdDb250ZXh0PiBMYXlvdXRDb250ZXh0Ojpmb3JtYXR0
aW5nQ29udGV4dChjb25zdCBCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkgY29uc3QKIHsKICAg
ICBpZiAoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dCgpKQogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0xheW91dENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRD
b250ZXh0LmgKaW5kZXggMzdiNzdiNDAxYmRiOGU1MTE2N2QyYWEzNjRhZTIwYmM1NDMzMGMxNS4u
Y2FkZjYxZjJiOWRlNTAyZjk5Yzg4NmQ5ZTFlYzA0NmY0N2U2YTJlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvTGF5b3V0Q29udGV4dC5oCkBAIC03NSwxMCArNzUsMTEgQEAgcHVibGljOgogICAgIHZv
aWQgbWFya05lZWRzVXBkYXRlKGNvbnN0IEJveCYsIE9wdGlvblNldDxVcGRhdGVUeXBlPik7CiAg
ICAgYm9vbCBuZWVkc1VwZGF0ZShjb25zdCBCb3gmKSBjb25zdDsKIAotICAgIHN0ZDo6dW5pcXVl
X3B0cjxGb3JtYXR0aW5nQ29udGV4dD4gZm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQm94JiBmb3Jt
YXR0aW5nQ29udGV4dFJvb3QpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxGb3JtYXR0aW5nQ29udGV4
dD4gZm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNv
bnN0OwogCiAgICAgRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGVGb3JCb3goY29uc3Qg
Qm94JikgY29uc3Q7Ci0gICAgRm9ybWF0dGluZ1N0YXRlJiBlc3RhYmxpc2hlZEZvcm1hdHRpbmdT
dGF0ZShjb25zdCBCb3gmIGZvcm1hdHRpbmdSb290KTsKKyAgICBGb3JtYXR0aW5nU3RhdGUmIGVz
dGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGNvbnN0IEJveCYgZm9ybWF0dGluZ1Jvb3QpIGNvbnN0
OworICAgIEZvcm1hdHRpbmdTdGF0ZSYgY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGlu
Z1Jvb3RJZk5lZWRlZChjb25zdCBCb3gmIGZvcm1hdHRpbmdSb290KTsKIAogICAgIERpc3BsYXk6
OkJveCYgZGlzcGxheUJveEZvckxheW91dEJveChjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGJiMTA4OWNlMjg3MGY1Yzdk
MWEzYmM0Y2E0ZDM5ZWJiMWI5MDM3NTAuLmQyOGI5ZjdkOThkOTViMTA3ZTUwM2I1Yzc3ZWQ4ZWM3
OTJlMDA0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRp
bmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMTM0LDcgKzEz
NCw4IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRl
eHRSb290KExheW91dENvbnRleHQmIGxheW91dENvCiAKICAgICAvLyBTd2ljaCBvdmVyIHRvIHRo
ZSBuZXcgZm9ybWF0dGluZyBjb250ZXh0ICh0aGUgb25lIHRoYXQgdGhlIHJvb3QgY3JlYXRlcyku
CiAgICAgYXV0byBmb3JtYXR0aW5nQ29udGV4dCA9IGxheW91dENvbnRleHQuZm9ybWF0dGluZ0Nv
bnRleHQobGF5b3V0Qm94KTsKLSAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0KGxheW91dENv
bnRleHQsIGxheW91dENvbnRleHQuZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUobGF5b3V0Qm94
KSk7CisgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gbGF5b3V0Q29udGV4dC5jcmVhdGVGb3Jt
YXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGxheW91dEJveCk7CisgICAgZm9y
bWF0dGluZ0NvbnRleHQtPmxheW91dChsYXlvdXRDb250ZXh0LCBmb3JtYXR0aW5nU3RhdGUpOwog
CiAgICAgLy8gQ29tZSBiYWNrIGFuZCBmaW5hbGl6ZSB0aGUgcm9vdCdzIGdlb21ldHJ5LgogICAg
IExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbQ29t
cHV0ZV0gLT4gW0hlaWdodF1bTWFyZ2luXSAtPiBmb3IgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJv
eCA8PCAiKSIpOwpAQCAtMTUyLDEyICsxNTMsMTIgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJvb3QoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q28K
ICAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0T3V0T2ZGbG93RGVzY2VuZGFudHMobGF5b3V0
Q29udGV4dCwgbGF5b3V0Qm94KTsKIH0KIAotdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpj
b21wdXRlU3RhdGljUG9zaXRpb24oTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3Qg
Qm94JiBsYXlvdXRCb3gpIGNvbnN0Cit2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1
dGVTdGF0aWNQb3NpdGlvbihjb25zdCBMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25z
dCBCb3gmIGxheW91dEJveCkgY29uc3QKIHsKICAgICBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hG
b3JMYXlvdXRCb3gobGF5b3V0Qm94KS5zZXRUb3BMZWZ0KEdlb21ldHJ5OjpzdGF0aWNQb3NpdGlv
bihsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpKTsKIH0KIAotdm9pZCBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkTWFyZ2luVG9wKExheW91dENvbnRleHQmIGxheW91dENv
bnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAordm9pZCBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkTWFyZ2luVG9wKGNvbnN0IExheW91dENvbnRleHQmIGxh
eW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogewogICAgIGF1dG8gZXN0
aW1hdGVkTWFyZ2luVG9wID0gR2VvbWV0cnk6OmVzdGltYXRlZE1hcmdpblRvcChsYXlvdXRDb250
ZXh0LCBsYXlvdXRCb3gpOwogCkBAIC0xNjYsNyArMTY3LDcgQEAgdm9pZCBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkTWFyZ2luVG9wKExheW91dENvbnRleHQmIGxheW91
dENvbnQKICAgICBkaXNwbGF5Qm94Lm1vdmVWZXJ0aWNhbGx5KGVzdGltYXRlZE1hcmdpblRvcCk7
CiB9CiAKLXZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUVzdGltYXRlZE1hcmdp
blRvcEZvckFuY2VzdG9ycyhMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gm
IGxheW91dEJveCkgY29uc3QKK3ZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUVz
dGltYXRlZE1hcmdpblRvcEZvckFuY2VzdG9ycyhjb25zdCBMYXlvdXRDb250ZXh0JiBsYXlvdXRD
b250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKIHsKICAgICAvLyBXZSBvbmx5IG5l
ZWQgdG8gZXN0aW1hdGUgbWFyZ2luIHRvcCBmb3IgZmxvYXQgcmVsYXRlZCBsYXlvdXQgKGZvcm1h
dHRpbmcgY29udGV4dCByb290cyBhdm9pZCBmbG9hdHMpLgogICAgIEFTU0VSVChsYXlvdXRCb3gu
aXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guaGFzRmxvYXRDbGVhcigpIHx8IGxh
eW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSk7CkBAIC0xOTEsNyAr
MTkyLDcgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkTWFy
Z2luVG9wRm9yQW5jZXN0b3JzKExheW91dENvbnRleHQKICAgICB9CiB9CiAKLXZvaWQgQmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUZsb2F0aW5nUG9zaXRpb24oTGF5b3V0Q29udGV4dCYg
bGF5b3V0Q29udGV4dCwgRmxvYXRpbmdDb250ZXh0JiBmbG9hdGluZ0NvbnRleHQsIGNvbnN0IEJv
eCYgbGF5b3V0Qm94KSBjb25zdAordm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRl
RmxvYXRpbmdQb3NpdGlvbihjb25zdCBMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBGbG9h
dGluZ0NvbnRleHQmIGZsb2F0aW5nQ29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKTsKICAgICBh
dXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxh
eW91dEJveCk7CkBAIC0yMDcsNyArMjA4LDcgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
Ojpjb21wdXRlRmxvYXRpbmdQb3NpdGlvbihMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXgKICAg
ICBmbG9hdGluZ0NvbnRleHQuZmxvYXRpbmdTdGF0ZSgpLmFwcGVuZChsYXlvdXRCb3gpOwogfQog
Ci12b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVQb3NpdGlvblRvQXZvaWRGbG9h
dHMoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgRmxvYXRpbmdDb250ZXh0JiBmbG9hdGlu
Z0NvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAordm9pZCBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0Ojpjb21wdXRlUG9zaXRpb25Ub0F2b2lkRmxvYXRzKGNvbnN0IExheW91dENvbnRl
eHQmIGxheW91dENvbnRleHQsIEZsb2F0aW5nQ29udGV4dCYgZmxvYXRpbmdDb250ZXh0LCBjb25z
dCBCb3gmIGxheW91dEJveCkgY29uc3QKIHsKICAgICAvLyBGb3JtYXR0aW5nIGNvbnRleHQgcm9v
dHMgYXZvaWQgZmxvYXRzLgogICAgIEFTU0VSVChsYXlvdXRCb3guZXN0YWJsaXNoZXNCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0KCkpOwpAQCAtMjIyLDcgKzIyMyw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6Y29tcHV0ZVBvc2l0aW9uVG9Bdm9pZEZsb2F0cyhMYXlvdXRDb250ZXh0JiBs
YXlvdXRDCiAgICAgICAgIGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChsYXlv
dXRCb3gpLnNldFRvcExlZnQoKmFkanVzdGVkUG9zaXRpb24pOwogfQogCi12b2lkIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVWZXJ0aWNhbFBvc2l0aW9uRm9yRmxvYXRDbGVhcihMYXlv
dXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBGbG9hdGluZ0NvbnRleHQmIGZsb2F0aW5n
Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0Cit2b2lkIEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6OmNvbXB1dGVWZXJ0aWNhbFBvc2l0aW9uRm9yRmxvYXRDbGVhcihjb25zdCBMYXlv
dXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBGbG9hdGluZ0NvbnRleHQmIGZsb2F0aW5n
Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxheW91
dEJveC5oYXNGbG9hdENsZWFyKCkpOwogICAgIGlmIChmbG9hdGluZ0NvbnRleHQuZmxvYXRpbmdT
dGF0ZSgpLmlzRW1wdHkoKSkKQEAgLTIzMyw3ICsyMzQsNyBAQCB2b2lkIEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6OmNvbXB1dGVWZXJ0aWNhbFBvc2l0aW9uRm9yRmxvYXRDbGVhcihMYXlvdXRDb250
ZXh0JgogICAgICAgICBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0
Qm94KS5zZXRUb3AoKnZlcnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNlKTsKIH0KIAotdm9pZCBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSW5GbG93UG9zaXRpb25lZFBvc2l0aW9uKExh
eW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAor
dm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSW5GbG93UG9zaXRpb25lZFBvc2l0
aW9uKGNvbnN0IExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0
Qm94KSBjb25zdAogewogICAgIGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChs
YXlvdXRCb3gpLnNldFRvcExlZnQoR2VvbWV0cnk6OmluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbihs
YXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpKTsKIH0KQEAgLTI1Niw3ICsyNTcsNyBAQCB2b2lkIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0
JiBsYXlvdXRDb250ZXh0LAogICAgIGRpc3BsYXlCb3guc2V0SG9yaXpvbnRhbE5vbkNvbXB1dGVk
TWFyZ2luKHdpZHRoQW5kTWFyZ2luLm5vbkNvbXB1dGVkTWFyZ2luKTsKIH0KIAotdm9pZCBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKExheW91dENvbnRleHQm
IGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAordm9pZCBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IExheW91dENvbnRl
eHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogewogICAgIEhl
aWdodEFuZE1hcmdpbiBoZWlnaHRBbmRNYXJnaW47CiAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRV
bml0PiBtYXJnaW5Ub3BPZmZzZXQ7CkBAIC0zMDgsNyArMzA5LDcgQEAgRm9ybWF0dGluZ0NvbnRl
eHQ6Okluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Omlu
c3RyaW5zaWMKICAgICBpZiAoYXV0byogZmlyc3RDaGlsZCA9IGRvd25jYXN0PENvbnRhaW5lcj4o
bGF5b3V0Qm94KS5maXJzdEluRmxvd09yRmxvYXRpbmdDaGlsZCgpKQogICAgICAgICBxdWV1ZS5h
cHBlbmQoZmlyc3RDaGlsZCk7CiAKLSAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGVGb3JDaGlsZHJl
biA9IGxheW91dEJveC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkgPyBsYXlvdXRDb250
ZXh0LmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGxheW91dEJveCkgOiBmb3JtYXR0aW5nU3Rh
dGU7CisgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlRm9yQ2hpbGRyZW4gPSBsYXlvdXRCb3guZXN0
YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpID8gbGF5b3V0Q29udGV4dC5jcmVhdGVGb3JtYXR0
aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGxheW91dEJveCkgOiBmb3JtYXR0aW5n
U3RhdGU7CiAgICAgd2hpbGUgKCFxdWV1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgd2hpbGUgKHRy
dWUpIHsKICAgICAgICAgICAgIGF1dG8mIGNoaWxkQm94ID0gKnF1ZXVlLmxhc3QoKTsgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0
dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDk4OTI1NjE2YmQ1MTRiNmQ0ZTZhMzk5MDcxMzVh
OTQ3MWEzODE2M2IuLjhkNTQyMTY5MTcwZWJhODg4N2ZjZWNjYjE0NzMzYTA1ODI1Njg4YjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRp
bmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC01MywzMCArNTMsMzAgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdChMYXlvdXRDb250ZXh0JiwgRmxv
YXRpbmdDb250ZXh0JiwgRm9ybWF0dGluZ1N0YXRlJiwgY29uc3QgQm94JikgY29uc3Q7CiAKICAg
ICB2b2lkIGNvbXB1dGVXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jikg
Y29uc3Q7Ci0gICAgdm9pZCBjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKExheW91dENvbnRleHQmLCBj
b25zdCBCb3gmKSBjb25zdDsKKyAgICB2b2lkIGNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oY29uc3Qg
TGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpIGNvbnN0OwogCi0gICAgdm9pZCBjb21wdXRlU3Rh
dGljUG9zaXRpb24oTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZvaWQgY29tcHV0ZUZsb2F0aW5nUG9zaXRpb24oTGF5b3V0Q29udGV4dCYsIEZsb2F0aW5n
Q29udGV4dCYsIGNvbnN0IEJveCYpIGNvbnN0OwotICAgIHZvaWQgY29tcHV0ZVBvc2l0aW9uVG9B
dm9pZEZsb2F0cyhMYXlvdXRDb250ZXh0JiwgRmxvYXRpbmdDb250ZXh0JiwgY29uc3QgQm94Jikg
Y29uc3Q7Ci0gICAgdm9pZCBjb21wdXRlVmVydGljYWxQb3NpdGlvbkZvckZsb2F0Q2xlYXIoTGF5
b3V0Q29udGV4dCYsIGNvbnN0IEZsb2F0aW5nQ29udGV4dCYsIGNvbnN0IEJveCYpIGNvbnN0Owor
ICAgIHZvaWQgY29tcHV0ZVN0YXRpY1Bvc2l0aW9uKGNvbnN0IExheW91dENvbnRleHQmLCBjb25z
dCBCb3gmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXB1dGVGbG9hdGluZ1Bvc2l0aW9u
KGNvbnN0IExheW91dENvbnRleHQmLCBGbG9hdGluZ0NvbnRleHQmLCBjb25zdCBCb3gmKSBjb25z
dDsKKyAgICB2b2lkIGNvbXB1dGVQb3NpdGlvblRvQXZvaWRGbG9hdHMoY29uc3QgTGF5b3V0Q29u
dGV4dCYsIEZsb2F0aW5nQ29udGV4dCYsIGNvbnN0IEJveCYpIGNvbnN0OworICAgIHZvaWQgY29t
cHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JGbG9hdENsZWFyKGNvbnN0IExheW91dENvbnRleHQmLCBj
b25zdCBGbG9hdGluZ0NvbnRleHQmLCBjb25zdCBCb3gmKSBjb25zdDsKIAotICAgIHZvaWQgY29t
cHV0ZUluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbihMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jikg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wdXRlRXN0aW1hdGVkTWFyZ2luVG9wKExheW91
dENvbnRleHQmLCBjb25zdCBCb3gmKSBjb25zdDsKLSAgICB2b2lkIGNvbXB1dGVFc3RpbWF0ZWRN
YXJnaW5Ub3BGb3JBbmNlc3RvcnMoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpIGNvbnN0Owor
ICAgIHZvaWQgY29tcHV0ZUluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbihjb25zdCBMYXlvdXRDb250
ZXh0JiwgY29uc3QgQm94JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21wdXRlRXN0aW1h
dGVkTWFyZ2luVG9wKGNvbnN0IExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKSBjb25zdDsKKyAg
ICB2b2lkIGNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5Ub3BGb3JBbmNlc3RvcnMoY29uc3QgTGF5b3V0
Q29udGV4dCYsIGNvbnN0IEJveCYpIGNvbnN0OwogCiAgICAgSW5zdHJpbnNpY1dpZHRoQ29uc3Ry
YWludHMgaW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJv
eCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHBvc2l0
aW9uaW5nIGFuZCBzaXppbmcgZm9yIGJveGVzIHBhcnRpY2lwYXRpbmcgaW4gYSBibG9jayBmb3Jt
YXR0aW5nIGNvbnRleHQuCiAgICAgY2xhc3MgR2VvbWV0cnkgOiBwdWJsaWMgRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBIZWlnaHRBbmRN
YXJnaW4gaW5GbG93SGVpZ2h0QW5kTWFyZ2luKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsK
LSAgICAgICAgc3RhdGljIFdpZHRoQW5kTWFyZ2luIGluRmxvd1dpZHRoQW5kTWFyZ2luKExheW91
dENvbnRleHQmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIEhlaWdodEFuZE1hcmdpbiBp
bkZsb3dIZWlnaHRBbmRNYXJnaW4oY29uc3QgTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOwor
ICAgICAgICBzdGF0aWMgV2lkdGhBbmRNYXJnaW4gaW5GbG93V2lkdGhBbmRNYXJnaW4oY29uc3Qg
TGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOwogCi0gICAgICAgIHN0YXRpYyBQb3NpdGlvbiBz
dGF0aWNQb3NpdGlvbihMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7Ci0gICAgICAgIHN0YXRp
YyBQb3NpdGlvbiBpbkZsb3dQb3NpdGlvbmVkUG9zaXRpb24oTGF5b3V0Q29udGV4dCYsIGNvbnN0
IEJveCYpOworICAgICAgICBzdGF0aWMgUG9zaXRpb24gc3RhdGljUG9zaXRpb24oY29uc3QgTGF5
b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgUG9zaXRpb24gaW5GbG93
UG9zaXRpb25lZFBvc2l0aW9uKGNvbnN0IExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKIAog
ICAgICAgICBzdGF0aWMgYm9vbCBpbnN0cmluc2ljV2lkdGhDb25zdHJhaW50c05lZWRDaGlsZHJl
bldpZHRoKGNvbnN0IEJveCYpOwotICAgICAgICBzdGF0aWMgSW5zdHJpbnNpY1dpZHRoQ29uc3Ry
YWludHMgaW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJv
eCYpOworICAgICAgICBzdGF0aWMgSW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMgaW5zdHJpbnNp
Y1dpZHRoQ29uc3RyYWludHMoY29uc3QgTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOwogCiAg
ICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IGVzdGltYXRlZE1hcmdpblRvcChjb25zdCBMYXlvdXRD
b250ZXh0JiwgY29uc3QgQm94Jik7CiAKQEAgLTEwMSw5ICsxMDEsOSBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgc3RhdGljIExheW91dFVuaXQgbm9uQ29sbGFwc2VkTWFyZ2luVG9wKGNvbnN0IExh
eW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKICAgICAgICAgfTsKIAotICAgICAgICBzdGF0aWMg
SGVpZ2h0QW5kTWFyZ2luIGluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKExheW91dENv
bnRleHQmLCBjb25zdCBCb3gmKTsKLSAgICAgICAgc3RhdGljIFdpZHRoQW5kTWFyZ2luIGluRmxv
d05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYsIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gcHJlY29tcHV0ZWRXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7
Ci0gICAgICAgIHN0YXRpYyBXaWR0aEFuZE1hcmdpbiBpbkZsb3dSZXBsYWNlZFdpZHRoQW5kTWFy
Z2luKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIEhlaWdodEFu
ZE1hcmdpbiBpbkZsb3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmdpbihjb25zdCBMYXlvdXRDb250
ZXh0JiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBXaWR0aEFuZE1hcmdpbiBpbkZsb3dO
b25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IExheW91dENvbnRleHQmLCBjb25zdCBCb3gm
LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHByZWNvbXB1dGVkV2lkdGggPSBzdGQ6Om51bGxv
cHQpOworICAgICAgICBzdGF0aWMgV2lkdGhBbmRNYXJnaW4gaW5GbG93UmVwbGFjZWRXaWR0aEFu
ZE1hcmdpbihjb25zdCBMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7CiAgICAgICAgIHN0YXRp
YyBQb3NpdGlvbiBzdGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aW9uZWQoY29uc3QgTGF5
b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOwogICAgIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2Vv
bWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zv
cm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDU0NDIwMzZmMjhmNzM3MmZlMzcwMTcy
NzQwNDUzNjgxNzFkNTdmYjguLmFlMzZkMWNjODg5MDJhNWZiZWM5YTYzYWI0Y2E1ZmJiNzM5Mzdl
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAg
LTc3LDcgKzc3LDcgQEAgc3RhdGljIFdpZHRoQW5kTWFyZ2luIHN0cmV0Y2hXaWR0aFRvSW5pdGlh
bENvbnRhaW5pbmdCbG9jayhXaWR0aEFuZE1hcmdpbiB3aWR0aEEKICAgICByZXR1cm4gd2lkdGhB
bmRNYXJnaW47CiB9CiAKLUhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYg
bGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitIZWlnaHRBbmRNYXJnaW4gQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5k
TWFyZ2luKGNvbnN0IExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5
b3V0Qm94KQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNJbkZsb3coKSAmJiAhbGF5b3V0Qm94
LnJlcGxhY2VkKCkpOwogICAgIEFTU0VSVChsYXlvdXRCb3guaXNPdmVyZmxvd1Zpc2libGUoKSk7
CkBAIC0xNTEsNyArMTUxLDcgQEAgSGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmcKICAgICByZXR1cm4g
aGVpZ2h0QW5kTWFyZ2luOwogfQogCi1XaWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250
ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCwKK1dpZHRoQW5kTWFyZ2lu
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZFdpZHRo
QW5kTWFyZ2luKGNvbnN0IExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYg
bGF5b3V0Qm94LAogICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gcHJlY29tcHV0ZWRXaWR0
aCkKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzSW5GbG93KCkgJiYgIWxheW91dEJveC5yZXBs
YWNlZCgpKTsKQEAgLTI1Miw3ICsyNTIsNyBAQCBXaWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbgogICAg
IHJldHVybiB3aWR0aEFuZE1hcmdpbjsKIH0KIAotV2lkdGhBbmRNYXJnaW4gQmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4oTGF5b3V0
Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitXaWR0aEFuZE1h
cmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93UmVwbGFjZWRXaWR0
aEFuZE1hcmdpbihjb25zdCBMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gm
IGxheW91dEJveCkKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzSW5GbG93KCkgJiYgbGF5b3V0
Qm94LnJlcGxhY2VkKCkpOwogCkBAIC0yNzAsNyArMjcwLDcgQEAgV2lkdGhBbmRNYXJnaW4gQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJn
aW4oTGEKICAgICByZXR1cm4geyB3aWR0aCwgbm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbi5tYXJn
aW4sIG5vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4ubm9uQ29tcHV0ZWRNYXJnaW4gfTsKIH0KIAot
UG9zaXRpb24gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnN0YXRpY1Bvc2l0aW9u
KExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQorUG9z
aXRpb24gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnN0YXRpY1Bvc2l0aW9uKGNv
bnN0IExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQog
ewogICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1MyMi92aXN1cmVuLmh0bWwjYmxvY2st
Zm9ybWF0dGluZwogICAgIC8vIEluIGEgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0LCBib3hlcyBh
cmUgbGFpZCBvdXQgb25lIGFmdGVyIHRoZSBvdGhlciwgdmVydGljYWxseSwgYmVnaW5uaW5nIGF0
IHRoZSB0b3Agb2YgYSBjb250YWluaW5nIGJsb2NrLgpAQCAtMjkxLDcgKzI5MSw3IEBAIFBvc2l0
aW9uIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbihMYXlv
dXRDb250ZXh0JiBsYXlvdXRDCiAgICAgcmV0dXJuIHsgbGVmdCwgdG9wIH07CiB9CiAKLVBvc2l0
aW9uIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dQb3NpdGlvbmVkUG9z
aXRpb24oTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gp
CitQb3NpdGlvbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93UG9zaXRp
b25lZFBvc2l0aW9uKGNvbnN0IExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJv
eCYgbGF5b3V0Qm94KQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNJbkZsb3dQb3NpdGlvbmVk
KCkpOwogCkBAIC0zNjgsNyArMzY4LDcgQEAgUG9zaXRpb24gQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbihMYXlvdXRDb250ZXgKICAgICBy
ZXR1cm4geyBuZXdMZWZ0UG9zaXRpb24sIG5ld1RvcFBvc2l0aW9uIH07CiB9CiAKLUhlaWdodEFu
ZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93SGVpZ2h0QW5k
TWFyZ2luKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94
KQorSGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZs
b3dIZWlnaHRBbmRNYXJnaW4oY29uc3QgTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29u
c3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0luRmxvdygpKTsK
IApAQCAtMzk3LDcgKzM5Nyw3IEBAIEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6aW5GbG93SGVpZ2h0QW5kTWFyZ2luKExheW91dENvCiAgICAgcmV0dXJu
IGhlaWdodEFuZE1hcmdpbjsKIH0KIAotV2lkdGhBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OmluRmxvd1dpZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQmIGxheW91
dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQorV2lkdGhBbmRNYXJnaW4gQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd1dpZHRoQW5kTWFyZ2luKGNvbnN0IExheW91
dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIEFT
U0VSVChsYXlvdXRCb3guaXNJbkZsb3coKSk7CiAKQEAgLTQxMyw3ICs0MTMsNyBAQCBib29sIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbnN0cmluc2ljV2lkdGhDb25zdHJhaW50
c05lZWRDaGlsZHJlbldpZAogICAgIHJldHVybiBsYXlvdXRCb3guc3R5bGUoKS53aWR0aCgpLmlz
QXV0bygpOwogfQogCi1Gb3JtYXR0aW5nQ29udGV4dDo6SW5zdHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Omluc3RyaW5zaWNXaWR0aENvbnN0
cmFpbnRzKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94
KQorRm9ybWF0dGluZ0NvbnRleHQ6Okluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyhjb25z
dCBMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsK
ICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGlmIChhdXRvIHdpZHRo
ID0gZml4ZWRWYWx1ZShzdHlsZS5sb2dpY2FsV2lkdGgoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dC5jcHAKaW5kZXggOWUyNmI3NTU0ZTQ4NmM2NzliNmZhOWMzOTY1YzhmZjRjOTI0
YzQ3Ny4uYTViZjFhZDZlNTdhMGY4Yjc4ODMyN2JhODMyMzY5YTUzYWZkMGRlOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMTAyLDExICsxMDIsMTEgQEAgdm9pZCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0KExheW91dENvbnRleHQmIGxheW91dENvbnRl
eHQsIEZvcm1hdHRpbmdTdGEKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRM
YXlvdXQsIHN0cmVhbSA8PCAiW0VuZF0gLT4gaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dCAtPiBs
YXlvdXQgY29udGV4dCgiIDw8ICZsYXlvdXRDb250ZXh0IDw8ICIpIGZvcm1hdHRpbmcgcm9vdCgi
IDw8ICZyb290KCkgPDwgIikiKTsKIH0KIAotdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZVN0YXRpY1Bvc2l0aW9uKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKSBjb25zdAor
dm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVN0YXRpY1Bvc2l0aW9uKGNvbnN0
IExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKSBjb25zdAogewogfQogCi12b2lkIElubGluZUZv
cm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSW5GbG93UG9zaXRpb25lZFBvc2l0aW9uKExheW91dENv
bnRleHQmLCBjb25zdCBCb3gmKSBjb25zdAordm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZUluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbihjb25zdCBMYXlvdXRDb250ZXh0JiwgY29u
c3QgQm94JikgY29uc3QKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKaW5k
ZXggMDI2NmRmM2E2N2NhMTIyN2ZhYjc5YTRkZjExMWQxYWMyMDY0YWJiZi4uMzI0ZDlkNWVjYmNl
YTZhZTA1NWI4ZWE4NDBiNzMyNDQ1ZmQ1YTAyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dC5oCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGxheW91dChMYXlvdXRD
b250ZXh0JiwgRm9ybWF0dGluZ1N0YXRlJikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0g
ICAgdm9pZCBjb21wdXRlU3RhdGljUG9zaXRpb24oTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHV0ZUluRmxvd1Bvc2l0aW9uZWRQb3NpdGlv
bihMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBj
b21wdXRlU3RhdGljUG9zaXRpb24oY29uc3QgTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpIGNv
bnN0IG92ZXJyaWRlOworICAgIHZvaWQgY29tcHV0ZUluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbihj
b25zdCBMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBJ
bnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyBpbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyhMYXlv
dXRDb250ZXh0JiwgY29uc3QgQm94JikgY29uc3Qgb3ZlcnJpZGU7CiB9Owo=
</data>
<flag name="review"
          id="366601"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>