<?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>102721</bug_id>
          
          <creation_ts>2012-11-19 15:18:52 -0800</creation_ts>
          <short_desc>[chromium] Make lazy image decoding thread-safe</short_desc>
          <delta_ts>2012-11-20 14:27:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Images</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>99790</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hin-Chung Lam">hclam</reporter>
          <assigned_to name="Hin-Chung Lam">hclam</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>levin+threading</cc>
    
    <cc>nduca</cc>
    
    <cc>qinmin</cc>
    
    <cc>reed</cc>
    
    <cc>senorblanco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>771087</commentid>
    <comment_count>0</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2012-11-19 15:18:52 -0800</bug_when>
    <thetext>After image decoding operation is recorded make sure decode and playback and happen safely on impl thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771101</commentid>
    <comment_count>1</comment_count>
      <attachid>175054</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2012-11-19 15:34:47 -0800</bug_when>
    <thetext>Created attachment 175054
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771104</commentid>
    <comment_count>2</comment_count>
      <attachid>175055</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2012-11-19 15:35:25 -0800</bug_when>
    <thetext>Created attachment 175055
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771357</commentid>
    <comment_count>3</comment_count>
      <attachid>175108</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2012-11-19 18:32:17 -0800</bug_when>
    <thetext>Created attachment 175108
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772124</commentid>
    <comment_count>4</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2012-11-20 13:40:00 -0800</bug_when>
    <thetext>nduca@, senorblanco@: any comments on this? I want to have this thread safety so I can work backwards to implement the thread safe caching backend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772148</commentid>
    <comment_count>5</comment_count>
      <attachid>175108</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-11-20 13:58:19 -0800</bug_when>
    <thetext>Comment on attachment 175108
Patch

OK.  r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772151</commentid>
    <comment_count>6</comment_count>
      <attachid>175108</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-11-20 14:04:07 -0800</bug_when>
    <thetext>Comment on attachment 175108
Patch

Omnomnom lgtm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772177</commentid>
    <comment_count>7</comment_count>
      <attachid>175108</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-20 14:27:48 -0800</bug_when>
    <thetext>Comment on attachment 175108
Patch

Clearing flags on attachment: 175108

Committed r135313: &lt;http://trac.webkit.org/changeset/135313&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772178</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-20 14:27:51 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175054</attachid>
            <date>2012-11-19 15:34:47 -0800</date>
            <delta_ts>2012-11-19 15:35:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102721-20121119153237.patch</filename>
            <type>text/plain</type>
            <size>26300</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTdjY2RkNmYwMmI5ZTA0
