<?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>73090</bug_id>
          
          <creation_ts>2011-11-24 12:08:56 -0800</creation_ts>
          <short_desc>InspectorServer: Generic Server Socket to be used for a WebSocket Server</short_desc>
          <delta_ts>2011-12-05 12:52:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jocelyn Turcotte">jturcotte</reporter>
          <assigned_to name="Jocelyn Turcotte">jturcotte</assigned_to>
          <cc>hausmann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>508858</commentid>
    <comment_count>0</comment_count>
      <attachid>116528</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-11-24 12:08:56 -0800</bug_when>
    <thetext>Created attachment 116528
Original patch

Tracks the &quot;New Part 1&quot; patch of bug #51364.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508875</commentid>
    <comment_count>1</comment_count>
      <attachid>116534</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-11-24 13:09:55 -0800</bug_when>
    <thetext>Created attachment 116534
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509014</commentid>
    <comment_count>2</comment_count>
      <attachid>116534</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-11-25 00:21:15 -0800</bug_when>
    <thetext>Comment on attachment 116534
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Add a generic Server Socket interface and an implementation for platform/qt.

It is not clear to me why we need a generic interface in the WebCore given that all the implementations are platform-specific and the only usage is from outside WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509089</commentid>
    <comment_count>3</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-11-25 04:22:24 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; It is not clear to me why we need a generic interface in the WebCore given that all the implementations are platform-specific and the only usage is from outside WebCore.

