<?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>114910</bug_id>
          
          <creation_ts>2013-04-21 01:19:28 -0700</creation_ts>
          <short_desc>Refactor out identical inline functions in 32bit and 64bit sections in DFGSpeculativeJIT.h</short_desc>
          <delta_ts>2013-04-21 02:03:20 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>878836</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-04-21 01:19:28 -0700</bug_when>
    <thetext>In DFGSpeculativeJIT.h, there are a few inline functions that are identical between the JSVALUE64 and JSVALUE32_64 versions.  Will refactor these out into the common section so that they are not duplicated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878838</commentid>
    <comment_count>1</comment_count>
      <attachid>198960</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-04-21 01:24:10 -0700</bug_when>
    <thetext>Created attachment 198960
the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878842</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-04-21 02:03:20 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r148820: &lt;http://trac.webkit.org/changeset/148820&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198960</attachid>
            <date>2013-04-21 01:24:10 -0700</date>
            <delta_ts>2013-04-21 01:51:21 -0700</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-114910.patch</filename>
            <type>text/plain</type>
            <size>47230</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ4ODE4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDEzLTA0LTIxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZWZhY3RvciBpZGVudGljYWwgaW5saW5lIGZ1bmN0aW9ucyBpbiBKU1ZBTFVFNjQgYW5kIEpTVkFM