NjJkMTQ1ZGNkZjUzZjEzN2U5ZmIwOWYwZi4uNDg0NGE4ZDllZDEyNTkxZDBjMjA2MzUxNzJhMjhl
ZDkyODhhZDhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEyLTExLTE5ICBBbHBo
YSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBNYWtlIGxh
enkgaW1hZ2UgZGVjb2RpbmcgdGhyZWFkLXNhZmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjcyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG11dGV4IHRvIExhenlEZWNvZGluZ1BpeGVsUmVm
IHN1Y2ggdGhhdCB0aGVyZSBpcyBubyBwYXJhbGxlbAorICAgICAgICBvbkxvY2tQaXhlbHMoKSBy
dW5uaW5nIG9uIG11bHRpcGxlIHRocmVhZHMuCisKKyAgICAgICAgQWRkZWQgbXV0ZXggdG8gSW1h
Z2VGcmFtZUdlbmVyYXRvciB0byBwcm90ZWN0IHRoZSB1c2Ugb2YgcmF3IGltYWdlCisgICAgICAg
IGRhdGEuCisKKyAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGF0IHdlIGNhbiBkZWNvZGUgb24gdGhy
ZWFkcyBvdGhlciB0aGFuIHRoZSBtYWluCisgICAgICAgIHRocmVhZCB3aGlsZSBkYXRhIGlzIGJl
aW5nIHN1cHBsaWVkIG9uIHRoZSBtYWluIHRocmVhZC4KKworICAgICAgICBOZXcgdW5pdCB0ZXN0
OgorICAgICAgICBEZWZlcnJlZEltYWdlRGVjb2RlclRlc3QuZGVjb2RlT25PdGhlclRocmVhZAor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVyYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lR2VuZXJhdG9yOjpzZXREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVHZW5lcmF0b3I6OmRlY29kZUFuZFNjYWxlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUZyYW1lR2VuZXJhdG9y
Lmg6CisgICAgICAgIChJbWFnZUZyYW1lR2VuZXJhdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXp5RGVjb2RpbmdQaXhlbFJlZi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXp5RGVjb2RpbmdQaXhlbFJlZjo6b25Mb2NrUGl4ZWxzKToKKyAgICAgICAgKFdlYkNv
cmU6OkxhenlEZWNvZGluZ1BpeGVsUmVmOjpvblVubG9ja1BpeGVscyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF6eURlY29kaW5nUGl4ZWxSZWYuaDoKKyAgICAgICAg
KExhenlEZWNvZGluZ1BpeGVsUmVmKToKKworMjAxMi0xMS0xOSAgQWxwaGEgTGFtICA8aGNsYW1A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTGF6eSBpbWFnZSBkZWNvZGluZyB3
aXRob3V0IGNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDIwMjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBHb2FsIG9mIHRoaXMgY2hhbmdlIGlzIHRvIG1ha2UgaW1hZ2UgZGVjb2RpbmcgaW4gSW1h
Z2VGcmFtZUdlbmVyYXRvcgorICAgICAgICBjb21wbGV0ZWx5IGxhenkgd2l0aG91dCBjYWNoaW5n
LiBJbWFnZSBkZWNvZGluZyBsb2dpYyBpcyB0aGVuIHJlbW92ZWQKKyAgICAgICAgZnJvbSBJbWFn
ZURlY29kaW5nU3RvcmUuCisKKyAgICAgICAgVGhlc2UgbWV0aG9kcyBhcmUgcmVtb3ZlZC4KKyAg
ICAgICAgLSBJbWFnZURlY29kaW5nU3RvcmU6OmxvY2tQaXhlbHMKKyAgICAgICAgLSBJbWFnZURl
Y29kaW5nU3RvcmU6OnVubG9ja1BpeGVscworCisgICAgICAgIEluc3RlYWQgaW1hZ2UgZGVjb2Rp
bmcgYW5kIHNjYWxpbmcgaXMgZG9uZSBpbgorICAgICAgICBJbWFnZUZyYW1lR2VuZXJhdG9yOjpk
ZWNvZGVBbmRTY2FsZSgpLgorCisgICAgICAgIFVuaXQgdGVzdHMgYXJlIHVwZGF0ZWQ6CisgICAg
ICAgIERlZmVycmVkSW1hZ2VEZWNvZGVyVGVzdDo6ZHJhd0ludG9Ta1BpY3R1cmUKKyAgICAgICAg
RGVmZXJyZWRJbWFnZURlY29kZXJUZXN0OjpkcmF3U2NhbGVkSW50b1NrUGljdHVyZQorCisgICAg
ICAgIEFsc28gY292ZXJlZCBieSBsYXlvdXQgdGVzdHM6CisgICAgICAgIHBsYXRmb3JtL2Nocm9t
aXVtL3ZpcnR1YWwvZGVmZXJyZWQKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0RlZmVycmVkSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVk
SW1hZ2VEZWNvZGVyOjpjcmVhdGVMYXp5RGVjb2RpbmdCaXRtYXApOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlRGVjb2RpbmdTdG9yZS5oOgorICAgICAgICAoSW1h
Z2VEZWNvZGluZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9J
bWFnZUZyYW1lR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVHZW5l
cmF0b3I6OkltYWdlRnJhbWVHZW5lcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFt
ZUdlbmVyYXRvcjo6fkltYWdlRnJhbWVHZW5lcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZUdlbmVyYXRvcjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1l
R2VuZXJhdG9yOjpkZWNvZGVBbmRTY2FsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VG
cmFtZUdlbmVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKEltYWdlRnJhbWVHZW5lcmF0b3IpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xhenlEZWNvZGluZ1BpeGVsUmVm
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxhenlEZWNvZGluZ1BpeGVsUmVmOjpvbkxvY2tQaXhl
bHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF6eURlY29kaW5nUGl4ZWxSZWY6Om9uVW5sb2NrUGl4
ZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXp5RGVjb2RpbmdQ
aXhlbFJlZi5oOgorICAgICAgICAoTGF6eURlY29kaW5nUGl4ZWxSZWYpOgorCiAyMDEyLTExLTE5
ICBBbGVjIEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVk
REI6IHNpbXBsaWZ5IFJlY29yZElkZW50aWZpZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggOWY2M2Y0Njc0MDYzZTQ0M2E1ZjMzYzZiM2NmOTVjYzY0YmFiZmJkNS4uNjIwMDM0MzI2NzA2
MWE0YzhlYzExNjgzMWQ1ODhiZTg1MDEzMjI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0NCBAQAorMjAxMi0xMS0xOSAgQWxwaGEgTGFtICA8aGNsYW1AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFrZSBsYXp5IGltYWdlIGRlY29kaW5nIHRocmVh
ZC1zYWZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDI3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRlZCBhIG5ldyB1bml0IHRlc3QgdG8gdmVyaWZ5IHRoYXQgbGF6eSBpbWFnZSBkZWNvZGluZyBv
cGVyYXRlcworICAgICAgICBjb3JyZWN0bHkgb24gbm9uLW1haW4gdGhyZWFkcy4KKworICAgICAg
ICAqIHRlc3RzL0RlZmVycmVkSW1hZ2VEZWNvZGVyVGVzdC5jcHA6CisgICAgICAgIChSYXN0ZXJp
emVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cmFzdGVyaXplTWFp
bik6CisgICAgICAgIChXZWJDb3JlOjpURVNUX0YpOgorCisyMDEyLTExLTE5ICBBbHBoYSBMYW0g
IDxoY2xhbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBMYXp5IGltYWdlIGRl
Y29kaW5nIHdpdGhvdXQgY2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMjAyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVwZGF0ZWQgdHdvIHRlc3QgY2FzZXMgdXNpbmcgcmVhbCBpbWFnZSBkYXRh
LgorCisgICAgICAgIFRoZSB0ZXN0cyBkZW1vbnN0cmF0ZXMgdGhhdCBvcmlnaW5hbCBpbWFnZSBk
ZWNvZGVyIGlzIG5vdCB1c2VkIGFuZAorICAgICAgICBpbWFnZSBpcyBkZWNvZGVkIGxhemlseSB3
aXRoIGNvcnJlY3QgcGl4ZWwgcmVzdWx0cy4KKworICAgICAgICAqIHRlc3RzL0RlZmVycmVkSW1h
Z2VEZWNvZGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRlZmVycmVkSW1hZ2VEZWNvZGVyVGVzdDo6U2V0VXApOgorICAgICAgICAoV2ViQ29yZTo6RGVm
ZXJyZWRJbWFnZURlY29kZXJUZXN0OjpkZWNvZGVyQmVpbmdEZXN0cm95ZWQpOgorICAgICAgICAo
RGVmZXJyZWRJbWFnZURlY29kZXJUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1RfRik6Cisg
ICAgICAgICogdGVzdHMvTW9ja0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAoTW9ja0ltYWdlRGVj
b2RlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tJ
bWFnZURlY29kZXI6Ok1vY2tJbWFnZURlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0lt
YWdlRGVjb2Rlcjo6fk1vY2tJbWFnZURlY29kZXIpOgorICAgICAgICAoTW9ja0ltYWdlRGVjb2Rl
cik6CisKIDIwMTItMTEtMTkgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIEluZGV4ZWREQjogc2ltcGxpZnkgUmVjb3JkSWRlbnRpZmllcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRGVmZXJyZWRJbWFn
ZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
RGVmZXJyZWRJbWFnZURlY29kZXIuY3BwCmluZGV4IDMzZDk0OTYwNGRlZWJkNmQ1NjZmMzhhOGIw
MTE0MTgwMDJiMDZmYmQuLjE0ZGU2OTRlODMzY2FlMDc5MDkwMTkyNzg0ZDgwNDkwYjM0MThhYTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Rl
ZmVycmVkSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9EZWZlcnJlZEltYWdlRGVjb2Rlci5jcHAKQEAgLTc0LDcgKzc0LDYgQEAg
Ym9vbCBEZWZlcnJlZEltYWdlRGVjb2Rlcjo6aXNMYXp5RGVjb2RlZChjb25zdCBTa0JpdG1hcCYg
Yml0bWFwKQogU2tCaXRtYXAgRGVmZXJyZWRJbWFnZURlY29kZXI6OmNyZWF0ZVJlc2l6ZWRMYXp5
RGVjb2RpbmdCaXRtYXAoY29uc3QgU2tCaXRtYXAmIGJpdG1hcCwgY29uc3QgU2tJU2l6ZSYgc2Nh
bGVkU2l6ZSwgY29uc3QgU2tJUmVjdCYgc2NhbGVkU3Vic2V0KQogewogICAgIExhenlEZWNvZGlu
Z1BpeGVsUmVmKiBwaXhlbFJlZiA9IHN0YXRpY19jYXN0PExhenlEZWNvZGluZ1BpeGVsUmVmKj4o
Yml0bWFwLnBpeGVsUmVmKCkpOwotICAgIEFTU0VSVCghcGl4ZWxSZWYtPmlzU2NhbGVkKHBpeGVs
UmVmLT5mcmFtZUdlbmVyYXRvcigpLT5mdWxsU2l6ZSgpKSAmJiAhcGl4ZWxSZWYtPmlzQ2xpcHBl
ZCgpKTsKIAogICAgIGludCByb3dCeXRlcyA9IDA7CiAgICAgcm93Qnl0ZXMgPSBTa0JpdG1hcDo6
Q29tcHV0ZVJvd0J5dGVzKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgc2NhbGVkU2l6ZS53
aWR0aCgpKTsKQEAgLTIwMSw3ICsyMDAsOSBAQCBTa0JpdG1hcCBEZWZlcnJlZEltYWdlRGVjb2Rl
cjo6Y3JlYXRlTGF6eURlY29kaW5nQml0bWFwKCkKICAgICBTa0JpdG1hcCBiaXRtYXA7CiAgICAg
Yml0bWFwLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIGZ1bGxTaXplLndp
ZHRoKCksIGZ1bGxTaXplLmhlaWdodCgpKTsKIAotICAgIG1fZnJhbWVHZW5lcmF0b3IgPSBJbWFn
ZUZyYW1lR2VuZXJhdG9yOjpjcmVhdGUobV9hY3R1YWxEZWNvZGVyLnJlbGVhc2UoKSwgbV9kYXRh
LnJlbGVhc2UoKSwgbV9hbGxEYXRhUmVjZWl2ZWQpOworICAgIG1fZnJhbWVHZW5lcmF0b3IgPSBJ
bWFnZUZyYW1lR2VuZXJhdG9yOjpjcmVhdGUobV9kYXRhLnJlbGVhc2UoKSwgbV9hbGxEYXRhUmVj
ZWl2ZWQpOworICAgIG1fYWN0dWFsRGVjb2Rlci5jbGVhcigpOworCiAgICAgYml0bWFwLnNldFBp
eGVsUmVmKG5ldyBMYXp5RGVjb2RpbmdQaXhlbFJlZihtX2ZyYW1lR2VuZXJhdG9yLCBmdWxsU2l6
ZSwgZnVsbFJlY3QpKS0+dW5yZWYoKTsKIAogICAgIC8vIFVzZSB0aGUgVVJJIHRvIGlkZW50aWZ5
IHRoaXMgYXMgYSBsYXppbHkgZGVjb2RlZCBTa1BpeGVsUmVmIG9mIHR5cGUgTGF6eURlY29kaW5n
UGl4ZWxSZWYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9JbWFnZURlY29kaW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VEZWNvZGluZ1N0b3JlLmNwcAppbmRleCAwNWIzZTJiOGRi
ZDE2NGE2YzZlMzFmMjg5NTc2NDlkN2Y4ZTdlMmVjLi40NDllNDUyNTRlODk1YzAzMzI2YjRkNTdh
MDViYmQxMTE5YmIzOWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9JbWFnZURlY29kaW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlRGVjb2RpbmdTdG9yZS5jcHAKQEAgLTI2
LDEzICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VEZWNvZGlu
Z1N0b3JlLmgiCiAKLSNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKLSNpbmNsdWRlICJJbWFnZUZy
YW1lR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiU2NhbGVkSW1hZ2VGcmFnbWVudC5oIgotI2luY2x1
ZGUgIlNrUmVjdC5oIgotI2luY2x1ZGUgIlNrU2l6ZS5oIgotCi0jaW5jbHVkZSAic2tpYS9leHQv
aW1hZ2Vfb3BlcmF0aW9ucy5oIgogCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIApAQCAt
NzUsNjIgKzY5LDYgQEAgdm9pZCBJbWFnZURlY29kaW5nU3RvcmU6OnNodXRkb3duKCkKICAgICBz
ZXRJbnN0YW5jZU9uTWFpblRocmVhZCgwKTsKIH0KIAotdm9pZCogSW1hZ2VEZWNvZGluZ1N0b3Jl
Ojpsb2NrUGl4ZWxzKFBhc3NSZWZQdHI8SW1hZ2VGcmFtZUdlbmVyYXRvcj4gZnJhbWVHZW5lcmF0
b3IsIGNvbnN0IFNrSVNpemUmIHNjYWxlZFNpemUsIGNvbnN0IFNrSVJlY3QmIHNjYWxlZFN1YnNl
dCkKLXsKLSAgICBBU1NFUlQoY2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgICBBU1NFUlQobV9s
b2NrZWRTa0JpdG1hcC5pc051bGwoKSk7Ci0KLSAgICBTa0lTaXplIGZ1bGxTaXplID0gZnJhbWVH
ZW5lcmF0b3ItPmZ1bGxTaXplKCk7Ci0KLSAgICAvLyBUaGUgY2FjaGUgb25seSBzYXZlcyB0aGUg
ZnVsbCBzaXplIGltYWdlIGF0IHRoZSBtb21lbnQuCi0gICAgU2NhbGVkSW1hZ2VGcmFnbWVudCog
ZnJhbWVDYWNoZSA9IGxvb2t1cEZyYW1lQ2FjaGUoZnJhbWVHZW5lcmF0b3ItPmltYWdlSWQoKSwg
ZnVsbFNpemUpOwotICAgIFNrQml0bWFwIGJpdG1hcDsKLQotICAgIGlmICghZnJhbWVDYWNoZSkg
ewotICAgICAgICAvLyBGSVhNRTogUGl4ZWxzIGFyZSBvd25lZCBieSB0aGUgSW1hZ2VEZWNvZGVy
IGluIHRoZSBnZW5lcmF0b3IuIEZpbmQKLSAgICAgICAgLy8gYSB3YXkgdG8gdHJhbnNmZXIgb3du
ZXJzaGlwIHRvIG91ciBjYWNoZS4KLSAgICAgICAgSW1hZ2VGcmFtZSogZnJhbWUgPSBmcmFtZUdl
bmVyYXRvci0+ZGVjb2RlcigpLT5mcmFtZUJ1ZmZlckF0SW5kZXgoMCk7Ci0KLSAgICAgICAgLy8g
U2F2ZXMgdGhlIGZyYW1lIGluIGNhY2hlIGlmIHRoaXMgaXMgY29tcGxldGUuCi0gICAgICAgIGlm
IChmcmFtZS0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZSkgewotICAgICAg
ICAgICAgbV9mcmFtZUNhY2hlLmFwcGVuZChTY2FsZWRJbWFnZUZyYWdtZW50OjpjcmVhdGUoZnJh
bWVHZW5lcmF0b3ItPmltYWdlSWQoKSwgZnVsbFNpemUsIGZyYW1lLT5nZXRTa0JpdG1hcCgpLCB0
cnVlKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoZnJhbWUtPnN0YXR1cygpID09IEltYWdlRnJhbWU6
OkZyYW1lRW1wdHkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGlzIGlzIGEgZGVjb2Rp
bmcgZXJyb3IuIFJlcG9ydCB0aGlzIHRvIEJpdG1hcEltYWdlLgotICAgICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgICAgIH0KLQotICAgICAgICBiaXRtYXAgPSBmcmFtZS0+Z2V0U2tCaXRtYXAoKTsK
LSAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlQoZnJhbWVDYWNoZS0+aXNDb21wbGV0ZSgpKTsK
LSAgICAgICAgYml0bWFwID0gZnJhbWVDYWNoZS0+Yml0bWFwKCk7Ci0gICAgfQotCi0gICAgaWYg
KGZ1bGxTaXplICE9IHNjYWxlZFNpemUpIHsKLSAgICAgICAgLy8gSW1hZ2Ugc2NhbGluZyBpcyBk
b25lIG9uLXRoZS1mbHkgYW5kIHNjYWxlZCBpbWFnZSBpcyBkZXN0cm95ZWQKLSAgICAgICAgLy8g
YWZ0ZXIgdXNlLgotICAgICAgICAvLyBGSVhNRTogUmVzaXplIGp1c3QgdGhlIHJlcXVlc3RlZCBm
cmFnbWVudC4KLSAgICAgICAgbV9sb2NrZWRTa0JpdG1hcCA9IHNraWE6OkltYWdlT3BlcmF0aW9u
czo6UmVzaXplKGJpdG1hcCwgc2tpYTo6SW1hZ2VPcGVyYXRpb25zOjpSRVNJWkVfTEFOQ1pPUzMs
IHNjYWxlZFNpemUud2lkdGgoKSwgc2NhbGVkU2l6ZS5oZWlnaHQoKSk7Ci0gICAgfSBlbHNlCi0g
ICAgICAgIG1fbG9ja2VkU2tCaXRtYXAgPSBiaXRtYXA7Ci0gICAgbV9sb2NrZWRTa0JpdG1hcC5s
b2NrUGl4ZWxzKCk7Ci0gICAgcmV0dXJuIG1fbG9ja2VkU2tCaXRtYXAuZ2V0QWRkcihzY2FsZWRT
dWJzZXQueCgpLCBzY2FsZWRTdWJzZXQueSgpKTsKLX0KLQotdm9pZCBJbWFnZURlY29kaW5nU3Rv
cmU6OnVubG9ja1BpeGVscygpCi17Ci0gICAgQVNTRVJUKGNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7
Ci0KLSAgICBtX2xvY2tlZFNrQml0bWFwLnVubG9ja1BpeGVscygpOwotICAgIG1fbG9ja2VkU2tC
aXRtYXAucmVzZXQoKTsKLX0KLQotdm9pZCBJbWFnZURlY29kaW5nU3RvcmU6OmZyYW1lR2VuZXJh
dG9yQmVpbmdEZXN0cm95ZWQoSW1hZ2VGcmFtZUdlbmVyYXRvciogZnJhbWVHZW5lcmF0b3IpCi17
Ci0gICAgQVNTRVJUKGNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0KLSAgICBkZWxldGVGcmFtZUNh
Y2hlKGZyYW1lR2VuZXJhdG9yLT5pbWFnZUlkKCkpOwotfQotCiBib29sIEltYWdlRGVjb2RpbmdT
dG9yZTo6Y2FsbGVkT25WYWxpZFRocmVhZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRoaXMgPT0g
aW5zdGFuY2VPbk1haW5UaHJlYWQoKSAmJiBpc01haW5UaHJlYWQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlRGVjb2RpbmdTdG9y
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VEZWNv
ZGluZ1N0b3JlLmgKaW5kZXggNmQyYzM4NjM2Y2FjN2Q4OWMyYjQ4YWYwZWYyN2ZiZGM4MjY3NzNj
Zi4uMGNlMzE3M2U5Zjk5ZGI2MmM4MzNiMDhmZjkzMTE1MzYyMjViODQ2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VEZWNvZGluZ1N0
b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1h
Z2VEZWNvZGluZ1N0b3JlLmgKQEAgLTI2LDE1ICsyNiwxMCBAQAogI2lmbmRlZiBJbWFnZURlY29k
aW5nU3RvcmVfaAogI2RlZmluZSBJbWFnZURlY29kaW5nU3RvcmVfaAogCi0jaW5jbHVkZSAiU2tC
aXRtYXAuaCIKLSNpbmNsdWRlICJTa1JlY3QuaCIKICNpbmNsdWRlICJTa1NpemUuaCIKIAotI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC01NywyMiArNTIsMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxp
emVPbk1haW5UaHJlYWQoKTsKICAgICBzdGF0aWMgdm9pZCBzaHV0ZG93bigpOwogCi0gICAgLy8g
WW91IG1heSBvbmx5IGxvY2sgb25lIHNldCBvZiBwaXhlbHMgYXQgYSB0aW1lOyBvdmVybGFwcGlu
ZyBsb2NrIGNhbGxzIGFyZSBub3QgYWxsb3dlZC4KLSAgICB2b2lkKiBsb2NrUGl4ZWxzKFBhc3NS
ZWZQdHI8SW1hZ2VGcmFtZUdlbmVyYXRvcj4sIGNvbnN0IFNrSVNpemUmIHNjYWxlZFNpemUsIGNv
bnN0IFNrSVJlY3QmIHNjYWxlZFN1YnNldCk7Ci0gICAgdm9pZCB1bmxvY2tQaXhlbHMoKTsKLQot
ICAgIHZvaWQgZnJhbWVHZW5lcmF0b3JCZWluZ0Rlc3Ryb3llZChJbWFnZUZyYW1lR2VuZXJhdG9y
Kik7Ci0KIHByaXZhdGU6CiAgICAgSW1hZ2VEZWNvZGluZ1N0b3JlKCk7CiAgICAgYm9vbCBjYWxs
ZWRPblZhbGlkVGhyZWFkKCkgY29uc3Q7Ci0gICAgdm9pZCBjcmVhdGVGcmFtZUdlbmVyYXRvcihQ
YXNzT3duUHRyPEltYWdlRGVjb2Rlcj4pOwogICAgIFNjYWxlZEltYWdlRnJhZ21lbnQqIGxvb2t1
cEZyYW1lQ2FjaGUoaW50IGltYWdlSWQsIGNvbnN0IFNrSVNpemUmIHNjYWxlZFNpemUpIGNvbnN0
OwogICAgIHZvaWQgZGVsZXRlRnJhbWVDYWNoZShpbnQgaW1hZ2VJZCk7CiAKICAgICBWZWN0b3I8
T3duUHRyPFNjYWxlZEltYWdlRnJhZ21lbnQ+ID4gbV9mcmFtZUNhY2hlOwotCi0gICAgU2tCaXRt
YXAgbV9sb2NrZWRTa0JpdG1hcDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlRnJh
bWVHZW5lcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vSW1hZ2VGcmFtZUdlbmVyYXRvci5jcHAKaW5kZXggZTQ5N2FmNjg4MjkxYmI3NWZkZjk3NjNh
MGQ5ODBmNTUxMTcyMTlkMi4uZmU0ZTRiZmJlZGNjZjRkNDYyOTA5ZWRiMmZjMTUyNTIxNTg3ZWM5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
SW1hZ2VGcmFtZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVyYXRvci5jcHAKQEAgLTI4LDQzICsyOCw2MSBA
QAogI2luY2x1ZGUgIkltYWdlRnJhbWVHZW5lcmF0b3IuaCIKIAogI2luY2x1ZGUgIkltYWdlRGVj
b2Rlci5oIgotI2luY2x1ZGUgIkltYWdlRGVjb2RpbmdTdG9yZS5oIgogI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogCi1uYW1lc3BhY2UgewotCi0vLyBBbiB1bmlxdWUgSUQgZm9yIGFuIGltYWdl
IGZpbGUuCi1pbnQgc19uZXh0SW1hZ2VJZCA9IDA7Ci0KLX0gLy8gbmFtZXNwYWNlCisjaW5jbHVk
ZSAic2tpYS9leHQvaW1hZ2Vfb3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUltYWdlRnJhbWVHZW5lcmF0b3I6OkltYWdlRnJhbWVHZW5lcmF0b3IoUGFzc093blB0cjxJbWFn
ZURlY29kZXI+IGRlY29kZXIsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKLSAgICA6IG1fZGVjb2RlcihkZWNvZGVyKQorSW1hZ2VGcmFtZUdlbmVy
YXRvcjo6SW1hZ2VGcmFtZUdlbmVyYXRvcihQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCisgICAgOiBtX2FsbERhdGFSZWNlaXZlZChmYWxzZSkKIHsK
LSAgICBtX2Z1bGxTaXplID0gU2tJU2l6ZTo6TWFrZShtX2RlY29kZXItPnNpemUoKS53aWR0aCgp
LCBtX2RlY29kZXItPnNpemUoKS5oZWlnaHQoKSk7Ci0gICAgbV9pbWFnZUlkID0gc19uZXh0SW1h
Z2VJZCsrOwotCiAgICAgc2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCiBJbWFn
ZUZyYW1lR2VuZXJhdG9yOjp+SW1hZ2VGcmFtZUdlbmVyYXRvcigpCiB7Ci0gICAgaWYgKEltYWdl
RGVjb2RpbmdTdG9yZTo6aW5zdGFuY2VPbk1haW5UaHJlYWQoKSkKLSAgICAgICAgSW1hZ2VEZWNv
ZGluZ1N0b3JlOjppbnN0YW5jZU9uTWFpblRocmVhZCgpLT5mcmFtZUdlbmVyYXRvckJlaW5nRGVz
dHJveWVkKHRoaXMpOwogfQogCi1JbWFnZURlY29kZXIqIEltYWdlRnJhbWVHZW5lcmF0b3I6OmRl
Y29kZXIoKQordm9pZCBJbWFnZUZyYW1lR2VuZXJhdG9yOjpzZXREYXRhKFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKLSAgICByZXR1cm4gbV9k
ZWNvZGVyLmdldCgpOworICAgIC8vIEZJWE1FOiBEb2luZyBhIGZ1bGwgY29weSBpcyBleHBlbnNp
dmUsIGluc3RlYWQgY29weSBvbmx5IG5ldyBkYXRhLgorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGFDb3B5ID0gZGF0YS0+Y29weSgpOworCisgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4
KTsKKyAgICBtX2RhdGEgPSBkYXRhQ29weTsKKyAgICBtX2FsbERhdGFSZWNlaXZlZCA9IGFsbERh
dGFSZWNlaXZlZDsKIH0KIAotdm9pZCBJbWFnZUZyYW1lR2VuZXJhdG9yOjpzZXREYXRhKFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK1NrQml0bWFw
IEltYWdlRnJhbWVHZW5lcmF0b3I6OmRlY29kZUFuZFNjYWxlKGNvbnN0IFNrSVNpemUmIHNjYWxl
ZFNpemUsIGNvbnN0IFNrSVJlY3QmIHNjYWxlZFN1YnNldCkKIHsKLSAgICBtX2RhdGEgPSBkYXRh
OwotICAgIGlmIChtX2RlY29kZXIpCi0gICAgICAgIG1fZGVjb2Rlci0+c2V0RGF0YShtX2RhdGEu
Z2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsK
KyAgICBib29sIGFsbERhdGFSZWNlaXZlZCA9IGZhbHNlOworICAgIHsKKyAgICAgICAgTXV0ZXhM
b2NrZXIgbG9jayhtX211dGV4KTsKKworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRvIGEg
c2hhbGxvdyBjb3B5IGluc3RlYWQuIE5vdyB3ZSdyZSByZXN0cmljdGVkIGJ5IHRoZSBBUEkgb2Yg
U2hhcmVkQnVmZmVyLgorICAgICAgICBkYXRhID0gbV9kYXRhLT5jb3B5KCk7CisgICAgICAgIGFs
bERhdGFSZWNlaXZlZCA9IG1fYWxsRGF0YVJlY2VpdmVkOworICAgIH0KKworICAgIE93blB0cjxJ
bWFnZURlY29kZXI+IGRlY29kZXIoYWRvcHRQdHIoSW1hZ2VEZWNvZGVyOjpjcmVhdGUoKmRhdGEu
Z2V0KCksIEltYWdlU291cmNlOjpBbHBoYVByZW11bHRpcGxpZWQsIEltYWdlU291cmNlOjpHYW1t
YUFuZENvbG9yUHJvZmlsZUFwcGxpZWQpKSk7CisgICAgaWYgKCFkZWNvZGVyKQorICAgICAgICBy
ZXR1cm4gU2tCaXRtYXAoKTsKKworICAgIGRlY29kZXItPnNldERhdGEoZGF0YS5nZXQoKSwgYWxs
RGF0YVJlY2VpdmVkKTsKKyAgICBJbWFnZUZyYW1lKiBmcmFtZSA9IGRlY29kZXItPmZyYW1lQnVm
ZmVyQXRJbmRleCgwKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gU2tCaXRtYXAo
KTsKKworICAgIFNrQml0bWFwIGJpdG1hcCA9IGZyYW1lLT5nZXRTa0JpdG1hcCgpOworICAgIFNr
SVNpemUgYml0bWFwU2l6ZSA9IFNrSVNpemU6Ok1ha2UoYml0bWFwLndpZHRoKCksIGJpdG1hcC5o
ZWlnaHQoKSk7CisgICAgaWYgKGJpdG1hcFNpemUgIT0gc2NhbGVkU2l6ZSkKKyAgICAgICAgYml0
bWFwID0gc2tpYTo6SW1hZ2VPcGVyYXRpb25zOjpSZXNpemUoYml0bWFwLCBza2lhOjpJbWFnZU9w
ZXJhdGlvbnM6OlJFU0laRV9MQU5DWk9TMywgc2NhbGVkU2l6ZS53aWR0aCgpLCBzY2FsZWRTaXpl
LmhlaWdodCgpKTsKKworICAgIFNrQml0bWFwIGJpdG1hcFN1YnNldDsKKyAgICBiaXRtYXAuZXh0
cmFjdFN1YnNldCgmYml0bWFwU3Vic2V0LCBzY2FsZWRTdWJzZXQpOworICAgIHJldHVybiBiaXRt
YXBTdWJzZXQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlRnJhbWVHZW5lcmF0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlRnJhbWVH
ZW5lcmF0b3IuaAppbmRleCA1OGZhNmZiMjNmMjUzNjNkNWJkZTFiMjFhYTllZTQ5NTAxM2ZiNWY1
Li5iYjllMTU0YzE3NjNjOWI3ZDY2ZjIwZDc2ZWFhYzQyMTZkMDNlOGJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUZyYW1lR2VuZXJh
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1h
Z2VGcmFtZUdlbmVyYXRvci5oCkBAIC0yNiw0MSArMjYsMzcgQEAKICNpZm5kZWYgSW1hZ2VGcmFt
ZUdlbmVyYXRvcl9oCiAjZGVmaW5lIEltYWdlRnJhbWVHZW5lcmF0b3JfaAogCi0jaW5jbHVkZSAi
U2tUeXBlcy5oIgorI2luY2x1ZGUgIlNrQml0bWFwLmgiCiAjaW5jbHVkZSAiU2tTaXplLmgiCi0j
aW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIEltYWdlRGVjb2RlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAotY2xh
c3MgSW1hZ2VGcmFtZUdlbmVyYXRvciA6IHB1YmxpYyBSZWZDb3VudGVkPEltYWdlRnJhbWVHZW5l
cmF0b3I+IHsKK2NsYXNzIEltYWdlRnJhbWVHZW5lcmF0b3IgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8SW1hZ2VGcmFtZUdlbmVyYXRvcj4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEltYWdlRnJhbWVHZW5lcmF0b3I+IGNyZWF0ZShQYXNzT3duUHRyPEltYWdlRGVjb2Rl
cj4gZGVjb2RlciwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlRnJhbWVHZW5lcmF0b3I+IGNyZWF0
ZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlRnJhbWVHZW5lcmF0b3IoZGVj
b2RlciwgZGF0YSwgYWxsRGF0YVJlY2VpdmVkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSW1hZ2VGcmFtZUdlbmVyYXRvcihkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpKTsKICAgICB9CiAK
LSAgICBJbWFnZUZyYW1lR2VuZXJhdG9yKFBhc3NPd25QdHI8SW1hZ2VEZWNvZGVyPiwgUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+LCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgSW1hZ2VGcmFt
ZUdlbmVyYXRvcihQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KTsKICAgICB+SW1hZ2VGcmFtZUdlbmVyYXRvcigpOwogCi0gICAgLy8gQ3JlYXRlcyB0aGUgaW1h
Z2UgZGVjb2RlciBpZiBuZWVkZWQuCi0gICAgSW1hZ2VEZWNvZGVyKiBkZWNvZGVyKCk7Ci0gICAg
dm9pZCBzZXREYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpOworICAgIFNrQml0bWFwIGRlY29kZUFuZFNjYWxlKGNvbnN0IFNrSVNpemUmIHNjYWxlZFNp
emUsIGNvbnN0IFNrSVJlY3QmIHNjYWxlZFN1YnNldCk7CiAKLSAgICBjb25zdCBTa0lTaXplJiBm
dWxsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVsbFNpemU7IH0KLSAgICBpbnQgaW1hZ2VJZCgp
IGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VJZDsgfQorICAgIHZvaWQgc2V0RGF0YShQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4sIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKIAogcHJpdmF0ZToKLSAgICBP
d25QdHI8SW1hZ2VEZWNvZGVyPiBtX2RlY29kZXI7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bV9kYXRhOwotICAgIFNrSVNpemUgbV9mdWxsU2l6ZTsKLSAgICBpbnQgbV9pbWFnZUlkOworICAg
IGJvb2wgbV9hbGxEYXRhUmVjZWl2ZWQ7CisgICAgTXV0ZXggbV9tdXRleDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xhenlEZWNvZGluZ1BpeGVsUmVmLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xhenlEZWNvZGluZ1BpeGVsUmVmLmNwcAppbmRl
eCA1NmRkMDkxZTBkOWY4YzE0MGI3ZGJkNzMxZDczNjIxOGFkMGZiOTMyLi43MWI2NDIzOThiODcw
NmQ0MDk2ZDNjOWVmZmM3NmU4MDE5NzczZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXp5RGVjb2RpbmdQaXhlbFJlZi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF6eURlY29kaW5nUGl4
ZWxSZWYuY3BwCkBAIC01NywxNCArNTcsMjAgQEAgYm9vbCBMYXp5RGVjb2RpbmdQaXhlbFJlZjo6
aXNDbGlwcGVkKCkgY29uc3QKIAogdm9pZCogTGF6eURlY29kaW5nUGl4ZWxSZWY6Om9uTG9ja1Bp
eGVscyhTa0NvbG9yVGFibGUqKikKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAg
IHJldHVybiBJbWFnZURlY29kaW5nU3RvcmU6Omluc3RhbmNlT25NYWluVGhyZWFkKCktPmxvY2tQ
aXhlbHMobV9mcmFtZUdlbmVyYXRvciwgbV9zY2FsZWRTaXplLCBtX3NjYWxlZFN1YnNldCk7Cisg
ICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICBBU1NFUlQobV9sb2NrZWRCaXRtYXAu
aXNOdWxsKCkpOworICAgIG1fbG9ja2VkQml0bWFwID0gbV9mcmFtZUdlbmVyYXRvci0+ZGVjb2Rl
QW5kU2NhbGUobV9zY2FsZWRTaXplLCBtX3NjYWxlZFN1YnNldCk7CisgICAgaWYgKG1fbG9ja2Vk
Qml0bWFwLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBtX2xvY2tlZEJpdG1hcC5s
b2NrUGl4ZWxzKCk7CisgICAgcmV0dXJuIG1fbG9ja2VkQml0bWFwLmdldEFkZHIoMCwgMCk7CiB9
CiAKIHZvaWQgTGF6eURlY29kaW5nUGl4ZWxSZWY6Om9uVW5sb2NrUGl4ZWxzKCkKIHsKLSAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEltYWdlRGVjb2RpbmdTdG9yZTo6aW5zdGFuY2VP
bk1haW5UaHJlYWQoKS0+dW5sb2NrUGl4ZWxzKCk7CisgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211
dGV4KTsKKyAgICBtX2xvY2tlZEJpdG1hcC51bmxvY2tQaXhlbHMoKTsKKyAgICBtX2xvY2tlZEJp
dG1hcC5yZXNldCgpOwogfQogCiBib29sIExhenlEZWNvZGluZ1BpeGVsUmVmOjpvbkxvY2tQaXhl
bHNBcmVXcml0YWJsZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXp5RGVjb2RpbmdQaXhlbFJlZi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF6eURlY29kaW5nUGl4ZWxSZWYuaAppbmRl
eCAwYWI5Y2NjNGNiMTExZjI3NjRmNzIzNzA2NzUxYTVlY2YxM2M3NjMzLi42ZTU2YjEzZDJiZWI1
YjIzZDNjYTVkM2IwODA0ZTUxYTQ0MDFjNTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXp5RGVjb2RpbmdQaXhlbFJlZi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xhenlEZWNvZGluZ1BpeGVs
UmVmLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJTa1NpemUuaCIKIAogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU4LDYgKzU5LDkgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8SW1hZ2VGcmFtZUdlbmVyYXRvcj4gbV9mcmFtZUdlbmVyYXRvcjsKICAgICBTa0lTaXplIG1f
c2NhbGVkU2l6ZTsKICAgICBTa0lSZWN0IG1fc2NhbGVkU3Vic2V0OworCisgICAgU2tCaXRtYXAg
bV9sb2NrZWRCaXRtYXA7CisgICAgTXV0ZXggbV9tdXRleDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVmZXJy
ZWRJbWFnZURlY29kZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVm
ZXJyZWRJbWFnZURlY29kZXJUZXN0LmNwcAppbmRleCAwOTc3ZTU3MjlhZDY2ZjJjMzA2Njk5ZmYy
ZjMyMjA2NjI1NzZkYjEzLi43OTY4ZTRhZDdmZWQzOTE1ZTE5ODljMTE2NzQ0YjYwNDczYzdlYzIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0RlZmVycmVkSW1hZ2VE
ZWNvZGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EZWZlcnJl
ZEltYWdlRGVjb2RlclRlc3QuY3BwCkBAIC0zMCwzMCArMzAsNTcgQEAKICNpbmNsdWRlICJJbWFn
ZURlY29kaW5nU3RvcmUuaCIKICNpbmNsdWRlICJNb2NrSW1hZ2VEZWNvZGVyLmgiCiAjaW5jbHVk
ZSAiTmF0aXZlSW1hZ2VTa2lhLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiU2tDYW52YXMuaCIKICNpbmNsdWRlICJTa0RldmljZS5oIgogI2luY2x1ZGUgIlNrUGljdHVy
ZS5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIHsKIAorLy8gUmF3IGRhdGEg
Zm9yIGEgUE5HIGZpbGUgd2l0aCAxeDEgd2hpdGUgcGl4ZWxzLgorY29uc3QgY2hhciB3aGl0ZVBO
R1tdID0geworICAgIDB4ODksIDB4NTAsIDB4NGUsIDB4NDcsIDB4MGQsIDB4MGEsIDB4MWEsIDB4
MGEsIDB4MDAsIDB4MDAsCisgICAgMHgwMCwgMHgwZCwgMHg0OSwgMHg0OCwgMHg0NCwgMHg1Miwg
MHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwKKyAgICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDA4
LCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDkwLAorICAgIDB4NzcsIDB4NTMsIDB4ZGUsIDB4
MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NzMsIDB4NTIsIDB4NDcsCisgICAgMHg0MiwgMHgwMCwg
MHhhZSwgMHhjZSwgMHgxYywgMHhlOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOSwKKyAgICAweDcw
LCAweDQ4LCAweDU5LCAweDczLCAweDAwLCAweDAwLCAweDBiLCAweDEzLCAweDAwLCAweDAwLAor
ICAgIDB4MGIsIDB4MTMsIDB4MDEsIDB4MDAsIDB4OWEsIDB4OWMsIDB4MTgsIDB4MDAsIDB4MDAs
IDB4MDAsCisgICAgMHgwYywgMHg0OSwgMHg0NCwgMHg0MSwgMHg1NCwgMHgwOCwgMHhkNywgMHg2
MywgMHhmOCwgMHhmZiwKKyAgICAweGZmLCAweDNmLCAweDAwLCAweDA1LCAweGZlLCAweDAyLCAw
eGZlLCAweGRjLCAweGNjLCAweDU5LAorICAgIDB4ZTcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs
IDB4NDksIDB4NDUsIDB4NGUsIDB4NDQsIDB4YWUsCisgICAgMHg0MiwgMHg2MCwgMHg4MiwKK307
CisKIHN0YXRpYyBTa0NhbnZhcyogY3JlYXRlUmFzdGVyQ2FudmFzKGludCB3aWR0aCwgaW50IGhl
aWdodCkKIHsKICAgICBTa0F1dG9UVW5yZWY8U2tEZXZpY2U+IGRldmljZShuZXcgU2tEZXZpY2Uo
U2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnLCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgcmV0dXJu
IG5ldyBTa0NhbnZhcyhkZXZpY2UpOwogfQogCi1jbGFzcyBEZWZlcnJlZEltYWdlRGVjb2RlclRl
c3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKK3N0cnVjdCBSYXN0ZXJpemVyIHsKKyAgICBT
a0NhbnZhcyogY2FudmFzOworICAgIFNrUGljdHVyZSogcGljdHVyZTsKK307CisKK2NsYXNzIERl
ZmVycmVkSW1hZ2VEZWNvZGVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QsIHB1YmxpYyBN
b2NrSW1hZ2VEZWNvZGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgU2V0VXAo
KQogICAgIHsKICAgICAgICAgSW1hZ2VEZWNvZGluZ1N0b3JlOjppbml0aWFsaXplT25NYWluVGhy
ZWFkKCk7Ci0gICAgICAgIG1fYWN0dWFsRGVjb2RlciA9IG5ldyBNb2NrSW1hZ2VEZWNvZGVyKCk7
Ci0gICAgICAgIG1fYWN0dWFsRGVjb2Rlci0+c2V0U2l6ZSg2MDAsIDYxMyk7CisgICAgICAgIG1f
ZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHdoaXRlUE5HLCBzaXplb2Yod2hpdGVQTkcpKTsK
KyAgICAgICAgbV9hY3R1YWxEZWNvZGVyID0gbmV3IE1vY2tJbWFnZURlY29kZXIodGhpcyk7Cisg
ICAgICAgIG1fYWN0dWFsRGVjb2Rlci0+c2V0U2l6ZSgxLCAxKTsKICAgICAgICAgbV9sYXp5RGVj
b2RlciA9IERlZmVycmVkSW1hZ2VEZWNvZGVyOjpjcmVhdGVGb3JUZXN0aW5nKGFkb3B0UHRyKG1f
YWN0dWFsRGVjb2RlcikpOworICAgICAgICBtX2xhenlEZWNvZGVyLT5zZXREYXRhKG1fZGF0YS5n
ZXQoKSwgdHJ1ZSk7CiAgICAgICAgIG1fY2FudmFzLnJlc2V0KGNyZWF0ZVJhc3RlckNhbnZhcygx
MDAsIDEwMCkpOworICAgICAgICBtX2ZyYW1lQnVmZmVyUmVxdWVzdENvdW50ID0gMDsKICAgICB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQpAQCAtNjEsMjkgKzg4LDQzIEBAIHB1Ymxp
YzoKICAgICAgICAgSW1hZ2VEZWNvZGluZ1N0b3JlOjpzaHV0ZG93bigpOwogICAgIH0KIAorICAg
IHZpcnR1YWwgdm9pZCBkZWNvZGVyQmVpbmdEZXN0cm95ZWQoKQorICAgIHsKKyAgICAgICAgbV9m
cmFtZUJ1ZmZlclJlcXVlc3RDb3VudCA9IG1fYWN0dWFsRGVjb2Rlci0+ZnJhbWVCdWZmZXJSZXF1
ZXN0Q291bnQoKTsKKyAgICAgICAgbV9hY3R1YWxEZWNvZGVyID0gMDsKKyAgICB9CisKIHByb3Rl
Y3RlZDoKICAgICAvLyBEb24ndCBvd24gdGhpcyBidXQgc2F2ZXMgdGhlIHBvaW50ZXIgdG8gcXVl
cnkgc3RhdGVzLgogICAgIE1vY2tJbWFnZURlY29kZXIqIG1fYWN0dWFsRGVjb2RlcjsKICAgICBP
d25QdHI8RGVmZXJyZWRJbWFnZURlY29kZXI+IG1fbGF6eURlY29kZXI7CiAgICAgU2tQaWN0dXJl
IG1fcGljdHVyZTsKICAgICBTa0F1dG9UVW5yZWY8U2tDYW52YXM+IG1fY2FudmFzOworICAgIGlu
dCBtX2ZyYW1lQnVmZmVyUmVxdWVzdENvdW50OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
ZGF0YTsKIH07CiAKIFRFU1RfRihEZWZlcnJlZEltYWdlRGVjb2RlclRlc3QsIGRyYXdJbnRvU2tQ
aWN0dXJlKQogewogICAgIE93blB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlKGFkb3B0UHRyKG1f
bGF6eURlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleCgwKS0+YXNOZXdOYXRpdmVJbWFnZSgpKSk7
Ci0gICAgRVhQRUNUX0VRKG1fYWN0dWFsRGVjb2Rlci0+c2l6ZSgpLndpZHRoKCksIGltYWdlLT5i
aXRtYXAoKS53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRVEobV9hY3R1YWxEZWNvZGVyLT5zaXplKCku
aGVpZ2h0KCksIGltYWdlLT5iaXRtYXAoKS5oZWlnaHQoKSk7CisgICAgRVhQRUNUX0VRKDEsIGlt
YWdlLT5iaXRtYXAoKS53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoMSwgaW1hZ2UtPmJpdG1hcCgp
LmhlaWdodCgpKTsKICAgICBFWFBFQ1RfRkFMU0UoaW1hZ2UtPmJpdG1hcCgpLmlzTnVsbCgpKTsK
ICAgICBFWFBFQ1RfVFJVRShpbWFnZS0+Yml0bWFwKCkuaXNJbW11dGFibGUoKSk7CiAKICAgICBT
a0NhbnZhcyogdGVtcENhbnZhcyA9IG1fcGljdHVyZS5iZWdpblJlY29yZGluZygxMDAsIDEwMCk7
CiAgICAgdGVtcENhbnZhcy0+ZHJhd0JpdG1hcChpbWFnZS0+Yml0bWFwKCksIDAsIDApOwogICAg
IG1fcGljdHVyZS5lbmRSZWNvcmRpbmcoKTsKLSAgICBFWFBFQ1RfRVEoMCwgbV9hY3R1YWxEZWNv
ZGVyLT5mcmFtZUJ1ZmZlclJlcXVlc3RDb3VudCgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbV9mcmFt
ZUJ1ZmZlclJlcXVlc3RDb3VudCk7CiAKICAgICBtX2NhbnZhcy0+ZHJhd1BpY3R1cmUobV9waWN0
dXJlKTsKLSAgICBFWFBFQ1RfRVEoMSwgbV9hY3R1YWxEZWNvZGVyLT5mcmFtZUJ1ZmZlclJlcXVl
c3RDb3VudCgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbV9mcmFtZUJ1ZmZlclJlcXVlc3RDb3VudCk7
CisKKyAgICBTa0JpdG1hcCBjYW52YXNCaXRtYXA7CisgICAgY2FudmFzQml0bWFwLnNldENvbmZp
ZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIDEwMCwgMTAwKTsKKyAgICBBU1NFUlRfVFJV
RShtX2NhbnZhcy0+cmVhZFBpeGVscygmY2FudmFzQml0bWFwLCAwLCAwKSk7CisgICAgU2tBdXRv
TG9ja1BpeGVscyBhdXRvTG9jayhjYW52YXNCaXRtYXApOworICAgIEVYUEVDVF9FUShTa0NvbG9y
U2V0QVJHQigyNTUsIDI1NSwgMjU1LCAyNTUpLCBjYW52YXNCaXRtYXAuZ2V0Q29sb3IoMCwgMCkp
OwogfQogCiBURVNUX0YoRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LCBkcmF3U2NhbGVkSW50b1Nr
UGljdHVyZSkKQEAgLTk0LDE1ICsxMzUsNTggQEAgVEVTVF9GKERlZmVycmVkSW1hZ2VEZWNvZGVy
VGVzdCwgZHJhd1NjYWxlZEludG9Ta1BpY3R1cmUpCiAgICAgRVhQRUNUX1RSVUUoc2NhbGVkQml0
bWFwLmlzSW1tdXRhYmxlKCkpOwogICAgIEVYUEVDVF9FUSg1MCwgc2NhbGVkQml0bWFwLndpZHRo
KCkpOwogICAgIEVYUEVDVF9FUSg1MSwgc2NhbGVkQml0bWFwLmhlaWdodCgpKTsKLSAgICBFWFBF
Q1RfRVEoMCwgbV9hY3R1YWxEZWNvZGVyLT5mcmFtZUJ1ZmZlclJlcXVlc3RDb3VudCgpKTsKKyAg
ICBFWFBFQ1RfRVEoMCwgbV9mcmFtZUJ1ZmZlclJlcXVlc3RDb3VudCk7CiAKICAgICBTa0NhbnZh
cyogdGVtcENhbnZhcyA9IG1fcGljdHVyZS5iZWdpblJlY29yZGluZygxMDAsIDEwMCk7CiAgICAg
dGVtcENhbnZhcy0+ZHJhd0JpdG1hcChzY2FsZWRCaXRtYXAsIDAsIDApOwogICAgIG1fcGljdHVy
ZS5lbmRSZWNvcmRpbmcoKTsKLSAgICBFWFBFQ1RfRVEoMCwgbV9hY3R1YWxEZWNvZGVyLT5mcmFt
ZUJ1ZmZlclJlcXVlc3RDb3VudCgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbV9mcmFtZUJ1ZmZlclJl
cXVlc3RDb3VudCk7CiAKICAgICBtX2NhbnZhcy0+ZHJhd1BpY3R1cmUobV9waWN0dXJlKTsKLSAg
ICBFWFBFQ1RfRVEoMSwgbV9hY3R1YWxEZWNvZGVyLT5mcmFtZUJ1ZmZlclJlcXVlc3RDb3VudCgp
KTsKKyAgICBFWFBFQ1RfRVEoMCwgbV9mcmFtZUJ1ZmZlclJlcXVlc3RDb3VudCk7CisKKyAgICBT
a0JpdG1hcCBjYW52YXNCaXRtYXA7CisgICAgY2FudmFzQml0bWFwLnNldENvbmZpZyhTa0JpdG1h
cDo6a0FSR0JfODg4OF9Db25maWcsIDEwMCwgMTAwKTsKKyAgICBBU1NFUlRfVFJVRShtX2NhbnZh
cy0+cmVhZFBpeGVscygmY2FudmFzQml0bWFwLCAwLCAwKSk7CisgICAgU2tBdXRvTG9ja1BpeGVs
cyBhdXRvTG9jayhjYW52YXNCaXRtYXApOworICAgIEVYUEVDVF9FUShTa0NvbG9yU2V0QVJHQigy
NTUsIDI1NSwgMjU1LCAyNTUpLCBjYW52YXNCaXRtYXAuZ2V0Q29sb3IoMCwgMCkpOworICAgIEVY
UEVDVF9FUShTa0NvbG9yU2V0QVJHQigyNTUsIDI1NSwgMjU1LCAyNTUpLCBjYW52YXNCaXRtYXAu
Z2V0Q29sb3IoNDksIDUwKSk7Cit9CisKK3N0YXRpYyB2b2lkIHJhc3Rlcml6ZU1haW4odm9pZCog
YXJnKQoreworICAgIFJhc3Rlcml6ZXIqIHJhc3Rlcml6ZXIgPSBzdGF0aWNfY2FzdDxSYXN0ZXJp
emVyKj4oYXJnKTsKKyAgICByYXN0ZXJpemVyLT5jYW52YXMtPmRyYXdQaWN0dXJlKCpyYXN0ZXJp
emVyLT5waWN0dXJlKTsKK30KKworVEVTVF9GKERlZmVycmVkSW1hZ2VEZWNvZGVyVGVzdCwgZGVj
b2RlT25PdGhlclRocmVhZCkKK3sKKyAgICBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKKwor
ICAgIE93blB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlKGFkb3B0UHRyKG1fbGF6eURlY29kZXIt
PmZyYW1lQnVmZmVyQXRJbmRleCgwKS0+YXNOZXdOYXRpdmVJbWFnZSgpKSk7CisgICAgRVhQRUNU
X0VRKDEsIGltYWdlLT5iaXRtYXAoKS53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoMSwgaW1hZ2Ut
PmJpdG1hcCgpLmhlaWdodCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaW1hZ2UtPmJpdG1hcCgpLmlz
TnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShpbWFnZS0+Yml0bWFwKCkuaXNJbW11dGFibGUoKSk7
CisKKyAgICBTa0NhbnZhcyogdGVtcENhbnZhcyA9IG1fcGljdHVyZS5iZWdpblJlY29yZGluZygx
MDAsIDEwMCk7CisgICAgdGVtcENhbnZhcy0+ZHJhd0JpdG1hcChpbWFnZS0+Yml0bWFwKCksIDAs
IDApOworICAgIG1fcGljdHVyZS5lbmRSZWNvcmRpbmcoKTsKKyAgICBFWFBFQ1RfRVEoMCwgbV9m
cmFtZUJ1ZmZlclJlcXVlc3RDb3VudCk7CisKKyAgICAvLyBDcmVhdGUgYSB0aHJlYWQgdG8gcmFz
dGVyaXplIFNrUGljdHVyZS4KKyAgICBSYXN0ZXJpemVyIHJhc3Rlcml6ZXI7CisgICAgcmFzdGVy
aXplci5jYW52YXMgPSBtX2NhbnZhczsKKyAgICByYXN0ZXJpemVyLnBpY3R1cmUgPSAmbV9waWN0
dXJlOworICAgIFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQgPSBjcmVhdGVUaHJlYWQoJnJhc3Rl
cml6ZU1haW4sICZyYXN0ZXJpemVyLCAiUmFzdGVyVGhyZWFkIik7CisgICAgd2FpdEZvclRocmVh
ZENvbXBsZXRpb24odGhyZWFkSUQpOworICAgIEVYUEVDVF9FUSgwLCBtX2ZyYW1lQnVmZmVyUmVx
dWVzdENvdW50KTsKKworICAgIFNrQml0bWFwIGNhbnZhc0JpdG1hcDsKKyAgICBjYW52YXNCaXRt
YXAuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgMTAwLCAxMDApOworICAg
IEFTU0VSVF9UUlVFKG1fY2FudmFzLT5yZWFkUGl4ZWxzKCZjYW52YXNCaXRtYXAsIDAsIDApKTsK
KyAgICBTa0F1dG9Mb2NrUGl4ZWxzIGF1dG9Mb2NrKGNhbnZhc0JpdG1hcCk7CisgICAgRVhQRUNU
X0VRKFNrQ29sb3JTZXRBUkdCKDI1NSwgMjU1LCAyNTUsIDI1NSksIGNhbnZhc0JpdG1hcC5nZXRD
b2xvcigwLCAwKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL01vY2tJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvTW9ja0ltYWdlRGVjb2Rlci5oCmluZGV4IDVjZjIzNzQ0ZTUxZmRlNDNjMTY0
YjMxMTAxZDA1YjMzMDczMmMyZmQuLmM5YzBkMDFkNmQ4MzgyMDkyYjA3NGI5NGU0ZGQ5ZmQ3YWUx
Yzg2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0ltYWdl
RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0ltYWdlRGVj
b2Rlci5oCkBAIC0yOSwxMyArMjksMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBNb2NrSW1hZ2VEZWNvZGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgZGVj
b2RlckJlaW5nRGVzdHJveWVkKCkgPSAwOworfTsKKwogY2xhc3MgTW9ja0ltYWdlRGVjb2RlciA6
IHB1YmxpYyBJbWFnZURlY29kZXIgewogcHVibGljOgotICAgIE1vY2tJbWFnZURlY29kZXIoKQor
ICAgIE1vY2tJbWFnZURlY29kZXIoTW9ja0ltYWdlRGVjb2RlckNsaWVudCogY2xpZW50KQogICAg
ICAgICA6IEltYWdlRGVjb2RlcihJbWFnZVNvdXJjZTo6QWxwaGFQcmVtdWx0aXBsaWVkLCBJbWFn
ZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVBcHBsaWVkKQogICAgICAgICAsIG1fZnJhbWVC
dWZmZXJSZXF1ZXN0Q291bnQoMCkKKyAgICAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgeyB9
CiAKKyAgICB+TW9ja0ltYWdlRGVjb2RlcigpCisgICAgeworICAgICAgICBtX2NsaWVudC0+ZGVj
b2RlckJlaW5nRGVzdHJveWVkKCk7CisgICAgfQorCiAgICAgdmlydHVhbCBTdHJpbmcgZmlsZW5h
bWVFeHRlbnNpb24oKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICJtb2NrIjsKQEAgLTU0
LDYgKzY1LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGludCBtX2ZyYW1lQnVmZmVyUmVx
dWVzdENvdW50OworICAgIE1vY2tJbWFnZURlY29kZXJDbGllbnQqIG1fY2xpZW50OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175055</attachid>
            <date>2012-11-19 15:35:25 -0800</date>
            <delta_ts>2012-11-19 18:32:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102721-20121119153315.patch</filename>
            <type>text/plain</type>
            <size>9328</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY3NGMzNGRjMGZjNTcz
