<?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>196602</bug_id>
          
          <creation_ts>2019-04-04 08:13:00 -0700</creation_ts>
          <short_desc>[ATK] Cleanup WebKitAccessibleHyperlink</short_desc>
          <delta_ts>2019-04-09 02:01:42 -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>Accessibility</component>
          <version>WebKit 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, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1524228</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-04-04 08:13:00 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524229</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-04-04 08:14:35 -0700</bug_when>
    <thetext>&lt;rdar://problem/49607151&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524230</commentid>
    <comment_count>2</comment_count>
      <attachid>366714</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-04-04 08:19:22 -0700</bug_when>
    <thetext>Created attachment 366714
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525159</commentid>
    <comment_count>3</comment_count>
      <attachid>366926</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-04-08 04:45:27 -0700</bug_when>
    <thetext>Created attachment 366926
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525418</commentid>
    <comment_count>4</comment_count>
      <attachid>366926</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-04-08 15:13:47 -0700</bug_when>
    <thetext>Comment on attachment 366926
Patch

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

&gt; Source/WebCore/accessibility/atk/WebKitAccessibleHyperlink.cpp:-418
&gt; -    static volatile gsize typeVolatile = 0;
&gt; -
&gt; -    if (g_once_init_enter(&amp;typeVolatile)) {
&gt; -        static const GTypeInfo tinfo = {
&gt; -            sizeof(WebKitAccessibleHyperlinkClass),
&gt; -            (GBaseInitFunc) 0,
&gt; -            (GBaseFinalizeFunc) 0,
&gt; -            (GClassInitFunc)(GCallback) webkitAccessibleHyperlinkClassInit,
&gt; -            (GClassFinalizeFunc) 0,
&gt; -            0, /* class data */
&gt; -            sizeof(WebKitAccessibleHyperlink), /* instance size */
&gt; -            0, /* nb preallocs */
&gt; -            (GInstanceInitFunc)(GCallback) webkitAccessibleHyperlinkInit,
&gt; -            0 /* value table */
&gt; -        };
&gt; -
&gt; -        static const GInterfaceInfo actionInfo = {
&gt; -            (GInterfaceInitFunc)(GCallback)atkActionInterfaceInit,
&gt; -            (GInterfaceFinalizeFunc) 0, 0
&gt; -        };
&gt; -
&gt; -        GType type = g_type_register_static(ATK_TYPE_HYPERLINK, &quot;WebKitAccessibleHyperlink&quot;, &amp;tinfo, GTypeFlags(0));
&gt; -        g_type_add_interface_static(type, ATK_TYPE_ACTION, &amp;actionInfo);
&gt; -
&gt; -        g_once_init_leave(&amp;typeVolatile, type);
&gt; -    }

Heh, this is *really* old school!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525593</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-04-09 02:01:42 -0700</bug_when>
    <thetext>Committed r244072: &lt;https://trac.webkit.org/changeset/244072&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366714</attachid>
            <date>2019-04-04 08:19:22 -0700</date>
            <delta_ts>2019-04-08 04:45:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-a11y-hyperlink-cleanup.diff</filename>
            <type>text/plain</type>
            <size>28630</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNDE0ZjFlNTM1NC4uNzcyOGMyZWI5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAxOS0wNC0wNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0FUS10gQ2xlYW51cCBXZWJLaXRBY2Nlc3NpYmxlSHlwZXJs
