<?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>9768</bug_id>
          
          <creation_ts>2006-07-06 17:17:13 -0700</creation_ts>
          <short_desc>Split XSLImportRule out of XSLStyleSheet.* into separate files (one class per file).</short_desc>
          <delta_ts>2006-07-07 17:02:16 -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>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>48632</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-07-06 17:17:13 -0700</bug_when>
    <thetext>Real simple split.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48633</commentid>
    <comment_count>1</comment_count>
      <attachid>9241</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-07-06 17:22:13 -0700</bug_when>
    <thetext>Created attachment 9241
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48730</commentid>
    <comment_count>2</comment_count>
      <attachid>9241</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-07-07 11:06:23 -0700</bug_when>
    <thetext>Comment on attachment 9241
patch

looks great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48753</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-07-07 17:02:16 -0700</bug_when>
    <thetext>Landed in r15201.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9241</attachid>
            <date>2006-07-06 17:22:13 -0700</date>
            <delta_ts>2006-07-07 11:06:23 -0700</delta_ts>
            <desc>patch</desc>
            <filename>xslpatch.diff</filename>
            <type>text/plain</type>
            <size>25236</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNTE5MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMDYtMDctMDYgIFNhbSBXZWluaWcgIDxzYW0ud2VpbmlnQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAt
IGZpeCBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTk3NjgK
KyAgICAgICAgICBTcGxpdCBYU0xJbXBvcnRSdWxlIG91dCBvZiBYU0xTdHlsZVNoZWV0LiogaW50
byBzZXBhcmF0ZSAKKyAgICAgICAgICBmaWxlcyAob25lIGNsYXNzIHBlciBmaWxlKS4KKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB4bWwv
WFNMSW1wb3J0UnVsZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6WFNMSW1wb3J0UnVs
ZTo6WFNMSW1wb3J0UnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpYU0xJbXBvcnRSdWxlOjpwYXJl
bnRTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlhTTEltcG9ydFJ1bGU6OmxvYWRTaGVl
dCk6CisgICAgICAgICogeG1sL1hTTEltcG9ydFJ1bGUuaDogQWRkZWQuCisgICAgICAgICogeG1s
L1hTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAqIHhtbC9YU0xTdHlsZVNoZWV0Lmg6CisKIDIw
MDYtMDctMDYgIEFuZGVycyBDYXJsc3NvbiAgPGFjYXJsc3NvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgTWFjaWVqLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1MTU5KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMzOCw2ICszMzgsOCBAQAog
CQk4NTRGRTczNzBBMjI5N0JFMDA1OEQ3QUQgLyogVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTRGRTcyRDBBMjI5N0JFMDA1OEQ3QUQg
LyogVHJhdmVyc2FsLmggKi87IH07CiAJCTg1NEZFNzM4MEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVl
V2Fsa2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg1NEZFNzJFMEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVlV2Fsa2VyLmNwcCAqLzsgfTsKIAkJODU0
RkU3MzkwQTIyOTdCRTAwNThEN0FEIC8qIFRyZWVXYWxrZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NEZFNzJGMEEyMjk3QkUwMDU4RDdBRCAvKiBU
cmVlV2Fsa2VyLmggKi87IH07CisJCTg1RDNCNzU4MEE1RDdBMEUwMEQzMjNGNyAvKiBYU0xJbXBv
cnRSdWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg1RDNCNzU2MEE1RDdBMEUwMEQzMjNGNyAvKiBYU0xJbXBvcnRSdWxlLmNwcCAqLzsgfTsKKwkJ
ODVEM0I3NTkwQTVEN0EwRTAwRDMyM0Y3IC8qIFhTTEltcG9ydFJ1bGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RDNCNzU3MEE1RDdBMEUwMEQzMjNG
NyAvKiBYU0xJbXBvcnRSdWxlLmggKi87IH07CiAJCTkzMDMyQ0M4MDlBRUMzNDMwMEY4MkExOCAv
KiBQYXRoQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTMwMzJDQzcwOUFFQzM0MzAwRjgyQTE4IC8qIFBhdGhDRy5jcHAgKi87IH07CiAJCTkzMDMy
Q0NBMDlBRUMzNEIwMEY4MkExOCAvKiBQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzAzMkNDOTA5QUVDMzRCMDBGODJBMTggLyogUGF0aC5oICov
OyB9OwogCQk5MzA1QjI0RDA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDVCMjRDMDk4RjFCNkIwMEMyODg1
NSAvKiBUaW1lci5oICovOyB9OwpAQCAtMjAwMyw2ICsyMDA1LDggQEAKIAkJODU0RkU3MkQwQTIy
OTdCRTAwNThEN0FEIC8qIFRyYXZlcnNhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVHJhdmVyc2FsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1NEZFNzJF
MEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVlV2Fsa2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBUcmVlV2Fsa2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODU0RkU3MkYwQTIyOTdCRTAwNThEN0FEIC8qIFRyZWVXYWxrZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyZWVXYWxrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJODVEM0I3NTYwQTVEN0EwRTAwRDMyM0Y3IC8qIFhTTEltcG9ydFJ1bGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhTTEltcG9ydFJ1bGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUQzQjc1NzBBNUQ3QTBFMDBEMzIzRjcg
LyogWFNMSW1wb3J0UnVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFNM
SW1wb3J0UnVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzAzMkNDNzA5QUVD
MzQzMDBGODJBMTggLyogUGF0aENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBhdGhDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMDMyQ0M5
MDlBRUMzNEIwMEY4MkExOCAvKiBQYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNUIyNEMwOThGMUI2
QjAwQzI4ODU1IC8qIFRpbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRp
bWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMTE3LDcgKzMxMjEsNyBAQAog
CQlBQkU3QjUyMjBBNDg5RjgzMDAzMTg4MUMgLyogRGVwcmVjYXRlZFJlbmRlclNlbGVjdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVwcmVjYXRlZFJlbmRlclNlbGVjdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzA2NkY2QzA5RkVCMkZBMDBDNTg5QTcg
LyogV2ViQ29yZVRleHRSZW5kZXJlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViQ29yZVRleHRSZW5kZXJlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzA2RjI0OTA2RDE4QTdFMDA0QTZGQTMgLyogWFNMU3R5bGVTaGVldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYU0xTdHlsZVNoZWV0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7
IH07Ci0JCUJDMDZGMjRBMDZEMThBN0UwMDRBNkZBMyAvKiBYU0xTdHlsZVNoZWV0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhTTFN0eWxlU2hl
ZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7
IH07CisJCUJDMDZGMjRBMDZEMThBN0UwMDRBNkZBMyAvKiBYU0xTdHlsZVNoZWV0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBwYXRoID0gWFNMU3R5bGVTaGVl
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDQ7IHVzZXNUYWJzID0gMDsg
fTsKIAkJQkMwNkYyNEIwNkQxOEE3RTAwNEE2RkEzIC8qIFhTTFRQcm9jZXNzb3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWFNMVFBy
b2Nlc3Nvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQlCQzA2RjI0QzA2RDE4QTdFMDA0QTZGQTMgLyogWFNMVFByb2Nlc3Nvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYU0xU
UHJvY2Vzc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQlCQzFBMzc5NzA5N0M3MTVGMDAxOUYzRDggLyogRE9NLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET00uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTQwNTYsNyArNDA2MCw2IEBACiAJCTkzRUVDMUVDMDlDMjg3NzcwMEM1MTVEMSAvKiBo
dG1sICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlCQ0NE
NzREQjBBNEM4RDM1MDA1RkRBNkQgLyogSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oICovLAogCQkJ
CTkzRUVDMUYwMDlDMjg3NzcwMEM1MTVEMSAvKiBDYW52YXNHcmFkaWVudC5jcHAgKi8sCiAJCQkJ
OTNFRUMxRjEwOUMyODc3NzAwQzUxNUQxIC8qIENhbnZhc0dyYWRpZW50LmggKi8sCiAJCQkJOTMw
Q0FCODgwOUM0OUVGQTAwMjI5QzA0IC8qIENhbnZhc0dyYWRpZW50LmlkbCAqLywKQEAgLTQyNTgs
NiArNDI2MSw3IEBACiAJCQkJQThFQTc5RTYwQTE5MTZERjAwQThFRjVGIC8qIEhUTUxVTGlzdEVs
ZW1lbnQuaCAqLywKIAkJCQkxQTg1QjFENTBBMUIyMzZDMDBEOEM4N0MgLyogSFRNTFVMaXN0RWxl
bWVudC5pZGwgKi8sCiAJCQkJQkNDRDc0RTQwQTRDOERERjAwNUZEQTZEIC8qIEhUTUxWaWV3U291
cmNlRG9jdW1lbnQuY3BwICovLAorCQkJCUJDQ0Q3NERCMEE0QzhEMzUwMDVGREE2RCAvKiBIVE1M
Vmlld1NvdXJjZURvY3VtZW50LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGh0bWw7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtNTEzMSw2ICs1MTM1LDggQEAKIAkJCQlBODMzQzdGNjBB
MkNGMUQ4MDBENTc2NjQgLyogeG1sYXR0cnMuaW4gKi8sCiAJCQkJRTFGMDQyNDQwOTgzOTM4OTAw
NjY5NEVBIC8qIHhtbGh0dHByZXF1ZXN0LmNwcCAqLywKIAkJCQlFMUYwNDI0NTA5ODM5Mzg5MDA2
Njk0RUEgLyogeG1saHR0cHJlcXVlc3QuaCAqLywKKwkJCQk4NUQzQjc1NjBBNUQ3QTBFMDBEMzIz
RjcgLyogWFNMSW1wb3J0UnVsZS5jcHAgKi8sCisJCQkJODVEM0I3NTcwQTVEN0EwRTAwRDMyM0Y3
IC8qIFhTTEltcG9ydFJ1bGUuaCAqLywKIAkJCQlCQzA2RjI0OTA2RDE4QTdFMDA0QTZGQTMgLyog
WFNMU3R5bGVTaGVldC5jcHAgKi8sCiAJCQkJQkMwNkYyNEEwNkQxOEE3RTAwNEE2RkEzIC8qIFhT
TFN0eWxlU2hlZXQuaCAqLywKIAkJCQlCQzA2RjI0QjA2RDE4QTdFMDA0QTZGQTMgLyogWFNMVFBy
b2Nlc3Nvci5jcHAgKi8sCkBAIC02MzY0LDYgKzYzNzAsNyBAQAogCQkJCTFBMUQxMzgwMEE1MzI1
NTIwMDY0QkY1RiAvKiBET01YUGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUExRDEzQ0EwQTUz
MjkwOTAwNjRCRjVGIC8qIERPTVhQYXRoSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
QTFFQUE4MEE1NjM1MDgwMDY5NjBBMCAvKiBJbWFnZURvY3VtZW50TWFjLmggaW4gSGVhZGVycyAq
LywKKwkJCQk4NUQzQjc1OTBBNUQ3QTBFMDBEMzIzRjcgLyogWFNMSW1wb3J0UnVsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkBAIC03MjIxLDYgKzcyMjgsNyBAQAogCQkJCTUxNjE0OUVEMEE1MjVFM0EwMDNE
RkM3QSAvKiBTaXRlSWNvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTFEMTM4MTBBNTMyNTUy
MDA2NEJGNUYgLyogRE9NWFBhdGgubW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0ExRUFBMDBBNTYz
NEM5MDA2OTYwQTAgLyogSW1hZ2VEb2N1bWVudE1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1
RDNCNzU4MEE1RDdBMEUwMEQzMjNGNyAvKiBYU0xJbXBvcnRSdWxlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpJbmRleDogV2ViQ29yZS94bWwvWFNMSW1wb3J0UnVsZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS94bWwvWFNMSW1wb3J0UnVsZS5jcHAJKHJldmlzaW9uIDE1MTU5KQorKysgV2ViQ29yZS94
bWwvWFNMSW1wb3J0UnVsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwLDI1NSArMjAsMjIgQEAK
ICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiWFNMU3R5bGVTaGVldC5oIgor
I2luY2x1ZGUgIlhTTEltcG9ydFJ1bGUuaCIKIAogI2lmZGVmIEtIVE1MX1hTTFQKIAogI2luY2x1
ZGUgIkNhY2hlZFhTTFN0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJEb2NMb2FkZXIuaCIKLSNpbmNs
dWRlICJIVE1MRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJsb2FkZXIuaCIKLSNpbmNsdWRlICJ4bWxf
dG9rZW5pemVyLmgiCi0jaW5jbHVkZSA8bGlieG1sL3VyaS5oPgotI2luY2x1ZGUgPGxpYnhzbHQv
eHNsdHV0aWxzLmg+Ci0KLSNkZWZpbmUgSVNfQkxBTktfTk9ERShuKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAoKChuKS0+dHlwZSA9PSBYTUxf
VEVYVF9OT0RFKSAmJiAoeHNsdElzQmxhbmsoKG4pLT5jb250ZW50KSkpCisjaW5jbHVkZSAiWFNM
U3R5bGVTaGVldC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1YU0xTdHlsZVNoZWV0
OjpYU0xTdHlsZVNoZWV0KFhTTEltcG9ydFJ1bGUqIHBhcmVudFJ1bGUsIGNvbnN0IFN0cmluZyYg
aHJlZikKLSAgICA6IFN0eWxlU2hlZXQocGFyZW50UnVsZSwgaHJlZikKLSAgICAsIG1fb3duZXJE
b2N1bWVudCgwKQotICAgICwgbV9zdHlsZXNoZWV0RG9jKDApCi0gICAgLCBtX2VtYmVkZGVkKGZh
bHNlKQotICAgICwgbV9wcm9jZXNzZWQoZmFsc2UpIC8vIENoaWxkIHNoZWV0cyBnZXQgbWFya2Vk
IGFzIHByb2Nlc3NlZCB3aGVuIHRoZSBsaWJ4c2x0IGVuZ2luZSBoYXMgZmluYWxseSBzZWVuIHRo
ZW0uCi0gICAgLCBtX3N0eWxlc2hlZXREb2NUYWtlbihmYWxzZSkKLXsKLX0KLQotWFNMU3R5bGVT
aGVldDo6WFNMU3R5bGVTaGVldChOb2RlKiBwYXJlbnROb2RlLCBjb25zdCBTdHJpbmcmIGhyZWYs
ICBib29sIGVtYmVkZGVkKQotICAgIDogU3R5bGVTaGVldChwYXJlbnROb2RlLCBocmVmKQotICAg
ICwgbV9vd25lckRvY3VtZW50KHBhcmVudE5vZGUtPmRvY3VtZW50KCkpCi0gICAgLCBtX3N0eWxl
c2hlZXREb2MoMCkKLSAgICAsIG1fZW1iZWRkZWQoZW1iZWRkZWQpCi0gICAgLCBtX3Byb2Nlc3Nl
ZCh0cnVlKSAvLyBUaGUgcm9vdCBzaGVldCBzdGFydHMgb2ZmIHByb2Nlc3NlZC4KLSAgICAsIG1f
c3R5bGVzaGVldERvY1Rha2VuKGZhbHNlKQotewotfQotCi1YU0xTdHlsZVNoZWV0Ojp+WFNMU3R5
bGVTaGVldCgpCi17Ci0gICAgaWYgKCFtX3N0eWxlc2hlZXREb2NUYWtlbikKLSAgICAgICAgeG1s
RnJlZURvYyhtX3N0eWxlc2hlZXREb2MpOwotfQotCi1ib29sIFhTTFN0eWxlU2hlZXQ6OmlzTG9h
ZGluZygpCi17Ci0gICAgdW5zaWduZWQgbGVuID0gbGVuZ3RoKCk7Ci0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGxlbjsgKytpKSB7Ci0gICAgICAgIFN0eWxlQmFzZSogcnVsZSA9IGl0ZW0o
aSk7Ci0gICAgICAgIGlmIChydWxlLT5pc0ltcG9ydFJ1bGUoKSkgewotICAgICAgICAgICAgWFNM
SW1wb3J0UnVsZSogaW1wb3J0ID0gc3RhdGljX2Nhc3Q8WFNMSW1wb3J0UnVsZSo+KHJ1bGUpOwot
ICAgICAgICAgICAgaWYgKGltcG9ydC0+aXNMb2FkaW5nKCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lk
IFhTTFN0eWxlU2hlZXQ6OmNoZWNrTG9hZGVkKCkKLXsKLSAgICBpZiAoaXNMb2FkaW5nKCkpIAot
ICAgICAgICByZXR1cm47Ci0gICAgaWYgKHBhcmVudCgpKQotICAgICAgICBwYXJlbnQoKS0+Y2hl
Y2tMb2FkZWQoKTsKLSAgICBpZiAobV9wYXJlbnROb2RlKQotICAgICAgICBtX3BhcmVudE5vZGUt
PnNoZWV0TG9hZGVkKCk7Ci19Ci0KLXhtbERvY1B0ciBYU0xTdHlsZVNoZWV0Ojpkb2N1bWVudCgp
Ci17Ci0gICAgaWYgKG1fZW1iZWRkZWQgJiYgb3duZXJEb2N1bWVudCgpKQotICAgICAgICByZXR1
cm4gKHhtbERvY1B0cilvd25lckRvY3VtZW50KCktPnRyYW5zZm9ybVNvdXJjZSgpOwotICAgIHJl
dHVybiBtX3N0eWxlc2hlZXREb2M7Ci19Ci0KLXZvaWQgWFNMU3R5bGVTaGVldDo6Y2xlYXJEb2N1
bWVudHMoKQotewotICAgIG1fc3R5bGVzaGVldERvYyA9IDA7Ci0gICAgdW5zaWduZWQgbGVuID0g
bGVuZ3RoKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbjsgKytpKSB7Ci0gICAg
ICAgIFN0eWxlQmFzZSogcnVsZSA9IGl0ZW0oaSk7Ci0gICAgICAgIGlmIChydWxlLT5pc0ltcG9y
dFJ1bGUoKSkgewotICAgICAgICAgICAgWFNMSW1wb3J0UnVsZSogaW1wb3J0ID0gc3RhdGljX2Nh
c3Q8WFNMSW1wb3J0UnVsZSo+KHJ1bGUpOwotICAgICAgICAgICAgaWYgKGltcG9ydC0+c3R5bGVT
aGVldCgpKQotICAgICAgICAgICAgICAgIGltcG9ydC0+c3R5bGVTaGVldCgpLT5jbGVhckRvY3Vt
ZW50cygpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1XZWJDb3JlOjpEb2NMb2FkZXIqIFhTTFN0
eWxlU2hlZXQ6OmRvY0xvYWRlcigpCi17Ci0gICAgaWYgKCFtX293bmVyRG9jdW1lbnQpCi0gICAg
ICAgIHJldHVybiAwOwotICAgIHJldHVybiBtX293bmVyRG9jdW1lbnQtPmRvY0xvYWRlcigpOwot
fQotCi1ib29sIFhTTFN0eWxlU2hlZXQ6OnBhcnNlU3RyaW5nKGNvbnN0IFN0cmluZyAmc3RyaW5n
LCBib29sIHN0cmljdCkKLXsKLSAgICAvLyBQYXJzZSBpbiBhIHNpbmdsZSBjaHVuayBpbnRvIGFu
IHhtbERvY1B0cgotICAgIGNvbnN0IFVDaGFyIEJPTSgweEZFRkYpOwotICAgIGNvbnN0IHVuc2ln
bmVkIGNoYXIgQk9NSGlnaEJ5dGUgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBj
aGFyKj4oJkJPTSk7Ci0gICAgc2V0TG9hZGVyRm9yTGliWE1MQ2FsbGJhY2tzKGRvY0xvYWRlcigp
KTsKLSAgICBpZiAoIW1fc3R5bGVzaGVldERvY1Rha2VuKQotICAgICAgICB4bWxGcmVlRG9jKG1f
c3R5bGVzaGVldERvYyk7Ci0gICAgbV9zdHlsZXNoZWV0RG9jVGFrZW4gPSBmYWxzZTsKLSAgICBt
X3N0eWxlc2hlZXREb2MgPSB4bWxSZWFkTWVtb3J5KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KHN0cmluZy5jaGFyYWN0ZXJzKCkpLCBzdHJpbmcubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIp
LAotICAgICAgICBtX293bmVyRG9jdW1lbnQtPlVSTCgpLmFzY2lpKCksCi0gICAgICAgIEJPTUhp
Z2hCeXRlID09IDB4RkYgPyAiVVRGLTE2TEUiIDogIlVURi0xNkJFIiwgCi0gICAgICAgIFhNTF9Q
QVJTRV9OT0VOVCB8IFhNTF9QQVJTRV9EVERBVFRSIHwgWE1MX1BBUlNFX05PRVJST1IgfCBYTUxf
UEFSU0VfTk9XQVJOSU5HIHwgWE1MX1BBUlNFX05PQ0RBVEEpOwotICAgIGxvYWRDaGlsZFNoZWV0
cygpOwotICAgIHNldExvYWRlckZvckxpYlhNTENhbGxiYWNrcygwKTsKLSAgICByZXR1cm4gbV9z
dHlsZXNoZWV0RG9jOwotfQotCi12b2lkIFhTTFN0eWxlU2hlZXQ6OmxvYWRDaGlsZFNoZWV0cygp
Ci17Ci0gICAgaWYgKCFkb2N1bWVudCgpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgeG1s
Tm9kZVB0ciBzdHlsZXNoZWV0Um9vdCA9IGRvY3VtZW50KCktPmNoaWxkcmVuOwotICAgIAotICAg
IC8vIFRvcCBsZXZlbCBjaGlsZHJlbiBtYXkgaW5jbHVkZSBvdGhlciB0aGluZ3Mgc3VjaCBhcyBE
VEQgbm9kZXMsIHdlIGlnbm9yZSB0aG9zZS4KLSAgICB3aGlsZSAoc3R5bGVzaGVldFJvb3QgJiYg
c3R5bGVzaGVldFJvb3QtPnR5cGUgIT0gWE1MX0VMRU1FTlRfTk9ERSkKLSAgICAgICAgc3R5bGVz
aGVldFJvb3QgPSBzdHlsZXNoZWV0Um9vdC0+bmV4dDsKLSAgICAKLSAgICBpZiAobV9lbWJlZGRl
ZCkgewotICAgICAgICAvLyBXZSBoYXZlIHRvIGxvY2F0ZSAoYnkgSUQpIHRoZSBhcHByb3ByaWF0
ZSBlbWJlZGRlZCBzdHlsZXNoZWV0IGVsZW1lbnQsIHNvIHRoYXQgd2UgY2FuIHdhbGsgdGhlIAot
ICAgICAgICAvLyBpbXBvcnQvaW5jbHVkZSBsaXN0LgotICAgICAgICB4bWxBdHRyUHRyIGlkTm9k
ZSA9IHhtbEdldElEKGRvY3VtZW50KCksIChjb25zdCB4bWxDaGFyKikoaHJlZigpLmRlcHJlY2F0
ZWRTdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7Ci0gICAgICAgIGlmICghaWROb2RlKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBzdHlsZXNoZWV0Um9vdCA9IGlkTm9kZS0+cGFyZW50Owot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGhhbmRsZSBhbiBleHRlcm5h
bCBVUkkgd2l0aCBhICMgaW4gaXQuICBUaGlzIGlzIGEgcHJldHR5IG1pbm9yIGVkZ2UgY2FzZSwg
c28gd2UnbGwgZGVhbAotICAgICAgICAvLyB3aXRoIGl0IGxhdGVyLgotICAgIH0KLSAgICAKLSAg
ICBpZiAoc3R5bGVzaGVldFJvb3QpIHsKLSAgICAgICAgLy8gV2FsayB0aGUgY2hpbGRyZW4gb2Yg
dGhlIHJvb3QgZWxlbWVudCBhbmQgbG9vayBmb3IgaW1wb3J0L2luY2x1ZGUgZWxlbWVudHMuCi0g
ICAgICAgIC8vIEltcG9ydHMgbXVzdCBvY2N1ciBmaXJzdC4KLSAgICAgICAgeG1sTm9kZVB0ciBj
dXJyID0gc3R5bGVzaGVldFJvb3QtPmNoaWxkcmVuOwotICAgICAgICB3aGlsZSAoY3Vycikgewot
ICAgICAgICAgICAgaWYgKElTX0JMQU5LX05PREUoY3VycikpIHsKLSAgICAgICAgICAgICAgICBj
dXJyID0gY3Vyci0+bmV4dDsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGlmIChjdXJyLT50eXBlID09IFhNTF9FTEVNRU5UX05PREUgJiYgSVNf
WFNMVF9FTEVNKGN1cnIpICYmIElTX1hTTFRfTkFNRShjdXJyLCAiaW1wb3J0IikpIHsKLSAgICAg
ICAgICAgICAgICB4bWxDaGFyKiB1cmlSZWYgPSB4c2x0R2V0TnNQcm9wKGN1cnIsIChjb25zdCB4
bWxDaGFyKikiaHJlZiIsIFhTTFRfTkFNRVNQQUNFKTsgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgbG9hZENoaWxkU2hlZXQoRGVwcmVjYXRlZFN0cmluZzo6ZnJvbVV0ZjgoKGNvbnN0
IGNoYXIqKXVyaVJlZikpOwotICAgICAgICAgICAgICAgIHhtbEZyZWUodXJpUmVmKTsKLSAgICAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY3VyciA9
IGN1cnItPm5leHQ7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBOb3cgaGFuZGxlIGluY2x1ZGVz
LgotICAgICAgICB3aGlsZSAoY3VycikgewotICAgICAgICAgICAgaWYgKGN1cnItPnR5cGUgPT0g
WE1MX0VMRU1FTlRfTk9ERSAmJiBJU19YU0xUX0VMRU0oY3VycikgJiYgSVNfWFNMVF9OQU1FKGN1
cnIsICJpbmNsdWRlIikpIHsKLSAgICAgICAgICAgICAgICB4bWxDaGFyKiB1cmlSZWYgPSB4c2x0
R2V0TnNQcm9wKGN1cnIsIChjb25zdCB4bWxDaGFyKikiaHJlZiIsIFhTTFRfTkFNRVNQQUNFKTsK
LSAgICAgICAgICAgICAgICBsb2FkQ2hpbGRTaGVldChEZXByZWNhdGVkU3RyaW5nOjpmcm9tVXRm
OCgoY29uc3QgY2hhciopdXJpUmVmKSk7Ci0gICAgICAgICAgICAgICAgeG1sRnJlZSh1cmlSZWYp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY3VyciA9IGN1cnItPm5leHQ7Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLXZvaWQgWFNMU3R5bGVTaGVldDo6bG9hZENoaWxkU2hlZXQoY29uc3Qg
RGVwcmVjYXRlZFN0cmluZyYgaHJlZikKLXsKLSAgICBSZWZQdHI8WFNMSW1wb3J0UnVsZT4gY2hp
bGRSdWxlID0gbmV3IFhTTEltcG9ydFJ1bGUodGhpcywgaHJlZik7Ci0gICAgYXBwZW5kKGNoaWxk
UnVsZSk7Ci0gICAgY2hpbGRSdWxlLT5sb2FkU2hlZXQoKTsKLX0KLQotWFNMU3R5bGVTaGVldCog
WFNMSW1wb3J0UnVsZTo6cGFyZW50U3R5bGVTaGVldCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChw
YXJlbnQoKSAmJiBwYXJlbnQoKS0+aXNYU0xTdHlsZVNoZWV0KCkpID8gc3RhdGljX2Nhc3Q8WFNM
U3R5bGVTaGVldCo+KHBhcmVudCgpKSA6IDA7Ci19Ci0KLXhzbHRTdHlsZXNoZWV0UHRyIFhTTFN0
eWxlU2hlZXQ6OmNvbXBpbGVTdHlsZVNoZWV0KCkKLXsKLSAgICAvLyBGSVhNRTogSG9vayB1cCBl
cnJvciByZXBvcnRpbmcgZm9yIHRoZSBzdHlsZXNoZWV0IGNvbXBpbGF0aW9uIHByb2Nlc3MuCi0g
ICAgaWYgKG1fZW1iZWRkZWQpCi0gICAgICAgIHJldHVybiB4c2x0TG9hZFN0eWxlc2hlZXRQSShk
b2N1bWVudCgpKTsKLSAgICAKLSAgICAvLyB4c2x0UGFyc2VTdHlsZXNoZWV0RG9jIG1ha2VzIHRo
ZSBkb2N1bWVudCBwYXJ0IG9mIHRoZSBzdHlsZXNoZWV0Ci0gICAgLy8gc28gd2UgaGF2ZSB0byBy
ZWxlYXNlIG91ciBwb2ludGVyIHRvIGl0LgotICAgIEFTU0VSVCghbV9zdHlsZXNoZWV0RG9jVGFr
ZW4pOwotICAgIHhzbHRTdHlsZXNoZWV0UHRyIHJlc3VsdCA9IHhzbHRQYXJzZVN0eWxlc2hlZXRE
b2MobV9zdHlsZXNoZWV0RG9jKTsKLSAgICBpZiAocmVzdWx0KQotICAgICAgICBtX3N0eWxlc2hl
ZXREb2NUYWtlbiA9IHRydWU7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KIAoteG1sRG9jUHRyIFhT
TFN0eWxlU2hlZXQ6OmxvY2F0ZVN0eWxlc2hlZXRTdWJSZXNvdXJjZSh4bWxEb2NQdHIgcGFyZW50
RG9jLCBjb25zdCB4bWxDaGFyKiB1cmkpCitYU0xJbXBvcnRSdWxlOjpYU0xJbXBvcnRSdWxlKFN0
eWxlQmFzZSogcGFyZW50LCBjb25zdCBTdHJpbmcmIGhyZWYpCisgICAgOiBTdHlsZUJhc2UocGFy
ZW50KQorICAgICwgbV9zdHJIcmVmKGhyZWYpCisgICAgLCBtX2NhY2hlZFNoZWV0KDApCisgICAg
LCBtX2xvYWRpbmcoZmFsc2UpCiB7Ci0gICAgYm9vbCBtYXRjaGVkUGFyZW50ID0gKHBhcmVudERv
YyA9PSBkb2N1bWVudCgpKTsKLSAgICB1bnNpZ25lZCBsZW4gPSBsZW5ndGgoKTsKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKLSAgICAgICAgU3R5bGVCYXNlKiBydWxl
ID0gaXRlbShpKTsKLSAgICAgICAgaWYgKHJ1bGUtPmlzSW1wb3J0UnVsZSgpKSB7Ci0gICAgICAg
ICAgICBYU0xJbXBvcnRSdWxlKiBpbXBvcnQgPSBzdGF0aWNfY2FzdDxYU0xJbXBvcnRSdWxlKj4o
cnVsZSk7Ci0gICAgICAgICAgICBYU0xTdHlsZVNoZWV0KiBjaGlsZCA9IGltcG9ydC0+c3R5bGVT
aGVldCgpOwotICAgICAgICAgICAgaWYgKCFjaGlsZCkKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgIGlmIChtYXRjaGVkUGFyZW50KSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGNoaWxkLT5wcm9jZXNzZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIGxp
YnhzbHQgaGFzIGJlZW4gZ2l2ZW4gdGhpcyBzaGVldCBhbHJlYWR5LgotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIC8vIENoZWNrIHRoZSBVUkkgb2YgdGhlIGNoaWxkIHN0eWxlc2hl
ZXQgYWdhaW5zdCB0aGUgZG9jIFVSSS4KLSAgICAgICAgICAgICAgICAvLyBJbiBvcmRlciB0byBl
bnN1cmUgdGhhdCBsaWJ4bWwgY2Fub25pY2FsaXplZCBib3RoIFVSTHMsIHdlIGdldCB0aGUgb3Jp
Z2luYWwgaHJlZgotICAgICAgICAgICAgICAgIC8vIHN0cmluZyBmcm9tIHRoZSBpbXBvcnQgcnVs
ZSBhbmQgY2Fub25pY2FsaXplIGl0IHVzaW5nIGxpYnhtbCBiZWZvcmUgY29tcGFyaW5nIGl0Ci0g
ICAgICAgICAgICAgICAgLy8gd2l0aCB0aGUgVVJJIGFyZ3VtZW50LgotICAgICAgICAgICAgICAg
IERlcHJlY2F0ZWRDU3RyaW5nIGltcG9ydEhyZWYgPSBpbXBvcnQtPmhyZWYoKS5kZXByZWNhdGVk
U3RyaW5nKCkudXRmOCgpOwotICAgICAgICAgICAgICAgIHhtbENoYXIqIGJhc2UgPSB4bWxOb2Rl
R2V0QmFzZShwYXJlbnREb2MsICh4bWxOb2RlUHRyKXBhcmVudERvYyk7Ci0gICAgICAgICAgICAg
ICAgeG1sQ2hhciogY2hpbGRVUkkgPSB4bWxCdWlsZFVSSSgoY29uc3QgeG1sQ2hhciopKGNvbnN0
IGNoYXIqKWltcG9ydEhyZWYsIGJhc2UpOwotICAgICAgICAgICAgICAgIGJvb2wgZXF1YWxVUklz
ID0geG1sU3RyRXF1YWwodXJpLCBjaGlsZFVSSSk7Ci0gICAgICAgICAgICAgICAgeG1sRnJlZShi
YXNlKTsKLSAgICAgICAgICAgICAgICB4bWxGcmVlKGNoaWxkVVJJKTsKLSAgICAgICAgICAgICAg
ICBpZiAoZXF1YWxVUklzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoaWxkLT5tYXJrQXNQcm9j
ZXNzZWQoKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkLT5kb2N1bWVudCgpOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
eG1sRG9jUHRyIHJlc3VsdCA9IGltcG9ydC0+c3R5bGVTaGVldCgpLT5sb2NhdGVTdHlsZXNoZWV0
U3ViUmVzb3VyY2UocGFyZW50RG9jLCB1cmkpOwotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQp
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgWFNMU3R5bGVTaGVl
dDo6bWFya0FzUHJvY2Vzc2VkKCkKLXsKLSAgICBBU1NFUlQoIW1fcHJvY2Vzc2VkKTsKLSAgICBB
U1NFUlQoIW1fc3R5bGVzaGVldERvY1Rha2VuKTsKLSAgICBtX3Byb2Nlc3NlZCA9IHRydWU7Ci0g
ICAgbV9zdHlsZXNoZWV0RG9jVGFrZW4gPSB0cnVlOwotfQotCi0vLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVhTTEltcG9ydFJ1bGU6OlhTTEltcG9ydFJ1bGUoU3R5
bGVCYXNlKiBwYXJlbnQsIGNvbnN0IFN0cmluZyAmaHJlZikKLTogU3R5bGVCYXNlKHBhcmVudCkK
LXsKLSAgICBtX3N0ckhyZWYgPSBocmVmOwotICAgIG1fY2FjaGVkU2hlZXQgPSAwOwotICAgIG1f
bG9hZGluZyA9IGZhbHNlOwogfQogCiBYU0xJbXBvcnRSdWxlOjp+WFNMSW1wb3J0UnVsZSgpCkBA
IC0yODAsNiArNDcsMTEgQEAgWFNMSW1wb3J0UnVsZTo6flhTTEltcG9ydFJ1bGUoKQogICAgICAg
ICBtX2NhY2hlZFNoZWV0LT5kZXJlZih0aGlzKTsKIH0KIAorWFNMU3R5bGVTaGVldCogWFNMSW1w
b3J0UnVsZTo6cGFyZW50U3R5bGVTaGVldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIChwYXJlbnQo
KSAmJiBwYXJlbnQoKS0+aXNYU0xTdHlsZVNoZWV0KCkpID8gc3RhdGljX2Nhc3Q8WFNMU3R5bGVT
aGVldCo+KHBhcmVudCgpKSA6IDA7Cit9CisKIHZvaWQgWFNMSW1wb3J0UnVsZTo6c2V0U3R5bGVT
aGVldChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzaGVldCkKIHsKICAgICBpZiAo
bV9zdHlsZVNoZWV0KQpAQCAtMzIwLDkgKzkyLDEwIEBAIHZvaWQgWFNMSW1wb3J0UnVsZTo6bG9h
ZFNoZWV0KCkKICAgICAKICAgICAvLyBDaGVjayBmb3IgYSBjeWNsZSBpbiBvdXIgaW1wb3J0IGNo
YWluLiAgSWYgd2UgZW5jb3VudGVyIGEgc3R5bGVzaGVldAogICAgIC8vIGluIG91ciBwYXJlbnQg
Y2hhaW4gd2l0aCB0aGUgc2FtZSBVUkwsIHRoZW4ganVzdCBiYWlsLgotICAgIGZvciAocGFyZW50
ID0gc3RhdGljX2Nhc3Q8U3R5bGVCYXNlKj4odGhpcyktPnBhcmVudCgpOyBwYXJlbnQ7IHBhcmVu
dCA9IHBhcmVudC0+cGFyZW50KCkpCisgICAgZm9yIChwYXJlbnQgPSBzdGF0aWNfY2FzdDxTdHls
ZUJhc2UqPih0aGlzKS0+cGFyZW50KCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnQo
KSkgewogICAgICAgICBpZiAoYWJzSHJlZiA9PSBwYXJlbnQtPmJhc2VVUkwoKSkKICAgICAgICAg
ICAgIHJldHVybjsKKyAgICB9CiAgICAgCiAgICAgbV9jYWNoZWRTaGVldCA9IGRvY0xvYWRlci0+
cmVxdWVzdFhTTFN0eWxlU2hlZXQoYWJzSHJlZik7CiAgICAgCkBAIC0zMzgsNSArMTExLDYgQEAg
dm9pZCBYU0xJbXBvcnRSdWxlOjpsb2FkU2hlZXQoKQogICAgIH0KIH0KIAotfQotI2VuZGlmCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBLSFRNTF9YU0xUCkluZGV4OiBXZWJD
b3JlL3htbC9YU0xJbXBvcnRSdWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWFNMSW1w
b3J0UnVsZS5oCShyZXZpc2lvbiAxNTE1OSkKKysrIFdlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMjAsNjggKzIwLDIwIEBACiAgKgogICovCiAKLSNpZm5kZWYg
WFNMU3R5bGVTaGVldF9ICi0jZGVmaW5lIFhTTFN0eWxlU2hlZXRfSAorI2lmbmRlZiBYU0xJbXBv
cnRSdWxlX0gKKyNkZWZpbmUgWFNMSW1wb3J0UnVsZV9ICiAKICNpZmRlZiBLSFRNTF9YU0xUCiAK
ICNpbmNsdWRlICJDYWNoZWRPYmplY3RDbGllbnQuaCIKLSNpbmNsdWRlICJTdHlsZVNoZWV0Lmgi
Ci0jaW5jbHVkZSA8bGlieG1sL3BhcnNlci5oPgotI2luY2x1ZGUgPGxpYnhzbHQvdHJhbnNmb3Jt
Lmg+CisjaW5jbHVkZSAiU3R5bGVCYXNlLmgiCisjaW5jbHVkZSAiWFNMU3R5bGVTaGVldC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFhTTFN0eWxlU2hlZXQ7Ci1jbGFz
cyBEb2NMb2FkZXI7Ci1jbGFzcyBEb2N1bWVudDsKLWNsYXNzIFhTTEltcG9ydFJ1bGU7Ci0gICAg
Ci1jbGFzcyBYU0xTdHlsZVNoZWV0IDogcHVibGljIFN0eWxlU2hlZXQKLXsKLXB1YmxpYzoKLSAg
ICBYU0xTdHlsZVNoZWV0KE5vZGUgKnBhcmVudE5vZGUsIGNvbnN0IFN0cmluZyYgaHJlZiA9IFN0
cmluZygpLCBib29sIGVtYmVkZGVkID0gZmFsc2UpOwotICAgIFhTTFN0eWxlU2hlZXQoWFNMSW1w
b3J0UnVsZSogcGFyZW50SW1wb3J0LCBjb25zdCBTdHJpbmcmIGhyZWYgPSBTdHJpbmcoKSk7Ci0g
ICAgflhTTFN0eWxlU2hlZXQoKTsKLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNYU0xTdHlsZVNo
ZWV0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgdmlydHVhbCBTdHJpbmcgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuICJ0ZXh0L3htbCI7IH0KLQotICAgIHZpcnR1YWwgYm9vbCBwYXJzZVN0
cmluZyhjb25zdCBTdHJpbmcgJnN0cmluZywgYm9vbCBzdHJpY3QgPSB0cnVlKTsKLSAgICAKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCk7Ci0gICAgdmlydHVhbCB2b2lkIGNoZWNrTG9hZGVk
KCk7Ci0KLSAgICB2b2lkIGxvYWRDaGlsZFNoZWV0cygpOwotICAgIHZvaWQgbG9hZENoaWxkU2hl
ZXQoY29uc3QgRGVwcmVjYXRlZFN0cmluZyYgaHJlZik7Ci0KLSAgICB4c2x0U3R5bGVzaGVldFB0
ciBjb21waWxlU3R5bGVTaGVldCgpOwotCi0gICAgRG9jTG9hZGVyKiBkb2NMb2FkZXIoKTsKLQot
ICAgIERvY3VtZW50KiBvd25lckRvY3VtZW50KCkgeyByZXR1cm4gbV9vd25lckRvY3VtZW50OyB9
Ci0gICAgdm9pZCBzZXRPd25lckRvY3VtZW50KERvY3VtZW50KiBkb2MpIHsgbV9vd25lckRvY3Vt
ZW50ID0gZG9jOyB9CiAKLSAgICB4bWxEb2NQdHIgZG9jdW1lbnQoKTsKLQotICAgIHZvaWQgY2xl
YXJEb2N1bWVudHMoKTsKLQotICAgIHhtbERvY1B0ciBsb2NhdGVTdHlsZXNoZWV0U3ViUmVzb3Vy
Y2UoeG1sRG9jUHRyIHBhcmVudERvYywgY29uc3QgeG1sQ2hhciogdXJpKTsKLSAgICAKLSAgICB2
b2lkIG1hcmtBc1Byb2Nlc3NlZCgpOwotICAgIGJvb2wgcHJvY2Vzc2VkKCkgY29uc3QgeyByZXR1
cm4gbV9wcm9jZXNzZWQ7IH0KLQotcHJvdGVjdGVkOgotICAgIERvY3VtZW50KiBtX293bmVyRG9j
dW1lbnQ7Ci0gICAgeG1sRG9jUHRyIG1fc3R5bGVzaGVldERvYzsKLSAgICBib29sIG1fZW1iZWRk
ZWQ7Ci0gICAgYm9vbCBtX3Byb2Nlc3NlZDsKLSAgICBib29sIG1fc3R5bGVzaGVldERvY1Rha2Vu
OwotfTsKLQotY2xhc3MgWFNMSW1wb3J0UnVsZSA6IHB1YmxpYyBDYWNoZWRPYmplY3RDbGllbnQs
IHB1YmxpYyBTdHlsZUJhc2UKLXsKK2NsYXNzIFhTTEltcG9ydFJ1bGUgOiBwdWJsaWMgQ2FjaGVk
T2JqZWN0Q2xpZW50LCBwdWJsaWMgU3R5bGVCYXNlIHsKIHB1YmxpYzoKICAgICBYU0xJbXBvcnRS
dWxlKFN0eWxlQmFzZSogcGFyZW50LCBjb25zdCBTdHJpbmcmIGhyZWYpOwogICAgIHZpcnR1YWwg
flhTTEltcG9ydFJ1bGUoKTsKQEAgLTkzLDcgKzQ1LDcgQEAgcHVibGljOgogICAgIFhTTFN0eWxl
U2hlZXQqIHBhcmVudFN0eWxlU2hlZXQoKSBjb25zdDsKICAgICAKICAgICAvLyBmcm9tIENhY2hl
ZE9iamVjdENsaWVudAotICAgIHZpcnR1YWwgdm9pZCBzZXRTdHlsZVNoZWV0KGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcgJnNoZWV0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3R5bGVT
aGVldChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzaGVldCk7CiAgICAgCiAgICAg
Ym9vbCBpc0xvYWRpbmcoKTsKICAgICB2b2lkIGxvYWRTaGVldCgpOwpAQCAtMTA1LDYgKzU3LDgg
QEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9sb2FkaW5nOwogfTsKIAotfQotI2VuZGlmCi0jZW5k
aWYKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEtIVE1MX1hTTFQKKworI2Vu
ZGlmIC8vIFhTTEltcG9ydFJ1bGVfSApJbmRleDogV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5jcHAJKHJldmlzaW9u
IDE1MTU5KQorKysgV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI0LDE4ICsyNCwyMCBAQAogCiAjaWZkZWYgS0hUTUxfWFNMVAogCi0jaW5jbHVkZSAiQ2Fj
aGVkWFNMU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkRvY0xvYWRlci5oIgotI2luY2x1ZGUgIkhU
TUxEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiTm9kZS5oIgor
I2luY2x1ZGUgIlhTTEltcG9ydFJ1bGUuaCIKICNpbmNsdWRlICJsb2FkZXIuaCIKICNpbmNsdWRl
ICJ4bWxfdG9rZW5pemVyLmgiCiAjaW5jbHVkZSA8bGlieG1sL3VyaS5oPgogI2luY2x1ZGUgPGxp
YnhzbHQveHNsdHV0aWxzLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwogI2RlZmluZSBJU19C
TEFOS19OT0RFKG4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgICgoKG4pLT50eXBlID09IFhNTF9URVhUX05PREUpICYmICh4c2x0SXNCbGFuaygo
biktPmNvbnRlbnQpKSkKIAotbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogWFNMU3R5bGVTaGVl
dDo6WFNMU3R5bGVTaGVldChYU0xJbXBvcnRSdWxlKiBwYXJlbnRSdWxlLCBjb25zdCBTdHJpbmcm
IGhyZWYpCiAgICAgOiBTdHlsZVNoZWV0KHBhcmVudFJ1bGUsIGhyZWYpCkBAIC0xOTMsMTEgKzE5
NSw2IEBAIHZvaWQgWFNMU3R5bGVTaGVldDo6bG9hZENoaWxkU2hlZXQoY29uc3QKICAgICBjaGls
ZFJ1bGUtPmxvYWRTaGVldCgpOwogfQogCi1YU0xTdHlsZVNoZWV0KiBYU0xJbXBvcnRSdWxlOjpw
YXJlbnRTdHlsZVNoZWV0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gKHBhcmVudCgpICYmIHBhcmVu
dCgpLT5pc1hTTFN0eWxlU2hlZXQoKSkgPyBzdGF0aWNfY2FzdDxYU0xTdHlsZVNoZWV0Kj4ocGFy
ZW50KCkpIDogMDsKLX0KLQogeHNsdFN0eWxlc2hlZXRQdHIgWFNMU3R5bGVTaGVldDo6Y29tcGls
ZVN0eWxlU2hlZXQoKQogewogICAgIC8vIEZJWE1FOiBIb29rIHVwIGVycm9yIHJlcG9ydGluZyBm
b3IgdGhlIHN0eWxlc2hlZXQgY29tcGlsYXRpb24gcHJvY2Vzcy4KQEAgLTI2MSw4MiArMjU4LDYg
QEAgdm9pZCBYU0xTdHlsZVNoZWV0OjptYXJrQXNQcm9jZXNzZWQoKQogICAgIG1fc3R5bGVzaGVl
dERvY1Rha2VuID0gdHJ1ZTsKIH0KIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotCi1YU0xJbXBvcnRSdWxlOjpYU0xJbXBvcnRSdWxlKFN0eWxlQmFzZSogcGFyZW50
LCBjb25zdCBTdHJpbmcgJmhyZWYpCi06IFN0eWxlQmFzZShwYXJlbnQpCi17Ci0gICAgbV9zdHJI
cmVmID0gaHJlZjsKLSAgICBtX2NhY2hlZFNoZWV0ID0gMDsKLSAgICBtX2xvYWRpbmcgPSBmYWxz
ZTsKLX0KLQotWFNMSW1wb3J0UnVsZTo6flhTTEltcG9ydFJ1bGUoKQotewotICAgIGlmIChtX3N0
eWxlU2hlZXQpCi0gICAgICAgIG1fc3R5bGVTaGVldC0+c2V0UGFyZW50KDApOwotICAgIAotICAg
IGlmIChtX2NhY2hlZFNoZWV0KQotICAgICAgICBtX2NhY2hlZFNoZWV0LT5kZXJlZih0aGlzKTsK
LX0KLQotdm9pZCBYU0xJbXBvcnRSdWxlOjpzZXRTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHNoZWV0KQotewotICAgIGlmIChtX3N0eWxlU2hlZXQpCi0gICAgICAg
IG1fc3R5bGVTaGVldC0+c2V0UGFyZW50KDApOwotICAgIAotICAgIG1fc3R5bGVTaGVldCA9IG5l
dyBYU0xTdHlsZVNoZWV0KHRoaXMsIHVybCk7Ci0gICAgCi0gICAgWFNMU3R5bGVTaGVldCogcGFy
ZW50ID0gcGFyZW50U3R5bGVTaGVldCgpOwotICAgIGlmIChwYXJlbnQpCi0gICAgICAgIG1fc3R5
bGVTaGVldC0+c2V0T3duZXJEb2N1bWVudChwYXJlbnQtPm93bmVyRG9jdW1lbnQoKSk7Cit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKLSAgICBtX3N0eWxlU2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0
KTsKLSAgICBtX2xvYWRpbmcgPSBmYWxzZTsKLSAgICAKLSAgICBjaGVja0xvYWRlZCgpOwotfQot
Ci1ib29sIFhTTEltcG9ydFJ1bGU6OmlzTG9hZGluZygpCi17Ci0gICAgcmV0dXJuIChtX2xvYWRp
bmcgfHwgKG1fc3R5bGVTaGVldCAmJiBtX3N0eWxlU2hlZXQtPmlzTG9hZGluZygpKSk7Ci19Ci0K
LXZvaWQgWFNMSW1wb3J0UnVsZTo6bG9hZFNoZWV0KCkKLXsKLSAgICBEb2NMb2FkZXIqIGRvY0xv
YWRlciA9IDA7Ci0gICAgU3R5bGVCYXNlKiByb290ID0gdGhpczsKLSAgICBTdHlsZUJhc2UqIHBh
cmVudDsKLSAgICB3aGlsZSAoKHBhcmVudCA9IHJvb3QtPnBhcmVudCgpKSkKLSAgICAgICAgcm9v
dCA9IHBhcmVudDsKLSAgICBpZiAocm9vdC0+aXNYU0xTdHlsZVNoZWV0KCkpCi0gICAgICAgIGRv
Y0xvYWRlciA9IHN0YXRpY19jYXN0PFhTTFN0eWxlU2hlZXQqPihyb290KS0+ZG9jTG9hZGVyKCk7
Ci0gICAgCi0gICAgU3RyaW5nIGFic0hyZWYgPSBtX3N0ckhyZWY7Ci0gICAgWFNMU3R5bGVTaGVl
dCogcGFyZW50U2hlZXQgPSBwYXJlbnRTdHlsZVNoZWV0KCk7Ci0gICAgaWYgKCFwYXJlbnRTaGVl
dC0+aHJlZigpLmlzTnVsbCgpKQotICAgICAgICAvLyB1c2UgcGFyZW50IHN0eWxlaGVldCdzIFVS
TCBhcyB0aGUgYmFzZSBVUkwKLSAgICAgICAgYWJzSHJlZiA9IEtVUkwocGFyZW50U2hlZXQtPmhy
ZWYoKS5kZXByZWNhdGVkU3RyaW5nKCksbV9zdHJIcmVmLmRlcHJlY2F0ZWRTdHJpbmcoKSkudXJs
KCk7Ci0gICAgCi0gICAgLy8gQ2hlY2sgZm9yIGEgY3ljbGUgaW4gb3VyIGltcG9ydCBjaGFpbi4g
IElmIHdlIGVuY291bnRlciBhIHN0eWxlc2hlZXQKLSAgICAvLyBpbiBvdXIgcGFyZW50IGNoYWlu
IHdpdGggdGhlIHNhbWUgVVJMLCB0aGVuIGp1c3QgYmFpbC4KLSAgICBmb3IgKHBhcmVudCA9IHN0
YXRpY19jYXN0PFN0eWxlQmFzZSo+KHRoaXMpLT5wYXJlbnQoKTsgcGFyZW50OyBwYXJlbnQgPSBw
YXJlbnQtPnBhcmVudCgpKQotICAgICAgICBpZiAoYWJzSHJlZiA9PSBwYXJlbnQtPmJhc2VVUkwo
KSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBtX2NhY2hlZFNoZWV0ID0gZG9jTG9h
ZGVyLT5yZXF1ZXN0WFNMU3R5bGVTaGVldChhYnNIcmVmKTsKLSAgICAKLSAgICBpZiAobV9jYWNo
ZWRTaGVldCkgewotICAgICAgICBtX2NhY2hlZFNoZWV0LT5yZWYodGhpcyk7Ci0gICAgICAgIAot
ICAgICAgICAvLyBJZiB0aGUgaW1wb3J0ZWQgc2hlZXQgaXMgaW4gdGhlIGNhY2hlLCB0aGVuIHNl
dFN0eWxlU2hlZXQgZ2V0cyBjYWxsZWQsCi0gICAgICAgIC8vIGFuZCB0aGUgc2hlZXQgZXZlbiBn
ZXRzIHBhcnNlZCAodmlhIHBhcnNlU3RyaW5nKS4gIEluIHRoaXMgY2FzZSB3ZSBoYXZlCi0gICAg
ICAgIC8vIGxvYWRlZCAoZXZlbiBpZiBvdXIgc3VicmVzb3VyY2VzIGhhdmVuJ3QpLCBzbyBpZiB3
ZSBoYXZlIGEgc3R5bGVzaGVldCBhZnRlcgotICAgICAgICAvLyBjaGVja2luZyB0aGUgY2FjaGUs
IHRoZW4gd2UndmUgY2xlYXJseSBsb2FkZWQuCi0gICAgICAgIGlmICghbV9zdHlsZVNoZWV0KQot
ICAgICAgICAgICAgbV9sb2FkaW5nID0gdHJ1ZTsKLSAgICB9Ci19Ci0KLX0KLSNlbmRpZgorI2Vu
ZGlmIC8vIEtIVE1MX1hTTFQKSW5kZXg6IFdlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0LmgJKHJldmlzaW9uIDE1MTU5KQor
KysgV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwyMiAr
MjUsMTkgQEAKIAogI2lmZGVmIEtIVE1MX1hTTFQKIAotI2luY2x1ZGUgIkNhY2hlZE9iamVjdENs
aWVudC5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXQuaCIKICNpbmNsdWRlIDxsaWJ4bWwvcGFyc2Vy
Lmg+CiAjaW5jbHVkZSA8bGlieHNsdC90cmFuc2Zvcm0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBDYWNoZWRYU0xTdHlsZVNoZWV0OwogY2xhc3MgRG9jTG9hZGVyOwogY2xhc3Mg
RG9jdW1lbnQ7CiBjbGFzcyBYU0xJbXBvcnRSdWxlOwogICAgIAotY2xhc3MgWFNMU3R5bGVTaGVl
dCA6IHB1YmxpYyBTdHlsZVNoZWV0Ci17CitjbGFzcyBYU0xTdHlsZVNoZWV0IDogcHVibGljIFN0
eWxlU2hlZXQgewogcHVibGljOgotICAgIFhTTFN0eWxlU2hlZXQoTm9kZSAqcGFyZW50Tm9kZSwg
Y29uc3QgU3RyaW5nJiBocmVmID0gU3RyaW5nKCksIGJvb2wgZW1iZWRkZWQgPSBmYWxzZSk7Cisg
ICAgWFNMU3R5bGVTaGVldChOb2RlKiBwYXJlbnROb2RlLCBjb25zdCBTdHJpbmcmIGhyZWYgPSBT
dHJpbmcoKSwgYm9vbCBlbWJlZGRlZCA9IGZhbHNlKTsKICAgICBYU0xTdHlsZVNoZWV0KFhTTElt
cG9ydFJ1bGUqIHBhcmVudEltcG9ydCwgY29uc3QgU3RyaW5nJiBocmVmID0gU3RyaW5nKCkpOwog
ICAgIH5YU0xTdHlsZVNoZWV0KCk7CiAgICAgCkBAIC04MCwzMSArNzcsOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgYm9vbCBtX3N0eWxlc2hlZXREb2NUYWtlbjsKIH07CiAKLWNsYXNzIFhTTEltcG9ydFJ1
bGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0Q2xpZW50LCBwdWJsaWMgU3R5bGVCYXNlCi17Ci1wdWJs
aWM6Ci0gICAgWFNMSW1wb3J0UnVsZShTdHlsZUJhc2UqIHBhcmVudCwgY29uc3QgU3RyaW5nJiBo
cmVmKTsKLSAgICB2aXJ0dWFsIH5YU0xJbXBvcnRSdWxlKCk7Ci0gICAgCi0gICAgU3RyaW5nIGhy
ZWYoKSBjb25zdCB7IHJldHVybiBtX3N0ckhyZWY7IH0KLSAgICBYU0xTdHlsZVNoZWV0KiBzdHls
ZVNoZWV0KCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZVNoZWV0LmdldCgpOyB9Ci0gICAgCi0gICAg
dmlydHVhbCBib29sIGlzSW1wb3J0UnVsZSgpIHsgcmV0dXJuIHRydWU7IH0KLSAgICBYU0xTdHls
ZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KCkgY29uc3Q7Ci0gICAgCi0gICAgLy8gZnJvbSBDYWNo
ZWRPYmplY3RDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U3R5bGVTaGVldChjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgU3RyaW5nICZzaGVldCk7Ci0gICAgCi0gICAgYm9vbCBpc0xvYWRpbmco
KTsKLSAgICB2b2lkIGxvYWRTaGVldCgpOwotICAgIAotcHJvdGVjdGVkOgotICAgIFN0cmluZyBt
X3N0ckhyZWY7Ci0gICAgUmVmUHRyPFhTTFN0eWxlU2hlZXQ+IG1fc3R5bGVTaGVldDsKLSAgICBD
YWNoZWRYU0xTdHlsZVNoZWV0KiBtX2NhY2hlZFNoZWV0OwotICAgIGJvb2wgbV9sb2FkaW5nOwot
fTsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEtIVE1MX1hTTFQKIAotfQot
I2VuZGlmCi0jZW5kaWYKKyNlbmRpZiAvLyBYU0xTdHlsZVNoZWV0X0gK
</data>
<flag name="review"
          id="2780"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>