<?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>134028</bug_id>
          
          <creation_ts>2014-06-18 06:25:19 -0700</creation_ts>
          <short_desc>[GTK] XPathNSResolver should be exposed as an interface instead of as a class</short_desc>
          <delta_ts>2014-07-02 00:04:58 -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>Bindings</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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>133724</blocked>
    
    <blocked>134297</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1016442</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-06-18 06:25:19 -0700</bug_when>
    <thetext>Similar to the NodeFilter case (see bug #93002), but in this case the XPathNSResolver interface can be implemented internally or by the application. So we need to expose it as an interface, but we also need to wrap NativeXPathNSResolver internally to provide a default implementation for methods that create a XPathNSResolver.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017924</commentid>
    <comment_count>1</comment_count>
      <attachid>233696</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-06-24 05:54:41 -0700</bug_when>
    <thetext>Created attachment 233696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018303</commentid>
    <comment_count>2</comment_count>
      <attachid>233804</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-06-25 04:52:20 -0700</bug_when>
    <thetext>Created attachment 233804
Updated to build on current git master</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019634</commentid>
    <comment_count>3</comment_count>
      <attachid>233804</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2014-07-01 09:03:33 -0700</bug_when>
    <thetext>Comment on attachment 233804
Updated to build on current git master

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019915</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-07-02 00:04:58 -0700</bug_when>
    <thetext>Committed r170700: &lt;http://trac.webkit.org/changeset/170700&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233696</attachid>
            <date>2014-06-24 05:54:41 -0700</date>
            <delta_ts>2014-06-25 04:52:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wkdom-ns-resolver.diff</filename>
            <type>text/plain</type>
            <size>36767</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxNmJkMzMwLi5lNTcxNGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDUg
QEAKIDIwMTQtMDYtMjQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIFhQYXRoTlNSZXNvbHZlciBzaG91bGQgYmUgZXhwb3NlZCBhcyBh
biBpbnRlcmZhY2UgaW5zdGVhZCBvZiBhcyBhIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQwMjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgY3VzdG9tIGltcGxlbWVudGF0aW9uIG9mIFdl
YktpdERPTVhQYXRoTlNSZXNvbHZlciB0byBleHBvc2UgaXQKKyAgICAgICAgYXMgYW4gaW50ZXJm
YWNlIGluc3RlYWQgb2YgYSBjbGFzcy4gSXQgYWxzbyBpbmNsdWRlcyBhbiBpbnRlcm5hbAorICAg
ICAgICBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBpbnRlcmZhY2UgdG8gc3VwcG9ydCBt
ZXRob2RzIHRoYXQKKyAgICAgICAgY3JlYXRlIGEgWFBhdGhOU1Jlc29sdmVyIHVzaW5nIHRoZSBu
YXRpdmUgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogQWRk
IG5ldyBmaWxlcyB0byBjb21waWxhdGlvbi4KKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L0dP
YmplY3RYUGF0aE5TUmVzb2x2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdPYmpl
Y3RYUGF0aE5TUmVzb2x2ZXI6On5HT2JqZWN0WFBhdGhOU1Jlc29sdmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdPYmplY3RYUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5hbWVzcGFjZVVSSSk6IENhbGwK
KyAgICAgICAgd2Via2l0X2RvbV94cGF0aF9uc19yZXNvbHZlcl9sb29rdXBfbmFtZXNwYWNlX3Vy
aSgpLgorICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvR09iamVjdFhQYXRoTlNSZXNvbHZlci5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdPYmplY3RYUGF0aE5TUmVzb2x2ZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHT2JqZWN0WFBhdGhOU1Jlc29sdmVyOjpHT2JqZWN0WFBh
dGhOU1Jlc29sdmVyKTogQ3JlYXRlCisgICAgICAgIGEgbmV3IEdPYmplY3RYUGF0aE5TUmVzb2x2
ZXIgZm9yIHRoZSBnaXZlbiBXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIuCisgICAgICAgICogYmlu
ZGluZ3MvZ29iamVjdC9XZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKHdlYmtpdF9kb21feHBhdGhfbnNfcmVzb2x2ZXJfZGVmYXVsdF9pbml0KToKKyAgICAgICAg
KHdlYmtpdF9kb21feHBhdGhfbnNfcmVzb2x2ZXJfbG9va3VwX25hbWVzcGFjZV91cmkpOgorICAg
ICAgICAod2Via2l0RE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyRmluYWxpemUpOgorICAgICAgICAo
d2Via2l0RE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyQ29uc3RydWN0b3IpOgorICAgICAgICAod2Vi
a2l0X2RvbV9uYXRpdmVfeHBhdGhfbnNfcmVzb2x2ZXJfaW5pdCk6CisgICAgICAgICh3ZWJraXRf
ZG9tX25hdGl2ZV94cGF0aF9uc19yZXNvbHZlcl9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtp
dERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlckxvb2t1cE5hbWVzcGFjZVVSSSk6CisgICAgICAgICh3
ZWJraXRET01YUGF0aE5TUmVzb2x2ZXJJZmFjZUluaXQpOgorICAgICAgICAoV2ViS2l0Ojpjb3Jl
KTogUmV0dXJuIHRoZSBuYXRpdmUgWFBhdGhOU1Jlc29sdmVyIHdoZW4gdXNpbmcgdGhlCisgICAg
ICAgIGludGVybmFsIGltcGxlbWVudGF0aW9uIG9yIGNyZWF0ZSBhIGN1c3RvbSBYUGF0aE5TUmVz
b2x2ZXIgd2hlbgorICAgICAgICB1c2luZyBhIHVzZXIgcHJvdmlkZWQgV2ViS2l0RE9NWFBhdGhO
U1Jlc29sdmVyLgorICAgICAgICAoV2ViS2l0OjpraXQpOgorICAgICAgICAqIGJpbmRpbmdzL2dv
YmplY3QvV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRp
bmdzL2dvYmplY3QvV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyUHJpdmF0ZS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtOgorICAgICAg
ICAoR2VuZXJhdGVGdW5jdGlvbik6IEFkZCBleGNlcHRpb25zIGZvciBYUGF0aE5TUmVzb2x2ZXIg
c2luY2UKKyAgICAgICAgdGhlIGNvcmUgbWV0aG9kIHJldHVybnMgYSBQYXNzUmVmUHRyLgorCisy
MDE0LTA2LTI0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwog
ICAgICAgICBVbnJldmlld2VkLiBVcGRhdGUgR09iamVjdCBET00gYmluZGluZ3MgdGVzdCByZXN1
bHRzIGFmdGVyIHIxNzAzNTEuCiAKICAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0VHlwZWRlZnMuY3BwOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpp
bmRleCA5ZDRmMDFjLi40MDJlYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtNDM2
LDEyICs0MzYsMTQgQEAgbGlzdChBUFBFTkQgR09iamVjdERPTUJpbmRpbmdzX1NPVVJDRVMKICAg
ICBiaW5kaW5ncy9nb2JqZWN0L0RPTU9iamVjdENhY2hlLmNwcAogICAgIGJpbmRpbmdzL2dvYmpl
Y3QvR09iamVjdEV2ZW50TGlzdGVuZXIuY3BwCiAgICAgYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0
Tm9kZUZpbHRlckNvbmRpdGlvbi5jcHAKKyAgICBiaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RYUGF0
aE5TUmVzb2x2ZXIuY3BwCiAgICAgYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01DdXN0b20uY3Bw
CiAgICAgYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01FdmVudFRhcmdldC5jcHAKICAgICBiaW5k
aW5ncy9nb2JqZWN0L1dlYktpdERPTUhUTUxQcml2YXRlLmNwcAogICAgIGJpbmRpbmdzL2dvYmpl
Y3QvV2ViS2l0RE9NTm9kZUZpbHRlci5jcHAKICAgICBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERP
TU9iamVjdC5jcHAKICAgICBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTVByaXZhdGUuY3BwCisg
ICAgYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIuY3BwCiAgICAgJHtE
RVJJVkVEX1NPVVJDRVNfR09CSkVDVF9ET01fQklORElOR1NfRElSfS93ZWJraXRkb21kZWZpbmVz
LmgKICAgICAke0RFUklWRURfU09VUkNFU19HT0JKRUNUX0RPTV9CSU5ESU5HU19ESVJ9L3dlYmtp
dGRvbWRlZmluZXMtdW5zdGFibGUuaAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0dPQkpFQ1RfRE9N
X0JJTkRJTkdTX0RJUn0vd2Via2l0ZG9tLmgKQEAgLTU0Nyw3ICs1NDksNiBAQCBsaXN0KEFQUEVO
RCBHT2JqZWN0RE9NQmluZGluZ3NTdGFibGVfSURMX0ZJTEVTCiAgICAgcGFnZS9ET01XaW5kb3cu
aWRsCiAKICAgICB4bWwvWFBhdGhFeHByZXNzaW9uLmlkbAotICAgIHhtbC9YUGF0aE5TUmVzb2x2
ZXIuaWRsCiAgICAgeG1sL1hQYXRoUmVzdWx0LmlkbAogKQogCkBAIC02NDksNyArNjUwLDcgQEAg
aWYgKEVOQUJMRV9RVU9UQSkKICAgICApCiBlbmRpZiAoKQogCi1zZXQoR09iamVjdERPTUJpbmRp
bmdzU3RhYmxlX0NMQVNTX0xJU1QgQ3VzdG9tIEV2ZW50VGFyZ2V0IE5vZGVGaWx0ZXIgT2JqZWN0
KQorc2V0KEdPYmplY3RET01CaW5kaW5nc1N0YWJsZV9DTEFTU19MSVNUIEN1c3RvbSBFdmVudFRh
cmdldCBOb2RlRmlsdGVyIE9iamVjdCBYUGF0aE5TUmVzb2x2ZXIpCiBzZXQoR09iamVjdERPTUJp
bmRpbmdzU3RhYmxlX0lOU1RBTExFRF9IRUFERVJTCiAgICAgICR7REVSSVZFRF9TT1VSQ0VTX0dP
QkpFQ1RfRE9NX0JJTkRJTkdTX0RJUn0vd2Via2l0ZG9tZGVmaW5lcy5oCiAgICAgICR7REVSSVZF
RF9TT1VSQ0VTX0dPQkpFQ1RfRE9NX0JJTkRJTkdTX0RJUn0vd2Via2l0ZG9tLmgKQEAgLTY1Nyw2
ICs2NTgsNyBAQCBzZXQoR09iamVjdERPTUJpbmRpbmdzU3RhYmxlX0lOU1RBTExFRF9IRUFERVJT
CiAgICAgICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NRXZlbnRUYXJn
ZXQuaAogICAgICAke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTU5vZGVG
aWx0ZXIuaAogICAgICAke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTU9i
amVjdC5oCisgICAgICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NWFBh
dGhOU1Jlc29sdmVyLmgKICkKIAogc2V0KEdPYmplY3RET01CaW5kaW5nc1Vuc3RhYmxlX0lOU1RB
TExFRF9IRUFERVJTCkBAIC03NTUsNiArNzU3LDcgQEAgbGlzdChSRU1PVkVfSVRFTSBHT2JqZWN0
RE9NQmluZGluZ3NfR0lSX0hFQURFUlMKICAgICAgYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01F
dmVudFRhcmdldC5oCiAgICAgIGJpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NTm9kZUZpbHRlci5o
CiAgICAgIGJpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NT2JqZWN0LmgKKyAgICAgYmluZGluZ3Mv
Z29iamVjdC9XZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIuaAogKQogCiAjIFByb3BhZ2F0ZSB0aGlz
IHZhcmlhYmxlIHRvIHRoZSBwYXJlbnQgc2NvcGUsIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgaW4g
b3RoZXIgcGFydHMgb2YgdGhlIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvZ29iamVjdC9HT2JqZWN0WFBhdGhOU1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2dvYmplY3QvR09iamVjdFhQYXRoTlNSZXNvbHZlci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJmYWY0MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdFhQYXRoTlNSZXNvbHZlci5jcHAKQEAg
LTAsMCArMSwzNiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICog
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rv
biwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJHT2JqZWN0WFBhdGhOU1Jlc29sdmVyLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworR09iamVjdFhQYXRoTlNSZXNvbHZlcjo6fkdPYmplY3RYUGF0aE5TUmVzb2x2ZXIo
KQoreworfQorCitTdHJpbmcgR09iamVjdFhQYXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNl
VVJJKGNvbnN0IFN0cmluZyYgcHJlZml4KQoreworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4
KHdlYmtpdF9kb21feHBhdGhfbnNfcmVzb2x2ZXJfbG9va3VwX25hbWVzcGFjZV91cmkobV9yZXNv
bHZlci5nZXQoKSwgcHJlZml4LnV0ZjgoKS5kYXRhKCkpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2Jq
ZWN0WFBhdGhOU1Jlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dP
YmplY3RYUGF0aE5TUmVzb2x2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li42NmMxMWFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29i
amVjdC9HT2JqZWN0WFBhdGhOU1Jlc29sdmVyLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqICBD
b3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90
LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQor
ICovCisKKyNpZm5kZWYgR09iamVjdFhQYXRoTlNSZXNvbHZlcl9oCisjZGVmaW5lIEdPYmplY3RY
UGF0aE5TUmVzb2x2ZXJfaAorCisjaW5jbHVkZSAiV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyLmgi
CisjaW5jbHVkZSAiWFBhdGhOU1Jlc29sdmVyLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgR09iamVjdFhQYXRoTlNSZXNvbHZlciA6IHB1YmxpYyBYUGF0aE5TUmVzb2x2
ZXIgeworcHVibGljOgorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8R09iamVjdFhQYXRoTlNSZXNv
bHZlcj4gY3JlYXRlKFdlYktpdERPTVhQYXRoTlNSZXNvbHZlciogcmVzb2x2ZXIpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdPYmplY3RYUGF0aE5TUmVzb2x2ZXIocmVzb2x2
ZXIpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5HT2JqZWN0WFBhdGhOU1Jlc29sdmVyKCk7Cisg
ICAgdmlydHVhbCBTdHJpbmcgbG9va3VwTmFtZXNwYWNlVVJJKGNvbnN0IFN0cmluZyYgcHJlZml4
KTsKKworcHJpdmF0ZToKKyAgICBHT2JqZWN0WFBhdGhOU1Jlc29sdmVyKFdlYktpdERPTVhQYXRo
TlNSZXNvbHZlciogcmVzb2x2ZXIpCisgICAgICAgIDogbV9yZXNvbHZlcihyZXNvbHZlcikKKyAg
ICB7CisgICAgfQorCisgICAgR1JlZlB0cjxXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXI+IG1fcmVz
b2x2ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBHT2JqZWN0
WFBhdGhOU1Jlc29sdmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dv
YmplY3QvV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2dvYmplY3QvV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4zM2Q4YmYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIuY3BwCkBAIC0w
LDAgKzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgor
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24s
IE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyLmgiCisKKyNpbmNsdWRlICJET01PYmplY3RDYWNo
ZS5oIgorI2luY2x1ZGUgIkdPYmplY3RYUGF0aE5TUmVzb2x2ZXIuaCIKKyNpbmNsdWRlICJKU01h
aW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRET01PYmplY3QuaCIKKyNpbmNs
dWRlICJXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJQcml2YXRlLmgiCisjaW5jbHVkZSAiZ29iamVj
dC9Db252ZXJ0VG9VVEY4U3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKwordHlwZWRlZiBXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJJZmFj
ZSBXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJJbnRlcmZhY2U7CisKK0dfREVGSU5FX0lOVEVSRkFD
RShXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIsIHdlYmtpdF9kb21feHBhdGhfbnNfcmVzb2x2ZXIs
IEdfVFlQRV9PQkpFQ1QpCisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21feHBhdGhfbnNfcmVzb2x2
ZXJfZGVmYXVsdF9pbml0KFdlYktpdERPTVhQYXRoTlNSZXNvbHZlcklmYWNlKikKK3sKK30KKwor
Y2hhciogd2Via2l0X2RvbV94cGF0aF9uc19yZXNvbHZlcl9sb29rdXBfbmFtZXNwYWNlX3VyaShX
ZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIqIHJlc29sdmVyLCBjb25zdCBjaGFyKiBwcmVmaXgpCit7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19YUEFUSF9OU19SRVNPTFZF
UihyZXNvbHZlciksIG51bGxwdHIpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHByZWZpeCwg
bnVsbHB0cik7CisKKyAgICByZXR1cm4gV0VCS0lUX0RPTV9YUEFUSF9OU19SRVNPTFZFUl9HRVRf
SUZBQ0UocmVzb2x2ZXIpLT5sb29rdXBfbmFtZXNwYWNlX3VyaShyZXNvbHZlciwgcHJlZml4KTsK
K30KKworLy8gV2ViS2l0RE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyLgorc3RydWN0IF9XZWJLaXRE
T01OYXRpdmVYUGF0aE5TUmVzb2x2ZXIgeworICAgIFdlYktpdERPTU9iamVjdCBwYXJlbnQ7Cit9
OworCitzdHJ1Y3QgX1dlYktpdERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlckNsYXNzIHsKKyAgICBX
ZWJLaXRET01PYmplY3RDbGFzcyBwYXJlbnRDbGFzczsKK307CisKK3R5cGVkZWYgc3RydWN0IF9X
ZWJLaXRET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXJQcml2YXRlIHsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6WFBhdGhOU1Jlc29sdmVyPiBjb3JlT2JqZWN0OworfSBXZWJLaXRET01OYXRpdmVYUGF0aE5T
UmVzb2x2ZXJQcml2YXRlOworCisjZGVmaW5lIFdFQktJVF9ET01fTkFUSVZFX1hQQVRIX05TX1JF
U09MVkVSX0dFVF9QUklWQVRFKG9iaikgR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKG9iaiwg
V0VCS0lUX0RPTV9UWVBFX05BVElWRV9YUEFUSF9OU19SRVNPTFZFUiwgV2ViS2l0RE9NTmF0aXZl
WFBhdGhOU1Jlc29sdmVyUHJpdmF0ZSkKKworc3RhdGljIHZvaWQgd2Via2l0RE9NWFBhdGhOU1Jl
c29sdmVySWZhY2VJbml0KFdlYktpdERPTVhQYXRoTlNSZXNvbHZlcklmYWNlKik7CisKK0dfREVG
SU5FX1RZUEVfV0lUSF9DT0RFKFdlYktpdERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciwgd2Via2l0
X2RvbV9uYXRpdmVfeHBhdGhfbnNfcmVzb2x2ZXIsIFdFQktJVF9UWVBFX0RPTV9PQkpFQ1QsIEdf
SU1QTEVNRU5UX0lOVEVSRkFDRShXRUJLSVRfRE9NX1RZUEVfWFBBVEhfTlNfUkVTT0xWRVIsIHdl
YmtpdERPTVhQYXRoTlNSZXNvbHZlcklmYWNlSW5pdCkpCisKK3N0YXRpYyB2b2lkIHdlYmtpdERP
TU5hdGl2ZVhQYXRoTlNSZXNvbHZlckZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBX
ZWJLaXRET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXJQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9O
QVRJVkVfWFBBVEhfTlNfUkVTT0xWRVJfR0VUX1BSSVZBVEUob2JqZWN0KTsKKyAgICBwcml2LT5+
V2ViS2l0RE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyUHJpdmF0ZSgpOworICAgIEdfT0JKRUNUX0NM
QVNTKHdlYmtpdF9kb21fbmF0aXZlX3hwYXRoX25zX3Jlc29sdmVyX3BhcmVudF9jbGFzcyktPmZp
bmFsaXplKG9iamVjdCk7Cit9CisKK3N0YXRpYyBHT2JqZWN0KiB3ZWJraXRET01OYXRpdmVYUGF0
aE5TUmVzb2x2ZXJDb25zdHJ1Y3RvcihHVHlwZSB0eXBlLCBndWludCBjb25zdHJ1Y3RQcm9wZXJ0
aWVzQ291bnQsIEdPYmplY3RDb25zdHJ1Y3RQYXJhbSogY29uc3RydWN0UHJvcGVydGllcykKK3sK
KyAgICBHT2JqZWN0KiBvYmplY3QgPSBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX25hdGl2ZV94
cGF0aF9uc19yZXNvbHZlcl9wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3Rvcih0eXBlLCBjb25zdHJ1
Y3RQcm9wZXJ0aWVzQ291bnQsIGNvbnN0cnVjdFByb3BlcnRpZXMpOworICAgIFdlYktpdERPTU5h
dGl2ZVhQYXRoTlNSZXNvbHZlclByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX05BVElWRV9YUEFU
SF9OU19SRVNPTFZFUl9HRVRfUFJJVkFURShvYmplY3QpOworICAgIHByaXYtPmNvcmVPYmplY3Qg
PSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpYUGF0aE5TUmVzb2x2ZXIqPihXRUJLSVRfRE9NX09CSkVD
VChvYmplY3QpLT5jb3JlT2JqZWN0KTsKKyAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpwdXQo
cHJpdi0+Y29yZU9iamVjdC5nZXQoKSwgb2JqZWN0KTsKKyAgICByZXR1cm4gb2JqZWN0OworfQor
CitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX25hdGl2ZV94cGF0aF9uc19yZXNvbHZlcl9pbml0KFdl
YktpdERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciogcmVzb2x2ZXIpCit7CisgICAgV2ViS2l0RE9N
TmF0aXZlWFBhdGhOU1Jlc29sdmVyUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fTkFUSVZFX1hQ
QVRIX05TX1JFU09MVkVSX0dFVF9QUklWQVRFKHJlc29sdmVyKTsKKyAgICBuZXcgKHByaXYpIFdl
YktpdERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlclByaXZhdGUoKTsKK30KKworc3RhdGljIHZvaWQg
d2Via2l0X2RvbV9uYXRpdmVfeHBhdGhfbnNfcmVzb2x2ZXJfY2xhc3NfaW5pdChXZWJLaXRET01O
YXRpdmVYUGF0aE5TUmVzb2x2ZXJDbGFzcyoga2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBn
b2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAgZ190eXBlX2NsYXNzX2Fk
ZF9wcml2YXRlKGdvYmplY3RDbGFzcywgc2l6ZW9mKFdlYktpdERPTU5hdGl2ZVhQYXRoTlNSZXNv
bHZlclByaXZhdGUpKTsKKyAgICBnb2JqZWN0Q2xhc3MtPmNvbnN0cnVjdG9yID0gd2Via2l0RE9N
TmF0aXZlWFBhdGhOU1Jlc29sdmVyQ29uc3RydWN0b3I7CisgICAgZ29iamVjdENsYXNzLT5maW5h
bGl6ZSA9IHdlYmtpdERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlckZpbmFsaXplOworfQorCitzdGF0
aWMgY2hhciogd2Via2l0RE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyTG9va3VwTmFtZXNwYWNlVVJJ
KFdlYktpdERPTVhQYXRoTlNSZXNvbHZlciogcmVzb2x2ZXIsIGNvbnN0IGNoYXIqIHByZWZpeCkK
K3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19OQVRJVkVfWFBBVEhfTlNfUkVTT0xWRVIocmVz
b2x2ZXIpLCBudWxscHRyKTsKKworICAgIHJldHVybiBjb252ZXJ0VG9VVEY4U3RyaW5nKFdlYktp
dDo6Y29yZShyZXNvbHZlciktPmxvb2t1cE5hbWVzcGFjZVVSSShXVEY6OlN0cmluZzo6ZnJvbVVU
RjgocHJlZml4KSkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRET01YUGF0aE5TUmVzb2x2ZXJJ
ZmFjZUluaXQoV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVySWZhY2UqIGlmYWNlKQoreworICAgIGlm
YWNlLT5sb29rdXBfbmFtZXNwYWNlX3VyaSA9IHdlYmtpdERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZl
ckxvb2t1cE5hbWVzcGFjZVVSSTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQ
dHI8V2ViQ29yZTo6WFBhdGhOU1Jlc29sdmVyPiBjb3JlKFdlYktpdERPTVhQYXRoTlNSZXNvbHZl
ciogeFBhdGhOU1Jlc29sdmVyKQoreworICAgIGlmICgheFBhdGhOU1Jlc29sdmVyKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlZlB0cjxXZWJDb3JlOjpYUGF0aE5TUmVzb2x2ZXI+
IGNvcmVSZXNvbHZlcjsKKyAgICBpZiAoV0VCS0lUX0RPTV9JU19OQVRJVkVfWFBBVEhfTlNfUkVT
T0xWRVIoeFBhdGhOU1Jlc29sdmVyKSkKKyAgICAgICAgY29yZVJlc29sdmVyID0gY29yZShXRUJL
SVRfRE9NX05BVElWRV9YUEFUSF9OU19SRVNPTFZFUih4UGF0aE5TUmVzb2x2ZXIpKTsKKyAgICBl
bHNlCisgICAgICAgIGNvcmVSZXNvbHZlciA9IFdlYkNvcmU6OkdPYmplY3RYUGF0aE5TUmVzb2x2
ZXI6OmNyZWF0ZSh4UGF0aE5TUmVzb2x2ZXIpOworICAgIHJldHVybiBjb3JlUmVzb2x2ZXIucmVs
ZWFzZSgpOworfQorCitXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIqIGtpdChXZWJDb3JlOjpYUGF0
aE5TUmVzb2x2ZXIqIGNvcmVYUGF0aE5TUmVzb2x2ZXIpCit7CisgICAgaWYgKCFjb3JlWFBhdGhO
U1Jlc29sdmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChncG9pbnRlciBy
ZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0KGNvcmVYUGF0aE5TUmVzb2x2ZXIpKQorICAgICAgICBy
ZXR1cm4gV0VCS0lUX0RPTV9YUEFUSF9OU19SRVNPTFZFUihyZXQpOworCisgICAgcmV0dXJuIFdF
QktJVF9ET01fWFBBVEhfTlNfUkVTT0xWRVIoZ19vYmplY3RfbmV3KFdFQktJVF9ET01fVFlQRV9O
QVRJVkVfWFBBVEhfTlNfUkVTT0xWRVIsICJjb3JlLW9iamVjdCIsIGNvcmVYUGF0aE5TUmVzb2x2
ZXIsIG51bGxwdHIpKTsKK30KKworV2ViQ29yZTo6WFBhdGhOU1Jlc29sdmVyKiBjb3JlKFdlYktp
dERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciogeFBhdGhOU1Jlc29sdmVyKQoreworICAgIHJldHVy
biB4UGF0aE5TUmVzb2x2ZXIgPyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpYUGF0aE5TUmVzb2x2ZXIq
PihXRUJLSVRfRE9NX09CSkVDVCh4UGF0aE5TUmVzb2x2ZXIpLT5jb3JlT2JqZWN0KSA6IG51bGxw
dHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmNjMzk3MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVy
LmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMu
TC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
IEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpZm5kZWYgV2ViS2l0RE9NWFBh
dGhOU1Jlc29sdmVyX2gKKyNkZWZpbmUgV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyX2gKKworI2lu
Y2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbWRlZmlu
ZXMuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9ET01fVFlQRV9YUEFUSF9O
U19SRVNPTFZFUiAgICAgICAgICAgICh3ZWJraXRfZG9tX3hwYXRoX25zX3Jlc29sdmVyX2dldF90
eXBlICgpKQorI2RlZmluZSBXRUJLSVRfRE9NX1hQQVRIX05TX1JFU09MVkVSKG9iaikgICAgICAg
ICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmopLCBXRUJLSVRfRE9NX1RZUEVf
WFBBVEhfTlNfUkVTT0xWRVIsIFdlYktpdERPTVhQYXRoTlNSZXNvbHZlcikpCisjZGVmaW5lIFdF
QktJVF9ET01fWFBBVEhfTlNfUkVTT0xWRVJfQ0xBU1Mob2JqKSAgICAgIChHX1RZUEVfQ0hFQ0tf
Q0xBU1NfQ0FTVCAoKG9iaiksIFdFQktJVF9ET01fVFlQRV9YUEFUSF9OU19SRVNPTFZFUiwgV2Vi
S2l0RE9NWFBhdGhOU1Jlc29sdmVySWZhY2UpKQorI2RlZmluZSBXRUJLSVRfRE9NX0lTX1hQQVRI
X05TX1JFU09MVkVSKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChv
YmopLCBXRUJLSVRfRE9NX1RZUEVfWFBBVEhfTlNfUkVTT0xWRVIpKQorI2RlZmluZSBXRUJLSVRf
RE9NX1hQQVRIX05TX1JFU09MVkVSX0dFVF9JRkFDRShvYmopICAoR19UWVBFX0lOU1RBTkNFX0dF
VF9JTlRFUkZBQ0UgKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfWFBBVEhfTlNfUkVTT0xWRVIsIFdl
YktpdERPTVhQYXRoTlNSZXNvbHZlcklmYWNlKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERP
TVhQYXRoTlNSZXNvbHZlcklmYWNlIFdlYktpdERPTVhQYXRoTlNSZXNvbHZlcklmYWNlOworCitz
dHJ1Y3QgX1dlYktpdERPTVhQYXRoTlNSZXNvbHZlcklmYWNlIHsKKyAgICBHVHlwZUludGVyZmFj
ZSBnSWZhY2U7CisKKyAgICAvKiB2aXJ0dWFsIHRhYmxlICovCisgICAgZ2NoYXIgKigqIGxvb2t1
cF9uYW1lc3BhY2VfdXJpKShXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIgKnJlc29sdmVyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAg
ICpwcmVmaXgpOworCisgICAgdm9pZCAoKl93ZWJraXRkb21fcmVzZXJ2ZWQwKSAodm9pZCk7Cisg
ICAgdm9pZCAoKl93ZWJraXRkb21fcmVzZXJ2ZWQxKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJr
aXRkb21fcmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRkb21fcmVzZXJ2ZWQz
KSAodm9pZCk7Cit9OworCisKK1dFQktJVF9BUEkgR1R5cGUgd2Via2l0X2RvbV94cGF0aF9uc19y
ZXNvbHZlcl9nZXRfdHlwZSh2b2lkKSBHX0dOVUNfQ09OU1Q7CisKKy8qKgorICogd2Via2l0X2Rv
bV94cGF0aF9uc19yZXNvbHZlcl9sb29rdXBfbmFtZXNwYWNlX3VyaToKKyAqIEByZXNvbHZlcjog
QSAjV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyCisgKiBAcHJlZml4OiBUaGUgcHJlZml4IHRvIGxv
b2t1cAorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogYSAjZ2NoYXIKKyAqLworV0VC
S0lUX0FQSSBnY2hhciAqd2Via2l0X2RvbV94cGF0aF9uc19yZXNvbHZlcl9sb29rdXBfbmFtZXNw
YWNlX3VyaShXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIgKnJlc29sdmVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnY2hhciAgICAgICAgICAgICAgKnByZWZpeCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRp
ZiAvKiBXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTVhQYXRoTlNSZXNvbHZl
clByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzA3MmY2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRE
T01YUGF0aE5TUmVzb2x2ZXJQcml2YXRlLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqICBUaGlz
IGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgKiAgVGhp
cyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9U
IE1PRElGWSEKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJQcml2
YXRlX2gKKyNkZWZpbmUgV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyUHJpdmF0ZV9oCisKKyNpbmNs
dWRlICJYUGF0aE5TUmVzb2x2ZXIuaCIKKyNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NWFBh
dGhOU1Jlc29sdmVyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworI2RlZmluZSBX
RUJLSVRfRE9NX1RZUEVfTkFUSVZFX1hQQVRIX05TX1JFU09MVkVSICAgICAgICAgICAgKHdlYmtp
dF9kb21fbmF0aXZlX3hwYXRoX25zX3Jlc29sdmVyX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJ
VF9ET01fTkFUSVZFX1hQQVRIX05TX1JFU09MVkVSKG9iaikgICAgICAgICAgICAoR19UWVBFX0NI
RUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9ET01fVFlQRV9OQVRJVkVfWFBBVEhfTlNf
UkVTT0xWRVIsIFdlYktpdERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlcikpCisjZGVmaW5lIFdFQktJ
VF9ET01fTkFUSVZFX1hQQVRIX05TX1JFU09MVkVSX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NI
RUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9OQVRJVkVfWFBBVEhfTlNf
UkVTT0xWRVIsIFdlYktpdERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlckNsYXNzKQorI2RlZmluZSBX
RUJLSVRfRE9NX0lTX05BVElWRV9YUEFUSF9OU19SRVNPTFZFUihvYmopICAgICAgICAgKEdfVFlQ
RV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfTkFUSVZFX1hQQVRI
X05TX1JFU09MVkVSKSkKKyNkZWZpbmUgV0VCS0lUX0RPTV9JU19OQVRJVkVfWFBBVEhfTlNfUkVT
T0xWRVJfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VC
S0lUX0RPTV9UWVBFX05BVElWRV9YUEFUSF9OU19SRVNPTFZFUikpCisjZGVmaW5lIFdFQktJVF9E
T01fTkFUSVZFX1hQQVRIX05TX1JFU09MVkVSX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RB
TkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9ET01fVFlQRV9OQVRJVkVfWFBBVEhfTlNfUkVT
T0xWRVIsIFdlYktpdERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlckNsYXNzKSkKKwordHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciBXZWJLaXRET01OYXRpdmVYUGF0
aE5TUmVzb2x2ZXI7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NTmF0aXZlWFBhdGhOU1Jlc29s
dmVyQ2xhc3MgV2ViS2l0RE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyQ2xhc3M7CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworUGFzc1JlZlB0cjxXZWJDb3JlOjpYUGF0aE5TUmVzb2x2ZXI+IGNvcmUoV2Vi
S2l0RE9NWFBhdGhOU1Jlc29sdmVyKik7CitXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIqIGtpdChX
ZWJDb3JlOjpYUGF0aE5TUmVzb2x2ZXIqKTsKK1dlYkNvcmU6OlhQYXRoTlNSZXNvbHZlciogY29y
ZShXZWJLaXRET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXIqKTsKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLyogV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyUHJpdmF0ZV9oICovCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2Jq
ZWN0LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09i
amVjdC5wbQppbmRleCAxODMwY2JlLi5mMTU1MDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0KQEAgLTk2Miw3
ICs5NjIsNyBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbiB7CiAgICAgICAgIGlmICgkcGFyYW1Jc0dE
T01UeXBlIHx8ICgkcGFyYW1JRExUeXBlIGVxICJET01TdHJpbmciKSB8fCAoJHBhcmFtSURMVHlw
ZSBlcSAiQ29tcGFyZUhvdyIpKSB7CiAgICAgICAgICAgICAkcGFyYW1OYW1lID0gImNvbnZlcnRl
ZCIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkcGFyYW1OYW1lKTsKICAgICAgICAgfQot
ICAgICAgICBpZiAoJHBhcmFtSURMVHlwZSBlcSAiTm9kZUZpbHRlciIpIHsKKyAgICAgICAgaWYg
KCRwYXJhbUlETFR5cGUgZXEgIk5vZGVGaWx0ZXIiIHx8ICRwYXJhbUlETFR5cGUgZXEgIlhQYXRo
TlNSZXNvbHZlciIpIHsKICAgICAgICAgICAgICRwYXJhbU5hbWUgPSAiV1RGOjpnZXRQdHIoIiAu
ICRwYXJhbU5hbWUgLiAiKSI7CiAgICAgICAgIH0KICAgICAgICAgcHVzaChAY2FsbEltcGxQYXJh
bXMsICRwYXJhbU5hbWUpOwpAQCAtMTA2Niw3ICsxMDY2LDcgQEAgc3ViIEdlbmVyYXRlRnVuY3Rp
b24gewogICAgICAgICAgICAgcHVzaChAY0JvZHksICIgICAgV1RGOjpTdHJpbmcgJHtjb252ZXJ0
ZWRQYXJhbU5hbWV9ID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KCRwYXJhbU5hbWUpO1xuIik7CiAg
ICAgICAgIH0gZWxzaWYgKCRwYXJhbUlETFR5cGUgZXEgIkNvbXBhcmVIb3ciKSB7CiAgICAgICAg
ICAgICBwdXNoKEBjQm9keSwgIiAgICBXZWJDb3JlOjpSYW5nZTo6Q29tcGFyZUhvdyAke2NvbnZl
cnRlZFBhcmFtTmFtZX0gPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSYW5nZTo6Q29tcGFyZUhvdz4o
JHBhcmFtTmFtZSk7XG4iKTsKLSAgICAgICAgfSBlbHNpZiAoJHBhcmFtSURMVHlwZSBlcSAiTm9k
ZUZpbHRlciIpIHsKKyAgICAgICAgfSBlbHNpZiAoJHBhcmFtSURMVHlwZSBlcSAiTm9kZUZpbHRl
ciIgfHwgJHBhcmFtSURMVHlwZSBlcSAiWFBhdGhOU1Jlc29sdmVyIikgewogICAgICAgICAgICAg
cHVzaChAY0JvZHksICIgICAgUmVmUHRyPFdlYkNvcmU6OiRwYXJhbUlETFR5cGU+ICR7Y29udmVy
dGVkUGFyYW1OYW1lfSA9IFdlYktpdDo6Y29yZSgkcGFyYW1OYW1lKTtcbiIpOwogICAgICAgICB9
IGVsc2lmICgkcGFyYW1Jc0dET01UeXBlKSB7CiAgICAgICAgICAgICBwdXNoKEBjQm9keSwgIiAg
ICBXZWJDb3JlOjoke3BhcmFtSURMVHlwZX0qICR7Y29udmVydGVkUGFyYW1OYW1lfSA9IFdlYktp
dDo6Y29yZSgkcGFyYW1OYW1lKTtcbiIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDBjZjJiOTMuLjEwN2IxZWMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxNC0w
Ni0yNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgW0dUS10gWFBhdGhOU1Jlc29sdmVyIHNob3VsZCBiZSBleHBvc2VkIGFzIGFuIGludGVyZmFj
ZSBpbnN0ZWFkIG9mIGFzIGEgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNDAyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCB1bml0IHRlc3RzIHRvIGNoZWNrIFdlYktpdERPTVhQYXRoTlNS
ZXNvbHZlciBBUEkgd2hlbiB1c2luZyB0aGUKKyAgICAgICAgbmF0aXZlIG9uZSBhbmQgYSB1c2Vy
IHByb3ZpZGVkIG9uZS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
ci5weTogQWRkIFdlYktpdERPTVhQYXRoTlNSZXNvbHZlcgorICAgICAgICB0byB0aGUgbGlzdCBv
ZiBHVEsrIHB1YmxpYyBBUEkgZXhjZXB0aW9ucy4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQ6IEFkZCBuZXcgZmlsZXMgdG8gY29tcGlsYXRp
b24uCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0RPTVhQYXRoTlNS
ZXNvbHZlclRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKHdlYmtpdFhQYXRoTlNSZXNvbHZlckxv
b2t1cE5hbWVzcGFjZVVSSSk6CisgICAgICAgICh3ZWJraXRYUGF0aE5TUmVzb2x2ZXJET01YUGF0
aE5TUmVzb2x2ZXJJZmFjZUluaXQpOgorICAgICAgICAod2Via2l0X3hwYXRoX25zX3Jlc29sdmVy
X2luaXQpOgorICAgICAgICAod2Via2l0X3hwYXRoX25zX3Jlc29sdmVyX2NsYXNzX2luaXQpOgor
ICAgICAgICAoV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyVGVzdDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdERPTVhQYXRoTlNSZXNvbHZlclRlc3Q6OndlYlBhZ2VGcm9tQXJncyk6CisgICAgICAg
IChXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJUZXN0OjpldmFsdWF0ZUZvb0NoaWxkVGV4dEFuZENo
ZWNrUmVzdWx0KToKKyAgICAgICAgKFdlYktpdERPTVhQYXRoTlNSZXNvbHZlclRlc3Q6OnRlc3RY
UGF0aE5TUmVzb2x2ZXJOYXRpdmUpOgorICAgICAgICAoV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVy
VGVzdDo6dGVzdFhQYXRoTlNSZXNvbHZlckN1c3RvbSk6CisgICAgICAgIChXZWJLaXRET01YUGF0
aE5TUmVzb2x2ZXJUZXN0OjpydW5UZXN0KToKKyAgICAgICAgKHJlZ2lzdGVyVGVzdHMpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0RE9NWFBhdGhOU1Jlc29s
dmVyLmNwcDogQWRkZWQuCisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKHRlc3RXZWJLaXRE
T01YUGF0aE5TUmVzb2x2ZXJOYXRpdmUpOgorICAgICAgICAodGVzdFdlYktpdERPTVhQYXRoTlNS
ZXNvbHZlckN1c3RvbSk6CisgICAgICAgIChzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgIChiZWZv
cmVBbGwpOgorICAgICAgICAoYWZ0ZXJBbGwpOgorICAgICAgICAqIGd0ay93ZWJraXRkb20ucHk6
CisgICAgICAgIChXZWJLaXRET01Eb2NHZW5lcmF0b3JTZWN0aW9ucy53cml0ZV9zZWN0aW9uKTog
QWRkCisgICAgICAgIFdlYktpdERPTVhQYXRoTlNSZXNvbHZlciB0byB0aGUgbGlzdCBvZiBpbnRl
cmZhY2VzLgorCiAyMDE0LTA2LTI0ICBLcnp5c3p0b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIFtBVEtdIFJlbW92ZSBzb21lIHVudXNlZCBjb2RlIGZyb20gRHVtcFJl
bmRlclRyZWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
ci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQppbmRleCA2ZGFl
OTMyLi42ZTM0NGNkIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CkBA
IC0xNTQsNiArMTU0LDcgQEAgX1BBVEhfUlVMRVNfU1BFQ0lGSUVSID0gWwogICAgICAgIlNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NRGVwcmVjYXRlZC5oIiwKICAgICAg
ICJTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUV2ZW50VGFyZ2V0Lmgi
LAogICAgICAgIlNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NTm9kZUZp
bHRlci5oIiwKKyAgICAgICJTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERP
TVhQYXRoTlNSZXNvbHZlci5oIiwKICAgICAgICJTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvR09iamVjdCIsCiAgICAgICAiU291cmNlL1dlYktpdC9ndGsvd2Via2l0LyIsCiAg
ICAgICAiVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrLyJdLApAQCAtMjI1LDYgKzIyNiw3IEBAIF9Q
QVRIX1JVTEVTX1NQRUNJRklFUiA9IFsKICAgICAgICJTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
b2JqZWN0L1dlYktpdERPTURlcHJlY2F0ZWQuY3BwIiwKICAgICAgICJTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUV2ZW50VGFyZ2V0LmNwcCIsCiAgICAgICAiU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01Ob2RlRmlsdGVyLmNwcCIsCisgICAg
ICAiU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01YUGF0aE5TUmVzb2x2
ZXIuY3BwIiwKICAgICAgICJTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9TaW5rR1N0cmVhbWVyMS5jcHAiLAogICAgICAgIlNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwIiwKICAgICAgICJT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNl
R1N0cmVhbWVyLmNwcCIsCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvQ01ha2VMaXN0cy50eHQKaW5kZXggOTcwODUzYS4uZjY2YjczMCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlzdHMudHh0CisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4dApAQCAt
ODIsNyArODIsNyBAQCBtYWNybyhBRERfV0syX1RFU1QgdGVzdF9uYW1lKQogZW5kbWFjcm8oKQog
CiBBRERfV0syX1RFU1RfV0VCX0VYVEVOU0lPTihXZWJFeHRlbnNpb25UZXN0IFdlYkV4dGVuc2lv
blRlc3QuY3BwKQotQUREX1dLMl9URVNUX1dFQl9FWFRFTlNJT04oV2ViUHJvY2Vzc1Rlc3QgRE9N
Tm9kZVRlc3QuY3BwIERPTU5vZGVGaWx0ZXJUZXN0LmNwcCBGcmFtZVRlc3QuY3BwIFdlYlByb2Nl
c3NUZXN0LmNwcCkKK0FERF9XSzJfVEVTVF9XRUJfRVhURU5TSU9OKFdlYlByb2Nlc3NUZXN0IERP
TU5vZGVUZXN0LmNwcCBET01Ob2RlRmlsdGVyVGVzdC5jcHAgRE9NWFBhdGhOU1Jlc29sdmVyVGVz
dC5jcHAgRnJhbWVUZXN0LmNwcCBXZWJQcm9jZXNzVGVzdC5jcHApCiAKIEFERF9XSzJfVEVTVChJ
bnNwZWN0b3JUZXN0U2VydmVyIEluc3BlY3RvclRlc3RTZXJ2ZXIuY3BwKQogQUREX1dLMl9URVNU
KFRlc3RBdXRoZW50aWNhdGlvbiBUZXN0QXV0aGVudGljYXRpb24uY3BwKQpAQCAtOTEsNiArOTEs
NyBAQCBBRERfV0syX1RFU1QoVGVzdENvbnRleHRNZW51IFRlc3RDb250ZXh0TWVudS5jcHApCiBB
RERfV0syX1RFU1QoVGVzdENvb2tpZU1hbmFnZXIgVGVzdENvb2tpZU1hbmFnZXIuY3BwKQogQURE
X1dLMl9URVNUKFRlc3RET01Ob2RlIFRlc3RET01Ob2RlLmNwcCkKIEFERF9XSzJfVEVTVChUZXN0
RE9NTm9kZUZpbHRlciBUZXN0RE9NTm9kZUZpbHRlci5jcHApCitBRERfV0syX1RFU1QoVGVzdERP
TVhQYXRoTlNSZXNvbHZlciBUZXN0RE9NWFBhdGhOU1Jlc29sdmVyLmNwcCkKIEFERF9XSzJfVEVT
VChUZXN0RG93bmxvYWRzIFRlc3REb3dubG9hZHMuY3BwKQogQUREX1dLMl9URVNUKFRlc3RXZWJL
aXRGYXZpY29uRGF0YWJhc2UgVGVzdFdlYktpdEZhdmljb25EYXRhYmFzZS5jcHApCiBBRERfV0sy
X1RFU1QoVGVzdFdlYktpdEZpbmRDb250cm9sbGVyIFRlc3RXZWJLaXRGaW5kQ29udHJvbGxlci5j
cHApCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvRE9N
WFBhdGhOU1Jlc29sdmVyVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvRE9NWFBhdGhOU1Jlc29sdmVyVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMGE0ZDZhZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mkd0ay9ET01YUGF0aE5TUmVzb2x2ZXJUZXN0LmNwcApAQCAtMCwwICsx
LDE0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpbmNsdWRlICJXZWJQcm9jZXNzVGVzdC5oIgorI2luY2x1ZGUgPGdpby9n
aW8uaD4KKyNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmg+CisjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0WFBh
dGhOU1Jlc29sdmVyIHsKKyAgICBHT2JqZWN0IHBhcmVudDsKK30gV2ViS2l0WFBhdGhOU1Jlc29s
dmVyOworCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0WFBhdGhOU1Jlc29sdmVyQ2xhc3MgeworICAg
IEdPYmplY3RDbGFzcyBwYXJlbnRDbGFzczsKK30gV2ViS2l0WFBhdGhOU1Jlc29sdmVyQ2xhc3M7
CisKK3N0YXRpYyBjaGFyKiB3ZWJraXRYUGF0aE5TUmVzb2x2ZXJMb29rdXBOYW1lc3BhY2VVUkko
V2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyKiByZXNvbHZlciwgY29uc3QgY2hhciogcHJlZml4KQor
eworICAgIGlmICghZ19zdHJjbXAwKHByZWZpeCwgImZvbyIpKQorICAgICAgICByZXR1cm4gZ19z
dHJkdXAoImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKTsKKworICAgIHJldHVybiBudWxscHRyOwor
fQorCitzdGF0aWMgdm9pZCB3ZWJraXRYUGF0aE5TUmVzb2x2ZXJET01YUGF0aE5TUmVzb2x2ZXJJ
ZmFjZUluaXQoV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVySWZhY2UqIGlmYWNlKQoreworICAgIGlm
YWNlLT5sb29rdXBfbmFtZXNwYWNlX3VyaSA9IHdlYmtpdFhQYXRoTlNSZXNvbHZlckxvb2t1cE5h
bWVzcGFjZVVSSTsKK30KKworR19ERUZJTkVfVFlQRV9XSVRIX0NPREUoV2ViS2l0WFBhdGhOU1Jl
c29sdmVyLCB3ZWJraXRfeHBhdGhfbnNfcmVzb2x2ZXIsIEdfVFlQRV9PQkpFQ1QsIEdfSU1QTEVN
RU5UX0lOVEVSRkFDRShXRUJLSVRfRE9NX1RZUEVfWFBBVEhfTlNfUkVTT0xWRVIsIHdlYmtpdFhQ
YXRoTlNSZXNvbHZlckRPTVhQYXRoTlNSZXNvbHZlcklmYWNlSW5pdCkpCisKK3N0YXRpYyB2b2lk
IHdlYmtpdF94cGF0aF9uc19yZXNvbHZlcl9pbml0KFdlYktpdFhQYXRoTlNSZXNvbHZlciopCit7
Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF94cGF0aF9uc19yZXNvbHZlcl9jbGFzc19pbml0KFdl
YktpdFhQYXRoTlNSZXNvbHZlckNsYXNzKikKK3sKK30KKworY2xhc3MgV2ViS2l0RE9NWFBhdGhO
U1Jlc29sdmVyVGVzdCA6IHB1YmxpYyBXZWJQcm9jZXNzVGVzdCB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UHRy
KG5ldyBXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJUZXN0KCkpOyB9CisKK3ByaXZhdGU6CisgICAg
Z3VpbnQ2NCB3ZWJQYWdlRnJvbUFyZ3MoR1ZhcmlhbnQqIGFyZ3MpCisgICAgeworICAgICAgICBH
VmFyaWFudEl0ZXIgaXRlcjsKKyAgICAgICAgZ192YXJpYW50X2l0ZXJfaW5pdCgmaXRlciwgYXJn
cyk7CisKKyAgICAgICAgY29uc3QgY2hhcioga2V5OworICAgICAgICBHVmFyaWFudCogdmFsdWU7
CisgICAgICAgIHdoaWxlIChnX3ZhcmlhbnRfaXRlcl9sb29wKCZpdGVyLCAieyZzdn0iLCAma2V5
LCAmdmFsdWUpKSB7CisgICAgICAgICAgICBpZiAoIXN0cmNtcChrZXksICJwYWdlSUQiKSAmJiBn
X3ZhcmlhbnRfY2xhc3NpZnkodmFsdWUpID09IEdfVkFSSUFOVF9DTEFTU19VSU5UNjQpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGdfdmFyaWFudF9nZXRfdWludDY0KHZhbHVlKTsKKyAgICAgICAg
fQorCisgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKworICAgIHZvaWQgZXZhbHVhdGVGb29DaGlsZFRleHRBbmRDaGVja1Jlc3VsdChXZWJL
aXRET01Eb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdERPTVhQYXRoTlNSZXNvbHZlciogcmVzb2x2
ZXIpCisgICAgeworICAgICAgICBXZWJLaXRET01FbGVtZW50KiBkb2N1bWVudEVsZW1lbnQgPSB3
ZWJraXRfZG9tX2RvY3VtZW50X2dldF9kb2N1bWVudF9lbGVtZW50KGRvY3VtZW50KTsKKyAgICAg
ICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19FTEVNRU5UKGRvY3VtZW50RWxlbWVudCkpOworCisg
ICAgICAgIC8vIEZJWE1FOiBVc2UgV0VCS0lUX0RPTV9YUEFUSF9SRVNVTFRfT1JERVJFRF9OT0RF
X0lURVJBVE9SX1RZUEUgd2hlbiBjb25zdGFudHMgYXJlIHN1cHBvcnRlZC4KKyAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzk4My4KKyAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IG9yZGVyZWROb2RlSWVyYXRvclR5cGUgPSA1Owor
ICAgICAgICBXZWJLaXRET01YUGF0aFJlc3VsdCogcmVzdWx0ID0gd2Via2l0X2RvbV9kb2N1bWVu
dF9ldmFsdWF0ZShkb2N1bWVudCwgImZvbzpjaGlsZC90ZXh0KCkiLCBXRUJLSVRfRE9NX05PREUo
ZG9jdW1lbnRFbGVtZW50KSwgcmVzb2x2ZXIsIG9yZGVyZWROb2RlSWVyYXRvclR5cGUsIG51bGxw
dHIsIG51bGxwdHIpOworICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX1hQQVRIX1JFU1VM
VChyZXN1bHQpKTsKKworICAgICAgICBXZWJLaXRET01Ob2RlKiBub2RlUmVzdWx0ID0gd2Via2l0
X2RvbV94cGF0aF9yZXN1bHRfaXRlcmF0ZV9uZXh0KHJlc3VsdCwgbnVsbHB0cik7CisgICAgICAg
IGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfTk9ERShub2RlUmVzdWx0KSk7CisKKyAgICAgICAgR1Vu
aXF1ZVB0cjxjaGFyPiBub2RlVmFsdWUod2Via2l0X2RvbV9ub2RlX2dldF9ub2RlX3ZhbHVlKG5v
ZGVSZXN1bHQpKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKG5vZGVWYWx1ZS5nZXQoKSwgPT0s
ICJTVUNDRVNTIik7CisgICAgfQorCisgICAgYm9vbCB0ZXN0WFBhdGhOU1Jlc29sdmVyTmF0aXZl
KFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBHVmFyaWFudCogYXJncykKKyAgICB7Cisg
ICAgICAgIFdlYktpdFdlYlBhZ2UqIHBhZ2UgPSB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFn
ZShleHRlbnNpb24sIHdlYlBhZ2VGcm9tQXJncyhhcmdzKSk7CisgICAgICAgIGdfYXNzZXJ0KFdF
QktJVF9JU19XRUJfUEFHRShwYWdlKSk7CisgICAgICAgIFdlYktpdERPTURvY3VtZW50KiBkb2N1
bWVudCA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50KHBhZ2UpOworICAgICAgICBn
X2Fzc2VydChXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CisKKyAgICAgICAgV2Vi
S2l0RE9NWFBhdGhOU1Jlc29sdmVyKiByZXNvbHZlciA9IHdlYmtpdF9kb21fZG9jdW1lbnRfY3Jl
YXRlX25zX3Jlc29sdmVyKGRvY3VtZW50LCBXRUJLSVRfRE9NX05PREUod2Via2l0X2RvbV9kb2N1
bWVudF9nZXRfZG9jdW1lbnRfZWxlbWVudChkb2N1bWVudCkpKTsKKyAgICAgICAgZ19hc3NlcnQo
V0VCS0lUX0RPTV9JU19YUEFUSF9OU19SRVNPTFZFUihyZXNvbHZlcikpOworICAgICAgICBldmFs
dWF0ZUZvb0NoaWxkVGV4dEFuZENoZWNrUmVzdWx0KGRvY3VtZW50LCByZXNvbHZlcik7CisKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgYm9vbCB0ZXN0WFBhdGhOU1Jlc29sdmVy
Q3VzdG9tKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBHVmFyaWFudCogYXJncykKKyAg
ICB7CisgICAgICAgIFdlYktpdFdlYlBhZ2UqIHBhZ2UgPSB3ZWJraXRfd2ViX2V4dGVuc2lvbl9n
ZXRfcGFnZShleHRlbnNpb24sIHdlYlBhZ2VGcm9tQXJncyhhcmdzKSk7CisgICAgICAgIGdfYXNz
ZXJ0KFdFQktJVF9JU19XRUJfUEFHRShwYWdlKSk7CisgICAgICAgIFdlYktpdERPTURvY3VtZW50
KiBkb2N1bWVudCA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50KHBhZ2UpOworICAg
ICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CisKKyAgICAg
ICAgR1JlZlB0cjxXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXI+IHJlc29sdmVyID0gYWRvcHRHUmVm
KFdFQktJVF9ET01fWFBBVEhfTlNfUkVTT0xWRVIoZ19vYmplY3RfbmV3KHdlYmtpdF94cGF0aF9u
c19yZXNvbHZlcl9nZXRfdHlwZSgpLCBudWxscHRyKSkpOworICAgICAgICBldmFsdWF0ZUZvb0No
aWxkVGV4dEFuZENoZWNrUmVzdWx0KGRvY3VtZW50LCByZXNvbHZlci5nZXQoKSk7CisKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgdmlydHVhbCBib29sIHJ1blRlc3QoY29uc3Qg
Y2hhciogdGVzdE5hbWUsIFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBHVmFyaWFudCog
YXJncykKKyAgICB7CisgICAgICAgIGlmICghc3RyY21wKHRlc3ROYW1lLCAibmF0aXZlIikpCisg
ICAgICAgICAgICByZXR1cm4gdGVzdFhQYXRoTlNSZXNvbHZlck5hdGl2ZShleHRlbnNpb24sIGFy
Z3MpOworICAgICAgICBpZiAoIXN0cmNtcCh0ZXN0TmFtZSwgImN1c3RvbSIpKQorICAgICAgICAg
ICAgcmV0dXJuIHRlc3RYUGF0aE5TUmVzb2x2ZXJDdXN0b20oZXh0ZW5zaW9uLCBhcmdzKTsKKwor
ICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorfTsKKworc3RhdGljIHZvaWQgX19hdHRyaWJ1dGVfXygoY29uc3RydWN0b3IpKSByZWdp
c3RlclRlc3RzKCkKK3sKKyAgICBSRUdJU1RFUl9URVNUKFdlYktpdERPTVhQYXRoTlNSZXNvbHZl
clRlc3QsICJXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIvbmF0aXZlIik7CisgICAgUkVHSVNURVJf
VEVTVChXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJUZXN0LCAiV2ViS2l0RE9NWFBhdGhOU1Jlc29s
dmVyL2N1c3RvbSIpOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyR3RrL1Rlc3RET01YUGF0aE5TUmVzb2x2ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RET01YUGF0aE5TUmVzb2x2ZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExN2U4MWIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdERPTVhQYXRoTlNSZXNvbHZlci5j
cHAKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5M
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV2ViS2l0VGVzdFNlcnZlci5oIgor
I2luY2x1ZGUgIldlYlByb2Nlc3NUZXN0UnVubmVyLmgiCisjaW5jbHVkZSAiV2ViVmlld1Rlc3Qu
aCIKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQyLmg+CisK
K3N0YXRpYyBXZWJQcm9jZXNzVGVzdFJ1bm5lciogdGVzdFJ1bm5lcjsKK3N0YXRpYyBXZWJLaXRU
ZXN0U2VydmVyKiBrU2VydmVyOworCitzdGF0aWMgdm9pZCBydW5UZXN0KFdlYlZpZXdUZXN0KiB0
ZXN0LCBjb25zdCBjaGFyKiBuYW1lKQoreworICAgIEdWYXJpYW50QnVpbGRlciBidWlsZGVyOwor
ICAgIGdfdmFyaWFudF9idWlsZGVyX2luaXQoJmJ1aWxkZXIsIEdfVkFSSUFOVF9UWVBFX1ZBUkRJ
Q1QpOworICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCgmYnVpbGRlciwgIntzdn0iLCAicGFnZUlE
IiwgZ192YXJpYW50X25ld191aW50NjQod2Via2l0X3dlYl92aWV3X2dldF9wYWdlX2lkKHRlc3Qt
Pm1fd2ViVmlldykpKTsKKyAgICBnX2Fzc2VydCh0ZXN0UnVubmVyLT5ydW5UZXN0KCJXZWJLaXRE
T01YUGF0aE5TUmVzb2x2ZXIiLCBuYW1lLCBnX3ZhcmlhbnRfYnVpbGRlcl9lbmQoJmJ1aWxkZXIp
KSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJOYXRpdmUo
V2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgdGVzdC0+bG9hZFVSSShr
U2VydmVyLT5nZXRVUklGb3JQYXRoKCIvbmF0aXZlIikuZGF0YSgpKTsKKyAgICB0ZXN0LT53YWl0
VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICBydW5UZXN0KHRlc3QsICJuYXRpdmUiKTsKK30KKwor
c3RhdGljIHZvaWQgdGVzdFdlYktpdERPTVhQYXRoTlNSZXNvbHZlckN1c3RvbShXZWJWaWV3VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdl
dFVSSUZvclBhdGgoIi9jdXN0b20iKS5kYXRhKCkpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRG
aW5pc2hlZCgpOworICAgIHJ1blRlc3QodGVzdCwgImN1c3RvbSIpOworfQorCitzdGF0aWMgdm9p
ZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdl
LCBjb25zdCBjaGFyKiBwYXRoLCBHSGFzaFRhYmxlKiwgU291cENsaWVudENvbnRleHQqLCBncG9p
bnRlcikKK3sKKyAgICBpZiAobWVzc2FnZS0+bWV0aG9kICE9IFNPVVBfTUVUSE9EX0dFVCkgewor
ICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19OT1Rf
SU1QTEVNRU5URUQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGdfc3RyX2Vx
dWFsKHBhdGgsICIvbmF0aXZlIikpIHsKKyAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMo
bWVzc2FnZSwgU09VUF9TVEFUVVNfT0spOworICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19h
cHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L3ht
bCIpOworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogbmF0aXZlWE1MID0gIjxyb290IHhtbG5z
OmZvbz0naHR0cDovL3d3dy5leGFtcGxlLm9yZyc+PGZvbzpjaGlsZD5TVUNDRVNTPC9mb286Y2hp
bGQ+PC9yb290PiI7CisgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5y
ZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsIG5hdGl2ZVhNTCwgc3RybGVuKG5hdGl2
ZVhNTCkpOworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdlLT5yZXNw
b25zZV9ib2R5KTsKKyAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvY3VzdG9tIikp
IHsKKyAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNf
T0spOworICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQobWVzc2FnZS0+cmVzcG9u
c2VfaGVhZGVycywgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L3htbCIpOworICAgICAgICBzdGF0aWMg
Y29uc3QgY2hhciogY3VzdG9tWE1MID0gIjxyb290IHhtbG5zPSdodHRwOi8vd3d3LmV4YW1wbGUu
Y29tJz48Y2hpbGQ+U1VDQ0VTUzwvY2hpbGQ+PC9yb290PiI7CisgICAgICAgIHNvdXBfbWVzc2Fn
ZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9TVEFUSUMs
IGN1c3RvbVhNTCwgc3RybGVuKGN1c3RvbVhNTCkpOworICAgICAgICBzb3VwX21lc3NhZ2VfYm9k
eV9jb21wbGV0ZShtZXNzYWdlLT5yZXNwb25zZV9ib2R5KTsKKyAgICB9IGVsc2UKKyAgICAgICAg
c291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0ZPVU5EKTsK
K30KKwordm9pZCBiZWZvcmVBbGwoKQoreworICAgIGtTZXJ2ZXIgPSBuZXcgV2ViS2l0VGVzdFNl
cnZlcigpOworICAgIGtTZXJ2ZXItPnJ1bihzZXJ2ZXJDYWxsYmFjayk7CisKKyAgICB0ZXN0UnVu
bmVyID0gbmV3IFdlYlByb2Nlc3NUZXN0UnVubmVyKCk7CisgICAgd2Via2l0X3dlYl9jb250ZXh0
X3NldF93ZWJfZXh0ZW5zaW9uc19kaXJlY3Rvcnkod2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZh
dWx0KCksIFdFQktJVF9URVNUX1dFQl9FWFRFTlNJT05TX0RJUik7CisKKyAgICBXZWJWaWV3VGVz
dDo6YWRkKCJXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIiLCAibmF0aXZlIiwgdGVzdFdlYktpdERP
TVhQYXRoTlNSZXNvbHZlck5hdGl2ZSk7CisgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0RE9N
WFBhdGhOU1Jlc29sdmVyIiwgImN1c3RvbSIsIHRlc3RXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJD
dXN0b20pOworfQorCit2b2lkIGFmdGVyQWxsKCkKK3sKKyAgICBkZWxldGUgdGVzdFJ1bm5lcjsK
KyAgICBkZWxldGUga1NlcnZlcjsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay93ZWJraXRkb20u
cHkgYi9Ub29scy9ndGsvd2Via2l0ZG9tLnB5CmluZGV4IGUwNTYxYzIuLmY3YjQwNzQgMTAwNzU1
Ci0tLSBhL1Rvb2xzL2d0ay93ZWJraXRkb20ucHkKKysrIGIvVG9vbHMvZ3RrL3dlYmtpdGRvbS5w
eQpAQCAtMTI3LDcgKzEyNyw3IEBAIGNsYXNzIFdlYktpdERPTURvY0dlbmVyYXRvclNlY3Rpb25z
KFdlYktpdERPTURvY0dlbmVyYXRvcik6CiAgICAgZGVmIHdyaXRlX3NlY3Rpb24oc2VsZiwgc3lt
Ym9sX2ZpbGUpOgogICAgICAgICBjbGFzc19uYW1lID0gb3MucGF0aC5iYXNlbmFtZShzeW1ib2xf
ZmlsZSkucmVwbGFjZSgiLnN5bWJvbHMiLCAiIikKICAgICAgICAgaXNfY3VzdG9tID0gY2xhc3Nf
bmFtZSA9PSAnV2ViS2l0RE9NQ3VzdG9tJwotICAgICAgICBpc19pbnRlcmZhY2UgPSBjbGFzc19u
YW1lIGluIFsnV2ViS2l0RE9NRXZlbnRUYXJnZXQnLCAnV2ViS2l0RE9NTm9kZUZpbHRlciddCisg
ICAgICAgIGlzX2ludGVyZmFjZSA9IGNsYXNzX25hbWUgaW4gWydXZWJLaXRET01FdmVudFRhcmdl
dCcsICdXZWJLaXRET01Ob2RlRmlsdGVyJywgJ1dlYktpdERPTVhQYXRoTlNSZXNvbHZlciddCiAg
ICAgICAgIGlzX29iamVjdCA9IGNsYXNzX25hbWUgPT0gJ1dlYktpdERPTU9iamVjdCcKICAgICAg
ICAgc2VsZi53cml0ZSgnPFNFQ1RJT04+XG4nKQogICAgICAgICBzZWxmLndyaXRlKCc8RklMRT4l
czwvRklMRT5cbjxUSVRMRT4lczwvVElUTEU+XG4nICUgKGNsYXNzX25hbWUsIGNsYXNzX25hbWUp
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233804</attachid>
            <date>2014-06-25 04:52:20 -0700</date>
            <delta_ts>2014-07-01 09:03:32 -0700</delta_ts>
            <desc>Updated to build on current git master</desc>
            <filename>wkdom-ns-resolver.diff</filename>
            <type>text/plain</type>
            <size>36691</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0YTU3YTI2Li4wOGM5ODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMg
QEAKKzIwMTQtMDYtMjQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIFhQYXRoTlNSZXNvbHZlciBzaG91bGQgYmUgZXhwb3NlZCBhcyBh
biBpbnRlcmZhY2UgaW5zdGVhZCBvZiBhcyBhIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQwMjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgY3VzdG9tIGltcGxlbWVudGF0aW9uIG9mIFdl
YktpdERPTVhQYXRoTlNSZXNvbHZlciB0byBleHBvc2UgaXQKKyAgICAgICAgYXMgYW4gaW50ZXJm
YWNlIGluc3RlYWQgb2YgYSBjbGFzcy4gSXQgYWxzbyBpbmNsdWRlcyBhbiBpbnRlcm5hbAorICAg
ICAgICBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBpbnRlcmZhY2UgdG8gc3VwcG9ydCBt
ZXRob2RzIHRoYXQKKyAgICAgICAgY3JlYXRlIGEgWFBhdGhOU1Jlc29sdmVyIHVzaW5nIHRoZSBu
YXRpdmUgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogQWRk
IG5ldyBmaWxlcyB0byBjb21waWxhdGlvbi4KKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L0dP
YmplY3RYUGF0aE5TUmVzb2x2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdPYmpl
Y3RYUGF0aE5TUmVzb2x2ZXI6On5HT2JqZWN0WFBhdGhOU1Jlc29sdmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdPYmplY3RYUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5hbWVzcGFjZVVSSSk6IENhbGwK
KyAgICAgICAgd2Via2l0X2RvbV94cGF0aF9uc19yZXNvbHZlcl9sb29rdXBfbmFtZXNwYWNlX3Vy
aSgpLgorICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvR09iamVjdFhQYXRoTlNSZXNvbHZlci5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdPYmplY3RYUGF0aE5TUmVzb2x2ZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHT2JqZWN0WFBhdGhOU1Jlc29sdmVyOjpHT2JqZWN0WFBh
dGhOU1Jlc29sdmVyKTogQ3JlYXRlCisgICAgICAgIGEgbmV3IEdPYmplY3RYUGF0aE5TUmVzb2x2
ZXIgZm9yIHRoZSBnaXZlbiBXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIuCisgICAgICAgICogYmlu
ZGluZ3MvZ29iamVjdC9XZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKHdlYmtpdF9kb21feHBhdGhfbnNfcmVzb2x2ZXJfZGVmYXVsdF9pbml0KToKKyAgICAgICAg
KHdlYmtpdF9kb21feHBhdGhfbnNfcmVzb2x2ZXJfbG9va3VwX25hbWVzcGFjZV91cmkpOgorICAg
ICAgICAod2Via2l0RE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyRmluYWxpemUpOgorICAgICAgICAo
d2Via2l0RE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyQ29uc3RydWN0b3IpOgorICAgICAgICAod2Vi
a2l0X2RvbV9uYXRpdmVfeHBhdGhfbnNfcmVzb2x2ZXJfaW5pdCk6CisgICAgICAgICh3ZWJraXRf
ZG9tX25hdGl2ZV94cGF0aF9uc19yZXNvbHZlcl9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtp
dERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlckxvb2t1cE5hbWVzcGFjZVVSSSk6CisgICAgICAgICh3
ZWJraXRET01YUGF0aE5TUmVzb2x2ZXJJZmFjZUluaXQpOgorICAgICAgICAoV2ViS2l0Ojpjb3Jl
KTogUmV0dXJuIHRoZSBuYXRpdmUgWFBhdGhOU1Jlc29sdmVyIHdoZW4gdXNpbmcgdGhlCisgICAg
ICAgIGludGVybmFsIGltcGxlbWVudGF0aW9uIG9yIGNyZWF0ZSBhIGN1c3RvbSBYUGF0aE5TUmVz
b2x2ZXIgd2hlbgorICAgICAgICB1c2luZyBhIHVzZXIgcHJvdmlkZWQgV2ViS2l0RE9NWFBhdGhO
U1Jlc29sdmVyLgorICAgICAgICAoV2ViS2l0OjpraXQpOgorICAgICAgICAqIGJpbmRpbmdzL2dv
YmplY3QvV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRp
bmdzL2dvYmplY3QvV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyUHJpdmF0ZS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtOgorICAgICAg
ICAoR2VuZXJhdGVGdW5jdGlvbik6IEFkZCBleGNlcHRpb25zIGZvciBYUGF0aE5TUmVzb2x2ZXIg
c2luY2UKKyAgICAgICAgdGhlIGNvcmUgbWV0aG9kIHJldHVybnMgYSBQYXNzUmVmUHRyLgorCiAy
MDE0LTA2LTI1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLiBVcGRhdGUgR09iamVjdCBET00gYmluZGluZ3MgdGVzdCByZXN1
bHRzIGFmdGVyIHIxNzA0MjIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdU
Sy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDlkNGYwMWMu
LjQwMmVhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC00MzYsMTIgKzQzNiwxNCBA
QCBsaXN0KEFQUEVORCBHT2JqZWN0RE9NQmluZGluZ3NfU09VUkNFUwogICAgIGJpbmRpbmdzL2dv
YmplY3QvRE9NT2JqZWN0Q2FjaGUuY3BwCiAgICAgYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZl
bnRMaXN0ZW5lci5jcHAKICAgICBiaW5kaW5ncy9nb2JqZWN0L0dPYmplY3ROb2RlRmlsdGVyQ29u
ZGl0aW9uLmNwcAorICAgIGJpbmRpbmdzL2dvYmplY3QvR09iamVjdFhQYXRoTlNSZXNvbHZlci5j
cHAKICAgICBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUN1c3RvbS5jcHAKICAgICBiaW5kaW5n
cy9nb2JqZWN0L1dlYktpdERPTUV2ZW50VGFyZ2V0LmNwcAogICAgIGJpbmRpbmdzL2dvYmplY3Qv
V2ViS2l0RE9NSFRNTFByaXZhdGUuY3BwCiAgICAgYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01O
b2RlRmlsdGVyLmNwcAogICAgIGJpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NT2JqZWN0LmNwcAog
ICAgIGJpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NUHJpdmF0ZS5jcHAKKyAgICBiaW5kaW5ncy9n
b2JqZWN0L1dlYktpdERPTVhQYXRoTlNSZXNvbHZlci5jcHAKICAgICAke0RFUklWRURfU09VUkNF
U19HT0JKRUNUX0RPTV9CSU5ESU5HU19ESVJ9L3dlYmtpdGRvbWRlZmluZXMuaAogICAgICR7REVS
SVZFRF9TT1VSQ0VTX0dPQkpFQ1RfRE9NX0JJTkRJTkdTX0RJUn0vd2Via2l0ZG9tZGVmaW5lcy11
bnN0YWJsZS5oCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfR09CSkVDVF9ET01fQklORElOR1NfRElS
fS93ZWJraXRkb20uaApAQCAtNTQ3LDcgKzU0OSw2IEBAIGxpc3QoQVBQRU5EIEdPYmplY3RET01C
aW5kaW5nc1N0YWJsZV9JRExfRklMRVMKICAgICBwYWdlL0RPTVdpbmRvdy5pZGwKIAogICAgIHht
bC9YUGF0aEV4cHJlc3Npb24uaWRsCi0gICAgeG1sL1hQYXRoTlNSZXNvbHZlci5pZGwKICAgICB4
bWwvWFBhdGhSZXN1bHQuaWRsCiApCiAKQEAgLTY0OSw3ICs2NTAsNyBAQCBpZiAoRU5BQkxFX1FV
T1RBKQogICAgICkKIGVuZGlmICgpCiAKLXNldChHT2JqZWN0RE9NQmluZGluZ3NTdGFibGVfQ0xB
U1NfTElTVCBDdXN0b20gRXZlbnRUYXJnZXQgTm9kZUZpbHRlciBPYmplY3QpCitzZXQoR09iamVj
dERPTUJpbmRpbmdzU3RhYmxlX0NMQVNTX0xJU1QgQ3VzdG9tIEV2ZW50VGFyZ2V0IE5vZGVGaWx0
ZXIgT2JqZWN0IFhQYXRoTlNSZXNvbHZlcikKIHNldChHT2JqZWN0RE9NQmluZGluZ3NTdGFibGVf
SU5TVEFMTEVEX0hFQURFUlMKICAgICAgJHtERVJJVkVEX1NPVVJDRVNfR09CSkVDVF9ET01fQklO
RElOR1NfRElSfS93ZWJraXRkb21kZWZpbmVzLmgKICAgICAgJHtERVJJVkVEX1NPVVJDRVNfR09C
SkVDVF9ET01fQklORElOR1NfRElSfS93ZWJraXRkb20uaApAQCAtNjU3LDYgKzY1OCw3IEBAIHNl
dChHT2JqZWN0RE9NQmluZGluZ3NTdGFibGVfSU5TVEFMTEVEX0hFQURFUlMKICAgICAgJHtXRUJD
T1JFX0RJUn0vYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01FdmVudFRhcmdldC5oCiAgICAgICR7
V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NTm9kZUZpbHRlci5oCiAgICAg
ICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NT2JqZWN0LmgKKyAgICAg
JHtXRUJDT1JFX0RJUn0vYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIu
aAogKQogCiBzZXQoR09iamVjdERPTUJpbmRpbmdzVW5zdGFibGVfSU5TVEFMTEVEX0hFQURFUlMK
QEAgLTc1NSw2ICs3NTcsNyBAQCBsaXN0KFJFTU9WRV9JVEVNIEdPYmplY3RET01CaW5kaW5nc19H
SVJfSEVBREVSUwogICAgICBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUV2ZW50VGFyZ2V0LmgK
ICAgICAgYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01Ob2RlRmlsdGVyLmgKICAgICAgYmluZGlu
Z3MvZ29iamVjdC9XZWJLaXRET01PYmplY3QuaAorICAgICBiaW5kaW5ncy9nb2JqZWN0L1dlYktp
dERPTVhQYXRoTlNSZXNvbHZlci5oCiApCiAKICMgUHJvcGFnYXRlIHRoaXMgdmFyaWFibGUgdG8g
dGhlIHBhcmVudCBzY29wZSwgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbiBvdGhlciBwYXJ0cyBv
ZiB0aGUgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0
L0dPYmplY3RYUGF0aE5TUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29i
amVjdC9HT2JqZWN0WFBhdGhOU1Jlc29sdmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4zMmZhZjQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvZ29iamVjdC9HT2JqZWN0WFBhdGhOU1Jlc29sdmVyLmNwcApAQCAtMCwwICsxLDM2IEBA
CisvKgorICogIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAt
MTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdPYmplY3RY
UGF0aE5TUmVzb2x2ZXIuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHT2Jq
ZWN0WFBhdGhOU1Jlc29sdmVyOjp+R09iamVjdFhQYXRoTlNSZXNvbHZlcigpCit7Cit9CisKK1N0
cmluZyBHT2JqZWN0WFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VVUkkoY29uc3QgU3Ry
aW5nJiBwcmVmaXgpCit7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgod2Via2l0X2RvbV94
cGF0aF9uc19yZXNvbHZlcl9sb29rdXBfbmFtZXNwYWNlX3VyaShtX3Jlc29sdmVyLmdldCgpLCBw
cmVmaXgudXRmOCgpLmRhdGEoKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RYUGF0aE5TUmVz
b2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdFhQYXRoTlNS
ZXNvbHZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2YzExYWUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RY
UGF0aE5TUmVzb2x2ZXIuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogIENvcHlyaWdodCAoQykg
MjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRo
ZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRl
ZiBHT2JqZWN0WFBhdGhOU1Jlc29sdmVyX2gKKyNkZWZpbmUgR09iamVjdFhQYXRoTlNSZXNvbHZl
cl9oCisKKyNpbmNsdWRlICJXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIuaCIKKyNpbmNsdWRlICJY
UGF0aE5TUmVzb2x2ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBH
T2JqZWN0WFBhdGhOU1Jlc29sdmVyIDogcHVibGljIFhQYXRoTlNSZXNvbHZlciB7CitwdWJsaWM6
CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxHT2JqZWN0WFBhdGhOU1Jlc29sdmVyPiBjcmVhdGUo
V2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyKiByZXNvbHZlcikKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgR09iamVjdFhQYXRoTlNSZXNvbHZlcihyZXNvbHZlcikpOworICAgIH0K
KworICAgIHZpcnR1YWwgfkdPYmplY3RYUGF0aE5TUmVzb2x2ZXIoKTsKKyAgICB2aXJ0dWFsIFN0
cmluZyBsb29rdXBOYW1lc3BhY2VVUkkoY29uc3QgU3RyaW5nJiBwcmVmaXgpOworCitwcml2YXRl
OgorICAgIEdPYmplY3RYUGF0aE5TUmVzb2x2ZXIoV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyKiBy
ZXNvbHZlcikKKyAgICAgICAgOiBtX3Jlc29sdmVyKHJlc29sdmVyKQorICAgIHsKKyAgICB9CisK
KyAgICBHUmVmUHRyPFdlYktpdERPTVhQYXRoTlNSZXNvbHZlcj4gbV9yZXNvbHZlcjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEdPYmplY3RYUGF0aE5TUmVzb2x2
ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRE
T01YUGF0aE5TUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9X
ZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmE3ZTdiNThjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvZ29iamVjdC9XZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIuY3BwCkBAIC0wLDAgKzEsMTQwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0x
MzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0RE9N
WFBhdGhOU1Jlc29sdmVyLmgiCisKKyNpbmNsdWRlICJET01PYmplY3RDYWNoZS5oIgorI2luY2x1
ZGUgIkdPYmplY3RYUGF0aE5TUmVzb2x2ZXIuaCIKKyNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVj
U3RhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRET01PYmplY3QuaCIKKyNpbmNsdWRlICJXZWJLaXRE
T01YUGF0aE5TUmVzb2x2ZXJQcml2YXRlLmgiCisjaW5jbHVkZSAiZ29iamVjdC9Db252ZXJ0VG9V
VEY4U3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKwordHlwZWRlZiBXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJJZmFjZSBXZWJLaXRET01Y
UGF0aE5TUmVzb2x2ZXJJbnRlcmZhY2U7CisKK0dfREVGSU5FX0lOVEVSRkFDRShXZWJLaXRET01Y
UGF0aE5TUmVzb2x2ZXIsIHdlYmtpdF9kb21feHBhdGhfbnNfcmVzb2x2ZXIsIEdfVFlQRV9PQkpF
Q1QpCisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21feHBhdGhfbnNfcmVzb2x2ZXJfZGVmYXVsdF9p
bml0KFdlYktpdERPTVhQYXRoTlNSZXNvbHZlcklmYWNlKikKK3sKK30KKworY2hhciogd2Via2l0
X2RvbV94cGF0aF9uc19yZXNvbHZlcl9sb29rdXBfbmFtZXNwYWNlX3VyaShXZWJLaXRET01YUGF0
aE5TUmVzb2x2ZXIqIHJlc29sdmVyLCBjb25zdCBjaGFyKiBwcmVmaXgpCit7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19YUEFUSF9OU19SRVNPTFZFUihyZXNvbHZlciks
IG51bGxwdHIpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHByZWZpeCwgbnVsbHB0cik7CisK
KyAgICByZXR1cm4gV0VCS0lUX0RPTV9YUEFUSF9OU19SRVNPTFZFUl9HRVRfSUZBQ0UocmVzb2x2
ZXIpLT5sb29rdXBfbmFtZXNwYWNlX3VyaShyZXNvbHZlciwgcHJlZml4KTsKK30KKworLy8gV2Vi
S2l0RE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyLgorc3RydWN0IF9XZWJLaXRET01OYXRpdmVYUGF0
aE5TUmVzb2x2ZXIgeworICAgIFdlYktpdERPTU9iamVjdCBwYXJlbnQ7Cit9OworCitzdHJ1Y3Qg
X1dlYktpdERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlckNsYXNzIHsKKyAgICBXZWJLaXRET01PYmpl
Y3RDbGFzcyBwYXJlbnRDbGFzczsKK307CisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRET01OYXRp
dmVYUGF0aE5TUmVzb2x2ZXJQcml2YXRlIHsKKyAgICBSZWZQdHI8V2ViQ29yZTo6WFBhdGhOU1Jl
c29sdmVyPiBjb3JlT2JqZWN0OworfSBXZWJLaXRET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXJQcml2
YXRlOworCisjZGVmaW5lIFdFQktJVF9ET01fTkFUSVZFX1hQQVRIX05TX1JFU09MVkVSX0dFVF9Q
UklWQVRFKG9iaikgR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKG9iaiwgV0VCS0lUX0RPTV9U
WVBFX05BVElWRV9YUEFUSF9OU19SRVNPTFZFUiwgV2ViS2l0RE9NTmF0aXZlWFBhdGhOU1Jlc29s
dmVyUHJpdmF0ZSkKKworc3RhdGljIHZvaWQgd2Via2l0RE9NWFBhdGhOU1Jlc29sdmVySWZhY2VJ
bml0KFdlYktpdERPTVhQYXRoTlNSZXNvbHZlcklmYWNlKik7CisKK0dfREVGSU5FX1RZUEVfV0lU
SF9DT0RFKFdlYktpdERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciwgd2Via2l0X2RvbV9uYXRpdmVf
eHBhdGhfbnNfcmVzb2x2ZXIsIFdFQktJVF9ET01fVFlQRV9PQkpFQ1QsIEdfSU1QTEVNRU5UX0lO
VEVSRkFDRShXRUJLSVRfRE9NX1RZUEVfWFBBVEhfTlNfUkVTT0xWRVIsIHdlYmtpdERPTVhQYXRo
TlNSZXNvbHZlcklmYWNlSW5pdCkpCisKK3N0YXRpYyB2b2lkIHdlYmtpdERPTU5hdGl2ZVhQYXRo
TlNSZXNvbHZlckZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBXZWJLaXRET01OYXRp
dmVYUGF0aE5TUmVzb2x2ZXJQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9OQVRJVkVfWFBBVEhf
TlNfUkVTT0xWRVJfR0VUX1BSSVZBVEUob2JqZWN0KTsKKyAgICBwcml2LT5+V2ViS2l0RE9NTmF0
aXZlWFBhdGhOU1Jlc29sdmVyUHJpdmF0ZSgpOworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9k
b21fbmF0aXZlX3hwYXRoX25zX3Jlc29sdmVyX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVj
dCk7Cit9CisKK3N0YXRpYyBHT2JqZWN0KiB3ZWJraXRET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXJD
b25zdHJ1Y3RvcihHVHlwZSB0eXBlLCBndWludCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIEdP
YmplY3RDb25zdHJ1Y3RQYXJhbSogY29uc3RydWN0UHJvcGVydGllcykKK3sKKyAgICBHT2JqZWN0
KiBvYmplY3QgPSBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX25hdGl2ZV94cGF0aF9uc19yZXNv
bHZlcl9wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3Rvcih0eXBlLCBjb25zdHJ1Y3RQcm9wZXJ0aWVz
Q291bnQsIGNvbnN0cnVjdFByb3BlcnRpZXMpOworICAgIFdlYktpdERPTU5hdGl2ZVhQYXRoTlNS
ZXNvbHZlclByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX05BVElWRV9YUEFUSF9OU19SRVNPTFZF
Ul9HRVRfUFJJVkFURShvYmplY3QpOworICAgIHByaXYtPmNvcmVPYmplY3QgPSBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpYUGF0aE5TUmVzb2x2ZXIqPihXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpLT5j
b3JlT2JqZWN0KTsKKyAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpwdXQocHJpdi0+Y29yZU9i
amVjdC5nZXQoKSwgb2JqZWN0KTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitzdGF0aWMgdm9p
ZCB3ZWJraXRfZG9tX25hdGl2ZV94cGF0aF9uc19yZXNvbHZlcl9pbml0KFdlYktpdERPTU5hdGl2
ZVhQYXRoTlNSZXNvbHZlciogcmVzb2x2ZXIpCit7CisgICAgV2ViS2l0RE9NTmF0aXZlWFBhdGhO
U1Jlc29sdmVyUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fTkFUSVZFX1hQQVRIX05TX1JFU09M
VkVSX0dFVF9QUklWQVRFKHJlc29sdmVyKTsKKyAgICBuZXcgKHByaXYpIFdlYktpdERPTU5hdGl2
ZVhQYXRoTlNSZXNvbHZlclByaXZhdGUoKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X2RvbV9u
YXRpdmVfeHBhdGhfbnNfcmVzb2x2ZXJfY2xhc3NfaW5pdChXZWJLaXRET01OYXRpdmVYUGF0aE5T
UmVzb2x2ZXJDbGFzcyoga2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3Mg
PSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGdv
YmplY3RDbGFzcywgc2l6ZW9mKFdlYktpdERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlclByaXZhdGUp
KTsKKyAgICBnb2JqZWN0Q2xhc3MtPmNvbnN0cnVjdG9yID0gd2Via2l0RE9NTmF0aXZlWFBhdGhO
U1Jlc29sdmVyQ29uc3RydWN0b3I7CisgICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtp
dERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlckZpbmFsaXplOworfQorCitzdGF0aWMgY2hhciogd2Vi
a2l0RE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyTG9va3VwTmFtZXNwYWNlVVJJKFdlYktpdERPTVhQ
YXRoTlNSZXNvbHZlciogcmVzb2x2ZXIsIGNvbnN0IGNoYXIqIHByZWZpeCkKK3sKKyAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0RPTV9JU19OQVRJVkVfWFBBVEhfTlNfUkVTT0xWRVIocmVzb2x2ZXIpLCBudWxs
cHRyKTsKKworICAgIHJldHVybiBjb252ZXJ0VG9VVEY4U3RyaW5nKFdlYktpdDo6Y29yZShyZXNv
bHZlciktPmxvb2t1cE5hbWVzcGFjZVVSSShXVEY6OlN0cmluZzo6ZnJvbVVURjgocHJlZml4KSkp
OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRET01YUGF0aE5TUmVzb2x2ZXJJZmFjZUluaXQoV2Vi
S2l0RE9NWFBhdGhOU1Jlc29sdmVySWZhY2UqIGlmYWNlKQoreworICAgIGlmYWNlLT5sb29rdXBf
bmFtZXNwYWNlX3VyaSA9IHdlYmtpdERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlckxvb2t1cE5hbWVz
cGFjZVVSSTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQdHI8V2ViQ29yZTo6
WFBhdGhOU1Jlc29sdmVyPiBjb3JlKFdlYktpdERPTVhQYXRoTlNSZXNvbHZlciogeFBhdGhOU1Jl
c29sdmVyKQoreworICAgIGlmICgheFBhdGhOU1Jlc29sdmVyKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIFJlZlB0cjxXZWJDb3JlOjpYUGF0aE5TUmVzb2x2ZXI+IGNvcmVSZXNvbHZl
cjsKKyAgICBpZiAoV0VCS0lUX0RPTV9JU19OQVRJVkVfWFBBVEhfTlNfUkVTT0xWRVIoeFBhdGhO
U1Jlc29sdmVyKSkKKyAgICAgICAgY29yZVJlc29sdmVyID0gY29yZShXRUJLSVRfRE9NX05BVElW
RV9YUEFUSF9OU19SRVNPTFZFUih4UGF0aE5TUmVzb2x2ZXIpKTsKKyAgICBlbHNlCisgICAgICAg
IGNvcmVSZXNvbHZlciA9IFdlYkNvcmU6OkdPYmplY3RYUGF0aE5TUmVzb2x2ZXI6OmNyZWF0ZSh4
UGF0aE5TUmVzb2x2ZXIpOworICAgIHJldHVybiBjb3JlUmVzb2x2ZXIucmVsZWFzZSgpOworfQor
CitXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIqIGtpdChXZWJDb3JlOjpYUGF0aE5TUmVzb2x2ZXIq
IGNvcmVYUGF0aE5TUmVzb2x2ZXIpCit7CisgICAgaWYgKCFjb3JlWFBhdGhOU1Jlc29sdmVyKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChncG9pbnRlciByZXQgPSBET01PYmpl
Y3RDYWNoZTo6Z2V0KGNvcmVYUGF0aE5TUmVzb2x2ZXIpKQorICAgICAgICByZXR1cm4gV0VCS0lU
X0RPTV9YUEFUSF9OU19SRVNPTFZFUihyZXQpOworCisgICAgcmV0dXJuIFdFQktJVF9ET01fWFBB
VEhfTlNfUkVTT0xWRVIoZ19vYmplY3RfbmV3KFdFQktJVF9ET01fVFlQRV9OQVRJVkVfWFBBVEhf
TlNfUkVTT0xWRVIsICJjb3JlLW9iamVjdCIsIGNvcmVYUGF0aE5TUmVzb2x2ZXIsIG51bGxwdHIp
KTsKK30KKworV2ViQ29yZTo6WFBhdGhOU1Jlc29sdmVyKiBjb3JlKFdlYktpdERPTU5hdGl2ZVhQ
YXRoTlNSZXNvbHZlciogeFBhdGhOU1Jlc29sdmVyKQoreworICAgIHJldHVybiB4UGF0aE5TUmVz
b2x2ZXIgPyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpYUGF0aE5TUmVzb2x2ZXIqPihXRUJLSVRfRE9N
X09CSkVDVCh4UGF0aE5TUmVzb2x2ZXIpLT5jb3JlT2JqZWN0KSA6IG51bGxwdHI7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
Z29iamVjdC9XZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2dvYmplY3QvV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYmNjMzk3MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyLmgKQEAgLTAsMCAr
MSw2MyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAqCisgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg
IDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpZm5kZWYgV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVy
X2gKKyNkZWZpbmUgV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyX2gKKworI2luY2x1ZGUgPGdsaWIt
b2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMuaD4KKworR19C
RUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9ET01fVFlQRV9YUEFUSF9OU19SRVNPTFZFUiAg
ICAgICAgICAgICh3ZWJraXRfZG9tX3hwYXRoX25zX3Jlc29sdmVyX2dldF90eXBlICgpKQorI2Rl
ZmluZSBXRUJLSVRfRE9NX1hQQVRIX05TX1JFU09MVkVSKG9iaikgICAgICAgICAgICAoR19UWVBF
X0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfWFBBVEhfTlNfUkVT
T0xWRVIsIFdlYktpdERPTVhQYXRoTlNSZXNvbHZlcikpCisjZGVmaW5lIFdFQktJVF9ET01fWFBB
VEhfTlNfUkVTT0xWRVJfQ0xBU1Mob2JqKSAgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAo
KG9iaiksIFdFQktJVF9ET01fVFlQRV9YUEFUSF9OU19SRVNPTFZFUiwgV2ViS2l0RE9NWFBhdGhO
U1Jlc29sdmVySWZhY2UpKQorI2RlZmluZSBXRUJLSVRfRE9NX0lTX1hQQVRIX05TX1JFU09MVkVS
KG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmopLCBXRUJLSVRf
RE9NX1RZUEVfWFBBVEhfTlNfUkVTT0xWRVIpKQorI2RlZmluZSBXRUJLSVRfRE9NX1hQQVRIX05T
X1JFU09MVkVSX0dFVF9JRkFDRShvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9JTlRFUkZBQ0Ug
KChvYmopLCBXRUJLSVRfRE9NX1RZUEVfWFBBVEhfTlNfUkVTT0xWRVIsIFdlYktpdERPTVhQYXRo
TlNSZXNvbHZlcklmYWNlKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTVhQYXRoTlNSZXNv
bHZlcklmYWNlIFdlYktpdERPTVhQYXRoTlNSZXNvbHZlcklmYWNlOworCitzdHJ1Y3QgX1dlYktp
dERPTVhQYXRoTlNSZXNvbHZlcklmYWNlIHsKKyAgICBHVHlwZUludGVyZmFjZSBnSWZhY2U7CisK
KyAgICAvKiB2aXJ0dWFsIHRhYmxlICovCisgICAgZ2NoYXIgKigqIGxvb2t1cF9uYW1lc3BhY2Vf
dXJpKShXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIgKnJlc29sdmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICpwcmVmaXgpOwor
CisgICAgdm9pZCAoKl93ZWJraXRkb21fcmVzZXJ2ZWQwKSAodm9pZCk7CisgICAgdm9pZCAoKl93
ZWJraXRkb21fcmVzZXJ2ZWQxKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRkb21fcmVzZXJ2
ZWQyKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRkb21fcmVzZXJ2ZWQzKSAodm9pZCk7Cit9
OworCisKK1dFQktJVF9BUEkgR1R5cGUgd2Via2l0X2RvbV94cGF0aF9uc19yZXNvbHZlcl9nZXRf
dHlwZSh2b2lkKSBHX0dOVUNfQ09OU1Q7CisKKy8qKgorICogd2Via2l0X2RvbV94cGF0aF9uc19y
ZXNvbHZlcl9sb29rdXBfbmFtZXNwYWNlX3VyaToKKyAqIEByZXNvbHZlcjogQSAjV2ViS2l0RE9N
WFBhdGhOU1Jlc29sdmVyCisgKiBAcHJlZml4OiBUaGUgcHJlZml4IHRvIGxvb2t1cAorICoKKyAq
IFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogYSAjZ2NoYXIKKyAqLworV0VCS0lUX0FQSSBnY2hh
ciAqd2Via2l0X2RvbV94cGF0aF9uc19yZXNvbHZlcl9sb29rdXBfbmFtZXNwYWNlX3VyaShXZWJL
aXRET01YUGF0aE5TUmVzb2x2ZXIgKnJlc29sdmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAg
ICAgICAgICAgICAgKnByZWZpeCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBXZWJLaXRE
T01YUGF0aE5TUmVzb2x2ZXJfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvZ29iamVjdC9XZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTVhQYXRoTlNSZXNvbHZlclByaXZhdGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzA3MmY2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01YUGF0aE5TUmVz
b2x2ZXJQcml2YXRlLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgKiAgVGhpcyBmaWxlIGhhcyBi
ZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKi8KKworI2lmbmRlZiBXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJQcml2YXRlX2gKKyNkZWZp
bmUgV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyUHJpdmF0ZV9oCisKKyNpbmNsdWRlICJYUGF0aE5T
UmVzb2x2ZXIuaCIKKyNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVy
Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworI2RlZmluZSBXRUJLSVRfRE9NX1RZ
UEVfTkFUSVZFX1hQQVRIX05TX1JFU09MVkVSICAgICAgICAgICAgKHdlYmtpdF9kb21fbmF0aXZl
X3hwYXRoX25zX3Jlc29sdmVyX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9ET01fTkFUSVZF
X1hQQVRIX05TX1JFU09MVkVSKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNF
X0NBU1QoKG9iaiksIFdFQktJVF9ET01fVFlQRV9OQVRJVkVfWFBBVEhfTlNfUkVTT0xWRVIsIFdl
YktpdERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlcikpCisjZGVmaW5lIFdFQktJVF9ET01fTkFUSVZF
X1hQQVRIX05TX1JFU09MVkVSX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NB
U1QoKGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9OQVRJVkVfWFBBVEhfTlNfUkVTT0xWRVIsIFdl
YktpdERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlckNsYXNzKQorI2RlZmluZSBXRUJLSVRfRE9NX0lT
X05BVElWRV9YUEFUSF9OU19SRVNPTFZFUihvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNU
QU5DRV9UWVBFKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfTkFUSVZFX1hQQVRIX05TX1JFU09MVkVS
KSkKKyNkZWZpbmUgV0VCS0lUX0RPTV9JU19OQVRJVkVfWFBBVEhfTlNfUkVTT0xWRVJfQ0xBU1Mo
a2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBF
X05BVElWRV9YUEFUSF9OU19SRVNPTFZFUikpCisjZGVmaW5lIFdFQktJVF9ET01fTkFUSVZFX1hQ
QVRIX05TX1JFU09MVkVSX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFT
Uygob2JqKSwgIFdFQktJVF9ET01fVFlQRV9OQVRJVkVfWFBBVEhfTlNfUkVTT0xWRVIsIFdlYktp
dERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlckNsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciBXZWJLaXRET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXI7
Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyQ2xhc3MgV2Vi
S2l0RE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyQ2xhc3M7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
UGFzc1JlZlB0cjxXZWJDb3JlOjpYUGF0aE5TUmVzb2x2ZXI+IGNvcmUoV2ViS2l0RE9NWFBhdGhO
U1Jlc29sdmVyKik7CitXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIqIGtpdChXZWJDb3JlOjpYUGF0
aE5TUmVzb2x2ZXIqKTsKK1dlYkNvcmU6OlhQYXRoTlNSZXNvbHZlciogY29yZShXZWJLaXRET01O
YXRpdmVYUGF0aE5TUmVzb2x2ZXIqKTsKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
LyogV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyUHJpdmF0ZV9oICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQppbmRl
eCA0YWRkNWUxLi4xY2MzN2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0KQEAgLTk2OCw3ICs5NjgsNyBAQCBz
dWIgR2VuZXJhdGVGdW5jdGlvbiB7CiAgICAgICAgIGlmICgkcGFyYW1Jc0dET01UeXBlIHx8ICgk
cGFyYW1JRExUeXBlIGVxICJET01TdHJpbmciKSB8fCAoJHBhcmFtSURMVHlwZSBlcSAiQ29tcGFy
ZUhvdyIpKSB7CiAgICAgICAgICAgICAkcGFyYW1OYW1lID0gImNvbnZlcnRlZCIgLiAkY29kZUdl
bmVyYXRvci0+V0tfdWNmaXJzdCgkcGFyYW1OYW1lKTsKICAgICAgICAgfQotICAgICAgICBpZiAo
JHBhcmFtSURMVHlwZSBlcSAiTm9kZUZpbHRlciIpIHsKKyAgICAgICAgaWYgKCRwYXJhbUlETFR5
cGUgZXEgIk5vZGVGaWx0ZXIiIHx8ICRwYXJhbUlETFR5cGUgZXEgIlhQYXRoTlNSZXNvbHZlciIp
IHsKICAgICAgICAgICAgICRwYXJhbU5hbWUgPSAiV1RGOjpnZXRQdHIoIiAuICRwYXJhbU5hbWUg
LiAiKSI7CiAgICAgICAgIH0KICAgICAgICAgcHVzaChAY2FsbEltcGxQYXJhbXMsICRwYXJhbU5h
bWUpOwpAQCAtMTA3Miw3ICsxMDcyLDcgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb24gewogICAgICAg
ICAgICAgcHVzaChAY0JvZHksICIgICAgV1RGOjpTdHJpbmcgJHtjb252ZXJ0ZWRQYXJhbU5hbWV9
ID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KCRwYXJhbU5hbWUpO1xuIik7CiAgICAgICAgIH0gZWxz
aWYgKCRwYXJhbUlETFR5cGUgZXEgIkNvbXBhcmVIb3ciKSB7CiAgICAgICAgICAgICBwdXNoKEBj
Qm9keSwgIiAgICBXZWJDb3JlOjpSYW5nZTo6Q29tcGFyZUhvdyAke2NvbnZlcnRlZFBhcmFtTmFt
ZX0gPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSYW5nZTo6Q29tcGFyZUhvdz4oJHBhcmFtTmFtZSk7
XG4iKTsKLSAgICAgICAgfSBlbHNpZiAoJHBhcmFtSURMVHlwZSBlcSAiTm9kZUZpbHRlciIpIHsK
KyAgICAgICAgfSBlbHNpZiAoJHBhcmFtSURMVHlwZSBlcSAiTm9kZUZpbHRlciIgfHwgJHBhcmFt
SURMVHlwZSBlcSAiWFBhdGhOU1Jlc29sdmVyIikgewogICAgICAgICAgICAgcHVzaChAY0JvZHks
ICIgICAgUmVmUHRyPFdlYkNvcmU6OiRwYXJhbUlETFR5cGU+ICR7Y29udmVydGVkUGFyYW1OYW1l
fSA9IFdlYktpdDo6Y29yZSgkcGFyYW1OYW1lKTtcbiIpOwogICAgICAgICB9IGVsc2lmICgkcGFy
YW1Jc0dET01UeXBlKSB7CiAgICAgICAgICAgICBwdXNoKEBjQm9keSwgIiAgICBXZWJDb3JlOjok
e3BhcmFtSURMVHlwZX0qICR7Y29udmVydGVkUGFyYW1OYW1lfSA9IFdlYktpdDo6Y29yZSgkcGFy
YW1OYW1lKTtcbiIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDAzMGRiMmEuLmE2MWRmYTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxNC0wNi0yNCAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gWFBh
dGhOU1Jlc29sdmVyIHNob3VsZCBiZSBleHBvc2VkIGFzIGFuIGludGVyZmFjZSBpbnN0ZWFkIG9m
IGFzIGEgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzNDAyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCB1bml0IHRlc3RzIHRvIGNoZWNrIFdlYktpdERPTVhQYXRoTlNSZXNvbHZlciBBUEkg
d2hlbiB1c2luZyB0aGUKKyAgICAgICAgbmF0aXZlIG9uZSBhbmQgYSB1c2VyIHByb3ZpZGVkIG9u
ZS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weTogQWRkIFdl
YktpdERPTVhQYXRoTlNSZXNvbHZlcgorICAgICAgICB0byB0aGUgbGlzdCBvZiBHVEsrIHB1Ymxp
YyBBUEkgZXhjZXB0aW9ucy4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJH
dGsvQ01ha2VMaXN0cy50eHQ6IEFkZCBuZXcgZmlsZXMgdG8gY29tcGlsYXRpb24uCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0RPTVhQYXRoTlNSZXNvbHZlclRlc3Qu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKHdlYmtpdFhQYXRoTlNSZXNvbHZlckxvb2t1cE5hbWVzcGFj
ZVVSSSk6CisgICAgICAgICh3ZWJraXRYUGF0aE5TUmVzb2x2ZXJET01YUGF0aE5TUmVzb2x2ZXJJ
ZmFjZUluaXQpOgorICAgICAgICAod2Via2l0X3hwYXRoX25zX3Jlc29sdmVyX2luaXQpOgorICAg
ICAgICAod2Via2l0X3hwYXRoX25zX3Jlc29sdmVyX2NsYXNzX2luaXQpOgorICAgICAgICAoV2Vi
S2l0RE9NWFBhdGhOU1Jlc29sdmVyVGVzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdERPTVhQ
YXRoTlNSZXNvbHZlclRlc3Q6OndlYlBhZ2VGcm9tQXJncyk6CisgICAgICAgIChXZWJLaXRET01Y
UGF0aE5TUmVzb2x2ZXJUZXN0OjpldmFsdWF0ZUZvb0NoaWxkVGV4dEFuZENoZWNrUmVzdWx0KToK
KyAgICAgICAgKFdlYktpdERPTVhQYXRoTlNSZXNvbHZlclRlc3Q6OnRlc3RYUGF0aE5TUmVzb2x2
ZXJOYXRpdmUpOgorICAgICAgICAoV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyVGVzdDo6dGVzdFhQ
YXRoTlNSZXNvbHZlckN1c3RvbSk6CisgICAgICAgIChXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJU
ZXN0OjpydW5UZXN0KToKKyAgICAgICAgKHJlZ2lzdGVyVGVzdHMpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0RE9NWFBhdGhOU1Jlc29sdmVyLmNwcDogQWRk
ZWQuCisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKHRlc3RXZWJLaXRET01YUGF0aE5TUmVz
b2x2ZXJOYXRpdmUpOgorICAgICAgICAodGVzdFdlYktpdERPTVhQYXRoTlNSZXNvbHZlckN1c3Rv
bSk6CisgICAgICAgIChzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAg
ICAgICAoYWZ0ZXJBbGwpOgorICAgICAgICAqIGd0ay93ZWJraXRkb20ucHk6CisgICAgICAgIChX
ZWJLaXRET01Eb2NHZW5lcmF0b3JTZWN0aW9ucy53cml0ZV9zZWN0aW9uKTogQWRkCisgICAgICAg
IFdlYktpdERPTVhQYXRoTlNSZXNvbHZlciB0byB0aGUgbGlzdCBvZiBpbnRlcmZhY2VzLgorCiAy
MDE0LTA2LTI0ICBUb21hcyBQb3BlbGEgIDx0cG9wZWxhQHJlZGhhdC5jb20+CiAKICAgICAgICAg
W0dUS10gU29tZSBvZiBET00gYmluZGluZ3MgbWFjcm9zIGFyZSBtaXNuYW1lZApkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CmluZGV4IDZkYWU5MzIuLjZlMzQ0Y2QgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKQEAgLTE1NCw2ICsxNTQsNyBAQCBf
UEFUSF9SVUxFU19TUEVDSUZJRVIgPSBbCiAgICAgICAiU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
Z29iamVjdC9XZWJLaXRET01EZXByZWNhdGVkLmgiLAogICAgICAgIlNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NRXZlbnRUYXJnZXQuaCIsCiAgICAgICAiU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01Ob2RlRmlsdGVyLmgiLAorICAgICAgIlNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyLmgi
LAogICAgICAgIlNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0IiwK
ICAgICAgICJTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvIiwKICAgICAgICJUb29scy9EdW1wUmVu
ZGVyVHJlZS9ndGsvIl0sCkBAIC0yMjUsNiArMjI2LDcgQEAgX1BBVEhfUlVMRVNfU1BFQ0lGSUVS
ID0gWwogICAgICAgIlNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NRGVw
cmVjYXRlZC5jcHAiLAogICAgICAgIlNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2Vi
S2l0RE9NRXZlbnRUYXJnZXQuY3BwIiwKICAgICAgICJTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
b2JqZWN0L1dlYktpdERPTU5vZGVGaWx0ZXIuY3BwIiwKKyAgICAgICJTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTVhQYXRoTlNSZXNvbHZlci5jcHAiLAogICAgICAgIlNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFt
ZXIxLmNwcCIsCiAgICAgICAiU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAiLAogICAgICAgIlNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIiwKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3Rz
LnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4
dAppbmRleCA5NzA4NTNhLi5mNjZiNzMwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlzdHMudHh0CkBAIC04Miw3ICs4Miw3IEBAIG1hY3Jv
KEFERF9XSzJfVEVTVCB0ZXN0X25hbWUpCiBlbmRtYWNybygpCiAKIEFERF9XSzJfVEVTVF9XRUJf
RVhURU5TSU9OKFdlYkV4dGVuc2lvblRlc3QgV2ViRXh0ZW5zaW9uVGVzdC5jcHApCi1BRERfV0sy
X1RFU1RfV0VCX0VYVEVOU0lPTihXZWJQcm9jZXNzVGVzdCBET01Ob2RlVGVzdC5jcHAgRE9NTm9k
ZUZpbHRlclRlc3QuY3BwIEZyYW1lVGVzdC5jcHAgV2ViUHJvY2Vzc1Rlc3QuY3BwKQorQUREX1dL
Ml9URVNUX1dFQl9FWFRFTlNJT04oV2ViUHJvY2Vzc1Rlc3QgRE9NTm9kZVRlc3QuY3BwIERPTU5v
ZGVGaWx0ZXJUZXN0LmNwcCBET01YUGF0aE5TUmVzb2x2ZXJUZXN0LmNwcCBGcmFtZVRlc3QuY3Bw
IFdlYlByb2Nlc3NUZXN0LmNwcCkKIAogQUREX1dLMl9URVNUKEluc3BlY3RvclRlc3RTZXJ2ZXIg
SW5zcGVjdG9yVGVzdFNlcnZlci5jcHApCiBBRERfV0syX1RFU1QoVGVzdEF1dGhlbnRpY2F0aW9u
IFRlc3RBdXRoZW50aWNhdGlvbi5jcHApCkBAIC05MSw2ICs5MSw3IEBAIEFERF9XSzJfVEVTVChU
ZXN0Q29udGV4dE1lbnUgVGVzdENvbnRleHRNZW51LmNwcCkKIEFERF9XSzJfVEVTVChUZXN0Q29v
a2llTWFuYWdlciBUZXN0Q29va2llTWFuYWdlci5jcHApCiBBRERfV0syX1RFU1QoVGVzdERPTU5v
ZGUgVGVzdERPTU5vZGUuY3BwKQogQUREX1dLMl9URVNUKFRlc3RET01Ob2RlRmlsdGVyIFRlc3RE
T01Ob2RlRmlsdGVyLmNwcCkKK0FERF9XSzJfVEVTVChUZXN0RE9NWFBhdGhOU1Jlc29sdmVyIFRl
c3RET01YUGF0aE5TUmVzb2x2ZXIuY3BwKQogQUREX1dLMl9URVNUKFRlc3REb3dubG9hZHMgVGVz
dERvd25sb2Fkcy5jcHApCiBBRERfV0syX1RFU1QoVGVzdFdlYktpdEZhdmljb25EYXRhYmFzZSBU
ZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcCkKIEFERF9XSzJfVEVTVChUZXN0V2ViS2l0Rmlu
ZENvbnRyb2xsZXIgVGVzdFdlYktpdEZpbmRDb250cm9sbGVyLmNwcCkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9ET01YUGF0aE5TUmVzb2x2ZXJUZXN0
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9ET01YUGF0aE5TUmVz
b2x2ZXJUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTRkNmFl
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3Rr
L0RPTVhQYXRoTlNSZXNvbHZlclRlc3QuY3BwCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1
ZGUgIldlYlByb2Nlc3NUZXN0LmgiCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUgPHdl
YmtpdDIvd2Via2l0LXdlYi1leHRlbnNpb24uaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5p
cXVlUHRyLmg+CisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRYUGF0aE5TUmVzb2x2ZXIgeworICAg
IEdPYmplY3QgcGFyZW50OworfSBXZWJLaXRYUGF0aE5TUmVzb2x2ZXI7CisKK3R5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRYUGF0aE5TUmVzb2x2ZXJDbGFzcyB7CisgICAgR09iamVjdENsYXNzIHBhcmVu
dENsYXNzOworfSBXZWJLaXRYUGF0aE5TUmVzb2x2ZXJDbGFzczsKKworc3RhdGljIGNoYXIqIHdl
YmtpdFhQYXRoTlNSZXNvbHZlckxvb2t1cE5hbWVzcGFjZVVSSShXZWJLaXRET01YUGF0aE5TUmVz
b2x2ZXIqIHJlc29sdmVyLCBjb25zdCBjaGFyKiBwcmVmaXgpCit7CisgICAgaWYgKCFnX3N0cmNt
cDAocHJlZml4LCAiZm9vIikpCisgICAgICAgIHJldHVybiBnX3N0cmR1cCgiaHR0cDovL3d3dy5l
eGFtcGxlLmNvbSIpOworCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyB2b2lkIHdl
YmtpdFhQYXRoTlNSZXNvbHZlckRPTVhQYXRoTlNSZXNvbHZlcklmYWNlSW5pdChXZWJLaXRET01Y
UGF0aE5TUmVzb2x2ZXJJZmFjZSogaWZhY2UpCit7CisgICAgaWZhY2UtPmxvb2t1cF9uYW1lc3Bh
Y2VfdXJpID0gd2Via2l0WFBhdGhOU1Jlc29sdmVyTG9va3VwTmFtZXNwYWNlVVJJOworfQorCitH
X0RFRklORV9UWVBFX1dJVEhfQ09ERShXZWJLaXRYUGF0aE5TUmVzb2x2ZXIsIHdlYmtpdF94cGF0
aF9uc19yZXNvbHZlciwgR19UWVBFX09CSkVDVCwgR19JTVBMRU1FTlRfSU5URVJGQUNFKFdFQktJ
VF9ET01fVFlQRV9YUEFUSF9OU19SRVNPTFZFUiwgd2Via2l0WFBhdGhOU1Jlc29sdmVyRE9NWFBh
dGhOU1Jlc29sdmVySWZhY2VJbml0KSkKKworc3RhdGljIHZvaWQgd2Via2l0X3hwYXRoX25zX3Jl
c29sdmVyX2luaXQoV2ViS2l0WFBhdGhOU1Jlc29sdmVyKikKK3sKK30KKworc3RhdGljIHZvaWQg
d2Via2l0X3hwYXRoX25zX3Jlc29sdmVyX2NsYXNzX2luaXQoV2ViS2l0WFBhdGhOU1Jlc29sdmVy
Q2xhc3MqKQoreworfQorCitjbGFzcyBXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJUZXN0IDogcHVi
bGljIFdlYlByb2Nlc3NUZXN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJQ
cm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IFdlYktpdERPTVhQYXRo
TlNSZXNvbHZlclRlc3QoKSk7IH0KKworcHJpdmF0ZToKKyAgICBndWludDY0IHdlYlBhZ2VGcm9t
QXJncyhHVmFyaWFudCogYXJncykKKyAgICB7CisgICAgICAgIEdWYXJpYW50SXRlciBpdGVyOwor
ICAgICAgICBnX3ZhcmlhbnRfaXRlcl9pbml0KCZpdGVyLCBhcmdzKTsKKworICAgICAgICBjb25z
dCBjaGFyKiBrZXk7CisgICAgICAgIEdWYXJpYW50KiB2YWx1ZTsKKyAgICAgICAgd2hpbGUgKGdf
dmFyaWFudF9pdGVyX2xvb3AoJml0ZXIsICJ7JnN2fSIsICZrZXksICZ2YWx1ZSkpIHsKKyAgICAg
ICAgICAgIGlmICghc3RyY21wKGtleSwgInBhZ2VJRCIpICYmIGdfdmFyaWFudF9jbGFzc2lmeSh2
YWx1ZSkgPT0gR19WQVJJQU5UX0NMQVNTX1VJTlQ2NCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
Z192YXJpYW50X2dldF91aW50NjQodmFsdWUpOworICAgICAgICB9CisKKyAgICAgICAgZ19hc3Nl
cnRfbm90X3JlYWNoZWQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdm9pZCBl
dmFsdWF0ZUZvb0NoaWxkVGV4dEFuZENoZWNrUmVzdWx0KFdlYktpdERPTURvY3VtZW50KiBkb2N1
bWVudCwgV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyKiByZXNvbHZlcikKKyAgICB7CisgICAgICAg
IFdlYktpdERPTUVsZW1lbnQqIGRvY3VtZW50RWxlbWVudCA9IHdlYmtpdF9kb21fZG9jdW1lbnRf
Z2V0X2RvY3VtZW50X2VsZW1lbnQoZG9jdW1lbnQpOworICAgICAgICBnX2Fzc2VydChXRUJLSVRf
RE9NX0lTX0VMRU1FTlQoZG9jdW1lbnRFbGVtZW50KSk7CisKKyAgICAgICAgLy8gRklYTUU6IFVz
ZSBXRUJLSVRfRE9NX1hQQVRIX1JFU1VMVF9PUkRFUkVEX05PREVfSVRFUkFUT1JfVFlQRSB3aGVu
IGNvbnN0YW50cyBhcmUgc3VwcG9ydGVkLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzOTgzLgorICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgc2hvcnQgb3JkZXJlZE5vZGVJZXJhdG9yVHlwZSA9IDU7CisgICAgICAgIFdlYktpdERPTVhQ
YXRoUmVzdWx0KiByZXN1bHQgPSB3ZWJraXRfZG9tX2RvY3VtZW50X2V2YWx1YXRlKGRvY3VtZW50
LCAiZm9vOmNoaWxkL3RleHQoKSIsIFdFQktJVF9ET01fTk9ERShkb2N1bWVudEVsZW1lbnQpLCBy
ZXNvbHZlciwgb3JkZXJlZE5vZGVJZXJhdG9yVHlwZSwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAg
ICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfWFBBVEhfUkVTVUxUKHJlc3VsdCkpOworCisgICAg
ICAgIFdlYktpdERPTU5vZGUqIG5vZGVSZXN1bHQgPSB3ZWJraXRfZG9tX3hwYXRoX3Jlc3VsdF9p
dGVyYXRlX25leHQocmVzdWx0LCBudWxscHRyKTsKKyAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RP
TV9JU19OT0RFKG5vZGVSZXN1bHQpKTsKKworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IG5vZGVW
YWx1ZSh3ZWJraXRfZG9tX25vZGVfZ2V0X25vZGVfdmFsdWUobm9kZVJlc3VsdCkpOworICAgICAg
ICBnX2Fzc2VydF9jbXBzdHIobm9kZVZhbHVlLmdldCgpLCA9PSwgIlNVQ0NFU1MiKTsKKyAgICB9
CisKKyAgICBib29sIHRlc3RYUGF0aE5TUmVzb2x2ZXJOYXRpdmUoV2ViS2l0V2ViRXh0ZW5zaW9u
KiBleHRlbnNpb24sIEdWYXJpYW50KiBhcmdzKQorICAgIHsKKyAgICAgICAgV2ViS2l0V2ViUGFn
ZSogcGFnZSA9IHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9wYWdlKGV4dGVuc2lvbiwgd2ViUGFn
ZUZyb21BcmdzKGFyZ3MpKTsKKyAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0lTX1dFQl9QQUdFKHBh
Z2UpKTsKKyAgICAgICAgV2ViS2l0RE9NRG9jdW1lbnQqIGRvY3VtZW50ID0gd2Via2l0X3dlYl9w
YWdlX2dldF9kb21fZG9jdW1lbnQocGFnZSk7CisgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01f
SVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsKKworICAgICAgICBXZWJLaXRET01YUGF0aE5TUmVzb2x2
ZXIqIHJlc29sdmVyID0gd2Via2l0X2RvbV9kb2N1bWVudF9jcmVhdGVfbnNfcmVzb2x2ZXIoZG9j
dW1lbnQsIFdFQktJVF9ET01fTk9ERSh3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9kb2N1bWVudF9l
bGVtZW50KGRvY3VtZW50KSkpOworICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX1hQQVRI
X05TX1JFU09MVkVSKHJlc29sdmVyKSk7CisgICAgICAgIGV2YWx1YXRlRm9vQ2hpbGRUZXh0QW5k
Q2hlY2tSZXN1bHQoZG9jdW1lbnQsIHJlc29sdmVyKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICBib29sIHRlc3RYUGF0aE5TUmVzb2x2ZXJDdXN0b20oV2ViS2l0V2ViRXh0
ZW5zaW9uKiBleHRlbnNpb24sIEdWYXJpYW50KiBhcmdzKQorICAgIHsKKyAgICAgICAgV2ViS2l0
V2ViUGFnZSogcGFnZSA9IHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9wYWdlKGV4dGVuc2lvbiwg
d2ViUGFnZUZyb21BcmdzKGFyZ3MpKTsKKyAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0lTX1dFQl9Q
QUdFKHBhZ2UpKTsKKyAgICAgICAgV2ViS2l0RE9NRG9jdW1lbnQqIGRvY3VtZW50ID0gd2Via2l0
X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQocGFnZSk7CisgICAgICAgIGdfYXNzZXJ0KFdFQktJ
VF9ET01fSVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsKKworICAgICAgICBHUmVmUHRyPFdlYktpdERP
TVhQYXRoTlNSZXNvbHZlcj4gcmVzb2x2ZXIgPSBhZG9wdEdSZWYoV0VCS0lUX0RPTV9YUEFUSF9O
U19SRVNPTFZFUihnX29iamVjdF9uZXcod2Via2l0X3hwYXRoX25zX3Jlc29sdmVyX2dldF90eXBl
KCksIG51bGxwdHIpKSk7CisgICAgICAgIGV2YWx1YXRlRm9vQ2hpbGRUZXh0QW5kQ2hlY2tSZXN1
bHQoZG9jdW1lbnQsIHJlc29sdmVyLmdldCgpKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgcnVuVGVzdChjb25zdCBjaGFyKiB0ZXN0TmFtZSwgV2Vi
S2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIEdWYXJpYW50KiBhcmdzKQorICAgIHsKKyAgICAg
ICAgaWYgKCFzdHJjbXAodGVzdE5hbWUsICJuYXRpdmUiKSkKKyAgICAgICAgICAgIHJldHVybiB0
ZXN0WFBhdGhOU1Jlc29sdmVyTmF0aXZlKGV4dGVuc2lvbiwgYXJncyk7CisgICAgICAgIGlmICgh
c3RyY21wKHRlc3ROYW1lLCAiY3VzdG9tIikpCisgICAgICAgICAgICByZXR1cm4gdGVzdFhQYXRo
TlNSZXNvbHZlckN1c3RvbShleHRlbnNpb24sIGFyZ3MpOworCisgICAgICAgIGdfYXNzZXJ0X25v
dF9yZWFjaGVkKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9OworCitzdGF0aWMg
dm9pZCBfX2F0dHJpYnV0ZV9fKChjb25zdHJ1Y3RvcikpIHJlZ2lzdGVyVGVzdHMoKQoreworICAg
IFJFR0lTVEVSX1RFU1QoV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyVGVzdCwgIldlYktpdERPTVhQ
YXRoTlNSZXNvbHZlci9uYXRpdmUiKTsKKyAgICBSRUdJU1RFUl9URVNUKFdlYktpdERPTVhQYXRo
TlNSZXNvbHZlclRlc3QsICJXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIvY3VzdG9tIik7Cit9CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdERPTVhQ
YXRoTlNSZXNvbHZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
VGVzdERPTVhQYXRoTlNSZXNvbHZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMTE3ZTgxYgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9UZXN0RE9NWFBhdGhOU1Jlc29sdmVyLmNwcApAQCAtMCwwICsxLDkyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIsMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpbmNsdWRlICJXZWJLaXRUZXN0U2VydmVyLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Rlc3RSdW5uZXIuaCIKKyNpbmNsdWRlICJXZWJWaWV3VGVzdC5oIgorI2luY2x1ZGUgPGd0ay9n
dGsuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4KKworc3RhdGljIFdlYlByb2Nlc3NU
ZXN0UnVubmVyKiB0ZXN0UnVubmVyOworc3RhdGljIFdlYktpdFRlc3RTZXJ2ZXIqIGtTZXJ2ZXI7
CisKK3N0YXRpYyB2b2lkIHJ1blRlc3QoV2ViVmlld1Rlc3QqIHRlc3QsIGNvbnN0IGNoYXIqIG5h
bWUpCit7CisgICAgR1ZhcmlhbnRCdWlsZGVyIGJ1aWxkZXI7CisgICAgZ192YXJpYW50X2J1aWxk
ZXJfaW5pdCgmYnVpbGRlciwgR19WQVJJQU5UX1RZUEVfVkFSRElDVCk7CisgICAgZ192YXJpYW50
X2J1aWxkZXJfYWRkKCZidWlsZGVyLCAie3N2fSIsICJwYWdlSUQiLCBnX3ZhcmlhbnRfbmV3X3Vp
bnQ2NCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3BhZ2VfaWQodGVzdC0+bV93ZWJWaWV3KSkpOworICAg
IGdfYXNzZXJ0KHRlc3RSdW5uZXItPnJ1blRlc3QoIldlYktpdERPTVhQYXRoTlNSZXNvbHZlciIs
IG5hbWUsIGdfdmFyaWFudF9idWlsZGVyX2VuZCgmYnVpbGRlcikpKTsKK30KKworc3RhdGljIHZv
aWQgdGVzdFdlYktpdERPTVhQYXRoTlNSZXNvbHZlck5hdGl2ZShXZWJWaWV3VGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKK3sKKyAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBh
dGgoIi9uYXRpdmUiKS5kYXRhKCkpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgp
OworICAgIHJ1blRlc3QodGVzdCwgIm5hdGl2ZSIpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2Vi
S2l0RE9NWFBhdGhOU1Jlc29sdmVyQ3VzdG9tKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2lu
dGVyKQoreworICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2N1c3Rv
bSIpLmRhdGEoKSk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgcnVu
VGVzdCh0ZXN0LCAiY3VzdG9tIik7Cit9CisKK3N0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNv
dXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHBhdGgs
IEdIYXNoVGFibGUqLCBTb3VwQ2xpZW50Q29udGV4dCosIGdwb2ludGVyKQoreworICAgIGlmICht
ZXNzYWdlLT5tZXRob2QgIT0gU09VUF9NRVRIT0RfR0VUKSB7CisgICAgICAgIHNvdXBfbWVzc2Fn
ZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX05PVF9JTVBMRU1FTlRFRCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi9uYXRpdmUi
KSkgeworICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRV
U19PSyk7CisgICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2FwcGVuZChtZXNzYWdlLT5yZXNw
b25zZV9oZWFkZXJzLCAiQ29udGVudC1UeXBlIiwgInRleHQveG1sIik7CisgICAgICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBuYXRpdmVYTUwgPSAiPHJvb3QgeG1sbnM6Zm9vPSdodHRwOi8vd3d3LmV4
YW1wbGUub3JnJz48Zm9vOmNoaWxkPlNVQ0NFU1M8L2ZvbzpjaGlsZD48L3Jvb3Q+IjsKKyAgICAg
ICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBf
TUVNT1JZX1NUQVRJQywgbmF0aXZlWE1MLCBzdHJsZW4obmF0aXZlWE1MKSk7CisgICAgICAgIHNv
dXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOworICAgIH0g
ZWxzZSBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi9jdXN0b20iKSkgeworICAgICAgICBzb3VwX21l
c3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7CisgICAgICAgIHNvdXBf
bWVzc2FnZV9oZWFkZXJzX2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9oZWFkZXJzLCAiQ29udGVu
dC1UeXBlIiwgInRleHQveG1sIik7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjdXN0b21Y
TUwgPSAiPHJvb3QgeG1sbnM9J2h0dHA6Ly93d3cuZXhhbXBsZS5jb20nPjxjaGlsZD5TVUNDRVNT
PC9jaGlsZD48L3Jvb3Q+IjsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3Nh
Z2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywgY3VzdG9tWE1MLCBzdHJsZW4o
Y3VzdG9tWE1MKSk7CisgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2Ut
PnJlc3BvbnNlX2JvZHkpOworICAgIH0gZWxzZQorICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0
YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19OT1RfRk9VTkQpOworfQorCit2b2lkIGJlZm9yZUFs
bCgpCit7CisgICAga1NlcnZlciA9IG5ldyBXZWJLaXRUZXN0U2VydmVyKCk7CisgICAga1NlcnZl
ci0+cnVuKHNlcnZlckNhbGxiYWNrKTsKKworICAgIHRlc3RSdW5uZXIgPSBuZXcgV2ViUHJvY2Vz
c1Rlc3RSdW5uZXIoKTsKKyAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3dlYl9leHRlbnNpb25z
X2RpcmVjdG9yeSh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSwgV0VCS0lUX1RFU1Rf
V0VCX0VYVEVOU0lPTlNfRElSKTsKKworICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdERPTVhQ
YXRoTlNSZXNvbHZlciIsICJuYXRpdmUiLCB0ZXN0V2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyTmF0
aXZlKTsKKyAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIiLCAi
Y3VzdG9tIiwgdGVzdFdlYktpdERPTVhQYXRoTlNSZXNvbHZlckN1c3RvbSk7Cit9CisKK3ZvaWQg
YWZ0ZXJBbGwoKQoreworICAgIGRlbGV0ZSB0ZXN0UnVubmVyOworICAgIGRlbGV0ZSBrU2VydmVy
OworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL3dlYmtpdGRvbS5weSBiL1Rvb2xzL2d0ay93ZWJr
aXRkb20ucHkKaW5kZXggYjQ0N2U4OS4uYzQ2YzcyYiAxMDA3NTUKLS0tIGEvVG9vbHMvZ3RrL3dl
YmtpdGRvbS5weQorKysgYi9Ub29scy9ndGsvd2Via2l0ZG9tLnB5CkBAIC0xMzMsNyArMTMzLDcg
QEAgY2xhc3MgV2ViS2l0RE9NRG9jR2VuZXJhdG9yU2VjdGlvbnMoV2ViS2l0RE9NRG9jR2VuZXJh
dG9yKToKICAgICBkZWYgd3JpdGVfc2VjdGlvbihzZWxmLCBzeW1ib2xfZmlsZSk6CiAgICAgICAg
IGNsYXNzX25hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHN5bWJvbF9maWxlKS5yZXBsYWNlKCIuc3lt
Ym9scyIsICIiKQogICAgICAgICBpc19jdXN0b20gPSBjbGFzc19uYW1lID09ICdXZWJLaXRET01D
dXN0b20nCi0gICAgICAgIGlzX2ludGVyZmFjZSA9IGNsYXNzX25hbWUgaW4gWydXZWJLaXRET01F
dmVudFRhcmdldCcsICdXZWJLaXRET01Ob2RlRmlsdGVyJ10KKyAgICAgICAgaXNfaW50ZXJmYWNl
ID0gY2xhc3NfbmFtZSBpbiBbJ1dlYktpdERPTUV2ZW50VGFyZ2V0JywgJ1dlYktpdERPTU5vZGVG
aWx0ZXInLCAnV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyJ10KICAgICAgICAgaXNfb2JqZWN0ID0g
Y2xhc3NfbmFtZSA9PSAnV2ViS2l0RE9NT2JqZWN0JwogICAgICAgICBzZWxmLndyaXRlKCc8U0VD
VElPTj5cbicpCiAgICAgICAgIHNlbGYud3JpdGUoJzxGSUxFPiVzPC9GSUxFPlxuPFRJVExFPiVz
PC9USVRMRT5cbicgJSAoY2xhc3NfbmFtZSwgY2xhc3NfbmFtZSkpCg==
</data>
<flag name="review"
          id="258306"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>