<?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>111435</bug_id>
          
          <creation_ts>2013-03-05 06:44:14 -0800</creation_ts>
          <short_desc>[Qt][WK2] Specify storage paths through the C API</short_desc>
          <delta_ts>2013-09-09 02:23:48 -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>New Bugs</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>
          <dependson>108475</dependson>
    
    <dependson>112223</dependson>
    
    <dependson>121022</dependson>
          <blocked>109564</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jocelyn Turcotte">jturcotte</reporter>
          <assigned_to name="Jocelyn Turcotte">jturcotte</assigned_to>
          <cc>jturcotte</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>847631</commentid>
    <comment_count>0</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-03-05 06:44:14 -0800</bug_when>
    <thetext>[Qt][WK2] Specify storage paths through the C API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847658</commentid>
    <comment_count>1</comment_count>
      <attachid>191494</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-03-05 07:15:50 -0800</bug_when>
    <thetext>Created attachment 191494
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847660</commentid>
    <comment_count>2</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-03-05 07:17:10 -0800</bug_when>
    <thetext>This follows the input given in bug 109455.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848778</commentid>
    <comment_count>3</comment_count>
      <attachid>191494</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-03-06 06:01:46 -0800</bug_when>
    <thetext>Comment on attachment 191494
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850474</commentid>
    <comment_count>4</comment_count>
      <attachid>191494</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-03-07 14:10:27 -0800</bug_when>
    <thetext>Comment on attachment 191494
Patch

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

No problem with this per se, but I am unhappy there are both C APIs and platformDefault. It would be good if we could get rid of platformDefault for everyone.

Okay for this patch on WebKit2.

&gt; Source/WebKit2/UIProcess/Plugins/qt/PluginProcessProxyQt.cpp:66
&gt; +    QString cachePath = QStandardPaths::writableLocation(QStandardPaths::CacheLocation);
&gt; +    ASSERT(!cachePath.isEmpty());

I don&apos;t know if the user has any control over QStandardPaths::writableLocation.

If there is any way for cachePath.isEmpty() to be empty due to a user mistake, it would be good to have a fall back in addition to the assertion.

&gt; Source/WebKit2/UIProcess/qt/QtWebContext.cpp:161
&gt; +    Q_ASSERT(!path.isEmpty());

ditto

&gt; Source/WebKit2/UIProcess/qt/QtWebIconDatabaseClient.cpp:57
&gt; +    WKContextSetIconDatabasePath(toAPI(context), adoptWK(WKStringCreateWithQString(QtWebContext::preparedStoragePath(QtWebContext::IconDatabaseStorage))).get());

I would split this line to have
    [...]
    WKContextSetIconDatabasePath((toAPI(context), path.get());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852240</commentid>
    <comment_count>5</comment_count>
      <attachid>192457</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-03-11 06:40:02 -0700</bug_when>
    <thetext>Created attachment 192457
Patch

Added empty cache file path handling in PluginProcessProxyQt.cpp.
I&apos;d prefer to keep the assert instead of handling an empty data location in QtWebContext since it complexifies the code a lot more, and there is no way to test this code, so I&apos;d prefer to see if it is really needed before. From my research in the QStandardPaths implementation, there should always be a non-empty path returned for DataLocation and CacheLocation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852262</commentid>
    <comment_count>6</comment_count>
      <attachid>192457</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-03-11 07:07:59 -0700</bug_when>
    <thetext>Comment on attachment 192457
Patch

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

&gt; Source/WebKit2/ChangeLog:7
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +

Missing sign-off line :). Please fix before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853318</commentid>
    <comment_count>7</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-03-12 04:18:18 -0700</bug_when>
    <thetext>Committed r145517: &lt;http://trac.webkit.org/changeset/145517&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191494</attachid>
            <date>2013-03-05 07:15:50 -0800</date>
            <delta_ts>2013-03-11 06:39:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111435-20130305161156.patch</filename>
            <type>text/plain</type>
            <size>17644</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggY2MyNTQ1YTBkYTJkYWE3
