<?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>38344</bug_id>
          
          <creation_ts>2010-04-29 13:52:04 -0700</creation_ts>
          <short_desc>Remove custom bindings for HTMLInputElement</short_desc>
          <delta_ts>2010-09-02 16:01:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>eric</cc>
    
    <cc>levin</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yaar</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>219163</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-29 13:52:04 -0700</bug_when>
    <thetext>Remove custom bindings for HTMLInputElement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219165</commentid>
    <comment_count>1</comment_count>
      <attachid>54732</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-29 13:54:50 -0700</bug_when>
    <thetext>Created attachment 54732
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219167</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-29 13:58:10 -0700</bug_when>
    <thetext>Attachment 54732 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:440:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:456:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:481:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:591:  Extra space before )  [whitespace/parens] [2]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:597:  Extra space before )  [whitespace/parens] [2]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h:164:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h:167:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h:173:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 8 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219188</commentid>
    <comment_count>3</comment_count>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-04-29 14:34:36 -0700</bug_when>
    <thetext>That&apos;s better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219556</commentid>
    <comment_count>4</comment_count>
      <attachid>54732</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-30 11:52:30 -0700</bug_when>
    <thetext>Comment on attachment 54732
Patch

I think HTMLInputElement.h needs a comment as to why we&apos;re adding these.  But I think this looks OK.

Should we be be making selectionStart, etc. virtual and overriding them in HTMLIntputElement as private members?  Should we change the baseclass to take an ExceptionCode and only throw it for HTMLInputElement?

I think this is OK as is, but I worry that folks could easily use the wrong one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219590</commentid>
    <comment_count>5</comment_count>
      <attachid>54732</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-30 13:13:18 -0700</bug_when>
    <thetext>Comment on attachment 54732
Patch

Throwing an exception when previously we would silently do nothing could easily be a backward compatibility problem for the Objective-C bindings.

