<?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>37217</bug_id>
          
          <creation_ts>2010-04-07 10:26:17 -0700</creation_ts>
          <short_desc>Add skeleton FileStream module for providing sync file operations for FileAPI</short_desc>
          <delta_ts>2010-04-07 13:50:30 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>32624</blocked>
    
    <blocked>36567</blocked>
    
    <blocked>37218</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Kinuko Yasuda">kinuko</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dimich</cc>
    
    <cc>ericu</cc>
    
    <cc>fishd</cc>
    
    <cc>jeffschiller</cc>
    
    <cc>jianli</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>209704</commentid>
    <comment_count>0</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-04-07 10:26:17 -0700</bug_when>
    <thetext>We need a platform-independent module that supports synchronous file operations for FileAPI.  The operations provided by FileStream are supposed to run on worker or file threads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209713</commentid>
    <comment_count>1</comment_count>
      <attachid>52750</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-04-07 10:35:55 -0700</bug_when>
    <thetext>Created attachment 52750
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209733</commentid>
    <comment_count>2</comment_count>
      <attachid>52750</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-04-07 10:53:33 -0700</bug_when>
    <thetext>Comment on attachment 52750
Patch

You need to add new files to other projects, like the following:
  WebCore.vcproj/WebCore.vcproj
  WebCore.gypi
  WebCore.pro
  GNUmakefile.am

Also you do not need to list all the new methods for the new files in ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209747</commentid>
    <comment_count>3</comment_count>
      <attachid>52759</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-04-07 11:26:11 -0700</bug_when>
    <thetext>Created attachment 52759
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209754</commentid>
    <comment_count>4</comment_count>
      <attachid>52759</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-04-07 11:37:37 -0700</bug_when>
    <thetext>Comment on attachment 52759
Patch

Thanks, updated the patch (so did I for 37218).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209801</commentid>
    <comment_count>5</comment_count>
      <attachid>52759</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-04-07 13:20:45 -0700</bug_when>
    <thetext>Comment on attachment 52759
Patch

Looks good. Need to land it manually due to potential xcodeproj conflict when applying the patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209817</commentid>
    <comment_count>6</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-04-07 13:50:30 -0700</bug_when>
    <thetext>Landed for kinuko at http://trac.webkit.org/changeset/57229.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52750</attachid>
            <date>2010-04-07 10:35:55 -0700</date>
            <delta_ts>2010-04-07 11:26:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37217-20100407103554.patch</filename>
            <type>text/plain</type>
            <size>16758</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWIwMzRkMC4uMTVhNDI4NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMC0wNC0wNyAgS2ludWtvIFlhc3Vk
YSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIHNrZWxldG9uIEZpbGVTdHJlYW0gbW9kdWxlIGZvciBwcm92
aWRpbmcgc3luYyBmaWxlIG9wZXJhdGlvbnMgZm9yIEZpbGVBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MjE3CisgICAgICAgIEZvciBub3cgdGhl
IG1vZHVsZSBqdXN0IGRlZmluZXMgaW50ZXJmYWNlcyBhbmQgaXMgYWxtb3N0IGVtcHR5LgorICAg
ICAgICBJbXBsZW1lbnRhdGlvbnMgd2lsbCBiZSBhZGRlZCBsYXRlci4KKworICAgICAgICBObyBu
ZXcgdGVzdHM7IHdpbGwgYmUgYWRkZWQgd2hlbiB3ZSBoYXZlIGNvbXBsZXRlIGNpbXBsZW1lbnRh
dGlvbi4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBodG1sL0ZpbGVTdHJlYW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVTdHJlYW06OkZpbGVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN0cmVhbTo6fkZp
bGVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN0cmVhbTo6c3RhcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZVN0cmVhbTo6b3BlbkZvclJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
RmlsZVN0cmVhbTo6b3BlbkZvcldyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTdHJlYW06
OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTdHJlYW06OnJlYWQpOgorICAgICAgICAo
V2ViQ29yZTo6RmlsZVN0cmVhbTo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN0cmVh
bTo6dHJ1bmNhdGUpOgorICAgICAgICAqIGh0bWwvRmlsZVN0cmVhbS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVTdHJlYW06OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9GaWxlU3Ry
ZWFtQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN0cmVhbUNsaWVudDo6
ZGlkUmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3RyZWFtQ2xpZW50OjpkaWRXcml0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3RyZWFtQ2xpZW50OjpkaWRTdGFydCk6CisgICAgICAg
IChXZWJDb3JlOjpGaWxlU3RyZWFtQ2xpZW50OjpkaWRGaW5pc2gpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsZVN0cmVhbUNsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3Ry
ZWFtQ2xpZW50OjpkaWRHZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTdHJlYW1DbGll
bnQ6On5GaWxlU3RyZWFtQ2xpZW50KToKKyAgICAgICAgKiBodG1sL0ZpbGVUaHJlYWQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2FtZUZpbGVQcmVkaWNhdGU6OlNhbWVGaWxlUHJlZGljYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNhbWVGaWxlUHJlZGljYXRlOjpvcGVyYXRvcigpKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVUaHJlYWQ6OnVuc2NoZWR1bGVUYXNrcyk6CisgICAgICAgICogaHRt
bC9GaWxlVGhyZWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWxlVGhyZWFkOjpUYXNrOjpzdHJl
YW0pOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVRocmVhZDo6VGFzazo6VGFzayk6CisKIDIwMTAt
MDQtMDYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJ1YmJlci1z
dGFtcGVkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGJlMDFmYjguLjc4MTRkOWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMjExLDYgKzIyMTEsOSBAQAogCQk4NUZGMzE1QjBB
QUZCRkNCMDAzNzRGMzggLyogRE9NS2V5Ym9hcmRFdmVudC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RkYzMTU5MEFBRkJGQ0IwMDM3NEYzOCAvKiBE
T01LZXlib2FyZEV2ZW50Lm1tICovOyB9OwogCQk4OTUyNTM1MjExNjQxQjM0MDBDQUJGMDAgLyog
RmlsZVRocmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4OTUyNTM1MDExNjQxQjM0MDBDQUJGMDAgLyogRmlsZVRocmVhZC5jcHAgKi87IH07CiAJ
CTg5NTI1MzUzMTE2NDFCMzQwMENBQkYwMCAvKiBGaWxlVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTUyNTM1MTExNjQxQjM0MDBDQUJGMDAg
LyogRmlsZVRocmVhZC5oICovOyB9OworCQk4OTUyNTNENzExNkM0QzY4MDBDQUJGMDAgLyogRmls
ZVN0cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4OTUyNTNENDExNkM0QzY4MDBDQUJGMDAgLyogRmlsZVN0cmVhbS5jcHAgKi87IH07CisJCTg5
NTI1M0Q4MTE2QzRDNjgwMENBQkYwMCAvKiBGaWxlU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTUyNTNENTExNkM0QzY4MDBDQUJGMDAgLyog
RmlsZVN0cmVhbS5oICovOyB9OworCQk4OTUyNTNEOTExNkM0QzY4MDBDQUJGMDAgLyogRmlsZVN0
cmVhbUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODk1MjUzRDYxMTZDNEM2ODAwQ0FCRjAwIC8qIEZpbGVTdHJlYW1DbGllbnQuaCAqLzsgfTsK
IAkJOTMwMkIwQkQwRDc5RjgyOTAwQzdFRTgzIC8qIFBhZ2VHcm91cC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzAyQjBCQzBENzlGODI5MDBDN0VF
ODMgLyogUGFnZUdyb3VwLmNwcCAqLzsgfTsKIAkJOTMwMkIwQkYwRDc5RjgyQzAwQzdFRTgzIC8q
IFBhZ2VHcm91cC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTMwMkIwQkUwRDc5RjgyQzAwQzdFRTgzIC8qIFBhZ2VHcm91cC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzMDVCMjREMDk4RjFCNkIwMEMy
ODg1NSAvKiBUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTMwNUIyNEMwOThGMUI2QjAwQzI4ODU1IC8qIFRpbWVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc2NjQsNiArNzY2Nyw5IEBACiAJ
CTg1RkYzMTU5MEFBRkJGQ0IwMDM3NEYzOCAvKiBET01LZXlib2FyZEV2ZW50Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUtleWJvYXJkRXZlbnQubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5NTI1MzUwMTE2NDFCMzQwMENBQkYwMCAvKiBG
aWxlVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVU
aHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTUyNTM1MTExNjQxQjM0
MDBDQUJGMDAgLyogRmlsZVRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBGaWxlVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5NTI1M0Q0MTE2
QzRDNjgwMENBQkYwMCAvKiBGaWxlU3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEZpbGVTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4OTUyNTNENTExNkM0QzY4MDBDQUJGMDAgLyogRmlsZVN0cmVhbS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlU3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTg5NTI1M0Q2MTE2QzRDNjgwMENBQkYwMCAvKiBGaWxlU3RyZWFtQ2xpZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVTdHJlYW1DbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwMkIwQkMwRDc5RjgyOTAwQzdFRTgzIC8qIFBhZ2VH
cm91cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlR3JvdXAu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzAyQjBCRTBENzlGODJDMDBDN0VF
ODMgLyogUGFnZUdyb3VwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VH
cm91cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzA1QjI0QzA5OEYxQjZCMDBD
Mjg4NTUgLyogVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGltZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyOTUzLDYgKzEyOTU5LDkgQEAKIAkJ
OTNFRUMxRUMwOUMyODc3NzAwQzUxNUQxIC8qIGh0bWwgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTg5NTI1M0Q0MTE2QzRDNjgwMENBQkYwMCAvKiBGaWxl
U3RyZWFtLmNwcCAqLywKKwkJCQk4OTUyNTNENTExNkM0QzY4MDBDQUJGMDAgLyogRmlsZVN0cmVh
bS5oICovLAorCQkJCTg5NTI1M0Q2MTE2QzRDNjgwMENBQkYwMCAvKiBGaWxlU3RyZWFtQ2xpZW50
LmggKi8sCiAJCQkJODk1MjUzNTAxMTY0MUIzNDAwQ0FCRjAwIC8qIEZpbGVUaHJlYWQuY3BwICov
LAogCQkJCTg5NTI1MzUxMTE2NDFCMzQwMENBQkYwMCAvKiBGaWxlVGhyZWFkLmggKi8sCiAJCQkJ
NDk0ODRGQUUxMDJDRjAxRTAwMTg3REQzIC8qIGNhbnZhcyAqLywKQEAgLTE4ODE0LDYgKzE4ODIz
LDggQEAKIAkJCQk4OTUyNTM1MzExNjQxQjM0MDBDQUJGMDAgLyogRmlsZVRocmVhZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTdDMDc4NTAxMTY1RDVCRTAwM0EzMkVGIC8qIFN1ZmZpeFRyZWUuaCBp
biBIZWFkZXJzICovLAogCQkJCTI1NDJGNERCMTE2NkMyNUEwMEU4OUE4NiAvKiBVc2VyR2VzdHVy
ZUluZGljYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODk1MjUzRDgxMTZDNEM2ODAwQ0FCRjAw
IC8qIEZpbGVTdHJlYW0uaCBpbiBIZWFkZXJzICovLAorCQkJCTg5NTI1M0Q5MTE2QzRDNjgwMENB
QkYwMCAvKiBGaWxlU3RyZWFtQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIxMDM0LDYgKzIx
MDQ1LDcgQEAKIAkJCQkyRTNCQkYwNzExNjJEQTExMDBCOTQwOUEgLyogVVVJRC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk4OTUyNTM1MjExNjQxQjM0MDBDQUJGMDAgLyogRmlsZVRocmVhZC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkyNTQyRjREQTExNjZDMjVBMDBFODlBODYgLyogVXNlckdlc3R1
cmVJbmRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODk1MjUzRDcxMTZDNEM2ODAwQ0FC
RjAwIC8qIEZpbGVTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvRmlsZVN0cmVhbS5jcHAgYi9XZWJDb3JlL2h0bWwvRmlsZVN0cmVhbS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNjOTkyYwotLS0gL2Rldi9udWxsCisrKyBi
L1dlYkNvcmUvaHRtbC9GaWxlU3RyZWFtLmNwcApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShGSUxFX1JFQURFUikgfHwgRU5BQkxFKEZJTEVfV1JJVEVS
KQorCisjaW5jbHVkZSAiRmlsZVN0cmVhbS5oIgorCisjaW5jbHVkZSAiQmxvYi5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRmlsZVN0cmVh
bTo6RmlsZVN0cmVhbShGaWxlU3RyZWFtQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVudChj
bGllbnQpCisgICAgLCBtX2hhbmRsZShpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQoreworfQor
CitGaWxlU3RyZWFtOjp+RmlsZVN0cmVhbSgpCit7CisgICAgQVNTRVJUKCFpc0hhbmRsZVZhbGlk
KG1faGFuZGxlKSk7Cit9CisKK3ZvaWQgRmlsZVN0cmVhbTo6c3RhcnQoKQoreworICAgIEFTU0VS
VCghaXNNYWluVGhyZWFkKCkpOworICAgIG1fY2xpZW50LT5kaWRTdGFydCgpOworfQorCit2b2lk
IEZpbGVTdHJlYW06Om9wZW5Gb3JSZWFkKEJsb2IqKQoreworICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOworICAgIC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KK30KKwordm9pZCBGaWxl
U3RyZWFtOjpvcGVuRm9yV3JpdGUoY29uc3QgU3RyaW5nJikKK3sKKyAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKKyAgICAvLyBGSVhNRTogdG8gYmUgaW1wbGVtZW50ZWQuCit9CisKK3ZvaWQg
RmlsZVN0cmVhbTo6Y2xvc2UoKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAg
IGlmIChpc0hhbmRsZVZhbGlkKG1faGFuZGxlKSkKKyAgICAgICAgY2xvc2VGaWxlKG1faGFuZGxl
KTsKK30KKwordm9pZCBGaWxlU3RyZWFtOjpyZWFkKGNoYXIqLCBpbnQpCit7CisgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CisgICAgLy8gRklYTUU6IHRvIGJlIGltcGxlbWVudGVkLgorfQor
Cit2b2lkIEZpbGVTdHJlYW06OndyaXRlKEJsb2IqLCBsb25nIGxvbmcsIGludCkKK3sKKyAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICAvLyBGSVhNRTogdG8gYmUgaW1wbGVtZW50ZWQu
Cit9CisKK3ZvaWQgRmlsZVN0cmVhbTo6dHJ1bmNhdGUobG9uZyBsb25nKQoreworICAgIEFTU0VS
VCghaXNNYWluVGhyZWFkKCkpOworICAgIC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfV1JJVEVS
KSB8fCBFTkFCTEVfRklMRV9SRUFERVIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvRmlsZVN0
cmVhbS5oIGIvV2ViQ29yZS9odG1sL0ZpbGVTdHJlYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5iYTdjMDU2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0Zp
bGVTdHJlYW0uaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRmlsZVN0cmVhbV9oCisjZGVmaW5l
IEZpbGVTdHJlYW1faAorCisjaWYgRU5BQkxFKEZJTEVfUkVBREVSKSB8fCBFTkFCTEUoRklMRV9X
UklURVIpCisKKyNpbmNsdWRlICJGaWxlU3RyZWFtQ2xpZW50LmgiCisjaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCbG9iOworY2xhc3MgU3Ry
aW5nOworCisvLyBBbGwgbWV0aG9kcyBhcmUgc3luY2hyb25vdXMgYW5kIHNob3VsZCBiZSBjYWxs
ZWQgb24gRmlsZSBvciBXb3JrZXIgdGhyZWFkLgorY2xhc3MgRmlsZVN0cmVhbSA6IHB1YmxpYyBS
ZWZDb3VudGVkPEZpbGVTdHJlYW0+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxG
aWxlU3RyZWFtPiBjcmVhdGUoRmlsZVN0cmVhbUNsaWVudCogY2xpZW50KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlU3RyZWFtKGNsaWVudCkpOworICAgIH0KKyAgICB2
aXJ0dWFsIH5GaWxlU3RyZWFtKCk7CisKKyAgICB2b2lkIHN0YXJ0KCk7CisKKyAgICB2b2lkIG9w
ZW5Gb3JSZWFkKEJsb2IqKTsKKyAgICB2b2lkIG9wZW5Gb3JXcml0ZShjb25zdCBTdHJpbmcmIHBh
dGgpOworICAgIHZvaWQgY2xvc2UoKTsKKyAgICB2b2lkIHJlYWQoY2hhciogYnVmZmVyLCBpbnQg
bGVuZ3RoKTsKKyAgICB2b2lkIHdyaXRlKEJsb2IqIGJsb2IsIGxvbmcgbG9uZyBwb3NpdGlvbiwg
aW50IGxlbmd0aCk7CisgICAgdm9pZCB0cnVuY2F0ZShsb25nIGxvbmcgcG9zaXRpb24pOworCitw
cml2YXRlOgorICAgIEZpbGVTdHJlYW0oRmlsZVN0cmVhbUNsaWVudCopOworCisgICAgRmlsZVN0
cmVhbUNsaWVudCogbV9jbGllbnQ7CisgICAgUGxhdGZvcm1GaWxlSGFuZGxlIG1faGFuZGxlOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfUkVB
REVSKSB8fCBFTkFCTEUoRklMRV9XUklURVIpCisKKyNlbmRpZiAvLyBGaWxlU3RyZWFtX2gKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9GaWxlU3RyZWFtQ2xpZW50LmggYi9XZWJDb3JlL2h0bWwv
RmlsZVN0cmVhbUNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlk
MjRiZGYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvRmlsZVN0cmVhbUNsaWVudC5o
CkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBGaWxlU3RyZWFtQ2xpZW50X2gKKyNkZWZpbmUgRmls
ZVN0cmVhbUNsaWVudF9oCisKKyNpZiBFTkFCTEUoRklMRV9SRUFERVIpIHx8IEVOQUJMRShGSUxF
X1dSSVRFUikKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZpbGVTdHJlYW1DbGll
bnQgeworcHVibGljOgorICAgIC8vIEZvciByZWFkaW5nLgorICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWFkKGNvbnN0IGNoYXIqLCBpbnQpIHsgfQorCisgICAgLy8gRm9yIHdyaXRpbmcuCisgICAgdmly
dHVhbCB2b2lkIGRpZFdyaXRlKGludCkgeyB9CisKKyAgICAvLyBGb3IgYm90aCByZWFkaW5nIGFu
ZCB3cml0aW5nLgorICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydCgpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2goKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChFeGNlcHRpb25D
b2RlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkR2V0U2l6ZShsb25nIGxvbmcpIHsgfQorCitw
cm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+RmlsZVN0cmVhbUNsaWVudCgpIHsgfQorfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfUkVBREVSKSB8fCBF
TkFCTEUoRklMRV9XUklURVIpCisKKyNlbmRpZiAvLyBGaWxlU3RyZWFtQ2xpZW50X2gKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9GaWxlVGhyZWFkLmNwcCBiL1dlYkNvcmUvaHRtbC9GaWxlVGhy
ZWFkLmNwcAppbmRleCA5MGI2NmU4Li4wMmIxNzE4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
RmlsZVRocmVhZC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0ZpbGVUaHJlYWQuY3BwCkBAIC03MSwx
NSArNzEsMTUgQEAgdm9pZCBGaWxlVGhyZWFkOjpwb3N0VGFzayhQYXNzT3duUHRyPFRhc2s+IHRh
c2spCiAKIGNsYXNzIFNhbWVGaWxlUHJlZGljYXRlIHsKIHB1YmxpYzoKLSAgICBTYW1lRmlsZVBy
ZWRpY2F0ZShjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKSA6IG1faGFuZGxlKGhhbmRs
ZSkgeyB9Ci0gICAgYm9vbCBvcGVyYXRvcigpKEZpbGVUaHJlYWQ6OlRhc2sqIHRhc2spIGNvbnN0
IHsgcmV0dXJuIHRhc2stPmZpbGVIYW5kbGUoKSA9PSBtX2hhbmRsZTsgfQorICAgIFNhbWVGaWxl
UHJlZGljYXRlKGNvbnN0IEZpbGVTdHJlYW0qIHN0cmVhbSkgOiBtX3N0cmVhbShzdHJlYW0pIHsg
fQorICAgIGJvb2wgb3BlcmF0b3IoKShGaWxlVGhyZWFkOjpUYXNrKiB0YXNrKSBjb25zdCB7IHJl
dHVybiB0YXNrLT5zdHJlYW0oKSA9PSBtX3N0cmVhbTsgfQogcHJpdmF0ZToKLSAgICBQbGF0Zm9y
bUZpbGVIYW5kbGUgbV9oYW5kbGU7CisgICAgY29uc3QgRmlsZVN0cmVhbSogbV9zdHJlYW07CiB9
OwogCi12b2lkIEZpbGVUaHJlYWQ6OnJlbW92ZVRhc2soUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRs
ZSkKK3ZvaWQgRmlsZVRocmVhZDo6dW5zY2hlZHVsZVRhc2tzKGNvbnN0IEZpbGVTdHJlYW0qIHN0
cmVhbSkKIHsKLSAgICBTYW1lRmlsZVByZWRpY2F0ZSBwcmVkaWNhdGUoaGFuZGxlKTsKKyAgICBT
YW1lRmlsZVByZWRpY2F0ZSBwcmVkaWNhdGUoc3RyZWFtKTsKICAgICBtX3F1ZXVlLnJlbW92ZUlm
KHByZWRpY2F0ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9GaWxlVGhyZWFkLmgg
Yi9XZWJDb3JlL2h0bWwvRmlsZVRocmVhZC5oCmluZGV4IGVhOTNjYzMuLmQyNzI3M2EgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9GaWxlVGhyZWFkLmgKKysrIGIvV2ViQ29yZS9odG1sL0ZpbGVU
aHJlYWQuaApAQCAtMzMsNyArMzMsNiBAQAogCiAjaWYgRU5BQkxFKEZJTEVfV1JJVEVSKSB8fCBF
TkFCTEUoRklMRV9SRUFERVIpCiAKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSA8
d3RmL01lc3NhZ2VRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTQxLDYgKzQwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBGaWxlU3RyZWFtOworCiBjbGFzcyBGaWxlVGhyZWFkIDogcHVibGljIFRo
cmVhZFNhZmVTaGFyZWQ8RmlsZVRocmVhZD4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEZpbGVUaHJlYWQ+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlVGhyZWFk
KCkpOyB9CkBAIC01MywxNCArNTQsMTQgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAg
dmlydHVhbCB+VGFzaygpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soKSA9
IDA7Ci0gICAgICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlKCkgY29uc3QgeyByZXR1
cm4gbV9oYW5kbGU7IH0KKyAgICAgICAgRmlsZVN0cmVhbSogc3RyZWFtKCkgY29uc3QgeyByZXR1
cm4gbV9zdHJlYW07IH0KICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFRhc2soUGxhdGZvcm1GaWxl
SGFuZGxlIGhhbmRsZSkgOiBtX2hhbmRsZShoYW5kbGUpIHsgfQotICAgICAgICBjb25zdCBQbGF0
Zm9ybUZpbGVIYW5kbGUgbV9oYW5kbGU7CisgICAgICAgIFRhc2soRmlsZVN0cmVhbSogc3RyZWFt
KSA6IG1fc3RyZWFtKHN0cmVhbSkgeyB9CisgICAgICAgIEZpbGVTdHJlYW0qIG1fc3RyZWFtOwog
ICAgIH07CiAKICAgICB2b2lkIHBvc3RUYXNrKFBhc3NPd25QdHI8VGFzaz4gdGFzayk7Ci0gICAg
dm9pZCByZW1vdmVUYXNrKFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgdm9pZCB1bnNjaGVkdWxl
VGFza3MoY29uc3QgRmlsZVN0cmVhbSopOwogCiBwcml2YXRlOgogICAgIEZpbGVUaHJlYWQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52759</attachid>
            <date>2010-04-07 11:26:11 -0700</date>
            <delta_ts>2010-04-07 13:20:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37217-20100407112609.patch</filename>
            <type>text/plain</type>
            <size>18215</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWIwMzRkMC4uODMyZWMzNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMC0wNC0wNyAgS2ludWtvIFlhc3Vk
YSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIHNrZWxldG9uIEZpbGVTdHJlYW0gbW9kdWxlIGZvciBwcm92
aWRpbmcgc3luYyBmaWxlIG9wZXJhdGlvbnMgZm9yIEZpbGVBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MjE3CisgICAgICAgIEZvciBub3cgdGhl
IG1vZHVsZSBqdXN0IGRlZmluZXMgYW4gaW50ZXJmYWNlIGFuZCBpcyBhbG1vc3QgZW1wdHkuCisg
ICAgICAgIEltcGxlbWVudGF0aW9uIHdpbGwgYmUgYWRkZWQuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzOyB3aWxsIGJlIGFkZGVkIHdoZW4gd2UgaGF2ZSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbi4K
KworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAg
ICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogaHRtbC9GaWxlU3RyZWFtLmNwcDogQWRkZWQuCisgICAgICAgICogaHRtbC9GaWxlU3Ry
ZWFtLmg6IEFkZGVkLgorICAgICAgICAqIGh0bWwvRmlsZVN0cmVhbUNsaWVudC5oOiBBZGRlZC4K
KyAgICAgICAgKiBodG1sL0ZpbGVUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2FtZUZp
bGVQcmVkaWNhdGU6OlNhbWVGaWxlUHJlZGljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNhbWVG
aWxlUHJlZGljYXRlOjpvcGVyYXRvcigpKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVUaHJlYWQ6
OnVuc2NoZWR1bGVUYXNrcyk6CisgICAgICAgICogaHRtbC9GaWxlVGhyZWFkLmg6CisgICAgICAg
IChXZWJDb3JlOjpGaWxlVGhyZWFkOjpUYXNrOjpzdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6
RmlsZVRocmVhZDo6VGFzazo6VGFzayk6CisKIDIwMTAtMDQtMDYgIEFuZHkgRXN0ZXMgIDxhZXN0
ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IERhbiBCZXJuc3RlaW4u
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQppbmRleCBmZGVhYWEzLi4yNDQ2MmUyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTEwMjYsNiArMTAyNiw5IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9odG1sL0ZpbGUuaCBcCiAJV2ViQ29yZS9o
dG1sL0ZpbGVMaXN0LmNwcCBcCiAJV2ViQ29yZS9odG1sL0ZpbGVMaXN0LmggXAorCVdlYkNvcmUv
aHRtbC9GaWxlU3RyZWFtLmNwcCBcCisJV2ViQ29yZS9odG1sL0ZpbGVTdHJlYW0uaCBcCisJV2Vi
Q29yZS9odG1sL0ZpbGVTdHJlYW1DbGllbnQuaCBcCiAJV2ViQ29yZS9odG1sL0ZpbGVUaHJlYWQu
Y3BwIFwKIAlXZWJDb3JlL2h0bWwvRmlsZVRocmVhZC5oIFwKIAlXZWJDb3JlL2h0bWwvRm9ybURh
dGFMaXN0LmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IDg0NWI0NmYuLjU2N2ZkZDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xNDMwLDYgKzE0MzAs
OSBAQAogICAgICAgICAgICAgJ2h0bWwvRmlsZS5oJywKICAgICAgICAgICAgICdodG1sL0ZpbGVM
aXN0LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9GaWxlTGlzdC5oJywKKyAgICAgICAgICAgICdo
dG1sL0ZpbGVTdHJlYW0uY3BwJywKKyAgICAgICAgICAgICdodG1sL0ZpbGVTdHJlYW0uaCcsCisg
ICAgICAgICAgICAnaHRtbC9GaWxlU3RyZWFtQ2xpZW50LmgnLAogICAgICAgICAgICAgJ2h0bWwv
RmlsZVRocmVhZC5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvRmlsZVRocmVhZC5oJywKICAgICAg
ICAgICAgICdodG1sL0Zvcm1EYXRhTGlzdC5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggYWJmNGM0NS4uODkwM2QwZiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBA
IC02MTQsNiArNjE0LDcgQEAgU09VUkNFUyArPSBcCiAgICAgaHRtbC9ET01Gb3JtRGF0YS5jcHAg
XAogICAgIGh0bWwvRmlsZS5jcHAgXAogICAgIGh0bWwvRmlsZUxpc3QuY3BwIFwKKyAgICBodG1s
L0ZpbGVTdHJlYW0uY3BwIFwKICAgICBodG1sL0ZpbGVUaHJlYWQuY3BwIFwKICAgICBodG1sL0Zv
cm1EYXRhTGlzdC5jcHAgXAogICAgIGh0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwIFwKQEAgLTEz
MjMsNiArMTMyNCw4IEBAIEhFQURFUlMgKz0gXAogICAgIGh0bWwvRE9NRm9ybURhdGEuaCBcCiAg
ICAgaHRtbC9GaWxlLmggXAogICAgIGh0bWwvRmlsZUxpc3QuaCBcCisgICAgaHRtbC9GaWxlU3Ry
ZWFtLmggXAorICAgIGh0bWwvRmlsZVN0cmVhbUNsaWVudC5oIFwKICAgICBodG1sL0ZpbGVUaHJl
YWQuaCBcCiAgICAgaHRtbC9Gb3JtRGF0YUxpc3QuaCBcCiAgICAgaHRtbC9IVE1MQWxsQ29sbGVj
dGlvbi5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDhhYzFlNzAu
LjY2MTg3NDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzAyMzcs
NiArMzAyMzcsMTggQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5caHRtbFxGaWxlU3RyZWFtLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJ
CQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcRmlsZVN0cmVhbS5oIg0KKwkJCQk+
DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxGaWxl
U3RyZWFtQ2xpZW50LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVs
YXRpdmVQYXRoPSIuLlxodG1sXEZpbGVUaHJlYWQuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmUwMWZiOC4u
NzgxNGQ5ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTIyMTEsNiArMjIxMSw5IEBACiAJCTg1RkYzMTVCMEFBRkJGQ0IwMDM3NEYzOCAvKiBET01LZXli
b2FyZEV2ZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODVGRjMxNTkwQUFGQkZDQjAwMzc0RjM4IC8qIERPTUtleWJvYXJkRXZlbnQubW0gKi87IH07
CiAJCTg5NTI1MzUyMTE2NDFCMzQwMENBQkYwMCAvKiBGaWxlVGhyZWFkLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5NTI1MzUwMTE2NDFCMzQwMENB
QkYwMCAvKiBGaWxlVGhyZWFkLmNwcCAqLzsgfTsKIAkJODk1MjUzNTMxMTY0MUIzNDAwQ0FCRjAw
IC8qIEZpbGVUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg5NTI1MzUxMTE2NDFCMzQwMENBQkYwMCAvKiBGaWxlVGhyZWFkLmggKi87IH07CisJ
CTg5NTI1M0Q3MTE2QzRDNjgwMENBQkYwMCAvKiBGaWxlU3RyZWFtLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5NTI1M0Q0MTE2QzRDNjgwMENBQkYw
MCAvKiBGaWxlU3RyZWFtLmNwcCAqLzsgfTsKKwkJODk1MjUzRDgxMTZDNEM2ODAwQ0FCRjAwIC8q
IEZpbGVTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg5NTI1M0Q1MTE2QzRDNjgwMENBQkYwMCAvKiBGaWxlU3RyZWFtLmggKi87IH07CisJCTg5
NTI1M0Q5MTE2QzRDNjgwMENBQkYwMCAvKiBGaWxlU3RyZWFtQ2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTUyNTNENjExNkM0QzY4MDBDQUJG
MDAgLyogRmlsZVN0cmVhbUNsaWVudC5oICovOyB9OwogCQk5MzAyQjBCRDBENzlGODI5MDBDN0VF
ODMgLyogUGFnZUdyb3VwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzMDJCMEJDMEQ3OUY4MjkwMEM3RUU4MyAvKiBQYWdlR3JvdXAuY3BwICovOyB9
OwogCQk5MzAyQjBCRjBENzlGODJDMDBDN0VFODMgLyogUGFnZUdyb3VwLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzAyQjBCRTBENzlGODJDMDBDN0VF
ODMgLyogUGFnZUdyb3VwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTMwNUIyNEQwOThGMUI2QjAwQzI4ODU1IC8qIFRpbWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1QjI0QzA5OEYxQjZCMDBD
Mjg4NTUgLyogVGltZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtNzY2NCw2ICs3NjY3LDkgQEAKIAkJODVGRjMxNTkwQUFGQkZDQjAwMzc0RjM4
IC8qIERPTUtleWJvYXJkRXZlbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRE9NS2V5Ym9hcmRFdmVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODk1MjUzNTAxMTY0MUIzNDAwQ0FCRjAwIC8qIEZpbGVUaHJlYWQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVRocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg5NTI1MzUxMTE2NDFCMzQwMENBQkYwMCAvKiBGaWxlVGhyZWFkLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVUaHJlYWQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODk1MjUzRDQxMTZDNEM2ODAwQ0FCRjAwIC8qIEZpbGVTdHJl
YW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN0cmVhbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5NTI1M0Q1MTE2QzRDNjgwMENBQkYw
MCAvKiBGaWxlU3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVT
dHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODk1MjUzRDYxMTZDNEM2ODAw
Q0FCRjAwIC8qIEZpbGVTdHJlYW1DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRmlsZVN0cmVhbUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
MzAyQjBCQzBENzlGODI5MDBDN0VFODMgLyogUGFnZUdyb3VwLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VHcm91cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzMDJCMEJFMEQ3OUY4MkMwMEM3RUU4MyAvKiBQYWdlR3JvdXAuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZUdyb3VwLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzMDVCMjRDMDk4RjFCNkIwMEMyODg1NSAvKiBUaW1lci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTI5NTMsNiArMTI5NTksOSBAQAogCQk5M0VFQzFFQzA5QzI4Nzc3MDBDNTE1RDEg
LyogaHRtbCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
ODk1MjUzRDQxMTZDNEM2ODAwQ0FCRjAwIC8qIEZpbGVTdHJlYW0uY3BwICovLAorCQkJCTg5NTI1
M0Q1MTE2QzRDNjgwMENBQkYwMCAvKiBGaWxlU3RyZWFtLmggKi8sCisJCQkJODk1MjUzRDYxMTZD
NEM2ODAwQ0FCRjAwIC8qIEZpbGVTdHJlYW1DbGllbnQuaCAqLywKIAkJCQk4OTUyNTM1MDExNjQx
QjM0MDBDQUJGMDAgLyogRmlsZVRocmVhZC5jcHAgKi8sCiAJCQkJODk1MjUzNTExMTY0MUIzNDAw
Q0FCRjAwIC8qIEZpbGVUaHJlYWQuaCAqLywKIAkJCQk0OTQ4NEZBRTEwMkNGMDFFMDAxODdERDMg
LyogY2FudmFzICovLApAQCAtMTg4MTQsNiArMTg4MjMsOCBAQAogCQkJCTg5NTI1MzUzMTE2NDFC
MzQwMENBQkYwMCAvKiBGaWxlVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0MwNzg1MDEx
NjVENUJFMDAzQTMyRUYgLyogU3VmZml4VHJlZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjU0MkY0
REIxMTY2QzI1QTAwRTg5QTg2IC8qIFVzZXJHZXN0dXJlSW5kaWNhdG9yLmggaW4gSGVhZGVycyAq
LywKKwkJCQk4OTUyNTNEODExNkM0QzY4MDBDQUJGMDAgLyogRmlsZVN0cmVhbS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJODk1MjUzRDkxMTZDNEM2ODAwQ0FCRjAwIC8qIEZpbGVTdHJlYW1DbGllbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpAQCAtMjEwMzQsNiArMjEwNDUsNyBAQAogCQkJCTJFM0JCRjA3MTE2
MkRBMTEwMEI5NDA5QSAvKiBVVUlELmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg5NTI1MzUyMTE2
NDFCMzQwMENBQkYwMCAvKiBGaWxlVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI1NDJG
NERBMTE2NkMyNUEwMEU4OUE4NiAvKiBVc2VyR2VzdHVyZUluZGljYXRvci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk4OTUyNTNENzExNkM0QzY4MDBDQUJGMDAgLyogRmlsZVN0cmVhbS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9GaWxlU3RyZWFtLmNwcCBiL1dl
YkNvcmUvaHRtbC9GaWxlU3RyZWFtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi41M2M5OTJjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0ZpbGVTdHJlYW0u
Y3BwCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKEZJ
TEVfUkVBREVSKSB8fCBFTkFCTEUoRklMRV9XUklURVIpCisKKyNpbmNsdWRlICJGaWxlU3RyZWFt
LmgiCisKKyNpbmNsdWRlICJCbG9iLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitGaWxlU3RyZWFtOjpGaWxlU3RyZWFtKEZpbGVTdHJlYW1D
bGllbnQqIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1faGFuZGxlKGlu
dmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCit7Cit9CisKK0ZpbGVTdHJlYW06On5GaWxlU3RyZWFt
KCkKK3sKKyAgICBBU1NFUlQoIWlzSGFuZGxlVmFsaWQobV9oYW5kbGUpKTsKK30KKwordm9pZCBG
aWxlU3RyZWFtOjpzdGFydCgpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAg
bV9jbGllbnQtPmRpZFN0YXJ0KCk7Cit9CisKK3ZvaWQgRmlsZVN0cmVhbTo6b3BlbkZvclJlYWQo
QmxvYiopCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgLy8gRklYTUU6IHRv
IGJlIGltcGxlbWVudGVkLgorfQorCit2b2lkIEZpbGVTdHJlYW06Om9wZW5Gb3JXcml0ZShjb25z
dCBTdHJpbmcmKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIC8vIEZJWE1F
OiB0byBiZSBpbXBsZW1lbnRlZC4KK30KKwordm9pZCBGaWxlU3RyZWFtOjpjbG9zZSgpCit7Cisg
ICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKGlzSGFuZGxlVmFsaWQobV9oYW5k
bGUpKQorICAgICAgICBjbG9zZUZpbGUobV9oYW5kbGUpOworfQorCit2b2lkIEZpbGVTdHJlYW06
OnJlYWQoY2hhciosIGludCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICAv
LyBGSVhNRTogdG8gYmUgaW1wbGVtZW50ZWQuCit9CisKK3ZvaWQgRmlsZVN0cmVhbTo6d3JpdGUo
QmxvYiosIGxvbmcgbG9uZywgaW50KQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwor
ICAgIC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KK30KKwordm9pZCBGaWxlU3RyZWFtOjp0
cnVuY2F0ZShsb25nIGxvbmcpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAg
Ly8gRklYTUU6IHRvIGJlIGltcGxlbWVudGVkLgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoRklMRV9XUklURVIpIHx8IEVOQUJMRV9GSUxFX1JFQURFUikK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9GaWxlU3RyZWFtLmggYi9XZWJDb3JlL2h0bWwvRmls
ZVN0cmVhbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhN2MwNTYKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvRmlsZVN0cmVhbS5oCkBAIC0wLDAgKzEsNzUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBGaWxlU3RyZWFtX2gKKyNkZWZpbmUgRmlsZVN0cmVhbV9oCisKKyNpZiBFTkFC
TEUoRklMRV9SRUFERVIpIHx8IEVOQUJMRShGSUxFX1dSSVRFUikKKworI2luY2x1ZGUgIkZpbGVT
dHJlYW1DbGllbnQuaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEJsb2I7CitjbGFzcyBTdHJpbmc7CisKKy8vIEFsbCBtZXRob2RzIGFy
ZSBzeW5jaHJvbm91cyBhbmQgc2hvdWxkIGJlIGNhbGxlZCBvbiBGaWxlIG9yIFdvcmtlciB0aHJl
YWQuCitjbGFzcyBGaWxlU3RyZWFtIDogcHVibGljIFJlZkNvdW50ZWQ8RmlsZVN0cmVhbT4gewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGVTdHJlYW0+IGNyZWF0ZShGaWxlU3Ry
ZWFtQ2xpZW50KiBjbGllbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZp
bGVTdHJlYW0oY2xpZW50KSk7CisgICAgfQorICAgIHZpcnR1YWwgfkZpbGVTdHJlYW0oKTsKKwor
ICAgIHZvaWQgc3RhcnQoKTsKKworICAgIHZvaWQgb3BlbkZvclJlYWQoQmxvYiopOworICAgIHZv
aWQgb3BlbkZvcldyaXRlKGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgdm9pZCBjbG9zZSgpOwor
ICAgIHZvaWQgcmVhZChjaGFyKiBidWZmZXIsIGludCBsZW5ndGgpOworICAgIHZvaWQgd3JpdGUo
QmxvYiogYmxvYiwgbG9uZyBsb25nIHBvc2l0aW9uLCBpbnQgbGVuZ3RoKTsKKyAgICB2b2lkIHRy
dW5jYXRlKGxvbmcgbG9uZyBwb3NpdGlvbik7CisKK3ByaXZhdGU6CisgICAgRmlsZVN0cmVhbShG
aWxlU3RyZWFtQ2xpZW50Kik7CisKKyAgICBGaWxlU3RyZWFtQ2xpZW50KiBtX2NsaWVudDsKKyAg
ICBQbGF0Zm9ybUZpbGVIYW5kbGUgbV9oYW5kbGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRklMRV9SRUFERVIpIHx8IEVOQUJMRShGSUxFX1dSSVRF
UikKKworI2VuZGlmIC8vIEZpbGVTdHJlYW1faApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0Zp
bGVTdHJlYW1DbGllbnQuaCBiL1dlYkNvcmUvaHRtbC9GaWxlU3RyZWFtQ2xpZW50LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQyNGJkZgotLS0gL2Rldi9udWxsCisrKyBi
L1dlYkNvcmUvaHRtbC9GaWxlU3RyZWFtQ2xpZW50LmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEZpbGVTdHJlYW1DbGllbnRfaAorI2RlZmluZSBGaWxlU3RyZWFtQ2xpZW50X2gKKworI2lmIEVO
QUJMRShGSUxFX1JFQURFUikgfHwgRU5BQkxFKEZJTEVfV1JJVEVSKQorCisjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgRmlsZVN0cmVhbUNsaWVudCB7CitwdWJsaWM6CisgICAgLy8gRm9y
IHJlYWRpbmcuCisgICAgdmlydHVhbCB2b2lkIGRpZFJlYWQoY29uc3QgY2hhciosIGludCkgeyB9
CisKKyAgICAvLyBGb3Igd3JpdGluZy4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGUoaW50KSB7
IH0KKworICAgIC8vIEZvciBib3RoIHJlYWRpbmcgYW5kIHdyaXRpbmcuCisgICAgdmlydHVhbCB2
b2lkIGRpZFN0YXJ0KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaCgpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBkaWRGYWlsKEV4Y2VwdGlvbkNvZGUpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkaWRHZXRTaXplKGxvbmcgbG9uZykgeyB9CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5G
aWxlU3RyZWFtQ2xpZW50KCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoRklMRV9SRUFERVIpIHx8IEVOQUJMRShGSUxFX1dSSVRFUikKKworI2Vu
ZGlmIC8vIEZpbGVTdHJlYW1DbGllbnRfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0ZpbGVU
aHJlYWQuY3BwIGIvV2ViQ29yZS9odG1sL0ZpbGVUaHJlYWQuY3BwCmluZGV4IDkwYjY2ZTguLjAy
YjE3MTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9GaWxlVGhyZWFkLmNwcAorKysgYi9XZWJD
b3JlL2h0bWwvRmlsZVRocmVhZC5jcHAKQEAgLTcxLDE1ICs3MSwxNSBAQCB2b2lkIEZpbGVUaHJl
YWQ6OnBvc3RUYXNrKFBhc3NPd25QdHI8VGFzaz4gdGFzaykKIAogY2xhc3MgU2FtZUZpbGVQcmVk
aWNhdGUgewogcHVibGljOgotICAgIFNhbWVGaWxlUHJlZGljYXRlKGNvbnN0IFBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUpIDogbV9oYW5kbGUoaGFuZGxlKSB7IH0KLSAgICBib29sIG9wZXJhdG9y
KCkoRmlsZVRocmVhZDo6VGFzayogdGFzaykgY29uc3QgeyByZXR1cm4gdGFzay0+ZmlsZUhhbmRs
ZSgpID09IG1faGFuZGxlOyB9CisgICAgU2FtZUZpbGVQcmVkaWNhdGUoY29uc3QgRmlsZVN0cmVh
bSogc3RyZWFtKSA6IG1fc3RyZWFtKHN0cmVhbSkgeyB9CisgICAgYm9vbCBvcGVyYXRvcigpKEZp
bGVUaHJlYWQ6OlRhc2sqIHRhc2spIGNvbnN0IHsgcmV0dXJuIHRhc2stPnN0cmVhbSgpID09IG1f
c3RyZWFtOyB9CiBwcml2YXRlOgotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBtX2hhbmRsZTsKKyAg
ICBjb25zdCBGaWxlU3RyZWFtKiBtX3N0cmVhbTsKIH07CiAKLXZvaWQgRmlsZVRocmVhZDo6cmVt
b3ZlVGFzayhQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQordm9pZCBGaWxlVGhyZWFkOjp1bnNj
aGVkdWxlVGFza3MoY29uc3QgRmlsZVN0cmVhbSogc3RyZWFtKQogewotICAgIFNhbWVGaWxlUHJl
ZGljYXRlIHByZWRpY2F0ZShoYW5kbGUpOworICAgIFNhbWVGaWxlUHJlZGljYXRlIHByZWRpY2F0
ZShzdHJlYW0pOwogICAgIG1fcXVldWUucmVtb3ZlSWYocHJlZGljYXRlKTsKIH0KIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0ZpbGVUaHJlYWQuaCBiL1dlYkNvcmUvaHRtbC9GaWxlVGhyZWFk
LmgKaW5kZXggZWE5M2NjMy4uZDI3MjczYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0ZpbGVU
aHJlYWQuaAorKysgYi9XZWJDb3JlL2h0bWwvRmlsZVRocmVhZC5oCkBAIC0zMyw3ICszMyw2IEBA
CiAKICNpZiBFTkFCTEUoRklMRV9XUklURVIpIHx8IEVOQUJMRShGSUxFX1JFQURFUikKIAotI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlIDx3dGYvTWVzc2FnZVF1ZXVlLmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAt
NDEsNiArNDAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEZpbGVTdHJlYW07
CisKIGNsYXNzIEZpbGVUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVNoYXJlZDxGaWxlVGhyZWFk
PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZVRocmVhZD4gY3JlYXRlKCkg
eyByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGVUaHJlYWQoKSk7IH0KQEAgLTUzLDE0ICs1NCwxNCBA
QCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5UYXNrKCkgeyB9CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzaygpID0gMDsKLSAgICAgICAgUGxhdGZvcm1GaWxl
SGFuZGxlIGZpbGVIYW5kbGUoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZTsgfQorICAgICAgICBG
aWxlU3RyZWFtKiBzdHJlYW0oKSBjb25zdCB7IHJldHVybiBtX3N0cmVhbTsgfQogICAgIHByb3Rl
Y3RlZDoKLSAgICAgICAgVGFzayhQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKSA6IG1faGFuZGxl
KGhhbmRsZSkgeyB9Ci0gICAgICAgIGNvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSBtX2hhbmRsZTsK
KyAgICAgICAgVGFzayhGaWxlU3RyZWFtKiBzdHJlYW0pIDogbV9zdHJlYW0oc3RyZWFtKSB7IH0K
KyAgICAgICAgRmlsZVN0cmVhbSogbV9zdHJlYW07CiAgICAgfTsKIAogICAgIHZvaWQgcG9zdFRh
c2soUGFzc093blB0cjxUYXNrPiB0YXNrKTsKLSAgICB2b2lkIHJlbW92ZVRhc2soUGxhdGZvcm1G
aWxlSGFuZGxlKTsKKyAgICB2b2lkIHVuc2NoZWR1bGVUYXNrcyhjb25zdCBGaWxlU3RyZWFtKik7
CiAKIHByaXZhdGU6CiAgICAgRmlsZVRocmVhZCgpOwo=
</data>
<flag name="review"
          id="36330"
          type_id="1"
          status="+"
          setter="jianli"
    />
    <flag name="commit-queue"
          id="36334"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
      

    </bug>

</bugzilla>