<?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>86579</bug_id>
          
          <creation_ts>2012-05-15 23:11:12 -0700</creation_ts>
          <short_desc>[V8][Refactoring] Replace throwError(&quot;message&quot;, XXXError) with throwError(XXXError, &quot;message&quot;)</short_desc>
          <delta_ts>2012-05-16 20:13:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>84074</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>625016</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-05-15 23:11:12 -0700</bug_when>
    <thetext>This is one of a series of refactoring commented in https://bugs.webkit.org/show_bug.cgi?id=84074#c5

There are two equivalent throwError()s; i.e. throwError(&quot;message&quot;, XXXError) and throwError(XXXError, &quot;message&quot;). In this bug we replace throwError(&quot;message&quot;, XXXError) with throwError(XXXError, &quot;message&quot;) (except for the case where XXXError == TypeError. throwError(&quot;message&quot;, TypeError) will be replaced with throwTypeError(&quot;message&quot;) in a follow-up patch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625017</commentid>
    <comment_count>1</comment_count>
      <attachid>142161</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-05-15 23:15:10 -0700</bug_when>
    <thetext>Created attachment 142161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625024</commentid>
    <comment_count>2</comment_count>
      <attachid>142164</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-05-15 23:39:55 -0700</bug_when>
    <thetext>Created attachment 142164
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626165</commentid>
    <comment_count>3</comment_count>
      <attachid>142164</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-16 19:35:18 -0700</bug_when>
    <thetext>Comment on attachment 142164
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=142164&amp;action=review

&gt; Source/WebCore/bindings/v8/V8NPObject.cpp:95
&gt; -          return throwError(&quot;NPMethod called on non-NPObject&quot;, V8Proxy::ReferenceError);
&gt; +            return V8Proxy::throwError(V8Proxy::ReferenceError, &quot;NPMethod called on non-NPObject&quot;);

Can we move throwError and the type enumeration out of V8Proxy?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626166</commentid>
    <comment_count>4</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-05-16 19:38:11 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; Source/WebCore/bindings/v8/V8NPObject.cpp:95
&gt; &gt; -          return throwError(&quot;NPMethod called on non-NPObject&quot;, V8Proxy::ReferenceError);
&gt; &gt; +            return V8Proxy::throwError(V8Proxy::ReferenceError, &quot;NPMethod called on non-NPObject&quot;);
&gt; 
&gt; Can we move throwError and the type enumeration out of V8Proxy?

Yes, my plan is to refactor a series of throwError()s into throwError(XXXError, &quot;message&quot;) or throwTypeError(&quot;message&quot;), and then move a set of error-related code to V8Binding.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626180</commentid>
    <comment_count>5</comment_count>
      <attachid>142164</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-16 20:13:28 -0700</bug_when>
    <thetext>Comment on attachment 142164
Patch

Clearing flags on attachment: 142164

Committed r117383: &lt;http://trac.webkit.org/changeset/117383&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626181</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-16 20:13:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142161</attachid>
            <date>2012-05-15 23:15:10 -0700</date>
            <delta_ts>2012-05-15 23:39:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86579-20120516151509.patch</filename>
            <type>text/plain</type>
            <size>20854</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3MjE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjY0NWNlZmQxNGM1NjQx
NTUzNmY2MmUzZTg2ZDA1NjQ5MjcwZTJmNC4uYmM2NGQ5MGU2M2FmODgwN2NlMWU4MDM5MTlkNWMz
NGI0NmIyN2M1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTA1LTE1ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdW1JlZmFjdG9y
aW5nXSBSZXBsYWNlIHRocm93RXJyb3IoIm1lc3NhZ2UiLCBYWFhFcnJvcikKKyAgICAgICAgd2l0
aCB0aHJvd0Vycm9yKFhYWEVycm9yLCAibWVzc2FnZSIpCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjU3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgb25lIG9mIGEgc2VyaWVzIG9mIHJlZmFj
dG9yaW5nIGNvbW1lbnRlZCBpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODQwNzQjYzUKKworICAgICAgICBDdXJyZW50bHkgdGhlcmUgYXJlIHR3byBl
cXVpdmFsZW50IHRocm93RXJyb3IoKXM7IGkuZS4gdGhyb3dFcnJvcigibWVzc2FnZSIsIFhYWEVy
cm9yKQorICAgICAgICBhbmQgdGhyb3dFcnJvcihYWFhFcnJvciwgIm1lc3NhZ2UiKS4gSW4gdGhp
cyBidWcgd2UgcmVwbGFjZQorICAgICAgICB0aHJvd0Vycm9yKCJtZXNzYWdlIiwgWFhYRXJyb3Ip
IHdpdGggdGhyb3dFcnJvcihYWFhFcnJvciwgIm1lc3NhZ2UiKQorICAgICAgICAoZXhjZXB0IGZv
ciB0aGUgY2FzZSB3aGVyZSBYWFhFcnJvciA9PSBUeXBlRXJyb3IuIFRoaXMgaXMgYmVjYXVzZQor
ICAgICAgICB0aHJvd0Vycm9yKCJtZXNzYWdlIiwgVHlwZUVycm9yKSB3aWxsIGJlIHJlcGxhY2Vk
IHdpdGggdGhyb3dUeXBlRXJyb3IoIm1lc3NhZ2UiKQorICAgICAgICBpbiBhIGZvbGxvdy11cCBw
YXRjaCkuCisKKyAgICAgICAgTm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bnBP
YmplY3RJbnZva2VJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Om5wT2JqZWN0R2V0UHJvcGVydHkp
OgorICAgICAgICAoV2ViQ29yZTo6bnBPYmplY3RTZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJD
b3JlOjpucE9iamVjdFByb3BlcnR5RW51bWVyYXRvcik6CisgICAgICAgICogYmluZGluZ3Mvdjgv
VjhQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVNYXhSZWN1cnNpb25EZXB0aEV4
Y2VlZGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEFycmF5QnVmZmVyOjpjb25zdHJ1Y3RvckNhbGxi
YWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0
b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdFdlYkdMQXJyYXlXaXRoQXJyYXlCdWZm
ZXJBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RXZWJHTEFycmF5KToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhBdWRpb0NvbnRleHQ6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEJsb2JDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VjhCbG9iOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhDbGlw
Ym9hcmQ6OmNsZWFyRGF0YUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4Q2xpcGJvYXJk
OjpzZXREcmFnSW1hZ2VDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RE9NRm9ybURhdGFDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01Gb3JtRGF0YTo6
YXBwZW5kQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFn
ZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2OEhUTUxJbWFnZUVs
ZW1lbnRDb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhXZWJLaXRNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
V2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4V2ViU29ja2V0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4WE1MSHR0cFJlcXVlc3Q6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorCiAyMDEyLTA1
LTE1ICBJZ29yIE9saXZlaXJhICA8aWdvci5vQHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAg
cmVncmVzc2lvbigxMTE2MzkpOiBJc3N1ZSB3aXRoIHNpbXVsdGFuZW91cyBDU1MgYW5pbWF0aW9u
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcAppbmRleCAwZDFjMDNj
ZmMxMTQ0N2QwODViMjdlYWU5ZjU5ODRkYzA2YTcxOWFkLi43ZTNkMjQ5ODZlMmIwZmI4ZTg3ZDYx
YzViNTA0OTQ3MzNkZDU2YzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOE5QT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2Jq
ZWN0LmNwcApAQCAtOTIsMTQgKzkyLDE0IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
bnBPYmplY3RJbnZva2VJbXBsKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIEludm9rCiAgICAg
ICAgIC8vIFRoZSBob2xkZXIgb2JqZWN0IGlzIG5vdCBhIHN1YnR5cGUgb2YgSFRNTFBsdWdJbkVs
ZW1lbnQsIGl0IG11c3QgYmUgYW4gTlBPYmplY3Qgd2hpY2ggaGFzIHRocmVlCiAgICAgICAgIC8v
IGludGVybmFsIGZpZWxkcy4KICAgICAgICAgaWYgKGFyZ3MuSG9sZGVyKCktPkludGVybmFsRmll
bGRDb3VudCgpICE9IG5wT2JqZWN0SW50ZXJuYWxGaWVsZENvdW50KQotICAgICAgICAgIHJldHVy
biB0aHJvd0Vycm9yKCJOUE1ldGhvZCBjYWxsZWQgb24gbm9uLU5QT2JqZWN0IiwgVjhQcm94eTo6
UmVmZXJlbmNlRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVjhQcm94eTo6
UmVmZXJlbmNlRXJyb3IsICJOUE1ldGhvZCBjYWxsZWQgb24gbm9uLU5QT2JqZWN0Iik7CiAKICAg
ICAgICAgbnBPYmplY3QgPSB2OE9iamVjdFRvTlBPYmplY3QoYXJncy5Ib2xkZXIoKSk7CiAgICAg
fQogCiAgICAgLy8gVmVyaWZ5IHRoYXQgb3VyIHdyYXBwZXIgd2Fzbid0IHVzaW5nIGEgTlBPYmpl
Y3Qgd2hpY2ggaGFzIGFscmVhZHkgYmVlbiBkZWxldGVkLgogICAgIGlmICghbnBPYmplY3QgfHwg
IV9OUE5fSXNBbGl2ZShucE9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJOUE9i
amVjdCBkZWxldGVkIiwgVjhQcm94eTo6UmVmZXJlbmNlRXJyb3IpOworICAgICAgICByZXR1cm4g
dGhyb3dFcnJvcihWOFByb3h5OjpSZWZlcmVuY2VFcnJvciwgIk5QT2JqZWN0IGRlbGV0ZWQiKTsK
IAogICAgIC8vIFdyYXAgdXAgcGFyYW1ldGVycy4KICAgICBpbnQgbnVtQXJncyA9IGFyZ3MuTGVu
Z3RoKCk7CkBAIC0xMzMsNyArMTMzLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBu
cE9iamVjdEludm9rZUltcGwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgSW52b2sKICAgICB9
CiAKICAgICBpZiAoIXJldHZhbCkKLSAgICAgICAgdGhyb3dFcnJvcigiRXJyb3IgY2FsbGluZyBt
ZXRob2Qgb24gTlBPYmplY3QuIiwgVjhQcm94eTo6R2VuZXJhbEVycm9yKTsKKyAgICAgICAgdGhy
b3dFcnJvcihWOFByb3h5OjpHZW5lcmFsRXJyb3IsICJFcnJvciBjYWxsaW5nIG1ldGhvZCBvbiBO
UE9iamVjdC4iKTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQXJnczsgaSsrKQogICAg
ICAgICBfTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUoJm5wQXJnc1tpXSk7CkBAIC0xOTAsMTIgKzE5
MCwxMiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5wT2JqZWN0R2V0UHJvcGVydHko
djg6OkxvY2FsPHY4OjpPYmplY3Q+IHNlbGYsIE5QSQogICAgIC8vIFZlcmlmeSB0aGF0IG91ciB3
cmFwcGVyIHdhc24ndCB1c2luZyBhIE5QT2JqZWN0IHdoaWNoCiAgICAgLy8gaGFzIGFscmVhZHkg
YmVlbiBkZWxldGVkLgogICAgIGlmICghbnBPYmplY3QgfHwgIV9OUE5fSXNBbGl2ZShucE9iamVj
dCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJOUE9iamVjdCBkZWxldGVkIiwgVjhQcm94
eTo6UmVmZXJlbmNlRXJyb3IpOworICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihWOFByb3h5OjpS
ZWZlcmVuY2VFcnJvciwgIk5QT2JqZWN0IGRlbGV0ZWQiKTsKIAogCiAgICAgaWYgKG5wT2JqZWN0
LT5fY2xhc3MtPmhhc1Byb3BlcnR5ICYmIG5wT2JqZWN0LT5fY2xhc3MtPmdldFByb3BlcnR5ICYm
IG5wT2JqZWN0LT5fY2xhc3MtPmhhc1Byb3BlcnR5KG5wT2JqZWN0LCBpZGVudGlmaWVyKSkgewog
ICAgICAgICBpZiAoIV9OUE5fSXNBbGl2ZShucE9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm4g
dGhyb3dFcnJvcigiTlBPYmplY3QgZGVsZXRlZCIsIFY4UHJveHk6OlJlZmVyZW5jZUVycm9yKTsK
KyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFY4UHJveHk6OlJlZmVyZW5jZUVycm9yLCAi
TlBPYmplY3QgZGVsZXRlZCIpOwogCiAgICAgICAgIE5QVmFyaWFudCByZXN1bHQ7CiAgICAgICAg
IFZPSURfVE9fTlBWQVJJQU5UKHJlc3VsdCk7CkBAIC0yMTEsMTEgKzIxMSwxMSBAQCBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IG5wT2JqZWN0R2V0UHJvcGVydHkodjg6OkxvY2FsPHY4OjpP
YmplY3Q+IHNlbGYsIE5QSQogICAgIH0KIAogICAgIGlmICghX05QTl9Jc0FsaXZlKG5wT2JqZWN0
KSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIk5QT2JqZWN0IGRlbGV0ZWQiLCBWOFByb3h5
OjpSZWZlcmVuY2VFcnJvcik7CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFY4UHJveHk6OlJl
ZmVyZW5jZUVycm9yLCAiTlBPYmplY3QgZGVsZXRlZCIpOwogCiAgICAgaWYgKGtleS0+SXNTdHJp
bmcoKSAmJiBucE9iamVjdC0+X2NsYXNzLT5oYXNNZXRob2QgJiYgbnBPYmplY3QtPl9jbGFzcy0+
aGFzTWV0aG9kKG5wT2JqZWN0LCBpZGVudGlmaWVyKSkgewogICAgICAgICBpZiAoIV9OUE5fSXNB
bGl2ZShucE9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiTlBPYmplY3Qg
ZGVsZXRlZCIsIFY4UHJveHk6OlJlZmVyZW5jZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiB0
aHJvd0Vycm9yKFY4UHJveHk6OlJlZmVyZW5jZUVycm9yLCAiTlBPYmplY3QgZGVsZXRlZCIpOwog
CiAgICAgICAgIFByaXZhdGVJZGVudGlmaWVyKiBpZCA9IHN0YXRpY19jYXN0PFByaXZhdGVJZGVu
dGlmaWVyKj4oaWRlbnRpZmllcik7CiAgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBmdW5jdGlvblRlbXBsYXRlID0gc3RhdGljVGVtcGxhdGVNYXAoKS5nZXQoaWQp
OwpAQCAtMjczLDEzICsyNzMsMTMgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBucE9i
amVjdFNldFByb3BlcnR5KHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBzZWxmLCBOUEkKIAogICAgIC8v
IFZlcmlmeSB0aGF0IG91ciB3cmFwcGVyIHdhc24ndCB1c2luZyBhIE5QT2JqZWN0IHdoaWNoIGhh
cyBhbHJlYWR5IGJlZW4gZGVsZXRlZC4KICAgICBpZiAoIW5wT2JqZWN0IHx8ICFfTlBOX0lzQWxp
dmUobnBPYmplY3QpKSB7Ci0gICAgICAgIHRocm93RXJyb3IoIk5QT2JqZWN0IGRlbGV0ZWQiLCBW
OFByb3h5OjpSZWZlcmVuY2VFcnJvcik7CisgICAgICAgIHRocm93RXJyb3IoVjhQcm94eTo6UmVm
ZXJlbmNlRXJyb3IsICJOUE9iamVjdCBkZWxldGVkIik7CiAgICAgICAgIHJldHVybiB2YWx1ZTsg
IC8vIEludGVyY2VwdGVkLCBidXQgYW4gZXhjZXB0aW9uIHdhcyB0aHJvd24uCiAgICAgfQogCiAg
ICAgaWYgKG5wT2JqZWN0LT5fY2xhc3MtPmhhc1Byb3BlcnR5ICYmIG5wT2JqZWN0LT5fY2xhc3Mt
PnNldFByb3BlcnR5ICYmIG5wT2JqZWN0LT5fY2xhc3MtPmhhc1Byb3BlcnR5KG5wT2JqZWN0LCBp
ZGVudGlmaWVyKSkgewogICAgICAgICBpZiAoIV9OUE5fSXNBbGl2ZShucE9iamVjdCkpCi0gICAg
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiTlBPYmplY3QgZGVsZXRlZCIsIFY4UHJveHk6OlJl
ZmVyZW5jZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFY4UHJveHk6OlJl
ZmVyZW5jZUVycm9yLCAiTlBPYmplY3QgZGVsZXRlZCIpOwogCiAgICAgICAgIE5QVmFyaWFudCBu
cFZhbHVlOwogICAgICAgICBWT0lEX1RPX05QVkFSSUFOVChucFZhbHVlKTsKQEAgLTMyNSw3ICsz
MjUsNyBAQCB2ODo6SGFuZGxlPHY4OjpBcnJheT4gbnBPYmplY3RQcm9wZXJ0eUVudW1lcmF0b3Io
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbywgYgogICAgIC8vIFZlcmlmeSB0aGF0IG91ciB3
cmFwcGVyIHdhc24ndCB1c2luZyBhIE5QT2JqZWN0IHdoaWNoCiAgICAgLy8gaGFzIGFscmVhZHkg
YmVlbiBkZWxldGVkLgogICAgIGlmICghbnBPYmplY3QgfHwgIV9OUE5fSXNBbGl2ZShucE9iamVj
dCkpCi0gICAgICAgIHRocm93RXJyb3IoIk5QT2JqZWN0IGRlbGV0ZWQiLCBWOFByb3h5OjpSZWZl
cmVuY2VFcnJvcik7CisgICAgICAgIHRocm93RXJyb3IoVjhQcm94eTo6UmVmZXJlbmNlRXJyb3Is
ICJOUE9iamVjdCBkZWxldGVkIik7CiAKICAgICBpZiAoTlBfQ0xBU1NfU1RSVUNUX1ZFUlNJT05f
SEFTX0VOVU0obnBPYmplY3QtPl9jbGFzcykgJiYgbnBPYmplY3QtPl9jbGFzcy0+ZW51bWVyYXRl
KSB7CiAgICAgICAgIHVpbnQzMl90IGNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBy
b3h5LmNwcAppbmRleCBkYjczMzg5OGIyNmZhOWIzNGJkODc1MTQyNmM2OGY1ZmNkN2Q1YzFlLi5i
ZTYyODRlZjVmYzcwYmY4OGNiNjExNzgzMDMzMTg2OGJiODViYzIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFByb3h5LmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIHN0YXRpYyB2b2lkIGhh
bmRsZUZhdGFsRXJyb3JJblY4KCkKIAogc3RhdGljIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGhhbmRs
ZU1heFJlY3Vyc2lvbkRlcHRoRXhjZWVkZWQoKQogewotICAgIHRocm93RXJyb3IoIk1heGltdW0g
Y2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkLiIsIFY4UHJveHk6OlJhbmdlRXJyb3IpOworICAgIHRo
cm93RXJyb3IoVjhQcm94eTo6UmFuZ2VFcnJvciwgIk1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4
Y2VlZGVkLiIpOwogICAgIHJldHVybiB2ODo6TG9jYWw8djg6OlZhbHVlPigpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZl
ckN1c3RvbS5jcHAKaW5kZXggY2Y2OTBmZDJiY2FlMWRlY2U4YWVhNDFkNjdlYTc3ZTA2MzMzNjJm
YS4uZDlhMTk5NjNmNmFlZGM4OTJiY2ViNTJmMjJmZjg4YTc4YTMyYjhkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3Vz
dG9tLmNwcApAQCAtNzAsNyArNzAsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhBcnJheUJ1
ZmZlcjo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcgogICAgIGlm
IChsZW5ndGggPj0gMCkKICAgICAgICAgYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obGVuZ3RoKSwgMSk7CiAgICAgaWYgKCFidWZmZXIuZ2V0KCkpCi0g
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJBcnJheUJ1ZmZlciBzaXplIGlzIG5vdCBhIHNtYWxs
IGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiIsIFY4UHJveHk6OlJhbmdlRXJyb3IpOworICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcihWOFByb3h5OjpSYW5nZUVycm9yLCAiQXJyYXlCdWZmZXIgc2l6
ZSBpcyBub3QgYSBzbWFsbCBlbm91Z2ggcG9zaXRpdmUgaW50ZWdlci4iKTsKICAgICAvLyBUcmFu
c2Zvcm0gdGhlIGhvbGRlciBpbnRvIGEgd3JhcHBlciBvYmplY3QgZm9yIHRoZSBhcnJheS4KICAg
ICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIoKSwgJmluZm8sIGJ1ZmZl
ci5nZXQoKSk7CiAgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoYnVm
ZmVyLnJlbGVhc2UoKSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhhcmdzLkhvbGRl
cigpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhB
cnJheUJ1ZmZlclZpZXdDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oCmluZGV4IGEwZmM1YWVkNTJlNDFmNGFmODE2MzRh
YTgxMWUyMDMzMzQwZDllMDcuLmM0MjBjMGM1MDBiZWM2MTY4OGNmZGFiYTRlOTM0ZGJlN2NlMWYw
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5
QnVmZmVyVmlld0N1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oCkBAIC03Niw3ICs3Niw3IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBjb25zdHJ1Y3RXZWJHTEFycmF5V2l0aEFycmF5QnVmZmVyQXJndW1lbnQoY29u
c3Qgdjg6OkFyZ3VtCiAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiQ291bGQgbm90IGNv
bnZlcnQgYXJndW1lbnQgMiB0byBhIG51bWJlciIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlm
ICgoYnVmLT5ieXRlTGVuZ3RoKCkgLSBvZmZzZXQpICUgc2l6ZW9mKEVsZW1lbnRUeXBlKSkKLSAg
ICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJBcnJheUJ1ZmZlciBsZW5ndGggbWludXMgdGhl
IGJ5dGVPZmZzZXQgaXMgbm90IGEgbXVsdGlwbGUgb2YgdGhlIGVsZW1lbnQgc2l6ZS4iLCBWOFBy
b3h5OjpSYW5nZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFY4UHJveHk6
OlJhbmdlRXJyb3IsICJBcnJheUJ1ZmZlciBsZW5ndGggbWludXMgdGhlIGJ5dGVPZmZzZXQgaXMg
bm90IGEgbXVsdGlwbGUgb2YgdGhlIGVsZW1lbnQgc2l6ZS4iKTsKICAgICAgICAgbGVuZ3RoID0g
KGJ1Zi0+Ynl0ZUxlbmd0aCgpIC0gb2Zmc2V0KSAvIHNpemVvZihFbGVtZW50VHlwZSk7CiAgICAg
fQogICAgIFJlZlB0cjxBcnJheUNsYXNzPiBhcnJheSA9IEFycmF5Q2xhc3M6OmNyZWF0ZShidWYs
IG9mZnNldCwgbGVuZ3RoKTsKQEAgLTE2OSw3ICsxNjksNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gY29uc3RydWN0V2ViR0xBcnJheShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBXcmFwcGVy
VHlwZQogICAgIGlmIChkb0luc3RhbnRpYXRpb24pCiAgICAgICAgIGFycmF5ID0gQXJyYXlDbGFz
czo6Y3JlYXRlKGxlbik7CiAgICAgaWYgKCFhcnJheS5nZXQoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93RXJyb3IoIkFycmF5QnVmZmVyVmlldyBzaXplIGlzIG5vdCBhIHNtYWxsIGVub3VnaCBwb3Np
dGl2ZSBpbnRlZ2VyLiIsIFY4UHJveHk6OlJhbmdlRXJyb3IpOworICAgICAgICByZXR1cm4gdGhy
b3dFcnJvcihWOFByb3h5OjpSYW5nZUVycm9yLCAiQXJyYXlCdWZmZXJWaWV3IHNpemUgaXMgbm90
IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIik7CiAKIAogICAgIC8vIFRyYW5zZm9y
bSB0aGUgaG9sZGVyIGludG8gYSB3cmFwcGVyIG9iamVjdCBmb3IgdGhlIGFycmF5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4
dEN1c3RvbS5jcHAKaW5kZXggZWM2MzM4ZDQyYTI5ZWFkOGMyNTFhYTQ1MmIwMTg4Nzk2MmFiNzVk
ZC4uOGFjY2JmMzY5NDk2MmY5MzBjMDMyOTFjNTIxMzQ1YWE3NzhmMjg3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRD
dXN0b20uY3BwCkBAIC01MSwxMSArNTEsMTEgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4QXVk
aW9Db250ZXh0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKIAog
ICAgIEZyYW1lKiBmcmFtZSA9IFY4UHJveHk6OnJldHJpZXZlRnJhbWVGb3JDdXJyZW50Q29udGV4
dCgpOwogICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJBdWRpb0Nv
bnRleHQgY29uc3RydWN0b3IgYXNzb2NpYXRlZCBmcmFtZSBpcyB1bmF2YWlsYWJsZSIsIFY4UHJv
eHk6OlJlZmVyZW5jZUVycm9yKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVjhQcm94eTo6
UmVmZXJlbmNlRXJyb3IsICJBdWRpb0NvbnRleHQgY29uc3RydWN0b3IgYXNzb2NpYXRlZCBmcmFt
ZSBpcyB1bmF2YWlsYWJsZSIpOwogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRv
Y3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3Io
IkF1ZGlvQ29udGV4dCBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxh
YmxlIiwgVjhQcm94eTo6UmVmZXJlbmNlRXJyb3IpOworICAgICAgICByZXR1cm4gdGhyb3dFcnJv
cihWOFByb3h5OjpSZWZlcmVuY2VFcnJvciwgIkF1ZGlvQ29udGV4dCBjb25zdHJ1Y3RvciBhc3Nv
Y2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlIik7CiAKICAgICBSZWZQdHI8QXVkaW9Db250
ZXh0PiBhdWRpb0NvbnRleHQ7CiAgICAgCkBAIC02Niw3ICs2Niw3IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOEF1ZGlvQ29udGV4dDo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhCiAgICAgICAgIGlmIChlYykKICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KGVjKTsKICAgICAgICAgaWYgKCFhdWRpb0NvbnRleHQuZ2V0KCkpCi0gICAgICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcigiYXVkaW8gcmVzb3VyY2VzIHVuYXZhaWxhYmxlIGZvciBBdWRpb0NvbnRl
eHQgY29uc3RydWN0aW9uIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOworICAgICAgICAgICAgcmV0
dXJuIHRocm93RXJyb3IoVjhQcm94eTo6U3ludGF4RXJyb3IsICJhdWRpbyByZXNvdXJjZXMgdW5h
dmFpbGFibGUgZm9yIEF1ZGlvQ29udGV4dCBjb25zdHJ1Y3Rpb24iKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICAvLyBDb25zdHJ1Y3RvciBmb3Igb2ZmbGluZSAocmVuZGVyLXRhcmdldCkgQXVkaW9D
b250ZXh0IHdoaWNoIHJlbmRlcnMgaW50byBhbiBBdWRpb0J1ZmZlci4KICAgICAgICAgLy8gbmV3
IEF1ZGlvQ29udGV4dChpbiB1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIGluIHVuc2ln
bmVkIGxvbmcgbnVtYmVyT2ZGcmFtZXMsIGluIGZsb2F0IHNhbXBsZVJhdGUpOwpAQCAtNzcsMTUg
Kzc3LDE1IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEF1ZGlvQ29udGV4dDo6Y29uc3RydWN0
b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhCiAKICAgICAgICAgaW50MzJfdCBudW1i
ZXJPZkNoYW5uZWxzID0gdG9JbnQzMihhcmdzWzBdLCBvayk7CiAgICAgICAgIGlmICghb2sgfHwg
bnVtYmVyT2ZDaGFubmVscyA8PSAwIHx8IG51bWJlck9mQ2hhbm5lbHMgPiAxMCkKLSAgICAgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKCJJbnZhbGlkIG51bWJlciBvZiBjaGFubmVscyIsIFY4UHJv
eHk6OlN5bnRheEVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFY4UHJveHk6
OlN5bnRheEVycm9yLCAiSW52YWxpZCBudW1iZXIgb2YgY2hhbm5lbHMiKTsKIAogICAgICAgICBp
bnQzMl90IG51bWJlck9mRnJhbWVzID0gdG9JbnQzMihhcmdzWzFdLCBvayk7CiAgICAgICAgIGlm
ICghb2sgfHwgbnVtYmVyT2ZGcmFtZXMgPD0gMCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vy
cm9yKCJJbnZhbGlkIG51bWJlciBvZiBmcmFtZXMiLCBWOFByb3h5OjpTeW50YXhFcnJvcik7Cisg
ICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihWOFByb3h5OjpTeW50YXhFcnJvciwgIkludmFs
aWQgbnVtYmVyIG9mIGZyYW1lcyIpOwogCiAgICAgICAgIGZsb2F0IHNhbXBsZVJhdGUgPSB0b0Zs
b2F0KGFyZ3NbMl0pOwogICAgICAgICBpZiAoc2FtcGxlUmF0ZSA8PSAwKQotICAgICAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoIkludmFsaWQgc2FtcGxlIHJhdGUiLCBWOFByb3h5OjpTeW50YXhF
cnJvcik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihWOFByb3h5OjpTeW50YXhFcnJv
ciwgIkludmFsaWQgc2FtcGxlIHJhdGUiKTsKIAogICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKICAgICAgICAgYXVkaW9Db250ZXh0ID0gQXVkaW9Db250ZXh0OjpjcmVhdGVPZmZsaW5lQ29u
dGV4dChkb2N1bWVudCwgbnVtYmVyT2ZDaGFubmVscywgbnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJh
dGUsIGVjKTsKQEAgLTk0LDcgKzk0LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4QXVkaW9D
b250ZXh0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKICAgICB9
CiAKICAgICBpZiAoIWF1ZGlvQ29udGV4dC5nZXQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJy
b3IoIkVycm9yIGNyZWF0aW5nIEF1ZGlvQ29udGV4dCIsIFY4UHJveHk6OlN5bnRheEVycm9yKTsK
KyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVjhQcm94eTo6U3ludGF4RXJyb3IsICJFcnJvciBj
cmVhdGluZyBBdWRpb0NvbnRleHQiKTsKICAgICAKICAgICAvLyBUcmFuc2Zvcm0gdGhlIGhvbGRl
ciBpbnRvIGEgd3JhcHBlciBvYmplY3QgZm9yIHRoZSBhdWRpbyBjb250ZXh0LgogICAgIFY4RE9N
V3JhcHBlcjo6c2V0RE9NV3JhcHBlcihhcmdzLkhvbGRlcigpLCAmaW5mbywgYXVkaW9Db250ZXh0
LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEJsb2JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Qmxv
YkN1c3RvbS5jcHAKaW5kZXggNTBiNDg3M2I3OWE2NGY0NzZiZjZmMTU1ZWYxOTY1MjJjYWEzNmRj
Yi4uN2NhYmJhOWE1YmJmZjJhZDZlM2Y1ZTM2NGIxZThkMmU1YWIxNmFhMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHAKQEAgLTY4
LDcgKzY4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4QmxvYjo6Y29uc3RydWN0b3JDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIC8vIEdldCB0aGUgc2NyaXB0IGV4
ZWN1dGlvbiBjb250ZXh0LgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBn
ZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQotICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcigiQmxvYiBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlz
IHVuYXZhaWxhYmxlIiwgVjhQcm94eTo6UmVmZXJlbmNlRXJyb3IpOworICAgICAgICByZXR1cm4g
dGhyb3dFcnJvcihWOFByb3h5OjpSZWZlcmVuY2VFcnJvciwgIkJsb2IgY29uc3RydWN0b3IgYXNz
b2NpYXRlZCBkb2N1bWVudCBpcyB1bmF2YWlsYWJsZSIpOwogCiAgICAgaWYgKCFhcmdzLkxlbmd0
aCgpKSB7CiAgICAgICAgIFJlZlB0cjxCbG9iPiBibG9iID0gQmxvYjo6Y3JlYXRlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2xpcGJvYXJkQ3Vz
dG9tLmNwcAppbmRleCBiMzM2NjEwNjQ0ZWQwZDcxZjk0ZTQ5ODY3MTM2N2RlOWJlZmE4OWVhLi4x
ZjAzNWI4MzJlMTVhNjcyZmJlYTNiZGE0ZWM2ZjE0YTBiNzQzZGEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5jcHAK
QEAgLTczLDcgKzczLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2xpcGJvYXJkOjpjbGVh
ckRhdGFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIH0KIAogICAgIGlm
IChhcmdzLkxlbmd0aCgpICE9IDEpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJjbGVhckRh
dGE6IEludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyIsIFY4UHJveHk6OlN5bnRheEVycm9yKTsK
KyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVjhQcm94eTo6U3ludGF4RXJyb3IsICJjbGVhckRh
dGE6IEludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyIpOwogCiAgICAgU3RyaW5nIHR5cGUgPSB0
b1dlYkNvcmVTdHJpbmcoYXJnc1swXSk7CiAgICAgY2xpcGJvYXJkLT5jbGVhckRhdGEodHlwZSk7
CkBAIC04OSw3ICs4OSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENsaXBib2FyZDo6c2V0
RHJhZ0ltYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJnCiAgICAgICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7CiAKICAgICBpZiAoYXJncy5MZW5ndGgoKSAhPSAzKQotICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcigic2V0RHJhZ0ltYWdlOiBJbnZhbGlkIG51bWJlciBvZiBhcmd1
bWVudHMiLCBWOFByb3h5OjpTeW50YXhFcnJvcik7CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KFY4UHJveHk6OlN5bnRheEVycm9yLCAic2V0RHJhZ0ltYWdlOiBJbnZhbGlkIG51bWJlciBvZiBh
cmd1bWVudHMiKTsKIAogICAgIGludCB4ID0gdG9JbnQzMihhcmdzWzFdKTsKICAgICBpbnQgeSA9
IHRvSW50MzIoYXJnc1syXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAKaW5kZXggYThkMDc3ZGM1ZDU5N2Iz
NDg2YzMyZTkzNzliYjZhNTRmOGVmOGM3YS4uNDFjNzE1NTI4MTNlMDZiYmYzNjg2ODRmNzQwNjdk
NTRjNzRiNGIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhET01Gb3JtRGF0YTo6YXBwZW5kQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKICAgICBJTkNfU1RBVFMoIkRPTS5Gb3JtRGF0YS5hcHBlbmQoKSIpOwog
ICAgIAogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikKLSAgICAgICAgcmV0dXJuIHRocm93RXJy
b3IoIk5vdCBlbm91Z2ggYXJndW1lbnRzIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOworICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcihWOFByb3h5OjpTeW50YXhFcnJvciwgIk5vdCBlbm91Z2ggYXJn
dW1lbnRzIik7CiAKICAgICBET01Gb3JtRGF0YSogZG9tRm9ybURhdGEgPSBWOERPTUZvcm1EYXRh
Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1
Y3Rvci5jcHAKaW5kZXggOGM3M2EzOGU3NGZkMDFjYmVlMjc2MGI5MDViNGYzODM1YzIxY2JhNS4u
YjdiMjM1MjRiYzY0ODVmMzA5MjI4OGRlNWM4NmE0MTlkZGMxMGZiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1h
Z2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCkBAIC01OCwxMSArNTgsMTEgQEAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB2OEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3RvckNhbGxiYWNrKGNv
bnN0IHY4OjpBcmcKIAogICAgIEZyYW1lKiBmcmFtZSA9IFY4UHJveHk6OnJldHJpZXZlRnJhbWVG
b3JDdXJyZW50Q29udGV4dCgpOwogICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKCJJbWFnZSBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGZyYW1lIGlzIHVuYXZhaWxhYmxl
IiwgVjhQcm94eTo6UmVmZXJlbmNlRXJyb3IpOworICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihW
OFByb3h5OjpSZWZlcmVuY2VFcnJvciwgIkltYWdlIGNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZnJh
bWUgaXMgdW5hdmFpbGFibGUiKTsKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5k
b2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KCJJbWFnZSBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlIiwg
VjhQcm94eTo6UmVmZXJlbmNlRXJyb3IpOworICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihWOFBy
b3h5OjpSZWZlcmVuY2VFcnJvciwgIkltYWdlIGNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZG9jdW1l
bnQgaXMgdW5hdmFpbGFibGUiKTsKIAogICAgIC8vIE1ha2Ugc3VyZSB0aGUgZG9jdW1lbnQgaXMg
YWRkZWQgdG8gdGhlIERPTSBOb2RlIG1hcC4gT3RoZXJ3aXNlLCB0aGUgSFRNTEltYWdlRWxlbWVu
dCBpbnN0YW5jZQogICAgIC8vIG1heSBlbmQgdXAgYmVpbmcgdGhlIG9ubHkgbm9kZSBpbiB0aGUg
bWFwIGFuZCBnZXQgZ2FyYmFnZS1jY29sbGVjdGVkIHByZW1hdHVyZWx5LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0TXV0YXRpb25PYnNlcnZl
ckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRN
dXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcAppbmRleCBlNzViOTQ0NzZiMjY1ZGIyZWViYjllMTcx
NDA1MDc4YTUyMzliODdhLi5lMzUzZGU1ZGU5OTExOTdmZjA0NzQzYTdkNmViMjhlMzY4OTE4NDk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRN
dXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhXZWJLaXRNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcApAQCAtNjksNyArNjks
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpjb25z
dHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcgogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRl
eHQpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJXZWJLaXRNdXRhdGlvbk9ic2VydmVyIGNv
bnN0cnVjdG9yJ3MgYXNzb2NpYXRlZCBmcmFtZSB1bmF2YWlsYWJsZSIsIFY4UHJveHk6OlJlZmVy
ZW5jZUVycm9yKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVjhQcm94eTo6UmVmZXJlbmNl
RXJyb3IsICJXZWJLaXRNdXRhdGlvbk9ic2VydmVyIGNvbnN0cnVjdG9yJ3MgYXNzb2NpYXRlZCBm
cmFtZSB1bmF2YWlsYWJsZSIpOwogCiAgICAgUmVmUHRyPE11dGF0aW9uQ2FsbGJhY2s+IGNhbGxi
YWNrID0gVjhNdXRhdGlvbkNhbGxiYWNrOjpjcmVhdGUoYXJnLCBjb250ZXh0KTsKICAgICBSZWZQ
dHI8V2ViS2l0TXV0YXRpb25PYnNlcnZlcj4gb2JzZXJ2ZXIgPSBXZWJLaXRNdXRhdGlvbk9ic2Vy
dmVyOjpjcmVhdGUoY2FsbGJhY2sucmVsZWFzZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwCmluZGV4IGFlMTJi
NmZlZThhMWY1NmI3OTVjYWQyMzVhMmFmNzI0YTg0OTJiODkuLjU0YTc5M2UyNjMzZjc3ZmVmOWQ5
Y2Y4OWQzMWM3YzIyNzlmMTFjNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcApAQCAtNjksMTIgKzY5LDEyIEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYlNvY2tldDo6Y29uc3RydWN0b3JDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzCiAgICAgaWYgKHRyeUNhdGNoLkhhc0NhdWdodCgpKQog
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih0cnlDYXRjaC5FeGNlcHRpb24oKSk7CiAgICAgaWYg
KHVybHN0cmluZy5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJFbXB0eSBV
UkwiLCBWOFByb3h5OjpTeW50YXhFcnJvcik7CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFY4
UHJveHk6OlN5bnRheEVycm9yLCAiRW1wdHkgVVJMIik7CiAKICAgICAvLyBHZXQgdGhlIHNjcmlw
dCBleGVjdXRpb24gY29udGV4dC4KICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKLSAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoIldlYlNvY2tldCBjb25zdHJ1Y3RvcidzIGFzc29jaWF0ZWQg
ZnJhbWUgaXMgbm90IGF2YWlsYWJsZSIsIFY4UHJveHk6OlJlZmVyZW5jZUVycm9yKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoVjhQcm94eTo6UmVmZXJlbmNlRXJyb3IsICJXZWJTb2NrZXQg
Y29uc3RydWN0b3IncyBhc3NvY2lhdGVkIGZyYW1lIGlzIG5vdCBhdmFpbGFibGUiKTsKIAogICAg
IGNvbnN0IEtVUkwmIHVybCA9IGNvbnRleHQtPmNvbXBsZXRlVVJMKHRvV2ViQ29yZVN0cmluZyh1
cmxzdHJpbmcpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcAppbmRleCA3MWQ3
ZGQyODY1NTJjNGJlOTU5MjMzYzMxZDEyNzhlMTcwYmUyMzBkLi5jNzJkOTFhZjBlNTNmYTBlZGU4
NzMxMDkwMDYxMjE5N2UwYWRhM2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNw
cApAQCAtNTcsNyArNTcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVz
dDo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgogICAgIC8vIEFsbG9j
YXRlIGEgWE1MSHR0cFJlcXVlc3Qgb2JqZWN0IGFzIGl0cyBpbnRlcm5hbCBmaWVsZC4KICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwogICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlhNTEh0
dHBSZXF1ZXN0IGNvbnN0cnVjdG9yJ3MgYXNzb2NpYXRlZCBjb250ZXh0IGlzIG5vdCBhdmFpbGFi
bGUiLCBWOFByb3h5OjpSZWZlcmVuY2VFcnJvcik7CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KFY4UHJveHk6OlJlZmVyZW5jZUVycm9yLCAiWE1MSHR0cFJlcXVlc3QgY29uc3RydWN0b3IncyBh
c3NvY2lhdGVkIGNvbnRleHQgaXMgbm90IGF2YWlsYWJsZSIpOwogCiAgICAgUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbjsKICAgICBpZiAoVjhJc29sYXRlZENvbnRleHQqIGlz
b2xhdGVkQ29udGV4dCA9IFY4SXNvbGF0ZWRDb250ZXh0OjpnZXRFbnRlcmVkKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142164</attachid>
            <date>2012-05-15 23:39:55 -0700</date>
            <delta_ts>2012-05-16 20:13:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86579-20120516153953.patch</filename>
            <type>text/plain</type>
            <size>21133</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3MjE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjY0NWNlZmQxNGM1NjQx
NTUzNmY2MmUzZTg2ZDA1NjQ5MjcwZTJmNC4uYmM2NGQ5MGU2M2FmODgwN2NlMWU4MDM5MTlkNWMz
NGI0NmIyN2M1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTA1LTE1ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdW1JlZmFjdG9y
aW5nXSBSZXBsYWNlIHRocm93RXJyb3IoIm1lc3NhZ2UiLCBYWFhFcnJvcikKKyAgICAgICAgd2l0
aCB0aHJvd0Vycm9yKFhYWEVycm9yLCAibWVzc2FnZSIpCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjU3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgb25lIG9mIGEgc2VyaWVzIG9mIHJlZmFj
dG9yaW5nIGNvbW1lbnRlZCBpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODQwNzQjYzUKKworICAgICAgICBDdXJyZW50bHkgdGhlcmUgYXJlIHR3byBl
cXVpdmFsZW50IHRocm93RXJyb3IoKXM7IGkuZS4gdGhyb3dFcnJvcigibWVzc2FnZSIsIFhYWEVy
cm9yKQorICAgICAgICBhbmQgdGhyb3dFcnJvcihYWFhFcnJvciwgIm1lc3NhZ2UiKS4gSW4gdGhp
cyBidWcgd2UgcmVwbGFjZQorICAgICAgICB0aHJvd0Vycm9yKCJtZXNzYWdlIiwgWFhYRXJyb3Ip
IHdpdGggdGhyb3dFcnJvcihYWFhFcnJvciwgIm1lc3NhZ2UiKQorICAgICAgICAoZXhjZXB0IGZv
ciB0aGUgY2FzZSB3aGVyZSBYWFhFcnJvciA9PSBUeXBlRXJyb3IuIFRoaXMgaXMgYmVjYXVzZQor
ICAgICAgICB0aHJvd0Vycm9yKCJtZXNzYWdlIiwgVHlwZUVycm9yKSB3aWxsIGJlIHJlcGxhY2Vk
IHdpdGggdGhyb3dUeXBlRXJyb3IoIm1lc3NhZ2UiKQorICAgICAgICBpbiBhIGZvbGxvdy11cCBw
YXRjaCkuCisKKyAgICAgICAgTm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bnBP
YmplY3RJbnZva2VJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Om5wT2JqZWN0R2V0UHJvcGVydHkp
OgorICAgICAgICAoV2ViQ29yZTo6bnBPYmplY3RTZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJD
b3JlOjpucE9iamVjdFByb3BlcnR5RW51bWVyYXRvcik6CisgICAgICAgICogYmluZGluZ3Mvdjgv
VjhQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVNYXhSZWN1cnNpb25EZXB0aEV4
Y2VlZGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEFycmF5QnVmZmVyOjpjb25zdHJ1Y3RvckNhbGxi
YWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0
b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdFdlYkdMQXJyYXlXaXRoQXJyYXlCdWZm
ZXJBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RXZWJHTEFycmF5KToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhBdWRpb0NvbnRleHQ6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEJsb2JDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VjhCbG9iOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhDbGlw
Ym9hcmQ6OmNsZWFyRGF0YUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4Q2xpcGJvYXJk
OjpzZXREcmFnSW1hZ2VDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RE9NRm9ybURhdGFDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01Gb3JtRGF0YTo6
YXBwZW5kQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFn
ZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2OEhUTUxJbWFnZUVs
ZW1lbnRDb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhXZWJLaXRNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
V2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4V2ViU29ja2V0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4WE1MSHR0cFJlcXVlc3Q6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorCiAyMDEyLTA1
LTE1ICBJZ29yIE9saXZlaXJhICA8aWdvci5vQHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAg
cmVncmVzc2lvbigxMTE2MzkpOiBJc3N1ZSB3aXRoIHNpbXVsdGFuZW91cyBDU1MgYW5pbWF0aW9u
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcAppbmRleCAwZDFjMDNj
ZmMxMTQ0N2QwODViMjdlYWU5ZjU5ODRkYzA2YTcxOWFkLi41YTU4ZDgyNzIyNmE5Mjc2ZmE4N2Jk
ODc0MTk5YmExOWMzNThlZWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOE5QT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2Jq
ZWN0LmNwcApAQCAtOTIsMTQgKzkyLDE0IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
bnBPYmplY3RJbnZva2VJbXBsKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIEludm9rCiAgICAg
ICAgIC8vIFRoZSBob2xkZXIgb2JqZWN0IGlzIG5vdCBhIHN1YnR5cGUgb2YgSFRNTFBsdWdJbkVs
ZW1lbnQsIGl0IG11c3QgYmUgYW4gTlBPYmplY3Qgd2hpY2ggaGFzIHRocmVlCiAgICAgICAgIC8v
IGludGVybmFsIGZpZWxkcy4KICAgICAgICAgaWYgKGFyZ3MuSG9sZGVyKCktPkludGVybmFsRmll
bGRDb3VudCgpICE9IG5wT2JqZWN0SW50ZXJuYWxGaWVsZENvdW50KQotICAgICAgICAgIHJldHVy
biB0aHJvd0Vycm9yKCJOUE1ldGhvZCBjYWxsZWQgb24gbm9uLU5QT2JqZWN0IiwgVjhQcm94eTo6
UmVmZXJlbmNlRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIFY4UHJveHk6OnRocm93RXJyb3Io
VjhQcm94eTo6UmVmZXJlbmNlRXJyb3IsICJOUE1ldGhvZCBjYWxsZWQgb24gbm9uLU5QT2JqZWN0
Iik7CiAKICAgICAgICAgbnBPYmplY3QgPSB2OE9iamVjdFRvTlBPYmplY3QoYXJncy5Ib2xkZXIo
KSk7CiAgICAgfQogCiAgICAgLy8gVmVyaWZ5IHRoYXQgb3VyIHdyYXBwZXIgd2Fzbid0IHVzaW5n
IGEgTlBPYmplY3Qgd2hpY2ggaGFzIGFscmVhZHkgYmVlbiBkZWxldGVkLgogICAgIGlmICghbnBP
YmplY3QgfHwgIV9OUE5fSXNBbGl2ZShucE9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vy
cm9yKCJOUE9iamVjdCBkZWxldGVkIiwgVjhQcm94eTo6UmVmZXJlbmNlRXJyb3IpOworICAgICAg
ICByZXR1cm4gVjhQcm94eTo6dGhyb3dFcnJvcihWOFByb3h5OjpSZWZlcmVuY2VFcnJvciwgIk5Q
T2JqZWN0IGRlbGV0ZWQiKTsKIAogICAgIC8vIFdyYXAgdXAgcGFyYW1ldGVycy4KICAgICBpbnQg
bnVtQXJncyA9IGFyZ3MuTGVuZ3RoKCk7CkBAIC0xMzMsNyArMTMzLDcgQEAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBucE9iamVjdEludm9rZUltcGwoY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncywgSW52b2sKICAgICB9CiAKICAgICBpZiAoIXJldHZhbCkKLSAgICAgICAgdGhyb3dFcnJv
cigiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3QuIiwgVjhQcm94eTo6R2VuZXJhbEVy
cm9yKTsKKyAgICAgICAgVjhQcm94eTo6dGhyb3dFcnJvcihWOFByb3h5OjpHZW5lcmFsRXJyb3Is
ICJFcnJvciBjYWxsaW5nIG1ldGhvZCBvbiBOUE9iamVjdC4iKTsKIAogICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbnVtQXJnczsgaSsrKQogICAgICAgICBfTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUo
Jm5wQXJnc1tpXSk7CkBAIC0xOTAsMTIgKzE5MCwxMiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IG5wT2JqZWN0R2V0UHJvcGVydHkodjg6OkxvY2FsPHY4OjpPYmplY3Q+IHNlbGYsIE5Q
SQogICAgIC8vIFZlcmlmeSB0aGF0IG91ciB3cmFwcGVyIHdhc24ndCB1c2luZyBhIE5QT2JqZWN0
IHdoaWNoCiAgICAgLy8gaGFzIGFscmVhZHkgYmVlbiBkZWxldGVkLgogICAgIGlmICghbnBPYmpl
Y3QgfHwgIV9OUE5fSXNBbGl2ZShucE9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KCJOUE9iamVjdCBkZWxldGVkIiwgVjhQcm94eTo6UmVmZXJlbmNlRXJyb3IpOworICAgICAgICBy
ZXR1cm4gVjhQcm94eTo6dGhyb3dFcnJvcihWOFByb3h5OjpSZWZlcmVuY2VFcnJvciwgIk5QT2Jq
ZWN0IGRlbGV0ZWQiKTsKIAogCiAgICAgaWYgKG5wT2JqZWN0LT5fY2xhc3MtPmhhc1Byb3BlcnR5
ICYmIG5wT2JqZWN0LT5fY2xhc3MtPmdldFByb3BlcnR5ICYmIG5wT2JqZWN0LT5fY2xhc3MtPmhh
c1Byb3BlcnR5KG5wT2JqZWN0LCBpZGVudGlmaWVyKSkgewogICAgICAgICBpZiAoIV9OUE5fSXNB
bGl2ZShucE9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiTlBPYmplY3Qg
ZGVsZXRlZCIsIFY4UHJveHk6OlJlZmVyZW5jZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBW
OFByb3h5Ojp0aHJvd0Vycm9yKFY4UHJveHk6OlJlZmVyZW5jZUVycm9yLCAiTlBPYmplY3QgZGVs
ZXRlZCIpOwogCiAgICAgICAgIE5QVmFyaWFudCByZXN1bHQ7CiAgICAgICAgIFZPSURfVE9fTlBW
QVJJQU5UKHJlc3VsdCk7CkBAIC0yMTEsMTEgKzIxMSwxMSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IG5wT2JqZWN0R2V0UHJvcGVydHkodjg6OkxvY2FsPHY4OjpPYmplY3Q+IHNlbGYs
IE5QSQogICAgIH0KIAogICAgIGlmICghX05QTl9Jc0FsaXZlKG5wT2JqZWN0KSkKLSAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoIk5QT2JqZWN0IGRlbGV0ZWQiLCBWOFByb3h5OjpSZWZlcmVuY2VF
cnJvcik7CisgICAgICAgIHJldHVybiBWOFByb3h5Ojp0aHJvd0Vycm9yKFY4UHJveHk6OlJlZmVy
ZW5jZUVycm9yLCAiTlBPYmplY3QgZGVsZXRlZCIpOwogCiAgICAgaWYgKGtleS0+SXNTdHJpbmco
KSAmJiBucE9iamVjdC0+X2NsYXNzLT5oYXNNZXRob2QgJiYgbnBPYmplY3QtPl9jbGFzcy0+aGFz
TWV0aG9kKG5wT2JqZWN0LCBpZGVudGlmaWVyKSkgewogICAgICAgICBpZiAoIV9OUE5fSXNBbGl2
ZShucE9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiTlBPYmplY3QgZGVs
ZXRlZCIsIFY4UHJveHk6OlJlZmVyZW5jZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBWOFBy
b3h5Ojp0aHJvd0Vycm9yKFY4UHJveHk6OlJlZmVyZW5jZUVycm9yLCAiTlBPYmplY3QgZGVsZXRl
ZCIpOwogCiAgICAgICAgIFByaXZhdGVJZGVudGlmaWVyKiBpZCA9IHN0YXRpY19jYXN0PFByaXZh
dGVJZGVudGlmaWVyKj4oaWRlbnRpZmllcik7CiAgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBmdW5jdGlvblRlbXBsYXRlID0gc3RhdGljVGVtcGxhdGVNYXAoKS5n
ZXQoaWQpOwpAQCAtMjczLDEzICsyNzMsMTMgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBucE9iamVjdFNldFByb3BlcnR5KHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBzZWxmLCBOUEkKIAog
ICAgIC8vIFZlcmlmeSB0aGF0IG91ciB3cmFwcGVyIHdhc24ndCB1c2luZyBhIE5QT2JqZWN0IHdo
aWNoIGhhcyBhbHJlYWR5IGJlZW4gZGVsZXRlZC4KICAgICBpZiAoIW5wT2JqZWN0IHx8ICFfTlBO
X0lzQWxpdmUobnBPYmplY3QpKSB7Ci0gICAgICAgIHRocm93RXJyb3IoIk5QT2JqZWN0IGRlbGV0
ZWQiLCBWOFByb3h5OjpSZWZlcmVuY2VFcnJvcik7CisgICAgICAgIFY4UHJveHk6OnRocm93RXJy
b3IoVjhQcm94eTo6UmVmZXJlbmNlRXJyb3IsICJOUE9iamVjdCBkZWxldGVkIik7CiAgICAgICAg
IHJldHVybiB2YWx1ZTsgIC8vIEludGVyY2VwdGVkLCBidXQgYW4gZXhjZXB0aW9uIHdhcyB0aHJv
d24uCiAgICAgfQogCiAgICAgaWYgKG5wT2JqZWN0LT5fY2xhc3MtPmhhc1Byb3BlcnR5ICYmIG5w
T2JqZWN0LT5fY2xhc3MtPnNldFByb3BlcnR5ICYmIG5wT2JqZWN0LT5fY2xhc3MtPmhhc1Byb3Bl
cnR5KG5wT2JqZWN0LCBpZGVudGlmaWVyKSkgewogICAgICAgICBpZiAoIV9OUE5fSXNBbGl2ZShu
cE9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiTlBPYmplY3QgZGVsZXRl
ZCIsIFY4UHJveHk6OlJlZmVyZW5jZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBWOFByb3h5
Ojp0aHJvd0Vycm9yKFY4UHJveHk6OlJlZmVyZW5jZUVycm9yLCAiTlBPYmplY3QgZGVsZXRlZCIp
OwogCiAgICAgICAgIE5QVmFyaWFudCBucFZhbHVlOwogICAgICAgICBWT0lEX1RPX05QVkFSSUFO
VChucFZhbHVlKTsKQEAgLTMyNSw3ICszMjUsNyBAQCB2ODo6SGFuZGxlPHY4OjpBcnJheT4gbnBP
YmplY3RQcm9wZXJ0eUVudW1lcmF0b3IoY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbywgYgog
ICAgIC8vIFZlcmlmeSB0aGF0IG91ciB3cmFwcGVyIHdhc24ndCB1c2luZyBhIE5QT2JqZWN0IHdo
aWNoCiAgICAgLy8gaGFzIGFscmVhZHkgYmVlbiBkZWxldGVkLgogICAgIGlmICghbnBPYmplY3Qg
fHwgIV9OUE5fSXNBbGl2ZShucE9iamVjdCkpCi0gICAgICAgIHRocm93RXJyb3IoIk5QT2JqZWN0
IGRlbGV0ZWQiLCBWOFByb3h5OjpSZWZlcmVuY2VFcnJvcik7CisgICAgICAgIFY4UHJveHk6OnRo
cm93RXJyb3IoVjhQcm94eTo6UmVmZXJlbmNlRXJyb3IsICJOUE9iamVjdCBkZWxldGVkIik7CiAK
ICAgICBpZiAoTlBfQ0xBU1NfU1RSVUNUX1ZFUlNJT05fSEFTX0VOVU0obnBPYmplY3QtPl9jbGFz
cykgJiYgbnBPYmplY3QtPl9jbGFzcy0+ZW51bWVyYXRlKSB7CiAgICAgICAgIHVpbnQzMl90IGNv
dW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAppbmRleCBkYjczMzg5OGIy
NmZhOWIzNGJkODc1MTQyNmM2OGY1ZmNkN2Q1YzFlLi41YzllY2NlODUzZmY0MWU5MWM3OTUxYjJm
Njk3ODNhOTM3N2RlZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcApA
QCAtMTYwLDcgKzE2MCw3IEBAIHN0YXRpYyB2b2lkIGhhbmRsZUZhdGFsRXJyb3JJblY4KCkKIAog
c3RhdGljIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGhhbmRsZU1heFJlY3Vyc2lvbkRlcHRoRXhjZWVk
ZWQoKQogewotICAgIHRocm93RXJyb3IoIk1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVk
LiIsIFY4UHJveHk6OlJhbmdlRXJyb3IpOworICAgIFY4UHJveHk6OnRocm93RXJyb3IoVjhQcm94
eTo6UmFuZ2VFcnJvciwgIk1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkLiIpOwogICAg
IHJldHVybiB2ODo6TG9jYWw8djg6OlZhbHVlPigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAKaW5k
ZXggY2Y2OTBmZDJiY2FlMWRlY2U4YWVhNDFkNjdlYTc3ZTA2MzMzNjJmYS4uYjY1NGRlNzgxMGIz
MGNjNjdiZmEyNWRmMDhjZThiZDVjMDM0MzQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmNwcApAQCAtNzAs
NyArNzAsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhBcnJheUJ1ZmZlcjo6Y29uc3RydWN0
b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcgogICAgIGlmIChsZW5ndGggPj0gMCkK
ICAgICAgICAgYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obGVuZ3RoKSwgMSk7CiAgICAgaWYgKCFidWZmZXIuZ2V0KCkpCi0gICAgICAgIHJldHVybiB0
aHJvd0Vycm9yKCJBcnJheUJ1ZmZlciBzaXplIGlzIG5vdCBhIHNtYWxsIGVub3VnaCBwb3NpdGl2
ZSBpbnRlZ2VyLiIsIFY4UHJveHk6OlJhbmdlRXJyb3IpOworICAgICAgICByZXR1cm4gVjhQcm94
eTo6dGhyb3dFcnJvcihWOFByb3h5OjpSYW5nZUVycm9yLCAiQXJyYXlCdWZmZXIgc2l6ZSBpcyBu
b3QgYSBzbWFsbCBlbm91Z2ggcG9zaXRpdmUgaW50ZWdlci4iKTsKICAgICAvLyBUcmFuc2Zvcm0g
dGhlIGhvbGRlciBpbnRvIGEgd3JhcHBlciBvYmplY3QgZm9yIHRoZSBhcnJheS4KICAgICBWOERP
TVdyYXBwZXI6OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIoKSwgJmluZm8sIGJ1ZmZlci5nZXQo
KSk7CiAgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoYnVmZmVyLnJl
bGVhc2UoKSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhhcmdzLkhvbGRlcigpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1
ZmZlclZpZXdDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFy
cmF5QnVmZmVyVmlld0N1c3RvbS5oCmluZGV4IGEwZmM1YWVkNTJlNDFmNGFmODE2MzRhYTgxMWUy
MDMzMzQwZDllMDcuLjY3NTM2ZGU2MjE1NDE1NzBmMjYwODg3YjI0ZjUzZGVmOTAwMTg5YmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVy
Vmlld0N1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFy
cmF5QnVmZmVyVmlld0N1c3RvbS5oCkBAIC03Niw3ICs3Niw3IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBjb25zdHJ1Y3RXZWJHTEFycmF5V2l0aEFycmF5QnVmZmVyQXJndW1lbnQoY29uc3Qgdjg6
OkFyZ3VtCiAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiQ291bGQgbm90IGNvbnZlcnQg
YXJndW1lbnQgMiB0byBhIG51bWJlciIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICgoYnVm
LT5ieXRlTGVuZ3RoKCkgLSBvZmZzZXQpICUgc2l6ZW9mKEVsZW1lbnRUeXBlKSkKLSAgICAgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKCJBcnJheUJ1ZmZlciBsZW5ndGggbWludXMgdGhlIGJ5dGVP
ZmZzZXQgaXMgbm90IGEgbXVsdGlwbGUgb2YgdGhlIGVsZW1lbnQgc2l6ZS4iLCBWOFByb3h5OjpS
YW5nZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBWOFByb3h5Ojp0aHJvd0Vycm9yKFY4UHJv
eHk6OlJhbmdlRXJyb3IsICJBcnJheUJ1ZmZlciBsZW5ndGggbWludXMgdGhlIGJ5dGVPZmZzZXQg
aXMgbm90IGEgbXVsdGlwbGUgb2YgdGhlIGVsZW1lbnQgc2l6ZS4iKTsKICAgICAgICAgbGVuZ3Ro
ID0gKGJ1Zi0+Ynl0ZUxlbmd0aCgpIC0gb2Zmc2V0KSAvIHNpemVvZihFbGVtZW50VHlwZSk7CiAg
ICAgfQogICAgIFJlZlB0cjxBcnJheUNsYXNzPiBhcnJheSA9IEFycmF5Q2xhc3M6OmNyZWF0ZShi
dWYsIG9mZnNldCwgbGVuZ3RoKTsKQEAgLTE2OSw3ICsxNjksNyBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gY29uc3RydWN0V2ViR0xBcnJheShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBXcmFw
cGVyVHlwZQogICAgIGlmIChkb0luc3RhbnRpYXRpb24pCiAgICAgICAgIGFycmF5ID0gQXJyYXlD
bGFzczo6Y3JlYXRlKGxlbik7CiAgICAgaWYgKCFhcnJheS5nZXQoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93RXJyb3IoIkFycmF5QnVmZmVyVmlldyBzaXplIGlzIG5vdCBhIHNtYWxsIGVub3VnaCBw
b3NpdGl2ZSBpbnRlZ2VyLiIsIFY4UHJveHk6OlJhbmdlRXJyb3IpOworICAgICAgICByZXR1cm4g
VjhQcm94eTo6dGhyb3dFcnJvcihWOFByb3h5OjpSYW5nZUVycm9yLCAiQXJyYXlCdWZmZXJWaWV3
IHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIik7CiAKIAogICAg
IC8vIFRyYW5zZm9ybSB0aGUgaG9sZGVyIGludG8gYSB3cmFwcGVyIG9iamVjdCBmb3IgdGhlIGFy
cmF5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVk
aW9Db250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggZWM2MzM4ZDQyYTI5ZWFkOGMyNTFhYTQ1MmIw
MTg4Nzk2MmFiNzVkZC4uZGM1MzJmN2E0NjQwNTZiOWNiYzk4YTRhYTBkZGY2YjZjYmYwOTVjZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250
ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhB
dWRpb0NvbnRleHRDdXN0b20uY3BwCkBAIC01MSwxMSArNTEsMTEgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4QXVkaW9Db250ZXh0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGEKIAogICAgIEZyYW1lKiBmcmFtZSA9IFY4UHJveHk6OnJldHJpZXZlRnJhbWVGb3JD
dXJyZW50Q29udGV4dCgpOwogICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiB0aHJvd0Vy
cm9yKCJBdWRpb0NvbnRleHQgY29uc3RydWN0b3IgYXNzb2NpYXRlZCBmcmFtZSBpcyB1bmF2YWls
YWJsZSIsIFY4UHJveHk6OlJlZmVyZW5jZUVycm9yKTsKKyAgICAgICAgcmV0dXJuIFY4UHJveHk6
OnRocm93RXJyb3IoVjhQcm94eTo6UmVmZXJlbmNlRXJyb3IsICJBdWRpb0NvbnRleHQgY29uc3Ry
dWN0b3IgYXNzb2NpYXRlZCBmcmFtZSBpcyB1bmF2YWlsYWJsZSIpOwogCiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKLSAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoIkF1ZGlvQ29udGV4dCBjb25zdHJ1Y3RvciBhc3NvY2lhdGVk
IGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlIiwgVjhQcm94eTo6UmVmZXJlbmNlRXJyb3IpOworICAg
ICAgICByZXR1cm4gVjhQcm94eTo6dGhyb3dFcnJvcihWOFByb3h5OjpSZWZlcmVuY2VFcnJvciwg
IkF1ZGlvQ29udGV4dCBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxh
YmxlIik7CiAKICAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBhdWRpb0NvbnRleHQ7CiAgICAgCkBA
IC02Niw3ICs2Niw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEF1ZGlvQ29udGV4dDo6Y29u
c3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhCiAgICAgICAgIGlmIChlYykK
ICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVjKTsKICAgICAgICAgaWYgKCFhdWRpb0Nv
bnRleHQuZ2V0KCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiYXVkaW8gcmVzb3Vy
Y2VzIHVuYXZhaWxhYmxlIGZvciBBdWRpb0NvbnRleHQgY29uc3RydWN0aW9uIiwgVjhQcm94eTo6
U3ludGF4RXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIFY4UHJveHk6OnRocm93RXJyb3IoVjhQ
cm94eTo6U3ludGF4RXJyb3IsICJhdWRpbyByZXNvdXJjZXMgdW5hdmFpbGFibGUgZm9yIEF1ZGlv
Q29udGV4dCBjb25zdHJ1Y3Rpb24iKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBDb25zdHJ1
Y3RvciBmb3Igb2ZmbGluZSAocmVuZGVyLXRhcmdldCkgQXVkaW9Db250ZXh0IHdoaWNoIHJlbmRl
cnMgaW50byBhbiBBdWRpb0J1ZmZlci4KICAgICAgICAgLy8gbmV3IEF1ZGlvQ29udGV4dChpbiB1
bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIGluIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZG
cmFtZXMsIGluIGZsb2F0IHNhbXBsZVJhdGUpOwpAQCAtNzcsMTUgKzc3LDE1IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOEF1ZGlvQ29udGV4dDo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhCiAKICAgICAgICAgaW50MzJfdCBudW1iZXJPZkNoYW5uZWxzID0gdG9J
bnQzMihhcmdzWzBdLCBvayk7CiAgICAgICAgIGlmICghb2sgfHwgbnVtYmVyT2ZDaGFubmVscyA8
PSAwIHx8IG51bWJlck9mQ2hhbm5lbHMgPiAxMCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vy
cm9yKCJJbnZhbGlkIG51bWJlciBvZiBjaGFubmVscyIsIFY4UHJveHk6OlN5bnRheEVycm9yKTsK
KyAgICAgICAgICAgIHJldHVybiBWOFByb3h5Ojp0aHJvd0Vycm9yKFY4UHJveHk6OlN5bnRheEVy
cm9yLCAiSW52YWxpZCBudW1iZXIgb2YgY2hhbm5lbHMiKTsKIAogICAgICAgICBpbnQzMl90IG51
bWJlck9mRnJhbWVzID0gdG9JbnQzMihhcmdzWzFdLCBvayk7CiAgICAgICAgIGlmICghb2sgfHwg
bnVtYmVyT2ZGcmFtZXMgPD0gMCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJJbnZh
bGlkIG51bWJlciBvZiBmcmFtZXMiLCBWOFByb3h5OjpTeW50YXhFcnJvcik7CisgICAgICAgICAg
ICByZXR1cm4gVjhQcm94eTo6dGhyb3dFcnJvcihWOFByb3h5OjpTeW50YXhFcnJvciwgIkludmFs
aWQgbnVtYmVyIG9mIGZyYW1lcyIpOwogCiAgICAgICAgIGZsb2F0IHNhbXBsZVJhdGUgPSB0b0Zs
b2F0KGFyZ3NbMl0pOwogICAgICAgICBpZiAoc2FtcGxlUmF0ZSA8PSAwKQotICAgICAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoIkludmFsaWQgc2FtcGxlIHJhdGUiLCBWOFByb3h5OjpTeW50YXhF
cnJvcik7CisgICAgICAgICAgICByZXR1cm4gVjhQcm94eTo6dGhyb3dFcnJvcihWOFByb3h5OjpT
eW50YXhFcnJvciwgIkludmFsaWQgc2FtcGxlIHJhdGUiKTsKIAogICAgICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICAgICAgYXVkaW9Db250ZXh0ID0gQXVkaW9Db250ZXh0OjpjcmVhdGVP
ZmZsaW5lQ29udGV4dChkb2N1bWVudCwgbnVtYmVyT2ZDaGFubmVscywgbnVtYmVyT2ZGcmFtZXMs
IHNhbXBsZVJhdGUsIGVjKTsKQEAgLTk0LDcgKzk0LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4QXVkaW9Db250ZXh0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGEKICAgICB9CiAKICAgICBpZiAoIWF1ZGlvQ29udGV4dC5nZXQoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93RXJyb3IoIkVycm9yIGNyZWF0aW5nIEF1ZGlvQ29udGV4dCIsIFY4UHJveHk6OlN5bnRh
eEVycm9yKTsKKyAgICAgICAgcmV0dXJuIFY4UHJveHk6OnRocm93RXJyb3IoVjhQcm94eTo6U3lu
dGF4RXJyb3IsICJFcnJvciBjcmVhdGluZyBBdWRpb0NvbnRleHQiKTsKICAgICAKICAgICAvLyBU
cmFuc2Zvcm0gdGhlIGhvbGRlciBpbnRvIGEgd3JhcHBlciBvYmplY3QgZm9yIHRoZSBhdWRpbyBj
b250ZXh0LgogICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihhcmdzLkhvbGRlcigpLCAm
aW5mbywgYXVkaW9Db250ZXh0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEJsb2JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHAKaW5kZXggNTBiNDg3M2I3OWE2NGY0NzZiZjZm
MTU1ZWYxOTY1MjJjYWEzNmRjYi4uMGM0ZDZkODNjMzNiMzU3ZDIzNDk1YmI0ODVkMzY5OTg3YzRm
YWFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Qmxv
YkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Qmxv
YkN1c3RvbS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Qmxv
Yjo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIC8v
IEdldCB0aGUgc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0LgogICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFj
b250ZXh0KQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiQmxvYiBjb25zdHJ1Y3RvciBhc3Nv
Y2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlIiwgVjhQcm94eTo6UmVmZXJlbmNlRXJyb3Ip
OworICAgICAgICByZXR1cm4gVjhQcm94eTo6dGhyb3dFcnJvcihWOFByb3h5OjpSZWZlcmVuY2VF
cnJvciwgIkJsb2IgY29uc3RydWN0b3IgYXNzb2NpYXRlZCBkb2N1bWVudCBpcyB1bmF2YWlsYWJs
ZSIpOwogCiAgICAgaWYgKCFhcmdzLkxlbmd0aCgpKSB7CiAgICAgICAgIFJlZlB0cjxCbG9iPiBi
bG9iID0gQmxvYjo6Y3JlYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcAppbmRleCBiMzM2NjEwNjQ0ZWQwZDcx
Zjk0ZTQ5ODY3MTM2N2RlOWJlZmE4OWVhLi5jNzdkMmI2YTM1YzM4MWEzNWY3YjZjYWVhZjQ2Yzgw
YTA5YTI0YjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhDbGlwYm9hcmRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOENsaXBib2FyZEN1c3RvbS5jcHAKQEAgLTczLDcgKzczLDcgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4Q2xpcGJvYXJkOjpjbGVhckRhdGFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogICAgIH0KIAogICAgIGlmIChhcmdzLkxlbmd0aCgpICE9IDEpCi0gICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKCJjbGVhckRhdGE6IEludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50
cyIsIFY4UHJveHk6OlN5bnRheEVycm9yKTsKKyAgICAgICAgcmV0dXJuIFY4UHJveHk6OnRocm93
RXJyb3IoVjhQcm94eTo6U3ludGF4RXJyb3IsICJjbGVhckRhdGE6IEludmFsaWQgbnVtYmVyIG9m
IGFyZ3VtZW50cyIpOwogCiAgICAgU3RyaW5nIHR5cGUgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1sw
XSk7CiAgICAgY2xpcGJvYXJkLT5jbGVhckRhdGEodHlwZSk7CkBAIC04OSw3ICs4OSw3IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOENsaXBib2FyZDo6c2V0RHJhZ0ltYWdlQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJnCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAK
ICAgICBpZiAoYXJncy5MZW5ndGgoKSAhPSAzKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigi
c2V0RHJhZ0ltYWdlOiBJbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMiLCBWOFByb3h5OjpTeW50
YXhFcnJvcik7CisgICAgICAgIHJldHVybiBWOFByb3h5Ojp0aHJvd0Vycm9yKFY4UHJveHk6OlN5
bnRheEVycm9yLCAic2V0RHJhZ0ltYWdlOiBJbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMiKTsK
IAogICAgIGludCB4ID0gdG9JbnQzMihhcmdzWzFdKTsKICAgICBpbnQgeSA9IHRvSW50MzIoYXJn
c1syXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhE
T01Gb3JtRGF0YUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhET01Gb3JtRGF0YUN1c3RvbS5jcHAKaW5kZXggYThkMDc3ZGM1ZDU5N2IzNDg2YzMyZTkzNzli
YjZhNTRmOGVmOGM3YS4uY2Q2ZTI3ZWEyYmNhZDk0YzU5N2MzM2E5OTRjMDkzZWM1NWZlOGE5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURh
dGFDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERP
TUZvcm1EYXRhQ3VzdG9tLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhET01Gb3JtRGF0YTo6YXBwZW5kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKICAgICBJTkNfU1RBVFMoIkRPTS5Gb3JtRGF0YS5hcHBlbmQoKSIpOwogICAgIAogICAgIGlm
IChhcmdzLkxlbmd0aCgpIDwgMikKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIk5vdCBlbm91
Z2ggYXJndW1lbnRzIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOworICAgICAgICByZXR1cm4gVjhQ
cm94eTo6dGhyb3dFcnJvcihWOFByb3h5OjpTeW50YXhFcnJvciwgIk5vdCBlbm91Z2ggYXJndW1l
bnRzIik7CiAKICAgICBET01Gb3JtRGF0YSogZG9tRm9ybURhdGEgPSBWOERPTUZvcm1EYXRhOjp0
b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggOGM3M2EzOGU3NGZkMDFjYmVlMjc2MGI5MDViNGYzODM1YzIxY2JhNS4uNGUz
M2EyYWYzMTk2OGI0ZWE5Mzc0MDQzYzZlOTY2ZTJjNzFjZmY5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VF
bGVtZW50Q29uc3RydWN0b3IuY3BwCkBAIC01OCwxMSArNTgsMTEgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2OEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0
IHY4OjpBcmcKIAogICAgIEZyYW1lKiBmcmFtZSA9IFY4UHJveHk6OnJldHJpZXZlRnJhbWVGb3JD
dXJyZW50Q29udGV4dCgpOwogICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiB0aHJvd0Vy
cm9yKCJJbWFnZSBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGZyYW1lIGlzIHVuYXZhaWxhYmxlIiwg
VjhQcm94eTo6UmVmZXJlbmNlRXJyb3IpOworICAgICAgICByZXR1cm4gVjhQcm94eTo6dGhyb3dF
cnJvcihWOFByb3h5OjpSZWZlcmVuY2VFcnJvciwgIkltYWdlIGNvbnN0cnVjdG9yIGFzc29jaWF0
ZWQgZnJhbWUgaXMgdW5hdmFpbGFibGUiKTsKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZy
YW1lLT5kb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKCJJbWFnZSBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxh
YmxlIiwgVjhQcm94eTo6UmVmZXJlbmNlRXJyb3IpOworICAgICAgICByZXR1cm4gVjhQcm94eTo6
dGhyb3dFcnJvcihWOFByb3h5OjpSZWZlcmVuY2VFcnJvciwgIkltYWdlIGNvbnN0cnVjdG9yIGFz
c29jaWF0ZWQgZG9jdW1lbnQgaXMgdW5hdmFpbGFibGUiKTsKIAogICAgIC8vIE1ha2Ugc3VyZSB0
aGUgZG9jdW1lbnQgaXMgYWRkZWQgdG8gdGhlIERPTSBOb2RlIG1hcC4gT3RoZXJ3aXNlLCB0aGUg
SFRNTEltYWdlRWxlbWVudCBpbnN0YW5jZQogICAgIC8vIG1heSBlbmQgdXAgYmVpbmcgdGhlIG9u
bHkgbm9kZSBpbiB0aGUgbWFwIGFuZCBnZXQgZ2FyYmFnZS1jY29sbGVjdGVkIHByZW1hdHVyZWx5
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0
TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhXZWJLaXRNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcAppbmRleCBlNzViOTQ0NzZi
MjY1ZGIyZWViYjllMTcxNDA1MDc4YTUyMzliODdhLi4zOGIxMGNkZmRhM2M3ODUwZmMyNjQ3ZTFk
MGRmMzg5NjY4YTlhNTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhXZWJLaXRNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNw
cApAQCAtNjksNyArNjksNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJLaXRNdXRhdGlv
bk9ic2VydmVyOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcgogCiAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
ICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJXZWJLaXRNdXRh
dGlvbk9ic2VydmVyIGNvbnN0cnVjdG9yJ3MgYXNzb2NpYXRlZCBmcmFtZSB1bmF2YWlsYWJsZSIs
IFY4UHJveHk6OlJlZmVyZW5jZUVycm9yKTsKKyAgICAgICAgcmV0dXJuIFY4UHJveHk6OnRocm93
RXJyb3IoVjhQcm94eTo6UmVmZXJlbmNlRXJyb3IsICJXZWJLaXRNdXRhdGlvbk9ic2VydmVyIGNv
bnN0cnVjdG9yJ3MgYXNzb2NpYXRlZCBmcmFtZSB1bmF2YWlsYWJsZSIpOwogCiAgICAgUmVmUHRy
PE11dGF0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrID0gVjhNdXRhdGlvbkNhbGxiYWNrOjpjcmVhdGUo
YXJnLCBjb250ZXh0KTsKICAgICBSZWZQdHI8V2ViS2l0TXV0YXRpb25PYnNlcnZlcj4gb2JzZXJ2
ZXIgPSBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpjcmVhdGUoY2FsbGJhY2sucmVsZWFzZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tl
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2Nr
ZXRDdXN0b20uY3BwCmluZGV4IGFlMTJiNmZlZThhMWY1NmI3OTVjYWQyMzVhMmFmNzI0YTg0OTJi
ODkuLmE3YzE1MTZkOWRlZWViZDc4YzZjOGU3MWQzZDFjMTNiMzM5ODBjNmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9t
LmNwcApAQCAtNjksMTIgKzY5LDEyIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYlNvY2tl
dDo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzCiAgICAgaWYg
KHRyeUNhdGNoLkhhc0NhdWdodCgpKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih0cnlDYXRj
aC5FeGNlcHRpb24oKSk7CiAgICAgaWYgKHVybHN0cmluZy5Jc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKCJFbXB0eSBVUkwiLCBWOFByb3h5OjpTeW50YXhFcnJvcik7CisgICAg
ICAgIHJldHVybiBWOFByb3h5Ojp0aHJvd0Vycm9yKFY4UHJveHk6OlN5bnRheEVycm9yLCAiRW1w
dHkgVVJMIik7CiAKICAgICAvLyBHZXQgdGhlIHNjcmlwdCBleGVjdXRpb24gY29udGV4dC4KICAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwogICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIldl
YlNvY2tldCBjb25zdHJ1Y3RvcidzIGFzc29jaWF0ZWQgZnJhbWUgaXMgbm90IGF2YWlsYWJsZSIs
IFY4UHJveHk6OlJlZmVyZW5jZUVycm9yKTsKKyAgICAgICAgcmV0dXJuIFY4UHJveHk6OnRocm93
RXJyb3IoVjhQcm94eTo6UmVmZXJlbmNlRXJyb3IsICJXZWJTb2NrZXQgY29uc3RydWN0b3IncyBh
c3NvY2lhdGVkIGZyYW1lIGlzIG5vdCBhdmFpbGFibGUiKTsKIAogICAgIGNvbnN0IEtVUkwmIHVy
bCA9IGNvbnRleHQtPmNvbXBsZXRlVVJMKHRvV2ViQ29yZVN0cmluZyh1cmxzdHJpbmcpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJl
cXVlc3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcAppbmRleCA3MWQ3ZGQyODY1NTJjNGJlOTU5
MjMzYzMxZDEyNzhlMTcwYmUyMzBkLi42NDFhNjg5YTA0NTVjZTgzN2Y2NjhhYjM4Y2VmOTAwYWUx
OTBjYmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhY
TUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcApAQCAtNTcsNyArNTcs
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVzdDo6Y29uc3RydWN0b3JD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgogICAgIC8vIEFsbG9jYXRlIGEgWE1MSHR0cFJl
cXVlc3Qgb2JqZWN0IGFzIGl0cyBpbnRlcm5hbCBmaWVsZC4KICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICgh
Y29udGV4dCkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlhNTEh0dHBSZXF1ZXN0IGNvbnN0
cnVjdG9yJ3MgYXNzb2NpYXRlZCBjb250ZXh0IGlzIG5vdCBhdmFpbGFibGUiLCBWOFByb3h5OjpS
ZWZlcmVuY2VFcnJvcik7CisgICAgICAgIHJldHVybiBWOFByb3h5Ojp0aHJvd0Vycm9yKFY4UHJv
eHk6OlJlZmVyZW5jZUVycm9yLCAiWE1MSHR0cFJlcXVlc3QgY29uc3RydWN0b3IncyBhc3NvY2lh
dGVkIGNvbnRleHQgaXMgbm90IGF2YWlsYWJsZSIpOwogCiAgICAgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBzZWN1cml0eU9yaWdpbjsKICAgICBpZiAoVjhJc29sYXRlZENvbnRleHQqIGlzb2xhdGVk
Q29udGV4dCA9IFY4SXNvbGF0ZWRDb250ZXh0OjpnZXRFbnRlcmVkKCkpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>