<?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>41202</bug_id>
          
          <creation_ts>2010-06-25 02:25:24 -0700</creation_ts>
          <short_desc>Move decoding into DocumentParser to further simplify RawDataDocumentParser and DocumentWriter</short_desc>
          <delta_ts>2010-06-25 16:47:19 -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>Other</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>
          <dependson>41197</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>242903</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-25 02:25:24 -0700</bug_when>
    <thetext>Move decoding into DocumentParser to further simplify RawDataDocumentParser and DocumentWriter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242906</commentid>
    <comment_count>1</comment_count>
      <attachid>59746</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-25 02:29:03 -0700</bug_when>
    <thetext>Created attachment 59746
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242908</commentid>
    <comment_count>2</comment_count>
      <attachid>59747</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-25 02:39:50 -0700</bug_when>
    <thetext>Created attachment 59747
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243208</commentid>
    <comment_count>3</comment_count>
      <attachid>59799</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-25 14:47:19 -0700</bug_when>
    <thetext>Created attachment 59799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243219</commentid>
    <comment_count>4</comment_count>
      <attachid>59799</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-25 15:10:25 -0700</bug_when>
    <thetext>Comment on attachment 59799
Patch

It&apos;s slightly wonky that the raw data folks have a document writer that they ignore, but I guess that makes sense...

We need a better name that DocumentWriter...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243222</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-25 15:13:48 -0700</bug_when>
    <thetext>I think the RawData folks are wrongly designed.  They don&apos;t want to be parsers.  They want some earlier method they can override to not be a parser.  The RawData class is all about just sharing the broken code, not because it&apos;s the right design long-term.  Shared broken code is better than copy/pasted broken code. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243255</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-25 16:47:19 -0700</bug_when>
    <thetext>Committed r61916: &lt;http://trac.webkit.org/changeset/61916&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59746</attachid>
            <date>2010-06-25 02:29:03 -0700</date>
            <delta_ts>2010-06-25 02:39:34 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-41202-20100625022854.patch</filename>
            <type>text/plain</type>
            <size>19222</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
