<?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>118557</bug_id>
          
          <creation_ts>2013-07-11 03:11:22 -0700</creation_ts>
          <short_desc>Remove unused Windows CE files</short_desc>
          <delta_ts>2013-07-11 04:44:51 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Other</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="Patrick R. Gansterer">paroga</reporter>
          <assigned_to name="Patrick R. Gansterer">paroga</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>907581</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2013-07-11 03:11:22 -0700</bug_when>
    <thetext>Remove unused Windows CE files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907582</commentid>
    <comment_count>1</comment_count>
      <attachid>206443</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2013-07-11 03:13:41 -0700</bug_when>
    <thetext>Created attachment 206443
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907595</commentid>
    <comment_count>2</comment_count>
      <attachid>206443</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-11 04:44:49 -0700</bug_when>
    <thetext>Comment on attachment 206443
Patch

Clearing flags on attachment: 206443

Committed r152566: &lt;http://trac.webkit.org/changeset/152566&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907596</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-11 04:44:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206443</attachid>
            <date>2013-07-11 03:13:41 -0700</date>
            <delta_ts>2013-07-11 04:44:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118557.patch</filename>
            <type>text/plain</type>
            <size>34787</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYzNmMjM3OC4uMjcxNjk1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0wNy0xMSAg
UGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUg
dW51c2VkIFdpbmRvd3MgQ0UgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExODU1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogd3RmL3dpbmNlL0Zhc3RNYWxsb2NXaW5DRS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIHd0Zi93aW5jZS9NZW1vcnlNYW5hZ2VyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3dGYvd2luY2UvTWVtb3J5TWFuYWdlci5oOiBSZW1vdmVkLgorCiAyMDEzLTA3LTEwICBNaWNo
YWVsIEJyw7xuaW5nICA8bWljaGFlbC5icnVuaW5nQGRpZ2lhLmNvbT4KIAogICAgICAgICBXb3Jr
YXJvdW5kIGZvciB4ODYgb3B0aW1pemVyIGJ1ZyBpbiBNU1ZDIDIwMTIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi93aW5jZS9GYXN0TWFsbG9jV2luQ0UuaCBiL1NvdXJjZS9XVEYvd3RmL3dp
bmNlL0Zhc3RNYWxsb2NXaW5DRS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjAx
MjQ5Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbmNlL0Zhc3RNYWxsb2NXaW5DRS5o
CisrKyAvZGV2L251bGwKQEAgLTEsMTc1ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAy
MDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZAotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgot
ICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lmbmRlZiBXVEZfRmFzdE1hbGxvY1dpbkNFX2gKLSNk
ZWZpbmUgV1RGX0Zhc3RNYWxsb2NXaW5DRV9oCi0KLSNpbmNsdWRlIDxuZXcuaD4KLQotI2lmZGVm
IF9fY3BsdXNwbHVzCi0jaW5jbHVkZSA8bmV3PgotI2luY2x1ZGUgPHd0Zi93aW5jZS9NZW1vcnlN
YW5hZ2VyLmg+Ci1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi12b2lkKiBmYXN0TWFsbG9jKHNpemVf
dCBuKTsKLXZvaWQqIGZhc3RDYWxsb2Moc2l6ZV90IG5fZWxlbWVudHMsIHNpemVfdCBlbGVtZW50
X3NpemUpOwotdm9pZCBmYXN0RnJlZSh2b2lkKiBwKTsKLXZvaWQqIGZhc3RSZWFsbG9jKHZvaWQq
IHAsIHNpemVfdCBuKTsKLXZvaWQqIGZhc3RaZXJvZWRNYWxsb2Moc2l6ZV90IG4pOwotLy8gVGhl
c2UgZnVuY3Rpb25zIHJldHVybiAwIGlmIGFuIGFsbG9jYXRpb24gZmFpbHMuCi12b2lkKiB0cnlG
YXN0TWFsbG9jKHNpemVfdCBuKTsKLXZvaWQqIHRyeUZhc3RaZXJvZWRNYWxsb2Moc2l6ZV90IG4p
Owotdm9pZCogdHJ5RmFzdENhbGxvYyhzaXplX3Qgbl9lbGVtZW50cywgc2l6ZV90IGVsZW1lbnRf
c2l6ZSk7Ci12b2lkKiB0cnlGYXN0UmVhbGxvYyh2b2lkKiBwLCBzaXplX3Qgbik7Ci1jaGFyKiBm
YXN0U3RyRHVwKGNvbnN0IGNoYXIqKTsKLQotI2lmbmRlZiBOREVCVUcKLXZvaWQgZmFzdE1hbGxv
Y0ZvcmJpZCgpOwotdm9pZCBmYXN0TWFsbG9jQWxsb3coKTsKLSNlbmRpZgotCi0jaWYgIWRlZmlu
ZWQoVVNFX1NZU1RFTV9NQUxMT0MpIHx8ICFVU0VfU1lTVEVNX01BTExPQwotCi0jZGVmaW5lIG1h
bGxvYyhuKSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhc3RNYWxsb2MobikKLSNkZWZpbmUg
Y2FsbG9jKG5fZWxlbWVudHMsIGVsZW1lbnRfc2l6ZSkgICAgZmFzdENhbGxvYyhuX2VsZW1lbnRz
LCBlbGVtZW50X3NpemUpCi0jZGVmaW5lIHJlYWxsb2MocCwgbikgICAgICAgICAgICAgICAgICAg
ICAgIGZhc3RSZWFsbG9jKHAsIG4pCi0jZGVmaW5lIGZyZWUocCkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZhc3RGcmVlKHApCi0jZGVmaW5lIHN0cmR1cChwKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZhc3RTdHJEdXAocCkKLQotI2Vsc2UKLQotI2RlZmluZSBzdHJkdXAocCkgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfc3RyZHVwKHApCi0KLSNlbmRpZgotCi0jaWZkZWYgX19j
cGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLSNpZiAhZGVmaW5lZChV
U0VfU1lTVEVNX01BTExPQykgfHwgIVVTRV9TWVNURU1fTUFMTE9DCi1zdGF0aWMgaW5saW5lIHZv
aWQqIF9fY2RlY2wgb3BlcmF0b3IgbmV3KHNpemVfdCBzKSB7IHJldHVybiBmYXN0TWFsbG9jKHMp
OyB9Ci1zdGF0aWMgaW5saW5lIHZvaWQgX19jZGVjbCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkg
eyBmYXN0RnJlZShwKTsgfQotc3RhdGljIGlubGluZSB2b2lkKiBfX2NkZWNsIG9wZXJhdG9yIG5l
d1tdKHNpemVfdCBzKSB7IHJldHVybiBmYXN0TWFsbG9jKHMpOyB9Ci1zdGF0aWMgaW5saW5lIHZv
aWQgX19jZGVjbCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IGZhc3RGcmVlKHApOyB9Ci1z
dGF0aWMgaW5saW5lIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QgcywgY29uc3Qgc3RkOjpub3Ro
cm93X3QmKSB0aHJvdygpIHsgcmV0dXJuIGZhc3RNYWxsb2Mocyk7IH0KLXN0YXRpYyBpbmxpbmUg
dm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCwgY29uc3Qgc3RkOjpub3Rocm93X3QmKSB0aHJv
dygpIHsgZmFzdEZyZWUocCk7IH0KLXN0YXRpYyBpbmxpbmUgdm9pZCogb3BlcmF0b3IgbmV3W10o
c2l6ZV90IHMsIGNvbnN0IHN0ZDo6bm90aHJvd190JikgdGhyb3coKSB7IHJldHVybiBmYXN0TWFs
bG9jKHMpOyB9Ci1zdGF0aWMgaW5saW5lIHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCwg
Y29uc3Qgc3RkOjpub3Rocm93X3QmKSB0aHJvdygpIHsgZmFzdEZyZWUocCk7IH0KLSNlbmRpZgot
Ci1uYW1lc3BhY2UgV1RGIHsKLSAgICAvLyBUaGlzIGRlZmluZXMgYSB0eXBlIHdoaWNoIGhvbGRz
IGFuIHVuc2lnbmVkIGludGVnZXIgYW5kIGlzIHRoZSBzYW1lCi0gICAgLy8gc2l6ZSBhcyB0aGUg
bWluaW1hbGx5IGFsaWduZWQgbWVtb3J5IGFsbG9jYXRpb24uCi0gICAgdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIGxvbmcgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyOwotCi0gICAgbmFtZXNwYWNlIEludGVy
bmFsIHsKLSAgICAgICAgZW51bSBBbGxvY1R5cGUgeyAgICAgICAgICAgICAgICAgICAgLy8gU3Rh
cnQgd2l0aCBhbiB1bnVzdWFsIG51bWJlciBpbnN0ZWFkIG9mIHplcm8sIGJlY2F1c2UgemVybyBp
cyBjb21tb24uCi0gICAgICAgICAgICBBbGxvY1R5cGVNYWxsb2MgPSAweDM3NWQ2NzUwLCAgIC8v
IEVuY29tcGFzc2VzIGZhc3RNYWxsb2MsIGZhc3RaZXJvZWRNYWxsb2MsIGZhc3RDYWxsb2MsIGZh
c3RSZWFsbG9jLgotICAgICAgICAgICAgQWxsb2NUeXBlQ2xhc3NOZXcsICAgICAgICAgICAgICAv
LyBFbmNvbXBhc3NlcyBjbGFzcyBvcGVyYXRvciBuZXcgZnJvbSBGYXN0QWxsb2NCYXNlLgotICAg
ICAgICAgICAgQWxsb2NUeXBlQ2xhc3NOZXdBcnJheSwgICAgICAgICAvLyBFbmNvbXBhc3NlcyBj
bGFzcyBvcGVyYXRvciBuZXdbXSBmcm9tIEZhc3RBbGxvY0Jhc2UuCi0gICAgICAgICAgICBBbGxv
Y1R5cGVGYXN0TmV3LCAgICAgICAgICAgICAgIC8vIEVuY29tcGFzc2VzIGZhc3ROZXcuCi0gICAg
ICAgICAgICBBbGxvY1R5cGVGYXN0TmV3QXJyYXksICAgICAgICAgIC8vIEVuY29tcGFzc2VzIGZh
c3ROZXdBcnJheS4KLSAgICAgICAgICAgIEFsbG9jVHlwZU5ldywgICAgICAgICAgICAgICAgICAg
Ly8gRW5jb21wYXNzZXMgZ2xvYmFsIG9wZXJhdG9yIG5ldy4KLSAgICAgICAgICAgIEFsbG9jVHlw
ZU5ld0FycmF5ICAgICAgICAgICAgICAgLy8gRW5jb21wYXNzZXMgZ2xvYmFsIG9wZXJhdG9yIG5l
d1tdLgotICAgICAgICB9OwotICAgIH0KLQotCi0jaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENI
X1ZBTElEQVRJT04pCi0KLSAgICAvLyBNYWxsb2MgdmFsaWRhdGlvbiBpcyBhIHNjaGVtZSB3aGVy
ZWJ5IGEgdGFnIGlzIGF0dGFjaGVkIHRvIGFuCi0gICAgLy8gYWxsb2NhdGlvbiB3aGljaCBpZGVu
dGlmaWVzIGhvdyBpdCB3YXMgb3JpZ2luYWxseSBhbGxvY2F0ZWQuCi0gICAgLy8gVGhpcyBhbGxv
d3MgdXMgdG8gdmVyaWZ5IHRoYXQgdGhlIGZyZWVpbmcgb3BlcmF0aW9uIG1hdGNoZXMgdGhlCi0g
ICAgLy8gYWxsb2NhdGlvbiBvcGVyYXRpb24uIElmIG1lbW9yeSBpcyBhbGxvY2F0ZWQgd2l0aCBv
cGVyYXRvciBuZXdbXQotICAgIC8vIGJ1dCBmcmVlZCB3aXRoIGZyZWUgb3IgZGVsZXRlLCB0aGlz
IHN5c3RlbSB3b3VsZCBkZXRlY3QgdGhhdC4KLSAgICAvLyBJbiB0aGUgaW1wbGVtZW50YXRpb24g
aGVyZSwgdGhlIHRhZyBpcyBhbiBpbnRlZ2VyIHByZXBlbmRlZCB0bwotICAgIC8vIHRoZSBhbGxv
Y2F0aW9uIG1lbW9yeSB3aGljaCBpcyBhc3NpZ25lZCBvbmUgb2YgdGhlIEFsbG9jVHlwZQotICAg
IC8vIGVudW1lcmF0aW9uIHZhbHVlcy4gQW4gYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24gb2Yg
dGhpcwotICAgIC8vIHNjaGVtZSBjb3VsZCBzdG9yZSB0aGUgdGFnIHNvbWV3aGVyZSBlbHNlIG9y
IGlnbm9yZSBpdC4KLSAgICAvLyBVc2VycyBvZiBGYXN0TWFsbG9jIGRvbid0IG5lZWQgdG8ga25v
dyBvciBjYXJlIGhvdyB0aGlzIHRhZ2dpbmcKLSAgICAvLyBpcyBpbXBsZW1lbnRlZC4KLQotICAg
IG5hbWVzcGFjZSBJbnRlcm5hbCB7Ci0KLSAgICAgICAgLy8gUmV0dXJuIHRoZSBBbGxvY1R5cGUg
dGFnIGFzc29jaWF0ZWQgd2l0aCB0aGUgYWxsb2NhdGVkIGJsb2NrIHAuCi0gICAgICAgIGlubGlu
ZSBBbGxvY1R5cGUgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5cGUoY29uc3Qgdm9pZCogcCkK
LSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKiB0eXBl
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocCkgLSAxOwotICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFsbG9jVHlwZT4oKnR5cGUpOwotICAgICAgICB9
Ci0KLSAgICAgICAgLy8gUmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBBbGxvY1R5cGUgdGFnIGFz
c29jaWF0ZWQgd2l0aCB0aGUgYWxsb2NhdGVkIGJsb2NrIHAuCi0gICAgICAgIGlubGluZSBBbGxv
Y0FsaWdubWVudEludGVnZXIqIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25WYWx1ZSh2b2lkKiBw
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBbGxvY0Fs
aWdubWVudEludGVnZXIqPihzdGF0aWNfY2FzdDxjaGFyKj4ocCkgLSBzaXplb2YoQWxsb2NBbGln
bm1lbnRJbnRlZ2VyKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBTZXQgdGhlIEFsbG9jVHlw
ZSB0YWcgdG8gYmUgYXNzb2NpYWdlZCB3aXRoIHRoZSBhbGxvY2F0ZWQgYmxvY2sgcC4KLSAgICAg
ICAgaW5saW5lIHZvaWQgc2V0RmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5cGUodm9pZCogcCwg
QWxsb2NUeXBlIGFsbG9jVHlwZSkKLSAgICAgICAgewotICAgICAgICAgICAgQWxsb2NBbGlnbm1l
bnRJbnRlZ2VyKiB0eXBlID0gc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocCkg
LSAxOwotICAgICAgICAgICAgKnR5cGUgPSBzdGF0aWNfY2FzdDxBbGxvY0FsaWdubWVudEludGVn
ZXI+KGFsbG9jVHlwZSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBIYW5kbGUgYSBkZXRlY3Rl
ZCBhbGxvYy9mcmVlIG1pc21hdGNoLiBCeSBkZWZhdWx0IHRoaXMgY2FsbHMgQ1JBU0goKS4KLSAg
ICAgICAgdm9pZCBmYXN0TWFsbG9jTWF0Y2hGYWlsZWQodm9pZCogcCk7Ci0KLSAgICB9IC8vIG5h
bWVzcGFjZSBJbnRlcm5hbAotCi0gICAgLy8gVGhpcyBpcyBhIGhpZ2hlciBsZXZlbCBmdW5jdGlv
biB3aGljaCBpcyB1c2VkIGJ5IEZhc3RNYWxsb2MtdXNpbmcgY29kZS4KLSAgICBpbmxpbmUgdm9p
ZCBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyh2b2lkKiBwLCBJbnRlcm5hbDo6QWxsb2NU
eXBlIGFsbG9jVHlwZSkKLSAgICB7Ci0gICAgICAgIGlmICghcCkKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICBJbnRlcm5hbDo6c2V0RmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5cGUo
cCwgYWxsb2NUeXBlKTsKLSAgICB9Ci0KLSAgICAvLyBUaGlzIGlzIGEgaGlnaGVyIGxldmVsIGZ1
bmN0aW9uIHdoaWNoIGlzIHVzZWQgYnkgRmFzdE1hbGxvYy11c2luZyBjb2RlLgotICAgIGlubGlu
ZSB2b2lkIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlRnJlZSh2b2lkKiBwLCBJbnRlcm5hbDo6QWxs
b2NUeXBlIGFsbG9jVHlwZSkKLSAgICB7Ci0gICAgICAgIGlmICghcCkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICBpZiAoSW50ZXJuYWw6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25U
eXBlKHApICE9IGFsbG9jVHlwZSkKLSAgICAgICAgICAgIEludGVybmFsOjpmYXN0TWFsbG9jTWF0
Y2hGYWlsZWQocCk7Ci0gICAgICAgIEludGVybmFsOjpzZXRGYXN0TWFsbG9jTWF0Y2hWYWxpZGF0
aW9uVHlwZShwLCBJbnRlcm5hbDo6QWxsb2NUeXBlTWFsbG9jKTsgIC8vIFNldCBpdCB0byB0aGlz
IHNvIHRoYXQgZmFzdEZyZWUgdGhpbmtzIGl0J3MgT0suCi0gICAgfQotCi0jZWxzZQotCi0gICAg
aW5saW5lIHZvaWQgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVNYWxsb2Modm9pZCosIEludGVybmFs
OjpBbGxvY1R5cGUpCi0gICAgewotICAgIH0KLQotICAgIGlubGluZSB2b2lkIGZhc3RNYWxsb2NN
YXRjaFZhbGlkYXRlRnJlZSh2b2lkKiwgSW50ZXJuYWw6OkFsbG9jVHlwZSkKLSAgICB7Ci0gICAg
fQotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8g
V1RGX0Zhc3RNYWxsb2NXaW5DRV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW5jZS9N
ZW1vcnlNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbmNlL01lbW9yeU1hbmFnZXIuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MWQ0ZjgwLi4wMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3dpbmNlL01lbW9yeU1hbmFnZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAwOSBUb3JjaCBNb2JpbGUg
SW5jLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTWVtb3J5TWFuYWdlci5oIgotCi0j
dW5kZWYgbWFsbG9jCi0jdW5kZWYgY2FsbG9jCi0jdW5kZWYgcmVhbGxvYwotI3VuZGVmIGZyZWUK
LSN1bmRlZiBzdHJkdXAKLSN1bmRlZiBfc3RyZHVwCi0jdW5kZWYgVmlydHVhbEFsbG9jCi0jdW5k
ZWYgVmlydHVhbEZyZWUKLQotI2luY2x1ZGUgPG1hbGxvYy5oPgotI2luY2x1ZGUgPHdpbmRvd3Mu
aD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLU1lbW9yeU1hbmFnZXIqIG1lbW9yeU1hbmFnZXIoKQot
ewotICAgIHN0YXRpYyBNZW1vcnlNYW5hZ2VyIG1tOwotICAgIHJldHVybiAmbW07Ci19Ci0KLU1l
bW9yeU1hbmFnZXI6Ok1lbW9yeU1hbmFnZXIoKQotOiBtX2FsbG9jYXRpb25DYW5GYWlsKGZhbHNl
KQotewotfQotCi1NZW1vcnlNYW5hZ2VyOjp+TWVtb3J5TWFuYWdlcigpCi17Ci19Ci0KLUhCSVRN
QVAgTWVtb3J5TWFuYWdlcjo6Y3JlYXRlQ29tcGF0aWJsZUJpdG1hcChIREMgaGRjLCBpbnQgd2lk
dGgsIGludCBoZWlnaHQpCi17Ci0gICAgcmV0dXJuIDo6Q3JlYXRlQ29tcGF0aWJsZUJpdG1hcCho
ZGMsIHdpZHRoLCBoZWlnaHQpOwotfQotCi1IQklUTUFQIE1lbW9yeU1hbmFnZXI6OmNyZWF0ZURJ
QlNlY3Rpb24oY29uc3QgQklUTUFQSU5GTyogcGJtaSwgdm9pZCoqIHBwdkJpdHMpCi17Ci0gICAg
cmV0dXJuIDo6Q3JlYXRlRElCU2VjdGlvbigwLCBwYm1pLCBESUJfUkdCX0NPTE9SUywgcHB2Qml0
cywgMCwgMCk7Ci19Ci0KLXZvaWQqIE1lbW9yeU1hbmFnZXI6Om1fbWFsbG9jKHNpemVfdCBzaXpl
KQotewotICAgIHJldHVybiBtYWxsb2Moc2l6ZSk7Ci19Ci0KLXZvaWQqIE1lbW9yeU1hbmFnZXI6
Om1fY2FsbG9jKHNpemVfdCBudW0sIHNpemVfdCBzaXplKQotewotICAgIHJldHVybiBjYWxsb2Mo
bnVtLCBzaXplKTsKLX0KLQotdm9pZCogTWVtb3J5TWFuYWdlcjo6bV9yZWFsbG9jKHZvaWQqIHAs
IHNpemVfdCBzaXplKQotewotICAgIHJldHVybiByZWFsbG9jKHAsIHNpemUpOwotfQotCi12b2lk
IE1lbW9yeU1hbmFnZXI6Om1fZnJlZSh2b2lkKiBwKQotewotICAgIHJldHVybiBmcmVlKHApOwot
fQotCi1ib29sIE1lbW9yeU1hbmFnZXI6OnJlc2l6ZU1lbW9yeSh2b2lkKiwgc2l6ZV90KQotewot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCogTWVtb3J5TWFuYWdlcjo6YWxsb2NhdGU2NGtC
bG9jaygpCi17Ci0gICAgcmV0dXJuIFZpcnR1YWxBbGxvYygwLCA2NTUzNiwgTUVNX0NPTU1JVCB8
IE1FTV9SRVNFUlZFLCBQQUdFX1JFQURXUklURSk7Ci19Ci0KLXZvaWQgTWVtb3J5TWFuYWdlcjo6
ZnJlZTY0a0Jsb2NrKHZvaWQqIHApCi17Ci0gICAgVmlydHVhbEZyZWUocCwgNjU1MzYsIE1FTV9S
RUxFQVNFKTsKLX0KLQotYm9vbCBNZW1vcnlNYW5hZ2VyOjpvbklkbGUoRFdPUkQmIHRpbWVMaW1p
dE1zKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotTFBWT0lEIE1lbW9yeU1hbmFnZXI6OnZp
cnR1YWxBbGxvYyhMUFZPSUQgbHBBZGRyZXNzLCBEV09SRCBkd1NpemUsIERXT1JEIGZsQWxsb2Nh
dGlvblR5cGUsIERXT1JEIGZsUHJvdGVjdCkKLXsKLSAgICByZXR1cm4gOjpWaXJ0dWFsQWxsb2Mo
bHBBZGRyZXNzLCBkd1NpemUsIGZsQWxsb2NhdGlvblR5cGUsIGZsUHJvdGVjdCk7Ci19Ci0KLUJP
T0wgTWVtb3J5TWFuYWdlcjo6dmlydHVhbEZyZWUoTFBWT0lEIGxwQWRkcmVzcywgRFdPUkQgZHdT
aXplLCBEV09SRCBkd0ZyZWVUeXBlKQotewotICAgIHJldHVybiA6OlZpcnR1YWxGcmVlKGxwQWRk
cmVzcywgZHdTaXplLCBkd0ZyZWVUeXBlKTsKLX0KLQotCi0jaWYgZGVmaW5lZChVU0VfU1lTVEVN
X01BTExPQykgJiYgVVNFX1NZU1RFTV9NQUxMT0MKLQotdm9pZCAqZmFzdE1hbGxvYyhzaXplX3Qg
bikgeyByZXR1cm4gbWFsbG9jKG4pOyB9Ci12b2lkICpmYXN0Q2FsbG9jKHNpemVfdCBuX2VsZW1l
bnRzLCBzaXplX3QgZWxlbWVudF9zaXplKSB7IHJldHVybiBjYWxsb2Mobl9lbGVtZW50cywgZWxl
bWVudF9zaXplKTsgfQotdm9pZCBmYXN0RnJlZSh2b2lkKiBwKSB7IHJldHVybiBmcmVlKHApOyB9
Ci12b2lkICpmYXN0UmVhbGxvYyh2b2lkKiBwLCBzaXplX3QgbikgeyByZXR1cm4gcmVhbGxvYyhw
LCBuKTsgfQotCi0jZWxzZQotCi12b2lkICpmYXN0TWFsbG9jKHNpemVfdCBuKSB7IHJldHVybiBN
ZW1vcnlNYW5hZ2VyOjptX21hbGxvYyhuKTsgfQotdm9pZCAqZmFzdENhbGxvYyhzaXplX3Qgbl9l
bGVtZW50cywgc2l6ZV90IGVsZW1lbnRfc2l6ZSkgeyByZXR1cm4gTWVtb3J5TWFuYWdlcjo6bV9j
YWxsb2Mobl9lbGVtZW50cywgZWxlbWVudF9zaXplKTsgfQotdm9pZCBmYXN0RnJlZSh2b2lkKiBw
KSB7IHJldHVybiBNZW1vcnlNYW5hZ2VyOjptX2ZyZWUocCk7IH0KLXZvaWQgKmZhc3RSZWFsbG9j
KHZvaWQqIHAsIHNpemVfdCBuKSB7IHJldHVybiBNZW1vcnlNYW5hZ2VyOjptX3JlYWxsb2MocCwg
bik7IH0KLQotI2VuZGlmCi0KLSNpZm5kZWYgTkRFQlVHCi12b2lkIGZhc3RNYWxsb2NGb3JiaWQo
KSB7fQotdm9pZCBmYXN0TWFsbG9jQWxsb3coKSB7fQotI2VuZGlmCi0KLXZvaWQqIGZhc3RaZXJv
ZWRNYWxsb2Moc2l6ZV90IG4pCi17Ci0gICAgdm9pZCogcCA9IGZhc3RNYWxsb2Mobik7Ci0gICAg
aWYgKHApCi0gICAgICAgIG1lbXNldChwLCAwLCBuKTsKLSAgICByZXR1cm4gcDsKLX0KLQotVHJ5
TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdE1hbGxvYyhzaXplX3QgbikKLXsKLSAgICBNZW1vcnlB
bGxvY2F0aW9uQ2FuRmFpbCBjYW5GYWlsOwotICAgIHJldHVybiBmYXN0TWFsbG9jKG4pOwotfQot
Ci1UcnlNYWxsb2NSZXR1cm5WYWx1ZSB0cnlGYXN0WmVyb2VkTWFsbG9jKHNpemVfdCBuKQotewot
ICAgIE1lbW9yeUFsbG9jYXRpb25DYW5GYWlsIGNhbkZhaWw7Ci0gICAgcmV0dXJuIGZhc3RaZXJv
ZWRNYWxsb2Mobik7Ci19Ci0KLVRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RDYWxsb2Moc2l6
ZV90IG5fZWxlbWVudHMsIHNpemVfdCBlbGVtZW50X3NpemUpCi17Ci0gICAgTWVtb3J5QWxsb2Nh
dGlvbkNhbkZhaWwgY2FuRmFpbDsKLSAgICByZXR1cm4gZmFzdENhbGxvYyhuX2VsZW1lbnRzLCBl
bGVtZW50X3NpemUpOwotfQotCi1UcnlNYWxsb2NSZXR1cm5WYWx1ZSB0cnlGYXN0UmVhbGxvYyh2
b2lkKiBwLCBzaXplX3QgbikKLXsKLSAgICBNZW1vcnlBbGxvY2F0aW9uQ2FuRmFpbCBjYW5GYWls
OwotICAgIHJldHVybiBmYXN0UmVhbGxvYyhwLCBuKTsKLX0KLQotY2hhciogZmFzdFN0ckR1cChj
b25zdCBjaGFyKiBzdHIpCi17Ci0gICAgcmV0dXJuIF9zdHJkdXAoc3RyKTsKLX0KLQotfQpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbmNl
L01lbW9yeU1hbmFnZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3dpbmNlL01lbW9yeU1hbmFnZXIuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQwNTYxMi4uMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi93aW5jZS9NZW1vcnlNYW5hZ2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkgVG9yY2ggTW9iaWxlIEluYy4K
LSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0g
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
Ci0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3aW5iYXNlLmg+Ci0KLXR5cGVkZWYgc3RydWN0IEhC
SVRNQVBfXyogSEJJVE1BUDsKLXR5cGVkZWYgc3RydWN0IEhEQ19fKiBIREM7Ci10eXBlZGVmIHZv
aWQgKkhBTkRMRTsKLXR5cGVkZWYgc3RydWN0IHRhZ0JJVE1BUElORk8gQklUTUFQSU5GTzsKLQot
bmFtZXNwYWNlIFdURiB7Ci0KLSAgICBjbGFzcyBNZW1vcnlNYW5hZ2VyIHsKLSAgICBwdWJsaWM6
Ci0gICAgICAgIE1lbW9yeU1hbmFnZXIoKTsKLSAgICAgICAgfk1lbW9yeU1hbmFnZXIoKTsKLQot
ICAgICAgICBib29sIGFsbG9jYXRpb25DYW5GYWlsKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvY2F0
aW9uQ2FuRmFpbDsgfQotICAgICAgICB2b2lkIHNldEFsbG9jYXRpb25DYW5GYWlsKGJvb2wgYykg
eyBtX2FsbG9jYXRpb25DYW5GYWlsID0gYzsgfQotCi0gICAgICAgIHN0YXRpYyBIQklUTUFQIGNy
ZWF0ZUNvbXBhdGlibGVCaXRtYXAoSERDIGhkYywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLSAg
ICAgICAgc3RhdGljIEhCSVRNQVAgY3JlYXRlRElCU2VjdGlvbihjb25zdCBCSVRNQVBJTkZPKiBw
Ym1pLCB2b2lkKiogcHB2Qml0cyk7Ci0gICAgICAgIHN0YXRpYyB2b2lkKiBtX21hbGxvYyhzaXpl
X3Qgc2l6ZSk7Ci0gICAgICAgIHN0YXRpYyB2b2lkKiBtX2NhbGxvYyhzaXplX3QgbnVtLCBzaXpl
X3Qgc2l6ZSk7Ci0gICAgICAgIHN0YXRpYyB2b2lkKiBtX3JlYWxsb2Modm9pZCogcCwgc2l6ZV90
IHNpemUpOwotICAgICAgICBzdGF0aWMgdm9pZCBtX2ZyZWUodm9pZCopOwotICAgICAgICBzdGF0
aWMgYm9vbCByZXNpemVNZW1vcnkodm9pZCogcCwgc2l6ZV90IG5ld1NpemUpOwotICAgICAgICBz
dGF0aWMgdm9pZCogYWxsb2NhdGU2NGtCbG9jaygpOwotICAgICAgICBzdGF0aWMgdm9pZCBmcmVl
NjRrQmxvY2sodm9pZCopOwotICAgICAgICBzdGF0aWMgYm9vbCBvbklkbGUoRFdPUkQmIHRpbWVM
aW1pdE1zKTsKLSAgICAgICAgc3RhdGljIExQVk9JRCB2aXJ0dWFsQWxsb2MoTFBWT0lEIGxwQWRk
cmVzcywgRFdPUkQgZHdTaXplLCBEV09SRCBmbEFsbG9jYXRpb25UeXBlLCBEV09SRCBmbFByb3Rl
Y3QpOwotICAgICAgICBzdGF0aWMgQk9PTCB2aXJ0dWFsRnJlZShMUFZPSUQgbHBBZGRyZXNzLCBE
V09SRCBkd1NpemUsIERXT1JEIGR3RnJlZVR5cGUpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAg
ZnJpZW5kIE1lbW9yeU1hbmFnZXIqIG1lbW9yeU1hbmFnZXIoKTsKLQotICAgICAgICBib29sIG1f
YWxsb2NhdGlvbkNhbkZhaWw7Ci0gICAgfTsKLQotICAgIE1lbW9yeU1hbmFnZXIqIG1lbW9yeU1h
bmFnZXIoKTsKLQotICAgIGNsYXNzIE1lbW9yeUFsbG9jYXRpb25DYW5GYWlsIHsKLSAgICBwdWJs
aWM6Ci0gICAgICAgIE1lbW9yeUFsbG9jYXRpb25DYW5GYWlsKCkgOiBtX29sZChtZW1vcnlNYW5h
Z2VyKCktPmFsbG9jYXRpb25DYW5GYWlsKCkpIHsgbWVtb3J5TWFuYWdlcigpLT5zZXRBbGxvY2F0
aW9uQ2FuRmFpbCh0cnVlKTsgfQotICAgICAgICB+TWVtb3J5QWxsb2NhdGlvbkNhbkZhaWwoKSB7
IG1lbW9yeU1hbmFnZXIoKS0+c2V0QWxsb2NhdGlvbkNhbkZhaWwobV9vbGQpOyB9Ci0gICAgcHJp
dmF0ZToKLSAgICAgICAgYm9vbCBtX29sZDsKLSAgICB9OwotCi0gICAgY2xhc3MgTWVtb3J5QWxs
b2NhdGlvbkNhbm5vdEZhaWwgewotICAgIHB1YmxpYzoKLSAgICAgICAgTWVtb3J5QWxsb2NhdGlv
bkNhbm5vdEZhaWwoKSA6IG1fb2xkKG1lbW9yeU1hbmFnZXIoKS0+YWxsb2NhdGlvbkNhbkZhaWwo
KSkgeyBtZW1vcnlNYW5hZ2VyKCktPnNldEFsbG9jYXRpb25DYW5GYWlsKGZhbHNlKTsgfQotICAg
ICAgICB+TWVtb3J5QWxsb2NhdGlvbkNhbm5vdEZhaWwoKSB7IG1lbW9yeU1hbmFnZXIoKS0+c2V0
QWxsb2NhdGlvbkNhbkZhaWwobV9vbGQpOyB9Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgYm9vbCBt
X29sZDsKLSAgICB9OwotfQotCi11c2luZyBXVEY6Ok1lbW9yeU1hbmFnZXI7Ci11c2luZyBXVEY6
Om1lbW9yeU1hbmFnZXI7Ci11c2luZyBXVEY6Ok1lbW9yeUFsbG9jYXRpb25DYW5GYWlsOwotdXNp
bmcgV1RGOjpNZW1vcnlBbGxvY2F0aW9uQ2Fubm90RmFpbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMWQyNmRk
Li4wNjc2YjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDctMTEgIFBhdHJp
Y2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHVudXNl
ZCBXaW5kb3dzIENFIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTg1NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHBsYXRmb3JtL3dpbmNlL0N1cnNvcldpbkNFLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW5jZS9QYXN0ZWJvYXJkV2luQ0UuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbmNlL1NlYXJjaFBvcHVwTWVudVdpbkNFLmNwcDogUmVtb3ZlZC4K
KwogMjAxMy0wNy0xMSAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1hcmlvLnByYWRhQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIFtBVEtdIFJlZmFjdG9yIGNvZGUgZm9yIHRyYW5zbGF0aW5nIG9mZnNl
dHMgYmV0d2VlbiBXZWJDb3JlIGExMXkgYW5kIEFUSwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luY2UvQ3Vyc29yV2luQ0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luY2UvQ3Vyc29yV2luQ0UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
MGJhODc5Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0N1cnNv
cldpbkNFLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA4LTIwMDkgVG9yY2ggTW9iaWxlIEluYy4KLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwot
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
LSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoK
LSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkN1cnNvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBBbGxD
dXJzb3JzIHsKLSAgICBBbGxDdXJzb3JzKCkKLSAgICB7Ci0gICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgTnVtQ3Vyc29yVHlwZXM7ICsraSkKLSAgICAgICAgICAgIG1fY3Vyc29yc1tpXSA9IChD
dXJzb3JUeXBlKSBpOwotICAgIH0KLSAgICBDdXJzb3IgbV9jdXJzb3JzW051bUN1cnNvclR5cGVz
XTsKLX07Ci0KLXN0YXRpYyBjb25zdCBDdXJzb3ImIGdldEN1cnNvcihDdXJzb3JUeXBlIHR5cGUp
Ci17Ci0gICAgc3RhdGljIEFsbEN1cnNvcnMgYWxsQ3Vyc29yczsKLSAgICByZXR1cm4gYWxsQ3Vy
c29ycy5tX2N1cnNvcnNbdHlwZV07Ci19Ci0KLUN1cnNvcjo6Q3Vyc29yKGNvbnN0IEN1cnNvciYg
b3RoZXIpCi06IG1fcGxhdGZvcm1DdXJzb3Iob3RoZXIubV9wbGF0Zm9ybUN1cnNvcikKLXsKLX0K
LQotQ3Vyc29yOjpDdXJzb3IoSW1hZ2UqIGltZywgY29uc3QgSW50UG9pbnQmIGhvdHNwb3QpCi06
IG1fcGxhdGZvcm1DdXJzb3IoQ3Vyc29yTm9uZSkKLXsKLX0KLQotQ3Vyc29yOjp+Q3Vyc29yKCkK
LXsKLX0KLQotQ3Vyc29yJiBDdXJzb3I6Om9wZXJhdG9yPShjb25zdCBDdXJzb3ImIG90aGVyKQot
ewotICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBvdGhlci5tX3BsYXRmb3JtQ3Vyc29yOwotICAgIHJl
dHVybiAqdGhpczsKLX0KLQotQ3Vyc29yOjpDdXJzb3IoUGxhdGZvcm1DdXJzb3IgYykKLTogbV9w
bGF0Zm9ybUN1cnNvcihjKQotewotfQotCi1jb25zdCBDdXJzb3ImIG5vbmVDdXJzb3IoKSB7IHJl
dHVybiBnZXRDdXJzb3IoQ3Vyc29yTm9uZSk7IH0KLWNvbnN0IEN1cnNvciYgcG9pbnRlckN1cnNv
cigpIHsgcmV0dXJuIGdldEN1cnNvcihDdXJzb3JQb2ludGVyKTsgfQotY29uc3QgQ3Vyc29yJiBj
cm9zc0N1cnNvcigpICB7IHJldHVybiBnZXRDdXJzb3IoQ3Vyc29yQ3Jvc3MpOyB9Ci1jb25zdCBD
dXJzb3ImIGhhbmRDdXJzb3IoKSB7IHJldHVybiBnZXRDdXJzb3IoQ3Vyc29ySGFuZCk7IH0KLWNv
bnN0IEN1cnNvciYgaUJlYW1DdXJzb3IoKSB7IHJldHVybiBnZXRDdXJzb3IoQ3Vyc29yQmVhbSk7
IH0KLWNvbnN0IEN1cnNvciYgd2FpdEN1cnNvcigpIHsgcmV0dXJuIGdldEN1cnNvcihDdXJzb3JX
YWl0KTsgfQotY29uc3QgQ3Vyc29yJiBoZWxwQ3Vyc29yKCkgeyByZXR1cm4gZ2V0Q3Vyc29yKEN1
cnNvckhlbHApOyB9Ci1jb25zdCBDdXJzb3ImIG1vdmVDdXJzb3IoKSAgeyByZXR1cm4gZ2V0Q3Vy
c29yKEN1cnNvck1vdmUpOyB9Ci1jb25zdCBDdXJzb3ImIGVhc3RSZXNpemVDdXJzb3IoKSB7IHJl
dHVybiBnZXRDdXJzb3IoQ3Vyc29yRWFzdFJlc2l6ZSk7IH0KLWNvbnN0IEN1cnNvciYgbm9ydGhS
ZXNpemVDdXJzb3IoKSB7IHJldHVybiBnZXRDdXJzb3IoQ3Vyc29yTm9ydGhSZXNpemUpOyB9Ci1j
b25zdCBDdXJzb3ImIG5vcnRoRWFzdFJlc2l6ZUN1cnNvcigpIHsgcmV0dXJuIGdldEN1cnNvcihD
dXJzb3JOb3J0aEVhc3RSZXNpemUpOyB9Ci1jb25zdCBDdXJzb3ImIG5vcnRoV2VzdFJlc2l6ZUN1
cnNvcigpIHsgcmV0dXJuIGdldEN1cnNvcihDdXJzb3JOb3J0aFdlc3RSZXNpemUpOyB9Ci1jb25z
dCBDdXJzb3ImIHNvdXRoUmVzaXplQ3Vyc29yKCkgeyByZXR1cm4gZ2V0Q3Vyc29yKEN1cnNvclNv
dXRoUmVzaXplKTsgfQotY29uc3QgQ3Vyc29yJiBzb3V0aEVhc3RSZXNpemVDdXJzb3IoKSB7IHJl
dHVybiBnZXRDdXJzb3IoQ3Vyc29yU291dGhFYXN0UmVzaXplKTsgfQotY29uc3QgQ3Vyc29yJiBz
b3V0aFdlc3RSZXNpemVDdXJzb3IoKSB7IHJldHVybiBnZXRDdXJzb3IoQ3Vyc29yU291dGhXZXN0
UmVzaXplKTsgfQotY29uc3QgQ3Vyc29yJiB3ZXN0UmVzaXplQ3Vyc29yKCkgeyByZXR1cm4gZ2V0
Q3Vyc29yKEN1cnNvcldlc3RSZXNpemUpOyB9Ci1jb25zdCBDdXJzb3ImIG5vcnRoU291dGhSZXNp
emVDdXJzb3IoKSB7IHJldHVybiBnZXRDdXJzb3IoQ3Vyc29yTm9ydGhTb3V0aFJlc2l6ZSk7IH0K
LWNvbnN0IEN1cnNvciYgZWFzdFdlc3RSZXNpemVDdXJzb3IoKSB7IHJldHVybiBnZXRDdXJzb3Io
Q3Vyc29yRWFzdFdlc3RSZXNpemUpOyB9Ci1jb25zdCBDdXJzb3ImIG5vcnRoRWFzdFNvdXRoV2Vz
dFJlc2l6ZUN1cnNvcigpIHsgcmV0dXJuIGdldEN1cnNvcihDdXJzb3JOb3J0aEVhc3RTb3V0aFdl
c3RSZXNpemUpOyB9Ci1jb25zdCBDdXJzb3ImIG5vcnRoV2VzdFNvdXRoRWFzdFJlc2l6ZUN1cnNv
cigpIHsgcmV0dXJuIGdldEN1cnNvcihDdXJzb3JOb3J0aFdlc3RTb3V0aEVhc3RSZXNpemUpOyB9
Ci1jb25zdCBDdXJzb3ImIGNvbHVtblJlc2l6ZUN1cnNvcigpIHsgcmV0dXJuIGdldEN1cnNvcihD
dXJzb3JDb2x1bW5SZXNpemUpOyB9Ci1jb25zdCBDdXJzb3ImIHJvd1Jlc2l6ZUN1cnNvcigpIHsg
cmV0dXJuIGdldEN1cnNvcihDdXJzb3JSb3dSZXNpemUpOyB9Ci1jb25zdCBDdXJzb3ImIHZlcnRp
Y2FsVGV4dEN1cnNvcigpIHsgcmV0dXJuIGdldEN1cnNvcihDdXJzb3JWZXJ0aWNhbFRleHQpOyB9
Ci1jb25zdCBDdXJzb3ImIGNlbGxDdXJzb3IoKSB7IHJldHVybiBnZXRDdXJzb3IoQ3Vyc29yQ2Vs
bCk7IH0KLWNvbnN0IEN1cnNvciYgY29udGV4dE1lbnVDdXJzb3IoKSB7IHJldHVybiBnZXRDdXJz
b3IoQ3Vyc29yQ29udGV4dE1lbnUpOyB9Ci1jb25zdCBDdXJzb3ImIG5vRHJvcEN1cnNvcigpIHsg
cmV0dXJuIGdldEN1cnNvcihDdXJzb3JOb0Ryb3ApOyB9Ci1jb25zdCBDdXJzb3ImIG5vdEFsbG93
ZWRDdXJzb3IoKSB7IHJldHVybiBnZXRDdXJzb3IoQ3Vyc29yTm90QWxsb3dlZCk7IH0KLWNvbnN0
IEN1cnNvciYgcHJvZ3Jlc3NDdXJzb3IoKSB7IHJldHVybiBnZXRDdXJzb3IoQ3Vyc29yUHJvZ3Jl
c3MpOyB9Ci1jb25zdCBDdXJzb3ImIGFsaWFzQ3Vyc29yKCkgeyByZXR1cm4gZ2V0Q3Vyc29yKEN1
cnNvckFsaWFzKTsgfQotY29uc3QgQ3Vyc29yJiB6b29tSW5DdXJzb3IoKSB7IHJldHVybiBnZXRD
dXJzb3IoQ3Vyc29yWm9vbUluKTsgfQotY29uc3QgQ3Vyc29yJiB6b29tT3V0Q3Vyc29yKCkgeyBy
ZXR1cm4gZ2V0Q3Vyc29yKEN1cnNvclpvb21PdXQpOyB9Ci1jb25zdCBDdXJzb3ImIGNvcHlDdXJz
b3IoKSB7IHJldHVybiBnZXRDdXJzb3IoQ3Vyc29yQ29weSk7IH0KLWNvbnN0IEN1cnNvciYgbWlk
ZGxlUGFubmluZ0N1cnNvcigpIHsgcmV0dXJuIGNyb3NzQ3Vyc29yKCk7IH0KLWNvbnN0IEN1cnNv
ciYgZWFzdFBhbm5pbmdDdXJzb3IoKSB7IHJldHVybiBjcm9zc0N1cnNvcigpOyB9Ci1jb25zdCBD
dXJzb3ImIG5vcnRoUGFubmluZ0N1cnNvcigpIHsgcmV0dXJuIGNyb3NzQ3Vyc29yKCk7IH0KLWNv
bnN0IEN1cnNvciYgbm9ydGhFYXN0UGFubmluZ0N1cnNvcigpIHsgcmV0dXJuIGNyb3NzQ3Vyc29y
KCk7IH0KLWNvbnN0IEN1cnNvciYgbm9ydGhXZXN0UGFubmluZ0N1cnNvcigpIHsgcmV0dXJuIGNy
b3NzQ3Vyc29yKCk7IH0KLWNvbnN0IEN1cnNvciYgc291dGhQYW5uaW5nQ3Vyc29yKCkgeyByZXR1
cm4gY3Jvc3NDdXJzb3IoKTsgfQotY29uc3QgQ3Vyc29yJiBzb3V0aEVhc3RQYW5uaW5nQ3Vyc29y
KCkgeyByZXR1cm4gY3Jvc3NDdXJzb3IoKTsgfQotY29uc3QgQ3Vyc29yJiBzb3V0aFdlc3RQYW5u
aW5nQ3Vyc29yKCkgeyByZXR1cm4gY3Jvc3NDdXJzb3IoKTsgfQotY29uc3QgQ3Vyc29yJiB3ZXN0
UGFubmluZ0N1cnNvcigpIHsgcmV0dXJuIGNyb3NzQ3Vyc29yKCk7IH0KLWNvbnN0IEN1cnNvciYg
Z3JhYmJpbmdDdXJzb3IoKSB7IHJldHVybiBtb3ZlQ3Vyc29yKCk7IH0KLWNvbnN0IEN1cnNvciYg
Z3JhYkN1cnNvcigpIHsgcmV0dXJuIG1vdmVDdXJzb3IoKTsgfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9QYXN0ZWJv
YXJkV2luQ0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvUGFzdGVib2FyZFdp
bkNFLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzEyZmYxNS4uMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9QYXN0ZWJvYXJkV2luQ0UuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMzQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykg
MjAwNy0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCi0KLSNpbmNsdWRlICJDbGlwYm9hcmRVdGlsaXRp
ZXNXaW4uaCIKLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21l
bnQuaCIKLSNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRl
ICJIaXRUZXN0UmVzdWx0LmgiCi0jaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJLVVJMLmgi
Ci0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVk
ZSAiUmFuZ2UuaCIKLSNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgotI2luY2x1ZGUgIlRleHRFbmNv
ZGluZy5oIgotI2luY2x1ZGUgIldlYkNvcmVJbnN0YW5jZUhhbmRsZS5oIgotI2luY2x1ZGUgIm1h
cmt1cC5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1zdGF0aWMgVUlOVCBIVE1MQ2xpcGJvYXJkRm9ybWF0ID0gMDsKLXN0YXRpYyBVSU5U
IEJvb2ttYXJrQ2xpcGJvYXJkRm9ybWF0ID0gMDsKLXN0YXRpYyBVSU5UIFdlYlNtYXJ0UGFzdGVG
b3JtYXQgPSAwOwotCi1leHRlcm4gSERDIGhTY3JlZW5EQzsKLQotc3RhdGljIExSRVNVTFQgQ0FM
TEJBQ0sgUGFzdGVib2FyZE93bmVyV25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BB
UkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKLXsKLSAgICBMUkVTVUxUIGxyZXN1bHQgPSAwOwot
ICAgIExPTkcgbG9uZ1B0ciA9IEdldFdpbmRvd0xvbmcoaFduZCwgMCk7Ci0KLSAgICBzd2l0Y2gg
KG1lc3NhZ2UpIHsKLSAgICBjYXNlIFdNX1JFTkRFUkZPUk1BVDoKLSAgICAgICAgLy8gVGhpcyBt
ZXNzYWdlIGNvbWVzIHdoZW4gU2V0Q2xpcGJvYXJkRGF0YSB3YXMgc2VudCBhIG51bGwgZGF0YSBo
YW5kbGUKLSAgICAgICAgLy8gYW5kIG5vdyBpdCdzIGNvbWUgdGltZSB0byBwdXQgdGhlIGRhdGEg
b24gdGhlIGNsaXBib2FyZC4KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXTV9SRU5ERVJBTExG
T1JNQVRTOgotICAgICAgICAvLyBUaGlzIG1lc3NhZ2UgY29tZXMgd2hlbiBTZXRDbGlwYm9hcmRE
YXRhIHdhcyBzZW50IGEgbnVsbCBkYXRhIGhhbmRsZQotICAgICAgICAvLyBhbmQgbm93IHRoaXMg
YXBwbGljYXRpb24gaXMgYWJvdXQgdG8gcXVpdCwgc28gaXQgbXVzdCBwdXQgZGF0YSBvbgotICAg
ICAgICAvLyB0aGUgY2xpcGJvYXJkIGJlZm9yZSBpdCBleGl0cy4KLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBXTV9ERVNUUk9ZOgotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAg
ICBscmVzdWx0ID0gRGVmV2luZG93UHJvYyhoV25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gbHJlc3VsdDsKLX0KLQotUGFzdGVi
b2FyZCogUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKQotewotICAgIHN0YXRpYyBQYXN0
ZWJvYXJkKiBwYXN0ZWJvYXJkID0gbmV3IFBhc3RlYm9hcmQ7Ci0gICAgcmV0dXJuIHBhc3RlYm9h
cmQ7Ci19Ci0KLVBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoKQotewotICAgIC8vIG1ha2UgYSBkdW1t
eSBIV05EIHRvIGJlIHRoZSBXaW5kb3dzIGNsaXBib2FyZCdzIG93bmVyCi0gICAgV05EQ0xBU1Mg
d2MgPSB7MH07Ci0gICAgbWVtc2V0KCZ3YywgMCwgc2l6ZW9mKHdjKSk7Ci0gICAgd2MubHBmbldu
ZFByb2MgICAgPSBQYXN0ZWJvYXJkT3duZXJXbmRQcm9jOwotICAgIHdjLmhJbnN0YW5jZSAgICAg
ID0gV2ViQ29yZTo6aW5zdGFuY2VIYW5kbGUoKTsKLSAgICB3Yy5scHN6Q2xhc3NOYW1lICA9IEwi
UGFzdGVib2FyZE93bmVyV2luZG93Q2xhc3MiOwotICAgIDo6UmVnaXN0ZXJDbGFzcygmd2MpOwot
Ci0gICAgbV9vd25lciA9IDo6Q3JlYXRlV2luZG93KEwiUGFzdGVib2FyZE93bmVyV2luZG93Q2xh
c3MiLCBMIlBhc3RlYm9hcmRPd25lcldpbmRvdyIsIDAsIDAsIDAsIDAsIDAsCi0gICAgICAgIEhX
TkRfTUVTU0FHRSwgMCwgMCwgMCk7Ci0KLSAgICBIVE1MQ2xpcGJvYXJkRm9ybWF0ID0gOjpSZWdp
c3RlckNsaXBib2FyZEZvcm1hdChMIkhUTUwgRm9ybWF0Iik7Ci0gICAgQm9va21hcmtDbGlwYm9h
cmRGb3JtYXQgPSA6OlJlZ2lzdGVyQ2xpcGJvYXJkRm9ybWF0KEwiVW5pZm9ybVJlc291cmNlTG9j
YXRvclciKTsKLSAgICBXZWJTbWFydFBhc3RlRm9ybWF0ID0gOjpSZWdpc3RlckNsaXBib2FyZEZv
cm1hdChMIldlYktpdCBTbWFydCBQYXN0ZSBGb3JtYXQiKTsKLX0KLQotdm9pZCBQYXN0ZWJvYXJk
OjpjbGVhcigpCi17Ci0gICAgaWYgKDo6T3BlbkNsaXBib2FyZChtX293bmVyKSkgewotICAgICAg
ICA6OkVtcHR5Q2xpcGJvYXJkKCk7Ci0gICAgICAgIDo6Q2xvc2VDbGlwYm9hcmQoKTsKLSAgICB9
Ci19Ci0KLXZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFu
Z2UsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1lKiBmcmFtZSwgU2hvdWxkU2VyaWFs
aXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkIHNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZv
ckNsaXBib2FyZCkKLXsKLSAgICBjbGVhcigpOwotCi0gICAgLy8gUHV0IENGX0hUTUwgZm9ybWF0
IG9uIHRoZSBwYXN0ZWJvYXJkCi0gICAgaWYgKDo6T3BlbkNsaXBib2FyZChtX293bmVyKSkgewot
ICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKLSAgICAgICAgbWFya3VwVG9DRl9IVE1MKGNyZWF0
ZU1hcmt1cChzZWxlY3RlZFJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlKSwgc2VsZWN0
ZWRSYW5nZS0+c3RhcnRDb250YWluZXIoKS0+ZG9jdW1lbnQoKS0+dXJsKCksIGRhdGEpOwotICAg
ICAgICBIR0xPQkFMIGNiRGF0YSA9IGNyZWF0ZUdsb2JhbERhdGEoZGF0YSk7Ci0gICAgICAgIGlm
ICghOjpTZXRDbGlwYm9hcmREYXRhKEhUTUxDbGlwYm9hcmRGb3JtYXQsIGNiRGF0YSkpCi0gICAg
ICAgICAgICA6Okdsb2JhbEZyZWUoY2JEYXRhKTsKLSAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgp
OwotICAgIH0KLQotICAgIC8vIFB1dCBwbGFpbiBzdHJpbmcgb24gdGhlIHBhc3RlYm9hcmQuIENG
X1VOSUNPREVURVhUIGNvdmVycyBDRl9URVhUIGFzIHdlbGwKLSAgICBTdHJpbmcgc3RyID0gc2hv
dWxkU2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkID09IEluY2x1ZGVJbWFnZUFsdFRl
eHRGb3JDbGlwYm9hcmQgPyBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dEZvckNsaXBib2Fy
ZCgpIDogZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKLSAgICByZXBsYWNlTmV3bGlu
ZXNXaXRoV2luZG93c1N0eWxlTmV3bGluZXMoc3RyKTsKLSAgICByZXBsYWNlTkJTUFdpdGhTcGFj
ZShzdHIpOwotICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKLSAgICAgICAgSEdM
T0JBTCBjYkRhdGEgPSBjcmVhdGVHbG9iYWxEYXRhKHN0cik7Ci0gICAgICAgIGlmICghOjpTZXRD
bGlwYm9hcmREYXRhKENGX1VOSUNPREVURVhULCBjYkRhdGEpKQotICAgICAgICAgICAgOjpHbG9i
YWxGcmVlKGNiRGF0YSk7Ci0gICAgICAgIDo6Q2xvc2VDbGlwYm9hcmQoKTsKLSAgICB9Ci0KLSAg
ICAvLyBlbmFibGUgc21hcnQtcmVwbGFjaW5nIGxhdGVyIG9uIGJ5IHB1dHRpbmcgZHVtbXkgZGF0
YSBvbiB0aGUgcGFzdGVib2FyZAotICAgIGlmIChjYW5TbWFydENvcHlPckRlbGV0ZSkgewotICAg
ICAgICBpZiAoOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7Ci0gICAgICAgICAgICA6OlNldENs
aXBib2FyZERhdGEoV2ViU21hcnRQYXN0ZUZvcm1hdCwgMCk7Ci0gICAgICAgICAgICA6OkNsb3Nl
Q2xpcGJvYXJkKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgUGFzdGVib2FyZDo6d3Jp
dGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24gc21hcnRS
ZXBsYWNlT3B0aW9uKQotewotICAgIGNsZWFyKCk7Ci0KLSAgICAvLyBQdXQgcGxhaW4gc3RyaW5n
IG9uIHRoZSBwYXN0ZWJvYXJkLiBDRl9VTklDT0RFVEVYVCBjb3ZlcnMgQ0ZfVEVYVCBhcyB3ZWxs
Ci0gICAgU3RyaW5nIHN0ciA9IHRleHQ7Ci0gICAgcmVwbGFjZU5ld2xpbmVzV2l0aFdpbmRvd3NT
dHlsZU5ld2xpbmVzKHN0cik7Ci0gICAgaWYgKDo6T3BlbkNsaXBib2FyZChtX293bmVyKSkgewot
ICAgICAgICBIR0xPQkFMIGNiRGF0YSA9IGNyZWF0ZUdsb2JhbERhdGEoc3RyKTsKLSAgICAgICAg
aWYgKCE6OlNldENsaXBib2FyZERhdGEoQ0ZfVU5JQ09ERVRFWFQsIGNiRGF0YSkpCi0gICAgICAg
ICAgICA6Okdsb2JhbEZyZWUoY2JEYXRhKTsKLSAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwot
ICAgIH0KLQotICAgIC8vIGVuYWJsZSBzbWFydC1yZXBsYWNpbmcgbGF0ZXIgb24gYnkgcHV0dGlu
ZyBkdW1teSBkYXRhIG9uIHRoZSBwYXN0ZWJvYXJkCi0gICAgaWYgKHNtYXJ0UmVwbGFjZU9wdGlv
biA9PSBDYW5TbWFydFJlcGxhY2UpIHsKLSAgICAgICAgaWYgKDo6T3BlbkNsaXBib2FyZChtX293
bmVyKSkgewotICAgICAgICAgICAgOjpTZXRDbGlwYm9hcmREYXRhKFdlYlNtYXJ0UGFzdGVGb3Jt
YXQsIDApOwotICAgICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwotICAgICAgICB9Ci0gICAg
fQotfQotCi12b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiB0aXRsZVN0ciwgRnJhbWUqIGZyYW1lKQotewotICAgIEFTU0VSVCghdXJsLmlzRW1w
dHkoKSk7Ci0KLSAgICBjbGVhcigpOwotCi0gICAgU3RyaW5nIHRpdGxlKHRpdGxlU3RyKTsKLSAg
ICBpZiAodGl0bGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHRpdGxlID0gdXJsLmxhc3RQYXRoQ29t
cG9uZW50KCk7Ci0gICAgICAgIGlmICh0aXRsZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICB0aXRs
ZSA9IHVybC5ob3N0KCk7Ci0gICAgfQotCi0gICAgLy8gd3JpdGUgdG8gY2xpcGJvYXJkIGluIGZv
cm1hdCBjb20uYXBwbGUuc2FmYXJpLmJvb2ttYXJrZGF0YSB0byBiZSBhYmxlIHRvIHBhc3RlIGlu
dG8gdGhlIGJvb2ttYXJrcyB2aWV3IHdpdGggYXBwcm9wcmlhdGUgdGl0bGUKLSAgICBpZiAoOjpP
cGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7Ci0gICAgICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRl
R2xvYmFsRGF0YSh1cmwsIHRpdGxlKTsKLSAgICAgICAgaWYgKCE6OlNldENsaXBib2FyZERhdGEo
Qm9va21hcmtDbGlwYm9hcmRGb3JtYXQsIGNiRGF0YSkpCi0gICAgICAgICAgICA6Okdsb2JhbEZy
ZWUoY2JEYXRhKTsKLSAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwotICAgIH0KLQotICAgIC8v
IHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRNTCB0byBiZSBhYmxlIHRvIHBhc3Rl
IGludG8gY29udGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGluawotICAgIGlmICg6Ok9wZW5DbGlw
Ym9hcmQobV9vd25lcikpIHsKLSAgICAgICAgVmVjdG9yPGNoYXI+IGRhdGE7Ci0gICAgICAgIG1h
cmt1cFRvQ0ZfSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGRhdGEpOwotICAgICAg
ICBIR0xPQkFMIGNiRGF0YSA9IGNyZWF0ZUdsb2JhbERhdGEoZGF0YSk7Ci0gICAgICAgIGlmICgh
OjpTZXRDbGlwYm9hcmREYXRhKEhUTUxDbGlwYm9hcmRGb3JtYXQsIGNiRGF0YSkpCi0gICAgICAg
ICAgICA6Okdsb2JhbEZyZWUoY2JEYXRhKTsKLSAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwot
ICAgIH0KLQotICAgIC8vIGJhcmUtYm9uZXMgQ0ZfVU5JQ09ERVRFWFQgc3VwcG9ydAotICAgIGlm
ICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKLSAgICAgICAgSEdMT0JBTCBjYkRhdGEgPSBj
cmVhdGVHbG9iYWxEYXRhKHVybC5zdHJpbmcoKSk7Ci0gICAgICAgIGlmICghOjpTZXRDbGlwYm9h
cmREYXRhKENGX1VOSUNPREVURVhULCBjYkRhdGEpKQotICAgICAgICAgICAgOjpHbG9iYWxGcmVl
KGNiRGF0YSk7Ci0gICAgICAgIDo6Q2xvc2VDbGlwYm9hcmQoKTsKLSAgICB9Ci19Ci0KLXZvaWQg
UGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJikKLXsKLSAgICBBU1NFUlQobm9kZSk7Ci0KLSAgICBpZiAoIShub2RlLT5yZW5kZXJlcigp
ICYmIG5vZGUtPnJlbmRlcmVyKCktPmlzSW1hZ2UoKSkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IFJlbmRlckltYWdlKiByZW5kZXJlciA9IHN0YXRpY19jYXN0PFJlbmRlckltYWdlKj4obm9kZS0+
cmVuZGVyZXIoKSk7Ci0gICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gc3RhdGljX2Nhc3Q8
Q2FjaGVkSW1hZ2UqPihyZW5kZXJlci0+Y2FjaGVkSW1hZ2UoKSk7Ci0gICAgQVNTRVJUKGNhY2hl
ZEltYWdlKTsKLSAgICBJbWFnZSogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJl
cihyZW5kZXJlcik7Ci0gICAgQVNTRVJUKGltYWdlKTsKLQotICAgIGNsZWFyKCk7Ci0KLSAgICBS
ZWZQdHI8U2hhcmVkQml0bWFwPiBzb3VyY2VCbXAgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKTsKLSAgICBpZiAoIXNvdXJjZUJtcCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
SW50UmVjdCByZWN0KDAsIDAsIHNvdXJjZUJtcC0+d2lkdGgoKSwgc291cmNlQm1wLT5oZWlnaHQo
KSk7Ci0gICAgQml0bWFwSW5mbyBibXBJbmZvOwotICAgIHZvaWQqIHBpeGVsczsKLSAgICBIQklU
TUFQIHJlc3VsdEJpdG1hcCA9IHNvdXJjZUJtcC0+Y2xpcEJpdG1hcChyZWN0LCB0cnVlLCBibXBJ
bmZvLCBwaXhlbHMpOwotICAgIGlmICghcmVzdWx0Qml0bWFwKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBpZiAoOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7Ci0gICAgICAgIDo6U2V0Q2xpcGJv
YXJkRGF0YShDRl9CSVRNQVAsIHJlc3VsdEJpdG1hcCk7Ci0gICAgICAgIDo6Q2xvc2VDbGlwYm9h
cmQoKTsKLSAgICB9IGVsc2UKLSAgICAgICAgRGVsZXRlT2JqZWN0KHJlc3VsdEJpdG1hcCk7Ci19
Ci0KLXZvaWQgUGFzdGVib2FyZDo6d3JpdGVDbGlwYm9hcmQoQ2xpcGJvYXJkKikKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi1ib29sIFBhc3RlYm9hcmQ6OmNhblNtYXJ0UmVwbGFjZSgp
Ci17Ci0gICAgcmV0dXJuIDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoV2ViU21hcnRQYXN0
ZUZvcm1hdCk7Ci19Ci0KLVN0cmluZyBQYXN0ZWJvYXJkOjpwbGFpblRleHQoRnJhbWUqIGZyYW1l
KQotewotICAgIGlmICg6OklzQ2xpcGJvYXJkRm9ybWF0QXZhaWxhYmxlKENGX1VOSUNPREVURVhU
KSAmJiA6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKLSAgICAgICAgSEFORExFIGNiRGF0YSA9
IDo6R2V0Q2xpcGJvYXJkRGF0YShDRl9VTklDT0RFVEVYVCk7Ci0gICAgICAgIGlmIChjYkRhdGEp
IHsKLSAgICAgICAgICAgIFVDaGFyKiBidWZmZXIgPSAoVUNoYXIqKUdsb2JhbExvY2soY2JEYXRh
KTsKLSAgICAgICAgICAgIFN0cmluZyBmcm9tQ2xpcGJvYXJkKGJ1ZmZlcik7Ci0gICAgICAgICAg
ICBHbG9iYWxVbmxvY2soY2JEYXRhKTsKLSAgICAgICAgICAgIENsb3NlQ2xpcGJvYXJkKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gZnJvbUNsaXBib2FyZDsKLSAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICBDbG9zZUNsaXBib2FyZCgpOwotICAgIH0KLQotICAgIGlmICg6OklzQ2xpcGJvYXJkRm9y
bWF0QXZhaWxhYmxlKENGX1RFWFQpICYmIDo6T3BlbkNsaXBib2FyZChtX293bmVyKSkgewotICAg
ICAgICBIQU5ETEUgY2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKENGX1RFWFQpOwotICAgICAg
ICBpZiAoY2JEYXRhKSB7Ci0gICAgICAgICAgICBjaGFyKiBidWZmZXIgPSAoY2hhciopR2xvYmFs
TG9jayhjYkRhdGEpOwotICAgICAgICAgICAgU3RyaW5nIGZyb21DbGlwYm9hcmQoYnVmZmVyKTsK
LSAgICAgICAgICAgIEdsb2JhbFVubG9jayhjYkRhdGEpOwotICAgICAgICAgICAgQ2xvc2VDbGlw
Ym9hcmQoKTsKLSAgICAgICAgICAgIHJldHVybiBmcm9tQ2xpcGJvYXJkOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIENsb3NlQ2xpcGJvYXJkKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIFN0
cmluZygpOwotfQotCi1QYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFBhc3RlYm9hcmQ6OmRv
Y3VtZW50RnJhZ21lbnQoRnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRyPFJhbmdlPiBjb250ZXh0LCBi
b29sIGFsbG93UGxhaW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCkKLXsKLSAgICBjaG9zZVBs
YWluVGV4dCA9IGZhbHNlOwotCi0gICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUo
SFRNTENsaXBib2FyZEZvcm1hdCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7Ci0gICAg
ICAgIC8vIGdldCBkYXRhIG9mZiBvZiBjbGlwYm9hcmQKLSAgICAgICAgSEFORExFIGNiRGF0YSA9
IDo6R2V0Q2xpcGJvYXJkRGF0YShIVE1MQ2xpcGJvYXJkRm9ybWF0KTsKLSAgICAgICAgaWYgKGNi
RGF0YSkgewotICAgICAgICAgICAgU0laRV9UIGRhdGFTaXplID0gOjpHbG9iYWxTaXplKGNiRGF0
YSk7Ci0gICAgICAgICAgICBTdHJpbmcgY2ZfaHRtbChVVEY4RW5jb2RpbmcoKS5kZWNvZGUoKGNo
YXIqKUdsb2JhbExvY2soY2JEYXRhKSwgZGF0YVNpemUpKTsKLSAgICAgICAgICAgIEdsb2JhbFVu
bG9jayhjYkRhdGEpOwotICAgICAgICAgICAgQ2xvc2VDbGlwYm9hcmQoKTsKLQotICAgICAgICAg
ICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGZyYWdtZW50RnJvbUNG
X0hUTUwoZnJhbWUtPmRvY3VtZW50KCksIGNmX2h0bWwpOwotICAgICAgICAgICAgaWYgKGZyYWdt
ZW50KQotICAgICAgICAgICAgICAgIHJldHVybiBmcmFnbWVudDsKLSAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBDbG9zZUNsaXBib2FyZCgpOwotICAgIH0KLQotICAgIGlmIChhbGxvd1BsYWlu
VGV4dCAmJiBJc0NsaXBib2FyZEZvcm1hdEF2YWlsYWJsZShDRl9VTklDT0RFVEVYVCkpIHsKLSAg
ICAgICAgY2hvc2VQbGFpblRleHQgPSB0cnVlOwotICAgICAgICBpZiAoT3BlbkNsaXBib2FyZCht
X293bmVyKSkgewotICAgICAgICAgICAgSEFORExFIGNiRGF0YSA9IEdldENsaXBib2FyZERhdGEo
Q0ZfVU5JQ09ERVRFWFQpOwotICAgICAgICAgICAgaWYgKGNiRGF0YSkgewotICAgICAgICAgICAg
ICAgIFVDaGFyKiBidWZmZXIgPSAoVUNoYXIqKUdsb2JhbExvY2soY2JEYXRhKTsKLSAgICAgICAg
ICAgICAgICBTdHJpbmcgc3RyKGJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgR2xvYmFsVW5sb2Nr
KGNiRGF0YSk7Ci0gICAgICAgICAgICAgICAgQ2xvc2VDbGlwYm9hcmQoKTsKLSAgICAgICAgICAg
ICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZy
b21UZXh0KGNvbnRleHQuZ2V0KCksIHN0cik7Ci0gICAgICAgICAgICAgICAgaWYgKGZyYWdtZW50
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQucmVsZWFzZSgpOwotICAgICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgQ2xvc2VDbGlwYm9hcmQoKTsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIGlmIChhbGxvd1BsYWluVGV4dCAmJiA6OklzQ2xpcGJvYXJkRm9ybWF0
QXZhaWxhYmxlKENGX1RFWFQpKSB7Ci0gICAgICAgIGNob3NlUGxhaW5UZXh0ID0gdHJ1ZTsKLSAg
ICAgICAgaWYgKDo6T3BlbkNsaXBib2FyZChtX293bmVyKSkgewotICAgICAgICAgICAgSEFORExF
IGNiRGF0YSA9IDo6R2V0Q2xpcGJvYXJkRGF0YShDRl9URVhUKTsKLSAgICAgICAgICAgIGlmIChj
YkRhdGEpIHsKLSAgICAgICAgICAgICAgICBjaGFyKiBidWZmZXIgPSAoY2hhciopR2xvYmFsTG9j
ayhjYkRhdGEpOwotICAgICAgICAgICAgICAgIFN0cmluZyBzdHIoYnVmZmVyKTsKLSAgICAgICAg
ICAgICAgICBHbG9iYWxVbmxvY2soY2JEYXRhKTsKLSAgICAgICAgICAgICAgICBDbG9zZUNsaXBi
b2FyZCgpOwotICAgICAgICAgICAgICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVu
dCA9IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoY29udGV4dC5nZXQoKSwgc3RyKTsKLSAgICAgICAg
ICAgICAgICBpZiAoZnJhZ21lbnQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmcmFnbWVu
dC5yZWxlYXNlKCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBDbG9zZUNs
aXBib2FyZCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLWJvb2wg
UGFzdGVib2FyZDo6aGFzRGF0YSgpCi17Ci0gICAgcmV0dXJuIGhhc0RhdGFJbkZvcm1hdChDRl9V
TklDT0RFVEVYVCkgfHwgaGFzRGF0YUluRm9ybWF0KENGX1RFWFQpOwotfQotCi1ib29sIFBhc3Rl
Ym9hcmQ6Omhhc0RhdGFJbkZvcm1hdCh1bnNpZ25lZCBpbnQgZm9ybWF0KQotewotICAgIHJldHVy
biA6OklzQ2xpcGJvYXJkRm9ybWF0QXZhaWxhYmxlKGZvcm1hdCk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL1Nl
YXJjaFBvcHVwTWVudVdpbkNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL1Nl
YXJjaFBvcHVwTWVudVdpbkNFLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjJh
ODQ0Mi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9TZWFyY2hQ
b3B1cE1lbnVXaW5DRS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnUuaCIKLQotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotU2VhcmNoUG9wdXBNZW51OjpTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50
KiBjbGllbnQpCi06IFBvcHVwTWVudShjbGllbnQpCi17Ci19Ci0KLWJvb2wgU2VhcmNoUG9wdXBN
ZW51OjplbmFibGVkKCkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgU2VhcmNoUG9w
dXBNZW51OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpCi17Ci0gICAgaWYgKG5hbWUuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFNl
YXJjaFBvcHVwTWVudTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKQotewotICAgIGlmIChuYW1lLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>