<?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>184687</bug_id>
          
          <creation_ts>2018-04-17 01:45:12 -0700</creation_ts>
          <short_desc>[GLIB] Make it possible to handle JSCClass external properties not added to the prototype</short_desc>
          <delta_ts>2018-04-17 23:52:22 -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>JavaScriptCore</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>bugs-noreply</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1415077</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-04-17 01:45:12 -0700</bug_when>
    <thetext>This is required to implement dynamic properties that can&apos;t be added with jsc_class_add_property() for example to implement something like imports object in seed/gjs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415079</commentid>
    <comment_count>1</comment_count>
      <attachid>338092</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-04-17 01:52:54 -0700</bug_when>
    <thetext>Created attachment 338092
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415089</commentid>
    <comment_count>2</comment_count>
      <attachid>338092</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-17 03:07:06 -0700</bug_when>
    <thetext>Comment on attachment 338092
Patch

Attachment 338092 did not pass jsc-ews (mac):
Output: http://webkit-queues.webkit.org/results/7341696

New failing tests:
stress/ftl-get-by-id-getter-exception-interesting-live-state.js.ftl-eager-no-cjit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415495</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-04-17 23:51:46 -0700</bug_when>
    <thetext>Committed r230753: &lt;https://trac.webkit.org/changeset/230753&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415496</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-17 23:52:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/39519419&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338092</attachid>
            <date>2018-04-17 01:52:54 -0700</date>
            <delta_ts>2018-04-17 08:03:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>jsc-class-vtable.diff</filename>
            <type>text/plain</type>
            <size>57788</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDbGFzcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2xhc3MuY3BwCmluZGV4IDZmNGFk