M2FlNDkyY2UzZjM1N2ZhOWVhMjgxOTBlNTUxNDQ4M2ViOTAyNWYzMS4uYjJhMzI4ZjhkNzdlOGY3
NGMyNWQ5OTBkNWFiMTg1ZTdjOWVjYjU0YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiw0NyBAQAogCiAgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAgIE1vdmUgZGVjb2RpbmcgaW50byBEb2N1
bWVudFBhcnNlciB0byBmdXJ0aGVyIHNpbXBsaWZ5IFJhd0RhdGFEb2N1bWVudFBhcnNlciBhbmQg
RG9jdW1lbnRXcml0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQxMjAyCisKKyAgICAgICAgVGhlIHNpbGx5IHRoaW5nIGFib3V0IHRoaXMgcGF0Y2gg
aXMgdGhhdCBub25lIG9mIHRoZQorICAgICAgICBSYXdEYXRhRG9jdW1lbnRQYXJzZXIgc3ViY2xh
c3NlcyBhY3R1YWxseSB1c2UgYW55IG9mIHRoZQorICAgICAgICBkYXRhIHBhc3NlZCB0byB0aGVt
IHZpYSBhcHBlbmRCeXRlcy4KKworICAgICAgICBUaGlzIG1ha2VzIHRoZSByZWxhdGlvbnNoaXAg
YmV0d2VlbiBEb2N1bWVudFdyaXRlciBhbmQKKyAgICAgICAgRG9jdW1lbnRQYXJzZXIgc2xpZ2h0
bHkgbW9yZSBjb25mdXNpbmcsIGhvd2V2ZXIgSSB0aGluayB0aGlzCisgICAgICAgIERvY3VtZW50
UGFyc2VyIEFQSSBpcyBzbGlnaHRseSBuaWNlci4KKworICAgICAgICBOZXh0IHN0ZXAgaXMgdG8g
c3BsaXQgRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlciBvdXQgZnJvbQorICAgICAgICBEb2N1bWVu
dFBhcnNlciwgYW5kIHRoZW4gdGhlIGJhc2UgRG9jdW1lbnRQYXJzZXIgd29uJ3Qga25vdworICAg
ICAgICBhbnl0aGluZyBhYm91dCBkZWNvZGluZyBvciBTZWdtZW50ZWRTdHJpbmcuCisKKyAgICAg
ICAgTm8gZnVuY3Rpb25hbCBjaGFuZ2UsIHRodXMgbm8gdGVzdHMuCisKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0RvY3VtZW50UGFy
c2VyLmg6CisgICAgICAgICogZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAq
IGxvYWRlci9Eb2N1bWVudFdyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdy
aXRlcjo6cmVwbGFjZURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50V3JpdGVy
OjpjcmVhdGVEZWNvZGVySWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRXcml0
ZXI6OnJlcG9ydERhdGFSZWNpZXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdyaXRl
cjo6YWRkRGF0YSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50V3JpdGVyLmg6CisgICAgICAg
ICogbG9hZGVyL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEb2N1
bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMpOgorICAgICAgICAqIGxvYWRlci9NZWRpYURvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVz
KToKKyAgICAgICAgKiBsb2FkZXIvUGx1Z2luRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGx1Z2luRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKToKKyAgICAgICAgKiBsb2FkZXIv
U2lua0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbmtEb2N1bWVudFBhcnNlcjo6
U2lua0RvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbmtEb2N1bWVudFBhcnNl
cjo6YXBwZW5kQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2lua0RvY3VtZW50OjpjcmVhdGVQ
YXJzZXIpOgorCisyMDEwLTA2LTI1ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBTcGxpdCBEb2N1
bWVudFBhcnNlcjo6d3JpdGUgaW50byBzZXBhcmF0ZSBhcHBlbmQgYW5kIGluc2VydCBjYWxscwog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDExOTcKIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0YWE0NTc3YTE0
ZjU0N2UxNzNhMWI2ODgzZTcxZWQ3NjY3YjRjNTZmLi5mY2U2Mzg0ODBhYmRjMTZhNTk3YjI2OTQw
YTJhMDNiYjJkN2Y3ZjU4IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMzA1Miw2ICszMDUyLDcgQEAKIAkJQTg5Q0NDNTMwRjQ0RTk4MTAwQjVEQTEwIC8q
IFJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBODlDQ0M1MTBGNDRFOTgxMDBCNURBMTAgLyogUmVwbGFjZU5v
ZGVXaXRoU3BhbkNvbW1hbmQuaCAqLzsgfTsKIAkJQThBOTA5QUMwQ0JDRDZCNTAwMjlCODA3IC8q
IFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTkwOUFBMENCQ0Q2QjUwMDI5QjgwNyAvKiBSZW5k
ZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmggKi87IH07CiAJCUE4QTkwOUFEMENCQ0Q2QjUw
MDI5QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTkwOUFCMENCQ0Q2QjUwMDI5
QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNwcCAqLzsgfTsKKwkJQThD
MjI4MEUxMUQ0QTU5NzAwRDVBN0QzIC8qIERvY3VtZW50UGFyc2VyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzIyODBEMTFENEE1OTcwMEQ1QTdE
MyAvKiBEb2N1bWVudFBhcnNlci5jcHAgKi87IH07CiAJCUE4QzRBN0ZEMDlENTYzMjcwMDAzQUM4
RCAvKiBTdHlsZWRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBOEM0QTdFQjA5RDU2MzI3MDAwM0FDOEQgLyogU3R5bGVkRWxlbWVudC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE4QzRBN0ZF
MDlENTYzMjcwMDAzQUM4RCAvKiBTdHlsZWRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzRBN0VDMDlENTYzMjcwMDAzQUM4RCAvKiBT
dHlsZWRFbGVtZW50LmNwcCAqLzsgfTsKIAkJQThDNEE4MDAwOUQ1NjMyNzAwMDNBQzhEIC8qIE5v
ZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThD
NEE3RUUwOUQ1NjMyNzAwMDNBQzhEIC8qIE5vZGUuY3BwICovOyB9OwpAQCAtODUzNCw2ICs4NTM1
LDcgQEAKIAkJQTg5Q0NDNTEwRjQ0RTk4MTAwQjVEQTEwIC8qIFJlcGxhY2VOb2RlV2l0aFNwYW5D
b21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlcGxhY2VOb2RlV2l0
aFNwYW5Db21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTkwOUFBMENC
Q0Q2QjUwMDI5QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWlu
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBOTA5QUIwQ0JDRDZCNTAwMjlC
ODA3IC8qIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4QzIyODBEMTFENEE1OTcwMEQ1QTdE
MyAvKiBEb2N1bWVudFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBEb2N1bWVudFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4
QzRBN0VCMDlENTYzMjcwMDAzQUM4RCAvKiBTdHlsZWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZWRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE4QzRBN0VDMDlENTYzMjcwMDAzQUM4RCAvKiBTdHlsZWRFbGVtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZWRFbGVtZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThDNEE3RUUwOUQ1NjMyNzAwMDNBQzhEIC8q
IE5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vZGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY2MjMsNyArMTY2MjUsNiBAQAogCQlG
NTIzRDMyNDAyREU0NDc4MDE4NjM1Q0EgLyogZG9tICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlBODREODI3QjExRDMzM0VEMDA5NzI5OTAgLyogUmF3RGF0
YURvY3VtZW50UGFyc2VyLmggKi8sCiAJCQkJRTFDNERFNkQwRUE3NUM2NTAwMjNDQ0Q2IC8qIEFj
dGl2ZURPTU9iamVjdC5jcHAgKi8sCiAJCQkJRTFDNERFNjgwRUE3NUMxRTAwMjNDQ0Q2IC8qIEFj
dGl2ZURPTU9iamVjdC5oICovLAogCQkJCUE4QzRBN0ZDMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRy
LmNwcCAqLywKQEAgLTE2NjkxLDYgKzE2NjkyLDcgQEAKIAkJCQlBODE4NUYzNTA5NzY1NzY1MDA1
ODI2RDkgLyogRG9jdW1lbnRGcmFnbWVudC5oICovLAogCQkJCTFBNDk0RUQ1MEExMjNGMUEwMEZE
QUZDMSAvKiBEb2N1bWVudEZyYWdtZW50LmlkbCAqLywKIAkJCQlFRDJCQTgzQjA5QTI0QjkxMDA2
QzBBQzQgLyogRG9jdW1lbnRNYXJrZXIuaCAqLywKKwkJCQlBOEMyMjgwRDExRDRBNTk3MDBENUE3
RDMgLyogRG9jdW1lbnRQYXJzZXIuY3BwICovLAogCQkJCUJDQ0ZCQUU3MEI1MTUyRUQwMDAxRjFE
NyAvKiBEb2N1bWVudFBhcnNlci5oICovLAogCQkJCUE4MTg1RjMyMDk3NjU3NjUwMDU4MjZEOSAv
KiBEb2N1bWVudFR5cGUuY3BwICovLAogCQkJCUE4MTg1RjMxMDk3NjU3NjUwMDU4MjZEOSAvKiBE
b2N1bWVudFR5cGUuaCAqLywKQEAgLTE2NzM2LDYgKzE2NzM4LDcgQEAKIAkJCQlCQzYwRDhGMTBE
MkExMUUwMDBCOTkxOEYgLyogRXhjZXB0aW9uQmFzZS5oICovLAogCQkJCTkzODMxQjU2MEQwODdE
NjAwMEU1Qzk4NCAvKiBFeGNlcHRpb25Db2RlLmNwcCAqLywKIAkJCQk5MzVGQkNGMTA5QkExNDNC
MDBFMjMwQjEgLyogRXhjZXB0aW9uQ29kZS5oICovLAorCQkJCUE4NTMxMjNDMTFEMDQ3MUIwMEQ0
RDA3NyAvKiBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCAqLywKIAkJCQkwODcwMEJFNjBG
MDg2QzUzMDA5MTk0MTkgLyogSW5wdXRFbGVtZW50LmNwcCAqLywKIAkJCQkwODU5MUFBNDBGMDg1
QzRFMDA5QkFDQjEgLyogSW5wdXRFbGVtZW50LmggKi8sCiAJCQkJODUwMzFCMkQwQTQ0RUZDNzAw
Rjk5MkUwIC8qIEtleWJvYXJkRXZlbnQuY3BwICovLApAQCAtMTY4MTgsNiArMTY4MjEsNyBAQAog
CQkJCTkzRDlENTNCMERBMjdFMTgwMDc3MjE2QyAvKiBSYW5nZUJvdW5kYXJ5UG9pbnQuaCAqLywK
IAkJCQlEMjNDQTU2QjBBQjBFQjhEMDA1MTA4QTUgLyogUmFuZ2VFeGNlcHRpb24uaCAqLywKIAkJ
CQlEMjNDQTU0ODBBQjBFOTgzMDA1MTA4QTUgLyogUmFuZ2VFeGNlcHRpb24uaWRsICovLAorCQkJ
CUE4NEQ4MjdCMTFEMzMzRUQwMDk3Mjk5MCAvKiBSYXdEYXRhRG9jdW1lbnRQYXJzZXIuaCAqLywK
IAkJCQk4NTAzMUIzNTBBNDRFRkM3MDBGOTkyRTAgLyogUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIu
Y3BwICovLAogCQkJCTg1MDMxQjM2MEE0NEVGQzcwMEY5OTJFMCAvKiBSZWdpc3RlcmVkRXZlbnRM
aXN0ZW5lci5oICovLAogCQkJCTA4QTQ4NDc1MEU1MjcyQzUwMEMzRkU3NiAvKiBTY3JpcHRFbGVt
ZW50LmNwcCAqLywKQEAgLTE2ODc3LDcgKzE2ODgxLDYgQEAKIAkJCQk1NEM1MEY3QTBFODAxREYz
MDA5ODMyQTAgLyogWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCAqLywKIAkJCQk1RDE1RTNB
OTBGOUU2QUMxMDA5RTBFM0YgLyogWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5jcHAgKi8sCiAJCQkJ
NUQxNUUzQUEwRjlFNkFDMTAwOUUwRTNGIC8qIFhNTERvY3VtZW50UGFyc2VyU2NvcGUuaCAqLywK
LQkJCQlBODUzMTIzQzExRDA0NzFCMDBENEQwNzcgLyogRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNz
aW9uLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGRvbTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC0yMTg1Nyw2ICsyMTg2MCw3IEBACiAJCQkJQjUyNUE5NjYxMUNBMjM0MDAwM0EyM0E4
IC8qIEpTU1FMRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4RTZBNzgyMTFEMTY2
MUIwMDMxMUY0QSAvKiBIVE1MUGFyc2VyU2NoZWR1bGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUNFQTM5NDlDMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQThDMjI4MEUxMUQ0QTU5NzAwRDVBN0QzIC8qIERvY3VtZW50UGFy
c2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnRQ
YXJzZXIuaCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmgKaW5kZXggMmI5MGVmOGFkZThk
Yzc4NDRkZTc0ZTkyOGIwNjM0Yjg5N2Y3YmZhOC4uNDc4OWFiYWRmOWJjNzc2NGYzNDRjMWUzZGFj
ODY4ZTg3MGIxYzk3NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuaAor
KysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oCkBAIC0yNCwxMSArMjQsMTIgQEAKICNp
Zm5kZWYgRG9jdW1lbnRQYXJzZXJfaAogI2RlZmluZSBEb2N1bWVudFBhcnNlcl9oCiAKLSNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OworY2xhc3MgRG9jdW1lbnRXcml0
ZXI7CiBjbGFzcyBMZWdhY3lIVE1MVHJlZUJ1aWxkZXI7CiBjbGFzcyBMZWdhY3lIVE1MRG9jdW1l
bnRQYXJzZXI7CiBjbGFzcyBTZWdtZW50ZWRTdHJpbmc7CkBAIC0zOCwxMyArMzksMTggQEAgY2xh
c3MgRG9jdW1lbnRQYXJzZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgogICAgIHZp
cnR1YWwgfkRvY3VtZW50UGFyc2VyKCkgeyB9CiAKLSAgICAvLyBpbnNlcnQgaXMgdXNlIGJ5IGRv
Y3VtZW50LndyaXRlCisgICAgLy8gaW5zZXJ0IGlzIHVzZWQgYnkgZG9jdW1lbnQud3JpdGUKICAg
ICB2aXJ0dWFsIHZvaWQgaW5zZXJ0KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYpID0gMDsKLSAgICAv
LyBhcGVuZCBpcyB1c2VkIGJ5IERvY3VtZW50V3JpdGVyICh0aGUgbG9hZGVyKQorICAgIC8vIGFw
cGVuZEJ5dGVzIGlzIHVzZWQgYnkgRG9jdW1lbnRXcml0ZXIgKHRoZSBsb2FkZXIpCisgICAgdmly
dHVhbCB2b2lkIGFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyKiwgY29uc3QgY2hhciogYnl0ZXMs
IGludCBsZW5ndGgsIGJvb2wgZmx1c2gpOworCisgICAgLy8gRklYTUU6IGFwcGVuZCgpIHNob3Vs
ZCBiZSBwcml2YXRlLCBidXQgRG9jdW1lbnRXcml0ZXI6OnJlcGxhY2VEb2N1bWVudAorICAgIC8v
IHVzZXMgaXQgZm9yIG5vdy4KICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKGNvbnN0IFNlZ21lbnRl
ZFN0cmluZyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2goKSA9IDA7CiAgICAgdmly
dHVhbCBib29sIGZpbmlzaFdhc0NhbGxlZCgpID0gMDsKKwogICAgIHZpcnR1YWwgYm9vbCBpc1dh
aXRpbmdGb3JTY3JpcHRzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0V4ZWN1dGlu
Z1NjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKQEAgLTU0LDEzICs2MCw2IEBAIHB1
YmxpYzoKICAgICAvLyBhY3R1YWxseSBpbXBsZW1lbnRzIGl0LgogICAgIHZpcnR1YWwgYm9vbCBw
cm9jZXNzaW5nRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIGJv
b2wgd2FudHNSYXdEYXRhKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgd3JpdGVSYXdEYXRhKGNvbnN0IGNoYXIqIC8qZGF0YSovLCBpbnQgLypsZW5ndGgqLykKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCiAgICAgdmlydHVhbCBib29sIHdlbGxGb3JtZWQoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAKICAgICB2aXJ0dWFsIGludCBsaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gLTE7
IH0KQEAgLTgyLDE0ICs4MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFhTU0F1ZGl0b3IoWFNT
QXVkaXRvciogYXVkaXRvcikgeyBtX1hTU0F1ZGl0b3IgPSBhdWRpdG9yOyB9CiAKIHByb3RlY3Rl
ZDoKLSAgICBEb2N1bWVudFBhcnNlcihEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgdmlld1NvdXJj
ZU1vZGUgPSBmYWxzZSkKLSAgICAgICAgOiBtX3BhcnNlclN0b3BwZWQoZmFsc2UpCi0gICAgICAg
ICwgbV9pblZpZXdTb3VyY2VNb2RlKHZpZXdTb3VyY2VNb2RlKQotICAgICAgICAsIG1fZG9jdW1l
bnQoZG9jdW1lbnQpCi0gICAgICAgICwgbV9YU1NBdWRpdG9yKDApCi0gICAgewotICAgICAgICBB
U1NFUlQoZG9jdW1lbnQpOwotICAgIH0KKyAgICBEb2N1bWVudFBhcnNlcihEb2N1bWVudCosIGJv
b2wgdmlld1NvdXJjZU1vZGUgPSBmYWxzZSk7CiAKICAgICAvLyBUaGUgcGFyc2VyIGhhcyBidWZm
ZXJzLCBzbyBwYXJzaW5nIG1heSBjb250aW51ZSBldmVuIGFmdGVyCiAgICAgLy8gaXQgc3RvcHMg
cmVjZWl2aW5nIGRhdGEuIFdlIHVzZSBtX3BhcnNlclN0b3BwZWQgdG8gc3RvcCB0aGUgcGFyc2Vy
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9SYXdEYXRhRG9jdW1lbnRQYXJzZXIuaCBiL1dlYkNv
cmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oCmluZGV4IGYzYzA3Mzk1ZjdlYzJlZTc0MGE0
OWIxM2IxNDU5MTIzY2QyMzA3ZWYuLjlmYzkwZjUxMWRkODBjZDczNTQwOWQwMjcwZGI0N2VkNjhh
MWZmMmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oCisr
KyBiL1dlYkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oCkBAIC0zMCwxMiArMzAsNiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEZJWE1FOiBJdCBzZWVtcyB3cm9uZyB0aGF0
IFJhd0RhdGFEb2N1bWVudFBhcnNlciBpcyBhIHN1YmNsYXNzIG9mCi0vLyBEb2N1bWVudFBhcnNl
ci4gIFJhd0RhdGFEb2N1bWVudFBhcnNlciwganVzdCB3YW50cyB0byBvdmVycmlkZSBhbiBlYXJs
aWVyCi0vLyB2ZXJzaW9uIG9mIHdyaXRlKCkgYmVmb3JlIHRoZSBkYXRhIGlzIGRlY29kZWQuICBT
ZWVtcyB0aGUgZGVjb2RpbmcgY291bGQKLS8vIG1vdmUgaW50byB0aGUgYmFzZS1jbGFzcyBEb2N1
bWVudFBhcnNlciwgYW5kIHRoZW4gUmF3RGF0YURvY3VtZW50UGFyc2VyCi0vLyB3b3VsZCBqdXN0
IGJlIHNob3J0LWNpcmN1dGluZy4gIFRoYXQgY291bGQgc2ltcGxpZnkgc29tZSBvZiB0aGUKLS8v
IERvY3VtZW50V3JpdGVyIGxvZ2ljLgogY2xhc3MgUmF3RGF0YURvY3VtZW50UGFyc2VyIDogcHVi
bGljIERvY3VtZW50UGFyc2VyIHsKIHB1YmxpYzoKICAgICBSYXdEYXRhRG9jdW1lbnRQYXJzZXIo
RG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNzAsOSArNjQsNiBAQCBwcml2YXRlOgogICAgIH0KIAog
ICAgIHZpcnR1YWwgYm9vbCBpc1dhaXRpbmdGb3JTY3JpcHRzKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLQotICAgIHZpcnR1YWwgYm9vbCB3YW50c1Jhd0RhdGEoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIHdyaXRlUmF3RGF0YShjb25zdCBjaGFyKiwgaW50KSB7
IHJldHVybiBmYWxzZTsgfQogfTsKIAogfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50V3JpdGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAppbmRl
eCBmNzJlN2ZiZThlOWI2YzM0ZjYxYTk5ZjJhZDY3ZjcwNzZhYTk4MzQ1Li45MmY2YWE1YjQ2ZjA0
NTQ5YjQwN2I5MmE5Nzg4OTUxYjk4NGNkOGY2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFdyaXRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3Bw
CkBAIC03Myw4ICs3Myw4IEBAIHZvaWQgRG9jdW1lbnRXcml0ZXI6OnJlcGxhY2VEb2N1bWVudChj
b25zdCBTdHJpbmcmIHNvdXJjZSkKICAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnNl
dFBhcnNlTW9kZShEb2N1bWVudDo6U3RyaWN0KTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIEZJ
WE1FOiBJZiB3ZSB3YW50ZWQgdG8gc3VwcG9ydCB0aGUgPGltZyBzcmM9J2phdmFzY3JpcHQ6J2lt
YWdlZGF0YSc+Ci0gICAgICAgIC8vIGNhc2UgdGhlbiB3ZSB3b3VsZCBuZWVkIHRvIGNhbGwgYWRk
RGF0YShjaGFyKiwgaW50KSBpbnN0ZWFkLgorICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
Y2FsbCBEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMgaW5zdGVhZCBvZiBhcHBlbmQKKyAgICAg
ICAgLy8gdG8gc3VwcG9ydCBSYXdEYXRhRG9jdW1lbnRQYXJzZXJzLgogICAgICAgICBpZiAoRG9j
dW1lbnRQYXJzZXIqIHBhcnNlciA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnBhcnNlcigpKQogICAg
ICAgICAgICAgcGFyc2VyLT5hcHBlbmQoc291cmNlKTsKICAgICB9CkBAIC0xNDQsMjEgKzE0NCw4
IEBAIHZvaWQgRG9jdW1lbnRXcml0ZXI6OmJlZ2luKGNvbnN0IEtVUkwmIHVybCwgYm9vbCBkaXNw
YXRjaCwgU2VjdXJpdHlPcmlnaW4qIG9yaWdpCiAgICAgICAgIG1fZnJhbWUtPnZpZXcoKS0+c2V0
Q29udGVudHNTaXplKEludFNpemUoKSk7CiB9CiAKLXZvaWQgRG9jdW1lbnRXcml0ZXI6OmFkZERh
dGEoY29uc3QgY2hhciogc3RyLCBpbnQgbGVuLCBib29sIGZsdXNoKQorVGV4dFJlc291cmNlRGVj
b2RlciogRG9jdW1lbnRXcml0ZXI6OmNyZWF0ZURlY29kZXJJZk5lZWRlZCgpCiB7Ci0gICAgaWYg
KGxlbiA9PSAwICYmICFmbHVzaCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGxlbiA9PSAt
MSkKLSAgICAgICAgbGVuID0gc3RybGVuKHN0cik7Ci0KLSAgICBEb2N1bWVudFBhcnNlciogcGFy
c2VyID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2VyKCk7Ci0gICAgaWYgKHBhcnNlciAmJiBw
YXJzZXItPndhbnRzUmF3RGF0YSgpKSB7Ci0gICAgICAgIGlmIChsZW4gPiAwKQotICAgICAgICAg
ICAgcGFyc2VyLT53cml0ZVJhd0RhdGEoc3RyLCBsZW4pOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIAogICAgIGlmICghbV9kZWNvZGVyKSB7CiAgICAgICAgIGlmIChTZXR0aW5ncyogc2V0
dGluZ3MgPSBtX2ZyYW1lLT5zZXR0aW5ncygpKSB7CiAgICAgICAgICAgICBtX2RlY29kZXIgPSBU
ZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUobV9taW1lVHlwZSwKQEAgLTE4OCwyNCArMTc1LDI4
IEBAIHZvaWQgRG9jdW1lbnRXcml0ZXI6OmFkZERhdGEoY29uc3QgY2hhciogc3RyLCBpbnQgbGVu
LCBib29sIGZsdXNoKQogICAgICAgICB9CiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnNl
dERlY29kZXIobV9kZWNvZGVyLmdldCgpKTsKICAgICB9CisgICAgcmV0dXJuIG1fZGVjb2Rlci5n
ZXQoKTsKK30KIAotICAgIFN0cmluZyBkZWNvZGVkID0gbV9kZWNvZGVyLT5kZWNvZGUoc3RyLCBs
ZW4pOwotICAgIGlmIChmbHVzaCkKLSAgICAgICAgZGVjb2RlZCArPSBtX2RlY29kZXItPmZsdXNo
KCk7Ci0gICAgaWYgKGRlY29kZWQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KK3ZvaWQg
RG9jdW1lbnRXcml0ZXI6OnJlcG9ydERhdGFSZWNpZXZlZCgpCit7CisgICAgQVNTRVJUKG1fZGVj
b2Rlcik7CiAgICAgaWYgKCFtX3JlY2VpdmVkRGF0YSkgewogICAgICAgICBtX3JlY2VpdmVkRGF0
YSA9IHRydWU7CiAgICAgICAgIGlmIChtX2RlY29kZXItPmVuY29kaW5nKCkudXNlc1Zpc3VhbE9y
ZGVyaW5nKCkpCiAgICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZXRWaXN1YWxseU9y
ZGVyZWQoKTsKICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cmVjYWxjU3R5bGUoTm9kZTo6
Rm9yY2UpOwogICAgIH0KK30KIAotICAgIGlmIChwYXJzZXIpIHsKLSAgICAgICAgQVNTRVJUKCFw
YXJzZXItPndhbnRzUmF3RGF0YSgpKTsKLSAgICAgICAgcGFyc2VyLT5hcHBlbmQoZGVjb2RlZCk7
Ci0gICAgfQordm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0YShjb25zdCBjaGFyKiBzdHIsIGlu
dCBsZW4sIGJvb2wgZmx1c2gpCit7CisgICAgaWYgKGxlbiA9PSAtMSkKKyAgICAgICAgbGVuID0g
c3RybGVuKHN0cik7CisKKyAgICBEb2N1bWVudFBhcnNlciogcGFyc2VyID0gbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+cGFyc2VyKCk7CisgICAgaWYgKHBhcnNlcikKKyAgICAgICAgcGFyc2VyLT5hcHBl
bmRCeXRlcyh0aGlzLCBzdHIsIGxlbiwgZmx1c2gpOwogfQogCiB2b2lkIERvY3VtZW50V3JpdGVy
OjplbmQoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaCBiL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKaW5kZXggOTc3ZGEzOTZhYjM2ZTU1NTgyM2Q1
YTg2MDRjNjk4ODg1ZjQ4YjAzZi4uNWU5NmEwMGJlN2JhZDkzMDZjYTJjZDU3MmM0YmI0NDQzYmRi
YTNlMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaAorKysgYi9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCkBAIC02Nyw2ICs2NywxMCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHNldERlY29kZXIoVGV4dFJlc291cmNlRGVjb2RlciopOwogCisgICAgLy8g
RXhwb3NlZCBmb3IgRG91Y21lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzCisgICAgVGV4dFJlc291cmNl
RGVjb2RlciogY3JlYXRlRGVjb2RlcklmTmVlZGVkKCk7CisgICAgdm9pZCByZXBvcnREYXRhUmVj
aWV2ZWQoKTsKKwogcHJpdmF0ZToKICAgICBQYXNzUmVmUHRyPERvY3VtZW50PiBjcmVhdGVEb2N1
bWVudCgpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9JbWFnZURvY3VtZW50LmNwcCBi
L1dlYkNvcmUvbG9hZGVyL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IGUzZTg0ZTNhOTdkZmFkNzJi
NTJiMTMzNTA3NWQ0ZTQzY2E3MzYwMzkuLjFiMTU4NGQyOTVkMjlkZGY2MWRmOTc0NjkyOWRiMjQw
ZTQ0NTRlYmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ltYWdlRG9jdW1lbnQuY3BwCisr
KyBiL1dlYkNvcmUvbG9hZGVyL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHB1
YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIHdyaXRlUmF3RGF0YShj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kQnl0ZXMo
RG9jdW1lbnRXcml0ZXIqLCBjb25zdCBjaGFyKiwgaW50LCBib29sKTsKICAgICB2aXJ0dWFsIHZv
aWQgZmluaXNoKCk7CiB9OwogCkBAIC0xMTgsMTkgKzExOCwxNyBAQCBzdGF0aWMgZmxvYXQgcGFn
ZVpvb21GYWN0b3IoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIHJldHVybiB2aWV3ID8gdmlldy0+
cGFnZVpvb21GYWN0b3IoKSA6IDE7CiB9CiAKLWJvb2wgSW1hZ2VEb2N1bWVudFBhcnNlcjo6d3Jp
dGVSYXdEYXRhKGNvbnN0IGNoYXIqLCBpbnQpCit2b2lkIEltYWdlRG9jdW1lbnRQYXJzZXI6OmFw
cGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyKiwgY29uc3QgY2hhciosIGludCwgYm9vbCkKIHsKICAg
ICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpOwogICAgIFNldHRpbmdzKiBzZXR0
aW5ncyA9IGZyYW1lLT5zZXR0aW5ncygpOwogICAgIGlmICghZnJhbWUtPmxvYWRlcigpLT5jbGll
bnQoKS0+YWxsb3dJbWFnZXMoIXNldHRpbmdzIHx8IHNldHRpbmdzLT5hcmVJbWFnZXNFbmFibGVk
KCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybjsKIAogICAgIENhY2hl
ZEltYWdlKiBjYWNoZWRJbWFnZSA9IGRvY3VtZW50KCktPmNhY2hlZEltYWdlKCk7CiAgICAgY2Fj
aGVkSW1hZ2UtPmRhdGEoZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5tYWluUmVz
b3VyY2VEYXRhKCksIGZhbHNlKTsKIAogICAgIGRvY3VtZW50KCktPmltYWdlQ2hhbmdlZCgpOwot
ICAgIAotICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBJbWFnZURvY3VtZW50UGFyc2VyOjpm
aW5pc2goKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvTWVkaWFEb2N1bWVudC5jcHAgYi9X
ZWJDb3JlL2xvYWRlci9NZWRpYURvY3VtZW50LmNwcAppbmRleCBjZjcyY2VkYjM0OTNiYmE2OGFm
MWZjNWQ5MzE4ZDE2YTlhODIxYzZjLi4xMGNjY2ZhZjM1MjMyMDkxZTkxOWFmMWJmYjQ2NzkzNjg4
MDliMDkyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9NZWRpYURvY3VtZW50LmNwcAorKysg
Yi9XZWJDb3JlL2xvYWRlci9NZWRpYURvY3VtZW50LmNwcApAQCAtNTQsNyArNTQsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCB3cml0ZVJhd0RhdGEoY29u
c3QgY2hhciogZGF0YSwgaW50IGxlbik7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZEJ5dGVzKERv
Y3VtZW50V3JpdGVyKiwgY29uc3QgY2hhciosIGludCwgYm9vbCk7CiAKICAgICB2b2lkIGNyZWF0
ZURvY3VtZW50U3RydWN0dXJlKCk7CiAKQEAgLTkwLDE4ICs5MCwxNyBAQCB2b2lkIE1lZGlhRG9j
dW1lbnRQYXJzZXI6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKIAogICAgIGZyYW1lLT5sb2Fk
ZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlTG9hZGVyKCktPnNldFNo
b3VsZEJ1ZmZlckRhdGEoZmFsc2UpOwogfQotICAgIAotYm9vbCBNZWRpYURvY3VtZW50UGFyc2Vy
Ojp3cml0ZVJhd0RhdGEoY29uc3QgY2hhciosIGludCkKKwordm9pZCBNZWRpYURvY3VtZW50UGFy
c2VyOjphcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciosIGNvbnN0IGNoYXIqLCBpbnQsIGJvb2wp
CiB7CiAgICAgQVNTRVJUKCFtX21lZGlhRWxlbWVudCk7CiAgICAgaWYgKG1fbWVkaWFFbGVtZW50
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAorICAgICAgICByZXR1cm47CisKICAg
ICBjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpOwogICAgIGZpbmlzaCgpOwotICAgIHJldHVybiBm
YWxzZTsKIH0KLSAgICAKKwogTWVkaWFEb2N1bWVudDo6TWVkaWFEb2N1bWVudChGcmFtZSogZnJh
bWUpCiAgICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUpCiAgICAgLCBtX3JlcGxhY2VNZWRpYUVsZW1l
bnRUaW1lcih0aGlzLCAmTWVkaWFEb2N1bWVudDo6cmVwbGFjZU1lZGlhRWxlbWVudFRpbWVyRmly
ZWQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9QbHVnaW5Eb2N1bWVudC5jcHAgYi9XZWJD
b3JlL2xvYWRlci9QbHVnaW5Eb2N1bWVudC5jcHAKaW5kZXggMWI5ODllOGY5ZTNlMTBhYjk5YzVk
ZTgzNzgxMzA3YzAyMjQwN2U5NS4uMDEzYzBmMWVmODZmYmIyYzQ1YzMwYWMzNzMyYzlkNjg3MDg5
NDY0ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvUGx1Z2luRG9jdW1lbnQuY3BwCisrKyBi
L1dlYkNvcmUvbG9hZGVyL1BsdWdpbkRvY3VtZW50LmNwcApAQCAtNTIsNyArNTIsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFdpZGdldCogcGx1Z2luV2lkZ2V0RnJvbURvY3VtZW50KERvY3VtZW50
Kik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIHdyaXRlUmF3RGF0YShjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRX
cml0ZXIqLCBjb25zdCBjaGFyKiwgaW50LCBib29sKTsKIAogICAgIHZvaWQgY3JlYXRlRG9jdW1l
bnRTdHJ1Y3R1cmUoKTsKIApAQCAtOTgsMzAgKzk4LDMwIEBAIHZvaWQgUGx1Z2luRG9jdW1lbnRQ
YXJzZXI6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKICAgICAKICAgICBib2R5LT5hcHBlbmRD
aGlsZChlbWJlZEVsZW1lbnQsIGVjKTsgICAgCiB9Ci0gICAgCi1ib29sIFBsdWdpbkRvY3VtZW50
UGFyc2VyOjp3cml0ZVJhd0RhdGEoY29uc3QgY2hhciosIGludCkKKwordm9pZCBQbHVnaW5Eb2N1
bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXIqLCBjb25zdCBjaGFyKiwgaW50
LCBib29sKQogewogICAgIEFTU0VSVCghbV9lbWJlZEVsZW1lbnQpOwogICAgIGlmIChtX2VtYmVk
RWxlbWVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorICAgICAgICByZXR1cm47CisK
ICAgICBjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpOwogCi0gICAgaWYgKEZyYW1lKiBmcmFtZSA9
IGRvY3VtZW50KCktPmZyYW1lKCkpIHsKLSAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZnJh
bWUtPnNldHRpbmdzKCk7Ci0gICAgICAgIGlmIChzZXR0aW5ncyAmJiBmcmFtZS0+bG9hZGVyKCkt
PnN1YmZyYW1lTG9hZGVyKCktPmFsbG93UGx1Z2lucyhOb3RBYm91dFRvSW5zdGFudGlhdGVQbHVn
aW4pKSB7Ci0gICAgICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKyAgICBGcmFt
ZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAg
IHJldHVybjsKKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBmcmFtZS0+c2V0dGluZ3MoKTsKKyAg
ICBpZiAoIXNldHRpbmdzIHx8ICFmcmFtZS0+bG9hZGVyKCktPnN1YmZyYW1lTG9hZGVyKCktPmFs
bG93UGx1Z2lucyhOb3RBYm91dFRvSW5zdGFudGlhdGVQbHVnaW4pKQorICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgICAgIGlmIChSZW5kZXJXaWRnZXQqIHJlbmRlcmVyID0gdG9SZW5kZXJXaWRn
ZXQobV9lbWJlZEVsZW1lbnQtPnJlbmRlcmVyKCkpKSB7Ci0gICAgICAgICAgICAgICAgZnJhbWUt
PmxvYWRlcigpLT5jbGllbnQoKS0+cmVkaXJlY3REYXRhVG9QbHVnaW4ocmVuZGVyZXItPndpZGdl
dCgpKTsKLSAgICAgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9h
ZGVyKCktPm1haW5SZXNvdXJjZUxvYWRlcigpLT5zZXRTaG91bGRCdWZmZXJEYXRhKGZhbHNlKTsK
LSAgICAgICAgICAgIH0KKyAgICBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKIAotICAgICAg
ICAgICAgZmluaXNoKCk7Ci0gICAgICAgIH0KKyAgICBpZiAoUmVuZGVyV2lkZ2V0KiByZW5kZXJl
ciA9IHRvUmVuZGVyV2lkZ2V0KG1fZW1iZWRFbGVtZW50LT5yZW5kZXJlcigpKSkgeworICAgICAg
ICBmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5yZWRpcmVjdERhdGFUb1BsdWdpbihyZW5kZXJl
ci0+d2lkZ2V0KCkpOworICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9h
ZGVyKCktPm1haW5SZXNvdXJjZUxvYWRlcigpLT5zZXRTaG91bGRCdWZmZXJEYXRhKGZhbHNlKTsK
ICAgICB9CiAKLSAgICByZXR1cm4gZmFsc2U7CisgICAgZmluaXNoKCk7CiB9CiAKIFBsdWdpbkRv
Y3VtZW50OjpQbHVnaW5Eb2N1bWVudChGcmFtZSogZnJhbWUpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2xvYWRlci9TaW5rRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmNw
cAppbmRleCAxZTA1NmVlZGM2OGI2Njc0ZDk1YmFmMzY2ZDM1NGE5NzIzNmM1ODUxLi4zYzgzZWY0
Njg4ZTQ1ZTAwMDZiOWIwNDg2NGJiNzkxM2U3OTQwMjA4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xv
YWRlci9TaW5rRG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5j
cHAKQEAgLTMwLDYgKzMwLDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2lu
a0RvY3VtZW50UGFyc2VyIDogcHVibGljIFJhd0RhdGFEb2N1bWVudFBhcnNlciB7CitwdWJsaWM6
CisgICAgU2lua0RvY3VtZW50UGFyc2VyKFNpbmtEb2N1bWVudCogZG9jdW1lbnQpCisgICAgICAg
IDogUmF3RGF0YURvY3VtZW50UGFyc2VyKGRvY3VtZW50KQorICAgIHsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgLy8gSWdub3JlIGFsbCBkYXRhLgorICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRCeXRl
cyhEb2N1bWVudFdyaXRlciosIGNvbnN0IGNoYXIqLCBpbnQsIGJvb2wpIHsgfQorfTsKKwogU2lu
a0RvY3VtZW50OjpTaW5rRG9jdW1lbnQoRnJhbWUqIGZyYW1lKQogICAgIDogSFRNTERvY3VtZW50
KGZyYW1lKQogewpAQCAtMzgsOSArNTAsNyBAQCBTaW5rRG9jdW1lbnQ6OlNpbmtEb2N1bWVudChG
cmFtZSogZnJhbWUpCiAKIERvY3VtZW50UGFyc2VyKiBTaW5rRG9jdW1lbnQ6OmNyZWF0ZVBhcnNl
cigpCiB7Ci0gICAgLy8gVGhlIGJhc2ljIFJhd0RhdGFEb2N1bWVudFBhcnNlciBkb2VzIG5vdGhp
bmcgd2l0aCB0aGUgZGF0YQotICAgIC8vIHdoaWNoIGlzIHN1ZmZpY2llbnQgZm9yIG91ciBwdXJw
b3NlcyBoZXJlLgotICAgIHJldHVybiBuZXcgUmF3RGF0YURvY3VtZW50UGFyc2VyKHRoaXMpOwor
ICAgIHJldHVybiBuZXcgU2lua0RvY3VtZW50UGFyc2VyKHRoaXMpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59747</attachid>
            <date>2010-06-25 02:39:50 -0700</date>
            <delta_ts>2010-06-25 14:47:15 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-41202-20100625023941.patch</filename>
            <type>text/plain</type>
            <size>24492</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCA1NjZhNjkxZmZiODg1YWRiYWQ5NTg5NTU2YmY4ODhkYjc0N2U1YzkyLi5iYjFhNTc2MDBhNWQ1