YzhkOTU3YjhhN2ZlZjAzOTg0NDBhOWZlYy4uNDg0NGE4ZDllZDEyNTkxZDBjMjA2MzUxNzJhMjhl
ZDkyODhhZDhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM1IEBACiAyMDEyLTExLTE5ICBBbHBo
YSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW2Nocm9taXVtXSBNYWtlIGxh
enkgaW1hZ2UgZGVjb2RpbmcgdGhyZWFkLXNhZmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjcyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG11dGV4IHRvIExhenlEZWNvZGluZ1BpeGVsUmVm
IHN1Y2ggdGhhdCB0aGVyZSBpcyBubyBwYXJhbGxlbAorICAgICAgICBvbkxvY2tQaXhlbHMoKSBy
dW5uaW5nIG9uIG11bHRpcGxlIHRocmVhZHMuCisKKyAgICAgICAgQWRkZWQgbXV0ZXggdG8gSW1h
Z2VGcmFtZUdlbmVyYXRvciB0byBwcm90ZWN0IHRoZSB1c2Ugb2YgcmF3IGltYWdlCisgICAgICAg
IGRhdGEuCisKKyAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGF0IHdlIGNhbiBkZWNvZGUgb24gdGhy
ZWFkcyBvdGhlciB0aGFuIHRoZSBtYWluCisgICAgICAgIHRocmVhZCB3aGlsZSBkYXRhIGlzIGJl
aW5nIHN1cHBsaWVkIG9uIHRoZSBtYWluIHRocmVhZC4KKworICAgICAgICBOZXcgdW5pdCB0ZXN0
OgorICAgICAgICBEZWZlcnJlZEltYWdlRGVjb2RlclRlc3QuZGVjb2RlT25PdGhlclRocmVhZAor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVyYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lR2VuZXJhdG9yOjpzZXREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVHZW5lcmF0b3I6OmRlY29kZUFuZFNjYWxlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUZyYW1lR2VuZXJhdG9y
Lmg6CisgICAgICAgIChJbWFnZUZyYW1lR2VuZXJhdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXp5RGVjb2RpbmdQaXhlbFJlZi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXp5RGVjb2RpbmdQaXhlbFJlZjo6b25Mb2NrUGl4ZWxzKToKKyAgICAgICAgKFdlYkNv
cmU6OkxhenlEZWNvZGluZ1BpeGVsUmVmOjpvblVubG9ja1BpeGVscyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF6eURlY29kaW5nUGl4ZWxSZWYuaDoKKyAgICAgICAg
KExhenlEZWNvZGluZ1BpeGVsUmVmKToKKworMjAxMi0xMS0xOSAgQWxwaGEgTGFtICA8aGNsYW1A
Y2hyb21pdW0ub3JnPgorCiAgICAgICAgIFtjaHJvbWl1bV0gTGF6eSBpbWFnZSBkZWNvZGluZyB3
aXRob3V0IGNhY2hlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDIwMjEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA0ZmY3YmJiZjQ1Zjk2
NDQ2N2NjNzQ4NjU4N2Q5OWJlOGUzZTY1OGQzLi42MjAwMzQzMjY3MDYxYTRjOGVjMTE2ODMxZDU4
OGJlODUwMTMyMjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIxIEBA
CiAyMDEyLTExLTE5ICBBbHBoYSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAg
W2Nocm9taXVtXSBNYWtlIGxhenkgaW1hZ2UgZGVjb2RpbmcgdGhyZWFkLXNhZmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjcyMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgbmV3IHVuaXQg
dGVzdCB0byB2ZXJpZnkgdGhhdCBsYXp5IGltYWdlIGRlY29kaW5nIG9wZXJhdGVzCisgICAgICAg
IGNvcnJlY3RseSBvbiBub24tbWFpbiB0aHJlYWRzLgorCisgICAgICAgICogdGVzdHMvRGVmZXJy
ZWRJbWFnZURlY29kZXJUZXN0LmNwcDoKKyAgICAgICAgKFJhc3Rlcml6ZXIpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpyYXN0ZXJpemVNYWluKToKKyAgICAgICAgKFdl
YkNvcmU6OlRFU1RfRik6CisKKzIwMTItMTEtMTkgIEFscGhhIExhbSAgPGhjbGFtQGNocm9taXVt
Lm9yZz4KKwogICAgICAgICBbY2hyb21pdW1dIExhenkgaW1hZ2UgZGVjb2Rpbmcgd2l0aG91dCBj
YWNoZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAy
MDIxCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ltYWdlRnJhbWVHZW5lcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVyYXRvci5jcHAKaW5kZXggMjM2NzgzMzE1MzMy
ZWQ5MDUxZTgzMWM2MWQzMDdlZGZmNWViYTM1Yi4uZmU0ZTRiZmJlZGNjZjRkNDYyOTA5ZWRiMmZj
MTUyNTIxNTg3ZWM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVyYXRvci5jcHAKQEAgLTQ2
LDE3ICs0NiwzMSBAQCBJbWFnZUZyYW1lR2VuZXJhdG9yOjp+SW1hZ2VGcmFtZUdlbmVyYXRvcigp
CiAKIHZvaWQgSW1hZ2VGcmFtZUdlbmVyYXRvcjo6c2V0RGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsK
KyAgICAvLyBGSVhNRTogRG9pbmcgYSBmdWxsIGNvcHkgaXMgZXhwZW5zaXZlLCBpbnN0ZWFkIGNv
cHkgb25seSBuZXcgZGF0YS4KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhQ29weSA9IGRh
dGEtPmNvcHkoKTsKKworICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgbV9kYXRh
ID0gZGF0YUNvcHk7CiAgICAgbV9hbGxEYXRhUmVjZWl2ZWQgPSBhbGxEYXRhUmVjZWl2ZWQ7CiB9
CiAKIFNrQml0bWFwIEltYWdlRnJhbWVHZW5lcmF0b3I6OmRlY29kZUFuZFNjYWxlKGNvbnN0IFNr
SVNpemUmIHNjYWxlZFNpemUsIGNvbnN0IFNrSVJlY3QmIHNjYWxlZFN1YnNldCkKIHsKLSAgICBP
d25QdHI8SW1hZ2VEZWNvZGVyPiBkZWNvZGVyKGFkb3B0UHRyKEltYWdlRGVjb2Rlcjo6Y3JlYXRl
KCptX2RhdGEuZ2V0KCksIEltYWdlU291cmNlOjpBbHBoYVByZW11bHRpcGxpZWQsIEltYWdlU291
cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZUFwcGxpZWQpKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YTsKKyAgICBib29sIGFsbERhdGFSZWNlaXZlZCA9IGZhbHNlOworICAgIHsKKyAg
ICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKworICAgICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGRvIGEgc2hhbGxvdyBjb3B5IGluc3RlYWQuIE5vdyB3ZSdyZSByZXN0cmljdGVkIGJ5
IHRoZSBBUEkgb2YgU2hhcmVkQnVmZmVyLgorICAgICAgICBkYXRhID0gbV9kYXRhLT5jb3B5KCk7
CisgICAgICAgIGFsbERhdGFSZWNlaXZlZCA9IG1fYWxsRGF0YVJlY2VpdmVkOworICAgIH0KKwor
ICAgIE93blB0cjxJbWFnZURlY29kZXI+IGRlY29kZXIoYWRvcHRQdHIoSW1hZ2VEZWNvZGVyOjpj
cmVhdGUoKmRhdGEuZ2V0KCksIEltYWdlU291cmNlOjpBbHBoYVByZW11bHRpcGxpZWQsIEltYWdl
U291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZUFwcGxpZWQpKSk7CiAgICAgaWYgKCFkZWNvZGVy
KQogICAgICAgICByZXR1cm4gU2tCaXRtYXAoKTsKIAotICAgIGRlY29kZXItPnNldERhdGEobV9k
YXRhLmdldCgpLCBtX2FsbERhdGFSZWNlaXZlZCk7CisgICAgZGVjb2Rlci0+c2V0RGF0YShkYXRh
LmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIEltYWdlRnJhbWUqIGZyYW1lID0gZGVjb2Rl
ci0+ZnJhbWVCdWZmZXJBdEluZGV4KDApOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVy
biBTa0JpdG1hcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVyYXRvci5oCmluZGV4IDFjNWQ2Y2Y2
ZWViZDAwZTg2OWQ1ZmFjODIxMzkyNzMxYzQ4YjMyNzguLmJiOWUxNTRjMTc2M2M5YjdkNjZmMjBk
NzZlYWFjNDIxNmQwM2U4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ltYWdlRnJhbWVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUZyYW1lR2VuZXJhdG9yLmgKQEAgLTMy
LDEyICszMiwxNCBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKLWNsYXNz
IEltYWdlRnJhbWVHZW5lcmF0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUZyYW1lR2VuZXJh
dG9yPiB7CitjbGFzcyBJbWFnZUZyYW1lR2VuZXJhdG9yIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPEltYWdlRnJhbWVHZW5lcmF0b3I+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJbWFnZUZyYW1lR2VuZXJhdG9yPiBjcmVhdGUoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIHsKQEAgLTU0LDYgKzU2LDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgYm9v
bCBtX2FsbERhdGFSZWNlaXZlZDsKKyAgICBNdXRleCBtX211dGV4OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF6eURlY29kaW5nUGl4ZWxSZWYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF6eURlY29kaW5nUGl4ZWxSZWYuY3BwCmluZGV4IGRm
NDQ1ZGY0MDQ3OTc3OWQ1ZDA2MmMzMWQ3NzMyNmMyOWNhZjJkZDQuLjcxYjY0MjM5OGI4NzA2ZDQw
OTZkM2M5ZWZmYzc2ZTgwMTk3NzNmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xhenlEZWNvZGluZ1BpeGVsUmVmLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXp5RGVjb2RpbmdQaXhlbFJl
Zi5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgYm9vbCBMYXp5RGVjb2RpbmdQaXhlbFJlZjo6aXNDbGlw
cGVkKCkgY29uc3QKIAogdm9pZCogTGF6eURlY29kaW5nUGl4ZWxSZWY6Om9uTG9ja1BpeGVscyhT
a0NvbG9yVGFibGUqKikKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIE11dGV4
TG9ja2VyIGxvY2sobV9tdXRleCk7CiAgICAgQVNTRVJUKG1fbG9ja2VkQml0bWFwLmlzTnVsbCgp
KTsKICAgICBtX2xvY2tlZEJpdG1hcCA9IG1fZnJhbWVHZW5lcmF0b3ItPmRlY29kZUFuZFNjYWxl
KG1fc2NhbGVkU2l6ZSwgbV9zY2FsZWRTdWJzZXQpOwogICAgIGlmIChtX2xvY2tlZEJpdG1hcC5p
c051bGwoKSkKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCogTGF6eURlY29kaW5nUGl4ZWxSZWY6Om9u
TG9ja1BpeGVscyhTa0NvbG9yVGFibGUqKikKIAogdm9pZCBMYXp5RGVjb2RpbmdQaXhlbFJlZjo6
b25VbmxvY2tQaXhlbHMoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgTXV0
ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKICAgICBtX2xvY2tlZEJpdG1hcC51bmxvY2tQaXhlbHMo
KTsKICAgICBtX2xvY2tlZEJpdG1hcC5yZXNldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF6eURlY29kaW5nUGl4ZWxSZWYuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xhenlEZWNvZGluZ1Bp
eGVsUmVmLmgKaW5kZXggNGZmODljZmI0MWU1NDExYzA2MWFmOTE1ZGFkOThiMzU2YTA0ZTM3YS4u
NmU1NmIxM2QyYmViNWIyM2QzY2E1ZDNiMDgwNGU1MWE0NDAxYzU1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF6eURlY29kaW5nUGl4ZWxS
ZWYuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXp5
RGVjb2RpbmdQaXhlbFJlZi5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiU2tTaXplLmgi
CiAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1p
dGl2ZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MCw2ICs2MSw3IEBAIHByaXZh
dGU6CiAgICAgU2tJUmVjdCBtX3NjYWxlZFN1YnNldDsKIAogICAgIFNrQml0bWFwIG1fbG9ja2Vk
Qml0bWFwOworICAgIE11dGV4IG1fbXV0ZXg7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0RlZmVycmVkSW1hZ2VE
ZWNvZGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0RlZmVycmVkSW1h
Z2VEZWNvZGVyVGVzdC5jcHAKaW5kZXggNTA2N2QyMTljNDRjYWY0MTg5MzI3MjRhOTZjYjdmZWIx
NDVmOGQ2My4uNzk2OGU0YWQ3ZmVkMzkxNWUxOTg5YzExNjc0NGI2MDQ3M2M3ZWMyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EZWZlcnJlZEltYWdlRGVjb2RlclRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVmZXJyZWRJbWFnZURl
Y29kZXJUZXN0LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApA
QCAtNjMsNiArNjQsMTEgQEAgc3RhdGljIFNrQ2FudmFzKiBjcmVhdGVSYXN0ZXJDYW52YXMoaW50
IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgIHJldHVybiBuZXcgU2tDYW52YXMoZGV2aWNlKTsKIH0K
IAorc3RydWN0IFJhc3Rlcml6ZXIgeworICAgIFNrQ2FudmFzKiBjYW52YXM7CisgICAgU2tQaWN0
dXJlKiBwaWN0dXJlOworfTsKKwogY2xhc3MgRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0IDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdCwgcHVibGljIE1vY2tJbWFnZURlY29kZXJDbGllbnQgewogcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCkBAIC0xNDcsNCArMTUzLDQwIEBAIFRFU1Rf
RihEZWZlcnJlZEltYWdlRGVjb2RlclRlc3QsIGRyYXdTY2FsZWRJbnRvU2tQaWN0dXJlKQogICAg
IEVYUEVDVF9FUShTa0NvbG9yU2V0QVJHQigyNTUsIDI1NSwgMjU1LCAyNTUpLCBjYW52YXNCaXRt
YXAuZ2V0Q29sb3IoNDksIDUwKSk7CiB9CiAKK3N0YXRpYyB2b2lkIHJhc3Rlcml6ZU1haW4odm9p
ZCogYXJnKQoreworICAgIFJhc3Rlcml6ZXIqIHJhc3Rlcml6ZXIgPSBzdGF0aWNfY2FzdDxSYXN0
ZXJpemVyKj4oYXJnKTsKKyAgICByYXN0ZXJpemVyLT5jYW52YXMtPmRyYXdQaWN0dXJlKCpyYXN0
ZXJpemVyLT5waWN0dXJlKTsKK30KKworVEVTVF9GKERlZmVycmVkSW1hZ2VEZWNvZGVyVGVzdCwg
ZGVjb2RlT25PdGhlclRocmVhZCkKK3sKKyAgICBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsK
KworICAgIE93blB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlKGFkb3B0UHRyKG1fbGF6eURlY29k
ZXItPmZyYW1lQnVmZmVyQXRJbmRleCgwKS0+YXNOZXdOYXRpdmVJbWFnZSgpKSk7CisgICAgRVhQ
RUNUX0VRKDEsIGltYWdlLT5iaXRtYXAoKS53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoMSwgaW1h
Z2UtPmJpdG1hcCgpLmhlaWdodCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaW1hZ2UtPmJpdG1hcCgp
LmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShpbWFnZS0+Yml0bWFwKCkuaXNJbW11dGFibGUo
KSk7CisKKyAgICBTa0NhbnZhcyogdGVtcENhbnZhcyA9IG1fcGljdHVyZS5iZWdpblJlY29yZGlu
ZygxMDAsIDEwMCk7CisgICAgdGVtcENhbnZhcy0+ZHJhd0JpdG1hcChpbWFnZS0+Yml0bWFwKCks
IDAsIDApOworICAgIG1fcGljdHVyZS5lbmRSZWNvcmRpbmcoKTsKKyAgICBFWFBFQ1RfRVEoMCwg
bV9mcmFtZUJ1ZmZlclJlcXVlc3RDb3VudCk7CisKKyAgICAvLyBDcmVhdGUgYSB0aHJlYWQgdG8g
cmFzdGVyaXplIFNrUGljdHVyZS4KKyAgICBSYXN0ZXJpemVyIHJhc3Rlcml6ZXI7CisgICAgcmFz
dGVyaXplci5jYW52YXMgPSBtX2NhbnZhczsKKyAgICByYXN0ZXJpemVyLnBpY3R1cmUgPSAmbV9w
aWN0dXJlOworICAgIFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQgPSBjcmVhdGVUaHJlYWQoJnJh
c3Rlcml6ZU1haW4sICZyYXN0ZXJpemVyLCAiUmFzdGVyVGhyZWFkIik7CisgICAgd2FpdEZvclRo
cmVhZENvbXBsZXRpb24odGhyZWFkSUQpOworICAgIEVYUEVDVF9FUSgwLCBtX2ZyYW1lQnVmZmVy
UmVxdWVzdENvdW50KTsKKworICAgIFNrQml0bWFwIGNhbnZhc0JpdG1hcDsKKyAgICBjYW52YXNC
aXRtYXAuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgMTAwLCAxMDApOwor
ICAgIEFTU0VSVF9UUlVFKG1fY2FudmFzLT5yZWFkUGl4ZWxzKCZjYW52YXNCaXRtYXAsIDAsIDAp
KTsKKyAgICBTa0F1dG9Mb2NrUGl4ZWxzIGF1dG9Mb2NrKGNhbnZhc0JpdG1hcCk7CisgICAgRVhQ
RUNUX0VRKFNrQ29sb3JTZXRBUkdCKDI1NSwgMjU1LCAyNTUsIDI1NSksIGNhbnZhc0JpdG1hcC5n
ZXRDb2xvcigwLCAwKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175108</attachid>
            <date>2012-11-19 18:32:17 -0800</date>
            <delta_ts>2012-11-20 14:27:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102721-20121119183007.patch</filename>
            <type>text/plain</type>
            <size>9465</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY3NGMzNGRjMGZjNTcz