&gt; +int HTMLInputElement::selectionStart(ExceptionCode&amp; ec)
&gt; +{
&gt; +    if (!canHaveSelection()) {
&gt; +        ec = TYPE_MISMATCH_ERR;
&gt; +        return -1;
&gt; +    }

I think this gives a different exception than before. Probably the new one is correct and the old was incorrect, but since it&apos;s a behavior change I&apos;d like to see tests showing the behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219985</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-02 19:28:11 -0700</bug_when>
    <thetext>We should be able to have the ObjC bindings call the non-ec version of the method.  I&apos;m not sure why that didn&apos;t work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219995</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-02 19:33:07 -0700</bug_when>
    <thetext>Attachment 54732 was posted by a committer and has review+, assigning to Adam Barth for commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226052</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-14 16:34:21 -0700</bug_when>
    <thetext>Committed r59502: &lt;http://trac.webkit.org/changeset/59502&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226056</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-14 16:51:33 -0700</bug_when>
    <thetext>I landed the TestObj.idl changes in http://trac.webkit.org/changeset/59502.  I&apos;m going to post a new patch that addresses Darin&apos;s feedback shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226137</commentid>
    <comment_count>10</comment_count>
      <attachid>56139</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-14 22:06:51 -0700</bug_when>
    <thetext>Created attachment 56139
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226151</commentid>
    <comment_count>11</comment_count>
      <attachid>56141</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-14 23:23:49 -0700</bug_when>
    <thetext>Created attachment 56141
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226513</commentid>
    <comment_count>12</comment_count>
      <attachid>56141</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-16 12:12:41 -0700</bug_when>
    <thetext>Comment on attachment 56141
Patch

Good to avoid custom bindings.

Awkward to have these two versions of these basic functions side by side. The only other place I can think of where we have that is the Range class. Note the different way these functions are declared in that class compared to what we have in this patch. I think I like the Range style slightly better.

&gt; +    // The methods that take ExceptionCodes check canHaveSelection().

Methods is not a C++ term, and I normally avoid using it to mean member function in WebKit code. I would say &quot;The following functions&quot; or &quot;These functions&quot; rather than &quot;The methods&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273537</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-02 13:47:12 -0700</bug_when>
    <thetext>I&apos;m confused why this is open?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54732</attachid>
            <date>2010-04-29 13:54:50 -0700</date>
            <delta_ts>2010-05-14 22:06:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38344-20100429135449.patch</filename>
            <type>text/plain</type>
            <size>25665</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTdmZTkzNGNkNGI4ZGY5Y2MxYmRmMDlhNGI3ZTRhM2MxODVhMjQ1NC4uZTFkMjU5NDIxNGM3MTM4
N2U0Y2UzYjk5MTFmODExNjVjM2FlNzgzYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiw1MSBAQAogCiAgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAgIFJlbW92ZSBjdXN0b20gYmluZGluZ3Mg
Zm9yIEhUTUxJbnB1dEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM4MzQ0CisKKyAgICAgICAgSW5zdGVhZCBvZiBjaGVja2luZyBmb3IgY2Fu
SGF2ZVNlbGVjdGlvbiBpbiB0aGUgYmluZGluZ3MgbGF5ZXIsIEkndmUKKyAgICAgICAgcHVzaGVk
IHRoZSBjaGVjayBpbnRvIFdlYkNvcmUuICBEb2luZyBzbyBsZXRzIHVzIHJlbW92ZSBhIGJ1bmNo
IG9mCisgICAgICAgIGN1c3RvbSBiaW5kaW5ncyBjb2RlLgorCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpj
L0RPTUhUTUwubW06CisgICAgICAgICgtW0RPTUhUTUxJbnB1dEVsZW1lbnQgX3JlcGxhY2VDaGFy
YWN0ZXJzSW5SYW5nZTp3aXRoU3RyaW5nOnNlbGVjdGluZ0Zyb21JbmRleDpdKToKKyAgICAgICAg
KC1bRE9NSFRNTElucHV0RWxlbWVudCBfc2VsZWN0ZWRSYW5nZV0pOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwOgorICAgICAgICAo
d2Via2l0X2RvbV90ZXN0X29ial9nZXRfYXR0cl93aXRoX3NldHRlcl9leGNlcHRpb24pOgorICAg
ICAgICAod2Via2l0X2RvbV90ZXN0X29ial9zZXRfYXR0cl93aXRoX3NldHRlcl9leGNlcHRpb24p
OgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9zZXRfYXR0cl93aXRoX2dldHRlcl9leGNl
cHRpb24pOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9zZXRfcHJvcGVydHkpOgorICAg
ICAgICAod2Via2l0X2RvbV90ZXN0X29ial9nZXRfcHJvcGVydHkpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEpTVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEpTVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tOgorICAgICAgICAoLVtET01UZXN0T2JqIGF0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uXSk6CisgICAgICAgICgtW0RPTVRlc3RPYmogc2V0QXR0cldp
dGhTZXR0ZXJFeGNlcHRpb246XSk6CisgICAgICAgICgtW0RPTVRlc3RPYmogc2V0QXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb246XSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RP
YmouaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjphdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbkF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjphdHRy
V2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
akludGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAg
ICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5w
dXRFbGVtZW50OjpzZWxlY3Rpb25TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRF
bGVtZW50OjpzZWxlY3Rpb25FbmQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVu
dDo6c2V0U2VsZWN0aW9uU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVu
dDo6c2V0U2VsZWN0aW9uRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
OnNldFNlbGVjdGlvblJhbmdlKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsOgorCisyMDEwLTA0LTI5ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKICAgICAgICAgQ29kZUdlbmVyYXRvckpTLnBtIHNob3VsZCBiZSBjb25zaXN0
ZW50IGFib3V0IGNhc3RlZFRoaXMgdmVyc3VzIGNhc3RlZFRoaXNPYmoKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4MzM4CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcCBiL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcAppbmRleCBlNTE2NmVlYzFl
YTNiMGZhZGM2ZDAwN2E3MDhjMmI4MWVhYjg0Yzg4Li4zZWJiYTU3ZWJkODYzODlhMTNkNzZlMDQ4
MTExZWY2ZTYzMzkzYTA3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTElu
cHV0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1
dEVsZW1lbnRDdXN0b20uY3BwCkBAIC02Nyw1MyArNjcsNCBAQCBKU1ZhbHVlIEpTSFRNTElucHV0
RWxlbWVudDo6dHlwZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgcmV0dXJuIGpzU3RyaW5n
KGV4ZWMsIHR5cGUpOwogfQogCi1KU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9u
U3RhcnQoRXhlY1N0YXRlKiBleGVjKSBjb25zdAotewotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlu
cHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGltcGwoKSk7Ci0gICAgaWYgKCFp
bnB1dC0+Y2FuSGF2ZVNlbGVjdGlvbigpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVj
LCBUeXBlRXJyb3IpOwotCi0gICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIGlucHV0LT5zZWxlY3Rp
b25TdGFydCgpKTsKLX0KLQotdm9pZCBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblN0
YXJ0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBIVE1MSW5wdXRFbGVt
ZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihpbXBsKCkpOwotICAg
IGlmICghaW5wdXQtPmNhbkhhdmVTZWxlY3Rpb24oKSkKLSAgICAgICAgdGhyb3dFcnJvcihleGVj
LCBUeXBlRXJyb3IpOwotCi0gICAgaW5wdXQtPnNldFNlbGVjdGlvblN0YXJ0KHZhbHVlLnRvSW50
MzIoZXhlYykpOwotfQotCi1KU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRW5k
KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKLXsKLSAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9
IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihpbXBsKCkpOwotICAgIGlmICghaW5wdXQt
PmNhbkhhdmVTZWxlY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlw
ZUVycm9yKTsKLQotICAgIHJldHVybiBqc051bWJlcihleGVjLCBpbnB1dC0+c2VsZWN0aW9uRW5k
KCkpOwotfQotCi12b2lkIEpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRW5kKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1
dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihpbXBsKCkpOwotICAgIGlmICghaW5w
dXQtPmNhbkhhdmVTZWxlY3Rpb24oKSkKLSAgICAgICAgdGhyb3dFcnJvcihleGVjLCBUeXBlRXJy
b3IpOwotCi0gICAgaW5wdXQtPnNldFNlbGVjdGlvbkVuZCh2YWx1ZS50b0ludDMyKGV4ZWMpKTsK
LX0KLQotSlNWYWx1ZSBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKLXsKLSAgICBIVE1MSW5wdXRFbGVtZW50
KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihpbXBsKCkpOwotICAgIGlm
ICghaW5wdXQtPmNhbkhhdmVTZWxlY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3Io
ZXhlYywgVHlwZUVycm9yKTsKLQotICAgIGludCBzdGFydCA9IGFyZ3MuYXQoMCkudG9JbnQzMihl
eGVjKTsKLSAgICBpbnQgZW5kID0gYXJncy5hdCgxKS50b0ludDMyKGV4ZWMpOwotCi0gICAgaW5w
dXQtPnNldFNlbGVjdGlvblJhbmdlKHN0YXJ0LCBlbmQpOwotICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL29iamMvRE9NSFRNTC5tbSBiL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MLm1t
CmluZGV4IDM0ODhiMzVlMWQ0ZWIzYzZiNzQ4MTYzZjUxMThmNTlhNTE3MWI1MTMuLjU2ZGNkNDFm
ODRlMWY2YzdmZGM1YmU4OTk5NThhNzVkODkzMDU1OTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01IVE1MLm1tCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1M
Lm1tCkBAIC0xMjcsNyArMTI3LDkgQEAKICAgICAgICAgV2ViQ29yZTo6U3RyaW5nIG5ld1ZhbHVl
ID0gaW5wdXRFbGVtZW50LT52YWx1ZSgpOwogICAgICAgICBuZXdWYWx1ZS5yZXBsYWNlKHRhcmdl
dFJhbmdlLmxvY2F0aW9uLCB0YXJnZXRSYW5nZS5sZW5ndGgsIHJlcGxhY2VtZW50U3RyaW5nKTsK
ICAgICAgICAgaW5wdXRFbGVtZW50LT5zZXRWYWx1ZShuZXdWYWx1ZSk7Ci0gICAgICAgIGlucHV0
RWxlbWVudC0+c2V0U2VsZWN0aW9uUmFuZ2UoaW5kZXgsIG5ld1ZhbHVlLmxlbmd0aCgpKTsKKyAg
ICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgIGlucHV0RWxlbWVu
dC0+c2V0U2VsZWN0aW9uUmFuZ2UoaW5kZXgsIG5ld1ZhbHVlLmxlbmd0aCgpLCBlYyk7CisgICAg
ICAgIC8vIEZJWE1FOiBXaGF0IGlmIHNldFNlbGVjdGlvblJhbmdlIHNldHMgZWM/CiAgICAgfQog
fQogCkBAIC0xMzUsOCArMTM3LDExIEBACiB7CiAgICAgV2ViQ29yZTo6SFRNTElucHV0RWxlbWVu
dCogaW5wdXRFbGVtZW50ID0gY29yZShzZWxmKTsKICAgICBpZiAoaW5wdXRFbGVtZW50KSB7Ci0g
ICAgICAgIGludCBzdGFydCA9IGlucHV0RWxlbWVudC0+c2VsZWN0aW9uU3RhcnQoKTsKLSAgICAg
ICAgaW50IGVuZCA9IGlucHV0RWxlbWVudC0+c2VsZWN0aW9uRW5kKCk7CisgICAgICAgIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICBpbnQgc3RhcnQgPSBpbnB1dEVsZW1l
bnQtPnNlbGVjdGlvblN0YXJ0KGVjKTsKKyAgICAgICAgLy8gRklYTUU6IFdoYXQgaWYgc2VsZWN0
aW9uU3RhcnQgc2V0cyBlYz8KKyAgICAgICAgaW50IGVuZCA9IGlucHV0RWxlbWVudC0+c2VsZWN0
aW9uRW5kKGVjKTsKKyAgICAgICAgLy8gRklYTUU6IFdoYXQgaWYgc2VsZWN0aW9uRW5kIHNldHMg
ZWM/CiAgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShzdGFydCwgZW5kIC0gc3RhcnQpOyAKICAg
ICB9CiAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNw
cCBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9i
ai5jcHAKaW5kZXggNGFiZjhhMDAzMDA2Nzk5NmQwNWExNjc0YThlY2E2NTkwMWU1NWZjNC4uYTVk
OWRlM2NlMDgwZGUwODg0Y2FhODg2NmIxZGI5Y2JhZTNmYmQ2NiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcAorKysg
Yi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmou
Y3BwCkBAIC00MjMsMjEgKzQyMywzMyBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9hdHRyX3dp
dGhfZXhjZXB0aW9uIChXZWJLaXRET01UZXN0T2JqICpzZWxmLCBnbG9uZyB2YWx1ZQogfQogCiBn
bG9uZwotd2Via2l0X2RvbV90ZXN0X29ial9nZXRfYXR0cl93aXRoX3NldHRlcl9leGNlcHRpb24g
KFdlYktpdERPTVRlc3RPYmogKnNlbGYpCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9hdHRyX3dp
dGhfc2V0dGVyX2V4Y2VwdGlvbiAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZiwgR0Vycm9yICoqZXJy
b3IpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHNlbGYsIDApOwogICAgIFdlYkNvcmU6
OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdsb25nIHJlcyA9IGl0
ZW0tPmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCk7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CisgICAgZ2xvbmcgcmVzID0gaXRlbS0+YXR0cldpdGhTZXR0ZXJFeGNlcHRpb24o
ZWMpOworICAgIGlmIChlYykgeworICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3Jp
cHRpb24gZWNkZXNjOworICAgICAgICBXZWJDb3JlOjpnZXRFeGNlcHRpb25Db2RlRGVzY3JpcHRp
b24oZWMsIGVjZGVzYyk7CisgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVh
cmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsK
KyAgICB9CiAgICAgcmV0dXJuIHJlczsKIAogfQogCiB2b2lkCi13ZWJraXRfZG9tX3Rlc3Rfb2Jq
X3NldF9hdHRyX3dpdGhfc2V0dGVyX2V4Y2VwdGlvbiAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZiwg
Z2xvbmcgdmFsdWUpCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9hdHRyX3dpdGhfc2V0dGVyX2V4
Y2VwdGlvbiAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZiwgZ2xvbmcgdmFsdWUsIEdFcnJvciAqKmVy
cm9yKQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHNlbGYpOwogICAgIFdlYkNvcmU6OlRlc3RP
YmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGl0ZW0tPnNldEF0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uKHZhbHVlKTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICBpdGVtLT5zZXRBdHRyV2l0aFNldHRlckV4Y2VwdGlvbih2YWx1ZSwgZWMpOworICAgIGlm
IChlYykgeworICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNj
OworICAgICAgICBXZWJDb3JlOjpnZXRFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24oZWMsIGVjZGVz
Yyk7CisgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJp
bmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKKyAgICB9CiAKIH0K
IApAQCAtNDUyLDExICs0NjQsMTcgQEAgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfYXR0cl93aXRo
X2dldHRlcl9leGNlcHRpb24gKFdlYktpdERPTVRlc3RPYmogKnNlbGYpCiB9CiAKIHZvaWQKLXdl
YmtpdF9kb21fdGVzdF9vYmpfc2V0X2F0dHJfd2l0aF9nZXR0ZXJfZXhjZXB0aW9uIChXZWJLaXRE
T01UZXN0T2JqICpzZWxmLCBnbG9uZyB2YWx1ZSkKK3dlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2F0
dHJfd2l0aF9nZXR0ZXJfZXhjZXB0aW9uIChXZWJLaXRET01UZXN0T2JqICpzZWxmLCBnbG9uZyB2
YWx1ZSwgR0Vycm9yICoqZXJyb3IpCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbCAoc2VsZik7CiAg
ICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgaXRl
bS0+c2V0QXR0cldpdGhHZXR0ZXJFeGNlcHRpb24odmFsdWUpOworICAgIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgIGl0ZW0tPnNldEF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKHZh
bHVlLCBlYyk7CisgICAgaWYgKGVjKSB7CisgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVE
ZXNjcmlwdGlvbiBlY2Rlc2M7CisgICAgICAgIFdlYkNvcmU6OmdldEV4Y2VwdGlvbkNvZGVEZXNj
cmlwdGlvbihlYywgZWNkZXNjKTsKKyAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwg
Z19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5h
bWUpOworICAgIH0KIAogfQogCkBAIC01NTUsMTIgKzU3MywxNCBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3Bf
aWQsIGNvbgogICAgIH0KICAgICBjYXNlIFBST1BfQVRUUl9XSVRIX1NFVFRFUl9FWENFUFRJT046
CiAgICAgewotICAgICAgICAgY29yZVNlbGYtPnNldEF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKChn
X3ZhbHVlX2dldF9sb25nKHZhbHVlKSkgKTsKKyAgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOworICAgICAgICAgY29yZVNlbGYtPnNldEF0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
KChnX3ZhbHVlX2dldF9sb25nKHZhbHVlKSkgLCBlYyApOwogICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgIGNhc2UgUFJPUF9BVFRSX1dJVEhfR0VUVEVSX0VYQ0VQVElPTjoKICAgICB7Ci0gICAg
ICAgICBjb3JlU2VsZi0+c2V0QXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oKGdfdmFsdWVfZ2V0X2xv
bmcodmFsdWUpKSApOworICAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Cisg
ICAgICAgICBjb3JlU2VsZi0+c2V0QXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oKGdfdmFsdWVfZ2V0
X2xvbmcodmFsdWUpKSAsIGVjICk7CiAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBQ
Uk9QX0NVU1RPTV9BVFRSOgpAQCAtNjMwLDcgKzY1MCw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9k
b21fdGVzdF9vYmpfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwg
R1ZhCiAgICAgfQogICAgIGNhc2UgUFJPUF9BVFRSX1dJVEhfU0VUVEVSX0VYQ0VQVElPTjoKICAg
ICB7Ci0gICAgICAgICBnX3ZhbHVlX3NldF9sb25nKHZhbHVlLCBjb3JlU2VsZi0+YXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb24oKSk7CisgICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0g
MDsKKyAgICAgICAgIGdfdmFsdWVfc2V0X2xvbmcodmFsdWUsIGNvcmVTZWxmLT5hdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbihlYykpOwogICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgUFJP
UF9BVFRSX1dJVEhfR0VUVEVSX0VYQ0VQVElPTjoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oIGIvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmgKaW5kZXggZTVlNzY5
ZjE4ZTY0MWE1ODNmNzRlZDJjMmU5Y2E4MWRjZDg1OWE4Yy4uNzcyNDIwZTMyMmY4MDA5YzM4MmQz
NWI1NTk4YTQ4OTM5MDQxOTdkZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmgKQEAgLTE1OCwxNiArMTU4LDE2
IEBAIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfYXR0cl93aXRoX2V4
Y2VwdGlvbiAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZiwgZ2xvbmcgdmFsdWUpOwogCiBXRUJLSVRf
QVBJIGdsb25nCi13ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9hdHRyX3dpdGhfc2V0dGVyX2V4Y2Vw
dGlvbiAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZik7Cit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9h
dHRyX3dpdGhfc2V0dGVyX2V4Y2VwdGlvbiAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZiwgR0Vycm9y
ICoqZXJyb3IpOwogCiBXRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2F0
dHJfd2l0aF9zZXR0ZXJfZXhjZXB0aW9uIChXZWJLaXRET01UZXN0T2JqICpzZWxmLCBnbG9uZyB2
YWx1ZSk7Cit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9hdHRyX3dpdGhfc2V0dGVyX2V4Y2VwdGlv
biAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZiwgZ2xvbmcgdmFsdWUsIEdFcnJvciAqKmVycm9yKTsK
IAogV0VCS0lUX0FQSSBnbG9uZwogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfYXR0cl93aXRoX2dl
dHRlcl9leGNlcHRpb24gKFdlYktpdERPTVRlc3RPYmogKnNlbGYpOwogCiBXRUJLSVRfQVBJIHZv
aWQKLXdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2F0dHJfd2l0aF9nZXR0ZXJfZXhjZXB0aW9uIChX
ZWJLaXRET01UZXN0T2JqICpzZWxmLCBnbG9uZyB2YWx1ZSk7Cit3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X3NldF9hdHRyX3dpdGhfZ2V0dGVyX2V4Y2VwdGlvbiAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZiwg
Z2xvbmcgdmFsdWUsIEdFcnJvciAqKmVycm9yKTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggYmM5NTNhODk2
NWM0MDRjNTU5NmViZTFkOGE4MjBiNGE0YmM5OWU4OC4uZDJlZWQ4ZTM2M2EyNGY5Njg3NzZkYTcw
NjMyOWM4OTgwNjc0YjRjMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCkBAIC0yOTcsOSArMjk3LDEwIEBAIEpTVmFsdWUganNUZXN0T2JqQXR0
cldpdGhFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJ
ZGVuCiBKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCiB7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJh
c2UpKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmlt
cGwoKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihleGVjLCBpbXAtPmF0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uKCkpOworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihl
eGVjLCBpbXAtPmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKGVjKSk7CisgICAgc2V0RE9NRXhjZXB0
aW9uKGV4ZWMsIGVjKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0zNzQsMTQgKzM3NSwx
OCBAQCB2b2lkIHNldEpTVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4odGhpc09iamVjdCk7CiAgICAgVGVzdE9iaiogaW1w
ID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0gICAgaW1wLT5z
ZXRBdHRyV2l0aFNldHRlckV4Y2VwdGlvbih2YWx1ZS50b0ludDMyKGV4ZWMpKTsKKyAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICBpbXAtPnNldEF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKHZh
bHVlLnRvSW50MzIoZXhlYyksIGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwog
fQogCiB2b2lkIHNldEpTVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4odGhpc09iamVjdCk7CiAg
ICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwo
KSk7Ci0gICAgaW1wLT5zZXRBdHRyV2l0aEdldHRlckV4Y2VwdGlvbih2YWx1ZS50b0ludDMyKGV4
ZWMpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBpbXAtPnNldEF0dHJXaXRoR2V0
dGVyRXhjZXB0aW9uKHZhbHVlLnRvSW50MzIoZXhlYyksIGVjKTsKKyAgICBzZXRET01FeGNlcHRp
b24oZXhlYywgZWMpOwogfQogCiB2b2lkIHNldEpTVGVzdE9iakN1c3RvbUF0dHIoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbSBiL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQppbmRleCBjNjUzZDdk
ZTQ5NmE0ZGRlNDc0YmMyMmQyY2FlNjI2MzU5MzljZmRjLi4wMDE3YTEwMjY0MTNiOThhOTkyZWYz
YWM5MTczMGFkYzRjM2E5YjliIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvT2JqQy9ET01UZXN0T2JqLm1tCkBAIC0xNDgsMTIgKzE0OCwxNyBAQAogCiAtIChpbnQpYXR0
cldpdGhTZXR0ZXJFeGNlcHRpb24KIHsKLSAgICByZXR1cm4gSU1QTC0+YXR0cldpdGhTZXR0ZXJF
eGNlcHRpb24oKTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBpbnQg
cmVzdWx0ID0gSU1QTC0+YXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oZWMpOworICAgIFdlYkNvcmU6
OnJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLSAodm9pZClz
ZXRBdHRyV2l0aFNldHRlckV4Y2VwdGlvbjooaW50KW5ld0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
CiB7Ci0gICAgSU1QTC0+c2V0QXR0cldpdGhTZXR0ZXJFeGNlcHRpb24obmV3QXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24pOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIElN
UEwtPnNldEF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKG5ld0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
LCBlYyk7CisgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKIH0KIAogLSAoaW50KWF0
dHJXaXRoR2V0dGVyRXhjZXB0aW9uCkBAIC0xNjMsNyArMTY4LDkgQEAKIAogLSAodm9pZClzZXRB
dHRyV2l0aEdldHRlckV4Y2VwdGlvbjooaW50KW5ld0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uCiB7
Ci0gICAgSU1QTC0+c2V0QXR0cldpdGhHZXR0ZXJFeGNlcHRpb24obmV3QXR0cldpdGhHZXR0ZXJF
eGNlcHRpb24pOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIElNUEwt
PnNldEF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKG5ld0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uLCBl
Yyk7CisgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKIH0KIAogLSAoaW50KWN1c3Rv
bUF0dHIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmou
aWRsIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggOTMy
ZThhN2ZmYjg1MjE1YzNmMGQ4MDU2NWZmMmRmMGQwOWQwYmJlYS4uNTIyNzhiNWYxMWQ3MjZkMTIz
NDYwNzU0MzU2NjZiMDYzZTgyZmM5YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdE9iai5pZGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdE9iai5pZGwKQEAgLTUxLDggKzUxLDggQEAgbW9kdWxlIHRlc3QgewogICAgICAgICAvLyBF
eGNlcHRpb25zCiAgICAgICAgIHZvaWQgICAgbWV0aG9kV2l0aEV4Y2VwdGlvbigpIHJhaXNlcyhE
T01FeGNlcHRpb24pOwogICAgICAgICBhdHRyaWJ1dGUgbG9uZyBhdHRyV2l0aEV4Y2VwdGlvbiBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAgICAgYXR0cmlidXRlIGxvbmcgYXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24gZ2V0cmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAgICAgIGF0dHJpYnV0ZSBs
b25nIGF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIHNldHJhaXNlcyhET01FeGNlcHRpb24pOworICAg
ICAgICBhdHRyaWJ1dGUgbG9uZyBhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiBnZXR0ZXIgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CisgICAgICAgIGF0dHJpYnV0ZSBsb25nIGF0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogICAgICAgICAvLyAnQ3VzdG9t
JyBleHRlbmRlZCBhdHRyaWJ1dGUKICAgICAgICAgYXR0cmlidXRlIFtDdXN0b21dIGxvbmcgICAg
ICAgICAgICBjdXN0b21BdHRyOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0T2JqLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE9iai5jcHAKaW5kZXggYWM3MmEzYzNlNTY0NDU0MjAwY2MwMGQ2NTI0NjBhZWU4Y2Vm
NzQ1MC4uZWFlNGRjZWE2ZGZmODc0YWRmZmFhMmQ2ZTRjMDdjYWE5YTk1Y2ZjMCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCkBAIC0xNzAsNyAr
MTcwLDEzIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cldpdGhTZXR0ZXJFeGNl
cHRpb25BdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyCiB7CiAgICAgSU5DX1NUQVRTKCJET00u
VGVzdE9iai5hdHRyV2l0aFNldHRlckV4Y2VwdGlvbi5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICByZXR1cm4gdjg6Oklu
dGVnZXI6Ok5ldyhpbXAtPmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCkpOworICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgIGludCB2ID0gaW1wLT5hdHRyV2l0aFNldHRlckV4Y2VwdGlvbihl
Yyk7CisgICAgaWYgKFVOTElLRUxZKGVjKSkgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNl
cHRpb24oZWMpOworICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAg
fQorICAgIHJldHVybiB2ODo6SW50ZWdlcjo6TmV3KHYpOwogfQogCiBzdGF0aWMgdm9pZCBhdHRy
V2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQpAQCAtMTc4LDcgKzE4NCwxMCBAQCBzdGF0aWMgdm9pZCBhdHRyV2l0aFNldHRlckV4Y2VwdGlv
bkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMbwogICAgIElOQ19T
VEFUUygiRE9NLlRlc3RPYmouYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24uX3NldCIpOwogICAgIFRl
c3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgaW50
IHYgPSB0b0ludDMyKHZhbHVlKTsKLSAgICBpbXAtPnNldEF0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
KHYpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGltcC0+c2V0QXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24odiwgZWMpOworICAgIGlmIChVTkxJS0VMWShlYykpCisgICAgICAgIFY4UHJv
eHk6OnNldERPTUV4Y2VwdGlvbihlYyk7CiAgICAgcmV0dXJuOwogfQogCkBAIC0xOTQsNyArMjAz
LDEwIEBAIHN0YXRpYyB2b2lkIGF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvCiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9i
ai5hdHRyV2l0aEdldHRlckV4Y2VwdGlvbi5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBpbnQgdiA9IHRvSW50MzIodmFs
dWUpOwotICAgIGltcC0+c2V0QXR0cldpdGhHZXR0ZXJFeGNlcHRpb24odik7CisgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgaW1wLT5zZXRBdHRyV2l0aEdldHRlckV4Y2VwdGlvbih2LCBl
Yyk7CisgICAgaWYgKFVOTElLRUxZKGVjKSkKKyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0
aW9uKGVjKTsKICAgICByZXR1cm47CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IGE5YWM3NGMzMzEx
OWQ0MTFhYmNmM2I3NTYzNWZiYzhjYzA3YzVlZjMuLjc1OTkyODdiZmQ5NDgzZTU3NTdmNzk4Y2Ri
Y2Q3N2Q4ODNiYmQ4MjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcApAQCAtMzgsNzMgKzM4LDYgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MSW5wdXRFbGVt
ZW50OjpzZWxlY3Rpb25TdGFydEFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQotewotICAgIElOQ19TVEFUUygiRE9N
LkhUTUxJbnB1dEVsZW1lbnQuc2VsZWN0aW9uU3RhcnQuX2dldCIpOwotICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKLSAgICBIVE1MSW5wdXRFbGVtZW50
KiBpbXAgPSBWOEhUTUxJbnB1dEVsZW1lbnQ6OnRvTmF0aXZlKGhvbGRlcik7Ci0KLSAgICBpZiAo
IWltcC0+Y2FuSGF2ZVNlbGVjdGlvbigpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiQWNj
ZXNzaW5nIHNlbGVjdGlvblN0YXJ0IG9uIGFuIGlucHV0IGVsZW1lbnQgdGhhdCBjYW5ub3QgaGF2
ZSBhIHNlbGVjdGlvbi4iKTsKLQotICAgIGludCB2ID0gaW1wLT5zZWxlY3Rpb25TdGFydCgpOwot
ICAgIHJldHVybiB2ODo6SW50ZWdlcjo6TmV3KHYpOwotfQotCi12b2lkIFY4SFRNTElucHV0RWxl
bWVudDo6c2VsZWN0aW9uU3RhcnRBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCi17Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTElucHV0RWxlbWVudC5zZWxlY3Rpb25T
dGFydC5fc2V0Iik7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhv
bGRlcigpOwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGltcCA9IFY4SFRNTElucHV0RWxlbWVudDo6
dG9OYXRpdmUoaG9sZGVyKTsKLQotICAgIGlmICghaW1wLT5jYW5IYXZlU2VsZWN0aW9uKCkpIHsK
LSAgICAgICAgdGhyb3dFcnJvcigiQWNjZXNzaW5nIHNlbGVjdGlvblN0YXJ0IG9uIGFuIGlucHV0
IGVsZW1lbnQgdGhhdCBjYW5ub3QgaGF2ZSBhIHNlbGVjdGlvbi4iKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBpbXAtPnNldFNlbGVjdGlvblN0YXJ0KHZhbHVlLT5JbnQzMlZhbHVlKCkp
OwotfQotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rp
b25FbmRBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MSW5wdXRFbGVt
ZW50LnNlbGVjdGlvbkVuZC5fZ2V0Iik7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xk
ZXIgPSBpbmZvLkhvbGRlcigpOwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGltcCA9IFY4SFRNTElu
cHV0RWxlbWVudDo6dG9OYXRpdmUoaG9sZGVyKTsKLQotICAgIGlmICghaW1wLT5jYW5IYXZlU2Vs
ZWN0aW9uKCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJBY2Nlc3Npbmcgc2VsZWN0aW9u
RW5kIG9uIGFuIGlucHV0IGVsZW1lbnQgdGhhdCBjYW5ub3QgaGF2ZSBhIHNlbGVjdGlvbi4iKTsK
LQotICAgIGludCB2ID0gaW1wLT5zZWxlY3Rpb25FbmQoKTsKLSAgICByZXR1cm4gdjg6OkludGVn
ZXI6Ok5ldyh2KTsKLX0KLQotdm9pZCBWOEhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkVuZEFj
Y2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKLXsKLSAgICBJTkNfU1RB
VFMoIkRPTS5IVE1MSW5wdXRFbGVtZW50LnNlbGVjdGlvbkVuZC5fc2V0Iik7Ci0gICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwotICAgIEhUTUxJbnB1dEVs
ZW1lbnQqIGltcCA9IFY4SFRNTElucHV0RWxlbWVudDo6dG9OYXRpdmUoaG9sZGVyKTsKLQotICAg
IGlmICghaW1wLT5jYW5IYXZlU2VsZWN0aW9uKCkpIHsKLSAgICAgICAgdGhyb3dFcnJvcigiQWNj
ZXNzaW5nIHNlbGVjdGlvbkVuZCBvbiBhbiBpbnB1dCBlbGVtZW50IHRoYXQgY2Fubm90IGhhdmUg
YSBzZWxlY3Rpb24uIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpbXAtPnNldFNl
bGVjdGlvbkVuZCh2YWx1ZS0+SW50MzJWYWx1ZSgpKTsKLX0KLQotdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4SFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2VDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxJbnB1dEVsZW1l
bnQuc2V0U2VsZWN0aW9uUmFuZ2UiKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRl
ciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgSFRNTElucHV0RWxlbWVudCogaW1wID0gVjhIVE1MSW5w
dXRFbGVtZW50Ojp0b05hdGl2ZShob2xkZXIpOwotCi0gICAgaWYgKCFpbXAtPmNhbkhhdmVTZWxl
Y3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkNhbGxpbmcgc2V0U2VsZWN0aW9u
UmFuZ2Ugb24gYW4gaW5wdXQgZWxlbWVudCB0aGF0IGNhbm5vdCBoYXZlIGEgc2VsZWN0aW9uLiIp
OwotCi0gICAgaW50IHN0YXJ0ID0gYXJnc1swXS0+SW50MzJWYWx1ZSgpOwotICAgIGludCBlbmQg
PSBhcmdzWzFdLT5JbnQzMlZhbHVlKCk7Ci0KLSAgICBpbXAtPnNldFNlbGVjdGlvblJhbmdlKHN0
YXJ0LCBlbmQpOwotICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci19CisvLyBGSVhNRTogUmVt
b3ZlIHRoaXMgZmlsZS4KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCmluZGV4IGU4ZGIwYzk1YmM5ZWRkYzMwNjI5NWI1MzhlMDc3MDMyMTFiN2ZhNzMu
LjQxNDlhNDZjMjZmY2EwOGQ1YzMwY2IyNWE1ODBjNTczNWNlMTVlZjAgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKQEAgLTk4Niw2ICs5ODYsNTEgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50
OjpjYW5TdGFydFNlbGVjdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnRXaXRoU3RhdGU6OmNhblN0YXJ0U2VsZWN0aW9uKCk7CiB9CiAKK2ludCBIVE1MSW5wdXRF
bGVtZW50OjpzZWxlY3Rpb25TdGFydChFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWNh
bkhhdmVTZWxlY3Rpb24oKSkgeworICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAg
ICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6c2VsZWN0aW9uU3RhcnQoKTsKK30KKworaW50IEhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVj
dGlvbkVuZChFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWNhbkhhdmVTZWxlY3Rpb24o
KSkgeworICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICByZXR1cm4gLTE7
CisgICAgfQorICAgIHJldHVybiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2VsZWN0aW9u
RW5kKCk7Cit9CisKK3ZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uU3RhcnQoaW50
IHN0YXJ0LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWNhbkhhdmVTZWxlY3Rpb24o
KSkgeworICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRTZWxlY3Rpb25TdGFydChz
dGFydCk7Cit9CisKK3ZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRW5kKGludCBl
bmQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghY2FuSGF2ZVNlbGVjdGlvbigpKSB7
CisgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlvbkVuZChlbmQpOwor
fQorCit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKGludCBzdGFydCwg
aW50IGVuZCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFjYW5IYXZlU2VsZWN0aW9u
KCkpIHsKKyAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2Uo
c3RhcnQsIGVuZCk7Cit9CisKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6Y2FuSGF2ZVNlbGVjdGlv
bigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzVGV4dEZpZWxkKCk7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuaAppbmRleCBjM2IwYTczNGZjOGE5MThkM2Y5ZDU3OTliOTgwYmIyZGEzYzIzMzQxLi40NTNk
OGUzOWQ4OGY3OWRlODhhZjNlODdkOTVlMDI2MGYyMTgzY2JkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmgKQEAgLTE2OCw3ICsxNjgsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXN0
b3JlRm9ybUNvbnRyb2xTdGF0ZShjb25zdCBTdHJpbmcmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBj
YW5TdGFydFNlbGVjdGlvbigpIGNvbnN0OwotICAgIAorCisgICAgaW50IHNlbGVjdGlvblN0YXJ0
KEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBpbnQgc2VsZWN0aW9uRW5kKEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICB2b2lkIHNldFNlbGVjdGlvblN0YXJ0KGludCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZv
aWQgc2V0U2VsZWN0aW9uRW5kKGludCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2V0U2Vs
ZWN0aW9uUmFuZ2UoaW50IHN0YXJ0LCBpbnQgZW5kLCBFeGNlcHRpb25Db2RlJik7CisKICAgICBi
b29sIGNhbkhhdmVTZWxlY3Rpb24oKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0KCkg
eyBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2VsZWN0KCk7IH0KIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuaWRsCmluZGV4IDQ1NjMxMjBkOWVmNTAzNzc2MzliOTY4YWI5Mjg4OWVhYjM3Y2Rl
Y2YuLjQ2ZDAzYzIzMTYyMTk2NjkwNjY5MGM4NjcyNDdlMTllY2UwOTdkYmUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5pZGwKQEAgLTg0LDkgKzg0LDEyIEBAIG1vZHVsZSBodG1sIHsKIAogICAg
ICAgICAvLyBXaW5JRSAmIEZpcmVGb3ggZXh0ZW5zaW9uOgogCi0gICAgICAgICAgICAgICAgIGF0
dHJpYnV0ZSBbQ3VzdG9tXSBsb25nIHNlbGVjdGlvblN0YXJ0OwotICAgICAgICAgICAgICAgICBh
dHRyaWJ1dGUgW0N1c3RvbV0gbG9uZyBzZWxlY3Rpb25FbmQ7Ci0gICAgICAgIFtDdXN0b21dIHZv
aWQgc2V0U2VsZWN0aW9uUmFuZ2UoaW4gbG9uZyBzdGFydCwgaW4gbG9uZyBlbmQpOworICAgICAg
ICAgICAgICAgICBhdHRyaWJ1dGUgbG9uZyAgICAgICAgICAgIHNlbGVjdGlvblN0YXJ0CisgICAg
ICAgICAgICBnZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbiksIHNldHRlciByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGxvbmcgICAgICAgICAgICBzZWxl
Y3Rpb25FbmQKKyAgICAgICAgICAgIGdldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKSwgc2V0dGVy
IHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICB2b2lkIHNldFNlbGVjdGlvblJhbmdlKGlu
IGxvbmcgc3RhcnQsIGluIGxvbmcgZW5kKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKQogICAgICAgICAvLyBPYmpl
Y3RpdmUtQyBleHRlbnNpb246CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAxYTczZWI1MzRiOTlmNmU2ZDI3MTk3
MmIyZDY4MGI5MGIyNmNlY2MyLi5mNTY1MzQxNDlhNGNkNDY2NDg1ZGI2Y2NkYjM4MDI5ODc5ZGRl
ZDlhIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0wNC0yOSAgQWRhbSBCYXJ0
aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlbW92ZSBjdXN0b20gYmluZGluZ3MgZm9yIEhUTUxJbnB1dEVsZW1l
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4MzQ0
CisKKyAgICAgICAgTW92aW5nIHRoZSBjYW5IYXZlU2VsZWN0aW9uIGNoZWNrIGludG8gV2ViQ29y
ZSBzaG93cyBzb21lIGNvZGVwb2ludHMKKyAgICAgICAgd2hlcmUgaXQncyB1bmNsZWFyIHdoZXRo
ZXIgQ2hyb21pdW0gaXMgYmVoYXZpbmcgcHJvcGVybHkgZm9yCisgICAgICAgIEhUTUxJbnB1dEVs
ZW1lbnRzIHRoYXQgY2Fubm90IGhhdmUgc2VsZWN0aW9ucy4gIEkndmUgYWRkZWQgRklYTUVzIHRv
CisgICAgICAgIGRvY3VtZW50IHRoZSBwb3RlbnRpYWwgaXNzdWUuCisKKyAgICAgICAgKiBzcmMv
RWRpdG9yQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudEltcGw6
OmRvQXV0b2ZpbGwpOgorICAgICAgICAqIHNyYy9XZWJJbnB1dEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKToKKwogMjAxMC0w
NC0yOCAgRGFyaW4gRmlzaGVyICA8ZGFyaW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhdmlkIExldmluLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0
b3JDbGllbnRJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5j
cHAKaW5kZXggNGVjZGNmN2ZjNGVmYTM5OTIxYzA1YTQxNjI5NTA2MGYzMjZkMmJkZi4uMTdmNDVj
NDNjZDM2NGFiZmM2MWExM2UxMTA0NjA4ODA2ODQwNmMyZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2No
cm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L0VkaXRvckNsaWVudEltcGwuY3BwCkBAIC03NDgsOSArNzQ4LDEyIEBAIHZvaWQgRWRpdG9yQ2xp
ZW50SW1wbDo6ZG9BdXRvZmlsbChUaW1lcjxFZGl0b3JDbGllbnRJbXBsPiogdGltZXIpCiAgICAg
Ly8gRW5mb3JjZSBhdXRvZmlsbF9vbl9lbXB0eV92YWx1ZSBhbmQgY2FyZXRfYXRfZW5kLgogCiAg
ICAgYm9vbCBpc0NhcmV0QXRFbmQgPSB0cnVlOwotICAgIGlmIChhcmdzLT5yZXF1aXJlQ2FyZXRB
dEVuZCkKLSAgICAgICAgaXNDYXJldEF0RW5kID0gaW5wdXRFbGVtZW50LT5zZWxlY3Rpb25TdGFy
dCgpID09IGlucHV0RWxlbWVudC0+c2VsZWN0aW9uRW5kKCkKLSAgICAgICAgICAgICAgICAgICAg
ICAgJiYgaW5wdXRFbGVtZW50LT5zZWxlY3Rpb25FbmQoKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KHZh
bHVlLmxlbmd0aCgpKTsKKyAgICBpZiAoYXJncy0+cmVxdWlyZUNhcmV0QXRFbmQpIHsKKyAgICAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgIGlzQ2FyZXRBdEVuZCA9IGlucHV0RWxl
bWVudC0+c2VsZWN0aW9uU3RhcnQoZWMpID09IGlucHV0RWxlbWVudC0+c2VsZWN0aW9uRW5kKGVj
KQorICAgICAgICAgICAgICAgICAgICAgICAmJiBpbnB1dEVsZW1lbnQtPnNlbGVjdGlvbkVuZChl
YykgPT0gc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZS5sZW5ndGgoKSk7CisgICAgICAgIC8vIEZJWE1F
OiBXaGF0IGlmIHNlbGVjdGlvblN0YXJ0IG9yIHNlbGVjdGlvbkVuZCBzZXQgZWM/CisgICAgfQog
CiAgICAgaWYgKCghYXJncy0+YXV0b2ZpbGxPbkVtcHR5VmFsdWUgJiYgdmFsdWUuaXNFbXB0eSgp
KSB8fCAhaXNDYXJldEF0RW5kKSB7CiAgICAgICAgIG1fd2ViVmlldy0+aGlkZVN1Z2dlc3Rpb25z
UG9wdXAoKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFbGVtZW50
LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFbGVtZW50LmNwcAppbmRleCAxZWFi
OTFmNTUwYmU1Zjg5ZDcxMzFkYTg2ODk5ZTU1MTYwY2NiOGRhLi5kNzVhMDg4MTIyNGQ0NTEzOTIx
MzY2MWIzMjEwOTg3NWE2NThlMzZmIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEVsZW1l
bnQuY3BwCkBAIC05Miw3ICs5Miw5IEBAIHZvaWQgV2ViSW5wdXRFbGVtZW50OjpkaXNwYXRjaEZv
cm1Db250cm9sQ2hhbmdlRXZlbnQoKQogCiB2b2lkIFdlYklucHV0RWxlbWVudDo6c2V0U2VsZWN0
aW9uUmFuZ2UoaW50IHN0YXJ0LCBpbnQgZW5kKQogewotICAgIHVud3JhcDxIVE1MSW5wdXRFbGVt
ZW50PigpLT5zZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgZW5kKTsKKyAgICBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICB1bndyYXA8SFRNTElucHV0RWxlbWVudD4oKS0+c2V0U2Vs
ZWN0aW9uUmFuZ2Uoc3RhcnQsIGVuZCwgZWMpOworICAgIC8vIEZJWE1FOiBXaGF0IGlmIHNldFNl
bGVjdGlvblJhbmdlIHNldHMgZWM/CiB9CiAgICAgCiBXZWJTdHJpbmcgV2ViSW5wdXRFbGVtZW50
OjpuYW1lKCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56139</attachid>
            <date>2010-05-14 22:06:51 -0700</date>
            <delta_ts>2010-05-14 23:23:43 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-38344-20100514220649.patch</filename>
            <type>text/plain</type>
            <size>10335</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1OTUwMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTAtMDUtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1v
dmUgY3VzdG9tIGJpbmRpbmdzIGZvciBIVE1MSW5wdXRFbGVtZW50CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODM0NAorCisgICAgICAgIEluc3RlYWQg
b2YgY2hlY2tpbmcgZm9yIGNhbkhhdmVTZWxlY3Rpb24gaW4gdGhlIGJpbmRpbmdzIGxheWVyLCBJ
J3ZlCisgICAgICAgIHB1c2hlZCB0aGUgY2hlY2sgaW50byBXZWJDb3JlLiAgRG9pbmcgc28gbGV0
cyB1cyByZW1vdmUgc29tZSBjdXN0b20KKyAgICAgICAgYmluZGluZ3MgY29kZS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTElu
cHV0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TElucHV0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvblN0YXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25TdGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25FbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2UpOgorICAg
ICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElu
cHV0RWxlbWVudDo6c2VsZWN0aW9uU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6c2VsZWN0aW9uRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1l
bnQ6OnNldFNlbGVjdGlvblN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1l
bnQ6OnNldFNlbGVjdGlvbkVuZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
OjpzZXRTZWxlY3Rpb25SYW5nZSk6CisgICAgICAgICAgLSBJJ20gbm90IGVudGlyZWx5IHN1cmUg
d2h5IEkgbmVlZCB0byBhZGQgdmVyc2lvbnMgb2YgdGhlc2UgbWV0aG9kcworICAgICAgICAgICAg
dGhhdCBsYWNrIHRoZSBFeGNlcHRpb25Db2RlIHBhcmFtZXRlci4gIEkgd291bGQgaGF2ZSB0aG91
Z2h0IHRoZXknZAorICAgICAgICAgICAgYmUgaW5oZXJpdGVkLi4uCisgICAgICAgICogaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmlkbDoKKwogMjAxMC0wNS0xNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcAkocmV2
aXNpb24gNTk1MDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDUzICs2Nyw0IEBAIEpTVmFsdWUgSlNIVE1M
SW5wdXRFbGVtZW50Ojp0eXBlKEV4ZWNTdGEKICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgdHlw
ZSk7CiB9CiAKLUpTVmFsdWUgSlNIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25TdGFydChFeGVj
U3RhdGUqIGV4ZWMpIGNvbnN0Ci17Ci0gICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0
aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oaW1wbCgpKTsKLSAgICBpZiAoIWlucHV0LT5jYW5I
YXZlU2VsZWN0aW9uKCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJv
cik7Ci0KLSAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgaW5wdXQtPnNlbGVjdGlvblN0YXJ0KCkp
OwotfQotCi12b2lkIEpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uU3RhcnQoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQotewotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0
ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGltcGwoKSk7Ci0gICAgaWYgKCFpbnB1
dC0+Y2FuSGF2ZVNlbGVjdGlvbigpKQotICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJv
cik7Ci0KLSAgICBpbnB1dC0+c2V0U2VsZWN0aW9uU3RhcnQodmFsdWUudG9JbnQzMihleGVjKSk7
Ci19Ci0KLUpTVmFsdWUgSlNIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25FbmQoRXhlY1N0YXRl
KiBleGVjKSBjb25zdAotewotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nh
c3Q8SFRNTElucHV0RWxlbWVudCo+KGltcGwoKSk7Ci0gICAgaWYgKCFpbnB1dC0+Y2FuSGF2ZVNl
bGVjdGlvbigpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwot
Ci0gICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIGlucHV0LT5zZWxlY3Rpb25FbmQoKSk7Ci19Ci0K
LXZvaWQgSlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25FbmQoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHZhbHVlKQotewotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGlj
X2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGltcGwoKSk7Ci0gICAgaWYgKCFpbnB1dC0+Y2FuSGF2
ZVNlbGVjdGlvbigpKQotICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7Ci0KLSAg
ICBpbnB1dC0+c2V0U2VsZWN0aW9uRW5kKHZhbHVlLnRvSW50MzIoZXhlYykpOwotfQotCi1KU1Zh
bHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2UoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBBcmdMaXN0JiBhcmdzKQotewotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0g
c3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGltcGwoKSk7Ci0gICAgaWYgKCFpbnB1dC0+
Y2FuSGF2ZVNlbGVjdGlvbigpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBl
RXJyb3IpOwotCi0gICAgaW50IHN0YXJ0ID0gYXJncy5hdCgwKS50b0ludDMyKGV4ZWMpOwotICAg
IGludCBlbmQgPSBhcmdzLmF0KDEpLnRvSW50MzIoZXhlYyk7Ci0KLSAgICBpbnB1dC0+c2V0U2Vs
ZWN0aW9uUmFuZ2Uoc3RhcnQsIGVuZCk7Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0K
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gNTk1
MDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbnB1dEVsZW1lbnRDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3MyArMzgsNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVj
dGlvblN0YXJ0QWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCi17Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTElucHV0
RWxlbWVudC5zZWxlY3Rpb25TdGFydC5fZ2V0Iik7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGltcCA9IFY4
SFRNTElucHV0RWxlbWVudDo6dG9OYXRpdmUoaG9sZGVyKTsKLQotICAgIGlmICghaW1wLT5jYW5I
YXZlU2VsZWN0aW9uKCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJBY2Nlc3Npbmcgc2Vs
ZWN0aW9uU3RhcnQgb24gYW4gaW5wdXQgZWxlbWVudCB0aGF0IGNhbm5vdCBoYXZlIGEgc2VsZWN0
aW9uLiIpOwotCi0gICAgaW50IHYgPSBpbXAtPnNlbGVjdGlvblN0YXJ0KCk7Ci0gICAgcmV0dXJu
IHY4OjpJbnRlZ2VyOjpOZXcodik7Ci19Ci0KLXZvaWQgVjhIVE1MSW5wdXRFbGVtZW50OjpzZWxl
Y3Rpb25TdGFydEFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKLXsK
LSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MSW5wdXRFbGVtZW50LnNlbGVjdGlvblN0YXJ0Ll9zZXQi
KTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9sZGVyKCk7Ci0g
ICAgSFRNTElucHV0RWxlbWVudCogaW1wID0gVjhIVE1MSW5wdXRFbGVtZW50Ojp0b05hdGl2ZSho
b2xkZXIpOwotCi0gICAgaWYgKCFpbXAtPmNhbkhhdmVTZWxlY3Rpb24oKSkgewotICAgICAgICB0
aHJvd0Vycm9yKCJBY2Nlc3Npbmcgc2VsZWN0aW9uU3RhcnQgb24gYW4gaW5wdXQgZWxlbWVudCB0
aGF0IGNhbm5vdCBoYXZlIGEgc2VsZWN0aW9uLiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGltcC0+c2V0U2VsZWN0aW9uU3RhcnQodmFsdWUtPkludDMyVmFsdWUoKSk7Ci19Ci0KLXY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkVuZEFjY2Vz
c29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQotewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxJbnB1dEVsZW1lbnQuc2VsZWN0
aW9uRW5kLl9nZXQiKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8u
SG9sZGVyKCk7Ci0gICAgSFRNTElucHV0RWxlbWVudCogaW1wID0gVjhIVE1MSW5wdXRFbGVtZW50
Ojp0b05hdGl2ZShob2xkZXIpOwotCi0gICAgaWYgKCFpbXAtPmNhbkhhdmVTZWxlY3Rpb24oKSkK
LSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkFjY2Vzc2luZyBzZWxlY3Rpb25FbmQgb24gYW4g
aW5wdXQgZWxlbWVudCB0aGF0IGNhbm5vdCBoYXZlIGEgc2VsZWN0aW9uLiIpOwotCi0gICAgaW50
IHYgPSBpbXAtPnNlbGVjdGlvbkVuZCgpOwotICAgIHJldHVybiB2ODo6SW50ZWdlcjo6TmV3KHYp
OwotfQotCi12b2lkIFY4SFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRW5kQWNjZXNzb3JTZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQotewotICAgIElOQ19TVEFUUygiRE9NLkhU
TUxJbnB1dEVsZW1lbnQuc2VsZWN0aW9uRW5kLl9zZXQiKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGhvbGRlciA9IGluZm8uSG9sZGVyKCk7Ci0gICAgSFRNTElucHV0RWxlbWVudCogaW1w
ID0gVjhIVE1MSW5wdXRFbGVtZW50Ojp0b05hdGl2ZShob2xkZXIpOwotCi0gICAgaWYgKCFpbXAt
PmNhbkhhdmVTZWxlY3Rpb24oKSkgewotICAgICAgICB0aHJvd0Vycm9yKCJBY2Nlc3Npbmcgc2Vs
ZWN0aW9uRW5kIG9uIGFuIGlucHV0IGVsZW1lbnQgdGhhdCBjYW5ub3QgaGF2ZSBhIHNlbGVjdGlv
bi4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGltcC0+c2V0U2VsZWN0aW9uRW5k
KHZhbHVlLT5JbnQzMlZhbHVlKCkpOwotfQotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1M
SW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTElucHV0RWxlbWVudC5zZXRTZWxl
Y3Rpb25SYW5nZSIpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gYXJncy5I
b2xkZXIoKTsKLSAgICBIVE1MSW5wdXRFbGVtZW50KiBpbXAgPSBWOEhUTUxJbnB1dEVsZW1lbnQ6
OnRvTmF0aXZlKGhvbGRlcik7Ci0KLSAgICBpZiAoIWltcC0+Y2FuSGF2ZVNlbGVjdGlvbigpKQot
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiQ2FsbGluZyBzZXRTZWxlY3Rpb25SYW5nZSBvbiBh
biBpbnB1dCBlbGVtZW50IHRoYXQgY2Fubm90IGhhdmUgYSBzZWxlY3Rpb24uIik7Ci0KLSAgICBp
bnQgc3RhcnQgPSBhcmdzWzBdLT5JbnQzMlZhbHVlKCk7Ci0gICAgaW50IGVuZCA9IGFyZ3NbMV0t
PkludDMyVmFsdWUoKTsKLQotICAgIGltcC0+c2V0U2VsZWN0aW9uUmFuZ2Uoc3RhcnQsIGVuZCk7
Ci0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLX0KKy8vIEZJWE1FOiBSZW1vdmUgdGhpcyBm
aWxlLgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwCShyZXZpc2lvbiA1OTUwMCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTkyLDYgKzk5Miw1MSBAQCBib29sIEhUTUxJbnB1dEVs
ZW1lbnQ6OmNhblN0YXJ0U2VsZWN0aW9uCiAgICAgcmV0dXJuIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnRXaXRoU3RhdGU6OmNhblN0YXJ0U2VsZWN0aW9uKCk7CiB9CiAKK2ludCBIVE1MSW5wdXRFbGVt
ZW50OjpzZWxlY3Rpb25TdGFydChFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWNhbkhh
dmVTZWxlY3Rpb24oKSkgeworICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAg
ICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dDo6c2VsZWN0aW9uU3RhcnQoKTsKK30KKworaW50IEhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlv
bkVuZChFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWNhbkhhdmVTZWxlY3Rpb24oKSkg
eworICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICByZXR1cm4gLTE7Cisg
ICAgfQorICAgIHJldHVybiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2VsZWN0aW9uRW5k
KCk7Cit9CisKK3ZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uU3RhcnQoaW50IHN0
YXJ0LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWNhbkhhdmVTZWxlY3Rpb24oKSkg
eworICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRTZWxlY3Rpb25TdGFydChzdGFy
dCk7Cit9CisKK3ZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRW5kKGludCBlbmQs
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghY2FuSGF2ZVNlbGVjdGlvbigpKSB7Cisg
ICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlvbkVuZChlbmQpOworfQor
Cit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKGludCBzdGFydCwgaW50
IGVuZCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFjYW5IYXZlU2VsZWN0aW9uKCkp
IHsKKyAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2Uoc3Rh
cnQsIGVuZCk7Cit9CisKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6Y2FuSGF2ZVNlbGVjdGlvbigp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzVGV4dEZpZWxkKCk7CkluZGV4OiBXZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmgJKHJldmlzaW9uIDU5NTAwKQorKysgV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDcgKzE3MiwyNCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKGNvbnN0IFN0cmluZyYpOwogCiAgICAg
dmlydHVhbCBib29sIGNhblN0YXJ0U2VsZWN0aW9uKCkgY29uc3Q7Ci0gICAgCisKKyAgICAvLyBU
aGUgbWV0aG9kcyB0aGF0IHRha2UgRXhjZXB0aW9uQ29kZXMgY2hlY2sgY2FuSGF2ZVNlbGVjdGlv
bigpLgorCisgICAgaW50IHNlbGVjdGlvblN0YXJ0KEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBpbnQg
c2VsZWN0aW9uU3RhcnQoKSB7IHJldHVybiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2Vs
ZWN0aW9uU3RhcnQoKTsgfQorCisgICAgaW50IHNlbGVjdGlvbkVuZChFeGNlcHRpb25Db2RlJik7
CisgICAgaW50IHNlbGVjdGlvbkVuZCgpIHsgcmV0dXJuIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50OjpzZWxlY3Rpb25FbmQoKTsgfQorCisgICAgdm9pZCBzZXRTZWxlY3Rpb25TdGFydChpbnQs
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldFNlbGVjdGlvblN0YXJ0KGludCBzdGFydCkg
eyBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0U2VsZWN0aW9uU3RhcnQoc3RhcnQpOyB9
CisKKyAgICB2b2lkIHNldFNlbGVjdGlvbkVuZChpbnQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2
b2lkIHNldFNlbGVjdGlvbkVuZChpbnQgZW5kKSB7IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
OjpzZXRTZWxlY3Rpb25FbmQoZW5kKTsgfQorCisgICAgdm9pZCBzZXRTZWxlY3Rpb25SYW5nZShp
bnQgc3RhcnQsIGludCBlbmQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldFNlbGVjdGlv
blJhbmdlKGludCBzdGFydCwgaW50IGVuZCkgeyBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6
c2V0U2VsZWN0aW9uUmFuZ2Uoc3RhcnQsIGVuZCk7IH0KKwogICAgIGJvb2wgY2FuSGF2ZVNlbGVj
dGlvbigpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3QoKSB7IEhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50OjpzZWxlY3QoKTsgfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
aWRsCShyZXZpc2lvbiA1OTUwMCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmlk
bAkod29ya2luZyBjb3B5KQpAQCAtODQsOSArODQsMTIgQEAgbW9kdWxlIGh0bWwgewogCiAgICAg
ICAgIC8vIFdpbklFICYgRmlyZUZveCBleHRlbnNpb246CiAKLSAgICAgICAgICAgICAgICAgYXR0
cmlidXRlIFtDdXN0b21dIGxvbmcgc2VsZWN0aW9uU3RhcnQ7Ci0gICAgICAgICAgICAgICAgIGF0
dHJpYnV0ZSBbQ3VzdG9tXSBsb25nIHNlbGVjdGlvbkVuZDsKLSAgICAgICAgW0N1c3RvbV0gdm9p
ZCBzZXRTZWxlY3Rpb25SYW5nZShpbiBsb25nIHN0YXJ0LCBpbiBsb25nIGVuZCk7CisgICAgICAg
ICAgICAgICAgIGF0dHJpYnV0ZSBsb25nICAgICAgICAgICAgc2VsZWN0aW9uU3RhcnQKKyAgICAg
ICAgICAgIGdldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKSwgc2V0dGVyIHJhaXNlcyhET01FeGNl
cHRpb24pOworICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgbG9uZyAgICAgICAgICAgIHNlbGVj
dGlvbkVuZAorICAgICAgICAgICAgZ2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pLCBzZXR0ZXIg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQgc2V0U2VsZWN0aW9uUmFuZ2UoaW4g
bG9uZyBzdGFydCwgaW4gbG9uZyBlbmQpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKIAogI2lmIGRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpCiAgICAgICAgIC8vIE9iamVj
dGl2ZS1DIGV4dGVuc2lvbjoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56141</attachid>
            <date>2010-05-14 23:23:49 -0700</date>
            <delta_ts>2010-06-11 12:35:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38344-20100514232348.patch</filename>
            <type>text/plain</type>
            <size>12686</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3NzM3NTBhNTI5ODI0YmIyZmQ4NDdiMWJkMzJhNDhkMjA3ZTllMTJjLi5kM2ExODY3
YzdhZjQyYTA2ODQyN2E4NmE4MDdmMWY4NjA5MDQzZmYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDUtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0IHdoYXQga2luZCBvZiBl
eGNlcHRpb24gd2UgdGhyb3cgd2hlbiB0cnlpbmcgdG8gbWFuaXB1bGF0ZSB0aGUKKyAgICAgICAg
c2VsZWN0aW9uIG9mIGFuIEhUTUxJbnB1dEVsZW1lbnQgdGhhdCBpc24ndCBlZGl0YWJsZS4KKwor
ICAgICAgICAqIGZhc3QvZm9ybXMvbm9uLXRleHQtaW5wdXQtdGhyb3dzLWV4Y2VwdGlvbi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvbm9uLXRleHQtaW5wdXQtdGhy
b3dzLWV4Y2VwdGlvbi5odG1sOiBBZGRlZC4KKwogMjAxMC0wNS0xNCAgQWRlbGUgUGV0ZXJzb24g
IDxhZGVsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2ZSBIeWF0dC4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbm9uLXRleHQtaW5wdXQtdGhyb3dzLWV4
Y2VwdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL25vbi10ZXh0LWlu
cHV0LXRocm93cy1leGNlcHRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmNDk1NWQwMmZj
NzIzOTA2ZjczYmExYTU5ZjVjYTk2ZmJlYWFmYjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL25vbi10ZXh0LWlucHV0LXRocm93cy1leGNlcHRpb24tZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNiBAQAorCitFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNl
cHRpb24gMTcKK0Vycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNworRXJy
b3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3CitEb25lIQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL25vbi10ZXh0LWlucHV0LXRocm93cy1leGNlcHRp
b24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbm9uLXRleHQtaW5wdXQtdGhyb3dzLWV4
Y2VwdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliNjExMDVhZDg2ZTQyNzcyNGE0OGFhMDRlMzk0ZjM0
ZmE5NjgyYWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL25vbi10
ZXh0LWlucHV0LXRocm93cy1leGNlcHRpb24uaHRtbApAQCAtMCwwICsxLDIxIEBACis8aW5wdXQg
dHlwZT0iYnV0dG9uIiBpZD0iZm9vIiB2YWx1ZT0iTm90IHRleHQiPgorPHByZT4KKzxzY3JpcHQ+
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24gdHJ5SXQoZnVuYykgeworICAgIHRyeSB7Cisg
ICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGRvY3VtZW50LndyaXRl
bG4oZSk7CisgICAgfQorfQorCit2YXIgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZv
byIpOwordHJ5SXQoZnVuY3Rpb24oKSB7IGJ0bi5zZWxlY3Rpb25TdGFydCB9KTsKK3RyeUl0KGZ1
bmN0aW9uKCkgeyBidG4uc2VsZWN0aW9uRW5kIH0pOwordHJ5SXQoZnVuY3Rpb24oKSB7IGJ0bi5z
ZXRTZWxlY3Rpb25SYW5nZSgzLCA0KTsgfSk7Citkb2N1bWVudC53cml0ZSgiRG9uZSEiKTsKKzwv
c2NyaXB0PgorPC9wcmU+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDBmY2MyOWRjNjIxY2UwOTNmNjYzNDFjNTBlZDU0MmIwZjY1Nzg2N2Qu
LjdmMjQwNThiZDk4ZjkzOTEyOTFhZjQxYmMxMDQyYmI5YTkxZjU5NTUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAK
KzIwMTAtMDUtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgY3VzdG9tIGJpbmRp
bmdzIGZvciBIVE1MSW5wdXRFbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zODM0NAorCisgICAgICAgIEluc3RlYWQgb2YgY2hlY2tpbmcgZm9y
IGNhbkhhdmVTZWxlY3Rpb24gaW4gdGhlIGJpbmRpbmdzIGxheWVyLCBJJ3ZlCisgICAgICAgIHB1
c2hlZCB0aGUgY2hlY2sgaW50byBXZWJDb3JlLiAgRG9pbmcgc28gbGV0cyB1cyByZW1vdmUgc29t
ZSBjdXN0b20KKyAgICAgICAgYmluZGluZ3MgY29kZS4KKworICAgICAgICBUZXN0OiBmYXN0L2Zv
cm1zL25vbi10ZXh0LWlucHV0LXRocm93cy1leGNlcHRpb24uaHRtbAorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBodG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVu
dDo6c2VsZWN0aW9uU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6
c2VsZWN0aW9uRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldFNl
bGVjdGlvblN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldFNl
bGVjdGlvbkVuZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxl
Y3Rpb25SYW5nZSk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25TdGFydCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25FbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uU3RhcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKToKKyAgICAgICAgICAtIEknbSBu
b3QgZW50aXJlbHkgc3VyZSB3aHkgSSBuZWVkIHRvIGFkZCB2ZXJzaW9ucyBvZiB0aGVzZSBtZXRo
b2RzCisgICAgICAgICAgICB0aGF0IGxhY2sgdGhlIEV4Y2VwdGlvbkNvZGUgcGFyYW1ldGVyLiAg
SSB3b3VsZCBoYXZlIHRob3VnaHQgdGhleSdkCisgICAgICAgICAgICBiZSBpbmhlcml0ZWQuLi4K
KyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsOgorCiAyMDEwLTA1LTE0ICBBZGVs
ZSBQZXRlcnNvbiAgPGFkZWxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZl
IEh5YXR0LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1l
bnRDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0
b20uY3BwCmluZGV4IGU1MTY2ZWVjMWVhM2IwZmFkYzZkMDA3YTcwOGMyYjgxZWFiODRjODguLjNl
YmJhNTdlYmQ4NjM4OWExM2Q3NmUwNDgxMTFlZjZlNjMzOTNhMDcgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAKQEAgLTY3LDUzICs2Nyw0
IEBAIEpTVmFsdWUgSlNIVE1MSW5wdXRFbGVtZW50Ojp0eXBlKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgdHlwZSk7CiB9CiAKLUpTVmFsdWUgSlNIVE1M
SW5wdXRFbGVtZW50OjpzZWxlY3Rpb25TdGFydChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci17Ci0g
ICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50
Kj4oaW1wbCgpKTsKLSAgICBpZiAoIWlucHV0LT5jYW5IYXZlU2VsZWN0aW9uKCkpCi0gICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7Ci0KLSAgICByZXR1cm4ganNOdW1i
ZXIoZXhlYywgaW5wdXQtPnNlbGVjdGlvblN0YXJ0KCkpOwotfQotCi12b2lkIEpTSFRNTElucHV0
RWxlbWVudDo6c2V0U2VsZWN0aW9uU3RhcnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVl
KQotewotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0
RWxlbWVudCo+KGltcGwoKSk7Ci0gICAgaWYgKCFpbnB1dC0+Y2FuSGF2ZVNlbGVjdGlvbigpKQot
ICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7Ci0KLSAgICBpbnB1dC0+c2V0U2Vs
ZWN0aW9uU3RhcnQodmFsdWUudG9JbnQzMihleGVjKSk7Ci19Ci0KLUpTVmFsdWUgSlNIVE1MSW5w
dXRFbGVtZW50OjpzZWxlY3Rpb25FbmQoRXhlY1N0YXRlKiBleGVjKSBjb25zdAotewotICAgIEhU
TUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGlt
cGwoKSk7Ci0gICAgaWYgKCFpbnB1dC0+Y2FuSGF2ZVNlbGVjdGlvbigpKQotICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwotCi0gICAgcmV0dXJuIGpzTnVtYmVyKGV4
ZWMsIGlucHV0LT5zZWxlY3Rpb25FbmQoKSk7Ci19Ci0KLXZvaWQgSlNIVE1MSW5wdXRFbGVtZW50
OjpzZXRTZWxlY3Rpb25FbmQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQotewotICAg
IEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+
KGltcGwoKSk7Ci0gICAgaWYgKCFpbnB1dC0+Y2FuSGF2ZVNlbGVjdGlvbigpKQotICAgICAgICB0
aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7Ci0KLSAgICBpbnB1dC0+c2V0U2VsZWN0aW9uRW5k
KHZhbHVlLnRvSW50MzIoZXhlYykpOwotfQotCi1KU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6
c2V0U2VsZWN0aW9uUmFuZ2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQot
ewotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxl
bWVudCo+KGltcGwoKSk7Ci0gICAgaWYgKCFpbnB1dC0+Y2FuSGF2ZVNlbGVjdGlvbigpKQotICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwotCi0gICAgaW50IHN0YXJ0
ID0gYXJncy5hdCgwKS50b0ludDMyKGV4ZWMpOwotICAgIGludCBlbmQgPSBhcmdzLmF0KDEpLnRv
SW50MzIoZXhlYyk7Ci0KLSAgICBpbnB1dC0+c2V0U2VsZWN0aW9uUmFuZ2Uoc3RhcnQsIGVuZCk7
Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElucHV0RWxlbWVu
dEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbnB1dEVsZW1l
bnRDdXN0b20uY3BwCmluZGV4IGE5YWM3NGMzMzExOWQ0MTFhYmNmM2I3NTYzNWZiYzhjYzA3YzVl
ZjMuLjc1OTkyODdiZmQ5NDgzZTU3NTdmNzk4Y2RiY2Q3N2Q4ODNiYmQ4MjcgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW5wdXRFbGVtZW50Q3VzdG9t
LmNwcApAQCAtMzgsNzMgKzM4LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25TdGFydEFjY2Vzc29y
R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQotewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxJbnB1dEVsZW1lbnQuc2VsZWN0aW9u
U3RhcnQuX2dldCIpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5I
b2xkZXIoKTsKLSAgICBIVE1MSW5wdXRFbGVtZW50KiBpbXAgPSBWOEhUTUxJbnB1dEVsZW1lbnQ6
OnRvTmF0aXZlKGhvbGRlcik7Ci0KLSAgICBpZiAoIWltcC0+Y2FuSGF2ZVNlbGVjdGlvbigpKQot
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiQWNjZXNzaW5nIHNlbGVjdGlvblN0YXJ0IG9uIGFu
IGlucHV0IGVsZW1lbnQgdGhhdCBjYW5ub3QgaGF2ZSBhIHNlbGVjdGlvbi4iKTsKLQotICAgIGlu
dCB2ID0gaW1wLT5zZWxlY3Rpb25TdGFydCgpOwotICAgIHJldHVybiB2ODo6SW50ZWdlcjo6TmV3
KHYpOwotfQotCi12b2lkIFY4SFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uU3RhcnRBY2Nlc3Nv
clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCi17Ci0gICAgSU5DX1NUQVRTKCJE
T00uSFRNTElucHV0RWxlbWVudC5zZWxlY3Rpb25TdGFydC5fc2V0Iik7Ci0gICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwotICAgIEhUTUxJbnB1dEVsZW1l
bnQqIGltcCA9IFY4SFRNTElucHV0RWxlbWVudDo6dG9OYXRpdmUoaG9sZGVyKTsKLQotICAgIGlm
ICghaW1wLT5jYW5IYXZlU2VsZWN0aW9uKCkpIHsKLSAgICAgICAgdGhyb3dFcnJvcigiQWNjZXNz
aW5nIHNlbGVjdGlvblN0YXJ0IG9uIGFuIGlucHV0IGVsZW1lbnQgdGhhdCBjYW5ub3QgaGF2ZSBh
IHNlbGVjdGlvbi4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpbXAtPnNldFNlbGVj
dGlvblN0YXJ0KHZhbHVlLT5JbnQzMlZhbHVlKCkpOwotfQotCi12ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25FbmRBY2Nlc3NvckdldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKLXsKLSAg
ICBJTkNfU1RBVFMoIkRPTS5IVE1MSW5wdXRFbGVtZW50LnNlbGVjdGlvbkVuZC5fZ2V0Iik7Ci0g
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwotICAgIEhU
TUxJbnB1dEVsZW1lbnQqIGltcCA9IFY4SFRNTElucHV0RWxlbWVudDo6dG9OYXRpdmUoaG9sZGVy
KTsKLQotICAgIGlmICghaW1wLT5jYW5IYXZlU2VsZWN0aW9uKCkpCi0gICAgICAgIHJldHVybiB0
aHJvd0Vycm9yKCJBY2Nlc3Npbmcgc2VsZWN0aW9uRW5kIG9uIGFuIGlucHV0IGVsZW1lbnQgdGhh
dCBjYW5ub3QgaGF2ZSBhIHNlbGVjdGlvbi4iKTsKLQotICAgIGludCB2ID0gaW1wLT5zZWxlY3Rp
b25FbmQoKTsKLSAgICByZXR1cm4gdjg6OkludGVnZXI6Ok5ldyh2KTsKLX0KLQotdm9pZCBWOEhU
TUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkVuZEFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MSW5wdXRFbGVtZW50LnNl
bGVjdGlvbkVuZC5fc2V0Iik7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBp
bmZvLkhvbGRlcigpOwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGltcCA9IFY4SFRNTElucHV0RWxl
bWVudDo6dG9OYXRpdmUoaG9sZGVyKTsKLQotICAgIGlmICghaW1wLT5jYW5IYXZlU2VsZWN0aW9u
KCkpIHsKLSAgICAgICAgdGhyb3dFcnJvcigiQWNjZXNzaW5nIHNlbGVjdGlvbkVuZCBvbiBhbiBp
bnB1dCBlbGVtZW50IHRoYXQgY2Fubm90IGhhdmUgYSBzZWxlY3Rpb24uIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpbXAtPnNldFNlbGVjdGlvbkVuZCh2YWx1ZS0+SW50MzJWYWx1
ZSgpKTsKLX0KLQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTElucHV0RWxlbWVudDo6c2V0
U2VsZWN0aW9uUmFuZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAg
IElOQ19TVEFUUygiRE9NLkhUTUxJbnB1dEVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UiKTsKLSAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgSFRN
TElucHV0RWxlbWVudCogaW1wID0gVjhIVE1MSW5wdXRFbGVtZW50Ojp0b05hdGl2ZShob2xkZXIp
OwotCi0gICAgaWYgKCFpbXAtPmNhbkhhdmVTZWxlY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93RXJyb3IoIkNhbGxpbmcgc2V0U2VsZWN0aW9uUmFuZ2Ugb24gYW4gaW5wdXQgZWxlbWVudCB0
aGF0IGNhbm5vdCBoYXZlIGEgc2VsZWN0aW9uLiIpOwotCi0gICAgaW50IHN0YXJ0ID0gYXJnc1sw
XS0+SW50MzJWYWx1ZSgpOwotICAgIGludCBlbmQgPSBhcmdzWzFdLT5JbnQzMlZhbHVlKCk7Ci0K
LSAgICBpbXAtPnNldFNlbGVjdGlvblJhbmdlKHN0YXJ0LCBlbmQpOwotICAgIHJldHVybiB2ODo6
VW5kZWZpbmVkKCk7Ci19CisvLyBGSVhNRTogUmVtb3ZlIHRoaXMgZmlsZS4KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDQ3M2ZmZTVlODll
NGJhYTE5NjFlY2JjOGI4YWM4NTJjYWU5NTdjMzguLjI1MDc1YTg0N2RiZmU0MTQwYWU5NmJlYmQ4
NTgzMTQ1M2ZhYzliM2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTk4NywxMSAr
OTg3LDU2IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUo
Y29uc3QgU3RyaW5nJiBzdGF0ZSkKIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpjYW5TdGFydFNl
bGVjdGlvbigpIGNvbnN0CiB7Ci0gICAgaWYgKCFpc1RleHRGaWVsZCgpKQorICAgIGlmICghY2Fu
SGF2ZVNlbGVjdGlvbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmNhblN0YXJ0U2VsZWN0aW9uKCk7CiB9CiAKK2lu
dCBIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25TdGFydChFeGNlcHRpb25Db2RlJiBlYykKK3sK
KyAgICBpZiAoIWNhbkhhdmVTZWxlY3Rpb24oKSkgeworICAgICAgICBlYyA9IFRZUEVfTUlTTUFU
Q0hfRVJSOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiBzZWxlY3Rpb25T
dGFydCgpOworfQorCitpbnQgSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRW5kKEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIGlmICghY2FuSGF2ZVNlbGVjdGlvbigpKSB7CisgICAgICAgIGVj
ID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0
dXJuIHNlbGVjdGlvbkVuZCgpOworfQorCit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVj
dGlvblN0YXJ0KGludCBzdGFydCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFjYW5I
YXZlU2VsZWN0aW9uKCkpIHsKKyAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBzZXRTZWxlY3Rpb25TdGFydChzdGFydCk7Cit9CisKK3Zv
aWQgSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRW5kKGludCBlbmQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQoreworICAgIGlmICghY2FuSGF2ZVNlbGVjdGlvbigpKSB7CisgICAgICAgIGVjID0g
VFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgc2V0U2VsZWN0
aW9uRW5kKGVuZCk7Cit9CisKK3ZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uUmFu
Z2UoaW50IHN0YXJ0LCBpbnQgZW5kLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWNh
bkhhdmVTZWxlY3Rpb24oKSkgeworICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIHNldFNlbGVjdGlvblJhbmdlKHN0YXJ0LCBlbmQpOwor
fQorCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmNhbkhhdmVTZWxlY3Rpb24oKSBjb25zdAogewog
ICAgIHJldHVybiBpc1RleHRGaWVsZCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggOTZm
YjQ5MmI3Mjg5MmRkMzQ0MDU5ZDc4ZjMyZTM4YTFkZDUzNGFjOS4uNDJlYmI0YjM5Mzg2NTZmYmJh
OWI0ZGJiZGRhOTkyMzVmZWM5YjZmZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC0xNzIs
NyArMTcyLDI0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZUZvcm1Db250cm9s
U3RhdGUoY29uc3QgU3RyaW5nJik7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuU3RhcnRTZWxlY3Rp
b24oKSBjb25zdDsKLSAgICAKKworICAgIC8vIFRoZSBtZXRob2RzIHRoYXQgdGFrZSBFeGNlcHRp
b25Db2RlcyBjaGVjayBjYW5IYXZlU2VsZWN0aW9uKCkuCisKKyAgICBpbnQgc2VsZWN0aW9uU3Rh
cnQoRXhjZXB0aW9uQ29kZSYpOworICAgIGludCBzZWxlY3Rpb25TdGFydCgpIHsgcmV0dXJuIEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZWxlY3Rpb25TdGFydCgpOyB9CisKKyAgICBpbnQg
c2VsZWN0aW9uRW5kKEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBpbnQgc2VsZWN0aW9uRW5kKCkgeyBy
ZXR1cm4gSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNlbGVjdGlvbkVuZCgpOyB9CisKKyAg
ICB2b2lkIHNldFNlbGVjdGlvblN0YXJ0KGludCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQg
c2V0U2VsZWN0aW9uU3RhcnQoaW50IHN0YXJ0KSB7IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
OjpzZXRTZWxlY3Rpb25TdGFydChzdGFydCk7IH0KKworICAgIHZvaWQgc2V0U2VsZWN0aW9uRW5k
KGludCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2V0U2VsZWN0aW9uRW5kKGludCBlbmQp
IHsgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlvbkVuZChlbmQpOyB9CisK
KyAgICB2b2lkIHNldFNlbGVjdGlvblJhbmdlKGludCBzdGFydCwgaW50IGVuZCwgRXhjZXB0aW9u
Q29kZSYpOworICAgIHZvaWQgc2V0U2VsZWN0aW9uUmFuZ2UoaW50IHN0YXJ0LCBpbnQgZW5kKSB7
IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgZW5k
KTsgfQorCiAgICAgYm9vbCBjYW5IYXZlU2VsZWN0aW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2
b2lkIHNlbGVjdCgpIHsgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNlbGVjdCgpOyB9CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbCBiL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAppbmRleCA0NTYzMTIwZDllZjUwMzc3NjM5Yjk2OGFi
OTI4ODllYWIzN2NkZWNmLi40NmQwM2MyMzE2MjE5NjY5MDY2OTBjODY3MjQ3ZTE5ZWNlMDk3ZGJl
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwKKysrIGIvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCkBAIC04NCw5ICs4NCwxMiBAQCBtb2R1bGUg
aHRtbCB7CiAKICAgICAgICAgLy8gV2luSUUgJiBGaXJlRm94IGV4dGVuc2lvbjoKIAotICAgICAg
ICAgICAgICAgICBhdHRyaWJ1dGUgW0N1c3RvbV0gbG9uZyBzZWxlY3Rpb25TdGFydDsKLSAgICAg
ICAgICAgICAgICAgYXR0cmlidXRlIFtDdXN0b21dIGxvbmcgc2VsZWN0aW9uRW5kOwotICAgICAg
ICBbQ3VzdG9tXSB2b2lkIHNldFNlbGVjdGlvblJhbmdlKGluIGxvbmcgc3RhcnQsIGluIGxvbmcg
ZW5kKTsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGxvbmcgICAgICAgICAgICBzZWxlY3Rp
b25TdGFydAorICAgICAgICAgICAgZ2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pLCBzZXR0ZXIg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBsb25nICAg
ICAgICAgICAgc2VsZWN0aW9uRW5kCisgICAgICAgICAgICBnZXR0ZXIgcmFpc2VzKERPTUV4Y2Vw
dGlvbiksIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBzZXRTZWxl
Y3Rpb25SYW5nZShpbiBsb25nIHN0YXJ0LCBpbiBsb25nIGVuZCkKKyAgICAgICAgICAgIHJhaXNl
cyhET01FeGNlcHRpb24pOwogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykKICAg
ICAgICAgLy8gT2JqZWN0aXZlLUMgZXh0ZW5zaW9uOgo=
</data>
<flag name="review"
          id="40508"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>