There isn&apos;t much gain from the abstraction today I agree, ServerSocketHandleBase could be merged into WebSocketServer (bug #73093) along with it&apos;s platform specific parts. We can extract the server socket logic out of it in the future if something else needs it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515320</commentid>
    <comment_count>4</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-12-05 12:52:01 -0800</bug_when>
    <thetext>This bug is obsolete and has been merged in WebSocketServer in bug #73093 as per comments.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116528</attachid>
            <date>2011-11-24 12:08:56 -0800</date>
            <delta_ts>2011-11-24 13:09:44 -0800</delta_ts>
            <desc>Original patch</desc>
            <filename>new-part-1.patch</filename>
            <type>text/plain</type>
            <size>33752</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQubWsgYi9Tb3VyY2UvV2ViQ29yZS9B
bmRyb2lkLm1rCmluZGV4IDljYTQ4NGEuLjMwMzk1ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0FuZHJvaWQubWsKKysrIGIvU291cmNlL1dlYkNvcmUvQW5kcm9pZC5tawpAQCAtNjAwLDYg
KzYwMCw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykgXAogCXBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwIFwKIAlwbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVxdWVzdEJhc2UuY3BwIFwKIAlwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmNwcCBcCisJcGxhdGZvcm0vbmV0d29yay9TZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlLmNwcCBc
CiAJcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCBcCiAJXAogCXBs
YXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCA4MDUwYjQ4Li5mMjE0MmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTQxOCw2ICsxNDE4
LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAog
ICAgIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCisgICAgcGxhdGZv
cm0vbmV0d29yay9TZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlLmNwcAogICAgIHBsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAKIAogICAgIHBsYXRmb3JtL3RleHQvQmFzZTY0
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDgyZjc4OTYuLjAxOTNkMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw2MiBAQAorMjAxMS0wMS0yNCAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFJlbW90ZSBXZWIgSW5zcGVjdG9yIC0gQ3Jvc3MgUGxhdGZvcm0gSW5zcGVjdG9y
U2VydmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MTM2NAorCisgICAgICAgIFBhcnQgMSAtIEdlbmVyaWMgU2VydmVyIFNvY2tldCB0byBiZSB1c2Vk
IGZvciBhIFdlYlNvY2tldCBTZXJ2ZXIKKworICAgICAgICBBZGQgYSBnZW5lcmljIFNlcnZlciBT
b2NrZXQgaW50ZXJmYWNlIGFuZCBhbiBpbXBsZW1lbnRhdGlvbiBmb3IgcGxhdGZvcm0vY2YuCisg
ICAgICAgIFRoaXMgaXMgbW9kZWxlZCBhZnRlciBTb2NrZXRTdHJlYW1IYW5kbGUuIEEgU2VydmVy
IHNvY2tldCBoYXMgdHdvIG9wZXJhdGlvbnMsCisgICAgICAgIGxpc3Rlbihwb3J0KSBhbmQgY2xv
c2UuIFdoZW4gYWNjZXB0aW5nIGEgY29ubmVjdGlvbiBpdCBjYWxscyBpdHMgY2xpZW50J3MKKyAg
ICAgICAgZGlkUmVjZWl2ZUNvbm5lY3Rpb24gY2FsbGJhY2sgd2l0aCBhIGdlbmVyaWMgU29ja2V0
U3RyZWFtSGFuZGxlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9TZXJ2ZXJTb2NrZXRI
YW5kbGVCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXJ2ZXJTb2NrZXRIYW5k
bGVCYXNlOjpTZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZl
clNvY2tldEhhbmRsZUJhc2U6Omxpc3Rlbik6IGRlbGVnYXRlIHRvIHBsYXRmb3JtTGlzdGVuLgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmVyU29ja2V0SGFuZGxlQmFzZTo6Y2xvc2UpOiBkZWxlZ2F0
ZSB0byBwbGF0Zm9ybUNsb3NlLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU2VydmVyU29j
a2V0SGFuZGxlQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlcnZlclNvY2tldEhh
bmRsZUJhc2U6On5TZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
cnZlclNvY2tldEhhbmRsZUJhc2U6OnN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZlclNv
Y2tldEhhbmRsZUJhc2U6OnBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmVyU29ja2V0SGFu
ZGxlQmFzZTo6c2V0UG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2ZXJTb2NrZXRIYW5kbGVC
YXNlOjpjbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmVyU29ja2V0SGFuZGxlQmFzZTo6
c2V0Q2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1NlcnZlclNvY2tldEhhbmRs
ZUNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlcnZlclNvY2tldEhhbmRsZUNs
aWVudDo6flNlcnZlclNvY2tldEhhbmRsZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
ZXJTb2NrZXRIYW5kbGVDbGllbnQ6OmRpZFN0YXJ0TGlzdGVuaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZlclNvY2tldEhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUNvbm5lY3Rpb24pOiBjYWxs
YmFjayB3aGVuIHRoZSBzZXJ2ZXIgc29ja2V0IHJlY2VpdmVzIGEgY29ubmVjdGlvbi4KKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZlclNvY2tldEhhbmRsZUNsaWVudDo6ZGlkQ2xvc2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQ6OmRpZENvbXBsZXRlU2VuZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9TZXJ2ZXJTb2NrZXRIYW5kbGUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2ZXJTb2NrZXRIYW5kbGU6OmNyZWF0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jZi9TZXJ2ZXJTb2NrZXRIYW5kbGVDRk5ldC5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6U2VydmVyU29ja2V0SGFuZGxlOjpTZXJ2ZXJTb2NrZXRIYW5k
bGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmVyU29ja2V0SGFuZGxlOjp+U2VydmVyU29ja2V0
SGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZlclNvY2tldEhhbmRsZTo6cGxhdGZvcm1M
aXN0ZW4pOiBvcGVuIGEgc29ja2V0IHdpbGxpbmcgdG8gYWNjZXB0IGFueSBjb25uZWN0aW9uLgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmVyU29ja2V0SGFuZGxlOjpwbGF0Zm9ybUNsb3NlKTogY2xv
c2UgdGhlIHNvY2tldC4KKyAgICAgICAgKFdlYkNvcmU6OlNlcnZlclNvY2tldEhhbmRsZTo6YWNj
ZXB0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U2VydmVyU29ja2V0SGFuZGxlOjpjb3B5
RGVzY3JpcHRpb25DYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Tb2Nr
ZXRTdHJlYW1IYW5kbGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRs
ZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0
U3RyZWFtSGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6cGFj
RXhlY3V0aW9uQ2FsbGJhY2tNYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0
cmVhbUhhbmRsZTo6Y3JlYXRlU3RyZWFtcyk6IGFkZCB0aGUgYWJpbGl0eSB0byBvcGVuIHJlYWQv
d3JpdGUgc3RyZWFtcyBmb3IgYW4gZXhpc3RpbmcgbmF0aXZlIHNvY2tldCBmaWxlIGRlc2NyaXB0
b3IuCisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OnBsYXRmb3JtU2VuZCk6
CisKKyAgICAgICAgICBNaXNjZWxsYW5lb3VzLiBBZGQgbmV3IGZpbGVzIHRvIHRoZSBidWlsZC4K
KworICAgICAgICAqIEFuZHJvaWQubWs6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAq
IFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxMS0wMS0x
NyAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFl1cnlzIFNlbWlraGF0c2t5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBlZmJiYjcw
Li4xZjI3YjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjU0Miw2ICsyNTQyLDkgQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVxdWVzdEJhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlc3BvbnNlQmFzZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXNwb25zZUJhc2UuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9TZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9TZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvU2VydmVyU29ja2V0SGFuZGxlQ2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1FcnJvckJhc2UuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKaW5kZXggZjRhMjM5Zi4uM2NiYjhkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
MzIwMSw2ICszMjAxLDkgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVxdWVzdEJhc2UuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXNwb25zZUJhc2UuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9TZXJ2ZXJTb2Nr
ZXRIYW5kbGVCYXNlLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9TZXJ2ZXJT
b2NrZXRIYW5kbGVCYXNlLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvU2VydmVy
U29ja2V0SGFuZGxlQ2xpZW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvU29j
a2V0U3RyZWFtRXJyb3JCYXNlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9T
b2NrZXRTdHJlYW1FcnJvckJhc2UuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9T
b2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGQzN2NkYzcuLmE3
ZjBmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0zNzE5LDYgKzM3MTksNyBAQCBjb250YWlucyhERUZJ
TkVTLCBFTkFCTEVfV0VCX1NPQ0tFVFM9MSkgewogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZS5oIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1
ZXN0LmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgg
XAorICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL1NlcnZlclNvY2tldEhhbmRsZUJhc2UuaCBcCiAg
ICAgICAgIHBsYXRmb3JtL25ldHdvcmsvcXQvU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZS5oCiAK
ICAgICBTT1VSQ0VTICs9IFwKQEAgLTM3MjgsNiArMzcyOSw3IEBAIGNvbnRhaW5zKERFRklORVMs
IEVOQUJMRV9XRUJfU09DS0VUUz0xKSB7CiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFu
ZHNoYWtlUmVxdWVzdC5jcHAgXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlLmNwcCBcCiAgICAgICAgIHdlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuY3BwIFwKKyAgICAgICAgcGxhdGZvcm0vbmV0d29yay9TZXJ2ZXJTb2NrZXRIYW5kbGVC
YXNlLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtRXJyb3JCYXNl
LmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5j
cHAgXAogICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZVF0LmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAz
OTY3MWEwLi5lODcwYWZhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagpAQCAtMjkwODEsNiArMjkwODEsMTggQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4K
IAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcU2VydmVy
U29ja2V0SGFuZGxlQmFzZS5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXFNlcnZlclNvY2tldEhhbmRsZUJh
c2UuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHBsYXRmb3JtXG5ldHdvcmtcU2VydmVyU29ja2V0SGFuZGxlQ2xpZW50LmgiCisJCQkJCT4K
KwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxu
ZXR3b3JrXFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggYmM1ZjY5Ni4uMmFiMjQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzE0OCw2ICszMTQ4LDExIEBACiAJCUE0NTZGQTI3
MTFBRDRBODMwMDIwQjQyMCAvKiBMYWJlbHNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTQ1NkZBMjUxMUFENEE4MzAwMjBCNDIwIC8qIExh
YmVsc05vZGVMaXN0LmggKi87IH07CiAJCUE1MTNCM0Q3MTE0QjE2NjYwMDFDNDI5QiAvKiBLZXlF
dmVudENvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNUM5NzRDRjExNDg1RkYxMDA2NkYyQUIgLyogS2V5RXZlbnRDb2NvYS5oICovOyB9OwogCQlB
NTEzQjNEODExNEIxNjZBMDAxQzQyOUIgLyogS2V5RXZlbnRDb2NvYS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1Qzk3NEQwMTE0ODVGRjEwMDY2RjJB
QiAvKiBLZXlFdmVudENvY29hLm1tICovOyB9OworCQlBNTdEQzRDNjEyRTdDNTEyMDBDN0EyOUMg
LyogU2VydmVyU29ja2V0SGFuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdEQzRDNDEyRTdDNTEyMDBDN0EyOUMgLyogU2VydmVyU29j
a2V0SGFuZGxlQ2xpZW50LmggKi87IH07CisJCUE1N0RDNERBMTJFN0M3NkMwMEM3QTI5QyAvKiBT
ZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTdEQzREODEyRTdDNzZDMDBDN0EyOUMgLyogU2VydmVyU29ja2V0SGFu
ZGxlQmFzZS5oICovOyB9OworCQlBNTdEQzREQjEyRTdDNzZDMDBDN0EyOUMgLyogU2VydmVyU29j
a2V0SGFuZGxlQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTdEQzREOTEyRTdDNzZDMDBDN0EyOUMgLyogU2VydmVyU29ja2V0SGFuZGxlQmFz
ZS5jcHAgKi87IH07CisJCUE1N0RDNEVBMTJFN0QzRDkwMEM3QTI5QyAvKiBTZXJ2ZXJTb2NrZXRI
YW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
N0RDNEU4MTJFN0QzRDkwMEM3QTI5QyAvKiBTZXJ2ZXJTb2NrZXRIYW5kbGUuaCAqLzsgfTsKKwkJ
QTU3REM0RUIxMkU3RDNEOTAwQzdBMjlDIC8qIFNlcnZlclNvY2tldEhhbmRsZUNGTmV0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0RDNEU5MTJF
N0QzRDkwMEM3QTI5QyAvKiBTZXJ2ZXJTb2NrZXRIYW5kbGVDRk5ldC5jcHAgKi87IH07CiAJCUE1
OUUzQzFFMTE1ODBGNTEwMDcyOTI4RSAvKiBLZXlFdmVudENvZGVzSVBob25lLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTlFM0MxQzExNTgwRjUxMDA3
MjkyOEUgLyogS2V5RXZlbnRDb2Rlc0lQaG9uZS5oICovOyB9OwogCQlBNTlFM0MxRjExNTgwRjUx
MDA3MjkyOEUgLyogS2V5RXZlbnRJUGhvbmUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTlFM0MxRDExNTgwRjUxMDA3MjkyOEUgLyogS2V5RXZlbnRJ
UGhvbmUubW0gKi87IH07CiAJCUE1QUZCMzRGMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2Uu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBRkIz
NEQxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5jcHAgKi87IH07CkBAIC05NTExLDYgKzk1
MTYsMTEgQEAKIAkJQTQ1NDQyNEQxMTlCMzY4NzAwOUJFOTEyIC8qIFJlbmRlck1ldGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1ldGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE0NTZGQTI0MTFBRDRBODMwMDIwQjQyMCAvKiBMYWJlbHNOb2Rl
TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYWJlbHNOb2Rl
TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE0NTZGQTI1MTFBRDRBODMw
MDIwQjQyMCAvKiBMYWJlbHNOb2RlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBMYWJlbHNOb2RlTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTdE
QzRDNDEyRTdDNTEyMDBDN0EyOUMgLyogU2VydmVyU29ja2V0SGFuZGxlQ2xpZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZlclNvY2tldEhhbmRsZUNsaWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTdEQzREODEyRTdDNzZDMDBDN0EyOUMgLyog
U2VydmVyU29ja2V0SGFuZGxlQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE1N0RDNEQ5MTJFN0M3NkMwMEM3QTI5QyAvKiBTZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZlclNvY2tldEhhbmRsZUJh
c2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTdEQzRFODEyRTdEM0Q5MDBD
N0EyOUMgLyogU2VydmVyU29ja2V0SGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNlcnZlclNvY2tldEhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBNTdEQzRFOTEyRTdEM0Q5MDBDN0EyOUMgLyogU2VydmVyU29ja2V0SGFuZGxlQ0ZOZXQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmVyU29ja2V0SGFuZGxl
Q0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTlFM0MxQzExNTgwRjUx
MDA3MjkyOEUgLyogS2V5RXZlbnRDb2Rlc0lQaG9uZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBLZXlFdmVudENvZGVzSVBob25lLmg7IHBhdGggPSBpcGhvbmUvS2V5RXZlbnRD
b2Rlc0lQaG9uZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTlFM0MxRDExNTgw
RjUxMDA3MjkyOEUgLyogS2V5RXZlbnRJUGhvbmUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBLZXlFdmVudElQaG9uZS5tbTsgcGF0aCA9IGlwaG9uZS9LZXlFdmVu
dElQaG9uZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVBRkIzNEQxMTUxNTFB
NzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTdGVwUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM3
OTAsNiArMTM4MDAsOSBAQAogCQkJCTUxNEM3NjY4MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJj
ZVJlcXVlc3RCYXNlLmggKi8sCiAJCQkJNTE0Qzc2NjkwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291
cmNlUmVzcG9uc2VCYXNlLmNwcCAqLywKIAkJCQk1MTRDNzY2QTBDRTkyM0ExMDA3RUYzQ0QgLyog
UmVzb3VyY2VSZXNwb25zZUJhc2UuaCAqLywKKwkJCQlBNTdEQzREOTEyRTdDNzZDMDBDN0EyOUMg
LyogU2VydmVyU29ja2V0SGFuZGxlQmFzZS5jcHAgKi8sCisJCQkJQTU3REM0RDgxMkU3Qzc2QzAw
QzdBMjlDIC8qIFNlcnZlclNvY2tldEhhbmRsZUJhc2UuaCAqLywKKwkJCQlBNTdEQzRDNDEyRTdD
NTEyMDBDN0EyOUMgLyogU2VydmVyU29ja2V0SGFuZGxlQ2xpZW50LmggKi8sCiAJCQkJNTEwRDRB
MkQxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgKi8sCiAJCQkJ
NTEwRDRBMkUxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5oICovLAog
CQkJCTUxMEQ0QTMwMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNw
cCAqLywKQEAgLTE3NTc1LDYgKzE3NTg4LDggQEAKIAkJCQk3RUU2ODQ1QzEyRDI2RTM4MDBFNzk0
MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCAqLywKIAkJCQk3RUU2ODQ1RDEyRDI2RTM4MDBF
Nzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oICovLAogCQkJCTdFRTY4NDVFMTJEMjZFMzgwMEU3
OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwICovLAorCQkJCUE1N0RDNEU4MTJFN0Qz
RDkwMEM3QTI5QyAvKiBTZXJ2ZXJTb2NrZXRIYW5kbGUuaCAqLywKKwkJCQlBNTdEQzRFOTEyRTdE
M0Q5MDBDN0EyOUMgLyogU2VydmVyU29ja2V0SGFuZGxlQ0ZOZXQuY3BwICovLAogCQkJCTUxQUJB
RTFBMTAzQzE4RkYwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1FcnJvci5oICovLAogCQkJCTUxQUJB
RTFDMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCAqLywKIAkJCQk1MUFC
QUUxRDEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwICovLApA
QCAtMjIzNDIsNiArMjIzNTcsOSBAQAogCQkJCTJFMzdFMDA2MTJEQkM1QTQwMEE2QjIzMyAvKiBK
U0RPTVVSTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E1NjQwQzAxMkRGOUU1RTAwRjQ1MzZEIC8q
IEluc3BlY3RvclNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGM0Q0QzQ3OTEyRTA3NjYz
MDAzREExNTAgLyogSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCUE1N0RDNEM2MTJFN0M1MTIwMEM3QTI5QyAvKiBTZXJ2ZXJTb2NrZXRIYW5kbGVDbGll
bnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1N0RDNERBMTJFN0M3NkMwMEM3QTI5QyAvKiBTZXJ2
ZXJTb2NrZXRIYW5kbGVCYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTdEQzRFQTEyRTdEM0Q5
MDBDN0EyOUMgLyogU2VydmVyU29ja2V0SGFuZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI1MDMw
LDYgKzI1MDQ4LDggQEAKIAkJCQkyRTM3RTAwNTEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E1NjQwQkYxMkRGOUU1RTAwRjQ1MzZEIC8qIEluc3Bl
Y3RvclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUYzRDRDNDc4MTJFMDc2NjMwMDNE
QTE1MCAvKiBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlBNTdEQzREQjEyRTdDNzZDMDBDN0EyOUMgLyogU2VydmVyU29ja2V0SGFuZGxlQmFzZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTdEQzRFQjEyRTdEM0Q5MDBDN0EyOUMgLyogU2VydmVy
U29ja2V0SGFuZGxlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NlcnZlclNvY2tldEhhbmRsZUJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmIxZDUyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TZXJ2ZXJTb2NrZXRIYW5kbGVC
YXNlLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNlcnZlclNvY2tl
dEhhbmRsZUJhc2UuaCIKKworI2luY2x1ZGUgIlNlcnZlclNvY2tldEhhbmRsZUNsaWVudC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NlcnZlclNvY2tldEhhbmRsZUJhc2U6OlNlcnZlclNv
Y2tldEhhbmRsZUJhc2UodW5zaWduZWQgc2hvcnQgcG9ydCwgU2VydmVyU29ja2V0SGFuZGxlQ2xp
ZW50KiBjbGllbnQpCisgICAgOiBtX3N0YXRlKENsb3NlZCkKKyAgICAsIG1fcG9ydChwb3J0KQor
ICAgICwgbV9jbGllbnQoY2xpZW50KQoreworfQorCit2b2lkIFNlcnZlclNvY2tldEhhbmRsZUJh
c2U6Omxpc3RlbigpCit7CisgICAgLy8gQWxyZWFkeSBsaXN0ZW5pbmcuCisgICAgaWYgKHN0YXRl
KCkgPT0gTGlzdGVuaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBTaG91bGQgYmUgYSB2
YWxpZCBwb3J0LgorICAgIEFTU0VSVChtX3BvcnQpOworICAgIGlmICghbV9wb3J0KQorICAgICAg
ICByZXR1cm47CisKKyAgICBib29sIGlzTm93TGlzdGVuaW5nID0gcGxhdGZvcm1MaXN0ZW4oKTsK
KyAgICBtX3N0YXRlID0gaXNOb3dMaXN0ZW5pbmcgPyBMaXN0ZW5pbmcgOiBDbG9zZWQ7Cit9CisK
K3ZvaWQgU2VydmVyU29ja2V0SGFuZGxlQmFzZTo6Y2xvc2UoKQoreworICAgIC8vIEFscmVhZHkg
Y2xvc2VkLgorICAgIGlmIChzdGF0ZSgpID09IENsb3NlZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgcGxhdGZvcm1DbG9zZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NlcnZlclNvY2tldEhhbmRsZUJh
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU2VydmVyU29ja2V0SGFuZGxl
QmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmOGJlOWIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NlcnZlclNvY2tl
dEhhbmRsZUJhc2UuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlX2gKKyNk
ZWZpbmUgU2VydmVyU29ja2V0SGFuZGxlQmFzZV9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgU2VydmVyU29ja2V0SGFuZGxlQ2xpZW50OworCitjbGFzcyBTZXJ2ZXJTb2NrZXRIYW5k
bGVCYXNlIHsKK3B1YmxpYzoKKyAgICBlbnVtIFNlcnZlclNvY2tldFN0YXRlIHsgQ2xvc2VkLCBM
aXN0ZW5pbmcgfTsKKyAgICB2aXJ0dWFsIH5TZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlKCkgeyB9CisK
KyAgICB2b2lkIGxpc3RlbigpOworICAgIHZvaWQgY2xvc2UoKTsKKworICAgIFNlcnZlclNvY2tl
dFN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQorCisgICAgdW5zaWduZWQg
c2hvcnQgcG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9ydDsgfQorICAgIHZvaWQgc2V0UG9ydCh1
bnNpZ25lZCBzaG9ydCBwb3J0KSB7IG1fcG9ydCA9IHBvcnQ7IH0KKworICAgIFNlcnZlclNvY2tl
dEhhbmRsZUNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KKyAgICB2
b2lkIHNldENsaWVudChTZXJ2ZXJTb2NrZXRIYW5kbGVDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVu
dCA9IGNsaWVudDsgfQorCitwcm90ZWN0ZWQ6CisgICAgU2VydmVyU29ja2V0SGFuZGxlQmFzZSh1
bnNpZ25lZCBzaG9ydCBwb3J0LCBTZXJ2ZXJTb2NrZXRIYW5kbGVDbGllbnQqKTsKKworICAgIC8v
IFBsYXRmb3JtIHNwZWNpZmljIGltcGxlbWVudGF0aW9ucy4KKyAgICB2aXJ0dWFsIGJvb2wgcGxh
dGZvcm1MaXN0ZW4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ2xvc2UoKSA9IDA7
CisKKyAgICBTZXJ2ZXJTb2NrZXRTdGF0ZSBtX3N0YXRlOworICAgIHVuc2lnbmVkIHNob3J0IG1f
cG9ydDsKKyAgICBTZXJ2ZXJTb2NrZXRIYW5kbGVDbGllbnQqIG1fY2xpZW50OworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2VydmVyU29ja2V0SGFuZGxlQmFzZV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NlcnZlclNvY2tl
dEhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TZXJ2ZXJT
b2NrZXRIYW5kbGVDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41
YzY0MDg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9TZXJ2ZXJTb2NrZXRIYW5kbGVDbGllbnQuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTZXJ2ZXJTb2NrZXRI
YW5kbGVDbGllbnRfaAorI2RlZmluZSBTZXJ2ZXJTb2NrZXRIYW5kbGVDbGllbnRfaAorCisjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBT
ZXJ2ZXJTb2NrZXRIYW5kbGU7CitjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGU7CisKK2NsYXNzIFNl
cnZlclNvY2tldEhhbmRsZUNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+U2VydmVyU29j
a2V0SGFuZGxlQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRMaXN0ZW5p
bmcoU2VydmVyU29ja2V0SGFuZGxlKikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVD
b25uZWN0aW9uKFNlcnZlclNvY2tldEhhbmRsZSosIFBhc3NSZWZQdHI8U29ja2V0U3RyZWFtSGFu
ZGxlPikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKFNlcnZlclNvY2tldEhhbmRsZSop
IHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2VydmVyU29j
a2V0SGFuZGxlQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvU2VydmVyU29ja2V0SGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1NlcnZlclNvY2tldEhhbmRsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjEwMGE2Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1NlcnZlclNvY2tldEhhbmRsZS5oCkBAIC0wLDAgKzEsNTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNlcnZl
clNvY2tldEhhbmRsZV9oCisjZGVmaW5lIFNlcnZlclNvY2tldEhhbmRsZV9oCisKKyNpbmNsdWRl
ICJTZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFNlcnZlclNvY2tldEhhbmRsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNlcnZlclNvY2tldEhh
bmRsZT4sIHB1YmxpYyBTZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTZXJ2ZXJTb2NrZXRIYW5kbGU+IGNyZWF0ZSh1bnNpZ25lZCBzaG9ydCBw
b3J0LCBTZXJ2ZXJTb2NrZXRIYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRSZWYo
bmV3IFNlcnZlclNvY2tldEhhbmRsZShwb3J0LCBjbGllbnQpKTsgfQorICAgIHZpcnR1YWwgflNl
cnZlclNvY2tldEhhbmRsZSgpOworCitwcml2YXRlOgorICAgIFNlcnZlclNvY2tldEhhbmRsZSh1
bnNpZ25lZCBzaG9ydCBwb3J0LCBTZXJ2ZXJTb2NrZXRIYW5kbGVDbGllbnQqKTsKKworICAgIC8v
IFNlcnZlclNvY2tldEhhbmRsZUJhc2UgcGxhdGZvcm0gZnVuY3Rpb25zLgorICAgIHZpcnR1YWwg
Ym9vbCBwbGF0Zm9ybUxpc3RlbigpOworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNsb3NlKCk7
CisKKyAgICAvLyBDRlNvY2tldCBjYWxsYmFja3MuCisgICAgc3RhdGljIENGU3RyaW5nUmVmIGNv
cHlEZXNjcmlwdGlvbkNhbGxiYWNrKGNvbnN0IHZvaWQqIGluZm8pOworICAgIHN0YXRpYyB2b2lk
IGFjY2VwdENhbGxiYWNrKENGU29ja2V0UmVmLCBDRlNvY2tldENhbGxCYWNrVHlwZSwgQ0ZEYXRh
UmVmLCBjb25zdCB2b2lkKiBkYXRhLCB2b2lkKiBpbmZvKTsKKyAgICB2b2lkIGFjY2VwdENhbGxi
YWNrKGludCBmZCk7CisKKyAgICBpbnQgbV9zZXJ2ZXJGaWxlRGVzY3JpcHRvcjsKKyAgICBDRlNv
Y2tldFJlZiBtX3NvY2tldDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIFNlcnZlclNvY2tldEhhbmRsZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1NlcnZlclNvY2tldEhhbmRsZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU2VydmVyU29ja2V0SGFuZGxlQ0ZOZXQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1MzEzMDIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NlcnZlclNvY2tldEhhbmRsZUNG
TmV0LmNwcApAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTZXJ2ZXJTb2Nr
ZXRIYW5kbGUuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTZXJ2ZXJTb2Nr
ZXRIYW5kbGVDbGllbnQuaCIKKyNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGUuaCIKKyNpbmNs
dWRlIDxuZXRpbmV0L2luLmg+CisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2luY2x1ZGUgPHd0
Zi9VbnVzZWRQYXJhbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NlcnZlclNvY2tldEhh
bmRsZTo6U2VydmVyU29ja2V0SGFuZGxlKHVuc2lnbmVkIHNob3J0IHBvcnQsIFNlcnZlclNvY2tl
dEhhbmRsZUNsaWVudCogY2xpZW50KQorICAgIDogU2VydmVyU29ja2V0SGFuZGxlQmFzZShwb3J0
LCBjbGllbnQpCisgICAgLCBtX3NlcnZlckZpbGVEZXNjcmlwdG9yKDApCisgICAgLCBtX3NvY2tl
dCgwKQoreworICAgIExPRyhOZXR3b3JrLCAiU2VydmVyU29ja2V0SGFuZGxlICVwIG5ldyBjbGll
bnQgJXAiLCB0aGlzLCBtX2NsaWVudCk7Cit9CisKK1NlcnZlclNvY2tldEhhbmRsZTo6flNlcnZl
clNvY2tldEhhbmRsZSgpCit7CisgICAgTE9HKE5ldHdvcmssICJTZXJ2ZXJTb2NrZXRIYW5kbGUg
JXAgZHRvciIsIHRoaXMpOworICAgIHBsYXRmb3JtQ2xvc2UoKTsKK30KKworYm9vbCBTZXJ2ZXJT
b2NrZXRIYW5kbGU6OnBsYXRmb3JtTGlzdGVuKCkKK3sKKyAgICBBU1NFUlQobV9wb3J0KTsKKyAg
ICBMT0coTmV0d29yaywgIlNlcnZlclNvY2tldEhhbmRsZSAlcCBwbGF0Zm9ybUxpc3RlbiIsIHRo
aXMpOworCisgICAgLy8gQ3JlYXRlIGFuIElQdjYgVENQIHNvY2tldCwgc2F2ZSB0aGUgZmlsZSBk
ZXNjcmlwdG9yLgorICAgIG1fc2VydmVyRmlsZURlc2NyaXB0b3IgPSBzb2NrZXQoQUZfSU5FVDYs
IFNPQ0tfU1RSRUFNLCBJUFBST1RPX1RDUCk7CisgICAgaWYgKG1fc2VydmVyRmlsZURlc2NyaXB0
b3IgPT0gLTEpIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJTZXJ2ZXJTb2NrZXRIYW5kbGU6IENv
dWxkIG5vdCBjcmVhdGUgU2VydmVyIHNvY2tldC4iKTsKKyAgICAgICAgcGVycm9yKCJzb2NrZXQi
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIENyZWF0ZSBhbiBJUHY2
IHNvY2tldCBhZGRyZXNzIGFuZCBwb3J0LgorICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYgc29ja2Fk
ZHI2OworICAgIG1lbXNldCgmc29ja2FkZHI2LCAwLCBzaXplb2Ygc29ja2FkZHI2KTsKKyAgICBz
b2NrYWRkcjYuc2luNl9mYW1pbHkgPSBBRl9JTkVUNjsKKyAgICBzb2NrYWRkcjYuc2luNl9wb3J0
ID0gaHRvbnMobV9wb3J0KTsKKyAgICBzb2NrYWRkcjYuc2luNl9hZGRyID0gaW42YWRkcl9hbnk7
CisKKyAgICAvLyBCaW5kIHRoZSBzb2NrZXQgZmlsZSBkZXNjcmlwdG9yIHRvIHRoZSBhZGRyZXNz
IGFuZCBwb3J0LgorICAgIGlmIChiaW5kKG1fc2VydmVyRmlsZURlc2NyaXB0b3IsIChzdHJ1Y3Qg
c29ja2FkZHIqKSZzb2NrYWRkcjYsIHNpemVvZiBzb2NrYWRkcjYpID09IC0xKSB7CisgICAgICAg
IExPRyhOZXR3b3JrLCAiU2VydmVyU29ja2V0SGFuZGxlOiBDb3VsZCBub3QgYmluZCB0aGUgU2Vy
dmVyIHNvY2tldCB0byBwb3J0ICglaHUpLiIsIG1fcG9ydCk7CisgICAgICAgIHBlcnJvcigiYmlu
ZCIpOworICAgICAgICA6OmNsb3NlKG1fc2VydmVyRmlsZURlc2NyaXB0b3IpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gTWFrZSB0aGUgc29ja2V0IGEgbGlzdGVuaW5n
IHNvY2tldC4KKyAgICBpbnQgYmFja2xvZyA9IDU7CisgICAgaWYgKDo6bGlzdGVuKG1fc2VydmVy
RmlsZURlc2NyaXB0b3IsIGJhY2tsb2cpID09IC0xKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAi
U2VydmVyU29ja2V0SGFuZGxlOiBDb3VsZCBub3QgbWFrZSB0aGUgU2VydmVyIHNvY2tldCBhIGxp
c3RlbmluZyBzb2NrZXQuIik7CisgICAgICAgIHBlcnJvcigibGlzdGVuIik7CisgICAgICAgIDo6
Y2xvc2UobV9zZXJ2ZXJGaWxlRGVzY3JpcHRvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICAvLyBSZWdpc3RlciBhbiBhY2NlcHQgY2FsbGJhY2sgZnVuY3Rpb24gdG8gdGhl
IHNvY2tldC4KKyAgICBDRlNvY2tldENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgMCwgMCwg
Y29weURlc2NyaXB0aW9uQ2FsbGJhY2sgfTsKKyAgICBtX3NvY2tldCA9IENGU29ja2V0Q3JlYXRl
V2l0aE5hdGl2ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3NlcnZlckZpbGVEZXNjcmlwdG9yLCBr
Q0ZTb2NrZXRBY2NlcHRDYWxsQmFjaywgYWNjZXB0Q2FsbGJhY2ssICZjb250ZXh0KTsKKyAgICBp
ZiAoIW1fc29ja2V0KSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAiU2VydmVyU29ja2V0SGFuZGxl
OiBDb3VsZCBub3QgY3JlYXRlIHRoZSBDRlNvY2tldCBhbmQgY2FsbGJhY2sgZnJvbSBuYXRpdmUg
c29ja2V0IGZpbGUgZGVzY3JpcHRvci4iKTsKKyAgICAgICAgOjpjbG9zZShtX3NlcnZlckZpbGVE
ZXNjcmlwdG9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIFJvdXRl
IGFjY2VwdGluZyBjb25uZWN0aW9ucyB0byBhIHJ1biBsb29wLgorICAgIENGUnVuTG9vcFNvdXJj
ZVJlZiBydW5Mb29wU291cmNlID0gQ0ZTb2NrZXRDcmVhdGVSdW5Mb29wU291cmNlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIG1fc29ja2V0LCAwKTsKKyAgICBDRlJ1bkxvb3BBZGRTb3VyY2UoQ0ZSdW5M
b29wR2V0Q3VycmVudCgpLCBydW5Mb29wU291cmNlLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwor
ICAgIENGUmVsZWFzZShydW5Mb29wU291cmNlKTsKKworICAgIExPRyhOZXR3b3JrLCAiU2VydmVy
U29ja2V0SGFuZGxlOiBTdGFydGVkIFNlcnZlciBTb2NrZXQiKTsKKyAgICBMT0coTmV0d29yaywg
IlNlcnZlclNvY2tldEhhbmRsZTogQWRkcmVzcyAobG9jYWxob3N0KSIpOworICAgIExPRyhOZXR3
b3JrLCAiU2VydmVyU29ja2V0SGFuZGxlOiBQb3J0ICglaHUpIiwgbV9wb3J0KTsKKworICAgIGlm
IChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRpZFN0YXJ0TGlzdGVuaW5nKHRoaXMpOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgU2VydmVyU29ja2V0SGFuZGxlOjpwbGF0Zm9y
bUNsb3NlKCkKK3sKKyAgICBMT0coTmV0d29yaywgIlNlcnZlclNvY2tldEhhbmRsZSAlcCBwbGF0
Zm9ybUNsb3NlIiwgdGhpcyk7CisKKyAgICAvLyBBbHJlYWR5IGNsb3NlZC4KKyAgICBpZiAoIW1f
c29ja2V0KQorICAgICAgICByZXR1cm47CisKKyAgICBDRlNvY2tldEludmFsaWRhdGUobV9zb2Nr
ZXQpOworICAgIENGUmVsZWFzZShtX3NvY2tldCk7CisgICAgbV9zb2NrZXQgPSAwOworCisgICAg
OjpjbG9zZShtX3NlcnZlckZpbGVEZXNjcmlwdG9yKTsKKyAgICBtX3NlcnZlckZpbGVEZXNjcmlw
dG9yID0gMDsKKworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRpZENsb3Nl
KHRoaXMpOworfQorCit2b2lkIFNlcnZlclNvY2tldEhhbmRsZTo6YWNjZXB0Q2FsbGJhY2soaW50
IGZkKQoreworICAgIFJlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+IGhhbmRsZSA9IFNvY2tldFN0
cmVhbUhhbmRsZTo6Y3JlYXRlKGZkLCAwKTsKKworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVDb25uZWN0aW9uKHRoaXMsIGhhbmRsZS5yZWxlYXNlKCkpOwor
fQorCisKKyNwcmFnbWEgbWFyayAtCisjcHJhZ21hIG1hcmsgQ0ZOZXR3b3JrIENhbGxiYWNrcwor
CitDRlN0cmluZ1JlZiBTZXJ2ZXJTb2NrZXRIYW5kbGU6OmNvcHlEZXNjcmlwdGlvbkNhbGxiYWNr
KGNvbnN0IHZvaWQqIGluZm8pCit7CisgICAgY29uc3QgU2VydmVyU29ja2V0SGFuZGxlKiBoYW5k
bGUgPSBzdGF0aWNfY2FzdDxjb25zdCBTZXJ2ZXJTb2NrZXRIYW5kbGUqPihpbmZvKTsKKyAgICBT
dHJpbmcgZGVzY3JpcHRpb24gPSBTdHJpbmcoIldlYktpdCBzZXJ2ZXIgc29ja2V0IG9uIHBvcnQg
IikgKyBTdHJpbmc6Om51bWJlcihoYW5kbGUtPnBvcnQoKSk7CisgICAgcmV0dXJuIGRlc2NyaXB0
aW9uLmNyZWF0ZUNGU3RyaW5nKCk7Cit9CisKK3ZvaWQgU2VydmVyU29ja2V0SGFuZGxlOjphY2Nl
cHRDYWxsYmFjayhDRlNvY2tldFJlZiwgQ0ZTb2NrZXRDYWxsQmFja1R5cGUgdHlwZSwgQ0ZEYXRh
UmVmLCBjb25zdCB2b2lkKiBkYXRhLCB2b2lkKiBpbmZvKQoreworICAgIEFTU0VSVCh0eXBlID0g
a0NGU29ja2V0QWNjZXB0Q2FsbEJhY2spOworICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKKworICAg
IFNlcnZlclNvY2tldEhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8U2VydmVyU29ja2V0SGFu
ZGxlKj4oaW5mbyk7CisgICAgaW50IGZkID0gKihjb25zdCBpbnQqKWRhdGE7CisgICAgaGFuZGxl
LT5hY2NlcHRDYWxsYmFjayhmZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFu
ZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhh
bmRsZS5oCmluZGV4IGRmMWQ0YTMuLmE3NWRlNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGUuaApAQCAtNDYsNiAr
NDYsNyBAQCBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQ7CiBjbGFzcyBTb2NrZXRTdHJl
YW1IYW5kbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxTb2NrZXRTdHJlYW1IYW5kbGU+LCBwdWJsaWMg
U29ja2V0U3RyZWFtSGFuZGxlQmFzZSwgcHVibGljIEF1dGhlbnRpY2F0aW9uQ2xpZW50IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZShj
b25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KSB7IHJldHVy
biBhZG9wdFJlZihuZXcgU29ja2V0U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KSk7IH0KKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZShpbnQgbmF0aXZlRmls
ZURlc2NyaXB0b3IsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgU29ja2V0U3RyZWFtSGFuZGxlKG5hdGl2ZUZpbGVEZXNjcmlwdG9yLCBjbGll
bnQpKTsgfQogCiAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlKCk7CiAKQEAgLTU3LDYg
KzU4LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DbG9zZSgpOwogCiAg
ICAgU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IEtVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQqKTsKKyAgICBTb2NrZXRTdHJlYW1IYW5kbGUoaW50IG5hdGl2ZUZpbGVEZXNjcmlwdG9yLCBT
b2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCk7CisKICAgICB2b2lkIGNyZWF0ZVN0cmVh
bXMoKTsKICAgICB2b2lkIHNjaGVkdWxlU3RyZWFtcygpOwogICAgIHZvaWQgY2hvb3NlUHJveHko
KTsKQEAgLTEwOSw2ICsxMTIsOCBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxDRlJlYWRTdHJl
YW1SZWY+IG1fcmVhZFN0cmVhbTsKICAgICBSZXRhaW5QdHI8Q0ZXcml0ZVN0cmVhbVJlZj4gbV93
cml0ZVN0cmVhbTsKIAorICAgIGludCBtX25hdGl2ZUZpbGVEZXNjcmlwdG9yOworCiAgICAgUmV0
YWluUHRyPENGVVJMUmVmPiBtX2h0dHBzVVJMOyAvLyB3cyhzKTogcmVwbGFjZWQgd2l0aCBodHRw
czoKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
U29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAKaW5kZXggODIxYjFjYS4uMmQxMTM1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRT
dHJlYW1IYW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAKQEAgLTYzLDYgKzYzLDcgQEAgU29ja2V0
U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQKICAgICAsIG1fY29ubmVjdGluZ1N1YnN0YXRlKE5ldykKICAgICAs
IG1fY29ubmVjdGlvblR5cGUoVW5rbm93bikKICAgICAsIG1fc2VudFN0b3JlZENyZWRlbnRpYWxz
KGZhbHNlKQorICAgICwgbV9uYXRpdmVGaWxlRGVzY3JpcHRvcigwKQogewogICAgIExPRyhOZXR3
b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIG5ldyBjbGllbnQgJXAiLCB0aGlzLCBtX2NsaWVu
dCk7CiAKQEAgLTgyLDYgKzgzLDIzIEBAIFNvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFt
SGFuZGxlKGNvbnN0IEtVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50CiAgICAgc2No
ZWR1bGVTdHJlYW1zKCk7CiB9CiAKK1NvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFu
ZGxlKGludCBuYXRpdmVGaWxlRGVzY3JpcHRvciwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBj
bGllbnQpCisgICAgOiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlKEtVUkwoKSwgY2xpZW50KQorICAg
ICwgbV9jb25uZWN0aW5nU3Vic3RhdGUoTmV3KQorICAgICwgbV9jb25uZWN0aW9uVHlwZShVbmtu
b3duKQorICAgICwgbV9zZW50U3RvcmVkQ3JlZGVudGlhbHMoZmFsc2UpCisgICAgLCBtX25hdGl2
ZUZpbGVEZXNjcmlwdG9yKG5hdGl2ZUZpbGVEZXNjcmlwdG9yKQoreworICAgIExPRyhOZXR3b3Jr
LCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIG5ldyBjbGllbnQgJXAiLCB0aGlzLCBtX2NsaWVudCk7
CisKKyAgICBjcmVhdGVTdHJlYW1zKCk7CisgICAgQVNTRVJUKCFtX3JlYWRTdHJlYW0gPT0gIW1f
d3JpdGVTdHJlYW0pOworICAgIGlmICghbV9yZWFkU3RyZWFtKQorICAgICAgICByZXR1cm47CisK
KyAgICBzY2hlZHVsZVN0cmVhbXMoKTsKK30KKwogdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnNj
aGVkdWxlU3RyZWFtcygpCiB7CiAgICAgQVNTRVJUKG1fcmVhZFN0cmVhbSk7CkBAIC0zMDUsNiAr
MzIzLDkgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OmNob29zZVByb3h5KCkKIAogdm9pZCBT
b2NrZXRTdHJlYW1IYW5kbGU6OmNyZWF0ZVN0cmVhbXMoKQogeworICAgIC8vIFRoaXMgc2hvdWxk
IGVpdGhlciBiZSBjYWxsZWQgd2l0aCBhIG1fdXJsIG9yIGEgbnVsbCB1cmwgYW5kIGEgbmF0aXZl
IGZpbGUgZGVzY3JpcHRvci4KKyAgICBBU1NFUlQoIW1fdXJsLmlzTnVsbCgpIHx8IG1fbmF0aXZl
RmlsZURlc2NyaXB0b3IpOworCiAgICAgaWYgKG1fY29ubmVjdGlvblR5cGUgPT0gVW5rbm93bikK
ICAgICAgICAgY2hvb3NlUHJveHkoKTsKIApAQCAtMzE3LDcgKzMzOCwxMiBAQCB2b2lkIFNvY2tl
dFN0cmVhbUhhbmRsZTo6Y3JlYXRlU3RyZWFtcygpCiAgICAgLy8gQ3JlYXRpbmcgc3RyZWFtcyB0
byBmaW5hbCBkZXN0aW5hdGlvbiwgbm90IHRvIHByb3h5LgogICAgIENGUmVhZFN0cmVhbVJlZiBy
ZWFkU3RyZWFtID0gMDsKICAgICBDRldyaXRlU3RyZWFtUmVmIHdyaXRlU3RyZWFtID0gMDsKLSAg
ICBDRlN0cmVhbUNyZWF0ZVBhaXJXaXRoU29ja2V0VG9Ib3N0KDAsIGhvc3QuZ2V0KCksIG1fdXJs
LnBvcnQoKSwgJnJlYWRTdHJlYW0sICZ3cml0ZVN0cmVhbSk7CisKKyAgICAvLyBDcmVhdGUgdGhl
IHN0cmVhbXMgZnJvbSB0aGUgdXJsIG9yIHRoZSBuYXRpdmUgZmlsZSBkZXNjcmlwdG9yLgorICAg
IGlmICghbV91cmwuaXNOdWxsKCkpCisgICAgICAgIENGU3RyZWFtQ3JlYXRlUGFpcldpdGhTb2Nr
ZXRUb0hvc3QoMCwgaG9zdC5nZXQoKSwgbV91cmwucG9ydCgpLCAmcmVhZFN0cmVhbSwgJndyaXRl
U3RyZWFtKTsKKyAgICBlbHNlCisgICAgICAgIENGU3RyZWFtQ3JlYXRlUGFpcldpdGhTb2NrZXQo
MCwgbV9uYXRpdmVGaWxlRGVzY3JpcHRvciwgJnJlYWRTdHJlYW0sICZ3cml0ZVN0cmVhbSk7CiAK
ICAgICBtX3JlYWRTdHJlYW0uYWRvcHRDRihyZWFkU3RyZWFtKTsKICAgICBtX3dyaXRlU3RyZWFt
LmFkb3B0Q0Yod3JpdGVTdHJlYW0pOwpAQCAtNjU3LDYgKzY4MywxMSBAQCB2b2lkIFNvY2tldFN0
cmVhbUhhbmRsZTo6cGxhdGZvcm1DbG9zZSgpCiAgICAgbV9yZWFkU3RyZWFtID0gMDsKICAgICBt
X3dyaXRlU3RyZWFtID0gMDsKIAorICAgIGlmIChtX25hdGl2ZUZpbGVEZXNjcmlwdG9yKSB7Cisg
ICAgICAgIDo6Y2xvc2UobV9uYXRpdmVGaWxlRGVzY3JpcHRvcik7CisgICAgICAgIG1fbmF0aXZl
RmlsZURlc2NyaXB0b3IgPSAwOworICAgIH0KKwogICAgIG1fY2xpZW50LT5kaWRDbG9zZSh0aGlz
KTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116534</attachid>
            <date>2011-11-24 13:09:55 -0800</date>
            <delta_ts>2011-12-05 12:52:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73090-20111124220939.patch</filename>
            <type>text/plain</type>
            <size>30395</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM3YWIyYzUxNWRmYzNh
N2ZjYWI2NGMwNzliOWJhOTMxNTA2ZmE0Zi4uMzRjMmNjMzMwN2VlZjE2OTRjYjk3MjYyOTA1Y2Nj
NTkxNTc4MzJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDExLTExLTI0ICBKb3Nl
cGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+IGFuZCBKb2NlbHluIFR1cmNvdHRlICA8
am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgR2VuZXJpYyBTZXJ2ZXIgU29j
a2V0IHRvIGJlIHVzZWQgZm9yIGEgV2ViU29ja2V0IFNlcnZlci4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMDkwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgZ2VuZXJpYyBTZXJ2ZXIgU29ja2V0
IGludGVyZmFjZSBhbmQgYW4gaW1wbGVtZW50YXRpb24gZm9yIHBsYXRmb3JtL3F0LgorICAgICAg
ICBUaGlzIGlzIG1vZGVsZWQgYWZ0ZXIgU29ja2V0U3RyZWFtSGFuZGxlLiBBIFNlcnZlciBzb2Nr
ZXQgaGFzIHR3byBvcGVyYXRpb25zLAorICAgICAgICBsaXN0ZW4ocG9ydCkgYW5kIGNsb3NlLiBX
aGVuIGFjY2VwdGluZyBhIGNvbm5lY3Rpb24gaXQgY2FsbHMgaXRzIGNsaWVudCdzCisgICAgICAg
IGRpZEFjY2VwdENvbm5lY3Rpb24gY2FsbGJhY2sgd2l0aCBhIGdlbmVyaWMgU29ja2V0U3RyZWFt
SGFuZGxlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZp
bGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lw
aToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9TZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlOjpTZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZlclNvY2tldEhhbmRsZUJhc2U6Omxpc3Rlbik6IGRlbGVnYXRlIHRv
IHBsYXRmb3JtTGlzdGVuLgorICAgICAgICAoV2ViQ29yZTo6U2VydmVyU29ja2V0SGFuZGxlQmFz
ZTo6Y2xvc2UpOiBkZWxlZ2F0ZSB0byBwbGF0Zm9ybUNsb3NlLgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvU2VydmVyU29ja2V0SGFuZGxlQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZlclNvY2tldEhhbmRsZUJhc2U6On5TZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZlclNvY2tldEhhbmRsZUJhc2U6OnN0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZlclNvY2tldEhhbmRsZUJhc2U6OnBvcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmVyU29ja2V0SGFuZGxlQmFzZTo6c2V0UG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlOjpiaW5kQWRkcmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlOjpzZXRCaW5kQWRkcmVzcyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9TZXJ2ZXJTb2NrZXRIYW5kbGVDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2ZXJTb2NrZXRIYW5kbGVDbGllbnQ6On5TZXJ2ZXJTb2NrZXRIYW5kbGVDbGll
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmVyU29ja2V0SGFuZGxlQ2xpZW50OjpkaWRBY2Nl
cHRDb25uZWN0aW9uKTogY2FsbGJhY2sgd2hlbiB0aGUgc2VydmVyIHNvY2tldCByZWNlaXZlcyBh
IGNvbm5lY3Rpb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9xdC9TZXJ2ZXJTb2NrZXRI
YW5kbGUuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9xdC9TZXJ2ZXJTb2Nr
ZXRIYW5kbGVRdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VydmVyU29ja2V0U2ln
bmFsTGlzdGVuZXI6OlNlcnZlclNvY2tldFNpZ25hbExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZlclNvY2tldFNpZ25hbExpc3RlbmVyOjpoYW5kbGVOZXdDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZlclNvY2tldEhhbmRsZTo6U2VydmVyU29ja2V0SGFuZGxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZlclNvY2tldEhhbmRsZTo6flNlcnZlclNvY2tldEhhbmRs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2ZXJTb2NrZXRIYW5kbGU6OnBsYXRmb3JtTGlzdGVu
KTogb3BlbiBhIHNvY2tldCB3aWxsaW5nIHRvIGFjY2VwdCBjb25uZWN0aW9ucy4KKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZlclNvY2tldEhhbmRsZTo6cGxhdGZvcm1DbG9zZSk6IGNsb3NlIHRoZSBz
b2NrZXQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZVByaXZhdGUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZVF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZVByaXZhdGU6OlNvY2tldFN0cmVhbUhh
bmRsZVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0
ZTo6aW5pdENvbm5lY3Rpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRs
ZTo6U29ja2V0U3RyZWFtSGFuZGxlKToKKwogMjAxMS0xMS0yMyAgUmF1bCBIdWRlYSAgPHJodWRl
YUBhZG9iZS5jb20+CiAKICAgICAgICAgRmlyc3Qgc3RlcCB0b3dhcmRzIGh0dHA6Ly93ZWJraXQu
b3JnL2IvNzAwMjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMzA5N2VkMzNiZjQ3MDI2Y2RlZjBj
Mjk2ZDM1MTM2ZWE2MDI0YTNlYS4uMTE1NTQ5NmU0MDMwNWEwYmZkZmMwNjgwNjI2MDE1Y2JlY2E1
M2EyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExNzQsNiArMTE3NCw3IEBAIFNFVChXZWJD
b3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAogICAg
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKICAgICBwbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAorICAgIHBsYXRmb3JtL25ldHdvcmsvU2Vy
dmVyU29ja2V0SGFuZGxlQmFzZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVh
bUhhbmRsZUJhc2UuY3BwCiAKICAgICBwbGF0Zm9ybS9zcWwvU1FMVmFsdWUuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBiZTE3ZDI0NjE5YWE2Nzc5ZTkyMjE4Y2YyZjI4NGZh
MDhhNzE5ZGNkLi4yMzMxMTgwNTI3MjdhY2NjNjg1ZDBhZTJkOWY3Y2Q4NzdiMWY5MWFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI4NDMsNiArMjg0Myw5IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
cXVlc3RCYXNlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXNwb25zZUJhc2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU2Vy
dmVyU29ja2V0SGFuZGxlQmFzZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU2VydmVyU29ja2V0SGFuZGxlQmFzZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1NlcnZlclNvY2tldEhhbmRsZUNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmggXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkKaW5kZXggMDk1ZjEwMmRiYzUwMzQ5YWM3OGRhZWM4MjQ5YWI4Yzk3MDdjYjgwMS4uZDgwOGZj
NzNkYzc5MWIyOTY3ZjQ1M2E0YjU4Njg1ZGFlMzU5NGMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0zNTkz
LDYgKzM1OTMsOCBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCX1NPQ0tFVFM9MSkgewog
ICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oIFwKICAgICAgICAgd2Vic29j
a2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmggXAorICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Nl
cnZlclNvY2tldEhhbmRsZUJhc2UuaCBcCisgICAgICAgIHBsYXRmb3JtL25ldHdvcmsvcXQvU2Vy
dmVyU29ja2V0SGFuZGxlLmggXAogICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0
cmVhbUhhbmRsZVByaXZhdGUuaAogCiAgICAgU09VUkNFUyArPSBcCkBAIC0zNjAzLDggKzM2MDUs
MTAgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQl9TT0NLRVRTPTEpIHsKICAgICAgICAg
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgXAogICAgICAgICB3ZWJz
b2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBcCiAgICAgICAgIHdlYnNvY2tl
dHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcCBcCisgICAgICAg
IHBsYXRmb3JtL25ldHdvcmsvU2VydmVyU29ja2V0SGFuZGxlQmFzZS5jcHAgXAogICAgICAgICBw
bGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgXAogICAgICAgICBwbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwIFwKKyAgICAgICAgcGxhdGZv
cm0vbmV0d29yay9xdC9TZXJ2ZXJTb2NrZXRIYW5kbGVRdC5jcHAgXAogICAgICAgICBwbGF0Zm9y
bS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZVF0LmNwcAogCiAgICAgIXY4IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCA0YWJjODQwZmU5NzBjNWMyYjIwMTEzMTRlZWQ2YzYyNmFmOGY4NTU2Li5m
MmQxMjEwZjU4Zjk4ZTUzNmE5MTZhYTIxYjY3MDYxYmFjMjQxZjMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CkBAIC00MTQ5LDYgKzQxNDksOSBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVzcG9uc2VCYXNlLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9T
ZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29y
ay9TZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdv
cmsvU2VydmVyU29ja2V0SGFuZGxlQ2xpZW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL25l
dHdvcmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
bmV0d29yay9Tb2NrZXRTdHJlYW1FcnJvckJhc2UuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
bmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDVjY2UwM2E3MjM4ZDY2N2U2ZTE0M2Zk
Mzc1MDUxNmQwOTI1NmI1ZTAuLjk2MTU4Mzg5NWI2OWJhNjQ3ZDZmMWY0MDRiM2Y4YTExMTYyMTY4
OWIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBA
IC0zMDEyOSw2ICszMDEyOSwxOCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xTZXJ2ZXJTb2NrZXRIYW5kbGVC
YXNlLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcU2VydmVyU29ja2V0SGFuZGxlQmFzZS5oIgorCQkJCQk+
CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1c
bmV0d29ya1xTZXJ2ZXJTb2NrZXRIYW5kbGVDbGllbnQuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4K
KwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcU29ja2V0
U3RyZWFtRXJyb3JCYXNlLmNwcCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlZGFkNTFmYjU1
MTZjNjBiMDA2YzRmOTEzNTUxNDcyMWViOGI5MjZjLi40YjhkMDI4MTIxOTk0MDM3NGM4Njg3YTZl
Y2UzMTE2ZjQ3NGE2MjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNDI0LDYgKzM0MjQsOSBAQAogCQlBNTczMkIwQjEzNkEx
NjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NzMyQjA5MTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29t
cG9uZW50cy5oICovOyB9OwogCQlBNTczMkIwRDEzNkExNkM0MDA1QzhEN0MgLyogTG9jYWxpemVk
RGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3
MzJCMEMxMzZBMTZDNDAwNUM4RDdDIC8qIExvY2FsaXplZERhdGUuaCAqLzsgfTsKIAkJQTU3MzJC
MEYxMzZBMTcxNTAwNUM4RDdDIC8qIExvY2FsaXplZERhdGVOb25lLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NzMyQjBFMTM2QTE3MTUwMDVDOEQ3
QyAvKiBMb2NhbGl6ZWREYXRlTm9uZS5jcHAgKi87IH07CisJCUE1N0RDNEM2MTJFN0M1MTIwMEM3
QTI5QyAvKiBTZXJ2ZXJTb2NrZXRIYW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0RDNEM0MTJFN0M1MTIwMEM3QTI5QyAvKiBTZXJ2
ZXJTb2NrZXRIYW5kbGVDbGllbnQuaCAqLzsgfTsKKwkJQTU3REM0REExMkU3Qzc2QzAwQzdBMjlD
IC8qIFNlcnZlclNvY2tldEhhbmRsZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0RDNEQ4MTJFN0M3NkMwMEM3QTI5QyAvKiBTZXJ2ZXJTb2Nr
ZXRIYW5kbGVCYXNlLmggKi87IH07CisJCUE1N0RDNERCMTJFN0M3NkMwMEM3QTI5QyAvKiBTZXJ2
ZXJTb2NrZXRIYW5kbGVCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1N0RDNEQ5MTJFN0M3NkMwMEM3QTI5QyAvKiBTZXJ2ZXJTb2NrZXRIYW5k
bGVCYXNlLmNwcCAqLzsgfTsKIAkJQTU5RTNDMUUxMTU4MEY1MTAwNzI5MjhFIC8qIEtleUV2ZW50
Q29kZXNJUGhvbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1OUUzQzFDMTE1ODBGNTEwMDcyOTI4RSAvKiBLZXlFdmVudENvZGVzSVBob25lLmggKi87
IH07CiAJCUE1OUUzQzFGMTE1ODBGNTEwMDcyOTI4RSAvKiBLZXlFdmVudElQaG9uZS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OUUzQzFEMTE1ODBG
NTEwMDcyOTI4RSAvKiBLZXlFdmVudElQaG9uZS5tbSAqLzsgfTsKIAkJQTVBQkI3ODcxM0I5MDRC
QzAwRjE5N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBQkI3ODYxM0I5MDRCQzAwRjE5N0UzIC8q
IExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oICovOyB9OwpAQCAtMTA2MjYsNiArMTA2MjksOSBA
QAogCQlBNTczMkIwOTEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0ZUNvbXBvbmVudHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTU3MzJCMEMxMzZBMTZDNDAwNUM4RDdDIC8qIExvY2FsaXplZERh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxpemVkRGF0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTczMkIwRTEzNkExNzE1MDA1QzhEN0MgLyog
TG9jYWxpemVkRGF0ZU5vbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTG9jYWxpemVkRGF0ZU5vbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
NTdEQzRDNDEyRTdDNTEyMDBDN0EyOUMgLyogU2VydmVyU29ja2V0SGFuZGxlQ2xpZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZlclNvY2tldEhhbmRsZUNsaWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTdEQzREODEyRTdDNzZDMDBDN0EyOUMg
LyogU2VydmVyU29ja2V0SGFuZGxlQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE1N0RDNEQ5MTJFN0M3NkMwMEM3QTI5QyAvKiBTZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZlclNvY2tldEhhbmRs
ZUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTlFM0MxQzExNTgwRjUx
MDA3MjkyOEUgLyogS2V5RXZlbnRDb2Rlc0lQaG9uZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBLZXlFdmVudENvZGVzSVBob25lLmg7IHBhdGggPSBpcGhvbmUvS2V5RXZlbnRD
b2Rlc0lQaG9uZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTlFM0MxRDExNTgw
RjUxMDA3MjkyOEUgLyogS2V5RXZlbnRJUGhvbmUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBLZXlFdmVudElQaG9uZS5tbTsgcGF0aCA9IGlwaG9uZS9LZXlFdmVu
dElQaG9uZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVBQkI3ODYxM0I5MDRC
QzAwRjE5N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE1Mzk0LDYgKzE1NDAwLDkgQEAKIAkJCQk1MTRDNzY2ODBDRTky
M0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0QmFzZS5oICovLAogCQkJCTUxNEM3NjY5MENF
OTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgKi8sCiAJCQkJNTE0Qzc2
NkEwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVzcG9uc2VCYXNlLmggKi8sCisJCQkJQTU3
REM0RDkxMkU3Qzc2QzAwQzdBMjlDIC8qIFNlcnZlclNvY2tldEhhbmRsZUJhc2UuY3BwICovLAor
CQkJCUE1N0RDNEQ4MTJFN0M3NkMwMEM3QTI5QyAvKiBTZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlLmgg
Ki8sCisJCQkJQTU3REM0QzQxMkU3QzUxMjAwQzdBMjlDIC8qIFNlcnZlclNvY2tldEhhbmRsZUNs
aWVudC5oICovLAogCQkJCTUxMEQ0QTJEMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1F
cnJvckJhc2UuY3BwICovLAogCQkJCTUxMEQ0QTJFMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRT
dHJlYW1FcnJvckJhc2UuaCAqLywKIAkJCQk1MTBENEEzMDEwMzE2NUVFMDA0OUVBNTQgLyogU29j
a2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgKi8sCkBAIC0yNDcyNyw2ICsyNDczNiw4IEBACiAJCQkJ
NTAzOEJFNDExNDcyQUQ5ODAwOTVFMEQxIC8qIENhY2hlZFNoYWRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTNFMjY0MzExNDc0ODk5MTAwNUE4NTg4IC8qIFdvcmtlckV2ZW50UXVldWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTMxMzhBOUU1MTQ3NDQzNDYwMEIwRUQxMiAvKiBTdHlsZVNoYWRlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQTU3REM0QzYxMkU3QzUxMjAwQzdBMjlDIC8qIFNlcnZlclNv
Y2tldEhhbmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU3REM0REExMkU3Qzc2QzAw
QzdBMjlDIC8qIFNlcnZlclNvY2tldEhhbmRsZUJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjc2
MDEsNiArMjc2MTIsNyBAQAogCQkJCTUwMzhCRTJGMTQ3MkFEMjMwMDk1RTBEMSAvKiBTdHlsZUNh
Y2hlZFNoYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MDM4QkU0MDE0NzJBRDk4MDA5NUUw
RDEgLyogQ2FjaGVkU2hhZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEzRTI2NDMwMTQ3NDg5
OTEwMDVBODU4OCAvKiBXb3JrZXJFdmVudFF1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1
N0RDNERCMTJFN0M3NkMwMEM3QTI5QyAvKiBTZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9T
ZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU2VydmVyU29ja2V0SGFuZGxlQmFzZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTVkN2NlYTBhNzYzNjQx
OTcyMWVmY2FhNDU2NDVjYjhiODM2ZmE5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvU2VydmVyU29ja2V0SGFuZGxlQmFzZS5jcHAKQEAgLTAsMCAr
MSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTZXJ2ZXJTb2NrZXRIYW5k
bGVCYXNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2VydmVyU29ja2V0SGFuZGxlQmFz
ZTo6U2VydmVyU29ja2V0SGFuZGxlQmFzZShTZXJ2ZXJTb2NrZXRIYW5kbGVDbGllbnQqIGNsaWVu
dCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fc3RhdGUoQ2xvc2VkKQorICAgICwg
bV9wb3J0KDApCit7CisgICAgQVNTRVJUKG1fY2xpZW50KTsKK30KKworYm9vbCBTZXJ2ZXJTb2Nr
ZXRIYW5kbGVCYXNlOjpsaXN0ZW4oKQoreworICAgIEFTU0VSVChtX3BvcnQpOworCisgICAgaWYg
KHN0YXRlKCkgPT0gTGlzdGVuaW5nKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29s
IGlzTm93TGlzdGVuaW5nID0gcGxhdGZvcm1MaXN0ZW4oKTsKKyAgICBtX3N0YXRlID0gaXNOb3dM
aXN0ZW5pbmcgPyBMaXN0ZW5pbmcgOiBDbG9zZWQ7CisgICAgcmV0dXJuIGlzTm93TGlzdGVuaW5n
OworfQorCit2b2lkIFNlcnZlclNvY2tldEhhbmRsZUJhc2U6OmNsb3NlKCkKK3sKKyAgICBpZiAo
c3RhdGUoKSA9PSBDbG9zZWQpCisgICAgICAgIHJldHVybjsKKworICAgIHBsYXRmb3JtQ2xvc2Uo
KTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9T
ZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1NlcnZlclNvY2tldEhhbmRsZUJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYWQyMTA4YzE1MGY2ZWQ1NjNj
NGNkYzIwNTEzMzU3YWY5MGEwZDE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9TZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlLmgKQEAgLTAsMCArMSw2NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgU2VydmVyU29ja2V0SGFuZGxlQmFzZV9oCisjZGVmaW5lIFNlcnZlclNvY2tl
dEhhbmRsZUJhc2VfaAorCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBTZXJ2ZXJTb2NrZXRIYW5kbGVDbGllbnQ7CisKK2NsYXNzIFNl
cnZlclNvY2tldEhhbmRsZUJhc2UgeworcHVibGljOgorICAgIGVudW0gU2VydmVyU29ja2V0U3Rh
dGUgeyBDbG9zZWQsIExpc3RlbmluZyB9OworICAgIHZpcnR1YWwgflNlcnZlclNvY2tldEhhbmRs
ZUJhc2UoKSB7IH0KKworICAgIGJvb2wgbGlzdGVuKCk7CisgICAgdm9pZCBjbG9zZSgpOworCisg
ICAgU2VydmVyU29ja2V0U3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CisK
KyAgICB1bnNpZ25lZCBzaG9ydCBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9wb3J0OyB9CisgICAg
dm9pZCBzZXRQb3J0KHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgbV9wb3J0ID0gcG9ydDsgfQorICAg
IFN0cmluZyBiaW5kQWRkcmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fYmluZEFkZHJlc3M7IH0KKyAg
ICB2b2lkIHNldEJpbmRBZGRyZXNzKGNvbnN0IFN0cmluZyYgYmluZEFkZHJlc3MpIHsgbV9iaW5k
QWRkcmVzcyA9IGJpbmRBZGRyZXNzOyB9CisKK3Byb3RlY3RlZDoKKyAgICBTZXJ2ZXJTb2NrZXRI
YW5kbGVCYXNlKFNlcnZlclNvY2tldEhhbmRsZUNsaWVudCopOworCisgICAgLy8gUGxhdGZvcm0g
c3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLgorICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUxpc3Rl
bigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DbG9zZSgpID0gMDsKKworICAgIFNl
cnZlclNvY2tldEhhbmRsZUNsaWVudCogbV9jbGllbnQ7CisgICAgU2VydmVyU29ja2V0U3RhdGUg
bV9zdGF0ZTsKKyAgICB1bnNpZ25lZCBzaG9ydCBtX3BvcnQ7CisgICAgU3RyaW5nIG1fYmluZEFk
ZHJlc3M7Cit9OworCit9CisKKyNlbmRpZiAvLyBTZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU2VydmVyU29ja2V0SGFu
ZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NlcnZlclNvY2tl
dEhhbmRsZUNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkMzI3M2IyYWI0NjlhMDY3M2Y1YzJlZGQwZmE5
OTFiODYwNTQ0ODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1NlcnZlclNvY2tldEhhbmRsZUNsaWVudC5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFNlcnZlclNvY2tldEhhbmRsZUNsaWVudF9oCisjZGVmaW5lIFNlcnZlclNvY2tldEhhbmRs
ZUNsaWVudF9oCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFNlcnZlclNvY2tldEhhbmRsZTsKK2NsYXNzIFNvY2tldFN0cmVhbUhh
bmRsZTsKKworY2xhc3MgU2VydmVyU29ja2V0SGFuZGxlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5TZXJ2ZXJTb2NrZXRIYW5kbGVDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9p
ZCBkaWRBY2NlcHRDb25uZWN0aW9uKFBhc3NSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlPikgeyB9
Cit9OworCit9CisKKyNlbmRpZiAvLyBTZXJ2ZXJTb2NrZXRIYW5kbGVDbGllbnRfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9TZXJ2ZXJTb2NrZXRIYW5k
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvU2VydmVyU29ja2V0SGFu
ZGxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDhhYmYwMzIyZWMwYjEzOWY5NmNjZWZlMDJlYjk5NDhkOGU1MzJh
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQv
U2VydmVyU29ja2V0SGFuZGxlLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAgICBDb3B5cmlnaHQg
KEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8K
KworI2lmbmRlZiBTZXJ2ZXJTb2NrZXRIYW5kbGVfaAorI2RlZmluZSBTZXJ2ZXJTb2NrZXRIYW5k
bGVfaAorCisjaW5jbHVkZSAiU2VydmVyU29ja2V0SGFuZGxlQmFzZS5oIgorCisjaW5jbHVkZSA8
UU9iamVjdD4KKyNpbmNsdWRlIDxRVGNwU2VydmVyPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFNlcnZlclNvY2tldEhhbmRsZUNsaWVudDsKKworY2xhc3MgU2VydmVyU29ja2V0U2ln
bmFsTGlzdGVuZXIgOiBwdWJsaWMgUU9iamVjdCB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAg
ICBTZXJ2ZXJTb2NrZXRTaWduYWxMaXN0ZW5lcihRVGNwU2VydmVyKiwgU2VydmVyU29ja2V0SGFu
ZGxlQ2xpZW50Kik7CisKK3ByaXZhdGUgc2xvdHM6CisgICAgdm9pZCBoYW5kbGVOZXdDb25uZWN0
aW9uKCk7CisKK3ByaXZhdGU6CisgICAgUVRjcFNlcnZlciogbV9zZXJ2ZXJTb2NrZXQ7CisgICAg
U2VydmVyU29ja2V0SGFuZGxlQ2xpZW50KiBtX2NsaWVudDsKK307CisKK2NsYXNzIFNlcnZlclNv
Y2tldEhhbmRsZSA6IHB1YmxpYyBTZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlIHsKK3B1YmxpYzoKKyAg
ICBTZXJ2ZXJTb2NrZXRIYW5kbGUoU2VydmVyU29ja2V0SGFuZGxlQ2xpZW50Kik7CisgICAgdmly
dHVhbCB+U2VydmVyU29ja2V0SGFuZGxlKCk7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29s
IHBsYXRmb3JtTGlzdGVuKCk7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ2xvc2UoKTsKKwor
ICAgIFFUY3BTZXJ2ZXIgbV9zZXJ2ZXJTb2NrZXQ7CisgICAgU2VydmVyU29ja2V0U2lnbmFsTGlz
dGVuZXIgbV9zaWduYWxMaXN0ZW5lcjsKK307CisKK30KKworI2VuZGlmIC8vIFNlcnZlclNvY2tl
dEhhbmRsZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0
L1NlcnZlclNvY2tldEhhbmRsZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvcXQvU2VydmVyU29ja2V0SGFuZGxlUXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3OGY2NjExOTM1NDhh
NWMzYjQyY2M0OTM2ODdjNGM4NjliYzQwYzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1NlcnZlclNvY2tldEhhbmRsZVF0LmNwcApAQCAtMCww
ICsxLDcxIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
bmNsdWRlICJTZXJ2ZXJTb2NrZXRIYW5kbGUuaCIKKworI2luY2x1ZGUgIlNlcnZlclNvY2tldEhh
bmRsZUNsaWVudC5oIgorI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1NlcnZlclNvY2tldFNpZ25hbExpc3RlbmVyOjpTZXJ2ZXJTb2NrZXRT
aWduYWxMaXN0ZW5lcihRVGNwU2VydmVyKiBzZXJ2ZXJTb2NrZXQsIFNlcnZlclNvY2tldEhhbmRs
ZUNsaWVudCogY2xpZW50KQorOiBtX3NlcnZlclNvY2tldChzZXJ2ZXJTb2NrZXQpCissIG1fY2xp
ZW50KGNsaWVudCkKK3sKKyAgICBjb25uZWN0KG1fc2VydmVyU29ja2V0LCBTSUdOQUwobmV3Q29u
bmVjdGlvbigpKSwgU0xPVChoYW5kbGVOZXdDb25uZWN0aW9uKCkpKTsKK30KKwordm9pZCBTZXJ2
ZXJTb2NrZXRTaWduYWxMaXN0ZW5lcjo6aGFuZGxlTmV3Q29ubmVjdGlvbigpCit7CisgICAgUVRj
cFNvY2tldCogc29ja2V0ID0gbV9zZXJ2ZXJTb2NrZXQtPm5leHRQZW5kaW5nQ29ubmVjdGlvbigp
OworICAgIEFTU0VSVChzb2NrZXQpOworICAgIG1fY2xpZW50LT5kaWRBY2NlcHRDb25uZWN0aW9u
KFNvY2tldFN0cmVhbUhhbmRsZTo6Y3JlYXRlKHNvY2tldCwgMCkpOworfQorCitTZXJ2ZXJTb2Nr
ZXRIYW5kbGU6OlNlcnZlclNvY2tldEhhbmRsZShTZXJ2ZXJTb2NrZXRIYW5kbGVDbGllbnQqIGNs
aWVudCkKKyAgICA6IFNlcnZlclNvY2tldEhhbmRsZUJhc2UoY2xpZW50KQorICAgICwgbV9zaWdu
YWxMaXN0ZW5lcigmbV9zZXJ2ZXJTb2NrZXQsIGNsaWVudCkKK3sKK30KKworU2VydmVyU29ja2V0
SGFuZGxlOjp+U2VydmVyU29ja2V0SGFuZGxlKCkKK3sKKyAgICBjbG9zZSgpOworfQorCitib29s
IFNlcnZlclNvY2tldEhhbmRsZTo6cGxhdGZvcm1MaXN0ZW4oKQoreworICAgIEFTU0VSVCghbV9i
aW5kQWRkcmVzcy5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtX3BvcnQpOworICAgIGJvb2wgc3Vj
Y2VzcyA9IG1fc2VydmVyU29ja2V0Lmxpc3RlbihRSG9zdEFkZHJlc3MobV9iaW5kQWRkcmVzcyks
IG1fcG9ydCk7CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICBMT0dfRVJST1IoIkNhbid0IG9w
ZW4gc2VydmVyIHNvY2tldCBvbiAlczolZCBbJXNdIiwgcVByaW50YWJsZShtX2JpbmRBZGRyZXNz
KSwgbV9wb3J0LCBxUHJpbnRhYmxlKG1fc2VydmVyU29ja2V0LmVycm9yU3RyaW5nKCkpKTsKKyAg
ICByZXR1cm4gc3VjY2VzczsKK30KKwordm9pZCBTZXJ2ZXJTb2NrZXRIYW5kbGU6OnBsYXRmb3Jt
Q2xvc2UoKQoreworICAgIG1fc2VydmVyU29ja2V0LmNsb3NlKCk7Cit9CisKK30KKworI2luY2x1
ZGUgIm1vY19TZXJ2ZXJTb2NrZXRIYW5kbGUuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvU29ja2V0U3RyZWFtSGFuZGxlLmgKaW5kZXggZTcyNTM0
NDA4M2MwY2Y2YzM0ZTMzZTUxYjA3MzYwNDYyNjc1NzVhNy4uOWU2ZWFjMGZjMDUwOWVkMGM0ODAy
NTZlNTU5N2U4NTQ0YTFlNzRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZS5oCkBAIC00Miw2ICs0MiwxMCBAQAog
I2Vycm9yIFRoaXMgc2hvdWxkIG9ubHkgYmUgYnVpbHQgb24gUXQKICNlbmRpZgogCitRVF9CRUdJ
Tl9OQU1FU1BBQ0UKK2NsYXNzIFFUY3BTb2NrZXQ7CitRVF9FTkRfTkFNRVNQQUNFCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwpAQCAt
NTIsNiArNTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU29ja2V0U3RyZWFt
SGFuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8U29ja2V0U3RyZWFtSGFuZGxlPiwgcHVibGljIFNv
Y2tldFN0cmVhbUhhbmRsZUJhc2UgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNvY2tldFN0
cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkpOyB9CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNv
Y2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlKFFUY3BTb2NrZXQqIHNvY2tldCwgU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50KiBjbGllbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb2NrZXRTdHJlYW1I
YW5kbGUoc29ja2V0LCBjbGllbnQpKTsgfQogCiAgICAgICAgIHZpcnR1YWwgflNvY2tldFN0cmVh
bUhhbmRsZSgpOwogCkBAIC02MSw2ICs2Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIFNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBLVVJMJiwgU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50Kik7CisgICAgICAgIFNvY2tldFN0cmVhbUhhbmRsZShRVGNwU29j
a2V0KiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CiAKICAgICAgICAgLy8gTm8gYXV0aGVu
dGljYXRpb24gZm9yIHN0cmVhbXMgcGVyIHNlLCBidXQgcHJveHkgbWF5IGFzayBmb3IgY3JlZGVu
dGlhbHMuCiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZVByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZS5o
CmluZGV4IGQwNzRmNDI3MjE5ZjAyMTg2NDgzZmZiYzRlYTliNGRkYjhjYWE3ZmMuLjMwMTkyNzkw
NDk5MjdjZDlmNWI0MmJjMzMyYTFiYjMwN2IxN2I0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvU29ja2V0U3RyZWFtSGFuZGxlUHJp
dmF0ZS5oCkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZVByaXZhdGUg
OiBwdWJsaWMgUU9iamVjdCB7CiAgICAgUV9PQkpFQ1QKIHB1YmxpYzoKICAgICBTb2NrZXRTdHJl
YW1IYW5kbGVQcml2YXRlKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IEtVUkwmKTsKKyAgICBT
b2NrZXRTdHJlYW1IYW5kbGVQcml2YXRlKFNvY2tldFN0cmVhbUhhbmRsZSosIFFUY3BTb2NrZXQq
KTsKICAgICB+U29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZSgpOwogCiBwdWJsaWMgc2xvdHM6CkBA
IC02Myw2ICs2NCw3IEBAIHB1YmxpYyBzbG90czoKICAgICB2b2lkIHNvY2tldFNzbEVycm9ycyhj
b25zdCBRTGlzdDxRU3NsRXJyb3I+Jik7CiAjZW5kaWYKIHB1YmxpYzoKKyAgICB2b2lkIGluaXRD
b25uZWN0aW9ucygpOwogICAgIFFUY3BTb2NrZXQqIG1fc29ja2V0OwogICAgIFNvY2tldFN0cmVh
bUhhbmRsZSogbV9zdHJlYW1IYW5kbGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGVRdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZVF0LmNwcAppbmRleCBk
NDYzOTA5ZTc1ZDBkZDAyYjEwZWVjYjBlYWJhYzYwOWJlMWI1Yjk5Li4yODEwMWE2NTBmMDVkNzlh
NTc0MmRhNGYzMjY2ZmRmOGI2OTlkZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZVF0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZVF0LmNwcApAQCAtNDAs
NyArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNvY2tldFN0cmVhbUhhbmRsZVBy
aXZhdGU6OlNvY2tldFN0cmVhbUhhbmRsZVByaXZhdGUoU29ja2V0U3RyZWFtSGFuZGxlKiBzdHJl
YW1IYW5kbGUsIGNvbnN0IEtVUkwmIHVybCkgOiBRT2JqZWN0KCkKK1NvY2tldFN0cmVhbUhhbmRs
ZVByaXZhdGU6OlNvY2tldFN0cmVhbUhhbmRsZVByaXZhdGUoU29ja2V0U3RyZWFtSGFuZGxlKiBz
dHJlYW1IYW5kbGUsIGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICBtX3N0cmVhbUhhbmRsZSA9IHN0
cmVhbUhhbmRsZTsKICAgICBtX3NvY2tldCA9IDA7CkBAIC01NiwxMiArNTYsNyBAQCBTb2NrZXRT
dHJlYW1IYW5kbGVQcml2YXRlOjpTb2NrZXRTdHJlYW1IYW5kbGVQcml2YXRlKFNvY2tldFN0cmVh
bUhhbmRsZSogc3RyZWFtSAogICAgIGlmICghbV9zb2NrZXQpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGNvbm5lY3QobV9zb2NrZXQsIFNJR05BTChjb25uZWN0ZWQoKSksIHRoaXMsIFNMT1Qoc29j
a2V0Q29ubmVjdGVkKCkpKTsKLSAgICBjb25uZWN0KG1fc29ja2V0LCBTSUdOQUwocmVhZHlSZWFk
KCkpLCB0aGlzLCBTTE9UKHNvY2tldFJlYWR5UmVhZCgpKSk7Ci0gICAgY29ubmVjdChtX3NvY2tl
dCwgU0lHTkFMKGRpc2Nvbm5lY3RlZCgpKSwgdGhpcywgU0xPVChzb2NrZXRDbG9zZWQoKSkpOwot
ICAgIGNvbm5lY3QobV9zb2NrZXQsIFNJR05BTChlcnJvcihRQWJzdHJhY3RTb2NrZXQ6OlNvY2tl
dEVycm9yKSksIHRoaXMsIFNMT1Qoc29ja2V0RXJyb3IoUUFic3RyYWN0U29ja2V0OjpTb2NrZXRF
cnJvcikpKTsKLSAgICBpZiAoaXNTZWN1cmUpCi0gICAgICAgIGNvbm5lY3QobV9zb2NrZXQsIFNJ
R05BTChzc2xFcnJvcnMoY29uc3QgUUxpc3Q8UVNzbEVycm9yPiYpKSwgdGhpcywgU0xPVChzb2Nr
ZXRTc2xFcnJvcnMoY29uc3QgUUxpc3Q8UVNzbEVycm9yPiYpKSk7CisgICAgaW5pdENvbm5lY3Rp
b25zKCk7CiAKICAgICB1bnNpZ25lZCBpbnQgcG9ydCA9IHVybC5oYXNQb3J0KCkgPyB1cmwucG9y
dCgpIDogKGlzU2VjdXJlID8gNDQzIDogODApOwogCkBAIC03NCwxMSArNjksMzYgQEAgU29ja2V0
U3RyZWFtSGFuZGxlUHJpdmF0ZTo6U29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZShTb2NrZXRTdHJl
YW1IYW5kbGUqIHN0cmVhbUgKICAgICAgICAgbV9zb2NrZXQtPmNvbm5lY3RUb0hvc3QoaG9zdCwg
cG9ydCk7CiB9CiAKK1NvY2tldFN0cmVhbUhhbmRsZVByaXZhdGU6OlNvY2tldFN0cmVhbUhhbmRs
ZVByaXZhdGUoU29ja2V0U3RyZWFtSGFuZGxlKiBzdHJlYW1IYW5kbGUsIFFUY3BTb2NrZXQqIHNv
Y2tldCkKK3sKKyAgICBtX3N0cmVhbUhhbmRsZSA9IHN0cmVhbUhhbmRsZTsKKyAgICBtX3NvY2tl
dCA9IHNvY2tldDsKKyAgICBpbml0Q29ubmVjdGlvbnMoKTsKK30KKwogU29ja2V0U3RyZWFtSGFu
ZGxlUHJpdmF0ZTo6flNvY2tldFN0cmVhbUhhbmRsZVByaXZhdGUoKQogewogICAgIFFfQVNTRVJU
KCEobV9zb2NrZXQgJiYgbV9zb2NrZXQtPnN0YXRlKCkgPT0gUUFic3RyYWN0U29ja2V0OjpDb25u
ZWN0ZWRTdGF0ZSkpOwogfQogCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZVByaXZhdGU6OmluaXRD
b25uZWN0aW9ucygpCit7CisgICAgY29ubmVjdChtX3NvY2tldCwgU0lHTkFMKGNvbm5lY3RlZCgp
KSwgdGhpcywgU0xPVChzb2NrZXRDb25uZWN0ZWQoKSkpOworICAgIGNvbm5lY3QobV9zb2NrZXQs
IFNJR05BTChyZWFkeVJlYWQoKSksIHRoaXMsIFNMT1Qoc29ja2V0UmVhZHlSZWFkKCkpKTsKKyAg
ICBjb25uZWN0KG1fc29ja2V0LCBTSUdOQUwoZGlzY29ubmVjdGVkKCkpLCB0aGlzLCBTTE9UKHNv
Y2tldENsb3NlZCgpKSk7CisgICAgY29ubmVjdChtX3NvY2tldCwgU0lHTkFMKGVycm9yKFFBYnN0
cmFjdFNvY2tldDo6U29ja2V0RXJyb3IpKSwgdGhpcywgU0xPVChzb2NrZXRFcnJvcihRQWJzdHJh
Y3RTb2NrZXQ6OlNvY2tldEVycm9yKSkpOworI2lmbmRlZiBRVF9OT19PUEVOU1NMCisgICAgaWYg
KHFvYmplY3RfY2FzdDxRU3NsU29ja2V0Kj4obV9zb2NrZXQpKQorICAgICAgICBjb25uZWN0KG1f
c29ja2V0LCBTSUdOQUwoc3NsRXJyb3JzKGNvbnN0IFFMaXN0PFFTc2xFcnJvcj4mKSksIHRoaXMs
IFNMT1Qoc29ja2V0U3NsRXJyb3JzKGNvbnN0IFFMaXN0PFFTc2xFcnJvcj4mKSkpOworI2VuZGlm
CisKKyAgICAvLyBDaGVjayBmb3IgbWlzc2VkIHNpZ25hbHMgYW5kIGNhbGwgdGhlIHNsb3RzIGFz
eW5jaHJvbm91c2x5IHRvIGFsbG93IGEgY2xpZW50IHRvIGJlIHNldCBmaXJzdC4KKyAgICBpZiAo
bV9zb2NrZXQtPnN0YXRlKCkgPj0gUUFic3RyYWN0U29ja2V0OjpDb25uZWN0ZWRTdGF0ZSkKKyAg
ICAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCAic29ja2V0Q29ubmVjdGVkIiwg
UXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworICAgIGlmIChtX3NvY2tldC0+Ynl0ZXNBdmFpbGFibGUo
KSkKKyAgICAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCAic29ja2V0UmVhZHlS
ZWFkIiwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworfQorCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRs
ZVByaXZhdGU6OnNvY2tldENvbm5lY3RlZCgpCiB7CiAgICAgaWYgKG1fc3RyZWFtSGFuZGxlICYm
IG1fc3RyZWFtSGFuZGxlLT5jbGllbnQoKSkgewpAQCAtMTA2LDcgKzEyNiw3IEBAIGludCBTb2Nr
ZXRTdHJlYW1IYW5kbGVQcml2YXRlOjpzZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW4pCiAK
IHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZTo6Y2xvc2UoKQogewotICAgIGlmIChtX3N0
cmVhbUhhbmRsZS0+bV9zdGF0ZSA9PSBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpDb25uZWN0aW5n
KSB7CisgICAgaWYgKG1fc3RyZWFtSGFuZGxlICYmIG1fc3RyZWFtSGFuZGxlLT5tX3N0YXRlID09
IFNvY2tldFN0cmVhbUhhbmRsZUJhc2U6OkNvbm5lY3RpbmcpIHsKICAgICAgICAgbV9zb2NrZXQt
PmFib3J0KCk7CiAgICAgICAgIG1fc3RyZWFtSGFuZGxlLT5jbGllbnQoKS0+ZGlkQ2xvc2VTb2Nr
ZXRTdHJlYW0obV9zdHJlYW1IYW5kbGUpOwogICAgICAgICByZXR1cm47CkBAIC0xNjYsNiArMTg2
LDEzIEBAIFNvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IEtVUkwm
IHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50CiAgICAgbV9wID0gbmV3IFNvY2tldFN0cmVh
bUhhbmRsZVByaXZhdGUodGhpcywgdXJsKTsKIH0KIAorU29ja2V0U3RyZWFtSGFuZGxlOjpTb2Nr
ZXRTdHJlYW1IYW5kbGUoUVRjcFNvY2tldCogc29ja2V0LCBTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQqIGNsaWVudCkKKyAgICA6IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UoS1VSTCgpLCBjbGllbnQp
Cit7CisgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgbmV3IGNsaWVudCAl
cCIsIHRoaXMsIG1fY2xpZW50KTsKKyAgICBtX3AgPSBuZXcgU29ja2V0U3RyZWFtSGFuZGxlUHJp
dmF0ZSh0aGlzLCBzb2NrZXQpOworfQorCiBTb2NrZXRTdHJlYW1IYW5kbGU6On5Tb2NrZXRTdHJl
YW1IYW5kbGUoKQogewogICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIGRl
bGV0ZSIsIHRoaXMpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>