MzhlMDMyMGM4MjU0YWU1MzFlNTRjNmMzZjRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0xMTMsOSArMTEzLDEwIEBAIExPQ0FMX1NS
Q19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykgXAogCWRvbS9Db21tZW50LmNwcCBcCiAJZG9t
L0NvbnRhaW5lck5vZGUuY3BwIFwKIAlkb20vRE9NSW1wbGVtZW50YXRpb24uY3BwIFwKLSAgICAg
ICAgZG9tL0RPTVN0cmluZ0xpc3QuY3BwIFwKKwlkb20vRE9NU3RyaW5nTGlzdC5jcHAgXAogCWRv
bS9Eb2N1bWVudC5jcHAgXAogCWRvbS9Eb2N1bWVudEZyYWdtZW50LmNwcCBcCisJZG9tL0RvY3Vt
ZW50UGFyc2VyLmNwcCBcCiAJZG9tL0RvY3VtZW50VHlwZS5jcHAgXAogCWRvbS9EeW5hbWljTm9k
ZUxpc3QuY3BwIFwKIAlkb20vRWRpdGluZ1RleHQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGFkOTM2MzQxNDY3
ZWZmODg4NGJjMTcxNGFhY2FmZTk5M2U5OTVlZDkuLjk1YmFlZjhiMjEyNTI0MzM4YjQyMDIzYTA4
Y2ZiMzUwN2UxZjEzNzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNzczLDYgKzc3Myw3IEBAIFNFVChXZWJDb3JlX1NP
VVJDRVMKICAgICBkb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAKICAgICBkb20vRG9jdW1l
bnQuY3BwCiAgICAgZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCisgICAgZG9tL0RvY3VtZW50UGFy
c2VyLmNwcAogICAgIGRvbS9Eb2N1bWVudFR5cGUuY3BwCiAgICAgZG9tL0R5bmFtaWNOb2RlTGlz
dC5jcHAKICAgICBkb20vRWRpdGluZ1RleHQuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDNhZTQ5MmNlM2YzNTdmYTllYTI4MTkwZTU1
MTQ0ODNlYjkwMjVmMzEuLmIyYTMyOGY4ZDc3ZThmNzRjMjVkOTkwZDVhYjE4NWU3YzllY2I1NGIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0yLDYgKzIsNDcgQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAor
ICAgICAgICBNb3ZlIGRlY29kaW5nIGludG8gRG9jdW1lbnRQYXJzZXIgdG8gZnVydGhlciBzaW1w
bGlmeSBSYXdEYXRhRG9jdW1lbnRQYXJzZXIgYW5kIERvY3VtZW50V3JpdGVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTIwMgorCisgICAgICAgIFRo
ZSBzaWxseSB0aGluZyBhYm91dCB0aGlzIHBhdGNoIGlzIHRoYXQgbm9uZSBvZiB0aGUKKyAgICAg
ICAgUmF3RGF0YURvY3VtZW50UGFyc2VyIHN1YmNsYXNzZXMgYWN0dWFsbHkgdXNlIGFueSBvZiB0
aGUKKyAgICAgICAgZGF0YSBwYXNzZWQgdG8gdGhlbSB2aWEgYXBwZW5kQnl0ZXMuCisKKyAgICAg
ICAgVGhpcyBtYWtlcyB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gRG9jdW1lbnRXcml0ZXIgYW5k
CisgICAgICAgIERvY3VtZW50UGFyc2VyIHNsaWdodGx5IG1vcmUgY29uZnVzaW5nLCBob3dldmVy
IEkgdGhpbmsgdGhpcworICAgICAgICBEb2N1bWVudFBhcnNlciBBUEkgaXMgc2xpZ2h0bHkgbmlj
ZXIuCisKKyAgICAgICAgTmV4dCBzdGVwIGlzIHRvIHNwbGl0IERlY29kZWREYXRhRG9jdW1lbnRQ
YXJzZXIgb3V0IGZyb20KKyAgICAgICAgRG9jdW1lbnRQYXJzZXIsIGFuZCB0aGVuIHRoZSBiYXNl
IERvY3VtZW50UGFyc2VyIHdvbid0IGtub3cKKyAgICAgICAgYW55dGhpbmcgYWJvdXQgZGVjb2Rp
bmcgb3IgU2VnbWVudGVkU3RyaW5nLgorCisgICAgICAgIE5vIGZ1bmN0aW9uYWwgY2hhbmdlLCB0
aHVzIG5vIHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFBhcnNlci5oOgorICAgICAgICAqIGRvbS9SYXdE
YXRhRG9jdW1lbnRQYXJzZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXI6OnJlcGxhY2VEb2N1bWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdyaXRlcjo6Y3JlYXRlRGVjb2RlcklmTmVlZGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyOjpyZXBvcnREYXRhUmVjaWV2ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXI6OmFkZERhdGEpOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudFdyaXRlci5oOgorICAgICAgICAqIGxvYWRlci9JbWFnZURvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKToK
KyAgICAgICAgKiBsb2FkZXIvTWVkaWFEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYURvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyk6CisgICAgICAgICogbG9hZGVyL1BsdWdp
bkRvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRvY3VtZW50UGFyc2VyOjph
cHBlbmRCeXRlcyk6CisgICAgICAgICogbG9hZGVyL1NpbmtEb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTaW5rRG9jdW1lbnRQYXJzZXI6OlNpbmtEb2N1bWVudFBhcnNlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTaW5rRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNpbmtEb2N1bWVudDo6Y3JlYXRlUGFyc2VyKToKKworMjAxMC0wNi0yNSAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKICAgICAgICAgU3BsaXQgRG9jdW1lbnRQYXJzZXI6OndyaXRlIGludG8gc2Vw
YXJhdGUgYXBwZW5kIGFuZCBpbnNlcnQgY2FsbHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMTk3CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDhmOWMyNDVmNDFjMmFhYzIz
OTg2YjNhYjUwZGZiZDMzOWQ5MzMxMzUuLjUwYjkxMzA1ZDU5NjY3MTQ5ZTQwNzU5NGFiYWFlZGYy
ODMyMGVjOGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQpAQCAtNzc5LDYgKzc3OSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAgXAogCVdlYkNvcmUvZG9t
L0RldmljZU9yaWVudGF0aW9uRXZlbnQuaCBcCiAJV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIFwK
KwlXZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5jcHAgXAogCVdlYkNvcmUvZG9tL0RvY3VtZW50
LmggXAogCVdlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwIFwKIAlXZWJDb3JlL2RvbS9E
b2N1bWVudEZyYWdtZW50LmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA0ODg3MDMzNmVjNzdjNmIwY2JiOTcyZWFmZWYxMjdm
YzVmNTY0Njc4Li40MmRmODEwOTVhNjI0Y2IwZDU1NjUyN2Y3MGZhYTJmNGIxMjFhYTVhIDEwMDY0
NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpA
QCAtMTExMCw2ICsxMTEwLDggQEAKICAgICAgICAgICAgICdkb20vRG9jdW1lbnRGcmFnbWVudC5j
cHAnLAogICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudEZyYWdtZW50LmgnLAogICAgICAgICAgICAg
J2RvbS9Eb2N1bWVudE1hcmtlci5oJywKKyAgICAgICAgICAgICdkb20vRG9jdW1lbnRQYXJzZXIu
Y3BwJywKKyAgICAgICAgICAgICdkb20vRG9jdW1lbnRQYXJzZXIuaCcsCiAgICAgICAgICAgICAn
ZG9tL0RvY3VtZW50VHlwZS5jcHAnLAogICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudFR5cGUuaCcs
CiAgICAgICAgICAgICAnZG9tL0R5bmFtaWNOb2RlTGlzdC5jcHAnLApAQCAtMTIzMSw3ICsxMjMz
LDYgQEAKICAgICAgICAgICAgICdkb20vVG91Y2hFdmVudC5jcHAnLAogICAgICAgICAgICAgJ2Rv
bS9Ub3VjaExpc3QuY3BwJywKICAgICAgICAgICAgICdkb20vVG91Y2hMaXN0LmgnLAotICAgICAg
ICAgICAgJ2RvbS9Eb2N1bWVudFBhcnNlci5oJywKICAgICAgICAgICAgICdkb20vVHJhbnNmb3Jt
U291cmNlTGlieHNsdC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9UcmFuc2Zvcm1Tb3VyY2UuaCcs
CiAgICAgICAgICAgICAnZG9tL1RyYXZlcnNhbC5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggNzA2NTNmODk3ODI4ODRlMmY3
ZmJmM2I0YTdlNmY5MGUxM2ViYjNjMy4uNTAzYjJlY2YyYWFhNTA2ZjAyYWNmNjliZTk1NjJhYTJm
NDUzYzY2YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dl
YkNvcmUucHJvCkBAIC00NzUsNiArNDc1LDcgQEAgU09VUkNFUyArPSBcCiAgICAgZG9tL0Rldmlj
ZU9yaWVudGF0aW9uRXZlbnQuY3BwIFwKICAgICBkb20vRG9jdW1lbnQuY3BwIFwKICAgICBkb20v
RG9jdW1lbnRGcmFnbWVudC5jcHAgXAorICAgIGRvbS9Eb2N1bWVudFBhcnNlci5jcHAgXAogICAg
IGRvbS9Eb2N1bWVudFR5cGUuY3BwIFwKICAgICBkb20vRE9NSW1wbGVtZW50YXRpb24uY3BwIFwK
ICAgICBkb20vRE9NU3RyaW5nTGlzdC5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA0YWE0NTc3YTE0ZjU0N2UxNzNhMWI2ODgzZTcxZWQ3NjY3YjRj
NTZmLi5mY2U2Mzg0ODBhYmRjMTZhNTk3YjI2OTQwYTJhMDNiYjJkN2Y3ZjU4IDEwMDY0NAotLS0g
YS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzA1Miw2ICszMDUyLDcgQEAK
IAkJQTg5Q0NDNTMwRjQ0RTk4MTAwQjVEQTEwIC8qIFJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5k
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODlDQ0M1
MTBGNDRFOTgxMDBCNURBMTAgLyogUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuaCAqLzsgfTsK
IAkJQThBOTA5QUMwQ0JDRDZCNTAwMjlCODA3IC8qIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250
YWluZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
QTkwOUFBMENCQ0Q2QjUwMDI5QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVy
LmggKi87IH07CiAJCUE4QTkwOUFEMENCQ0Q2QjUwMDI5QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zv
cm1hYmxlQ29udGFpbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4QTkwOUFCMENCQ0Q2QjUwMDI5QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1h
YmxlQ29udGFpbmVyLmNwcCAqLzsgfTsKKwkJQThDMjI4MEUxMUQ0QTU5NzAwRDVBN0QzIC8qIERv
Y3VtZW50UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4QzIyODBEMTFENEE1OTcwMEQ1QTdEMyAvKiBEb2N1bWVudFBhcnNlci5jcHAgKi87
IH07CiAJCUE4QzRBN0ZEMDlENTYzMjcwMDAzQUM4RCAvKiBTdHlsZWRFbGVtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEM0QTdFQjA5RDU2MzI3
MDAwM0FDOEQgLyogU3R5bGVkRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUE4QzRBN0ZFMDlENTYzMjcwMDAzQUM4RCAvKiBTdHlsZWRF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4QzRBN0VDMDlENTYzMjcwMDAzQUM4RCAvKiBTdHlsZWRFbGVtZW50LmNwcCAqLzsgfTsKIAkJ
QThDNEE4MDAwOUQ1NjMyNzAwMDNBQzhEIC8qIE5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDNEE3RUUwOUQ1NjMyNzAwMDNBQzhEIC8qIE5v
ZGUuY3BwICovOyB9OwpAQCAtODUzNCw2ICs4NTM1LDcgQEAKIAkJQTg5Q0NDNTEwRjQ0RTk4MTAw
QjVEQTEwIC8qIFJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE4QTkwOUFBMENCQ0Q2QjUwMDI5QjgwNyAvKiBSZW5kZXJTVkdU
cmFuc2Zvcm1hYmxlQ29udGFpbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQThBOTA5QUIwQ0JDRDZCNTAwMjlCODA3IC8qIFJlbmRlclNWR1RyYW5zZm9ybWFi
bGVDb250YWluZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVu
ZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE4QzIyODBEMTFENEE1OTcwMEQ1QTdEMyAvKiBEb2N1bWVudFBhcnNlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudFBhcnNlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QzRBN0VCMDlENTYzMjcwMDAzQUM4RCAvKiBT
dHlsZWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZWRF
bGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QzRBN0VDMDlENTYzMjcw
MDAzQUM4RCAvKiBTdHlsZWRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTdHlsZWRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQThDNEE3RUUwOUQ1NjMyNzAwMDNBQzhEIC8qIE5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTY2MjMsNyArMTY2MjUsNiBAQAogCQlGNTIzRDMyNDAyREU0NDc4MDE4NjM1Q0EgLyog
ZG9tICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlBODRE
ODI3QjExRDMzM0VEMDA5NzI5OTAgLyogUmF3RGF0YURvY3VtZW50UGFyc2VyLmggKi8sCiAJCQkJ
RTFDNERFNkQwRUE3NUM2NTAwMjNDQ0Q2IC8qIEFjdGl2ZURPTU9iamVjdC5jcHAgKi8sCiAJCQkJ
RTFDNERFNjgwRUE3NUMxRTAwMjNDQ0Q2IC8qIEFjdGl2ZURPTU9iamVjdC5oICovLAogCQkJCUE4
QzRBN0ZDMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyLmNwcCAqLywKQEAgLTE2NjkxLDYgKzE2Njky
LDcgQEAKIAkJCQlBODE4NUYzNTA5NzY1NzY1MDA1ODI2RDkgLyogRG9jdW1lbnRGcmFnbWVudC5o
ICovLAogCQkJCTFBNDk0RUQ1MEExMjNGMUEwMEZEQUZDMSAvKiBEb2N1bWVudEZyYWdtZW50Lmlk
bCAqLywKIAkJCQlFRDJCQTgzQjA5QTI0QjkxMDA2QzBBQzQgLyogRG9jdW1lbnRNYXJrZXIuaCAq
LywKKwkJCQlBOEMyMjgwRDExRDRBNTk3MDBENUE3RDMgLyogRG9jdW1lbnRQYXJzZXIuY3BwICov
LAogCQkJCUJDQ0ZCQUU3MEI1MTUyRUQwMDAxRjFENyAvKiBEb2N1bWVudFBhcnNlci5oICovLAog
CQkJCUE4MTg1RjMyMDk3NjU3NjUwMDU4MjZEOSAvKiBEb2N1bWVudFR5cGUuY3BwICovLAogCQkJ
CUE4MTg1RjMxMDk3NjU3NjUwMDU4MjZEOSAvKiBEb2N1bWVudFR5cGUuaCAqLywKQEAgLTE2NzM2
LDYgKzE2NzM4LDcgQEAKIAkJCQlCQzYwRDhGMTBEMkExMUUwMDBCOTkxOEYgLyogRXhjZXB0aW9u
QmFzZS5oICovLAogCQkJCTkzODMxQjU2MEQwODdENjAwMEU1Qzk4NCAvKiBFeGNlcHRpb25Db2Rl
LmNwcCAqLywKIAkJCQk5MzVGQkNGMTA5QkExNDNCMDBFMjMwQjEgLyogRXhjZXB0aW9uQ29kZS5o
ICovLAorCQkJCUE4NTMxMjNDMTFEMDQ3MUIwMEQ0RDA3NyAvKiBGcmFnbWVudFNjcmlwdGluZ1Bl
cm1pc3Npb24uaCAqLywKIAkJCQkwODcwMEJFNjBGMDg2QzUzMDA5MTk0MTkgLyogSW5wdXRFbGVt
ZW50LmNwcCAqLywKIAkJCQkwODU5MUFBNDBGMDg1QzRFMDA5QkFDQjEgLyogSW5wdXRFbGVtZW50
LmggKi8sCiAJCQkJODUwMzFCMkQwQTQ0RUZDNzAwRjk5MkUwIC8qIEtleWJvYXJkRXZlbnQuY3Bw
ICovLApAQCAtMTY4MTgsNiArMTY4MjEsNyBAQAogCQkJCTkzRDlENTNCMERBMjdFMTgwMDc3MjE2
QyAvKiBSYW5nZUJvdW5kYXJ5UG9pbnQuaCAqLywKIAkJCQlEMjNDQTU2QjBBQjBFQjhEMDA1MTA4
QTUgLyogUmFuZ2VFeGNlcHRpb24uaCAqLywKIAkJCQlEMjNDQTU0ODBBQjBFOTgzMDA1MTA4QTUg
LyogUmFuZ2VFeGNlcHRpb24uaWRsICovLAorCQkJCUE4NEQ4MjdCMTFEMzMzRUQwMDk3Mjk5MCAv
KiBSYXdEYXRhRG9jdW1lbnRQYXJzZXIuaCAqLywKIAkJCQk4NTAzMUIzNTBBNDRFRkM3MDBGOTky
RTAgLyogUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY3BwICovLAogCQkJCTg1MDMxQjM2MEE0NEVG
QzcwMEY5OTJFMCAvKiBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oICovLAogCQkJCTA4QTQ4NDc1
MEU1MjcyQzUwMEMzRkU3NiAvKiBTY3JpcHRFbGVtZW50LmNwcCAqLywKQEAgLTE2ODc3LDcgKzE2
ODgxLDYgQEAKIAkJCQk1NEM1MEY3QTBFODAxREYzMDA5ODMyQTAgLyogWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcCAqLywKIAkJCQk1RDE1RTNBOTBGOUU2QUMxMDA5RTBFM0YgLyogWE1MRG9j
dW1lbnRQYXJzZXJTY29wZS5jcHAgKi8sCiAJCQkJNUQxNUUzQUEwRjlFNkFDMTAwOUUwRTNGIC8q
IFhNTERvY3VtZW50UGFyc2VyU2NvcGUuaCAqLywKLQkJCQlBODUzMTIzQzExRDA0NzFCMDBENEQw
NzcgLyogRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9
IGRvbTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yMTg1Nyw2ICsyMTg2MCw3IEBA
CiAJCQkJQjUyNUE5NjYxMUNBMjM0MDAwM0EyM0E4IC8qIEpTU1FMRXhjZXB0aW9uLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE4RTZBNzgyMTFEMTY2MUIwMDMxMUY0QSAvKiBIVE1MUGFyc2VyU2No
ZWR1bGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNFQTM5NDlDMTFENDVDREEwMDMwOTRDRiAv
KiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQThDMjI4MEUx
MUQ0QTU5NzAwRDVBN0QzIC8qIERvY3VtZW50UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuY3BwIGIvV2ViQ29yZS9kb20vRG9j
dW1lbnRQYXJzZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyNzc0MTZhMmU1ZGI4NzU1MmVhMjhiMjYwYzg1
YjRiMWRhNTBlNzAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNl
ci5jcHAKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUs
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRvY3VtZW50UGFy
c2VyLmgiCisKKyNpbmNsdWRlICJEb2N1bWVudFdyaXRlci5oIgorI2luY2x1ZGUgIlNlZ21lbnRl
ZFN0cmluZy5oIgorI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKKworI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRG9jdW1lbnRQYXJz
ZXI6OkRvY3VtZW50UGFyc2VyKERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCB2aWV3U291cmNlTW9k
ZSkKKyAgICA6IG1fcGFyc2VyU3RvcHBlZChmYWxzZSkKKyAgICAsIG1faW5WaWV3U291cmNlTW9k
ZSh2aWV3U291cmNlTW9kZSkKKyAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCisgICAgLCBtX1hT
U0F1ZGl0b3IoMCkKK3sKKyAgICBBU1NFUlQoZG9jdW1lbnQpOworfQorCit2b2lkIERvY3VtZW50
UGFyc2VyOjphcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciogd3JpdGVyICwgY29uc3QgY2hhciog
ZGF0YSwgaW50IGxlbmd0aCwgYm9vbCBzaG91bGRGbHVzaCkKK3sKKyAgICBpZiAoIWxlbmd0aCAm
JiAhc2hvdWxkRmx1c2gpCisgICAgICAgIHJldHVybjsKKworICAgIFRleHRSZXNvdXJjZURlY29k
ZXIqIGRlY29kZXIgPSB3cml0ZXItPmNyZWF0ZURlY29kZXJJZk5lZWRlZCgpOworICAgIFN0cmlu
ZyBkZWNvZGVkID0gZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbmd0aCk7CisgICAgaWYgKHNob3Vs
ZEZsdXNoKQorICAgICAgICBkZWNvZGVkICs9IGRlY29kZXItPmZsdXNoKCk7CisgICAgaWYgKGRl
Y29kZWQuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICB3cml0ZXItPnJlcG9ydERh
dGFSZWNpZXZlZCgpOworCisgICAgYXBwZW5kKGRlY29kZWQpOworfQorCit9OworCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oIGIvV2ViQ29yZS9kb20vRG9jdW1lbnRQ
YXJzZXIuaAppbmRleCAyYjkwZWY4YWRlOGRjNzg0NGRlNzRlOTI4YjA2MzRiODk3ZjdiZmE4Li40
Nzg5YWJhZGY5YmM3NzY0ZjM0NGMxZTNkYWM4NjhlODcwYjFjOTc1IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2Vy
LmgKQEAgLTI0LDExICsyNCwxMiBAQAogI2lmbmRlZiBEb2N1bWVudFBhcnNlcl9oCiAjZGVmaW5l
IERvY3VtZW50UGFyc2VyX2gKIAotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9j
dW1lbnQ7CitjbGFzcyBEb2N1bWVudFdyaXRlcjsKIGNsYXNzIExlZ2FjeUhUTUxUcmVlQnVpbGRl
cjsKIGNsYXNzIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjsKIGNsYXNzIFNlZ21lbnRlZFN0cmlu
ZzsKQEAgLTM4LDEzICszOSwxOCBAQCBjbGFzcyBEb2N1bWVudFBhcnNlciA6IHB1YmxpYyBOb25j
b3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RG9jdW1lbnRQYXJzZXIoKSB7IH0KIAot
ICAgIC8vIGluc2VydCBpcyB1c2UgYnkgZG9jdW1lbnQud3JpdGUKKyAgICAvLyBpbnNlcnQgaXMg
dXNlZCBieSBkb2N1bWVudC53cml0ZQogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnQoY29uc3QgU2Vn
bWVudGVkU3RyaW5nJikgPSAwOwotICAgIC8vIGFwZW5kIGlzIHVzZWQgYnkgRG9jdW1lbnRXcml0
ZXIgKHRoZSBsb2FkZXIpCisgICAgLy8gYXBwZW5kQnl0ZXMgaXMgdXNlZCBieSBEb2N1bWVudFdy
aXRlciAodGhlIGxvYWRlcikKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRX
cml0ZXIqLCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCwgYm9vbCBmbHVzaCk7CisKKyAg
ICAvLyBGSVhNRTogYXBwZW5kKCkgc2hvdWxkIGJlIHByaXZhdGUsIGJ1dCBEb2N1bWVudFdyaXRl
cjo6cmVwbGFjZURvY3VtZW50CisgICAgLy8gdXNlcyBpdCBmb3Igbm93LgogICAgIHZpcnR1YWwg
dm9pZCBhcHBlbmQoY29uc3QgU2VnbWVudGVkU3RyaW5nJikgPSAwOwogCiAgICAgdmlydHVhbCB2
b2lkIGZpbmlzaCgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZmluaXNoV2FzQ2FsbGVkKCkgPSAw
OworCiAgICAgdmlydHVhbCBib29sIGlzV2FpdGluZ0ZvclNjcmlwdHMoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBib29sIGlzRXhlY3V0aW5nU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIApAQCAtNTQsMTMgKzYwLDYgQEAgcHVibGljOgogICAgIC8vIGFjdHVhbGx5IGltcGxlbWVu
dHMgaXQuCiAgICAgdmlydHVhbCBib29sIHByb2Nlc3NpbmdEYXRhKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgYm9vbCB3YW50c1Jhd0RhdGEoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCB3cml0ZVJhd0RhdGEoY29uc3QgY2hhciogLypk
YXRhKi8sIGludCAvKmxlbmd0aCovKQotICAgIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KICAgICB2aXJ0dWFsIGJvb2wgd2Vs
bEZvcm1lZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgaW50IGxpbmVO
dW1iZXIoKSBjb25zdCB7IHJldHVybiAtMTsgfQpAQCAtODIsMTQgKzgxLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0WFNTQXVkaXRvcihYU1NBdWRpdG9yKiBhdWRpdG9yKSB7IG1fWFNTQXVkaXRv
ciA9IGF1ZGl0b3I7IH0KIAogcHJvdGVjdGVkOgotICAgIERvY3VtZW50UGFyc2VyKERvY3VtZW50
KiBkb2N1bWVudCwgYm9vbCB2aWV3U291cmNlTW9kZSA9IGZhbHNlKQotICAgICAgICA6IG1fcGFy
c2VyU3RvcHBlZChmYWxzZSkKLSAgICAgICAgLCBtX2luVmlld1NvdXJjZU1vZGUodmlld1NvdXJj
ZU1vZGUpCi0gICAgICAgICwgbV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAgICAgLCBtX1hTU0F1
ZGl0b3IoMCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChkb2N1bWVudCk7Ci0gICAgfQorICAgIERv
Y3VtZW50UGFyc2VyKERvY3VtZW50KiwgYm9vbCB2aWV3U291cmNlTW9kZSA9IGZhbHNlKTsKIAog
ICAgIC8vIFRoZSBwYXJzZXIgaGFzIGJ1ZmZlcnMsIHNvIHBhcnNpbmcgbWF5IGNvbnRpbnVlIGV2
ZW4gYWZ0ZXIKICAgICAvLyBpdCBzdG9wcyByZWNlaXZpbmcgZGF0YS4gV2UgdXNlIG1fcGFyc2Vy
U3RvcHBlZCB0byBzdG9wIHRoZSBwYXJzZXIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1Jhd0Rh
dGFEb2N1bWVudFBhcnNlci5oIGIvV2ViQ29yZS9kb20vUmF3RGF0YURvY3VtZW50UGFyc2VyLmgK
aW5kZXggZjNjMDczOTVmN2VjMmVlNzQwYTQ5YjEzYjE0NTkxMjNjZDIzMDdlZi4uOWZjOTBmNTEx
ZGQ4MGNkNzM1NDA5ZDAyNzBkYjQ3ZWQ2OGExZmYyYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
UmF3RGF0YURvY3VtZW50UGFyc2VyLmgKKysrIGIvV2ViQ29yZS9kb20vUmF3RGF0YURvY3VtZW50
UGFyc2VyLmgKQEAgLTMwLDEyICszMCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8g
RklYTUU6IEl0IHNlZW1zIHdyb25nIHRoYXQgUmF3RGF0YURvY3VtZW50UGFyc2VyIGlzIGEgc3Vi
Y2xhc3Mgb2YKLS8vIERvY3VtZW50UGFyc2VyLiAgUmF3RGF0YURvY3VtZW50UGFyc2VyLCBqdXN0
IHdhbnRzIHRvIG92ZXJyaWRlIGFuIGVhcmxpZXIKLS8vIHZlcnNpb24gb2Ygd3JpdGUoKSBiZWZv
cmUgdGhlIGRhdGEgaXMgZGVjb2RlZC4gIFNlZW1zIHRoZSBkZWNvZGluZyBjb3VsZAotLy8gbW92
ZSBpbnRvIHRoZSBiYXNlLWNsYXNzIERvY3VtZW50UGFyc2VyLCBhbmQgdGhlbiBSYXdEYXRhRG9j
dW1lbnRQYXJzZXIKLS8vIHdvdWxkIGp1c3QgYmUgc2hvcnQtY2lyY3V0aW5nLiAgVGhhdCBjb3Vs
ZCBzaW1wbGlmeSBzb21lIG9mIHRoZQotLy8gRG9jdW1lbnRXcml0ZXIgbG9naWMuCiBjbGFzcyBS
YXdEYXRhRG9jdW1lbnRQYXJzZXIgOiBwdWJsaWMgRG9jdW1lbnRQYXJzZXIgewogcHVibGljOgog
ICAgIFJhd0RhdGFEb2N1bWVudFBhcnNlcihEb2N1bWVudCogZG9jdW1lbnQpCkBAIC03MCw5ICs2
NCw2IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIGlzV2FpdGluZ0ZvclNj
cmlwdHMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgdmlydHVhbCBib29sIHdhbnRz
UmF3RGF0YSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgd3JpdGVS
YXdEYXRhKGNvbnN0IGNoYXIqLCBpbnQpIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiB9OwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwIGIvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRXcml0ZXIuY3BwCmluZGV4IGY3MmU3ZmJlOGU5YjZjMzRmNjFhOTlmMmFkNjdm
NzA3NmFhOTgzNDUuLjkyZjZhYTViNDZmMDQ1NDliNDA3YjkyYTk3ODg5NTFiOTg0Y2Q4ZjYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAorKysgYi9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAKQEAgLTczLDggKzczLDggQEAgdm9pZCBEb2N1bWVu
dFdyaXRlcjo6cmVwbGFjZURvY3VtZW50KGNvbnN0IFN0cmluZyYgc291cmNlKQogICAgICAgICAg
ICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2V0UGFyc2VNb2RlKERvY3VtZW50OjpTdHJpY3QpOwog
ICAgICAgICB9CiAKLSAgICAgICAgLy8gRklYTUU6IElmIHdlIHdhbnRlZCB0byBzdXBwb3J0IHRo
ZSA8aW1nIHNyYz0namF2YXNjcmlwdDonaW1hZ2VkYXRhJz4KLSAgICAgICAgLy8gY2FzZSB0aGVu
IHdlIHdvdWxkIG5lZWQgdG8gY2FsbCBhZGREYXRhKGNoYXIqLCBpbnQpIGluc3RlYWQuCisgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBjYWxsIERvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRl
cyBpbnN0ZWFkIG9mIGFwcGVuZAorICAgICAgICAvLyB0byBzdXBwb3J0IFJhd0RhdGFEb2N1bWVu
dFBhcnNlcnMuCiAgICAgICAgIGlmIChEb2N1bWVudFBhcnNlciogcGFyc2VyID0gbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+cGFyc2VyKCkpCiAgICAgICAgICAgICBwYXJzZXItPmFwcGVuZChzb3VyY2Up
OwogICAgIH0KQEAgLTE0NCwyMSArMTQ0LDggQEAgdm9pZCBEb2N1bWVudFdyaXRlcjo6YmVnaW4o
Y29uc3QgS1VSTCYgdXJsLCBib29sIGRpc3BhdGNoLCBTZWN1cml0eU9yaWdpbiogb3JpZ2kKICAg
ICAgICAgbV9mcmFtZS0+dmlldygpLT5zZXRDb250ZW50c1NpemUoSW50U2l6ZSgpKTsKIH0KIAot
dm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0YShjb25zdCBjaGFyKiBzdHIsIGludCBsZW4sIGJv
b2wgZmx1c2gpCitUZXh0UmVzb3VyY2VEZWNvZGVyKiBEb2N1bWVudFdyaXRlcjo6Y3JlYXRlRGVj
b2RlcklmTmVlZGVkKCkKIHsKLSAgICBpZiAobGVuID09IDAgJiYgIWZsdXNoKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAobGVuID09IC0xKQotICAgICAgICBsZW4gPSBzdHJsZW4oc3RyKTsK
LQotICAgIERvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5wYXJz
ZXIoKTsKLSAgICBpZiAocGFyc2VyICYmIHBhcnNlci0+d2FudHNSYXdEYXRhKCkpIHsKLSAgICAg
ICAgaWYgKGxlbiA+IDApCi0gICAgICAgICAgICBwYXJzZXItPndyaXRlUmF3RGF0YShzdHIsIGxl
bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCiAgICAgaWYgKCFtX2RlY29kZXIpIHsK
ICAgICAgICAgaWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUtPnNldHRpbmdzKCkpIHsK
ICAgICAgICAgICAgIG1fZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZShtX21p
bWVUeXBlLApAQCAtMTg4LDI0ICsxNzUsMjggQEAgdm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0
YShjb25zdCBjaGFyKiBzdHIsIGludCBsZW4sIGJvb2wgZmx1c2gpCiAgICAgICAgIH0KICAgICAg
ICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2V0RGVjb2RlcihtX2RlY29kZXIuZ2V0KCkpOwogICAg
IH0KKyAgICByZXR1cm4gbV9kZWNvZGVyLmdldCgpOworfQogCi0gICAgU3RyaW5nIGRlY29kZWQg
PSBtX2RlY29kZXItPmRlY29kZShzdHIsIGxlbik7Ci0gICAgaWYgKGZsdXNoKQotICAgICAgICBk
ZWNvZGVkICs9IG1fZGVjb2Rlci0+Zmx1c2goKTsKLSAgICBpZiAoZGVjb2RlZC5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybjsKLQordm9pZCBEb2N1bWVudFdyaXRlcjo6cmVwb3J0RGF0YVJlY2ll
dmVkKCkKK3sKKyAgICBBU1NFUlQobV9kZWNvZGVyKTsKICAgICBpZiAoIW1fcmVjZWl2ZWREYXRh
KSB7CiAgICAgICAgIG1fcmVjZWl2ZWREYXRhID0gdHJ1ZTsKICAgICAgICAgaWYgKG1fZGVjb2Rl
ci0+ZW5jb2RpbmcoKS51c2VzVmlzdWFsT3JkZXJpbmcoKSkKICAgICAgICAgICAgIG1fZnJhbWUt
PmRvY3VtZW50KCktPnNldFZpc3VhbGx5T3JkZXJlZCgpOwogICAgICAgICBtX2ZyYW1lLT5kb2N1
bWVudCgpLT5yZWNhbGNTdHlsZShOb2RlOjpGb3JjZSk7CiAgICAgfQorfQogCi0gICAgaWYgKHBh
cnNlcikgewotICAgICAgICBBU1NFUlQoIXBhcnNlci0+d2FudHNSYXdEYXRhKCkpOwotICAgICAg
ICBwYXJzZXItPmFwcGVuZChkZWNvZGVkKTsKLSAgICB9Cit2b2lkIERvY3VtZW50V3JpdGVyOjph
ZGREYXRhKGNvbnN0IGNoYXIqIHN0ciwgaW50IGxlbiwgYm9vbCBmbHVzaCkKK3sKKyAgICBpZiAo
bGVuID09IC0xKQorICAgICAgICBsZW4gPSBzdHJsZW4oc3RyKTsKKworICAgIERvY3VtZW50UGFy
c2VyKiBwYXJzZXIgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5wYXJzZXIoKTsKKyAgICBpZiAocGFy
c2VyKQorICAgICAgICBwYXJzZXItPmFwcGVuZEJ5dGVzKHRoaXMsIHN0ciwgbGVuLCBmbHVzaCk7
CiB9CiAKIHZvaWQgRG9jdW1lbnRXcml0ZXI6OmVuZCgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFdyaXRlci5oIGIvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaApp
bmRleCA5NzdkYTM5NmFiMzZlNTU1ODIzZDVhODYwNGM2OTg4ODVmNDhiMDNmLi41ZTk2YTAwYmU3
YmFkOTMwNmNhMmNkNTcyYzRiYjQ0NDNiZGJhM2UxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFdyaXRlci5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgK
QEAgLTY3LDYgKzY3LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0RGVjb2RlcihUZXh0UmVz
b3VyY2VEZWNvZGVyKik7CiAKKyAgICAvLyBFeHBvc2VkIGZvciBEb3VjbWVudFBhcnNlcjo6YXBw
ZW5kQnl0ZXMKKyAgICBUZXh0UmVzb3VyY2VEZWNvZGVyKiBjcmVhdGVEZWNvZGVySWZOZWVkZWQo
KTsKKyAgICB2b2lkIHJlcG9ydERhdGFSZWNpZXZlZCgpOworCiBwcml2YXRlOgogICAgIFBhc3NS
ZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZURvY3VtZW50KCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
bG9hZGVyL0ltYWdlRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVudC5j
cHAKaW5kZXggZTNlODRlM2E5N2RmYWQ3MmI1MmIxMzM1MDc1ZDRlNDNjYTczNjAzOS4uMWIxNTg0
ZDI5NWQyOWRkZjYxZGY5NzQ2OTI5ZGIyNDBlNDQ1NGViZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9s
b2FkZXIvSW1hZ2VEb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVu
dC5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2
aXJ0dWFsIGJvb2wgd3JpdGVSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW4pOworICAg
IHZpcnR1YWwgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciosIGNvbnN0IGNoYXIqLCBp
bnQsIGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2goKTsKIH07CiAKQEAgLTExOCwxOSAr
MTE4LDE3IEBAIHN0YXRpYyBmbG9hdCBwYWdlWm9vbUZhY3RvcihEb2N1bWVudCogZG9jdW1lbnQp
CiAgICAgcmV0dXJuIHZpZXcgPyB2aWV3LT5wYWdlWm9vbUZhY3RvcigpIDogMTsKIH0KIAotYm9v
bCBJbWFnZURvY3VtZW50UGFyc2VyOjp3cml0ZVJhd0RhdGEoY29uc3QgY2hhciosIGludCkKK3Zv
aWQgSW1hZ2VEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXIqLCBjb25z
dCBjaGFyKiwgaW50LCBib29sKQogewogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZy
YW1lKCk7CiAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZnJhbWUtPnNldHRpbmdzKCk7CiAgICAg
aWYgKCFmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5hbGxvd0ltYWdlcyghc2V0dGluZ3MgfHwg
c2V0dGluZ3MtPmFyZUltYWdlc0VuYWJsZWQoKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuOwogCiAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZG9jdW1lbnQo
KS0+Y2FjaGVkSW1hZ2UoKTsKICAgICBjYWNoZWRJbWFnZS0+ZGF0YShmcmFtZS0+bG9hZGVyKCkt
PmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKSwgZmFsc2UpOwogCiAgICAgZG9j
dW1lbnQoKS0+aW1hZ2VDaGFuZ2VkKCk7Ci0gICAgCi0gICAgcmV0dXJuIGZhbHNlOwogfQogCiB2
b2lkIEltYWdlRG9jdW1lbnRQYXJzZXI6OmZpbmlzaCgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xv
YWRlci9NZWRpYURvY3VtZW50LmNwcCBiL1dlYkNvcmUvbG9hZGVyL01lZGlhRG9jdW1lbnQuY3Bw
CmluZGV4IGNmNzJjZWRiMzQ5M2JiYTY4YWYxZmM1ZDkzMThkMTZhOWE4MjFjNmMuLjEwY2NjZmFm
MzUyMzIwOTFlOTE5YWYxYmZiNDY3OTM2ODgwOWIwOTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9h
ZGVyL01lZGlhRG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL01lZGlhRG9jdW1lbnQu
Y3BwCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdmly
dHVhbCBib29sIHdyaXRlUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKTsKKyAgICB2
aXJ0dWFsIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXIqLCBjb25zdCBjaGFyKiwgaW50
LCBib29sKTsKIAogICAgIHZvaWQgY3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKTsKIApAQCAtOTAs
MTggKzkwLDE3IEBAIHZvaWQgTWVkaWFEb2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9jdW1lbnRTdHJ1
Y3R1cmUoKQogCiAgICAgZnJhbWUtPmxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5t
YWluUmVzb3VyY2VMb2FkZXIoKS0+c2V0U2hvdWxkQnVmZmVyRGF0YShmYWxzZSk7CiB9Ci0gICAg
Ci1ib29sIE1lZGlhRG9jdW1lbnRQYXJzZXI6OndyaXRlUmF3RGF0YShjb25zdCBjaGFyKiwgaW50
KQorCit2b2lkIE1lZGlhRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVy
KiwgY29uc3QgY2hhciosIGludCwgYm9vbCkKIHsKICAgICBBU1NFUlQoIW1fbWVkaWFFbGVtZW50
KTsKICAgICBpZiAobV9tZWRpYUVsZW1lbnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgCisgICAgICAgIHJldHVybjsKKwogICAgIGNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCk7CiAg
ICAgZmluaXNoKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwogfQotICAgIAorCiBNZWRpYURvY3VtZW50
OjpNZWRpYURvY3VtZW50KEZyYW1lKiBmcmFtZSkKICAgICA6IEhUTUxEb2N1bWVudChmcmFtZSkK
ICAgICAsIG1fcmVwbGFjZU1lZGlhRWxlbWVudFRpbWVyKHRoaXMsICZNZWRpYURvY3VtZW50Ojpy
ZXBsYWNlTWVkaWFFbGVtZW50VGltZXJGaXJlZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVy
L1BsdWdpbkRvY3VtZW50LmNwcCBiL1dlYkNvcmUvbG9hZGVyL1BsdWdpbkRvY3VtZW50LmNwcApp
bmRleCAxYjk4OWU4ZjllM2UxMGFiOTljNWRlODM3ODEzMDdjMDIyNDA3ZTk1Li4wMTNjMGYxZWY4
NmZiYjJjNDVjMzBhYzM3MzJjOWQ2ODcwODk0NjRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRl
ci9QbHVnaW5Eb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvUGx1Z2luRG9jdW1lbnQu
Y3BwCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2lkZ2V0KiBwbHVnaW5X
aWRnZXRGcm9tRG9jdW1lbnQoRG9jdW1lbnQqKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJv
b2wgd3JpdGVSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW4pOworICAgIHZpcnR1YWwg
dm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciosIGNvbnN0IGNoYXIqLCBpbnQsIGJvb2wp
OwogCiAgICAgdm9pZCBjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpOwogCkBAIC05OCwzMCArOTgs
MzAgQEAgdm9pZCBQbHVnaW5Eb2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUo
KQogICAgIAogICAgIGJvZHktPmFwcGVuZENoaWxkKGVtYmVkRWxlbWVudCwgZWMpOyAgICAKIH0K
LSAgICAKLWJvb2wgUGx1Z2luRG9jdW1lbnRQYXJzZXI6OndyaXRlUmF3RGF0YShjb25zdCBjaGFy
KiwgaW50KQorCit2b2lkIFBsdWdpbkRvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhEb2N1bWVu
dFdyaXRlciosIGNvbnN0IGNoYXIqLCBpbnQsIGJvb2wpCiB7CiAgICAgQVNTRVJUKCFtX2VtYmVk
RWxlbWVudCk7CiAgICAgaWYgKG1fZW1iZWRFbGVtZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgCisgICAgICAgIHJldHVybjsKKwogICAgIGNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCk7
CiAKLSAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkgewotICAgICAg
ICBTZXR0aW5ncyogc2V0dGluZ3MgPSBmcmFtZS0+c2V0dGluZ3MoKTsKLSAgICAgICAgaWYgKHNl
dHRpbmdzICYmIGZyYW1lLT5sb2FkZXIoKS0+c3ViZnJhbWVMb2FkZXIoKS0+YWxsb3dQbHVnaW5z
KE5vdEFib3V0VG9JbnN0YW50aWF0ZVBsdWdpbikpIHsKLSAgICAgICAgICAgIGRvY3VtZW50KCkt
PnVwZGF0ZUxheW91dCgpOworICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7
CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIFNldHRpbmdzKiBzZXR0aW5n
cyA9IGZyYW1lLT5zZXR0aW5ncygpOworICAgIGlmICghc2V0dGluZ3MgfHwgIWZyYW1lLT5sb2Fk
ZXIoKS0+c3ViZnJhbWVMb2FkZXIoKS0+YWxsb3dQbHVnaW5zKE5vdEFib3V0VG9JbnN0YW50aWF0
ZVBsdWdpbikpCisgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgaWYgKFJlbmRlcldpZGdl
dCogcmVuZGVyZXIgPSB0b1JlbmRlcldpZGdldChtX2VtYmVkRWxlbWVudC0+cmVuZGVyZXIoKSkp
IHsKLSAgICAgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5yZWRpcmVjdERh
dGFUb1BsdWdpbihyZW5kZXJlci0+d2lkZ2V0KCkpOwotICAgICAgICAgICAgICAgIGZyYW1lLT5s
b2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlTG9hZGVyKCktPnNl
dFNob3VsZEJ1ZmZlckRhdGEoZmFsc2UpOwotICAgICAgICAgICAgfQorICAgIGRvY3VtZW50KCkt
PnVwZGF0ZUxheW91dCgpOwogCi0gICAgICAgICAgICBmaW5pc2goKTsKLSAgICAgICAgfQorICAg
IGlmIChSZW5kZXJXaWRnZXQqIHJlbmRlcmVyID0gdG9SZW5kZXJXaWRnZXQobV9lbWJlZEVsZW1l
bnQtPnJlbmRlcmVyKCkpKSB7CisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPnJl
ZGlyZWN0RGF0YVRvUGx1Z2luKHJlbmRlcmVyLT53aWRnZXQoKSk7CisgICAgICAgIGZyYW1lLT5s
b2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlTG9hZGVyKCktPnNl
dFNob3VsZEJ1ZmZlckRhdGEoZmFsc2UpOwogICAgIH0KIAotICAgIHJldHVybiBmYWxzZTsKKyAg
ICBmaW5pc2goKTsKIH0KIAogUGx1Z2luRG9jdW1lbnQ6OlBsdWdpbkRvY3VtZW50KEZyYW1lKiBm
cmFtZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5jcHAgYi9XZWJD
b3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuY3BwCmluZGV4IDFlMDU2ZWVkYzY4YjY2NzRkOTViYWYz
NjZkMzU0YTk3MjM2YzU4NTEuLjNjODNlZjQ2ODhlNDVlMDAwNmI5YjA0ODY0YmI3OTEzZTc5NDAy
MDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5jcHAKKysrIGIvV2Vi
Q29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmNwcApAQCAtMzAsNiArMzAsMTggQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBTaW5rRG9jdW1lbnRQYXJzZXIgOiBwdWJsaWMgUmF3RGF0
YURvY3VtZW50UGFyc2VyIHsKK3B1YmxpYzoKKyAgICBTaW5rRG9jdW1lbnRQYXJzZXIoU2lua0Rv
Y3VtZW50KiBkb2N1bWVudCkKKyAgICAgICAgOiBSYXdEYXRhRG9jdW1lbnRQYXJzZXIoZG9jdW1l
bnQpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICAvLyBJZ25vcmUgYWxsIGRhdGEuCisg
ICAgdmlydHVhbCB2b2lkIGFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyKiwgY29uc3QgY2hhcios
IGludCwgYm9vbCkgeyB9Cit9OworCiBTaW5rRG9jdW1lbnQ6OlNpbmtEb2N1bWVudChGcmFtZSog
ZnJhbWUpCiAgICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUpCiB7CkBAIC0zOCw5ICs1MCw3IEBAIFNp
bmtEb2N1bWVudDo6U2lua0RvY3VtZW50KEZyYW1lKiBmcmFtZSkKIAogRG9jdW1lbnRQYXJzZXIq
IFNpbmtEb2N1bWVudDo6Y3JlYXRlUGFyc2VyKCkKIHsKLSAgICAvLyBUaGUgYmFzaWMgUmF3RGF0
YURvY3VtZW50UGFyc2VyIGRvZXMgbm90aGluZyB3aXRoIHRoZSBkYXRhCi0gICAgLy8gd2hpY2gg
aXMgc3VmZmljaWVudCBmb3Igb3VyIHB1cnBvc2VzIGhlcmUuCi0gICAgcmV0dXJuIG5ldyBSYXdE
YXRhRG9jdW1lbnRQYXJzZXIodGhpcyk7CisgICAgcmV0dXJuIG5ldyBTaW5rRG9jdW1lbnRQYXJz
ZXIodGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59799</attachid>
            <date>2010-06-25 14:47:19 -0700</date>
            <delta_ts>2010-06-25 15:10:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41202-20100625144717.patch</filename>
            <type>text/plain</type>
            <size>24443</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCA1NjZhNjkxZmZiODg1YWRiYWQ5NTg5NTU2YmY4ODhkYjc0N2U1YzkyLi5iYjFhNTc2MDBhNWQ1