NmZkNzE4YTQ5N2I3ZjA5YWEwMDE0ODk3NS4uZjRkZTYxMjliMTM0YjM3YTkzNjc1Y2Y4MTU4NWIy
Y2U0NWJhN2YyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEzLTAzLTA1ICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBkaWdpYS5jb20+CisKKyAgICAgICAgW1F0
XVtXSzJdIFNwZWNpZnkgc3RvcmFnZSBwYXRocyB0aHJvdWdoIHRoZSBDIEFQSQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExNDM1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIFdLSWNvbkRhdGFiYXNl
IHNob3VsZCBiZSBvcGVuZWQgdGhyb3VnaCBhIGNhbGwgdG8KKyAgICAgICAgV0tDb250ZXh0U2V0
SWNvbkRhdGFiYXNlUGF0aC4gVG8gYXZvaWQgaGF2aW5nIHNvbWUgcGF0aHMKKyAgICAgICAgcmV0
dXJuZWQgdGhyb3VnaCBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHQqIGFuZCBzb21lIG90aGVy
cworICAgICAgICB0aHJvdWdoIHRoZSBDIEFQSSwgbWFrZSBzdXJlIHRoYXQgYWxsIHRob3NlIHBh
dGhzIGFyZSBzZXQKKyAgICAgICAgdGhyb3VnaCB0aGUgQyBBUEkuCisKKyAgICAgICAgKiBTaGFy
ZWQvcXQvUXREZWZhdWx0RGF0YUxvY2F0aW9uLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFy
ZWQvcXQvUXREZWZhdWx0RGF0YUxvY2F0aW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogVGFyZ2V0
LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9xdC9QbHVnaW5Qcm9jZXNzUHJveHlR
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNhY2hlRmlsZSk6CisgICAgICAgICAgLSBUaGlzIHBh
cnQgaXMgbGVmdCBhbG9uZSBiZWhpbmQgdGhlIEMgQVBJLgorICAgICAgICAgICAgU2luY2UgUGx1
Z2luUHJvY2Vzc1Byb3h5IGhhdmUgbm8ga25vd2xlZGdlIG9mIHRoZSBXZWJDb250ZXh0CisgICAg
ICAgICAgICBpdCBpcyByYXRoZXIgZGlmZmljdWx0IHRvIGZldGNoIGEgY29uZmlndXJlZCBkaXJl
Y3RvcnkgdGhhdAorICAgICAgICAgICAgY291bGQgYmUgdXNlZCBmb3IgdGhpcyBwdXJwb3NlIChs
aWtlIHRoZSBkaXNrIGNhY2hlIHN0b3JhZ2UpLgorICAgICAgICAgICAgSGFyZC1jb2RlIGEgY29t
cGF0aWJsZSBsb2dpYyB0byBrZWVwIHRoZSBjdXJyZW50IGJlaGF2aW9yLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9xdC9RdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpRdFdlYkNvbnRl
eHQ6OmRlZmF1bHRDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6ZGVmYXVsdExvY2F0aW9uKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OlF0V2ViQ29udGV4dDo6cHJlcGFy
ZWRTdG9yYWdlUGF0aCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViQ29udGV4dC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYkljb25EYXRhYmFzZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50OjpRdFdlYkljb25EYXRhYmFzZUNs
aWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREYXRhYmFzZURpcmVjdG9yeSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdEljb25EYXRhYmFz
ZVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHRMb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9y
bURlZmF1bHREaXNrQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0
OjpwbGF0Zm9ybURlZmF1bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5KToKKwogMjAxMy0wMi0xNCAg
Sm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAZGlnaWEuY29tPgogCiAgICAgICAg
IFtRdF0gUHJvcGVybHkgbGF5ZXIgUXRXZWJDb250ZXh0IG9uIHRvcCBvZiB0aGUgQyBBUEkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9RdERlZmF1bHREYXRhTG9jYXRpb24u
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1F0RGVmYXVsdERhdGFMb2NhdGlvbi5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3MThiOTRkM2MxMDAzNjMzN2ZmMTc2YTU3
ZWUzZThmN2NjZjMwZTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1F0RGVmYXVsdERhdGFMb2NhdGlvbi5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMiBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBVbml2ZXJzaXR5IG9mIFN6ZWdlZC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUXREZWZhdWx0RGF0YUxvY2F0
aW9uLmgiCi0KLSNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgotI2luY2x1ZGUgPFFEaXI+Ci0j
aW5jbHVkZSA8UVN0YW5kYXJkUGF0aHM+Ci0jaW5jbHVkZSA8UVN0cmluZ0J1aWxkZXI+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1RU3Ry
aW5nIGRlZmF1bHREYXRhTG9jYXRpb24oKQotewotICAgIHN0YXRpYyBRU3RyaW5nIHNfZGF0YUxv
Y2F0aW9uOwotCi0gICAgaWYgKCFzX2RhdGFMb2NhdGlvbi5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBzX2RhdGFMb2NhdGlvbjsKLQotICAgIFFTdHJpbmcgZGF0YUxvY2F0aW9uID0gUVN0YW5k
YXJkUGF0aHM6OndyaXRhYmxlTG9jYXRpb24oUVN0YW5kYXJkUGF0aHM6OkRhdGFMb2NhdGlvbik7
Ci0gICAgaWYgKGRhdGFMb2NhdGlvbi5pc0VtcHR5KCkpCi0gICAgICAgIGRhdGFMb2NhdGlvbiA9
IFFEaXI6OmhvbWVQYXRoKCkgJSBRRGlyOjpzZXBhcmF0b3IoKSAlIFFDb3JlQXBwbGljYXRpb246
OmFwcGxpY2F0aW9uTmFtZSgpOwotICAgIHNfZGF0YUxvY2F0aW9uID0gZGF0YUxvY2F0aW9uICUg
UURpcjo6c2VwYXJhdG9yKCkgJSBRU3RyaW5nTGl0ZXJhbCgiLlF0V2ViS2l0IikgJSBRRGlyOjpz
ZXBhcmF0b3IoKTsKLSAgICBRRGlyOjpyb290KCkubWtwYXRoKHNfZGF0YUxvY2F0aW9uKTsKLQot
ICAgIHJldHVybiBzX2RhdGFMb2NhdGlvbjsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL3F0L1F0RGVmYXVsdERhdGFMb2NhdGlvbi5oIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL3F0L1F0RGVmYXVsdERhdGFMb2NhdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5ZjMyYzg3OTU3N2YwYTQ4YmY4NGUxYWUzMmFhZjRhMGJkODQ2MjhjLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9xdC9RdERlZmF1bHREYXRhTG9jYXRpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKQotICogQ29weXJpZ2h0IChDKSAyMDEyIFVuaXZlcnNpdHkgb2Yg
U3plZ2VkLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgUXREZWZhdWx0
RGF0YUxvY2F0aW9uX2gKLSNkZWZpbmUgUXREZWZhdWx0RGF0YUxvY2F0aW9uX2gKLQotI2luY2x1
ZGUgPFFTdHJpbmc+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1RU3RyaW5nIGRlZmF1bHREYXRh
TG9jYXRpb24oKTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Rh
cmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IGNlNmMwODEyZmJmZGJk
YmU0MjZmYzMwMjcwMGY0NGFiZGFkOGVhZWYuLmQ3YTI1MzliZGVjMDZhYWFkYmMxYzgzNmIwNDRm
YzkyMTRjMzMwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIv
U291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpAQCAtMTQ5LDcgKzE0OSw2IEBAIEhFQURFUlMgKz0g
XAogICAgIFNoYXJlZC9xdC9Bcmd1bWVudENvZGVyc1F0LmggXAogICAgIFNoYXJlZC9xdC9QbGF0
Zm9ybUNlcnRpZmljYXRlSW5mby5oIFwKICAgICBTaGFyZWQvcXQvV2ViRXZlbnRGYWN0b3J5UXQu
aCBcCi0gICAgU2hhcmVkL3F0L1F0RGVmYXVsdERhdGFMb2NhdGlvbi5oIFwKICAgICBTaGFyZWQv
cXQvUXROZXR3b3JrUmVwbHlEYXRhLmggXAogICAgIFNoYXJlZC9xdC9RdE5ldHdvcmtSZXF1ZXN0
RGF0YS5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmggXApAQCAtNTA1LDcgKzUw
NCw2IEBAIFNPVVJDRVMgKz0gXAogICAgIFNoYXJlZC9xdC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhR
dC5jcHAgXAogICAgIFNoYXJlZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHAgXAogICAg
IFNoYXJlZC9xdC9XZWJFdmVudEZhY3RvcnlRdC5jcHAgXAotICAgIFNoYXJlZC9xdC9RdERlZmF1
bHREYXRhTG9jYXRpb24uY3BwIFwKICAgICBTaGFyZWQvcXQvUXROZXR3b3JrUmVwbHlEYXRhLmNw
cCBcCiAgICAgU2hhcmVkL3F0L1F0TmV0d29ya1JlcXVlc3REYXRhLmNwcCBcCiAgICAgU2hhcmVk
L3F0L1dlYlVSTFJlcXVlc3RRdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BsdWdpbnMvcXQvUGx1Z2luUHJvY2Vzc1Byb3h5UXQuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvcXQvUGx1Z2luUHJvY2Vzc1Byb3h5UXQuY3BwCmluZGV4IDYy
MzNhMGY3ZjdmNWE0MGIzOWRlMTIyNWQ3NWM4MTczNzk5YjcxMWIuLjM4YjIwNTdiNTNkYWIwZDNi
ZmQ1ZTY4M2ExY2JiYzFhZjExODlkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QbHVnaW5zL3F0L1BsdWdpblByb2Nlc3NQcm94eVF0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9xdC9QbHVnaW5Qcm9jZXNzUHJveHlRdC5jcHAKQEAgLTI5
LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAKICNpbmNsdWRlICJQcm9j
ZXNzRXhlY3V0YWJsZVBhdGguaCIKLSNpbmNsdWRlICJRdERlZmF1bHREYXRhTG9jYXRpb24uaCIK
ICNpbmNsdWRlIDxRQnl0ZUFycmF5PgogI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CiAjaW5j
bHVkZSA8UURhdGVUaW1lPgpAQCAtNDEsNiArNDAsNyBAQAogI2luY2x1ZGUgPFFKc29uT2JqZWN0
PgogI2luY2x1ZGUgPFFNYXA+CiAjaW5jbHVkZSA8UVByb2Nlc3M+CisjaW5jbHVkZSA8UVN0YW5k
YXJkUGF0aHM+CiAjaW5jbHVkZSA8UVN0cmluZ0J1aWxkZXI+CiAjaW5jbHVkZSA8UVZhcmlhbnQ+
CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CkBAIC02Miw3ICs2MiwxMyBAQCB2b2lk
IFBsdWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2VzcyhQbHVn
aW5Qcm9jZXNzQ3JlYXRpb25QYQogCiBzdGF0aWMgUGFzc093blB0cjxRRmlsZT4gY2FjaGVGaWxl
KCkKIHsKLSAgICBzdGF0aWMgUVN0cmluZyBjYWNoZUZpbGVQYXRoID0gZGVmYXVsdERhdGFMb2Nh
dGlvbigpICUgUVN0cmluZ0xpdGVyYWwoInBsdWdpbl9tZXRhX2RhdGEuanNvbiIpOworICAgIFFT
dHJpbmcgY2FjaGVQYXRoID0gUVN0YW5kYXJkUGF0aHM6OndyaXRhYmxlTG9jYXRpb24oUVN0YW5k
YXJkUGF0aHM6OkNhY2hlTG9jYXRpb24pOworICAgIEFTU0VSVCghY2FjaGVQYXRoLmlzRW1wdHko
KSk7CisgICAgLy8gVGhpcyBzaG91bGQgbWF0Y2ggdGhlIHBhdGggc2V0IHRocm91Z2ggV0tDb250
ZXh0U2V0RGlza0NhY2hlRGlyZWN0b3J5LgorICAgIGNhY2hlUGF0aC5hcHBlbmQoUURpcjo6c2Vw
YXJhdG9yKCkpLmFwcGVuZChRU3RyaW5nTGl0ZXJhbCgiLlF0V2ViS2l0IikpLmFwcGVuZChRRGly
OjpzZXBhcmF0b3IoKSk7CisgICAgUVN0cmluZyBjYWNoZUZpbGVQYXRoID0gY2FjaGVQYXRoICUg
UVN0cmluZ0xpdGVyYWwoInBsdWdpbl9tZXRhX2RhdGEuanNvbiIpOworCisgICAgUURpcjo6cm9v
dCgpLm1rcGF0aChjYWNoZVBhdGgpOwogICAgIHJldHVybiBhZG9wdFB0cihuZXcgUUZpbGUoY2Fj
aGVGaWxlUGF0aCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkNv
bnRleHQuY3BwCmluZGV4IDNkZWY0NGQ5MWQ1NjM1OWVkYTQ0MTEzMWE3MzE1ZTg0NWRkYWJjMTIu
Ljg2NzJiN2M5MWJlMjMxZjc2ZTBmNDRmODk0MjZkZDc5NzBkYzVmYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkNvbnRleHQuY3BwCkBAIC0yNSwxMCArMjUsMTUgQEAK
ICNpbmNsdWRlICJRdFdlYkljb25EYXRhYmFzZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkluc3Bl
Y3RvclNlcnZlci5oIgogI2luY2x1ZGUgInFxdWlja3dlYnZpZXdfcF9wLmgiCisjaW5jbHVkZSA8
UURpcj4KKyNpbmNsdWRlIDxRU3RhbmRhcmRQYXRocz4KKyNpbmNsdWRlIDxRU3RyaW5nQnVpbGRl
cj4KICNpbmNsdWRlIDxXS0FQSUNhc3QuaD4KICNpbmNsdWRlIDxXS0FycmF5Lmg+CisjaW5jbHVk
ZSA8V0tDb250ZXh0UHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdLUGFnZS5oPgogI2luY2x1ZGUgPFdL
U3RyaW5nLmg+CisjaW5jbHVkZSA8V0tTdHJpbmdRdC5oPgogI2luY2x1ZGUgPFdLVHlwZS5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEzOCwxMSArMTQzLDU2IEBAIFF0V2ViQ29udGV4dCog
UXRXZWJDb250ZXh0OjpkZWZhdWx0Q29udGV4dCgpCiAgICAgICAgIC8vIEEgZ29vZCBhbGwtYXJv
dW5kIGRlZmF1bHQuCiAgICAgICAgIFdLQ29udGV4dFNldENhY2hlTW9kZWwod2tDb250ZXh0Lmdl
dCgpLCBrV0tDYWNoZU1vZGVsRG9jdW1lbnRCcm93c2VyKTsKIAorICAgICAgICAvLyBUaG9zZSBw
YXRocyBoYXZlIHRvIGJlIHNldCBiZWZvcmUgdGhlIGZpcnN0IHdlYiBwcm9jZXNzIGlzIHNwYXdu
ZWQuCisgICAgICAgIFdLQ29udGV4dFNldERhdGFiYXNlRGlyZWN0b3J5KHdrQ29udGV4dC5nZXQo
KSwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhRU3RyaW5nKHByZXBhcmVkU3RvcmFnZVBhdGgo
RGF0YWJhc2VTdG9yYWdlKSkpLmdldCgpKTsKKyAgICAgICAgV0tDb250ZXh0U2V0TG9jYWxTdG9y
YWdlRGlyZWN0b3J5KHdrQ29udGV4dC5nZXQoKSwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhR
U3RyaW5nKHByZXBhcmVkU3RvcmFnZVBhdGgoTG9jYWxTdG9yYWdlKSkpLmdldCgpKTsKKyAgICAg
ICAgV0tDb250ZXh0U2V0Q29va2llU3RvcmFnZURpcmVjdG9yeSh3a0NvbnRleHQuZ2V0KCksIGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoUVN0cmluZyhwcmVwYXJlZFN0b3JhZ2VQYXRoKENvb2tp
ZVN0b3JhZ2UpKSkuZ2V0KCkpOworICAgICAgICBXS0NvbnRleHRTZXREaXNrQ2FjaGVEaXJlY3Rv
cnkod2tDb250ZXh0LmdldCgpLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFFTdHJpbmcocHJl
cGFyZWRTdG9yYWdlUGF0aChEaXNrQ2FjaGVTdG9yYWdlKSkpLmdldCgpKTsKKwogICAgICAgICBz
X2RlZmF1bHRRdFdlYkNvbnRleHQgPSBRdFdlYkNvbnRleHQ6OmNyZWF0ZSh3a0NvbnRleHQuZ2V0
KCkpOwogICAgIH0KIAogICAgIHJldHVybiBzX2RlZmF1bHRRdFdlYkNvbnRleHQ7CiB9CiAKK3N0
YXRpYyBRU3RyaW5nIGRlZmF1bHRMb2NhdGlvbihRU3RhbmRhcmRQYXRoczo6U3RhbmRhcmRMb2Nh
dGlvbiB0eXBlKQoreworICAgIFFTdHJpbmcgcGF0aCA9IFFTdGFuZGFyZFBhdGhzOjp3cml0YWJs
ZUxvY2F0aW9uKHR5cGUpOworICAgIFFfQVNTRVJUKCFwYXRoLmlzRW1wdHkoKSk7CisgICAgcmV0
dXJuIHBhdGggJSBRRGlyOjpzZXBhcmF0b3IoKSAlIFFTdHJpbmdMaXRlcmFsKCIuUXRXZWJLaXQi
KSAlIFFEaXI6OnNlcGFyYXRvcigpOworfQorCitRU3RyaW5nIFF0V2ViQ29udGV4dDo6cHJlcGFy
ZWRTdG9yYWdlUGF0aChTdG9yYWdlVHlwZSB0eXBlKQoreworICAgIFFTdHJpbmcgcGF0aDsKKyAg
ICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIERhdGFiYXNlU3RvcmFnZToKKyAgICAgICAgcGF0
aCA9IGRlZmF1bHRMb2NhdGlvbihRU3RhbmRhcmRQYXRoczo6RGF0YUxvY2F0aW9uKSAlIFFTdHJp
bmdMaXRlcmFsKCJEYXRhYmFzZXMiKTsKKyAgICAgICAgUURpcjo6cm9vdCgpLm1rcGF0aChwYXRo
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMb2NhbFN0b3JhZ2U6CisgICAgICAgIHBhdGgg
PSBkZWZhdWx0TG9jYXRpb24oUVN0YW5kYXJkUGF0aHM6OkRhdGFMb2NhdGlvbikgJSBRU3RyaW5n
TGl0ZXJhbCgiTG9jYWxTdG9yYWdlIik7CisgICAgICAgIFFEaXI6OnJvb3QoKS5ta3BhdGgocGF0
aCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29va2llU3RvcmFnZToKKyAgICAgICAgcGF0
aCA9IGRlZmF1bHRMb2NhdGlvbihRU3RhbmRhcmRQYXRoczo6RGF0YUxvY2F0aW9uKTsKKyAgICAg
ICAgUURpcjo6cm9vdCgpLm1rcGF0aChwYXRoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBE
aXNrQ2FjaGVTdG9yYWdlOgorICAgICAgICBwYXRoID0gZGVmYXVsdExvY2F0aW9uKFFTdGFuZGFy
ZFBhdGhzOjpDYWNoZUxvY2F0aW9uKSAlIFFTdHJpbmdMaXRlcmFsKCJEaXNrQ2FjaGUiKTsKKyAg
ICAgICAgUURpcjo6cm9vdCgpLm1rcGF0aChwYXRoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBJY29uRGF0YWJhc2VTdG9yYWdlOgorICAgICAgICBwYXRoID0gZGVmYXVsdExvY2F0aW9uKFFT
dGFuZGFyZFBhdGhzOjpEYXRhTG9jYXRpb24pOworICAgICAgICBRRGlyOjpyb290KCkubWtwYXRo
KHBhdGgpOworICAgICAgICBwYXRoICs9IFFTdHJpbmdMaXRlcmFsKCJXZWJwYWdlSWNvbnMuZGIi
KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUV9BU1NFUlQoZmFsc2Up
OworICAgIH0KKworICAgIHJldHVybiBwYXRoOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViQ29udGV4dC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViQ29udGV4dC5oCmluZGV4IDU1OGY0
Y2EzNmY5MTFkZGE4NjUxZjc1MTU3ODA5OWY0NjBlZDg4ZWUuLjQyNTFmMjllN2UyY2Q1ZTFiZGIw
NTExNTI1N2I3Y2ZhMjNkOTVmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9RdFdlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRX
ZWJDb250ZXh0LmgKQEAgLTM1LDkgKzM1LDE5IEBAIGNsYXNzIFF0V2ViQ29udGV4dCB7CiBwdWJs
aWM6CiAgICAgflF0V2ViQ29udGV4dCgpOwogCisgICAgZW51bSBTdG9yYWdlVHlwZSB7CisgICAg
ICAgIERhdGFiYXNlU3RvcmFnZSwKKyAgICAgICAgTG9jYWxTdG9yYWdlLAorICAgICAgICBDb29r
aWVTdG9yYWdlLAorICAgICAgICBEaXNrQ2FjaGVTdG9yYWdlLAorICAgICAgICBJY29uRGF0YWJh
c2VTdG9yYWdlCisgICAgfTsKKwogICAgIHN0YXRpYyBRdFdlYkNvbnRleHQqIGNyZWF0ZShXS0Nv
bnRleHRSZWYpOwogICAgIHN0YXRpYyBRdFdlYkNvbnRleHQqIGRlZmF1bHRDb250ZXh0KCk7CiAK
KyAgICBzdGF0aWMgUVN0cmluZyBwcmVwYXJlZFN0b3JhZ2VQYXRoKFN0b3JhZ2VUeXBlKTsKKwog
ICAgIFdLQ29udGV4dFJlZiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CiAK
ICAgICBRdERvd25sb2FkTWFuYWdlciogZG93bmxvYWRNYW5hZ2VyKCkgeyByZXR1cm4gbV9kb3du
bG9hZE1hbmFnZXIuZGF0YSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXRXZWJJY29uRGF0YWJhc2VDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0V2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcAppbmRleCAzZjM4ZDY0OTQ3MDlhZGJj
MThiOTU3ZTIyMTM0NWViMWRmYzlhYzZhLi45ZTZiYmQxNzBjZWJhYjBmZTQwMjFiZDQ0MTNlY2U3
ZGIxNjdjNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJJ
Y29uRGF0YWJhc2VDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9R
dFdlYkljb25EYXRhYmFzZUNsaWVudC5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKIAogI2luY2x1ZGUg
IkltYWdlLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlF0V2ViQ29udGV4dC5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldLVVJMUXQuaCIKICNpbmNsdWRl
ICJXZWJDb250ZXh0LmgiCkBAIC0zMCw2ICszMSw5IEBACiAjaW5jbHVkZSA8UXRDb3JlL1FPYmpl
Y3Q+CiAjaW5jbHVkZSA8UXRDb3JlL1FVcmw+CiAjaW5jbHVkZSA8UXRHdWkvUUltYWdlPgorI2lu
Y2x1ZGUgPFdLQ29udGV4dFByaXZhdGUuaD4KKyNpbmNsdWRlIDxXS1JldGFpblB0ci5oPgorI2lu
Y2x1ZGUgPFdLU3RyaW5nUXQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQxLDkgKzQ1
LDYgQEAgc3RhdGljIGlubGluZSBRdFdlYkljb25EYXRhYmFzZUNsaWVudCogdG9RdFdlYkljb25E
YXRhYmFzZUNsaWVudChjb25zdCB2b2lkKiBjbGkKIAogUXRXZWJJY29uRGF0YWJhc2VDbGllbnQ6
OlF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50KFdlYkNvbnRleHQgKmNvbnRleHQpCiB7Ci0gICAgLy8g
VGhlIHNldHRlciBjYWxscyB0aGUgZ2V0dGVyIGhlcmUgYXMgaXQgdHJpZ2dlcnMgdGhlIHN0YXJ0
dXAgb2YgdGhlIGljb24gZGF0YWJhc2UuCi0gICAgaWYgKCFjb250ZXh0LT5pY29uRGF0YWJhc2Uo
KS0+aXNPcGVuKCkpCi0gICAgICAgIGNvbnRleHQtPnNldEljb25EYXRhYmFzZVBhdGgoY29udGV4
dC0+aWNvbkRhdGFiYXNlUGF0aCgpKTsKICAgICBtX2ljb25EYXRhYmFzZSA9IGNvbnRleHQtPmlj
b25EYXRhYmFzZSgpOwogCiAgICAgV0tJY29uRGF0YWJhc2VDbGllbnQgaWNvbkRhdGFiYXNlQ2xp
ZW50OwpAQCAtNTIsNiArNTMsOCBAQCBRdFdlYkljb25EYXRhYmFzZUNsaWVudDo6UXRXZWJJY29u
RGF0YWJhc2VDbGllbnQoV2ViQ29udGV4dCAqY29udGV4dCkKICAgICBpY29uRGF0YWJhc2VDbGll
bnQuY2xpZW50SW5mbyA9IHRoaXM7CiAgICAgaWNvbkRhdGFiYXNlQ2xpZW50LmRpZENoYW5nZUlj
b25Gb3JQYWdlVVJMID0gZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkw7CiAgICAgV0tJY29uRGF0YWJh
c2VTZXRJY29uRGF0YWJhc2VDbGllbnQodG9BUEkobV9pY29uRGF0YWJhc2UuZ2V0KCkpLCAmaWNv
bkRhdGFiYXNlQ2xpZW50KTsKKyAgICAvLyBUcmlnZ2VycyB0aGUgc3RhcnR1cCBvZiB0aGUgaWNv
biBkYXRhYmFzZS4KKyAgICBXS0NvbnRleHRTZXRJY29uRGF0YWJhc2VQYXRoKHRvQVBJKGNvbnRl
eHQpLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFFTdHJpbmcoUXRXZWJDb250ZXh0OjpwcmVw
YXJlZFN0b3JhZ2VQYXRoKFF0V2ViQ29udGV4dDo6SWNvbkRhdGFiYXNlU3RvcmFnZSkpKS5nZXQo
KSk7CiB9CiAKIFF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50Ojp+UXRXZWJJY29uRGF0YWJhc2VDbGll
bnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRR
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29udGV4dFF0LmNwcAppbmRl
eCBlNzE2ZGViYjM5M2ZiNzg4YjdlYjA4YzNjOTc4YTU2YjZmNWQyZjUwLi41OTVlZGNiN2EyODFk
YTc3ZTA5YmNjMDI3Mzg3M2M1ZjJhY2ZhZDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvV2ViQ29udGV4dFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvV2ViQ29udGV4dFF0LmNwcApAQCAtMjgsMTMgKzI4LDggQEAKICNpbmNsdWRlICJXZWJD
b250ZXh0LmgiCiAKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIgotI2luY2x1
ZGUgIkZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJRdERlZmF1bHREYXRhTG9jYXRpb24uaCIKLSNp
bmNsdWRlICJRdFdlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSA8UUNvcmVB
cHBsaWNhdGlvbj4KLSNpbmNsdWRlIDxRRGlyPgogI2luY2x1ZGUgPFFQcm9jZXNzPgogCiAjaWYg
RU5BQkxFKEdFT0xPQ0FUSU9OKQpAQCAtNDQsMjggKzM5LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1zdGF0aWMgUVN0cmluZyBzX2RlZmF1bHREYXRhYmFzZURpcmVjdG9yeTsKLXN0YXRp
YyBRU3RyaW5nIHNfZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeTsKLXN0YXRpYyBRU3RyaW5n
IHNfZGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3Rvcnk7Ci0KLVN0cmluZyBXZWJDb250ZXh0Ojpw
bGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdAotewotICAgIHN0YXRpYyBT
dHJpbmcgc19kZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5OwotCi0gICAgaWYgKCFzX2RlZmF1bHRE
aXNrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gc19kZWZhdWx0RGlz
a0NhY2hlRGlyZWN0b3J5OwotCi0gICAgc19kZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5ID0gV2Vi
Q29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRlZmF1bHREYXRhTG9jYXRpb24oKSwgImNh
Y2hlLyIpOwotICAgIFdlYkNvcmU6Om1ha2VBbGxEaXJlY3RvcmllcyhzX2RlZmF1bHREaXNrQ2Fj
aGVEaXJlY3RvcnkpOwotICAgIHJldHVybiBzX2RlZmF1bHREaXNrQ2FjaGVEaXJlY3Rvcnk7Ci19
Ci0KIFN0cmluZyBXZWJDb250ZXh0OjphcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKIHsKICAg
ICBjb25zdCBTdHJpbmcgY2FjaGVEaXJlY3RvcnkgPSBXZWJDb3JlOjpjYWNoZVN0b3JhZ2UoKS5j
YWNoZURpcmVjdG9yeSgpOwogCiAgICAgaWYgKGNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIHBsYXRmb3JtRGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSgpOworICAgICAg
ICByZXR1cm4gZGlza0NhY2hlRGlyZWN0b3J5KCk7CiAKICAgICByZXR1cm4gY2FjaGVEaXJlY3Rv
cnk7CiB9CkBAIC04NSwzNiArNjQsMjcgQEAgdm9pZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUludmFs
aWRhdGVDb250ZXh0KCkKIAogU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdERhdGFi
YXNlRGlyZWN0b3J5KCkgY29uc3QKIHsKLSAgICBpZiAoIXNfZGVmYXVsdERhdGFiYXNlRGlyZWN0
b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHNfZGVmYXVsdERhdGFiYXNlRGlyZWN0b3J5
OwotCi0gICAgc19kZWZhdWx0RGF0YWJhc2VEaXJlY3RvcnkgPSBkZWZhdWx0RGF0YUxvY2F0aW9u
KCkgKyBRTGF0aW4xU3RyaW5nKCJEYXRhYmFzZXMiKTsKLSAgICBRRGlyKCkubWtwYXRoKHNfZGVm
YXVsdERhdGFiYXNlRGlyZWN0b3J5KTsKLSAgICByZXR1cm4gc19kZWZhdWx0RGF0YWJhc2VEaXJl
Y3Rvcnk7CisgICAgcmV0dXJuIFN0cmluZygpOwogfQogCiBTdHJpbmcgV2ViQ29udGV4dDo6cGxh
dGZvcm1EZWZhdWx0SWNvbkRhdGFiYXNlUGF0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRlZmF1
bHREYXRhTG9jYXRpb24oKSArIFFMYXRpbjFTdHJpbmcoIldlYnBhZ2VJY29ucy5kYiIpOworICAg
IHJldHVybiBTdHJpbmcoKTsKIH0KIAogU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVs
dExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFzX2RlZmF1bHRMb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gc19kZWZhdWx0TG9j
YWxTdG9yYWdlRGlyZWN0b3J5OworICAgIHJldHVybiBTdHJpbmcoKTsKK30KIAotICAgIHNfZGVm
YXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGRlZmF1bHREYXRhTG9jYXRpb24oKSArIFFMYXRp
bjFTdHJpbmcoIkxvY2FsU3RvcmFnZSIpOwotICAgIFFEaXIoKS5ta3BhdGgoc19kZWZhdWx0TG9j
YWxTdG9yYWdlRGlyZWN0b3J5KTsKLSAgICByZXR1cm4gc19kZWZhdWx0TG9jYWxTdG9yYWdlRGly
ZWN0b3J5OworU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdERpc2tDYWNoZURpcmVj
dG9yeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFN0cmluZygpOwogfQogCiBTdHJpbmcgV2ViQ29u
dGV4dDo6cGxhdGZvcm1EZWZhdWx0Q29va2llU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFzX2RlZmF1bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIHNfZGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3Rvcnk7Ci0KLSAgICBzX2RlZmF1
bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5ID0gZGVmYXVsdERhdGFMb2NhdGlvbigpOwotICAgIHJl
dHVybiBzX2RlZmF1bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5OworICAgIHJldHVybiBTdHJpbmco
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192457</attachid>
            <date>2013-03-11 06:40:02 -0700</date>
            <delta_ts>2013-03-11 07:07:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111435-20130311143601.patch</filename>
            <type>text/plain</type>
            <size>20684</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MjExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGYyYjFkYjFlYjc4YWM5
ZDY2YjkwZmY2YjcyYzQ2MmM5NDA5M2QxOS4uOGU0ZmNkZmUyYTg0YWRkMzk2YzYwYmZkZjg4YjA2
ODIwZTE5MTMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEzLTAzLTExICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBkaWdpYS5jb20+CisKKyAgICAgICAgW1F0
XVtXSzJdIFNwZWNpZnkgc3RvcmFnZSBwYXRocyB0aHJvdWdoIHRoZSBDIEFQSQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExNDM1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIFdLSWNvbkRhdGFiYXNl
IHNob3VsZCBiZSBvcGVuZWQgdGhyb3VnaCBhIGNhbGwgdG8KKyAgICAgICAgV0tDb250ZXh0U2V0
SWNvbkRhdGFiYXNlUGF0aC4gVG8gYXZvaWQgaGF2aW5nIHNvbWUgcGF0aHMKKyAgICAgICAgcmV0
dXJuZWQgdGhyb3VnaCBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHQqIGFuZCBzb21lIG90aGVy
cworICAgICAgICB0aHJvdWdoIHRoZSBDIEFQSSwgbWFrZSBzdXJlIHRoYXQgYWxsIHRob3NlIHBh
dGhzIGFyZSBzZXQKKyAgICAgICAgdGhyb3VnaCB0aGUgQyBBUEkuCisKKyAgICAgICAgKiBTaGFy
ZWQvcXQvUXREZWZhdWx0RGF0YUxvY2F0aW9uLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFy
ZWQvcXQvUXREZWZhdWx0RGF0YUxvY2F0aW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogVGFyZ2V0
LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9xdC9QbHVnaW5Qcm9jZXNzUHJveHlR
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNhY2hlRmlsZSk6CisgICAgICAgICAgLSBUaGlzIHBh
cnQgaXMgbGVmdCBhbG9uZSBiZWhpbmQgdGhlIEMgQVBJLgorICAgICAgICAgICAgU2luY2UgUGx1
Z2luUHJvY2Vzc1Byb3h5IGhhdmUgbm8ga25vd2xlZGdlIG9mIHRoZSBXZWJDb250ZXh0CisgICAg
ICAgICAgICBpdCBpcyByYXRoZXIgZGlmZmljdWx0IHRvIGZldGNoIGEgY29uZmlndXJlZCBkaXJl
Y3RvcnkgdGhhdAorICAgICAgICAgICAgY291bGQgYmUgdXNlZCBmb3IgdGhpcyBwdXJwb3NlIChs
aWtlIHRoZSBkaXNrIGNhY2hlIHN0b3JhZ2UpLgorICAgICAgICAgICAgSGFyZC1jb2RlIGEgY29t
cGF0aWJsZSBsb2dpYyB0byBrZWVwIHRoZSBjdXJyZW50IGJlaGF2aW9yLgorICAgICAgICAoV2Vi
S2l0OjpyZW1vdmVDYWNoZUZpbGUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktp
dDo6cmVhZE1ldGFEYXRhRnJvbUNhY2hlRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OndyaXRlVG9D
YWNoZUZpbGUpOgorICAgICAgICAoV2ViS2l0Ojp0cnlSZWFkUGx1Z2luTWV0YURhdGFGcm9tQ2Fj
aGVGaWxlKToKKyAgICAgICAgICAtIFVwZGF0ZSB0aGUgY29kZSB0byBiZXR0ZXIgaGFuZGxlIGFu
IGVtcHR5IGNhY2hlIGZpbGUgcGF0aC4KKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRXZWJDb250ZXh0OjpkZWZhdWx0Q29udGV4dCk6
CisgICAgICAgIChXZWJLaXQ6OmRlZmF1bHRMb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpRdFdlYkNvbnRleHQ6OnByZXBhcmVkU3RvcmFnZVBhdGgpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYkNvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
cXQvUXRXZWJJY29uRGF0YWJhc2VDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpRdFdlYklj
b25EYXRhYmFzZUNsaWVudDo6UXRXZWJJY29uRGF0YWJhc2VDbGllbnQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0
OjphcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4
dDo6cGxhdGZvcm1EZWZhdWx0RGF0YWJhc2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHRJY29uRGF0YWJhc2VQYXRoKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGly
ZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0Q29v
a2llU3RvcmFnZURpcmVjdG9yeSk6CisKIDIwMTMtMDItMTQgIEpvY2VseW4gVHVyY290dGUgIDxq
b2NlbHluLnR1cmNvdHRlQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIFByb3Blcmx5IGxheWVy
IFF0V2ViQ29udGV4dCBvbiB0b3Agb2YgdGhlIEMgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvcXQvUXREZWZhdWx0RGF0YUxvY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9xdC9RdERlZmF1bHREYXRhTG9jYXRpb24uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3NzE4Yjk0ZDNjMTAwMzYzMzdmZjE3NmE1N2VlM2U4ZjdjY2YzMGUzLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9xdC9RdERlZmF1bHREYXRhTG9jYXRpb24uY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgVW5pdmVyc2l0
eSBvZiBTemVnZWQuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIlF0RGVmYXVsdERhdGFMb2NhdGlvbi5oIgotCi0jaW5jbHVkZSA8
UUNvcmVBcHBsaWNhdGlvbj4KLSNpbmNsdWRlIDxRRGlyPgotI2luY2x1ZGUgPFFTdGFuZGFyZFBh
dGhzPgotI2luY2x1ZGUgPFFTdHJpbmdCdWlsZGVyPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5
c3RlbS5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotUVN0cmluZyBkZWZhdWx0RGF0YUxvY2F0
aW9uKCkKLXsKLSAgICBzdGF0aWMgUVN0cmluZyBzX2RhdGFMb2NhdGlvbjsKLQotICAgIGlmICgh
c19kYXRhTG9jYXRpb24uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gc19kYXRhTG9jYXRpb247
Ci0KLSAgICBRU3RyaW5nIGRhdGFMb2NhdGlvbiA9IFFTdGFuZGFyZFBhdGhzOjp3cml0YWJsZUxv
Y2F0aW9uKFFTdGFuZGFyZFBhdGhzOjpEYXRhTG9jYXRpb24pOwotICAgIGlmIChkYXRhTG9jYXRp
b24uaXNFbXB0eSgpKQotICAgICAgICBkYXRhTG9jYXRpb24gPSBRRGlyOjpob21lUGF0aCgpICUg
UURpcjo6c2VwYXJhdG9yKCkgJSBRQ29yZUFwcGxpY2F0aW9uOjphcHBsaWNhdGlvbk5hbWUoKTsK
LSAgICBzX2RhdGFMb2NhdGlvbiA9IGRhdGFMb2NhdGlvbiAlIFFEaXI6OnNlcGFyYXRvcigpICUg
UVN0cmluZ0xpdGVyYWwoIi5RdFdlYktpdCIpICUgUURpcjo6c2VwYXJhdG9yKCk7Ci0gICAgUURp
cjo6cm9vdCgpLm1rcGF0aChzX2RhdGFMb2NhdGlvbik7Ci0KLSAgICByZXR1cm4gc19kYXRhTG9j
YXRpb247Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9RdERl
ZmF1bHREYXRhTG9jYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9RdERlZmF1bHRE
YXRhTG9jYXRpb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWYzMmM4Nzk1Nzdm
MGE0OGJmODRlMWFlMzJhYWY0YTBiZDg0NjI4Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvUXREZWZhdWx0RGF0
YUxvY2F0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
LSAqIENvcHlyaWdodCAoQykgMjAxMiBVbml2ZXJzaXR5IG9mIFN6ZWdlZC4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFF0RGVmYXVsdERhdGFMb2NhdGlvbl9oCi0jZGVm
aW5lIFF0RGVmYXVsdERhdGFMb2NhdGlvbl9oCi0KLSNpbmNsdWRlIDxRU3RyaW5nPgotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotUVN0cmluZyBkZWZhdWx0RGF0YUxvY2F0aW9uKCk7Ci0KLX0KLQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpIGIvU291cmNlL1dl
YktpdDIvVGFyZ2V0LnByaQppbmRleCBhYzNjMDdlN2ViODJiZTY0YzYzNDQ4YmZjZWYzN2ZjNDNk
NjE4NDc4Li42NGUzZDM3NTE1MGQ4MjAyYTA3YjJlMjdiYWRmNGQwMDliOTM2MDFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Rhcmdl
dC5wcmkKQEAgLTE0OCw3ICsxNDgsNiBAQCBIRUFERVJTICs9IFwKICAgICBTaGFyZWQvcXQvQXJn
dW1lbnRDb2RlcnNRdC5oIFwKICAgICBTaGFyZWQvcXQvUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8u
aCBcCiAgICAgU2hhcmVkL3F0L1dlYkV2ZW50RmFjdG9yeVF0LmggXAotICAgIFNoYXJlZC9xdC9R
dERlZmF1bHREYXRhTG9jYXRpb24uaCBcCiAgICAgU2hhcmVkL3F0L1F0TmV0d29ya1JlcGx5RGF0
YS5oIFwKICAgICBTaGFyZWQvcXQvUXROZXR3b3JrUmVxdWVzdERhdGEuaCBcCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLQVBJQ2FzdC5oIFwKQEAgLTUwNSw3ICs1MDQsNiBAQCBTT1VSQ0VTICs9IFwK
ICAgICBTaGFyZWQvcXQvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoUXQuY3BwIFwKICAgICBTaGFyZWQv
cXQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzUXQuY3BwIFwKICAgICBTaGFyZWQvcXQvV2ViRXZlbnRG
YWN0b3J5UXQuY3BwIFwKLSAgICBTaGFyZWQvcXQvUXREZWZhdWx0RGF0YUxvY2F0aW9uLmNwcCBc
CiAgICAgU2hhcmVkL3F0L1F0TmV0d29ya1JlcGx5RGF0YS5jcHAgXAogICAgIFNoYXJlZC9xdC9R
dE5ldHdvcmtSZXF1ZXN0RGF0YS5jcHAgXAogICAgIFNoYXJlZC9xdC9XZWJVUkxSZXF1ZXN0UXQu
Y3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3F0L1Bs
dWdpblByb2Nlc3NQcm94eVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L3F0L1BsdWdpblByb2Nlc3NQcm94eVF0LmNwcAppbmRleCA2MjMzYTBmN2Y3ZjVhNDBiMzlkZTEy
MjVkNzVjODE3Mzc5OWI3MTFiLi45ZWU3NWVmZjdhMzFkMGU3OWUzMjFhNDA3Y2NiM2I4ZmYxODlk
ODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9xdC9QbHVn
aW5Qcm9jZXNzUHJveHlRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdp
bnMvcXQvUGx1Z2luUHJvY2Vzc1Byb3h5UXQuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgRU5B
QkxFKFBMVUdJTl9QUk9DRVNTKQogCiAjaW5jbHVkZSAiUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmgi
Ci0jaW5jbHVkZSAiUXREZWZhdWx0RGF0YUxvY2F0aW9uLmgiCiAjaW5jbHVkZSA8UUJ5dGVBcnJh
eT4KICNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgogI2luY2x1ZGUgPFFEYXRlVGltZT4KQEAg
LTQxLDYgKzQwLDcgQEAKICNpbmNsdWRlIDxRSnNvbk9iamVjdD4KICNpbmNsdWRlIDxRTWFwPgog
I2luY2x1ZGUgPFFQcm9jZXNzPgorI2luY2x1ZGUgPFFTdGFuZGFyZFBhdGhzPgogI2luY2x1ZGUg
PFFTdHJpbmdCdWlsZGVyPgogI2luY2x1ZGUgPFFWYXJpYW50PgogI2luY2x1ZGUgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgpAQCAtNjIsMTAgKzYyLDI0IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5
OjpwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdpblByb2Nlc3NDcmVhdGlvblBh
CiAKIHN0YXRpYyBQYXNzT3duUHRyPFFGaWxlPiBjYWNoZUZpbGUoKQogewotICAgIHN0YXRpYyBR
U3RyaW5nIGNhY2hlRmlsZVBhdGggPSBkZWZhdWx0RGF0YUxvY2F0aW9uKCkgJSBRU3RyaW5nTGl0
ZXJhbCgicGx1Z2luX21ldGFfZGF0YS5qc29uIik7CisgICAgUVN0cmluZyBjYWNoZVBhdGggPSBR
U3RhbmRhcmRQYXRoczo6d3JpdGFibGVMb2NhdGlvbihRU3RhbmRhcmRQYXRoczo6Q2FjaGVMb2Nh
dGlvbik7CisgICAgaWYgKGNhY2hlUGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBQYXNz
T3duUHRyPFFGaWxlPigpOworCisgICAgLy8gVGhpcyBzaG91bGQgbWF0Y2ggdGhlIHBhdGggc2V0
IHRocm91Z2ggV0tDb250ZXh0U2V0RGlza0NhY2hlRGlyZWN0b3J5LgorICAgIGNhY2hlUGF0aC5h
cHBlbmQoUURpcjo6c2VwYXJhdG9yKCkpLmFwcGVuZChRU3RyaW5nTGl0ZXJhbCgiLlF0V2ViS2l0
IikpLmFwcGVuZChRRGlyOjpzZXBhcmF0b3IoKSk7CisgICAgUVN0cmluZyBjYWNoZUZpbGVQYXRo
ID0gY2FjaGVQYXRoICUgUVN0cmluZ0xpdGVyYWwoInBsdWdpbl9tZXRhX2RhdGEuanNvbiIpOwor
CisgICAgUURpcjo6cm9vdCgpLm1rcGF0aChjYWNoZVBhdGgpOwogICAgIHJldHVybiBhZG9wdFB0
cihuZXcgUUZpbGUoY2FjaGVGaWxlUGF0aCkpOwogfQogCitzdGF0aWMgdm9pZCByZW1vdmVDYWNo
ZUZpbGUoKQoreworICAgIGlmIChPd25QdHI8UUZpbGU+IGZpbGUgPSBjYWNoZUZpbGUoKSkKKyAg
ICAgICAgZmlsZS0+cmVtb3ZlKCk7Cit9CisKIHN0cnVjdCBSZWFkUmVzdWx0IHsKICAgICBlbnVt
IFRhZyB7CiAgICAgICAgIEVtcHR5LApAQCAtNzcsNyArOTEsNyBAQCBzdHJ1Y3QgUmVhZFJlc3Vs
dCB7CiBzdGF0aWMgUmVhZFJlc3VsdDo6VGFnIHJlYWRNZXRhRGF0YUZyb21DYWNoZUZpbGUoUUpz
b25Eb2N1bWVudCYgcmVzdWx0KQogewogICAgIE93blB0cjxRRmlsZT4gZmlsZSA9IGNhY2hlRmls
ZSgpOwotICAgIGlmICghZmlsZS0+b3BlbihRRmlsZTo6UmVhZE9ubHkpKQorICAgIGlmICghZmls
ZSB8fCAhZmlsZS0+b3BlbihRRmlsZTo6UmVhZE9ubHkpKQogICAgICAgICByZXR1cm4gUmVhZFJl
c3VsdDo6RW1wdHk7CiAgICAgUUJ5dGVBcnJheSBkYXRhID0gZmlsZS0+cmVhZEFsbCgpOwogICAg
IGlmIChkYXRhLmlzRW1wdHkoKSkKQEAgLTk3LDE0ICsxMTEsOSBAQCBzdGF0aWMgUmVhZFJlc3Vs
dDo6VGFnIHJlYWRNZXRhRGF0YUZyb21DYWNoZUZpbGUoUUpzb25Eb2N1bWVudCYgcmVzdWx0KQog
c3RhdGljIHZvaWQgd3JpdGVUb0NhY2hlRmlsZShjb25zdCBRSnNvbkFycmF5JiBhcnJheSkKIHsK
ICAgICBPd25QdHI8UUZpbGU+IGZpbGUgPSBjYWNoZUZpbGUoKTsKLSAgICBpZiAoIWZpbGUtPm9w
ZW4oUUZpbGU6OldyaXRlT25seSB8IFFGaWxlOjpUcnVuY2F0ZSkpIHsKLSAgICAgICAgLy8gSXQg
c2hvdWxkIG5ldmVyIGJ1dCBsZXQncyBiZSBwZXNzaW1pc3RpYywgaXQgaXMgdGhlIGZpbGUgc3lz
dGVtIGFmdGVyIGFsbC4KLSAgICAgICAgcVdhcm5pbmcoIkNhbm5vdCB3cml0ZSBpbnRvIHBsdWdp
biBtZXRhIGRhdGEgY2FjaGUgZmlsZTogJXNcbiIsIHFQcmludGFibGUoZmlsZS0+ZmlsZU5hbWUo
KSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRG9uJ3QgY2FyZSBhYm91dCB3
cml0ZSBlcnJvciBoZXJlLiBXZSB3aWxsIGRldGVjdCBpdCBsYXRlci4KLSAgICBmaWxlLT53cml0
ZShRSnNvbkRvY3VtZW50KGFycmF5KS50b0pzb24oKSk7CisgICAgaWYgKGZpbGUgJiYgZmlsZS0+
b3BlbihRRmlsZTo6V3JpdGVPbmx5IHwgUUZpbGU6OlRydW5jYXRlKSkKKyAgICAgICAgLy8gRG9u
J3QgY2FyZSBhYm91dCB3cml0ZSBlcnJvciBoZXJlLiBXZSB3aWxsIGRldGVjdCBpdCBsYXRlci4K
KyAgICAgICAgZmlsZS0+d3JpdGUoUUpzb25Eb2N1bWVudChhcnJheSkudG9Kc29uKCkpOwogfQog
CiBzdGF0aWMgdm9pZCBhcHBlbmRUb0NhY2hlRmlsZShjb25zdCBRSnNvbk9iamVjdCYgb2JqZWN0
KQpAQCAtMTQwLDcgKzE0OSw3IEBAIHN0YXRpYyBNZXRhRGF0YVJlc3VsdDo6VGFnIHRyeVJlYWRQ
bHVnaW5NZXRhRGF0YUZyb21DYWNoZUZpbGUoY29uc3QgUVN0cmluZyYgY2FuCiAgICAgZm9yIChR
SnNvbkFycmF5Ojpjb25zdF9pdGVyYXRvciBpID0gYXJyYXkuY29uc3RCZWdpbigpOyBpICE9IGFy
cmF5LmNvbnN0RW5kKCk7ICsraSkgewogICAgICAgICBRSnNvblZhbHVlIGl0ZW0gPSAqaTsKICAg
ICAgICAgaWYgKCFpdGVtLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAgIGNhY2hlRmlsZSgpLT5y
ZW1vdmUoKTsKKyAgICAgICAgICAgIHJlbW92ZUNhY2hlRmlsZSgpOwogICAgICAgICAgICAgcmV0
dXJuIE1ldGFEYXRhUmVzdWx0OjpOb3RBdmFpbGFibGU7CiAgICAgICAgIH0KIApAQCAtMTQ4LDcg
KzE1Nyw3IEBAIHN0YXRpYyBNZXRhRGF0YVJlc3VsdDo6VGFnIHRyeVJlYWRQbHVnaW5NZXRhRGF0
YUZyb21DYWNoZUZpbGUoY29uc3QgUVN0cmluZyYgY2FuCiAgICAgICAgIGlmIChvYmplY3QudmFs
dWUoUVN0cmluZ0xpdGVyYWwoInBhdGgiKSkudG9TdHJpbmcoKSA9PSBjYW5vbmljYWxQbHVnaW5Q
YXRoKSB7CiAgICAgICAgICAgICBRU3RyaW5nIHRpbWVzdGFtcFN0cmluZyA9IG9iamVjdC52YWx1
ZShRU3RyaW5nTGl0ZXJhbCgidGltZXN0YW1wIikpLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICBp
ZiAodGltZXN0YW1wU3RyaW5nLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIGNhY2hlRmls
ZSgpLT5yZW1vdmUoKTsKKyAgICAgICAgICAgICAgICByZW1vdmVDYWNoZUZpbGUoKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gTWV0YURhdGFSZXN1bHQ6Ok5vdEF2YWlsYWJsZTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIFFEYXRlVGltZSB0aW1lc3RhbXAgPSBRRGF0ZVRpbWU6OmZyb21T
dHJpbmcodGltZXN0YW1wU3RyaW5nKTsKQEAgLTE2OSw3ICsxNzgsNyBAQCBzdGF0aWMgTWV0YURh
dGFSZXN1bHQ6OlRhZyB0cnlSZWFkUGx1Z2luTWV0YURhdGFGcm9tQ2FjaGVGaWxlKGNvbnN0IFFT
dHJpbmcmIGNhbgogICAgICAgICAgICAgaWYgKHJlc3VsdC5taW1lRGVzY3JpcHRpb24uaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICAgICAgLy8gT25seSB0aGUgbWltZSBkZXNjcmlwdGlvbiBpcyBt
YW5kYXRvcnkuCiAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgdHJ1c3QgaW4gdGhlIGNhY2hlIGZp
bGUgaWYgaXQgaXMgZW1wdHkuCi0gICAgICAgICAgICAgICAgY2FjaGVGaWxlKCktPnJlbW92ZSgp
OworICAgICAgICAgICAgICAgIHJlbW92ZUNhY2hlRmlsZSgpOwogICAgICAgICAgICAgICAgIHJl
dHVybiBNZXRhRGF0YVJlc3VsdDo6Tm90QXZhaWxhYmxlOwogICAgICAgICAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkNvbnRleHQuY3BwCmluZGV4IDNkZWY0NGQ5
MWQ1NjM1OWVkYTQ0MTEzMWE3MzE1ZTg0NWRkYWJjMTIuLjg2NzJiN2M5MWJlMjMxZjc2ZTBmNDRm
ODk0MjZkZDc5NzBkYzVmYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdl
YkNvbnRleHQuY3BwCkBAIC0yNSwxMCArMjUsMTUgQEAKICNpbmNsdWRlICJRdFdlYkljb25EYXRh
YmFzZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvclNlcnZlci5oIgogI2luY2x1ZGUg
InFxdWlja3dlYnZpZXdfcF9wLmgiCisjaW5jbHVkZSA8UURpcj4KKyNpbmNsdWRlIDxRU3RhbmRh
cmRQYXRocz4KKyNpbmNsdWRlIDxRU3RyaW5nQnVpbGRlcj4KICNpbmNsdWRlIDxXS0FQSUNhc3Qu
aD4KICNpbmNsdWRlIDxXS0FycmF5Lmg+CisjaW5jbHVkZSA8V0tDb250ZXh0UHJpdmF0ZS5oPgog
I2luY2x1ZGUgPFdLUGFnZS5oPgogI2luY2x1ZGUgPFdLU3RyaW5nLmg+CisjaW5jbHVkZSA8V0tT
dHJpbmdRdC5oPgogI2luY2x1ZGUgPFdLVHlwZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTEzOCwxMSArMTQzLDU2IEBAIFF0V2ViQ29udGV4dCogUXRXZWJDb250ZXh0OjpkZWZhdWx0Q29u
dGV4dCgpCiAgICAgICAgIC8vIEEgZ29vZCBhbGwtYXJvdW5kIGRlZmF1bHQuCiAgICAgICAgIFdL
Q29udGV4dFNldENhY2hlTW9kZWwod2tDb250ZXh0LmdldCgpLCBrV0tDYWNoZU1vZGVsRG9jdW1l
bnRCcm93c2VyKTsKIAorICAgICAgICAvLyBUaG9zZSBwYXRocyBoYXZlIHRvIGJlIHNldCBiZWZv
cmUgdGhlIGZpcnN0IHdlYiBwcm9jZXNzIGlzIHNwYXduZWQuCisgICAgICAgIFdLQ29udGV4dFNl
dERhdGFiYXNlRGlyZWN0b3J5KHdrQ29udGV4dC5nZXQoKSwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0
ZVdpdGhRU3RyaW5nKHByZXBhcmVkU3RvcmFnZVBhdGgoRGF0YWJhc2VTdG9yYWdlKSkpLmdldCgp
KTsKKyAgICAgICAgV0tDb250ZXh0U2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KHdrQ29udGV4dC5n
ZXQoKSwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhRU3RyaW5nKHByZXBhcmVkU3RvcmFnZVBh
dGgoTG9jYWxTdG9yYWdlKSkpLmdldCgpKTsKKyAgICAgICAgV0tDb250ZXh0U2V0Q29va2llU3Rv
cmFnZURpcmVjdG9yeSh3a0NvbnRleHQuZ2V0KCksIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
UVN0cmluZyhwcmVwYXJlZFN0b3JhZ2VQYXRoKENvb2tpZVN0b3JhZ2UpKSkuZ2V0KCkpOworICAg
ICAgICBXS0NvbnRleHRTZXREaXNrQ2FjaGVEaXJlY3Rvcnkod2tDb250ZXh0LmdldCgpLCBhZG9w
dFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFFTdHJpbmcocHJlcGFyZWRTdG9yYWdlUGF0aChEaXNrQ2Fj
aGVTdG9yYWdlKSkpLmdldCgpKTsKKwogICAgICAgICBzX2RlZmF1bHRRdFdlYkNvbnRleHQgPSBR
dFdlYkNvbnRleHQ6OmNyZWF0ZSh3a0NvbnRleHQuZ2V0KCkpOwogICAgIH0KIAogICAgIHJldHVy
biBzX2RlZmF1bHRRdFdlYkNvbnRleHQ7CiB9CiAKK3N0YXRpYyBRU3RyaW5nIGRlZmF1bHRMb2Nh
dGlvbihRU3RhbmRhcmRQYXRoczo6U3RhbmRhcmRMb2NhdGlvbiB0eXBlKQoreworICAgIFFTdHJp
bmcgcGF0aCA9IFFTdGFuZGFyZFBhdGhzOjp3cml0YWJsZUxvY2F0aW9uKHR5cGUpOworICAgIFFf
QVNTRVJUKCFwYXRoLmlzRW1wdHkoKSk7CisgICAgcmV0dXJuIHBhdGggJSBRRGlyOjpzZXBhcmF0
b3IoKSAlIFFTdHJpbmdMaXRlcmFsKCIuUXRXZWJLaXQiKSAlIFFEaXI6OnNlcGFyYXRvcigpOwor
fQorCitRU3RyaW5nIFF0V2ViQ29udGV4dDo6cHJlcGFyZWRTdG9yYWdlUGF0aChTdG9yYWdlVHlw
ZSB0eXBlKQoreworICAgIFFTdHJpbmcgcGF0aDsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBj
YXNlIERhdGFiYXNlU3RvcmFnZToKKyAgICAgICAgcGF0aCA9IGRlZmF1bHRMb2NhdGlvbihRU3Rh
bmRhcmRQYXRoczo6RGF0YUxvY2F0aW9uKSAlIFFTdHJpbmdMaXRlcmFsKCJEYXRhYmFzZXMiKTsK
KyAgICAgICAgUURpcjo6cm9vdCgpLm1rcGF0aChwYXRoKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBMb2NhbFN0b3JhZ2U6CisgICAgICAgIHBhdGggPSBkZWZhdWx0TG9jYXRpb24oUVN0YW5k
YXJkUGF0aHM6OkRhdGFMb2NhdGlvbikgJSBRU3RyaW5nTGl0ZXJhbCgiTG9jYWxTdG9yYWdlIik7
CisgICAgICAgIFFEaXI6OnJvb3QoKS5ta3BhdGgocGF0aCk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQ29va2llU3RvcmFnZToKKyAgICAgICAgcGF0aCA9IGRlZmF1bHRMb2NhdGlvbihRU3Rh
bmRhcmRQYXRoczo6RGF0YUxvY2F0aW9uKTsKKyAgICAgICAgUURpcjo6cm9vdCgpLm1rcGF0aChw
YXRoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEaXNrQ2FjaGVTdG9yYWdlOgorICAgICAg
ICBwYXRoID0gZGVmYXVsdExvY2F0aW9uKFFTdGFuZGFyZFBhdGhzOjpDYWNoZUxvY2F0aW9uKSAl
IFFTdHJpbmdMaXRlcmFsKCJEaXNrQ2FjaGUiKTsKKyAgICAgICAgUURpcjo6cm9vdCgpLm1rcGF0
aChwYXRoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJY29uRGF0YWJhc2VTdG9yYWdlOgor
ICAgICAgICBwYXRoID0gZGVmYXVsdExvY2F0aW9uKFFTdGFuZGFyZFBhdGhzOjpEYXRhTG9jYXRp
b24pOworICAgICAgICBRRGlyOjpyb290KCkubWtwYXRoKHBhdGgpOworICAgICAgICBwYXRoICs9
IFFTdHJpbmdMaXRlcmFsKCJXZWJwYWdlSWNvbnMuZGIiKTsKKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgUV9BU1NFUlQoZmFsc2UpOworICAgIH0KKworICAgIHJldHVybiBw
YXRoOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0V2ViQ29udGV4dC5oCmluZGV4IDU1OGY0Y2EzNmY5MTFkZGE4NjUxZjc1MTU3ODA5
OWY0NjBlZDg4ZWUuLjQyNTFmMjllN2UyY2Q1ZTFiZGIwNTExNTI1N2I3Y2ZhMjNkOTVmNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkNvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJDb250ZXh0LmgKQEAgLTM1LDkgKzM1
LDE5IEBAIGNsYXNzIFF0V2ViQ29udGV4dCB7CiBwdWJsaWM6CiAgICAgflF0V2ViQ29udGV4dCgp
OwogCisgICAgZW51bSBTdG9yYWdlVHlwZSB7CisgICAgICAgIERhdGFiYXNlU3RvcmFnZSwKKyAg
ICAgICAgTG9jYWxTdG9yYWdlLAorICAgICAgICBDb29raWVTdG9yYWdlLAorICAgICAgICBEaXNr
Q2FjaGVTdG9yYWdlLAorICAgICAgICBJY29uRGF0YWJhc2VTdG9yYWdlCisgICAgfTsKKwogICAg
IHN0YXRpYyBRdFdlYkNvbnRleHQqIGNyZWF0ZShXS0NvbnRleHRSZWYpOwogICAgIHN0YXRpYyBR
dFdlYkNvbnRleHQqIGRlZmF1bHRDb250ZXh0KCk7CiAKKyAgICBzdGF0aWMgUVN0cmluZyBwcmVw
YXJlZFN0b3JhZ2VQYXRoKFN0b3JhZ2VUeXBlKTsKKwogICAgIFdLQ29udGV4dFJlZiBjb250ZXh0
KCkgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CiAKICAgICBRdERvd25sb2FkTWFuYWdlciog
ZG93bmxvYWRNYW5hZ2VyKCkgeyByZXR1cm4gbV9kb3dubG9hZE1hbmFnZXIuZGF0YSgpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJJY29uRGF0YWJhc2VD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViSWNvbkRhdGFiYXNl
Q2xpZW50LmNwcAppbmRleCAzZjM4ZDY0OTQ3MDlhZGJjMThiOTU3ZTIyMTM0NWViMWRmYzlhYzZh
Li4wN2EzZTcxYTZjMWU4NjAxYjVjYWI1MjdjODQzNzc3MzcyZDZlYzJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJJY29uRGF0YWJhc2VDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkljb25EYXRhYmFzZUNsaWVudC5j
cHAKQEAgLTIyLDYgKzIyLDcgQEAKIAogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiS1VS
TC5oIgorI2luY2x1ZGUgIlF0V2ViQ29udGV4dC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgogI2luY2x1ZGUgIldLVVJMUXQuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCkBAIC0zMCw2
ICszMSw5IEBACiAjaW5jbHVkZSA8UXRDb3JlL1FPYmplY3Q+CiAjaW5jbHVkZSA8UXRDb3JlL1FV
cmw+CiAjaW5jbHVkZSA8UXRHdWkvUUltYWdlPgorI2luY2x1ZGUgPFdLQ29udGV4dFByaXZhdGUu
aD4KKyNpbmNsdWRlIDxXS1JldGFpblB0ci5oPgorI2luY2x1ZGUgPFdLU3RyaW5nUXQuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQxLDkgKzQ1LDYgQEAgc3RhdGljIGlubGluZSBRdFdl
Ykljb25EYXRhYmFzZUNsaWVudCogdG9RdFdlYkljb25EYXRhYmFzZUNsaWVudChjb25zdCB2b2lk
KiBjbGkKIAogUXRXZWJJY29uRGF0YWJhc2VDbGllbnQ6OlF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50
KFdlYkNvbnRleHQgKmNvbnRleHQpCiB7Ci0gICAgLy8gVGhlIHNldHRlciBjYWxscyB0aGUgZ2V0
dGVyIGhlcmUgYXMgaXQgdHJpZ2dlcnMgdGhlIHN0YXJ0dXAgb2YgdGhlIGljb24gZGF0YWJhc2Uu
Ci0gICAgaWYgKCFjb250ZXh0LT5pY29uRGF0YWJhc2UoKS0+aXNPcGVuKCkpCi0gICAgICAgIGNv
bnRleHQtPnNldEljb25EYXRhYmFzZVBhdGgoY29udGV4dC0+aWNvbkRhdGFiYXNlUGF0aCgpKTsK
ICAgICBtX2ljb25EYXRhYmFzZSA9IGNvbnRleHQtPmljb25EYXRhYmFzZSgpOwogCiAgICAgV0tJ
Y29uRGF0YWJhc2VDbGllbnQgaWNvbkRhdGFiYXNlQ2xpZW50OwpAQCAtNTIsNiArNTMsOSBAQCBR
dFdlYkljb25EYXRhYmFzZUNsaWVudDo6UXRXZWJJY29uRGF0YWJhc2VDbGllbnQoV2ViQ29udGV4
dCAqY29udGV4dCkKICAgICBpY29uRGF0YWJhc2VDbGllbnQuY2xpZW50SW5mbyA9IHRoaXM7CiAg
ICAgaWNvbkRhdGFiYXNlQ2xpZW50LmRpZENoYW5nZUljb25Gb3JQYWdlVVJMID0gZGlkQ2hhbmdl
SWNvbkZvclBhZ2VVUkw7CiAgICAgV0tJY29uRGF0YWJhc2VTZXRJY29uRGF0YWJhc2VDbGllbnQo
dG9BUEkobV9pY29uRGF0YWJhc2UuZ2V0KCkpLCAmaWNvbkRhdGFiYXNlQ2xpZW50KTsKKyAgICAv
LyBUcmlnZ2VycyB0aGUgc3RhcnR1cCBvZiB0aGUgaWNvbiBkYXRhYmFzZS4KKyAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gcGF0aCA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoUVN0cmlu
ZyhRdFdlYkNvbnRleHQ6OnByZXBhcmVkU3RvcmFnZVBhdGgoUXRXZWJDb250ZXh0OjpJY29uRGF0
YWJhc2VTdG9yYWdlKSkpOworICAgIFdLQ29udGV4dFNldEljb25EYXRhYmFzZVBhdGgodG9BUEko
Y29udGV4dCksIHBhdGguZ2V0KCkpOwogfQogCiBRdFdlYkljb25EYXRhYmFzZUNsaWVudDo6flF0
V2ViSWNvbkRhdGFiYXNlQ2xpZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dl
YkNvbnRleHRRdC5jcHAKaW5kZXggZTcxNmRlYmIzOTNmYjc4OGI3ZWIwOGMzYzk3OGE1NmI2ZjVk
MmY1MC4uNTk1ZWRjYjdhMjgxZGE3N2UwOWJjYzAyNzM4NzNjNWYyYWNmYWQ5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHAKQEAgLTI4LDEzICsyOCw4
IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgogCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiUXREZWZhdWx0
RGF0YUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiUXRXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV0tT
aGFyZWRBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
IgotI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+Ci0jaW5jbHVkZSA8UURpcj4KICNpbmNsdWRl
IDxRUHJvY2Vzcz4KIAogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKQEAgLTQ0LDI4ICszOSwxMiBA
QAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIFFTdHJpbmcgc19kZWZhdWx0RGF0YWJh
c2VEaXJlY3Rvcnk7Ci1zdGF0aWMgUVN0cmluZyBzX2RlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3Rv
cnk7Ci1zdGF0aWMgUVN0cmluZyBzX2RlZmF1bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5OwotCi1T
dHJpbmcgV2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCkgY29u
c3QKLXsKLSAgICBzdGF0aWMgU3RyaW5nIHNfZGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeTsKLQot
ICAgIGlmICghc19kZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIHNfZGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeTsKLQotICAgIHNfZGVmYXVsdERpc2tD
YWNoZURpcmVjdG9yeSA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkZWZhdWx0
RGF0YUxvY2F0aW9uKCksICJjYWNoZS8iKTsKLSAgICBXZWJDb3JlOjptYWtlQWxsRGlyZWN0b3Jp
ZXMoc19kZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KTsKLSAgICByZXR1cm4gc19kZWZhdWx0RGlz
a0NhY2hlRGlyZWN0b3J5OwotfQotCiBTdHJpbmcgV2ViQ29udGV4dDo6YXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeSgpCiB7CiAgICAgY29uc3QgU3RyaW5nIGNhY2hlRGlyZWN0b3J5ID0gV2ViQ29y
ZTo6Y2FjaGVTdG9yYWdlKCkuY2FjaGVEaXJlY3RvcnkoKTsKIAogICAgIGlmIChjYWNoZURpcmVj
dG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBwbGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVE
aXJlY3RvcnkoKTsKKyAgICAgICAgcmV0dXJuIGRpc2tDYWNoZURpcmVjdG9yeSgpOwogCiAgICAg
cmV0dXJuIGNhY2hlRGlyZWN0b3J5OwogfQpAQCAtODUsMzYgKzY0LDI3IEBAIHZvaWQgV2ViQ29u
dGV4dDo6cGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCgpCiAKIFN0cmluZyBXZWJDb250ZXh0Ojpw
bGF0Zm9ybURlZmF1bHREYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFzX2Rl
ZmF1bHREYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBzX2RlZmF1
bHREYXRhYmFzZURpcmVjdG9yeTsKLQotICAgIHNfZGVmYXVsdERhdGFiYXNlRGlyZWN0b3J5ID0g
ZGVmYXVsdERhdGFMb2NhdGlvbigpICsgUUxhdGluMVN0cmluZygiRGF0YWJhc2VzIik7Ci0gICAg
UURpcigpLm1rcGF0aChzX2RlZmF1bHREYXRhYmFzZURpcmVjdG9yeSk7Ci0gICAgcmV0dXJuIHNf
ZGVmYXVsdERhdGFiYXNlRGlyZWN0b3J5OworICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAogU3Ry
aW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdEljb25EYXRhYmFzZVBhdGgoKSBjb25zdAog
ewotICAgIHJldHVybiBkZWZhdWx0RGF0YUxvY2F0aW9uKCkgKyBRTGF0aW4xU3RyaW5nKCJXZWJw
YWdlSWNvbnMuZGIiKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKIFN0cmluZyBXZWJDb250
ZXh0OjpwbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAogewotICAg
IGlmICghc19kZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIHNfZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeTsKKyAgICByZXR1cm4gU3RyaW5n
KCk7Cit9CiAKLSAgICBzX2RlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0RGF0
YUxvY2F0aW9uKCkgKyBRTGF0aW4xU3RyaW5nKCJMb2NhbFN0b3JhZ2UiKTsKLSAgICBRRGlyKCku
bWtwYXRoKHNfZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk7Ci0gICAgcmV0dXJuIHNfZGVm
YXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeTsKK1N0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURl
ZmF1bHREaXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdAoreworICAgIHJldHVybiBTdHJpbmcoKTsK
IH0KIAogU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJl
Y3RvcnkoKSBjb25zdAogewotICAgIGlmICghc19kZWZhdWx0Q29va2llU3RvcmFnZURpcmVjdG9y
eS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBzX2RlZmF1bHRDb29raWVTdG9yYWdlRGlyZWN0
b3J5OwotCi0gICAgc19kZWZhdWx0Q29va2llU3RvcmFnZURpcmVjdG9yeSA9IGRlZmF1bHREYXRh
TG9jYXRpb24oKTsKLSAgICByZXR1cm4gc19kZWZhdWx0Q29va2llU3RvcmFnZURpcmVjdG9yeTsK
KyAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>
<flag name="review"
          id="213701"
          type_id="1"
          status="+"
          setter="hausmann"
    />
          </attachment>
      

    </bug>

</bugzilla>