<?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>63291</bug_id>
          
          <creation_ts>2011-06-23 14:39:52 -0700</creation_ts>
          <short_desc>Add the ability to dynamically modify linked call sites</short_desc>
          <delta_ts>2011-06-23 15:53:55 -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="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>426480</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-06-23 14:39:52 -0700</bug_when>
    <thetext>Add the ability to dynamically modify linked call sites</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426517</commentid>
    <comment_count>1</comment_count>
      <attachid>98412</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-06-23 15:01:04 -0700</bug_when>
    <thetext>Created attachment 98412
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426529</commentid>
    <comment_count>2</comment_count>
      <attachid>98412</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-06-23 15:10:51 -0700</bug_when>
    <thetext>Comment on attachment 98412
Patch

The armv7 code is all wrong.  I knows this because oliver says this. he also said a naughty word.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426532</commentid>
    <comment_count>3</comment_count>
      <attachid>98416</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-06-23 15:13:15 -0700</bug_when>
    <thetext>Created attachment 98416
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426547</commentid>
    <comment_count>4</comment_count>
      <attachid>98416</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-06-23 15:28:00 -0700</bug_when>
    <thetext>Comment on attachment 98416
Patch

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

&gt; Source/JavaScriptCore/jit/JITWriteBarrier.h:41
&gt; +#define JITWriteBarrierFlag ((void*)2)

Per coding standard I guess this should really be a static_cast, though I&apos;m not sure that really improves anything in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426566</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-06-23 15:53:55 -0700</bug_when>
    <thetext>Committed r89630: &lt;http://trac.webkit.org/changeset/89630&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98412</attachid>
            <date>2011-06-23 15:01:04 -0700</date>
            <delta_ts>2011-06-23 15:13:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63291-20110623150103.patch</filename>
            <type>text/plain</type>
            <size>30662</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODk2MjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDlh
YmQzYzcxNWM1MmJkNDgwNjNjMjllZjZmNzA4YzVhMzM3ODdkMGQuLmQyZGJkYmQ3YmNhY2MyNzY3
ZGYwZTVmODg5MGFkZjMyM2NhMDQzM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDY1IEBACisyMDExLTA2LTIzICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBh
YmlsaXR5IHRvIGR5bmFtaWNhbGx5IG1vZGlmeSBsaW5rZWQgY2FsbCBzaXRlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjMyOTEKKworICAgICAgICBB
ZGQgSklUV3JpdGVCYXJyaWVyIGFzIGEgd3JpdGViYXJyaWVyIGNsYXNzIHRoYXQgYWxsb3dzCisg
ICAgICAgIHJlYWRpbmcgYW5kIHdyaXRpbmcgZGlyZWN0bHkgaW50byB0aGUgY29kZSBzdHJlYW0u
CisKKyAgICAgICAgVGhpcyByZXF1aXJlZCBhZGRpbmcgbG9naWMgdG8gYWxsIHRoZSBhc3NlbWJs
ZXJzIHRvIGFsbG93CisgICAgICAgIHVzIHRvIHJlYWQgdmFsdWVzIGJhY2sgb3V0IG9mIHRoZSBp
bnN0cnVjdGlvbiBzdHJlYW0uCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaDoKKyAg
ICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpyZWFkUG9pbnRlcik6CisgICAgICAgICogYXNzZW1i
bGVyL0FSTXY3QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpyZWFk
UG9pbnRlcik6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpyZWFkSW50MzIpOgorICAg
ICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6ZGVjb2RlVHdvV29yZE9wNWk2SW1tNFJlZzRFbmNv
ZGVkSW1tRmlyc3QpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6ZGVjb2RlVHdvV29y
ZE9wNWk2SW1tNFJlZzRFbmNvZGVkSW1tU2Vjb25kKToKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyOjpyZWFkUG9pbnRlcik6CisgICAgICAgICogYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaDoK
KyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6cmVhZEludDMyKToKKyAgICAgICAgKEpTQzo6
TUlQU0Fzc2VtYmxlcjo6cmVhZFBvaW50ZXIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckNvZGVSZWYuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpv
cGVyYXRvciEpOgorICAgICAgICAqIGFzc2VtYmxlci9TSDRBc3NlbWJsZXIuaDoKKyAgICAgICAg
KEpTQzo6U0g0QXNzZW1ibGVyOjpyZWFkUENyZWxhdGl2ZUFkZHJlc3MpOgorICAgICAgICAoSlND
OjpTSDRBc3NlbWJsZXI6OnJlYWRQb2ludGVyKToKKyAgICAgICAgKEpTQzo6U0g0QXNzZW1ibGVy
OjpyZWFkSW50MzIpOgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAg
ICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpyZWFkUG9pbnRlcik6CisgICAgICAgICogYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2aXNpdEFnZ3JlZ2F0ZSk6
CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1ldGhvZENh
bGxMaW5rSW5mbzo6c2Vlbk9uY2UpOgorICAgICAgICAoSlNDOjpNZXRob2RDYWxsTGlua0luZm86
OnNldFNlZW4pOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmg6CisgICAgICAgICogaml0L0pJ
VC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAoSlND
OjpKSVQ6OmxpbmtDYWxsKToKKyAgICAgICAgKEpTQzo6SklUOjpsaW5rQ29uc3RydWN0KToKKyAg
ICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnBh
dGNoTWV0aG9kQ2FsbFByb3RvKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82
NC5jcHA6CisgICAgICAgICogaml0L0pJVFdyaXRlQmFycmllci5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6SklUV3JpdGVCYXJyaWVyQmFzZTo6b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSop
OgorICAgICAgICAoSlNDOjpKSVRXcml0ZUJhcnJpZXJCYXNlOjpvcGVyYXRvciEpOgorICAgICAg
ICAoSlNDOjpKSVRXcml0ZUJhcnJpZXJCYXNlOjpzZXRGbGFnT25CYXJyaWVyKToKKyAgICAgICAg
KEpTQzo6SklUV3JpdGVCYXJyaWVyQmFzZTo6aXNGbGFnZ2VkKToKKyAgICAgICAgKEpTQzo6SklU
V3JpdGVCYXJyaWVyQmFzZTo6c2V0TG9jYXRpb24pOgorICAgICAgICAoSlNDOjpKSVRXcml0ZUJh
cnJpZXJCYXNlOjpsb2NhdGlvbik6CisgICAgICAgIChKU0M6OkpJVFdyaXRlQmFycmllckJhc2U6
OkpJVFdyaXRlQmFycmllckJhc2UpOgorICAgICAgICAoSlNDOjpKSVRXcml0ZUJhcnJpZXJCYXNl
OjpzZXQpOgorICAgICAgICAoSlNDOjpKSVRXcml0ZUJhcnJpZXJCYXNlOjpnZXQpOgorICAgICAg
ICAoSlNDOjpKSVRXcml0ZUJhcnJpZXI6OkpJVFdyaXRlQmFycmllcik6CisgICAgICAgIChKU0M6
OkpJVFdyaXRlQmFycmllcjo6c2V0KToKKyAgICAgICAgKEpTQzo6SklUV3JpdGVCYXJyaWVyOjpn
ZXQpOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2s6OmFwcGVuZCk6CisKIDIwMTEtMDYtMjMgIEdh
dmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IE9saXZlciBIdW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjMmUw
NmFkYmQ1Y2EwMmNlNDUxMTIzZDcyNzllMTgzZWU3NjNhZDFmLi5jOTg5OGU0ZTZjNGJkOGYyNzM2
MGUyZTZkYTE2ZTIxMDI1NmU1MzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NDAwLDYgKzQwMCw3IEBACiAJCUE3NTcwNkRFMTE4QTJCQ0YwMDU3Rjg4RiAvKiBKSVRBcml0aG1l
dGljMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTc1NzA2REQxMThBMkJDRjAwNTdGODhGIC8qIEpJVEFyaXRobWV0aWMzMl82NC5jcHAgKi87
IH07CiAJCUE3NjZCNDRGMEVFOERDRDEwMDk1MThDQSAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I0OERCNTBF
RTc0Q0ZDMDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3NkM1MTc2MTE4Mjc0OEQwMDcxNUIw
NSAvKiBKU0ludGVyZmFjZUpJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTc2QzUxNzQxMTgyNzQ4RDAwNzE1QjA1IC8qIEpTSW50ZXJmYWNlSklULmgg
Ki87IH07CisJCUE3NkY1NEEzMTNCMjhBQUIwMEVGMkJDRSAvKiBKSVRXcml0ZUJhcnJpZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NkY1NEEyMTNC
MjhBQUIwMEVGMkJDRSAvKiBKSVRXcml0ZUJhcnJpZXIuaCAqLzsgfTsKIAkJQTc4M0EwRDExMUEz
NkRDQTAwNTYzRDIwIC8qIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4M0EwRDAxMUEzNkRDQTAwNTYzRDIw
IC8qIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3ODNBMkFCMTFBNUJFODQwMDU2M0QyMCAvKiBKU09i
amVjdFdpdGhHbG9iYWxPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTc4M0EyQUExMUE1QkU4NDAwNTYzRDIwIC8qIEpTT2JqZWN0V2l0aEds
b2JhbE9iamVjdC5jcHAgKi87IH07CiAJCUE3ODRBMjYxMTFEMTY2MjIwMDU3NzZBQyAvKiBBU1RC
dWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
N0E3RUU3NDExQjk4QjhEMDA2NUExNEYgLyogQVNUQnVpbGRlci5oICovOyB9OwpAQCAtMTExNSw2
ICsxMTE2LDcgQEAKIAkJQTc0REUxQ0IxMjBCODZENjAwRDQwRDVCIC8qIEFSTXY3QXNzZW1ibGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFSTXY3QXNzZW1ibGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc1NzA2REQxMThBMkJDRjAwNTdG
ODhGIC8qIEpJVEFyaXRobWV0aWMzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKSVRBcml0aG1ldGljMzJfNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNzZDNTE3NDExODI3NDhEMDA3MTVCMDUgLyogSlNJbnRlcmZhY2VKSVQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbnRlcmZhY2VKSVQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc2RjU0QTIxM0IyOEFBQjAwRUYyQkNFIC8qIEpJVFdyaXRl
QmFycmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRXcml0ZUJhcnJp
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc4M0EwRDAxMUEzNkRDQTAwNTYz
RDIwIC8qIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTc4M0EyQUExMUE1QkU4NDAwNTYzRDIwIC8qIEpTT2JqZWN0V2l0aEdsb2Jh
bE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU09iamVj
dFdpdGhHbG9iYWxPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzkx
RUYyNjBGMTFFMDc5MDBBRTFGNjggLyogSlNCeXRlQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNCeXRlQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE0ODUsNiArMTQ4Nyw3IEBACiAJCQkJQTczODY1NTExMTg2OTdCNDAwNTQwMjc5IC8qIFNw
ZWNpYWxpemVkVGh1bmtKSVQuaCAqLywKIAkJCQlBNzM4NjU1MjExODY5N0I0MDA1NDAyNzkgLyog
VGh1bmtHZW5lcmF0b3JzLmNwcCAqLywKIAkJCQlBNzM4NjU1MzExODY5N0I0MDA1NDAyNzkgLyog
VGh1bmtHZW5lcmF0b3JzLmggKi8sCisJCQkJQTc2RjU0QTIxM0IyOEFBQjAwRUYyQkNFIC8qIEpJ
VFdyaXRlQmFycmllci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBqaXQ7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtMjU3MCw2ICsyNTczLDcgQEAKIAkJCQkxNDJBMUQ4NDEzQTE5Qzg0
MDA5REE1RkUgLyogT2xkU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QkE3OEYxMTNBQUI4
OEYwMDVCN0MyQyAvKiBTbG90VmlzaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRCQTdBOTgx
M0FBREZGODAwNUI3QzJDIC8qIEhlYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3NkY1NEEzMTNC
MjhBQUIwMEVGMkJDRSAvKiBKSVRXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmgKaW5kZXggMmQ2N2E1
YTVjMzU2OWFlM2FmMDdkOTZmYTE1ZTE4ZDRjYmYyY2RhZS4uYzdkNjAzMzdjMTA2NjgyODcwOWM3
NGZkNWUyYjBkN2VkODI5ODViMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BUk1Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0FSTUFzc2VtYmxlci5oCkBAIC03MzksNiArNzM5LDE0IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoQ29uc3RhbnRQb29sTG9hZCh2b2lkKiBsb2FkQWRk
ciwgdm9pZCogY29uc3RQb29sQWRkcik7CiAKKyAgICAgICAgLy8gUmVhZCBwb2ludGVycworICAg
ICAgICBzdGF0aWMgdm9pZCogcmVhZFBvaW50ZXIodm9pZCogZnJvbSkKKyAgICAgICAgeworICAg
ICAgICAgICAgQVJNV29yZCogaW5zbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZCo+KGZyb20p
OworICAgICAgICAgICAgdm9pZCogYWRkciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldExk
ckltbUFkZHJlc3MoaW5zbikpOworICAgICAgICAgICAgcmV0dXJuICphZGRyOworICAgICAgICB9
CisgICAgICAgIAogICAgICAgICAvLyBQYXRjaCBwb2ludGVycwogCiAgICAgICAgIHN0YXRpYyB2
b2lkIGxpbmtQb2ludGVyKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxhYmVsIGZyb20sIHZvaWQqIHRv
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2Vt
Ymxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5o
CmluZGV4IDMwZDlmMWVkZTI3ODE4NjY3Y2E0MjE5MzI0OTRmMzVhMDc4ZmVjODkuLjc0MGQxOWYw
Y2MwODhiYzg5ZTEyZWUyYjBhMjc1MzUwMzU0ZjQ4MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgKQEAgLTE3NzYsNiArMTc3NiwxMSBA
QCBwdWJsaWM6CiAgICAgICAgIHNldFBvaW50ZXIod2hlcmUsIHZhbHVlKTsKICAgICB9CiAKKyAg
ICBzdGF0aWMgdm9pZCogcmVhZFBvaW50ZXIodm9pZCogd2hlcmUpCisgICAgeworICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8dm9pZCo+KHJlYWRJbnQzMih3aGVyZSkpOworICAgIH0KKwogcHJp
dmF0ZToKICAgICAvLyBWRlAgb3BlcmF0aW9ucyBjb21tb25seSB0YWtlIG9uZSBvciBtb3JlIDUt
Yml0IG9wZXJhbmRzLCB0eXBpY2FsbHkgcmVwcmVzZW50aW5nIGEKICAgICAvLyBmbG9hdGluZyBw
b2ludCByZWdpc3RlciBudW1iZXIuICBUaGlzIHdpbGwgY29tbW9ubHkgYmUgZW5jb2RlZCBpbiB0
aGUgaW5zdHJ1Y3Rpb24KQEAgLTE4NTYsNiArMTg2MSwyMyBAQCBwcml2YXRlOgogCiAgICAgICAg
IEV4ZWN1dGFibGVBbGxvY2F0b3I6OmNhY2hlRmx1c2gobG9jYXRpb24gLSA0LCA0ICogc2l6ZW9m
KHVpbnQxNl90KSk7CiAgICAgfQorICAgIAorICAgIHN0YXRpYyBpbnQzMl90IHJlYWRJbnQzMih2
b2lkKiBjb2RlKQorICAgIHsKKyAgICAgICAgdWludDE2X3QqIGxvY2F0aW9uID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50MTZfdCo+KGNvZGUpOworICAgICAgICBBU1NFUlQoaXNNT1ZfaW1tX1QzKGxv
Y2F0aW9uIC0gNCkgJiYgaXNNT1ZUKGxvY2F0aW9uIC0gMikpOworICAgICAgICAKKyAgICAgICAg
QVJNVGh1bWJJbW1lZGlhdGUgbG8xNiA9IDA7CisgICAgICAgIEFSTVRodW1iSW1tZWRpYXRlIGhp
MTYgPSAwOworICAgICAgICBkZWNvZGVUd29Xb3JkT3A1aTZJbW00UmVnNEVuY29kZWRJbW1GaXJz
dChsbzE2LCAqbG9jYXRpb25bLTRdKTsKKyAgICAgICAgZGVjb2RlVHdvV29yZE9wNWk2SW1tNFJl
ZzRFbmNvZGVkSW1tU2Vjb25kKGxvMTYsICpsb2NhdGlvblstM10pOworICAgICAgICBkZWNvZGVU
d29Xb3JkT3A1aTZJbW00UmVnNEVuY29kZWRJbW1GaXJzdChoaTE2LCAqbG9jYXRpb25bLTJdKTsK
KyAgICAgICAgZGVjb2RlVHdvV29yZE9wNWk2SW1tNFJlZzRFbmNvZGVkSW1tU2Vjb25kKGhpMTYs
ICpsb2NhdGlvblstMV0pOworICAgICAgICB1aW50MzJfdCByZXN1bHQgPSBoaTE2LmFzSW50KCk7
CisgICAgICAgIHJlc3VsdCA8PD0gMTY7CisgICAgICAgIHJlc3VsdCB8PSBsbzE2LmFzSW50KCk7
CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90PihyZXN1bHQpOworICAgIH0KIAog
ICAgIHN0YXRpYyB2b2lkIHNldFVJbnQ3Rm9yTG9hZCh2b2lkKiBjb2RlLCBBUk1UaHVtYkltbWVk
aWF0ZSBpbW0pCiAgICAgewpAQCAtMjEyMiwxMSArMjE0NCwyNyBAQCBwcml2YXRlOgogICAgICAg
ICByZXR1cm4gb3AgfCAoaW1tLm1fdmFsdWUuaSA8PCAxMCkgfCBpbW0ubV92YWx1ZS5pbW00Owog
ICAgIH0KIAorICAgIHN0YXRpYyBBUk1UaHVtYkltbWVkaWF0ZSBkZWNvZGVUd29Xb3JkT3A1aTZJ
bW00UmVnNEVuY29kZWRJbW1GaXJzdCh1aW50MTZfdCB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFS
TVRodW1iSW1tZWRpYXRlIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fdmFsdWUuaSA9IHZhbHVl
ICYgKDEgPDwgMTApOworICAgICAgICByZXN1bHQubV92YWx1ZS5pbW00ID0gdmFsdWUgJiAxNTsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBzdGF0aWMgdWludDE2X3QgdHdv
V29yZE9wNWk2SW1tNFJlZzRFbmNvZGVkSW1tU2Vjb25kKHVpbnQxNl90IHJkLCBBUk1UaHVtYklt
bWVkaWF0ZSBpbW0pCiAgICAgewogICAgICAgICByZXR1cm4gKGltbS5tX3ZhbHVlLmltbTMgPDwg
MTIpIHwgKHJkIDw8IDgpIHwgaW1tLm1fdmFsdWUuaW1tODsKICAgICB9CiAKKyAgICBzdGF0aWMg
QVJNVGh1bWJJbW1lZGlhdGUgZGVjb2RlVHdvV29yZE9wNWk2SW1tNFJlZzRFbmNvZGVkSW1tU2Vj
b25kKHVpbnQxNl90IHZhbHVlKQorICAgIHsKKyAgICAgICAgQVJNVGh1bWJJbW1lZGlhdGUgcmVz
dWx0OworICAgICAgICByZXN1bHQubV92YWx1ZS5pbW0zID0gKHZhbHVlID4+IDEyKSAmIDc7Cisg
ICAgICAgIHJlc3VsdC5tX3ZhbHVlLmltbTggPSB2YWx1ZSAmIDI1NTsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisKICAgICBjbGFzcyBBUk1JbnN0cnVjdGlvbkZvcm1hdHRlciB7CiAg
ICAgcHVibGljOgogICAgICAgICB2b2lkIG9uZVdvcmRPcDVSZWczSW1tOChPcGNvZGVJRCBvcCwg
UmVnaXN0ZXJJRCByZCwgdWludDhfdCBpbW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCmluZGV4IDE0Yjg1ZGJl
Y2Y2NzQ5MWViNzgxNzNkMjQ1MzFjNDg5ZjhiZjA1MTguLjVhMjRhOWQzNzU5ODJmYWZhNjk2YzFh
ZTYyY2NiNDAzNWMyMjcyMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCkBAIC00MSw2ICs0MSw3IEBAIGNs
YXNzIFJlcGF0Y2hCdWZmZXI7CiB0ZW1wbGF0ZSA8Y2xhc3MgQXNzZW1ibGVyVHlwZT4KIGNsYXNz
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIgewogcHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBKSVRX
cml0ZUJhcnJpZXJCYXNlOwogICAgIHR5cGVkZWYgQXNzZW1ibGVyVHlwZSBBc3NlbWJsZXJUeXBl
X1Q7CiAKICAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBDb2RlUHRyOwpAQCAtNTcz
LDYgKzU3NCwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgICAgICBBc3NlbWJsZXJUeXBlOjpy
ZXBhdGNoUG9pbnRlcihkYXRhTGFiZWxQdHIuZGF0YUxvY2F0aW9uKCksIHZhbHVlKTsKICAgICB9
CisgICAgCisgICAgc3RhdGljIHZvaWQqIHJlYWRQb2ludGVyKENvZGVMb2NhdGlvbkRhdGFMYWJl
bFB0ciBkYXRhTGFiZWxQdHIpCisgICAgeworICAgICAgICByZXR1cm4gQXNzZW1ibGVyVHlwZTo6
cmVhZFBvaW50ZXIoZGF0YUxhYmVsUHRyLmRhdGFMb2NhdGlvbigpKTsKKyAgICB9CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTUlQU0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
SVBTQXNzZW1ibGVyLmgKaW5kZXggODdlYmYyODI3ZWQ0NWZhYWRjZWE0Mzg1NWIwNjg1MDZmYTE5
ZWVjMC4uNDE2NGZhOWRiMGQ5ZjkyNDM0ZTFlZTE0NjQ5MmYzMjFiYjNlZjg3MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgKQEAgLTc0NSw2
ICs3NDUsMTYgQEAgcHVibGljOgogICAgICAgICBpbnNuLS07CiAgICAgICAgIEV4ZWN1dGFibGVB
bGxvY2F0b3I6OmNhY2hlRmx1c2goaW5zbiwgMiAqIHNpemVvZihNSVBTV29yZCkpOwogICAgIH0K
KworICAgIHN0YXRpYyBpbnQzMl90IHJlYWRJbnQzMih2b2lkKiBmcm9tKQorICAgIHsKKyAgICAg
ICAgTUlQU1dvcmQqIGluc24gPSByZWludGVycHJldF9jYXN0PE1JUFNXb3JkKj4oZnJvbSk7Cisg
ICAgICAgIEFTU0VSVCgoKmluc24gJiAweGZmZTAwMDAwKSA9PSAweDNjMDAwMDAwKTsgLy8gbHVp
CisgICAgICAgIGludDMyX3QgcmVzdWx0ID0gKCppbnNuICYgMHgwMDAwZmZmZikgPDwgMTY7Cisg
ICAgICAgIGluc24rKzsKKyAgICAgICAgQVNTRVJUKCgqaW5zbiAmIDB4ZmMwMDAwMDApID09IDB4
MzQwMDAwMDApOyAvLyBvcmkKKyAgICAgICAgcmVzdWx0IHw9ICppbnNuICYgMHgwMDAwZmZmZgor
ICAgIH0KICAgICAKICAgICBzdGF0aWMgdm9pZCByZXBhdGNoQ29tcGFjdCh2b2lkKiB3aGVyZSwg
aW50MzJfdCB2YWx1ZSkKICAgICB7CkBAIC03NTYsNiArNzY2LDExIEBAIHB1YmxpYzoKICAgICAg
ICAgcmVwYXRjaEludDMyKGZyb20sIHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdD4odG8pKTsKICAg
ICB9CiAKKyAgICBzdGF0aWMgdm9pZCogcmVhZFBvaW50ZXIodm9pZCogZnJvbSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx2b2lkKj4ocmVhZEludDMyKGZyb20pKTsKKyAgICB9
CisKIHByaXZhdGU6CiAgICAgLyogVXBkYXRlIGVhY2gganVtcCBpbiB0aGUgYnVmZmVyIG9mIG5l
d0Jhc2UuICAqLwogICAgIHZvaWQgcmVsb2NhdGVKdW1wcyh2b2lkKiBvbGRCYXNlLCB2b2lkKiBu
ZXdCYXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckNvZGVSZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmLmgKaW5kZXggMjE4M2IyMmYyZWQ2NTVlM2JlZWQ1YjFiMmVmNTQy
YjQ2YjYzMzVjMi4uNmQ0N2NiOTc1ODdmY2U0ZTU3YjkzZTAxYzE2YmNkY2EyOWZlZDUwMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNv
ZGVSZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQ29kZVJlZi5oCkBAIC0xODQsNyArMTg0LDcgQEAgcHVibGljOgogICAgIHZvaWQqIGRhdGFM
b2NhdGlvbigpIGNvbnN0IHsgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsgcmV0
dXJuIG1fdmFsdWU7IH0KICNlbmRpZgogCi0gICAgYm9vbCBvcGVyYXRvciEoKQorICAgIGJvb2wg
b3BlcmF0b3IhKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAhbV92YWx1ZTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NINEFzc2VtYmxl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9TSDRBc3NlbWJsZXIuaAppbmRl
eCBkYmI1NzM1NzUwNzNmNThmOTg2OTVlMmUyNDNjMzUyMzM5ZmIwNDVmLi4xZDA4OWU1YWJkZGI2
NTVlY2I3OTYzN2NiOWNmN2FjOTRlOTZkODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1NINEFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvU0g0QXNzZW1ibGVyLmgKQEAgLTEyMzIsNiArMTIzMiwxMiBAQCBwdWJsaWM6
CiAgICAgICAgIHVpbnQzMl90IGFkZHJlc3MgPSAob2Zmc2V0IDw8IDIpICsgKChyZWludGVycHJl
dF9jYXN0PHVpbnQzMl90PihpbnN0cnVjdGlvblB0cikgKyA0KSAmKH4weDMpKTsKICAgICAgICAg
KnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihhZGRyZXNzKSA9IG5ld0FkZHJlc3M7CiAgICAg
fQorICAgIAorICAgIHN0YXRpYyB1aW50MzJfdCByZWFkUENyZWxhdGl2ZUFkZHJlc3MoaW50IG9m
ZnNldCwgdWludDE2X3QqIGluc3RydWN0aW9uUHRyKQorICAgIHsKKyAgICAgICAgdWludDMyX3Qg
YWRkcmVzcyA9IChvZmZzZXQgPDwgMikgKyAoKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KGlu
c3RydWN0aW9uUHRyKSArIDQpICYofjB4MykpOworICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0
X2Nhc3Q8dWludDMyX3QqPihhZGRyZXNzKTsKKyAgICB9CiAKICAgICBzdGF0aWMgdWludDE2X3Qq
IGdldEluc3RydWN0aW9uUHRyKHZvaWQqIGNvZGUsIGludCBvZmZzZXQpCiAgICAgewpAQCAtMTM0
Niw2ICsxMzUyLDExIEBAIHB1YmxpYzoKICAgICAgICAgcGF0Y2hQb2ludGVyKHdoZXJlLCB2YWx1
ZSk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQqIHJlYWRQb2ludGVyKHZvaWQqIGNvZGUpCisg
ICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dm9pZCo+KHJlYWRJbnQzMihjb2RlKSk7
CisgICAgfQorCiAgICAgc3RhdGljIHZvaWQgcmVwYXRjaEludDMyKHZvaWQqIHdoZXJlLCBpbnQz
Ml90IHZhbHVlKQogICAgIHsKICAgICAgICAgdWludDE2X3QqIGluc3RydWN0aW9uUHRyID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KHdoZXJlKTsKQEAgLTE0NzQsNiArMTQ4NSwxMSBAQCBw
dWJsaWM6CiAgICAgICAgIGNoYW5nZVBDcmVsYXRpdmVBZGRyZXNzKCgqKHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDE2X3QqPihjb2RlKSkgJiAweGZmKSwgcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+
KGNvZGUpLCB2YWx1ZSk7CiAgICAgfQogCisgICAgc3RhdGljIHVpbnQzMl90IHJlYWRJbnQzMih2
b2lkKiBjb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlYWRQQ3JlbGF0aXZlQWRkcmVzcygo
KihyZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oY29kZSkpICYgMHhmZiksIHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDE2X3QqPihjb2RlKSk7CisgICAgfQorCiAgICAgdm9pZCogZXhlY3V0YWJsZUNv
cHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBFeGVjdXRhYmxlUG9vbCogYWxsb2NhdG9yKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIG1fYnVmZmVyLmV4ZWN1dGFibGVDb3B5KGdsb2JhbERhdGEs
IGFsbG9jYXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3Nl
bWJsZXIuaAppbmRleCA4ZDljNTc2OTk3MGE3ZmUyZTUyZjMyNTQwZDNlOTFhZWY1MDlhNWQxLi40
MWRkNTBmZmNjN2NmN2NhYmY3MDAwNzZmNDVjOTJlOWRmNDQ2ODI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKQEAgLTE1NjUsNiArMTU2NSwx
MSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzZXRQb2ludGVyKHdoZXJlLCB2YWx1ZSk7CiAg
ICAgfQorICAgIAorICAgIHN0YXRpYyB2b2lkKiByZWFkUG9pbnRlcih2b2lkKiB3aGVyZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqKj4od2hlcmUpWy0xXTsK
KyAgICB9CiAKICAgICBzdGF0aWMgdW5zaWduZWQgZ2V0Q2FsbFJldHVybk9mZnNldChBc3NlbWJs
ZXJMYWJlbCBjYWxsKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKaW5kZXggZDllMjM1NTRjMTM2ODA4ODViY2E1YWFmMzZlMzg1ZDdjYzc4MDc3
YS4uMjI0NzI0OWIzZWE0MTJmNjJkZGViNjExNTQzNzlkYjljNGIwNmI4MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTE1MDgsNiArMTUwOCw4
IEBAIHZvaWQgQ29kZUJsb2NrOjp2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlzaXRvcikK
ICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX21ldGhvZENhbGxMaW5rSW5mb3NbaV0uY2Fj
aGVkU3RydWN0dXJlKTsKICAgICAgICAgICAgIEFTU0VSVCghIW1fbWV0aG9kQ2FsbExpbmtJbmZv
c1tpXS5jYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgdmlzaXRvci5hcHBl
bmQoJm1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpXS5jYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUpOwor
ICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpXS5jYWNo
ZWRGdW5jdGlvbik7CisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9tZXRob2RDYWxsTGlu
a0luZm9zW2ldLmNhY2hlZFByb3RvdHlwZSk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA5MmNhZmQxNTQx
YWQzY2E2ODYzYjMxNjgyMzY2YzY5YjA5YmY5OTIxLi44YmZhMzIzODAxNDE2ZTNmZTVhN2MxZjg1
MjUyOGI1YjU2MjI5YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRXZhbENvZGVDYWNoZS5oIgogI2lu
Y2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgorI2luY2x1ZGUgIkpJ
VFdyaXRlQmFycmllci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAi
SnVtcFRhYmxlLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKQEAgLTEwMywxMCArMTA0LDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIENvZGVMb2NhdGlvbk5lYXJDYWxsIGNhbGxSZXR1cm5Mb2Nh
dGlvbjsKICAgICAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGhvdFBhdGhCZWdpbjsKICAg
ICAgICAgQ29kZUxvY2F0aW9uTmVhckNhbGwgaG90UGF0aE90aGVyOwotICAgICAgICBXcml0ZUJh
cnJpZXI8SlNGdW5jdGlvbj4gY2FsbGVlOworICAgICAgICBKSVRXcml0ZUJhcnJpZXI8SlNGdW5j
dGlvbj4gY2FsbGVlOwogICAgICAgICBib29sIGhhc1NlZW5TaG91bGRSZXBhdGNoOwotICAgICAg
ICAKLSAgICAgICAgdm9pZCBzZXRVbmxpbmtlZCgpIHsgY2FsbGVlLmNsZWFyKCk7IH0KKwogICAg
ICAgICBib29sIGlzTGlua2VkKCkgeyByZXR1cm4gY2FsbGVlOyB9CiAKICAgICAgICAgYm9vbCBz
ZWVuT25jZSgpCkBAIC0xMjgsNyArMTI4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJv
b2wgc2Vlbk9uY2UoKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIWNhY2hlZFN0cnVj
dHVyZSk7Ci0gICAgICAgICAgICByZXR1cm4gY2FjaGVkUHJvdG90eXBlU3RydWN0dXJlOworICAg
ICAgICAgICAgcmV0dXJuIGNhY2hlZFByb3RvdHlwZVN0cnVjdHVyZS5pc0ZsYWdnZWQoKTsKICAg
ICAgICAgfQogCiAgICAgICAgIHZvaWQgc2V0U2VlbigpCkBAIC0xNDAsMTMgKzE0MCwxNCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIC8vICAgICAtIE9uY2UgdGhpcyB0cmFuc2l0aW9u
IGhhcyBiZWVuIHRha2VuIG9uY2UsIGNhY2hlZFN0cnVjdHVyZSBpcwogICAgICAgICAgICAgLy8g
ICAgICAgbnVsbCBhbmQgY2FjaGVkUHJvdG90eXBlU3RydWN0dXJlIGlzIHNldCB0byBhIG51bi1u
dWxsIHZhbHVlLgogICAgICAgICAgICAgLy8gICAgIC0gT25jZSB0aGUgY2FsbCBpcyBsaW5rZWQg
Ym90aCBzdHJ1Y3R1cmVzIGFyZSBzZXQgdG8gbm9uLW51bGwgdmFsdWVzLgotICAgICAgICAgICAg
Y2FjaGVkUHJvdG90eXBlU3RydWN0dXJlLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoKFN0cnVjdHVy
ZSopMSk7CisgICAgICAgICAgICBjYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUuc2V0RmxhZ09uQmFy
cmllcigpOwogICAgICAgICB9CiAKICAgICAgICAgQ29kZUxvY2F0aW9uQ2FsbCBjYWxsUmV0dXJu
TG9jYXRpb247Ci0gICAgICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVMYWJl
bDsKLSAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gY2FjaGVkU3RydWN0dXJlOwotICAg
ICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBjYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmU7Cisg
ICAgICAgIEpJVFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IGNhY2hlZFN0cnVjdHVyZTsKKyAgICAg
ICAgSklUV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gY2FjaGVkUHJvdG90eXBlU3RydWN0dXJlOwor
ICAgICAgICBKSVRXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gY2FjaGVkRnVuY3Rpb247CisgICAg
ICAgIEpJVFdyaXRlQmFycmllcjxKU09iamVjdD4gY2FjaGVkUHJvdG90eXBlOwogICAgIH07CiAK
ICAgICBzdHJ1Y3QgR2xvYmFsUmVzb2x2ZUluZm8gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrU3RhY2suaAppbmRleCBmYTAyOGVlOWI1NGE1NTVmNTVhYzI1ZGVkNTUwNTliNDE1NDdjNWE1
Li4xY2RiYWQ0NGYwZDQ1M2UyYjY4NzM1ODY0OGM2MDNmMmRmMTgxZjY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaApAQCAtNDIsNiArNDIsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBjbGFzcyBNYXJrU3RhY2s7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gY2xhc3MgV3JpdGVCYXJyaWVyQmFzZTsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBjbGFzcyBKSVRXcml0ZUJhcnJpZXI7CiAgICAgCiAgICAgc3RydWN0IE1hcmtTZXQg
ewogICAgICAgICBNYXJrU2V0KEpTVmFsdWUqIHZhbHVlcywgSlNWYWx1ZSogZW5kKTsKQEAgLTg1
LDcgKzg2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH5NYXJrU3RhY2soKTsKIAogICAg
ICAgICB2b2lkIGFwcGVuZChDb25zZXJ2YXRpdmVSb290cyYpOwotCisgICAgICAgIAorICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBhcHBlbmQoSklUV3JpdGVCYXJyaWVy
PFQ+Kik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIGFwcGVuZChX
cml0ZUJhcnJpZXJCYXNlPFQ+Kik7CiAgICAgICAgIGlubGluZSB2b2lkIGFwcGVuZFZhbHVlcyhX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+Kiwgc2l6ZV90IGNvdW50KTsKICAgICAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggNWQ4YWFlMTE0Yjg5YWNjYjk1YjI2ZTIyZjg4NzAw
MjEwMjg3YTYzZC4uYThhZDk1YjQxNzdiNWZkNmJjYjc1ZmI2ZTM1NWIxMjM4ZTcwN2YyNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNTg0LDcgKzU4NCw3IEBAIEpJVENvZGUgSklU
Ojpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW5jdGlvbkVudHJ5QXJpdHlDaGVjaykKICAgICBt
X2NvZGVCbG9jay0+YWRkTWV0aG9kQ2FsbExpbmtJbmZvcyhtZXRob2RDYWxsQ291bnQpOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtZXRob2RDYWxsQ291bnQ7ICsraSkgewogICAgICAg
ICBNZXRob2RDYWxsTGlua0luZm8mIGluZm8gPSBtX2NvZGVCbG9jay0+bWV0aG9kQ2FsbExpbmtJ
bmZvKGkpOwotICAgICAgICBpbmZvLnN0cnVjdHVyZUxhYmVsID0gcGF0Y2hCdWZmZXIubG9jYXRp
b25PZihtX21ldGhvZENhbGxDb21waWxhdGlvbkluZm9baV0uc3RydWN0dXJlVG9Db21wYXJlKTsK
KyAgICAgICAgaW5mby5jYWNoZWRTdHJ1Y3R1cmUuc2V0TG9jYXRpb24ocGF0Y2hCdWZmZXIubG9j
YXRpb25PZihtX21ldGhvZENhbGxDb21waWxhdGlvbkluZm9baV0uc3RydWN0dXJlVG9Db21wYXJl
KSk7CiAgICAgICAgIGluZm8uY2FsbFJldHVybkxvY2F0aW9uID0gbV9jb2RlQmxvY2stPnN0cnVj
dHVyZVN0dWJJbmZvKG1fbWV0aG9kQ2FsbENvbXBpbGF0aW9uSW5mb1tpXS5wcm9wZXJ0eUFjY2Vz
c0luZGV4KS5jYWxsUmV0dXJuTG9jYXRpb247CiAgICAgfQogCkBAIC02MDIsOCArNjAyLDcgQEAg
dm9pZCBKSVQ6OmxpbmtDYWxsKEpTRnVuY3Rpb24qIGNhbGxlZSwgQ29kZUJsb2NrKiBjYWxsZXJD
b2RlQmxvY2ssIENvZGVCbG9jayogY2EKICAgICAvLyBJZiB0aGlzIGlzIGEgbmF0aXZlIGNhbGwg
Y2FsbGVlQ29kZUJsb2NrIGlzIG51bGwgc28gdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzIGlzIHVu
aW1wb3J0YW50CiAgICAgaWYgKCFjYWxsZWVDb2RlQmxvY2sgfHwgKGNhbGxlckFyZ0NvdW50ID09
IGNhbGxlZUNvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzKSkgewogICAgICAgICBBU1NFUlQoIWNh
bGxMaW5rSW5mby0+aXNMaW5rZWQoKSk7Ci0gICAgICAgIGNhbGxMaW5rSW5mby0+Y2FsbGVlLnNl
dCgqZ2xvYmFsRGF0YSwgY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY2FsbGVl
KTsKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKGNhbGxMaW5rSW5mby0+aG90UGF0aEJl
Z2luLCBjYWxsZWUpOworICAgICAgICBjYWxsTGlua0luZm8tPmNhbGxlZS5zZXQoKmdsb2JhbERh
dGEsIGNhbGxMaW5rSW5mby0+aG90UGF0aEJlZ2luLCBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLCBjYWxsZWUpOwogICAgICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhjYWxsTGlu
a0luZm8tPmhvdFBhdGhPdGhlciwgY29kZSk7CiAgICAgfQogCkBAIC02MTksOCArNjE4LDcgQEAg
dm9pZCBKSVQ6OmxpbmtDb25zdHJ1Y3QoSlNGdW5jdGlvbiogY2FsbGVlLCBDb2RlQmxvY2sqIGNh
bGxlckNvZGVCbG9jaywgQ29kZUJsb2MKICAgICAvLyBJZiB0aGlzIGlzIGEgbmF0aXZlIGNhbGwg
Y2FsbGVlQ29kZUJsb2NrIGlzIG51bGwgc28gdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzIGlzIHVu
aW1wb3J0YW50CiAgICAgaWYgKCFjYWxsZWVDb2RlQmxvY2sgfHwgKGNhbGxlckFyZ0NvdW50ID09
IGNhbGxlZUNvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzKSkgewogICAgICAgICBBU1NFUlQoIWNh
bGxMaW5rSW5mby0+aXNMaW5rZWQoKSk7Ci0gICAgICAgIGNhbGxMaW5rSW5mby0+Y2FsbGVlLnNl
dCgqZ2xvYmFsRGF0YSwgY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY2FsbGVl
KTsKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKGNhbGxMaW5rSW5mby0+aG90UGF0aEJl
Z2luLCBjYWxsZWUpOworICAgICAgICBjYWxsTGlua0luZm8tPmNhbGxlZS5zZXQoKmdsb2JhbERh
dGEsIGNhbGxMaW5rSW5mby0+aG90UGF0aEJlZ2luLCBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLCBjYWxsZWUpOwogICAgICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhjYWxsTGlu
a0luZm8tPmhvdFBhdGhPdGhlciwgY29kZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDUyY2YzNDE3MTY0ZGNmYTk3
YTEwMWU4NWMwOGZmNzEwMTY4YTUxYWYuLjllZWIxYzgzZjY4ZjgxYTZkYjBlYjc4ZTg2MDIyODkx
NDFjMmI0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwCkBAIC01NzcsMjQgKzU3Nyw2IEBAIHZvaWQgSklUOjpwYXRjaEdldEJ5SWRTZWxm
KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0CiAg
ICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVs
Q29tcGFjdEF0T2Zmc2V0KHBhdGNoT2Zmc2V0R2V0QnlJZFByb3BlcnR5TWFwT2Zmc2V0KSwgb2Zm
c2V0KTsKIH0KIAotdm9pZCBKSVQ6OnBhdGNoTWV0aG9kQ2FsbFByb3RvKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE1ldGhvZENhbGxMaW5rSW5mbyYgbWV0
aG9kQ2FsbExpbmtJbmZvLCBKU0Z1bmN0aW9uKiBjYWxsZWUsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU09iamVjdCogcHJvdG8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKLXsKLSAg
ICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKLQotICAgIEFTU0VSVCgh
bWV0aG9kQ2FsbExpbmtJbmZvLmNhY2hlZFN0cnVjdHVyZSk7Ci0gICAgbWV0aG9kQ2FsbExpbmtJ
bmZvLmNhY2hlZFN0cnVjdHVyZS5zZXQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKSwgc3RydWN0dXJlKTsKLQotICAgIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJl
ID0gcHJvdG8tPnN0cnVjdHVyZSgpOwotICAgIG1ldGhvZENhbGxMaW5rSW5mby5jYWNoZWRQcm90
b3R5cGVTdHJ1Y3R1cmUuc2V0KGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCksIHByb3RvdHlwZVN0cnVjdHVyZSk7Ci0KLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2gobWV0
aG9kQ2FsbExpbmtJbmZvLnN0cnVjdHVyZUxhYmVsLCBzdHJ1Y3R1cmUpOwotICAgIHJlcGF0Y2hC
dWZmZXIucmVwYXRjaChtZXRob2RDYWxsTGlua0luZm8uc3RydWN0dXJlTGFiZWwuZGF0YUxhYmVs
UHRyQXRPZmZzZXQocGF0Y2hPZmZzZXRNZXRob2RDaGVja1Byb3RvT2JqKSwgcHJvdG8pOwotICAg
IHJlcGF0Y2hCdWZmZXIucmVwYXRjaChtZXRob2RDYWxsTGlua0luZm8uc3RydWN0dXJlTGFiZWwu
ZGF0YUxhYmVsUHRyQXRPZmZzZXQocGF0Y2hPZmZzZXRNZXRob2RDaGVja1Byb3RvU3RydWN0KSwg
cHJvdG90eXBlU3RydWN0dXJlKTsKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2gobWV0aG9kQ2Fs
bExpbmtJbmZvLnN0cnVjdHVyZUxhYmVsLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KHBhdGNoT2Zmc2V0
TWV0aG9kQ2hlY2tQdXRGdW5jdGlvbiksIGNhbGxlZSk7Ci0KLSAgICByZXBhdGNoQnVmZmVyLnJl
bGlua0NhbGxlclRvRnVuY3Rpb24ocmV0dXJuQWRkcmVzcywgRnVuY3Rpb25QdHIoY3RpX29wX2dl
dF9ieV9pZCkpOwotfQotCiB2b2lkIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sq
IGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNz
LCBib29sIGRpcmVjdCkKIHsKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJs
b2NrKTsKQEAgLTEwMzcsNiArMTAxOSwyMSBAQCB2b2lkIEpJVDo6dGVzdFByb3RvdHlwZShKU1Zh
bHVlIHByb3RvdHlwZSwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcykKICAgICBmYWlsdXJlQ2FzZXMu
YXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMywgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIocHJvdG90eXBlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUo
KSkpKTsKIH0KIAordm9pZCBKSVQ6OnBhdGNoTWV0aG9kQ2FsbFByb3RvKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE1ldGhvZENhbGxMaW5rSW5mbyYgbWV0
aG9kQ2FsbExpbmtJbmZvLCBKU0Z1bmN0aW9uKiBjYWxsZWUsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU09iamVjdCogcHJvdG8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK3sKKyAg
ICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKKyAgICAKKyAgICBBU1NF
UlQoIW1ldGhvZENhbGxMaW5rSW5mby5jYWNoZWRTdHJ1Y3R1cmUpOworICAgIENvZGVMb2NhdGlv
bkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVMb2NhdGlvbiA9IG1ldGhvZENhbGxMaW5rSW5mby5jYWNo
ZWRTdHJ1Y3R1cmUubG9jYXRpb24oKTsKKyAgICBtZXRob2RDYWxsTGlua0luZm8uY2FjaGVkU3Ry
dWN0dXJlLnNldChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmVMb2NhdGlvbiwgY29kZUJsb2NrLT5vd25l
ckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAKKyAgICBTdHJ1Y3R1cmUqIHByb3RvdHlw
ZVN0cnVjdHVyZSA9IHByb3RvLT5zdHJ1Y3R1cmUoKTsKKyAgICBtZXRob2RDYWxsTGlua0luZm8u
Y2FjaGVkUHJvdG90eXBlU3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmVMb2NhdGlv
bi5kYXRhTGFiZWxQdHJBdE9mZnNldChwYXRjaE9mZnNldE1ldGhvZENoZWNrUHJvdG9TdHJ1Y3Qp
LCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBwcm90b3R5cGVTdHJ1Y3R1cmUpOworICAg
IG1ldGhvZENhbGxMaW5rSW5mby5jYWNoZWRQcm90b3R5cGUuc2V0KGdsb2JhbERhdGEsIHN0cnVj
dHVyZUxvY2F0aW9uLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KHBhdGNoT2Zmc2V0TWV0aG9kQ2hlY2tQ
cm90b09iaiksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHByb3RvKTsKKyAgICBtZXRo
b2RDYWxsTGlua0luZm8uY2FjaGVkRnVuY3Rpb24uc2V0KGdsb2JhbERhdGEsIHN0cnVjdHVyZUxv
Y2F0aW9uLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KHBhdGNoT2Zmc2V0TWV0aG9kQ2hlY2tQdXRGdW5j
dGlvbiksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7CisgICAgcmVwYXRj
aEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRy
KGN0aV9vcF9nZXRfYnlfaWQpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAv
LyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggZGZmMDY5MGZiNTI0OGJiNjEyYjdhYmE5MDMxNmFl
N2NlN2ZhODNiMC4uNmY5YmRkMmIyNGRkZDdmMGU4MGMwMDkxNTYzODBhZWIzMWFiYTEyYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCkBAIC01NTEsMjMgKzU1MSw2IEBAIHZvaWQgSklUOjpwYXRjaEdldEJ5SWRTZWxmKENv
ZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0CiAgICAg
cmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsQ29t
cGFjdEF0T2Zmc2V0KHBhdGNoT2Zmc2V0R2V0QnlJZFByb3BlcnR5TWFwT2Zmc2V0MiksIG9mZnNl
dCArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKTsgLy8gdGFnCiB9CiAK
LXZvaWQgSklUOjpwYXRjaE1ldGhvZENhbGxQcm90byhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IENvZGVCbG9jayogY29kZUJsb2NrLCBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGxMaW5r
SW5mbywgSlNGdW5jdGlvbiogY2FsbGVlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3Qq
IHByb3RvLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCi17Ci0gICAgUmVwYXRjaEJ1
ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7Ci0gICAgCi0gICAgQVNTRVJUKCFtZXRob2RD
YWxsTGlua0luZm8uY2FjaGVkU3RydWN0dXJlKTsKLSAgICBtZXRob2RDYWxsTGlua0luZm8uY2Fj
aGVkU3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
LCBzdHJ1Y3R1cmUpOwotICAgIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlID0gcHJvdG8t
PnN0cnVjdHVyZSgpOwotICAgIG1ldGhvZENhbGxMaW5rSW5mby5jYWNoZWRQcm90b3R5cGVTdHJ1
Y3R1cmUuc2V0KGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHByb3Rv
dHlwZVN0cnVjdHVyZSk7Ci0gICAgCi0gICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKG1ldGhvZENh
bGxMaW5rSW5mby5zdHJ1Y3R1cmVMYWJlbCwgc3RydWN0dXJlKTsKLSAgICByZXBhdGNoQnVmZmVy
LnJlcGF0Y2gobWV0aG9kQ2FsbExpbmtJbmZvLnN0cnVjdHVyZUxhYmVsLmRhdGFMYWJlbFB0ckF0
T2Zmc2V0KHBhdGNoT2Zmc2V0TWV0aG9kQ2hlY2tQcm90b09iaiksIHByb3RvKTsKLSAgICByZXBh
dGNoQnVmZmVyLnJlcGF0Y2gobWV0aG9kQ2FsbExpbmtJbmZvLnN0cnVjdHVyZUxhYmVsLmRhdGFM
YWJlbFB0ckF0T2Zmc2V0KHBhdGNoT2Zmc2V0TWV0aG9kQ2hlY2tQcm90b1N0cnVjdCksIHByb3Rv
dHlwZVN0cnVjdHVyZSk7Ci0gICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKG1ldGhvZENhbGxMaW5r
SW5mby5zdHJ1Y3R1cmVMYWJlbC5kYXRhTGFiZWxQdHJBdE9mZnNldChwYXRjaE9mZnNldE1ldGhv
ZENoZWNrUHV0RnVuY3Rpb24pLCBjYWxsZWUpOwotICAgIAotICAgIHJlcGF0Y2hCdWZmZXIucmVs
aW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0
X2J5X2lkKSk7Ci19Ci0KIHZvaWQgSklUOjpwYXRjaFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayog
Y29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3Ms
IGJvb2wgZGlyZWN0KQogewogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxv
Y2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRXcml0ZUJhcnJp
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUV3JpdGVCYXJyaWVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZGJlOTBjMmM0ZmU5YmZlMjQxM2FjNTE3NWI1NTBlY2U4ZTEyMjc0NAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUV3JpdGVCYXJyaWVyLmgKQEAg
LTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpJVFdyaXRlQmFycmllcl9oCisj
ZGVmaW5lIEpJVFdyaXRlQmFycmllcl9oCisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAi
TWFjcm9Bc3NlbWJsZXIuaCIKKyNpbmNsdWRlICJNYXJrU3RhY2suaCIKKyNpbmNsdWRlICJXcml0
ZUJhcnJpZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTQ2VsbDsKK2NsYXNzIEpT
R2xvYmFsRGF0YTsKKworLy8gTmVlZHMgdG8gYmUgZXZlbiB0byBhcHBlYXNlIHNvbWUgb2YgdGhl
IGJhY2tlbmRzLgorI2RlZmluZSBKSVRXcml0ZUJhcnJpZXJGbGFnICgodm9pZCopMikKK2NsYXNz
IEpJVFdyaXRlQmFycmllckJhc2UgeworcHVibGljOgorICAgIHR5cGVkZWYgdm9pZCogKEpJVFdy
aXRlQmFycmllckJhc2U6OipVbnNwZWNpZmllZEJvb2xUeXBlKTsKKyAgICBvcGVyYXRvciBVbnNw
ZWNpZmllZEJvb2xUeXBlKigpIGNvbnN0IHsgcmV0dXJuIGdldCgpID8gcmVpbnRlcnByZXRfY2Fz
dDxVbnNwZWNpZmllZEJvb2xUeXBlKj4oMSkgOiAwOyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBj
b25zdCB7IHJldHVybiAhZ2V0KCk7IH0KKworICAgIHZvaWQgc2V0RmxhZ09uQmFycmllcigpCisg
ICAgeworICAgICAgICBBU1NFUlQoIW1fbG9jYXRpb24pOworICAgICAgICBtX2xvY2F0aW9uID0g
Q29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyKEpJVFdyaXRlQmFycmllckZsYWcpOworICAgIH0KKwor
ICAgIGJvb2wgaXNGbGFnZ2VkKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhIW1fbG9j
YXRpb247CisgICAgfQorCisgICAgdm9pZCBzZXRMb2NhdGlvbihDb2RlTG9jYXRpb25EYXRhTGFi
ZWxQdHIgbG9jYXRpb24pCisgICAgeworICAgICAgICBBU1NFUlQoIW1fbG9jYXRpb24pOworICAg
ICAgICBtX2xvY2F0aW9uID0gbG9jYXRpb247CisgICAgfQorCisgICAgQ29kZUxvY2F0aW9uRGF0
YUxhYmVsUHRyIGxvY2F0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCgoISFtX2xv
Y2F0aW9uKSAmJiBtX2xvY2F0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkgIT0gSklUV3JpdGVCYXJy
aWVyRmxhZyk7CisgICAgICAgIHJldHVybiBtX2xvY2F0aW9uOworICAgIH0KKyAgICAKK3Byb3Rl
Y3RlZDoKKyAgICBKSVRXcml0ZUJhcnJpZXJCYXNlKCkKKyAgICB7CisgICAgfQorCisgICAgdm9p
ZCBzZXQoSlNHbG9iYWxEYXRhJiwgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGxvY2F0aW9uLCBK
U0NlbGwqIG93bmVyLCBKU0NlbGwqIHZhbHVlKQorICAgIHsKKyAgICAgICAgSGVhcDo6d3JpdGVC
YXJyaWVyKG93bmVyLCB2YWx1ZSk7CisgICAgICAgIG1fbG9jYXRpb24gPSBsb2NhdGlvbjsKKyAg
ICAgICAgQVNTRVJUKCgoISFtX2xvY2F0aW9uKSAmJiBtX2xvY2F0aW9uLmV4ZWN1dGFibGVBZGRy
ZXNzKCkgIT0gSklUV3JpdGVCYXJyaWVyRmxhZykgfHwgKGxvY2F0aW9uLmV4ZWN1dGFibGVBZGRy
ZXNzKCkgPT0gbV9sb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRlcihtX2xvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgIEFT
U0VSVChnZXQoKSA9PSB2YWx1ZSk7CisgICAgfQorCisgICAgSlNDZWxsKiBnZXQoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2xvY2F0aW9uIHx8IG1fbG9jYXRpb24uZXhlY3V0YWJsZUFk
ZHJlc3MoKSA9PSBKSVRXcml0ZUJhcnJpZXJGbGFnKQorICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHZvaWQqIHJlc3VsdCA9IHN0YXRpY19jYXN0PEpTQ2VsbCo+KE1hY3JvQXNzZW1ibGVy
OjpyZWFkUG9pbnRlcihtX2xvY2F0aW9uKSk7CisgICAgICAgIC8vIFdlIHVzZSAtMSB0byBpbmRp
Y2F0ZSBhICJzYWZlIiBlbXB0eSB2YWx1ZSBpbiB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtCisgICAg
ICAgIGlmIChyZXN1bHQgPT0gKHZvaWQqKS0xKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0NlbGwqPihyZXN1bHQpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgbV9sb2NhdGlvbjsKK307CisKKyN1bmRl
ZiBKSVRXcml0ZUJhcnJpZXJGbGFnCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBKSVRX
cml0ZUJhcnJpZXIgOiBwdWJsaWMgSklUV3JpdGVCYXJyaWVyQmFzZSB7CitwdWJsaWM6CisgICAg
SklUV3JpdGVCYXJyaWVyKCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBzZXQoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgbG9jYXRpb24sIEpTQ2Vs
bCogb3duZXIsIFQqIHZhbHVlKQorICAgIHsKKyAgICAgICAgdmFsaWRhdGVDZWxsKG93bmVyKTsK
KyAgICAgICAgdmFsaWRhdGVDZWxsKHZhbHVlKTsKKyAgICAgICAgSklUV3JpdGVCYXJyaWVyQmFz
ZTo6c2V0KGdsb2JhbERhdGEsIGxvY2F0aW9uLCBvd25lciwgdmFsdWUpOworICAgIH0KKyAgICBU
KiBnZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgVCogcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VCo+
KEpJVFdyaXRlQmFycmllckJhc2U6OmdldCgpKTsKKyAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAg
ICAgICAgIHZhbGlkYXRlQ2VsbChyZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIE1hcmtTdGFjazo6YXBw
ZW5kKEpJVFdyaXRlQmFycmllcjxUPiogc2xvdCkKK3sKKyAgICBpbnRlcm5hbEFwcGVuZChzbG90
LT5nZXQoKSk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98416</attachid>
            <date>2011-06-23 15:13:15 -0700</date>
            <delta_ts>2011-06-23 15:28:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63291-20110623151314.patch</filename>
            <type>text/plain</type>
            <size>30887</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODk2MjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDlh
YmQzYzcxNWM1MmJkNDgwNjNjMjllZjZmNzA4YzVhMzM3ODdkMGQuLmQyZGJkYmQ3YmNhY2MyNzY3
ZGYwZTVmODg5MGFkZjMyM2NhMDQzM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDY1IEBACisyMDExLTA2LTIzICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBh
YmlsaXR5IHRvIGR5bmFtaWNhbGx5IG1vZGlmeSBsaW5rZWQgY2FsbCBzaXRlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjMyOTEKKworICAgICAgICBB
ZGQgSklUV3JpdGVCYXJyaWVyIGFzIGEgd3JpdGViYXJyaWVyIGNsYXNzIHRoYXQgYWxsb3dzCisg
ICAgICAgIHJlYWRpbmcgYW5kIHdyaXRpbmcgZGlyZWN0bHkgaW50byB0aGUgY29kZSBzdHJlYW0u
CisKKyAgICAgICAgVGhpcyByZXF1aXJlZCBhZGRpbmcgbG9naWMgdG8gYWxsIHRoZSBhc3NlbWJs
ZXJzIHRvIGFsbG93CisgICAgICAgIHVzIHRvIHJlYWQgdmFsdWVzIGJhY2sgb3V0IG9mIHRoZSBp
bnN0cnVjdGlvbiBzdHJlYW0uCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaDoKKyAg
ICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpyZWFkUG9pbnRlcik6CisgICAgICAgICogYXNzZW1i
bGVyL0FSTXY3QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpyZWFk
UG9pbnRlcik6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpyZWFkSW50MzIpOgorICAg
ICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6ZGVjb2RlVHdvV29yZE9wNWk2SW1tNFJlZzRFbmNv
ZGVkSW1tRmlyc3QpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6ZGVjb2RlVHdvV29y
ZE9wNWk2SW1tNFJlZzRFbmNvZGVkSW1tU2Vjb25kKToKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyOjpyZWFkUG9pbnRlcik6CisgICAgICAgICogYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaDoK
KyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6cmVhZEludDMyKToKKyAgICAgICAgKEpTQzo6
TUlQU0Fzc2VtYmxlcjo6cmVhZFBvaW50ZXIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckNvZGVSZWYuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpv
cGVyYXRvciEpOgorICAgICAgICAqIGFzc2VtYmxlci9TSDRBc3NlbWJsZXIuaDoKKyAgICAgICAg
KEpTQzo6U0g0QXNzZW1ibGVyOjpyZWFkUENyZWxhdGl2ZUFkZHJlc3MpOgorICAgICAgICAoSlND
OjpTSDRBc3NlbWJsZXI6OnJlYWRQb2ludGVyKToKKyAgICAgICAgKEpTQzo6U0g0QXNzZW1ibGVy
OjpyZWFkSW50MzIpOgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAg
ICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpyZWFkUG9pbnRlcik6CisgICAgICAgICogYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2aXNpdEFnZ3JlZ2F0ZSk6
CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1ldGhvZENh
bGxMaW5rSW5mbzo6c2Vlbk9uY2UpOgorICAgICAgICAoSlNDOjpNZXRob2RDYWxsTGlua0luZm86
OnNldFNlZW4pOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmg6CisgICAgICAgICogaml0L0pJ
VC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAoSlND
OjpKSVQ6OmxpbmtDYWxsKToKKyAgICAgICAgKEpTQzo6SklUOjpsaW5rQ29uc3RydWN0KToKKyAg
ICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnBh
dGNoTWV0aG9kQ2FsbFByb3RvKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82
NC5jcHA6CisgICAgICAgICogaml0L0pJVFdyaXRlQmFycmllci5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6SklUV3JpdGVCYXJyaWVyQmFzZTo6b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSop
OgorICAgICAgICAoSlNDOjpKSVRXcml0ZUJhcnJpZXJCYXNlOjpvcGVyYXRvciEpOgorICAgICAg
ICAoSlNDOjpKSVRXcml0ZUJhcnJpZXJCYXNlOjpzZXRGbGFnT25CYXJyaWVyKToKKyAgICAgICAg
KEpTQzo6SklUV3JpdGVCYXJyaWVyQmFzZTo6aXNGbGFnZ2VkKToKKyAgICAgICAgKEpTQzo6SklU
V3JpdGVCYXJyaWVyQmFzZTo6c2V0TG9jYXRpb24pOgorICAgICAgICAoSlNDOjpKSVRXcml0ZUJh
cnJpZXJCYXNlOjpsb2NhdGlvbik6CisgICAgICAgIChKU0M6OkpJVFdyaXRlQmFycmllckJhc2U6
OkpJVFdyaXRlQmFycmllckJhc2UpOgorICAgICAgICAoSlNDOjpKSVRXcml0ZUJhcnJpZXJCYXNl
OjpzZXQpOgorICAgICAgICAoSlNDOjpKSVRXcml0ZUJhcnJpZXJCYXNlOjpnZXQpOgorICAgICAg
ICAoSlNDOjpKSVRXcml0ZUJhcnJpZXI6OkpJVFdyaXRlQmFycmllcik6CisgICAgICAgIChKU0M6
OkpJVFdyaXRlQmFycmllcjo6c2V0KToKKyAgICAgICAgKEpTQzo6SklUV3JpdGVCYXJyaWVyOjpn
ZXQpOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2s6OmFwcGVuZCk6CisKIDIwMTEtMDYtMjMgIEdh
dmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IE9saXZlciBIdW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjMmUw
NmFkYmQ1Y2EwMmNlNDUxMTIzZDcyNzllMTgzZWU3NjNhZDFmLi5jOTg5OGU0ZTZjNGJkOGYyNzM2
MGUyZTZkYTE2ZTIxMDI1NmU1MzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NDAwLDYgKzQwMCw3IEBACiAJCUE3NTcwNkRFMTE4QTJCQ0YwMDU3Rjg4RiAvKiBKSVRBcml0aG1l
dGljMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTc1NzA2REQxMThBMkJDRjAwNTdGODhGIC8qIEpJVEFyaXRobWV0aWMzMl82NC5jcHAgKi87
IH07CiAJCUE3NjZCNDRGMEVFOERDRDEwMDk1MThDQSAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I0OERCNTBF
RTc0Q0ZDMDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3NkM1MTc2MTE4Mjc0OEQwMDcxNUIw
NSAvKiBKU0ludGVyZmFjZUpJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTc2QzUxNzQxMTgyNzQ4RDAwNzE1QjA1IC8qIEpTSW50ZXJmYWNlSklULmgg
Ki87IH07CisJCUE3NkY1NEEzMTNCMjhBQUIwMEVGMkJDRSAvKiBKSVRXcml0ZUJhcnJpZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NkY1NEEyMTNC
MjhBQUIwMEVGMkJDRSAvKiBKSVRXcml0ZUJhcnJpZXIuaCAqLzsgfTsKIAkJQTc4M0EwRDExMUEz
NkRDQTAwNTYzRDIwIC8qIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4M0EwRDAxMUEzNkRDQTAwNTYzRDIw
IC8qIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3ODNBMkFCMTFBNUJFODQwMDU2M0QyMCAvKiBKU09i
amVjdFdpdGhHbG9iYWxPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTc4M0EyQUExMUE1QkU4NDAwNTYzRDIwIC8qIEpTT2JqZWN0V2l0aEds
b2JhbE9iamVjdC5jcHAgKi87IH07CiAJCUE3ODRBMjYxMTFEMTY2MjIwMDU3NzZBQyAvKiBBU1RC
dWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
N0E3RUU3NDExQjk4QjhEMDA2NUExNEYgLyogQVNUQnVpbGRlci5oICovOyB9OwpAQCAtMTExNSw2
ICsxMTE2LDcgQEAKIAkJQTc0REUxQ0IxMjBCODZENjAwRDQwRDVCIC8qIEFSTXY3QXNzZW1ibGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFSTXY3QXNzZW1ibGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc1NzA2REQxMThBMkJDRjAwNTdG
ODhGIC8qIEpJVEFyaXRobWV0aWMzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKSVRBcml0aG1ldGljMzJfNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNzZDNTE3NDExODI3NDhEMDA3MTVCMDUgLyogSlNJbnRlcmZhY2VKSVQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbnRlcmZhY2VKSVQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc2RjU0QTIxM0IyOEFBQjAwRUYyQkNFIC8qIEpJVFdyaXRl
QmFycmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRXcml0ZUJhcnJp
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc4M0EwRDAxMUEzNkRDQTAwNTYz
RDIwIC8qIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTc4M0EyQUExMUE1QkU4NDAwNTYzRDIwIC8qIEpTT2JqZWN0V2l0aEdsb2Jh
bE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU09iamVj
dFdpdGhHbG9iYWxPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzkx
RUYyNjBGMTFFMDc5MDBBRTFGNjggLyogSlNCeXRlQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNCeXRlQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE0ODUsNiArMTQ4Nyw3IEBACiAJCQkJQTczODY1NTExMTg2OTdCNDAwNTQwMjc5IC8qIFNw
ZWNpYWxpemVkVGh1bmtKSVQuaCAqLywKIAkJCQlBNzM4NjU1MjExODY5N0I0MDA1NDAyNzkgLyog
VGh1bmtHZW5lcmF0b3JzLmNwcCAqLywKIAkJCQlBNzM4NjU1MzExODY5N0I0MDA1NDAyNzkgLyog
VGh1bmtHZW5lcmF0b3JzLmggKi8sCisJCQkJQTc2RjU0QTIxM0IyOEFBQjAwRUYyQkNFIC8qIEpJ
VFdyaXRlQmFycmllci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBqaXQ7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtMjU3MCw2ICsyNTczLDcgQEAKIAkJCQkxNDJBMUQ4NDEzQTE5Qzg0
MDA5REE1RkUgLyogT2xkU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QkE3OEYxMTNBQUI4
OEYwMDVCN0MyQyAvKiBTbG90VmlzaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRCQTdBOTgx
M0FBREZGODAwNUI3QzJDIC8qIEhlYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3NkY1NEEzMTNC
MjhBQUIwMEVGMkJDRSAvKiBKSVRXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmgKaW5kZXggMmQ2N2E1
YTVjMzU2OWFlM2FmMDdkOTZmYTE1ZTE4ZDRjYmYyY2RhZS4uYzdkNjAzMzdjMTA2NjgyODcwOWM3
NGZkNWUyYjBkN2VkODI5ODViMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BUk1Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0FSTUFzc2VtYmxlci5oCkBAIC03MzksNiArNzM5LDE0IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoQ29uc3RhbnRQb29sTG9hZCh2b2lkKiBsb2FkQWRk
ciwgdm9pZCogY29uc3RQb29sQWRkcik7CiAKKyAgICAgICAgLy8gUmVhZCBwb2ludGVycworICAg
ICAgICBzdGF0aWMgdm9pZCogcmVhZFBvaW50ZXIodm9pZCogZnJvbSkKKyAgICAgICAgeworICAg
ICAgICAgICAgQVJNV29yZCogaW5zbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZCo+KGZyb20p
OworICAgICAgICAgICAgdm9pZCogYWRkciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldExk
ckltbUFkZHJlc3MoaW5zbikpOworICAgICAgICAgICAgcmV0dXJuICphZGRyOworICAgICAgICB9
CisgICAgICAgIAogICAgICAgICAvLyBQYXRjaCBwb2ludGVycwogCiAgICAgICAgIHN0YXRpYyB2
b2lkIGxpbmtQb2ludGVyKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxhYmVsIGZyb20sIHZvaWQqIHRv
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2Vt
Ymxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5o
CmluZGV4IDMwZDlmMWVkZTI3ODE4NjY3Y2E0MjE5MzI0OTRmMzVhMDc4ZmVjODkuLjkxMDZhZjVi
ODM1YThmMTY3Y2M5NTQzNDcxNmFhYzVjZDYyODVjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgKQEAgLTM0MCw2ICszNDAsOCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBtX3R5cGUgIT0gVHlwZUludmFsaWQ7CiAgICAgfQogCisg
ICAgdWludDE2X3QgYXNVSW50MTYoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLmFzSW50OyB9CisK
ICAgICAvLyBUaGVzZSBtZXRob2RzIHJlbHkgb24gdGhlIGZvcm1hdCBvZiBlbmNvZGVkIGJ5dGUg
dmFsdWVzLgogICAgIGJvb2wgaXNVSW50MygpIHsgcmV0dXJuICEobV92YWx1ZS5hc0ludCAmIDB4
ZmZmOCk7IH0KICAgICBib29sIGlzVUludDQoKSB7IHJldHVybiAhKG1fdmFsdWUuYXNJbnQgJiAw
eGZmZjApOyB9CkBAIC0xNzc2LDYgKzE3NzgsMTEgQEAgcHVibGljOgogICAgICAgICBzZXRQb2lu
dGVyKHdoZXJlLCB2YWx1ZSk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQqIHJlYWRQb2ludGVy
KHZvaWQqIHdoZXJlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KHJlYWRJbnQzMih3aGVyZSkpOworICAgIH0KKwogcHJpdmF0ZToKICAgICAvLyBWRlAgb3Bl
cmF0aW9ucyBjb21tb25seSB0YWtlIG9uZSBvciBtb3JlIDUtYml0IG9wZXJhbmRzLCB0eXBpY2Fs
bHkgcmVwcmVzZW50aW5nIGEKICAgICAvLyBmbG9hdGluZyBwb2ludCByZWdpc3RlciBudW1iZXIu
ICBUaGlzIHdpbGwgY29tbW9ubHkgYmUgZW5jb2RlZCBpbiB0aGUgaW5zdHJ1Y3Rpb24KQEAgLTE4
NTYsNiArMTg2MywyMyBAQCBwcml2YXRlOgogCiAgICAgICAgIEV4ZWN1dGFibGVBbGxvY2F0b3I6
OmNhY2hlRmx1c2gobG9jYXRpb24gLSA0LCA0ICogc2l6ZW9mKHVpbnQxNl90KSk7CiAgICAgfQor
ICAgIAorICAgIHN0YXRpYyBpbnQzMl90IHJlYWRJbnQzMih2b2lkKiBjb2RlKQorICAgIHsKKyAg
ICAgICAgdWludDE2X3QqIGxvY2F0aW9uID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGNv
ZGUpOworICAgICAgICBBU1NFUlQoaXNNT1ZfaW1tX1QzKGxvY2F0aW9uIC0gNCkgJiYgaXNNT1ZU
KGxvY2F0aW9uIC0gMikpOworICAgICAgICAKKyAgICAgICAgQVJNVGh1bWJJbW1lZGlhdGUgbG8x
NjsKKyAgICAgICAgQVJNVGh1bWJJbW1lZGlhdGUgaGkxNjsKKyAgICAgICAgZGVjb2RlVHdvV29y
ZE9wNWk2SW1tNFJlZzRFbmNvZGVkSW1tRmlyc3QobG8xNiwgbG9jYXRpb25bLTRdKTsKKyAgICAg
ICAgZGVjb2RlVHdvV29yZE9wNWk2SW1tNFJlZzRFbmNvZGVkSW1tU2Vjb25kKGxvMTYsIGxvY2F0
aW9uWy0zXSk7CisgICAgICAgIGRlY29kZVR3b1dvcmRPcDVpNkltbTRSZWc0RW5jb2RlZEltbUZp
cnN0KGhpMTYsIGxvY2F0aW9uWy0yXSk7CisgICAgICAgIGRlY29kZVR3b1dvcmRPcDVpNkltbTRS
ZWc0RW5jb2RlZEltbVNlY29uZChoaTE2LCBsb2NhdGlvblstMV0pOworICAgICAgICB1aW50MzJf
dCByZXN1bHQgPSBoaTE2LmFzVUludDE2KCk7CisgICAgICAgIHJlc3VsdCA8PD0gMTY7CisgICAg
ICAgIHJlc3VsdCB8PSBsbzE2LmFzVUludDE2KCk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxpbnQzMl90PihyZXN1bHQpOworICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHNldFVJbnQ3Rm9y
TG9hZCh2b2lkKiBjb2RlLCBBUk1UaHVtYkltbWVkaWF0ZSBpbW0pCiAgICAgewpAQCAtMjEyMiwx
MSArMjE0NiwyMyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gb3AgfCAoaW1tLm1fdmFsdWUu
aSA8PCAxMCkgfCBpbW0ubV92YWx1ZS5pbW00OwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIGRl
Y29kZVR3b1dvcmRPcDVpNkltbTRSZWc0RW5jb2RlZEltbUZpcnN0KEFSTVRodW1iSW1tZWRpYXRl
JiByZXN1bHQsIHVpbnQxNl90IHZhbHVlKQorICAgIHsKKyAgICAgICAgcmVzdWx0Lm1fdmFsdWUu
aSA9ICh2YWx1ZSA+PiAxMCkgJiAxOworICAgICAgICByZXN1bHQubV92YWx1ZS5pbW00ID0gdmFs
dWUgJiAxNTsKKyAgICB9CisKICAgICBzdGF0aWMgdWludDE2X3QgdHdvV29yZE9wNWk2SW1tNFJl
ZzRFbmNvZGVkSW1tU2Vjb25kKHVpbnQxNl90IHJkLCBBUk1UaHVtYkltbWVkaWF0ZSBpbW0pCiAg
ICAgewogICAgICAgICByZXR1cm4gKGltbS5tX3ZhbHVlLmltbTMgPDwgMTIpIHwgKHJkIDw8IDgp
IHwgaW1tLm1fdmFsdWUuaW1tODsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCBkZWNvZGVUd29X
b3JkT3A1aTZJbW00UmVnNEVuY29kZWRJbW1TZWNvbmQoQVJNVGh1bWJJbW1lZGlhdGUmIHJlc3Vs
dCwgdWludDE2X3QgdmFsdWUpCisgICAgeworICAgICAgICByZXN1bHQubV92YWx1ZS5pbW0zID0g
KHZhbHVlID4+IDEyKSAmIDc7CisgICAgICAgIHJlc3VsdC5tX3ZhbHVlLmltbTggPSB2YWx1ZSAm
IDI1NTsKKyAgICB9CisKICAgICBjbGFzcyBBUk1JbnN0cnVjdGlvbkZvcm1hdHRlciB7CiAgICAg
cHVibGljOgogICAgICAgICB2b2lkIG9uZVdvcmRPcDVSZWczSW1tOChPcGNvZGVJRCBvcCwgUmVn
aXN0ZXJJRCByZCwgdWludDhfdCBpbW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCmluZGV4IDE0Yjg1ZGJlY2Y2
NzQ5MWViNzgxNzNkMjQ1MzFjNDg5ZjhiZjA1MTguLjVhMjRhOWQzNzU5ODJmYWZhNjk2YzFhZTYy
Y2NiNDAzNWMyMjcyMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNz
IFJlcGF0Y2hCdWZmZXI7CiB0ZW1wbGF0ZSA8Y2xhc3MgQXNzZW1ibGVyVHlwZT4KIGNsYXNzIEFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXIgewogcHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBKSVRXcml0
ZUJhcnJpZXJCYXNlOwogICAgIHR5cGVkZWYgQXNzZW1ibGVyVHlwZSBBc3NlbWJsZXJUeXBlX1Q7
CiAKICAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBDb2RlUHRyOwpAQCAtNTczLDYg
KzU3NCwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgICAgICBBc3NlbWJsZXJUeXBlOjpyZXBh
dGNoUG9pbnRlcihkYXRhTGFiZWxQdHIuZGF0YUxvY2F0aW9uKCksIHZhbHVlKTsKICAgICB9Cisg
ICAgCisgICAgc3RhdGljIHZvaWQqIHJlYWRQb2ludGVyKENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0
ciBkYXRhTGFiZWxQdHIpCisgICAgeworICAgICAgICByZXR1cm4gQXNzZW1ibGVyVHlwZTo6cmVh
ZFBvaW50ZXIoZGF0YUxhYmVsUHRyLmRhdGFMb2NhdGlvbigpKTsKKyAgICB9CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTUlQU0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBT
QXNzZW1ibGVyLmgKaW5kZXggODdlYmYyODI3ZWQ0NWZhYWRjZWE0Mzg1NWIwNjg1MDZmYTE5ZWVj
MC4uNDE2NGZhOWRiMGQ5ZjkyNDM0ZTFlZTE0NjQ5MmYzMjFiYjNlZjg3MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgKQEAgLTc0NSw2ICs3
NDUsMTYgQEAgcHVibGljOgogICAgICAgICBpbnNuLS07CiAgICAgICAgIEV4ZWN1dGFibGVBbGxv
Y2F0b3I6OmNhY2hlRmx1c2goaW5zbiwgMiAqIHNpemVvZihNSVBTV29yZCkpOwogICAgIH0KKwor
ICAgIHN0YXRpYyBpbnQzMl90IHJlYWRJbnQzMih2b2lkKiBmcm9tKQorICAgIHsKKyAgICAgICAg
TUlQU1dvcmQqIGluc24gPSByZWludGVycHJldF9jYXN0PE1JUFNXb3JkKj4oZnJvbSk7CisgICAg
ICAgIEFTU0VSVCgoKmluc24gJiAweGZmZTAwMDAwKSA9PSAweDNjMDAwMDAwKTsgLy8gbHVpCisg
ICAgICAgIGludDMyX3QgcmVzdWx0ID0gKCppbnNuICYgMHgwMDAwZmZmZikgPDwgMTY7CisgICAg
ICAgIGluc24rKzsKKyAgICAgICAgQVNTRVJUKCgqaW5zbiAmIDB4ZmMwMDAwMDApID09IDB4MzQw
MDAwMDApOyAvLyBvcmkKKyAgICAgICAgcmVzdWx0IHw9ICppbnNuICYgMHgwMDAwZmZmZgorICAg
IH0KICAgICAKICAgICBzdGF0aWMgdm9pZCByZXBhdGNoQ29tcGFjdCh2b2lkKiB3aGVyZSwgaW50
MzJfdCB2YWx1ZSkKICAgICB7CkBAIC03NTYsNiArNzY2LDExIEBAIHB1YmxpYzoKICAgICAgICAg
cmVwYXRjaEludDMyKGZyb20sIHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdD4odG8pKTsKICAgICB9
CiAKKyAgICBzdGF0aWMgdm9pZCogcmVhZFBvaW50ZXIodm9pZCogZnJvbSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDx2b2lkKj4ocmVhZEludDMyKGZyb20pKTsKKyAgICB9CisK
IHByaXZhdGU6CiAgICAgLyogVXBkYXRlIGVhY2gganVtcCBpbiB0aGUgYnVmZmVyIG9mIG5ld0Jh
c2UuICAqLwogICAgIHZvaWQgcmVsb2NhdGVKdW1wcyh2b2lkKiBvbGRCYXNlLCB2b2lkKiBuZXdC
YXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckNvZGVSZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJDb2RlUmVmLmgKaW5kZXggMjE4M2IyMmYyZWQ2NTVlM2JlZWQ1YjFiMmVmNTQyYjQ2
YjYzMzVjMi4uNmQ0N2NiOTc1ODdmY2U0ZTU3YjkzZTAxYzE2YmNkY2EyOWZlZDUwMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVS
ZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
Q29kZVJlZi5oCkBAIC0xODQsNyArMTg0LDcgQEAgcHVibGljOgogICAgIHZvaWQqIGRhdGFMb2Nh
dGlvbigpIGNvbnN0IHsgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsgcmV0dXJu
IG1fdmFsdWU7IH0KICNlbmRpZgogCi0gICAgYm9vbCBvcGVyYXRvciEoKQorICAgIGJvb2wgb3Bl
cmF0b3IhKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAhbV92YWx1ZTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NINEFzc2VtYmxlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9TSDRBc3NlbWJsZXIuaAppbmRleCBk
YmI1NzM1NzUwNzNmNThmOTg2OTVlMmUyNDNjMzUyMzM5ZmIwNDVmLi4xZDA4OWU1YWJkZGI2NTVl
Y2I3OTYzN2NiOWNmN2FjOTRlOTZkODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1NINEFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvU0g0QXNzZW1ibGVyLmgKQEAgLTEyMzIsNiArMTIzMiwxMiBAQCBwdWJsaWM6CiAg
ICAgICAgIHVpbnQzMl90IGFkZHJlc3MgPSAob2Zmc2V0IDw8IDIpICsgKChyZWludGVycHJldF9j
YXN0PHVpbnQzMl90PihpbnN0cnVjdGlvblB0cikgKyA0KSAmKH4weDMpKTsKICAgICAgICAgKnJl
aW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihhZGRyZXNzKSA9IG5ld0FkZHJlc3M7CiAgICAgfQor
ICAgIAorICAgIHN0YXRpYyB1aW50MzJfdCByZWFkUENyZWxhdGl2ZUFkZHJlc3MoaW50IG9mZnNl
dCwgdWludDE2X3QqIGluc3RydWN0aW9uUHRyKQorICAgIHsKKyAgICAgICAgdWludDMyX3QgYWRk
cmVzcyA9IChvZmZzZXQgPDwgMikgKyAoKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KGluc3Ry
dWN0aW9uUHRyKSArIDQpICYofjB4MykpOworICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nh
c3Q8dWludDMyX3QqPihhZGRyZXNzKTsKKyAgICB9CiAKICAgICBzdGF0aWMgdWludDE2X3QqIGdl
dEluc3RydWN0aW9uUHRyKHZvaWQqIGNvZGUsIGludCBvZmZzZXQpCiAgICAgewpAQCAtMTM0Niw2
ICsxMzUyLDExIEBAIHB1YmxpYzoKICAgICAgICAgcGF0Y2hQb2ludGVyKHdoZXJlLCB2YWx1ZSk7
CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQqIHJlYWRQb2ludGVyKHZvaWQqIGNvZGUpCisgICAg
eworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dm9pZCo+KHJlYWRJbnQzMihjb2RlKSk7Cisg
ICAgfQorCiAgICAgc3RhdGljIHZvaWQgcmVwYXRjaEludDMyKHZvaWQqIHdoZXJlLCBpbnQzMl90
IHZhbHVlKQogICAgIHsKICAgICAgICAgdWludDE2X3QqIGluc3RydWN0aW9uUHRyID0gcmVpbnRl
cnByZXRfY2FzdDx1aW50MTZfdCo+KHdoZXJlKTsKQEAgLTE0NzQsNiArMTQ4NSwxMSBAQCBwdWJs
aWM6CiAgICAgICAgIGNoYW5nZVBDcmVsYXRpdmVBZGRyZXNzKCgqKHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDE2X3QqPihjb2RlKSkgJiAweGZmKSwgcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGNv
ZGUpLCB2YWx1ZSk7CiAgICAgfQogCisgICAgc3RhdGljIHVpbnQzMl90IHJlYWRJbnQzMih2b2lk
KiBjb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlYWRQQ3JlbGF0aXZlQWRkcmVzcygoKihy
ZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oY29kZSkpICYgMHhmZiksIHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDE2X3QqPihjb2RlKSk7CisgICAgfQorCiAgICAgdm9pZCogZXhlY3V0YWJsZUNvcHko
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBFeGVjdXRhYmxlUG9vbCogYWxsb2NhdG9yKQogICAg
IHsKICAgICAgICAgcmV0dXJuIG1fYnVmZmVyLmV4ZWN1dGFibGVDb3B5KGdsb2JhbERhdGEsIGFs
bG9jYXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4
NkFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJs
ZXIuaAppbmRleCA4ZDljNTc2OTk3MGE3ZmUyZTUyZjMyNTQwZDNlOTFhZWY1MDlhNWQxLi40MWRk
NTBmZmNjN2NmN2NhYmY3MDAwNzZmNDVjOTJlOWRmNDQ2ODI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKQEAgLTE1NjUsNiArMTU2NSwxMSBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBzZXRQb2ludGVyKHdoZXJlLCB2YWx1ZSk7CiAgICAg
fQorICAgIAorICAgIHN0YXRpYyB2b2lkKiByZWFkUG9pbnRlcih2b2lkKiB3aGVyZSkKKyAgICB7
CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqKj4od2hlcmUpWy0xXTsKKyAg
ICB9CiAKICAgICBzdGF0aWMgdW5zaWduZWQgZ2V0Q2FsbFJldHVybk9mZnNldChBc3NlbWJsZXJM
YWJlbCBjYWxsKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKaW5kZXggZDllMjM1NTRjMTM2ODA4ODViY2E1YWFmMzZlMzg1ZDdjYzc4MDc3YS4u
MjI0NzI0OWIzZWE0MTJmNjJkZGViNjExNTQzNzlkYjljNGIwNmI4MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTE1MDgsNiArMTUwOCw4IEBA
IHZvaWQgQ29kZUJsb2NrOjp2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlzaXRvcikKICAg
ICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX21ldGhvZENhbGxMaW5rSW5mb3NbaV0uY2FjaGVk
U3RydWN0dXJlKTsKICAgICAgICAgICAgIEFTU0VSVCghIW1fbWV0aG9kQ2FsbExpbmtJbmZvc1tp
XS5jYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQo
Jm1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpXS5jYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUpOworICAg
ICAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpXS5jYWNoZWRG
dW5jdGlvbik7CisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9tZXRob2RDYWxsTGlua0lu
Zm9zW2ldLmNhY2hlZFByb3RvdHlwZSk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA5MmNhZmQxNTQxYWQz
Y2E2ODYzYjMxNjgyMzY2YzY5YjA5YmY5OTIxLi44YmZhMzIzODAxNDE2ZTNmZTVhN2MxZjg1MjUy
OGI1YjU2MjI5YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRXZhbENvZGVDYWNoZS5oIgogI2luY2x1
ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgorI2luY2x1ZGUgIkpJVFdy
aXRlQmFycmllci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSnVt
cFRhYmxlLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKQEAgLTEwMywxMCArMTA0LDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIENvZGVMb2NhdGlvbk5lYXJDYWxsIGNhbGxSZXR1cm5Mb2NhdGlv
bjsKICAgICAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGhvdFBhdGhCZWdpbjsKICAgICAg
ICAgQ29kZUxvY2F0aW9uTmVhckNhbGwgaG90UGF0aE90aGVyOwotICAgICAgICBXcml0ZUJhcnJp
ZXI8SlNGdW5jdGlvbj4gY2FsbGVlOworICAgICAgICBKSVRXcml0ZUJhcnJpZXI8SlNGdW5jdGlv
bj4gY2FsbGVlOwogICAgICAgICBib29sIGhhc1NlZW5TaG91bGRSZXBhdGNoOwotICAgICAgICAK
LSAgICAgICAgdm9pZCBzZXRVbmxpbmtlZCgpIHsgY2FsbGVlLmNsZWFyKCk7IH0KKwogICAgICAg
ICBib29sIGlzTGlua2VkKCkgeyByZXR1cm4gY2FsbGVlOyB9CiAKICAgICAgICAgYm9vbCBzZWVu
T25jZSgpCkBAIC0xMjgsNyArMTI4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wg
c2Vlbk9uY2UoKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIWNhY2hlZFN0cnVjdHVy
ZSk7Ci0gICAgICAgICAgICByZXR1cm4gY2FjaGVkUHJvdG90eXBlU3RydWN0dXJlOworICAgICAg
ICAgICAgcmV0dXJuIGNhY2hlZFByb3RvdHlwZVN0cnVjdHVyZS5pc0ZsYWdnZWQoKTsKICAgICAg
ICAgfQogCiAgICAgICAgIHZvaWQgc2V0U2VlbigpCkBAIC0xNDAsMTMgKzE0MCwxNCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIC8vICAgICAtIE9uY2UgdGhpcyB0cmFuc2l0aW9uIGhh
cyBiZWVuIHRha2VuIG9uY2UsIGNhY2hlZFN0cnVjdHVyZSBpcwogICAgICAgICAgICAgLy8gICAg
ICAgbnVsbCBhbmQgY2FjaGVkUHJvdG90eXBlU3RydWN0dXJlIGlzIHNldCB0byBhIG51bi1udWxs
IHZhbHVlLgogICAgICAgICAgICAgLy8gICAgIC0gT25jZSB0aGUgY2FsbCBpcyBsaW5rZWQgYm90
aCBzdHJ1Y3R1cmVzIGFyZSBzZXQgdG8gbm9uLW51bGwgdmFsdWVzLgotICAgICAgICAgICAgY2Fj
aGVkUHJvdG90eXBlU3RydWN0dXJlLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoKFN0cnVjdHVyZSop
MSk7CisgICAgICAgICAgICBjYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUuc2V0RmxhZ09uQmFycmll
cigpOwogICAgICAgICB9CiAKICAgICAgICAgQ29kZUxvY2F0aW9uQ2FsbCBjYWxsUmV0dXJuTG9j
YXRpb247Ci0gICAgICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVMYWJlbDsK
LSAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gY2FjaGVkU3RydWN0dXJlOwotICAgICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBjYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmU7CisgICAg
ICAgIEpJVFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IGNhY2hlZFN0cnVjdHVyZTsKKyAgICAgICAg
SklUV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gY2FjaGVkUHJvdG90eXBlU3RydWN0dXJlOworICAg
ICAgICBKSVRXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gY2FjaGVkRnVuY3Rpb247CisgICAgICAg
IEpJVFdyaXRlQmFycmllcjxKU09iamVjdD4gY2FjaGVkUHJvdG90eXBlOwogICAgIH07CiAKICAg
ICBzdHJ1Y3QgR2xvYmFsUmVzb2x2ZUluZm8gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya1N0YWNrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
U3RhY2suaAppbmRleCBmYTAyOGVlOWI1NGE1NTVmNTVhYzI1ZGVkNTUwNTliNDE1NDdjNWE1Li4x
Y2RiYWQ0NGYwZDQ1M2UyYjY4NzM1ODY0OGM2MDNmMmRmMTgxZjY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrU3RhY2suaApAQCAtNDIsNiArNDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBjbGFzcyBNYXJrU3RhY2s7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gY2xhc3MgV3JpdGVCYXJyaWVyQmFzZTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBjbGFzcyBKSVRXcml0ZUJhcnJpZXI7CiAgICAgCiAgICAgc3RydWN0IE1hcmtTZXQgewog
ICAgICAgICBNYXJrU2V0KEpTVmFsdWUqIHZhbHVlcywgSlNWYWx1ZSogZW5kKTsKQEAgLTg1LDcg
Kzg2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH5NYXJrU3RhY2soKTsKIAogICAgICAg
ICB2b2lkIGFwcGVuZChDb25zZXJ2YXRpdmVSb290cyYpOwotCisgICAgICAgIAorICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBhcHBlbmQoSklUV3JpdGVCYXJyaWVyPFQ+
Kik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIGFwcGVuZChXcml0
ZUJhcnJpZXJCYXNlPFQ+Kik7CiAgICAgICAgIGlubGluZSB2b2lkIGFwcGVuZFZhbHVlcyhXcml0
ZUJhcnJpZXJCYXNlPFVua25vd24+Kiwgc2l6ZV90IGNvdW50KTsKICAgICAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKaW5kZXggNWQ4YWFlMTE0Yjg5YWNjYjk1YjI2ZTIyZjg4NzAwMjEw
Mjg3YTYzZC4uYThhZDk1YjQxNzdiNWZkNmJjYjc1ZmI2ZTM1NWIxMjM4ZTcwN2YyNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNTg0LDcgKzU4NCw3IEBAIEpJVENvZGUgSklUOjpw
cml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW5jdGlvbkVudHJ5QXJpdHlDaGVjaykKICAgICBtX2Nv
ZGVCbG9jay0+YWRkTWV0aG9kQ2FsbExpbmtJbmZvcyhtZXRob2RDYWxsQ291bnQpOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtZXRob2RDYWxsQ291bnQ7ICsraSkgewogICAgICAgICBN
ZXRob2RDYWxsTGlua0luZm8mIGluZm8gPSBtX2NvZGVCbG9jay0+bWV0aG9kQ2FsbExpbmtJbmZv
KGkpOwotICAgICAgICBpbmZvLnN0cnVjdHVyZUxhYmVsID0gcGF0Y2hCdWZmZXIubG9jYXRpb25P
ZihtX21ldGhvZENhbGxDb21waWxhdGlvbkluZm9baV0uc3RydWN0dXJlVG9Db21wYXJlKTsKKyAg
ICAgICAgaW5mby5jYWNoZWRTdHJ1Y3R1cmUuc2V0TG9jYXRpb24ocGF0Y2hCdWZmZXIubG9jYXRp
b25PZihtX21ldGhvZENhbGxDb21waWxhdGlvbkluZm9baV0uc3RydWN0dXJlVG9Db21wYXJlKSk7
CiAgICAgICAgIGluZm8uY2FsbFJldHVybkxvY2F0aW9uID0gbV9jb2RlQmxvY2stPnN0cnVjdHVy
ZVN0dWJJbmZvKG1fbWV0aG9kQ2FsbENvbXBpbGF0aW9uSW5mb1tpXS5wcm9wZXJ0eUFjY2Vzc0lu
ZGV4KS5jYWxsUmV0dXJuTG9jYXRpb247CiAgICAgfQogCkBAIC02MDIsOCArNjAyLDcgQEAgdm9p
ZCBKSVQ6OmxpbmtDYWxsKEpTRnVuY3Rpb24qIGNhbGxlZSwgQ29kZUJsb2NrKiBjYWxsZXJDb2Rl
QmxvY2ssIENvZGVCbG9jayogY2EKICAgICAvLyBJZiB0aGlzIGlzIGEgbmF0aXZlIGNhbGwgY2Fs
bGVlQ29kZUJsb2NrIGlzIG51bGwgc28gdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzIGlzIHVuaW1w
b3J0YW50CiAgICAgaWYgKCFjYWxsZWVDb2RlQmxvY2sgfHwgKGNhbGxlckFyZ0NvdW50ID09IGNh
bGxlZUNvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzKSkgewogICAgICAgICBBU1NFUlQoIWNhbGxM
aW5rSW5mby0+aXNMaW5rZWQoKSk7Ci0gICAgICAgIGNhbGxMaW5rSW5mby0+Y2FsbGVlLnNldCgq
Z2xvYmFsRGF0YSwgY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY2FsbGVlKTsK
LSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKGNhbGxMaW5rSW5mby0+aG90UGF0aEJlZ2lu
LCBjYWxsZWUpOworICAgICAgICBjYWxsTGlua0luZm8tPmNhbGxlZS5zZXQoKmdsb2JhbERhdGEs
IGNhbGxMaW5rSW5mby0+aG90UGF0aEJlZ2luLCBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0
YWJsZSgpLCBjYWxsZWUpOwogICAgICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhjYWxsTGlua0lu
Zm8tPmhvdFBhdGhPdGhlciwgY29kZSk7CiAgICAgfQogCkBAIC02MTksOCArNjE4LDcgQEAgdm9p
ZCBKSVQ6OmxpbmtDb25zdHJ1Y3QoSlNGdW5jdGlvbiogY2FsbGVlLCBDb2RlQmxvY2sqIGNhbGxl
ckNvZGVCbG9jaywgQ29kZUJsb2MKICAgICAvLyBJZiB0aGlzIGlzIGEgbmF0aXZlIGNhbGwgY2Fs
bGVlQ29kZUJsb2NrIGlzIG51bGwgc28gdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzIGlzIHVuaW1w
b3J0YW50CiAgICAgaWYgKCFjYWxsZWVDb2RlQmxvY2sgfHwgKGNhbGxlckFyZ0NvdW50ID09IGNh
bGxlZUNvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzKSkgewogICAgICAgICBBU1NFUlQoIWNhbGxM
aW5rSW5mby0+aXNMaW5rZWQoKSk7Ci0gICAgICAgIGNhbGxMaW5rSW5mby0+Y2FsbGVlLnNldCgq
Z2xvYmFsRGF0YSwgY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY2FsbGVlKTsK
LSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKGNhbGxMaW5rSW5mby0+aG90UGF0aEJlZ2lu
LCBjYWxsZWUpOworICAgICAgICBjYWxsTGlua0luZm8tPmNhbGxlZS5zZXQoKmdsb2JhbERhdGEs
IGNhbGxMaW5rSW5mby0+aG90UGF0aEJlZ2luLCBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0
YWJsZSgpLCBjYWxsZWUpOwogICAgICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhjYWxsTGlua0lu
Zm8tPmhvdFBhdGhPdGhlciwgY29kZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDUyY2YzNDE3MTY0ZGNmYTk3YTEw
MWU4NWMwOGZmNzEwMTY4YTUxYWYuLjllZWIxYzgzZjY4ZjgxYTZkYjBlYjc4ZTg2MDIyODkxNDFj
MmI0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCkBAIC01NzcsMjQgKzU3Nyw2IEBAIHZvaWQgSklUOjpwYXRjaEdldEJ5SWRTZWxmKENv
ZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0CiAgICAg
cmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsQ29t
cGFjdEF0T2Zmc2V0KHBhdGNoT2Zmc2V0R2V0QnlJZFByb3BlcnR5TWFwT2Zmc2V0KSwgb2Zmc2V0
KTsKIH0KIAotdm9pZCBKSVQ6OnBhdGNoTWV0aG9kQ2FsbFByb3RvKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE1ldGhvZENhbGxMaW5rSW5mbyYgbWV0aG9k
Q2FsbExpbmtJbmZvLCBKU0Z1bmN0aW9uKiBjYWxsZWUsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U09iamVjdCogcHJvdG8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKLXsKLSAgICBS
ZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKLQotICAgIEFTU0VSVCghbWV0
aG9kQ2FsbExpbmtJbmZvLmNhY2hlZFN0cnVjdHVyZSk7Ci0gICAgbWV0aG9kQ2FsbExpbmtJbmZv
LmNhY2hlZFN0cnVjdHVyZS5zZXQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKSwgc3RydWN0dXJlKTsKLQotICAgIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlID0g
cHJvdG8tPnN0cnVjdHVyZSgpOwotICAgIG1ldGhvZENhbGxMaW5rSW5mby5jYWNoZWRQcm90b3R5
cGVTdHJ1Y3R1cmUuc2V0KGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCks
IHByb3RvdHlwZVN0cnVjdHVyZSk7Ci0KLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2gobWV0aG9k
Q2FsbExpbmtJbmZvLnN0cnVjdHVyZUxhYmVsLCBzdHJ1Y3R1cmUpOwotICAgIHJlcGF0Y2hCdWZm
ZXIucmVwYXRjaChtZXRob2RDYWxsTGlua0luZm8uc3RydWN0dXJlTGFiZWwuZGF0YUxhYmVsUHRy
QXRPZmZzZXQocGF0Y2hPZmZzZXRNZXRob2RDaGVja1Byb3RvT2JqKSwgcHJvdG8pOwotICAgIHJl
cGF0Y2hCdWZmZXIucmVwYXRjaChtZXRob2RDYWxsTGlua0luZm8uc3RydWN0dXJlTGFiZWwuZGF0
YUxhYmVsUHRyQXRPZmZzZXQocGF0Y2hPZmZzZXRNZXRob2RDaGVja1Byb3RvU3RydWN0KSwgcHJv
dG90eXBlU3RydWN0dXJlKTsKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2gobWV0aG9kQ2FsbExp
bmtJbmZvLnN0cnVjdHVyZUxhYmVsLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KHBhdGNoT2Zmc2V0TWV0
aG9kQ2hlY2tQdXRGdW5jdGlvbiksIGNhbGxlZSk7Ci0KLSAgICByZXBhdGNoQnVmZmVyLnJlbGlu
a0NhbGxlclRvRnVuY3Rpb24ocmV0dXJuQWRkcmVzcywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9i
eV9pZCkpOwotfQotCiB2b2lkIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBi
b29sIGRpcmVjdCkKIHsKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2Nr
KTsKQEAgLTEwMzcsNiArMTAxOSwyMSBAQCB2b2lkIEpJVDo6dGVzdFByb3RvdHlwZShKU1ZhbHVl
IHByb3RvdHlwZSwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcykKICAgICBmYWlsdXJlQ2FzZXMuYXBw
ZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMywgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIocHJvdG90eXBlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSkp
KTsKIH0KIAordm9pZCBKSVQ6OnBhdGNoTWV0aG9kQ2FsbFByb3RvKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE1ldGhvZENhbGxMaW5rSW5mbyYgbWV0aG9k
Q2FsbExpbmtJbmZvLCBKU0Z1bmN0aW9uKiBjYWxsZWUsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U09iamVjdCogcHJvdG8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK3sKKyAgICBS
ZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKKyAgICAKKyAgICBBU1NFUlQo
IW1ldGhvZENhbGxMaW5rSW5mby5jYWNoZWRTdHJ1Y3R1cmUpOworICAgIENvZGVMb2NhdGlvbkRh
dGFMYWJlbFB0ciBzdHJ1Y3R1cmVMb2NhdGlvbiA9IG1ldGhvZENhbGxMaW5rSW5mby5jYWNoZWRT
dHJ1Y3R1cmUubG9jYXRpb24oKTsKKyAgICBtZXRob2RDYWxsTGlua0luZm8uY2FjaGVkU3RydWN0
dXJlLnNldChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmVMb2NhdGlvbiwgY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAKKyAgICBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0
cnVjdHVyZSA9IHByb3RvLT5zdHJ1Y3R1cmUoKTsKKyAgICBtZXRob2RDYWxsTGlua0luZm8uY2Fj
aGVkUHJvdG90eXBlU3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmVMb2NhdGlvbi5k
YXRhTGFiZWxQdHJBdE9mZnNldChwYXRjaE9mZnNldE1ldGhvZENoZWNrUHJvdG9TdHJ1Y3QpLCBj
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBwcm90b3R5cGVTdHJ1Y3R1cmUpOworICAgIG1l
dGhvZENhbGxMaW5rSW5mby5jYWNoZWRQcm90b3R5cGUuc2V0KGdsb2JhbERhdGEsIHN0cnVjdHVy
ZUxvY2F0aW9uLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KHBhdGNoT2Zmc2V0TWV0aG9kQ2hlY2tQcm90
b09iaiksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHByb3RvKTsKKyAgICBtZXRob2RD
YWxsTGlua0luZm8uY2FjaGVkRnVuY3Rpb24uc2V0KGdsb2JhbERhdGEsIHN0cnVjdHVyZUxvY2F0
aW9uLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KHBhdGNoT2Zmc2V0TWV0aG9kQ2hlY2tQdXRGdW5jdGlv
biksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7CisgICAgcmVwYXRjaEJ1
ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0
aV9vcF9nZXRfYnlfaWQpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBF
TkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggZGZmMDY5MGZiNTI0OGJiNjEyYjdhYmE5MDMxNmFlN2Nl
N2ZhODNiMC4uNmY5YmRkMmIyNGRkZDdmMGU4MGMwMDkxNTYzODBhZWIzMWFiYTEyYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCkBAIC01NTEsMjMgKzU1MSw2IEBAIHZvaWQgSklUOjpwYXRjaEdldEJ5SWRTZWxmKENvZGVC
bG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0CiAgICAgcmVw
YXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsQ29tcGFj
dEF0T2Zmc2V0KHBhdGNoT2Zmc2V0R2V0QnlJZFByb3BlcnR5TWFwT2Zmc2V0MiksIG9mZnNldCAr
IE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKTsgLy8gdGFnCiB9CiAKLXZv
aWQgSklUOjpwYXRjaE1ldGhvZENhbGxQcm90byhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENv
ZGVCbG9jayogY29kZUJsb2NrLCBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGxMaW5rSW5m
bywgSlNGdW5jdGlvbiogY2FsbGVlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIHBy
b3RvLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCi17Ci0gICAgUmVwYXRjaEJ1ZmZl
ciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7Ci0gICAgCi0gICAgQVNTRVJUKCFtZXRob2RDYWxs
TGlua0luZm8uY2FjaGVkU3RydWN0dXJlKTsKLSAgICBtZXRob2RDYWxsTGlua0luZm8uY2FjaGVk
U3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBz
dHJ1Y3R1cmUpOwotICAgIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlID0gcHJvdG8tPnN0
cnVjdHVyZSgpOwotICAgIG1ldGhvZENhbGxMaW5rSW5mby5jYWNoZWRQcm90b3R5cGVTdHJ1Y3R1
cmUuc2V0KGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHByb3RvdHlw
ZVN0cnVjdHVyZSk7Ci0gICAgCi0gICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKG1ldGhvZENhbGxM
aW5rSW5mby5zdHJ1Y3R1cmVMYWJlbCwgc3RydWN0dXJlKTsKLSAgICByZXBhdGNoQnVmZmVyLnJl
cGF0Y2gobWV0aG9kQ2FsbExpbmtJbmZvLnN0cnVjdHVyZUxhYmVsLmRhdGFMYWJlbFB0ckF0T2Zm
c2V0KHBhdGNoT2Zmc2V0TWV0aG9kQ2hlY2tQcm90b09iaiksIHByb3RvKTsKLSAgICByZXBhdGNo
QnVmZmVyLnJlcGF0Y2gobWV0aG9kQ2FsbExpbmtJbmZvLnN0cnVjdHVyZUxhYmVsLmRhdGFMYWJl
bFB0ckF0T2Zmc2V0KHBhdGNoT2Zmc2V0TWV0aG9kQ2hlY2tQcm90b1N0cnVjdCksIHByb3RvdHlw
ZVN0cnVjdHVyZSk7Ci0gICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKG1ldGhvZENhbGxMaW5rSW5m
by5zdHJ1Y3R1cmVMYWJlbC5kYXRhTGFiZWxQdHJBdE9mZnNldChwYXRjaE9mZnNldE1ldGhvZENo
ZWNrUHV0RnVuY3Rpb24pLCBjYWxsZWUpOwotICAgIAotICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5r
Q2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5
X2lkKSk7Ci19Ci0KIHZvaWQgSklUOjpwYXRjaFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayogY29k
ZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJv
b2wgZGlyZWN0KQogewogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2sp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRXcml0ZUJhcnJpZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUV3JpdGVCYXJyaWVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZGJlOTBjMmM0ZmU5YmZlMjQxM2FjNTE3NWI1NTBlY2U4ZTEyMjc0NAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUV3JpdGVCYXJyaWVyLmgKQEAgLTAs
MCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpJVFdyaXRlQmFycmllcl9oCisjZGVm
aW5lIEpJVFdyaXRlQmFycmllcl9oCisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAiTWFj
cm9Bc3NlbWJsZXIuaCIKKyNpbmNsdWRlICJNYXJrU3RhY2suaCIKKyNpbmNsdWRlICJXcml0ZUJh
cnJpZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTQ2VsbDsKK2NsYXNzIEpTR2xv
YmFsRGF0YTsKKworLy8gTmVlZHMgdG8gYmUgZXZlbiB0byBhcHBlYXNlIHNvbWUgb2YgdGhlIGJh
Y2tlbmRzLgorI2RlZmluZSBKSVRXcml0ZUJhcnJpZXJGbGFnICgodm9pZCopMikKK2NsYXNzIEpJ
VFdyaXRlQmFycmllckJhc2UgeworcHVibGljOgorICAgIHR5cGVkZWYgdm9pZCogKEpJVFdyaXRl
QmFycmllckJhc2U6OipVbnNwZWNpZmllZEJvb2xUeXBlKTsKKyAgICBvcGVyYXRvciBVbnNwZWNp
ZmllZEJvb2xUeXBlKigpIGNvbnN0IHsgcmV0dXJuIGdldCgpID8gcmVpbnRlcnByZXRfY2FzdDxV
bnNwZWNpZmllZEJvb2xUeXBlKj4oMSkgOiAwOyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25z
dCB7IHJldHVybiAhZ2V0KCk7IH0KKworICAgIHZvaWQgc2V0RmxhZ09uQmFycmllcigpCisgICAg
eworICAgICAgICBBU1NFUlQoIW1fbG9jYXRpb24pOworICAgICAgICBtX2xvY2F0aW9uID0gQ29k
ZUxvY2F0aW9uRGF0YUxhYmVsUHRyKEpJVFdyaXRlQmFycmllckZsYWcpOworICAgIH0KKworICAg
IGJvb2wgaXNGbGFnZ2VkKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhIW1fbG9jYXRp
b247CisgICAgfQorCisgICAgdm9pZCBzZXRMb2NhdGlvbihDb2RlTG9jYXRpb25EYXRhTGFiZWxQ
dHIgbG9jYXRpb24pCisgICAgeworICAgICAgICBBU1NFUlQoIW1fbG9jYXRpb24pOworICAgICAg
ICBtX2xvY2F0aW9uID0gbG9jYXRpb247CisgICAgfQorCisgICAgQ29kZUxvY2F0aW9uRGF0YUxh
YmVsUHRyIGxvY2F0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCgoISFtX2xvY2F0
aW9uKSAmJiBtX2xvY2F0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkgIT0gSklUV3JpdGVCYXJyaWVy
RmxhZyk7CisgICAgICAgIHJldHVybiBtX2xvY2F0aW9uOworICAgIH0KKyAgICAKK3Byb3RlY3Rl
ZDoKKyAgICBKSVRXcml0ZUJhcnJpZXJCYXNlKCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBz
ZXQoSlNHbG9iYWxEYXRhJiwgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGxvY2F0aW9uLCBKU0Nl
bGwqIG93bmVyLCBKU0NlbGwqIHZhbHVlKQorICAgIHsKKyAgICAgICAgSGVhcDo6d3JpdGVCYXJy
aWVyKG93bmVyLCB2YWx1ZSk7CisgICAgICAgIG1fbG9jYXRpb24gPSBsb2NhdGlvbjsKKyAgICAg
ICAgQVNTRVJUKCgoISFtX2xvY2F0aW9uKSAmJiBtX2xvY2F0aW9uLmV4ZWN1dGFibGVBZGRyZXNz
KCkgIT0gSklUV3JpdGVCYXJyaWVyRmxhZykgfHwgKGxvY2F0aW9uLmV4ZWN1dGFibGVBZGRyZXNz
KCkgPT0gbV9sb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpyZXBhdGNoUG9pbnRlcihtX2xvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgIEFTU0VS
VChnZXQoKSA9PSB2YWx1ZSk7CisgICAgfQorCisgICAgSlNDZWxsKiBnZXQoKSBjb25zdAorICAg
IHsKKyAgICAgICAgaWYgKCFtX2xvY2F0aW9uIHx8IG1fbG9jYXRpb24uZXhlY3V0YWJsZUFkZHJl
c3MoKSA9PSBKSVRXcml0ZUJhcnJpZXJGbGFnKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHZvaWQqIHJlc3VsdCA9IHN0YXRpY19jYXN0PEpTQ2VsbCo+KE1hY3JvQXNzZW1ibGVyOjpy
ZWFkUG9pbnRlcihtX2xvY2F0aW9uKSk7CisgICAgICAgIC8vIFdlIHVzZSAtMSB0byBpbmRpY2F0
ZSBhICJzYWZlIiBlbXB0eSB2YWx1ZSBpbiB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtCisgICAgICAg
IGlmIChyZXN1bHQgPT0gKHZvaWQqKS0xKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxKU0NlbGwqPihyZXN1bHQpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgbV9sb2NhdGlvbjsKK307CisKKyN1bmRlZiBK
SVRXcml0ZUJhcnJpZXJGbGFnCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBKSVRXcml0
ZUJhcnJpZXIgOiBwdWJsaWMgSklUV3JpdGVCYXJyaWVyQmFzZSB7CitwdWJsaWM6CisgICAgSklU
V3JpdGVCYXJyaWVyKCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBzZXQoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgbG9jYXRpb24sIEpTQ2VsbCog
b3duZXIsIFQqIHZhbHVlKQorICAgIHsKKyAgICAgICAgdmFsaWRhdGVDZWxsKG93bmVyKTsKKyAg
ICAgICAgdmFsaWRhdGVDZWxsKHZhbHVlKTsKKyAgICAgICAgSklUV3JpdGVCYXJyaWVyQmFzZTo6
c2V0KGdsb2JhbERhdGEsIGxvY2F0aW9uLCBvd25lciwgdmFsdWUpOworICAgIH0KKyAgICBUKiBn
ZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgVCogcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VCo+KEpJ
VFdyaXRlQmFycmllckJhc2U6OmdldCgpKTsKKyAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAg
ICAgIHZhbGlkYXRlQ2VsbChyZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
K307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIE1hcmtTdGFjazo6YXBwZW5k
KEpJVFdyaXRlQmFycmllcjxUPiogc2xvdCkKK3sKKyAgICBpbnRlcm5hbEFwcGVuZChzbG90LT5n
ZXQoKSk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCisKKyNlbmRpZgo=
</data>
<flag name="review"
          id="92636"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>