MzhlMDMyMGM4MjU0YWU1MzFlNTRjNmMzZjRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0xMTMsOSArMTEzLDEwIEBAIExPQ0FMX1NS
Q19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykgXAogCWRvbS9Db21tZW50LmNwcCBcCiAJZG9t
L0NvbnRhaW5lck5vZGUuY3BwIFwKIAlkb20vRE9NSW1wbGVtZW50YXRpb24uY3BwIFwKLSAgICAg
ICAgZG9tL0RPTVN0cmluZ0xpc3QuY3BwIFwKKwlkb20vRE9NU3RyaW5nTGlzdC5jcHAgXAogCWRv
bS9Eb2N1bWVudC5jcHAgXAogCWRvbS9Eb2N1bWVudEZyYWdtZW50LmNwcCBcCisJZG9tL0RvY3Vt
ZW50UGFyc2VyLmNwcCBcCiAJZG9tL0RvY3VtZW50VHlwZS5jcHAgXAogCWRvbS9EeW5hbWljTm9k
ZUxpc3QuY3BwIFwKIAlkb20vRWRpdGluZ1RleHQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGFkOTM2MzQxNDY3
ZWZmODg4NGJjMTcxNGFhY2FmZTk5M2U5OTVlZDkuLjk1YmFlZjhiMjEyNTI0MzM4YjQyMDIzYTA4
Y2ZiMzUwN2UxZjEzNzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNzczLDYgKzc3Myw3IEBAIFNFVChXZWJDb3JlX1NP
VVJDRVMKICAgICBkb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAKICAgICBkb20vRG9jdW1l
bnQuY3BwCiAgICAgZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCisgICAgZG9tL0RvY3VtZW50UGFy
c2VyLmNwcAogICAgIGRvbS9Eb2N1bWVudFR5cGUuY3BwCiAgICAgZG9tL0R5bmFtaWNOb2RlTGlz
dC5jcHAKICAgICBkb20vRWRpdGluZ1RleHQuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGY4Nzc0MzdmNTJkNTAwNjc1MTA1MWQ4MTgx
Y2FkOTg3N2I1YmU3NzUuLjcyN2U0YmU2MWVhNTc1ZGY1ZDU0NjVjMmY1OGUyN2U0YTQ2ODdjZjMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDUgKzEsNDYgQEAKIDIwMTAtMDYtMjUgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3Jn
PgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUg
ZGVjb2RpbmcgaW50byBEb2N1bWVudFBhcnNlciB0byBmdXJ0aGVyIHNpbXBsaWZ5IFJhd0RhdGFE
b2N1bWVudFBhcnNlciBhbmQgRG9jdW1lbnRXcml0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMjAyCisKKyAgICAgICAgVGhlIHNpbGx5IHRoaW5n
IGFib3V0IHRoaXMgcGF0Y2ggaXMgdGhhdCBub25lIG9mIHRoZQorICAgICAgICBSYXdEYXRhRG9j
dW1lbnRQYXJzZXIgc3ViY2xhc3NlcyBhY3R1YWxseSB1c2UgYW55IG9mIHRoZQorICAgICAgICBk
YXRhIHBhc3NlZCB0byB0aGVtIHZpYSBhcHBlbmRCeXRlcy4KKworICAgICAgICBUaGlzIG1ha2Vz
IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBEb2N1bWVudFdyaXRlciBhbmQKKyAgICAgICAgRG9j
dW1lbnRQYXJzZXIgc2xpZ2h0bHkgbW9yZSBjb25mdXNpbmcsIGhvd2V2ZXIgSSB0aGluayB0aGlz
CisgICAgICAgIERvY3VtZW50UGFyc2VyIEFQSSBpcyBzbGlnaHRseSBuaWNlci4KKworICAgICAg
ICBOZXh0IHN0ZXAgaXMgdG8gc3BsaXQgRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlciBvdXQgZnJv
bQorICAgICAgICBEb2N1bWVudFBhcnNlciwgYW5kIHRoZW4gdGhlIGJhc2UgRG9jdW1lbnRQYXJz
ZXIgd29uJ3Qga25vdworICAgICAgICBhbnl0aGluZyBhYm91dCBkZWNvZGluZyBvciBTZWdtZW50
ZWRTdHJpbmcuCisKKyAgICAgICAgTm8gZnVuY3Rpb25hbCBjaGFuZ2UsIHRodXMgbm8gdGVzdHMu
CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogZG9tL0RvY3VtZW50UGFyc2VyLmg6CisgICAgICAgICogZG9tL1Jhd0RhdGFEb2N1bWVudFBh
cnNlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFdyaXRlcjo6cmVwbGFjZURvY3VtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50V3JpdGVyOjpjcmVhdGVEZWNvZGVySWZOZWVkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRXcml0ZXI6OnJlcG9ydERhdGFSZWNpZXZlZCk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudFdyaXRlcjo6YWRkRGF0YSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
V3JpdGVyLmg6CisgICAgICAgICogbG9hZGVyL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMpOgorICAgICAgICAqIGxv
YWRlci9NZWRpYURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRG9jdW1lbnRQ
YXJzZXI6OmFwcGVuZEJ5dGVzKToKKyAgICAgICAgKiBsb2FkZXIvUGx1Z2luRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKToK
KyAgICAgICAgKiBsb2FkZXIvU2lua0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNp
bmtEb2N1bWVudFBhcnNlcjo6U2lua0RvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNpbmtEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2lu
a0RvY3VtZW50OjpjcmVhdGVQYXJzZXIpOgorCisyMDEwLTA2LTI1ICBFcmljIFNlaWRlbCAgPGVy
aWNAd2Via2l0Lm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgogCiAgICAg
ICAgIFNwbGl0IERvY3VtZW50UGFyc2VyOjp3cml0ZSBpbnRvIHNlcGFyYXRlIGFwcGVuZCBhbmQg
aW5zZXJ0IGNhbGxzCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQppbmRleCA4ZjljMjQ1ZjQxYzJhYWMyMzk4NmIzYWI1MGRmYmQzMzlk
OTMzMTM1Li41MGI5MTMwNWQ1OTY2NzE0OWU0MDc1OTRhYmFhZWRmMjgzMjBlYzhiIDEwMDY0NAot
LS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0K
QEAgLTc3OSw2ICs3NzksNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvZG9tL0Rl
dmljZU9yaWVudGF0aW9uRXZlbnQuY3BwIFwKIAlXZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlv
bkV2ZW50LmggXAogCVdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBcCisJV2ViQ29yZS9kb20vRG9j
dW1lbnRQYXJzZXIuY3BwIFwKIAlXZWJDb3JlL2RvbS9Eb2N1bWVudC5oIFwKIAlXZWJDb3JlL2Rv
bS9Eb2N1bWVudEZyYWdtZW50LmNwcCBcCiAJV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5o
IFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggNDg4NzAzMzZlYzc3YzZiMGNiYjk3MmVhZmVmMTI3ZmM1ZjU2NDY3OC4uNDJkZjgx
MDk1YTYyNGNiMGQ1NTY1MjdmNzBmYWEyZjRiMTIxYWE1YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTExMTAsNiArMTExMCw4
IEBACiAgICAgICAgICAgICAnZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwJywKICAgICAgICAgICAg
ICdkb20vRG9jdW1lbnRGcmFnbWVudC5oJywKICAgICAgICAgICAgICdkb20vRG9jdW1lbnRNYXJr
ZXIuaCcsCisgICAgICAgICAgICAnZG9tL0RvY3VtZW50UGFyc2VyLmNwcCcsCisgICAgICAgICAg
ICAnZG9tL0RvY3VtZW50UGFyc2VyLmgnLAogICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudFR5cGUu
Y3BwJywKICAgICAgICAgICAgICdkb20vRG9jdW1lbnRUeXBlLmgnLAogICAgICAgICAgICAgJ2Rv
bS9EeW5hbWljTm9kZUxpc3QuY3BwJywKQEAgLTEyMzEsNyArMTIzMyw2IEBACiAgICAgICAgICAg
ICAnZG9tL1RvdWNoRXZlbnQuY3BwJywKICAgICAgICAgICAgICdkb20vVG91Y2hMaXN0LmNwcCcs
CiAgICAgICAgICAgICAnZG9tL1RvdWNoTGlzdC5oJywKLSAgICAgICAgICAgICdkb20vRG9jdW1l
bnRQYXJzZXIuaCcsCiAgICAgICAgICAgICAnZG9tL1RyYW5zZm9ybVNvdXJjZUxpYnhzbHQuY3Bw
JywKICAgICAgICAgICAgICdkb20vVHJhbnNmb3JtU291cmNlLmgnLAogICAgICAgICAgICAgJ2Rv
bS9UcmF2ZXJzYWwuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJD
b3JlL1dlYkNvcmUucHJvCmluZGV4IDY4YTU1Mjc5NjNjMWYxZmY1ZDQwNjg2YTI4MTc2MGEwMzZm
NzQ5ODUuLjllYzYwN2U0MzE5OGUzNTRjMTA3NTcyZmRiNzc0MTdiZmE2NzY4YjkgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtNDc1
LDYgKzQ3NSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGRvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50
LmNwcCBcCiAgICAgZG9tL0RvY3VtZW50LmNwcCBcCiAgICAgZG9tL0RvY3VtZW50RnJhZ21lbnQu
Y3BwIFwKKyAgICBkb20vRG9jdW1lbnRQYXJzZXIuY3BwIFwKICAgICBkb20vRG9jdW1lbnRUeXBl
LmNwcCBcCiAgICAgZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcCBcCiAgICAgZG9tL0RPTVN0cmlu
Z0xpc3QuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNGFhNDU3N2ExNGY1NDdlMTczYTFiNjg4M2U3MWVkNzY2N2I0YzU2Zi4uZmNlNjM4NDgwYWJk
YzE2YTU5N2IyNjk0MGEyYTAzYmIyZDdmN2Y1OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTMwNTIsNiArMzA1Miw3IEBACiAJCUE4OUNDQzUzMEY0NEU5
ODEwMEI1REExMCAvKiBSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg5Q0NDNTEwRjQ0RTk4MTAwQjVEQTEw
IC8qIFJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmggKi87IH07CiAJCUE4QTkwOUFDMENCQ0Q2
QjUwMDI5QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE5MDlBQTBDQkNENkI1MDAy
OUI4MDcgLyogUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5oICovOyB9OwogCQlBOEE5
MDlBRDBDQkNENkI1MDAyOUI4MDcgLyogUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE5MDlB
QjBDQkNENkI1MDAyOUI4MDcgLyogUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAg
Ki87IH07CisJCUE4QzIyODBFMTFENEE1OTcwMEQ1QTdEMyAvKiBEb2N1bWVudFBhcnNlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEMyMjgwRDEx
RDRBNTk3MDBENUE3RDMgLyogRG9jdW1lbnRQYXJzZXIuY3BwICovOyB9OwogCQlBOEM0QTdGRDA5
RDU2MzI3MDAwM0FDOEQgLyogU3R5bGVkRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDNEE3RUIwOUQ1NjMyNzAwMDNBQzhEIC8qIFN0eWxl
ZEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlBOEM0QTdGRTA5RDU2MzI3MDAwM0FDOEQgLyogU3R5bGVkRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEM0QTdFQzA5RDU2MzI3
MDAwM0FDOEQgLyogU3R5bGVkRWxlbWVudC5jcHAgKi87IH07CiAJCUE4QzRBODAwMDlENTYzMjcw
MDAzQUM4RCAvKiBOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4QzRBN0VFMDlENTYzMjcwMDAzQUM4RCAvKiBOb2RlLmNwcCAqLzsgfTsKQEAg
LTg1MzQsNiArODUzNSw3IEBACiAJCUE4OUNDQzUxMEY0NEU5ODEwMEI1REExMCAvKiBSZXBsYWNl
Tm9kZVdpdGhTcGFuQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBOEE5MDlBQTBDQkNENkI1MDAyOUI4MDcgLyogUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRh
aW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJTVkdUcmFuc2Zv
cm1hYmxlQ29udGFpbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTkwOUFC
MENCQ0Q2QjUwMDI5QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR1RyYW5zZm9ybWFi
bGVDb250YWluZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOEMyMjgwRDEx
RDRBNTk3MDBENUE3RDMgLyogRG9jdW1lbnRQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBOEM0QTdFQjA5RDU2MzI3MDAwM0FDOEQgLyogU3R5bGVkRWxlbWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVkRWxlbWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBOEM0QTdFQzA5RDU2MzI3MDAwM0FDOEQgLyogU3R5bGVk
RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3R5bGVk
RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QzRBN0VFMDlENTYz
MjcwMDAzQUM4RCAvKiBOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NjIzLDcgKzE2
NjI1LDYgQEAKIAkJRjUyM0QzMjQwMkRFNDQ3ODAxODYzNUNBIC8qIGRvbSAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQTg0RDgyN0IxMUQzMzNFRDAwOTcy
OTkwIC8qIFJhd0RhdGFEb2N1bWVudFBhcnNlci5oICovLAogCQkJCUUxQzRERTZEMEVBNzVDNjUw
MDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuY3BwICovLAogCQkJCUUxQzRERTY4MEVBNzVDMUUw
MDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuaCAqLywKIAkJCQlBOEM0QTdGQzA5RDU2MzI3MDAw
M0FDOEQgLyogQXR0ci5jcHAgKi8sCkBAIC0xNjY5MSw2ICsxNjY5Miw3IEBACiAJCQkJQTgxODVG
MzUwOTc2NTc2NTAwNTgyNkQ5IC8qIERvY3VtZW50RnJhZ21lbnQuaCAqLywKIAkJCQkxQTQ5NEVE
NTBBMTIzRjFBMDBGREFGQzEgLyogRG9jdW1lbnRGcmFnbWVudC5pZGwgKi8sCiAJCQkJRUQyQkE4
M0IwOUEyNEI5MTAwNkMwQUM0IC8qIERvY3VtZW50TWFya2VyLmggKi8sCisJCQkJQThDMjI4MEQx
MUQ0QTU5NzAwRDVBN0QzIC8qIERvY3VtZW50UGFyc2VyLmNwcCAqLywKIAkJCQlCQ0NGQkFFNzBC
NTE1MkVEMDAwMUYxRDcgLyogRG9jdW1lbnRQYXJzZXIuaCAqLywKIAkJCQlBODE4NUYzMjA5NzY1
NzY1MDA1ODI2RDkgLyogRG9jdW1lbnRUeXBlLmNwcCAqLywKIAkJCQlBODE4NUYzMTA5NzY1NzY1
MDA1ODI2RDkgLyogRG9jdW1lbnRUeXBlLmggKi8sCkBAIC0xNjczNiw2ICsxNjczOCw3IEBACiAJ
CQkJQkM2MEQ4RjEwRDJBMTFFMDAwQjk5MThGIC8qIEV4Y2VwdGlvbkJhc2UuaCAqLywKIAkJCQk5
MzgzMUI1NjBEMDg3RDYwMDBFNUM5ODQgLyogRXhjZXB0aW9uQ29kZS5jcHAgKi8sCiAJCQkJOTM1
RkJDRjEwOUJBMTQzQjAwRTIzMEIxIC8qIEV4Y2VwdGlvbkNvZGUuaCAqLywKKwkJCQlBODUzMTIz
QzExRDA0NzFCMDBENEQwNzcgLyogRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmggKi8sCiAJ
CQkJMDg3MDBCRTYwRjA4NkM1MzAwOTE5NDE5IC8qIElucHV0RWxlbWVudC5jcHAgKi8sCiAJCQkJ
MDg1OTFBQTQwRjA4NUM0RTAwOUJBQ0IxIC8qIElucHV0RWxlbWVudC5oICovLAogCQkJCTg1MDMx
QjJEMEE0NEVGQzcwMEY5OTJFMCAvKiBLZXlib2FyZEV2ZW50LmNwcCAqLywKQEAgLTE2ODE4LDYg
KzE2ODIxLDcgQEAKIAkJCQk5M0Q5RDUzQjBEQTI3RTE4MDA3NzIxNkMgLyogUmFuZ2VCb3VuZGFy
eVBvaW50LmggKi8sCiAJCQkJRDIzQ0E1NkIwQUIwRUI4RDAwNTEwOEE1IC8qIFJhbmdlRXhjZXB0
aW9uLmggKi8sCiAJCQkJRDIzQ0E1NDgwQUIwRTk4MzAwNTEwOEE1IC8qIFJhbmdlRXhjZXB0aW9u
LmlkbCAqLywKKwkJCQlBODREODI3QjExRDMzM0VEMDA5NzI5OTAgLyogUmF3RGF0YURvY3VtZW50
UGFyc2VyLmggKi8sCiAJCQkJODUwMzFCMzUwQTQ0RUZDNzAwRjk5MkUwIC8qIFJlZ2lzdGVyZWRF
dmVudExpc3RlbmVyLmNwcCAqLywKIAkJCQk4NTAzMUIzNjBBNDRFRkM3MDBGOTkyRTAgLyogUmVn
aXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCAqLywKIAkJCQkwOEE0ODQ3NTBFNTI3MkM1MDBDM0ZFNzYg
LyogU2NyaXB0RWxlbWVudC5jcHAgKi8sCkBAIC0xNjg3Nyw3ICsxNjg4MSw2IEBACiAJCQkJNTRD
NTBGN0EwRTgwMURGMzAwOTgzMkEwIC8qIFhNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgKi8s
CiAJCQkJNUQxNUUzQTkwRjlFNkFDMTAwOUUwRTNGIC8qIFhNTERvY3VtZW50UGFyc2VyU2NvcGUu
Y3BwICovLAogCQkJCTVEMTVFM0FBMEY5RTZBQzEwMDlFMEUzRiAvKiBYTUxEb2N1bWVudFBhcnNl
clNjb3BlLmggKi8sCi0JCQkJQTg1MzEyM0MxMUQwNDcxQjAwRDREMDc3IC8qIEZyYWdtZW50U2Ny
aXB0aW5nUGVybWlzc2lvbi5oICovLAogCQkJKTsKIAkJCXBhdGggPSBkb207CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtMjE4NTcsNiArMjE4NjAsNyBAQAogCQkJCUI1MjVBOTY2MTFD
QTIzNDAwMDNBMjNBOCAvKiBKU1NRTEV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
OEU2QTc4MjExRDE2NjFCMDAzMTFGNEEgLyogSFRNTFBhcnNlclNjaGVkdWxlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDRUEzOTQ5QzExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5v
ZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE4QzIyODBFMTFENEE1OTcwMEQ1QTdEMyAv
KiBEb2N1bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZG9tL0RvY3VtZW50UGFyc2VyLmNwcCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41Mjc3NDE2YTJlNWRiODc1NTJlYTI4YjI2MGM4NWI0YjFkYTUwZTcwCi0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0wLDAgKzEs
NjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEb2N1bWVudFBhcnNlci5oIgorCisjaW5jbHVk
ZSAiRG9jdW1lbnRXcml0ZXIuaCIKKyNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKKyNpbmNs
dWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCisKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0RvY3VtZW50UGFyc2VyOjpEb2N1bWVudFBhcnNl
cihEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgdmlld1NvdXJjZU1vZGUpCisgICAgOiBtX3BhcnNl
clN0b3BwZWQoZmFsc2UpCisgICAgLCBtX2luVmlld1NvdXJjZU1vZGUodmlld1NvdXJjZU1vZGUp
CisgICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgICwgbV9YU1NBdWRpdG9yKDApCit7Cisg
ICAgQVNTRVJUKGRvY3VtZW50KTsKK30KKwordm9pZCBEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0
ZXMoRG9jdW1lbnRXcml0ZXIqIHdyaXRlciAsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgs
IGJvb2wgc2hvdWxkRmx1c2gpCit7CisgICAgaWYgKCFsZW5ndGggJiYgIXNob3VsZEZsdXNoKQor
ICAgICAgICByZXR1cm47CisKKyAgICBUZXh0UmVzb3VyY2VEZWNvZGVyKiBkZWNvZGVyID0gd3Jp
dGVyLT5jcmVhdGVEZWNvZGVySWZOZWVkZWQoKTsKKyAgICBTdHJpbmcgZGVjb2RlZCA9IGRlY29k
ZXItPmRlY29kZShkYXRhLCBsZW5ndGgpOworICAgIGlmIChzaG91bGRGbHVzaCkKKyAgICAgICAg
ZGVjb2RlZCArPSBkZWNvZGVyLT5mbHVzaCgpOworICAgIGlmIChkZWNvZGVkLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgd3JpdGVyLT5yZXBvcnREYXRhUmVjaWV2ZWQoKTsKKwor
ICAgIGFwcGVuZChkZWNvZGVkKTsKK30KKworfTsKKwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
RG9jdW1lbnRQYXJzZXIuaCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmgKaW5kZXggMmI5
MGVmOGFkZThkYzc4NDRkZTc0ZTkyOGIwNjM0Yjg5N2Y3YmZhOC4uNDc4OWFiYWRmOWJjNzc2NGYz
NDRjMWUzZGFjODY4ZTg3MGIxYzk3NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnRQ
YXJzZXIuaAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oCkBAIC0yNCwxMSArMjQs
MTIgQEAKICNpZm5kZWYgRG9jdW1lbnRQYXJzZXJfaAogI2RlZmluZSBEb2N1bWVudFBhcnNlcl9o
CiAKLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OworY2xhc3MgRG9j
dW1lbnRXcml0ZXI7CiBjbGFzcyBMZWdhY3lIVE1MVHJlZUJ1aWxkZXI7CiBjbGFzcyBMZWdhY3lI
VE1MRG9jdW1lbnRQYXJzZXI7CiBjbGFzcyBTZWdtZW50ZWRTdHJpbmc7CkBAIC0zOCwxMyArMzks
MTggQEAgY2xhc3MgRG9jdW1lbnRQYXJzZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGlj
OgogICAgIHZpcnR1YWwgfkRvY3VtZW50UGFyc2VyKCkgeyB9CiAKLSAgICAvLyBpbnNlcnQgaXMg
dXNlIGJ5IGRvY3VtZW50LndyaXRlCisgICAgLy8gaW5zZXJ0IGlzIHVzZWQgYnkgZG9jdW1lbnQu
d3JpdGUKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYpID0g
MDsKLSAgICAvLyBhcGVuZCBpcyB1c2VkIGJ5IERvY3VtZW50V3JpdGVyICh0aGUgbG9hZGVyKQor
ICAgIC8vIGFwcGVuZEJ5dGVzIGlzIHVzZWQgYnkgRG9jdW1lbnRXcml0ZXIgKHRoZSBsb2FkZXIp
CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyKiwgY29uc3QgY2hh
ciogYnl0ZXMsIGludCBsZW5ndGgsIGJvb2wgZmx1c2gpOworCisgICAgLy8gRklYTUU6IGFwcGVu
ZCgpIHNob3VsZCBiZSBwcml2YXRlLCBidXQgRG9jdW1lbnRXcml0ZXI6OnJlcGxhY2VEb2N1bWVu
dAorICAgIC8vIHVzZXMgaXQgZm9yIG5vdy4KICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKGNvbnN0
IFNlZ21lbnRlZFN0cmluZyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2goKSA9IDA7
CiAgICAgdmlydHVhbCBib29sIGZpbmlzaFdhc0NhbGxlZCgpID0gMDsKKwogICAgIHZpcnR1YWwg
Ym9vbCBpc1dhaXRpbmdGb3JTY3JpcHRzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBp
c0V4ZWN1dGluZ1NjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKQEAgLTU0LDEzICs2
MCw2IEBAIHB1YmxpYzoKICAgICAvLyBhY3R1YWxseSBpbXBsZW1lbnRzIGl0LgogICAgIHZpcnR1
YWwgYm9vbCBwcm9jZXNzaW5nRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2
aXJ0dWFsIGJvb2wgd2FudHNSYXdEYXRhKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgd3JpdGVSYXdEYXRhKGNvbnN0IGNoYXIqIC8qZGF0YSovLCBpbnQgLypsZW5n
dGgqLykKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotCiAgICAgdmlydHVhbCBib29sIHdlbGxGb3JtZWQoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIGludCBsaW5lTnVtYmVyKCkgY29uc3QgeyBy
ZXR1cm4gLTE7IH0KQEAgLTgyLDE0ICs4MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFhTU0F1
ZGl0b3IoWFNTQXVkaXRvciogYXVkaXRvcikgeyBtX1hTU0F1ZGl0b3IgPSBhdWRpdG9yOyB9CiAK
IHByb3RlY3RlZDoKLSAgICBEb2N1bWVudFBhcnNlcihEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wg
dmlld1NvdXJjZU1vZGUgPSBmYWxzZSkKLSAgICAgICAgOiBtX3BhcnNlclN0b3BwZWQoZmFsc2Up
Ci0gICAgICAgICwgbV9pblZpZXdTb3VyY2VNb2RlKHZpZXdTb3VyY2VNb2RlKQotICAgICAgICAs
IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAgICAgICwgbV9YU1NBdWRpdG9yKDApCi0gICAgewot
ICAgICAgICBBU1NFUlQoZG9jdW1lbnQpOwotICAgIH0KKyAgICBEb2N1bWVudFBhcnNlcihEb2N1
bWVudCosIGJvb2wgdmlld1NvdXJjZU1vZGUgPSBmYWxzZSk7CiAKICAgICAvLyBUaGUgcGFyc2Vy
IGhhcyBidWZmZXJzLCBzbyBwYXJzaW5nIG1heSBjb250aW51ZSBldmVuIGFmdGVyCiAgICAgLy8g
aXQgc3RvcHMgcmVjZWl2aW5nIGRhdGEuIFdlIHVzZSBtX3BhcnNlclN0b3BwZWQgdG8gc3RvcCB0
aGUgcGFyc2VyCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9SYXdEYXRhRG9jdW1lbnRQYXJzZXIu
aCBiL1dlYkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oCmluZGV4IGYzYzA3Mzk1Zjdl
YzJlZTc0MGE0OWIxM2IxNDU5MTIzY2QyMzA3ZWYuLjlmYzkwZjUxMWRkODBjZDczNTQwOWQwMjcw
ZGI0N2VkNjhhMWZmMmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBh
cnNlci5oCisrKyBiL1dlYkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oCkBAIC0zMCwx
MiArMzAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEZJWE1FOiBJdCBzZWVtcyB3
cm9uZyB0aGF0IFJhd0RhdGFEb2N1bWVudFBhcnNlciBpcyBhIHN1YmNsYXNzIG9mCi0vLyBEb2N1
bWVudFBhcnNlci4gIFJhd0RhdGFEb2N1bWVudFBhcnNlciwganVzdCB3YW50cyB0byBvdmVycmlk
ZSBhbiBlYXJsaWVyCi0vLyB2ZXJzaW9uIG9mIHdyaXRlKCkgYmVmb3JlIHRoZSBkYXRhIGlzIGRl
Y29kZWQuICBTZWVtcyB0aGUgZGVjb2RpbmcgY291bGQKLS8vIG1vdmUgaW50byB0aGUgYmFzZS1j
bGFzcyBEb2N1bWVudFBhcnNlciwgYW5kIHRoZW4gUmF3RGF0YURvY3VtZW50UGFyc2VyCi0vLyB3
b3VsZCBqdXN0IGJlIHNob3J0LWNpcmN1dGluZy4gIFRoYXQgY291bGQgc2ltcGxpZnkgc29tZSBv
ZiB0aGUKLS8vIERvY3VtZW50V3JpdGVyIGxvZ2ljLgogY2xhc3MgUmF3RGF0YURvY3VtZW50UGFy
c2VyIDogcHVibGljIERvY3VtZW50UGFyc2VyIHsKIHB1YmxpYzoKICAgICBSYXdEYXRhRG9jdW1l
bnRQYXJzZXIoRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNzAsOSArNjQsNiBAQCBwcml2YXRlOgog
ICAgIH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc1dhaXRpbmdGb3JTY3JpcHRzKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1YWwgYm9vbCB3YW50c1Jhd0RhdGEoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIHdyaXRlUmF3RGF0YShjb25zdCBjaGFy
KiwgaW50KSB7IHJldHVybiBmYWxzZTsgfQogfTsKIAogfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVy
LmNwcAppbmRleCAyMGRjOTE5OTZiZjk5ODgxOGRkNTQ1ZGRiZjgxZjQ1ZTI4YTE3MTQxLi5hMjBl
Y2VkNzIwNDJmNjgzNWZiOTVhZjE1Yjg3MTEzYjg3ZTk5Y2M4IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRX
cml0ZXIuY3BwCkBAIC03Myw4ICs3Myw4IEBAIHZvaWQgRG9jdW1lbnRXcml0ZXI6OnJlcGxhY2VE
b2N1bWVudChjb25zdCBTdHJpbmcmIHNvdXJjZSkKICAgICAgICAgICAgIG1fZnJhbWUtPmRvY3Vt
ZW50KCktPnNldFBhcnNlTW9kZShEb2N1bWVudDo6U3RyaWN0KTsKICAgICAgICAgfQogCi0gICAg
ICAgIC8vIEZJWE1FOiBJZiB3ZSB3YW50ZWQgdG8gc3VwcG9ydCB0aGUgPGltZyBzcmM9J2phdmFz
Y3JpcHQ6J2ltYWdlZGF0YSc+Ci0gICAgICAgIC8vIGNhc2UgdGhlbiB3ZSB3b3VsZCBuZWVkIHRv
IGNhbGwgYWRkRGF0YShjaGFyKiwgaW50KSBpbnN0ZWFkLgorICAgICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgY2FsbCBEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMgaW5zdGVhZCBvZiBhcHBl
bmQKKyAgICAgICAgLy8gdG8gc3VwcG9ydCBSYXdEYXRhRG9jdW1lbnRQYXJzZXJzLgogICAgICAg
ICBpZiAoRG9jdW1lbnRQYXJzZXIqIHBhcnNlciA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnBhcnNl
cigpKQogICAgICAgICAgICAgcGFyc2VyLT5hcHBlbmQoc291cmNlKTsKICAgICB9CkBAIC0xNDMs
MjEgKzE0Myw4IEBAIHZvaWQgRG9jdW1lbnRXcml0ZXI6OmJlZ2luKGNvbnN0IEtVUkwmIHVybCwg
Ym9vbCBkaXNwYXRjaCwgU2VjdXJpdHlPcmlnaW4qIG9yaWdpCiAgICAgICAgIG1fZnJhbWUtPnZp
ZXcoKS0+c2V0Q29udGVudHNTaXplKEludFNpemUoKSk7CiB9CiAKLXZvaWQgRG9jdW1lbnRXcml0
ZXI6OmFkZERhdGEoY29uc3QgY2hhciogc3RyLCBpbnQgbGVuLCBib29sIGZsdXNoKQorVGV4dFJl
c291cmNlRGVjb2RlciogRG9jdW1lbnRXcml0ZXI6OmNyZWF0ZURlY29kZXJJZk5lZWRlZCgpCiB7
Ci0gICAgaWYgKGxlbiA9PSAwICYmICFmbHVzaCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYg
KGxlbiA9PSAtMSkKLSAgICAgICAgbGVuID0gc3RybGVuKHN0cik7Ci0KLSAgICBEb2N1bWVudFBh
cnNlciogcGFyc2VyID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2VyKCk7Ci0gICAgaWYgKHBh
cnNlciAmJiBwYXJzZXItPndhbnRzUmF3RGF0YSgpKSB7Ci0gICAgICAgIGlmIChsZW4gPiAwKQot
ICAgICAgICAgICAgcGFyc2VyLT53cml0ZVJhd0RhdGEoc3RyLCBsZW4pOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIAogICAgIGlmICghbV9kZWNvZGVyKSB7CiAgICAgICAgIGlmIChTZXR0
aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5zZXR0aW5ncygpKSB7CiAgICAgICAgICAgICBtX2Rl
Y29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUobV9taW1lVHlwZSwKQEAgLTE4Nywy
NCArMTc0LDI4IEBAIHZvaWQgRG9jdW1lbnRXcml0ZXI6OmFkZERhdGEoY29uc3QgY2hhciogc3Ry
LCBpbnQgbGVuLCBib29sIGZsdXNoKQogICAgICAgICB9CiAgICAgICAgIG1fZnJhbWUtPmRvY3Vt
ZW50KCktPnNldERlY29kZXIobV9kZWNvZGVyLmdldCgpKTsKICAgICB9CisgICAgcmV0dXJuIG1f
ZGVjb2Rlci5nZXQoKTsKK30KIAotICAgIFN0cmluZyBkZWNvZGVkID0gbV9kZWNvZGVyLT5kZWNv
ZGUoc3RyLCBsZW4pOwotICAgIGlmIChmbHVzaCkKLSAgICAgICAgZGVjb2RlZCArPSBtX2RlY29k
ZXItPmZsdXNoKCk7Ci0gICAgaWYgKGRlY29kZWQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47
Ci0KK3ZvaWQgRG9jdW1lbnRXcml0ZXI6OnJlcG9ydERhdGFSZWNpZXZlZCgpCit7CisgICAgQVNT
RVJUKG1fZGVjb2Rlcik7CiAgICAgaWYgKCFtX3JlY2VpdmVkRGF0YSkgewogICAgICAgICBtX3Jl
Y2VpdmVkRGF0YSA9IHRydWU7CiAgICAgICAgIGlmIChtX2RlY29kZXItPmVuY29kaW5nKCkudXNl
c1Zpc3VhbE9yZGVyaW5nKCkpCiAgICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZXRW
aXN1YWxseU9yZGVyZWQoKTsKICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cmVjYWxjU3R5
bGUoTm9kZTo6Rm9yY2UpOwogICAgIH0KK30KIAotICAgIGlmIChwYXJzZXIpIHsKLSAgICAgICAg
QVNTRVJUKCFwYXJzZXItPndhbnRzUmF3RGF0YSgpKTsKLSAgICAgICAgcGFyc2VyLT5hcHBlbmQo
ZGVjb2RlZCk7Ci0gICAgfQordm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0YShjb25zdCBjaGFy
KiBzdHIsIGludCBsZW4sIGJvb2wgZmx1c2gpCit7CisgICAgaWYgKGxlbiA9PSAtMSkKKyAgICAg
ICAgbGVuID0gc3RybGVuKHN0cik7CisKKyAgICBEb2N1bWVudFBhcnNlciogcGFyc2VyID0gbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2VyKCk7CisgICAgaWYgKHBhcnNlcikKKyAgICAgICAgcGFy
c2VyLT5hcHBlbmRCeXRlcyh0aGlzLCBzdHIsIGxlbiwgZmx1c2gpOwogfQogCiB2b2lkIERvY3Vt
ZW50V3JpdGVyOjplbmQoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0
ZXIuaCBiL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKaW5kZXggNjY0NDA5MzcyOTBl
M2MxZTIzYTZjNmNjYjUyZTM3NTM1MjM5ZTJlYy4uYjEwMDdlZjdjNzgyN2U1MzBhOGM3NTM1Njc0
ZGVjMzM1NjI2M2U4OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIu
aAorKysgYi9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCkBAIC02Nyw2ICs2NywxMCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldERlY29kZXIoVGV4dFJlc291cmNlRGVjb2RlciopOwog
CisgICAgLy8gRXhwb3NlZCBmb3IgRG91Y21lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzCisgICAgVGV4
dFJlc291cmNlRGVjb2RlciogY3JlYXRlRGVjb2RlcklmTmVlZGVkKCk7CisgICAgdm9pZCByZXBv
cnREYXRhUmVjaWV2ZWQoKTsKKwogcHJpdmF0ZToKICAgICBQYXNzUmVmUHRyPERvY3VtZW50PiBj
cmVhdGVEb2N1bWVudChjb25zdCBLVVJMJik7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVy
L0ltYWdlRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHAKaW5k
ZXggNDlmNTRlMmZiODNiNTQ0NTE0YmFiNDBmNjE0YTBjOGNiNjMyOTIzYy4uYjFlMzNmNGVlZDY3
NWMxYzA4YzVmNDgxNjMxY2RlZDIxNjQwMDI2NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIv
SW1hZ2VEb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHAK
QEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFs
IGJvb2wgd3JpdGVSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW4pOworICAgIHZpcnR1
YWwgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciosIGNvbnN0IGNoYXIqLCBpbnQsIGJv
b2wpOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2goKTsKIH07CiAKQEAgLTExOCwxOSArMTE4LDE3
IEBAIHN0YXRpYyBmbG9hdCBwYWdlWm9vbUZhY3RvcihEb2N1bWVudCogZG9jdW1lbnQpCiAgICAg
cmV0dXJuIHZpZXcgPyB2aWV3LT5wYWdlWm9vbUZhY3RvcigpIDogMTsKIH0KIAotYm9vbCBJbWFn
ZURvY3VtZW50UGFyc2VyOjp3cml0ZVJhd0RhdGEoY29uc3QgY2hhciosIGludCkKK3ZvaWQgSW1h
Z2VEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXIqLCBjb25zdCBjaGFy
KiwgaW50LCBib29sKQogewogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7
CiAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZnJhbWUtPnNldHRpbmdzKCk7CiAgICAgaWYgKCFm
cmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5hbGxvd0ltYWdlcyghc2V0dGluZ3MgfHwgc2V0dGlu
Z3MtPmFyZUltYWdlc0VuYWJsZWQoKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuOwogCiAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZG9jdW1lbnQoKS0+Y2Fj
aGVkSW1hZ2UoKTsKICAgICBjYWNoZWRJbWFnZS0+ZGF0YShmcmFtZS0+bG9hZGVyKCktPmRvY3Vt
ZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKSwgZmFsc2UpOwogCiAgICAgZG9jdW1lbnQo
KS0+aW1hZ2VDaGFuZ2VkKCk7Ci0gICAgCi0gICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIElt
YWdlRG9jdW1lbnRQYXJzZXI6OmZpbmlzaCgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9N
ZWRpYURvY3VtZW50LmNwcCBiL1dlYkNvcmUvbG9hZGVyL01lZGlhRG9jdW1lbnQuY3BwCmluZGV4
IDk3Y2E3ODM5ZDYyZDA1N2RlNjc3N2MxZDJhMTkxNTZlMGI3YmRiMmQuLjk3ZTE3NzUxZmViZDU2
NDM5YzZjOTFmMDVjNzc2NzFmODQ4YzkyMDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL01l
ZGlhRG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL01lZGlhRG9jdW1lbnQuY3BwCkBA
IC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBi
b29sIHdyaXRlUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKTsKKyAgICB2aXJ0dWFs
IHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXIqLCBjb25zdCBjaGFyKiwgaW50LCBib29s
KTsKIAogICAgIHZvaWQgY3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKTsKIApAQCAtOTAsMTYgKzkw
LDE1IEBAIHZvaWQgTWVkaWFEb2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUo
KQogCiAgICAgZnJhbWUtPmxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5tYWluUmVz
b3VyY2VMb2FkZXIoKS0+c2V0U2hvdWxkQnVmZmVyRGF0YShmYWxzZSk7CiB9Ci0gICAgCi1ib29s
IE1lZGlhRG9jdW1lbnRQYXJzZXI6OndyaXRlUmF3RGF0YShjb25zdCBjaGFyKiwgaW50KQorCit2
b2lkIE1lZGlhRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyKiwgY29u
c3QgY2hhciosIGludCwgYm9vbCkKIHsKICAgICBBU1NFUlQoIW1fbWVkaWFFbGVtZW50KTsKICAg
ICBpZiAobV9tZWRpYUVsZW1lbnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCisg
ICAgICAgIHJldHVybjsKKwogICAgIGNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCk7CiAgICAgZmlu
aXNoKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwogfQogICAgIAogTWVkaWFEb2N1bWVudDo6TWVkaWFE
b2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvbG9hZGVyL1BsdWdpbkRvY3VtZW50LmNwcCBiL1dlYkNvcmUvbG9hZGVyL1BsdWdpbkRvY3Vt
ZW50LmNwcAppbmRleCAxMmFiNzQ2Y2I4ZDYwMGFmNTg2ZTUzNDhmMTViMWM4MWVkOGQwNjZkLi5j
Y2E2ODk0ODk5ZTlhMGQ4NzhlNGI3OWZmMTA3NDIxOTU1YmQ5NzFkIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2xvYWRlci9QbHVnaW5Eb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvUGx1Z2lu
RG9jdW1lbnQuY3BwCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2lkZ2V0
KiBwbHVnaW5XaWRnZXRGcm9tRG9jdW1lbnQoRG9jdW1lbnQqKTsKIAogcHJpdmF0ZToKLSAgICB2
aXJ0dWFsIGJvb2wgd3JpdGVSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW4pOworICAg
IHZpcnR1YWwgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciosIGNvbnN0IGNoYXIqLCBp
bnQsIGJvb2wpOwogCiAgICAgdm9pZCBjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpOwogCkBAIC05
OCwzMCArOTgsMzAgQEAgdm9pZCBQbHVnaW5Eb2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9jdW1lbnRT
dHJ1Y3R1cmUoKQogICAgIAogICAgIGJvZHktPmFwcGVuZENoaWxkKGVtYmVkRWxlbWVudCwgZWMp
OyAgICAKIH0KLSAgICAKLWJvb2wgUGx1Z2luRG9jdW1lbnRQYXJzZXI6OndyaXRlUmF3RGF0YShj
b25zdCBjaGFyKiwgaW50KQorCit2b2lkIFBsdWdpbkRvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRl
cyhEb2N1bWVudFdyaXRlciosIGNvbnN0IGNoYXIqLCBpbnQsIGJvb2wpCiB7CiAgICAgQVNTRVJU
KCFtX2VtYmVkRWxlbWVudCk7CiAgICAgaWYgKG1fZW1iZWRFbGVtZW50KQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgCisgICAgICAgIHJldHVybjsKKwogICAgIGNyZWF0ZURvY3VtZW50U3Ry
dWN0dXJlKCk7CiAKLSAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkg
ewotICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBmcmFtZS0+c2V0dGluZ3MoKTsKLSAgICAg
ICAgaWYgKHNldHRpbmdzICYmIGZyYW1lLT5sb2FkZXIoKS0+c3ViZnJhbWVMb2FkZXIoKS0+YWxs
b3dQbHVnaW5zKE5vdEFib3V0VG9JbnN0YW50aWF0ZVBsdWdpbikpIHsKLSAgICAgICAgICAgIGRv
Y3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCkt
PmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIFNldHRpbmdz
KiBzZXR0aW5ncyA9IGZyYW1lLT5zZXR0aW5ncygpOworICAgIGlmICghc2V0dGluZ3MgfHwgIWZy
YW1lLT5sb2FkZXIoKS0+c3ViZnJhbWVMb2FkZXIoKS0+YWxsb3dQbHVnaW5zKE5vdEFib3V0VG9J
bnN0YW50aWF0ZVBsdWdpbikpCisgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgaWYgKFJl
bmRlcldpZGdldCogcmVuZGVyZXIgPSB0b1JlbmRlcldpZGdldChtX2VtYmVkRWxlbWVudC0+cmVu
ZGVyZXIoKSkpIHsKLSAgICAgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5y
ZWRpcmVjdERhdGFUb1BsdWdpbihyZW5kZXJlci0+d2lkZ2V0KCkpOwotICAgICAgICAgICAgICAg
IGZyYW1lLT5sb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlTG9h
ZGVyKCktPnNldFNob3VsZEJ1ZmZlckRhdGEoZmFsc2UpOwotICAgICAgICAgICAgfQorICAgIGRv
Y3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwogCi0gICAgICAgICAgICBmaW5pc2goKTsKLSAgICAg
ICAgfQorICAgIGlmIChSZW5kZXJXaWRnZXQqIHJlbmRlcmVyID0gdG9SZW5kZXJXaWRnZXQobV9l
bWJlZEVsZW1lbnQtPnJlbmRlcmVyKCkpKSB7CisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xp
ZW50KCktPnJlZGlyZWN0RGF0YVRvUGx1Z2luKHJlbmRlcmVyLT53aWRnZXQoKSk7CisgICAgICAg
IGZyYW1lLT5sb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlTG9h
ZGVyKCktPnNldFNob3VsZEJ1ZmZlckRhdGEoZmFsc2UpOwogICAgIH0KIAotICAgIHJldHVybiBm
YWxzZTsKKyAgICBmaW5pc2goKTsKIH0KIAogUGx1Z2luRG9jdW1lbnQ6OlBsdWdpbkRvY3VtZW50
KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2Fk
ZXIvU2lua0RvY3VtZW50LmNwcCBiL1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5jcHAKaW5k
ZXggZTE0OTk4MTVkZGJlYWRhNzU0NWIwNjQ4Yzk5Mjg3NDYzMTVjYzBmMC4uZmIwYWI5NGU3NjQw
YjY4MjY3MzkzMDViMGNlYjdhMzNmNDVmZDA3MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIv
U2lua0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuY3BwCkBA
IC0zMCw2ICszMCwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNpbmtEb2N1
bWVudFBhcnNlciA6IHB1YmxpYyBSYXdEYXRhRG9jdW1lbnRQYXJzZXIgeworcHVibGljOgorICAg
IFNpbmtEb2N1bWVudFBhcnNlcihTaW5rRG9jdW1lbnQqIGRvY3VtZW50KQorICAgICAgICA6IFJh
d0RhdGFEb2N1bWVudFBhcnNlcihkb2N1bWVudCkKKyAgICB7CisgICAgfQorCitwcml2YXRlOgor
ICAgIC8vIElnbm9yZSBhbGwgZGF0YS4KKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kQnl0ZXMoRG9j
dW1lbnRXcml0ZXIqLCBjb25zdCBjaGFyKiwgaW50LCBib29sKSB7IH0KK307CisKIFNpbmtEb2N1
bWVudDo6U2lua0RvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQogICAgIDog
SFRNTERvY3VtZW50KGZyYW1lLCB1cmwpCiB7CkBAIC0zOCw5ICs1MCw3IEBAIFNpbmtEb2N1bWVu
dDo6U2lua0RvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQogCiBEb2N1bWVu
dFBhcnNlciogU2lua0RvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQogewotICAgIC8vIFRoZSBiYXNp
YyBSYXdEYXRhRG9jdW1lbnRQYXJzZXIgZG9lcyBub3RoaW5nIHdpdGggdGhlIGRhdGEKLSAgICAv
LyB3aGljaCBpcyBzdWZmaWNpZW50IGZvciBvdXIgcHVycG9zZXMgaGVyZS4KLSAgICByZXR1cm4g
bmV3IFJhd0RhdGFEb2N1bWVudFBhcnNlcih0aGlzKTsKKyAgICByZXR1cm4gbmV3IFNpbmtEb2N1
bWVudFBhcnNlcih0aGlzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="46887"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="46888"
          type_id="3"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>