MThjYzBkLi42ODQzMzk4MWRkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9nbGliL0pTQ0NsYXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIv
SlNDQ2xhc3MuY3BwCkBAIC0yMCwxMSArMjAsMTYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJKU0NDbGFzcy5oIgogCisjaW5jbHVkZSAiQVBJQ2FzdC5oIgorI2luY2x1ZGUgIkpT
QVBJV3JhcHBlck9iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0NhbGxiYWNrRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJKU0NDbGFzc1ByaXZhdGUuaCIKICNpbmNsdWRlICJKU0NDb250ZXh0UHJpdmF0ZS5o
IgorI2luY2x1ZGUgIkpTQ0V4Y2VwdGlvblByaXZhdGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNDVmFsdWVQcml2YXRlLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja09i
amVjdC5oIgorI2luY2x1ZGUgIkpTUmV0YWluUHRyLmgiCiAjaW5jbHVkZSA8d3RmL2dsaWIvR1Vu
aXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAKQEAgLTUzLDYgKzU4
LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0pTQ0NsYXNzUHJpdmF0ZSB7CiAgICAgSlNDQ29udGV4dCog
Y29udGV4dDsKICAgICBDU3RyaW5nIG5hbWU7CiAgICAgSlNDbGFzc1JlZiBqc0NsYXNzOworICAg
IEpTQ0NsYXNzVlRhYmxlKiB2dGFibGU7CiAgICAgR0Rlc3Ryb3lOb3RpZnkgZGVzdHJveUZ1bmN0
aW9uOwogICAgIEpTQ0NsYXNzKiBwYXJlbnRDbGFzczsKICAgICBKU0M6OldlYWs8SlNDOjpKU09i
amVjdD4gcHJvdG90eXBlOwpAQCAtNzEsNiArNzcsMTgyIEBAIHN0cnVjdCBfSlNDQ2xhc3NDbGFz
cyB7CiAKIFdFQktJVF9ERUZJTkVfVFlQRShKU0NDbGFzcywganNjX2NsYXNzLCBHX1RZUEVfT0JK
RUNUKQogCitjbGFzcyBWVGFibGVFeGNlcHRpb25IYW5kbGVyIHsKK3B1YmxpYzoKKyAgICBWVGFi
bGVFeGNlcHRpb25IYW5kbGVyKEpTQ0NvbnRleHQqIGNvbnRleHQsIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKKyAgICAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAgICAgLCBtX2V4Y2VwdGlv
bihleGNlcHRpb24pCisgICAgICAgICwgbV9zYXZlZEV4Y2VwdGlvbihleGNlcHRpb24gPyBqc2Nf
Y29udGV4dF9nZXRfZXhjZXB0aW9uKG1fY29udGV4dCkgOiBudWxscHRyKQorICAgIHsKKyAgICB9
CisKKyAgICB+VlRhYmxlRXhjZXB0aW9uSGFuZGxlcigpCisgICAgeworICAgICAgICBpZiAoIW1f
ZXhjZXB0aW9uKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8qIGV4Y2VwdGlv
biA9IGpzY19jb250ZXh0X2dldF9leGNlcHRpb24obV9jb250ZXh0KTsKKyAgICAgICAgaWYgKG1f
c2F2ZWRFeGNlcHRpb24uZ2V0KCkgPT0gZXhjZXB0aW9uKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgICptX2V4Y2VwdGlvbiA9IGpzY0V4Y2VwdGlvbkdldEpTVmFsdWUoZXhjZXB0aW9u
KTsKKyAgICAgICAgaWYgKG1fc2F2ZWRFeGNlcHRpb24pCisgICAgICAgICAgICBqc2NfY29udGV4
dF90aHJvd19leGNlcHRpb24obV9jb250ZXh0LCBtX3NhdmVkRXhjZXB0aW9uLmdldCgpKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAganNjX2NvbnRleHRfY2xlYXJfZXhjZXB0aW9uKG1fY29u
dGV4dCk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTQ0NvbnRleHQqIG1fY29udGV4dCB7IG51
bGxwdHIgfTsKKyAgICBKU1ZhbHVlUmVmKiBtX2V4Y2VwdGlvbiB7IG51bGxwdHIgfTsKKyAgICBH
UmVmUHRyPEpTQ0V4Y2VwdGlvbj4gbV9zYXZlZEV4Y2VwdGlvbjsKK307CisKK3N0YXRpYyBKU1Zh
bHVlUmVmIGdldFByb3BlcnR5KEpTQ29udGV4dFJlZiBjYWxsZXJDb250ZXh0LCBKU09iamVjdFJl
ZiBvYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KQoreworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih0b0pTKGNhbGxlckNvbnRleHQpKTsK
KyAgICBhdXRvKiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAgICBhdXRvIGNvbnRleHQgPSBq
c2NDb250ZXh0R2V0T3JDcmVhdGUodG9HbG9iYWxSZWYoanNPYmplY3QtPmdsb2JhbE9iamVjdCgp
LT5nbG9iYWxFeGVjKCkpKTsKKyAgICBhdXRvKiBqc0NvbnRleHQgPSBqc2NDb250ZXh0R2V0SlND
b250ZXh0KGNvbnRleHQuZ2V0KCkpOworICAgIGlmICghanNPYmplY3QtPmluaGVyaXRzPEpTQzo6
SlNDYWxsYmFja09iamVjdDxKU0M6OkpTQVBJV3JhcHBlck9iamVjdD4+KHRvSlMoanNDb250ZXh0
KS0+dm0oKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgZ3BvaW50ZXIgaW5zdGFu
Y2UgPSBqc2NDb250ZXh0V3JhcHBlZE9iamVjdChjb250ZXh0LmdldCgpLCBvYmplY3QpOworICAg
IGlmICghaW5zdGFuY2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgVlRhYmxlRXhj
ZXB0aW9uSGFuZGxlciBleGNlcHRpb25IYW5kbGVyKGNvbnRleHQuZ2V0KCksIGV4Y2VwdGlvbik7
CisKKyAgICBKU0NsYXNzUmVmIGpzQ2xhc3MgPSBKU0M6OmpzQ2FzdDxKU0M6OkpTQ2FsbGJhY2tP
YmplY3Q8SlNDOjpKU0FQSVdyYXBwZXJPYmplY3Q+Kj4oanNPYmplY3QpLT5jbGFzc1JlZigpOwor
ICAgIGZvciAoYXV0byoganNjQ2xhc3MgPSBqc2NDb250ZXh0R2V0UmVnaXN0ZXJlZENsYXNzKGNv
bnRleHQuZ2V0KCksIGpzQ2xhc3MpOyBqc2NDbGFzczsganNjQ2xhc3MgPSBqc2NDbGFzcy0+cHJp
di0+cGFyZW50Q2xhc3MpIHsKKyAgICAgICAgaWYgKCFqc2NDbGFzcy0+cHJpdi0+dnRhYmxlKQor
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGF1dG8qIGdldFByb3BlcnR5RnVu
Y3Rpb24gPSBqc2NDbGFzcy0+cHJpdi0+dnRhYmxlLT5nZXRfcHJvcGVydHkpIHsKKyAgICAgICAg
ICAgIGlmIChHUmVmUHRyPEpTQ1ZhbHVlPiB2YWx1ZSA9IGFkb3B0R1JlZihnZXRQcm9wZXJ0eUZ1
bmN0aW9uKGpzY0NsYXNzLCBjb250ZXh0LmdldCgpLCBpbnN0YW5jZSwgcHJvcGVydHlOYW1lLT5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGpzY1ZhbHVl
R2V0SlNWYWx1ZSh2YWx1ZS5nZXQoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK3N0YXRpYyBib29sIHNldFByb3BlcnR5KEpTQ29udGV4dFJlZiBjYWxsZXJD
b250ZXh0LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIEpTQzo6SlNMb2Nr
SG9sZGVyIGxvY2tlcih0b0pTKGNhbGxlckNvbnRleHQpKTsKKyAgICBhdXRvKiBqc09iamVjdCA9
IHRvSlMob2JqZWN0KTsKKyAgICBhdXRvIGNvbnRleHQgPSBqc2NDb250ZXh0R2V0T3JDcmVhdGUo
dG9HbG9iYWxSZWYoanNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCkpKTsKKyAg
ICBhdXRvKiBqc0NvbnRleHQgPSBqc2NDb250ZXh0R2V0SlNDb250ZXh0KGNvbnRleHQuZ2V0KCkp
OworICAgIGlmICghanNPYmplY3QtPmluaGVyaXRzPEpTQzo6SlNDYWxsYmFja09iamVjdDxKU0M6
OkpTQVBJV3JhcHBlck9iamVjdD4+KHRvSlMoanNDb250ZXh0KS0+dm0oKSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGdwb2ludGVyIGluc3RhbmNlID0ganNjQ29udGV4dFdyYXBwZWRP
YmplY3QoY29udGV4dC5nZXQoKSwgb2JqZWN0KTsKKyAgICBpZiAoIWluc3RhbmNlKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBWVGFibGVFeGNlcHRpb25IYW5kbGVyIGV4Y2VwdGlvbkhh
bmRsZXIoY29udGV4dC5nZXQoKSwgZXhjZXB0aW9uKTsKKworICAgIEdSZWZQdHI8SlNDVmFsdWU+
IHByb3BlcnR5VmFsdWU7CisgICAgSlNDbGFzc1JlZiBqc0NsYXNzID0gSlNDOjpqc0Nhc3Q8SlND
OjpKU0NhbGxiYWNrT2JqZWN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Pio+KGpzT2JqZWN0KS0+
Y2xhc3NSZWYoKTsKKyAgICBmb3IgKGF1dG8qIGpzY0NsYXNzID0ganNjQ29udGV4dEdldFJlZ2lz
dGVyZWRDbGFzcyhjb250ZXh0LmdldCgpLCBqc0NsYXNzKTsganNjQ2xhc3M7IGpzY0NsYXNzID0g
anNjQ2xhc3MtPnByaXYtPnBhcmVudENsYXNzKSB7CisgICAgICAgIGlmICghanNjQ2xhc3MtPnBy
aXYtPnZ0YWJsZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChhdXRvKiBz
ZXRQcm9wZXJ0eUZ1bmN0aW9uID0ganNjQ2xhc3MtPnByaXYtPnZ0YWJsZS0+c2V0X3Byb3BlcnR5
KSB7CisgICAgICAgICAgICBpZiAoIXByb3BlcnR5VmFsdWUpCisgICAgICAgICAgICAgICAgcHJv
cGVydHlWYWx1ZSA9IGpzY0NvbnRleHRHZXRPckNyZWF0ZVZhbHVlKGNvbnRleHQuZ2V0KCksIHZh
bHVlKTsKKyAgICAgICAgICAgIGlmIChzZXRQcm9wZXJ0eUZ1bmN0aW9uKGpzY0NsYXNzLCBjb250
ZXh0LmdldCgpLCBpbnN0YW5jZSwgcHJvcGVydHlOYW1lLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
LCBwcm9wZXJ0eVZhbHVlLmdldCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBib29sIGhhc1By
b3BlcnR5KEpTQ29udGV4dFJlZiBjYWxsZXJDb250ZXh0LCBKU09iamVjdFJlZiBvYmplY3QsIEpT
U3RyaW5nUmVmIHByb3BlcnR5TmFtZSkKK3sKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIo
dG9KUyhjYWxsZXJDb250ZXh0KSk7CisgICAgYXV0byoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7
CisgICAgYXV0byBjb250ZXh0ID0ganNjQ29udGV4dEdldE9yQ3JlYXRlKHRvR2xvYmFsUmVmKGpz
T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpKSk7CisgICAgYXV0byoganNDb250
ZXh0ID0ganNjQ29udGV4dEdldEpTQ29udGV4dChjb250ZXh0LmdldCgpKTsKKyAgICBpZiAoIWpz
T2JqZWN0LT5pbmhlcml0czxKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8SlNDOjpKU0FQSVdyYXBwZXJP
YmplY3Q+Pih0b0pTKGpzQ29udGV4dCktPnZtKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBncG9pbnRlciBpbnN0YW5jZSA9IGpzY0NvbnRleHRXcmFwcGVkT2JqZWN0KGNvbnRleHQu
Z2V0KCksIG9iamVjdCk7CisgICAgaWYgKCFpbnN0YW5jZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgSlNDbGFzc1JlZiBqc0NsYXNzID0gSlNDOjpqc0Nhc3Q8SlNDOjpKU0NhbGxiYWNr
T2JqZWN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Pio+KGpzT2JqZWN0KS0+Y2xhc3NSZWYoKTsK
KyAgICBmb3IgKGF1dG8qIGpzY0NsYXNzID0ganNjQ29udGV4dEdldFJlZ2lzdGVyZWRDbGFzcyhj
b250ZXh0LmdldCgpLCBqc0NsYXNzKTsganNjQ2xhc3M7IGpzY0NsYXNzID0ganNjQ2xhc3MtPnBy
aXYtPnBhcmVudENsYXNzKSB7CisgICAgICAgIGlmICghanNjQ2xhc3MtPnByaXYtPnZ0YWJsZSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChhdXRvKiBoYXNQcm9wZXJ0eUZ1
bmN0aW9uID0ganNjQ2xhc3MtPnByaXYtPnZ0YWJsZS0+aGFzX3Byb3BlcnR5KSB7CisgICAgICAg
ICAgICBpZiAoaGFzUHJvcGVydHlGdW5jdGlvbihqc2NDbGFzcywgY29udGV4dC5nZXQoKSwgaW5z
dGFuY2UsIHByb3BlcnR5TmFtZS0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK3N0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ29udGV4dFJlZiBjYWxsZXJDb250
ZXh0LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQoreworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih0b0pTKGNh
bGxlckNvbnRleHQpKTsKKyAgICBhdXRvKiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAgICBh
dXRvIGNvbnRleHQgPSBqc2NDb250ZXh0R2V0T3JDcmVhdGUodG9HbG9iYWxSZWYoanNPYmplY3Qt
Pmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCkpKTsKKyAgICBhdXRvKiBqc0NvbnRleHQgPSBq
c2NDb250ZXh0R2V0SlNDb250ZXh0KGNvbnRleHQuZ2V0KCkpOworICAgIGlmICghanNPYmplY3Qt
PmluaGVyaXRzPEpTQzo6SlNDYWxsYmFja09iamVjdDxKU0M6OkpTQVBJV3JhcHBlck9iamVjdD4+
KHRvSlMoanNDb250ZXh0KS0+dm0oKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGdw
b2ludGVyIGluc3RhbmNlID0ganNjQ29udGV4dFdyYXBwZWRPYmplY3QoY29udGV4dC5nZXQoKSwg
b2JqZWN0KTsKKyAgICBpZiAoIWluc3RhbmNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBWVGFibGVFeGNlcHRpb25IYW5kbGVyIGV4Y2VwdGlvbkhhbmRsZXIoY29udGV4dC5nZXQoKSwg
ZXhjZXB0aW9uKTsKKworICAgIEpTQ2xhc3NSZWYganNDbGFzcyA9IEpTQzo6anNDYXN0PEpTQzo6
SlNDYWxsYmFja09iamVjdDxKU0M6OkpTQVBJV3JhcHBlck9iamVjdD4qPihqc09iamVjdCktPmNs
YXNzUmVmKCk7CisgICAgZm9yIChhdXRvKiBqc2NDbGFzcyA9IGpzY0NvbnRleHRHZXRSZWdpc3Rl
cmVkQ2xhc3MoY29udGV4dC5nZXQoKSwganNDbGFzcyk7IGpzY0NsYXNzOyBqc2NDbGFzcyA9IGpz
Y0NsYXNzLT5wcml2LT5wYXJlbnRDbGFzcykgeworICAgICAgICBpZiAoIWpzY0NsYXNzLT5wcml2
LT52dGFibGUpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoYXV0byogZGVs
ZXRlUHJvcGVydHlGdW5jdGlvbiA9IGpzY0NsYXNzLT5wcml2LT52dGFibGUtPmRlbGV0ZV9wcm9w
ZXJ0eSkgeworICAgICAgICAgICAgaWYgKGRlbGV0ZVByb3BlcnR5RnVuY3Rpb24oanNjQ2xhc3Ms
IGNvbnRleHQuZ2V0KCksIGluc3RhbmNlLCBwcm9wZXJ0eU5hbWUtPnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQor
ICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU0Nv
bnRleHRSZWYgY2FsbGVyQ29udGV4dCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1Byb3BlcnR5TmFt
ZUFjY3VtdWxhdG9yUmVmIHByb3BlcnR5TmFtZXMpCit7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIg
bG9ja2VyKHRvSlMoY2FsbGVyQ29udGV4dCkpOworICAgIGF1dG8qIGpzT2JqZWN0ID0gdG9KUyhv
YmplY3QpOworICAgIGF1dG8gY29udGV4dCA9IGpzY0NvbnRleHRHZXRPckNyZWF0ZSh0b0dsb2Jh
bFJlZihqc09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSkpOworICAgIGF1dG8q
IGpzQ29udGV4dCA9IGpzY0NvbnRleHRHZXRKU0NvbnRleHQoY29udGV4dC5nZXQoKSk7CisgICAg
aWYgKCFqc09iamVjdC0+aW5oZXJpdHM8SlNDOjpKU0NhbGxiYWNrT2JqZWN0PEpTQzo6SlNBUElX
cmFwcGVyT2JqZWN0Pj4odG9KUyhqc0NvbnRleHQpLT52bSgpKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZ3BvaW50ZXIgaW5zdGFuY2UgPSBqc2NDb250ZXh0V3JhcHBlZE9iamVjdChjb250ZXh0
LmdldCgpLCBvYmplY3QpOworICAgIGlmICghaW5zdGFuY2UpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEpTQ2xhc3NSZWYganNDbGFzcyA9IEpTQzo6anNDYXN0PEpTQzo6SlNDYWxsYmFja09iamVj
dDxKU0M6OkpTQVBJV3JhcHBlck9iamVjdD4qPihqc09iamVjdCktPmNsYXNzUmVmKCk7CisgICAg
Zm9yIChhdXRvKiBqc2NDbGFzcyA9IGpzY0NvbnRleHRHZXRSZWdpc3RlcmVkQ2xhc3MoY29udGV4
dC5nZXQoKSwganNDbGFzcyk7IGpzY0NsYXNzOyBqc2NDbGFzcyA9IGpzY0NsYXNzLT5wcml2LT5w
YXJlbnRDbGFzcykgeworICAgICAgICBpZiAoIWpzY0NsYXNzLT5wcml2LT52dGFibGUpCisgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoYXV0byogZW51bWVyYXRlUHJvcGVydGll
c0Z1bmN0aW9uID0ganNjQ2xhc3MtPnByaXYtPnZ0YWJsZS0+ZW51bWVyYXRlX3Byb3BlcnRpZXMp
IHsKKyAgICAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcio+IHByb3BlcnRpZXMoZW51bWVyYXRlUHJv
cGVydGllc0Z1bmN0aW9uKGpzY0NsYXNzLCBjb250ZXh0LmdldCgpLCBpbnN0YW5jZSkpOworICAg
ICAgICAgICAgaWYgKHByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpID0g
MDsKKyAgICAgICAgICAgICAgICB3aGlsZSAoY29uc3QgYXV0byogbmFtZSA9IHByb3BlcnRpZXMu
Z2V0KClbaSsrXSkgeworICAgICAgICAgICAgICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gcHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhuYW1l
KSk7CisgICAgICAgICAgICAgICAgICAgIEpTUHJvcGVydHlOYW1lQWNjdW11bGF0b3JBZGROYW1l
KHByb3BlcnR5TmFtZXMsIHByb3BlcnR5TmFtZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCiBzdGF0aWMgdm9pZCBqc2NDbGFz
c0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBHVmFsdWUqIHZhbHVl
LCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCiB7CiAgICAgSlNDQ2xhc3MqIGpzY0NsYXNzID0gSlND
X0NMQVNTKG9iamVjdCk7CkBAIC0xMjEsMzAgKzMwMyw5IEBAIHN0YXRpYyB2b2lkIGpzY0NsYXNz
RGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCiAgICAgR19PQkpFQ1RfQ0xBU1MoanNjX2NsYXNzX3Bh
cmVudF9jbGFzcyktPmRpc3Bvc2Uob2JqZWN0KTsKIH0KIAotc3RhdGljIHZvaWQganNjQ2xhc3ND
b25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCi17Ci0gICAgR19PQkpFQ1RfQ0xBU1MoanNjX2Ns
YXNzX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdGVkKG9iamVjdCk7Ci0KLSAgICBKU0NDbGFzc1By
aXZhdGUqIHByaXYgPSBKU0NfQ0xBU1Mob2JqZWN0KS0+cHJpdjsKLSAgICBKU0NsYXNzRGVmaW5p
dGlvbiBkZWZpbml0aW9uID0ga0pTQ2xhc3NEZWZpbml0aW9uRW1wdHk7Ci0gICAgZGVmaW5pdGlv
bi5jbGFzc05hbWUgPSBwcml2LT5uYW1lLmRhdGEoKTsKLSAgICBwcml2LT5qc0NsYXNzID0gSlND
bGFzc0NyZWF0ZSgmZGVmaW5pdGlvbik7Ci0KLSAgICBHVW5pcXVlUHRyPGNoYXI+IHByb3RvdHlw
ZU5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlc1Byb3RvdHlwZSIsIHByaXYtPm5hbWUuZGF0YSgpKSk7
Ci0gICAgSlNDbGFzc0RlZmluaXRpb24gcHJvdG90eXBlRGVmaW5pdGlvbiA9IGtKU0NsYXNzRGVm
aW5pdGlvbkVtcHR5OwotICAgIHByb3RvdHlwZURlZmluaXRpb24uY2xhc3NOYW1lID0gcHJvdG90
eXBlTmFtZS5nZXQoKTsKLSAgICBKU0NsYXNzUmVmIHByb3RvdHlwZUNsYXNzID0gSlNDbGFzc0Ny
ZWF0ZSgmcHJvdG90eXBlRGVmaW5pdGlvbik7Ci0gICAgcHJpdi0+cHJvdG90eXBlID0ganNjQ29u
dGV4dEdldE9yQ3JlYXRlSlNXcmFwcGVyKHByaXYtPmNvbnRleHQsIHByb3RvdHlwZUNsYXNzKTsK
LSAgICBKU0NsYXNzUmVsZWFzZShwcm90b3R5cGVDbGFzcyk7Ci0KLSAgICBpZiAocHJpdi0+cGFy
ZW50Q2xhc3MpCi0gICAgICAgIEpTT2JqZWN0U2V0UHJvdG90eXBlKGpzY0NvbnRleHRHZXRKU0Nv
bnRleHQocHJpdi0+Y29udGV4dCksIHRvUmVmKHByaXYtPnByb3RvdHlwZS5nZXQoKSksIHRvUmVm
KHByaXYtPnBhcmVudENsYXNzLT5wcml2LT5wcm90b3R5cGUuZ2V0KCkpKTsKLX0KLQogc3RhdGlj
IHZvaWQganNjX2NsYXNzX2NsYXNzX2luaXQoSlNDQ2xhc3NDbGFzcyoga2xhc3MpCiB7CiAgICAg
R09iamVjdENsYXNzKiBvYmpDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKLSAgICBvYmpD
bGFzcy0+Y29uc3RydWN0ZWQgPSBqc2NDbGFzc0NvbnN0cnVjdGVkOwogICAgIG9iakNsYXNzLT5k
aXNwb3NlID0ganNjQ2xhc3NEaXNwb3NlOwogICAgIG9iakNsYXNzLT5nZXRfcHJvcGVydHkgPSBq
c2NDbGFzc0dldFByb3BlcnR5OwogICAgIG9iakNsYXNzLT5zZXRfcHJvcGVydHkgPSBqc2NDbGFz
c1NldFByb3BlcnR5OwpAQCAtMTkyLDEwICszNTMsMTI1IEBAIHN0YXRpYyB2b2lkIGpzY19jbGFz
c19jbGFzc19pbml0KEpTQ0NsYXNzQ2xhc3MqIGtsYXNzKQogICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVD
VF9PTkxZKSkpOwogfQogCi1HUmVmUHRyPEpTQ0NsYXNzPiBqc2NDbGFzc0NyZWF0ZShKU0NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiBuYW1lLCBKU0NDbGFzcyogcGFyZW50Q2xhc3MsIEdE
ZXN0cm95Tm90aWZ5IGRlc3Ryb3lGdW5jdGlvbikKKy8qKgorICogSlNDQ2xhc3NHZXRQcm9wZXJ0
eUZ1bmN0aW9uOgorICogQGpzY19jbGFzczogYSAjSlNDQ2xhc3MKKyAqIEBjb250ZXh0OiBhICNK
U0NDb250ZXh0CisgKiBAaW5zdGFuY2U6IHRoZSBAanNjX2NsYXNzIGluc3RhbmNlCisgKiBAbmFt
ZTogdGhlIHByb3BlcnR5IG5hbWUKKyAqCisgKiBUaGUgdHlwZSBvZiBnZXRfcHJvcGVydHkgaW4g
I0pTQ0NsYXNzVlRhYmxlLiBUaGlzIGlzIG9ubHkgcmVxdWlyZWQgd2hlbiB5b3UgbmVlZCB0byBo
YW5kbGUKKyAqIGV4dGVybmFsIHByb3BlcnRpZXMgbm90IGFkZGVkIHRvIHRoZSBwcm90b3R5cGUu
CisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpIChudWxsYWJsZSk6IGEgI0pTQ1ZhbHVl
IG9yICVOVUxMIHRvIGZvcndhcmQgdGhlIHJlcXVlc3QgdG8KKyAqICAgIHRoZSBwYXJlbnQgY2xh
c3Mgb3IgcHJvdG90eXBlIGNoYWluCisgKi8KKworLyoqCisgKiBKU0NDbGFzc1NldFByb3BlcnR5
RnVuY3Rpb246CisgKiBAanNjX2NsYXNzOiBhICNKU0NDbGFzcworICogQGNvbnRleHQ6IGEgI0pT
Q0NvbnRleHQKKyAqIEBpbnN0YW5jZTogdGhlIEBqc2NfY2xhc3MgaW5zdGFuY2UKKyAqIEBuYW1l
OiB0aGUgcHJvcGVydHkgbmFtZQorICogQHZhbHVlOiB0aGUgI0pTQ1ZhbHVlIHRvIHNldAorICoK
KyAqIFRoZSB0eXBlIG9mIHNldF9wcm9wZXJ0eSBpbiAjSlNDQ2xhc3NWVGFibGUuIFRoaXMgaXMg
b25seSByZXF1aXJlZCB3aGVuIHlvdSBuZWVkIHRvIGhhbmRsZQorICogZXh0ZXJuYWwgcHJvcGVy
dGllcyBub3QgYWRkZWQgdG8gdGhlIHByb3RvdHlwZS4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBp
ZiBoYW5kbGVkIG9yICVGQUxTRSB0byBmb3J3YXJkIHRoZSByZXF1ZXN0IHRvIHRoZSBwYXJlbnQg
Y2xhc3Mgb3IgcHJvdG90eXBlIGNoYWluLgorICovCisKKy8qKgorICogSlNDQ2xhc3NIYXNQcm9w
ZXJ0eUZ1bmN0aW9uOgorICogQGpzY19jbGFzczogYSAjSlNDQ2xhc3MKKyAqIEBjb250ZXh0OiBh
ICNKU0NDb250ZXh0CisgKiBAaW5zdGFuY2U6IHRoZSBAanNjX2NsYXNzIGluc3RhbmNlCisgKiBA
bmFtZTogdGhlIHByb3BlcnR5IG5hbWUKKyAqCisgKiBUaGUgdHlwZSBvZiBoYXNfcHJvcGVydHkg
aW4gI0pTQ0NsYXNzVlRhYmxlLiBUaGlzIGlzIG9ubHkgcmVxdWlyZWQgd2hlbiB5b3UgbmVlZCB0
byBoYW5kbGUKKyAqIGV4dGVybmFsIHByb3BlcnRpZXMgbm90IGFkZGVkIHRvIHRoZSBwcm90b3R5
cGUuCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgQGluc3RhbmNlIGhhcyBhIHByb3BlcnR5IHdp
dGggQG5hbWUgb3IgJUZBTFNFIHRvIGZvcndhcmQgdGhlIHJlcXVlc3QKKyAqICAgIHRvIHRoZSBw
YXJlbnQgY2xhc3Mgb3IgcHJvdG90eXBlIGNoYWluLgorICovCisKKy8qKgorICogSlNDQ2xhc3NE
ZWxldGVQcm9wZXJ0eUZ1bmN0aW9uOgorICogQGpzY19jbGFzczogYSAjSlNDQ2xhc3MKKyAqIEBj
b250ZXh0OiBhICNKU0NDb250ZXh0CisgKiBAaW5zdGFuY2U6IHRoZSBAanNjX2NsYXNzIGluc3Rh
bmNlCisgKiBAbmFtZTogdGhlIHByb3BlcnR5IG5hbWUKKyAqCisgKiBUaGUgdHlwZSBvZiBkZWxl
dGVfcHJvcGVydHkgaW4gI0pTQ0NsYXNzVlRhYmxlLiBUaGlzIGlzIG9ubHkgcmVxdWlyZWQgd2hl
biB5b3UgbmVlZCB0byBoYW5kbGUKKyAqIGV4dGVybmFsIHByb3BlcnRpZXMgbm90IGFkZGVkIHRv
IHRoZSBwcm90b3R5cGUuCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgaGFuZGxlZCBvciAlRkFM
U0UgdG8gdG8gZm9yd2FyZCB0aGUgcmVxdWVzdCB0byB0aGUgcGFyZW50IGNsYXNzIG9yIHByb3Rv
dHlwZSBjaGFpbi4KKyAqLworCisvKioKKyAqIEpTQ0NsYXNzRW51bWVyYXRlUHJvcGVydGllc0Z1
bmN0aW9uOgorICogQGpzY19jbGFzczogYSAjSlNDQ2xhc3MKKyAqIEBjb250ZXh0OiBhICNKU0ND
b250ZXh0CisgKiBAaW5zdGFuY2U6IHRoZSBAanNjX2NsYXNzIGluc3RhbmNlCisgKgorICogVGhl
IHR5cGUgb2YgZW51bWVyYXRlX3Byb3BlcnRpZXMgaW4gI0pTQ0NsYXNzVlRhYmxlLiBUaGlzIGlz
IG9ubHkgcmVxdWlyZWQgd2hlbiB5b3UgbmVlZCB0byBoYW5kbGUKKyAqIGV4dGVybmFsIHByb3Bl
cnRpZXMgbm90IGFkZGVkIHRvIHRoZSBwcm90b3R5cGUuCisgKgorICogUmV0dXJuczogKGFycmF5
IHplcm8tdGVybWluYXRlZD0xKSAodHJhbnNmZXIgZnVsbCkgKG51bGxhYmxlKTogYSAlTlVMTC10
ZXJtaW5hdGVkIGFycmF5IG9mIHN0cmluZ3MKKyAqICAgIGNvbnRhaW5pbmcgdGhlIHByb3BlcnR5
IG5hbWVzLCBvciAlTlVMTCBpZiBAaW5zdGFuY2UgZG9lc24ndCBoYXZlIGVudW1lcmFibGUgcHJv
cGVydGllcy4KKyAqLworCisvKioKKyAqIEpTQ0NsYXNzVlRhYmxlOgorICogQGdldF9wcm9wZXJ0
eTogYSAjSlNDQ2xhc3NHZXRQcm9wZXJ0eUZ1bmN0aW9uIGZvciBnZXR0aW5nIGEgcHJvcGVydHku
CisgKiBAc2V0X3Byb3BlcnR5OiBhICNKU0NDbGFzc1NldFByb3BlcnR5RnVuY3Rpb24gZm9yIHNl
dHRpbmcgYSBwcm9wZXJ0eS4KKyAqIEBoYXNfcHJvcGVydHk6IGEgI0pTQ0NsYXNzSGFzUHJvcGVy
dHlGdW5jdGlvbiBmb3IgcXVlcnlpbmcgYSBwcm9wZXJ0eS4KKyAqIEBkZWxldGVfcHJvcGVydHk6
IGEgI0pTQ0NsYXNzRGVsZXRlUHJvcGVydHlGdW5jdGlvbiBmb3IgZGVsZXRpbmcgYSBwcm9wZXJ0
eS4KKyAqIEBlbnVtZXJhdGVfcHJvcGVydGllczogYSAjSlNDQ2xhc3NFbnVtZXJhdGVQcm9wZXJ0
aWVzRnVuY3Rpb24gZm9yIGVudW1lcmF0aW5nIHByb3BlcnRpZXMuCisgKgorICogVmlydHVhbCB0
YWJsZSBmb3IgYSBKU0NDbGFzcy4gVGhpcyBjYW4gYmUgb3B0aW9uYWxseSB1c2VkIHdoZW4gcmVn
aXN0ZXJpbmcgYSAjSlNDQ2xhc3MgaW4gYSAjSlNDQ29udGV4dAorICogdG8gcHJvdmlkZSBhIGN1
c3RvbSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIGNsYXNzLiBBbGwgdmlydHVhbCBmdW5jdGlvbnMg
YXJlIG9wdGlvbmFsIGFuZCBjYW4gYmUgc2V0IHRvCisgKiAlTlVMTCB0byBmYWxsYmFjayB0byB0
aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KKyAqLworCitHUmVmUHRyPEpTQ0NsYXNzPiBqc2ND
bGFzc0NyZWF0ZShKU0NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiBuYW1lLCBKU0NDbGFz
cyogcGFyZW50Q2xhc3MsIEpTQ0NsYXNzVlRhYmxlKiB2dGFibGUsIEdEZXN0cm95Tm90aWZ5IGRl
c3Ryb3lGdW5jdGlvbikKIHsKICAgICBHUmVmUHRyPEpTQ0NsYXNzPiBqc2NDbGFzcyA9IGFkb3B0
R1JlZihKU0NfQ0xBU1MoZ19vYmplY3RfbmV3KEpTQ19UWVBFX0NMQVNTLCAiY29udGV4dCIsIGNv
bnRleHQsICJuYW1lIiwgbmFtZSwgInBhcmVudCIsIHBhcmVudENsYXNzLCBudWxscHRyKSkpOwot
ICAgIGpzY0NsYXNzLT5wcml2LT5kZXN0cm95RnVuY3Rpb24gPSBkZXN0cm95RnVuY3Rpb247CisK
KyAgICBKU0NDbGFzc1ByaXZhdGUqIHByaXYgPSBqc2NDbGFzcy0+cHJpdjsKKyAgICBwcml2LT52
dGFibGUgPSB2dGFibGU7CisgICAgcHJpdi0+ZGVzdHJveUZ1bmN0aW9uID0gZGVzdHJveUZ1bmN0
aW9uOworCisgICAgSlNDbGFzc0RlZmluaXRpb24gZGVmaW5pdGlvbiA9IGtKU0NsYXNzRGVmaW5p
dGlvbkVtcHR5OworICAgIGRlZmluaXRpb24uY2xhc3NOYW1lID0gcHJpdi0+bmFtZS5kYXRhKCk7
CisKKyNkZWZpbmUgU0VUX0lNUExfSUZfTkVFREVEKGRlZmluaXRpb25GdW5jLCB2dGFibGVGdW5j
KSBcCisgICAgZm9yIChhdXRvKiBrbGFzcyA9IGpzY0NsYXNzLmdldCgpOyBrbGFzczsga2xhc3Mg
PSBrbGFzcy0+cHJpdi0+cGFyZW50Q2xhc3MpIHsgXAorICAgICAgICBpZiAoa2xhc3MtPnByaXYt
PnZ0YWJsZSAmJiBrbGFzcy0+cHJpdi0+dnRhYmxlLT52dGFibGVGdW5jKSB7IFwKKyAgICAgICAg
ICAgIGRlZmluaXRpb24uZGVmaW5pdGlvbkZ1bmMgPSBkZWZpbml0aW9uRnVuYzsgXAorICAgICAg
ICAgICAgYnJlYWs7IFwKKyAgICAgICAgfSBcCisgICAgfQorCisgICAgU0VUX0lNUExfSUZfTkVF
REVEKGdldFByb3BlcnR5LCBnZXRfcHJvcGVydHkpOworICAgIFNFVF9JTVBMX0lGX05FRURFRChz
ZXRQcm9wZXJ0eSwgc2V0X3Byb3BlcnR5KTsKKyAgICBTRVRfSU1QTF9JRl9ORUVERUQoaGFzUHJv
cGVydHksIGhhc19wcm9wZXJ0eSk7CisgICAgU0VUX0lNUExfSUZfTkVFREVEKGRlbGV0ZVByb3Bl
cnR5LCBkZWxldGVfcHJvcGVydHkpOworICAgIFNFVF9JTVBMX0lGX05FRURFRChnZXRQcm9wZXJ0
eU5hbWVzLCBlbnVtZXJhdGVfcHJvcGVydGllcyk7CisKKyN1bmRlZiBTRVRfSU1QTF9JRl9ORUVE
RUQKKworICAgIHByaXYtPmpzQ2xhc3MgPSBKU0NsYXNzQ3JlYXRlKCZkZWZpbml0aW9uKTsKKwor
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gcHJvdG90eXBlTmFtZShnX3N0cmR1cF9wcmludGYoIiVzUHJv
dG90eXBlIiwgcHJpdi0+bmFtZS5kYXRhKCkpKTsKKyAgICBKU0NsYXNzRGVmaW5pdGlvbiBwcm90
b3R5cGVEZWZpbml0aW9uID0ga0pTQ2xhc3NEZWZpbml0aW9uRW1wdHk7CisgICAgcHJvdG90eXBl
RGVmaW5pdGlvbi5jbGFzc05hbWUgPSBwcm90b3R5cGVOYW1lLmdldCgpOworICAgIEpTQ2xhc3NS
ZWYgcHJvdG90eXBlQ2xhc3MgPSBKU0NsYXNzQ3JlYXRlKCZwcm90b3R5cGVEZWZpbml0aW9uKTsK
KyAgICBwcml2LT5wcm90b3R5cGUgPSBqc2NDb250ZXh0R2V0T3JDcmVhdGVKU1dyYXBwZXIocHJp
di0+Y29udGV4dCwgcHJvdG90eXBlQ2xhc3MpOworICAgIEpTQ2xhc3NSZWxlYXNlKHByb3RvdHlw
ZUNsYXNzKTsKKworICAgIGlmIChwcml2LT5wYXJlbnRDbGFzcykKKyAgICAgICAgSlNPYmplY3RT
ZXRQcm90b3R5cGUoanNjQ29udGV4dEdldEpTQ29udGV4dChwcml2LT5jb250ZXh0KSwgdG9SZWYo
cHJpdi0+cHJvdG90eXBlLmdldCgpKSwgdG9SZWYocHJpdi0+cGFyZW50Q2xhc3MtPnByaXYtPnBy
b3RvdHlwZS5nZXQoKSkpOwogICAgIHJldHVybiBqc2NDbGFzczsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NsYXNzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL2dsaWIvSlNDQ2xhc3MuaAppbmRleCBkODQxMWRhN2UxNi4uMWZmODQ5ZDgx
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDbGFzcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDbGFzcy5oCkBAIC0zOSw2
ICszOSw0MiBAQCB0eXBlZGVmIHN0cnVjdCBfSlNDQ2xhc3NDbGFzcyBKU0NDbGFzc0NsYXNzOwog
CiB0eXBlZGVmIHN0cnVjdCBfSlNDQ29udGV4dCBKU0NDb250ZXh0OwogCit0eXBlZGVmIEpTQ1Zh
bHVlICooKkpTQ0NsYXNzR2V0UHJvcGVydHlGdW5jdGlvbikgICAgICAgIChKU0NDbGFzcyAgICpq
c2NfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBKU0NDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgaW5zdGFuY2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICpuYW1lKTsKK3R5cGVkZWYgZ2Jvb2xlYW4gKCpKU0NDbGFzc1NldFByb3BlcnR5
RnVuY3Rpb24pICAgICAgICAgKEpTQ0NsYXNzICAgKmpzY19jbGFzcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTQ0NvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBncG9pbnRlciAgICBpbnN0YW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU0NWYWx1
ZSAgICp2YWx1ZSk7Cit0eXBlZGVmIGdib29sZWFuICgqSlNDQ2xhc3NIYXNQcm9wZXJ0eUZ1bmN0
aW9uKSAgICAgICAgIChKU0NDbGFzcyAgICpqc2NfY2xhc3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU0NDb250ZXh0ICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ3BvaW50ZXIgICAgaW5zdGFuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKTsKK3R5cGVkZWYgZ2Jv
b2xlYW4gKCpKU0NDbGFzc0RlbGV0ZVByb3BlcnR5RnVuY3Rpb24pICAgICAgKEpTQ0NsYXNzICAg
KmpzY19jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEpTQ0NvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAgICBpbnN0YW5jZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIgKm5hbWUpOwordHlwZWRlZiBnY2hhciAgKiooKkpTQ0NsYXNzRW51bWVyYXRl
UHJvcGVydGllc0Z1bmN0aW9uKSAoSlNDQ2xhc3MgICAqanNjX2NsYXNzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNDQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdwb2ludGVyICAgIGluc3RhbmNlKTsKKworCit0eXBlZGVmIHN0cnVjdCB7Cisg
ICAgSlNDQ2xhc3NHZXRQcm9wZXJ0eUZ1bmN0aW9uIGdldF9wcm9wZXJ0eTsKKyAgICBKU0NDbGFz
c1NldFByb3BlcnR5RnVuY3Rpb24gc2V0X3Byb3BlcnR5OworICAgIEpTQ0NsYXNzSGFzUHJvcGVy
dHlGdW5jdGlvbiBoYXNfcHJvcGVydHk7CisgICAgSlNDQ2xhc3NEZWxldGVQcm9wZXJ0eUZ1bmN0
aW9uIGRlbGV0ZV9wcm9wZXJ0eTsKKyAgICBKU0NDbGFzc0VudW1lcmF0ZVByb3BlcnRpZXNGdW5j
dGlvbiBlbnVtZXJhdGVfcHJvcGVydGllczsKKworICAgIC8qPCBwcml2YXRlID4qLworICAgIHZv
aWQgKCpfanNjX3Jlc2VydmVkMCkgKHZvaWQpOworICAgIHZvaWQgKCpfanNjX3Jlc2VydmVkMSkg
KHZvaWQpOworICAgIHZvaWQgKCpfanNjX3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZvaWQgKCpf
anNjX3Jlc2VydmVkMykgKHZvaWQpOworfSBKU0NDbGFzc1ZUYWJsZTsKKwogSlNDX0FQSSBHVHlw
ZQoganNjX2NsYXNzX2dldF90eXBlICAgICAgICAodm9pZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDbGFzc1ByaXZhdGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDbGFzc1ByaXZhdGUuaAppbmRleCAyZjM2NDRkNGQwNi4u
OGNiYzYwYTZkMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9K
U0NDbGFzc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlND
Q2xhc3NQcml2YXRlLmgKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlICJKU0NWYWx1ZS5oIgog
I2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KIAotR1JlZlB0cjxKU0NDbGFzcz4ganNjQ2xh
c3NDcmVhdGUoSlNDQ29udGV4dCosIGNvbnN0IGNoYXIqLCBKU0NDbGFzcyosIEdEZXN0cm95Tm90
aWZ5KTsKK0dSZWZQdHI8SlNDQ2xhc3M+IGpzY0NsYXNzQ3JlYXRlKEpTQ0NvbnRleHQqLCBjb25z
dCBjaGFyKiwgSlNDQ2xhc3MqLCBKU0NDbGFzc1ZUYWJsZSosIEdEZXN0cm95Tm90aWZ5KTsKIEpT
Q2xhc3NSZWYganNjQ2xhc3NHZXRKU0NsYXNzKEpTQ0NsYXNzKik7CiBKU0M6OkpTT2JqZWN0KiBq
c2NDbGFzc0dldE9yQ3JlYXRlSlNXcmFwcGVyKEpTQ0NsYXNzKiwgZ3BvaW50ZXIpOwogdm9pZCBq
c2NDbGFzc0ludmFsaWRhdGUoSlNDQ2xhc3MqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCAyMjBmMTZmZDliZi4uZTcwN2IwYjllMGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAKQEAgLTI0
MCw2ICsyNDAsMTEgQEAgZ3BvaW50ZXIganNjQ29udGV4dFdyYXBwZWRPYmplY3QoSlNDQ29udGV4
dCogY29udGV4dCwgSlNPYmplY3RSZWYganNPYmplY3QpCiAgICAgcmV0dXJuIHdyYXBwZXJNYXAo
Y29udGV4dCkud3JhcHBlZE9iamVjdChjb250ZXh0LT5wcml2LT5qc0NvbnRleHQuZ2V0KCksIGpz
T2JqZWN0KTsKIH0KIAorSlNDQ2xhc3MqIGpzY0NvbnRleHRHZXRSZWdpc3RlcmVkQ2xhc3MoSlND
Q29udGV4dCogY29udGV4dCwgSlNDbGFzc1JlZiBqc0NsYXNzKQoreworICAgIHJldHVybiB3cmFw
cGVyTWFwKGNvbnRleHQpLnJlZ2lzdGVyZWRDbGFzcyhqc0NsYXNzKTsKK30KKwogQ2FsbGJhY2tE
YXRhIGpzY0NvbnRleHRQdXNoQ2FsbGJhY2soSlNDQ29udGV4dCogY29udGV4dCwgSlNWYWx1ZVJl
ZiBjYWxsZWVWYWx1ZSwgSlNWYWx1ZVJlZiB0aGlzVmFsdWUsIHNpemVfdCBhcmd1bWVudENvdW50
LCBjb25zdCBKU1ZhbHVlUmVmKiBhcmd1bWVudHMpCiB7CiAgICAgVGhyZWFkJiB0aHJlYWQgPSBU
aHJlYWQ6OmN1cnJlbnQoKTsKQEAgLTc2MiwyMyArNzY3LDI2IEBAIEpTQ1ZhbHVlKiBqc2NfY29u
dGV4dF9nZXRfdmFsdWUoSlNDQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogbmFtZSkKICAq
IGpzY19jb250ZXh0X3JlZ2lzdGVyX2NsYXNzOgogICogQGNvbnRleHQ6IGEgI0pTQ0NvbnRleHQK
ICAqIEBuYW1lOiB0aGUgY2xhc3MgbmFtZQotICogQHBhcmVudF9jbGFzczogKG51bGxhYmxlKTog
YSAjSlNDQ2xhc3MKKyAqIEBwYXJlbnRfY2xhc3M6IChudWxsYWJsZSk6IGEgI0pTQ0NsYXNzIG9y
ICVOVUxMCisgKiBAdnRhYmxlOiAobnVsbGFibGUpOiBhbiBvcHRpb25hbCAjSlNDQ2xhc3NWVGFi
bGUgb3IgJU5VTEwKICAqIEBkZXN0cm95X25vdGlmeTogKG51bGxhYmxlKTogYSBkZXN0cm95IG5v
dGlmaWVyIGZvciBjbGFzcyBpbnN0YW5jZXMKICAqCiAgKiBSZWdpc3RlciBhIGN1c3RvbSBjbGFz
cyBpbiBAY29udGV4dCB1c2luZyB0aGUgZ2l2ZW4gQG5hbWUuIElmIHRoZSBuZXcgY2xhc3MgaW5o
ZXJpdHMgZnJvbQogICogYW5vdGhlciAjSlNDQ2xhc3MsIHRoZSBwYXJlbnQgc2hvdWxkIGJlIHBh
c3NlZCBhcyBAcGFyZW50X2NsYXNzLCBvdGhlcndpc2UgJU5VTEwgc2hvdWxkIGJlCi0gKiB1c2Vk
LiBXaGVuIGFuIGluc3RhbmNlIG9mIHRoZSAjSlNDQ2xhc3MgaXMgY2xlYXJlZCBpbiB0aGUgY29u
dGV4dCwgQGRlc3Ryb3lfbm90aWZ5IGlzCi0gKiBjYWxsZWQgd2l0aCB0aGUgaW5zdGFuY2UgYXMg
cGFyYW1ldGVyLgorICogdXNlZC4gVGhlIG9wdGlvbmFsIEB2dGFibGUgcGFyYW1ldGVyIGFsbG93
cyB0byBwcm92aWRlIGEgY3VzdG9tIGltcGxlbWVudGF0aW9uIGZvciBoYW5kbGluZworICogdGhl
IGNsYXNzLCBmb3IgZXhhbXBsZSwgdG8gaGFuZGxlIGV4dGVybmFsIHByb3BlcnRpZXMgbm90IGFk
ZGVkIHRvIHRoZSBwcm90b3R5cGUuCisgKiBXaGVuIGFuIGluc3RhbmNlIG9mIHRoZSAjSlNDQ2xh
c3MgaXMgY2xlYXJlZCBpbiB0aGUgY29udGV4dCwgQGRlc3Ryb3lfbm90aWZ5IGlzIGNhbGxlZCB3
aXRoCisgKiB0aGUgaW5zdGFuY2UgYXMgcGFyYW1ldGVyLgogICoKICAqIFJldHVybnM6ICh0cmFu
c2ZlciBub25lKTogYSAjSlNDQ2xhc3MKICAqLwotSlNDQ2xhc3MqIGpzY19jb250ZXh0X3JlZ2lz
dGVyX2NsYXNzKEpTQ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIG5hbWUsIEpTQ0NsYXNz
KiBwYXJlbnRDbGFzcywgR0Rlc3Ryb3lOb3RpZnkgZGVzdHJveUZ1bmN0aW9uKQorSlNDQ2xhc3Mq
IGpzY19jb250ZXh0X3JlZ2lzdGVyX2NsYXNzKEpTQ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNo
YXIqIG5hbWUsIEpTQ0NsYXNzKiBwYXJlbnRDbGFzcywgSlNDQ2xhc3NWVGFibGUqIHZ0YWJsZSwg
R0Rlc3Ryb3lOb3RpZnkgZGVzdHJveUZ1bmN0aW9uKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKEpTQ19JU19DT05URVhUKGNvbnRleHQpLCBudWxscHRyKTsKICAgICBnX3JldHVybl92YWxf
aWZfZmFpbChuYW1lLCBudWxscHRyKTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbCghcGFyZW50
Q2xhc3MgfHwgSlNDX0lTX0NMQVNTKHBhcmVudENsYXNzKSwgbnVsbHB0cik7CiAKLSAgICBhdXRv
IGpzY0NsYXNzID0ganNjQ2xhc3NDcmVhdGUoY29udGV4dCwgbmFtZSwgcGFyZW50Q2xhc3MsIGRl
c3Ryb3lGdW5jdGlvbik7CisgICAgYXV0byBqc2NDbGFzcyA9IGpzY0NsYXNzQ3JlYXRlKGNvbnRl
eHQsIG5hbWUsIHBhcmVudENsYXNzLCB2dGFibGUsIGRlc3Ryb3lGdW5jdGlvbik7CiAgICAgd3Jh
cHBlck1hcChjb250ZXh0KS5yZWdpc3RlckNsYXNzKGpzY0NsYXNzLmdldCgpKTsKICAgICByZXR1
cm4ganNjQ2xhc3MuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL2dsaWIvSlNDQ29udGV4dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pT
Q0NvbnRleHQuaAppbmRleCBkMTdhZGEzMzljMS4uMzMyNmI0ZTMxMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuaApAQCAtMTI2LDYgKzEyNiw3IEBAIEpT
Q19BUEkgSlNDQ2xhc3MgKgoganNjX2NvbnRleHRfcmVnaXN0ZXJfY2xhc3MgICAgICAgICAgIChK
U0NDb250ZXh0ICAgICAgICAgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIgICAgICAgICAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSlNDQ2xhc3MgICAgICAgICAgICpwYXJlbnRfY2xhc3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTQ0NsYXNzVlRhYmxlICAgICAqdnRh
YmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRGVzdHJveU5vdGlm
eSAgICAgIGRlc3Ryb3lfbm90aWZ5KTsKIAogR19FTkRfREVDTFMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0UHJpdmF0ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHRQcml2YXRlLmgKaW5kZXggOTgwZGExODBi
N2MuLjY2MWMzZGYwODA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2ds
aWIvSlNDQ29udGV4dFByaXZhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2ds
aWIvSlNDQ29udGV4dFByaXZhdGUuaApAQCAtMzIsNiArMzIsNyBAQCB2b2lkIGpzY0NvbnRleHRW
YWx1ZURlc3Ryb3llZChKU0NDb250ZXh0KiwgSlNWYWx1ZVJlZik7CiBKU0M6OkpTT2JqZWN0KiBq
c2NDb250ZXh0R2V0SlNXcmFwcGVyKEpTQ0NvbnRleHQqLCBncG9pbnRlcik7CiBKU0M6OkpTT2Jq
ZWN0KiBqc2NDb250ZXh0R2V0T3JDcmVhdGVKU1dyYXBwZXIoSlNDQ29udGV4dCosIEpTQ2xhc3NS
ZWYsIEpTVmFsdWVSZWYgcHJvdG90eXBlID0gbnVsbHB0ciwgZ3BvaW50ZXIgPSBudWxscHRyLCBH
RGVzdHJveU5vdGlmeSA9IG51bGxwdHIpOwogZ3BvaW50ZXIganNjQ29udGV4dFdyYXBwZWRPYmpl
Y3QoSlNDQ29udGV4dCosIEpTT2JqZWN0UmVmKTsKK0pTQ0NsYXNzKiBqc2NDb250ZXh0R2V0UmVn
aXN0ZXJlZENsYXNzKEpTQ0NvbnRleHQqLCBKU0NsYXNzUmVmKTsKIAogc3RydWN0IENhbGxiYWNr
RGF0YSB7CiAgICAgR1JlZlB0cjxKU0NDb250ZXh0PiBjb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1dyYXBwZXJNYXAuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1dyYXBwZXJNYXAuY3BwCmluZGV4IDczYjgxOTMzMjAw
Li44OTNjZTZmN2FkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGli
L0pTQ1dyYXBwZXJNYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9K
U0NXcmFwcGVyTWFwLmNwcApAQCAtNjgsNiArNjgsMTEgQEAgdm9pZCBXcmFwcGVyTWFwOjpyZWdp
c3RlckNsYXNzKEpTQ0NsYXNzKiBqc2NDbGFzcykKICAgICBtX2NsYXNzTWFwLnNldChqc0NsYXNz
LCBqc2NDbGFzcyk7CiB9CiAKK0pTQ0NsYXNzKiBXcmFwcGVyTWFwOjpyZWdpc3RlcmVkQ2xhc3Mo
SlNDbGFzc1JlZiBqc0NsYXNzKSBjb25zdAoreworICAgIHJldHVybiBtX2NsYXNzTWFwLmdldChq
c0NsYXNzKTsKK30KKwogSlNPYmplY3QqIFdyYXBwZXJNYXA6OmNyZWF0ZUpTV3JhcHBwZXIoSlNH
bG9iYWxDb250ZXh0UmVmIGpzQ29udGV4dCwgSlNDbGFzc1JlZiBqc0NsYXNzLCBKU1ZhbHVlUmVm
IHByb3RvdHlwZSwgZ3BvaW50ZXIgd3JhcHBlZE9iamVjdCwgR0Rlc3Ryb3lOb3RpZnkgZGVzdHJv
eUZ1bmN0aW9uKQogewogICAgIEFTU0VSVCh0b0pTR2xvYmFsT2JqZWN0KGpzQ29udGV4dCktPndy
YXBwZXJNYXAoKSA9PSB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NXcmFwcGVyTWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIv
SlNDV3JhcHBlck1hcC5oCmluZGV4IDY4YmY4MjY3Nzk0Li43NmVmNGQ1MGJmNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1dyYXBwZXJNYXAuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDV3JhcHBlck1hcC5oCkBAIC00NSw2ICs0
NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVud3JhcChKU1ZhbHVlUmVmKTsKIAogICAgIHZvaWQg
cmVnaXN0ZXJDbGFzcyhKU0NDbGFzcyopOworICAgIEpTQ0NsYXNzKiByZWdpc3RlcmVkQ2xhc3Mo
SlNDbGFzc1JlZikgY29uc3Q7CiAKICAgICBKU09iamVjdCogY3JlYXRlSlNXcmFwcHBlcihKU0ds
b2JhbENvbnRleHRSZWYsIEpTQ2xhc3NSZWYsIEpTVmFsdWVSZWYgcHJvdG90eXBlLCBncG9pbnRl
ciwgR0Rlc3Ryb3lOb3RpZnkpOwogICAgIEpTT2JqZWN0KiBqc1dyYXBwZXIoZ3BvaW50ZXIgd3Jh
cHBlZE9iamVjdCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L2dsaWIvZG9jcy9qc2MtZ2xpYi00LjAtc2VjdGlvbnMudHh0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL2RvY3MvanNjLWdsaWItNC4wLXNlY3Rpb25zLnR4dAppbmRleCAzOTk0Yjgy
ZmMyZC4uZTYyNDRlODhmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
Z2xpYi9kb2NzL2pzYy1nbGliLTQuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9nbGliL2RvY3MvanNjLWdsaWItNC4wLXNlY3Rpb25zLnR4dApAQCAtMTYyLDYg
KzE2MiwxMiBAQCBqc2NfZXhjZXB0aW9uX2dldF90eXBlCiA8RklMRT5KU0NDbGFzczwvRklMRT4K
IDxUSVRMRT5KU0NDbGFzczwvVElUTEU+CiBKU0NDbGFzcworSlNDQ2xhc3NHZXRQcm9wZXJ0eUZ1
bmN0aW9uCitKU0NDbGFzc1NldFByb3BlcnR5RnVuY3Rpb24KK0pTQ0NsYXNzSGFzUHJvcGVydHlG
dW5jdGlvbgorSlNDQ2xhc3NEZWxldGVQcm9wZXJ0eUZ1bmN0aW9uCitKU0NDbGFzc0VudW1lcmF0
ZVByb3BlcnRpZXNGdW5jdGlvbgorSlNDQ2xhc3NWVGFibGUKIGpzY19jbGFzc19nZXRfbmFtZQog
anNjX2NsYXNzX2dldF9wYXJlbnQKIGpzY19jbGFzc19hZGRfY29uc3RydWN0b3IKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCmluZGV4IGJjZmQzODIyMzNlLi4zYzFlNTIzYmQ2YyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTgtMDQtMTcgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHTElCXSBNYWtlIGl0IHBv
c3NpYmxlIHRvIGhhbmRsZSBKU0NDbGFzcyBleHRlcm5hbCBwcm9wZXJ0aWVzIG5vdCBhZGRlZCB0
byB0aGUgcHJvdG90eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODQ2ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgSlNDQ2xhc3NWVGFibGUgdGhhdCBjYW4gYmUgb3B0aW9uYWxseSBwYXNzZWQg
dG8ganNjX2NvbnRleHRfcmVnaXN0ZXJfY2xhc3MoKSB0byBwcm92aWRlIGltcGxtZW50YXRpb25z
IGZvcgorICAgICAgICBKU0NsYXNzRGVmaW5pdGlvbi4gVGhpcyBpcyByZXF1aXJlZCB0byBpbXBs
ZW1lbnQgZHluYW1pYyBwcm9wZXJ0aWVzIHRoYXQgY2FuJ3QgYmUgYWRkZWQgd2l0aAorICAgICAg
ICBqc2NfY2xhc3NfYWRkX3Byb3BlcnR5KCkgZm9yIGV4YW1wbGUgdG8gaW1wbGVtZW50IHNvbWV0
aGluZyBsaWtlIGltcG9ydHMgb2JqZWN0IGluIHNlZWQvZ2pzLgorCisgICAgICAgICogQVBJL2ds
aWIvSlNDQ2xhc3MuY3BwOgorICAgICAgICAoVlRhYmxlRXhjZXB0aW9uSGFuZGxlcjo6VlRhYmxl
RXhjZXB0aW9uSGFuZGxlcik6IEhlbHBlciBjbGFzcyB0byBoYW5kbGUgdGhlIGV4Y2VwdGlvbnMg
aW4gdnRhYmxlIGZ1bmN0aW9ucyB0aGF0CisgICAgICAgIGNhbiB0aHJvdyBleGNlcHRpb25zLgor
ICAgICAgICAoVlRhYmxlRXhjZXB0aW9uSGFuZGxlcjo6flZUYWJsZUV4Y2VwdGlvbkhhbmRsZXIp
OgorICAgICAgICAoZ2V0UHJvcGVydHkpOiBJdGVyYXRlIHRoZSBjbGFzcyBjaGFpbiB0byBjYWxs
IGdldF9wcm9wZXJ0eSBmdW5jdGlvbi4KKyAgICAgICAgKHNldFByb3BlcnR5KTogSXRlcmF0ZSB0
aGUgY2xhc3MgY2hhaW4gdG8gY2FsbCBzZXRfcHJvcGVydHkgZnVuY3Rpb24uCisgICAgICAgICho
YXNQcm9wZXJ0eSk6IEl0ZXJhdGUgdGhlIGNsYXNzIGNoYWluIHRvIGNhbGwgaGFzX3Byb3BlcnR5
IGZ1bmN0aW9uLgorICAgICAgICAoZGVsZXRlUHJvcGVydHkpOiBJdGVyYXRlIHRoZSBjbGFzcyBj
aGFpbiB0byBjYWxsIGRlbGV0ZV9wcm9wZXJ0eSBmdW5jdGlvbi4KKyAgICAgICAgKGdldFByb3Bl
cnR5TmFtZXMpOiBJdGVyYXRlIHRoZSBjbGFzcyBjaGFpbiB0byBjYWxsIGVudW1lcmF0ZV9wcm9w
ZXJ0aWVzIGZ1bmN0aW9uLgorICAgICAgICAoanNjX2NsYXNzX2NsYXNzX2luaXQpOiBSZW1vdmUg
Y29uc3RydWN0ZWQgaW1wbGVtZW50YXRpb24sIHNpbmNlIHdlIG5lZWQgdG8gaW5pdGlhbGl6ZSB0
aGUgSlNDbGFzc0RlZmluaXRpb24gaW4KKyAgICAgICAganNjQ2xhc3NDcmVhdGUgbm93LgorICAg
ICAgICAoanNjQ2xhc3NDcmVhdGUpOiBSZWNlaXZlIGFuIG9wdGlvbmFsIEpTQ0NsYXNzVlRhYmxl
IHRoYXQgaXMgdXNlZCB0byBpbml0aWFsaXplIHRoZSBKU0NsYXNzRGVmaW5pdGlvbi4KKyAgICAg
ICAgKiBBUEkvZ2xpYi9KU0NDbGFzcy5oOgorICAgICAgICAqIEFQSS9nbGliL0pTQ0NsYXNzUHJp
dmF0ZS5oOgorICAgICAgICAqIEFQSS9nbGliL0pTQ0NvbnRleHQuY3BwOgorICAgICAgICAoanNj
Q29udGV4dEdldFJlZ2lzdGVyZWRDbGFzcyk6IEhlbHBlciB0byBnZXQgdGhlIEpTQ0NsYXNzIGZv
ciBhIGdpdmVuIEpTQ2xhc3NSZWYuCisgICAgICAgIChqc2NfY29udGV4dF9yZWdpc3Rlcl9jbGFz
cyk6IEFkZCBKU0NDbGFzc1ZUYWJsZSBwYXJhbWV0ZXIuCisgICAgICAgICogQVBJL2dsaWIvSlND
Q29udGV4dC5oOgorICAgICAgICAqIEFQSS9nbGliL0pTQ0NvbnRleHRQcml2YXRlLmg6CisgICAg
ICAgICogQVBJL2dsaWIvSlNDV3JhcHBlck1hcC5jcHA6CisgICAgICAgIChKU0M6OldyYXBwZXJN
YXA6OnJlZ2lzdGVyZWRDbGFzcyBjb25zdCk6IEdldCB0aGUgSlNDQ2xhc3MgZm9yIGEgZ2l2ZW4g
SlNDbGFzc1JlZi4KKyAgICAgICAgKiBBUEkvZ2xpYi9KU0NXcmFwcGVyTWFwLmg6CisgICAgICAg
ICogQVBJL2dsaWIvZG9jcy9qc2MtZ2xpYi00LjAtc2VjdGlvbnMudHh0OiBBZGQgbmV3IHN5bWJv
bHMuCisKIDIwMTgtMDQtMTcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHTElCXSBBZGQgQVBJIHRvIGNsZWFyIEpTQ0NvbnRleHQgdW5jYXVn
aHQgZXhjZXB0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggZjM5NTYwNjRmN2QuLjAyN2VhODgzNjcxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTgtMDQtMTcg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtH
TElCXSBNYWtlIGl0IHBvc3NpYmxlIHRvIGhhbmRsZSBKU0NDbGFzcyBleHRlcm5hbCBwcm9wZXJ0
aWVzIG5vdCBhZGRlZCB0byB0aGUgcHJvdG90eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ2ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCBjYXNlcyBmb3IgdGhlIG5ldyBBUEkuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL0phdmFTY3JpcHRDb3JlL2dsaWIvVGVzdEpT
Qy5jcHA6CisgICAgICAgIChmb29DcmVhdGUpOgorICAgICAgICAoZm9vRnJlZSk6CisgICAgICAg
IChmb29HZXRQcm9wZXJ0eSk6CisgICAgICAgIChmb29TZXRQcm9wZXJ0eSk6CisgICAgICAgICh0
ZXN0SlNDUHJvbWlzZXMpOgorICAgICAgICAodGVzdEpTQ0dhcmJhZ2VDb2xsZWN0b3IpOgorICAg
ICAgICAodGVzdHNKU0NWaXJ0dWFsTWFjaGluZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmNwcDoKKyAgICAgICAgKHdpbmRvd09iamVj
dENsZWFyZWRDYWxsYmFjayk6CisKIDIwMTgtMDQtMTcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8
Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHTElCXSBBZGQgQVBJIHRvIGNsZWFyIEpT
Q0NvbnRleHQgdW5jYXVnaHQgZXhjZXB0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL0phdmFTY3JpcHRDb3JlL2dsaWIvVGVzdEpTQy5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL0phdmFTY3JpcHRDb3JlL2dsaWIvVGVzdEpTQy5jcHAKaW5kZXggZmMyMjE0
YmM2ZDkuLmJiZjJiYjlhMWYxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L0phdmFTY3JpcHRDb3JlL2dsaWIvVGVzdEpTQy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9KYXZhU2NyaXB0Q29yZS9nbGliL1Rlc3RKU0MuY3BwCkBAIC05NDQsMTIgKzk0NCwx
NSBAQCBzdGF0aWMgdm9pZCB0ZXN0SlNDT2JqZWN0KCkKIHR5cGVkZWYgc3RydWN0IF9Gb28gRm9v
Owogc3RydWN0IF9Gb28gewogICAgIGludCBmb287CisgICAgSGFzaE1hcDxDU3RyaW5nLCBpbnQ+
IHByb3BlcnRpZXM7CiAgICAgRm9vKiBzaWJsaW5nOwogfTsKIAogc3RhdGljIEZvbyogZm9vQ3Jl
YXRlKCkKIHsKLSAgICByZXR1cm4gZ19uZXcwKEZvbywgMSk7CisgICAgRm9vKiBmb28gPSBnX25l
dzAoRm9vLCAxKTsKKyAgICBuZXcgKGZvbykgRm9vKCk7CisgICAgcmV0dXJuIGZvbzsKIH0KIAog
c3RhdGljIEZvbyogZm9vQ3JlYXRlV2l0aEZvbyhpbnQgdmFsdWUpCkBAIC05NjEsNiArOTY0LDcg
QEAgc3RhdGljIEZvbyogZm9vQ3JlYXRlV2l0aEZvbyhpbnQgdmFsdWUpCiAKIHN0YXRpYyB2b2lk
IGZvb0ZyZWUoRm9vKiBmb28pCiB7CisgICAgZm9vLT5+Rm9vKCk7CiAgICAgZ19mcmVlKGZvbyk7
CiB9CiAKQEAgLTk4OSw2ICs5OTMsMTkgQEAgc3RhdGljIHZvaWQgbXVsdGlwbHlGb28oRm9vKiBm
b28sIGludCBtdWx0aXBsaWVyKQogICAgIGZvby0+Zm9vICo9IG11bHRpcGxpZXI7CiB9CiAKK3N0
YXRpYyBpbnQgZm9vR2V0UHJvcGVydHkoRm9vKiBmb28sIGNvbnN0IGNoYXIqIG5hbWUpCit7Cisg
ICAgYXV0byBhZGRSZXN1bHQgPSBmb28tPnByb3BlcnRpZXMuYWRkKG5hbWUsIDApOworICAgIHJl
dHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworfQorCitzdGF0aWMgdm9pZCBmb29TZXRQ
cm9wZXJ0eShGb28qIGZvbywgY29uc3QgY2hhciogbmFtZSwgaW50IHZhbHVlKQoreworICAgIGF1
dG8gYWRkUmVzdWx0ID0gZm9vLT5wcm9wZXJ0aWVzLmFkZChuYW1lLCB2YWx1ZSk7CisgICAgaWYg
KCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IHZhbHVlOworfQorCiBzdHJ1Y3QgUHJvbWlzZURhdGEgewogICAgIEZvbyogZm9vOwogICAg
IGludCBtdWx0aXBsaWVyOwpAQCAtMTA0MCw2ICsxMDU3LDkyIEBAIHN0YXRpYyBCYXoqIGJhekNy
ZWF0ZSgpCiAgICAgcmV0dXJuIGdfbmV3MChCYXosIDEpOwogfQogCitzdGF0aWMgSlNDQ2xhc3NW
VGFibGUgZm9vVlRhYmxlID0geworICAgIC8vIGdldF9wcm9wZXJ0eQorICAgIFtdKEpTQ0NsYXNz
KiBqc2NDbGFzcywgSlNDQ29udGV4dCogY29udGV4dCwgZ3BvaW50ZXIgaW5zdGFuY2UsIGNvbnN0
IGNoYXIqIG5hbWUpIC0+IEpTQ1ZhbHVlKiB7CisgICAgICAgIGF1dG8qIGNoZWNrZXIgPSBzdGF0
aWNfY2FzdDxMZWFrQ2hlY2tlcio+KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKGpzY0NsYXNz
KSwgImxlYWstY2hlY2tlciIpKTsKKyAgICAgICAgY2hlY2tlci0+d2F0Y2goY29udGV4dCk7CisK
KyAgICAgICAgaWYgKCFnX3N0cl9oYXNfcHJlZml4KG5hbWUsICJwcm9wXyIpKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgaWYgKCFnX3N0cmNtcDAobmFtZSwgInByb3Bf
dGhyb3dfb25fZ2V0IikpIHsKKyAgICAgICAgICAgIGpzY19jb250ZXh0X3Rocm93KGNvbnRleHQs
ICJJbnZhbGlkIHByb3BlcnR5Iik7CisgICAgICAgICAgICByZXR1cm4ganNjX3ZhbHVlX25ld191
bmRlZmluZWQoY29udGV4dCk7CisgICAgICAgIH0KKworICAgICAgICBhdXRvKiBmb28gPSBzdGF0
aWNfY2FzdDxGb28qPihpbnN0YW5jZSk7CisgICAgICAgIGF1dG8qIHJldHVyblZhbHVlID0ganNj
X3ZhbHVlX25ld19udW1iZXIoY29udGV4dCwgZm9vR2V0UHJvcGVydHkoZm9vLCBuYW1lKSk7Cisg
ICAgICAgIGNoZWNrZXItPndhdGNoKHJldHVyblZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHJldHVy
blZhbHVlOworICAgIH0sCisgICAgLy8gc2V0X3Byb3BlcnR5CisgICAgW10oSlNDQ2xhc3MqIGpz
Y0NsYXNzLCBKU0NDb250ZXh0KiBjb250ZXh0LCBncG9pbnRlciBpbnN0YW5jZSwgY29uc3QgY2hh
ciogbmFtZSwgSlNDVmFsdWUqIHZhbHVlKSAtPiBnYm9vbGVhbiB7CisgICAgICAgIGF1dG8qIGNo
ZWNrZXIgPSBzdGF0aWNfY2FzdDxMZWFrQ2hlY2tlcio+KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JK
RUNUKGpzY0NsYXNzKSwgImxlYWstY2hlY2tlciIpKTsKKyAgICAgICAgY2hlY2tlci0+d2F0Y2go
Y29udGV4dCk7CisgICAgICAgIGNoZWNrZXItPndhdGNoKHZhbHVlKTsKKworICAgICAgICBpZiAo
IWdfc3RyX2hhc19wcmVmaXgobmFtZSwgInByb3BfIikpCisgICAgICAgICAgICByZXR1cm4gRkFM
U0U7CisKKyAgICAgICAgaWYgKCFqc2NfdmFsdWVfaXNfbnVtYmVyKHZhbHVlKSkgeworICAgICAg
ICAgICAganNjX2NvbnRleHRfdGhyb3coY29udGV4dCwgIkludmFsaWQgdmFsdWUgc2V0OiBvbmx5
IG51bWJlcnMgYXJlIGFsbG93ZWQiKTsKKyAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAg
ICB9CisKKyAgICAgICAgYXV0byogZm9vID0gc3RhdGljX2Nhc3Q8Rm9vKj4oaW5zdGFuY2UpOwor
ICAgICAgICBmb29TZXRQcm9wZXJ0eShmb28sIG5hbWUsIGpzY192YWx1ZV90b19pbnQzMih2YWx1
ZSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorICAgIC8vIGhhc19wcm9wZXJ0eQor
ICAgIFtdKEpTQ0NsYXNzKiBqc2NDbGFzcywgSlNDQ29udGV4dCogY29udGV4dCwgZ3BvaW50ZXIg
aW5zdGFuY2UsIGNvbnN0IGNoYXIqIG5hbWUpIC0+IGdib29sZWFuIHsKKyAgICAgICAgYXV0byog
Y2hlY2tlciA9IHN0YXRpY19jYXN0PExlYWtDaGVja2VyKj4oZ19vYmplY3RfZ2V0X2RhdGEoR19P
QkpFQ1QoanNjQ2xhc3MpLCAibGVhay1jaGVja2VyIikpOworICAgICAgICBjaGVja2VyLT53YXRj
aChjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGdfc3RyX2hhc19wcmVmaXgobmFtZSwgInByb3Bf
Iik7CisgICAgfSwKKyAgICAvLyBkZWxldGVfcHJvcGVydHkKKyAgICBbXShKU0NDbGFzcyoganNj
Q2xhc3MsIEpTQ0NvbnRleHQqIGNvbnRleHQsIGdwb2ludGVyIGluc3RhbmNlLCBjb25zdCBjaGFy
KiBuYW1lKSAtPiBnYm9vbGVhbiB7CisgICAgICAgIGF1dG8qIGNoZWNrZXIgPSBzdGF0aWNfY2Fz
dDxMZWFrQ2hlY2tlcio+KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKGpzY0NsYXNzKSwgImxl
YWstY2hlY2tlciIpKTsKKyAgICAgICAgY2hlY2tlci0+d2F0Y2goY29udGV4dCk7CisKKyAgICAg
ICAgaWYgKCFnX3N0cmNtcDAobmFtZSwgInByb3BfY2FudF9kZWxldGUiKSkKKyAgICAgICAgICAg
IHJldHVybiBGQUxTRTsKKworICAgICAgICBpZiAoIWdfc3RyY21wMChuYW1lLCAicHJvcF90aHJv
d19vbl9kZWxldGUiKSkgeworICAgICAgICAgICAganNjX2NvbnRleHRfdGhyb3coY29udGV4dCwg
IkludmFsaWQgcHJvcGVydHkiKTsKKyAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICB9
CisKKyAgICAgICAgYXV0byogZm9vID0gc3RhdGljX2Nhc3Q8Rm9vKj4oaW5zdGFuY2UpOworICAg
ICAgICBpZiAoIWZvby0+cHJvcGVydGllcy5jb250YWlucyhuYW1lKSkKKyAgICAgICAgICAgIHJl
dHVybiBGQUxTRTsKKworICAgICAgICBmb28tPnByb3BlcnRpZXMucmVtb3ZlKG5hbWUpOworICAg
ICAgICByZXR1cm4gVFJVRTsKKyAgICB9LAorICAgIC8vIGVudW1lcmF0ZV9wcm9wZXJ0aWVzCisg
ICAgW10oSlNDQ2xhc3MqIGpzY0NsYXNzLCBKU0NDb250ZXh0KiBjb250ZXh0LCBncG9pbnRlciBp
bnN0YW5jZSkgLT4gY2hhcioqIHsKKyAgICAgICAgYXV0byogY2hlY2tlciA9IHN0YXRpY19jYXN0
PExlYWtDaGVja2VyKj4oZ19vYmplY3RfZ2V0X2RhdGEoR19PQkpFQ1QoanNjQ2xhc3MpLCAibGVh
ay1jaGVja2VyIikpOworICAgICAgICBjaGVja2VyLT53YXRjaChjb250ZXh0KTsKKworICAgICAg
ICBhdXRvKiBmb28gPSBzdGF0aWNfY2FzdDxGb28qPihpbnN0YW5jZSk7CisgICAgICAgIEdSZWZQ
dHI8R1B0ckFycmF5PiBwcm9wZXJ0aWVzID0gYWRvcHRHUmVmKGdfcHRyX2FycmF5X25ld193aXRo
X2ZyZWVfZnVuYyhnX2ZyZWUpKTsKKyAgICAgICAgVmVjdG9yPENTdHJpbmc+IG5hbWVzID0gY29w
eVRvVmVjdG9yKGZvby0+cHJvcGVydGllcy5rZXlzKCkpOworICAgICAgICBzdGQ6OnNvcnQobmFt
ZXMuYmVnaW4oKSwgbmFtZXMuZW5kKCkpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG5hbWUg
OiBuYW1lcykgeworICAgICAgICAgICAgaWYgKGdfc3RyX2hhc19wcmVmaXgobmFtZS5kYXRhKCks
ICJwcm9wX2VudW1fIikpCisgICAgICAgICAgICAgICAgZ19wdHJfYXJyYXlfYWRkKHByb3BlcnRp
ZXMuZ2V0KCksIGdfc3RyZHVwKG5hbWUuZGF0YSgpKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KCFwcm9wZXJ0aWVzLT5sZW4pCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAg
ICBnX3B0cl9hcnJheV9hZGQocHJvcGVydGllcy5nZXQoKSwgbnVsbHB0cik7CisgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PGNoYXIqKj4oZ19wdHJfYXJyYXlfZnJlZShwcm9wZXJ0aWVz
LmxlYWtSZWYoKSwgRkFMU0UpKTsKKyAgICB9LAorICAgIC8vIHBhZGRpbmcKKyAgICBudWxscHRy
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyCit9OworCiBzdGF0aWMgdm9pZCB0ZXN0SlNDQ2xh
c3MoKQogewogICAgIHsKQEAgLTEwNDgsNyArMTE1MSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RKU0ND
bGFzcygpCiAgICAgICAgIGNoZWNrZXIud2F0Y2goY29udGV4dC5nZXQoKSk7CiAgICAgICAgIEV4
Y2VwdGlvbkhhbmRsZXIgZXhjZXB0aW9uSGFuZGxlcihjb250ZXh0LmdldCgpKTsKIAotICAgICAg
ICBKU0NDbGFzcyoganNjQ2xhc3MgPSBqc2NfY29udGV4dF9yZWdpc3Rlcl9jbGFzcyhjb250ZXh0
LmdldCgpLCAiRm9vIiwgbnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4o
Zm9vRnJlZSkpOworICAgICAgICBKU0NDbGFzcyoganNjQ2xhc3MgPSBqc2NfY29udGV4dF9yZWdp
c3Rlcl9jbGFzcyhjb250ZXh0LmdldCgpLCAiRm9vIiwgbnVsbHB0ciwgbnVsbHB0ciwgcmVpbnRl
cnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oZm9vRnJlZSkpOwogICAgICAgICBjaGVja2VyLndh
dGNoKGpzY0NsYXNzKTsKICAgICAgICAgZ19hc3NlcnRfZmFsc2UoanNjX2NsYXNzX2dldF9wYXJl
bnQoanNjQ2xhc3MpKTsKIApAQCAtMTEzOSw3ICsxMjQyLDcgQEAgc3RhdGljIHZvaWQgdGVzdEpT
Q0NsYXNzKCkKICAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNfbnVtYmVyKHZhbHVl
LmdldCgpKSk7CiAgICAgICAgIGdfYXNzZXJ0X2NtcGludChqc2NfdmFsdWVfdG9faW50MzIodmFs
dWUuZ2V0KCkpLCA9PSwgNTIpOwogCi0gICAgICAgIEpTQ0NsYXNzKiBvdGhlckNsYXNzID0ganNj
X2NvbnRleHRfcmVnaXN0ZXJfY2xhc3MoY29udGV4dC5nZXQoKSwgIkJheiIsIG51bGxwdHIsIGdf
ZnJlZSk7CisgICAgICAgIEpTQ0NsYXNzKiBvdGhlckNsYXNzID0ganNjX2NvbnRleHRfcmVnaXN0
ZXJfY2xhc3MoY29udGV4dC5nZXQoKSwgIkJheiIsIG51bGxwdHIsIG51bGxwdHIsIGdfZnJlZSk7
CiAgICAgICAgIGNoZWNrZXIud2F0Y2gob3RoZXJDbGFzcyk7CiAgICAgICAgIGdfYXNzZXJ0X2Zh
bHNlKGpzY19jbGFzc19nZXRfcGFyZW50KG90aGVyQ2xhc3MpKTsKIApAQCAtMTE2NCw3ICsxMjY3
LDcgQEAgc3RhdGljIHZvaWQgdGVzdEpTQ0NsYXNzKCkKICAgICAgICAgY2hlY2tlci53YXRjaChj
b250ZXh0LmdldCgpKTsKICAgICAgICAgRXhjZXB0aW9uSGFuZGxlciBleGNlcHRpb25IYW5kbGVy
KGNvbnRleHQuZ2V0KCkpOwogCi0gICAgICAgIEpTQ0NsYXNzKiBqc2NDbGFzcyA9IGpzY19jb250
ZXh0X3JlZ2lzdGVyX2NsYXNzKGNvbnRleHQuZ2V0KCksICJGb28iLCBudWxscHRyLCByZWludGVy
cHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5Pihmb29GcmVlKSk7CisgICAgICAgIEpTQ0NsYXNzKiBq
c2NDbGFzcyA9IGpzY19jb250ZXh0X3JlZ2lzdGVyX2NsYXNzKGNvbnRleHQuZ2V0KCksICJGb28i
LCBudWxscHRyLCBudWxscHRyLCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5Pihmb29G
cmVlKSk7CiAgICAgICAgIGNoZWNrZXIud2F0Y2goanNjQ2xhc3MpOwogCiAgICAgICAgIEdSZWZQ
dHI8SlNDVmFsdWU+IGNvbnN0cnVjdG9yID0gYWRvcHRHUmVmKGpzY19jbGFzc19hZGRfY29uc3Ry
dWN0b3IoanNjQ2xhc3MsIG51bGxwdHIsIEdfQ0FMTEJBQ0soZm9vQ3JlYXRlKSwgbnVsbHB0ciwg
bnVsbHB0ciwgR19UWVBFX1BPSU5URVIsIDAsIEdfVFlQRV9OT05FKSk7CkBAIC0xMjA1LDcgKzEz
MDgsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0SlNDQ2xhc3MoKQogICAgICAgICBjaGVja2VyLndhdGNo
KGNvbnRleHQuZ2V0KCkpOwogICAgICAgICBFeGNlcHRpb25IYW5kbGVyIGV4Y2VwdGlvbkhhbmRs
ZXIoY29udGV4dC5nZXQoKSk7CiAKLSAgICAgICAgSlNDQ2xhc3MqIGpzY0NsYXNzID0ganNjX2Nv
bnRleHRfcmVnaXN0ZXJfY2xhc3MoY29udGV4dC5nZXQoKSwgIkZvbyIsIG51bGxwdHIsIHJlaW50
ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGZvb0ZyZWUpKTsKKyAgICAgICAgSlNDQ2xhc3Mq
IGpzY0NsYXNzID0ganNjX2NvbnRleHRfcmVnaXN0ZXJfY2xhc3MoY29udGV4dC5nZXQoKSwgIkZv
byIsIG51bGxwdHIsIG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGZv
b0ZyZWUpKTsKICAgICAgICAgY2hlY2tlci53YXRjaChqc2NDbGFzcyk7CiAKICAgICAgICAgR1Jl
ZlB0cjxKU0NWYWx1ZT4gY29uc3RydWN0b3IgPSBhZG9wdEdSZWYoanNjX2NsYXNzX2FkZF9jb25z
dHJ1Y3Rvcihqc2NDbGFzcywgbnVsbHB0ciwgR19DQUxMQkFDSyhmb29DcmVhdGUpLCBudWxscHRy
LCBudWxscHRyLCBHX1RZUEVfUE9JTlRFUiwgMCwgR19UWVBFX05PTkUpKTsKQEAgLTEyNDAsNyAr
MTM0Myw3IEBAIHN0YXRpYyB2b2lkIHRlc3RKU0NDbGFzcygpCiAgICAgICAgIGdfYXNzZXJ0X3Ry
dWUoanNjX3ZhbHVlX2lzX251bWJlcihyZXN1bHQuZ2V0KCkpKTsKICAgICAgICAgZ19hc3NlcnRf
Y21waW50KGpzY192YWx1ZV90b19pbnQzMihyZXN1bHQuZ2V0KCkpLCA9PSwgNDIpOwogCi0gICAg
ICAgIEpTQ0NsYXNzKiBiYXpDbGFzcyA9IGpzY19jb250ZXh0X3JlZ2lzdGVyX2NsYXNzKGNvbnRl
eHQuZ2V0KCksICJCYXoiLCBudWxscHRyLCBnX2ZyZWUpOworICAgICAgICBKU0NDbGFzcyogYmF6
Q2xhc3MgPSBqc2NfY29udGV4dF9yZWdpc3Rlcl9jbGFzcyhjb250ZXh0LmdldCgpLCAiQmF6Iiwg
bnVsbHB0ciwgbnVsbHB0ciwgZ19mcmVlKTsKICAgICAgICAgY2hlY2tlci53YXRjaChiYXpDbGFz
cyk7CiAKICAgICAgICAgR1JlZlB0cjxKU0NWYWx1ZT4gY29uc3RydWN0b3IyID0gYWRvcHRHUmVm
KGpzY19jbGFzc19hZGRfY29uc3RydWN0b3IoYmF6Q2xhc3MsIG51bGxwdHIsIEdfQ0FMTEJBQ0so
YmF6Q3JlYXRlKSwgbnVsbHB0ciwgbnVsbHB0ciwgR19UWVBFX1BPSU5URVIsIDAsIEdfVFlQRV9O
T05FKSk7CkBAIC0xMjg1LDcgKzEzODgsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0SlNDQ2xhc3MoKQog
ICAgICAgICBjaGVja2VyLndhdGNoKGNvbnRleHQuZ2V0KCkpOwogICAgICAgICBFeGNlcHRpb25I
YW5kbGVyIGV4Y2VwdGlvbkhhbmRsZXIoY29udGV4dC5nZXQoKSk7CiAKLSAgICAgICAgSlNDQ2xh
c3MqIGpzY0NsYXNzID0ganNjX2NvbnRleHRfcmVnaXN0ZXJfY2xhc3MoY29udGV4dC5nZXQoKSwg
IkZvbyIsIG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGZvb0ZyZWUp
KTsKKyAgICAgICAgSlNDQ2xhc3MqIGpzY0NsYXNzID0ganNjX2NvbnRleHRfcmVnaXN0ZXJfY2xh
c3MoY29udGV4dC5nZXQoKSwgIkZvbyIsIG51bGxwdHIsIG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nh
c3Q8R0Rlc3Ryb3lOb3RpZnk+KGZvb0ZyZWUpKTsKICAgICAgICAgY2hlY2tlci53YXRjaChqc2ND
bGFzcyk7CiAKICAgICAgICAgR1JlZlB0cjxKU0NWYWx1ZT4gY29uc3RydWN0b3IgPSBhZG9wdEdS
ZWYoanNjX2NsYXNzX2FkZF9jb25zdHJ1Y3Rvcihqc2NDbGFzcywgbnVsbHB0ciwgR19DQUxMQkFD
Syhmb29DcmVhdGUpLCBudWxscHRyLCBudWxscHRyLCBHX1RZUEVfUE9JTlRFUiwgMCwgR19UWVBF
X05PTkUpKTsKQEAgLTEzMjcsNyArMTQzMCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RKU0NDbGFzcygp
CiAgICAgICAgIGNoZWNrZXIud2F0Y2goY29udGV4dC5nZXQoKSk7CiAgICAgICAgIEV4Y2VwdGlv
bkhhbmRsZXIgZXhjZXB0aW9uSGFuZGxlcihjb250ZXh0LmdldCgpKTsKIAotICAgICAgICBKU0ND
bGFzcyoganNjQ2xhc3MgPSBqc2NfY29udGV4dF9yZWdpc3Rlcl9jbGFzcyhjb250ZXh0LmdldCgp
LCAiRm9vIiwgbnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oZm9vRnJl
ZSkpOworICAgICAgICBKU0NDbGFzcyoganNjQ2xhc3MgPSBqc2NfY29udGV4dF9yZWdpc3Rlcl9j
bGFzcyhjb250ZXh0LmdldCgpLCAiRm9vIiwgbnVsbHB0ciwgbnVsbHB0ciwgcmVpbnRlcnByZXRf
Y2FzdDxHRGVzdHJveU5vdGlmeT4oZm9vRnJlZSkpOwogICAgICAgICBjaGVja2VyLndhdGNoKGpz
Y0NsYXNzKTsKICAgICAgICAgZ19hc3NlcnRfZmFsc2UoanNjX2NsYXNzX2dldF9wYXJlbnQoanNj
Q2xhc3MpKTsKIApAQCAtMTM2Niw3ICsxNDY5LDcgQEAgc3RhdGljIHZvaWQgdGVzdEpTQ0NsYXNz
KCkKICAgICAgICAgY2hlY2tlci53YXRjaChjb250ZXh0LmdldCgpKTsKICAgICAgICAgRXhjZXB0
aW9uSGFuZGxlciBleGNlcHRpb25IYW5kbGVyKGNvbnRleHQuZ2V0KCkpOwogCi0gICAgICAgIEpT
Q0NsYXNzKiBqc2NDbGFzcyA9IGpzY19jb250ZXh0X3JlZ2lzdGVyX2NsYXNzKGNvbnRleHQuZ2V0
KCksICJGb28iLCBudWxscHRyLCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5Pihmb29G
cmVlKSk7CisgICAgICAgIEpTQ0NsYXNzKiBqc2NDbGFzcyA9IGpzY19jb250ZXh0X3JlZ2lzdGVy
X2NsYXNzKGNvbnRleHQuZ2V0KCksICJGb28iLCBudWxscHRyLCBudWxscHRyLCByZWludGVycHJl
dF9jYXN0PEdEZXN0cm95Tm90aWZ5Pihmb29GcmVlKSk7CiAgICAgICAgIGNoZWNrZXIud2F0Y2go
anNjQ2xhc3MpOwogICAgICAgICBnX2Fzc2VydF9mYWxzZShqc2NfY2xhc3NfZ2V0X3BhcmVudChq
c2NDbGFzcykpOwogCkBAIC0xMzk0LDcgKzE0OTcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0SlNDQ2xh
c3MoKQogCiAgICAgICAgIGpzY19jb250ZXh0X3NldF92YWx1ZShjb250ZXh0LmdldCgpLCAid2si
LCBqc05hbWVzcGFjZS5nZXQoKSk7CiAKLSAgICAgICAgSlNDQ2xhc3MqIGpzY0NsYXNzID0ganNj
X2NvbnRleHRfcmVnaXN0ZXJfY2xhc3MoY29udGV4dC5nZXQoKSwgIkZvbyIsIG51bGxwdHIsIHJl
aW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGZvb0ZyZWUpKTsKKyAgICAgICAgSlNDQ2xh
c3MqIGpzY0NsYXNzID0ganNjX2NvbnRleHRfcmVnaXN0ZXJfY2xhc3MoY29udGV4dC5nZXQoKSwg
IkZvbyIsIG51bGxwdHIsIG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+
KGZvb0ZyZWUpKTsKICAgICAgICAgY2hlY2tlci53YXRjaChqc2NDbGFzcyk7CiAKICAgICAgICAg
R1JlZlB0cjxKU0NWYWx1ZT4gY29uc3RydWN0b3IgPSBhZG9wdEdSZWYoanNjX2NsYXNzX2FkZF9j
b25zdHJ1Y3Rvcihqc2NDbGFzcywgbnVsbHB0ciwgR19DQUxMQkFDSyhmb29DcmVhdGUpLCBudWxs
cHRyLCBudWxscHRyLCBHX1RZUEVfUE9JTlRFUiwgMCwgR19UWVBFX05PTkUpKTsKQEAgLTE0NzEs
NiArMTU3NCwxODAgQEAgc3RhdGljIHZvaWQgdGVzdEpTQ0NsYXNzKCkKICAgICAgICAgZ19hc3Nl
cnRfdHJ1ZShqc2NfdmFsdWVfaXNfbnVtYmVyKHJlc3VsdC5nZXQoKSkpOwogICAgICAgICBnX2Fz
c2VydF9jbXBpbnQoanNjX3ZhbHVlX3RvX2ludDMyKHJlc3VsdC5nZXQoKSksID09LCA2Mik7CiAg
ICAgfQorCisgICAgeworICAgICAgICBMZWFrQ2hlY2tlciBjaGVja2VyOworICAgICAgICBHUmVm
UHRyPEpTQ0NvbnRleHQ+IGNvbnRleHQgPSBhZG9wdEdSZWYoanNjX2NvbnRleHRfbmV3KCkpOwor
ICAgICAgICBjaGVja2VyLndhdGNoKGNvbnRleHQuZ2V0KCkpOworICAgICAgICBFeGNlcHRpb25I
YW5kbGVyIGV4Y2VwdGlvbkhhbmRsZXIoY29udGV4dC5nZXQoKSk7CisKKyAgICAgICAgSlNDQ2xh
c3MqIGpzY0NsYXNzID0ganNjX2NvbnRleHRfcmVnaXN0ZXJfY2xhc3MoY29udGV4dC5nZXQoKSwg
IkZvbyIsIG51bGxwdHIsICZmb29WVGFibGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3Rp
Znk+KGZvb0ZyZWUpKTsKKyAgICAgICAgY2hlY2tlci53YXRjaChqc2NDbGFzcyk7CisgICAgICAg
IGdfb2JqZWN0X3NldF9kYXRhKEdfT0JKRUNUKGpzY0NsYXNzKSwgImxlYWstY2hlY2tlciIsICZj
aGVja2VyKTsKKworICAgICAgICBHUmVmUHRyPEpTQ1ZhbHVlPiBjb25zdHJ1Y3RvciA9IGFkb3B0
R1JlZihqc2NfY2xhc3NfYWRkX2NvbnN0cnVjdG9yKGpzY0NsYXNzLCBudWxscHRyLCBHX0NBTExC
QUNLKGZvb0NyZWF0ZSksIG51bGxwdHIsIG51bGxwdHIsIEdfVFlQRV9QT0lOVEVSLCAwLCBHX1RZ
UEVfTk9ORSkpOworICAgICAgICBjaGVja2VyLndhdGNoKGNvbnN0cnVjdG9yLmdldCgpKTsKKyAg
ICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNfY29uc3RydWN0b3IoY29uc3RydWN0b3Iu
Z2V0KCkpKTsKKyAgICAgICAganNjX2NvbnRleHRfc2V0X3ZhbHVlKGNvbnRleHQuZ2V0KCksIGpz
Y19jbGFzc19nZXRfbmFtZShqc2NDbGFzcyksIGNvbnN0cnVjdG9yLmdldCgpKTsKKyAgICAgICAg
anNjX2NsYXNzX2FkZF9wcm9wZXJ0eShqc2NDbGFzcywgImZvbyIsIEdfVFlQRV9JTlQsIEdfQ0FM
TEJBQ0soZ2V0Rm9vKSwgR19DQUxMQkFDSyhzZXRGb28pLCBudWxscHRyLCBudWxscHRyKTsKKwor
ICAgICAgICBHUmVmUHRyPEpTQ1ZhbHVlPiBmb28gPSBhZG9wdEdSZWYoanNjX2NvbnRleHRfZXZh
bHVhdGUoY29udGV4dC5nZXQoKSwgImYgPSBuZXcgRm9vKCk7IiwgLTEpKTsKKyAgICAgICAgY2hl
Y2tlci53YXRjaChmb28uZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKGpzY192YWx1ZV9p
c19vYmplY3QoZm9vLmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoanNjX3ZhbHVlX29i
amVjdF9oYXNfcHJvcGVydHkoZm9vLmdldCgpLCAiZm9vIikpOworCisgICAgICAgIGdfYXNzZXJ0
X3RydWUoanNjX3ZhbHVlX29iamVjdF9oYXNfcHJvcGVydHkoZm9vLmdldCgpLCAicHJvcF93aGF0
ZXZlciIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2UoanNjX3ZhbHVlX29iamVjdF9oYXNfcHJv
cGVydHkoZm9vLmdldCgpLCAid2hhdGV2ZXJfcHJvcCIpKTsKKworICAgICAgICBHVW5pcXVlUHRy
PGNoYXIqPiBwcm9wZXJ0aWVzKGpzY192YWx1ZV9vYmplY3RfZW51bWVyYXRlX3Byb3BlcnRpZXMo
Zm9vLmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X251bGwocHJvcGVydGllcy5nZXQoKSk7CisK
KyAgICAgICAgR1JlZlB0cjxKU0NWYWx1ZT4gcmVzdWx0ID0gYWRvcHRHUmVmKGpzY19jb250ZXh0
X2V2YWx1YXRlKGNvbnRleHQuZ2V0KCksICJmLnByb3BfMSIsIC0xKSk7CisgICAgICAgIGNoZWNr
ZXIud2F0Y2gocmVzdWx0LmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVf
aXNfbnVtYmVyKHJlc3VsdC5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF9jbXB1aW50KGpzY192
YWx1ZV90b19pbnQzMihyZXN1bHQuZ2V0KCkpLCA9PSwgMCk7CisKKyAgICAgICAgR1JlZlB0cjxK
U0NWYWx1ZT4gdmFsdWUgPSBhZG9wdEdSZWYoanNjX3ZhbHVlX29iamVjdF9nZXRfcHJvcGVydHko
Zm9vLmdldCgpLCAicHJvcF8xIikpOworICAgICAgICBjaGVja2VyLndhdGNoKHZhbHVlLmdldCgp
KTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh2YWx1ZS5nZXQoKSA9PSByZXN1bHQuZ2V0KCkpOwor
CisgICAgICAgIHJlc3VsdCA9IGFkb3B0R1JlZihqc2NfY29udGV4dF9ldmFsdWF0ZShjb250ZXh0
LmdldCgpLCAiZi5mb28iLCAtMSkpOworICAgICAgICBjaGVja2VyLndhdGNoKHJlc3VsdC5nZXQo
KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoanNjX3ZhbHVlX2lzX251bWJlcihyZXN1bHQuZ2V0
KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludChqc2NfdmFsdWVfdG9faW50MzIocmVzdWx0
LmdldCgpKSwgPT0sIDApOworCisgICAgICAgIHZhbHVlID0gYWRvcHRHUmVmKGpzY192YWx1ZV9v
YmplY3RfZ2V0X3Byb3BlcnR5KGZvby5nZXQoKSwgImZvbyIpKTsKKyAgICAgICAgY2hlY2tlci53
YXRjaCh2YWx1ZS5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUodmFsdWUuZ2V0KCkgPT0g
cmVzdWx0LmdldCgpKTsKKworICAgICAgICByZXN1bHQgPSBhZG9wdEdSZWYoanNjX2NvbnRleHRf
ZXZhbHVhdGUoY29udGV4dC5nZXQoKSwgIidmb28nIGluIGYuX19wcm90b19fIiwgLTEpKTsKKyAg
ICAgICAgY2hlY2tlci53YXRjaChyZXN1bHQuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF90cnVl
KGpzY192YWx1ZV9pc19ib29sZWFuKHJlc3VsdC5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90
cnVlKGpzY192YWx1ZV90b19ib29sZWFuKHJlc3VsdC5nZXQoKSkpOworCisgICAgICAgIHJlc3Vs
dCA9IGFkb3B0R1JlZihqc2NfY29udGV4dF9ldmFsdWF0ZShjb250ZXh0LmdldCgpLCAiJ2Zvbycg
aW4gZiIsIC0xKSk7CisgICAgICAgIGNoZWNrZXIud2F0Y2gocmVzdWx0LmdldCgpKTsKKyAgICAg
ICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNfYm9vbGVhbihyZXN1bHQuZ2V0KCkpKTsKKyAg
ICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfdG9fYm9vbGVhbihyZXN1bHQuZ2V0KCkpKTsK
KworICAgICAgICByZXN1bHQgPSBhZG9wdEdSZWYoanNjX2NvbnRleHRfZXZhbHVhdGUoY29udGV4
dC5nZXQoKSwgIidwcm9wXzEnIGluIGYuX19wcm90b19fIiwgLTEpKTsKKyAgICAgICAgY2hlY2tl
ci53YXRjaChyZXN1bHQuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKGpzY192YWx1ZV9p
c19ib29sZWFuKHJlc3VsdC5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF9mYWxzZShqc2NfdmFs
dWVfdG9fYm9vbGVhbihyZXN1bHQuZ2V0KCkpKTsKKworICAgICAgICByZXN1bHQgPSBhZG9wdEdS
ZWYoanNjX2NvbnRleHRfZXZhbHVhdGUoY29udGV4dC5nZXQoKSwgIidwcm9wXzEnIGluIGYiLCAt
MSkpOworICAgICAgICBjaGVja2VyLndhdGNoKHJlc3VsdC5nZXQoKSk7CisgICAgICAgIGdfYXNz
ZXJ0X3RydWUoanNjX3ZhbHVlX2lzX2Jvb2xlYW4ocmVzdWx0LmdldCgpKSk7CisgICAgICAgIGdf
YXNzZXJ0X3RydWUoanNjX3ZhbHVlX3RvX2Jvb2xlYW4ocmVzdWx0LmdldCgpKSk7CisKKyAgICAg
ICAgcmVzdWx0ID0gYWRvcHRHUmVmKGpzY19jb250ZXh0X2V2YWx1YXRlKGNvbnRleHQuZ2V0KCks
ICJmLnByb3BfMSA9IDI1IiwgLTEpKTsKKyAgICAgICAgY2hlY2tlci53YXRjaChyZXN1bHQuZ2V0
KCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKGpzY192YWx1ZV9pc19udW1iZXIocmVzdWx0Lmdl
dCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoanNjX3ZhbHVlX3RvX2ludDMyKHJlc3Vs
dC5nZXQoKSksID09LCAyNSk7CisKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfb2Jq
ZWN0X2RlbGV0ZV9wcm9wZXJ0eShmb28uZ2V0KCksICJwcm9wXzEiKSk7CisgICAgICAgIGdfYXNz
ZXJ0X3RydWUoanNjX3ZhbHVlX29iamVjdF9oYXNfcHJvcGVydHkoZm9vLmdldCgpLCAicHJvcF8x
IikpOworICAgICAgICB2YWx1ZSA9IGFkb3B0R1JlZihqc2NfdmFsdWVfb2JqZWN0X2dldF9wcm9w
ZXJ0eShmb28uZ2V0KCksICJwcm9wXzEiKSk7CisgICAgICAgIGNoZWNrZXIud2F0Y2godmFsdWUu
Z2V0KCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKGpzY192YWx1ZV9pc19udW1iZXIodmFsdWUu
Z2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludChqc2NfdmFsdWVfdG9faW50MzIodmFs
dWUuZ2V0KCkpLCA9PSwgMCk7CisKKyAgICAgICAgcmVzdWx0ID0gYWRvcHRHUmVmKGpzY19jb250
ZXh0X2V2YWx1YXRlKGNvbnRleHQuZ2V0KCksICJmLnByb3BfY2FudF9kZWxldGUgPSAxMjUiLCAt
MSkpOworICAgICAgICBjaGVja2VyLndhdGNoKHJlc3VsdC5nZXQoKSk7CisgICAgICAgIGdfYXNz
ZXJ0X3RydWUoanNjX3ZhbHVlX2lzX251bWJlcihyZXN1bHQuZ2V0KCkpKTsKKyAgICAgICAgZ19h
c3NlcnRfY21wdWludChqc2NfdmFsdWVfdG9faW50MzIocmVzdWx0LmdldCgpKSwgPT0sIDEyNSk7
CisgICAgICAgIGpzY192YWx1ZV9vYmplY3RfZGVsZXRlX3Byb3BlcnR5KGZvby5nZXQoKSwgInBy
b3BfY2FudF9kZWxldGUiKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfb2JqZWN0
X2hhc19wcm9wZXJ0eShmb28uZ2V0KCksICJwcm9wX2NhbnRfZGVsZXRlIikpOworICAgICAgICB2
YWx1ZSA9IGFkb3B0R1JlZihqc2NfdmFsdWVfb2JqZWN0X2dldF9wcm9wZXJ0eShmb28uZ2V0KCks
ICJwcm9wX2NhbnRfZGVsZXRlIikpOworICAgICAgICBjaGVja2VyLndhdGNoKHZhbHVlLmdldCgp
KTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNfbnVtYmVyKHZhbHVlLmdldCgp
KSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoanNjX3ZhbHVlX3RvX2ludDMyKHZhbHVlLmdl
dCgpKSwgPT0sIDEyNSk7CisKKyAgICAgICAgdmFsdWUgPSBhZG9wdEdSZWYoanNjX3ZhbHVlX25l
d19udW1iZXIoY29udGV4dC5nZXQoKSwgNDIpKTsKKyAgICAgICAgY2hlY2tlci53YXRjaCh2YWx1
ZS5nZXQoKSk7CisgICAgICAgIGpzY192YWx1ZV9vYmplY3Rfc2V0X3Byb3BlcnR5KGZvby5nZXQo
KSwgInByb3BfMSIsIHZhbHVlLmdldCgpKTsKKyAgICAgICAgcmVzdWx0ID0gYWRvcHRHUmVmKGpz
Y19jb250ZXh0X2V2YWx1YXRlKGNvbnRleHQuZ2V0KCksICJmLnByb3BfMSIsIC0xKSk7CisgICAg
ICAgIGNoZWNrZXIud2F0Y2gocmVzdWx0LmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh2
YWx1ZS5nZXQoKSA9PSByZXN1bHQuZ2V0KCkpOworCisgICAgICAgIHJlc3VsdCA9IGFkb3B0R1Jl
Zihqc2NfY29udGV4dF9ldmFsdWF0ZShjb250ZXh0LmdldCgpLCAiZi5wcm9wXzIgPSAzNSIsIC0x
KSk7CisgICAgICAgIGNoZWNrZXIud2F0Y2gocmVzdWx0LmdldCgpKTsKKyAgICAgICAgZ19hc3Nl
cnRfdHJ1ZShqc2NfdmFsdWVfaXNfbnVtYmVyKHJlc3VsdC5nZXQoKSkpOworICAgICAgICBnX2Fz
c2VydF9jbXB1aW50KGpzY192YWx1ZV90b19pbnQzMihyZXN1bHQuZ2V0KCkpLCA9PSwgMzUpOwor
CisgICAgICAgIHJlc3VsdCA9IGFkb3B0R1JlZihqc2NfY29udGV4dF9ldmFsdWF0ZShjb250ZXh0
LmdldCgpLCAiJ3Byb3BfMicgaW4gZi5fX3Byb3RvX18iLCAtMSkpOworICAgICAgICBjaGVja2Vy
LndhdGNoKHJlc3VsdC5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoanNjX3ZhbHVlX2lz
X2Jvb2xlYW4ocmVzdWx0LmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKGpzY192YWx1
ZV90b19ib29sZWFuKHJlc3VsdC5nZXQoKSkpOworCisgICAgICAgIHJlc3VsdCA9IGFkb3B0R1Jl
Zihqc2NfY29udGV4dF9ldmFsdWF0ZShjb250ZXh0LmdldCgpLCAiJ3Byb3BfMicgaW4gZiIsIC0x
KSk7CisgICAgICAgIGNoZWNrZXIud2F0Y2gocmVzdWx0LmdldCgpKTsKKyAgICAgICAgZ19hc3Nl
cnRfdHJ1ZShqc2NfdmFsdWVfaXNfYm9vbGVhbihyZXN1bHQuZ2V0KCkpKTsKKyAgICAgICAgZ19h
c3NlcnRfdHJ1ZShqc2NfdmFsdWVfdG9fYm9vbGVhbihyZXN1bHQuZ2V0KCkpKTsKKworICAgICAg
ICByZXN1bHQgPSBhZG9wdEdSZWYoanNjX2NvbnRleHRfZXZhbHVhdGUoY29udGV4dC5nZXQoKSwg
ImYucHJvcF9lbnVtXzEgPSAyNTAiLCAtMSkpOworICAgICAgICBjaGVja2VyLndhdGNoKHJlc3Vs
dC5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoanNjX3ZhbHVlX2lzX251bWJlcihyZXN1
bHQuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludChqc2NfdmFsdWVfdG9faW50MzIo
cmVzdWx0LmdldCgpKSwgPT0sIDI1MCk7CisgICAgICAgIHJlc3VsdCA9IGFkb3B0R1JlZihqc2Nf
Y29udGV4dF9ldmFsdWF0ZShjb250ZXh0LmdldCgpLCAiZi5wcm9wX2VudW1fMiA9IDQ1MCIsIC0x
KSk7CisgICAgICAgIGNoZWNrZXIud2F0Y2gocmVzdWx0LmdldCgpKTsKKyAgICAgICAgZ19hc3Nl
cnRfdHJ1ZShqc2NfdmFsdWVfaXNfbnVtYmVyKHJlc3VsdC5nZXQoKSkpOworICAgICAgICBnX2Fz
c2VydF9jbXB1aW50KGpzY192YWx1ZV90b19pbnQzMihyZXN1bHQuZ2V0KCkpLCA9PSwgNDUwKTsK
KworICAgICAgICBwcm9wZXJ0aWVzLnJlc2V0KGpzY192YWx1ZV9vYmplY3RfZW51bWVyYXRlX3By
b3BlcnRpZXMoZm9vLmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoZ19zdHJ2X2xl
bmd0aChwcm9wZXJ0aWVzLmdldCgpKSwgPT0sIDIpOworICAgICAgICBnX2Fzc2VydF9jbXBzdHIo
cHJvcGVydGllcy5nZXQoKVswXSwgPT0sICJwcm9wX2VudW1fMSIpOworICAgICAgICBnX2Fzc2Vy
dF9jbXBzdHIocHJvcGVydGllcy5nZXQoKVsxXSwgPT0sICJwcm9wX2VudW1fMiIpOworICAgICAg
ICBnX2Fzc2VydF9udWxsKHByb3BlcnRpZXMuZ2V0KClbMl0pOworCisgICAgICAgIGdfYXNzZXJ0
X251bGwoanNjX2NvbnRleHRfZ2V0X2V4Y2VwdGlvbihjb250ZXh0LmdldCgpKSk7CisgICAgICAg
IGJvb2wgZGlkVGhyb3cgPSBmYWxzZTsKKyAgICAgICAgZ19hc3NlcnRfdGhyb3dfYmVnaW4oZXhj
ZXB0aW9uSGFuZGxlciwgZGlkVGhyb3cpOworICAgICAgICByZXN1bHQgPSBhZG9wdEdSZWYoanNj
X2NvbnRleHRfZXZhbHVhdGUoY29udGV4dC5nZXQoKSwgImYucHJvcF90aHJvd19vbl9nZXQiLCAt
MSkpOworICAgICAgICBjaGVja2VyLndhdGNoKHJlc3VsdC5nZXQoKSk7CisgICAgICAgIGdfYXNz
ZXJ0X3RydWUoanNjX3ZhbHVlX2lzX3VuZGVmaW5lZChyZXN1bHQuZ2V0KCkpKTsKKyAgICAgICAg
Z19hc3NlcnRfZGlkX3Rocm93KGV4Y2VwdGlvbkhhbmRsZXIsIGRpZFRocm93KTsKKyAgICAgICAg
Z19hc3NlcnRfbnVsbChqc2NfY29udGV4dF9nZXRfZXhjZXB0aW9uKGNvbnRleHQuZ2V0KCkpKTsK
KworICAgICAgICBkaWRUaHJvdyA9IGZhbHNlOworICAgICAgICBnX2Fzc2VydF90aHJvd19iZWdp
bihleGNlcHRpb25IYW5kbGVyLCBkaWRUaHJvdyk7CisgICAgICAgIHJlc3VsdCA9IGFkb3B0R1Jl
Zihqc2NfY29udGV4dF9ldmFsdWF0ZShjb250ZXh0LmdldCgpLCAiZi5wcm9wXzMgPSAnbm90IGEg
bnVtYmVyJyIsIC0xKSk7CisgICAgICAgIGNoZWNrZXIud2F0Y2gocmVzdWx0LmdldCgpKTsKKyAg
ICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNfdW5kZWZpbmVkKHJlc3VsdC5nZXQoKSkp
OworICAgICAgICBnX2Fzc2VydF9kaWRfdGhyb3coZXhjZXB0aW9uSGFuZGxlciwgZGlkVGhyb3cp
OworICAgICAgICBnX2Fzc2VydF9udWxsKGpzY19jb250ZXh0X2dldF9leGNlcHRpb24oY29udGV4
dC5nZXQoKSkpOworCisgICAgICAgIGRpZFRocm93ID0gZmFsc2U7CisgICAgICAgIGdfYXNzZXJ0
X3Rocm93X2JlZ2luKGV4Y2VwdGlvbkhhbmRsZXIsIGRpZFRocm93KTsKKyAgICAgICAganNjX3Zh
bHVlX29iamVjdF9kZWxldGVfcHJvcGVydHkoZm9vLmdldCgpLCAicHJvcF90aHJvd19vbl9kZWxl
dGUiKTsKKyAgICAgICAgZ19hc3NlcnRfZGlkX3Rocm93KGV4Y2VwdGlvbkhhbmRsZXIsIGRpZFRo
cm93KTsKKyAgICAgICAgZ19hc3NlcnRfbnVsbChqc2NfY29udGV4dF9nZXRfZXhjZXB0aW9uKGNv
bnRleHQuZ2V0KCkpKTsKKworICAgICAgICBqc2NfY29udGV4dF90aHJvdyhjb250ZXh0LmdldCgp
LCAiRmFrZSBleGNlcHRpb24iKTsKKyAgICAgICAgR1JlZlB0cjxKU0NFeGNlcHRpb24+IHByZXZp
b3VzRXhjZXB0aW9uID0ganNjX2NvbnRleHRfZ2V0X2V4Y2VwdGlvbihjb250ZXh0LmdldCgpKTsK
KyAgICAgICAgY2hlY2tlci53YXRjaChwcmV2aW91c0V4Y2VwdGlvbi5nZXQoKSk7CisgICAgICAg
IGRpZFRocm93ID0gZmFsc2U7CisgICAgICAgIGdfYXNzZXJ0X3Rocm93X2JlZ2luKGV4Y2VwdGlv
bkhhbmRsZXIsIGRpZFRocm93KTsKKyAgICAgICAgcmVzdWx0ID0gYWRvcHRHUmVmKGpzY19jb250
ZXh0X2V2YWx1YXRlKGNvbnRleHQuZ2V0KCksICJmLnByb3BfdGhyb3dfb25fZ2V0IiwgLTEpKTsK
KyAgICAgICAgY2hlY2tlci53YXRjaChyZXN1bHQuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF90
cnVlKGpzY192YWx1ZV9pc191bmRlZmluZWQocmVzdWx0LmdldCgpKSk7CisgICAgICAgIGdfYXNz
ZXJ0X2RpZF90aHJvdyhleGNlcHRpb25IYW5kbGVyLCBkaWRUaHJvdyk7CisgICAgICAgIGdfYXNz
ZXJ0X3RydWUoanNjX2NvbnRleHRfZ2V0X2V4Y2VwdGlvbihjb250ZXh0LmdldCgpKSA9PSBwcmV2
aW91c0V4Y2VwdGlvbi5nZXQoKSk7CisKKyAgICAgICAgZGlkVGhyb3cgPSBmYWxzZTsKKyAgICAg
ICAgZ19hc3NlcnRfdGhyb3dfYmVnaW4oZXhjZXB0aW9uSGFuZGxlciwgZGlkVGhyb3cpOworICAg
ICAgICByZXN1bHQgPSBhZG9wdEdSZWYoanNjX2NvbnRleHRfZXZhbHVhdGUoY29udGV4dC5nZXQo
KSwgImYucHJvcF8zID0gJ25vdCBhIG51bWJlciciLCAtMSkpOworICAgICAgICBjaGVja2VyLndh
dGNoKHJlc3VsdC5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoanNjX3ZhbHVlX2lzX3Vu
ZGVmaW5lZChyZXN1bHQuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfZGlkX3Rocm93KGV4Y2Vw
dGlvbkhhbmRsZXIsIGRpZFRocm93KTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfY29udGV4
dF9nZXRfZXhjZXB0aW9uKGNvbnRleHQuZ2V0KCkpID09IHByZXZpb3VzRXhjZXB0aW9uLmdldCgp
KTsKKworICAgICAgICBkaWRUaHJvdyA9IGZhbHNlOworICAgICAgICBnX2Fzc2VydF90aHJvd19i
ZWdpbihleGNlcHRpb25IYW5kbGVyLCBkaWRUaHJvdyk7CisgICAgICAgIGpzY192YWx1ZV9vYmpl
Y3RfZGVsZXRlX3Byb3BlcnR5KGZvby5nZXQoKSwgInByb3BfdGhyb3dfb25fZGVsZXRlIik7Cisg
ICAgICAgIGdfYXNzZXJ0X2RpZF90aHJvdyhleGNlcHRpb25IYW5kbGVyLCBkaWRUaHJvdyk7Cisg
ICAgICAgIGdfYXNzZXJ0X3RydWUoanNjX2NvbnRleHRfZ2V0X2V4Y2VwdGlvbihjb250ZXh0Lmdl
dCgpKSA9PSBwcmV2aW91c0V4Y2VwdGlvbi5nZXQoKSk7CisgICAgfQogfQogCiB0eXBlZGVmIHN0
cnVjdCB7CkBAIC0xNDk4LDYgKzE3NzUsMjggQEAgc3RhdGljIGludCBnZXRCYXIoQmFyKiBiYXIp
CiAgICAgcmV0dXJuIGJhci0+YmFyOwogfQogCitzdGF0aWMgSlNDQ2xhc3NWVGFibGUgYmFyVlRh
YmxlID0geworICAgIC8vIGdldF9wcm9wZXJ0eQorICAgIG51bGxwdHIsCisgICAgLy8gc2V0X3By
b3BlcnR5CisgICAgbnVsbHB0ciwKKyAgICAvLyBoYXNfcHJvcGVydHkKKyAgICBudWxscHRyLAor
ICAgIC8vIGRlbGV0ZV9wcm9wZXJ0eQorICAgIG51bGxwdHIsCisgICAgLy8gZW51bWVyYXRlX3By
b3BlcnRpZXMKKyAgICBbXShKU0NDbGFzcyoganNjQ2xhc3MsIEpTQ0NvbnRleHQqIGNvbnRleHQs
IGdwb2ludGVyIGluc3RhbmNlKSAtPiBjaGFyKiogeworICAgICAgICBhdXRvKiBjaGVja2VyID0g
c3RhdGljX2Nhc3Q8TGVha0NoZWNrZXIqPihnX29iamVjdF9nZXRfZGF0YShHX09CSkVDVChqc2ND
bGFzcyksICJsZWFrLWNoZWNrZXIiKSk7CisgICAgICAgIGNoZWNrZXItPndhdGNoKGNvbnRleHQp
OworCisgICAgICAgIGF1dG8qIHByb3BlcnRpZXMgPSBzdGF0aWNfY2FzdDxjaGFyKio+KGdfbWFs
bG9jMCgyICogc2l6ZW9mKGNoYXIqKSkpOworICAgICAgICBwcm9wZXJ0aWVzWzBdID0gZ19zdHJk
dXAoImJhciIpOworICAgICAgICByZXR1cm4gcHJvcGVydGllczsKKyAgICB9LAorICAgIC8vIHBh
ZGRpbmcKKyAgICBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyCit9OworCiBzdGF0
aWMgdm9pZCB0ZXN0SlNDUHJvdG90eXBlcygpCiB7CiAgICAgewpAQCAtMTUwNiw3ICsxODA1LDcg
QEAgc3RhdGljIHZvaWQgdGVzdEpTQ1Byb3RvdHlwZXMoKQogICAgICAgICBjaGVja2VyLndhdGNo
KGNvbnRleHQuZ2V0KCkpOwogICAgICAgICBFeGNlcHRpb25IYW5kbGVyIGV4Y2VwdGlvbkhhbmRs
ZXIoY29udGV4dC5nZXQoKSk7CiAKLSAgICAgICAgSlNDQ2xhc3MqIGZvb0NsYXNzID0ganNjX2Nv
bnRleHRfcmVnaXN0ZXJfY2xhc3MoY29udGV4dC5nZXQoKSwgIkZvbyIsIG51bGxwdHIsIHJlaW50
ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGZvb0ZyZWUpKTsKKyAgICAgICAgSlNDQ2xhc3Mq
IGZvb0NsYXNzID0ganNjX2NvbnRleHRfcmVnaXN0ZXJfY2xhc3MoY29udGV4dC5nZXQoKSwgIkZv
byIsIG51bGxwdHIsIG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGZv
b0ZyZWUpKTsKICAgICAgICAgY2hlY2tlci53YXRjaChmb29DbGFzcyk7CiAgICAgICAgIGdfYXNz
ZXJ0X2ZhbHNlKGpzY19jbGFzc19nZXRfcGFyZW50KGZvb0NsYXNzKSk7CiAgICAgICAgIEdSZWZQ
dHI8SlNDVmFsdWU+IGZvb0NvbnN0cnVjdG9yID0gYWRvcHRHUmVmKGpzY19jbGFzc19hZGRfY29u
c3RydWN0b3IoZm9vQ2xhc3MsIG51bGxwdHIsIEdfQ0FMTEJBQ0soZm9vQ3JlYXRlKSwgbnVsbHB0
ciwgbnVsbHB0ciwgR19UWVBFX1BPSU5URVIsIDAsIEdfVFlQRV9OT05FKSk7CkBAIC0xNTE2LDcg
KzE4MTUsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0SlNDUHJvdG90eXBlcygpCiAgICAgICAgIGpzY19j
bGFzc19hZGRfbWV0aG9kKGZvb0NsYXNzLCAibXVsdGlwbHkiLCBHX0NBTExCQUNLKG11bHRpcGx5
Rm9vKSwgbnVsbHB0ciwgbnVsbHB0ciwgR19UWVBFX05PTkUsIDEsIEdfVFlQRV9JTlQpOwogICAg
ICAgICBqc2NfY2xhc3NfYWRkX3Byb3BlcnR5KGZvb0NsYXNzLCAiZm9vIiwgR19UWVBFX0lOVCwg
R19DQUxMQkFDSyhnZXRGb28pLCBHX0NBTExCQUNLKHNldEZvbyksIG51bGxwdHIsIG51bGxwdHIp
OwogCi0gICAgICAgIEpTQ0NsYXNzKiBiYXJDbGFzcyA9IGpzY19jb250ZXh0X3JlZ2lzdGVyX2Ns
YXNzKGNvbnRleHQuZ2V0KCksICJCYXIiLCBmb29DbGFzcywgcmVpbnRlcnByZXRfY2FzdDxHRGVz
dHJveU5vdGlmeT4oYmFyRnJlZSkpOworICAgICAgICBKU0NDbGFzcyogYmFyQ2xhc3MgPSBqc2Nf
Y29udGV4dF9yZWdpc3Rlcl9jbGFzcyhjb250ZXh0LmdldCgpLCAiQmFyIiwgZm9vQ2xhc3MsIG51
bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGJhckZyZWUpKTsKICAgICAg
ICAgY2hlY2tlci53YXRjaChiYXJDbGFzcyk7CiAgICAgICAgIGdfYXNzZXJ0X3RydWUoanNjX2Ns
YXNzX2dldF9wYXJlbnQoYmFyQ2xhc3MpID09IGZvb0NsYXNzKTsKICAgICAgICAgR1JlZlB0cjxK
U0NWYWx1ZT4gYmFyQ29uc3RydWN0b3IgPSBhZG9wdEdSZWYoanNjX2NsYXNzX2FkZF9jb25zdHJ1
Y3RvcihiYXJDbGFzcywgbnVsbHB0ciwgR19DQUxMQkFDSyhiYXJDcmVhdGUpLCBudWxscHRyLCBu
dWxscHRyLCBHX1RZUEVfUE9JTlRFUiwgMCwgR19UWVBFX05PTkUpKTsKQEAgLTE1OTcsNiArMTg5
Niw5MCBAQCBzdGF0aWMgdm9pZCB0ZXN0SlNDUHJvdG90eXBlcygpCiAgICAgICAgIGdfYXNzZXJ0
X3RydWUoanNjX3ZhbHVlX2lzX251bWJlcih2YWx1ZS5nZXQoKSkpOwogICAgICAgICBnX2Fzc2Vy
dF9jbXBpbnQoanNjX3ZhbHVlX3RvX2ludDMyKHZhbHVlLmdldCgpKSwgPT0sIDg0KTsKICAgICB9
CisKKyAgICB7CisgICAgICAgIExlYWtDaGVja2VyIGNoZWNrZXI7CisgICAgICAgIEdSZWZQdHI8
SlNDQ29udGV4dD4gY29udGV4dCA9IGFkb3B0R1JlZihqc2NfY29udGV4dF9uZXcoKSk7CisgICAg
ICAgIGNoZWNrZXIud2F0Y2goY29udGV4dC5nZXQoKSk7CisgICAgICAgIEV4Y2VwdGlvbkhhbmRs
ZXIgZXhjZXB0aW9uSGFuZGxlcihjb250ZXh0LmdldCgpKTsKKworICAgICAgICBKU0NDbGFzcyog
Zm9vQ2xhc3MgPSBqc2NfY29udGV4dF9yZWdpc3Rlcl9jbGFzcyhjb250ZXh0LmdldCgpLCAiRm9v
IiwgbnVsbHB0ciwgJmZvb1ZUYWJsZSwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4o
Zm9vRnJlZSkpOworICAgICAgICBjaGVja2VyLndhdGNoKGZvb0NsYXNzKTsKKyAgICAgICAgZ19v
YmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoZm9vQ2xhc3MpLCAibGVhay1jaGVja2VyIiwgJmNoZWNr
ZXIpOworCisgICAgICAgIEdSZWZQdHI8SlNDVmFsdWU+IGZvb0NvbnN0cnVjdG9yID0gYWRvcHRH
UmVmKGpzY19jbGFzc19hZGRfY29uc3RydWN0b3IoZm9vQ2xhc3MsIG51bGxwdHIsIEdfQ0FMTEJB
Q0soZm9vQ3JlYXRlKSwgbnVsbHB0ciwgbnVsbHB0ciwgR19UWVBFX1BPSU5URVIsIDAsIEdfVFlQ
RV9OT05FKSk7CisgICAgICAgIGNoZWNrZXIud2F0Y2goZm9vQ29uc3RydWN0b3IuZ2V0KCkpOwor
ICAgICAgICBnX2Fzc2VydF90cnVlKGpzY192YWx1ZV9pc19jb25zdHJ1Y3Rvcihmb29Db25zdHJ1
Y3Rvci5nZXQoKSkpOworICAgICAgICBqc2NfY29udGV4dF9zZXRfdmFsdWUoY29udGV4dC5nZXQo
KSwganNjX2NsYXNzX2dldF9uYW1lKGZvb0NsYXNzKSwgZm9vQ29uc3RydWN0b3IuZ2V0KCkpOwor
ICAgICAgICBqc2NfY2xhc3NfYWRkX3Byb3BlcnR5KGZvb0NsYXNzLCAiZm9vIiwgR19UWVBFX0lO
VCwgR19DQUxMQkFDSyhnZXRGb28pLCBHX0NBTExCQUNLKHNldEZvbyksIG51bGxwdHIsIG51bGxw
dHIpOworCisgICAgICAgIEpTQ0NsYXNzKiBiYXJDbGFzcyA9IGpzY19jb250ZXh0X3JlZ2lzdGVy
X2NsYXNzKGNvbnRleHQuZ2V0KCksICJCYXIiLCBmb29DbGFzcywgJmJhclZUYWJsZSwgcmVpbnRl
cnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oYmFyRnJlZSkpOworICAgICAgICBjaGVja2VyLndh
dGNoKGJhckNsYXNzKTsKKyAgICAgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoYmFyQ2xh
c3MpLCAibGVhay1jaGVja2VyIiwgJmNoZWNrZXIpOworICAgICAgICBnX2Fzc2VydF90cnVlKGpz
Y19jbGFzc19nZXRfcGFyZW50KGJhckNsYXNzKSA9PSBmb29DbGFzcyk7CisgICAgICAgIEdSZWZQ
dHI8SlNDVmFsdWU+IGJhckNvbnN0cnVjdG9yID0gYWRvcHRHUmVmKGpzY19jbGFzc19hZGRfY29u
c3RydWN0b3IoYmFyQ2xhc3MsIG51bGxwdHIsIEdfQ0FMTEJBQ0soYmFyQ3JlYXRlKSwgbnVsbHB0
ciwgbnVsbHB0ciwgR19UWVBFX1BPSU5URVIsIDAsIEdfVFlQRV9OT05FKSk7CisgICAgICAgIGNo
ZWNrZXIud2F0Y2goYmFyQ29uc3RydWN0b3IuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF90cnVl
KGpzY192YWx1ZV9pc19jb25zdHJ1Y3RvcihiYXJDb25zdHJ1Y3Rvci5nZXQoKSkpOworICAgICAg
ICBqc2NfY29udGV4dF9zZXRfdmFsdWUoY29udGV4dC5nZXQoKSwganNjX2NsYXNzX2dldF9uYW1l
KGJhckNsYXNzKSwgYmFyQ29uc3RydWN0b3IuZ2V0KCkpOworICAgICAgICBqc2NfY2xhc3NfYWRk
X3Byb3BlcnR5KGJhckNsYXNzLCAiYmFyIiwgR19UWVBFX0lOVCwgR19DQUxMQkFDSyhnZXRCYXIp
LCBHX0NBTExCQUNLKHNldEJhciksIG51bGxwdHIsIG51bGxwdHIpOworCisgICAgICAgIEdSZWZQ
dHI8SlNDVmFsdWU+IGJhciA9IGFkb3B0R1JlZihqc2NfY29udGV4dF9ldmFsdWF0ZShjb250ZXh0
LmdldCgpLCAiYiA9IG5ldyBCYXIoKTsiLCAtMSkpOworICAgICAgICBjaGVja2VyLndhdGNoKGJh
ci5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoanNjX3ZhbHVlX2lzX29iamVjdChiYXIu
Z2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfb2JqZWN0X2hhc19wcm9w
ZXJ0eShiYXIuZ2V0KCksICJiYXIiKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoanNjX3ZhbHVl
X29iamVjdF9oYXNfcHJvcGVydHkoYmFyLmdldCgpLCAiZm9vIikpOworCisgICAgICAgIGdfYXNz
ZXJ0X3RydWUoanNjX3ZhbHVlX29iamVjdF9oYXNfcHJvcGVydHkoYmFyLmdldCgpLCAicHJvcF93
aGF0ZXZlciIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2UoanNjX3ZhbHVlX29iamVjdF9oYXNf
cHJvcGVydHkoYmFyLmdldCgpLCAid2hhdGV2ZXJfcHJvcCIpKTsKKworICAgICAgICBHVW5pcXVl
UHRyPGNoYXIqPiBwcm9wZXJ0aWVzKGpzY192YWx1ZV9vYmplY3RfZW51bWVyYXRlX3Byb3BlcnRp
ZXMoYmFyLmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoZ19zdHJ2X2xlbmd0aChw
cm9wZXJ0aWVzLmdldCgpKSwgPT0sIDEpOworICAgICAgICBnX2Fzc2VydF9jbXBzdHIocHJvcGVy
dGllcy5nZXQoKVswXSwgPT0sICJiYXIiKTsKKyAgICAgICAgZ19hc3NlcnRfbnVsbChwcm9wZXJ0
aWVzLmdldCgpWzFdKTsKKworICAgICAgICBHUmVmUHRyPEpTQ1ZhbHVlPiByZXN1bHQgPSBhZG9w
dEdSZWYoanNjX2NvbnRleHRfZXZhbHVhdGUoY29udGV4dC5nZXQoKSwgImIucHJvcF8xIiwgLTEp
KTsKKyAgICAgICAgY2hlY2tlci53YXRjaChyZXN1bHQuZ2V0KCkpOworICAgICAgICBnX2Fzc2Vy
dF90cnVlKGpzY192YWx1ZV9pc19udW1iZXIocmVzdWx0LmdldCgpKSk7CisgICAgICAgIGdfYXNz
ZXJ0X2NtcHVpbnQoanNjX3ZhbHVlX3RvX2ludDMyKHJlc3VsdC5nZXQoKSksID09LCAwKTsKKwor
ICAgICAgICBHUmVmUHRyPEpTQ1ZhbHVlPiB2YWx1ZSA9IGFkb3B0R1JlZihqc2NfdmFsdWVfb2Jq
ZWN0X2dldF9wcm9wZXJ0eShiYXIuZ2V0KCksICJwcm9wXzEiKSk7CisgICAgICAgIGNoZWNrZXIu
d2F0Y2godmFsdWUuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKHZhbHVlLmdldCgpID09
IHJlc3VsdC5nZXQoKSk7CisKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfb2JqZWN0
X2RlbGV0ZV9wcm9wZXJ0eShiYXIuZ2V0KCksICJwcm9wXzEiKSk7CisgICAgICAgIGdfYXNzZXJ0
X3RydWUoanNjX3ZhbHVlX29iamVjdF9oYXNfcHJvcGVydHkoYmFyLmdldCgpLCAicHJvcF8xIikp
OworICAgICAgICB2YWx1ZSA9IGFkb3B0R1JlZihqc2NfdmFsdWVfb2JqZWN0X2dldF9wcm9wZXJ0
eShiYXIuZ2V0KCksICJwcm9wXzEiKSk7CisgICAgICAgIGNoZWNrZXIud2F0Y2godmFsdWUuZ2V0
KCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKGpzY192YWx1ZV9pc19udW1iZXIodmFsdWUuZ2V0
KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludChqc2NfdmFsdWVfdG9faW50MzIodmFsdWUu
Z2V0KCkpLCA9PSwgMCk7CisKKyAgICAgICAgcmVzdWx0ID0gYWRvcHRHUmVmKGpzY19jb250ZXh0
X2V2YWx1YXRlKGNvbnRleHQuZ2V0KCksICJiLnByb3BfY2FudF9kZWxldGUgPSAxMjUiLCAtMSkp
OworICAgICAgICBjaGVja2VyLndhdGNoKHJlc3VsdC5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0
X3RydWUoanNjX3ZhbHVlX2lzX251bWJlcihyZXN1bHQuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3Nl
cnRfY21wdWludChqc2NfdmFsdWVfdG9faW50MzIocmVzdWx0LmdldCgpKSwgPT0sIDEyNSk7Cisg
ICAgICAgIGpzY192YWx1ZV9vYmplY3RfZGVsZXRlX3Byb3BlcnR5KGJhci5nZXQoKSwgInByb3Bf
Y2FudF9kZWxldGUiKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfb2JqZWN0X2hh
c19wcm9wZXJ0eShiYXIuZ2V0KCksICJwcm9wX2NhbnRfZGVsZXRlIikpOworICAgICAgICB2YWx1
ZSA9IGFkb3B0R1JlZihqc2NfdmFsdWVfb2JqZWN0X2dldF9wcm9wZXJ0eShiYXIuZ2V0KCksICJw
cm9wX2NhbnRfZGVsZXRlIikpOworICAgICAgICBjaGVja2VyLndhdGNoKHZhbHVlLmdldCgpKTsK
KyAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNfbnVtYmVyKHZhbHVlLmdldCgpKSk7
CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoanNjX3ZhbHVlX3RvX2ludDMyKHZhbHVlLmdldCgp
KSwgPT0sIDEyNSk7CisKKyAgICAgICAgcmVzdWx0ID0gYWRvcHRHUmVmKGpzY19jb250ZXh0X2V2
YWx1YXRlKGNvbnRleHQuZ2V0KCksICJiLnByb3BfZW51bV8xID0gMjUwIiwgLTEpKTsKKyAgICAg
ICAgY2hlY2tlci53YXRjaChyZXN1bHQuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKGpz
Y192YWx1ZV9pc19udW1iZXIocmVzdWx0LmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVp
bnQoanNjX3ZhbHVlX3RvX2ludDMyKHJlc3VsdC5nZXQoKSksID09LCAyNTApOworICAgICAgICBy
ZXN1bHQgPSBhZG9wdEdSZWYoanNjX2NvbnRleHRfZXZhbHVhdGUoY29udGV4dC5nZXQoKSwgImIu
cHJvcF9lbnVtXzIgPSA0NTAiLCAtMSkpOworICAgICAgICBjaGVja2VyLndhdGNoKHJlc3VsdC5n
ZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoanNjX3ZhbHVlX2lzX251bWJlcihyZXN1bHQu
Z2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludChqc2NfdmFsdWVfdG9faW50MzIocmVz
dWx0LmdldCgpKSwgPT0sIDQ1MCk7CisKKyAgICAgICAgcHJvcGVydGllcy5yZXNldChqc2NfdmFs
dWVfb2JqZWN0X2VudW1lcmF0ZV9wcm9wZXJ0aWVzKGJhci5nZXQoKSkpOworICAgICAgICBnX2Fz
c2VydF9jbXB1aW50KGdfc3Rydl9sZW5ndGgocHJvcGVydGllcy5nZXQoKSksID09LCAzKTsKKyAg
ICAgICAgZ19hc3NlcnRfY21wc3RyKHByb3BlcnRpZXMuZ2V0KClbMF0sID09LCAiYmFyIik7Cisg
ICAgICAgIGdfYXNzZXJ0X2NtcHN0cihwcm9wZXJ0aWVzLmdldCgpWzFdLCA9PSwgInByb3BfZW51
bV8xIik7CisgICAgICAgIGdfYXNzZXJ0X2NtcHN0cihwcm9wZXJ0aWVzLmdldCgpWzJdLCA9PSwg
InByb3BfZW51bV8yIik7CisgICAgICAgIGdfYXNzZXJ0X251bGwocHJvcGVydGllcy5nZXQoKVsz
XSk7CisgICAgfQogfQogCiBzdGF0aWMgdm9pZCBjcmVhdGVFcnJvcigpCkBAIC0xNzk2LDcgKzIx
NzksNyBAQCBzdGF0aWMgdm9pZCB0ZXN0SlNDUHJvbWlzZXMoKQogICAgICAgICBjaGVja2VyLndh
dGNoKGNvbnRleHQuZ2V0KCkpOwogICAgICAgICBFeGNlcHRpb25IYW5kbGVyIGV4Y2VwdGlvbkhh
bmRsZXIoY29udGV4dC5nZXQoKSk7CiAKLSAgICAgICAgSlNDQ2xhc3MqIGZvb0NsYXNzID0ganNj
X2NvbnRleHRfcmVnaXN0ZXJfY2xhc3MoY29udGV4dC5nZXQoKSwgIkZvbyIsIG51bGxwdHIsIHJl
aW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGZvb0ZyZWUpKTsKKyAgICAgICAgSlNDQ2xh
c3MqIGZvb0NsYXNzID0ganNjX2NvbnRleHRfcmVnaXN0ZXJfY2xhc3MoY29udGV4dC5nZXQoKSwg
IkZvbyIsIG51bGxwdHIsIG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+
KGZvb0ZyZWUpKTsKICAgICAgICAgY2hlY2tlci53YXRjaChmb29DbGFzcyk7CiAgICAgICAgIGdf
YXNzZXJ0X2ZhbHNlKGpzY19jbGFzc19nZXRfcGFyZW50KGZvb0NsYXNzKSk7CiAgICAgICAgIEdS
ZWZQdHI8SlNDVmFsdWU+IGZvb0NvbnN0cnVjdG9yID0gYWRvcHRHUmVmKGpzY19jbGFzc19hZGRf
Y29uc3RydWN0b3IoZm9vQ2xhc3MsIG51bGxwdHIsIEdfQ0FMTEJBQ0soZm9vQ3JlYXRlKSwgbnVs
bHB0ciwgbnVsbHB0ciwgR19UWVBFX1BPSU5URVIsIDAsIEdfVFlQRV9OT05FKSk7CkBAIC0xODkw
LDcgKzIyNzMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0SlNDR2FyYmFnZUNvbGxlY3RvcigpCiAKICAg
ICAgICAgc19mb29XYXNGcmVlZCA9IGZhbHNlOwogCi0gICAgICAgIEpTQ0NsYXNzKiBqc2NDbGFz
cyA9IGpzY19jb250ZXh0X3JlZ2lzdGVyX2NsYXNzKGNvbnRleHQuZ2V0KCksICJGb28iLCBudWxs
cHRyLCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5Pihmb29GcmVlQW5kTG9nKSk7Cisg
ICAgICAgIEpTQ0NsYXNzKiBqc2NDbGFzcyA9IGpzY19jb250ZXh0X3JlZ2lzdGVyX2NsYXNzKGNv
bnRleHQuZ2V0KCksICJGb28iLCBudWxscHRyLCBudWxscHRyLCByZWludGVycHJldF9jYXN0PEdE
ZXN0cm95Tm90aWZ5Pihmb29GcmVlQW5kTG9nKSk7CiAgICAgICAgIGNoZWNrZXIud2F0Y2goanNj
Q2xhc3MpOwogICAgICAgICBnX2Fzc2VydF9mYWxzZShqc2NfY2xhc3NfZ2V0X3BhcmVudChqc2ND
bGFzcykpOwogCkBAIC0yMTA4LDcgKzI0OTEsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0c0pTQ1ZpcnR1
YWxNYWNoaW5lKCkKICAgICAgICAgRXhjZXB0aW9uSGFuZGxlciBleGNlcHRpb25IYW5kbGVyKGNv
bnRleHQuZ2V0KCkpOwogCiAgICAgICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkpT
Q1ZpcnR1YWxNYWNoaW5lVGVzdCIsIFsmXSB7Ci0gICAgICAgICAgICBKU0NDbGFzcyoganNjQ2xh
c3MgPSBqc2NfY29udGV4dF9yZWdpc3Rlcl9jbGFzcyhjb250ZXh0LmdldCgpLCAiRm9vIiwgbnVs
bHB0ciwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oZm9vRnJlZUFuZExvZykpOwor
ICAgICAgICAgICAgSlNDQ2xhc3MqIGpzY0NsYXNzID0ganNjX2NvbnRleHRfcmVnaXN0ZXJfY2xh
c3MoY29udGV4dC5nZXQoKSwgIkZvbyIsIG51bGxwdHIsIG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nh
c3Q8R0Rlc3Ryb3lOb3RpZnk+KGZvb0ZyZWVBbmRMb2cpKTsKICAgICAgICAgICAgIGNoZWNrZXIu
d2F0Y2goanNjQ2xhc3MpOwogICAgICAgICAgICAgZ19hc3NlcnRfZmFsc2UoanNjX2NsYXNzX2dl
dF9wYXJlbnQoanNjQ2xhc3MpKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5jcHAKaW5kZXggMzAyZjU3NjRkOGQuLmRh
MDZmNDJkZTRmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvV2ViUHJvY2Vzc1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIHZvaWQg
d2luZG93T2JqZWN0Q2xlYXJlZENhbGxiYWNrKFdlYktpdFNjcmlwdFdvcmxkKiB3b3JsZCwgV2Vi
S2l0V2ViUGFnZSoKIAogICAgIEdSZWZQdHI8SlNDQ29udGV4dD4gY29udGV4dCA9IGFkb3B0R1Jl
Zih3ZWJraXRfZnJhbWVfZ2V0X2pzX2NvbnRleHRfZm9yX3NjcmlwdF93b3JsZChmcmFtZSwgd29y
bGQpKTsKICAgICBXZWJQcm9jZXNzVGVzdDo6YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RG
aW5pc2hlcyhHX09CSkVDVChjb250ZXh0LmdldCgpKSk7Ci0gICAgYXV0byoganNDbGFzcyA9IGpz
Y19jb250ZXh0X3JlZ2lzdGVyX2NsYXNzKGNvbnRleHQuZ2V0KCksICJXZWJQcm9jZXNzVGVzdFJ1
bm5lciIsIG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KHdlYlByb2Nl
c3NUZXN0UnVubmVyRmluYWxpemUpKTsKKyAgICBhdXRvKiBqc0NsYXNzID0ganNjX2NvbnRleHRf
cmVnaXN0ZXJfY2xhc3MoY29udGV4dC5nZXQoKSwgIldlYlByb2Nlc3NUZXN0UnVubmVyIiwgbnVs
bHB0ciwgbnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4od2ViUHJvY2Vz
c1Rlc3RSdW5uZXJGaW5hbGl6ZSkpOwogICAgIFdlYlByb2Nlc3NUZXN0Ojphc3NlcnRPYmplY3RJ
c0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGpzQ2xhc3MpKTsKICAgICBqc2NfY2xh
c3NfYWRkX21ldGhvZChqc0NsYXNzLCAicnVuVGVzdCIsIEdfQ0FMTEJBQ0socnVuVGVzdCksIE5V
TEwsIE5VTEwsIEdfVFlQRV9CT09MRUFOLCAxLCBHX1RZUEVfU1RSSU5HKTsKICAgICBHUmVmUHRy
PEpTQ1ZhbHVlPiB0ZXN0UnVubmVyID0gYWRvcHRHUmVmKGpzY192YWx1ZV9uZXdfb2JqZWN0KGNv
bnRleHQuZ2V0KCksIGdfb2JqZWN0X3JlZih3ZWJQYWdlKSwganNDbGFzcykpOwo=
</data>
<flag name="review"
          id="356389"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
    <flag name="commit-queue"
          id="356392"
          type_id="3"
          status="-"
          setter="ews-watchlist"
    />
          </attachment>
      

    </bug>

</bugzilla>