aW5rCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTY2
MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGVh
bnVwczoKKworICAgICAgICAgLSBSZW5hbWUgd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua05ldygp
IGFzIHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRPckNyZWF0ZSgpIGFuZCBtb3ZlIHRoZSBj
b2RlIHRvIGdldC9zZXQKKyAgICAgICAgICAgdGhlIG9iamVjdCBkYXRhIGhlcmUuCisgICAgICAg
ICAtIFVzZSBXRUJLSVRfREVGSU5FX1RZUEUgaW5zdGVhZCBvZiBjdXN0b20gdHlwZSByZWdpc3Ry
YXRpb24uIFRoaXMgZW5zdXJlcyB0aGF0IGFsbCBDU3RyaW5ncyB1c2VkIGluIHByaXZhdGUKKyAg
ICAgICAgICAgc3RydWN0IGFyZSBubyBsb25nZXIgbGVha2VkLgorICAgICAgICAgLSBSZW1vdmUg
YWxsIGNvbmZ1c2luZyBjb3JlKCkgZnVuY3Rpb25zIGFuZCBzaW1wbHkgdXNlIHdlYmtpdEFjY2Vz
c2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KCkuCisgICAgICAgICAtIFVzZSBudWxscHRyIGlu
c3RlYWQgb2YgMCBhbmQgb3RoZXIgY29kaW5nIHN0eWxlIGlzc3Vlcy4KKworICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwOgorICAgICAgICAo
d2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0FjdGlvbkRvQWN0aW9uKToKKyAgICAgICAgKHdlYmtp
dEFjY2Vzc2libGVIeXBlcmxpbmtBY3Rpb25HZXROQWN0aW9ucyk6CisgICAgICAgICh3ZWJraXRB
Y2Nlc3NpYmxlSHlwZXJsaW5rQWN0aW9uR2V0RGVzY3JpcHRpb24pOgorICAgICAgICAod2Via2l0
QWNjZXNzaWJsZUh5cGVybGlua0FjdGlvbkdldEtleWJpbmRpbmcpOgorICAgICAgICAod2Via2l0
QWNjZXNzaWJsZUh5cGVybGlua0FjdGlvbkdldE5hbWUpOgorICAgICAgICAoYXRrX2FjdGlvbl9p
bnRlcmZhY2VfaW5pdCk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0VVJJ
KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRPYmplY3QpOgorICAgICAg
ICAocmFuZ2VMZW5ndGhGb3JPYmplY3QpOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVy
bGlua0dldFN0YXJ0SW5kZXgpOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dl
dEVuZEluZGV4KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtJc1ZhbGlkKToK
KyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXROQW5jaG9ycyk6CisgICAgICAg
ICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rSXNTZWxlY3RlZExpbmspOgorICAgICAgICAod2Vi
a2l0QWNjZXNzaWJsZUh5cGVybGlua0dldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdEFjY2Vz
c2libGVIeXBlcmxpbmtTZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfYWNjZXNzaWJsZV9o
eXBlcmxpbmtfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5r
R2V0T3JDcmVhdGUpOgorICAgICAgICAoY29yZSk6IERlbGV0ZWQuCisgICAgICAgIChhdGtBY3Rp
b25JbnRlcmZhY2VJbml0KTogRGVsZXRlZC4KKyAgICAgICAgKGdldFJhbmdlTGVuZ3RoRm9yT2Jq
ZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtGaW5hbGl6
ZSk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rQ2xhc3NJbml0
KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtJbml0KTogRGVs
ZXRlZC4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRUeXBlKTogRGVsZXRl
ZC4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtOZXcpOiBEZWxldGVkLgorICAg
ICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEFjY2Vzc2liaWxpdHlPYmplY3QpOiBE
ZWxldGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBl
cmxpbmsuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50
ZXJmYWNlSHlwZXJsaW5rSW1wbC5jcHA6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJs
aW5rSW1wbEdldEh5cGVybGluayk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5r
SW1wbEludGVyZmFjZUluaXQpOgorCiAyMDE5LTA0LTA0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQVRLXSBDbGVhbnVwIGFjY2Vzc2libGUg
d3JhcHBlciBiYXNlIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwCmluZGV4IDcyMTJk
YjJlY2JjLi5hYmM3OGE2MjI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAKQEAgLTM0
LDEzICszNCwxMyBAQAogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIldlYktp
dEFjY2Vzc2libGUuaCIKICNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlVXRpbC5oIgorI2luY2x1
ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
Ci0jaW5jbHVkZSA8YXRrL2F0ay5oPgotI2luY2x1ZGUgPGdsaWIuaD4KLQogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKK3N0YXRpYyB2b2lkIHdlYmtpdF9hY2Nlc3NpYmxlX2h5cGVybGlua19h
dGtfYWN0aW9uX2ludGVyZmFjZV9pbml0KEF0a0FjdGlvbklmYWNlKik7CisKIHN0cnVjdCBfV2Vi
S2l0QWNjZXNzaWJsZUh5cGVybGlua1ByaXZhdGUgewogICAgIFdlYktpdEFjY2Vzc2libGUqIGh5
cGVybGlua0ltcGw7CiAKQEAgLTQ5LDcgKzQ5LDkgQEAgc3RydWN0IF9XZWJLaXRBY2Nlc3NpYmxl
SHlwZXJsaW5rUHJpdmF0ZSB7CiAgICAgQ1N0cmluZyBhY3Rpb25LZXlCaW5kaW5nOwogfTsKIAot
I2RlZmluZSBXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTktfR0VUX1BSSVZBVEUob2JqKSAoR19U
WVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9BQ0NFU1NJQkxFX0hZ
UEVSTElOSywgV2ViS2l0QWNjZXNzaWJsZUh5cGVybGlua1ByaXZhdGUpKQorV0VCS0lUX0RFRklO
RV9UWVBFX1dJVEhfQ09ERSgKKyAgICBXZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLCB3ZWJraXRf
YWNjZXNzaWJsZV9oeXBlcmxpbmssIEFUS19UWVBFX0hZUEVSTElOSywKKyAgICBHX0lNUExFTUVO
VF9JTlRFUkZBQ0UoQVRLX1RZUEVfQUNUSU9OLCB3ZWJraXRfYWNjZXNzaWJsZV9oeXBlcmxpbmtf
YXRrX2FjdGlvbl9pbnRlcmZhY2VfaW5pdCkpCiAKIGVudW0gewogICAgIFBST1BfMCwKQEAgLTU3
LDEyMCArNTksNjMgQEAgZW51bSB7CiAgICAgUFJPUF9IWVBFUkxJTktfSU1QTAogfTsKIAotc3Rh
dGljIGdwb2ludGVyIHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtQYXJlbnRDbGFzcyA9IDA7Ci0K
LXN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlKFdlYktpdEFjY2Vzc2libGUqIGFjY2Vz
c2libGUpCi17Ci0gICAgaWYgKCFhY2Nlc3NpYmxlIHx8ICFXRUJLSVRfSVNfQUNDRVNTSUJMRShh
Y2Nlc3NpYmxlKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gJndlYmtpdEFjY2Vz
c2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KGFjY2Vzc2libGUpOwotfQotCi1zdGF0aWMgQWNj
ZXNzaWJpbGl0eU9iamVjdCogY29yZShXZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rKiBsaW5rKQot
ewotICAgIGlmICghbGluaykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gY29yZShs
aW5rLT5wcml2LT5oeXBlcmxpbmtJbXBsKTsKLX0KLQotc3RhdGljIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGNvcmUoQXRrSHlwZXJsaW5rKiBsaW5rKQotewotICAgIGlmICghV0VCS0lUX0lTX0FDQ0VT
U0lCTEVfSFlQRVJMSU5LKGxpbmspKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHJldHVybiBj
b3JlKFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhsaW5rKSk7Ci19Ci0KLXN0YXRpYyBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBjb3JlKEF0a0FjdGlvbiogYWN0aW9uKQotewotICAgIHJldHVybiBj
b3JlKFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhhY3Rpb24pKTsKLX0KLQotCi1zdGF0aWMg
Z2Jvb2xlYW4gd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0FjdGlvbkRvQWN0aW9uKEF0a0FjdGlv
biogYWN0aW9uLCBnaW50IGluZGV4KQorc3RhdGljIGdib29sZWFuIHdlYmtpdEFjY2Vzc2libGVI
eXBlcmxpbmtBY3Rpb25Eb0FjdGlvbihBdGtBY3Rpb24qIGFjdGlvbiwgZ2ludCkKIHsKLSAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfQUNDRVNTSUJMRV9IWVBFUkxJTksoYWN0aW9u
KSwgRkFMU0UpOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9BQ0NFU1NJQkxFX0hZ
UEVSTElOSyhhY3Rpb24pLT5wcml2LT5oeXBlcmxpbmtJbXBsLCBGQUxTRSk7Ci0gICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoIWluZGV4LCBGQUxTRSk7Ci0gICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nl
c3NpYmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhhY3Rpb24pLT5wcml2
LT5oeXBlcmxpbmtJbXBsLCBGQUxTRSk7CisgICAgYXV0byogYWNjZXNzaWJsZUh5cGVybGluayA9
IFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhhY3Rpb24pOworICAgIHJldHVyblZhbElmV2Vi
S2l0QWNjZXNzaWJsZUlzSW52YWxpZChhY2Nlc3NpYmxlSHlwZXJsaW5rLT5wcml2LT5oeXBlcmxp
bmtJbXBsLCBGQUxTRSk7CiAKLSAgICBpZiAoIUFUS19JU19BQ1RJT04oV0VCS0lUX0FDQ0VTU0lC
TEVfSFlQRVJMSU5LKGFjdGlvbiktPnByaXYtPmh5cGVybGlua0ltcGwpKQorICAgIGlmICghQVRL
X0lTX0FDVElPTihhY2Nlc3NpYmxlSHlwZXJsaW5rLT5wcml2LT5oeXBlcmxpbmtJbXBsKSkKICAg
ICAgICAgcmV0dXJuIEZBTFNFOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVj
dCA9IGNvcmUoYWN0aW9uKTsKLSAgICBpZiAoIWNvcmVPYmplY3QpCi0gICAgICAgIHJldHVybiBG
QUxTRTsKLQotICAgIHJldHVybiBjb3JlT2JqZWN0LT5wZXJmb3JtRGVmYXVsdEFjdGlvbigpOwor
ICAgIGF1dG8mIGNvcmVPYmplY3QgPSB3ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9i
amVjdChhY2Nlc3NpYmxlSHlwZXJsaW5rLT5wcml2LT5oeXBlcmxpbmtJbXBsKTsKKyAgICByZXR1
cm4gY29yZU9iamVjdC5wZXJmb3JtRGVmYXVsdEFjdGlvbigpOwogfQogCiBzdGF0aWMgZ2ludCB3
ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rQWN0aW9uR2V0TkFjdGlvbnMoQXRrQWN0aW9uKiBhY3Rp
b24pCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0FDQ0VTU0lCTEVfSFlQ
RVJMSU5LKGFjdGlvbiksIDApOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9BQ0NF
U1NJQkxFX0hZUEVSTElOSyhhY3Rpb24pLT5wcml2LT5oeXBlcmxpbmtJbXBsLCAwKTsKLSAgICBy
ZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEVfSFlQ
RVJMSU5LKGFjdGlvbiktPnByaXYtPmh5cGVybGlua0ltcGwsIDApOwotCi0gICAgaWYgKCFBVEtf
SVNfQUNUSU9OKFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhhY3Rpb24pLT5wcml2LT5oeXBl
cmxpbmtJbXBsKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgYXV0byogYWNjZXNzaWJsZUh5cGVy
bGluayA9IFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhhY3Rpb24pOworICAgIHJldHVyblZh
bElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChhY2Nlc3NpYmxlSHlwZXJsaW5rLT5wcml2LT5o
eXBlcmxpbmtJbXBsLCAwKTsKIAotICAgIHJldHVybiAxOworICAgIHJldHVybiBBVEtfSVNfQUNU
SU9OKGFjY2Vzc2libGVIeXBlcmxpbmstPnByaXYtPmh5cGVybGlua0ltcGwpID8gMSA6IDA7CiB9
CiAKLXN0YXRpYyBjb25zdCBnY2hhciogd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0FjdGlvbkdl
dERlc2NyaXB0aW9uKEF0a0FjdGlvbiogYWN0aW9uLCBnaW50IGluZGV4KQorc3RhdGljIGNvbnN0
IGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rQWN0aW9uR2V0RGVzY3JpcHRpb24oQXRr
QWN0aW9uKiBhY3Rpb24sIGdpbnQpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0lTX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGFjdGlvbiksIDApOwotICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhhY3Rpb24pLT5wcml2LT5oeXBlcmxp
bmtJbXBsLCAwKTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbCghaW5kZXgsIDApOwotICAgIHJl
dHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRV9IWVBF
UkxJTksoYWN0aW9uKS0+cHJpdi0+aHlwZXJsaW5rSW1wbCwgMCk7CisgICAgYXV0byogYWNjZXNz
aWJsZUh5cGVybGluayA9IFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhhY3Rpb24pOworICAg
IHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChhY2Nlc3NpYmxlSHlwZXJsaW5r
LT5wcml2LT5oeXBlcmxpbmtJbXBsLCBudWxscHRyKTsKIAogICAgIC8vIFRPRE86IE5lZWQgYSB3
YXkgdG8gcHJvdmlkZS9sb2NhbGl6ZSBhY3Rpb24gZGVzY3JpcHRpb25zLgogICAgIG5vdEltcGxl
bWVudGVkKCk7CiAgICAgcmV0dXJuICIiOwogfQogCi1zdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtp
dEFjY2Vzc2libGVIeXBlcmxpbmtBY3Rpb25HZXRLZXliaW5kaW5nKEF0a0FjdGlvbiogYWN0aW9u
LCBnaW50IGluZGV4KQorc3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJs
aW5rQWN0aW9uR2V0S2V5YmluZGluZyhBdGtBY3Rpb24qIGFjdGlvbiwgZ2ludCkKIHsKLSAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfQUNDRVNTSUJMRV9IWVBFUkxJTksoYWN0aW9u
KSwgMCk7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJM
SU5LKGFjdGlvbiktPnByaXYtPmh5cGVybGlua0ltcGwsIDApOwotICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKCFpbmRleCwgMCk7CisgICAgYXV0byogYWNjZXNzaWJsZUh5cGVybGluayA9IFdFQktJ
VF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhhY3Rpb24pOworICAgIHJldHVyblZhbElmV2ViS2l0QWNj
ZXNzaWJsZUlzSW52YWxpZChhY2Nlc3NpYmxlSHlwZXJsaW5rLT5wcml2LT5oeXBlcmxpbmtJbXBs
LCBudWxscHRyKTsKIAotICAgIFdlYktpdEFjY2Vzc2libGVIeXBlcmxpbmtQcml2YXRlKiBwcml2
ID0gV0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGFjdGlvbiktPnByaXY7Ci0gICAgcmV0dXJu
VmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKHByaXYtPmh5cGVybGlua0ltcGwsIDApOwor
ICAgIGlmICghQVRLX0lTX0FDVElPTihhY2Nlc3NpYmxlSHlwZXJsaW5rLT5wcml2LT5oeXBlcmxp
bmtJbXBsKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoIUFUS19JU19BQ1RJ
T04ocHJpdi0+aHlwZXJsaW5rSW1wbCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUoYWN0aW9uKTsKLSAgICBpZiAoIWNvcmVP
YmplY3QpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcHJpdi0+YWN0aW9uS2V5QmluZGluZyA9
IGNvcmVPYmplY3QtPmFjY2Vzc0tleSgpLnN0cmluZygpLnV0ZjgoKTsKLSAgICByZXR1cm4gcHJp
di0+YWN0aW9uS2V5QmluZGluZy5kYXRhKCk7CisgICAgYXV0byYgY29yZU9iamVjdCA9IHdlYmtp
dEFjY2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KGFjY2Vzc2libGVIeXBlcmxpbmstPnBy
aXYtPmh5cGVybGlua0ltcGwpOworICAgIGFjY2Vzc2libGVIeXBlcmxpbmstPnByaXYtPmFjdGlv
bktleUJpbmRpbmcgPSBjb3JlT2JqZWN0LmFjY2Vzc0tleSgpLnN0cmluZygpLnV0ZjgoKTsKKyAg
ICByZXR1cm4gYWNjZXNzaWJsZUh5cGVybGluay0+cHJpdi0+YWN0aW9uS2V5QmluZGluZy5kYXRh
KCk7CiB9CiAKLXN0YXRpYyBjb25zdCBnY2hhciogd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0Fj
dGlvbkdldE5hbWUoQXRrQWN0aW9uKiBhY3Rpb24sIGdpbnQgaW5kZXgpCitzdGF0aWMgY29uc3Qg
Z2NoYXIqIHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtBY3Rpb25HZXROYW1lKEF0a0FjdGlvbiog
YWN0aW9uLCBnaW50KQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19BQ0NF
U1NJQkxFX0hZUEVSTElOSyhhY3Rpb24pLCAwKTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksoYWN0aW9uKS0+cHJpdi0+aHlwZXJsaW5rSW1wbCwg
MCk7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoIWluZGV4LCAwKTsKLQotICAgIFdlYktpdEFj
Y2Vzc2libGVIeXBlcmxpbmtQcml2YXRlKiBwcml2ID0gV0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJM
SU5LKGFjdGlvbiktPnByaXY7Ci0gICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZh
bGlkKHByaXYtPmh5cGVybGlua0ltcGwsIDApOwotCi0gICAgaWYgKCFBVEtfSVNfQUNUSU9OKHBy
aXYtPmh5cGVybGlua0ltcGwpKQotICAgICAgICByZXR1cm4gMDsKKyAgICBhdXRvKiBhY2Nlc3Np
YmxlSHlwZXJsaW5rID0gV0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGFjdGlvbik7CisgICAg
cmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKGFjY2Vzc2libGVIeXBlcmxpbmst
PnByaXYtPmh5cGVybGlua0ltcGwsIG51bGxwdHIpOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogY29yZU9iamVjdCA9IGNvcmUoYWN0aW9uKTsKLSAgICBpZiAoIWNvcmVPYmplY3QpCi0gICAg
ICAgIHJldHVybiAwOworICAgIGlmICghQVRLX0lTX0FDVElPTihhY2Nlc3NpYmxlSHlwZXJsaW5r
LT5wcml2LT5oeXBlcmxpbmtJbXBsKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBw
cml2LT5hY3Rpb25OYW1lID0gY29yZU9iamVjdC0+YWN0aW9uVmVyYigpLnV0ZjgoKTsKLSAgICBy
ZXR1cm4gcHJpdi0+YWN0aW9uTmFtZS5kYXRhKCk7CisgICAgYXV0byYgY29yZU9iamVjdCA9IHdl
YmtpdEFjY2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KGFjY2Vzc2libGVIeXBlcmxpbmst
PnByaXYtPmh5cGVybGlua0ltcGwpOworICAgIGFjY2Vzc2libGVIeXBlcmxpbmstPnByaXYtPmFj
dGlvbk5hbWUgPSBjb3JlT2JqZWN0LmFjdGlvblZlcmIoKS51dGY4KCk7CisgICAgcmV0dXJuIGFj
Y2Vzc2libGVIeXBlcmxpbmstPnByaXYtPmFjdGlvbk5hbWUuZGF0YSgpOwogfQogCi1zdGF0aWMg
dm9pZCBhdGtBY3Rpb25JbnRlcmZhY2VJbml0KEF0a0FjdGlvbklmYWNlKiBpZmFjZSkKK3N0YXRp
YyB2b2lkIHdlYmtpdF9hY2Nlc3NpYmxlX2h5cGVybGlua19hdGtfYWN0aW9uX2ludGVyZmFjZV9p
bml0KEF0a0FjdGlvbklmYWNlKiBpZmFjZSkKIHsKICAgICBpZmFjZS0+ZG9fYWN0aW9uID0gd2Vi
a2l0QWNjZXNzaWJsZUh5cGVybGlua0FjdGlvbkRvQWN0aW9uOwogICAgIGlmYWNlLT5nZXRfbl9h
Y3Rpb25zID0gd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0FjdGlvbkdldE5BY3Rpb25zOwpAQCAt
MTgxLDQ0ICsxMjYsMzkgQEAgc3RhdGljIHZvaWQgYXRrQWN0aW9uSW50ZXJmYWNlSW5pdChBdGtB
Y3Rpb25JZmFjZSogaWZhY2UpCiAKIHN0YXRpYyBnY2hhciogd2Via2l0QWNjZXNzaWJsZUh5cGVy
bGlua0dldFVSSShBdGtIeXBlcmxpbmsqIGxpbmssIGdpbnQgaW5kZXgpCiB7Ci0gICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxpbmspLCAwKTsK
LSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksobGlu
ayktPnByaXYtPmh5cGVybGlua0ltcGwsIDApOwotCiAgICAgLy8gRklYTUU6IERvIE5PVCBzdXBw
b3J0IG1vcmUgdGhhbiBvbmUgaW5zdGFuY2Ugb2YgYW4gQXRrT2JqZWN0CiAgICAgLy8gaW1wbGVt
ZW50aW5nIEF0a0h5cGVybGlua0ltcGwgaW4gZXZlcnkgaW5zdGFuY2Ugb2YgQXRrSHlwZXJMaW5r
Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoIWluZGV4LCAwKTsKKyAgICBpZiAoaW5kZXgpCisg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxl
SXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhsaW5rKS0+cHJpdi0+aHlwZXJs
aW5rSW1wbCwgMCk7Ci0KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gY29y
ZShsaW5rKTsKLSAgICBpZiAoIWNvcmVPYmplY3QgfHwgY29yZU9iamVjdC0+dXJsKCkuaXNOdWxs
KCkpCi0gICAgICAgIHJldHVybiAwOworICAgIGF1dG8qIGFjY2Vzc2libGVIeXBlcmxpbmsgPSBX
RUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksobGluayk7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRB
Y2Nlc3NpYmxlSXNJbnZhbGlkKGFjY2Vzc2libGVIeXBlcmxpbmstPnByaXYtPmh5cGVybGlua0lt
cGwsIG51bGxwdHIpOwogCi0gICAgcmV0dXJuIGdfc3RyZHVwKGNvcmVPYmplY3QtPnVybCgpLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGF1dG8mIGNvcmVPYmplY3QgPSB3ZWJraXRBY2Nl
c3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVjdChhY2Nlc3NpYmxlSHlwZXJsaW5rLT5wcml2LT5o
eXBlcmxpbmtJbXBsKTsKKyAgICByZXR1cm4gIWNvcmVPYmplY3QudXJsKCkuaXNOdWxsKCkgPyBn
X3N0cmR1cChjb3JlT2JqZWN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpIDogbnVsbHB0
cjsKIH0KIAogc3RhdGljIEF0a09iamVjdCogd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldE9i
amVjdChBdGtIeXBlcmxpbmsqIGxpbmssIGdpbnQgaW5kZXgpCiB7Ci0gICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoV0VCS0lUX0lTX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxpbmspLCAwKTsKLSAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksobGluayktPnBy
aXYtPmh5cGVybGlua0ltcGwsIDApOwotCiAgICAgLy8gRklYTUU6IERvIE5PVCBzdXBwb3J0IG1v
cmUgdGhhbiBvbmUgaW5zdGFuY2Ugb2YgYW4gQXRrT2JqZWN0CiAgICAgLy8gaW1wbGVtZW50aW5n
IEF0a0h5cGVybGlua0ltcGwgaW4gZXZlcnkgaW5zdGFuY2Ugb2YgQXRrSHlwZXJMaW5rCi0gICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoIWluZGV4LCAwKTsKKyAgICBpZiAoaW5kZXgpCisgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZh
bGlkKFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhsaW5rKS0+cHJpdi0+aHlwZXJsaW5rSW1w
bCwgMCk7CisgICAgYXV0byogYWNjZXNzaWJsZUh5cGVybGluayA9IFdFQktJVF9BQ0NFU1NJQkxF
X0hZUEVSTElOSyhsaW5rKTsKKyAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFs
aWQoYWNjZXNzaWJsZUh5cGVybGluay0+cHJpdi0+aHlwZXJsaW5rSW1wbCwgMCk7CiAKLSAgICBy
ZXR1cm4gQVRLX09CSkVDVChXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksobGluayktPnByaXYt
Pmh5cGVybGlua0ltcGwpOworICAgIHJldHVybiBBVEtfT0JKRUNUKGFjY2Vzc2libGVIeXBlcmxp
bmstPnByaXYtPmh5cGVybGlua0ltcGwpOwogfQogCi1zdGF0aWMgZ2ludCBnZXRSYW5nZUxlbmd0
aEZvck9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIFJhbmdlKiByYW5nZSkKK3N0YXRp
YyBnaW50IHJhbmdlTGVuZ3RoRm9yT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iaiwgUmFu
Z2UqIHJhbmdlKQogewogICAgIC8vIFRoaXMgaXMgZ29pbmcgdG8gYmUgdGhlIGFjdHVhbCBsZW5n
dGggaW4gbW9zdCBvZiB0aGUgY2FzZXMKICAgICBpbnQgYmFzZUxlbmd0aCA9IFRleHRJdGVyYXRv
cjo6cmFuZ2VMZW5ndGgocmFuZ2UsIHRydWUpOwogCiAgICAgLy8gQ2hlY2sgd2hldGhlciB0aGUg
Y3VycmVudCBoeXBlcmxpbmsgYmVsb25ncyB0byBhIGxpc3QgaXRlbS4KICAgICAvLyBJZiBzbywg
d2UgbmVlZCB0byBjb25zaWRlciB0aGUgbGVuZ3RoIG9mIHRoZSBpdGVtJ3MgbWFya2VyCi0gICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gb2JqLT5wYXJlbnRPYmplY3RVbmlnbm9yZWQo
KTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBvYmoucGFyZW50T2JqZWN0VW5p
Z25vcmVkKCk7CiAgICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+aXNBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0KCkgfHwgIXBhcmVudC0+aXNMaXN0SXRlbSgpKQogICAgICAgICByZXR1cm4gYmFz
ZUxlbmd0aDsKIApAQCAtMjQwLDE5ICsxODAsMTUgQEAgc3RhdGljIGdpbnQgZ2V0UmFuZ2VMZW5n
dGhGb3JPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqLCBSYW5nZSogcmFuZ2UpCiAKIHN0
YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRTdGFydEluZGV4KEF0a0h5cGVy
bGluayogbGluaykKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfQUNDRVNT
SUJMRV9IWVBFUkxJTksobGluayksIDApOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhsaW5rKS0+cHJpdi0+aHlwZXJsaW5rSW1wbCwgMCk7Ci0g
ICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxF
X0hZUEVSTElOSyhsaW5rKS0+cHJpdi0+aHlwZXJsaW5rSW1wbCwgMCk7Ci0KLSAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gY29yZShsaW5rKTsKLSAgICBpZiAoIWNvcmVPYmpl
Y3QpCi0gICAgICAgIHJldHVybiAwOworICAgIGF1dG8qIGFjY2Vzc2libGVIeXBlcmxpbmsgPSBX
RUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksobGluayk7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRB
Y2Nlc3NpYmxlSXNJbnZhbGlkKGFjY2Vzc2libGVIeXBlcmxpbmstPnByaXYtPmh5cGVybGlua0lt
cGwsIDApOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50VW5pZ25vcmVkID0gY29y
ZU9iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgYXV0byYgY29yZU9iamVjdCA9
IHdlYmtpdEFjY2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KGFjY2Vzc2libGVIeXBlcmxp
bmstPnByaXYtPmh5cGVybGlua0ltcGwpOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVu
dFVuaWdub3JlZCA9IGNvcmVPYmplY3QucGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYg
KCFwYXJlbnRVbmlnbm9yZWQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgTm9kZSogbm9kZSA9
IGNvcmVPYmplY3QtPm5vZGUoKTsKKyAgICBOb2RlKiBub2RlID0gY29yZU9iamVjdC5ub2RlKCk7
CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMjYxLDI0ICsxOTcsMjAg
QEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldFN0YXJ0SW5kZXgoQXRr
SHlwZXJsaW5rKiBsaW5rKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGF1dG8gcmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9k
ZShwYXJlbnROb2RlKSwgZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG5vZGUpKTsKLSAgICBy
ZXR1cm4gZ2V0UmFuZ2VMZW5ndGhGb3JPYmplY3QoY29yZU9iamVjdCwgcmFuZ2UucHRyKCkpOwor
ICAgIHJldHVybiByYW5nZUxlbmd0aEZvck9iamVjdChjb3JlT2JqZWN0LCByYW5nZS5wdHIoKSk7
CiB9CiAKIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRFbmRJbmRleChB
dGtIeXBlcmxpbmsqIGxpbmspCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lT
X0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxpbmspLCAwKTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksobGluayktPnByaXYtPmh5cGVybGlua0ltcGws
IDApOwotICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChXRUJLSVRfQUND
RVNTSUJMRV9IWVBFUkxJTksobGluayktPnByaXYtPmh5cGVybGlua0ltcGwsIDApOworICAgIGF1
dG8qIGFjY2Vzc2libGVIeXBlcmxpbmsgPSBXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksobGlu
ayk7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKGFjY2Vzc2libGVI
eXBlcmxpbmstPnByaXYtPmh5cGVybGlua0ltcGwsIDApOwogCi0gICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogY29yZU9iamVjdCA9IGNvcmUobGluayk7Ci0gICAgaWYgKCFjb3JlT2JqZWN0KQotICAg
ICAgICByZXR1cm4gMDsKLQotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudFVuaWdub3Jl
ZCA9IGNvcmVPYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgIGF1dG8mIGNvcmVP
YmplY3QgPSB3ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVjdChhY2Nlc3NpYmxl
SHlwZXJsaW5rLT5wcml2LT5oeXBlcmxpbmtJbXBsKTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBwYXJlbnRVbmlnbm9yZWQgPSBjb3JlT2JqZWN0LnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwog
ICAgIGlmICghcGFyZW50VW5pZ25vcmVkKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIE5vZGUq
IG5vZGUgPSBjb3JlT2JqZWN0LT5ub2RlKCk7CisgICAgTm9kZSogbm9kZSA9IGNvcmVPYmplY3Qu
bm9kZSgpOwogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTI4NywxNCAr
MjE5LDEzIEBAIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRFbmRJbmRl
eChBdGtIeXBlcmxpbmsqIGxpbmspCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgYXV0byByYW5n
ZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluT3JCZWZv
cmVOb2RlKHBhcmVudE5vZGUpLCBsYXN0UG9zaXRpb25Jbk9yQWZ0ZXJOb2RlKG5vZGUpKTsKLSAg
ICByZXR1cm4gZ2V0UmFuZ2VMZW5ndGhGb3JPYmplY3QoY29yZU9iamVjdCwgcmFuZ2UucHRyKCkp
OworICAgIHJldHVybiByYW5nZUxlbmd0aEZvck9iamVjdChjb3JlT2JqZWN0LCByYW5nZS5wdHIo
KSk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rSXNWYWxp
ZChBdGtIeXBlcmxpbmsqIGxpbmspCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0lTX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxpbmspLCBGQUxTRSk7Ci0gICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoV0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxpbmspLT5wcml2LT5oeXBlcmxp
bmtJbXBsLCBGQUxTRSk7Ci0gICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlk
KFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhsaW5rKS0+cHJpdi0+aHlwZXJsaW5rSW1wbCwg
RkFMU0UpOworICAgIGF1dG8qIGFjY2Vzc2libGVIeXBlcmxpbmsgPSBXRUJLSVRfQUNDRVNTSUJM
RV9IWVBFUkxJTksobGluayk7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZh
bGlkKGFjY2Vzc2libGVIeXBlcmxpbmstPnByaXYtPmh5cGVybGlua0ltcGwsIEZBTFNFKTsKIAog
ICAgIC8vIExpbmsgaXMgdmFsaWQgZm9yIHRoZSB3aG9sZSBvYmplY3QncyBsaWZldGltZQogICAg
IHJldHVybiBUUlVFOwpAQCAtMzA0LDE4ICsyMzUsMTYgQEAgc3RhdGljIGdpbnQgd2Via2l0QWNj
ZXNzaWJsZUh5cGVybGlua0dldE5BbmNob3JzKEF0a0h5cGVybGluayogbGluaykKIHsKICAgICAv
LyBGSVhNRSBEbyBOT1Qgc3VwcG9ydCBtb3JlIHRoYW4gb25lIGluc3RhbmNlIG9mIGFuIEF0a09i
amVjdAogICAgIC8vIGltcGxlbWVudGluZyBBdGtIeXBlcmxpbmtJbXBsIGluIGV2ZXJ5IGluc3Rh
bmNlIG9mIEF0a0h5cGVyTGluawotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19B
Q0NFU1NJQkxFX0hZUEVSTElOSyhsaW5rKSwgMCk7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxpbmspLT5wcml2LT5oeXBlcmxpbmtJbXBsLCAw
KTsKLSAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VT
U0lCTEVfSFlQRVJMSU5LKGxpbmspLT5wcml2LT5oeXBlcmxpbmtJbXBsLCAwKTsKKyAgICBhdXRv
KiBhY2Nlc3NpYmxlSHlwZXJsaW5rID0gV0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxpbmsp
OworICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChhY2Nlc3NpYmxlSHlw
ZXJsaW5rLT5wcml2LT5oeXBlcmxpbmtJbXBsLCAwKTsKIAogICAgIHJldHVybiAxOwogfQogCiBz
dGF0aWMgZ2Jvb2xlYW4gd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0lzU2VsZWN0ZWRMaW5rKEF0
a0h5cGVybGluayogbGluaykKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNf
QUNDRVNTSUJMRV9IWVBFUkxJTksobGluayksIEZBTFNFKTsKLSAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksobGluayktPnByaXYtPmh5cGVybGlua0lt
cGwsIEZBTFNFKTsKLSAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoV0VC
S0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxpbmspLT5wcml2LT5oeXBlcmxpbmtJbXBsLCBGQUxT
RSk7CisgICAgYXV0byogYWNjZXNzaWJsZUh5cGVybGluayA9IFdFQktJVF9BQ0NFU1NJQkxFX0hZ
UEVSTElOSyhsaW5rKTsKKyAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQo
YWNjZXNzaWJsZUh5cGVybGluay0+cHJpdi0+aHlwZXJsaW5rSW1wbCwgRkFMU0UpOwogCiAgICAg
Ly8gTm90IGltcGxlbWVudGVkOiB0aGlzIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgaW4gQVRLIG5v
dwogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC0zMjQsOSArMjUzLDExIEBAIHN0YXRpYyBnYm9v
bGVhbiB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rSXNTZWxlY3RlZExpbmsoQXRrSHlwZXJsaW5r
KiBsaW5rKQogCiBzdGF0aWMgdm9pZCB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0UHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNw
ZWMqIHBzcGVjKQogeworICAgIGF1dG8qIGFjY2Vzc2libGVIeXBlcmxpbmsgPSBXRUJLSVRfQUND
RVNTSUJMRV9IWVBFUkxJTksob2JqZWN0KTsKKwogICAgIHN3aXRjaCAocHJvcElkKSB7CiAgICAg
Y2FzZSBQUk9QX0hZUEVSTElOS19JTVBMOgotICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFs
dWUsIFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhvYmplY3QpLT5wcml2LT5oeXBlcmxpbmtJ
bXBsKTsKKyAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCBhY2Nlc3NpYmxlSHlwZXJs
aW5rLT5wcml2LT5oeXBlcmxpbmtJbXBsKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElk
LCBwc3BlYyk7CkBAIC0zMzUsMTAxICsyNjYsNTEgQEAgc3RhdGljIHZvaWQgd2Via2l0QWNjZXNz
aWJsZUh5cGVybGlua0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLAog
CiBzdGF0aWMgdm9pZCB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rU2V0UHJvcGVydHkoR09iamVj
dCogb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMq
IHBzcGVjKQogewotICAgIFdlYktpdEFjY2Vzc2libGVIeXBlcmxpbmtQcml2YXRlKiBwcml2ID0g
V0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKG9iamVjdCktPnByaXY7CisgICAgYXV0byogYWNj
ZXNzaWJsZUh5cGVybGluayA9IFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhvYmplY3QpOwog
CiAgICAgc3dpdGNoIChwcm9wSWQpIHsKICAgICBjYXNlIFBST1BfSFlQRVJMSU5LX0lNUEw6Ci0g
ICAgICAgIC8vIE5vIG5lZWQgdG8gY2hlY2sgYW5kIHVucmVmIHByZXZpb3VzIHZhbHVlcyBvZgot
ICAgICAgICAvLyBwcml2LT5oeXBlcmxpbmtJbXBsIGFzIHRoaXMgaXMgYSBDT05TVFJVQ1QgT05M
WSBwcm9wZXJ0eQotICAgICAgICBwcml2LT5oeXBlcmxpbmtJbXBsID0gV0VCS0lUX0FDQ0VTU0lC
TEUoZ192YWx1ZV9nZXRfb2JqZWN0KHZhbHVlKSk7Ci0gICAgICAgIGdfb2JqZWN0X3dlYWtfcmVm
KEdfT0JKRUNUKHByaXYtPmh5cGVybGlua0ltcGwpLCAoR1dlYWtOb3RpZnkpKEdDYWxsYmFjayln
X29iamVjdF91bnJlZiwgb2JqZWN0KTsKKyAgICAgICAgYWNjZXNzaWJsZUh5cGVybGluay0+cHJp
di0+aHlwZXJsaW5rSW1wbCA9IFdFQktJVF9BQ0NFU1NJQkxFKGdfdmFsdWVfZ2V0X29iamVjdCh2
YWx1ZSkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9X
QVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBzcGVjKTsKICAgICB9CiB9
CiAKLXN0YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtGaW5hbGl6ZShHT2JqZWN0
KiBvYmplY3QpCi17Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0QWNjZXNzaWJsZUh5cGVybGlu
a1BhcmVudENsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0
QWNjZXNzaWJsZUh5cGVybGlua0NsYXNzSW5pdChBdGtIeXBlcmxpbmtDbGFzcyoga2xhc3MpCitz
dGF0aWMgdm9pZCB3ZWJraXRfYWNjZXNzaWJsZV9oeXBlcmxpbmtfY2xhc3NfaW5pdChXZWJLaXRB
Y2Nlc3NpYmxlSHlwZXJsaW5rQ2xhc3MqIGtsYXNzKQogewogICAgIEdPYmplY3RDbGFzcyogZ29i
amVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOwotCi0gICAgd2Via2l0QWNjZXNzaWJs
ZUh5cGVybGlua1BhcmVudENsYXNzID0gZ190eXBlX2NsYXNzX3BlZWtfcGFyZW50KGtsYXNzKTsK
LQotICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5r
RmluYWxpemU7CiAgICAgZ29iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRBY2Nlc3Np
YmxlSHlwZXJsaW5rU2V0UHJvcGVydHk7CiAgICAgZ29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkg
PSB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0UHJvcGVydHk7CiAKLSAgICBrbGFzcy0+Z2V0
X3VyaSA9IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRVUkk7Ci0gICAga2xhc3MtPmdldF9v
YmplY3QgPSB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0T2JqZWN0OwotICAgIGtsYXNzLT5n
ZXRfc3RhcnRfaW5kZXggPSB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0U3RhcnRJbmRleDsK
LSAgICBrbGFzcy0+Z2V0X2VuZF9pbmRleCA9IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRF
bmRJbmRleDsKLSAgICBrbGFzcy0+aXNfdmFsaWQgPSB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5r
SXNWYWxpZDsKLSAgICBrbGFzcy0+Z2V0X25fYW5jaG9ycyA9IHdlYmtpdEFjY2Vzc2libGVIeXBl
cmxpbmtHZXROQW5jaG9yczsKLSAgICBrbGFzcy0+aXNfc2VsZWN0ZWRfbGluayA9IHdlYmtpdEFj
Y2Vzc2libGVIeXBlcmxpbmtJc1NlbGVjdGVkTGluazsKKyAgICBBdGtIeXBlcmxpbmtDbGFzcyog
YXRrSHlwZXJsaW5rQ2xhc3MgPSBBVEtfSFlQRVJMSU5LX0NMQVNTKGtsYXNzKTsKKyAgICBhdGtI
eXBlcmxpbmtDbGFzcy0+Z2V0X3VyaSA9IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRVUkk7
CisgICAgYXRrSHlwZXJsaW5rQ2xhc3MtPmdldF9vYmplY3QgPSB3ZWJraXRBY2Nlc3NpYmxlSHlw
ZXJsaW5rR2V0T2JqZWN0OworICAgIGF0a0h5cGVybGlua0NsYXNzLT5nZXRfc3RhcnRfaW5kZXgg
PSB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0U3RhcnRJbmRleDsKKyAgICBhdGtIeXBlcmxp
bmtDbGFzcy0+Z2V0X2VuZF9pbmRleCA9IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRFbmRJ
bmRleDsKKyAgICBhdGtIeXBlcmxpbmtDbGFzcy0+aXNfdmFsaWQgPSB3ZWJraXRBY2Nlc3NpYmxl
SHlwZXJsaW5rSXNWYWxpZDsKKyAgICBhdGtIeXBlcmxpbmtDbGFzcy0+Z2V0X25fYW5jaG9ycyA9
IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXROQW5jaG9yczsKKyAgICBhdGtIeXBlcmxpbmtD
bGFzcy0+aXNfc2VsZWN0ZWRfbGluayA9IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtJc1NlbGVj
dGVkTGluazsKIAogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENs
YXNzLCBQUk9QX0hZUEVSTElOS19JTVBMLAogICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KCJo
eXBlcmxpbmstaW1wbCIsCiAgICAgICAgICAgICAiSHlwZXJsaW5rIGltcGxlbWVudGF0aW9uIiwK
ICAgICAgICAgICAgICJUaGUgYXNzb2NpYXRlZCBXZWJLaXRBY2Nlc3NpYmxlIGluc3RhbmNlLiIs
CiAgICAgICAgICAgICBXRUJLSVRfVFlQRV9BQ0NFU1NJQkxFLAotICAgICAgICAgICAgKEdQYXJh
bUZsYWdzKShHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkgfCBHX1BB
UkFNX1NUQVRJQ19TVFJJTkdTKSkpOwotCi0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGdv
YmplY3RDbGFzcywgc2l6ZW9mKFdlYktpdEFjY2Vzc2libGVIeXBlcmxpbmtQcml2YXRlKSk7Ci19
Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtJbml0KEF0a0h5cGVybGlu
ayogbGluaykKLXsKLSAgICBXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksobGluayktPnByaXYg
PSBXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTktfR0VUX1BSSVZBVEUobGluayk7Ci0gICAgV0VC
S0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxpbmspLT5wcml2LT5oeXBlcmxpbmtJbXBsID0gbnVs
bHB0cjsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1f
UkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKIH0KIAotR1R5cGUgd2Via2l0
QWNjZXNzaWJsZUh5cGVybGlua0dldFR5cGUoKQorV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluayog
d2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldE9yQ3JlYXRlKEF0a0h5cGVybGlua0ltcGwqIGh5
cGVybGlua0ltcGwpCiB7Ci0gICAgc3RhdGljIHZvbGF0aWxlIGdzaXplIHR5cGVWb2xhdGlsZSA9
IDA7Ci0KLSAgICBpZiAoZ19vbmNlX2luaXRfZW50ZXIoJnR5cGVWb2xhdGlsZSkpIHsKLSAgICAg
ICAgc3RhdGljIGNvbnN0IEdUeXBlSW5mbyB0aW5mbyA9IHsKLSAgICAgICAgICAgIHNpemVvZihX
ZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rQ2xhc3MpLAotICAgICAgICAgICAgKEdCYXNlSW5pdEZ1
bmMpIDAsCi0gICAgICAgICAgICAoR0Jhc2VGaW5hbGl6ZUZ1bmMpIDAsCi0gICAgICAgICAgICAo
R0NsYXNzSW5pdEZ1bmMpKEdDYWxsYmFjaykgd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0NsYXNz
SW5pdCwKLSAgICAgICAgICAgIChHQ2xhc3NGaW5hbGl6ZUZ1bmMpIDAsCi0gICAgICAgICAgICAw
LCAvKiBjbGFzcyBkYXRhICovCi0gICAgICAgICAgICBzaXplb2YoV2ViS2l0QWNjZXNzaWJsZUh5
cGVybGluayksIC8qIGluc3RhbmNlIHNpemUgKi8KLSAgICAgICAgICAgIDAsIC8qIG5iIHByZWFs
bG9jcyAqLwotICAgICAgICAgICAgKEdJbnN0YW5jZUluaXRGdW5jKShHQ2FsbGJhY2spIHdlYmtp
dEFjY2Vzc2libGVIeXBlcmxpbmtJbml0LAotICAgICAgICAgICAgMCAvKiB2YWx1ZSB0YWJsZSAq
LwotICAgICAgICB9OwotCi0gICAgICAgIHN0YXRpYyBjb25zdCBHSW50ZXJmYWNlSW5mbyBhY3Rp
b25JbmZvID0gewotICAgICAgICAgICAgKEdJbnRlcmZhY2VJbml0RnVuYykoR0NhbGxiYWNrKWF0
a0FjdGlvbkludGVyZmFjZUluaXQsCi0gICAgICAgICAgICAoR0ludGVyZmFjZUZpbmFsaXplRnVu
YykgMCwgMAotICAgICAgICB9OwotCi0gICAgICAgIEdUeXBlIHR5cGUgPSBnX3R5cGVfcmVnaXN0
ZXJfc3RhdGljKEFUS19UWVBFX0hZUEVSTElOSywgIldlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsi
LCAmdGluZm8sIEdUeXBlRmxhZ3MoMCkpOwotICAgICAgICBnX3R5cGVfYWRkX2ludGVyZmFjZV9z
dGF0aWModHlwZSwgQVRLX1RZUEVfQUNUSU9OLCAmYWN0aW9uSW5mbyk7Ci0KLSAgICAgICAgZ19v
bmNlX2luaXRfbGVhdmUoJnR5cGVWb2xhdGlsZSwgdHlwZSk7Ci0gICAgfQorICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKEFUS19JU19IWVBFUkxJTktfSU1QTChoeXBlcmxpbmtJbXBsKSwgbnVsbHB0
cik7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0FDQ0VTU0lCTEUoaHlwZXJs
aW5rSW1wbCksIG51bGxwdHIpOwogCi0gICAgcmV0dXJuIHR5cGVWb2xhdGlsZTsKLX0KKyAgICBp
ZiAoYXV0byogY3VycmVudEh5cGVyTGluayA9IGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKGh5
cGVybGlua0ltcGwpLCAid2Via2l0LWFjY2Vzc2libGUtaHlwZXJsaW5rLW9iamVjdCIpKQorICAg
ICAgICByZXR1cm4gV0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGdfb2JqZWN0X3JlZihjdXJy
ZW50SHlwZXJMaW5rKSk7CiAKLVdlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsqIHdlYmtpdEFjY2Vz
c2libGVIeXBlcmxpbmtOZXcoQXRrSHlwZXJsaW5rSW1wbCogaHlwZXJsaW5rSW1wbCkKLXsKLSAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfSVNfSFlQRVJMSU5LX0lNUEwoaHlwZXJsaW5rSW1w
bCksIDApOwotICAgIHJldHVybiBXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksoZ19vYmplY3Rf
bmV3KFdFQktJVF9UWVBFX0FDQ0VTU0lCTEVfSFlQRVJMSU5LLCAiaHlwZXJsaW5rLWltcGwiLCBo
eXBlcmxpbmtJbXBsLCAwKSk7Ci19Ci0KLVdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIHdl
YmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KFdlYktpdEFjY2Vz
c2libGVIeXBlcmxpbmsqIGxpbmspCi17Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0lTX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxpbmspLCAwKTsKLSAgICByZXR1cm4gY29yZShsaW5r
KTsKKyAgICBhdXRvKiBoeXBlcmxpbmsgPSBXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksoZ19v
YmplY3RfbmV3KFdFQktJVF9UWVBFX0FDQ0VTU0lCTEVfSFlQRVJMSU5LLCAiaHlwZXJsaW5rLWlt
cGwiLCBoeXBlcmxpbmtJbXBsLCBudWxscHRyKSk7CisgICAgZ19vYmplY3Rfc2V0X2RhdGFfZnVs
bChHX09CSkVDVChoeXBlcmxpbmtJbXBsKSwgIndlYmtpdC1hY2Nlc3NpYmxlLWh5cGVybGluay1v
YmplY3QiLCBoeXBlcmxpbmssIGdfb2JqZWN0X3VucmVmKTsKKyAgICByZXR1cm4gaHlwZXJsaW5r
OwogfQogCiAjZW5kaWYgLy8gSEFWRShBQ0NFU1NJQklMSVRZKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGlu
ay5oCmluZGV4IDA1MzMxNTZlN2QxLi5lZjNmNjdiYTI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxp
bmsuaApAQCAtMjMsMjcgKzIzLDIyIEBACiAKICNpbmNsdWRlIDxhdGsvYXRrLmg+CiAKLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLWNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3Q7Ci19Ci0KIEdfQkVHSU5f
REVDTFMKIAotI2RlZmluZSBXRUJLSVRfVFlQRV9BQ0NFU1NJQkxFX0hZUEVSTElOSyAgICAgICAg
ICAgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0VHlwZSAoKSkKLSNkZWZpbmUg
V0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKG9iaikgICAgICAgICAgICAgICAgICAoR19UWVBF
X0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmopLCBXRUJLSVRfVFlQRV9BQ0NFU1NJQkxFX0hZUEVS
TElOSywgV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluaykpCi0jZGVmaW5lIFdFQktJVF9BQ0NFU1NJ
QkxFX0hZUEVSTElOS19DTEFTUyhrbGFzcykgICAgICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19D
QVNUICgoa2xhc3MpLCBXRUJLSVRfVFlQRV9BQ0NFU1NJQkxFX0hZUEVSTElOSywgV2ViS2l0QWNj
ZXNzaWJsZUh5cGVybGlua0NsYXNzKSkKLSNkZWZpbmUgV0VCS0lUX0lTX0FDQ0VTU0lCTEVfSFlQ
RVJMSU5LKG9iaikgICAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChv
YmopLCBXRUJLSVRfVFlQRV9BQ0NFU1NJQkxFX0hZUEVSTElOSykpCi0jZGVmaW5lIFdFQktJVF9J
U19BQ0NFU1NJQkxFX0hZUEVSTElOS19DTEFTUyhrbGFzcykgICAgICAgKEdfVFlQRV9DSEVDS19D
TEFTU19UWVBFICgoa2xhc3MpLCBXRUJLSVRfVFlQRV9BQ0NFU1NJQkxFX0hZUEVSTElOSykpCi0j
ZGVmaW5lIFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOS19HRVRfQ0xBU1Mob2JqKSAgICAgICAg
KEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MgKChvYmopLCBXRUJLSVRfVFlQRV9BQ0NFU1NJQkxF
X0hZUEVSTElOSywgV2ViS2l0QWNjZXNzaWJsZUh5cGVybGlua0NsYXNzKSkKKyNkZWZpbmUgV0VC
S0lUX1RZUEVfQUNDRVNTSUJMRV9IWVBFUkxJTksgICAgICAgICAgICAgKHdlYmtpdF9hY2Nlc3Np
YmxlX2h5cGVybGlua19nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfQUNDRVNTSUJMRV9IWVBF
UkxJTksob2JqKSAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiks
IFdFQktJVF9UWVBFX0FDQ0VTU0lCTEVfSFlQRVJMSU5LLCBXZWJLaXRBY2Nlc3NpYmxlSHlwZXJs
aW5rKSkKKyNkZWZpbmUgV0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LX0NMQVNTKGtsYXNzKSAg
ICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksIFdFQktJVF9UWVBFX0FDQ0VTU0lC
TEVfSFlQRVJMSU5LLCBXZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rQ2xhc3MpKQorI2RlZmluZSBX
RUJLSVRfSVNfQUNDRVNTSUJMRV9IWVBFUkxJTksob2JqKSAgICAgICAgICAoR19UWVBFX0NIRUNL
X0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKSkK
KyNkZWZpbmUgV0VCS0lUX0lTX0FDQ0VTU0lCTEVfSFlQRVJMSU5LX0NMQVNTKGtsYXNzKSAgKEdf
VFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksIFdFQktJVF9UWVBFX0FDQ0VTU0lCTEVfSFlQ
RVJMSU5LKSkKKyNkZWZpbmUgV0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LX0dFVF9DTEFTUyhv
YmopICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksIFdFQktJVF9UWVBFX0FDQ0VT
U0lCTEVfSFlQRVJMSU5LLCBXZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rQ2xhc3MpKQogCi10eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluayAgICAgICAgICAgICAgICBXZWJL
aXRBY2Nlc3NpYmxlSHlwZXJsaW5rOwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEFjY2Vzc2libGVI
eXBlcmxpbmtDbGFzcyAgICAgICAgICAgV2ViS2l0QWNjZXNzaWJsZUh5cGVybGlua0NsYXNzOwot
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmtQcml2YXRlICAgICAgICAg
V2ViS2l0QWNjZXNzaWJsZUh5cGVybGlua1ByaXZhdGU7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0
QWNjZXNzaWJsZUh5cGVybGluayAgICAgICAgV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluazsKK3R5
cGVkZWYgc3RydWN0IF9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rQ2xhc3MgICBXZWJLaXRBY2Nl
c3NpYmxlSHlwZXJsaW5rQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QWNjZXNzaWJsZUh5
cGVybGlua1ByaXZhdGUgV2ViS2l0QWNjZXNzaWJsZUh5cGVybGlua1ByaXZhdGU7CiAKIHN0cnVj
dCBfV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluayB7CiAgICAgQXRrSHlwZXJsaW5rIHBhcmVudDsK
IAotICAgIC8vIHByaXZhdGUKICAgICBXZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rUHJpdmF0ZSAq
cHJpdjsKIH07CiAKQEAgLTUxLDExICs0Niw5IEBAIHN0cnVjdCBfV2ViS2l0QWNjZXNzaWJsZUh5
cGVybGlua0NsYXNzIHsKICAgICBBdGtIeXBlcmxpbmtDbGFzcyBwYXJlbnRDbGFzczsKIH07CiAK
LUdUeXBlIHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRUeXBlKHZvaWQpIEdfR05VQ19DT05T
VDsKLQotV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluayogd2Via2l0QWNjZXNzaWJsZUh5cGVybGlu
a05ldyhBdGtIeXBlcmxpbmtJbXBsKik7CitHVHlwZSB3ZWJraXRfYWNjZXNzaWJsZV9oeXBlcmxp
bmtfZ2V0X3R5cGUodm9pZCk7CiAKLVdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIHdlYmtp
dEFjY2Vzc2libGVIeXBlcmxpbmtHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KFdlYktpdEFjY2Vzc2li
bGVIeXBlcmxpbmsqKTsKK1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsqIHdlYmtpdEFjY2Vzc2li
bGVIeXBlcmxpbmtHZXRPckNyZWF0ZShBdGtIeXBlcmxpbmtJbXBsKik7CiAKIEdfRU5EX0RFQ0xT
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFj
Y2Vzc2libGVJbnRlcmZhY2VIeXBlcmxpbmtJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VIeXBlcmxpbmtJbXBsLmNwcApp
bmRleCA5ZGUzYmU5MmFlNi4uZTViZTFhYzBmNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VIeXBlcmxpbmtJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlSW50ZXJmYWNlSHlwZXJsaW5rSW1wbC5jcHAKQEAgLTI0LDI0ICsyNCwxNCBAQAogCiAjaW5j
bHVkZSAiV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5oIgogCi11c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKLQotc3RhdGljIEdRdWFyayBoeXBlcmxpbmtPYmplY3RRdWFyayA9IDA7Ci0KIHN0YXRp
YyBBdGtIeXBlcmxpbmsqIHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtJbXBsR2V0SHlwZXJsaW5r
KEF0a0h5cGVybGlua0ltcGwqIGh5cGVybGluaykKIHsKLSAgICBBdGtIeXBlcmxpbmsqIGh5cGVy
bGlua09iamVjdCA9IEFUS19IWVBFUkxJTksoZ19vYmplY3RfZ2V0X3FkYXRhKEdfT0JKRUNUKGh5
cGVybGluayksIGh5cGVybGlua09iamVjdFF1YXJrKSk7Ci0gICAgaWYgKCFoeXBlcmxpbmtPYmpl
Y3QpIHsKLSAgICAgICAgaHlwZXJsaW5rT2JqZWN0ID0gQVRLX0hZUEVSTElOSyh3ZWJraXRBY2Nl
c3NpYmxlSHlwZXJsaW5rTmV3KGh5cGVybGluaykpOwotICAgICAgICBnX29iamVjdF9zZXRfcWRh
dGEoR19PQkpFQ1QoaHlwZXJsaW5rKSwgaHlwZXJsaW5rT2JqZWN0UXVhcmssIGh5cGVybGlua09i
amVjdCk7Ci0gICAgfQotICAgIHJldHVybiBoeXBlcmxpbmtPYmplY3Q7CisgICAgcmV0dXJuIEFU
S19IWVBFUkxJTksod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldE9yQ3JlYXRlKGh5cGVybGlu
aykpOwogfQogCiB2b2lkIHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtJbXBsSW50ZXJmYWNlSW5p
dChBdGtIeXBlcmxpbmtJbXBsSWZhY2UqIGlmYWNlKQogewogICAgIGlmYWNlLT5nZXRfaHlwZXJs
aW5rID0gd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0ltcGxHZXRIeXBlcmxpbms7Ci0gICAgaHlw
ZXJsaW5rT2JqZWN0UXVhcmsgPSBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZygid2Via2l0LWFj
Y2Vzc2libGUtaHlwZXJsaW5rLW9iamVjdCIpOwogfQogCi0jZW5kaWYKKyNlbmRpZiAvLyBIQVZF
KEFDQ0VTU0lCSUxJVFkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366926</attachid>
            <date>2019-04-08 04:45:27 -0700</date>
            <delta_ts>2019-04-08 15:13:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-a11y-links.diff</filename>
            <type>text/plain</type>
            <size>28639</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwOTE3MTNkYTIwNi4uYTM4NGFiZGVkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAxOS0wNC0wNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0FUS10gQ2xlYW51cCBXZWJLaXRBY2Nlc3NpYmxlSHlwZXJs
