<?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>46838</bug_id>
          
          <creation_ts>2010-09-29 14:15:06 -0700</creation_ts>
          <short_desc>Get rid of marginStartUsing/setMarginStartUsing on RenderBox</short_desc>
          <delta_ts>2010-09-29 14:45:51 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>46123</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>287114</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-09-29 14:15:06 -0700</bug_when>
    <thetext>Get rid of marginStartUsing/setMarginStartUsing on RenderBox (and before/after/end).  It&apos;s cleaner to invert the relationship and make the methods be on the containing block instead.  This also allows the getters to work with RenderInlines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287117</commentid>
    <comment_count>1</comment_count>
      <attachid>69247</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-09-29 14:20:42 -0700</bug_when>
    <thetext>Created attachment 69247
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287119</commentid>
    <comment_count>2</comment_count>
      <attachid>69248</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-09-29 14:25:49 -0700</bug_when>
    <thetext>Created attachment 69248
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287132</commentid>
    <comment_count>3</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-09-29 14:45:51 -0700</bug_when>
    <thetext>Fixed in r68687.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69247</attachid>
            <date>2010-09-29 14:20:42 -0700</date>
            <delta_ts>2010-09-29 14:25:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>18550</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODY4NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMTAtMDktMjkgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5lZWQg
YSBzaG9ydCBkZXNjcmlwdGlvbiBhbmQgYnVnIFVSTCAoT09QUyEpCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxheW91dEJsb2NrQ2hpbGQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6Om1hcmdpbkJlZm9yZUZvckNoaWxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjptYXJnaW5BZnRlckZvckNoaWxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjptYXJnaW5TdGFydEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjptYXJnaW5FbmRGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6c2V0TWFyZ2luU3RhcnRGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6c2V0TWFyZ2luRW5kRm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OnNldE1hcmdpbkJlZm9yZUZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjpzZXRNYXJnaW5BZnRlckZvckNoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQmxvY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsb2dpY2FsSGVp
Z2h0Rm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxUb3BG
b3JDaGlsZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6Om1hcmdpbkJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6Om1hcmdpbkFmdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6bWFyZ2lu
U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjptYXJnaW5FbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzZXRNYXJnaW5TdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6OnNldE1hcmdpbkVuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OnNldE1hcmdpbkJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNldE1hcmdp
bkFmdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0
aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25N
YXJnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUJsb2NrRGlyZWN0
aW9uTWFyZ2lucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpzZXRNYXJnaW5Ub3ApOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94OjpzZXRNYXJnaW5Cb3R0b20pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpz
ZXRNYXJnaW5MZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c2V0TWFyZ2luUmln
aHQpOgorCiAyMDEwLTA5LTI5ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAJKHJldmlzaW9uIDY4NjgxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQ5LDcgKzE5NDksNyBAQCB2b2lkIFJlbmRlckJsb2Nr
OjpsYXlvdXRCbG9ja0NoaWxkKFJlbmRlCiAgICAgLy8gVXBkYXRlIG91ciBoZWlnaHQgbm93IHRo
YXQgdGhlIGNoaWxkIGhhcyBiZWVuIHBsYWNlZCBpbiB0aGUgY29ycmVjdCBwb3NpdGlvbi4KICAg
ICBzZXRMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQoKSArIGxvZ2ljYWxIZWlnaHRGb3JDaGls
ZChjaGlsZCkpOwogICAgIGlmIChjaGlsZC0+c3R5bGUoKS0+bWFyZ2luQWZ0ZXJDb2xsYXBzZSgp
ID09IE1TRVBBUkFURSkgewotICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQo
KSArIGNoaWxkLT5tYXJnaW5BZnRlclVzaW5nKHN0eWxlKCkpKTsKKyAgICAgICAgc2V0TG9naWNh
bEhlaWdodChsb2dpY2FsSGVpZ2h0KCkgKyBtYXJnaW5BZnRlckZvckNoaWxkKGNoaWxkKSk7CiAg
ICAgICAgIG1hcmdpbkluZm8uY2xlYXJNYXJnaW4oKTsKICAgICB9CiAgICAgLy8gSWYgdGhlIGNo
aWxkIGhhcyBvdmVyaGFuZ2luZyBmbG9hdHMgdGhhdCBpbnRydWRlIGludG8gZm9sbG93aW5nIHNp
YmxpbmdzIChvciBwb3NzaWJseSBvdXQKQEAgLTYwMTksNyArNjAxOSwxMTkgQEAgdm9pZCBSZW5k
ZXJCbG9jazo6YWRqdXN0TGluZVBvc2l0aW9uRm9yUAogICAgICAgICB9CiAgICAgfSAgCiB9Ci0g
CisKK2ludCBSZW5kZXJCbG9jazo6bWFyZ2luQmVmb3JlRm9yQ2hpbGQoUmVuZGVyQm94TW9kZWxP
YmplY3QqIGNoaWxkKSBjb25zdAoreworICAgIHN3aXRjaCAoc3R5bGUoKS0+YmxvY2tGbG93KCkp
IHsKKyAgICBjYXNlIFRvcFRvQm90dG9tQmxvY2tGbG93OgorICAgICAgICByZXR1cm4gY2hpbGQt
Pm1hcmdpblRvcCgpOworICAgIGNhc2UgQm90dG9tVG9Ub3BCbG9ja0Zsb3c6CisgICAgICAgIHJl
dHVybiBjaGlsZC0+bWFyZ2luQm90dG9tKCk7CisgICAgY2FzZSBMZWZ0VG9SaWdodEJsb2NrRmxv
dzoKKyAgICAgICAgcmV0dXJuIGNoaWxkLT5tYXJnaW5MZWZ0KCk7CisgICAgY2FzZSBSaWdodFRv
TGVmdEJsb2NrRmxvdzoKKyAgICAgICAgcmV0dXJuIGNoaWxkLT5tYXJnaW5SaWdodCgpOworICAg
IH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gY2hpbGQtPm1hcmdpblRv
cCgpOworfQorCitpbnQgUmVuZGVyQmxvY2s6Om1hcmdpbkFmdGVyRm9yQ2hpbGQoUmVuZGVyQm94
TW9kZWxPYmplY3QqIGNoaWxkKSBjb25zdAoreworICAgIHN3aXRjaCAoc3R5bGUoKS0+YmxvY2tG
bG93KCkpIHsKKyAgICBjYXNlIFRvcFRvQm90dG9tQmxvY2tGbG93OgorICAgICAgICByZXR1cm4g
Y2hpbGQtPm1hcmdpbkJvdHRvbSgpOworICAgIGNhc2UgQm90dG9tVG9Ub3BCbG9ja0Zsb3c6Cisg
ICAgICAgIHJldHVybiBjaGlsZC0+bWFyZ2luVG9wKCk7CisgICAgY2FzZSBMZWZ0VG9SaWdodEJs
b2NrRmxvdzoKKyAgICAgICAgcmV0dXJuIGNoaWxkLT5tYXJnaW5SaWdodCgpOworICAgIGNhc2Ug
UmlnaHRUb0xlZnRCbG9ja0Zsb3c6CisgICAgICAgIHJldHVybiBjaGlsZC0+bWFyZ2luTGVmdCgp
OworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gY2hpbGQtPm1h
cmdpbkJvdHRvbSgpOworfQorICAgIAoraW50IFJlbmRlckJsb2NrOjptYXJnaW5TdGFydEZvckNo
aWxkKFJlbmRlckJveE1vZGVsT2JqZWN0KiBjaGlsZCkgY29uc3QKK3sKKyAgICBpZiAoc3R5bGUo
KS0+aXNWZXJ0aWNhbEJsb2NrRmxvdygpKQorICAgICAgICByZXR1cm4gc3R5bGUoKS0+ZGlyZWN0
aW9uKCkgPT0gTFRSID8gY2hpbGQtPm1hcmdpbkxlZnQoKSA6IGNoaWxkLT5tYXJnaW5SaWdodCgp
OworICAgIHJldHVybiBzdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBMVFIgPyBjaGlsZC0+bWFyZ2lu
VG9wKCkgOiBjaGlsZC0+bWFyZ2luQm90dG9tKCk7Cit9CisKK2ludCBSZW5kZXJCbG9jazo6bWFy
Z2luRW5kRm9yQ2hpbGQoUmVuZGVyQm94TW9kZWxPYmplY3QqIGNoaWxkKSBjb25zdAoreworICAg
IGlmIChzdHlsZSgpLT5pc1ZlcnRpY2FsQmxvY2tGbG93KCkpCisgICAgICAgIHJldHVybiBzdHls
ZSgpLT5kaXJlY3Rpb24oKSA9PSBMVFIgPyBjaGlsZC0+bWFyZ2luUmlnaHQoKSA6IGNoaWxkLT5t
YXJnaW5MZWZ0KCk7CisgICAgcmV0dXJuIHN0eWxlKCktPmRpcmVjdGlvbigpID09IExUUiA/IGNo
aWxkLT5tYXJnaW5Cb3R0b20oKSA6IGNoaWxkLT5tYXJnaW5Ub3AoKTsKK30KKwordm9pZCBSZW5k
ZXJCbG9jazo6c2V0TWFyZ2luU3RhcnRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBpbnQgbWFy
Z2luKQoreworICAgIGlmIChzdHlsZSgpLT5pc1ZlcnRpY2FsQmxvY2tGbG93KCkpIHsKKyAgICAg
ICAgaWYgKHN0eWxlKCktPmRpcmVjdGlvbigpID09IExUUikKKyAgICAgICAgICAgIGNoaWxkLT5z
ZXRNYXJnaW5MZWZ0KG1hcmdpbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNoaWxkLT5z
ZXRNYXJnaW5SaWdodChtYXJnaW4pOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChzdHlsZSgp
LT5kaXJlY3Rpb24oKSA9PSBMVFIpCisgICAgICAgICAgICBjaGlsZC0+c2V0TWFyZ2luVG9wKG1h
cmdpbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNoaWxkLT5zZXRNYXJnaW5Cb3R0b20o
bWFyZ2luKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyQmxvY2s6OnNldE1hcmdpbkVuZEZvckNo
aWxkKFJlbmRlckJveCogY2hpbGQsIGludCBtYXJnaW4pCit7CisgICAgaWYgKHN0eWxlKCktPmlz
VmVydGljYWxCbG9ja0Zsb3coKSkgeworICAgICAgICBpZiAoc3R5bGUoKS0+ZGlyZWN0aW9uKCkg
PT0gTFRSKQorICAgICAgICAgICAgY2hpbGQtPnNldE1hcmdpblJpZ2h0KG1hcmdpbik7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGNoaWxkLT5zZXRNYXJnaW5MZWZ0KG1hcmdpbik7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgaWYgKHN0eWxlKCktPmRpcmVjdGlvbigpID09IExUUikKKyAgICAg
ICAgICAgIGNoaWxkLT5zZXRNYXJnaW5Cb3R0b20obWFyZ2luKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgY2hpbGQtPnNldE1hcmdpblRvcChtYXJnaW4pOworICAgIH0KK30KKwordm9pZCBS
ZW5kZXJCbG9jazo6c2V0TWFyZ2luQmVmb3JlRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgaW50
IG1hcmdpbikKK3sKKyAgICBzd2l0Y2ggKHN0eWxlKCktPmJsb2NrRmxvdygpKSB7CisgICAgY2Fz
ZSBUb3BUb0JvdHRvbUJsb2NrRmxvdzoKKyAgICAgICAgY2hpbGQtPnNldE1hcmdpblRvcChtYXJn
aW4pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEJvdHRvbVRvVG9wQmxvY2tGbG93OgorICAg
ICAgICBjaGlsZC0+c2V0TWFyZ2luQm90dG9tKG1hcmdpbik7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgTGVmdFRvUmlnaHRCbG9ja0Zsb3c6CisgICAgICAgIGNoaWxkLT5zZXRNYXJnaW5MZWZ0
KG1hcmdpbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUmlnaHRUb0xlZnRCbG9ja0Zsb3c6
CisgICAgICAgIGNoaWxkLT5zZXRNYXJnaW5SaWdodChtYXJnaW4pOworICAgICAgICBicmVhazsK
KyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyQmxvY2s6OnNldE1hcmdpbkFmdGVyRm9yQ2hpbGQoUmVu
ZGVyQm94KiBjaGlsZCwgaW50IG1hcmdpbikKK3sKKyAgICBzd2l0Y2ggKHN0eWxlKCktPmJsb2Nr
RmxvdygpKSB7CisgICAgY2FzZSBUb3BUb0JvdHRvbUJsb2NrRmxvdzoKKyAgICAgICAgY2hpbGQt
PnNldE1hcmdpbkJvdHRvbShtYXJnaW4pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEJvdHRv
bVRvVG9wQmxvY2tGbG93OgorICAgICAgICBjaGlsZC0+c2V0TWFyZ2luVG9wKG1hcmdpbik7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgTGVmdFRvUmlnaHRCbG9ja0Zsb3c6CisgICAgICAgIGNo
aWxkLT5zZXRNYXJnaW5SaWdodChtYXJnaW4pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJp
Z2h0VG9MZWZ0QmxvY2tGbG93OgorICAgICAgICBjaGlsZC0+c2V0TWFyZ2luTGVmdChtYXJnaW4p
OworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKIGNvbnN0IGNoYXIqIFJlbmRlckJsb2NrOjpy
ZW5kZXJOYW1lKCkgY29uc3QKIHsKICAgICBpZiAoaXNCb2R5KCkpCkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmgJKHJldmlzaW9uIDY4Njc4KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDYgKzE2OSwxOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRQYWdpbmF0aW9uU3RydXQoaW50IHN0cnV0KTsKICAgICB2b2lkIHNldFBhZ2VZKGlu
dCB5KTsKIAorICAgIC8vIEFjY2Vzc29ycyBmb3IgbG9naWNhbCB3aWR0aC9oZWlnaHQgYW5kIG1h
cmdpbnMgaW4gdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBibG9jay1mbG93IGRpcmVjdGlvbi4KKyAg
ICBpbnQgbG9naWNhbEhlaWdodEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpIHsgcmV0dXJuIHN0
eWxlKCktPmlzVmVydGljYWxCbG9ja0Zsb3coKSA/IGNoaWxkLT5oZWlnaHQoKSA6IGNoaWxkLT53
aWR0aCgpOyB9CisgICAgaW50IGxvZ2ljYWxUb3BGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSB7
IHJldHVybiBzdHlsZSgpLT5pc1ZlcnRpY2FsQmxvY2tGbG93KCkgPyBjaGlsZC0+eSgpIDogY2hp
bGQtPngoKTsgfQorICAgIGludCBtYXJnaW5CZWZvcmVGb3JDaGlsZChSZW5kZXJCb3hNb2RlbE9i
amVjdCogY2hpbGQpIGNvbnN0OworICAgIGludCBtYXJnaW5BZnRlckZvckNoaWxkKFJlbmRlckJv
eE1vZGVsT2JqZWN0KiBjaGlsZCkgY29uc3Q7CisgICAgaW50IG1hcmdpblN0YXJ0Rm9yQ2hpbGQo
UmVuZGVyQm94TW9kZWxPYmplY3QqIGNoaWxkKSBjb25zdDsKKyAgICBpbnQgbWFyZ2luRW5kRm9y
Q2hpbGQoUmVuZGVyQm94TW9kZWxPYmplY3QqIGNoaWxkKSBjb25zdDsKKyAgICB2b2lkIHNldE1h
cmdpblN0YXJ0Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgaW50KTsKKyAgICB2b2lkIHNldE1h
cmdpbkVuZEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQsIGludCk7CisgICAgdm9pZCBzZXRNYXJn
aW5CZWZvcmVGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBpbnQpOworICAgIHZvaWQgc2V0TWFy
Z2luQWZ0ZXJGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBpbnQpOworCiBwcm90ZWN0ZWQ6CiAg
ICAgLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IHVzZWQgaW50ZXJuYWxseSB0byBtYW5pcHVs
YXRlIHRoZSByZW5kZXIgdHJlZSBzdHJ1Y3R1cmUgdmlhIHJlbW92ZS9pbnNlcnQvYXBwZW5kQ2hp
bGROb2RlLgogICAgIC8vIFNpbmNlIHRoZXkgYXJlIHR5cGljYWxseSBjYWxsZWQgb25seSB0byBt
b3ZlIG9iamVjdHMgYXJvdW5kIHdpdGhpbiBhbm9ueW1vdXMgYmxvY2tzICh3aGljaCBvbmx5IGhh
dmUgbGF5ZXJzIGluCkBAIC01NzEsOCArNTgzLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRs
ZUFmdGVyU2lkZU9mQmxvY2soaW50IHRvcCwgaW50IGJvdHRvbSwgTWFyZ2luSW5mbyYpOwogICAg
IHZvaWQgc2V0Q29sbGFwc2VkQm90dG9tTWFyZ2luKGNvbnN0IE1hcmdpbkluZm8mKTsKICAgICB2
b2lkIHNldExvZ2ljYWxUb3BGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBpbnQgbG9naWNhbFRv
cCk7Ci0gICAgaW50IGxvZ2ljYWxIZWlnaHRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSB7IHJl
dHVybiBzdHlsZSgpLT5pc1ZlcnRpY2FsQmxvY2tGbG93KCkgPyBjaGlsZC0+aGVpZ2h0KCkgOiBj
aGlsZC0+d2lkdGgoKTsgfQotICAgIGludCBsb2dpY2FsVG9wRm9yQ2hpbGQoUmVuZGVyQm94KiBj
aGlsZCkgeyByZXR1cm4gc3R5bGUoKS0+aXNWZXJ0aWNhbEJsb2NrRmxvdygpID8gY2hpbGQtPnko
KSA6IGNoaWxkLT54KCk7IH0KICAgICAvLyBFbmQgaGVscGVyIGZ1bmN0aW9ucyBhbmQgc3RydWN0
cyB1c2VkIGJ5IGxheW91dEJsb2NrQ2hpbGRyZW4uCiAKICAgICAvLyBQYWdpbmF0aW9uIHJvdXRp
bmVzLgpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiA2ODY4MSkKKysrIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDEyICs4
NSw3IEBAIFJlbmRlckJveDo6flJlbmRlckJveCgpCiAKIGludCBSZW5kZXJCb3g6Om1hcmdpbkJl
Zm9yZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1hcmdpbkJlZm9yZVVzaW5nKHN0eWxlKCkpOwot
fQotCi1pbnQgUmVuZGVyQm94OjptYXJnaW5CZWZvcmVVc2luZyhjb25zdCBSZW5kZXJTdHlsZSog
cykgY29uc3QKLXsKLSAgICBzd2l0Y2ggKHMtPmJsb2NrRmxvdygpKSB7CisgICAgc3dpdGNoIChz
dHlsZSgpLT5ibG9ja0Zsb3coKSkgewogICAgIGNhc2UgVG9wVG9Cb3R0b21CbG9ja0Zsb3c6CiAg
ICAgICAgIHJldHVybiBtX21hcmdpblRvcDsKICAgICBjYXNlIEJvdHRvbVRvVG9wQmxvY2tGbG93
OgpAQCAtMTA2LDEyICsxMDEsNyBAQCBpbnQgUmVuZGVyQm94OjptYXJnaW5CZWZvcmVVc2luZyhj
b25zdCBSCiAKIGludCBSZW5kZXJCb3g6Om1hcmdpbkFmdGVyKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbWFyZ2luQWZ0ZXJVc2luZyhzdHlsZSgpKTsKLX0KLQotaW50IFJlbmRlckJveDo6bWFyZ2lu
QWZ0ZXJVc2luZyhjb25zdCBSZW5kZXJTdHlsZSogcykgY29uc3QKLXsKLSAgICBzd2l0Y2ggKHMt
PmJsb2NrRmxvdygpKSB7CisgICAgc3dpdGNoIChzdHlsZSgpLT5ibG9ja0Zsb3coKSkgewogICAg
IGNhc2UgVG9wVG9Cb3R0b21CbG9ja0Zsb3c6CiAgICAgICAgIHJldHVybiBtX21hcmdpbkJvdHRv
bTsKICAgICBjYXNlIEJvdHRvbVRvVG9wQmxvY2tGbG93OgpAQCAtMTI3LDYyICsxMTcsNDIgQEAg
aW50IFJlbmRlckJveDo6bWFyZ2luQWZ0ZXJVc2luZyhjb25zdCBSZQogCiBpbnQgUmVuZGVyQm94
OjptYXJnaW5TdGFydCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1hcmdpblN0YXJ0VXNpbmcoc3R5
bGUoKSk7Ci19Ci0KLWludCBSZW5kZXJCb3g6Om1hcmdpblN0YXJ0VXNpbmcoY29uc3QgUmVuZGVy
U3R5bGUqIHMpIGNvbnN0Ci17Ci0gICAgaWYgKHMtPmlzVmVydGljYWxCbG9ja0Zsb3coKSkKLSAg
ICAgICAgcmV0dXJuIHMtPmRpcmVjdGlvbigpID09IExUUiA/IG1fbWFyZ2luTGVmdCA6IG1fbWFy
Z2luUmlnaHQ7Ci0gICAgcmV0dXJuIHMtPmRpcmVjdGlvbigpID09IExUUiA/IG1fbWFyZ2luVG9w
IDogbV9tYXJnaW5Cb3R0b207CisgICAgaWYgKHN0eWxlKCktPmlzVmVydGljYWxCbG9ja0Zsb3co
KSkKKyAgICAgICAgcmV0dXJuIHN0eWxlKCktPmRpcmVjdGlvbigpID09IExUUiA/IG1fbWFyZ2lu
TGVmdCA6IG1fbWFyZ2luUmlnaHQ7CisgICAgcmV0dXJuIHN0eWxlKCktPmRpcmVjdGlvbigpID09
IExUUiA/IG1fbWFyZ2luVG9wIDogbV9tYXJnaW5Cb3R0b207CiB9CiAKIGludCBSZW5kZXJCb3g6
Om1hcmdpbkVuZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1hcmdpbkVuZFVzaW5nKHN0eWxlKCkp
OwotfQotCi1pbnQgUmVuZGVyQm94OjptYXJnaW5FbmRVc2luZyhjb25zdCBSZW5kZXJTdHlsZSog
cykgY29uc3QKLXsKLSAgICBpZiAocy0+aXNWZXJ0aWNhbEJsb2NrRmxvdygpKQotICAgICAgICBy
ZXR1cm4gcy0+ZGlyZWN0aW9uKCkgPT0gTFRSID8gbV9tYXJnaW5SaWdodCA6IG1fbWFyZ2luTGVm
dDsKLSAgICByZXR1cm4gcy0+ZGlyZWN0aW9uKCkgPT0gTFRSID8gbV9tYXJnaW5Cb3R0b20gOiBt
X21hcmdpblRvcDsKKyAgICBpZiAoc3R5bGUoKS0+aXNWZXJ0aWNhbEJsb2NrRmxvdygpKQorICAg
ICAgICByZXR1cm4gc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSID8gbV9tYXJnaW5SaWdodCA6
IG1fbWFyZ2luTGVmdDsKKyAgICByZXR1cm4gc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSID8g
bV9tYXJnaW5Cb3R0b20gOiBtX21hcmdpblRvcDsKIH0KIAogdm9pZCBSZW5kZXJCb3g6OnNldE1h
cmdpblN0YXJ0KGludCBtYXJnaW4pCiB7Ci0gICAgc2V0TWFyZ2luU3RhcnRVc2luZyhzdHlsZSgp
LCBtYXJnaW4pOwotfQotCi12b2lkIFJlbmRlckJveDo6c2V0TWFyZ2luRW5kKGludCBtYXJnaW4p
Ci17Ci0gICAgc2V0TWFyZ2luRW5kVXNpbmcoc3R5bGUoKSwgbWFyZ2luKTsKLX0KLQotdm9pZCBS
ZW5kZXJCb3g6OnNldE1hcmdpblN0YXJ0VXNpbmcoY29uc3QgUmVuZGVyU3R5bGUqIHMsIGludCBt
YXJnaW4pCi17Ci0gICAgaWYgKHMtPmlzVmVydGljYWxCbG9ja0Zsb3coKSkgewotICAgICAgICBp
ZiAocy0+ZGlyZWN0aW9uKCkgPT0gTFRSKQorICAgIGlmIChzdHlsZSgpLT5pc1ZlcnRpY2FsQmxv
Y2tGbG93KCkpIHsKKyAgICAgICAgaWYgKHN0eWxlKCktPmRpcmVjdGlvbigpID09IExUUikKICAg
ICAgICAgICAgIG1fbWFyZ2luTGVmdCA9IG1hcmdpbjsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgbV9tYXJnaW5SaWdodCA9IG1hcmdpbjsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAocy0+
ZGlyZWN0aW9uKCkgPT0gTFRSKQorICAgICAgICBpZiAoc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0g
TFRSKQogICAgICAgICAgICAgbV9tYXJnaW5Ub3AgPSBtYXJnaW47CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIG1fbWFyZ2luQm90dG9tID0gbWFyZ2luOwogICAgIH0KIH0KIAotdm9pZCBSZW5k
ZXJCb3g6OnNldE1hcmdpbkVuZFVzaW5nKGNvbnN0IFJlbmRlclN0eWxlKiBzLCBpbnQgbWFyZ2lu
KQordm9pZCBSZW5kZXJCb3g6OnNldE1hcmdpbkVuZChpbnQgbWFyZ2luKQogewotICAgIGlmIChz
LT5pc1ZlcnRpY2FsQmxvY2tGbG93KCkpIHsKLSAgICAgICAgaWYgKHMtPmRpcmVjdGlvbigpID09
IExUUikKKyAgICBpZiAoc3R5bGUoKS0+aXNWZXJ0aWNhbEJsb2NrRmxvdygpKSB7CisgICAgICAg
IGlmIChzdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBMVFIpCiAgICAgICAgICAgICBtX21hcmdpblJp
Z2h0ID0gbWFyZ2luOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX21hcmdpbkxlZnQgPSBt
YXJnaW47CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHMtPmRpcmVjdGlvbigpID09IExUUikK
KyAgICAgICAgaWYgKHN0eWxlKCktPmRpcmVjdGlvbigpID09IExUUikKICAgICAgICAgICAgIG1f
bWFyZ2luQm90dG9tID0gbWFyZ2luOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX21hcmdp
blRvcCA9IG1hcmdpbjsKQEAgLTE5MSwxNyArMTYxLDcgQEAgdm9pZCBSZW5kZXJCb3g6OnNldE1h
cmdpbkVuZFVzaW5nKGNvbnN0IAogCiB2b2lkIFJlbmRlckJveDo6c2V0TWFyZ2luQmVmb3JlKGlu
dCBtYXJnaW4pCiB7Ci0gICAgc2V0TWFyZ2luQmVmb3JlVXNpbmcoc3R5bGUoKSwgbWFyZ2luKTsK
LX0KLQotdm9pZCBSZW5kZXJCb3g6OnNldE1hcmdpbkFmdGVyKGludCBtYXJnaW4pCi17Ci0gICAg
c2V0TWFyZ2luQWZ0ZXJVc2luZyhzdHlsZSgpLCBtYXJnaW4pOwotfQotCi12b2lkIFJlbmRlckJv
eDo6c2V0TWFyZ2luQmVmb3JlVXNpbmcoY29uc3QgUmVuZGVyU3R5bGUqIHMsIGludCBtYXJnaW4p
Ci17Ci0gICAgc3dpdGNoIChzLT5ibG9ja0Zsb3coKSkgeworICAgIHN3aXRjaCAoc3R5bGUoKS0+
YmxvY2tGbG93KCkpIHsKICAgICBjYXNlIFRvcFRvQm90dG9tQmxvY2tGbG93OgogICAgICAgICBt
X21hcmdpblRvcCA9IG1hcmdpbjsKICAgICAgICAgYnJlYWs7CkBAIC0yMTcsOSArMTc3LDkgQEAg
dm9pZCBSZW5kZXJCb3g6OnNldE1hcmdpbkJlZm9yZVVzaW5nKGNvbgogICAgIH0KIH0KIAotdm9p
ZCBSZW5kZXJCb3g6OnNldE1hcmdpbkFmdGVyVXNpbmcoY29uc3QgUmVuZGVyU3R5bGUqIHMsIGlu
dCBtYXJnaW4pCit2b2lkIFJlbmRlckJveDo6c2V0TWFyZ2luQWZ0ZXIoaW50IG1hcmdpbikKIHsK
LSAgICBzd2l0Y2ggKHMtPmJsb2NrRmxvdygpKSB7CisgICAgc3dpdGNoIChzdHlsZSgpLT5ibG9j
a0Zsb3coKSkgewogICAgIGNhc2UgVG9wVG9Cb3R0b21CbG9ja0Zsb3c6CiAgICAgICAgIG1fbWFy
Z2luQm90dG9tID0gbWFyZ2luOwogICAgICAgICBicmVhazsKQEAgLTE1MzEsNyArMTQ5MSw3IEBA
IHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRoKCkKIAogICAgIGlmICghaGFzUGVy
cGVuZGljdWxhckNvbnRhaW5pbmdCbG9jayAmJiBjb250YWluZXJMb2dpY2FsV2lkdGggJiYgY29u
dGFpbmVyTG9naWNhbFdpZHRoICE9IChsb2dpY2FsV2lkdGgoKSArIG1hcmdpblN0YXJ0KCkgKyBt
YXJnaW5FbmQoKSkKICAgICAgICAgICAgICYmICFpc0Zsb2F0aW5nKCkgJiYgIWlzSW5saW5lKCkg
JiYgIWNiLT5pc0ZsZXhpYmxlQm94KCkpCi0gICAgICAgIHNldE1hcmdpbkVuZFVzaW5nKGNiLT5z
dHlsZSgpLCBjb250YWluZXJMb2dpY2FsV2lkdGggLSBsb2dpY2FsV2lkdGgoKSAtIG1hcmdpblN0
YXJ0VXNpbmcoY2ItPnN0eWxlKCkpKTsKKyAgICAgICAgY2ItPnNldE1hcmdpbkVuZEZvckNoaWxk
KHRoaXMsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCAtIGxvZ2ljYWxXaWR0aCgpIC0gY2ItPm1hcmdp
blN0YXJ0Rm9yQ2hpbGQodGhpcykpOwogfQogCiBpbnQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNh
bFdpZHRoVXNpbmcoTG9naWNhbFdpZHRoVHlwZSB3aWR0aFR5cGUsIGludCBhdmFpbGFibGVMb2dp
Y2FsV2lkdGgpCkBAIC0xNjEzLDE1ICsxNTczLDE1IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRl
SW5saW5lRGlyZWN0aW9uTWEKICAgICAvLyBDYXNlIE9uZTogVGhlIG9iamVjdCBpcyBiZWluZyBj
ZW50ZXJlZCBpbiB0aGUgY29udGFpbmluZyBibG9jaydzIGF2YWlsYWJsZSBsb2dpY2FsIHdpZHRo
LgogICAgIGlmICgobWFyZ2luU3RhcnRMZW5ndGguaXNBdXRvKCkgJiYgbWFyZ2luRW5kTGVuZ3Ro
LmlzQXV0bygpICYmIGNoaWxkV2lkdGggPCBjb250YWluZXJXaWR0aCkKICAgICAgICAgfHwgKCFt
YXJnaW5TdGFydExlbmd0aC5pc0F1dG8oKSAmJiAhbWFyZ2luRW5kTGVuZ3RoLmlzQXV0bygpICYm
IGNvbnRhaW5pbmdCbG9jay0+c3R5bGUoKS0+dGV4dEFsaWduKCkgPT0gV0VCS0lUX0NFTlRFUikp
IHsKLSAgICAgICAgc2V0TWFyZ2luU3RhcnRVc2luZyhjb250YWluaW5nQmxvY2tTdHlsZSwgbWF4
KDAsIChjb250YWluZXJXaWR0aCAtIGNoaWxkV2lkdGgpIC8gMikpOwotICAgICAgICBzZXRNYXJn
aW5FbmRVc2luZyhjb250YWluaW5nQmxvY2tTdHlsZSwgY29udGFpbmVyV2lkdGggLSBjaGlsZFdp
ZHRoIC0gbWFyZ2luU3RhcnRVc2luZyhjb250YWluaW5nQmxvY2tTdHlsZSkpOworICAgICAgICBj
b250YWluaW5nQmxvY2stPnNldE1hcmdpblN0YXJ0Rm9yQ2hpbGQodGhpcywgbWF4KDAsIChjb250
YWluZXJXaWR0aCAtIGNoaWxkV2lkdGgpIC8gMikpOworICAgICAgICBjb250YWluaW5nQmxvY2st
PnNldE1hcmdpbkVuZEZvckNoaWxkKHRoaXMsIGNvbnRhaW5lcldpZHRoIC0gY2hpbGRXaWR0aCAt
IGNvbnRhaW5pbmdCbG9jay0+bWFyZ2luU3RhcnRGb3JDaGlsZCh0aGlzKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9IAogICAgIAogICAgIC8vIENhc2UgVHdvOiBUaGUgb2JqZWN0IGlzIGJlaW5n
IHB1c2hlZCB0byB0aGUgc3RhcnQgb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBhdmFpbGFibGUg
bG9naWNhbCB3aWR0aC4KICAgICBpZiAobWFyZ2luRW5kTGVuZ3RoLmlzQXV0bygpICYmIGNoaWxk
V2lkdGggPCBjb250YWluZXJXaWR0aCkgewotICAgICAgICBzZXRNYXJnaW5TdGFydFVzaW5nKGNv
bnRhaW5pbmdCbG9ja1N0eWxlLCBtYXJnaW5TdGFydExlbmd0aC5jYWxjVmFsdWUoY29udGFpbmVy
V2lkdGgpKTsKLSAgICAgICAgc2V0TWFyZ2luRW5kVXNpbmcoY29udGFpbmluZ0Jsb2NrU3R5bGUs
IGNvbnRhaW5lcldpZHRoIC0gY2hpbGRXaWR0aCAtIG1hcmdpblN0YXJ0VXNpbmcoY29udGFpbmlu
Z0Jsb2NrU3R5bGUpKTsKKyAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5zZXRNYXJnaW5TdGFydEZv
ckNoaWxkKHRoaXMsIG1hcmdpblN0YXJ0TGVuZ3RoLmNhbGNWYWx1ZShjb250YWluZXJXaWR0aCkp
OworICAgICAgICBjb250YWluaW5nQmxvY2stPnNldE1hcmdpbkVuZEZvckNoaWxkKHRoaXMsIGNv
bnRhaW5lcldpZHRoIC0gY2hpbGRXaWR0aCAtIGNvbnRhaW5pbmdCbG9jay0+bWFyZ2luU3RhcnRG
b3JDaGlsZCh0aGlzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9IAogICAgIApAQCAtMTYyOSwx
NSArMTU4OSwxNSBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUlubGluZURpcmVjdGlvbk1hCiAg
ICAgYm9vbCBwdXNoVG9FbmRGcm9tVGV4dEFsaWduID0gIW1hcmdpbkVuZExlbmd0aC5pc0F1dG8o
KSAmJiAoKGNvbnRhaW5pbmdCbG9ja1N0eWxlLT5kaXJlY3Rpb24oKSA9PSBSVEwgJiYgY29udGFp
bmluZ0Jsb2NrU3R5bGUtPnRleHRBbGlnbigpID09IFdFQktJVF9MRUZUKQogICAgICAgICB8fCAo
Y29udGFpbmluZ0Jsb2NrU3R5bGUtPmRpcmVjdGlvbigpID09IExUUiAmJiBjb250YWluaW5nQmxv
Y2tTdHlsZS0+dGV4dEFsaWduKCkgPT0gV0VCS0lUX1JJR0hUKSk7CiAgICAgaWYgKChtYXJnaW5T
dGFydExlbmd0aC5pc0F1dG8oKSAmJiBjaGlsZFdpZHRoIDwgY29udGFpbmVyV2lkdGgpIHx8IHB1
c2hUb0VuZEZyb21UZXh0QWxpZ24pIHsKLSAgICAgICAgc2V0TWFyZ2luRW5kVXNpbmcoY29udGFp
bmluZ0Jsb2NrU3R5bGUsIG1hcmdpbkVuZExlbmd0aC5jYWxjVmFsdWUoY29udGFpbmVyV2lkdGgp
KTsKLSAgICAgICAgc2V0TWFyZ2luU3RhcnRVc2luZyhjb250YWluaW5nQmxvY2tTdHlsZSwgY29u
dGFpbmVyV2lkdGggLSBjaGlsZFdpZHRoIC0gbWFyZ2luRW5kVXNpbmcoY29udGFpbmluZ0Jsb2Nr
U3R5bGUpKTsKKyAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5zZXRNYXJnaW5FbmRGb3JDaGlsZCh0
aGlzLCBtYXJnaW5FbmRMZW5ndGguY2FsY1ZhbHVlKGNvbnRhaW5lcldpZHRoKSk7CisgICAgICAg
IGNvbnRhaW5pbmdCbG9jay0+c2V0TWFyZ2luU3RhcnRGb3JDaGlsZCh0aGlzLCBjb250YWluZXJX
aWR0aCAtIGNoaWxkV2lkdGggLSBjb250YWluaW5nQmxvY2stPm1hcmdpbkVuZEZvckNoaWxkKHRo
aXMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0gCiAgICAgCiAgICAgLy8gQ2FzZSBGb3VyOiBF
aXRoZXIgbm8gYXV0byBtYXJnaW5zLCBvciBvdXIgd2lkdGggaXMgPj0gdGhlIGNvbnRhaW5lciB3
aWR0aCAoY3NzMi4xLCAxMC4zLjMpLiAgSW4gdGhhdCBjYXNlCiAgICAgLy8gYXV0byBtYXJnaW5z
IHdpbGwganVzdCB0dXJuIGludG8gMC4KLSAgICBzZXRNYXJnaW5TdGFydFVzaW5nKGNvbnRhaW5p
bmdCbG9ja1N0eWxlLCBtYXJnaW5TdGFydExlbmd0aC5jYWxjTWluVmFsdWUoY29udGFpbmVyV2lk
dGgpKTsKLSAgICBzZXRNYXJnaW5FbmRVc2luZyhjb250YWluaW5nQmxvY2tTdHlsZSwgbWFyZ2lu
RW5kTGVuZ3RoLmNhbGNNaW5WYWx1ZShjb250YWluZXJXaWR0aCkpOworICAgIGNvbnRhaW5pbmdC
bG9jay0+c2V0TWFyZ2luU3RhcnRGb3JDaGlsZCh0aGlzLCBtYXJnaW5TdGFydExlbmd0aC5jYWxj
TWluVmFsdWUoY29udGFpbmVyV2lkdGgpKTsKKyAgICBjb250YWluaW5nQmxvY2stPnNldE1hcmdp
bkVuZEZvckNoaWxkKHRoaXMsIG1hcmdpbkVuZExlbmd0aC5jYWxjTWluVmFsdWUoY29udGFpbmVy
V2lkdGgpKTsKIH0KIAogdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KCkKQEAg
LTE5NzUsOCArMTkzNSw4IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlQmxvY2tEaXJlY3Rpb25N
YXIKICAgICBpbnQgY3cgPSBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50KCk7
CiAKICAgICBSZW5kZXJTdHlsZSogY29udGFpbmluZ0Jsb2NrU3R5bGUgPSBjb250YWluaW5nQmxv
Y2stPnN0eWxlKCk7Ci0gICAgc2V0TWFyZ2luQmVmb3JlVXNpbmcoY29udGFpbmluZ0Jsb2NrU3R5
bGUsIHN0eWxlKCktPm1hcmdpbkJlZm9yZVVzaW5nKGNvbnRhaW5pbmdCbG9ja1N0eWxlKS5jYWxj
TWluVmFsdWUoY3cpKTsKLSAgICBzZXRNYXJnaW5BZnRlclVzaW5nKGNvbnRhaW5pbmdCbG9ja1N0
eWxlLCBzdHlsZSgpLT5tYXJnaW5BZnRlclVzaW5nKGNvbnRhaW5pbmdCbG9ja1N0eWxlKS5jYWxj
TWluVmFsdWUoY3cpKTsKKyAgICBjb250YWluaW5nQmxvY2stPnNldE1hcmdpbkJlZm9yZUZvckNo
aWxkKHRoaXMsIHN0eWxlKCktPm1hcmdpbkJlZm9yZVVzaW5nKGNvbnRhaW5pbmdCbG9ja1N0eWxl
KS5jYWxjTWluVmFsdWUoY3cpKTsKKyAgICBjb250YWluaW5nQmxvY2stPnNldE1hcmdpbkFmdGVy
Rm9yQ2hpbGQodGhpcywgc3R5bGUoKS0+bWFyZ2luQWZ0ZXJVc2luZyhjb250YWluaW5nQmxvY2tT
dHlsZSkuY2FsY01pblZhbHVlKGN3KSk7CiB9CiAKIGludCBSZW5kZXJCb3g6OmNvbnRhaW5pbmdC
bG9ja1dpZHRoRm9yUG9zaXRpb25lZChjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGFp
bmluZ0Jsb2NrKSBjb25zdApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHJldmlzaW9uIDY4Njgx
KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4
MSw2ICsxODEsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IG1hcmdpbkJvdHRvbSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWFyZ2luQm90dG9tOyB9CiAgICAgdmlydHVhbCBpbnQgbWFyZ2luTGVm
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFyZ2luTGVmdDsgfQogICAgIHZpcnR1YWwgaW50IG1hcmdp
blJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9tYXJnaW5SaWdodDsgfQorICAgIHZvaWQgc2V0TWFy
Z2luVG9wKGludCBtYXJnaW4pIHsgbV9tYXJnaW5Ub3AgPSBtYXJnaW47IH0KKyAgICB2b2lkIHNl
dE1hcmdpbkJvdHRvbShpbnQgbWFyZ2luKSB7IG1fbWFyZ2luQm90dG9tID0gbWFyZ2luOyB9Cisg
ICAgdm9pZCBzZXRNYXJnaW5MZWZ0KGludCBtYXJnaW4pIHsgbV9tYXJnaW5MZWZ0ID0gbWFyZ2lu
OyB9CisgICAgdm9pZCBzZXRNYXJnaW5SaWdodChpbnQgbWFyZ2luKSB7IG1fbWFyZ2luUmlnaHQg
PSBtYXJnaW47IH0KICAgICB2aXJ0dWFsIGludCBtYXJnaW5CZWZvcmUoKSBjb25zdDsKICAgICB2
aXJ0dWFsIGludCBtYXJnaW5BZnRlcigpIGNvbnN0OwogICAgIHZpcnR1YWwgaW50IG1hcmdpblN0
YXJ0KCkgY29uc3Q7CkBAIC0xOTAsMTEgKzE5NCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1h
cmdpbkJlZm9yZShpbnQpOwogICAgIHZvaWQgc2V0TWFyZ2luQWZ0ZXIoaW50KTsKIAotICAgIGlu
dCBtYXJnaW5TdGFydFVzaW5nKGNvbnN0IFJlbmRlclN0eWxlKikgY29uc3Q7Ci0gICAgaW50IG1h
cmdpbkVuZFVzaW5nKGNvbnN0IFJlbmRlclN0eWxlKikgY29uc3Q7Ci0gICAgaW50IG1hcmdpbkJl
Zm9yZVVzaW5nKGNvbnN0IFJlbmRlclN0eWxlKikgY29uc3Q7Ci0gICAgaW50IG1hcmdpbkFmdGVy
VXNpbmcoY29uc3QgUmVuZGVyU3R5bGUqKSBjb25zdDsKLQogICAgIC8vIFRoZSBmb2xsb3dpbmcg
Zml2ZSBmdW5jdGlvbnMgYXJlIHVzZWQgdG8gaW1wbGVtZW50IGNvbGxhcHNpbmcgbWFyZ2lucy4K
ICAgICAvLyBBbGwgb2JqZWN0cyBrbm93IHRoZWlyIG1heGltYWwgcG9zaXRpdmUgYW5kIG5lZ2F0
aXZlIG1hcmdpbnMuICBUaGUKICAgICAvLyBmb3JtdWxhIGZvciBjb21wdXRpbmcgYSBjb2xsYXBz
ZWQgbWFyZ2luIGlzIHxtYXhQb3NNYXJnaW58IC0gfG1heE5lZ21hcmdpbnwuCkBAIC00MjgsMTEg
KzQyNyw2IEBAIHByaXZhdGU6CiAgICAgLy8gVGhlc2UgaW5jbHVkZSB0YWJsZXMsIHBvc2l0aW9u
ZWQgb2JqZWN0cywgZmxvYXRzIGFuZCBmbGV4aWJsZSBib3hlcy4KICAgICB2aXJ0dWFsIHZvaWQg
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSB7IHNldFByZWZlcnJlZExvZ2ljYWxXaWR0
aHNEaXJ0eShmYWxzZSk7IH0KIAotICAgIHZvaWQgc2V0TWFyZ2luU3RhcnRVc2luZyhjb25zdCBS
ZW5kZXJTdHlsZSosIGludCk7Ci0gICAgdm9pZCBzZXRNYXJnaW5FbmRVc2luZyhjb25zdCBSZW5k
ZXJTdHlsZSosIGludCk7Ci0gICAgdm9pZCBzZXRNYXJnaW5CZWZvcmVVc2luZyhjb25zdCBSZW5k
ZXJTdHlsZSosIGludCk7Ci0gICAgdm9pZCBzZXRNYXJnaW5BZnRlclVzaW5nKGNvbnN0IFJlbmRl
clN0eWxlKiwgaW50KTsKLQogcHJpdmF0ZToKICAgICAvLyBUaGUgd2lkdGgvaGVpZ2h0IG9mIHRo
ZSBjb250ZW50cyArIGJvcmRlcnMgKyBwYWRkaW5nLiAgVGhlIHgveSBsb2NhdGlvbiBpcyByZWxh
dGl2ZSB0byBvdXIgY29udGFpbmVyICh3aGljaCBpcyBub3QgYWx3YXlzIG91ciBwYXJlbnQpLgog
ICAgIEludFJlY3QgbV9mcmFtZVJlY3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69248</attachid>
            <date>2010-09-29 14:25:49 -0700</date>
            <delta_ts>2010-09-29 14:38:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>18837</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODY4NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMTAtMDktMjkgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjgzOAorICAgICAgICAKKyAgICAg