YzhkOTU3YjhhN2ZlZjAzOTg0NDBhOWZlYy4uNDg0NGE4ZDllZDEyNTkxZDBjMjA2MzUxNzJhMjhl
ZDkyODhhZDhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM1IEBACiAyMDEyLTExLTE5ICBBbHBo
YSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW2Nocm9taXVtXSBNYWtlIGxh
enkgaW1hZ2UgZGVjb2RpbmcgdGhyZWFkLXNhZmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjcyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG11dGV4IHRvIExhenlEZWNvZGluZ1BpeGVsUmVm
IHN1Y2ggdGhhdCB0aGVyZSBpcyBubyBwYXJhbGxlbAorICAgICAgICBvbkxvY2tQaXhlbHMoKSBy
dW5uaW5nIG9uIG11bHRpcGxlIHRocmVhZHMuCisKKyAgICAgICAgQWRkZWQgbXV0ZXggdG8gSW1h
Z2VGcmFtZUdlbmVyYXRvciB0byBwcm90ZWN0IHRoZSB1c2Ugb2YgcmF3IGltYWdlCisgICAgICAg
IGRhdGEuCisKKyAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGF0IHdlIGNhbiBkZWNvZGUgb24gdGhy
ZWFkcyBvdGhlciB0aGFuIHRoZSBtYWluCisgICAgICAgIHRocmVhZCB3aGlsZSBkYXRhIGlzIGJl
aW5nIHN1cHBsaWVkIG9uIHRoZSBtYWluIHRocmVhZC4KKworICAgICAgICBOZXcgdW5pdCB0ZXN0
OgorICAgICAgICBEZWZlcnJlZEltYWdlRGVjb2RlclRlc3QuZGVjb2RlT25PdGhlclRocmVhZAor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVyYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lR2VuZXJhdG9yOjpzZXREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVHZW5lcmF0b3I6OmRlY29kZUFuZFNjYWxlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUZyYW1lR2VuZXJhdG9y
Lmg6CisgICAgICAgIChJbWFnZUZyYW1lR2VuZXJhdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXp5RGVjb2RpbmdQaXhlbFJlZi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXp5RGVjb2RpbmdQaXhlbFJlZjo6b25Mb2NrUGl4ZWxzKToKKyAgICAgICAgKFdlYkNv
cmU6OkxhenlEZWNvZGluZ1BpeGVsUmVmOjpvblVubG9ja1BpeGVscyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF6eURlY29kaW5nUGl4ZWxSZWYuaDoKKyAgICAgICAg
KExhenlEZWNvZGluZ1BpeGVsUmVmKToKKworMjAxMi0xMS0xOSAgQWxwaGEgTGFtICA8aGNsYW1A
Y2hyb21pdW0ub3JnPgorCiAgICAgICAgIFtjaHJvbWl1bV0gTGF6eSBpbWFnZSBkZWNvZGluZyB3
aXRob3V0IGNhY2hlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDIwMjEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA0ZmY3YmJiZjQ1Zjk2
NDQ2N2NjNzQ4NjU4N2Q5OWJlOGUzZTY1OGQzLi42MjAwMzQzMjY3MDYxYTRjOGVjMTE2ODMxZDU4
OGJlODUwMTMyMjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIxIEBA
CiAyMDEyLTExLTE5ICBBbHBoYSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAg
W2Nocm9taXVtXSBNYWtlIGxhenkgaW1hZ2UgZGVjb2RpbmcgdGhyZWFkLXNhZmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjcyMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgbmV3IHVuaXQg
dGVzdCB0byB2ZXJpZnkgdGhhdCBsYXp5IGltYWdlIGRlY29kaW5nIG9wZXJhdGVzCisgICAgICAg
IGNvcnJlY3RseSBvbiBub24tbWFpbiB0aHJlYWRzLgorCisgICAgICAgICogdGVzdHMvRGVmZXJy
ZWRJbWFnZURlY29kZXJUZXN0LmNwcDoKKyAgICAgICAgKFJhc3Rlcml6ZXIpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpyYXN0ZXJpemVNYWluKToKKyAgICAgICAgKFdl
YkNvcmU6OlRFU1RfRik6CisKKzIwMTItMTEtMTkgIEFscGhhIExhbSAgPGhjbGFtQGNocm9taXVt
Lm9yZz4KKwogICAgICAgICBbY2hyb21pdW1dIExhenkgaW1hZ2UgZGVjb2Rpbmcgd2l0aG91dCBj
YWNoZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAy
MDIxCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ltYWdlRnJhbWVHZW5lcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVyYXRvci5jcHAKaW5kZXggMjM2NzgzMzE1MzMy
ZWQ5MDUxZTgzMWM2MWQzMDdlZGZmNWViYTM1Yi4uZmU0ZTRiZmJlZGNjZjRkNDYyOTA5ZWRiMmZj
MTUyNTIxNTg3ZWM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVyYXRvci5jcHAKQEAgLTQ2
LDE3ICs0NiwzMSBAQCBJbWFnZUZyYW1lR2VuZXJhdG9yOjp+SW1hZ2VGcmFtZUdlbmVyYXRvcigp
CiAKIHZvaWQgSW1hZ2VGcmFtZUdlbmVyYXRvcjo6c2V0RGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsK
KyAgICAvLyBGSVhNRTogRG9pbmcgYSBmdWxsIGNvcHkgaXMgZXhwZW5zaXZlLCBpbnN0ZWFkIGNv
cHkgb25seSBuZXcgZGF0YS4KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhQ29weSA9IGRh
dGEtPmNvcHkoKTsKKworICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgbV9kYXRh
ID0gZGF0YUNvcHk7CiAgICAgbV9hbGxEYXRhUmVjZWl2ZWQgPSBhbGxEYXRhUmVjZWl2ZWQ7CiB9
CiAKIFNrQml0bWFwIEltYWdlRnJhbWVHZW5lcmF0b3I6OmRlY29kZUFuZFNjYWxlKGNvbnN0IFNr
SVNpemUmIHNjYWxlZFNpemUsIGNvbnN0IFNrSVJlY3QmIHNjYWxlZFN1YnNldCkKIHsKLSAgICBP
d25QdHI8SW1hZ2VEZWNvZGVyPiBkZWNvZGVyKGFkb3B0UHRyKEltYWdlRGVjb2Rlcjo6Y3JlYXRl
KCptX2RhdGEuZ2V0KCksIEltYWdlU291cmNlOjpBbHBoYVByZW11bHRpcGxpZWQsIEltYWdlU291
cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZUFwcGxpZWQpKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YTsKKyAgICBib29sIGFsbERhdGFSZWNlaXZlZCA9IGZhbHNlOworICAgIHsKKyAg
ICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKworICAgICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGRvIGEgc2hhbGxvdyBjb3B5IGluc3RlYWQuIE5vdyB3ZSdyZSByZXN0cmljdGVkIGJ5
IHRoZSBBUEkgb2YgU2hhcmVkQnVmZmVyLgorICAgICAgICBkYXRhID0gbV9kYXRhLT5jb3B5KCk7
CisgICAgICAgIGFsbERhdGFSZWNlaXZlZCA9IG1fYWxsRGF0YVJlY2VpdmVkOworICAgIH0KKwor
ICAgIE93blB0cjxJbWFnZURlY29kZXI+IGRlY29kZXIoYWRvcHRQdHIoSW1hZ2VEZWNvZGVyOjpj
cmVhdGUoKmRhdGEuZ2V0KCksIEltYWdlU291cmNlOjpBbHBoYVByZW11bHRpcGxpZWQsIEltYWdl
U291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZUFwcGxpZWQpKSk7CiAgICAgaWYgKCFkZWNvZGVy
KQogICAgICAgICByZXR1cm4gU2tCaXRtYXAoKTsKIAotICAgIGRlY29kZXItPnNldERhdGEobV9k
YXRhLmdldCgpLCBtX2FsbERhdGFSZWNlaXZlZCk7CisgICAgZGVjb2Rlci0+c2V0RGF0YShkYXRh
LmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIEltYWdlRnJhbWUqIGZyYW1lID0gZGVjb2Rl
ci0+ZnJhbWVCdWZmZXJBdEluZGV4KDApOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVy
biBTa0JpdG1hcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVyYXRvci5oCmluZGV4IDFjNWQ2Y2Y2
ZWViZDAwZTg2OWQ1ZmFjODIxMzkyNzMxYzQ4YjMyNzguLmJiOWUxNTRjMTc2M2M5YjdkNjZmMjBk
NzZlYWFjNDIxNmQwM2U4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ltYWdlRnJhbWVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUZyYW1lR2VuZXJhdG9yLmgKQEAgLTMy
LDEyICszMiwxNCBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKLWNsYXNz
IEltYWdlRnJhbWVHZW5lcmF0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUZyYW1lR2VuZXJh
dG9yPiB7CitjbGFzcyBJbWFnZUZyYW1lR2VuZXJhdG9yIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPEltYWdlRnJhbWVHZW5lcmF0b3I+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJbWFnZUZyYW1lR2VuZXJhdG9yPiBjcmVhdGUoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIHsKQEAgLTU0LDYgKzU2LDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgYm9v
bCBtX2FsbERhdGFSZWNlaXZlZDsKKyAgICBNdXRleCBtX211dGV4OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF6eURlY29kaW5nUGl4ZWxSZWYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF6eURlY29kaW5nUGl4ZWxSZWYuY3BwCmluZGV4IGRm
NDQ1ZGY0MDQ3OTc3OWQ1ZDA2MmMzMWQ3NzMyNmMyOWNhZjJkZDQuLjcyNWRjMzQyZjc4NjUwNWEw
YzEzY2I2YjBlMGI2ZWU5ZDNiNGExYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xhenlEZWNvZGluZ1BpeGVsUmVmLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXp5RGVjb2RpbmdQaXhlbFJl
Zi5jcHAKQEAgLTU3LDIwICs1NywyMiBAQCBib29sIExhenlEZWNvZGluZ1BpeGVsUmVmOjppc0Ns
aXBwZWQoKSBjb25zdAogCiB2b2lkKiBMYXp5RGVjb2RpbmdQaXhlbFJlZjo6b25Mb2NrUGl4ZWxz
KFNrQ29sb3JUYWJsZSoqKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgbV9t
dXRleC5sb2NrKCk7CiAgICAgQVNTRVJUKG1fbG9ja2VkQml0bWFwLmlzTnVsbCgpKTsKICAgICBt
X2xvY2tlZEJpdG1hcCA9IG1fZnJhbWVHZW5lcmF0b3ItPmRlY29kZUFuZFNjYWxlKG1fc2NhbGVk
U2l6ZSwgbV9zY2FsZWRTdWJzZXQpOwotICAgIGlmIChtX2xvY2tlZEJpdG1hcC5pc051bGwoKSkK
KyAgICBpZiAobV9sb2NrZWRCaXRtYXAuaXNOdWxsKCkpIHsKKyAgICAgICAgbV9tdXRleC51bmxv
Y2soKTsKICAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIG1fbG9ja2VkQml0bWFwLmxvY2tQ
aXhlbHMoKTsKICAgICByZXR1cm4gbV9sb2NrZWRCaXRtYXAuZ2V0QWRkcigwLCAwKTsKIH0KIAog
dm9pZCBMYXp5RGVjb2RpbmdQaXhlbFJlZjo6b25VbmxvY2tQaXhlbHMoKQogewotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgbV9sb2NrZWRCaXRtYXAudW5sb2NrUGl4ZWxzKCk7CiAg
ICAgbV9sb2NrZWRCaXRtYXAucmVzZXQoKTsKKyAgICBtX211dGV4LnVubG9jaygpOwogfQogCiBi
b29sIExhenlEZWNvZGluZ1BpeGVsUmVmOjpvbkxvY2tQaXhlbHNBcmVXcml0YWJsZSgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXp5RGVjb2RpbmdQaXhlbFJlZi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF6eURlY29kaW5nUGl4ZWxSZWYuaAppbmRleCA0ZmY4OWNmYjQxZTU0MTFjMDYx
YWY5MTVkYWQ5OGIzNTZhMDRlMzdhLi42ZTU2YjEzZDJiZWI1YjIzZDNjYTVkM2IwODA0ZTUxYTQ0
MDFjNTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXp5RGVjb2RpbmdQaXhlbFJlZi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xhenlEZWNvZGluZ1BpeGVsUmVmLmgKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJTa1NpemUuaCIKIAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTYwLDYgKzYxLDcgQEAgcHJpdmF0ZToKICAgICBTa0lSZWN0IG1fc2NhbGVkU3Vic2V0Owog
CiAgICAgU2tCaXRtYXAgbV9sb2NrZWRCaXRtYXA7CisgICAgTXV0ZXggbV9tdXRleDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LmNwcAppbmRleCA1MDY3ZDIxOWM0
NGNhZjQxODkzMjcyNGE5NmNiN2ZlYjE0NWY4ZDYzLi43OTY4ZTRhZDdmZWQzOTE1ZTE5ODljMTE2
NzQ0YjYwNDczYzdlYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0RlZmVycmVkSW1hZ2VEZWNvZGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9EZWZlcnJlZEltYWdlRGVjb2RlclRlc3QuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAj
aW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC02Myw2ICs2NCwxMSBAQCBzdGF0aWMgU2tDYW52YXMq
IGNyZWF0ZVJhc3RlckNhbnZhcyhpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgcmV0dXJuIG5l
dyBTa0NhbnZhcyhkZXZpY2UpOwogfQogCitzdHJ1Y3QgUmFzdGVyaXplciB7CisgICAgU2tDYW52
YXMqIGNhbnZhczsKKyAgICBTa1BpY3R1cmUqIHBpY3R1cmU7Cit9OworCiBjbGFzcyBEZWZlcnJl
ZEltYWdlRGVjb2RlclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0LCBwdWJsaWMgTW9ja0lt
YWdlRGVjb2RlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKQEAg
LTE0Nyw0ICsxNTMsNDAgQEAgVEVTVF9GKERlZmVycmVkSW1hZ2VEZWNvZGVyVGVzdCwgZHJhd1Nj
YWxlZEludG9Ta1BpY3R1cmUpCiAgICAgRVhQRUNUX0VRKFNrQ29sb3JTZXRBUkdCKDI1NSwgMjU1
LCAyNTUsIDI1NSksIGNhbnZhc0JpdG1hcC5nZXRDb2xvcig0OSwgNTApKTsKIH0KIAorc3RhdGlj
IHZvaWQgcmFzdGVyaXplTWFpbih2b2lkKiBhcmcpCit7CisgICAgUmFzdGVyaXplciogcmFzdGVy
aXplciA9IHN0YXRpY19jYXN0PFJhc3Rlcml6ZXIqPihhcmcpOworICAgIHJhc3Rlcml6ZXItPmNh
bnZhcy0+ZHJhd1BpY3R1cmUoKnJhc3Rlcml6ZXItPnBpY3R1cmUpOworfQorCitURVNUX0YoRGVm
ZXJyZWRJbWFnZURlY29kZXJUZXN0LCBkZWNvZGVPbk90aGVyVGhyZWFkKQoreworICAgIFdURjo6
aW5pdGlhbGl6ZVRocmVhZGluZygpOworCisgICAgT3duUHRyPE5hdGl2ZUltYWdlU2tpYT4gaW1h
Z2UoYWRvcHRQdHIobV9sYXp5RGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KDApLT5hc05ld05h
dGl2ZUltYWdlKCkpKTsKKyAgICBFWFBFQ1RfRVEoMSwgaW1hZ2UtPmJpdG1hcCgpLndpZHRoKCkp
OworICAgIEVYUEVDVF9FUSgxLCBpbWFnZS0+Yml0bWFwKCkuaGVpZ2h0KCkpOworICAgIEVYUEVD
VF9GQUxTRShpbWFnZS0+Yml0bWFwKCkuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGltYWdl
LT5iaXRtYXAoKS5pc0ltbXV0YWJsZSgpKTsKKworICAgIFNrQ2FudmFzKiB0ZW1wQ2FudmFzID0g
bV9waWN0dXJlLmJlZ2luUmVjb3JkaW5nKDEwMCwgMTAwKTsKKyAgICB0ZW1wQ2FudmFzLT5kcmF3
Qml0bWFwKGltYWdlLT5iaXRtYXAoKSwgMCwgMCk7CisgICAgbV9waWN0dXJlLmVuZFJlY29yZGlu
ZygpOworICAgIEVYUEVDVF9FUSgwLCBtX2ZyYW1lQnVmZmVyUmVxdWVzdENvdW50KTsKKworICAg
IC8vIENyZWF0ZSBhIHRocmVhZCB0byByYXN0ZXJpemUgU2tQaWN0dXJlLgorICAgIFJhc3Rlcml6
ZXIgcmFzdGVyaXplcjsKKyAgICByYXN0ZXJpemVyLmNhbnZhcyA9IG1fY2FudmFzOworICAgIHJh
c3Rlcml6ZXIucGljdHVyZSA9ICZtX3BpY3R1cmU7CisgICAgVGhyZWFkSWRlbnRpZmllciB0aHJl
YWRJRCA9IGNyZWF0ZVRocmVhZCgmcmFzdGVyaXplTWFpbiwgJnJhc3Rlcml6ZXIsICJSYXN0ZXJU
aHJlYWQiKTsKKyAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbih0aHJlYWRJRCk7CisgICAgRVhQ
RUNUX0VRKDAsIG1fZnJhbWVCdWZmZXJSZXF1ZXN0Q291bnQpOworCisgICAgU2tCaXRtYXAgY2Fu
dmFzQml0bWFwOworICAgIGNhbnZhc0JpdG1hcC5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdCXzg4
ODhfQ29uZmlnLCAxMDAsIDEwMCk7CisgICAgQVNTRVJUX1RSVUUobV9jYW52YXMtPnJlYWRQaXhl
bHMoJmNhbnZhc0JpdG1hcCwgMCwgMCkpOworICAgIFNrQXV0b0xvY2tQaXhlbHMgYXV0b0xvY2so
Y2FudmFzQml0bWFwKTsKKyAgICBFWFBFQ1RfRVEoU2tDb2xvclNldEFSR0IoMjU1LCAyNTUsIDI1
NSwgMjU1KSwgY2FudmFzQml0bWFwLmdldENvbG9yKDAsIDApKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UK
</data>

          </attachment>
      

    </bug>

</bugzilla>