aW5rCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTY2
MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGVh
bnVwczoKKworICAgICAgICAgLSBSZW5hbWUgd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua05ldygp
IGFzIHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRPckNyZWF0ZSgpIGFuZCBtb3ZlIHRoZSBj
b2RlIHRvIGdldC9zZXQKKyAgICAgICAgICAgdGhlIG9iamVjdCBkYXRhIGhlcmUuCisgICAgICAg
ICAtIFVzZSBXRUJLSVRfREVGSU5FX1RZUEUgaW5zdGVhZCBvZiBjdXN0b20gdHlwZSByZWdpc3Ry
YXRpb24uIFRoaXMgZW5zdXJlcyB0aGF0IGFsbCBDU3RyaW5ncyB1c2VkIGluIHByaXZhdGUKKyAg
ICAgICAgICAgc3RydWN0IGFyZSBubyBsb25nZXIgbGVha2VkLgorICAgICAgICAgLSBSZW1vdmUg
YWxsIGNvbmZ1c2luZyBjb3JlKCkgZnVuY3Rpb25zIGFuZCBzaW1wbHkgdXNlIHdlYmtpdEFjY2Vz
c2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KCkuCisgICAgICAgICAtIFVzZSBudWxscHRyIGlu
c3RlYWQgb2YgMCBhbmQgb3RoZXIgY29kaW5nIHN0eWxlIGlzc3Vlcy4KKworICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwOgorICAgICAgICAo
d2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0FjdGlvbkRvQWN0aW9uKToKKyAgICAgICAgKHdlYmtp
dEFjY2Vzc2libGVIeXBlcmxpbmtBY3Rpb25HZXROQWN0aW9ucyk6CisgICAgICAgICh3ZWJraXRB
Y2Nlc3NpYmxlSHlwZXJsaW5rQWN0aW9uR2V0RGVzY3JpcHRpb24pOgorICAgICAgICAod2Via2l0
QWNjZXNzaWJsZUh5cGVybGlua0FjdGlvbkdldEtleWJpbmRpbmcpOgorICAgICAgICAod2Via2l0
QWNjZXNzaWJsZUh5cGVybGlua0FjdGlvbkdldE5hbWUpOgorICAgICAgICAoYXRrX2FjdGlvbl9p
bnRlcmZhY2VfaW5pdCk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0VVJJ
KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRPYmplY3QpOgorICAgICAg
ICAocmFuZ2VMZW5ndGhGb3JPYmplY3QpOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVy
bGlua0dldFN0YXJ0SW5kZXgpOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dl
dEVuZEluZGV4KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtJc1ZhbGlkKToK
KyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXROQW5jaG9ycyk6CisgICAgICAg
ICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rSXNTZWxlY3RlZExpbmspOgorICAgICAgICAod2Vi
a2l0QWNjZXNzaWJsZUh5cGVybGlua0dldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdEFjY2Vz
c2libGVIeXBlcmxpbmtTZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfYWNjZXNzaWJsZV9o
eXBlcmxpbmtfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5r
R2V0T3JDcmVhdGUpOgorICAgICAgICAoY29yZSk6IERlbGV0ZWQuCisgICAgICAgIChhdGtBY3Rp
b25JbnRlcmZhY2VJbml0KTogRGVsZXRlZC4KKyAgICAgICAgKGdldFJhbmdlTGVuZ3RoRm9yT2Jq
ZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtGaW5hbGl6
ZSk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rQ2xhc3NJbml0
KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtJbml0KTogRGVs
ZXRlZC4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRUeXBlKTogRGVsZXRl
ZC4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtOZXcpOiBEZWxldGVkLgorICAg
ICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEFjY2Vzc2liaWxpdHlPYmplY3QpOiBE
ZWxldGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBl
cmxpbmsuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50
ZXJmYWNlSHlwZXJsaW5rSW1wbC5jcHA6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJs
aW5rSW1wbEdldEh5cGVybGluayk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5r
SW1wbEludGVyZmFjZUluaXQpOgorCiAyMDE5LTA0LTA1ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8
c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gb3V0bG9vay5saXZlLmNv
bSBkaXNwbGF5cyBvbGQtZmFzaGlvbmVkIFVJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwCmlu
ZGV4IDcyMTJkYjJlY2JjLi5hYmM3OGE2MjI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5j
cHAKQEAgLTM0LDEzICszNCwxMyBAQAogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1
ZGUgIldlYktpdEFjY2Vzc2libGUuaCIKICNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlVXRpbC5o
IgorI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCi0jaW5jbHVkZSA8YXRrL2F0ay5oPgotI2luY2x1ZGUgPGdsaWIuaD4KLQogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK3N0YXRpYyB2b2lkIHdlYmtpdF9hY2Nlc3NpYmxlX2h5
cGVybGlua19hdGtfYWN0aW9uX2ludGVyZmFjZV9pbml0KEF0a0FjdGlvbklmYWNlKik7CisKIHN0
cnVjdCBfV2ViS2l0QWNjZXNzaWJsZUh5cGVybGlua1ByaXZhdGUgewogICAgIFdlYktpdEFjY2Vz
c2libGUqIGh5cGVybGlua0ltcGw7CiAKQEAgLTQ5LDcgKzQ5LDkgQEAgc3RydWN0IF9XZWJLaXRB
Y2Nlc3NpYmxlSHlwZXJsaW5rUHJpdmF0ZSB7CiAgICAgQ1N0cmluZyBhY3Rpb25LZXlCaW5kaW5n
OwogfTsKIAotI2RlZmluZSBXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTktfR0VUX1BSSVZBVEUo
b2JqKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9BQ0NF
U1NJQkxFX0hZUEVSTElOSywgV2ViS2l0QWNjZXNzaWJsZUh5cGVybGlua1ByaXZhdGUpKQorV0VC
S0lUX0RFRklORV9UWVBFX1dJVEhfQ09ERSgKKyAgICBXZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5r
LCB3ZWJraXRfYWNjZXNzaWJsZV9oeXBlcmxpbmssIEFUS19UWVBFX0hZUEVSTElOSywKKyAgICBH
X0lNUExFTUVOVF9JTlRFUkZBQ0UoQVRLX1RZUEVfQUNUSU9OLCB3ZWJraXRfYWNjZXNzaWJsZV9o
eXBlcmxpbmtfYXRrX2FjdGlvbl9pbnRlcmZhY2VfaW5pdCkpCiAKIGVudW0gewogICAgIFBST1Bf
MCwKQEAgLTU3LDEyMCArNTksNjMgQEAgZW51bSB7CiAgICAgUFJPUF9IWVBFUkxJTktfSU1QTAog
fTsKIAotc3RhdGljIGdwb2ludGVyIHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtQYXJlbnRDbGFz
cyA9IDA7Ci0KLXN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlKFdlYktpdEFjY2Vzc2li
bGUqIGFjY2Vzc2libGUpCi17Ci0gICAgaWYgKCFhY2Nlc3NpYmxlIHx8ICFXRUJLSVRfSVNfQUND
RVNTSUJMRShhY2Nlc3NpYmxlKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gJndl
YmtpdEFjY2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KGFjY2Vzc2libGUpOwotfQotCi1z
dGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZShXZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5r
KiBsaW5rKQotewotICAgIGlmICghbGluaykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1
cm4gY29yZShsaW5rLT5wcml2LT5oeXBlcmxpbmtJbXBsKTsKLX0KLQotc3RhdGljIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGNvcmUoQXRrSHlwZXJsaW5rKiBsaW5rKQotewotICAgIGlmICghV0VCS0lU
X0lTX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxpbmspKQotICAgICAgICByZXR1cm4gMDsKLQotICAg
IHJldHVybiBjb3JlKFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhsaW5rKSk7Ci19Ci0KLXN0
YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlKEF0a0FjdGlvbiogYWN0aW9uKQotewotICAg
IHJldHVybiBjb3JlKFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhhY3Rpb24pKTsKLX0KLQot
Ci1zdGF0aWMgZ2Jvb2xlYW4gd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0FjdGlvbkRvQWN0aW9u
KEF0a0FjdGlvbiogYWN0aW9uLCBnaW50IGluZGV4KQorc3RhdGljIGdib29sZWFuIHdlYmtpdEFj
Y2Vzc2libGVIeXBlcmxpbmtBY3Rpb25Eb0FjdGlvbihBdGtBY3Rpb24qIGFjdGlvbiwgZ2ludCkK
IHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfQUNDRVNTSUJMRV9IWVBFUkxJ
TksoYWN0aW9uKSwgRkFMU0UpOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9BQ0NF
U1NJQkxFX0hZUEVSTElOSyhhY3Rpb24pLT5wcml2LT5oeXBlcmxpbmtJbXBsLCBGQUxTRSk7Ci0g
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoIWluZGV4LCBGQUxTRSk7Ci0gICAgcmV0dXJuVmFsSWZX
ZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhhY3Rp
b24pLT5wcml2LT5oeXBlcmxpbmtJbXBsLCBGQUxTRSk7CisgICAgYXV0byogYWNjZXNzaWJsZUh5
cGVybGluayA9IFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhhY3Rpb24pOworICAgIHJldHVy
blZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChhY2Nlc3NpYmxlSHlwZXJsaW5rLT5wcml2
LT5oeXBlcmxpbmtJbXBsLCBGQUxTRSk7CiAKLSAgICBpZiAoIUFUS19JU19BQ1RJT04oV0VCS0lU
X0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGFjdGlvbiktPnByaXYtPmh5cGVybGlua0ltcGwpKQorICAg
IGlmICghQVRLX0lTX0FDVElPTihhY2Nlc3NpYmxlSHlwZXJsaW5rLT5wcml2LT5oeXBlcmxpbmtJ
bXBsKSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
Y29yZU9iamVjdCA9IGNvcmUoYWN0aW9uKTsKLSAgICBpZiAoIWNvcmVPYmplY3QpCi0gICAgICAg
IHJldHVybiBGQUxTRTsKLQotICAgIHJldHVybiBjb3JlT2JqZWN0LT5wZXJmb3JtRGVmYXVsdEFj
dGlvbigpOworICAgIGF1dG8mIGNvcmVPYmplY3QgPSB3ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNz
aWJpbGl0eU9iamVjdChhY2Nlc3NpYmxlSHlwZXJsaW5rLT5wcml2LT5oeXBlcmxpbmtJbXBsKTsK
KyAgICByZXR1cm4gY29yZU9iamVjdC5wZXJmb3JtRGVmYXVsdEFjdGlvbigpOwogfQogCiBzdGF0
aWMgZ2ludCB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rQWN0aW9uR2V0TkFjdGlvbnMoQXRrQWN0
aW9uKiBhY3Rpb24pCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0FDQ0VT
U0lCTEVfSFlQRVJMSU5LKGFjdGlvbiksIDApOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhhY3Rpb24pLT5wcml2LT5oeXBlcmxpbmtJbXBsLCAw
KTsKLSAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VT
U0lCTEVfSFlQRVJMSU5LKGFjdGlvbiktPnByaXYtPmh5cGVybGlua0ltcGwsIDApOwotCi0gICAg
aWYgKCFBVEtfSVNfQUNUSU9OKFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhhY3Rpb24pLT5w
cml2LT5oeXBlcmxpbmtJbXBsKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgYXV0byogYWNjZXNz
aWJsZUh5cGVybGluayA9IFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhhY3Rpb24pOworICAg
IHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChhY2Nlc3NpYmxlSHlwZXJsaW5r
LT5wcml2LT5oeXBlcmxpbmtJbXBsLCAwKTsKIAotICAgIHJldHVybiAxOworICAgIHJldHVybiBB
VEtfSVNfQUNUSU9OKGFjY2Vzc2libGVIeXBlcmxpbmstPnByaXYtPmh5cGVybGlua0ltcGwpID8g
MSA6IDA7CiB9CiAKLXN0YXRpYyBjb25zdCBnY2hhciogd2Via2l0QWNjZXNzaWJsZUh5cGVybGlu
a0FjdGlvbkdldERlc2NyaXB0aW9uKEF0a0FjdGlvbiogYWN0aW9uLCBnaW50IGluZGV4KQorc3Rh
dGljIGNvbnN0IGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rQWN0aW9uR2V0RGVzY3Jp
cHRpb24oQXRrQWN0aW9uKiBhY3Rpb24sIGdpbnQpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGFjdGlvbiksIDApOwotICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhhY3Rpb24pLT5wcml2
LT5oeXBlcmxpbmtJbXBsLCAwKTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbCghaW5kZXgsIDAp
OwotICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChXRUJLSVRfQUNDRVNT
SUJMRV9IWVBFUkxJTksoYWN0aW9uKS0+cHJpdi0+aHlwZXJsaW5rSW1wbCwgMCk7CisgICAgYXV0
byogYWNjZXNzaWJsZUh5cGVybGluayA9IFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhhY3Rp
b24pOworICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChhY2Nlc3NpYmxl
SHlwZXJsaW5rLT5wcml2LT5oeXBlcmxpbmtJbXBsLCBudWxscHRyKTsKIAogICAgIC8vIFRPRE86
IE5lZWQgYSB3YXkgdG8gcHJvdmlkZS9sb2NhbGl6ZSBhY3Rpb24gZGVzY3JpcHRpb25zLgogICAg
IG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuICIiOwogfQogCi1zdGF0aWMgY29uc3QgZ2No
YXIqIHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtBY3Rpb25HZXRLZXliaW5kaW5nKEF0a0FjdGlv
biogYWN0aW9uLCBnaW50IGluZGV4KQorc3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRBY2Nlc3Np
YmxlSHlwZXJsaW5rQWN0aW9uR2V0S2V5YmluZGluZyhBdGtBY3Rpb24qIGFjdGlvbiwgZ2ludCkK
IHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfQUNDRVNTSUJMRV9IWVBFUkxJ
TksoYWN0aW9uKSwgMCk7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0FDQ0VTU0lC
TEVfSFlQRVJMSU5LKGFjdGlvbiktPnByaXYtPmh5cGVybGlua0ltcGwsIDApOwotICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKCFpbmRleCwgMCk7CisgICAgYXV0byogYWNjZXNzaWJsZUh5cGVybGlu
ayA9IFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhhY3Rpb24pOworICAgIHJldHVyblZhbElm
V2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChhY2Nlc3NpYmxlSHlwZXJsaW5rLT5wcml2LT5oeXBl
cmxpbmtJbXBsLCBudWxscHRyKTsKIAotICAgIFdlYktpdEFjY2Vzc2libGVIeXBlcmxpbmtQcml2
YXRlKiBwcml2ID0gV0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGFjdGlvbiktPnByaXY7Ci0g
ICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKHByaXYtPmh5cGVybGlua0lt
cGwsIDApOworICAgIGlmICghQVRLX0lTX0FDVElPTihhY2Nlc3NpYmxlSHlwZXJsaW5rLT5wcml2
LT5oeXBlcmxpbmtJbXBsKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoIUFU
S19JU19BQ1RJT04ocHJpdi0+aHlwZXJsaW5rSW1wbCkpCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUoYWN0aW9uKTsKLSAgICBp
ZiAoIWNvcmVPYmplY3QpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcHJpdi0+YWN0aW9uS2V5
QmluZGluZyA9IGNvcmVPYmplY3QtPmFjY2Vzc0tleSgpLnN0cmluZygpLnV0ZjgoKTsKLSAgICBy
ZXR1cm4gcHJpdi0+YWN0aW9uS2V5QmluZGluZy5kYXRhKCk7CisgICAgYXV0byYgY29yZU9iamVj
dCA9IHdlYmtpdEFjY2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KGFjY2Vzc2libGVIeXBl
cmxpbmstPnByaXYtPmh5cGVybGlua0ltcGwpOworICAgIGFjY2Vzc2libGVIeXBlcmxpbmstPnBy
aXYtPmFjdGlvbktleUJpbmRpbmcgPSBjb3JlT2JqZWN0LmFjY2Vzc0tleSgpLnN0cmluZygpLnV0
ZjgoKTsKKyAgICByZXR1cm4gYWNjZXNzaWJsZUh5cGVybGluay0+cHJpdi0+YWN0aW9uS2V5Qmlu
ZGluZy5kYXRhKCk7CiB9CiAKLXN0YXRpYyBjb25zdCBnY2hhciogd2Via2l0QWNjZXNzaWJsZUh5
cGVybGlua0FjdGlvbkdldE5hbWUoQXRrQWN0aW9uKiBhY3Rpb24sIGdpbnQgaW5kZXgpCitzdGF0
aWMgY29uc3QgZ2NoYXIqIHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtBY3Rpb25HZXROYW1lKEF0
a0FjdGlvbiogYWN0aW9uLCBnaW50KQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9JU19BQ0NFU1NJQkxFX0hZUEVSTElOSyhhY3Rpb24pLCAwKTsKLSAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksoYWN0aW9uKS0+cHJpdi0+aHlwZXJs
aW5rSW1wbCwgMCk7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoIWluZGV4LCAwKTsKLQotICAg
IFdlYktpdEFjY2Vzc2libGVIeXBlcmxpbmtQcml2YXRlKiBwcml2ID0gV0VCS0lUX0FDQ0VTU0lC
TEVfSFlQRVJMSU5LKGFjdGlvbiktPnByaXY7Ci0gICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3Np
YmxlSXNJbnZhbGlkKHByaXYtPmh5cGVybGlua0ltcGwsIDApOwotCi0gICAgaWYgKCFBVEtfSVNf
QUNUSU9OKHByaXYtPmh5cGVybGlua0ltcGwpKQotICAgICAgICByZXR1cm4gMDsKKyAgICBhdXRv
KiBhY2Nlc3NpYmxlSHlwZXJsaW5rID0gV0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGFjdGlv
bik7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKGFjY2Vzc2libGVI
eXBlcmxpbmstPnByaXYtPmh5cGVybGlua0ltcGwsIG51bGxwdHIpOwogCi0gICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUoYWN0aW9uKTsKLSAgICBpZiAoIWNvcmVPYmpl
Y3QpCi0gICAgICAgIHJldHVybiAwOworICAgIGlmICghQVRLX0lTX0FDVElPTihhY2Nlc3NpYmxl
SHlwZXJsaW5rLT5wcml2LT5oeXBlcmxpbmtJbXBsKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBwcml2LT5hY3Rpb25OYW1lID0gY29yZU9iamVjdC0+YWN0aW9uVmVyYigpLnV0Zjgo
KTsKLSAgICByZXR1cm4gcHJpdi0+YWN0aW9uTmFtZS5kYXRhKCk7CisgICAgYXV0byYgY29yZU9i
amVjdCA9IHdlYmtpdEFjY2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KGFjY2Vzc2libGVI
eXBlcmxpbmstPnByaXYtPmh5cGVybGlua0ltcGwpOworICAgIGFjY2Vzc2libGVIeXBlcmxpbmst
PnByaXYtPmFjdGlvbk5hbWUgPSBjb3JlT2JqZWN0LmFjdGlvblZlcmIoKS51dGY4KCk7CisgICAg
cmV0dXJuIGFjY2Vzc2libGVIeXBlcmxpbmstPnByaXYtPmFjdGlvbk5hbWUuZGF0YSgpOwogfQog
Ci1zdGF0aWMgdm9pZCBhdGtBY3Rpb25JbnRlcmZhY2VJbml0KEF0a0FjdGlvbklmYWNlKiBpZmFj
ZSkKK3N0YXRpYyB2b2lkIHdlYmtpdF9hY2Nlc3NpYmxlX2h5cGVybGlua19hdGtfYWN0aW9uX2lu
dGVyZmFjZV9pbml0KEF0a0FjdGlvbklmYWNlKiBpZmFjZSkKIHsKICAgICBpZmFjZS0+ZG9fYWN0
aW9uID0gd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0FjdGlvbkRvQWN0aW9uOwogICAgIGlmYWNl
LT5nZXRfbl9hY3Rpb25zID0gd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0FjdGlvbkdldE5BY3Rp
b25zOwpAQCAtMTgxLDQ0ICsxMjYsMzkgQEAgc3RhdGljIHZvaWQgYXRrQWN0aW9uSW50ZXJmYWNl
SW5pdChBdGtBY3Rpb25JZmFjZSogaWZhY2UpCiAKIHN0YXRpYyBnY2hhciogd2Via2l0QWNjZXNz
aWJsZUh5cGVybGlua0dldFVSSShBdGtIeXBlcmxpbmsqIGxpbmssIGdpbnQgaW5kZXgpCiB7Ci0g
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxp
bmspLCAwKTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfQUNDRVNTSUJMRV9IWVBF
UkxJTksobGluayktPnByaXYtPmh5cGVybGlua0ltcGwsIDApOwotCiAgICAgLy8gRklYTUU6IERv
IE5PVCBzdXBwb3J0IG1vcmUgdGhhbiBvbmUgaW5zdGFuY2Ugb2YgYW4gQXRrT2JqZWN0CiAgICAg
Ly8gaW1wbGVtZW50aW5nIEF0a0h5cGVybGlua0ltcGwgaW4gZXZlcnkgaW5zdGFuY2Ugb2YgQXRr
SHlwZXJMaW5rCi0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoIWluZGV4LCAwKTsKKyAgICBpZiAo
aW5kZXgpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuVmFsSWZXZWJLaXRB
Y2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhsaW5rKS0+cHJp
di0+aHlwZXJsaW5rSW1wbCwgMCk7Ci0KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2Jq
ZWN0ID0gY29yZShsaW5rKTsKLSAgICBpZiAoIWNvcmVPYmplY3QgfHwgY29yZU9iamVjdC0+dXJs
KCkuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOworICAgIGF1dG8qIGFjY2Vzc2libGVIeXBl
cmxpbmsgPSBXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksobGluayk7CisgICAgcmV0dXJuVmFs
SWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKGFjY2Vzc2libGVIeXBlcmxpbmstPnByaXYtPmh5
cGVybGlua0ltcGwsIG51bGxwdHIpOwogCi0gICAgcmV0dXJuIGdfc3RyZHVwKGNvcmVPYmplY3Qt
PnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGF1dG8mIGNvcmVPYmplY3QgPSB3
ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVjdChhY2Nlc3NpYmxlSHlwZXJsaW5r
LT5wcml2LT5oeXBlcmxpbmtJbXBsKTsKKyAgICByZXR1cm4gIWNvcmVPYmplY3QudXJsKCkuaXNO
dWxsKCkgPyBnX3N0cmR1cChjb3JlT2JqZWN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
IDogbnVsbHB0cjsKIH0KIAogc3RhdGljIEF0a09iamVjdCogd2Via2l0QWNjZXNzaWJsZUh5cGVy
bGlua0dldE9iamVjdChBdGtIeXBlcmxpbmsqIGxpbmssIGdpbnQgaW5kZXgpCiB7Ci0gICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxpbmspLCAw
KTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTkso
bGluayktPnByaXYtPmh5cGVybGlua0ltcGwsIDApOwotCiAgICAgLy8gRklYTUU6IERvIE5PVCBz
dXBwb3J0IG1vcmUgdGhhbiBvbmUgaW5zdGFuY2Ugb2YgYW4gQXRrT2JqZWN0CiAgICAgLy8gaW1w
bGVtZW50aW5nIEF0a0h5cGVybGlua0ltcGwgaW4gZXZlcnkgaW5zdGFuY2Ugb2YgQXRrSHlwZXJM
aW5rCi0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoIWluZGV4LCAwKTsKKyAgICBpZiAoaW5kZXgp
CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3Np
YmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhsaW5rKS0+cHJpdi0+aHlw
ZXJsaW5rSW1wbCwgMCk7CisgICAgYXV0byogYWNjZXNzaWJsZUh5cGVybGluayA9IFdFQktJVF9B
Q0NFU1NJQkxFX0hZUEVSTElOSyhsaW5rKTsKKyAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2li
bGVJc0ludmFsaWQoYWNjZXNzaWJsZUh5cGVybGluay0+cHJpdi0+aHlwZXJsaW5rSW1wbCwgMCk7
CiAKLSAgICByZXR1cm4gQVRLX09CSkVDVChXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksobGlu
ayktPnByaXYtPmh5cGVybGlua0ltcGwpOworICAgIHJldHVybiBBVEtfT0JKRUNUKGFjY2Vzc2li
bGVIeXBlcmxpbmstPnByaXYtPmh5cGVybGlua0ltcGwpOwogfQogCi1zdGF0aWMgZ2ludCBnZXRS
YW5nZUxlbmd0aEZvck9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIFJhbmdlKiByYW5n
ZSkKK3N0YXRpYyBnaW50IHJhbmdlTGVuZ3RoRm9yT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3Qm
IG9iaiwgUmFuZ2UqIHJhbmdlKQogewogICAgIC8vIFRoaXMgaXMgZ29pbmcgdG8gYmUgdGhlIGFj
dHVhbCBsZW5ndGggaW4gbW9zdCBvZiB0aGUgY2FzZXMKICAgICBpbnQgYmFzZUxlbmd0aCA9IFRl
eHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UsIHRydWUpOwogCiAgICAgLy8gQ2hlY2sgd2hl
dGhlciB0aGUgY3VycmVudCBoeXBlcmxpbmsgYmVsb25ncyB0byBhIGxpc3QgaXRlbS4KICAgICAv
LyBJZiBzbywgd2UgbmVlZCB0byBjb25zaWRlciB0aGUgbGVuZ3RoIG9mIHRoZSBpdGVtJ3MgbWFy
a2VyCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gb2JqLT5wYXJlbnRPYmplY3RV
bmlnbm9yZWQoKTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBvYmoucGFyZW50
T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+aXNBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0KCkgfHwgIXBhcmVudC0+aXNMaXN0SXRlbSgpKQogICAgICAgICBy
ZXR1cm4gYmFzZUxlbmd0aDsKIApAQCAtMjQwLDE5ICsxODAsMTUgQEAgc3RhdGljIGdpbnQgZ2V0
UmFuZ2VMZW5ndGhGb3JPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqLCBSYW5nZSogcmFu
Z2UpCiAKIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRTdGFydEluZGV4
KEF0a0h5cGVybGluayogbGluaykKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfQUNDRVNTSUJMRV9IWVBFUkxJTksobGluayksIDApOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhsaW5rKS0+cHJpdi0+aHlwZXJsaW5rSW1w
bCwgMCk7Ci0gICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJVF9B
Q0NFU1NJQkxFX0hZUEVSTElOSyhsaW5rKS0+cHJpdi0+aHlwZXJsaW5rSW1wbCwgMCk7Ci0KLSAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gY29yZShsaW5rKTsKLSAgICBpZiAo
IWNvcmVPYmplY3QpCi0gICAgICAgIHJldHVybiAwOworICAgIGF1dG8qIGFjY2Vzc2libGVIeXBl
cmxpbmsgPSBXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksobGluayk7CisgICAgcmV0dXJuVmFs
SWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKGFjY2Vzc2libGVIeXBlcmxpbmstPnByaXYtPmh5
cGVybGlua0ltcGwsIDApOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50VW5pZ25v
cmVkID0gY29yZU9iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgYXV0byYgY29y
ZU9iamVjdCA9IHdlYmtpdEFjY2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KGFjY2Vzc2li
bGVIeXBlcmxpbmstPnByaXYtPmh5cGVybGlua0ltcGwpOworICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHBhcmVudFVuaWdub3JlZCA9IGNvcmVPYmplY3QucGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7
CiAgICAgaWYgKCFwYXJlbnRVbmlnbm9yZWQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgTm9k
ZSogbm9kZSA9IGNvcmVPYmplY3QtPm5vZGUoKTsKKyAgICBOb2RlKiBub2RlID0gY29yZU9iamVj
dC5ub2RlKCk7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMjYxLDI0
ICsxOTcsMjAgQEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldFN0YXJ0
SW5kZXgoQXRrSHlwZXJsaW5rKiBsaW5rKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGF1dG8g
cmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk9y
QmVmb3JlTm9kZShwYXJlbnROb2RlKSwgZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG5vZGUp
KTsKLSAgICByZXR1cm4gZ2V0UmFuZ2VMZW5ndGhGb3JPYmplY3QoY29yZU9iamVjdCwgcmFuZ2Uu
cHRyKCkpOworICAgIHJldHVybiByYW5nZUxlbmd0aEZvck9iamVjdChjb3JlT2JqZWN0LCByYW5n
ZS5wdHIoKSk7CiB9CiAKIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRF
bmRJbmRleChBdGtIeXBlcmxpbmsqIGxpbmspCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0lTX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxpbmspLCAwKTsKLSAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksobGluayktPnByaXYtPmh5cGVy
bGlua0ltcGwsIDApOwotICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChX
RUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksobGluayktPnByaXYtPmh5cGVybGlua0ltcGwsIDAp
OworICAgIGF1dG8qIGFjY2Vzc2libGVIeXBlcmxpbmsgPSBXRUJLSVRfQUNDRVNTSUJMRV9IWVBF
UkxJTksobGluayk7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKGFj
Y2Vzc2libGVIeXBlcmxpbmstPnByaXYtPmh5cGVybGlua0ltcGwsIDApOwogCi0gICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUobGluayk7Ci0gICAgaWYgKCFjb3JlT2Jq
ZWN0KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVu
dFVuaWdub3JlZCA9IGNvcmVPYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgIGF1
dG8mIGNvcmVPYmplY3QgPSB3ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVjdChh
Y2Nlc3NpYmxlSHlwZXJsaW5rLT5wcml2LT5oeXBlcmxpbmtJbXBsKTsKKyAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBwYXJlbnRVbmlnbm9yZWQgPSBjb3JlT2JqZWN0LnBhcmVudE9iamVjdFVuaWdu
b3JlZCgpOwogICAgIGlmICghcGFyZW50VW5pZ25vcmVkKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIE5vZGUqIG5vZGUgPSBjb3JlT2JqZWN0LT5ub2RlKCk7CisgICAgTm9kZSogbm9kZSA9IGNv
cmVPYmplY3Qubm9kZSgpOwogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAg
LTI4NywxNCArMjE5LDEzIEBAIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtH
ZXRFbmRJbmRleChBdGtIeXBlcmxpbmsqIGxpbmspCiAgICAgICAgIHJldHVybiAwOwogCiAgICAg
YXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlv
bkluT3JCZWZvcmVOb2RlKHBhcmVudE5vZGUpLCBsYXN0UG9zaXRpb25Jbk9yQWZ0ZXJOb2RlKG5v
ZGUpKTsKLSAgICByZXR1cm4gZ2V0UmFuZ2VMZW5ndGhGb3JPYmplY3QoY29yZU9iamVjdCwgcmFu
Z2UucHRyKCkpOworICAgIHJldHVybiByYW5nZUxlbmd0aEZvck9iamVjdChjb3JlT2JqZWN0LCBy
YW5nZS5wdHIoKSk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJs
aW5rSXNWYWxpZChBdGtIeXBlcmxpbmsqIGxpbmspCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxpbmspLCBGQUxTRSk7Ci0gICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxpbmspLT5wcml2
LT5oeXBlcmxpbmtJbXBsLCBGQUxTRSk7Ci0gICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxl
SXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhsaW5rKS0+cHJpdi0+aHlwZXJs
aW5rSW1wbCwgRkFMU0UpOworICAgIGF1dG8qIGFjY2Vzc2libGVIeXBlcmxpbmsgPSBXRUJLSVRf
QUNDRVNTSUJMRV9IWVBFUkxJTksobGluayk7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3Np
YmxlSXNJbnZhbGlkKGFjY2Vzc2libGVIeXBlcmxpbmstPnByaXYtPmh5cGVybGlua0ltcGwsIEZB
TFNFKTsKIAogICAgIC8vIExpbmsgaXMgdmFsaWQgZm9yIHRoZSB3aG9sZSBvYmplY3QncyBsaWZl
dGltZQogICAgIHJldHVybiBUUlVFOwpAQCAtMzA0LDE4ICsyMzUsMTYgQEAgc3RhdGljIGdpbnQg
d2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldE5BbmNob3JzKEF0a0h5cGVybGluayogbGluaykK
IHsKICAgICAvLyBGSVhNRSBEbyBOT1Qgc3VwcG9ydCBtb3JlIHRoYW4gb25lIGluc3RhbmNlIG9m
IGFuIEF0a09iamVjdAogICAgIC8vIGltcGxlbWVudGluZyBBdGtIeXBlcmxpbmtJbXBsIGluIGV2
ZXJ5IGluc3RhbmNlIG9mIEF0a0h5cGVyTGluawotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9JU19BQ0NFU1NJQkxFX0hZUEVSTElOSyhsaW5rKSwgMCk7Ci0gICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoV0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxpbmspLT5wcml2LT5oeXBlcmxp
bmtJbXBsLCAwKTsKLSAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoV0VC
S0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxpbmspLT5wcml2LT5oeXBlcmxpbmtJbXBsLCAwKTsK
KyAgICBhdXRvKiBhY2Nlc3NpYmxlSHlwZXJsaW5rID0gV0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJM
SU5LKGxpbmspOworICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChhY2Nl
c3NpYmxlSHlwZXJsaW5rLT5wcml2LT5oeXBlcmxpbmtJbXBsLCAwKTsKIAogICAgIHJldHVybiAx
OwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0lzU2VsZWN0
ZWRMaW5rKEF0a0h5cGVybGluayogbGluaykKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfQUNDRVNTSUJMRV9IWVBFUkxJTksobGluayksIEZBTFNFKTsKLSAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksobGluayktPnByaXYtPmh5
cGVybGlua0ltcGwsIEZBTFNFKTsKLSAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0lu
dmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxpbmspLT5wcml2LT5oeXBlcmxpbmtJ
bXBsLCBGQUxTRSk7CisgICAgYXV0byogYWNjZXNzaWJsZUh5cGVybGluayA9IFdFQktJVF9BQ0NF
U1NJQkxFX0hZUEVSTElOSyhsaW5rKTsKKyAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJ
c0ludmFsaWQoYWNjZXNzaWJsZUh5cGVybGluay0+cHJpdi0+aHlwZXJsaW5rSW1wbCwgRkFMU0Up
OwogCiAgICAgLy8gTm90IGltcGxlbWVudGVkOiB0aGlzIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQg
aW4gQVRLIG5vdwogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC0zMjQsOSArMjUzLDExIEBAIHN0
YXRpYyBnYm9vbGVhbiB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rSXNTZWxlY3RlZExpbmsoQXRr
SHlwZXJsaW5rKiBsaW5rKQogCiBzdGF0aWMgdm9pZCB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5r
R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdWUs
IEdQYXJhbVNwZWMqIHBzcGVjKQogeworICAgIGF1dG8qIGFjY2Vzc2libGVIeXBlcmxpbmsgPSBX
RUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksob2JqZWN0KTsKKwogICAgIHN3aXRjaCAocHJvcElk
KSB7CiAgICAgY2FzZSBQUk9QX0hZUEVSTElOS19JTVBMOgotICAgICAgICBnX3ZhbHVlX3NldF9v
YmplY3QodmFsdWUsIFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhvYmplY3QpLT5wcml2LT5o
eXBlcmxpbmtJbXBsKTsKKyAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCBhY2Nlc3Np
YmxlSHlwZXJsaW5rLT5wcml2LT5oeXBlcmxpbmtJbXBsKTsKICAgICAgICAgYnJlYWs7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVj
dCwgcHJvcElkLCBwc3BlYyk7CkBAIC0zMzUsMTAxICsyNjYsNTEgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0QWNjZXNzaWJsZUh5cGVybGlua0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQg
cHJvcElkLAogCiBzdGF0aWMgdm9pZCB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rU2V0UHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQ
YXJhbVNwZWMqIHBzcGVjKQogewotICAgIFdlYktpdEFjY2Vzc2libGVIeXBlcmxpbmtQcml2YXRl
KiBwcml2ID0gV0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKG9iamVjdCktPnByaXY7CisgICAg
YXV0byogYWNjZXNzaWJsZUh5cGVybGluayA9IFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOSyhv
YmplY3QpOwogCiAgICAgc3dpdGNoIChwcm9wSWQpIHsKICAgICBjYXNlIFBST1BfSFlQRVJMSU5L
X0lNUEw6Ci0gICAgICAgIC8vIE5vIG5lZWQgdG8gY2hlY2sgYW5kIHVucmVmIHByZXZpb3VzIHZh
bHVlcyBvZgotICAgICAgICAvLyBwcml2LT5oeXBlcmxpbmtJbXBsIGFzIHRoaXMgaXMgYSBDT05T
VFJVQ1QgT05MWSBwcm9wZXJ0eQotICAgICAgICBwcml2LT5oeXBlcmxpbmtJbXBsID0gV0VCS0lU
X0FDQ0VTU0lCTEUoZ192YWx1ZV9nZXRfb2JqZWN0KHZhbHVlKSk7Ci0gICAgICAgIGdfb2JqZWN0
X3dlYWtfcmVmKEdfT0JKRUNUKHByaXYtPmh5cGVybGlua0ltcGwpLCAoR1dlYWtOb3RpZnkpKEdD
YWxsYmFjaylnX29iamVjdF91bnJlZiwgb2JqZWN0KTsKKyAgICAgICAgYWNjZXNzaWJsZUh5cGVy
bGluay0+cHJpdi0+aHlwZXJsaW5rSW1wbCA9IFdFQktJVF9BQ0NFU1NJQkxFKGdfdmFsdWVfZ2V0
X29iamVjdCh2YWx1ZSkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBH
X09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBzcGVjKTsK
ICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtGaW5hbGl6
ZShHT2JqZWN0KiBvYmplY3QpCi17Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0QWNjZXNzaWJs
ZUh5cGVybGlua1BhcmVudENsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQotc3RhdGljIHZv
aWQgd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0NsYXNzSW5pdChBdGtIeXBlcmxpbmtDbGFzcyog
a2xhc3MpCitzdGF0aWMgdm9pZCB3ZWJraXRfYWNjZXNzaWJsZV9oeXBlcmxpbmtfY2xhc3NfaW5p
dChXZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rQ2xhc3MqIGtsYXNzKQogewogICAgIEdPYmplY3RD
bGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOwotCi0gICAgd2Via2l0
QWNjZXNzaWJsZUh5cGVybGlua1BhcmVudENsYXNzID0gZ190eXBlX2NsYXNzX3BlZWtfcGFyZW50
KGtsYXNzKTsKLQotICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRBY2Nlc3NpYmxl
SHlwZXJsaW5rRmluYWxpemU7CiAgICAgZ29iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJr
aXRBY2Nlc3NpYmxlSHlwZXJsaW5rU2V0UHJvcGVydHk7CiAgICAgZ29iamVjdENsYXNzLT5nZXRf
cHJvcGVydHkgPSB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0UHJvcGVydHk7CiAKLSAgICBr
bGFzcy0+Z2V0X3VyaSA9IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRVUkk7Ci0gICAga2xh
c3MtPmdldF9vYmplY3QgPSB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0T2JqZWN0OwotICAg
IGtsYXNzLT5nZXRfc3RhcnRfaW5kZXggPSB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0U3Rh
cnRJbmRleDsKLSAgICBrbGFzcy0+Z2V0X2VuZF9pbmRleCA9IHdlYmtpdEFjY2Vzc2libGVIeXBl
cmxpbmtHZXRFbmRJbmRleDsKLSAgICBrbGFzcy0+aXNfdmFsaWQgPSB3ZWJraXRBY2Nlc3NpYmxl
SHlwZXJsaW5rSXNWYWxpZDsKLSAgICBrbGFzcy0+Z2V0X25fYW5jaG9ycyA9IHdlYmtpdEFjY2Vz
c2libGVIeXBlcmxpbmtHZXROQW5jaG9yczsKLSAgICBrbGFzcy0+aXNfc2VsZWN0ZWRfbGluayA9
IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtJc1NlbGVjdGVkTGluazsKKyAgICBBdGtIeXBlcmxp
bmtDbGFzcyogYXRrSHlwZXJsaW5rQ2xhc3MgPSBBVEtfSFlQRVJMSU5LX0NMQVNTKGtsYXNzKTsK
KyAgICBhdGtIeXBlcmxpbmtDbGFzcy0+Z2V0X3VyaSA9IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxp
bmtHZXRVUkk7CisgICAgYXRrSHlwZXJsaW5rQ2xhc3MtPmdldF9vYmplY3QgPSB3ZWJraXRBY2Nl
c3NpYmxlSHlwZXJsaW5rR2V0T2JqZWN0OworICAgIGF0a0h5cGVybGlua0NsYXNzLT5nZXRfc3Rh
cnRfaW5kZXggPSB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0U3RhcnRJbmRleDsKKyAgICBh
dGtIeXBlcmxpbmtDbGFzcy0+Z2V0X2VuZF9pbmRleCA9IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxp
bmtHZXRFbmRJbmRleDsKKyAgICBhdGtIeXBlcmxpbmtDbGFzcy0+aXNfdmFsaWQgPSB3ZWJraXRB
Y2Nlc3NpYmxlSHlwZXJsaW5rSXNWYWxpZDsKKyAgICBhdGtIeXBlcmxpbmtDbGFzcy0+Z2V0X25f
YW5jaG9ycyA9IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXROQW5jaG9yczsKKyAgICBhdGtI
eXBlcmxpbmtDbGFzcy0+aXNfc2VsZWN0ZWRfbGluayA9IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxp
bmtJc1NlbGVjdGVkTGluazsKIAogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
Z29iamVjdENsYXNzLCBQUk9QX0hZUEVSTElOS19JTVBMLAogICAgICAgICBnX3BhcmFtX3NwZWNf
b2JqZWN0KCJoeXBlcmxpbmstaW1wbCIsCiAgICAgICAgICAgICAiSHlwZXJsaW5rIGltcGxlbWVu
dGF0aW9uIiwKICAgICAgICAgICAgICJUaGUgYXNzb2NpYXRlZCBXZWJLaXRBY2Nlc3NpYmxlIGlu
c3RhbmNlLiIsCiAgICAgICAgICAgICBXRUJLSVRfVFlQRV9BQ0NFU1NJQkxFLAotICAgICAgICAg
ICAgKEdQYXJhbUZsYWdzKShHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09O
TFkgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwotCi0gICAgZ190eXBlX2NsYXNzX2FkZF9w
cml2YXRlKGdvYmplY3RDbGFzcywgc2l6ZW9mKFdlYktpdEFjY2Vzc2libGVIeXBlcmxpbmtQcml2
YXRlKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtJbml0KEF0
a0h5cGVybGluayogbGluaykKLXsKLSAgICBXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTksobGlu
ayktPnByaXYgPSBXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTktfR0VUX1BSSVZBVEUobGluayk7
Ci0gICAgV0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxpbmspLT5wcml2LT5oeXBlcmxpbmtJ
bXBsID0gbnVsbHB0cjsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJL
SVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKIH0KIAotR1R5
cGUgd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldFR5cGUoKQorV2ViS2l0QWNjZXNzaWJsZUh5
cGVybGluayogd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldE9yQ3JlYXRlKEF0a0h5cGVybGlu
a0ltcGwqIGh5cGVybGlua0ltcGwpCiB7Ci0gICAgc3RhdGljIHZvbGF0aWxlIGdzaXplIHR5cGVW
b2xhdGlsZSA9IDA7Ci0KLSAgICBpZiAoZ19vbmNlX2luaXRfZW50ZXIoJnR5cGVWb2xhdGlsZSkp
IHsKLSAgICAgICAgc3RhdGljIGNvbnN0IEdUeXBlSW5mbyB0aW5mbyA9IHsKLSAgICAgICAgICAg
IHNpemVvZihXZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rQ2xhc3MpLAotICAgICAgICAgICAgKEdC
YXNlSW5pdEZ1bmMpIDAsCi0gICAgICAgICAgICAoR0Jhc2VGaW5hbGl6ZUZ1bmMpIDAsCi0gICAg
ICAgICAgICAoR0NsYXNzSW5pdEZ1bmMpKEdDYWxsYmFjaykgd2Via2l0QWNjZXNzaWJsZUh5cGVy
bGlua0NsYXNzSW5pdCwKLSAgICAgICAgICAgIChHQ2xhc3NGaW5hbGl6ZUZ1bmMpIDAsCi0gICAg
ICAgICAgICAwLCAvKiBjbGFzcyBkYXRhICovCi0gICAgICAgICAgICBzaXplb2YoV2ViS2l0QWNj
ZXNzaWJsZUh5cGVybGluayksIC8qIGluc3RhbmNlIHNpemUgKi8KLSAgICAgICAgICAgIDAsIC8q
IG5iIHByZWFsbG9jcyAqLwotICAgICAgICAgICAgKEdJbnN0YW5jZUluaXRGdW5jKShHQ2FsbGJh
Y2spIHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtJbml0LAotICAgICAgICAgICAgMCAvKiB2YWx1
ZSB0YWJsZSAqLwotICAgICAgICB9OwotCi0gICAgICAgIHN0YXRpYyBjb25zdCBHSW50ZXJmYWNl
SW5mbyBhY3Rpb25JbmZvID0gewotICAgICAgICAgICAgKEdJbnRlcmZhY2VJbml0RnVuYykoR0Nh
bGxiYWNrKWF0a0FjdGlvbkludGVyZmFjZUluaXQsCi0gICAgICAgICAgICAoR0ludGVyZmFjZUZp
bmFsaXplRnVuYykgMCwgMAotICAgICAgICB9OwotCi0gICAgICAgIEdUeXBlIHR5cGUgPSBnX3R5
cGVfcmVnaXN0ZXJfc3RhdGljKEFUS19UWVBFX0hZUEVSTElOSywgIldlYktpdEFjY2Vzc2libGVI
eXBlcmxpbmsiLCAmdGluZm8sIEdUeXBlRmxhZ3MoMCkpOwotICAgICAgICBnX3R5cGVfYWRkX2lu
dGVyZmFjZV9zdGF0aWModHlwZSwgQVRLX1RZUEVfQUNUSU9OLCAmYWN0aW9uSW5mbyk7Ci0KLSAg
ICAgICAgZ19vbmNlX2luaXRfbGVhdmUoJnR5cGVWb2xhdGlsZSwgdHlwZSk7Ci0gICAgfQorICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19JU19IWVBFUkxJTktfSU1QTChoeXBlcmxpbmtJbXBs
KSwgbnVsbHB0cik7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0FDQ0VTU0lC
TEUoaHlwZXJsaW5rSW1wbCksIG51bGxwdHIpOwogCi0gICAgcmV0dXJuIHR5cGVWb2xhdGlsZTsK
LX0KKyAgICBpZiAoYXV0byogY3VycmVudEh5cGVyTGluayA9IGdfb2JqZWN0X2dldF9kYXRhKEdf
T0JKRUNUKGh5cGVybGlua0ltcGwpLCAid2Via2l0LWFjY2Vzc2libGUtaHlwZXJsaW5rLW9iamVj
dCIpKQorICAgICAgICByZXR1cm4gV0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGdfb2JqZWN0
X3JlZihjdXJyZW50SHlwZXJMaW5rKSk7CiAKLVdlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsqIHdl
YmtpdEFjY2Vzc2libGVIeXBlcmxpbmtOZXcoQXRrSHlwZXJsaW5rSW1wbCogaHlwZXJsaW5rSW1w
bCkKLXsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfSVNfSFlQRVJMSU5LX0lNUEwoaHlw
ZXJsaW5rSW1wbCksIDApOwotICAgIHJldHVybiBXRUJLSVRfQUNDRVNTSUJMRV9IWVBFUkxJTkso
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0FDQ0VTU0lCTEVfSFlQRVJMSU5LLCAiaHlwZXJsaW5r
LWltcGwiLCBoeXBlcmxpbmtJbXBsLCAwKSk7Ci19Ci0KLVdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3QqIHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KFdl
YktpdEFjY2Vzc2libGVIeXBlcmxpbmsqIGxpbmspCi17Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKGxpbmspLCAwKTsKLSAgICByZXR1cm4g
Y29yZShsaW5rKTsKKyAgICBhdXRvKiBoeXBlcmxpbmsgPSBXRUJLSVRfQUNDRVNTSUJMRV9IWVBF
UkxJTksoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0FDQ0VTU0lCTEVfSFlQRVJMSU5LLCAiaHlw
ZXJsaW5rLWltcGwiLCBoeXBlcmxpbmtJbXBsLCBudWxscHRyKSk7CisgICAgZ19vYmplY3Rfc2V0
X2RhdGFfZnVsbChHX09CSkVDVChoeXBlcmxpbmtJbXBsKSwgIndlYmtpdC1hY2Nlc3NpYmxlLWh5
cGVybGluay1vYmplY3QiLCBoeXBlcmxpbmssIGdfb2JqZWN0X3VucmVmKTsKKyAgICByZXR1cm4g
aHlwZXJsaW5rOwogfQogCiAjZW5kaWYgLy8gSEFWRShBQ0NFU1NJQklMSVRZKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVy
bGluay5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJs
ZUh5cGVybGluay5oCmluZGV4IDA1MzMxNTZlN2QxLi5lZjNmNjdiYTI3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGlu
ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVIeXBlcmxpbmsuaApAQCAtMjMsMjcgKzIzLDIyIEBACiAKICNpbmNsdWRlIDxhdGsvYXRrLmg+
CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3Q7Ci19Ci0K
IEdfQkVHSU5fREVDTFMKIAotI2RlZmluZSBXRUJLSVRfVFlQRV9BQ0NFU1NJQkxFX0hZUEVSTElO
SyAgICAgICAgICAgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0VHlwZSAoKSkK
LSNkZWZpbmUgV0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LKG9iaikgICAgICAgICAgICAgICAg
ICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmopLCBXRUJLSVRfVFlQRV9BQ0NFU1NJ
QkxFX0hZUEVSTElOSywgV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluaykpCi0jZGVmaW5lIFdFQktJ
VF9BQ0NFU1NJQkxFX0hZUEVSTElOS19DTEFTUyhrbGFzcykgICAgICAgICAgKEdfVFlQRV9DSEVD
S19DTEFTU19DQVNUICgoa2xhc3MpLCBXRUJLSVRfVFlQRV9BQ0NFU1NJQkxFX0hZUEVSTElOSywg
V2ViS2l0QWNjZXNzaWJsZUh5cGVybGlua0NsYXNzKSkKLSNkZWZpbmUgV0VCS0lUX0lTX0FDQ0VT
U0lCTEVfSFlQRVJMSU5LKG9iaikgICAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNF
X1RZUEUgKChvYmopLCBXRUJLSVRfVFlQRV9BQ0NFU1NJQkxFX0hZUEVSTElOSykpCi0jZGVmaW5l
IFdFQktJVF9JU19BQ0NFU1NJQkxFX0hZUEVSTElOS19DTEFTUyhrbGFzcykgICAgICAgKEdfVFlQ
RV9DSEVDS19DTEFTU19UWVBFICgoa2xhc3MpLCBXRUJLSVRfVFlQRV9BQ0NFU1NJQkxFX0hZUEVS
TElOSykpCi0jZGVmaW5lIFdFQktJVF9BQ0NFU1NJQkxFX0hZUEVSTElOS19HRVRfQ0xBU1Mob2Jq
KSAgICAgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MgKChvYmopLCBXRUJLSVRfVFlQRV9B
Q0NFU1NJQkxFX0hZUEVSTElOSywgV2ViS2l0QWNjZXNzaWJsZUh5cGVybGlua0NsYXNzKSkKKyNk
ZWZpbmUgV0VCS0lUX1RZUEVfQUNDRVNTSUJMRV9IWVBFUkxJTksgICAgICAgICAgICAgKHdlYmtp
dF9hY2Nlc3NpYmxlX2h5cGVybGlua19nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfQUNDRVNT
SUJMRV9IWVBFUkxJTksob2JqKSAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NB
U1QoKG9iaiksIFdFQktJVF9UWVBFX0FDQ0VTU0lCTEVfSFlQRVJMSU5LLCBXZWJLaXRBY2Nlc3Np
YmxlSHlwZXJsaW5rKSkKKyNkZWZpbmUgV0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LX0NMQVNT
KGtsYXNzKSAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksIFdFQktJVF9UWVBF
X0FDQ0VTU0lCTEVfSFlQRVJMSU5LLCBXZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rQ2xhc3MpKQor
I2RlZmluZSBXRUJLSVRfSVNfQUNDRVNTSUJMRV9IWVBFUkxJTksob2JqKSAgICAgICAgICAoR19U
WVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX0FDQ0VTU0lCTEVfSFlQ
RVJMSU5LKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0FDQ0VTU0lCTEVfSFlQRVJMSU5LX0NMQVNTKGts
YXNzKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksIFdFQktJVF9UWVBFX0FDQ0VT
U0lCTEVfSFlQRVJMSU5LKSkKKyNkZWZpbmUgV0VCS0lUX0FDQ0VTU0lCTEVfSFlQRVJMSU5LX0dF
VF9DTEFTUyhvYmopICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksIFdFQktJVF9U
WVBFX0FDQ0VTU0lCTEVfSFlQRVJMSU5LLCBXZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rQ2xhc3Mp
KQogCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluayAgICAgICAgICAg
ICAgICBXZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rOwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEFj
Y2Vzc2libGVIeXBlcmxpbmtDbGFzcyAgICAgICAgICAgV2ViS2l0QWNjZXNzaWJsZUh5cGVybGlu
a0NsYXNzOwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmtQcml2YXRl
ICAgICAgICAgV2ViS2l0QWNjZXNzaWJsZUh5cGVybGlua1ByaXZhdGU7Cit0eXBlZGVmIHN0cnVj
dCBfV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluayAgICAgICAgV2ViS2l0QWNjZXNzaWJsZUh5cGVy
bGluazsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rQ2xhc3MgICBX
ZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QWNj
ZXNzaWJsZUh5cGVybGlua1ByaXZhdGUgV2ViS2l0QWNjZXNzaWJsZUh5cGVybGlua1ByaXZhdGU7
CiAKIHN0cnVjdCBfV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluayB7CiAgICAgQXRrSHlwZXJsaW5r
IHBhcmVudDsKIAotICAgIC8vIHByaXZhdGUKICAgICBXZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5r
UHJpdmF0ZSAqcHJpdjsKIH07CiAKQEAgLTUxLDExICs0Niw5IEBAIHN0cnVjdCBfV2ViS2l0QWNj
ZXNzaWJsZUh5cGVybGlua0NsYXNzIHsKICAgICBBdGtIeXBlcmxpbmtDbGFzcyBwYXJlbnRDbGFz
czsKIH07CiAKLUdUeXBlIHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRUeXBlKHZvaWQpIEdf
R05VQ19DT05TVDsKLQotV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluayogd2Via2l0QWNjZXNzaWJs
ZUh5cGVybGlua05ldyhBdGtIeXBlcmxpbmtJbXBsKik7CitHVHlwZSB3ZWJraXRfYWNjZXNzaWJs
ZV9oeXBlcmxpbmtfZ2V0X3R5cGUodm9pZCk7CiAKLVdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KFdlYktp
dEFjY2Vzc2libGVIeXBlcmxpbmsqKTsKK1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsqIHdlYmtp
dEFjY2Vzc2libGVIeXBlcmxpbmtHZXRPckNyZWF0ZShBdGtIeXBlcmxpbmtJbXBsKik7CiAKIEdf
RU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VIeXBlcmxpbmtJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VIeXBlcmxpbmtJ
bXBsLmNwcAppbmRleCA5ZGUzYmU5MmFlNi4uZTViZTFhYzBmNGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VIeXBl
cmxpbmtJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJL
aXRBY2Nlc3NpYmxlSW50ZXJmYWNlSHlwZXJsaW5rSW1wbC5jcHAKQEAgLTI0LDI0ICsyNCwxNCBA
QAogCiAjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5oIgogCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKLQotc3RhdGljIEdRdWFyayBoeXBlcmxpbmtPYmplY3RRdWFyayA9IDA7
Ci0KIHN0YXRpYyBBdGtIeXBlcmxpbmsqIHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtJbXBsR2V0
SHlwZXJsaW5rKEF0a0h5cGVybGlua0ltcGwqIGh5cGVybGluaykKIHsKLSAgICBBdGtIeXBlcmxp
bmsqIGh5cGVybGlua09iamVjdCA9IEFUS19IWVBFUkxJTksoZ19vYmplY3RfZ2V0X3FkYXRhKEdf
T0JKRUNUKGh5cGVybGluayksIGh5cGVybGlua09iamVjdFF1YXJrKSk7Ci0gICAgaWYgKCFoeXBl
cmxpbmtPYmplY3QpIHsKLSAgICAgICAgaHlwZXJsaW5rT2JqZWN0ID0gQVRLX0hZUEVSTElOSyh3
ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rTmV3KGh5cGVybGluaykpOwotICAgICAgICBnX29iamVj
dF9zZXRfcWRhdGEoR19PQkpFQ1QoaHlwZXJsaW5rKSwgaHlwZXJsaW5rT2JqZWN0UXVhcmssIGh5
cGVybGlua09iamVjdCk7Ci0gICAgfQotICAgIHJldHVybiBoeXBlcmxpbmtPYmplY3Q7CisgICAg
cmV0dXJuIEFUS19IWVBFUkxJTksod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldE9yQ3JlYXRl
KGh5cGVybGluaykpOwogfQogCiB2b2lkIHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtJbXBsSW50
ZXJmYWNlSW5pdChBdGtIeXBlcmxpbmtJbXBsSWZhY2UqIGlmYWNlKQogewogICAgIGlmYWNlLT5n
ZXRfaHlwZXJsaW5rID0gd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0ltcGxHZXRIeXBlcmxpbms7
Ci0gICAgaHlwZXJsaW5rT2JqZWN0UXVhcmsgPSBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZygi
d2Via2l0LWFjY2Vzc2libGUtaHlwZXJsaW5rLW9iamVjdCIpOwogfQogCi0jZW5kaWYKKyNlbmRp
ZiAvLyBIQVZFKEFDQ0VTU0lCSUxJVFkpCg==
</data>
<flag name="review"
          id="383279"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>