<?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>120686</bug_id>
          
          <creation_ts>2013-09-04 09:42:36 -0700</creation_ts>
          <short_desc>Move logical dimension getters/setters to FloatingObject from RenderBlock</short_desc>
          <delta_ts>2013-09-04 11:00:30 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Bem Jones-Bey">bjonesbe</reporter>
          <assigned_to name="Bem Jones-Bey">bjonesbe</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>hyatt</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>924484</commentid>
    <comment_count>0</comment_count>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2013-09-04 09:42:36 -0700</bug_when>
    <thetext>Move logical dimension getters/setters to FloatingObject from RenderBlock</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924487</commentid>
    <comment_count>1</comment_count>
      <attachid>210472</attachid>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2013-09-04 09:50:32 -0700</bug_when>
    <thetext>Created attachment 210472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924507</commentid>
    <comment_count>2</comment_count>
      <attachid>210472</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2013-09-04 10:47:17 -0700</bug_when>
    <thetext>Comment on attachment 210472
Patch

I would like to see you make the horizontal writing mode of the block that owns the floating object be a bit on the FloatingObject. Then you have that information available, and you don&apos;t need the boolean arguments to everything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924510</commentid>
    <comment_count>3</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2013-09-04 10:50:50 -0700</bug_when>
    <thetext>This doesn&apos;t have to hold up the patch though, but I think it would be a good follow-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924511</commentid>
    <comment_count>4</comment_count>
      <attachid>210472</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2013-09-04 10:51:04 -0700</bug_when>
    <thetext>Comment on attachment 210472
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924516</commentid>
    <comment_count>5</comment_count>
      <attachid>210472</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-04 11:00:27 -0700</bug_when>
    <thetext>Comment on attachment 210472
Patch

Clearing flags on attachment: 210472

Committed r155050: &lt;http://trac.webkit.org/changeset/155050&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924517</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-04 11:00:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210472</attachid>
            <date>2013-09-04 09:50:32 -0700</date>
            <delta_ts>2013-09-04 11:00:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120686-20130904095032.patch</filename>
            <type>text/plain</type>
            <size>33334</size>
            <attacher name="Bem Jones-Bey">bjonesbe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1MDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzFiZDgyOTUwNDIzMDgz
NmFlOTYyNzYyMTYyYTY1ZjU5OTAwNTNmNC4uM2E2ZGViZmFiZWE3MzJiNGZlMDJjYmZlYzVlNGUy
ZWVhMjlmZTEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEzLTA5LTA0ICBCZW0g
Sm9uZXMtQmV5ICA8YmpvbmVzYmVAYWRvYmUuY29tPgorCisgICAgICAgIE1vdmUgbG9naWNhbCBk
aW1lbnNpb24gZ2V0dGVycy9zZXR0ZXJzIHRvIEZsb2F0aW5nT2JqZWN0IGZyb20gUmVuZGVyQmxv
Y2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDY4
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
aXMgdGhlIGZpcnN0IHN0ZXAgaW4gZGVjb3VwbGluZyBGbG9hdGluZ09iamVjdCwgRmxvYXRpbmdP
YmplY3RzLAorICAgICAgICBldCBhbCBmcm9tIFJlbmRlckJsb2NrLiBJdCBpcyBub3QgaWRlYWwg
dGhhdCB0aGUgbWV0aG9kcyB0YWtlIGEgYm9vbDsKKyAgICAgICAgaG93ZXZlciwgcGFzc2luZyBk
b3duIHRoZSBhY3R1YWwgd3JpdGluZyBtb2RlIHdvdWxkIHJlcXVpcmUKKyAgICAgICAgcmVmYWN0
b3JpbmcgdGhlIHdheSB0aGF0IFJlbmRlckJsb2NrIHN0b3JlcyB0aGlzIGluZm9ybWF0aW9uLCB3
aGljaCBpcworICAgICAgICBhIHRhc2sgZm9yIHRoZSBmdXR1cmUuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnJlcGFpbnRPdmVyaGFu
Z2luZ0Zsb2F0cyk6IFVzZSBuZXcgbWV0aG9kcy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjppbnNlcnRGbG9hdGluZ09iamVjdCk6ICBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjpyZW1vdmVGbG9hdGluZ09iamVjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2s6OnJlbW92ZUZsb2F0aW5nT2JqZWN0c0JlbG93KTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29tcHV0ZUxvZ2ljYWxMb2NhdGlvbkZvckZsb2F0
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cG9zaXRpb25OZXdGbG9h
dHMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ojo6dXBkYXRlT2Zmc2V0SWZOZWVkZWQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ojo6Y29sbGVjdElmTmVlZGVkKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjo6OmdldEhlaWdodFJlbWFpbmluZyk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxMZWZ0RmxvYXRPZmZzZXRGb3JMaW5lKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbFJpZ2h0RmxvYXRPZmZzZXRG
b3JMaW5lKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bmV4dEZsb2F0
TG9naWNhbEJvdHRvbUJlbG93KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6bG93ZXN0RmxvYXRMb2dpY2FsQm90dG9tKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6Y2xlYXJGbG9hdHMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjphZGRPdmVyaGFuZ2luZ0Zsb2F0cyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6Omhhc092ZXJoYW5naW5nRmxvYXQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjphZGRJbnRydWRpbmdGbG9hdHMpOiBEaXR0by4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpG
bG9hdGluZ09iamVjdDo6bG9naWNhbFRvcCk6IE1vdmVkIGZyb20gUmVuZGVyQmxvY2s6OmxvZ2lj
YWxUb3BGb3JGbG9hdAorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2Jq
ZWN0Ojpsb2dpY2FsQm90dG9tKTogTW92ZWQgZnJvbSBSZW5kZXJCbG9jazo6bG9naWNhbEJvdHRv
bUZvckZsb2F0CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6
OmxvZ2ljYWxMZWZ0KTogTW92ZWQgZnJvbSBSZW5kZXJCbG9jazo6bG9naWNhbExlZnRGb3JGbG9h
dAorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0Ojpsb2dpY2Fs
UmlnaHQpOiBNb3ZlZCBmcm9tIFJlbmRlckJsb2NrOjpsb2dpY2FsUmlnaHRGb3JGbG9hdAorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0Ojpsb2dpY2FsV2lkdGgp
OiBNb3ZlZCBmcm9tIFJlbmRlckJsb2NrOjpsb2dpY2FsV2lkdGhGb3JGbG9hdAorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0OjpwaXhlbFNuYXBwZWRMb2dpY2Fs
VG9wKTogTW92ZWQgZnJvbSBSZW5kZXJCbG9jazo6cGl4ZWxTbmFwcGVkTG9naWNhbFRvcEZvckZs
b2F0CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6OnBpeGVs
U25hcHBlZExvZ2ljYWxCb3R0b20pOiBNb3ZlZCBmcm9tIFJlbmRlckJsb2NrOjpwaXhlbFNuYXBw
ZWRMb2dpY2FsQm90dG9tRm9yRmxvYXQKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpG
bG9hdGluZ09iamVjdDo6cGl4ZWxTbmFwcGVkTG9naWNhbExlZnQpOiBNb3ZlZCBmcm9tIFJlbmRl
ckJsb2NrOjpwaXhlbFNuYXBwZWRMb2dpY2FsTGVmdEZvckZsb2F0CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6OnBpeGVsU25hcHBlZExvZ2ljYWxSaWdodCk6
IE1vdmVkIGZyb20gUmVuZGVyQmxvY2s6OnBpeGVsU25hcHBlZExvZ2ljYWxSaWdodEZvckZsb2F0
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6OnNldExvZ2lj
YWxUb3ApOiBNb3ZlZCBmcm9tIFJlbmRlckJsb2NrOjpzZXRMb2dpY2FsVG9wRm9yRmxvYXQKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdDo6c2V0TG9naWNhbExl
ZnQpOiBNb3ZlZCBmcm9tIFJlbmRlckJsb2NrOjpzZXRMb2dpY2FsTGVmdEZvckZsb2F0CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6OnNldExvZ2ljYWxIZWln
aHQpOiBNb3ZlZCBmcm9tIFJlbmRlckJsb2NrOjpzZXRMb2dpY2FsSGVpZ2h0Rm9yRmxvYXQKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdDo6c2V0TG9naWNhbFdp
ZHRoKTogTW92ZWQgZnJvbSBSZW5kZXJCbG9jazo6c2V0TG9naWNhbFdpZHRoRm9yRmxvYXQKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxpbmVXaWR0aDo6c2hyaW5rQXZhaWxhYmxlV2lkdGhGb3JOZXdGbG9hdElmTmVlZGVk
KTogVXNlIG5ldyBtZXRob2RzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNoZWNr
UGFnaW5hdGlvbkFuZEZsb2F0c0F0RW5kTGluZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OkxpbmVCcmVha2VyOjpuZXh0U2VnbWVudEJyZWFrKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cG9zaXRpb25OZXdGbG9hdE9uTGluZSk6IERpdHRv
LgorCiAyMDEzLTA5LTA0ICBLcnp5c3p0b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcuY29tPgog
CiAgICAgICAgIFtBVEtdIEFkZHMgYW4gYWNjZXNzaWJpbGl0eSBzdXBwb3J0IHRvIGFjY2VzcyBh
IHZhbHVlIG9mIHRoZSBjb2xvciBjb250cm9sIGVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGU0MTE0YjI4OTdkZTU1ZGQyZGY1MjgzMDZkMDEyNjIw
MTRjNmQ4OWYuLjRkYTY4YWYwMmJhZmZiMzg4MTYxM2ZhZjNmOTYxMTQwM2E2NjZjM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMzA0Miw3ICszMDQyLDcg
QEAgdm9pZCBSZW5kZXJCbG9jazo6cmVwYWludE92ZXJoYW5naW5nRmxvYXRzKGJvb2wgcGFpbnRB
bGxEZXNjZW5kYW50cykKICAgICAgICAgLy8gT25seSByZXBhaW50IHRoZSBvYmplY3QgaWYgaXQg
aXMgb3ZlcmhhbmdpbmcsIGlzIG5vdCBpbiBpdHMgb3duIGxheWVyLCBhbmQKICAgICAgICAgLy8g
aXMgb3VyIHJlc3BvbnNpYmlsaXR5IHRvIHBhaW50IChtX3Nob3VsZFBhaW50IGlzIHNldCkuIFdo
ZW4gcGFpbnRBbGxEZXNjZW5kYW50cyBpcyB0cnVlLCB0aGUgbGF0dGVyCiAgICAgICAgIC8vIGNv
bmRpdGlvbiBpcyByZXBsYWNlZCB3aXRoIGJlaW5nIGEgZGVzY2VuZGFudCBvZiB1cy4KLSAgICAg
ICAgaWYgKGxvZ2ljYWxCb3R0b21Gb3JGbG9hdChyKSA+IGxvZ2ljYWxIZWlnaHQoKSAmJiAoKHBh
aW50QWxsRGVzY2VuZGFudHMgJiYgci0+cmVuZGVyZXIoKS0+aXNEZXNjZW5kYW50T2YodGhpcykp
IHx8IHItPnNob3VsZFBhaW50KCkpICYmICFyLT5yZW5kZXJlcigpLT5oYXNTZWxmUGFpbnRpbmdM
YXllcigpKSB7CisgICAgICAgIGlmIChyLT5sb2dpY2FsQm90dG9tKGlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkpID4gbG9naWNhbEhlaWdodCgpICYmICgocGFpbnRBbGxEZXNjZW5kYW50cyAmJiBy
LT5yZW5kZXJlcigpLT5pc0Rlc2NlbmRhbnRPZih0aGlzKSkgfHwgci0+c2hvdWxkUGFpbnQoKSkg
JiYgIXItPnJlbmRlcmVyKCktPmhhc1NlbGZQYWludGluZ0xheWVyKCkpIHsKICAgICAgICAgICAg
IHItPnJlbmRlcmVyKCktPnJlcGFpbnQoKTsKICAgICAgICAgICAgIHItPnJlbmRlcmVyKCktPnJl
cGFpbnRPdmVyaGFuZ2luZ0Zsb2F0cyhmYWxzZSk7CiAgICAgICAgIH0KQEAgLTQxMzgsNyArNDEz
OCw3IEBAIFJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdCogUmVuZGVyQmxvY2s6Omluc2VydEZs
b2F0aW5nT2JqZWN0KFJlbmRlckJveCogbykKICAgICAgICAgby0+Y29tcHV0ZUFuZFNldEJsb2Nr
RGlyZWN0aW9uTWFyZ2lucyh0aGlzKTsKICAgICB9CiAKLSAgICBzZXRMb2dpY2FsV2lkdGhGb3JG
bG9hdChuZXdPYmosIGxvZ2ljYWxXaWR0aEZvckNoaWxkKG8pICsgbWFyZ2luU3RhcnRGb3JDaGls
ZChvKSArIG1hcmdpbkVuZEZvckNoaWxkKG8pKTsKKyAgICBuZXdPYmotPnNldExvZ2ljYWxXaWR0
aChsb2dpY2FsV2lkdGhGb3JDaGlsZChvKSArIG1hcmdpblN0YXJ0Rm9yQ2hpbGQobykgKyBtYXJn
aW5FbmRGb3JDaGlsZChvKSwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSk7CiAKICNpZiBFTkFC
TEUoQ1NTX1NIQVBFUykKICAgICBpZiAoU2hhcGVPdXRzaWRlSW5mbyogc2hhcGVPdXRzaWRlID0g
by0+c2hhcGVPdXRzaWRlSW5mbygpKQpAQCAtNDE2Miw4ICs0MTYyLDggQEAgdm9pZCBSZW5kZXJC
bG9jazo6cmVtb3ZlRmxvYXRpbmdPYmplY3QoUmVuZGVyQm94KiBvKQogICAgICAgICBpZiAoaXQg
IT0gZmxvYXRpbmdPYmplY3RTZXQuZW5kKCkpIHsKICAgICAgICAgICAgIEZsb2F0aW5nT2JqZWN0
KiByID0gKml0OwogICAgICAgICAgICAgaWYgKGNoaWxkcmVuSW5saW5lKCkpIHsKLSAgICAgICAg
ICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3AgPSBsb2dpY2FsVG9wRm9yRmxvYXQocik7Ci0g
ICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tID0gbG9naWNhbEJvdHRvbUZv
ckZsb2F0KHIpOworICAgICAgICAgICAgICAgIExheW91dFVuaXQgbG9naWNhbFRvcCA9IHItPmxv
Z2ljYWxUb3AoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSk7CisgICAgICAgICAgICAgICAgTGF5
b3V0VW5pdCBsb2dpY2FsQm90dG9tID0gci0+bG9naWNhbEJvdHRvbShpc0hvcml6b250YWxXcml0
aW5nTW9kZSgpKTsKIAogICAgICAgICAgICAgICAgIC8vIEZpeCBmb3IgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0OTk1LgogICAgICAgICAgICAgICAgIGlmIChsb2dp
Y2FsQm90dG9tIDwgMCB8fCBsb2dpY2FsQm90dG9tIDwgbG9naWNhbFRvcCB8fCBsb2dpY2FsVG9w
ID09IExheW91dFVuaXQ6Om1heCgpKQpAQCAtNDE5OSw3ICs0MTk5LDcgQEAgdm9pZCBSZW5kZXJC
bG9jazo6cmVtb3ZlRmxvYXRpbmdPYmplY3RzQmVsb3coRmxvYXRpbmdPYmplY3QqIGxhc3RGbG9h
dCwgaW50IGxvZ2kKICAgICAKICAgICBjb25zdCBGbG9hdGluZ09iamVjdFNldCYgZmxvYXRpbmdP
YmplY3RTZXQgPSBtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCk7CiAgICAgRmxvYXRpbmdPYmplY3Qq
IGN1cnIgPSBmbG9hdGluZ09iamVjdFNldC5sYXN0KCk7Ci0gICAgd2hpbGUgKGN1cnIgIT0gbGFz
dEZsb2F0ICYmICghY3Vyci0+aXNQbGFjZWQoKSB8fCBsb2dpY2FsVG9wRm9yRmxvYXQoY3Vycikg
Pj0gbG9naWNhbE9mZnNldCkpIHsKKyAgICB3aGlsZSAoY3VyciAhPSBsYXN0RmxvYXQgJiYgKCFj
dXJyLT5pc1BsYWNlZCgpIHx8IGN1cnItPmxvZ2ljYWxUb3AoaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSkgPj0gbG9naWNhbE9mZnNldCkpIHsKICAgICAgICAgbV9mbG9hdGluZ09iamVjdHMtPnJl
bW92ZShjdXJyKTsKICAgICAgICAgQVNTRVJUKCFjdXJyLT5vcmlnaW5hdGluZ0xpbmUoKSk7CiAg
ICAgICAgIGRlbGV0ZSBjdXJyOwpAQCAtNDIyOSw3ICs0MjI5LDcgQEAgTGF5b3V0UG9pbnQgUmVu
ZGVyQmxvY2s6OmNvbXB1dGVMb2dpY2FsTG9jYXRpb25Gb3JGbG9hdChjb25zdCBGbG9hdGluZ09i
amVjdCogZmwKICNlbmRpZgogICAgICAgICBsb2dpY2FsUmlnaHRPZmZzZXQgPSBsb2dpY2FsUmln
aHRPZmZzZXRGb3JDb250ZW50KGxvZ2ljYWxUb3BPZmZzZXQpOwogCi0gICAgTGF5b3V0VW5pdCBm
bG9hdExvZ2ljYWxXaWR0aCA9IG1pbihsb2dpY2FsV2lkdGhGb3JGbG9hdChmbG9hdGluZ09iamVj
dCksIGxvZ2ljYWxSaWdodE9mZnNldCAtIGxvZ2ljYWxMZWZ0T2Zmc2V0KTsgLy8gVGhlIHdpZHRo
IHdlIGxvb2sgZm9yLgorICAgIExheW91dFVuaXQgZmxvYXRMb2dpY2FsV2lkdGggPSBtaW4oZmxv
YXRpbmdPYmplY3QtPmxvZ2ljYWxXaWR0aChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSwgbG9n
aWNhbFJpZ2h0T2Zmc2V0IC0gbG9naWNhbExlZnRPZmZzZXQpOyAvLyBUaGUgd2lkdGggd2UgbG9v
ayBmb3IuCiAKICAgICBMYXlvdXRVbml0IGZsb2F0TG9naWNhbExlZnQ7CiAKQEAgLTQyNDYsNyAr
NDI0Niw3IEBAIExheW91dFBvaW50IFJlbmRlckJsb2NrOjpjb21wdXRlTG9naWNhbExvY2F0aW9u
Rm9yRmxvYXQoY29uc3QgRmxvYXRpbmdPYmplY3QqIGZsCiAgICAgICAgICAgICAgICAgLy8gSGF2
ZSB0byByZS1ldmFsdWF0ZSBhbGwgb2Ygb3VyIG9mZnNldHMsIHNpbmNlIHRoZXkgbWF5IGhhdmUg
Y2hhbmdlZC4KICAgICAgICAgICAgICAgICBsb2dpY2FsUmlnaHRPZmZzZXQgPSBsb2dpY2FsUmln
aHRPZmZzZXRGb3JDb250ZW50KGxvZ2ljYWxUb3BPZmZzZXQpOyAvLyBDb25zdGFudCBwYXJ0IG9m
IHJpZ2h0IG9mZnNldC4KICAgICAgICAgICAgICAgICBsb2dpY2FsTGVmdE9mZnNldCA9IGxvZ2lj
YWxMZWZ0T2Zmc2V0Rm9yQ29udGVudChsb2dpY2FsVG9wT2Zmc2V0KTsgLy8gQ29uc3RhbnQgcGFy
dCBvZiBsZWZ0IG9mZnNldC4KLSAgICAgICAgICAgICAgICBmbG9hdExvZ2ljYWxXaWR0aCA9IG1p
bihsb2dpY2FsV2lkdGhGb3JGbG9hdChmbG9hdGluZ09iamVjdCksIGxvZ2ljYWxSaWdodE9mZnNl
dCAtIGxvZ2ljYWxMZWZ0T2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBmbG9hdExvZ2ljYWxXaWR0
aCA9IG1pbihmbG9hdGluZ09iamVjdC0+bG9naWNhbFdpZHRoKGlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCkpLCBsb2dpY2FsUmlnaHRPZmZzZXQgLSBsb2dpY2FsTGVmdE9mZnNldCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZmxvYXRMb2dpY2FsTGVmdCA9IG1heChsb2dpY2Fs
TGVmdE9mZnNldCAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsTGVmdCgpLCBmbG9hdExvZ2ljYWxM
ZWZ0KTsKQEAgLTQyNjEsMTAgKzQyNjEsMTAgQEAgTGF5b3V0UG9pbnQgUmVuZGVyQmxvY2s6OmNv
bXB1dGVMb2dpY2FsTG9jYXRpb25Gb3JGbG9hdChjb25zdCBGbG9hdGluZ09iamVjdCogZmwKICAg
ICAgICAgICAgICAgICAvLyBIYXZlIHRvIHJlLWV2YWx1YXRlIGFsbCBvZiBvdXIgb2Zmc2V0cywg
c2luY2UgdGhleSBtYXkgaGF2ZSBjaGFuZ2VkLgogICAgICAgICAgICAgICAgIGxvZ2ljYWxSaWdo
dE9mZnNldCA9IGxvZ2ljYWxSaWdodE9mZnNldEZvckNvbnRlbnQobG9naWNhbFRvcE9mZnNldCk7
IC8vIENvbnN0YW50IHBhcnQgb2YgcmlnaHQgb2Zmc2V0LgogICAgICAgICAgICAgICAgIGxvZ2lj
YWxMZWZ0T2Zmc2V0ID0gbG9naWNhbExlZnRPZmZzZXRGb3JDb250ZW50KGxvZ2ljYWxUb3BPZmZz
ZXQpOyAvLyBDb25zdGFudCBwYXJ0IG9mIGxlZnQgb2Zmc2V0LgotICAgICAgICAgICAgICAgIGZs
b2F0TG9naWNhbFdpZHRoID0gbWluKGxvZ2ljYWxXaWR0aEZvckZsb2F0KGZsb2F0aW5nT2JqZWN0
KSwgbG9naWNhbFJpZ2h0T2Zmc2V0IC0gbG9naWNhbExlZnRPZmZzZXQpOworICAgICAgICAgICAg
ICAgIGZsb2F0TG9naWNhbFdpZHRoID0gbWluKGZsb2F0aW5nT2JqZWN0LT5sb2dpY2FsV2lkdGgo
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSksIGxvZ2ljYWxSaWdodE9mZnNldCAtIGxvZ2ljYWxM
ZWZ0T2Zmc2V0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBmbG9hdExvZ2lj
YWxMZWZ0IC09IGxvZ2ljYWxXaWR0aEZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KTsgLy8gVXNlIHRo
ZSBvcmlnaW5hbCB3aWR0aCBvZiB0aGUgZmxvYXQgaGVyZSwgc2luY2UgdGhlIGxvY2FsIHZhcmlh
YmxlCisgICAgICAgIGZsb2F0TG9naWNhbExlZnQgLT0gZmxvYXRpbmdPYmplY3QtPmxvZ2ljYWxX
aWR0aChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKTsgLy8gVXNlIHRoZSBvcmlnaW5hbCB3aWR0
aCBvZiB0aGUgZmxvYXQgaGVyZSwgc2luY2UgdGhlIGxvY2FsIHZhcmlhYmxlCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyB8ZmxvYXRMb2dpY2FsV2lkdGh8IHdhcyBjYXBwZWQgdG8gdGhlIGF2YWlsYWJsZSBsaW5lIHdp
ZHRoLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gU2VlIGZhc3QvYmxvY2svZmxvYXQvY2xhbXBlZC1yaWdodC1mbG9h
dC5odG1sLgogICAgIH0KQEAgLTQzMDUsNyArNDMwNSw3IEBAIGJvb2wgUmVuZGVyQmxvY2s6OnBv
c2l0aW9uTmV3RmxvYXRzKCkKICAgICAKICAgICAvLyBUaGUgZmxvYXQgY2Fubm90IHN0YXJ0IGFi
b3ZlIHRoZSB0b3AgcG9zaXRpb24gb2YgdGhlIGxhc3QgcG9zaXRpb25lZCBmbG9hdC4KICAgICBp
ZiAobGFzdFBsYWNlZEZsb2F0aW5nT2JqZWN0KQotICAgICAgICBsb2dpY2FsVG9wID0gbWF4KGxv
Z2ljYWxUb3BGb3JGbG9hdChsYXN0UGxhY2VkRmxvYXRpbmdPYmplY3QpLCBsb2dpY2FsVG9wKTsK
KyAgICAgICAgbG9naWNhbFRvcCA9IG1heChsYXN0UGxhY2VkRmxvYXRpbmdPYmplY3QtPmxvZ2lj
YWxUb3AoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSksIGxvZ2ljYWxUb3ApOwogCiAgICAgRmxv
YXRpbmdPYmplY3RTZXRJdGVyYXRvciBlbmQgPSBmbG9hdGluZ09iamVjdFNldC5lbmQoKTsKICAg
ICAvLyBOb3cgd2FsayB0aHJvdWdoIHRoZSBzZXQgb2YgdW5wb3NpdGlvbmVkIGZsb2F0cyBhbmQg
cGxhY2UgdGhlbS4KQEAgLTQzMjksNyArNDMyOSw3IEBAIGJvb2wgUmVuZGVyQmxvY2s6OnBvc2l0
aW9uTmV3RmxvYXRzKCkKIAogICAgICAgICBMYXlvdXRQb2ludCBmbG9hdExvZ2ljYWxMb2NhdGlv
biA9IGNvbXB1dGVMb2dpY2FsTG9jYXRpb25Gb3JGbG9hdChmbG9hdGluZ09iamVjdCwgbG9naWNh
bFRvcCk7CiAKLSAgICAgICAgc2V0TG9naWNhbExlZnRGb3JGbG9hdChmbG9hdGluZ09iamVjdCwg
ZmxvYXRMb2dpY2FsTG9jYXRpb24ueCgpKTsKKyAgICAgICAgZmxvYXRpbmdPYmplY3QtPnNldExv
Z2ljYWxMZWZ0KGZsb2F0TG9naWNhbExvY2F0aW9uLngoKSwgaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSk7CiAKICAgICAgICAgc2V0TG9naWNhbExlZnRGb3JDaGlsZChjaGlsZEJveCwgZmxvYXRM
b2dpY2FsTG9jYXRpb24ueCgpICsgY2hpbGRMb2dpY2FsTGVmdE1hcmdpbik7CiAgICAgICAgIHNl
dExvZ2ljYWxUb3BGb3JDaGlsZChjaGlsZEJveCwgZmxvYXRMb2dpY2FsTG9jYXRpb24ueSgpICsg
bWFyZ2luQmVmb3JlRm9yQ2hpbGQoY2hpbGRCb3gpKTsKQEAgLTQzNjEsNyArNDM2MSw3IEBAIGJv
b2wgUmVuZGVyQmxvY2s6OnBvc2l0aW9uTmV3RmxvYXRzKCkKICAgICAgICAgICAgICAgICBmbG9h
dGluZ09iamVjdC0+c2V0UGFnaW5hdGlvblN0cnV0KG5ld0xvZ2ljYWxUb3AgLSBmbG9hdExvZ2lj
YWxMb2NhdGlvbi55KCkpOwogCiAgICAgICAgICAgICAgICAgZmxvYXRMb2dpY2FsTG9jYXRpb24g
PSBjb21wdXRlTG9naWNhbExvY2F0aW9uRm9yRmxvYXQoZmxvYXRpbmdPYmplY3QsIG5ld0xvZ2lj
YWxUb3ApOwotICAgICAgICAgICAgICAgIHNldExvZ2ljYWxMZWZ0Rm9yRmxvYXQoZmxvYXRpbmdP
YmplY3QsIGZsb2F0TG9naWNhbExvY2F0aW9uLngoKSk7CisgICAgICAgICAgICAgICAgZmxvYXRp
bmdPYmplY3QtPnNldExvZ2ljYWxMZWZ0KGZsb2F0TG9naWNhbExvY2F0aW9uLngoKSwgaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSk7CiAKICAgICAgICAgICAgICAgICBzZXRMb2dpY2FsTGVmdEZv
ckNoaWxkKGNoaWxkQm94LCBmbG9hdExvZ2ljYWxMb2NhdGlvbi54KCkgKyBjaGlsZExvZ2ljYWxM
ZWZ0TWFyZ2luKTsKICAgICAgICAgICAgICAgICBzZXRMb2dpY2FsVG9wRm9yQ2hpbGQoY2hpbGRC
b3gsIGZsb2F0TG9naWNhbExvY2F0aW9uLnkoKSArIG1hcmdpbkJlZm9yZUZvckNoaWxkKGNoaWxk
Qm94KSk7CkBAIC00Mzc3LDkgKzQzNzcsOSBAQCBib29sIFJlbmRlckJsb2NrOjpwb3NpdGlvbk5l
d0Zsb2F0cygpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBzZXRMb2dpY2Fs
VG9wRm9yRmxvYXQoZmxvYXRpbmdPYmplY3QsIGZsb2F0TG9naWNhbExvY2F0aW9uLnkoKSk7Cisg
ICAgICAgIGZsb2F0aW5nT2JqZWN0LT5zZXRMb2dpY2FsVG9wKGZsb2F0TG9naWNhbExvY2F0aW9u
LnkoKSwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSk7CiAKLSAgICAgICAgc2V0TG9naWNhbEhl
aWdodEZvckZsb2F0KGZsb2F0aW5nT2JqZWN0LCBsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoY2hpbGRC
b3gpICsgbWFyZ2luQmVmb3JlRm9yQ2hpbGQoY2hpbGRCb3gpICsgbWFyZ2luQWZ0ZXJGb3JDaGls
ZChjaGlsZEJveCkpOworICAgICAgICBmbG9hdGluZ09iamVjdC0+c2V0TG9naWNhbEhlaWdodChs
b2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoY2hpbGRCb3gpICsgbWFyZ2luQmVmb3JlRm9yQ2hpbGQoY2hp
bGRCb3gpICsgbWFyZ2luQWZ0ZXJGb3JDaGlsZChjaGlsZEJveCksIGlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkpOwogCiAgICAgICAgIG1fZmxvYXRpbmdPYmplY3RzLT5hZGRQbGFjZWRPYmplY3Qo
ZmxvYXRpbmdPYmplY3QpOwogCkBAIC00NDkzLDcgKzQ0OTMsNyBAQCBpbmxpbmUgc3RhdGljIGJv
b2wgcmFuZ2VzSW50ZXJzZWN0KGludCBmbG9hdFRvcCwgaW50IGZsb2F0Qm90dG9tLCBpbnQgb2Jq
ZWN0VG9wLAogdGVtcGxhdGU8PgogaW5saW5lIGJvb2wgUmVuZGVyQmxvY2s6OkNvbXB1dGVGbG9h
dE9mZnNldEFkYXB0ZXI8UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0OjpGbG9hdExlZnQ+Ojp1
cGRhdGVPZmZzZXRJZk5lZWRlZChjb25zdCBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3Qp
CiB7Ci0gICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHQgPSBtX3JlbmRlcmVyLT5sb2dpY2FsUmln
aHRGb3JGbG9hdChmbG9hdGluZ09iamVjdCk7CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHQg
PSBmbG9hdGluZ09iamVjdC0+bG9naWNhbFJpZ2h0KG1fcmVuZGVyZXItPmlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkpOwogICAgIGlmIChsb2dpY2FsUmlnaHQgPiBtX29mZnNldCkgewogICAgICAg
ICBtX29mZnNldCA9IGxvZ2ljYWxSaWdodDsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00NTA0
LDcgKzQ1MDQsNyBAQCBpbmxpbmUgYm9vbCBSZW5kZXJCbG9jazo6Q29tcHV0ZUZsb2F0T2Zmc2V0
QWRhcHRlcjxSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6OgogdGVtcGxhdGU8PgogaW5saW5l
IGJvb2wgUmVuZGVyQmxvY2s6OkNvbXB1dGVGbG9hdE9mZnNldEFkYXB0ZXI8UmVuZGVyQmxvY2s6
OkZsb2F0aW5nT2JqZWN0OjpGbG9hdFJpZ2h0Pjo6dXBkYXRlT2Zmc2V0SWZOZWVkZWQoY29uc3Qg
RmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0KQogewotICAgIExheW91dFVuaXQgbG9naWNh
bExlZnQgPSBtX3JlbmRlcmVyLT5sb2dpY2FsTGVmdEZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KTsK
KyAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0ID0gZmxvYXRpbmdPYmplY3QtPmxvZ2ljYWxMZWZ0
KG1fcmVuZGVyZXItPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpOwogICAgIGlmIChsb2dpY2Fs
TGVmdCA8IG1fb2Zmc2V0KSB7CiAgICAgICAgIG1fb2Zmc2V0ID0gbG9naWNhbExlZnQ7CiAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtNDUyMSw3ICs0NTIxLDcgQEAgaW5saW5lIHZvaWQgUmVuZGVy
QmxvY2s6OkNvbXB1dGVGbG9hdE9mZnNldEFkYXB0ZXI8RmxvYXRUeXBlVmFsdWU+Ojpjb2xsZWN0
SWZOZWUKIAogICAgIC8vIEFsbCB0aGUgb2JqZWN0cyByZXR1cm5lZCBmcm9tIHRoZSB0cmVlIHNo
b3VsZCBiZSBhbHJlYWR5IHBsYWNlZC4KICAgICBBU1NFUlQoZmxvYXRpbmdPYmplY3QtPmlzUGxh
Y2VkKCkpOwotICAgIEFTU0VSVChyYW5nZXNJbnRlcnNlY3QobV9yZW5kZXJlci0+cGl4ZWxTbmFw
cGVkTG9naWNhbFRvcEZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KSwgbV9yZW5kZXJlci0+cGl4ZWxT
bmFwcGVkTG9naWNhbEJvdHRvbUZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KSwgbV9saW5lVG9wLCBt
X2xpbmVCb3R0b20pKTsKKyAgICBBU1NFUlQocmFuZ2VzSW50ZXJzZWN0KGZsb2F0aW5nT2JqZWN0
LT5waXhlbFNuYXBwZWRMb2dpY2FsVG9wKG1fcmVuZGVyZXItPmlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCkpLCBmbG9hdGluZ09iamVjdC0+cGl4ZWxTbmFwcGVkTG9naWNhbEJvdHRvbShtX3JlbmRl
cmVyLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSwgbV9saW5lVG9wLCBtX2xpbmVCb3R0b20p
KTsKIAogICAgIGJvb2wgZmxvYXRJc05ld0V4dHJlbWUgPSB1cGRhdGVPZmZzZXRJZk5lZWRlZChm
bG9hdGluZ09iamVjdCk7CiAgICAgaWYgKGZsb2F0SXNOZXdFeHRyZW1lKQpAQCAtNDUzMSw3ICs0
NTMxLDcgQEAgaW5saW5lIHZvaWQgUmVuZGVyQmxvY2s6OkNvbXB1dGVGbG9hdE9mZnNldEFkYXB0
ZXI8RmxvYXRUeXBlVmFsdWU+Ojpjb2xsZWN0SWZOZWUKIHRlbXBsYXRlIDxSZW5kZXJCbG9jazo6
RmxvYXRpbmdPYmplY3Q6OlR5cGUgRmxvYXRUeXBlVmFsdWU+CiBMYXlvdXRVbml0IFJlbmRlckJs
b2NrOjpDb21wdXRlRmxvYXRPZmZzZXRBZGFwdGVyPEZsb2F0VHlwZVZhbHVlPjo6Z2V0SGVpZ2h0
UmVtYWluaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9vdXRlcm1vc3RGbG9hdCA/IG1fcmVu
ZGVyZXItPmxvZ2ljYWxCb3R0b21Gb3JGbG9hdChtX291dGVybW9zdEZsb2F0KSAtIG1fbGluZVRv
cCA6IExheW91dFVuaXQoMSk7CisgICAgcmV0dXJuIG1fb3V0ZXJtb3N0RmxvYXQgPyBtX291dGVy
bW9zdEZsb2F0LT5sb2dpY2FsQm90dG9tKG1fcmVuZGVyZXItPmlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCkpIC0gbV9saW5lVG9wIDogTGF5b3V0VW5pdCgxKTsKIH0KIAogTGF5b3V0VW5pdCBSZW5k
ZXJCbG9jazo6dGV4dEluZGVudE9mZnNldCgpIGNvbnN0CkBAIC00NTgxLDcgKzQ1ODEsNyBAQCBM
YXlvdXRVbml0IFJlbmRlckJsb2NrOjpsb2dpY2FsTGVmdEZsb2F0T2Zmc2V0Rm9yTGluZShMYXlv
dXRVbml0IGxvZ2ljYWxUb3AsIExheQogICAgICAgICBjb25zdCBGbG9hdGluZ09iamVjdCogb3V0
ZXJtb3N0RmxvYXQgPSBhZGFwdGVyLm91dGVybW9zdEZsb2F0KCk7CiAgICAgICAgIGlmIChvZmZz
ZXRNb2RlID09IFNoYXBlT3V0c2lkZUZsb2F0U2hhcGVPZmZzZXQgJiYgb3V0ZXJtb3N0RmxvYXQp
IHsKICAgICAgICAgICAgIGlmIChTaGFwZU91dHNpZGVJbmZvKiBzaGFwZU91dHNpZGUgPSBvdXRl
cm1vc3RGbG9hdC0+cmVuZGVyZXIoKS0+c2hhcGVPdXRzaWRlSW5mbygpKSB7Ci0gICAgICAgICAg
ICAgICAgc2hhcGVPdXRzaWRlLT5jb21wdXRlU2VnbWVudHNGb3JDb250YWluaW5nQmxvY2tMaW5l
KGxvZ2ljYWxUb3AsIGxvZ2ljYWxUb3BGb3JGbG9hdChvdXRlcm1vc3RGbG9hdCksIGxvZ2ljYWxI
ZWlnaHQpOworICAgICAgICAgICAgICAgIHNoYXBlT3V0c2lkZS0+Y29tcHV0ZVNlZ21lbnRzRm9y
Q29udGFpbmluZ0Jsb2NrTGluZShsb2dpY2FsVG9wLCBvdXRlcm1vc3RGbG9hdC0+bG9naWNhbFRv
cChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSwgbG9naWNhbEhlaWdodCk7CiAgICAgICAgICAg
ICAgICAgbGVmdCArPSBzaGFwZU91dHNpZGUtPnJpZ2h0U2VnbWVudE1hcmdpbkJveERlbHRhKCk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ2NDksNyArNDY0OSw3IEBAIExheW91dFVu
aXQgUmVuZGVyQmxvY2s6OmxvZ2ljYWxSaWdodEZsb2F0T2Zmc2V0Rm9yTGluZShMYXlvdXRVbml0
IGxvZ2ljYWxUb3AsIExhCiAgICAgICAgIGNvbnN0IEZsb2F0aW5nT2JqZWN0KiBvdXRlcm1vc3RG
bG9hdCA9IGFkYXB0ZXIub3V0ZXJtb3N0RmxvYXQoKTsKICAgICAgICAgaWYgKG9mZnNldE1vZGUg
PT0gU2hhcGVPdXRzaWRlRmxvYXRTaGFwZU9mZnNldCAmJiBvdXRlcm1vc3RGbG9hdCkgewogICAg
ICAgICAgICAgaWYgKFNoYXBlT3V0c2lkZUluZm8qIHNoYXBlT3V0c2lkZSA9IG91dGVybW9zdEZs
b2F0LT5yZW5kZXJlcigpLT5zaGFwZU91dHNpZGVJbmZvKCkpIHsKLSAgICAgICAgICAgICAgICBz
aGFwZU91dHNpZGUtPmNvbXB1dGVTZWdtZW50c0ZvckNvbnRhaW5pbmdCbG9ja0xpbmUobG9naWNh
bFRvcCwgbG9naWNhbFRvcEZvckZsb2F0KG91dGVybW9zdEZsb2F0KSwgbG9naWNhbEhlaWdodCk7
CisgICAgICAgICAgICAgICAgc2hhcGVPdXRzaWRlLT5jb21wdXRlU2VnbWVudHNGb3JDb250YWlu
aW5nQmxvY2tMaW5lKGxvZ2ljYWxUb3AsIG91dGVybW9zdEZsb2F0LT5sb2dpY2FsVG9wKGlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkpLCBsb2dpY2FsSGVpZ2h0KTsKICAgICAgICAgICAgICAgICBy
aWdodEZsb2F0T2Zmc2V0ICs9IHNoYXBlT3V0c2lkZS0+bGVmdFNlZ21lbnRNYXJnaW5Cb3hEZWx0
YSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00NzEzLDcgKzQ3MTMsNyBAQCBMYXlv
dXRVbml0IFJlbmRlckJsb2NrOjpuZXh0RmxvYXRMb2dpY2FsQm90dG9tQmVsb3coTGF5b3V0VW5p
dCBsb2dpY2FsSGVpZ2h0KSBjbwogICAgIEZsb2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgZW5kID0g
ZmxvYXRpbmdPYmplY3RTZXQuZW5kKCk7CiAgICAgZm9yIChGbG9hdGluZ09iamVjdFNldEl0ZXJh
dG9yIGl0ID0gZmxvYXRpbmdPYmplY3RTZXQuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAg
ICAgICAgIEZsb2F0aW5nT2JqZWN0KiByID0gKml0OwotICAgICAgICBMYXlvdXRVbml0IGZsb2F0
Qm90dG9tID0gbG9naWNhbEJvdHRvbUZvckZsb2F0KHIpOworICAgICAgICBMYXlvdXRVbml0IGZs
b2F0Qm90dG9tID0gci0+bG9naWNhbEJvdHRvbShpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKTsK
ICAgICAgICAgaWYgKGZsb2F0Qm90dG9tID4gbG9naWNhbEhlaWdodCkKICAgICAgICAgICAgIGJv
dHRvbSA9IG1pbihmbG9hdEJvdHRvbSwgYm90dG9tKTsKICAgICB9CkBAIC00NzMxLDcgKzQ3MzEs
NyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjpsb3dlc3RGbG9hdExvZ2ljYWxCb3R0b20oRmxv
YXRpbmdPYmplY3Q6OlR5cGUgZmxvYXRUeXBlKQogICAgIGZvciAoRmxvYXRpbmdPYmplY3RTZXRJ
dGVyYXRvciBpdCA9IGZsb2F0aW5nT2JqZWN0U2V0LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewogICAgICAgICBGbG9hdGluZ09iamVjdCogciA9ICppdDsKICAgICAgICAgaWYgKHItPmlzUGxh
Y2VkKCkgJiYgci0+dHlwZSgpICYgZmxvYXRUeXBlKQotICAgICAgICAgICAgbG93ZXN0RmxvYXRC
b3R0b20gPSBtYXgobG93ZXN0RmxvYXRCb3R0b20sIGxvZ2ljYWxCb3R0b21Gb3JGbG9hdChyKSk7
CisgICAgICAgICAgICBsb3dlc3RGbG9hdEJvdHRvbSA9IG1heChsb3dlc3RGbG9hdEJvdHRvbSwg
ci0+bG9naWNhbEJvdHRvbShpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSk7CiAgICAgfQogICAg
IHJldHVybiBsb3dlc3RGbG9hdEJvdHRvbTsKIH0KQEAgLTQ4NDIsMTAgKzQ4NDIsMTAgQEAgdm9p
ZCBSZW5kZXJCbG9jazo6Y2xlYXJGbG9hdHMoKQogICAgICAgICAgICAgZm9yIChGbG9hdGluZ09i
amVjdFNldEl0ZXJhdG9yIGl0ID0gZmxvYXRpbmdPYmplY3RTZXQuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7CiAgICAgICAgICAgICAgICAgRmxvYXRpbmdPYmplY3QqIGYgPSAqaXQ7CiAgICAg
ICAgICAgICAgICAgRmxvYXRpbmdPYmplY3QqIG9sZEZsb2F0aW5nT2JqZWN0ID0gZmxvYXRNYXAu
Z2V0KGYtPnJlbmRlcmVyKCkpOwotICAgICAgICAgICAgICAgIExheW91dFVuaXQgbG9naWNhbEJv
dHRvbSA9IGxvZ2ljYWxCb3R0b21Gb3JGbG9hdChmKTsKKyAgICAgICAgICAgICAgICBMYXlvdXRV
bml0IGxvZ2ljYWxCb3R0b20gPSBmLT5sb2dpY2FsQm90dG9tKGlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCkpOwogICAgICAgICAgICAgICAgIGlmIChvbGRGbG9hdGluZ09iamVjdCkgewotICAgICAg
ICAgICAgICAgICAgICBMYXlvdXRVbml0IG9sZExvZ2ljYWxCb3R0b20gPSBsb2dpY2FsQm90dG9t
Rm9yRmxvYXQob2xkRmxvYXRpbmdPYmplY3QpOwotICAgICAgICAgICAgICAgICAgICBpZiAobG9n
aWNhbFdpZHRoRm9yRmxvYXQoZikgIT0gbG9naWNhbFdpZHRoRm9yRmxvYXQob2xkRmxvYXRpbmdP
YmplY3QpIHx8IGxvZ2ljYWxMZWZ0Rm9yRmxvYXQoZikgIT0gbG9naWNhbExlZnRGb3JGbG9hdChv
bGRGbG9hdGluZ09iamVjdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBvbGRM
b2dpY2FsQm90dG9tID0gb2xkRmxvYXRpbmdPYmplY3QtPmxvZ2ljYWxCb3R0b20oaXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChmLT5sb2dpY2FsV2lk
dGgoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkgIT0gb2xkRmxvYXRpbmdPYmplY3QtPmxvZ2lj
YWxXaWR0aChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB8fCBmLT5sb2dpY2FsTGVmdChpc0hv
cml6b250YWxXcml0aW5nTW9kZSgpKSAhPSBvbGRGbG9hdGluZ09iamVjdC0+bG9naWNhbExlZnQo
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNo
YW5nZUxvZ2ljYWxUb3AgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlTG9naWNh
bEJvdHRvbSA9IG1heChjaGFuZ2VMb2dpY2FsQm90dG9tLCBtYXgobG9naWNhbEJvdHRvbSwgb2xk
TG9naWNhbEJvdHRvbSkpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDg1Myw4
ICs0ODUzLDggQEAgdm9pZCBSZW5kZXJCbG9jazo6Y2xlYXJGbG9hdHMoKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYW5nZUxvZ2ljYWxUb3AgPSBtaW4oY2hhbmdlTG9naWNhbFRvcCwg
bWluKGxvZ2ljYWxCb3R0b20sIG9sZExvZ2ljYWxCb3R0b20pKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFuZ2VMb2dpY2FsQm90dG9tID0gbWF4KGNoYW5nZUxvZ2ljYWxCb3R0b20s
IG1heChsb2dpY2FsQm90dG9tLCBvbGRMb2dpY2FsQm90dG9tKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3Ag
PSBsb2dpY2FsVG9wRm9yRmxvYXQoZik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRV
bml0IG9sZExvZ2ljYWxUb3AgPSBsb2dpY2FsVG9wRm9yRmxvYXQob2xkRmxvYXRpbmdPYmplY3Qp
OworICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wID0gZi0+bG9n
aWNhbFRvcChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIExheW91dFVuaXQgb2xkTG9naWNhbFRvcCA9IG9sZEZsb2F0aW5nT2JqZWN0LT5sb2dpY2Fs
VG9wKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGxvZ2ljYWxUb3AgIT0gb2xkTG9naWNhbFRvcCkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYW5nZUxvZ2ljYWxUb3AgPSBtaW4oY2hhbmdlTG9naWNhbFRvcCwgbWluKGxvZ2lj
YWxUb3AsIG9sZExvZ2ljYWxUb3ApKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFu
Z2VMb2dpY2FsQm90dG9tID0gbWF4KGNoYW5nZUxvZ2ljYWxCb3R0b20sIG1heChsb2dpY2FsVG9w
LCBvbGRMb2dpY2FsVG9wKSk7CkBAIC00ODc5LDcgKzQ4NzksNyBAQCB2b2lkIFJlbmRlckJsb2Nr
OjpjbGVhckZsb2F0cygpCiAgICAgICAgICAgICBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmpl
Y3QgPSAoKml0KS52YWx1ZTsKICAgICAgICAgICAgIGlmICghZmxvYXRpbmdPYmplY3QtPmlzRGVz
Y2VuZGFudCgpKSB7CiAgICAgICAgICAgICAgICAgY2hhbmdlTG9naWNhbFRvcCA9IDA7Ci0gICAg
ICAgICAgICAgICAgY2hhbmdlTG9naWNhbEJvdHRvbSA9IG1heChjaGFuZ2VMb2dpY2FsQm90dG9t
LCBsb2dpY2FsQm90dG9tRm9yRmxvYXQoZmxvYXRpbmdPYmplY3QpKTsKKyAgICAgICAgICAgICAg
ICBjaGFuZ2VMb2dpY2FsQm90dG9tID0gbWF4KGNoYW5nZUxvZ2ljYWxCb3R0b20sIGZsb2F0aW5n
T2JqZWN0LT5sb2dpY2FsQm90dG9tKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBkZWxldGVBbGxWYWx1ZXMoZmxvYXRNYXApOwpA
QCAtNDkxNiw3ICs0OTE2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6YWRkT3Zlcmhhbmdp
bmdGbG9hdHMoUmVuZGVyQmxvY2sqIGNoaWxkLCBib29sIG1ha2VDaGlsZFAKICAgICBGbG9hdGlu
Z09iamVjdFNldEl0ZXJhdG9yIGNoaWxkRW5kID0gY2hpbGQtPm1fZmxvYXRpbmdPYmplY3RzLT5z
ZXQoKS5lbmQoKTsKICAgICBmb3IgKEZsb2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgY2hpbGRJdCA9
IGNoaWxkLT5tX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCkuYmVnaW4oKTsgY2hpbGRJdCAhPSBjaGls
ZEVuZDsgKytjaGlsZEl0KSB7CiAgICAgICAgIEZsb2F0aW5nT2JqZWN0KiByID0gKmNoaWxkSXQ7
Ci0gICAgICAgIExheW91dFVuaXQgbG9naWNhbEJvdHRvbUZvckZsb2F0ID0gbWluKHRoaXMtPmxv
Z2ljYWxCb3R0b21Gb3JGbG9hdChyKSwgTGF5b3V0VW5pdDo6bWF4KCkgLSBjaGlsZExvZ2ljYWxU
b3ApOworICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b21Gb3JGbG9hdCA9IG1pbihyLT5s
b2dpY2FsQm90dG9tKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpLCBMYXlvdXRVbml0OjptYXgo
KSAtIGNoaWxkTG9naWNhbFRvcCk7CiAgICAgICAgIExheW91dFVuaXQgbG9naWNhbEJvdHRvbSA9
IGNoaWxkTG9naWNhbFRvcCArIGxvZ2ljYWxCb3R0b21Gb3JGbG9hdDsKICAgICAgICAgbG93ZXN0
RmxvYXRMb2dpY2FsQm90dG9tID0gbWF4KGxvd2VzdEZsb2F0TG9naWNhbEJvdHRvbSwgbG9naWNh
bEJvdHRvbSk7CiAKQEAgLTQ5NzMsNyArNDk3Myw3IEBAIGJvb2wgUmVuZGVyQmxvY2s6Omhhc092
ZXJoYW5naW5nRmxvYXQoUmVuZGVyQm94KiByZW5kZXJlcikKICAgICBpZiAoaXQgPT0gZmxvYXRp
bmdPYmplY3RTZXQuZW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBs
b2dpY2FsQm90dG9tRm9yRmxvYXQoKml0KSA+IGxvZ2ljYWxIZWlnaHQoKTsKKyAgICByZXR1cm4g
KCppdCktPmxvZ2ljYWxCb3R0b20oaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkgPiBsb2dpY2Fs
SGVpZ2h0KCk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2s6OmFkZEludHJ1ZGluZ0Zsb2F0cyhSZW5k
ZXJCbG9jayogcHJldiwgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdE9mZnNldCwgTGF5b3V0VW5pdCBs
b2dpY2FsVG9wT2Zmc2V0KQpAQCAtNDk5MCw3ICs0OTkwLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6
YWRkSW50cnVkaW5nRmxvYXRzKFJlbmRlckJsb2NrKiBwcmV2LCBMYXlvdXRVbml0IGxvZ2ljYWxM
ZWZ0T2YKICAgICBGbG9hdGluZ09iamVjdFNldEl0ZXJhdG9yIHByZXZFbmQgPSBwcmV2U2V0LmVu
ZCgpOwogICAgIGZvciAoRmxvYXRpbmdPYmplY3RTZXRJdGVyYXRvciBwcmV2SXQgPSBwcmV2U2V0
LmJlZ2luKCk7IHByZXZJdCAhPSBwcmV2RW5kOyArK3ByZXZJdCkgewogICAgICAgICBGbG9hdGlu
Z09iamVjdCogciA9ICpwcmV2SXQ7Ci0gICAgICAgIGlmIChsb2dpY2FsQm90dG9tRm9yRmxvYXQo
cikgPiBsb2dpY2FsVG9wT2Zmc2V0KSB7CisgICAgICAgIGlmIChyLT5sb2dpY2FsQm90dG9tKGlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpID4gbG9naWNhbFRvcE9mZnNldCkgewogICAgICAgICAg
ICAgaWYgKCFtX2Zsb2F0aW5nT2JqZWN0cyB8fCAhbV9mbG9hdGluZ09iamVjdHMtPnNldCgpLmNv
bnRhaW5zKHIpKSB7CiAgICAgICAgICAgICAgICAgTGF5b3V0U2l6ZSBvZmZzZXQgPSBpc0hvcml6
b250YWxXcml0aW5nTW9kZSgpID8gTGF5b3V0U2l6ZShsb2dpY2FsTGVmdE9mZnNldCwgbG9naWNh
bFRvcE9mZnNldCkgOiBMYXlvdXRTaXplKGxvZ2ljYWxUb3BPZmZzZXQsIGxvZ2ljYWxMZWZ0T2Zm
c2V0KTsKICAgICAgICAgICAgICAgICBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmogPSBuZXcg
RmxvYXRpbmdPYmplY3Qoci0+dHlwZSgpLCBMYXlvdXRSZWN0KHItPmZyYW1lUmVjdCgpLmxvY2F0
aW9uKCkgLSBvZmZzZXQsIHItPmZyYW1lUmVjdCgpLnNpemUoKSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCA5NzZhZGQxNmE3YmMyZGFmYWUzYjFjNDNmOTlhOTky
MWVmZDAwZjBkLi5mMzg2NTIzMDc1ZDc2ZGNhODg1NWU3MDY4ZDE1NDRjMzYwMzUzNGJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtNzcyLDYgKzc3Miw0NiBAQCBw
cml2YXRlOgogICAgICAgICBSb290SW5saW5lQm94KiBvcmlnaW5hdGluZ0xpbmUoKSBjb25zdCB7
IHJldHVybiBtX29yaWdpbmF0aW5nTGluZTsgfQogICAgICAgICB2b2lkIHNldE9yaWdpbmF0aW5n
TGluZShSb290SW5saW5lQm94KiBsaW5lKSB7IG1fb3JpZ2luYXRpbmdMaW5lID0gbGluZTsgfQog
CisgICAgICAgIExheW91dFVuaXQgbG9naWNhbFRvcChib29sIGlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKSBjb25zdCB7IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSA/IHkoKSA6IHgoKTsg
fQorICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b20oYm9vbCBpc0hvcml6b250YWxXcml0
aW5nTW9kZSkgY29uc3QgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUgPyBtYXhZKCkg
OiBtYXhYKCk7IH0KKyAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdChib29sIGlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKSBjb25zdCB7IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSA/
IHgoKSA6IHkoKTsgfQorICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodChib29sIGlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKSBjb25zdCB7IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9k
ZSA/IG1heFgoKSA6IG1heFkoKTsgfQorICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aChi
b29sIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKSBjb25zdCB7IHJldHVybiBpc0hvcml6b250YWxX
cml0aW5nTW9kZSA/IHdpZHRoKCkgOiBoZWlnaHQoKTsgfQorCisgICAgICAgIGludCBwaXhlbFNu
YXBwZWRMb2dpY2FsVG9wKGJvb2wgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUpIGNvbnN0IHsgcmV0
dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlID8gZnJhbWVSZWN0KCkucGl4ZWxTbmFwcGVkWSgp
IDogZnJhbWVSZWN0KCkucGl4ZWxTbmFwcGVkWCgpOyB9CisgICAgICAgIGludCBwaXhlbFNuYXBw
ZWRMb2dpY2FsQm90dG9tKGJvb2wgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUpIGNvbnN0IHsgcmV0
dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlID8gZnJhbWVSZWN0KCkucGl4ZWxTbmFwcGVkTWF4
WSgpIDogZnJhbWVSZWN0KCkucGl4ZWxTbmFwcGVkTWF4WCgpOyB9CisgICAgICAgIGludCBwaXhl
bFNuYXBwZWRMb2dpY2FsTGVmdChib29sIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKSBjb25zdCB7
IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSA/IGZyYW1lUmVjdCgpLnBpeGVsU25hcHBl
ZFgoKSA6IGZyYW1lUmVjdCgpLnBpeGVsU25hcHBlZFkoKTsgfQorICAgICAgICBpbnQgcGl4ZWxT
bmFwcGVkTG9naWNhbFJpZ2h0KGJvb2wgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUpIGNvbnN0IHsg
cmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlID8gZnJhbWVSZWN0KCkucGl4ZWxTbmFwcGVk
TWF4WCgpIDogZnJhbWVSZWN0KCkucGl4ZWxTbmFwcGVkTWF4WSgpOyB9CisKKyAgICAgICAgdm9p
ZCBzZXRMb2dpY2FsVG9wKExheW91dFVuaXQgbG9naWNhbFRvcCwgYm9vbCBpc0hvcml6b250YWxX
cml0aW5nTW9kZSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKQorICAgICAgICAgICAgICAgIHNldFkobG9naWNhbFRvcCk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgc2V0WChsb2dpY2FsVG9wKTsKKyAgICAgICAgfQorICAgICAg
ICB2b2lkIHNldExvZ2ljYWxMZWZ0KExheW91dFVuaXQgbG9naWNhbExlZnQsIGJvb2wgaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpc0hvcml6b250
YWxXcml0aW5nTW9kZSkKKyAgICAgICAgICAgICAgICBzZXRYKGxvZ2ljYWxMZWZ0KTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzZXRZKGxvZ2ljYWxMZWZ0KTsKKyAgICAgICAg
fQorICAgICAgICB2b2lkIHNldExvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0
LCBib29sIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUpCisgICAgICAgICAgICAgICAgc2V0SGVpZ2h0KGxv
Z2ljYWxIZWlnaHQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNldFdpZHRo
KGxvZ2ljYWxIZWlnaHQpOworICAgICAgICB9CisgICAgICAgIHZvaWQgc2V0TG9naWNhbFdpZHRo
KExheW91dFVuaXQgbG9naWNhbFdpZHRoLCBib29sIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUpCisgICAg
ICAgICAgICAgICAgc2V0V2lkdGgobG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBzZXRIZWlnaHQobG9naWNhbFdpZHRoKTsKKyAgICAgICAgfQorCiAgICAg
cHJpdmF0ZToKICAgICAgICAgUmVuZGVyQm94KiBtX3JlbmRlcmVyOwogICAgICAgICBSb290SW5s
aW5lQm94KiBtX29yaWdpbmF0aW5nTGluZTsKQEAgLTc4OSw0NiArODI5LDYgQEAgcHJpdmF0ZToK
IAogICAgIExheW91dFBvaW50IGZsaXBGbG9hdEZvcldyaXRpbmdNb2RlRm9yQ2hpbGQoY29uc3Qg
RmxvYXRpbmdPYmplY3QqLCBjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0OwogCi0gICAgTGF5b3V0
VW5pdCBsb2dpY2FsVG9wRm9yRmxvYXQoY29uc3QgRmxvYXRpbmdPYmplY3QqIGNoaWxkKSBjb25z
dCB7IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY2hpbGQtPnkoKSA6IGNoaWxk
LT54KCk7IH0KLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b21Gb3JGbG9hdChjb25zdCBGbG9h
dGluZ09iamVjdCogY2hpbGQpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkgPyBjaGlsZC0+bWF4WSgpIDogY2hpbGQtPm1heFgoKTsgfQotICAgIExheW91dFVuaXQgbG9n
aWNhbExlZnRGb3JGbG9hdChjb25zdCBGbG9hdGluZ09iamVjdCogY2hpbGQpIGNvbnN0IHsgcmV0
dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBjaGlsZC0+eCgpIDogY2hpbGQtPnkoKTsg
fQotICAgIExheW91dFVuaXQgbG9naWNhbFJpZ2h0Rm9yRmxvYXQoY29uc3QgRmxvYXRpbmdPYmpl
Y3QqIGNoaWxkKSBjb25zdCB7IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY2hp
bGQtPm1heFgoKSA6IGNoaWxkLT5tYXhZKCk7IH0KLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0
aEZvckZsb2F0KGNvbnN0IEZsb2F0aW5nT2JqZWN0KiBjaGlsZCkgY29uc3QgeyByZXR1cm4gaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT53aWR0aCgpIDogY2hpbGQtPmhlaWdodCgp
OyB9Ci0KLSAgICBpbnQgcGl4ZWxTbmFwcGVkTG9naWNhbFRvcEZvckZsb2F0KGNvbnN0IEZsb2F0
aW5nT2JqZWN0KiBjaGlsZCkgY29uc3QgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KSA/IGNoaWxkLT5mcmFtZVJlY3QoKS5waXhlbFNuYXBwZWRZKCkgOiBjaGlsZC0+ZnJhbWVSZWN0
KCkucGl4ZWxTbmFwcGVkWCgpOyB9Ci0gICAgaW50IHBpeGVsU25hcHBlZExvZ2ljYWxCb3R0b21G
b3JGbG9hdChjb25zdCBGbG9hdGluZ09iamVjdCogY2hpbGQpIGNvbnN0IHsgcmV0dXJuIGlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBjaGlsZC0+ZnJhbWVSZWN0KCkucGl4ZWxTbmFwcGVkTWF4
WSgpIDogY2hpbGQtPmZyYW1lUmVjdCgpLnBpeGVsU25hcHBlZE1heFgoKTsgfQotICAgIGludCBw
aXhlbFNuYXBwZWRMb2dpY2FsTGVmdEZvckZsb2F0KGNvbnN0IEZsb2F0aW5nT2JqZWN0KiBjaGls
ZCkgY29uc3QgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT5mcmFt
ZVJlY3QoKS5waXhlbFNuYXBwZWRYKCkgOiBjaGlsZC0+ZnJhbWVSZWN0KCkucGl4ZWxTbmFwcGVk
WSgpOyB9Ci0gICAgaW50IHBpeGVsU25hcHBlZExvZ2ljYWxSaWdodEZvckZsb2F0KGNvbnN0IEZs
b2F0aW5nT2JqZWN0KiBjaGlsZCkgY29uc3QgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSA/IGNoaWxkLT5mcmFtZVJlY3QoKS5waXhlbFNuYXBwZWRNYXhYKCkgOiBjaGlsZC0+ZnJh
bWVSZWN0KCkucGl4ZWxTbmFwcGVkTWF4WSgpOyB9Ci0KLSAgICB2b2lkIHNldExvZ2ljYWxUb3BG
b3JGbG9hdChGbG9hdGluZ09iamVjdCogY2hpbGQsIExheW91dFVuaXQgbG9naWNhbFRvcCkKLSAg
ICB7Ci0gICAgICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQotICAgICAgICAgICAg
Y2hpbGQtPnNldFkobG9naWNhbFRvcCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNoaWxk
LT5zZXRYKGxvZ2ljYWxUb3ApOwotICAgIH0KLSAgICB2b2lkIHNldExvZ2ljYWxMZWZ0Rm9yRmxv
YXQoRmxvYXRpbmdPYmplY3QqIGNoaWxkLCBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0KQotICAgIHsK
LSAgICAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgICAgICBjaGls
ZC0+c2V0WChsb2dpY2FsTGVmdCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNoaWxkLT5z
ZXRZKGxvZ2ljYWxMZWZ0KTsKLSAgICB9Ci0gICAgdm9pZCBzZXRMb2dpY2FsSGVpZ2h0Rm9yRmxv
YXQoRmxvYXRpbmdPYmplY3QqIGNoaWxkLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpCi0gICAg
ewotICAgICAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKLSAgICAgICAgICAgIGNo
aWxkLT5zZXRIZWlnaHQobG9naWNhbEhlaWdodCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGNoaWxkLT5zZXRXaWR0aChsb2dpY2FsSGVpZ2h0KTsKLSAgICB9Ci0gICAgdm9pZCBzZXRMb2dp
Y2FsV2lkdGhGb3JGbG9hdChGbG9hdGluZ09iamVjdCogY2hpbGQsIExheW91dFVuaXQgbG9naWNh
bFdpZHRoKQotICAgIHsKLSAgICAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0g
ICAgICAgICAgICBjaGlsZC0+c2V0V2lkdGgobG9naWNhbFdpZHRoKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgY2hpbGQtPnNldEhlaWdodChsb2dpY2FsV2lkdGgpOwotICAgIH0KLQogICAg
IExheW91dFVuaXQgeFBvc2l0aW9uRm9yRmxvYXRJbmNsdWRpbmdNYXJnaW4oY29uc3QgRmxvYXRp
bmdPYmplY3QqIGNoaWxkKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0xpbmVMYXlvdXQuY3BwCmluZGV4IDM4OTQ0YzM3ZDhlNjk5MjZkMzZlODBkMmEzNmNmMjQ4MTMw
NGJkYzcuLjJjNWQ2NTRjMjMyYmJlNWIwMWY3MWQ0NjFjNWYzYWIwOGM1NzViN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCkBA
IC0xOTEsNyArMTkxLDcgQEAgaW5saW5lIHZvaWQgTGluZVdpZHRoOjp1cGRhdGVBdmFpbGFibGVX
aWR0aChMYXlvdXRVbml0IHJlcGxhY2VkSGVpZ2h0KQogaW5saW5lIHZvaWQgTGluZVdpZHRoOjpz
aHJpbmtBdmFpbGFibGVXaWR0aEZvck5ld0Zsb2F0SWZOZWVkZWQoUmVuZGVyQmxvY2s6OkZsb2F0
aW5nT2JqZWN0KiBuZXdGbG9hdCkKIHsKICAgICBMYXlvdXRVbml0IGhlaWdodCA9IG1fYmxvY2st
PmxvZ2ljYWxIZWlnaHQoKTsKLSAgICBpZiAoaGVpZ2h0IDwgbV9ibG9jay0+bG9naWNhbFRvcEZv
ckZsb2F0KG5ld0Zsb2F0KSB8fCBoZWlnaHQgPj0gbV9ibG9jay0+bG9naWNhbEJvdHRvbUZvckZs
b2F0KG5ld0Zsb2F0KSkKKyAgICBpZiAoaGVpZ2h0IDwgbmV3RmxvYXQtPmxvZ2ljYWxUb3AobV9i
bG9jay0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkgfHwgaGVpZ2h0ID49IG5ld0Zsb2F0LT5s
b2dpY2FsQm90dG9tKG1fYmxvY2stPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpKQogICAgICAg
ICByZXR1cm47CiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKQEAgLTIwOSw3ICsyMDksNyBAQCBp
bmxpbmUgdm9pZCBMaW5lV2lkdGg6OnNocmlua0F2YWlsYWJsZVdpZHRoRm9yTmV3RmxvYXRJZk5l
ZWRlZChSZW5kZXJCbG9jazo6RmxvYQogICAgICAgICBpZiAocHJldmlvdXNGbG9hdCAhPSBuZXdG
bG9hdCAmJiBwcmV2aW91c0Zsb2F0LT50eXBlKCkgPT0gbmV3RmxvYXQtPnR5cGUoKSkgewogICAg
ICAgICAgICAgcHJldmlvdXNTaGFwZU91dHNpZGVJbmZvID0gcHJldmlvdXNGbG9hdC0+cmVuZGVy
ZXIoKS0+c2hhcGVPdXRzaWRlSW5mbygpOwogICAgICAgICAgICAgaWYgKHByZXZpb3VzU2hhcGVP
dXRzaWRlSW5mbykgewotICAgICAgICAgICAgICAgIHByZXZpb3VzU2hhcGVPdXRzaWRlSW5mby0+
Y29tcHV0ZVNlZ21lbnRzRm9yQ29udGFpbmluZ0Jsb2NrTGluZShtX2Jsb2NrLT5sb2dpY2FsSGVp
Z2h0KCksIG1fYmxvY2stPmxvZ2ljYWxUb3BGb3JGbG9hdChwcmV2aW91c0Zsb2F0KSwgbG9naWNh
bEhlaWdodEZvckxpbmUobV9ibG9jaywgbV9pc0ZpcnN0TGluZSkpOworICAgICAgICAgICAgICAg
IHByZXZpb3VzU2hhcGVPdXRzaWRlSW5mby0+Y29tcHV0ZVNlZ21lbnRzRm9yQ29udGFpbmluZ0Js
b2NrTGluZShtX2Jsb2NrLT5sb2dpY2FsSGVpZ2h0KCksIHByZXZpb3VzRmxvYXQtPmxvZ2ljYWxU
b3AobV9ibG9jay0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSksIGxvZ2ljYWxIZWlnaHRGb3JM
aW5lKG1fYmxvY2ssIG1faXNGaXJzdExpbmUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CkBAIC0yMTcsMTIgKzIxNywxMiBAQCBpbmxpbmUgdm9pZCBMaW5l
V2lkdGg6OnNocmlua0F2YWlsYWJsZVdpZHRoRm9yTmV3RmxvYXRJZk5lZWRlZChSZW5kZXJCbG9j
azo6RmxvYQogCiAgICAgU2hhcGVPdXRzaWRlSW5mbyogc2hhcGVPdXRzaWRlSW5mbyA9IG5ld0Zs
b2F0LT5yZW5kZXJlcigpLT5zaGFwZU91dHNpZGVJbmZvKCk7CiAgICAgaWYgKHNoYXBlT3V0c2lk
ZUluZm8pIHsKLSAgICAgICAgc2hhcGVPdXRzaWRlSW5mby0+Y29tcHV0ZVNlZ21lbnRzRm9yQ29u
dGFpbmluZ0Jsb2NrTGluZShtX2Jsb2NrLT5sb2dpY2FsSGVpZ2h0KCksIG1fYmxvY2stPmxvZ2lj
YWxUb3BGb3JGbG9hdChuZXdGbG9hdCksIGxvZ2ljYWxIZWlnaHRGb3JMaW5lKG1fYmxvY2ssIG1f
aXNGaXJzdExpbmUpKTsKKyAgICAgICAgc2hhcGVPdXRzaWRlSW5mby0+Y29tcHV0ZVNlZ21lbnRz
Rm9yQ29udGFpbmluZ0Jsb2NrTGluZShtX2Jsb2NrLT5sb2dpY2FsSGVpZ2h0KCksIG5ld0Zsb2F0
LT5sb2dpY2FsVG9wKG1fYmxvY2stPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpLCBsb2dpY2Fs
SGVpZ2h0Rm9yTGluZShtX2Jsb2NrLCBtX2lzRmlyc3RMaW5lKSk7CiAgICAgfQogI2VuZGlmCiAK
ICAgICBpZiAobmV3RmxvYXQtPnR5cGUoKSA9PSBSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6
OkZsb2F0TGVmdCkgewotICAgICAgICBmbG9hdCBuZXdMZWZ0ID0gbV9ibG9jay0+bG9naWNhbFJp
Z2h0Rm9yRmxvYXQobmV3RmxvYXQpOworICAgICAgICBmbG9hdCBuZXdMZWZ0ID0gbmV3RmxvYXQt
PmxvZ2ljYWxSaWdodChtX2Jsb2NrLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKTsKICNpZiBF
TkFCTEUoQ1NTX1NIQVBFUykKICAgICAgICAgaWYgKHByZXZpb3VzU2hhcGVPdXRzaWRlSW5mbykK
ICAgICAgICAgICAgIG5ld0xlZnQgLT0gcHJldmlvdXNTaGFwZU91dHNpZGVJbmZvLT5yaWdodFNl
Z21lbnRNYXJnaW5Cb3hEZWx0YSgpOwpAQCAtMjM0LDcgKzIzNCw3IEBAIGlubGluZSB2b2lkIExp
bmVXaWR0aDo6c2hyaW5rQXZhaWxhYmxlV2lkdGhGb3JOZXdGbG9hdElmTmVlZGVkKFJlbmRlckJs
b2NrOjpGbG9hCiAgICAgICAgICAgICBuZXdMZWZ0ICs9IGZsb29yVG9JbnQobV9ibG9jay0+dGV4
dEluZGVudE9mZnNldCgpKTsKICAgICAgICAgbV9sZWZ0ID0gbWF4PGZsb2F0PihtX2xlZnQsIG5l
d0xlZnQpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGZsb2F0IG5ld1JpZ2h0ID0gbV9ibG9jay0+
bG9naWNhbExlZnRGb3JGbG9hdChuZXdGbG9hdCk7CisgICAgICAgIGZsb2F0IG5ld1JpZ2h0ID0g
bmV3RmxvYXQtPmxvZ2ljYWxMZWZ0KG1fYmxvY2stPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkp
OwogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQogICAgICAgICBpZiAocHJldmlvdXNTaGFwZU91dHNp
ZGVJbmZvKQogICAgICAgICAgICAgbmV3UmlnaHQgLT0gcHJldmlvdXNTaGFwZU91dHNpZGVJbmZv
LT5sZWZ0U2VnbWVudE1hcmdpbkJveERlbHRhKCk7CkBAIC0yNDM3LDcgKzI0MzcsNyBAQCBib29s
IFJlbmRlckJsb2NrOjpjaGVja1BhZ2luYXRpb25BbmRGbG9hdHNBdEVuZExpbmUoTGluZUxheW91
dFN0YXRlJiBsYXlvdXRTdGF0ZQogICAgIEZsb2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgZW5kID0g
ZmxvYXRpbmdPYmplY3RTZXQuZW5kKCk7CiAgICAgZm9yIChGbG9hdGluZ09iamVjdFNldEl0ZXJh
dG9yIGl0ID0gZmxvYXRpbmdPYmplY3RTZXQuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAg
ICAgICAgIEZsb2F0aW5nT2JqZWN0KiBmID0gKml0OwotICAgICAgICBpZiAobG9naWNhbEJvdHRv
bUZvckZsb2F0KGYpID49IGxvZ2ljYWxUb3AgJiYgbG9naWNhbEJvdHRvbUZvckZsb2F0KGYpIDwg
bG9naWNhbEJvdHRvbSkKKyAgICAgICAgaWYgKGYtPmxvZ2ljYWxCb3R0b20oaXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSkgPj0gbG9naWNhbFRvcCAmJiBmLT5sb2dpY2FsQm90dG9tKGlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCkpIDwgbG9naWNhbEJvdHRvbSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKQEAgLTMwNDUsNyArMzA0NSw3IEBAIElubGluZUl0ZXJhdG9yIFJlbmRl
ckJsb2NrOjpMaW5lQnJlYWtlcjo6bmV4dFNlZ21lbnRCcmVhayhJbmxpbmVCaWRpUmVzb2x2ZXIm
IHJlCiAgICAgICAgICAgICAvLyBJZiBpdCBkb2VzLCBwb3NpdGlvbiBpdCBub3csIG90aGVyd2lz
ZSwgcG9zaXRpb24KICAgICAgICAgICAgIC8vIGl0IGFmdGVyIG1vdmluZyB0byBuZXh0IGxpbmUg
KGluIG5ld0xpbmUoKSBmdW5jKQogICAgICAgICAgICAgLy8gRklYTUU6IEJ1ZyAxMTAzNzI6IFBy
b3Blcmx5IHBvc2l0aW9uIG11bHRpcGxlIHN0YWNrZWQgZmxvYXRzIHdpdGggbm9uLXJlY3Rhbmd1
bGFyIHNoYXBlIG91dHNpZGUuCi0gICAgICAgICAgICBpZiAoZmxvYXRzRml0T25MaW5lICYmIHdp
ZHRoLmZpdHNPbkxpbmVFeGNsdWRpbmdUcmFpbGluZ1doaXRlc3BhY2UobV9ibG9jay0+bG9naWNh
bFdpZHRoRm9yRmxvYXQoZikpKSB7CisgICAgICAgICAgICBpZiAoZmxvYXRzRml0T25MaW5lICYm
IHdpZHRoLmZpdHNPbkxpbmVFeGNsdWRpbmdUcmFpbGluZ1doaXRlc3BhY2UoZi0+bG9naWNhbFdp
ZHRoKG1fYmxvY2stPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpKSkgewogICAgICAgICAgICAg
ICAgIG1fYmxvY2stPnBvc2l0aW9uTmV3RmxvYXRPbkxpbmUoZiwgbGFzdEZsb2F0RnJvbVByZXZp
b3VzTGluZSwgbGluZUluZm8sIHdpZHRoKTsKICAgICAgICAgICAgICAgICBpZiAobEJyZWFrLm1f
b2JqID09IGN1cnJlbnQubV9vYmopIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFsQnJl
YWsubV9wb3MpOwpAQCAtMzY1MSw3ICszNjUxLDcgQEAgYm9vbCBSZW5kZXJCbG9jazo6cG9zaXRp
b25OZXdGbG9hdE9uTGluZShGbG9hdGluZ09iamVjdCogbmV3RmxvYXQsIEZsb2F0aW5nT2JqZWMK
ICAgICBjb25zdCBGbG9hdGluZ09iamVjdFNldCYgZmxvYXRpbmdPYmplY3RTZXQgPSBtX2Zsb2F0
aW5nT2JqZWN0cy0+c2V0KCk7CiAgICAgQVNTRVJUKGZsb2F0aW5nT2JqZWN0U2V0Lmxhc3QoKSA9
PSBuZXdGbG9hdCk7CiAKLSAgICBMYXlvdXRVbml0IGZsb2F0TG9naWNhbFRvcCA9IGxvZ2ljYWxU
b3BGb3JGbG9hdChuZXdGbG9hdCk7CisgICAgTGF5b3V0VW5pdCBmbG9hdExvZ2ljYWxUb3AgPSBu
ZXdGbG9hdC0+bG9naWNhbFRvcChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKTsKICAgICBpbnQg
cGFnaW5hdGlvblN0cnV0ID0gbmV3RmxvYXQtPnBhZ2luYXRpb25TdHJ1dCgpOwogCiAgICAgaWYg
KGZsb2F0TG9naWNhbFRvcCAtIHBhZ2luYXRpb25TdHJ1dCAhPSBsb2dpY2FsSGVpZ2h0KCkgKyBs
aW5lSW5mby5mbG9hdFBhZ2luYXRpb25TdHJ1dCgpKQpAQCAtMzY2NSw3ICszNjY1LDcgQEAgYm9v
bCBSZW5kZXJCbG9jazo6cG9zaXRpb25OZXdGbG9hdE9uTGluZShGbG9hdGluZ09iamVjdCogbmV3
RmxvYXQsIEZsb2F0aW5nT2JqZWMKICAgICAgICAgRmxvYXRpbmdPYmplY3QqIGYgPSAqaXQ7CiAg
ICAgICAgIGlmIChmID09IGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUpCiAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgaWYgKGxvZ2ljYWxUb3BGb3JGbG9hdChmKSA9PSBsb2dpY2FsSGVpZ2h0
KCkgKyBsaW5lSW5mby5mbG9hdFBhZ2luYXRpb25TdHJ1dCgpKSB7CisgICAgICAgIGlmIChmLT5s
b2dpY2FsVG9wKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpID09IGxvZ2ljYWxIZWlnaHQoKSAr
IGxpbmVJbmZvLmZsb2F0UGFnaW5hdGlvblN0cnV0KCkpIHsKICAgICAgICAgICAgIGYtPnNldFBh
Z2luYXRpb25TdHJ1dChwYWdpbmF0aW9uU3RydXQgKyBmLT5wYWdpbmF0aW9uU3RydXQoKSk7CiAg
ICAgICAgICAgICBSZW5kZXJCb3gqIG8gPSBmLT5yZW5kZXJlcigpOwogICAgICAgICAgICAgc2V0
TG9naWNhbFRvcEZvckNoaWxkKG8sIGxvZ2ljYWxUb3BGb3JDaGlsZChvKSArIG1hcmdpbkJlZm9y
ZUZvckNoaWxkKG8pICsgcGFnaW5hdGlvblN0cnV0KTsKQEAgLTM2NzQsOSArMzY3NCw5IEBAIGJv
b2wgUmVuZGVyQmxvY2s6OnBvc2l0aW9uTmV3RmxvYXRPbkxpbmUoRmxvYXRpbmdPYmplY3QqIG5l
d0Zsb2F0LCBGbG9hdGluZ09iamVjCiAgICAgICAgICAgICBvLT5sYXlvdXRJZk5lZWRlZCgpOwog
ICAgICAgICAgICAgLy8gU2F2ZSB0aGUgb2xkIGxvZ2ljYWwgdG9wIGJlZm9yZSBjYWxsaW5nIHJl
bW92ZVBsYWNlZE9iamVjdCB3aGljaCB3aWxsIHNldAogICAgICAgICAgICAgLy8gaXNQbGFjZWQg
dG8gZmFsc2UuIE90aGVyd2lzZSBpdCB3aWxsIHRyaWdnZXIgYW4gYXNzZXJ0IGluIGxvZ2ljYWxU
b3BGb3JGbG9hdC4KLSAgICAgICAgICAgIExheW91dFVuaXQgb2xkTG9naWNhbFRvcCA9IGxvZ2lj
YWxUb3BGb3JGbG9hdChmKTsKKyAgICAgICAgICAgIExheW91dFVuaXQgb2xkTG9naWNhbFRvcCA9
IGYtPmxvZ2ljYWxUb3AoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSk7CiAgICAgICAgICAgICBt
X2Zsb2F0aW5nT2JqZWN0cy0+cmVtb3ZlUGxhY2VkT2JqZWN0KGYpOwotICAgICAgICAgICAgc2V0
TG9naWNhbFRvcEZvckZsb2F0KGYsIG9sZExvZ2ljYWxUb3AgKyBwYWdpbmF0aW9uU3RydXQpOwor
ICAgICAgICAgICAgZi0+c2V0TG9naWNhbFRvcChvbGRMb2dpY2FsVG9wICsgcGFnaW5hdGlvblN0
cnV0LCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKTsKICAgICAgICAgICAgIG1fZmxvYXRpbmdP
YmplY3RzLT5hZGRQbGFjZWRPYmplY3QoZik7CiAgICAgICAgIH0KICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>