VUUzMl82NCBzZWN0aW9ucworICAgICAgICBvdXQgaW50byB0aGUgY29tbW9uIHNlY3Rpb24uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQ5MTAuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKFNwZWN1bGF0aXZlSklUKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisKIDIwMTMtMDQtMjAgIEFs
bGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAg
TExpbnQgc2hvdWxkIGJlIGFibGUgdG8gdXNlIHg4NyBpbnN0ZWFkIG9mIFNTRSBmb3IgZmxvYXRp
bmcgcG9pbnRlcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAkocmV2aXNpb24gMTQ4ODAyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC04ODAsNyArODgwLDcgQEAg
cHVibGljOgogICAgIC8vIGRlYWwgd2l0aCB0aGUgZmFjdCB0aGF0IGEgSlNWYWx1ZSBtYXkgYmUg
cGFzc2VkIGluIG9uZSBvciB0d28KICAgICAvLyBtYWNoaW5lIHJlZ2lzdGVycywgYW5kIGRlbGVn
YXRlIHRoZSBjYWxsaW5nIGNvbnZlbnRpb24gc3BlY2lmaWMKICAgICAvLyBkZWNpc2lvbiBhcyB0
byBob3cgdG8gZmlsbCB0aGUgcmVnc2l0ZXJzIHRvIHNldHVwQXJndW1lbnRzKiBtZXRob2RzLgot
I2lmIFVTRShKU1ZBTFVFNjQpCisKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KFBfREZHT3BlcmF0aW9uX0Ugb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0KQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUoKTsKQEAgLTkyMSw1MyArOTIxLDYgQEAg
cHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbVB0cihzaXplKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCkKLSAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCk7Ci0g
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0KTsKLSAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihKX0RGR09wZXJhdGlvbl9FUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIHZvaWQqIHBvaW50
ZXIpCi0gICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbVB0cihwb2ludGVyKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKLSAgICB9Ci0gICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihaX0RGR09wZXJhdGlvbl9EIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgRlBSUmVnIGFyZzEpCi0gICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50cyhhcmcxKTsKLSAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IG1faml0LmFwcGVu
ZENhbGwob3BlcmF0aW9uKTsKLSAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIoR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIsIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBjYWxsOwotICAgIH0K
LSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VHcmlK
c2dJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBJ
ZGVudGlmaWVyKiBpZGVudGlmaWVyKQotICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIFRydXN0ZWRJbW1QdHIoaWRlbnRpZmllcikpOwot
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdCk7Ci0gICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oSl9ERkdPcGVyYXRpb25fRUkgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBJZGVudGlmaWVy
KiBpZGVudGlmaWVyKQotICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKFRydXN0ZWRJbW1QdHIoaWRlbnRpZmllcikpOwotICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Ci0gICAg
fQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUlS
byBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIElkZW50aWZpZXIqIGlkZW50aWZpZXIsIFJlc29s
dmVPcGVyYXRpb25zKiBvcGVyYXRpb25zKQotICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoaWRlbnRpZmllciksIFRydXN0ZWRJbW1Q
dHIob3BlcmF0aW9ucykpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Ci0gICAgfQotICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUlSb1B0Ym8gb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBJZGVudGlmaWVyKiBpZGVudGlmaWVyLCBSZXNvbHZlT3BlcmF0aW9ucyog
b3BlcmF0aW9ucywgUHV0VG9CYXNlT3BlcmF0aW9uKiBwdXRUb0Jhc2VPcGVyYXRpb25zKQotICAg
IHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1Q
dHIoaWRlbnRpZmllciksIFRydXN0ZWRJbW1QdHIob3BlcmF0aW9ucyksIFRydXN0ZWRJbW1QdHIo
cHV0VG9CYXNlT3BlcmF0aW9ucykpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Ci0gICAgfQotICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUEgb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKLSAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwotICAgIH0KLSAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VBWiBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKLSAgICB7Ci0gICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQpOwotICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBf
REZHT3BlcmF0aW9uX0VTdCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CkBAIC05OTgsMzI2ICs5NTEsMzYyIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1Q
dHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbVB0cihpbmRleCksIFRydXN0ZWRJbW1QdHIoc2l6ZSkp
OwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9ERkdPcGVyYXRpb25fRVBTIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgdm9pZCog
cG9pbnRlciwgc2l6ZV90IHNpemUpCisKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKENfREZHT3BlcmF0aW9uX0Ugb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0KQogICAgIHsKLSAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIocG9p
bnRlciksIFRydXN0ZWRJbW1QdHIoc2l6ZSkpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c0V4ZWNTdGF0ZSgpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRVNTIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgaW50IHN0YXJ0Q29uc3RhbnQsIGludCBudW1Db25zdGFudHMpCisgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0RGR09wZXJhdGlvbl9FQyBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihzdGFydENvbnN0YW50KSwgVHJ1c3RlZEltbTMy
KG51bUNvbnN0YW50cykpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FUFAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
LCBHUFJSZWcgYXJnMSwgdm9pZCogcG9pbnRlcikKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKENfREZHT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSlND
ZWxsKiBjZWxsKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIocG9pbnRlcikpOworICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihjZWxsKSk7CiAgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJh
dGlvbl9FQ0kgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgSWRlbnRpZmll
ciogaWRlbnRpZmllcikKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfREZH
T3BlcmF0aW9uX0VDQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU0Nl
bGwqIGNlbGwpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgVHJ1c3RlZEltbVB0cihpZGVudGlmaWVyKSk7CisgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwpKTsKICAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpf
REZHT3BlcmF0aW9uX0VKSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBJ
ZGVudGlmaWVyKiBpZGVudGlmaWVyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oQ19ERkdPcGVyYXRpb25fRUljZiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIElubGluZUNh
bGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoaWRlbnRpZmllcikpOworICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihpbmxp
bmVDYWxsRnJhbWUpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VEQSBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIEZQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKENfREZHT3BlcmF0aW9uX0VTdCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0
aW9uX0VKQSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MikKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfREZHT3BlcmF0aW9uX0VK
c3NTdCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9
Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FUCBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQorICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oQ19ERkdPcGVyYXRpb25fRUpzc0pzcyBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7Ci0gICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKKyAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwogICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAg
fQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRVog
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKKyAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKENfREZHT3BlcmF0aW9uX0VKc3NKc3NKc3Mgb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQogICAg
IHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOworICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7
CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihKX0RGR09wZXJhdGlvbl9FWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIGludDMyX3Qg
YXJnMSkKKworICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19ERkdPcGVyYXRp
b25fRUNDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
KQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0
ZWRJbW0zMihhcmcxKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VaWiBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIGludDMyX3QgYXJnMSwgR1BSUmVnIGFyZzIpCisKKyAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEp
CiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbTMyKGFyZzEpLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRVpJY2ZaIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgaW50MzJfdCBhcmcxLCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwg
R1BSUmVnIGFyZzIpCisKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfREZH
T3BlcmF0aW9uX0VDSWNmIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIElubGluZUNhbGxGcmFtZSog
aW5saW5lQ2FsbEZyYW1lKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW0zMihhcmcxKSwgVHJ1c3RlZEltbVB0cihpbmxpbmVDYWxsRnJh
bWUpLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihpbmxpbmVDYWxsRnJhbWUpKTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAg
ICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0RGR09wZXJhdGlvbl9F
IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFZfREZHT3BlcmF0aW9uX0VDQ0ljZiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMiwgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUpCiAgICAgewotICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpOwotICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVk
SW1tUHRyKGlubGluZUNhbGxGcmFtZSkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKENfREZHT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwg
R1BSUmVnIGFyZzEpCisKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfREZH
T3BlcmF0aW9uX0VDWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBpbnQgYXJnMikKICAgICB7Ci0g
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKLSAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwg
VHJ1c3RlZEltbTMyKGFyZzIpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihDX0RGR09wZXJhdGlvbl9FQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTQ2Vs
bCogY2VsbCkKKworICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVy
YXRpb25fRUNDIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKLSAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoY2Vs
bCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxLCBhcmcyKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihDX0RGR09wZXJhdGlvbl9FQ0Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJS
ZWcgYXJnMSwgSlNDZWxsKiBjZWxsKQorCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihWX0RGR09wZXJhdGlvbl9FT1pEIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyLCBGUFJSZWcgYXJnMykKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwpKTsKLSAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwor
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJn
Myk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlv
bik7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19ERkdPcGVy
YXRpb25fRUljZiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIElubGluZUNhbGxGcmFtZSogaW5s
aW5lQ2FsbEZyYW1lKQorCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0RG
R09wZXJhdGlvbl9XIG9wZXJhdGlvbiwgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCkKICAg
ICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
UHRyKGlubGluZUNhbGxGcmFtZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzKFRydXN0ZWRJbW1QdHIod2F0Y2hwb2ludFNldCkpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKENfREZHT3BlcmF0aW9uX0VTdCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25U
eXBlLCB0eXBlbmFtZSBBcmd1bWVudFR5cGUxPgorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oRnVuY3Rpb25UeXBlIG9wZXJhdGlvbiwgTm9SZXN1bHRUYWcsIEFyZ3VtZW50VHlw
ZTEgYXJnMSkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgYXJnMSk7CiAgICAgfQotICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19ERkdPcGVyYXRpb25fRUpzc1N0IG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgQXJndW1lbnRUeXBlMSwgdHlw
ZW5hbWUgQXJndW1lbnRUeXBlMj4KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEZ1bmN0aW9uVHlwZSBvcGVyYXRpb24sIE5vUmVzdWx0VGFnLCBBcmd1bWVudFR5cGUxIGFyZzEs
IEFyZ3VtZW50VHlwZTIgYXJnMikKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CisgICAgICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgYXJnMSwgYXJn
Mik7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19ERkdPcGVy
YXRpb25fRUpzc0pzcyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIEFy
Z3VtZW50VHlwZTEsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTIsIHR5cGVuYW1lIEFyZ3VtZW50VHlw
ZTM+CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihGdW5jdGlvblR5cGUgb3Bl
cmF0aW9uLCBOb1Jlc3VsdFRhZywgQXJndW1lbnRUeXBlMSBhcmcxLCBBcmd1bWVudFR5cGUyIGFy
ZzIsIEFyZ3VtZW50VHlwZTMgYXJnMykKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICBy
ZXR1cm4gY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0K
LSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfREZHT3BlcmF0aW9uX0VKc3NK
c3NKc3Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIs
IEdQUlJlZyBhcmczKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5h
bWUgQXJndW1lbnRUeXBlMSwgdHlwZW5hbWUgQXJndW1lbnRUeXBlMiwgdHlwZW5hbWUgQXJndW1l
bnRUeXBlMywgdHlwZW5hbWUgQXJndW1lbnRUeXBlND4KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEZ1bmN0aW9uVHlwZSBvcGVyYXRpb24sIE5vUmVzdWx0VGFnLCBBcmd1bWVu
dFR5cGUxIGFyZzEsIEFyZ3VtZW50VHlwZTIgYXJnMiwgQXJndW1lbnRUeXBlMyBhcmczLCBBcmd1
bWVudFR5cGU0IGFyZzQpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0
dXJuIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0KTsKICAg
ICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0RGR09wZXJhdGlvbl9F
SiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgQXJndW1lbnRUeXBlMSwgdHlwZW5hbWUgQXJn
dW1lbnRUeXBlMiwgdHlwZW5hbWUgQXJndW1lbnRUeXBlMywgdHlwZW5hbWUgQXJndW1lbnRUeXBl
NCwgdHlwZW5hbWUgQXJndW1lbnRUeXBlNT4KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKEZ1bmN0aW9uVHlwZSBvcGVyYXRpb24sIE5vUmVzdWx0VGFnLCBBcmd1bWVudFR5cGUx
IGFyZzEsIEFyZ3VtZW50VHlwZTIgYXJnMiwgQXJndW1lbnRUeXBlMyBhcmczLCBBcmd1bWVudFR5
cGU0IGFyZzQsIEFyZ3VtZW50VHlwZTUgYXJnNSkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICBy
ZXR1cm4gY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFy
ZzUpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfREZHT3Bl
cmF0aW9uX0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKKworICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRF9ERkdPcGVyYXRpb25fWlogb3BlcmF0aW9u
LCBGUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewotICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50cyhhcmcxKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHMoYXJnMSwgYXJnMik7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihTX0RGR09wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcx
KQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRF9ERkdPcGVyYXRpb25fREQg
b3BlcmF0aW9uLCBGUFJSZWcgcmVzdWx0LCBGUFJSZWcgYXJnMSwgRlBSUmVnIGFyZzIpCiAgICAg
ewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHMoYXJnMSwgYXJnMik7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9F
SiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQorICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oU3RyX0RGR09wZXJhdGlvbl9FSnNzIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0RGR09wZXJhdGlvbl9FSkogb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0RGR09wZXJhdGlvbl9FWiBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0RGR09wZXJhdGlvbl9FQ0Mgb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25f
RSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CisgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzRXhlY1N0YXRlKCk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FUFAgb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQsIHZvaWQqIHBvaW50ZXIpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHBvaW50ZXIpKTsKICAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAg
IH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VK
SiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKKyAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFpfREZHT3BlcmF0aW9uX0Qgb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0LCBGUFJSZWcgYXJnMSkKICAgICB7Ci0gICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwor
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50cyhhcmcxKTsKKyAgICAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbCA9IG1faml0LmFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICAgICAgbV9qaXQu
emVyb0V4dGVuZDMyVG9QdHIoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIHJlc3VsdCk7CisgICAg
ICAgIHJldHVybiBjYWxsOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfREZHT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBh
cmcxLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyIGltbSkKKyAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VHcmlKc2dJIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBJZGVudGlmaWVyKiBpZGVudGlm
aWVyKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KGltbS5tX3ZhbHVlKSkpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIsIFRydXN0ZWRJbW1QdHIoaWRlbnRpZmllcikpOwogICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVy
YXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW0zMiBpbW0sIEdQUlJlZyBhcmcyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9ERkdPcGVyYXRpb25fRUkgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBJZGVudGlm
aWVyKiBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKGltbS5tX3ZhbHVlKSkpLCBhcmcyKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoaWRlbnRpZmllcikpOwogICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVy
YXRpb25fRUNDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25f
RUlSbyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIElkZW50aWZpZXIqIGlkZW50aWZpZXIsIFJl
c29sdmVPcGVyYXRpb25zKiBvcGVyYXRpb25zKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihpZGVudGlmaWVyKSwgVHJ1c3RlZElt
bVB0cihvcGVyYXRpb25zKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FQ0ogb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FSVJvUHRibyBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIElkZW50aWZpZXIqIGlkZW50aWZpZXIsIFJlc29sdmVPcGVyYXRpb25zKiBvcGVy
YXRpb25zLCBQdXRUb0Jhc2VPcGVyYXRpb24qIHB1dFRvQmFzZU9wZXJhdGlvbnMpCiAgICAgewot
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Cisg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGlk
ZW50aWZpZXIpLCBUcnVzdGVkSW1tUHRyKG9wZXJhdGlvbnMpLCBUcnVzdGVkSW1tUHRyKHB1dFRv
QmFzZU9wZXJhdGlvbnMpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVn
IGFyZzEpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlv
bl9FQSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwotICAgIH0KLSAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VDSWNmIG9wZXJh
dGlvbiwgR1BSUmVnIGFyZzEsIElubGluZUNhbGxGcmFtZSogYXJnMikKLSAgICB7Ci0gICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGFy
ZzIpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0
aW9uKTsKLSAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0RGR09w
ZXJhdGlvbl9FQ0NJY2Ygb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIElubGlu
ZUNhbGxGcmFtZSogYXJnMykKLSAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKGFyZzMpKTsKLSAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKLSAgICB9Ci0gICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0RGR09wZXJhdGlvbl9FSlBQIG9wZXJh
dGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCB2b2lkKiBwb2ludGVyKQotICAgIHsKLSAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIFRydXN0
ZWRJbW1QdHIocG9pbnRlcikpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRUpDSSBvcGVyYXRpb24sIEdQ
UlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgSWRlbnRpZmllciogaWRlbnRpZmllcikKKyAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VBWiBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7Ci0gICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1t
UHRyKGlkZW50aWZpZXIpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRUpKSiBvcGVyYXRpb24sIEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FUFMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
LCB2b2lkKiBwb2ludGVyLCBzaXplX3Qgc2l6ZSkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKLSAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIocG9pbnRlciksIFRydXN0
ZWRJbW1QdHIoc2l6ZSkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRVBaSiBvcGVyYXRpb24sIEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FU1Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
LCBpbnQgc3RhcnRDb25zdGFudCwgaW50IG51bUNvbnN0YW50cykKICAgICB7Ci0gICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihzdGFydENv
bnN0YW50KSwgVHJ1c3RlZEltbTMyKG51bUNvbnN0YW50cykpOworICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAg
ICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25f
RU9aRCBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgRlBSUmVnIGFyZzMpCisg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FUFAgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgdm9pZCogcG9pbnRlcikKICAgICB7
Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBh
cmczKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0
aW9uKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRy
dXN0ZWRJbW1QdHIocG9pbnRlcikpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRU9aSiBvcGVyYXRpb24s
IEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FQ0kgb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBHUFJSZWcgYXJnMSwgSWRlbnRpZmllciogaWRlbnRpZmllcikKICAgICB7Ci0gICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsK
LSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsK
KyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJ
bW1QdHIoaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRUNKSiBvcGVyYXRpb24sIEdQ
UlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FSkkgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgSWRlbnRpZmllciogaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1Q
dHIoaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRUNaIG9wZXJhdGlvbiwgR1BSUmVn
IGFyZzEsIGludCBhcmcyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9E
RkdPcGVyYXRpb25fRURBIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgRlBSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIFRydXN0ZWRJbW0zMihhcmcyKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VDQyBvcGVy
YXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VKQSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0K
LSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX1cgb3Bl
cmF0aW9uLCBXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0KQorICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRVAgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgYXJnMSkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzKFRy
dXN0ZWRJbW1QdHIod2F0Y2hwb2ludFNldCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChv
cGVyYXRpb24pOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rp
b25UeXBlLCB0eXBlbmFtZSBBcmd1bWVudFR5cGUxPgotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oRnVuY3Rpb25UeXBlIG9wZXJhdGlvbiwgTm9SZXN1bHRUYWcsIEFyZ3VtZW50
VHlwZTEgYXJnMSkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3Bl
cmF0aW9uX0VaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewot
ICAgICAgICByZXR1cm4gY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIGFyZzEpOworICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
ICAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBBcmd1
bWVudFR5cGUxLCB0eXBlbmFtZSBBcmd1bWVudFR5cGUyPgotICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oRnVuY3Rpb25UeXBlIG9wZXJhdGlvbiwgTm9SZXN1bHRUYWcsIEFyZ3Vt
ZW50VHlwZTEgYXJnMSwgQXJndW1lbnRUeXBlMiBhcmcyKQorICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRVogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
LCBpbnQzMl90IGFyZzEpCiAgICAgewotICAgICAgICByZXR1cm4gY2FsbE9wZXJhdGlvbihvcGVy
YXRpb24sIGFyZzEsIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbTMyKGFyZzEpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTEsIHR5
cGVuYW1lIEFyZ3VtZW50VHlwZTIsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTM+Ci0gICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihGdW5jdGlvblR5cGUgb3BlcmF0aW9uLCBOb1Jlc3Vs
dFRhZywgQXJndW1lbnRUeXBlMSBhcmcxLCBBcmd1bWVudFR5cGUyIGFyZzIsIEFyZ3VtZW50VHlw
ZTMgYXJnMykKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0
aW9uX0VaWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIGludDMyX3QgYXJnMSwgR1BSUmVnIGFy
ZzIpCiAgICAgewotICAgICAgICByZXR1cm4gY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIGFyZzEs
IGFyZzIsIGFyZzMpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
VHJ1c3RlZEltbTMyKGFyZzEpLCBhcmcyKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKERfREZHT3BlcmF0aW9uX0VKIG9wZXJhdGlv
biwgRlBSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FWkljZlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
LCBpbnQzMl90IGFyZzEsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lLCBHUFJSZWcg
YXJnMikKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW0zMihhcmcxKSwgVHJ1c3RlZEltbVB0cihpbmxpbmVDYWxsRnJhbWUpLCBhcmcyKTsKICAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKERf
REZHT3BlcmF0aW9uX1paIG9wZXJhdGlvbiwgRlBSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyKQorCisKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfREZH
T3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAg
ewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihEX0RGR09wZXJhdGlvbl9E
RCBvcGVyYXRpb24sIEZQUlJlZyByZXN1bHQsIEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJnMikKKyAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfREZHT3BlcmF0aW9uX0ogb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKICAgICB7Ci0gICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzKGFyZzEsIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50cyhh
cmcxKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFN0cl9ERkdP
cGVyYXRpb25fRUpzcyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQorICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19ERkdPcGVyYXRpb25fRUogb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0K
LSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfREZHT3BlcmF0aW9uX0VaIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCisgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotI2Vsc2UKLQotLy8gRW5j
b2RlZEpTVmFsdWUgaW4gSlNWQUxVRTMyXzY0IGlzIGEgNjQtYml0IGludGVnZXIuIFdoZW4gYmVp
bmcgY29tcGlsZWQgaW4gQVJNIEVBQkksIGl0IG11c3QgYmUgYWxpZ25lZCBldmVuLW51bWJlcmVk
IHJlZ2lzdGVyIChyMCwgcjIgb3IgW3NwXSkuCi0vLyBUbyBhdm9pZCBhc3NlbWJsaWVzIGZyb20g
dXNpbmcgd3JvbmcgcmVnaXN0ZXJzLCBsZXQncyBvY2N1cHkgcjEgb3IgcjMgd2l0aCBhIGR1bW15
IGFyZ3VtZW50IHdoZW4gbmVjZXNzYXJ5LgotI2lmIChDT01QSUxFUl9TVVBQT1JUUyhFQUJJKSAm
JiBDUFUoQVJNKSkgfHwgQ1BVKE1JUFMpCi0jZGVmaW5lIEVBQklfMzJCSVRfRFVNTVlfQVJHICAg
ICAgVHJ1c3RlZEltbTMyKDApLAotI2Vsc2UKLSNkZWZpbmUgRUFCSV8zMkJJVF9EVU1NWV9BUkcK
LSNlbmRpZgotCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0RGR09wZXJh
dGlvbl9FIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFNfREZHT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzRXhlY1N0YXRlKCk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfREZHT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgR1BSUmVnIGFyZzEpCisKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfREZHT3BlcmF0aW9uX0VQUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMikKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oUF9ERkdPcGVyYXRpb25fRU8gb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBHUFJSZWcgYXJnMSkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEpfREZHT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMikKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIGFyZzIpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oUF9ERkdPcGVyYXRpb25fRU9TIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgR1BSUmVnIGFyZzEsIHNpemVfdCBhcmcyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwg
R1BSUmVnIGFyZzEsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIgaW1tKQogICAgIHsKLSAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1Q
dHIoYXJnMikpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
aW1tLm1fdmFsdWUpKSkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oUF9ERkdPcGVyYXRpb25fRU9aIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgR1BSUmVnIGFyZzEsIGludDMyX3QgYXJnMikKKyAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIgaW1tLCBHUFJSZWcgYXJnMikKICAgICB7
Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVk
SW1tUHRyKGFyZzIpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGlt
bS5tX3ZhbHVlKSkpLCBhcmcyKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfREZHT3BlcmF0aW9uX0VPWiBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHQsIEdQUlJlZyBvYmplY3QsIGludDMyX3Qgc2l6ZSkKKyAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VDQyBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7Ci0gICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShvYmplY3QsIFRydXN0ZWRJbW1QdHIoc2l6ZSkp
OworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7
CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihQX0RGR09wZXJhdGlvbl9FUFMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcg
b2xkLCBzaXplX3Qgc2l6ZSkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpf
REZHT3BlcmF0aW9uX0VDSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMikKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShvbGQsIFRydXN0ZWRJbW1QdHIoc2l6ZSkpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0g
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0RGR09wZXJhdGlvbl9FUyBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIHNpemVfdCBzaXplKQorCisgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihWX0RGR09wZXJhdGlvbl9FSlBQIG9wZXJhdGlvbiwgR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCB2b2lkKiBwb2ludGVyKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc2l6ZSkpOworICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgVHJ1c3RlZEltbVB0
cihwb2ludGVyKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
KG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Vl9ERkdPcGVyYXRpb25fRUpDSSBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwg
SWRlbnRpZmllciogaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIpKTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsK
KyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0RGR09wZXJhdGlv
bl9FSkpKIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykK
KyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyLCBhcmczKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2so
b3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihW
X0RGR09wZXJhdGlvbl9FUFpKIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBH
UFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICB9CisKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VPWkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VDSkogb3BlcmF0aW9uLCBH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgIH0K
KworICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRF9ERkdPcGVyYXRpb25fRUog
b3BlcmF0aW9uLCBGUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKKyAgICB7CisgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwog
ICAgIH0KKworI2Vsc2UgLy8gVVNFKEpTVkFMVUUzMl82NCkKKworLy8gRW5jb2RlZEpTVmFsdWUg
aW4gSlNWQUxVRTMyXzY0IGlzIGEgNjQtYml0IGludGVnZXIuIFdoZW4gYmVpbmcgY29tcGlsZWQg
aW4gQVJNIEVBQkksIGl0IG11c3QgYmUgYWxpZ25lZCBldmVuLW51bWJlcmVkIHJlZ2lzdGVyIChy
MCwgcjIgb3IgW3NwXSkuCisvLyBUbyBhdm9pZCBhc3NlbWJsaWVzIGZyb20gdXNpbmcgd3Jvbmcg
cmVnaXN0ZXJzLCBsZXQncyBvY2N1cHkgcjEgb3IgcjMgd2l0aCBhIGR1bW15IGFyZ3VtZW50IHdo
ZW4gbmVjZXNzYXJ5LgorI2lmIChDT01QSUxFUl9TVVBQT1JUUyhFQUJJKSAmJiBDUFUoQVJNKSkg
fHwgQ1BVKE1JUFMpCisjZGVmaW5lIEVBQklfMzJCSVRfRFVNTVlfQVJHICAgICAgVHJ1c3RlZElt
bTMyKDApLAorI2Vsc2UKKyNkZWZpbmUgRUFCSV8zMkJJVF9EVU1NWV9BUkcKKyNlbmRpZgorCiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihaX0RGR09wZXJhdGlvbl9EIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdCwgRlBSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBwcmVwYXJl
Rm9yRXh0ZXJuYWxDYWxsKCk7CkBAIC0xMzY2LDM2ICsxMzU1LDYgQEAgcHVibGljOgogICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CiAgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihQX0RGR09wZXJhdGlvbl9FU3Qgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOwotICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7Ci0gICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9ERkdPcGVy
YXRpb25fRVN0WiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBHUFJSZWcgYXJnMikKLSAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGFyZzIpOwotICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7
Ci0gICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9ERkdPcGVyYXRp
b25fRVN0WiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBz
aXplX3QgYXJnMikKLSAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0ZWRJbW0zMihhcmcyKSk7Ci0gICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKLSAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQ
X0RGR09wZXJhdGlvbl9FU3RaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Ci0gICAgfQotICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9ERkdPcGVyYXRpb25fRVN0UFMgb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdm9pZCogcG9pbnRlciwgc2l6ZV90
IHNpemUpCi0gICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKHBvaW50ZXIpLCBUcnVzdGVk
SW1tUHRyKHNpemUpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwotICAgIH0KLSAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFBfREZHT3BlcmF0aW9uX0VTdFNTIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBpbmRleCwgc2l6ZV90IHNpemUp
Ci0gICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKGluZGV4KSwgVHJ1c3RlZEltbVB0cihz
aXplKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKLSAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FUFMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFn
LCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgdm9pZCogcG9pbnRlciwgc2l6ZV90IHNpemUpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0
cihwb2ludGVyKSwgVHJ1c3RlZEltbVB0cihzaXplKSk7CkBAIC0xNDE2LDYgKzEzNzUsNyBAQCBw
dWJsaWM6CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMy
QklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgYXJnMik7CiAgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CisKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VDSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcs
IEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgSWRlbnRpZmllciogaWRlbnRpZmll
cikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIpKTsKQEAgLTE0NzEsNTEgKzE0MzEsOCBAQCBwdWJs
aWM6CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
MzIoYXJnMSksIGFyZzIpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAg
fQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19ERkdPcGVyYXRpb25fRSBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHQpCi0gICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c0V4ZWNTdGF0ZSgpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Ci0gICAgfQotICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oQ19ERkdPcGVyYXRpb25fRUMgb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBHUFJSZWcgYXJnMSkKLSAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwotICAgIH0KLSAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfREZHT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgSlNDZWxsKiBjZWxsKQotICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoY2VsbCkpOwotICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7
Ci0gICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19ERkdPcGVyYXRp
b25fRUNDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEpTQ2VsbCogY2Vs
bCkKLSAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBUcnVzdGVkSW1tUHRyKGNlbGwpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwotICAgIH0KLSAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfREZHT3BlcmF0aW9uX0VJY2Ygb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKLSAgICB7
Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRy
KGlubGluZUNhbGxGcmFtZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Ci0gICAgfQotICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19ERkdPcGVyYXRpb25fRVN0IG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgewotICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOwotICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KENfREZHT3BlcmF0aW9uX0VKc3NTdCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBh
cmcxLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7Ci0gICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Q19ERkdPcGVyYXRpb25fRUpzc0pzcyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMikKLSAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwotICAgIH0KLSAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfREZHT3BlcmF0aW9uX0VKc3NKc3NKc3Mgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBh
cmczKQotICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIsIGFyZzMpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Ci0gICAgfQorCisKICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfREZHT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCkKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1Z
X0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZyk7CkBAIC0xNTMxLDExICsxNDQ4LDcgQEAgcHVibGlj
OgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9E
VU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQot
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19ERkdPcGVyYXRpb25fRUNDIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQotICAgIHsK
LSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwot
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdCk7Ci0gICAgfQorCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihTX0RGR09wZXJhdGlvbl9FSkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcg
YXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQ
YXlsb2FkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyUGF5bG9hZCwg
YXJnMlRhZyk7CkBAIC0xNTc5LDIxICsxNDkyLDcgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CiAgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5
bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihWX0RGR09wZXJhdGlvbl9FQyBvcGVyYXRpb24sIEdQUlJlZyBhcmcxKQotICAgIHsKLSAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwotICAgIH0KLSAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VDSWNmIG9w
ZXJhdGlvbiwgR1BSUmVnIGFyZzEsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQot
ICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRy
dXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7Ci0gICAgfQotICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRUNDSWNmIG9wZXJhdGlvbiwgR1BSUmVn
IGFyZzEsIEdQUlJlZyBhcmcyLCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKLSAg
ICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LCBUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxGcmFtZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwotICAgIH0KKwogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRUpQUCBvcGVyYXRpb24sIEdQ
UlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIEdQUlJlZyBhcmcyLCB2b2lkKiBwb2lu
dGVyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVB
QklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyLCBUcnVzdGVkSW1t
UHRyKHBvaW50ZXIpKTsKQEAgLTE2MDksMjYgKzE1MDgsMTMgQEAgcHVibGljOgogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMlBheWxvYWQsIGFyZzJU
YWcsIGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihWX0RGR09wZXJhdGlvbl9FQ1ogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwg
aW50IGFyZzIpCi0gICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgVHJ1c3RlZEltbTMyKGFyZzIpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKLSAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihWX0RGR09wZXJhdGlvbl9FQ0Mgb3BlcmF0aW9uLCBHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIpCi0gICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrKG9wZXJhdGlvbik7Ci0gICAgfQorCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihWX0RGR09wZXJhdGlvbl9FUFpKIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBHUFJSZWcgYXJnM1RhZywgR1BSUmVnIGFyZzNQYXlsb2FkKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVBQklf
MzJCSVRfRFVNTVlfQVJHIGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9Ci0gICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0RGR09wZXJhdGlvbl9FT1pEIG9wZXJhdGlvbiwg
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBGUFJSZWcgYXJnMykKLSAgICB7Ci0gICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKLSAgICB9
CisKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VP
Wkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczVGFnLCBH
UFJSZWcgYXJnM1BheWxvYWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnM1BheWxvYWQs
IGFyZzNUYWcpOwpAQCAtMTYzOSwzNiArMTUyNSw2IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVBQklfMzJCSVRfRFVNTVlf
QVJHIGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihWX0RGR09wZXJhdGlvbl9XIG9wZXJhdGlvbiwgV2F0Y2hwb2ludFNldCog
d2F0Y2hwb2ludFNldCkKLSAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzKFRydXN0
ZWRJbW1QdHIod2F0Y2hwb2ludFNldCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVy
YXRpb24pOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVu
YW1lIEFyZ3VtZW50VHlwZTE+Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihG
dW5jdGlvblR5cGUgb3BlcmF0aW9uLCBOb1Jlc3VsdFRhZywgQXJndW1lbnRUeXBlMSBhcmcxKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCBhcmcxKTsKLSAg
ICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBBcmd1bWVu
dFR5cGUxLCB0eXBlbmFtZSBBcmd1bWVudFR5cGUyPgotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oRnVuY3Rpb25UeXBlIG9wZXJhdGlvbiwgTm9SZXN1bHRUYWcsIEFyZ3VtZW50
VHlwZTEgYXJnMSwgQXJndW1lbnRUeXBlMiBhcmcyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uLCBhcmcxLCBhcmcyKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBBcmd1bWVudFR5cGUxLCB0eXBlbmFtZSBB
cmd1bWVudFR5cGUyLCB0eXBlbmFtZSBBcmd1bWVudFR5cGUzPgotICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oRnVuY3Rpb25UeXBlIG9wZXJhdGlvbiwgTm9SZXN1bHRUYWcsIEFy
Z3VtZW50VHlwZTEgYXJnMSwgQXJndW1lbnRUeXBlMiBhcmcyLCBBcmd1bWVudFR5cGUzIGFyZzMp
Ci0gICAgewotICAgICAgICByZXR1cm4gY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIGFyZzEsIGFy
ZzIsIGFyZzMpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5
cGVuYW1lIEFyZ3VtZW50VHlwZTEsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTIsIHR5cGVuYW1lIEFy
Z3VtZW50VHlwZTMsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTQ+Ci0gICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihGdW5jdGlvblR5cGUgb3BlcmF0aW9uLCBOb1Jlc3VsdFRhZywgQXJn
dW1lbnRUeXBlMSBhcmcxLCBBcmd1bWVudFR5cGUyIGFyZzIsIEFyZ3VtZW50VHlwZTMgYXJnMywg
QXJndW1lbnRUeXBlNCBhcmc0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uLCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0KTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBBcmd1bWVudFR5cGUxLCB0eXBlbmFtZSBB
cmd1bWVudFR5cGUyLCB0eXBlbmFtZSBBcmd1bWVudFR5cGUzLCB0eXBlbmFtZSBBcmd1bWVudFR5
cGU0LCB0eXBlbmFtZSBBcmd1bWVudFR5cGU1PgotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oRnVuY3Rpb25UeXBlIG9wZXJhdGlvbiwgTm9SZXN1bHRUYWcsIEFyZ3VtZW50VHlw
ZTEgYXJnMSwgQXJndW1lbnRUeXBlMiBhcmcyLCBBcmd1bWVudFR5cGUzIGFyZzMsIEFyZ3VtZW50
VHlwZTQgYXJnNCwgQXJndW1lbnRUeXBlNSBhcmc1KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uLCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1KTsKLSAg
ICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKERfREZHT3BlcmF0aW9u
X0VKIG9wZXJhdGlvbiwgRlBSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcx
UGF5bG9hZCkKICAgICB7CkBAIC0xNjc2LDI4ICsxNTMyLDYgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CiAgICAgfQogCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihEX0RG
R09wZXJhdGlvbl9aWiBvcGVyYXRpb24sIEZQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMikKLSAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzKGFyZzEsIGFyZzIp
OwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7
Ci0gICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRF9ERkdPcGVyYXRp
b25fREQgb3BlcmF0aW9uLCBGUFJSZWcgcmVzdWx0LCBGUFJSZWcgYXJnMSwgRlBSUmVnIGFyZzIp
Ci0gICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwotICAgIH0K
LSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFN0cl9ERkdPcGVyYXRpb25fRUpz
cyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQotICAgIHsKLSAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7
Ci0gICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19ERkdPcGVyYXRp
b25fRVogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKLSAgICB7Ci0gICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKLSAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOwotICAgIH0KLQotCiAjdW5kZWYgRUFCSV8zMkJJVF9EVU1NWV9BUkcKICAgICAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGU+CkBAIC0xNzQ2LDcgKzE1ODAsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgb3BlcmF0aW9u
LCByZXN1bHQudGFnR1BSKCksIHJlc3VsdC5wYXlsb2FkR1BSKCksIGFyZzEsIGFyZzIsIGFyZzMs
IGFyZzQsIGFyZzUpOwogICAgIH0KLSNlbmRpZgorI2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQp
CiAgICAgCiAjaWYgIWRlZmluZWQoTkRFQlVHKSAmJiAhQ1BVKEFSTSkgJiYgIUNQVShNSVBTKQog
ICAgIHZvaWQgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpCg==
</data>
<flag name="review"
          id="220638"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>