ICAgR2V0IHJpZCBvZiB0aGUgbWFyZ2luWFhYVXNpbmcvc2V0TWFyZ2luWFhYVXNpbmcgbWV0aG9k
cyBvbiBSZW5kZXJCb3guICBJJ20gaW52ZXJ0aW5nIHRoZSB3YXkgdGhlc2UgYXJlIGNhbGxlZAor
ICAgICAgICBhbmQgcHV0dGluZyB0aGUgbWV0aG9kcyBvbiBSZW5kZXJCbG9jayBpbnN0ZWFkLiAg
VGhlIG1ldGhvZHMgY2FuIGJlIG5hbWVkIGJldHRlciB0aGlzIHdheSBhbmQgdGhlIGdldHRlcnMK
KyAgICAgICAgY2FuIG9wZXJhdGUgb24gUmVuZGVyQm94TW9kZWxPYmplY3RzIGluc3RlYWQgb2Yg
anVzdCBSZW5kZXJCb3hlcy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2tDaGlsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bWFyZ2luQmVmb3JlRm9yQ2hpbGQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6Om1hcmdpbkFmdGVyRm9yQ2hpbGQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6Om1hcmdpblN0YXJ0Rm9yQ2hpbGQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6Om1hcmdpbkVuZEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrOjpzZXRNYXJnaW5TdGFydEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrOjpzZXRNYXJnaW5FbmRGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6c2V0TWFyZ2luQmVmb3JlRm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OnNldE1hcmdpbkFmdGVyRm9yQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxI
ZWlnaHRGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbFRv
cEZvckNoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveDo6bWFyZ2luQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6bWFyZ2luQWZ0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjptYXJn
aW5TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om1hcmdpbkVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNldE1hcmdpblN0YXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6c2V0TWFyZ2luRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eDo6c2V0TWFyZ2luQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c2V0TWFy
Z2luQWZ0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUlubGluZURpcmVjdGlv
bk1hcmdpbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlQmxvY2tEaXJl
Y3Rpb25NYXJnaW5zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OnNldE1hcmdpblRvcCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OnNldE1hcmdpbkJvdHRvbSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OnNldE1hcmdpbkxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzZXRNYXJnaW5S
aWdodCk6CisKIDIwMTAtMDktMjkgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcAkocmV2aXNpb24gNjg2ODEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NDksNyArMTk0OSw3IEBAIHZvaWQgUmVuZGVyQmxv
Y2s6OmxheW91dEJsb2NrQ2hpbGQoUmVuZGUKICAgICAvLyBVcGRhdGUgb3VyIGhlaWdodCBub3cg
dGhhdCB0aGUgY2hpbGQgaGFzIGJlZW4gcGxhY2VkIGluIHRoZSBjb3JyZWN0IHBvc2l0aW9uLgog
ICAgIHNldExvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodCgpICsgbG9naWNhbEhlaWdodEZvckNo
aWxkKGNoaWxkKSk7CiAgICAgaWYgKGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5BZnRlckNvbGxhcHNl
KCkgPT0gTVNFUEFSQVRFKSB7Ci0gICAgICAgIHNldExvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdo
dCgpICsgY2hpbGQtPm1hcmdpbkFmdGVyVXNpbmcoc3R5bGUoKSkpOworICAgICAgICBzZXRMb2dp
Y2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQoKSArIG1hcmdpbkFmdGVyRm9yQ2hpbGQoY2hpbGQpKTsK
ICAgICAgICAgbWFyZ2luSW5mby5jbGVhck1hcmdpbigpOwogICAgIH0KICAgICAvLyBJZiB0aGUg
Y2hpbGQgaGFzIG92ZXJoYW5naW5nIGZsb2F0cyB0aGF0IGludHJ1ZGUgaW50byBmb2xsb3dpbmcg
c2libGluZ3MgKG9yIHBvc3NpYmx5IG91dApAQCAtNjAxOSw3ICs2MDE5LDExOSBAQCB2b2lkIFJl
bmRlckJsb2NrOjphZGp1c3RMaW5lUG9zaXRpb25Gb3JQCiAgICAgICAgIH0KICAgICB9ICAKIH0K
LSAKKworaW50IFJlbmRlckJsb2NrOjptYXJnaW5CZWZvcmVGb3JDaGlsZChSZW5kZXJCb3hNb2Rl
bE9iamVjdCogY2hpbGQpIGNvbnN0Cit7CisgICAgc3dpdGNoIChzdHlsZSgpLT5ibG9ja0Zsb3co
KSkgeworICAgIGNhc2UgVG9wVG9Cb3R0b21CbG9ja0Zsb3c6CisgICAgICAgIHJldHVybiBjaGls
ZC0+bWFyZ2luVG9wKCk7CisgICAgY2FzZSBCb3R0b21Ub1RvcEJsb2NrRmxvdzoKKyAgICAgICAg
cmV0dXJuIGNoaWxkLT5tYXJnaW5Cb3R0b20oKTsKKyAgICBjYXNlIExlZnRUb1JpZ2h0QmxvY2tG
bG93OgorICAgICAgICByZXR1cm4gY2hpbGQtPm1hcmdpbkxlZnQoKTsKKyAgICBjYXNlIFJpZ2h0
VG9MZWZ0QmxvY2tGbG93OgorICAgICAgICByZXR1cm4gY2hpbGQtPm1hcmdpblJpZ2h0KCk7Cisg
ICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBjaGlsZC0+bWFyZ2lu
VG9wKCk7Cit9CisKK2ludCBSZW5kZXJCbG9jazo6bWFyZ2luQWZ0ZXJGb3JDaGlsZChSZW5kZXJC
b3hNb2RlbE9iamVjdCogY2hpbGQpIGNvbnN0Cit7CisgICAgc3dpdGNoIChzdHlsZSgpLT5ibG9j
a0Zsb3coKSkgeworICAgIGNhc2UgVG9wVG9Cb3R0b21CbG9ja0Zsb3c6CisgICAgICAgIHJldHVy
biBjaGlsZC0+bWFyZ2luQm90dG9tKCk7CisgICAgY2FzZSBCb3R0b21Ub1RvcEJsb2NrRmxvdzoK
KyAgICAgICAgcmV0dXJuIGNoaWxkLT5tYXJnaW5Ub3AoKTsKKyAgICBjYXNlIExlZnRUb1JpZ2h0
QmxvY2tGbG93OgorICAgICAgICByZXR1cm4gY2hpbGQtPm1hcmdpblJpZ2h0KCk7CisgICAgY2Fz
ZSBSaWdodFRvTGVmdEJsb2NrRmxvdzoKKyAgICAgICAgcmV0dXJuIGNoaWxkLT5tYXJnaW5MZWZ0
KCk7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBjaGlsZC0+
bWFyZ2luQm90dG9tKCk7Cit9CisgICAgCitpbnQgUmVuZGVyQmxvY2s6Om1hcmdpblN0YXJ0Rm9y
Q2hpbGQoUmVuZGVyQm94TW9kZWxPYmplY3QqIGNoaWxkKSBjb25zdAoreworICAgIGlmIChzdHls
ZSgpLT5pc1ZlcnRpY2FsQmxvY2tGbG93KCkpCisgICAgICAgIHJldHVybiBzdHlsZSgpLT5kaXJl
Y3Rpb24oKSA9PSBMVFIgPyBjaGlsZC0+bWFyZ2luTGVmdCgpIDogY2hpbGQtPm1hcmdpblJpZ2h0
KCk7CisgICAgcmV0dXJuIHN0eWxlKCktPmRpcmVjdGlvbigpID09IExUUiA/IGNoaWxkLT5tYXJn
aW5Ub3AoKSA6IGNoaWxkLT5tYXJnaW5Cb3R0b20oKTsKK30KKworaW50IFJlbmRlckJsb2NrOjpt
YXJnaW5FbmRGb3JDaGlsZChSZW5kZXJCb3hNb2RlbE9iamVjdCogY2hpbGQpIGNvbnN0Cit7Cisg
ICAgaWYgKHN0eWxlKCktPmlzVmVydGljYWxCbG9ja0Zsb3coKSkKKyAgICAgICAgcmV0dXJuIHN0
eWxlKCktPmRpcmVjdGlvbigpID09IExUUiA/IGNoaWxkLT5tYXJnaW5SaWdodCgpIDogY2hpbGQt
Pm1hcmdpbkxlZnQoKTsKKyAgICByZXR1cm4gc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSID8g
Y2hpbGQtPm1hcmdpbkJvdHRvbSgpIDogY2hpbGQtPm1hcmdpblRvcCgpOworfQorCit2b2lkIFJl
bmRlckJsb2NrOjpzZXRNYXJnaW5TdGFydEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQsIGludCBt
YXJnaW4pCit7CisgICAgaWYgKHN0eWxlKCktPmlzVmVydGljYWxCbG9ja0Zsb3coKSkgeworICAg
ICAgICBpZiAoc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSKQorICAgICAgICAgICAgY2hpbGQt
PnNldE1hcmdpbkxlZnQobWFyZ2luKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2hpbGQt
PnNldE1hcmdpblJpZ2h0KG1hcmdpbik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHN0eWxl
KCktPmRpcmVjdGlvbigpID09IExUUikKKyAgICAgICAgICAgIGNoaWxkLT5zZXRNYXJnaW5Ub3Ao
bWFyZ2luKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2hpbGQtPnNldE1hcmdpbkJvdHRv
bShtYXJnaW4pOworICAgIH0KK30KKwordm9pZCBSZW5kZXJCbG9jazo6c2V0TWFyZ2luRW5kRm9y
Q2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgaW50IG1hcmdpbikKK3sKKyAgICBpZiAoc3R5bGUoKS0+
aXNWZXJ0aWNhbEJsb2NrRmxvdygpKSB7CisgICAgICAgIGlmIChzdHlsZSgpLT5kaXJlY3Rpb24o
KSA9PSBMVFIpCisgICAgICAgICAgICBjaGlsZC0+c2V0TWFyZ2luUmlnaHQobWFyZ2luKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgY2hpbGQtPnNldE1hcmdpbkxlZnQobWFyZ2luKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBpZiAoc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSKQorICAg
ICAgICAgICAgY2hpbGQtPnNldE1hcmdpbkJvdHRvbShtYXJnaW4pOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBjaGlsZC0+c2V0TWFyZ2luVG9wKG1hcmdpbik7CisgICAgfQorfQorCit2b2lk
IFJlbmRlckJsb2NrOjpzZXRNYXJnaW5CZWZvcmVGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBp
bnQgbWFyZ2luKQoreworICAgIHN3aXRjaCAoc3R5bGUoKS0+YmxvY2tGbG93KCkpIHsKKyAgICBj
YXNlIFRvcFRvQm90dG9tQmxvY2tGbG93OgorICAgICAgICBjaGlsZC0+c2V0TWFyZ2luVG9wKG1h
cmdpbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQm90dG9tVG9Ub3BCbG9ja0Zsb3c6Cisg
ICAgICAgIGNoaWxkLT5zZXRNYXJnaW5Cb3R0b20obWFyZ2luKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBMZWZ0VG9SaWdodEJsb2NrRmxvdzoKKyAgICAgICAgY2hpbGQtPnNldE1hcmdpbkxl
ZnQobWFyZ2luKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSaWdodFRvTGVmdEJsb2NrRmxv
dzoKKyAgICAgICAgY2hpbGQtPnNldE1hcmdpblJpZ2h0KG1hcmdpbik7CisgICAgICAgIGJyZWFr
OworICAgIH0KK30KKwordm9pZCBSZW5kZXJCbG9jazo6c2V0TWFyZ2luQWZ0ZXJGb3JDaGlsZChS
ZW5kZXJCb3gqIGNoaWxkLCBpbnQgbWFyZ2luKQoreworICAgIHN3aXRjaCAoc3R5bGUoKS0+Ymxv
Y2tGbG93KCkpIHsKKyAgICBjYXNlIFRvcFRvQm90dG9tQmxvY2tGbG93OgorICAgICAgICBjaGls
ZC0+c2V0TWFyZ2luQm90dG9tKG1hcmdpbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQm90
dG9tVG9Ub3BCbG9ja0Zsb3c6CisgICAgICAgIGNoaWxkLT5zZXRNYXJnaW5Ub3AobWFyZ2luKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMZWZ0VG9SaWdodEJsb2NrRmxvdzoKKyAgICAgICAg
Y2hpbGQtPnNldE1hcmdpblJpZ2h0KG1hcmdpbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UmlnaHRUb0xlZnRCbG9ja0Zsb3c6CisgICAgICAgIGNoaWxkLT5zZXRNYXJnaW5MZWZ0KG1hcmdp
bik7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwogY29uc3QgY2hhciogUmVuZGVyQmxvY2s6
OnJlbmRlck5hbWUoKSBjb25zdAogewogICAgIGlmIChpc0JvZHkoKSkKSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suaAkocmV2aXNpb24gNjg2NzgpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksNiArMTY5LDE4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFBhZ2luYXRpb25TdHJ1dChpbnQgc3RydXQpOwogICAgIHZvaWQgc2V0UGFnZVko
aW50IHkpOwogCisgICAgLy8gQWNjZXNzb3JzIGZvciBsb2dpY2FsIHdpZHRoL2hlaWdodCBhbmQg
bWFyZ2lucyBpbiB0aGUgY29udGFpbmluZyBibG9jaydzIGJsb2NrLWZsb3cgZGlyZWN0aW9uLgor
ICAgIGludCBsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgeyByZXR1cm4g
c3R5bGUoKS0+aXNWZXJ0aWNhbEJsb2NrRmxvdygpID8gY2hpbGQtPmhlaWdodCgpIDogY2hpbGQt
PndpZHRoKCk7IH0KKyAgICBpbnQgbG9naWNhbFRvcEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQp
IHsgcmV0dXJuIHN0eWxlKCktPmlzVmVydGljYWxCbG9ja0Zsb3coKSA/IGNoaWxkLT55KCkgOiBj
aGlsZC0+eCgpOyB9CisgICAgaW50IG1hcmdpbkJlZm9yZUZvckNoaWxkKFJlbmRlckJveE1vZGVs
T2JqZWN0KiBjaGlsZCkgY29uc3Q7CisgICAgaW50IG1hcmdpbkFmdGVyRm9yQ2hpbGQoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIGNoaWxkKSBjb25zdDsKKyAgICBpbnQgbWFyZ2luU3RhcnRGb3JDaGls
ZChSZW5kZXJCb3hNb2RlbE9iamVjdCogY2hpbGQpIGNvbnN0OworICAgIGludCBtYXJnaW5FbmRG
b3JDaGlsZChSZW5kZXJCb3hNb2RlbE9iamVjdCogY2hpbGQpIGNvbnN0OworICAgIHZvaWQgc2V0
TWFyZ2luU3RhcnRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBpbnQpOworICAgIHZvaWQgc2V0
TWFyZ2luRW5kRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgaW50KTsKKyAgICB2b2lkIHNldE1h
cmdpbkJlZm9yZUZvckNoaWxkKFJlbmRlckJveCogY2hpbGQsIGludCk7CisgICAgdm9pZCBzZXRN
YXJnaW5BZnRlckZvckNoaWxkKFJlbmRlckJveCogY2hpbGQsIGludCk7CisKIHByb3RlY3RlZDoK
ICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgdXNlZCBpbnRlcm5hbGx5IHRvIG1hbmlw
dWxhdGUgdGhlIHJlbmRlciB0cmVlIHN0cnVjdHVyZSB2aWEgcmVtb3ZlL2luc2VydC9hcHBlbmRD
aGlsZE5vZGUuCiAgICAgLy8gU2luY2UgdGhleSBhcmUgdHlwaWNhbGx5IGNhbGxlZCBvbmx5IHRv
IG1vdmUgb2JqZWN0cyBhcm91bmQgd2l0aGluIGFub255bW91cyBibG9ja3MgKHdoaWNoIG9ubHkg
aGF2ZSBsYXllcnMgaW4KQEAgLTU3MSw4ICs1ODMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFu
ZGxlQWZ0ZXJTaWRlT2ZCbG9jayhpbnQgdG9wLCBpbnQgYm90dG9tLCBNYXJnaW5JbmZvJik7CiAg
ICAgdm9pZCBzZXRDb2xsYXBzZWRCb3R0b21NYXJnaW4oY29uc3QgTWFyZ2luSW5mbyYpOwogICAg
IHZvaWQgc2V0TG9naWNhbFRvcEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQsIGludCBsb2dpY2Fs
VG9wKTsKLSAgICBpbnQgbG9naWNhbEhlaWdodEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpIHsg
cmV0dXJuIHN0eWxlKCktPmlzVmVydGljYWxCbG9ja0Zsb3coKSA/IGNoaWxkLT5oZWlnaHQoKSA6
IGNoaWxkLT53aWR0aCgpOyB9Ci0gICAgaW50IGxvZ2ljYWxUb3BGb3JDaGlsZChSZW5kZXJCb3gq
IGNoaWxkKSB7IHJldHVybiBzdHlsZSgpLT5pc1ZlcnRpY2FsQmxvY2tGbG93KCkgPyBjaGlsZC0+
eSgpIDogY2hpbGQtPngoKTsgfQogICAgIC8vIEVuZCBoZWxwZXIgZnVuY3Rpb25zIGFuZCBzdHJ1
Y3RzIHVzZWQgYnkgbGF5b3V0QmxvY2tDaGlsZHJlbi4KIAogICAgIC8vIFBhZ2luYXRpb24gcm91
dGluZXMuCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDY4NjgxKQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsMTIg
Kzg1LDcgQEAgUmVuZGVyQm94Ojp+UmVuZGVyQm94KCkKIAogaW50IFJlbmRlckJveDo6bWFyZ2lu
QmVmb3JlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbWFyZ2luQmVmb3JlVXNpbmcoc3R5bGUoKSk7
Ci19Ci0KLWludCBSZW5kZXJCb3g6Om1hcmdpbkJlZm9yZVVzaW5nKGNvbnN0IFJlbmRlclN0eWxl
KiBzKSBjb25zdAotewotICAgIHN3aXRjaCAocy0+YmxvY2tGbG93KCkpIHsKKyAgICBzd2l0Y2gg
KHN0eWxlKCktPmJsb2NrRmxvdygpKSB7CiAgICAgY2FzZSBUb3BUb0JvdHRvbUJsb2NrRmxvdzoK
ICAgICAgICAgcmV0dXJuIG1fbWFyZ2luVG9wOwogICAgIGNhc2UgQm90dG9tVG9Ub3BCbG9ja0Zs
b3c6CkBAIC0xMDYsMTIgKzEwMSw3IEBAIGludCBSZW5kZXJCb3g6Om1hcmdpbkJlZm9yZVVzaW5n
KGNvbnN0IFIKIAogaW50IFJlbmRlckJveDo6bWFyZ2luQWZ0ZXIoKSBjb25zdAogewotICAgIHJl
dHVybiBtYXJnaW5BZnRlclVzaW5nKHN0eWxlKCkpOwotfQotCi1pbnQgUmVuZGVyQm94OjptYXJn
aW5BZnRlclVzaW5nKGNvbnN0IFJlbmRlclN0eWxlKiBzKSBjb25zdAotewotICAgIHN3aXRjaCAo
cy0+YmxvY2tGbG93KCkpIHsKKyAgICBzd2l0Y2ggKHN0eWxlKCktPmJsb2NrRmxvdygpKSB7CiAg
ICAgY2FzZSBUb3BUb0JvdHRvbUJsb2NrRmxvdzoKICAgICAgICAgcmV0dXJuIG1fbWFyZ2luQm90
dG9tOwogICAgIGNhc2UgQm90dG9tVG9Ub3BCbG9ja0Zsb3c6CkBAIC0xMjcsNjIgKzExNyw0MiBA
QCBpbnQgUmVuZGVyQm94OjptYXJnaW5BZnRlclVzaW5nKGNvbnN0IFJlCiAKIGludCBSZW5kZXJC
b3g6Om1hcmdpblN0YXJ0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbWFyZ2luU3RhcnRVc2luZyhz
dHlsZSgpKTsKLX0KLQotaW50IFJlbmRlckJveDo6bWFyZ2luU3RhcnRVc2luZyhjb25zdCBSZW5k
ZXJTdHlsZSogcykgY29uc3QKLXsKLSAgICBpZiAocy0+aXNWZXJ0aWNhbEJsb2NrRmxvdygpKQot
ICAgICAgICByZXR1cm4gcy0+ZGlyZWN0aW9uKCkgPT0gTFRSID8gbV9tYXJnaW5MZWZ0IDogbV9t
YXJnaW5SaWdodDsKLSAgICByZXR1cm4gcy0+ZGlyZWN0aW9uKCkgPT0gTFRSID8gbV9tYXJnaW5U
b3AgOiBtX21hcmdpbkJvdHRvbTsKKyAgICBpZiAoc3R5bGUoKS0+aXNWZXJ0aWNhbEJsb2NrRmxv
dygpKQorICAgICAgICByZXR1cm4gc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSID8gbV9tYXJn
aW5MZWZ0IDogbV9tYXJnaW5SaWdodDsKKyAgICByZXR1cm4gc3R5bGUoKS0+ZGlyZWN0aW9uKCkg
PT0gTFRSID8gbV9tYXJnaW5Ub3AgOiBtX21hcmdpbkJvdHRvbTsKIH0KIAogaW50IFJlbmRlckJv
eDo6bWFyZ2luRW5kKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbWFyZ2luRW5kVXNpbmcoc3R5bGUo
KSk7Ci19Ci0KLWludCBSZW5kZXJCb3g6Om1hcmdpbkVuZFVzaW5nKGNvbnN0IFJlbmRlclN0eWxl
KiBzKSBjb25zdAotewotICAgIGlmIChzLT5pc1ZlcnRpY2FsQmxvY2tGbG93KCkpCi0gICAgICAg
IHJldHVybiBzLT5kaXJlY3Rpb24oKSA9PSBMVFIgPyBtX21hcmdpblJpZ2h0IDogbV9tYXJnaW5M
ZWZ0OwotICAgIHJldHVybiBzLT5kaXJlY3Rpb24oKSA9PSBMVFIgPyBtX21hcmdpbkJvdHRvbSA6
IG1fbWFyZ2luVG9wOworICAgIGlmIChzdHlsZSgpLT5pc1ZlcnRpY2FsQmxvY2tGbG93KCkpCisg
ICAgICAgIHJldHVybiBzdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBMVFIgPyBtX21hcmdpblJpZ2h0
IDogbV9tYXJnaW5MZWZ0OworICAgIHJldHVybiBzdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBMVFIg
PyBtX21hcmdpbkJvdHRvbSA6IG1fbWFyZ2luVG9wOwogfQogCiB2b2lkIFJlbmRlckJveDo6c2V0
TWFyZ2luU3RhcnQoaW50IG1hcmdpbikKIHsKLSAgICBzZXRNYXJnaW5TdGFydFVzaW5nKHN0eWxl
KCksIG1hcmdpbik7Ci19Ci0KLXZvaWQgUmVuZGVyQm94OjpzZXRNYXJnaW5FbmQoaW50IG1hcmdp
bikKLXsKLSAgICBzZXRNYXJnaW5FbmRVc2luZyhzdHlsZSgpLCBtYXJnaW4pOwotfQotCi12b2lk
IFJlbmRlckJveDo6c2V0TWFyZ2luU3RhcnRVc2luZyhjb25zdCBSZW5kZXJTdHlsZSogcywgaW50
IG1hcmdpbikKLXsKLSAgICBpZiAocy0+aXNWZXJ0aWNhbEJsb2NrRmxvdygpKSB7Ci0gICAgICAg
IGlmIChzLT5kaXJlY3Rpb24oKSA9PSBMVFIpCisgICAgaWYgKHN0eWxlKCktPmlzVmVydGljYWxC
bG9ja0Zsb3coKSkgeworICAgICAgICBpZiAoc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSKQog
ICAgICAgICAgICAgbV9tYXJnaW5MZWZ0ID0gbWFyZ2luOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBtX21hcmdpblJpZ2h0ID0gbWFyZ2luOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChz
LT5kaXJlY3Rpb24oKSA9PSBMVFIpCisgICAgICAgIGlmIChzdHlsZSgpLT5kaXJlY3Rpb24oKSA9
PSBMVFIpCiAgICAgICAgICAgICBtX21hcmdpblRvcCA9IG1hcmdpbjsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgbV9tYXJnaW5Cb3R0b20gPSBtYXJnaW47CiAgICAgfQogfQogCi12b2lkIFJl
bmRlckJveDo6c2V0TWFyZ2luRW5kVXNpbmcoY29uc3QgUmVuZGVyU3R5bGUqIHMsIGludCBtYXJn
aW4pCit2b2lkIFJlbmRlckJveDo6c2V0TWFyZ2luRW5kKGludCBtYXJnaW4pCiB7Ci0gICAgaWYg
KHMtPmlzVmVydGljYWxCbG9ja0Zsb3coKSkgewotICAgICAgICBpZiAocy0+ZGlyZWN0aW9uKCkg
PT0gTFRSKQorICAgIGlmIChzdHlsZSgpLT5pc1ZlcnRpY2FsQmxvY2tGbG93KCkpIHsKKyAgICAg
ICAgaWYgKHN0eWxlKCktPmRpcmVjdGlvbigpID09IExUUikKICAgICAgICAgICAgIG1fbWFyZ2lu
UmlnaHQgPSBtYXJnaW47CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fbWFyZ2luTGVmdCA9
IG1hcmdpbjsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAocy0+ZGlyZWN0aW9uKCkgPT0gTFRS
KQorICAgICAgICBpZiAoc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSKQogICAgICAgICAgICAg
bV9tYXJnaW5Cb3R0b20gPSBtYXJnaW47CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fbWFy
Z2luVG9wID0gbWFyZ2luOwpAQCAtMTkxLDE3ICsxNjEsNyBAQCB2b2lkIFJlbmRlckJveDo6c2V0
TWFyZ2luRW5kVXNpbmcoY29uc3QgCiAKIHZvaWQgUmVuZGVyQm94OjpzZXRNYXJnaW5CZWZvcmUo
aW50IG1hcmdpbikKIHsKLSAgICBzZXRNYXJnaW5CZWZvcmVVc2luZyhzdHlsZSgpLCBtYXJnaW4p
OwotfQotCi12b2lkIFJlbmRlckJveDo6c2V0TWFyZ2luQWZ0ZXIoaW50IG1hcmdpbikKLXsKLSAg
ICBzZXRNYXJnaW5BZnRlclVzaW5nKHN0eWxlKCksIG1hcmdpbik7Ci19Ci0KLXZvaWQgUmVuZGVy
Qm94OjpzZXRNYXJnaW5CZWZvcmVVc2luZyhjb25zdCBSZW5kZXJTdHlsZSogcywgaW50IG1hcmdp
bikKLXsKLSAgICBzd2l0Y2ggKHMtPmJsb2NrRmxvdygpKSB7CisgICAgc3dpdGNoIChzdHlsZSgp
LT5ibG9ja0Zsb3coKSkgewogICAgIGNhc2UgVG9wVG9Cb3R0b21CbG9ja0Zsb3c6CiAgICAgICAg
IG1fbWFyZ2luVG9wID0gbWFyZ2luOwogICAgICAgICBicmVhazsKQEAgLTIxNyw5ICsxNzcsOSBA
QCB2b2lkIFJlbmRlckJveDo6c2V0TWFyZ2luQmVmb3JlVXNpbmcoY29uCiAgICAgfQogfQogCi12
b2lkIFJlbmRlckJveDo6c2V0TWFyZ2luQWZ0ZXJVc2luZyhjb25zdCBSZW5kZXJTdHlsZSogcywg
aW50IG1hcmdpbikKK3ZvaWQgUmVuZGVyQm94OjpzZXRNYXJnaW5BZnRlcihpbnQgbWFyZ2luKQog
ewotICAgIHN3aXRjaCAocy0+YmxvY2tGbG93KCkpIHsKKyAgICBzd2l0Y2ggKHN0eWxlKCktPmJs
b2NrRmxvdygpKSB7CiAgICAgY2FzZSBUb3BUb0JvdHRvbUJsb2NrRmxvdzoKICAgICAgICAgbV9t
YXJnaW5Cb3R0b20gPSBtYXJnaW47CiAgICAgICAgIGJyZWFrOwpAQCAtMTUzMSw3ICsxNDkxLDcg
QEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGgoKQogCiAgICAgaWYgKCFoYXNQ
ZXJwZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2NrICYmIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCAmJiBj
b250YWluZXJMb2dpY2FsV2lkdGggIT0gKGxvZ2ljYWxXaWR0aCgpICsgbWFyZ2luU3RhcnQoKSAr
IG1hcmdpbkVuZCgpKQogICAgICAgICAgICAgJiYgIWlzRmxvYXRpbmcoKSAmJiAhaXNJbmxpbmUo
KSAmJiAhY2ItPmlzRmxleGlibGVCb3goKSkKLSAgICAgICAgc2V0TWFyZ2luRW5kVXNpbmcoY2It
PnN0eWxlKCksIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCAtIGxvZ2ljYWxXaWR0aCgpIC0gbWFyZ2lu
U3RhcnRVc2luZyhjYi0+c3R5bGUoKSkpOworICAgICAgICBjYi0+c2V0TWFyZ2luRW5kRm9yQ2hp
bGQodGhpcywgY29udGFpbmVyTG9naWNhbFdpZHRoIC0gbG9naWNhbFdpZHRoKCkgLSBjYi0+bWFy
Z2luU3RhcnRGb3JDaGlsZCh0aGlzKSk7CiB9CiAKIGludCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dp
Y2FsV2lkdGhVc2luZyhMb2dpY2FsV2lkdGhUeXBlIHdpZHRoVHlwZSwgaW50IGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCkKQEAgLTE2MTMsMTUgKzE1NzMsMTUgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1
dGVJbmxpbmVEaXJlY3Rpb25NYQogICAgIC8vIENhc2UgT25lOiBUaGUgb2JqZWN0IGlzIGJlaW5n
IGNlbnRlcmVkIGluIHRoZSBjb250YWluaW5nIGJsb2NrJ3MgYXZhaWxhYmxlIGxvZ2ljYWwgd2lk
dGguCiAgICAgaWYgKChtYXJnaW5TdGFydExlbmd0aC5pc0F1dG8oKSAmJiBtYXJnaW5FbmRMZW5n
dGguaXNBdXRvKCkgJiYgY2hpbGRXaWR0aCA8IGNvbnRhaW5lcldpZHRoKQogICAgICAgICB8fCAo
IW1hcmdpblN0YXJ0TGVuZ3RoLmlzQXV0bygpICYmICFtYXJnaW5FbmRMZW5ndGguaXNBdXRvKCkg
JiYgY29udGFpbmluZ0Jsb2NrLT5zdHlsZSgpLT50ZXh0QWxpZ24oKSA9PSBXRUJLSVRfQ0VOVEVS
KSkgewotICAgICAgICBzZXRNYXJnaW5TdGFydFVzaW5nKGNvbnRhaW5pbmdCbG9ja1N0eWxlLCBt
YXgoMCwgKGNvbnRhaW5lcldpZHRoIC0gY2hpbGRXaWR0aCkgLyAyKSk7Ci0gICAgICAgIHNldE1h
cmdpbkVuZFVzaW5nKGNvbnRhaW5pbmdCbG9ja1N0eWxlLCBjb250YWluZXJXaWR0aCAtIGNoaWxk
V2lkdGggLSBtYXJnaW5TdGFydFVzaW5nKGNvbnRhaW5pbmdCbG9ja1N0eWxlKSk7CisgICAgICAg
IGNvbnRhaW5pbmdCbG9jay0+c2V0TWFyZ2luU3RhcnRGb3JDaGlsZCh0aGlzLCBtYXgoMCwgKGNv
bnRhaW5lcldpZHRoIC0gY2hpbGRXaWR0aCkgLyAyKSk7CisgICAgICAgIGNvbnRhaW5pbmdCbG9j
ay0+c2V0TWFyZ2luRW5kRm9yQ2hpbGQodGhpcywgY29udGFpbmVyV2lkdGggLSBjaGlsZFdpZHRo
IC0gY29udGFpbmluZ0Jsb2NrLT5tYXJnaW5TdGFydEZvckNoaWxkKHRoaXMpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0gCiAgICAgCiAgICAgLy8gQ2FzZSBUd286IFRoZSBvYmplY3QgaXMgYmVp
bmcgcHVzaGVkIHRvIHRoZSBzdGFydCBvZiB0aGUgY29udGFpbmluZyBibG9jaydzIGF2YWlsYWJs
ZSBsb2dpY2FsIHdpZHRoLgogICAgIGlmIChtYXJnaW5FbmRMZW5ndGguaXNBdXRvKCkgJiYgY2hp
bGRXaWR0aCA8IGNvbnRhaW5lcldpZHRoKSB7Ci0gICAgICAgIHNldE1hcmdpblN0YXJ0VXNpbmco
Y29udGFpbmluZ0Jsb2NrU3R5bGUsIG1hcmdpblN0YXJ0TGVuZ3RoLmNhbGNWYWx1ZShjb250YWlu
ZXJXaWR0aCkpOwotICAgICAgICBzZXRNYXJnaW5FbmRVc2luZyhjb250YWluaW5nQmxvY2tTdHls
ZSwgY29udGFpbmVyV2lkdGggLSBjaGlsZFdpZHRoIC0gbWFyZ2luU3RhcnRVc2luZyhjb250YWlu
aW5nQmxvY2tTdHlsZSkpOworICAgICAgICBjb250YWluaW5nQmxvY2stPnNldE1hcmdpblN0YXJ0
Rm9yQ2hpbGQodGhpcywgbWFyZ2luU3RhcnRMZW5ndGguY2FsY1ZhbHVlKGNvbnRhaW5lcldpZHRo
KSk7CisgICAgICAgIGNvbnRhaW5pbmdCbG9jay0+c2V0TWFyZ2luRW5kRm9yQ2hpbGQodGhpcywg
Y29udGFpbmVyV2lkdGggLSBjaGlsZFdpZHRoIC0gY29udGFpbmluZ0Jsb2NrLT5tYXJnaW5TdGFy
dEZvckNoaWxkKHRoaXMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0gCiAgICAgCkBAIC0xNjI5
LDE1ICsxNTg5LDE1IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uTWEK
ICAgICBib29sIHB1c2hUb0VuZEZyb21UZXh0QWxpZ24gPSAhbWFyZ2luRW5kTGVuZ3RoLmlzQXV0
bygpICYmICgoY29udGFpbmluZ0Jsb2NrU3R5bGUtPmRpcmVjdGlvbigpID09IFJUTCAmJiBjb250
YWluaW5nQmxvY2tTdHlsZS0+dGV4dEFsaWduKCkgPT0gV0VCS0lUX0xFRlQpCiAgICAgICAgIHx8
IChjb250YWluaW5nQmxvY2tTdHlsZS0+ZGlyZWN0aW9uKCkgPT0gTFRSICYmIGNvbnRhaW5pbmdC
bG9ja1N0eWxlLT50ZXh0QWxpZ24oKSA9PSBXRUJLSVRfUklHSFQpKTsKICAgICBpZiAoKG1hcmdp
blN0YXJ0TGVuZ3RoLmlzQXV0bygpICYmIGNoaWxkV2lkdGggPCBjb250YWluZXJXaWR0aCkgfHwg
cHVzaFRvRW5kRnJvbVRleHRBbGlnbikgewotICAgICAgICBzZXRNYXJnaW5FbmRVc2luZyhjb250
YWluaW5nQmxvY2tTdHlsZSwgbWFyZ2luRW5kTGVuZ3RoLmNhbGNWYWx1ZShjb250YWluZXJXaWR0
aCkpOwotICAgICAgICBzZXRNYXJnaW5TdGFydFVzaW5nKGNvbnRhaW5pbmdCbG9ja1N0eWxlLCBj
b250YWluZXJXaWR0aCAtIGNoaWxkV2lkdGggLSBtYXJnaW5FbmRVc2luZyhjb250YWluaW5nQmxv
Y2tTdHlsZSkpOworICAgICAgICBjb250YWluaW5nQmxvY2stPnNldE1hcmdpbkVuZEZvckNoaWxk
KHRoaXMsIG1hcmdpbkVuZExlbmd0aC5jYWxjVmFsdWUoY29udGFpbmVyV2lkdGgpKTsKKyAgICAg
ICAgY29udGFpbmluZ0Jsb2NrLT5zZXRNYXJnaW5TdGFydEZvckNoaWxkKHRoaXMsIGNvbnRhaW5l
cldpZHRoIC0gY2hpbGRXaWR0aCAtIGNvbnRhaW5pbmdCbG9jay0+bWFyZ2luRW5kRm9yQ2hpbGQo
dGhpcykpOwogICAgICAgICByZXR1cm47CiAgICAgfSAKICAgICAKICAgICAvLyBDYXNlIEZvdXI6
IEVpdGhlciBubyBhdXRvIG1hcmdpbnMsIG9yIG91ciB3aWR0aCBpcyA+PSB0aGUgY29udGFpbmVy
IHdpZHRoIChjc3MyLjEsIDEwLjMuMykuICBJbiB0aGF0IGNhc2UKICAgICAvLyBhdXRvIG1hcmdp
bnMgd2lsbCBqdXN0IHR1cm4gaW50byAwLgotICAgIHNldE1hcmdpblN0YXJ0VXNpbmcoY29udGFp
bmluZ0Jsb2NrU3R5bGUsIG1hcmdpblN0YXJ0TGVuZ3RoLmNhbGNNaW5WYWx1ZShjb250YWluZXJX
aWR0aCkpOwotICAgIHNldE1hcmdpbkVuZFVzaW5nKGNvbnRhaW5pbmdCbG9ja1N0eWxlLCBtYXJn
aW5FbmRMZW5ndGguY2FsY01pblZhbHVlKGNvbnRhaW5lcldpZHRoKSk7CisgICAgY29udGFpbmlu
Z0Jsb2NrLT5zZXRNYXJnaW5TdGFydEZvckNoaWxkKHRoaXMsIG1hcmdpblN0YXJ0TGVuZ3RoLmNh
bGNNaW5WYWx1ZShjb250YWluZXJXaWR0aCkpOworICAgIGNvbnRhaW5pbmdCbG9jay0+c2V0TWFy
Z2luRW5kRm9yQ2hpbGQodGhpcywgbWFyZ2luRW5kTGVuZ3RoLmNhbGNNaW5WYWx1ZShjb250YWlu
ZXJXaWR0aCkpOwogfQogCiB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoKQpA
QCAtMTk3NSw4ICsxOTM1LDggQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVCbG9ja0RpcmVjdGlv
bk1hcgogICAgIGludCBjdyA9IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRlbnQo
KTsKIAogICAgIFJlbmRlclN0eWxlKiBjb250YWluaW5nQmxvY2tTdHlsZSA9IGNvbnRhaW5pbmdC
bG9jay0+c3R5bGUoKTsKLSAgICBzZXRNYXJnaW5CZWZvcmVVc2luZyhjb250YWluaW5nQmxvY2tT
dHlsZSwgc3R5bGUoKS0+bWFyZ2luQmVmb3JlVXNpbmcoY29udGFpbmluZ0Jsb2NrU3R5bGUpLmNh
bGNNaW5WYWx1ZShjdykpOwotICAgIHNldE1hcmdpbkFmdGVyVXNpbmcoY29udGFpbmluZ0Jsb2Nr
U3R5bGUsIHN0eWxlKCktPm1hcmdpbkFmdGVyVXNpbmcoY29udGFpbmluZ0Jsb2NrU3R5bGUpLmNh
bGNNaW5WYWx1ZShjdykpOworICAgIGNvbnRhaW5pbmdCbG9jay0+c2V0TWFyZ2luQmVmb3JlRm9y
Q2hpbGQodGhpcywgc3R5bGUoKS0+bWFyZ2luQmVmb3JlVXNpbmcoY29udGFpbmluZ0Jsb2NrU3R5
bGUpLmNhbGNNaW5WYWx1ZShjdykpOworICAgIGNvbnRhaW5pbmdCbG9jay0+c2V0TWFyZ2luQWZ0
ZXJGb3JDaGlsZCh0aGlzLCBzdHlsZSgpLT5tYXJnaW5BZnRlclVzaW5nKGNvbnRhaW5pbmdCbG9j
a1N0eWxlKS5jYWxjTWluVmFsdWUoY3cpKTsKIH0KIAogaW50IFJlbmRlckJveDo6Y29udGFpbmlu
Z0Jsb2NrV2lkdGhGb3JQb3NpdGlvbmVkKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBjb250
YWluaW5nQmxvY2spIGNvbnN0CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAkocmV2aXNpb24gNjg2
ODEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAkod29ya2luZyBjb3B5KQpAQCAt
MTgxLDYgKzE4MSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgbWFyZ2luQm90dG9tKCkg
Y29uc3QgeyByZXR1cm4gbV9tYXJnaW5Cb3R0b207IH0KICAgICB2aXJ0dWFsIGludCBtYXJnaW5M
ZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9tYXJnaW5MZWZ0OyB9CiAgICAgdmlydHVhbCBpbnQgbWFy
Z2luUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX21hcmdpblJpZ2h0OyB9CisgICAgdm9pZCBzZXRN
YXJnaW5Ub3AoaW50IG1hcmdpbikgeyBtX21hcmdpblRvcCA9IG1hcmdpbjsgfQorICAgIHZvaWQg
c2V0TWFyZ2luQm90dG9tKGludCBtYXJnaW4pIHsgbV9tYXJnaW5Cb3R0b20gPSBtYXJnaW47IH0K
KyAgICB2b2lkIHNldE1hcmdpbkxlZnQoaW50IG1hcmdpbikgeyBtX21hcmdpbkxlZnQgPSBtYXJn
aW47IH0KKyAgICB2b2lkIHNldE1hcmdpblJpZ2h0KGludCBtYXJnaW4pIHsgbV9tYXJnaW5SaWdo
dCA9IG1hcmdpbjsgfQogICAgIHZpcnR1YWwgaW50IG1hcmdpbkJlZm9yZSgpIGNvbnN0OwogICAg
IHZpcnR1YWwgaW50IG1hcmdpbkFmdGVyKCkgY29uc3Q7CiAgICAgdmlydHVhbCBpbnQgbWFyZ2lu
U3RhcnQoKSBjb25zdDsKQEAgLTE5MCwxMSArMTk0LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
TWFyZ2luQmVmb3JlKGludCk7CiAgICAgdm9pZCBzZXRNYXJnaW5BZnRlcihpbnQpOwogCi0gICAg
aW50IG1hcmdpblN0YXJ0VXNpbmcoY29uc3QgUmVuZGVyU3R5bGUqKSBjb25zdDsKLSAgICBpbnQg
bWFyZ2luRW5kVXNpbmcoY29uc3QgUmVuZGVyU3R5bGUqKSBjb25zdDsKLSAgICBpbnQgbWFyZ2lu
QmVmb3JlVXNpbmcoY29uc3QgUmVuZGVyU3R5bGUqKSBjb25zdDsKLSAgICBpbnQgbWFyZ2luQWZ0
ZXJVc2luZyhjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0OwotCiAgICAgLy8gVGhlIGZvbGxvd2lu
ZyBmaXZlIGZ1bmN0aW9ucyBhcmUgdXNlZCB0byBpbXBsZW1lbnQgY29sbGFwc2luZyBtYXJnaW5z
LgogICAgIC8vIEFsbCBvYmplY3RzIGtub3cgdGhlaXIgbWF4aW1hbCBwb3NpdGl2ZSBhbmQgbmVn
YXRpdmUgbWFyZ2lucy4gIFRoZQogICAgIC8vIGZvcm11bGEgZm9yIGNvbXB1dGluZyBhIGNvbGxh
cHNlZCBtYXJnaW4gaXMgfG1heFBvc01hcmdpbnwgLSB8bWF4TmVnbWFyZ2lufC4KQEAgLTQyOCwx
MSArNDI3LDYgQEAgcHJpdmF0ZToKICAgICAvLyBUaGVzZSBpbmNsdWRlIHRhYmxlcywgcG9zaXRp
b25lZCBvYmplY3RzLCBmbG9hdHMgYW5kIGZsZXhpYmxlIGJveGVzLgogICAgIHZpcnR1YWwgdm9p
ZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIHsgc2V0UHJlZmVycmVkTG9naWNhbFdp
ZHRoc0RpcnR5KGZhbHNlKTsgfQogCi0gICAgdm9pZCBzZXRNYXJnaW5TdGFydFVzaW5nKGNvbnN0
IFJlbmRlclN0eWxlKiwgaW50KTsKLSAgICB2b2lkIHNldE1hcmdpbkVuZFVzaW5nKGNvbnN0IFJl
bmRlclN0eWxlKiwgaW50KTsKLSAgICB2b2lkIHNldE1hcmdpbkJlZm9yZVVzaW5nKGNvbnN0IFJl
bmRlclN0eWxlKiwgaW50KTsKLSAgICB2b2lkIHNldE1hcmdpbkFmdGVyVXNpbmcoY29uc3QgUmVu
ZGVyU3R5bGUqLCBpbnQpOwotCiBwcml2YXRlOgogICAgIC8vIFRoZSB3aWR0aC9oZWlnaHQgb2Yg
dGhlIGNvbnRlbnRzICsgYm9yZGVycyArIHBhZGRpbmcuICBUaGUgeC95IGxvY2F0aW9uIGlzIHJl
bGF0aXZlIHRvIG91ciBjb250YWluZXIgKHdoaWNoIGlzIG5vdCBhbHdheXMgb3VyIHBhcmVudCku
CiAgICAgSW50UmVjdCBtX2ZyYW1lUmVjdDsK
</data>
<flag name="review"
          id="58911"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>