<?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>92556</bug_id>
          
          <creation_ts>2012-07-27 15:20:06 -0700</creation_ts>
          <short_desc>TypedArray set method is slow when called with another typed array</short_desc>
          <delta_ts>2014-04-24 16:45:53 -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>JavaScriptCore</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="arno.">a.renevier</reporter>
          <assigned_to name="arno.">a.renevier</assigned_to>
          <cc>kbr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>681145</commentid>
    <comment_count>0</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-07-27 15:20:06 -0700</bug_when>
    <thetext>Hi,
in #90838, we made TypedArray constructor much faster by casting the argument to a typed array when possible, and using typed array methods instead of going through the javascript path.
We can probably introduce the same improvement for the set method (more specifically, in the setWebGLArrayHelper function).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682224</commentid>
    <comment_count>1</comment_count>
      <attachid>155327</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-07-30 11:34:34 -0700</bug_when>
    <thetext>Created attachment 155327
patch proposal

with the patch, times for performance test drops from 2600ms to 250ms on my computer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683316</commentid>
    <comment_count>2</comment_count>
      <attachid>155327</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-07-31 11:43:39 -0700</bug_when>
    <thetext>Comment on attachment 155327
patch proposal

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

Good performance improvement but needs more cleanup.

&gt; Source/WebCore/bindings/js/JSArrayBufferViewHelper.h:63
&gt; +        || offset + length &lt; offset) {

Please try to figure out a way to avoid duplicating these security related checks. For example, if you pushed the majority of this code into the C++ code instead of doing it in the bindings, you could define an enum return code and conditionally call setDOMException based on that return code.

&gt; Source/WebCore/bindings/js/JSArrayBufferViewHelper.h:109
&gt; +        break;

Refactor this so the code isn&apos;t duplicated between here and constructArrayBufferViewWithTypedArrayArgument below. Since this block doesn&apos;t refer to any JSC concepts, you could even put it in the C++ code so it could be shared between the JSC and V8 bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683520</commentid>
    <comment_count>3</comment_count>
      <attachid>155643</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-07-31 15:10:45 -0700</bug_when>
    <thetext>Created attachment 155643
updated patch

This patch factorize security check and factorize also buffer copy between constructArrayBufferViewWithTypedArrayArgument and setWebGLArrayWithTypedArrayArgument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683521</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-31 15:13:15 -0700</bug_when>
    <thetext>Attachment 155643 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;PerformanceTests/Bindings/typed-array-set-...&quot; exit_code: 1
Source/WebCore/bindings/js/JSArrayBufferViewHelper.h:45:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/WebCore/bindings/js/JSArrayBufferViewHelper.h:47:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/bindings/js/JSArrayBufferViewHelper.h:52:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/WebCore/bindings/js/JSArrayBufferViewHelper.h:58:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/WebCore/bindings/js/JSArrayBufferViewHelper.h:120:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 5 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>683524</commentid>
    <comment_count>5</comment_count>
      <attachid>155645</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-07-31 15:20:09 -0700</bug_when>
    <thetext>Created attachment 155645
updated patch

Oups. I didn&apos;t commit --amend before submitting</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684594</commentid>
    <comment_count>6</comment_count>
      <attachid>155645</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-08-01 14:36:30 -0700</bug_when>
    <thetext>Comment on attachment 155645
updated patch

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

Thanks, this looks better. One minor naming convention issue I&apos;d appreciate if you&apos;d clean up before committing. r=me

&gt; Source/WTF/wtf/TypedArrayBase.h:76
&gt; +    bool inbound(unsigned offset, unsigned pos) const

Please name this some sort of verb like &quot;checkInboundData&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684766</commentid>
    <comment_count>7</comment_count>
      <attachid>155922</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-08-01 16:45:48 -0700</bug_when>
    <thetext>Created attachment 155922
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684856</commentid>
    <comment_count>8</comment_count>
      <attachid>155922</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-08-01 18:33:18 -0700</bug_when>
    <thetext>Comment on attachment 155922
updated patch

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

You don&apos;t need my re-review, so clearing the r? bit. If you fix up the ChangeLog, any WebKit committer can set the cq+ bit on a revised patch.

&gt; Source/WTF/ChangeLog:12
&gt; +        (WTF::TypedArrayBase::inbound):

Rename it here.

&gt; Source/WebCore/ChangeLog:3
&gt; +        TypedArray set speedup

Did you mean to add this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685585</commentid>
    <comment_count>9</comment_count>
      <attachid>156125</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-08-02 11:00:57 -0700</bug_when>
    <thetext>Created attachment 156125
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685601</commentid>
    <comment_count>10</comment_count>
      <attachid>156125</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-08-02 11:17:09 -0700</bug_when>
    <thetext>Comment on attachment 156125
updated patch

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685661</commentid>
    <comment_count>11</comment_count>
      <attachid>156125</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-02 12:20:50 -0700</bug_when>
    <thetext>Comment on attachment 156125
updated patch

Clearing flags on attachment: 156125

Committed r124483: &lt;http://trac.webkit.org/changeset/124483&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685662</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-02 12:20:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003871</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-24 16:45:53 -0700</bug_when>
    <thetext>Moving all JavaScriptGlue bugs to JavaScriptCore. The JavaScriptGlue framework itself is long gone. And most of the more recent bugs put in this component were put there by people who thought this was for some other aspect of “JavaScript glue” and have nothing to do with the actual original reason for the existence of this component, which was an OS-X-only framework named JavaScriptGlue.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155327</attachid>
            <date>2012-07-30 11:34:34 -0700</date>
            <delta_ts>2012-07-31 15:10:43 -0700</delta_ts>
            <desc>patch proposal</desc>
            <filename>bug-92556-20120730113417.patch</filename>
            <type>text/plain</type>
            <size>14253</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzOTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGRhZjRkODEyNjYwZTRh
ZTY3OWNmMmI1YzA1NTFkM2Q2NmJkMmU2Mi4uZTczN2U4NWM1N2FmZjhiNWZjODc0ZmI3NWFjMTdi
ZWFmNTJlODQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTA3LTMwICBBcm5h
dWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgVHlw
ZWRBcnJheSBzZXQgbWV0aG9kIGlzIHNsb3cgd2hlbiBjYWxsZWQgd2l0aCBhbm90aGVyIHR5cGVk
IGFycmF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MjU1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdo
ZW4gc2V0dGluZyBtdWx0aXBsZXMgdmFsdWVzIHRvIGEgdHlwZWQgYXJyYXkgZnJvbSBhbiBhcnJh
eSBsaWtlCisgICAgICAgIGVsZW1lbnQsIHRyeSB0byBkZXRlcm1pbmUgaWYgdGhlIGFyZ3VtZW50
IGlzIGEgdHlwZWQgYXJyYXkuIElmIHNvLAorICAgICAgICBjYXN0IHRoZSBhcmd1bWVudCB0byBh
IHR5cGVkIGFycmF5LCBhbmQgcmVhZCBlYWNoIGVsZW1lbnQgd2l0aCAuaXRlbSgpCisgICAgICAg
IG1ldGhvZC4gVGhhdCBhdm9pZCByZWFkaW5nIHRoZSB2YWx1ZSBhcyBhIEpTVmFsdWUsIGFuZCBz
cGVlZHVwcyBzZXQKKyAgICAgICAgbWV0aG9kIGJ5IGFwcHJveGltYXRpdmVseSAxMHguCisKKyAg
ICAgICAgSW50cm9kdWNlIHNldFdlYkdMQXJyYXlXaXRoVHlwZWRBcnJheUFyZ3VtZW50IHRlbXBs
YXRlIGZ1bmN0aW9uIHdoaWNoCisgICAgICAgIGNoZWNrcyBpZiBhcmd1bWVudCBpcyBhIHR5cGVk
IGFycmF5LiBJZiBzbywgaXQgc2V0cyB0aGUgZWxlbWVudHMgb2YKKyAgICAgICAgdGFyZ2V0IHR5
cGVkIGFycmF5IGFuZCByZXR1cm5zIHRydWUuIE90aGVyd2lzZSwgaXQgcmV0dXJucyBmYWxzZS4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFdlYkdMQXJyYXlXaXRoVHlwZWRB
cnJheUFyZ3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnNldFdlYkdMQXJyYXlIZWxwZXIpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRmxvYXQzMkFycmF5Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTRmxvYXQzMkFycmF5OjpzZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RmxvYXQ2NEFycmF5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRmxvYXQ2NEFycmF5
OjpzZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW50MTZBcnJheUN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0ludDE2QXJyYXk6OnNldCk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNJbnQzMkFycmF5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSW50MzJBcnJh
eTo6c2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ludDhBcnJheUN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0ludDhBcnJheTo6c2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1VpbnQxNkFycmF5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVWludDE2QXJy
YXk6OnNldCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1VpbnQzMkFycmF5OjpzZXQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTVWludDhBcnJheUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1VpbnQ4
QXJyYXk6OnNldCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNVaW50OENsYW1wZWRBcnJheUN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1VpbnQ4Q2xhbXBlZEFycmF5OjpzZXQpOgor
CiAyMDEyLTA3LTI3ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
ZmxleC13cmFwOiB3cmFwIG5vdCB3cmFwcGluZyBmb3IgJSBzaXplZCBpdGVtcyBpbiBjb2x1bW4g
ZmxvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZl
clZpZXdIZWxwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJW
aWV3SGVscGVyLmgKaW5kZXggNzZlNjExNjZjNTE5NWRhODg0YzU4N2E3YTEyOGUwMWM0MmM0ZDQ4
Ny4uYTliODc0NGZhODM4ZWI0ZWRmZjFmNTE2YzBjYTM1OGZlMWQwZWI2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyVmlld0hlbHBlci5oCkBA
IC00MSwyNCArNDEsODcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10ZW1wbGF0ZSA8Y2xh
c3MgVD4KLUpTQzo6SlNWYWx1ZSBzZXRXZWJHTEFycmF5SGVscGVyKEpTQzo6RXhlY1N0YXRlKiBl
eGVjLCBUKiBpbXBsLCBUKiAoKmNvbnZlcnNpb25GdW5jKShKU0M6OkpTVmFsdWUpKQordGVtcGxh
dGUgPGNsYXNzIEMsIHR5cGVuYW1lIFQ+Citib29sIHNldFdlYkdMQXJyYXlXaXRoVHlwZWRBcnJh
eUFyZ3VtZW50KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBDKiBpbXBsKQogewotICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPCAxKQotICAgICAgICByZXR1cm4gSlNDOjp0aHJvd1N5bnRheEVy
cm9yKGV4ZWMpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGFycmF5ID0gdG9BcnJheUJ1
ZmZlclZpZXcoZXhlYy0+YXJndW1lbnQoMCkpOworICAgIGlmICghYXJyYXkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIFQqIGFycmF5ID0gKCpjb252ZXJzaW9uRnVuYykoZXhlYy0+YXJn
dW1lbnQoMCkpOwotICAgIGlmIChhcnJheSkgewotICAgICAgICAvLyB2b2lkIHNldChpbiBXZWJH
TDxUPkFycmF5IGFycmF5LCBbT3B0aW9uYWxdIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKLSAg
ICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gMDsKLSAgICAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA9PSAyKQotICAgICAgICAgICAgb2Zmc2V0ID0gZXhlYy0+YXJndW1lbnQoMSkudG9JbnQz
MihleGVjKTsKLSAgICAgICAgaWYgKCFpbXBsLT5zZXQoYXJyYXksIG9mZnNldCkpCisgICAgQXJy
YXlCdWZmZXJWaWV3OjpWaWV3VHlwZSBhcnJheVR5cGUgPSBhcnJheS0+Z2V0VHlwZSgpOworICAg
IGlmIChhcnJheVR5cGUgPT0gQXJyYXlCdWZmZXJWaWV3OjpUeXBlRGF0YVZpZXcpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHVuc2lnbmVkIG9mZnNldCA9IDA7CisgICAgaWYgKGV4ZWMt
PmFyZ3VtZW50Q291bnQoKSA9PSAyKQorICAgICAgICBvZmZzZXQgPSBleGVjLT5hcmd1bWVudCgx
KS50b0ludDMyKGV4ZWMpOworCisgICAgdWludDMyX3QgbGVuZ3RoID0gYXNPYmplY3QoZXhlYy0+
YXJndW1lbnQoMCkpLT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsICJsZW5ndGgiKSku
dG9VSW50MzIoZXhlYyk7CisKKyAgICBpZiAob2Zmc2V0ID4gaW1wbC0+bGVuZ3RoKCkgCisgICAg
ICAgIHx8IG9mZnNldCArIGxlbmd0aCA+IGltcGwtPmxlbmd0aCgpIAorICAgICAgICB8fCBvZmZz
ZXQgKyBsZW5ndGggPCBvZmZzZXQpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIElO
REVYX1NJWkVfRVJSKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGlt
cGwtPmdldFR5cGUoKSA9PSBhcnJheVR5cGUpIHsKKyAgICAgICAgaWYgKCFpbXBsLT5zZXQoc3Rh
dGljX2Nhc3Q8Qyo+KGFycmF5LmdldCgpKSwgb2Zmc2V0KSkKICAgICAgICAgICAgIHNldERPTUV4
Y2VwdGlvbihleGVjLCBJTkRFWF9TSVpFX0VSUik7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KIAotICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOworICAgIHN3aXRjaCAoYXJy
YXlUeXBlKSB7CisgICAgY2FzZSBBcnJheUJ1ZmZlclZpZXc6OlR5cGVJbnQ4OgorICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgICAgICBpbXBsLT5z
ZXQoaSArIG9mZnNldCwgKFQpKHN0YXRpY19jYXN0PFR5cGVkQXJyYXlCYXNlPHNpZ25lZCBjaGFy
PiAqPihhcnJheS5nZXQoKSktPml0ZW0oaSkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBB
cnJheUJ1ZmZlclZpZXc6OlR5cGVVaW50ODoKKyAgICBjYXNlIEFycmF5QnVmZmVyVmlldzo6VHlw
ZVVpbnQ4Q2xhbXBlZDoKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKQorICAgICAgICAgICAgaW1wbC0+c2V0KGkgKyBvZmZzZXQsIChUKShzdGF0aWNfY2FzdDxU
eXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPiAqPihhcnJheS5nZXQoKSktPml0ZW0oaSkpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBcnJheUJ1ZmZlclZpZXc6OlR5cGVJbnQxNjoKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAg
aW1wbC0+c2V0KGkgKyBvZmZzZXQsIChUKShzdGF0aWNfY2FzdDxUeXBlZEFycmF5QmFzZTxzaWdu
ZWQgc2hvcnQ+ICo+KGFycmF5LmdldCgpKS0+aXRlbShpKSkpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEFycmF5QnVmZmVyVmlldzo6VHlwZVVpbnQxNjoKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgaW1wbC0+c2V0KGkgKyBvZmZz
ZXQsIChUKShzdGF0aWNfY2FzdDxUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBzaG9ydD4gKj4oYXJy
YXkuZ2V0KCkpLT5pdGVtKGkpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXJyYXlCdWZm
ZXJWaWV3OjpUeXBlSW50MzI6CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkKKyAgICAgICAgICAgIGltcGwtPnNldChpICsgb2Zmc2V0LCAoVCkoc3RhdGljX2Nh
c3Q8VHlwZWRBcnJheUJhc2U8aW50PiAqPihhcnJheS5nZXQoKSktPml0ZW0oaSkpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBBcnJheUJ1ZmZlclZpZXc6OlR5cGVVaW50MzI6CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgICAgIGltcGwt
PnNldChpICsgb2Zmc2V0LCAoVCkoc3RhdGljX2Nhc3Q8VHlwZWRBcnJheUJhc2U8dW5zaWduZWQg
aW50PiAqPihhcnJheS5nZXQoKSktPml0ZW0oaSkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBBcnJheUJ1ZmZlclZpZXc6OlR5cGVGbG9hdDMyOgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgICAgICBpbXBsLT5zZXQoaSArIG9mZnNldCwg
KFQpKHN0YXRpY19jYXN0PFR5cGVkQXJyYXlCYXNlPGZsb2F0PiAqPihhcnJheS5nZXQoKSktPml0
ZW0oaSkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBcnJheUJ1ZmZlclZpZXc6OlR5cGVG
bG9hdDY0OgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisg
ICAgICAgICAgICBpbXBsLT5zZXQoaSArIG9mZnNldCwgKFQpKHN0YXRpY19jYXN0PFR5cGVkQXJy
YXlCYXNlPGRvdWJsZT4gKj4oYXJyYXkuZ2V0KCkpLT5pdGVtKGkpKSk7CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIHJldHVybiB0cnVl
OworfQorCit0ZW1wbGF0ZTxjbGFzcyBDLCB0eXBlbmFtZSBUPgorSlNDOjpKU1ZhbHVlIHNldFdl
YkdMQXJyYXlIZWxwZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEMqIGltcGwpCit7CisgICAgaWYg
KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVybiBKU0M6OnRocm93U3lu
dGF4RXJyb3IoZXhlYyk7CisKKyAgICBpZiAoc2V0V2ViR0xBcnJheVdpdGhUeXBlZEFycmF5QXJn
dW1lbnQ8QywgVD4oZXhlYywgaW1wbCkpCisgICAgICAgIC8vIHZvaWQgc2V0KGluIFdlYkdMPD5B
cnJheSBhcnJheSwgW09wdGlvbmFsXSBpbiB1bnNpZ25lZCBsb25nIG9mZnNldCk7CisgICAgICAg
IHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7CisKICAgICBpZiAoZXhlYy0+YXJndW1lbnQoMCku
aXNPYmplY3QoKSkgewogICAgICAgICAvLyB2b2lkIHNldChpbiBzZXF1ZW5jZTxsb25nPiBhcnJh
eSwgW09wdGlvbmFsXSBpbiB1bnNpZ25lZCBsb25nIG9mZnNldCk7CiAgICAgICAgIEpTQzo6SlNP
YmplY3QqIGFycmF5ID0gSlNDOjphc09iamVjdChleGVjLT5hcmd1bWVudCgwKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Zsb2F0MzJBcnJheUN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Zsb2F0MzJBcnJheUN1c3RvbS5jcHAKaW5k
ZXggY2FkZTUyZTM4ZTdiMGU5ZWI1MWVmMmYwN2FiOGQ4NGUyZDRmM2YwOC4uZDhmNThjMjk0M2Rl
NmU4YTJmNzMyNzFmNzJmMmYzZTA3MWViMjA2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNGbG9hdDMyQXJyYXlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRmxvYXQzMkFycmF5Q3VzdG9tLmNwcApAQCAtNDUsNyArNDUsNyBAQCBK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRmxvYXQzMgogCiBKU0M6OkpTVmFsdWUgSlNGbG9hdDMyQXJyYXk6OnNl
dChKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBl
cihleGVjLCBpbXBsKCksIHRvRmxvYXQzMkFycmF5KTsKKyAgICByZXR1cm4gc2V0V2ViR0xBcnJh
eUhlbHBlcjxGbG9hdDMyQXJyYXksIGZsb2F0PihleGVjLCBpbXBsKCkpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTRmxvYXQzMkFycmF5Q29uc3RydWN0b3I6OmNvbnN0cnVj
dEpTRmxvYXQzMkFycmF5KEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRmxvYXQ2NEFycmF5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRmxvYXQ2NEFycmF5Q3VzdG9tLmNwcAppbmRleCAxNTYxOWUzMjUyZWFh
MmMyZTM3NGYxYWNjYjZkMTM5NmQ3MGIzYzkzLi5lNzY0MmEwNWVmNDMzZjdkNDA3N2JhYjAzM2U2
OTAwNTk5ODgxYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Zs
b2F0NjRBcnJheUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNG
bG9hdDY0QXJyYXlDdXN0b20uY3BwCkBAIC00NSw3ICs0NSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pT
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBG
bG9hdDY0CiAKIEpTQzo6SlNWYWx1ZSBKU0Zsb2F0NjRBcnJheTo6c2V0KEpTQzo6RXhlY1N0YXRl
KiBleGVjKQogewotICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyKGV4ZWMsIGltcGwoKSwg
dG9GbG9hdDY0QXJyYXkpOworICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyPEZsb2F0NjRB
cnJheSwgZG91YmxlPihleGVjLCBpbXBsKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTRmxvYXQ2NEFycmF5
KEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSW50MTZBcnJheUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lu
dDE2QXJyYXlDdXN0b20uY3BwCmluZGV4IGJjNzdhNmQyYjJmOWIwYjMxZTIwOTQzYTMyOTMzMWEw
YmM4ZWE4MDguLjAxYjM5MzliY2E0N2ZjN2YxZWIwNzgwNDc5MTkwNWQ5ZWI3YTc3YTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50MTZBcnJheUN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQxNkFycmF5Q3VzdG9tLmNwcApA
QCAtNDUsNyArNDUsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW50MTZBcgogCiBKU0M6OkpTVmFsdWUg
SlNJbnQxNkFycmF5OjpzZXQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIHNl
dFdlYkdMQXJyYXlIZWxwZXIoZXhlYywgaW1wbCgpLCB0b0ludDE2QXJyYXkpOworICAgIHJldHVy
biBzZXRXZWJHTEFycmF5SGVscGVyPEludDE2QXJyYXksIHNob3J0PihleGVjLCBpbXBsKCkpOwog
fQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTSW50MTZBcnJheUNvbnN0cnVjdG9y
Ojpjb25zdHJ1Y3RKU0ludDE2QXJyYXkoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQzMkFycmF5Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50MzJBcnJheUN1c3RvbS5jcHAKaW5kZXggZDg1Mjg3ZjQ0
MWM5MTJmNDU3N2E1MmFkNWEwYzI1NDJmYTNiYzE0Yi4uZWFhNmU1NzhiNGVkNmUzZjdiNjdlNzVk
MDE1YmMzZjc2ZDJjMTZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJbnQzMkFycmF5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0ludDMyQXJyYXlDdXN0b20uY3BwCkBAIC00NSw3ICs0NSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pT
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJ
bnQzMkFyCiAKIEpTQzo6SlNWYWx1ZSBKU0ludDMyQXJyYXk6OnNldChKU0M6OkV4ZWNTdGF0ZSog
ZXhlYykKIHsKLSAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcihleGVjLCBpbXBsKCksIHRv
SW50MzJBcnJheSk7CisgICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8SW50MzJBcnJheSwg
aW50PihleGVjLCBpbXBsKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpT
SW50MzJBcnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0ludDMyQXJyYXkoRXhlY1N0YXRlKiBl
eGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQ4QXJyYXlD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQ4QXJyYXlDdXN0b20u
Y3BwCmluZGV4IGI2ZTE1MDc2ZjlhOGRiY2E5YzQwOGRjMGZiMzhmODZlZmMxZTQ2ZDIuLjRmMDUz
ZTBlOTdlZjIwNmFkY2VhMjRiMTg1ZjY1OWVjOWUyMGE1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50OEFycmF5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0ludDhBcnJheUN1c3RvbS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAg
SlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEludDhBcnIKIAogSlNDOjpKU1ZhbHVlIEpTSW50OEFycmF5OjpzZXQo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXIo
ZXhlYywgaW1wbCgpLCB0b0ludDhBcnJheSk7CisgICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxw
ZXI8SW50OEFycmF5LCBzaWduZWQgY2hhcj4oZXhlYywgaW1wbCgpKTsKIH0KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0ludDhBcnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0lu
dDhBcnJheShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1VpbnQxNkFycmF5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVWludDE2QXJyYXlDdXN0b20uY3BwCmluZGV4IDQ3YjQ0MDJiYWU3MjFhYjRiMzhlMmEx
MDUyMzgzYzYyN2MxNmZmZjIuLmI5ZTUyYTJmM2UyNDk2N2Y3MDRmZThhOWIyN2JkYTUwOGQxMDJk
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDE2QXJyYXlD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDE2QXJyYXlD
dXN0b20uY3BwCkBAIC00NSw3ICs0NSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBVaW50MTZBCiAKIEpT
Qzo6SlNWYWx1ZSBKU1VpbnQxNkFycmF5OjpzZXQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0g
ICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXIoZXhlYywgaW1wbCgpLCB0b1VpbnQxNkFycmF5
KTsKKyAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcjxVaW50MTZBcnJheSwgdW5zaWduZWQg
c2hvcnQ+KGV4ZWMsIGltcGwoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SlNVaW50MTZBcnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1VpbnQxNkFycmF5KEV4ZWNTdGF0
ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDMy
QXJyYXlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50MzJBcnJh
eUN1c3RvbS5jcHAKaW5kZXggYWE4YjgyNjdmNWJmNDJiOWZlMjY3MGU3YzEzZjI2N2VjMTNhNjE0
Mi4uNzBlZjBiYTIwZjc0M2Y5M2NjYjVmYjRhOGU2MTE4YmM3NDFjYzMyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3RvbS5jcHAKQEAgLTQ1
LDcgKzQ1LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFVpbnQzMkEKIAogSlNDOjpKU1ZhbHVlIEpTVWlu
dDMyQXJyYXk6OnNldChKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gc2V0V2Vi
R0xBcnJheUhlbHBlcihleGVjLCBpbXBsKCksIHRvVWludDMyQXJyYXkpOworICAgIHJldHVybiBz
ZXRXZWJHTEFycmF5SGVscGVyPFVpbnQzMkFycmF5LCB1bnNpZ25lZCBpbnQ+KGV4ZWMsIGltcGwo
KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNVaW50MzJBcnJheUNvbnN0
cnVjdG9yOjpjb25zdHJ1Y3RKU1VpbnQzMkFycmF5KEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDhBcnJheUN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwCmluZGV4IDZh
NGZhMWRmNWNkZWYwMmE0YWRjNDYyZTMzOTFmODMzZTRjZjFjNTQuLmRiN2E0M2FiNDU0OWM1ODY0
YTMyMmI1Y2NlMWU2ZDNiYjc3ZmZkZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVWludDhBcnJheUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcApAQCAtNDUsNyArNDUsNyBAQCBKU0M6OkpTVmFs
dWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVWludDhBcgogCiBKU0M6OkpTVmFsdWUgSlNVaW50OEFycmF5OjpzZXQoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXIoZXhlYywgaW1w
bCgpLCB0b1VpbnQ4QXJyYXkpOworICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyPFVpbnQ4
QXJyYXksIHVuc2lnbmVkIGNoYXI+KGV4ZWMsIGltcGwoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSlNVaW50OEFycmF5Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVWludDhB
cnJheShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwCmluZGV4IDJkNWNhNzg1ZDViYTBj
MzVkZTUwMWM1YzEwODY4NGY5NmIyODUxM2UuLmM3OWJhYzBlZGJiMmVhNjhmZDVkMTQ3NDFkNDkw
YTk1NzIxNWEwNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWlu
dDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwCkBAIC00NSw3ICs0NSw3IEBAIEpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBVaW50OENsCiAKIEpTQzo6SlNWYWx1ZSBKU1VpbnQ4Q2xhbXBlZEFycmF5OjpzZXQo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXIo
ZXhlYywgaW1wbCgpLCB0b1VpbnQ4Q2xhbXBlZEFycmF5KTsKKyAgICByZXR1cm4gc2V0V2ViR0xB
cnJheUhlbHBlcjxVaW50OENsYW1wZWRBcnJheSwgdW5zaWduZWQgY2hhcj4oZXhlYywgaW1wbCgp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1VpbnQ4Q2xhbXBlZEFycmF5
Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVWludDhDbGFtcGVkQXJyYXkoRXhlY1N0YXRlKiBleGVj
KQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9CaW5kaW5ncy90eXBlZC1hcnJheS1zZXQt
ZnJvbS10eXBlZC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9CaW5kaW5ncy90eXBlZC1hcnJheS1z
ZXQtZnJvbS10eXBlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0ZmMyYzdlY2VmMmI1MjgwMjA0N2ZkYWI4
MTM3YTZhOTFhZjllMjYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0JpbmRp
bmdzL3R5cGVkLWFycmF5LXNldC1mcm9tLXR5cGVkLmh0bWwKQEAgLTAsMCArMSwxOCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcnVubmVyLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK3ZhciBsZW5ndGggPSAxMDAwMDAwMDsKK3ZhciBzb3Vy
Y2UgPSBuZXcgVWludDhBcnJheShsZW5ndGgpOworZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7
IGkrKykgeworICAgIHNvdXJjZVtpXSA9IGk7Cit9Cit2YXIgdGFyZ2V0ID0gbmV3IEZsb2F0NjRB
cnJheShsZW5ndGgpOworCitQZXJmVGVzdFJ1bm5lci5ydW4oZnVuY3Rpb24oKSB7CisgICAgdGFy
Z2V0LnNldChzb3VyY2UpOworfSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKwpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpp
bmRleCBjOGQxYzg4NDliMzVmZjRlMjJkNTc5Y2FkMDNkM2JiOTVhZDczMjhhLi5iZmY2OTE2ODM4
NzJmODZiMTYxOGVkNDZmMmYxYmM0NjNjOWJlOTBlIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDEyLTA3LTMwICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgVHlwZWRBcnJheSBzZXQgbWV0aG9kIGlzIHNsb3cgd2hlbiBj
YWxsZWQgd2l0aCBhbm90aGVyIHR5cGVkIGFycmF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjU1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogQmluZGluZ3MvdHlwZWQtYXJyYXktc2V0LWZyb20tdHlw
ZWQuaHRtbDogQWRkZWQuCisKIDIwMTItMDctMjcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgQWRkIG1vcmUgUnVzc2lhbiByZXBsYXkgcGVyZm9ybWFuY2UgdGVz
dHMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155643</attachid>
            <date>2012-07-31 15:10:45 -0700</date>
            <delta_ts>2012-07-31 15:20:07 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>bug-92556-20120731151025.patch</filename>
            <type>text/plain</type>
            <size>19115</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg0MmQ3MDE3MTI4NWM4ZmM3ZjRlZjNl
NjllNjJjMjRlYmQwMDU3OWQuLmU2YTZkZmJjZmE0NzJlMDRhMjEzNjQwZDYxYzM3MDNiZjc0YThh
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDctMzEgIEFybmF1ZCBSZW5ldmllciAgPGEu
cmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KKworICAgICAgICBUeXBlZEFycmF5IHNldCBtZXRo
b2QgaXMgc2xvdyB3aGVuIGNhbGxlZCB3aXRoIGFub3RoZXIgdHlwZWQgYXJyYXkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNTU2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFuIGluYm91bmQgZnVu
Y3Rpb24gdG8gVHlwZWRBcnJheUJhc2UgdG8gY2hlY2sgaWYgYSBwb3NpdGlvbiB3aWxsCisgICAg
ICAgIGJlIG5vdCBiZSBvdXQgb2YgYm91bmQgb3Igb3ZlcmZsb3cgZnJvbSB0aGUgdHlwZWQgYXJy
YXkuCisKKyAgICAgICAgKiB3dGYvVHlwZWRBcnJheUJhc2UuaDoKKyAgICAgICAgKFdURjo6VHlw
ZWRBcnJheUJhc2U6OmluYm91bmQpOgorICAgICAgICAoVHlwZWRBcnJheUJhc2UpOgorCiAyMDEy
LTA3LTMxICBUaGlhZ28gTWFyY29zIFAuIFNhbnRvcyAgPHRoaWFnby5zYW50b3NAaW50ZWwuY29t
PgogCiAgICAgICAgIEFkZCBhIG1lY2hhbmlzbSB0byBkdW1wIHRoZSBzdGFjayB0cmFjZSBpbiBj
YXNlIG9mIGEgY3Jhc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0N2Q2OTc1Y2U2MzJiOTVkNGVjZGVlYmYyNmI2
ZmQ2ZmY1MTczZjMyLi44OTNkMWRjMWMxZTE0NjU5MzkzMTUyYWYzY2Y4ZDVhMWU4ZDQ1MTJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTItMDctMzEgIEFybmF1ZCBSZW5ldmllciAg
PGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KKworICAgICAgICBUeXBlZEFycmF5IHNldCBz
cGVlZHVwCisKKyAgICAgICAgVHlwZWRBcnJheSBzZXQgbWV0aG9kIGlzIHNsb3cgd2hlbiBjYWxs
ZWQgd2l0aCBhbm90aGVyIHR5cGVkIGFycmF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MjU1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdoZW4gc2V0dGluZyBtdWx0aXBsZXMgdmFsdWVzIHRvIGEgdHlw
ZWQgYXJyYXkgZnJvbSBhbiBhcnJheSBsaWtlCisgICAgICAgIGVsZW1lbnQsIHRyeSB0byBkZXRl
cm1pbmUgaWYgdGhlIGFyZ3VtZW50IGlzIGEgdHlwZWQgYXJyYXkuIElmIHNvLAorICAgICAgICBj
YXN0IHRoZSBhcmd1bWVudCB0byBhIHR5cGVkIGFycmF5LCBhbmQgcmVhZCBlYWNoIGVsZW1lbnQg
d2l0aCAuaXRlbSgpCisgICAgICAgIG1ldGhvZC4gVGhhdCBhdm9pZCByZWFkaW5nIHRoZSB2YWx1
ZSBhcyBhIEpTVmFsdWUsIGFuZCBzcGVlZHVwcyBzZXQKKyAgICAgICAgbWV0aG9kIGJ5IGFwcHJv
eGltYXRpdmVseSAxMHguCisKKyAgICAgICAgSW50cm9kdWNlIHNldFdlYkdMQXJyYXlXaXRoVHlw
ZWRBcnJheUFyZ3VtZW50IHRlbXBsYXRlIGZ1bmN0aW9uIHdoaWNoCisgICAgICAgIGNoZWNrcyBp
ZiBhcmd1bWVudCBpcyBhIHR5cGVkIGFycmF5LiBJZiBzbywgaXQgY29waWVzIHRoZSBkYXRhIHRv
CisgICAgICAgIHRhcmdldCB0eXBlZCBhcnJheSBhbmQgcmV0dXJucyB0cnVlLiBPdGhlcndpc2Us
IGl0IHJldHVybnMgZmFsc2UuCisKKyAgICAgICAgSW50cm9kdWNlIGNvcHlUeXBlZEFycmF5QnVm
ZmVyIHRlbXBsYXRlIGZ1bmN0aW9uIHdoaWNoIGNvcGllcyBkYXRhCisgICAgICAgIGZyb20gYSB0
eXBlZCBhcnJheSB0byBhbm90aGVyIG9uZS4gVGhpcyBmdW5jdGlvbiBpcyBhbHNvIHVzZWQgZnJv
bQorICAgICAgICBjb25zdHJ1Y3RBcnJheUJ1ZmZlclZpZXdXaXRoVHlwZWRBcnJheUFyZ3VtZW50
LgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Y29weVR5cGVkQXJyYXlCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0V2ViR0xBcnJheVdpdGhUeXBlZEFycmF5QXJndW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0V2ViR0xBcnJheUhlbHBlcik6CisgICAgICAgIChXZWJD
b3JlOjpjb25zdHJ1Y3RBcnJheUJ1ZmZlclZpZXdXaXRoVHlwZWRBcnJheUFyZ3VtZW50KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0Zsb2F0MzJBcnJheUN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0Zsb2F0MzJBcnJheTo6c2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Zs
b2F0NjRBcnJheUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0Zsb2F0NjRBcnJheTo6
c2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ludDE2QXJyYXlDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNJbnQxNkFycmF5OjpzZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTSW50MzJBcnJheUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0ludDMyQXJyYXk6
OnNldCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbnQ4QXJyYXlDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNJbnQ4QXJyYXk6OnNldCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNVaW50MTZBcnJheUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1VpbnQxNkFycmF5
OjpzZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNVaW50MzJBcnJheTo6c2V0KToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNVaW50OEFy
cmF5OjpzZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVWludDhDbGFtcGVkQXJyYXlDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNVaW50OENsYW1wZWRBcnJheTo6c2V0KToKKwog
MjAxMi0wNy0wNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dTdHJlYW1lcl0gTGl2ZSBzdHJlYW0gc3VwcG9ydCBpcyB3ZWFrCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9UeXBlZEFycmF5QmFzZS5oIGIvU291cmNlL1dURi93dGYvVHlwZWRB
cnJheUJhc2UuaAppbmRleCAxODVjZjc3NjIzMWNiNTkxMGJlMWQyMzZjNGYxMGYwOGNhYzY5NDVj
Li45MjQ2MDRkMjFkNzhlOGEyOGEzYWMyNWVkOTMwYWY2MGE5ZjMyZDBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9UeXBlZEFycmF5QmFzZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1R5cGVk
QXJyYXlCYXNlLmgKQEAgLTczLDYgKzczLDE0IEBAIGNsYXNzIFR5cGVkQXJyYXlCYXNlIDogcHVi
bGljIEFycmF5QnVmZmVyVmlldyB7CiAgICAgICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxUPjo6
ZGF0YSgpW2luZGV4XTsKICAgICB9CiAKKyAgICBib29sIGluYm91bmQodW5zaWduZWQgb2Zmc2V0
LCB1bnNpZ25lZCBwb3MpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gKG9mZnNldCA8PSBt
X2xlbmd0aAorICAgICAgICAgICAgJiYgb2Zmc2V0ICsgcG9zIDw9IG1fbGVuZ3RoCisgICAgICAg
ICAgICAvLyBjaGVjayBvdmVyZmxvdworICAgICAgICAgICAgJiYgb2Zmc2V0ICsgcG9zID49IG9m
ZnNldCk7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgVHlwZWRBcnJheUJhc2UoUGFzc1JlZlB0
cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpCiAgICAgICAgIDogQXJyYXlCdWZmZXJWaWV3KGJ1ZmZlciwgYnl0ZU9mZnNldCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3SGVscGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyVmlld0hlbHBlci5o
CmluZGV4IDhjNmY0MjY3NzdhZjdiODIwZTkxMWM2ODIzMzI0MjU3NDAzYzcwZjguLjQ0ZjFkNDlj
NzExMGFiNjY2MTgzYmU3OGI3Njg2MGJlYmNlYzZjNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaApAQCAtNDEsMjMgKzQx
LDk1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1KU0M6
OkpTVmFsdWUgc2V0V2ViR0xBcnJheUhlbHBlcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgVCogaW1w
bCwgVCogKCpjb252ZXJzaW9uRnVuYykoSlNDOjpKU1ZhbHVlKSkKK3RlbXBsYXRlPGNsYXNzIEMs
IHR5cGVuYW1lIFQ+Citib29sIGNvcHlUeXBlZEFycmF5QnVmZmVyKEMqIHRhcmdldCwgQXJyYXlC
dWZmZXJWaWV3KiBzb3VyY2UsIHVuc2lnbmVkIHNvdXJjZUxlbmd0aCwgdW5zaWduZWQgb2Zmc2V0
KSB7CisgICAgQXJyYXlCdWZmZXJWaWV3OjpWaWV3VHlwZSBzb3VyY2VUeXBlID0gc291cmNlLT5n
ZXRUeXBlKCk7CisgICAgQVNTRVJUIChzb3VyY2VUeXBlICE9IEFycmF5QnVmZmVyVmlldzo6VHlw
ZURhdGFWaWV3KTsKKworICAgIGlmICh0YXJnZXQtPmdldFR5cGUoKSA9PSBzb3VyY2VUeXBlKSB7
CisgICAgICAgIGlmICghdGFyZ2V0LT5zZXQoc3RhdGljX2Nhc3Q8Qyo+KHNvdXJjZSksIG9mZnNl
dCkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoIXRhcmdldC0+aW5ib3VuZChvZmZzZXQsIHNvdXJj
ZUxlbmd0aCkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN3aXRjaCAo
c291cmNlVHlwZSkgeworICAgIGNhc2UgQXJyYXlCdWZmZXJWaWV3OjpUeXBlSW50ODoKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNvdXJjZUxlbmd0aDsgKytpKQorICAgICAgICAg
ICAgdGFyZ2V0LT5zZXQoaSArIG9mZnNldCwgKFQpKHN0YXRpY19jYXN0PFR5cGVkQXJyYXlCYXNl
PHNpZ25lZCBjaGFyPiAqPihzb3VyY2UpLT5pdGVtKGkpKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQXJyYXlCdWZmZXJWaWV3OjpUeXBlVWludDg6CisgICAgY2FzZSBBcnJheUJ1ZmZlclZp
ZXc6OlR5cGVVaW50OENsYW1wZWQ6CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
b3VyY2VMZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRhcmdldC0+c2V0KGkgKyBvZmZzZXQsIChU
KShzdGF0aWNfY2FzdDxUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPiAqPihzb3VyY2UpLT5p
dGVtKGkpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXJyYXlCdWZmZXJWaWV3OjpUeXBl
SW50MTY6CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzb3VyY2VMZW5ndGg7ICsr
aSkKKyAgICAgICAgICAgIHRhcmdldC0+c2V0KGkgKyBvZmZzZXQsIChUKShzdGF0aWNfY2FzdDxU
eXBlZEFycmF5QmFzZTxzaWduZWQgc2hvcnQ+ICo+KHNvdXJjZSktPml0ZW0oaSkpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBBcnJheUJ1ZmZlclZpZXc6OlR5cGVVaW50MTY6CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzb3VyY2VMZW5ndGg7ICsraSkKKyAgICAgICAgICAg
IHRhcmdldC0+c2V0KGkgKyBvZmZzZXQsIChUKShzdGF0aWNfY2FzdDxUeXBlZEFycmF5QmFzZTx1
bnNpZ25lZCBzaG9ydD4gKj4oc291cmNlKS0+aXRlbShpKSkpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEFycmF5QnVmZmVyVmlldzo6VHlwZUludDMyOgorICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgc291cmNlTGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0YXJnZXQtPnNldChp
ICsgb2Zmc2V0LCAoVCkoc3RhdGljX2Nhc3Q8VHlwZWRBcnJheUJhc2U8aW50PiAqPihzb3VyY2Up
LT5pdGVtKGkpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXJyYXlCdWZmZXJWaWV3OjpU
eXBlVWludDMyOgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc291cmNlTGVuZ3Ro
OyArK2kpCisgICAgICAgICAgICB0YXJnZXQtPnNldChpICsgb2Zmc2V0LCAoVCkoc3RhdGljX2Nh
c3Q8VHlwZWRBcnJheUJhc2U8dW5zaWduZWQgaW50PiAqPihzb3VyY2UpLT5pdGVtKGkpKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQXJyYXlCdWZmZXJWaWV3OjpUeXBlRmxvYXQzMjoKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNvdXJjZUxlbmd0aDsgKytpKQorICAgICAg
ICAgICAgdGFyZ2V0LT5zZXQoaSArIG9mZnNldCwgKFQpKHN0YXRpY19jYXN0PFR5cGVkQXJyYXlC
YXNlPGZsb2F0PiAqPihzb3VyY2UpLT5pdGVtKGkpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQXJyYXlCdWZmZXJWaWV3OjpUeXBlRmxvYXQ2NDoKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHNvdXJjZUxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGFyZ2V0LT5zZXQoaSAr
IG9mZnNldCwgKFQpKHN0YXRpY19jYXN0PFR5cGVkQXJyYXlCYXNlPGRvdWJsZT4gKj4oc291cmNl
KS0+aXRlbShpKSkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIEMsIHR5
cGVuYW1lIFQ+Citib29sIHNldFdlYkdMQXJyYXlXaXRoVHlwZWRBcnJheUFyZ3VtZW50KEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBDKiBpbXBsKQoreworICAgIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+
IGFycmF5ID0gdG9BcnJheUJ1ZmZlclZpZXcoZXhlYy0+YXJndW1lbnQoMCkpOworICAgIGlmICgh
YXJyYXkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEFycmF5QnVmZmVyVmlldzo6Vmll
d1R5cGUgYXJyYXlUeXBlID0gYXJyYXktPmdldFR5cGUoKTsKKyAgICBpZiAoYXJyYXlUeXBlID09
IEFycmF5QnVmZmVyVmlldzo6VHlwZURhdGFWaWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICB1bnNpZ25lZCBvZmZzZXQgPSAwOworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkg
PT0gMikKKyAgICAgICAgb2Zmc2V0ID0gZXhlYy0+YXJndW1lbnQoMSkudG9JbnQzMihleGVjKTsK
KworICAgIHVpbnQzMl90IGxlbmd0aCA9IGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+Z2V0
KGV4ZWMsIEpTQzo6SWRlbnRpZmllcihleGVjLCAibGVuZ3RoIikpLnRvVUludDMyKGV4ZWMpOwor
CisgICAgaWYgKCEoY29weVR5cGVkQXJyYXlCdWZmZXI8QywgVD4oaW1wbCwgYXJyYXkuZ2V0KCks
IGxlbmd0aCwgb2Zmc2V0KSkpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIElOREVY
X1NJWkVfRVJSKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPGNsYXNz
IEMsIHR5cGVuYW1lIFQ+CitKU0M6OkpTVmFsdWUgc2V0V2ViR0xBcnJheUhlbHBlcihKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgQyogaW1wbCkKIHsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgp
IDwgMSkKICAgICAgICAgcmV0dXJuIEpTQzo6dGhyb3dTeW50YXhFcnJvcihleGVjKTsKIAotICAg
IFQqIGFycmF5ID0gKCpjb252ZXJzaW9uRnVuYykoZXhlYy0+YXJndW1lbnQoMCkpOwotICAgIGlm
IChhcnJheSkgewotICAgICAgICAvLyB2b2lkIHNldChpbiBXZWJHTDxUPkFycmF5IGFycmF5LCBb
T3B0aW9uYWxdIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKLSAgICAgICAgdW5zaWduZWQgb2Zm
c2V0ID0gMDsKLSAgICAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9PSAyKQotICAgICAg
ICAgICAgb2Zmc2V0ID0gZXhlYy0+YXJndW1lbnQoMSkudG9JbnQzMihleGVjKTsKLSAgICAgICAg
aWYgKCFpbXBsLT5zZXQoYXJyYXksIG9mZnNldCkpCi0gICAgICAgICAgICBzZXRET01FeGNlcHRp
b24oZXhlYywgSU5ERVhfU0laRV9FUlIpOwotCisgICAgaWYgKHNldFdlYkdMQXJyYXlXaXRoVHlw
ZWRBcnJheUFyZ3VtZW50PEMsIFQ+KGV4ZWMsIGltcGwpKQorICAgICAgICAvLyB2b2lkIHNldChp
biBXZWJHTDw+QXJyYXkgYXJyYXksIFtPcHRpb25hbF0gaW4gdW5zaWduZWQgbG9uZyBvZmZzZXQp
OwogICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOwotICAgIH0KIAogICAgIGlmIChl
eGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKSB7CiAgICAgICAgIC8vIHZvaWQgc2V0KGluIHNl
cXVlbmNlPGxvbmc+IGFycmF5LCBbT3B0aW9uYWxdIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsK
QEAgLTY2LDkgKzEzOCw3IEBAIEpTQzo6SlNWYWx1ZSBzZXRXZWJHTEFycmF5SGVscGVyKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBUKiBpbXBsLCBUKiAoKmNvbnZlcnNpb25GCiAgICAgICAgIGlmIChl
eGVjLT5hcmd1bWVudENvdW50KCkgPT0gMikKICAgICAgICAgICAgIG9mZnNldCA9IGV4ZWMtPmFy
Z3VtZW50KDEpLnRvSW50MzIoZXhlYyk7CiAgICAgICAgIHVpbnQzMl90IGxlbmd0aCA9IGFycmF5
LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsICJsZW5ndGgiKSkudG9JbnQzMihleGVj
KTsKLSAgICAgICAgaWYgKG9mZnNldCA+IGltcGwtPmxlbmd0aCgpCi0gICAgICAgICAgICB8fCBv
ZmZzZXQgKyBsZW5ndGggPiBpbXBsLT5sZW5ndGgoKQotICAgICAgICAgICAgfHwgb2Zmc2V0ICsg
bGVuZ3RoIDwgb2Zmc2V0KQorICAgICAgICBpZiAoIWltcGwtPmluYm91bmQob2Zmc2V0LCBsZW5n
dGgpKQogICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIElOREVYX1NJWkVfRVJSKTsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgbGVu
Z3RoOyBpKyspIHsKQEAgLTEwNSw0OSArMTc1LDExIEBAIFBhc3NSZWZQdHI8Qz4gY29uc3RydWN0
QXJyYXlCdWZmZXJWaWV3V2l0aFR5cGVkQXJyYXlBcmd1bWVudChKU0M6OkV4ZWNTdGF0ZSogZXhl
CiAgICAgICAgIHJldHVybiBhcnJheTsKICAgICB9CiAKLSAgICBpZiAoYXJyYXktPmdldFR5cGUo
KSA9PSBzb3VyY2VUeXBlKSB7Ci0gICAgICAgIG1lbWNweShhcnJheS0+YmFzZUFkZHJlc3MoKSwg
c291cmNlLT5iYXNlQWRkcmVzcygpLCBsZW5ndGggKiBzaXplb2YoVCkpOworICAgIGlmICghKGNv
cHlUeXBlZEFycmF5QnVmZmVyPEMsIFQ+KGFycmF5LmdldCgpLCBzb3VyY2UuZ2V0KCksIGxlbmd0
aCwgMCkpKSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBJTkRFWF9TSVpFX0VSUik7
CiAgICAgICAgIHJldHVybiBhcnJheTsKICAgICB9CiAKLSAgICBzd2l0Y2ggKHNvdXJjZVR5cGUp
IHsKLSAgICBjYXNlIEFycmF5QnVmZmVyVmlldzo6VHlwZUludDg6Ci0gICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGFycmF5LT5zZXQoaSwg
KFQpKHN0YXRpY19jYXN0PFR5cGVkQXJyYXlCYXNlPHNpZ25lZCBjaGFyPiAqPihzb3VyY2UuZ2V0
KCkpLT5pdGVtKGkpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXJyYXlCdWZmZXJWaWV3
OjpUeXBlVWludDg6Ci0gICAgY2FzZSBBcnJheUJ1ZmZlclZpZXc6OlR5cGVVaW50OENsYW1wZWQ6
Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKLSAgICAgICAg
ICAgIGFycmF5LT5zZXQoaSwgKFQpKHN0YXRpY19jYXN0PFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVk
IGNoYXI+ICo+KHNvdXJjZS5nZXQoKSktPml0ZW0oaSkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBBcnJheUJ1ZmZlclZpZXc6OlR5cGVJbnQxNjoKLSAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICAgICAgYXJyYXktPnNldChpLCAoVCkoc3Rh
dGljX2Nhc3Q8VHlwZWRBcnJheUJhc2U8c2lnbmVkIHNob3J0PiAqPihzb3VyY2UuZ2V0KCkpLT5p
dGVtKGkpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXJyYXlCdWZmZXJWaWV3OjpUeXBl
VWludDE2OgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0g
ICAgICAgICAgICBhcnJheS0+c2V0KGksIChUKShzdGF0aWNfY2FzdDxUeXBlZEFycmF5QmFzZTx1
bnNpZ25lZCBzaG9ydD4gKj4oc291cmNlLmdldCgpKS0+aXRlbShpKSkpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEFycmF5QnVmZmVyVmlldzo6VHlwZUludDMyOgotICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBhcnJheS0+c2V0KGks
IChUKShzdGF0aWNfY2FzdDxUeXBlZEFycmF5QmFzZTxpbnQ+ICo+KHNvdXJjZS5nZXQoKSktPml0
ZW0oaSkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBcnJheUJ1ZmZlclZpZXc6OlR5cGVV
aW50MzI6Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKLSAg
ICAgICAgICAgIGFycmF5LT5zZXQoaSwgKFQpKHN0YXRpY19jYXN0PFR5cGVkQXJyYXlCYXNlPHVu
c2lnbmVkIGludD4gKj4oc291cmNlLmdldCgpKS0+aXRlbShpKSkpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEFycmF5QnVmZmVyVmlldzo6VHlwZUZsb2F0MzI6Ci0gICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGFycmF5LT5zZXQoaSwg
KFQpKHN0YXRpY19jYXN0PFR5cGVkQXJyYXlCYXNlPGZsb2F0PiAqPihzb3VyY2UuZ2V0KCkpLT5p
dGVtKGkpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXJyYXlCdWZmZXJWaWV3OjpUeXBl
RmxvYXQ2NDoKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQot
ICAgICAgICAgICAgYXJyYXktPnNldChpLCAoVCkoc3RhdGljX2Nhc3Q8VHlwZWRBcnJheUJhc2U8
ZG91YmxlPiAqPihzb3VyY2UuZ2V0KCkpLT5pdGVtKGkpKSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQogICAgIHJldHVybiBhcnJheTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGbG9hdDMyQXJy
YXlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGbG9hdDMyQXJyYXlD
dXN0b20uY3BwCmluZGV4IGNhZGU1MmUzOGU3YjBlOWViNTFlZjJmMDdhYjhkODRlMmQ0ZjNmMDgu
LmQ4ZjU4YzI5NDNkZTZlOGEyZjczMjcxZjcyZjJmM2UwNzFlYjIwNmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmxvYXQzMkFycmF5Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Zsb2F0MzJBcnJheUN1c3RvbS5jcHAKQEAgLTQ1
LDcgKzQ1LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEZsb2F0MzIKIAogSlNDOjpKU1ZhbHVlIEpTRmxv
YXQzMkFycmF5OjpzZXQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIHNldFdl
YkdMQXJyYXlIZWxwZXIoZXhlYywgaW1wbCgpLCB0b0Zsb2F0MzJBcnJheSk7CisgICAgcmV0dXJu
IHNldFdlYkdMQXJyYXlIZWxwZXI8RmxvYXQzMkFycmF5LCBmbG9hdD4oZXhlYywgaW1wbCgpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0Zsb2F0MzJBcnJheUNvbnN0cnVj
dG9yOjpjb25zdHJ1Y3RKU0Zsb2F0MzJBcnJheShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Zsb2F0NjRBcnJheUN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Zsb2F0NjRBcnJheUN1c3RvbS5jcHAKaW5kZXgg
MTU2MTllMzI1MmVhYTJjMmUzNzRmMWFjY2I2ZDEzOTZkNzBiM2M5My4uZTc2NDJhMDVlZjQzM2Y3
ZDQwNzdiYWIwMzNlNjkwMDU5OTg4MWM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNGbG9hdDY0QXJyYXlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRmxvYXQ2NEFycmF5Q3VzdG9tLmNwcApAQCAtNDUsNyArNDUsNyBAQCBKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRmxvYXQ2NAogCiBKU0M6OkpTVmFsdWUgSlNGbG9hdDY0QXJyYXk6OnNldChK
U0M6OkV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcihl
eGVjLCBpbXBsKCksIHRvRmxvYXQ2NEFycmF5KTsKKyAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhl
bHBlcjxGbG9hdDY0QXJyYXksIGRvdWJsZT4oZXhlYywgaW1wbCgpKTsKIH0KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RK
U0Zsb2F0NjRBcnJheShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0ludDE2QXJyYXlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJbnQxNkFycmF5Q3VzdG9tLmNwcAppbmRleCBiYzc3YTZkMmIyZjliMGIzMWUy
MDk0M2EzMjkzMzFhMGJjOGVhODA4Li4wMWIzOTM5YmNhNDdmYzdmMWViMDc4MDQ3OTE5MDVkOWVi
N2E3N2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDE2QXJy
YXlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50MTZBcnJh
eUN1c3RvbS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEludDE2QXIKIAog
SlNDOjpKU1ZhbHVlIEpTSW50MTZBcnJheTo6c2V0KEpTQzo6RXhlY1N0YXRlKiBleGVjKQogewot
ICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyKGV4ZWMsIGltcGwoKSwgdG9JbnQxNkFycmF5
KTsKKyAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcjxJbnQxNkFycmF5LCBzaG9ydD4oZXhl
YywgaW1wbCgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0ludDE2QXJy
YXlDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNJbnQxNkFycmF5KEV4ZWNTdGF0ZSogZXhlYykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50MzJBcnJheUN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDMyQXJyYXlDdXN0b20uY3BwCmlu
ZGV4IGQ4NTI4N2Y0NDFjOTEyZjQ1NzdhNTJhZDVhMGMyNTQyZmEzYmMxNGIuLmVhYTZlNTc4YjRl
ZDZlM2Y3YjY3ZTc1ZDAxNWJjM2Y3NmQyYzE2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW50MzJBcnJheUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJbnQzMkFycmF5Q3VzdG9tLmNwcApAQCAtNDUsNyArNDUsNyBAQCBKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSW50MzJBcgogCiBKU0M6OkpTVmFsdWUgSlNJbnQzMkFycmF5OjpzZXQoSlND
OjpFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXIoZXhl
YywgaW1wbCgpLCB0b0ludDMyQXJyYXkpOworICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVy
PEludDMyQXJyYXksIGludD4oZXhlYywgaW1wbCgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBKU0ludDMyQXJyYXlDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNJbnQzMkFycmF5
KEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSW50OEFycmF5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50
OEFycmF5Q3VzdG9tLmNwcAppbmRleCBiNmUxNTA3NmY5YThkYmNhOWM0MDhkYzBmYjM4Zjg2ZWZj
MWU0NmQyLi40ZjA1M2UwZTk3ZWYyMDZhZGNlYTI0YjE4NWY2NTllYzllMjBhNTA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDhBcnJheUN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQ4QXJyYXlDdXN0b20uY3BwCkBAIC00
Niw3ICs0Niw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnQ4QXJyCiAKIEpTQzo6SlNWYWx1ZSBKU0lu
dDhBcnJheTo6c2V0KEpTQzo6RXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBzZXRXZWJH
TEFycmF5SGVscGVyKGV4ZWMsIGltcGwoKSwgdG9JbnQ4QXJyYXkpOworICAgIHJldHVybiBzZXRX
ZWJHTEFycmF5SGVscGVyPEludDhBcnJheSwgc2lnbmVkIGNoYXI+KGV4ZWMsIGltcGwoKSk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNJbnQ4QXJyYXlDb25zdHJ1Y3Rvcjo6
Y29uc3RydWN0SlNJbnQ4QXJyYXkoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50MTZBcnJheUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1VpbnQxNkFycmF5Q3VzdG9tLmNwcAppbmRleCA0N2I0NDAyYmFl
NzIxYWI0YjM4ZTJhMTA1MjM4M2M2MjdjMTZmZmYyLi5iOWU1MmEyZjNlMjQ5NjdmNzA0ZmU4YTli
MjdiZGE1MDhkMTAyZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1VpbnQxNkFycmF5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1VpbnQxNkFycmF5Q3VzdG9tLmNwcApAQCAtNDUsNyArNDUsNyBAQCBKU0M6OkpTVmFsdWUgdG9K
UyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VWludDE2QQogCiBKU0M6OkpTVmFsdWUgSlNVaW50MTZBcnJheTo6c2V0KEpTQzo6RXhlY1N0YXRl
KiBleGVjKQogewotICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyKGV4ZWMsIGltcGwoKSwg
dG9VaW50MTZBcnJheSk7CisgICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8VWludDE2QXJy
YXksIHVuc2lnbmVkIHNob3J0PihleGVjLCBpbXBsKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEpTVWludDE2QXJyYXlDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNVaW50MTZB
cnJheShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1VpbnQzMkFycmF5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVWludDMyQXJyYXlDdXN0b20uY3BwCmluZGV4IGFhOGI4MjY3ZjViZjQyYjlmZTI2NzBlN2Mx
M2YyNjdlYzEzYTYxNDIuLjcwZWYwYmEyMGY3NDNmOTNjY2I1ZmI0YThlNjExOGJjNzQxY2MzMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0
b20uY3BwCkBAIC00NSw3ICs0NSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBVaW50MzJBCiAKIEpTQzo6
SlNWYWx1ZSBKU1VpbnQzMkFycmF5OjpzZXQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAg
cmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXIoZXhlYywgaW1wbCgpLCB0b1VpbnQzMkFycmF5KTsK
KyAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcjxVaW50MzJBcnJheSwgdW5zaWduZWQgaW50
PihleGVjLCBpbXBsKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVWlu
dDMyQXJyYXlDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNVaW50MzJBcnJheShFeGVjU3RhdGUqIGV4
ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50OEFycmF5Q3VzdG9t
LmNwcAppbmRleCA2YTRmYTFkZjVjZGVmMDJhNGFkYzQ2MmUzMzkxZjgzM2U0Y2YxYzU0Li5kYjdh
NDNhYjQ1NDljNTg2NGEzMjJiNWNjZTFlNmQzYmI3N2ZmZGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDhBcnJheUN1c3RvbS5jcHAKQEAgLTQ1LDcgKzQ1LDcg
QEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFVpbnQ4QXIKIAogSlNDOjpKU1ZhbHVlIEpTVWludDhBcnJheTo6
c2V0KEpTQzo6RXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVs
cGVyKGV4ZWMsIGltcGwoKSwgdG9VaW50OEFycmF5KTsKKyAgICByZXR1cm4gc2V0V2ViR0xBcnJh
eUhlbHBlcjxVaW50OEFycmF5LCB1bnNpZ25lZCBjaGFyPihleGVjLCBpbXBsKCkpOwogfQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVWludDhBcnJheUNvbnN0cnVjdG9yOjpjb25z
dHJ1Y3RKU1VpbnQ4QXJyYXkoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcAppbmRleCAy
ZDVjYTc4NWQ1YmEwYzM1ZGU1MDFjNWMxMDg2ODRmOTZiMjg1MTNlLi5jNzliYWMwZWRiYjJlYTY4
ZmQ1ZDE0NzQxZDQ5MGE5NTcyMTVhMDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcApAQCAtNDUsNyArNDUs
NyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVWludDhDbAogCiBKU0M6OkpTVmFsdWUgSlNVaW50OENsYW1w
ZWRBcnJheTo6c2V0KEpTQzo6RXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBzZXRXZWJH
TEFycmF5SGVscGVyKGV4ZWMsIGltcGwoKSwgdG9VaW50OENsYW1wZWRBcnJheSk7CisgICAgcmV0
dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8VWludDhDbGFtcGVkQXJyYXksIHVuc2lnbmVkIGNoYXI+
KGV4ZWMsIGltcGwoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNVaW50
OENsYW1wZWRBcnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1VpbnQ4Q2xhbXBlZEFycmF5KEV4
ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQmluZGluZ3MvdHlw
ZWQtYXJyYXktc2V0LWZyb20tdHlwZWQuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvQmluZGluZ3Mv
dHlwZWQtYXJyYXktc2V0LWZyb20tdHlwZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NGZjMmM3ZWNlZjJi
NTI4MDIwNDdmZGFiODEzN2E2YTkxYWY5ZTI2Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9CaW5kaW5ncy90eXBlZC1hcnJheS1zZXQtZnJvbS10eXBlZC5odG1sCkBAIC0wLDAg
KzEsMTggQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3J1bm5lci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCit2YXIgbGVuZ3RoID0gMTAwMDAw
MDA7Cit2YXIgc291cmNlID0gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKTsKK2ZvciAodmFyIGkgPSAw
OyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICBzb3VyY2VbaV0gPSBpOworfQordmFyIHRhcmdldCA9
IG5ldyBGbG9hdDY0QXJyYXkobGVuZ3RoKTsKKworUGVyZlRlc3RSdW5uZXIucnVuKGZ1bmN0aW9u
KCkgeworICAgIHRhcmdldC5zZXQoc291cmNlKTsKK30pOworPC9zY3JpcHQ+Cis8L2JvZHk+CisK
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggMGVlYzc1MDE1ZjIzMWVmZjJmOTc0YmZiNzc0YWJiNGYzZjIzOTY4
OS4uYTZhOGVlNDUzYjgxMDllZmU1ZmMwYzM3Y2E1OTQzMGI5NzdlNTVkNCAxMDA2NDQKLS0tIGEv
UGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wNy0zMSAgQXJuYXVkIFJlbmV2aWVyICA8YS5yZW5l
dmllckBzaXNhLnNhbXN1bmcuY29tPgorCisgICAgICAgIFR5cGVkQXJyYXkgc2V0IG1ldGhvZCBp
cyBzbG93IHdoZW4gY2FsbGVkIHdpdGggYW5vdGhlciB0eXBlZCBhcnJheQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI1NTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEJpbmRpbmdzL3R5cGVkLWFycmF5
LXNldC1mcm9tLXR5cGVkLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA3LTI4ICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIHJ1bi1wZXJmLXRlc3RzIHNob3VsZCBnZW5l
cmF0ZSBhIHJlc3VsdHMgcGFnZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155645</attachid>
            <date>2012-07-31 15:20:09 -0700</date>
            <delta_ts>2012-08-01 16:45:46 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>bug-92556-20120731151949.patch</filename>
            <type>text/plain</type>
            <size>19086</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg0MmQ3MDE3MTI4NWM4ZmM3ZjRlZjNl
NjllNjJjMjRlYmQwMDU3OWQuLmU2YTZkZmJjZmE0NzJlMDRhMjEzNjQwZDYxYzM3MDNiZjc0YThh
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDctMzEgIEFybmF1ZCBSZW5ldmllciAgPGEu
cmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KKworICAgICAgICBUeXBlZEFycmF5IHNldCBtZXRo
b2QgaXMgc2xvdyB3aGVuIGNhbGxlZCB3aXRoIGFub3RoZXIgdHlwZWQgYXJyYXkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNTU2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFuIGluYm91bmQgZnVu
Y3Rpb24gdG8gVHlwZWRBcnJheUJhc2UgdG8gY2hlY2sgaWYgYSBwb3NpdGlvbiB3aWxsCisgICAg
ICAgIGJlIG5vdCBiZSBvdXQgb2YgYm91bmQgb3Igb3ZlcmZsb3cgZnJvbSB0aGUgdHlwZWQgYXJy
YXkuCisKKyAgICAgICAgKiB3dGYvVHlwZWRBcnJheUJhc2UuaDoKKyAgICAgICAgKFdURjo6VHlw
ZWRBcnJheUJhc2U6OmluYm91bmQpOgorICAgICAgICAoVHlwZWRBcnJheUJhc2UpOgorCiAyMDEy
LTA3LTMxICBUaGlhZ28gTWFyY29zIFAuIFNhbnRvcyAgPHRoaWFnby5zYW50b3NAaW50ZWwuY29t
PgogCiAgICAgICAgIEFkZCBhIG1lY2hhbmlzbSB0byBkdW1wIHRoZSBzdGFjayB0cmFjZSBpbiBj
YXNlIG9mIGEgY3Jhc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0N2Q2OTc1Y2U2MzJiOTVkNGVjZGVlYmYyNmI2
ZmQ2ZmY1MTczZjMyLi44OTNkMWRjMWMxZTE0NjU5MzkzMTUyYWYzY2Y4ZDVhMWU4ZDQ1MTJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTItMDctMzEgIEFybmF1ZCBSZW5ldmllciAg
PGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KKworICAgICAgICBUeXBlZEFycmF5IHNldCBz
cGVlZHVwCisKKyAgICAgICAgVHlwZWRBcnJheSBzZXQgbWV0aG9kIGlzIHNsb3cgd2hlbiBjYWxs
ZWQgd2l0aCBhbm90aGVyIHR5cGVkIGFycmF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MjU1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdoZW4gc2V0dGluZyBtdWx0aXBsZXMgdmFsdWVzIHRvIGEgdHlw
ZWQgYXJyYXkgZnJvbSBhbiBhcnJheSBsaWtlCisgICAgICAgIGVsZW1lbnQsIHRyeSB0byBkZXRl
cm1pbmUgaWYgdGhlIGFyZ3VtZW50IGlzIGEgdHlwZWQgYXJyYXkuIElmIHNvLAorICAgICAgICBj
YXN0IHRoZSBhcmd1bWVudCB0byBhIHR5cGVkIGFycmF5LCBhbmQgcmVhZCBlYWNoIGVsZW1lbnQg
d2l0aCAuaXRlbSgpCisgICAgICAgIG1ldGhvZC4gVGhhdCBhdm9pZCByZWFkaW5nIHRoZSB2YWx1
ZSBhcyBhIEpTVmFsdWUsIGFuZCBzcGVlZHVwcyBzZXQKKyAgICAgICAgbWV0aG9kIGJ5IGFwcHJv
eGltYXRpdmVseSAxMHguCisKKyAgICAgICAgSW50cm9kdWNlIHNldFdlYkdMQXJyYXlXaXRoVHlw
ZWRBcnJheUFyZ3VtZW50IHRlbXBsYXRlIGZ1bmN0aW9uIHdoaWNoCisgICAgICAgIGNoZWNrcyBp
ZiBhcmd1bWVudCBpcyBhIHR5cGVkIGFycmF5LiBJZiBzbywgaXQgY29waWVzIHRoZSBkYXRhIHRv
CisgICAgICAgIHRhcmdldCB0eXBlZCBhcnJheSBhbmQgcmV0dXJucyB0cnVlLiBPdGhlcndpc2Us
IGl0IHJldHVybnMgZmFsc2UuCisKKyAgICAgICAgSW50cm9kdWNlIGNvcHlUeXBlZEFycmF5QnVm
ZmVyIHRlbXBsYXRlIGZ1bmN0aW9uIHdoaWNoIGNvcGllcyBkYXRhCisgICAgICAgIGZyb20gYSB0
eXBlZCBhcnJheSB0byBhbm90aGVyIG9uZS4gVGhpcyBmdW5jdGlvbiBpcyBhbHNvIHVzZWQgZnJv
bQorICAgICAgICBjb25zdHJ1Y3RBcnJheUJ1ZmZlclZpZXdXaXRoVHlwZWRBcnJheUFyZ3VtZW50
LgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Y29weVR5cGVkQXJyYXlCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0V2ViR0xBcnJheVdpdGhUeXBlZEFycmF5QXJndW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0V2ViR0xBcnJheUhlbHBlcik6CisgICAgICAgIChXZWJD
b3JlOjpjb25zdHJ1Y3RBcnJheUJ1ZmZlclZpZXdXaXRoVHlwZWRBcnJheUFyZ3VtZW50KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0Zsb2F0MzJBcnJheUN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0Zsb2F0MzJBcnJheTo6c2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Zs
b2F0NjRBcnJheUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0Zsb2F0NjRBcnJheTo6
c2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ludDE2QXJyYXlDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNJbnQxNkFycmF5OjpzZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTSW50MzJBcnJheUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0ludDMyQXJyYXk6
OnNldCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbnQ4QXJyYXlDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNJbnQ4QXJyYXk6OnNldCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNVaW50MTZBcnJheUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1VpbnQxNkFycmF5
OjpzZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNVaW50MzJBcnJheTo6c2V0KToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNVaW50OEFy
cmF5OjpzZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVWludDhDbGFtcGVkQXJyYXlDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNVaW50OENsYW1wZWRBcnJheTo6c2V0KToKKwog
MjAxMi0wNy0wNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dTdHJlYW1lcl0gTGl2ZSBzdHJlYW0gc3VwcG9ydCBpcyB3ZWFrCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9UeXBlZEFycmF5QmFzZS5oIGIvU291cmNlL1dURi93dGYvVHlwZWRB
cnJheUJhc2UuaAppbmRleCAxODVjZjc3NjIzMWNiNTkxMGJlMWQyMzZjNGYxMGYwOGNhYzY5NDVj
Li45MjQ2MDRkMjFkNzhlOGEyOGEzYWMyNWVkOTMwYWY2MGE5ZjMyZDBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9UeXBlZEFycmF5QmFzZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1R5cGVk
QXJyYXlCYXNlLmgKQEAgLTczLDYgKzczLDE0IEBAIGNsYXNzIFR5cGVkQXJyYXlCYXNlIDogcHVi
bGljIEFycmF5QnVmZmVyVmlldyB7CiAgICAgICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxUPjo6
ZGF0YSgpW2luZGV4XTsKICAgICB9CiAKKyAgICBib29sIGluYm91bmQodW5zaWduZWQgb2Zmc2V0
LCB1bnNpZ25lZCBwb3MpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gKG9mZnNldCA8PSBt
X2xlbmd0aAorICAgICAgICAgICAgJiYgb2Zmc2V0ICsgcG9zIDw9IG1fbGVuZ3RoCisgICAgICAg
ICAgICAvLyBjaGVjayBvdmVyZmxvdworICAgICAgICAgICAgJiYgb2Zmc2V0ICsgcG9zID49IG9m
ZnNldCk7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgVHlwZWRBcnJheUJhc2UoUGFzc1JlZlB0
cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpCiAgICAgICAgIDogQXJyYXlCdWZmZXJWaWV3KGJ1ZmZlciwgYnl0ZU9mZnNldCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3SGVscGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyVmlld0hlbHBlci5o
CmluZGV4IDhjNmY0MjY3NzdhZjdiODIwZTkxMWM2ODIzMzI0MjU3NDAzYzcwZjguLmYwN2EzYWEy
NTc0MmQ4NTMzMWUxMjU0MzU3Y2UyM2QyZjYxMjI4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaApAQCAtNDEsMjMgKzQx
LDk0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1KU0M6
OkpTVmFsdWUgc2V0V2ViR0xBcnJheUhlbHBlcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgVCogaW1w
bCwgVCogKCpjb252ZXJzaW9uRnVuYykoSlNDOjpKU1ZhbHVlKSkKK3RlbXBsYXRlPGNsYXNzIEMs
IHR5cGVuYW1lIFQ+Citib29sIGNvcHlUeXBlZEFycmF5QnVmZmVyKEMqIHRhcmdldCwgQXJyYXlC
dWZmZXJWaWV3KiBzb3VyY2UsIHVuc2lnbmVkIHNvdXJjZUxlbmd0aCwgdW5zaWduZWQgb2Zmc2V0
KQoreworICAgIEFycmF5QnVmZmVyVmlldzo6Vmlld1R5cGUgc291cmNlVHlwZSA9IHNvdXJjZS0+
Z2V0VHlwZSgpOworICAgIEFTU0VSVChzb3VyY2VUeXBlICE9IEFycmF5QnVmZmVyVmlldzo6VHlw
ZURhdGFWaWV3KTsKKworICAgIGlmICh0YXJnZXQtPmdldFR5cGUoKSA9PSBzb3VyY2VUeXBlKSB7
CisgICAgICAgIGlmICghdGFyZ2V0LT5zZXQoc3RhdGljX2Nhc3Q8Qyo+KHNvdXJjZSksIG9mZnNl
dCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIGlmICghdGFyZ2V0LT5pbmJvdW5kKG9mZnNldCwgc291cmNlTGVuZ3RoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3dpdGNoIChzb3VyY2VUeXBlKSB7CisgICAgY2Fz
ZSBBcnJheUJ1ZmZlclZpZXc6OlR5cGVJbnQ4OgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgc291cmNlTGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0YXJnZXQtPnNldChpICsgb2Zm
c2V0LCAoVCkoc3RhdGljX2Nhc3Q8VHlwZWRBcnJheUJhc2U8c2lnbmVkIGNoYXI+ICo+KHNvdXJj
ZSktPml0ZW0oaSkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBcnJheUJ1ZmZlclZpZXc6
OlR5cGVVaW50ODoKKyAgICBjYXNlIEFycmF5QnVmZmVyVmlldzo6VHlwZVVpbnQ4Q2xhbXBlZDoK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNvdXJjZUxlbmd0aDsgKytpKQorICAg
ICAgICAgICAgdGFyZ2V0LT5zZXQoaSArIG9mZnNldCwgKFQpKHN0YXRpY19jYXN0PFR5cGVkQXJy
YXlCYXNlPHVuc2lnbmVkIGNoYXI+ICo+KHNvdXJjZSktPml0ZW0oaSkpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBBcnJheUJ1ZmZlclZpZXc6OlR5cGVJbnQxNjoKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHNvdXJjZUxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGFyZ2V0
LT5zZXQoaSArIG9mZnNldCwgKFQpKHN0YXRpY19jYXN0PFR5cGVkQXJyYXlCYXNlPHNpZ25lZCBz
aG9ydD4gKj4oc291cmNlKS0+aXRlbShpKSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFy
cmF5QnVmZmVyVmlldzo6VHlwZVVpbnQxNjoKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHNvdXJjZUxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGFyZ2V0LT5zZXQoaSArIG9mZnNl
dCwgKFQpKHN0YXRpY19jYXN0PFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIHNob3J0PiAqPihzb3Vy
Y2UpLT5pdGVtKGkpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXJyYXlCdWZmZXJWaWV3
OjpUeXBlSW50MzI6CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzb3VyY2VMZW5n
dGg7ICsraSkKKyAgICAgICAgICAgIHRhcmdldC0+c2V0KGkgKyBvZmZzZXQsIChUKShzdGF0aWNf
Y2FzdDxUeXBlZEFycmF5QmFzZTxpbnQ+ICo+KHNvdXJjZSktPml0ZW0oaSkpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBBcnJheUJ1ZmZlclZpZXc6OlR5cGVVaW50MzI6CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzb3VyY2VMZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRh
cmdldC0+c2V0KGkgKyBvZmZzZXQsIChUKShzdGF0aWNfY2FzdDxUeXBlZEFycmF5QmFzZTx1bnNp
Z25lZCBpbnQ+ICo+KHNvdXJjZSktPml0ZW0oaSkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBBcnJheUJ1ZmZlclZpZXc6OlR5cGVGbG9hdDMyOgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgc291cmNlTGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0YXJnZXQtPnNldChpICsg
b2Zmc2V0LCAoVCkoc3RhdGljX2Nhc3Q8VHlwZWRBcnJheUJhc2U8ZmxvYXQ+ICo+KHNvdXJjZSkt
Pml0ZW0oaSkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBcnJheUJ1ZmZlclZpZXc6OlR5
cGVGbG9hdDY0OgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc291cmNlTGVuZ3Ro
OyArK2kpCisgICAgICAgICAgICB0YXJnZXQtPnNldChpICsgb2Zmc2V0LCAoVCkoc3RhdGljX2Nh
c3Q8VHlwZWRBcnJheUJhc2U8ZG91YmxlPiAqPihzb3VyY2UpLT5pdGVtKGkpKSk7CisgICAgICAg
IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVy
biB0cnVlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgQywgdHlwZW5hbWUgVD4KK2Jvb2wgc2V0V2Vi
R0xBcnJheVdpdGhUeXBlZEFycmF5QXJndW1lbnQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEMqIGlt
cGwpCit7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gYXJyYXkgPSB0b0FycmF5QnVmZmVy
VmlldyhleGVjLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFhcnJheSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgQXJyYXlCdWZmZXJWaWV3OjpWaWV3VHlwZSBhcnJheVR5cGUgPSBhcnJh
eS0+Z2V0VHlwZSgpOworICAgIGlmIChhcnJheVR5cGUgPT0gQXJyYXlCdWZmZXJWaWV3OjpUeXBl
RGF0YVZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVuc2lnbmVkIG9mZnNldCA9
IDA7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9PSAyKQorICAgICAgICBvZmZzZXQg
PSBleGVjLT5hcmd1bWVudCgxKS50b0ludDMyKGV4ZWMpOworCisgICAgdWludDMyX3QgbGVuZ3Ro
ID0gYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVy
KGV4ZWMsICJsZW5ndGgiKSkudG9VSW50MzIoZXhlYyk7CisKKyAgICBpZiAoIShjb3B5VHlwZWRB
cnJheUJ1ZmZlcjxDLCBUPihpbXBsLCBhcnJheS5nZXQoKSwgbGVuZ3RoLCBvZmZzZXQpKSkKKyAg
ICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIElOREVYX1NJWkVfRVJSKTsKKworICAgIHJldHVy
biB0cnVlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBDLCB0eXBlbmFtZSBUPgorSlNDOjpKU1ZhbHVl
IHNldFdlYkdMQXJyYXlIZWxwZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEMqIGltcGwpCiB7CiAg
ICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAgICAgIHJldHVybiBKU0M6OnRo
cm93U3ludGF4RXJyb3IoZXhlYyk7CiAKLSAgICBUKiBhcnJheSA9ICgqY29udmVyc2lvbkZ1bmMp
KGV4ZWMtPmFyZ3VtZW50KDApKTsKLSAgICBpZiAoYXJyYXkpIHsKLSAgICAgICAgLy8gdm9pZCBz
ZXQoaW4gV2ViR0w8VD5BcnJheSBhcnJheSwgW09wdGlvbmFsXSBpbiB1bnNpZ25lZCBsb25nIG9m
ZnNldCk7Ci0gICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IDA7Ci0gICAgICAgIGlmIChleGVjLT5h
cmd1bWVudENvdW50KCkgPT0gMikKLSAgICAgICAgICAgIG9mZnNldCA9IGV4ZWMtPmFyZ3VtZW50
KDEpLnRvSW50MzIoZXhlYyk7Ci0gICAgICAgIGlmICghaW1wbC0+c2V0KGFycmF5LCBvZmZzZXQp
KQotICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIElOREVYX1NJWkVfRVJSKTsKLQor
ICAgIGlmIChzZXRXZWJHTEFycmF5V2l0aFR5cGVkQXJyYXlBcmd1bWVudDxDLCBUPihleGVjLCBp
bXBsKSkKKyAgICAgICAgLy8gdm9pZCBzZXQoaW4gV2ViR0w8PkFycmF5IGFycmF5LCBbT3B0aW9u
YWxdIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRl
ZmluZWQoKTsKLSAgICB9CiAKICAgICBpZiAoZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkg
ewogICAgICAgICAvLyB2b2lkIHNldChpbiBzZXF1ZW5jZTxsb25nPiBhcnJheSwgW09wdGlvbmFs
XSBpbiB1bnNpZ25lZCBsb25nIG9mZnNldCk7CkBAIC02Niw5ICsxMzcsNyBAQCBKU0M6OkpTVmFs
dWUgc2V0V2ViR0xBcnJheUhlbHBlcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgVCogaW1wbCwgVCog
KCpjb252ZXJzaW9uRgogICAgICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID09IDIpCiAg
ICAgICAgICAgICBvZmZzZXQgPSBleGVjLT5hcmd1bWVudCgxKS50b0ludDMyKGV4ZWMpOwogICAg
ICAgICB1aW50MzJfdCBsZW5ndGggPSBhcnJheS0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcihl
eGVjLCAibGVuZ3RoIikpLnRvSW50MzIoZXhlYyk7Ci0gICAgICAgIGlmIChvZmZzZXQgPiBpbXBs
LT5sZW5ndGgoKQotICAgICAgICAgICAgfHwgb2Zmc2V0ICsgbGVuZ3RoID4gaW1wbC0+bGVuZ3Ro
KCkKLSAgICAgICAgICAgIHx8IG9mZnNldCArIGxlbmd0aCA8IG9mZnNldCkKKyAgICAgICAgaWYg
KCFpbXBsLT5pbmJvdW5kKG9mZnNldCwgbGVuZ3RoKSkKICAgICAgICAgICAgIHNldERPTUV4Y2Vw
dGlvbihleGVjLCBJTkRFWF9TSVpFX0VSUik7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
Zm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CkBAIC0xMDUsNDkgKzE3NCwx
MSBAQCBQYXNzUmVmUHRyPEM+IGNvbnN0cnVjdEFycmF5QnVmZmVyVmlld1dpdGhUeXBlZEFycmF5
QXJndW1lbnQoSlNDOjpFeGVjU3RhdGUqIGV4ZQogICAgICAgICByZXR1cm4gYXJyYXk7CiAgICAg
fQogCi0gICAgaWYgKGFycmF5LT5nZXRUeXBlKCkgPT0gc291cmNlVHlwZSkgewotICAgICAgICBt
ZW1jcHkoYXJyYXktPmJhc2VBZGRyZXNzKCksIHNvdXJjZS0+YmFzZUFkZHJlc3MoKSwgbGVuZ3Ro
ICogc2l6ZW9mKFQpKTsKKyAgICBpZiAoIShjb3B5VHlwZWRBcnJheUJ1ZmZlcjxDLCBUPihhcnJh
eS5nZXQoKSwgc291cmNlLmdldCgpLCBsZW5ndGgsIDApKSkgeworICAgICAgICBzZXRET01FeGNl
cHRpb24oZXhlYywgSU5ERVhfU0laRV9FUlIpOwogICAgICAgICByZXR1cm4gYXJyYXk7CiAgICAg
fQogCi0gICAgc3dpdGNoIChzb3VyY2VUeXBlKSB7Ci0gICAgY2FzZSBBcnJheUJ1ZmZlclZpZXc6
OlR5cGVJbnQ4OgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
Ci0gICAgICAgICAgICBhcnJheS0+c2V0KGksIChUKShzdGF0aWNfY2FzdDxUeXBlZEFycmF5QmFz
ZTxzaWduZWQgY2hhcj4gKj4oc291cmNlLmdldCgpKS0+aXRlbShpKSkpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEFycmF5QnVmZmVyVmlldzo6VHlwZVVpbnQ4OgotICAgIGNhc2UgQXJyYXlC
dWZmZXJWaWV3OjpUeXBlVWludDhDbGFtcGVkOgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBhcnJheS0+c2V0KGksIChUKShzdGF0aWNf
Y2FzdDxUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPiAqPihzb3VyY2UuZ2V0KCkpLT5pdGVt
KGkpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXJyYXlCdWZmZXJWaWV3OjpUeXBlSW50
MTY6Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKLSAgICAg
ICAgICAgIGFycmF5LT5zZXQoaSwgKFQpKHN0YXRpY19jYXN0PFR5cGVkQXJyYXlCYXNlPHNpZ25l
ZCBzaG9ydD4gKj4oc291cmNlLmdldCgpKS0+aXRlbShpKSkpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEFycmF5QnVmZmVyVmlldzo6VHlwZVVpbnQxNjoKLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICAgICAgYXJyYXktPnNldChpLCAoVCko
c3RhdGljX2Nhc3Q8VHlwZWRBcnJheUJhc2U8dW5zaWduZWQgc2hvcnQ+ICo+KHNvdXJjZS5nZXQo
KSktPml0ZW0oaSkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBcnJheUJ1ZmZlclZpZXc6
OlR5cGVJbnQzMjoKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytp
KQotICAgICAgICAgICAgYXJyYXktPnNldChpLCAoVCkoc3RhdGljX2Nhc3Q8VHlwZWRBcnJheUJh
c2U8aW50PiAqPihzb3VyY2UuZ2V0KCkpLT5pdGVtKGkpKSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgQXJyYXlCdWZmZXJWaWV3OjpUeXBlVWludDMyOgotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBhcnJheS0+c2V0KGksIChUKShz
dGF0aWNfY2FzdDxUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBpbnQ+ICo+KHNvdXJjZS5nZXQoKSkt
Pml0ZW0oaSkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBcnJheUJ1ZmZlclZpZXc6OlR5
cGVGbG9hdDMyOgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
Ci0gICAgICAgICAgICBhcnJheS0+c2V0KGksIChUKShzdGF0aWNfY2FzdDxUeXBlZEFycmF5QmFz
ZTxmbG9hdD4gKj4oc291cmNlLmdldCgpKS0+aXRlbShpKSkpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEFycmF5QnVmZmVyVmlldzo6VHlwZUZsb2F0NjQ6Ci0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGFycmF5LT5zZXQoaSwgKFQp
KHN0YXRpY19jYXN0PFR5cGVkQXJyYXlCYXNlPGRvdWJsZT4gKj4oc291cmNlLmdldCgpKS0+aXRl
bShpKSkpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gMDsK
LSAgICB9Ci0KICAgICByZXR1cm4gYXJyYXk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRmxvYXQzMkFycmF5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRmxvYXQzMkFycmF5Q3VzdG9tLmNwcAppbmRleCBjYWRlNTJlMzhlN2Iw
ZTllYjUxZWYyZjA3YWI4ZDg0ZTJkNGYzZjA4Li5kOGY1OGMyOTQzZGU2ZThhMmY3MzI3MWY3MmYy
ZjNlMDcxZWIyMDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Zs
b2F0MzJBcnJheUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNG
bG9hdDMyQXJyYXlDdXN0b20uY3BwCkBAIC00NSw3ICs0NSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pT
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBG
bG9hdDMyCiAKIEpTQzo6SlNWYWx1ZSBKU0Zsb2F0MzJBcnJheTo6c2V0KEpTQzo6RXhlY1N0YXRl
KiBleGVjKQogewotICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyKGV4ZWMsIGltcGwoKSwg
dG9GbG9hdDMyQXJyYXkpOworICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyPEZsb2F0MzJB
cnJheSwgZmxvYXQ+KGV4ZWMsIGltcGwoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSlNGbG9hdDMyQXJyYXlDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNGbG9hdDMyQXJyYXko
RXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNGbG9hdDY0QXJyYXlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNG
bG9hdDY0QXJyYXlDdXN0b20uY3BwCmluZGV4IDE1NjE5ZTMyNTJlYWEyYzJlMzc0ZjFhY2NiNmQx
Mzk2ZDcwYjNjOTMuLmU3NjQyYTA1ZWY0MzNmN2Q0MDc3YmFiMDMzZTY5MDA1OTk4ODFjNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmxvYXQ2NEFycmF5Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Zsb2F0NjRBcnJheUN1c3Rv
bS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEZsb2F0NjQKIAogSlNDOjpK
U1ZhbHVlIEpTRmxvYXQ2NEFycmF5OjpzZXQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAg
cmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXIoZXhlYywgaW1wbCgpLCB0b0Zsb2F0NjRBcnJheSk7
CisgICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8RmxvYXQ2NEFycmF5LCBkb3VibGU+KGV4
ZWMsIGltcGwoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNGbG9hdDY0
QXJyYXlDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNGbG9hdDY0QXJyYXkoRXhlY1N0YXRlKiBleGVj
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQxNkFycmF5Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50MTZBcnJheUN1c3RvbS5j
cHAKaW5kZXggYmM3N2E2ZDJiMmY5YjBiMzFlMjA5NDNhMzI5MzMxYTBiYzhlYTgwOC4uMDFiMzkz
OWJjYTQ3ZmM3ZjFlYjA3ODA0NzkxOTA1ZDllYjdhNzdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJbnQxNkFycmF5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0ludDE2QXJyYXlDdXN0b20uY3BwCkBAIC00NSw3ICs0NSw3IEBA
IEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBJbnQxNkFyCiAKIEpTQzo6SlNWYWx1ZSBKU0ludDE2QXJyYXk6OnNl
dChKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBl
cihleGVjLCBpbXBsKCksIHRvSW50MTZBcnJheSk7CisgICAgcmV0dXJuIHNldFdlYkdMQXJyYXlI
ZWxwZXI8SW50MTZBcnJheSwgc2hvcnQ+KGV4ZWMsIGltcGwoKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSlNJbnQxNkFycmF5Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTSW50
MTZBcnJheShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0ludDMyQXJyYXlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJbnQzMkFycmF5Q3VzdG9tLmNwcAppbmRleCBkODUyODdmNDQxYzkxMmY0NTc3YTUyYWQ1
YTBjMjU0MmZhM2JjMTRiLi5lYWE2ZTU3OGI0ZWQ2ZTNmN2I2N2U3NWQwMTViYzNmNzZkMmMxNmE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDMyQXJyYXlDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50MzJBcnJheUN1c3Rv
bS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEludDMyQXIKIAogSlNDOjpK
U1ZhbHVlIEpTSW50MzJBcnJheTo6c2V0KEpTQzo6RXhlY1N0YXRlKiBleGVjKQogewotICAgIHJl
dHVybiBzZXRXZWJHTEFycmF5SGVscGVyKGV4ZWMsIGltcGwoKSwgdG9JbnQzMkFycmF5KTsKKyAg
ICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcjxJbnQzMkFycmF5LCBpbnQ+KGV4ZWMsIGltcGwo
KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNJbnQzMkFycmF5Q29uc3Ry
dWN0b3I6OmNvbnN0cnVjdEpTSW50MzJBcnJheShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDhBcnJheUN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDhBcnJheUN1c3RvbS5jcHAKaW5kZXggYjZlMTUw
NzZmOWE4ZGJjYTljNDA4ZGMwZmIzOGY4NmVmYzFlNDZkMi4uNGYwNTNlMGU5N2VmMjA2YWRjZWEy
NGIxODVmNjU5ZWM5ZTIwYTUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJbnQ4QXJyYXlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSW50OEFycmF5Q3VzdG9tLmNwcApAQCAtNDYsNyArNDYsNyBAQCBKU0M6OkpTVmFsdWUgdG9K
UyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SW50OEFycgogCiBKU0M6OkpTVmFsdWUgSlNJbnQ4QXJyYXk6OnNldChKU0M6OkV4ZWNTdGF0ZSog
ZXhlYykKIHsKLSAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcihleGVjLCBpbXBsKCksIHRv
SW50OEFycmF5KTsKKyAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcjxJbnQ4QXJyYXksIHNp
Z25lZCBjaGFyPihleGVjLCBpbXBsKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEpTSW50OEFycmF5Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTSW50OEFycmF5KEV4ZWNTdGF0
ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDE2
QXJyYXlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50MTZBcnJh
eUN1c3RvbS5jcHAKaW5kZXggNDdiNDQwMmJhZTcyMWFiNGIzOGUyYTEwNTIzODNjNjI3YzE2ZmZm
Mi4uYjllNTJhMmYzZTI0OTY3ZjcwNGZlOGE5YjI3YmRhNTA4ZDEwMmRkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50MTZBcnJheUN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50MTZBcnJheUN1c3RvbS5jcHAKQEAgLTQ1
LDcgKzQ1LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFVpbnQxNkEKIAogSlNDOjpKU1ZhbHVlIEpTVWlu
dDE2QXJyYXk6OnNldChKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gc2V0V2Vi
R0xBcnJheUhlbHBlcihleGVjLCBpbXBsKCksIHRvVWludDE2QXJyYXkpOworICAgIHJldHVybiBz
ZXRXZWJHTEFycmF5SGVscGVyPFVpbnQxNkFycmF5LCB1bnNpZ25lZCBzaG9ydD4oZXhlYywgaW1w
bCgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1VpbnQxNkFycmF5Q29u
c3RydWN0b3I6OmNvbnN0cnVjdEpTVWludDE2QXJyYXkoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5Q3VzdG9tLmNwcAppbmRl
eCBhYThiODI2N2Y1YmY0MmI5ZmUyNjcwZTdjMTNmMjY3ZWMxM2E2MTQyLi43MGVmMGJhMjBmNzQz
ZjkzY2NiNWZiNGE4ZTYxMThiYzc0MWNjMzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5Q3VzdG9tLmNwcApAQCAtNDUsNyArNDUsNyBAQCBKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVWludDMyQQogCiBKU0M6OkpTVmFsdWUgSlNVaW50MzJBcnJheTo6c2V0KEpT
Qzo6RXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyKGV4
ZWMsIGltcGwoKSwgdG9VaW50MzJBcnJheSk7CisgICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxw
ZXI8VWludDMyQXJyYXksIHVuc2lnbmVkIGludD4oZXhlYywgaW1wbCgpKTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1VpbnQzMkFycmF5Q29uc3RydWN0b3I6OmNvbnN0cnVj
dEpTVWludDMyQXJyYXkoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTVWludDhBcnJheUN1c3RvbS5jcHAKaW5kZXggNmE0ZmExZGY1Y2RlZjAyYTRh
ZGM0NjJlMzM5MWY4MzNlNGNmMWM1NC4uZGI3YTQzYWI0NTQ5YzU4NjRhMzIyYjVjY2UxZTZkM2Ji
NzdmZmRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50OEFy
cmF5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4QXJy
YXlDdXN0b20uY3BwCkBAIC00NSw3ICs0NSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBVaW50OEFyCiAK
IEpTQzo6SlNWYWx1ZSBKU1VpbnQ4QXJyYXk6OnNldChKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIHsK
LSAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcihleGVjLCBpbXBsKCksIHRvVWludDhBcnJh
eSk7CisgICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8VWludDhBcnJheSwgdW5zaWduZWQg
Y2hhcj4oZXhlYywgaW1wbCgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBK
U1VpbnQ4QXJyYXlDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNVaW50OEFycmF5KEV4ZWNTdGF0ZSog
ZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDhDbGFt
cGVkQXJyYXlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50OENs
YW1wZWRBcnJheUN1c3RvbS5jcHAKaW5kZXggMmQ1Y2E3ODVkNWJhMGMzNWRlNTAxYzVjMTA4Njg0
Zjk2YjI4NTEzZS4uYzc5YmFjMGVkYmIyZWE2OGZkNWQxNDc0MWQ0OTBhOTU3MjE1YTA1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50OENsYW1wZWRBcnJheUN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50OENsYW1wZWRB
cnJheUN1c3RvbS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFVpbnQ4Q2wK
IAogSlNDOjpKU1ZhbHVlIEpTVWludDhDbGFtcGVkQXJyYXk6OnNldChKU0M6OkV4ZWNTdGF0ZSog
ZXhlYykKIHsKLSAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcihleGVjLCBpbXBsKCksIHRv
VWludDhDbGFtcGVkQXJyYXkpOworICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyPFVpbnQ4
Q2xhbXBlZEFycmF5LCB1bnNpZ25lZCBjaGFyPihleGVjLCBpbXBsKCkpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVWludDhDbGFtcGVkQXJyYXlDb25zdHJ1Y3Rvcjo6Y29u
c3RydWN0SlNVaW50OENsYW1wZWRBcnJheShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL0JpbmRpbmdzL3R5cGVkLWFycmF5LXNldC1mcm9tLXR5cGVkLmh0bWwg
Yi9QZXJmb3JtYW5jZVRlc3RzL0JpbmRpbmdzL3R5cGVkLWFycmF5LXNldC1mcm9tLXR5cGVkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzRmYzJjN2VjZWYyYjUyODAyMDQ3ZmRhYjgxMzdhNmE5MWFmOWUyNgot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQmluZGluZ3MvdHlwZWQtYXJyYXkt
c2V0LWZyb20tdHlwZWQuaHRtbApAQCAtMCwwICsxLDE4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9ydW5uZXIuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD4KKwordmFyIGxlbmd0aCA9IDEwMDAwMDAwOwordmFyIHNvdXJjZSA9IG5ldyBVaW50OEFy
cmF5KGxlbmd0aCk7Citmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgc291
cmNlW2ldID0gaTsKK30KK3ZhciB0YXJnZXQgPSBuZXcgRmxvYXQ2NEFycmF5KGxlbmd0aCk7CisK
K1BlcmZUZXN0UnVubmVyLnJ1bihmdW5jdGlvbigpIHsKKyAgICB0YXJnZXQuc2V0KHNvdXJjZSk7
Cit9KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBlZWM3NTAxNWYy
MzFlZmYyZjk3NGJmYjc3NGFiYjRmM2YyMzk2ODkuLmE2YThlZTQ1M2I4MTA5ZWZlNWZjMGMzN2Nh
NTk0MzBiOTc3ZTU1ZDQgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDct
MzEgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KKworICAg
ICAgICBUeXBlZEFycmF5IHNldCBtZXRob2QgaXMgc2xvdyB3aGVuIGNhbGxlZCB3aXRoIGFub3Ro
ZXIgdHlwZWQgYXJyYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkyNTU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBCaW5kaW5ncy90eXBlZC1hcnJheS1zZXQtZnJvbS10eXBlZC5odG1sOiBBZGRlZC4K
KwogMjAxMi0wNy0yOCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBydW4tcGVyZi10ZXN0cyBzaG91bGQgZ2VuZXJhdGUgYSByZXN1bHRzIHBhZ2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155922</attachid>
            <date>2012-08-01 16:45:48 -0700</date>
            <delta_ts>2012-08-02 11:00:55 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>bug-92556-20120801164529.patch</filename>
            <type>text/plain</type>
            <size>19157</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0Mzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGIzNDkyYmZiNDIyYzZlMGJhYjljMjIy
MjA3NjRlOWZkYjgwMGMzZmYuLjI5MTg2OTE2ZmRlZWE2NGVmYmYxZGQzMzY3ZDBkMDdhNGY4YTFh
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDgtMDEgIEFybmF1ZCBSZW5ldmllciAgPGEu
cmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KKworICAgICAgICBUeXBlZEFycmF5IHNldCBtZXRo
b2QgaXMgc2xvdyB3aGVuIGNhbGxlZCB3aXRoIGFub3RoZXIgdHlwZWQgYXJyYXkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNTU2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgorCisgICAgICAgIEFkZCBhbiBjaGVja0luYm91
bmREYXRhIGZ1bmN0aW9uIHRvIFR5cGVkQXJyYXlCYXNlIHRvIGNoZWNrIGlmIGEKKyAgICAgICAg
cG9zaXRpb24gd2lsbCBiZSBub3QgYmUgb3V0IG9mIGJvdW5kIG9yIG92ZXJmbG93IGZyb20gdGhl
IHR5cGVkIGFycmF5LgorCisgICAgICAgICogd3RmL1R5cGVkQXJyYXlCYXNlLmg6CisgICAgICAg
IChXVEY6OlR5cGVkQXJyYXlCYXNlOjppbmJvdW5kKToKKyAgICAgICAgKFR5cGVkQXJyYXlCYXNl
KToKKwogMjAxMi0wOC0wMSAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXBsYWNlIFdURjo6Z2V0Q3VycmVudExvY2FsVGltZSgpIHdpdGggR3JlZ29y
aWFuRGF0ZVRpbWU6OnNldFRvQ3VycmVudExvY2FsVGltZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2NlOGQ2
ZWZhNTYzYjU4M2Q1YmZjN2RmMDhmODEwOWQ0ZDE5NGE2Yi4uNzU5MDlkYzliNmViM2I3ZWU5MTBk
MWI4ODVkZDk1MWNjYmUxZTYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTA4
LTAxICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgVHlwZWRBcnJheSBzZXQgc3BlZWR1cAorCisgICAgICAgIFR5cGVkQXJyYXkgc2V0IG1l
dGhvZCBpcyBzbG93IHdoZW4gY2FsbGVkIHdpdGggYW5vdGhlciB0eXBlZCBhcnJheQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI1NTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCisKKyAgICAgICAgV2hlbiBzZXR0aW5nIG11
bHRpcGxlcyB2YWx1ZXMgdG8gYSB0eXBlZCBhcnJheSBmcm9tIGFuIGFycmF5IGxpa2UKKyAgICAg
ICAgZWxlbWVudCwgdHJ5IHRvIGRldGVybWluZSBpZiB0aGUgYXJndW1lbnQgaXMgYSB0eXBlZCBh
cnJheS4gSWYgc28sCisgICAgICAgIGNhc3QgdGhlIGFyZ3VtZW50IHRvIGEgdHlwZWQgYXJyYXks
IGFuZCByZWFkIGVhY2ggZWxlbWVudCB3aXRoIC5pdGVtKCkKKyAgICAgICAgbWV0aG9kLiBUaGF0
IGF2b2lkIHJlYWRpbmcgdGhlIHZhbHVlIGFzIGEgSlNWYWx1ZSwgYW5kIHNwZWVkdXBzIHNldAor
ICAgICAgICBtZXRob2QgYnkgYXBwcm94aW1hdGl2ZWx5IDEweC4KKworICAgICAgICBJbnRyb2R1
Y2Ugc2V0V2ViR0xBcnJheVdpdGhUeXBlZEFycmF5QXJndW1lbnQgdGVtcGxhdGUgZnVuY3Rpb24g
d2hpY2gKKyAgICAgICAgY2hlY2tzIGlmIGFyZ3VtZW50IGlzIGEgdHlwZWQgYXJyYXkuIElmIHNv
LCBpdCBjb3BpZXMgdGhlIGRhdGEgdG8KKyAgICAgICAgdGFyZ2V0IHR5cGVkIGFycmF5IGFuZCBy
ZXR1cm5zIHRydWUuIE90aGVyd2lzZSwgaXQgcmV0dXJucyBmYWxzZS4KKworICAgICAgICBJbnRy
b2R1Y2UgY29weVR5cGVkQXJyYXlCdWZmZXIgdGVtcGxhdGUgZnVuY3Rpb24gd2hpY2ggY29waWVz
IGRhdGEKKyAgICAgICAgZnJvbSBhIHR5cGVkIGFycmF5IHRvIGFub3RoZXIgb25lLiBUaGlzIGZ1
bmN0aW9uIGlzIGFsc28gdXNlZCBmcm9tCisgICAgICAgIGNvbnN0cnVjdEFycmF5QnVmZmVyVmll
d1dpdGhUeXBlZEFycmF5QXJndW1lbnQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0FycmF5
QnVmZmVyVmlld0hlbHBlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpjb3B5VHlwZWRBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRXZWJHTEFycmF5
V2l0aFR5cGVkQXJyYXlBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRXZWJHTEFycmF5
SGVscGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEFycmF5QnVmZmVyVmlld1dpdGhU
eXBlZEFycmF5QXJndW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRmxvYXQzMkFycmF5
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRmxvYXQzMkFycmF5OjpzZXQpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRmxvYXQ2NEFycmF5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTRmxvYXQ2NEFycmF5OjpzZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW50
MTZBcnJheUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0ludDE2QXJyYXk6OnNldCk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbnQzMkFycmF5Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTSW50MzJBcnJheTo6c2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0lu
dDhBcnJheUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0ludDhBcnJheTo6c2V0KToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1VpbnQxNkFycmF5Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVWludDE2QXJyYXk6OnNldCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNV
aW50MzJBcnJheUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1VpbnQzMkFycmF5Ojpz
ZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVWludDhBcnJheUN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1VpbnQ4QXJyYXk6OnNldCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1VpbnQ4
Q2xhbXBlZEFycmF5OjpzZXQpOgorCiAyMDEyLTA4LTAxICBBbnRvaW5lIExhYm91ciAgPHBpbWFu
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIHJlbW92ZSB1bnVzZWQgZmllbGRz
IGZyb20gTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvVHlwZWRBcnJheUJhc2UuaCBiL1NvdXJjZS9XVEYvd3RmL1R5cGVkQXJyYXlCYXNlLmgKaW5k
ZXggMTg1Y2Y3NzYyMzFjYjU5MTBiZTFkMjM2YzRmMTBmMDhjYWM2OTQ1Yy4uNmQyYTBmMmI4OGI2
OTk0YjU2ODIyNDI4YjMxN2M3YjU5MWI4OTQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
VHlwZWRBcnJheUJhc2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UeXBlZEFycmF5QmFzZS5oCkBA
IC03Myw2ICs3MywxNCBAQCBjbGFzcyBUeXBlZEFycmF5QmFzZSA6IHB1YmxpYyBBcnJheUJ1ZmZl
clZpZXcgewogICAgICAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8VD46OmRhdGEoKVtpbmRleF07
CiAgICAgfQogCisgICAgYm9vbCBjaGVja0luYm91bmREYXRhKHVuc2lnbmVkIG9mZnNldCwgdW5z
aWduZWQgcG9zKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIChvZmZzZXQgPD0gbV9sZW5n
dGgKKyAgICAgICAgICAgICYmIG9mZnNldCArIHBvcyA8PSBtX2xlbmd0aAorICAgICAgICAgICAg
Ly8gY2hlY2sgb3ZlcmZsb3cKKyAgICAgICAgICAgICYmIG9mZnNldCArIHBvcyA+PSBvZmZzZXQp
OworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIFR5cGVkQXJyYXlCYXNlKFBhc3NSZWZQdHI8QXJy
YXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQog
ICAgICAgICA6IEFycmF5QnVmZmVyVmlldyhidWZmZXIsIGJ5dGVPZmZzZXQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyVmlld0hlbHBlci5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaAppbmRl
eCA4YzZmNDI2Nzc3YWY3YjgyMGU5MTFjNjgyMzMyNDI1NzQwM2M3MGY4Li5lMDI4NTY0ODJmODY5
ZDlhNDYwZDRhY2FlODI5NzY1ZjVmY2FhYjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyVmlld0hlbHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmgKQEAgLTQxLDIzICs0MSw5NCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXRlbXBsYXRlIDxjbGFzcyBUPgotSlNDOjpKU1Zh
bHVlIHNldFdlYkdMQXJyYXlIZWxwZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIFQqIGltcGwsIFQq
ICgqY29udmVyc2lvbkZ1bmMpKEpTQzo6SlNWYWx1ZSkpCit0ZW1wbGF0ZTxjbGFzcyBDLCB0eXBl
bmFtZSBUPgorYm9vbCBjb3B5VHlwZWRBcnJheUJ1ZmZlcihDKiB0YXJnZXQsIEFycmF5QnVmZmVy
Vmlldyogc291cmNlLCB1bnNpZ25lZCBzb3VyY2VMZW5ndGgsIHVuc2lnbmVkIG9mZnNldCkKK3sK
KyAgICBBcnJheUJ1ZmZlclZpZXc6OlZpZXdUeXBlIHNvdXJjZVR5cGUgPSBzb3VyY2UtPmdldFR5
cGUoKTsKKyAgICBBU1NFUlQoc291cmNlVHlwZSAhPSBBcnJheUJ1ZmZlclZpZXc6OlR5cGVEYXRh
Vmlldyk7CisKKyAgICBpZiAodGFyZ2V0LT5nZXRUeXBlKCkgPT0gc291cmNlVHlwZSkgeworICAg
ICAgICBpZiAoIXRhcmdldC0+c2V0KHN0YXRpY19jYXN0PEMqPihzb3VyY2UpLCBvZmZzZXQpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
KyAgICBpZiAoIXRhcmdldC0+Y2hlY2tJbmJvdW5kRGF0YShvZmZzZXQsIHNvdXJjZUxlbmd0aCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAoc291cmNlVHlwZSkgeworICAg
IGNhc2UgQXJyYXlCdWZmZXJWaWV3OjpUeXBlSW50ODoKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHNvdXJjZUxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGFyZ2V0LT5zZXQoaSAr
IG9mZnNldCwgKFQpKHN0YXRpY19jYXN0PFR5cGVkQXJyYXlCYXNlPHNpZ25lZCBjaGFyPiAqPihz
b3VyY2UpLT5pdGVtKGkpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXJyYXlCdWZmZXJW
aWV3OjpUeXBlVWludDg6CisgICAgY2FzZSBBcnJheUJ1ZmZlclZpZXc6OlR5cGVVaW50OENsYW1w
ZWQ6CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzb3VyY2VMZW5ndGg7ICsraSkK
KyAgICAgICAgICAgIHRhcmdldC0+c2V0KGkgKyBvZmZzZXQsIChUKShzdGF0aWNfY2FzdDxUeXBl
ZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPiAqPihzb3VyY2UpLT5pdGVtKGkpKSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQXJyYXlCdWZmZXJWaWV3OjpUeXBlSW50MTY6CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzb3VyY2VMZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRh
cmdldC0+c2V0KGkgKyBvZmZzZXQsIChUKShzdGF0aWNfY2FzdDxUeXBlZEFycmF5QmFzZTxzaWdu
ZWQgc2hvcnQ+ICo+KHNvdXJjZSktPml0ZW0oaSkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBBcnJheUJ1ZmZlclZpZXc6OlR5cGVVaW50MTY6CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzb3VyY2VMZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRhcmdldC0+c2V0KGkgKyBv
ZmZzZXQsIChUKShzdGF0aWNfY2FzdDxUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBzaG9ydD4gKj4o
c291cmNlKS0+aXRlbShpKSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFycmF5QnVmZmVy
Vmlldzo6VHlwZUludDMyOgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc291cmNl
TGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0YXJnZXQtPnNldChpICsgb2Zmc2V0LCAoVCkoc3Rh
dGljX2Nhc3Q8VHlwZWRBcnJheUJhc2U8aW50PiAqPihzb3VyY2UpLT5pdGVtKGkpKSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQXJyYXlCdWZmZXJWaWV3OjpUeXBlVWludDMyOgorICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc291cmNlTGVuZ3RoOyArK2kpCisgICAgICAgICAg
ICB0YXJnZXQtPnNldChpICsgb2Zmc2V0LCAoVCkoc3RhdGljX2Nhc3Q8VHlwZWRBcnJheUJhc2U8
dW5zaWduZWQgaW50PiAqPihzb3VyY2UpLT5pdGVtKGkpKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQXJyYXlCdWZmZXJWaWV3OjpUeXBlRmxvYXQzMjoKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHNvdXJjZUxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGFyZ2V0LT5zZXQo
aSArIG9mZnNldCwgKFQpKHN0YXRpY19jYXN0PFR5cGVkQXJyYXlCYXNlPGZsb2F0PiAqPihzb3Vy
Y2UpLT5pdGVtKGkpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXJyYXlCdWZmZXJWaWV3
OjpUeXBlRmxvYXQ2NDoKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNvdXJjZUxl
bmd0aDsgKytpKQorICAgICAgICAgICAgdGFyZ2V0LT5zZXQoaSArIG9mZnNldCwgKFQpKHN0YXRp
Y19jYXN0PFR5cGVkQXJyYXlCYXNlPGRvdWJsZT4gKj4oc291cmNlKS0+aXRlbShpKSkpOworICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIEMsIHR5cGVuYW1lIFQ+Citib29sIHNl
dFdlYkdMQXJyYXlXaXRoVHlwZWRBcnJheUFyZ3VtZW50KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBD
KiBpbXBsKQoreworICAgIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGFycmF5ID0gdG9BcnJheUJ1
ZmZlclZpZXcoZXhlYy0+YXJndW1lbnQoMCkpOworICAgIGlmICghYXJyYXkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIEFycmF5QnVmZmVyVmlldzo6Vmlld1R5cGUgYXJyYXlUeXBlID0g
YXJyYXktPmdldFR5cGUoKTsKKyAgICBpZiAoYXJyYXlUeXBlID09IEFycmF5QnVmZmVyVmlldzo6
VHlwZURhdGFWaWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB1bnNpZ25lZCBvZmZz
ZXQgPSAwOworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMikKKyAgICAgICAgb2Zm
c2V0ID0gZXhlYy0+YXJndW1lbnQoMSkudG9JbnQzMihleGVjKTsKKworICAgIHVpbnQzMl90IGxl
bmd0aCA9IGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRp
ZmllcihleGVjLCAibGVuZ3RoIikpLnRvVUludDMyKGV4ZWMpOworCisgICAgaWYgKCEoY29weVR5
cGVkQXJyYXlCdWZmZXI8QywgVD4oaW1wbCwgYXJyYXkuZ2V0KCksIGxlbmd0aCwgb2Zmc2V0KSkp
CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBJTkRFWF9TSVpFX0VSUik7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgQywgdHlwZW5hbWUgVD4KK0pTQzo6SlNW
YWx1ZSBzZXRXZWJHTEFycmF5SGVscGVyKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBDKiBpbXBsKQog
ewogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gSlND
Ojp0aHJvd1N5bnRheEVycm9yKGV4ZWMpOwogCi0gICAgVCogYXJyYXkgPSAoKmNvbnZlcnNpb25G
dW5jKShleGVjLT5hcmd1bWVudCgwKSk7Ci0gICAgaWYgKGFycmF5KSB7Ci0gICAgICAgIC8vIHZv
aWQgc2V0KGluIFdlYkdMPFQ+QXJyYXkgYXJyYXksIFtPcHRpb25hbF0gaW4gdW5zaWduZWQgbG9u
ZyBvZmZzZXQpOwotICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSAwOwotICAgICAgICBpZiAoZXhl
Yy0+YXJndW1lbnRDb3VudCgpID09IDIpCi0gICAgICAgICAgICBvZmZzZXQgPSBleGVjLT5hcmd1
bWVudCgxKS50b0ludDMyKGV4ZWMpOwotICAgICAgICBpZiAoIWltcGwtPnNldChhcnJheSwgb2Zm
c2V0KSkKLSAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBJTkRFWF9TSVpFX0VSUik7
Ci0KKyAgICBpZiAoc2V0V2ViR0xBcnJheVdpdGhUeXBlZEFycmF5QXJndW1lbnQ8QywgVD4oZXhl
YywgaW1wbCkpCisgICAgICAgIC8vIHZvaWQgc2V0KGluIFdlYkdMPD5BcnJheSBhcnJheSwgW09w
dGlvbmFsXSBpbiB1bnNpZ25lZCBsb25nIG9mZnNldCk7CiAgICAgICAgIHJldHVybiBKU0M6Ompz
VW5kZWZpbmVkKCk7Ci0gICAgfQogCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0
KCkpIHsKICAgICAgICAgLy8gdm9pZCBzZXQoaW4gc2VxdWVuY2U8bG9uZz4gYXJyYXksIFtPcHRp
b25hbF0gaW4gdW5zaWduZWQgbG9uZyBvZmZzZXQpOwpAQCAtNjYsOSArMTM3LDcgQEAgSlNDOjpK
U1ZhbHVlIHNldFdlYkdMQXJyYXlIZWxwZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIFQqIGltcGws
IFQqICgqY29udmVyc2lvbkYKICAgICAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9PSAy
KQogICAgICAgICAgICAgb2Zmc2V0ID0gZXhlYy0+YXJndW1lbnQoMSkudG9JbnQzMihleGVjKTsK
ICAgICAgICAgdWludDMyX3QgbGVuZ3RoID0gYXJyYXktPmdldChleGVjLCBKU0M6OklkZW50aWZp
ZXIoZXhlYywgImxlbmd0aCIpKS50b0ludDMyKGV4ZWMpOwotICAgICAgICBpZiAob2Zmc2V0ID4g
aW1wbC0+bGVuZ3RoKCkKLSAgICAgICAgICAgIHx8IG9mZnNldCArIGxlbmd0aCA+IGltcGwtPmxl
bmd0aCgpCi0gICAgICAgICAgICB8fCBvZmZzZXQgKyBsZW5ndGggPCBvZmZzZXQpCisgICAgICAg
IGlmICghaW1wbC0+Y2hlY2tJbmJvdW5kRGF0YShvZmZzZXQsIGxlbmd0aCkpCiAgICAgICAgICAg
ICBzZXRET01FeGNlcHRpb24oZXhlYywgSU5ERVhfU0laRV9FUlIpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewpAQCAt
MTA1LDQ5ICsxNzQsMTEgQEAgUGFzc1JlZlB0cjxDPiBjb25zdHJ1Y3RBcnJheUJ1ZmZlclZpZXdX
aXRoVHlwZWRBcnJheUFyZ3VtZW50KEpTQzo6RXhlY1N0YXRlKiBleGUKICAgICAgICAgcmV0dXJu
IGFycmF5OwogICAgIH0KIAotICAgIGlmIChhcnJheS0+Z2V0VHlwZSgpID09IHNvdXJjZVR5cGUp
IHsKLSAgICAgICAgbWVtY3B5KGFycmF5LT5iYXNlQWRkcmVzcygpLCBzb3VyY2UtPmJhc2VBZGRy
ZXNzKCksIGxlbmd0aCAqIHNpemVvZihUKSk7CisgICAgaWYgKCEoY29weVR5cGVkQXJyYXlCdWZm
ZXI8QywgVD4oYXJyYXkuZ2V0KCksIHNvdXJjZS5nZXQoKSwgbGVuZ3RoLCAwKSkpIHsKKyAgICAg
ICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIElOREVYX1NJWkVfRVJSKTsKICAgICAgICAgcmV0dXJu
IGFycmF5OwogICAgIH0KIAotICAgIHN3aXRjaCAoc291cmNlVHlwZSkgewotICAgIGNhc2UgQXJy
YXlCdWZmZXJWaWV3OjpUeXBlSW50ODoKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKQotICAgICAgICAgICAgYXJyYXktPnNldChpLCAoVCkoc3RhdGljX2Nhc3Q8
VHlwZWRBcnJheUJhc2U8c2lnbmVkIGNoYXI+ICo+KHNvdXJjZS5nZXQoKSktPml0ZW0oaSkpKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBcnJheUJ1ZmZlclZpZXc6OlR5cGVVaW50ODoKLSAg
ICBjYXNlIEFycmF5QnVmZmVyVmlldzo6VHlwZVVpbnQ4Q2xhbXBlZDoKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICAgICAgYXJyYXktPnNldChp
LCAoVCkoc3RhdGljX2Nhc3Q8VHlwZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj4gKj4oc291cmNl
LmdldCgpKS0+aXRlbShpKSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFycmF5QnVmZmVy
Vmlldzo6VHlwZUludDE2OgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpCi0gICAgICAgICAgICBhcnJheS0+c2V0KGksIChUKShzdGF0aWNfY2FzdDxUeXBlZEFy
cmF5QmFzZTxzaWduZWQgc2hvcnQ+ICo+KHNvdXJjZS5nZXQoKSktPml0ZW0oaSkpKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBBcnJheUJ1ZmZlclZpZXc6OlR5cGVVaW50MTY6Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGFycmF5
LT5zZXQoaSwgKFQpKHN0YXRpY19jYXN0PFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIHNob3J0PiAq
Pihzb3VyY2UuZ2V0KCkpLT5pdGVtKGkpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXJy
YXlCdWZmZXJWaWV3OjpUeXBlSW50MzI6Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGFycmF5LT5zZXQoaSwgKFQpKHN0YXRpY19jYXN0
PFR5cGVkQXJyYXlCYXNlPGludD4gKj4oc291cmNlLmdldCgpKS0+aXRlbShpKSkpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEFycmF5QnVmZmVyVmlldzo6VHlwZVVpbnQzMjoKLSAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICAgICAgYXJyYXkt
PnNldChpLCAoVCkoc3RhdGljX2Nhc3Q8VHlwZWRBcnJheUJhc2U8dW5zaWduZWQgaW50PiAqPihz
b3VyY2UuZ2V0KCkpLT5pdGVtKGkpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXJyYXlC
dWZmZXJWaWV3OjpUeXBlRmxvYXQzMjoKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKQotICAgICAgICAgICAgYXJyYXktPnNldChpLCAoVCkoc3RhdGljX2Nhc3Q8
VHlwZWRBcnJheUJhc2U8ZmxvYXQ+ICo+KHNvdXJjZS5nZXQoKSktPml0ZW0oaSkpKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBBcnJheUJ1ZmZlclZpZXc6OlR5cGVGbG9hdDY0OgotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBhcnJh
eS0+c2V0KGksIChUKShzdGF0aWNfY2FzdDxUeXBlZEFycmF5QmFzZTxkb3VibGU+ICo+KHNvdXJj
ZS5nZXQoKSktPml0ZW0oaSkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgfQotCiAgICAgcmV0dXJuIGFycmF5OwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Zsb2F0MzJBcnJheUN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Zsb2F0MzJBcnJheUN1c3RvbS5jcHAKaW5kZXgg
Y2FkZTUyZTM4ZTdiMGU5ZWI1MWVmMmYwN2FiOGQ4NGUyZDRmM2YwOC4uZDhmNThjMjk0M2RlNmU4
YTJmNzMyNzFmNzJmMmYzZTA3MWViMjA2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNGbG9hdDMyQXJyYXlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRmxvYXQzMkFycmF5Q3VzdG9tLmNwcApAQCAtNDUsNyArNDUsNyBAQCBKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRmxvYXQzMgogCiBKU0M6OkpTVmFsdWUgSlNGbG9hdDMyQXJyYXk6OnNldChK
U0M6OkV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcihl
eGVjLCBpbXBsKCksIHRvRmxvYXQzMkFycmF5KTsKKyAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhl
bHBlcjxGbG9hdDMyQXJyYXksIGZsb2F0PihleGVjLCBpbXBsKCkpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEpTRmxvYXQzMkFycmF5Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpT
RmxvYXQzMkFycmF5KEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRmxvYXQ2NEFycmF5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRmxvYXQ2NEFycmF5Q3VzdG9tLmNwcAppbmRleCAxNTYxOWUzMjUyZWFhMmMy
ZTM3NGYxYWNjYjZkMTM5NmQ3MGIzYzkzLi5lNzY0MmEwNWVmNDMzZjdkNDA3N2JhYjAzM2U2OTAw
NTk5ODgxYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Zsb2F0
NjRBcnJheUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGbG9h
dDY0QXJyYXlDdXN0b20uY3BwCkBAIC00NSw3ICs0NSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBGbG9h
dDY0CiAKIEpTQzo6SlNWYWx1ZSBKU0Zsb2F0NjRBcnJheTo6c2V0KEpTQzo6RXhlY1N0YXRlKiBl
eGVjKQogewotICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyKGV4ZWMsIGltcGwoKSwgdG9G
bG9hdDY0QXJyYXkpOworICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyPEZsb2F0NjRBcnJh
eSwgZG91YmxlPihleGVjLCBpbXBsKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTRmxvYXQ2NEFycmF5KEV4
ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW50MTZBcnJheUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDE2
QXJyYXlDdXN0b20uY3BwCmluZGV4IGJjNzdhNmQyYjJmOWIwYjMxZTIwOTQzYTMyOTMzMWEwYmM4
ZWE4MDguLjAxYjM5MzliY2E0N2ZjN2YxZWIwNzgwNDc5MTkwNWQ5ZWI3YTc3YTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50MTZBcnJheUN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQxNkFycmF5Q3VzdG9tLmNwcApAQCAt
NDUsNyArNDUsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW50MTZBcgogCiBKU0M6OkpTVmFsdWUgSlNJ
bnQxNkFycmF5OjpzZXQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIHNldFdl
YkdMQXJyYXlIZWxwZXIoZXhlYywgaW1wbCgpLCB0b0ludDE2QXJyYXkpOworICAgIHJldHVybiBz
ZXRXZWJHTEFycmF5SGVscGVyPEludDE2QXJyYXksIHNob3J0PihleGVjLCBpbXBsKCkpOwogfQog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTSW50MTZBcnJheUNvbnN0cnVjdG9yOjpj
b25zdHJ1Y3RKU0ludDE2QXJyYXkoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQzMkFycmF5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSW50MzJBcnJheUN1c3RvbS5jcHAKaW5kZXggZDg1Mjg3ZjQ0MWM5
MTJmNDU3N2E1MmFkNWEwYzI1NDJmYTNiYzE0Yi4uZWFhNmU1NzhiNGVkNmUzZjdiNjdlNzVkMDE1
YmMzZjc2ZDJjMTZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
bnQzMkFycmF5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lu
dDMyQXJyYXlDdXN0b20uY3BwCkBAIC00NSw3ICs0NSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnQz
MkFyCiAKIEpTQzo6SlNWYWx1ZSBKU0ludDMyQXJyYXk6OnNldChKU0M6OkV4ZWNTdGF0ZSogZXhl
YykKIHsKLSAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcihleGVjLCBpbXBsKCksIHRvSW50
MzJBcnJheSk7CisgICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8SW50MzJBcnJheSwgaW50
PihleGVjLCBpbXBsKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTSW50
MzJBcnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0ludDMyQXJyYXkoRXhlY1N0YXRlKiBleGVj
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQ4QXJyYXlDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQ4QXJyYXlDdXN0b20uY3Bw
CmluZGV4IGI2ZTE1MDc2ZjlhOGRiY2E5YzQwOGRjMGZiMzhmODZlZmMxZTQ2ZDIuLjRmMDUzZTBl
OTdlZjIwNmFkY2VhMjRiMTg1ZjY1OWVjOWUyMGE1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSW50OEFycmF5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0ludDhBcnJheUN1c3RvbS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEludDhBcnIKIAogSlNDOjpKU1ZhbHVlIEpTSW50OEFycmF5OjpzZXQoSlND
OjpFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXIoZXhl
YywgaW1wbCgpLCB0b0ludDhBcnJheSk7CisgICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8
SW50OEFycmF5LCBzaWduZWQgY2hhcj4oZXhlYywgaW1wbCgpKTsKIH0KIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBKU0ludDhBcnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0ludDhB
cnJheShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1VpbnQxNkFycmF5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVWludDE2QXJyYXlDdXN0b20uY3BwCmluZGV4IDQ3YjQ0MDJiYWU3MjFhYjRiMzhlMmExMDUy
MzgzYzYyN2MxNmZmZjIuLmI5ZTUyYTJmM2UyNDk2N2Y3MDRmZThhOWIyN2JkYTUwOGQxMDJkZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDE2QXJyYXlDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDE2QXJyYXlDdXN0
b20uY3BwCkBAIC00NSw3ICs0NSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBVaW50MTZBCiAKIEpTQzo6
SlNWYWx1ZSBKU1VpbnQxNkFycmF5OjpzZXQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAg
cmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXIoZXhlYywgaW1wbCgpLCB0b1VpbnQxNkFycmF5KTsK
KyAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcjxVaW50MTZBcnJheSwgdW5zaWduZWQgc2hv
cnQ+KGV4ZWMsIGltcGwoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNV
aW50MTZBcnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1VpbnQxNkFycmF5KEV4ZWNTdGF0ZSog
ZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDMyQXJy
YXlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50MzJBcnJheUN1
c3RvbS5jcHAKaW5kZXggYWE4YjgyNjdmNWJmNDJiOWZlMjY3MGU3YzEzZjI2N2VjMTNhNjE0Mi4u
NzBlZjBiYTIwZjc0M2Y5M2NjYjVmYjRhOGU2MTE4YmM3NDFjYzMyNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3RvbS5jcHAKQEAgLTQ1LDcg
KzQ1LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFVpbnQzMkEKIAogSlNDOjpKU1ZhbHVlIEpTVWludDMy
QXJyYXk6OnNldChKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gc2V0V2ViR0xB
cnJheUhlbHBlcihleGVjLCBpbXBsKCksIHRvVWludDMyQXJyYXkpOworICAgIHJldHVybiBzZXRX
ZWJHTEFycmF5SGVscGVyPFVpbnQzMkFycmF5LCB1bnNpZ25lZCBpbnQ+KGV4ZWMsIGltcGwoKSk7
CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNVaW50MzJBcnJheUNvbnN0cnVj
dG9yOjpjb25zdHJ1Y3RKU1VpbnQzMkFycmF5KEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDhBcnJheUN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwCmluZGV4IDZhNGZh
MWRmNWNkZWYwMmE0YWRjNDYyZTMzOTFmODMzZTRjZjFjNTQuLmRiN2E0M2FiNDU0OWM1ODY0YTMy
MmI1Y2NlMWU2ZDNiYjc3ZmZkZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVWludDhBcnJheUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcApAQCAtNDUsNyArNDUsNyBAQCBKU0M6OkpTVmFsdWUg
dG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVWludDhBcgogCiBKU0M6OkpTVmFsdWUgSlNVaW50OEFycmF5OjpzZXQoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXIoZXhlYywgaW1wbCgp
LCB0b1VpbnQ4QXJyYXkpOworICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyPFVpbnQ4QXJy
YXksIHVuc2lnbmVkIGNoYXI+KGV4ZWMsIGltcGwoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSlNVaW50OEFycmF5Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVWludDhBcnJh
eShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwCmluZGV4IDJkNWNhNzg1ZDViYTBjMzVk
ZTUwMWM1YzEwODY4NGY5NmIyODUxM2UuLmM3OWJhYzBlZGJiMmVhNjhmZDVkMTQ3NDFkNDkwYTk1
NzIxNWEwNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDhD
bGFtcGVkQXJyYXlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwCkBAIC00NSw3ICs0NSw3IEBAIEpTQzo6SlNWYWx1
ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBVaW50OENsCiAKIEpTQzo6SlNWYWx1ZSBKU1VpbnQ4Q2xhbXBlZEFycmF5OjpzZXQoSlND
OjpFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXIoZXhl
YywgaW1wbCgpLCB0b1VpbnQ4Q2xhbXBlZEFycmF5KTsKKyAgICByZXR1cm4gc2V0V2ViR0xBcnJh
eUhlbHBlcjxVaW50OENsYW1wZWRBcnJheSwgdW5zaWduZWQgY2hhcj4oZXhlYywgaW1wbCgpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1VpbnQ4Q2xhbXBlZEFycmF5Q29u
c3RydWN0b3I6OmNvbnN0cnVjdEpTVWludDhDbGFtcGVkQXJyYXkoRXhlY1N0YXRlKiBleGVjKQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9CaW5kaW5ncy90eXBlZC1hcnJheS1zZXQtZnJv
bS10eXBlZC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9CaW5kaW5ncy90eXBlZC1hcnJheS1zZXQt
ZnJvbS10eXBlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0ZmMyYzdlY2VmMmI1MjgwMjA0N2ZkYWI4MTM3
YTZhOTFhZjllMjYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0JpbmRpbmdz
L3R5cGVkLWFycmF5LXNldC1mcm9tLXR5cGVkLmh0bWwKQEAgLTAsMCArMSwxOCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcnVubmVyLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+CisKK3ZhciBsZW5ndGggPSAxMDAwMDAwMDsKK3ZhciBzb3VyY2Ug
PSBuZXcgVWludDhBcnJheShsZW5ndGgpOworZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkr
KykgeworICAgIHNvdXJjZVtpXSA9IGk7Cit9Cit2YXIgdGFyZ2V0ID0gbmV3IEZsb2F0NjRBcnJh
eShsZW5ndGgpOworCitQZXJmVGVzdFJ1bm5lci5ydW4oZnVuY3Rpb24oKSB7CisgICAgdGFyZ2V0
LnNldChzb3VyY2UpOworfSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKwpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwppbmRl
eCAwZWVjNzUwMTVmMjMxZWZmMmY5NzRiZmI3NzRhYmI0ZjNmMjM5Njg5Li4zMjI3ZjYzYzNhZTQx
ZjA0NTQ1OTRmNWI4YjVkNDg3NDAyMDlmYjlkIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEy
IEBACisyMDEyLTA4LTAxICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3Vu
Zy5jb20+CisKKyAgICAgICAgVHlwZWRBcnJheSBzZXQgbWV0aG9kIGlzIHNsb3cgd2hlbiBjYWxs
ZWQgd2l0aCBhbm90aGVyIHR5cGVkIGFycmF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MjU1NgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGgg
UnVzc2VsbC4KKworICAgICAgICAqIEJpbmRpbmdzL3R5cGVkLWFycmF5LXNldC1mcm9tLXR5cGVk
Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTA3LTI4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIHJ1bi1wZXJmLXRlc3RzIHNob3VsZCBnZW5lcmF0ZSBhIHJlc3VsdHMg
cGFnZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156125</attachid>
            <date>2012-08-02 11:00:57 -0700</date>
            <delta_ts>2012-08-02 12:20:50 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>bug-92556-20120802110037.patch</filename>
            <type>text/plain</type>
            <size>19128</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0Mzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGIzNDkyYmZiNDIyYzZlMGJhYjljMjIy
MjA3NjRlOWZkYjgwMGMzZmYuLjUzM2Y4MTlhNWZiMmY2OTA3YzljZDA1NGU2NDc5Yjc4NjhhYzA5
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDgtMDIgIEFybmF1ZCBSZW5ldmllciAgPGEu
cmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KKworICAgICAgICBUeXBlZEFycmF5IHNldCBtZXRo
b2QgaXMgc2xvdyB3aGVuIGNhbGxlZCB3aXRoIGFub3RoZXIgdHlwZWQgYXJyYXkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNTU2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgorCisgICAgICAgIEFkZCBhbiBjaGVja0luYm91
bmREYXRhIGZ1bmN0aW9uIHRvIFR5cGVkQXJyYXlCYXNlIHRvIGNoZWNrIGlmIGEKKyAgICAgICAg
cG9zaXRpb24gd2lsbCBiZSBub3QgYmUgb3V0IG9mIGJvdW5kIG9yIG92ZXJmbG93IGZyb20gdGhl
IHR5cGVkIGFycmF5LgorCisgICAgICAgICogd3RmL1R5cGVkQXJyYXlCYXNlLmg6CisgICAgICAg
IChXVEY6OlR5cGVkQXJyYXlCYXNlOjpjaGVja0luYm91bmREYXRhKToKKyAgICAgICAgKFR5cGVk
QXJyYXlCYXNlKToKKwogMjAxMi0wOC0wMSAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZXBsYWNlIFdURjo6Z2V0Q3VycmVudExvY2FsVGltZSgpIHdp
dGggR3JlZ29yaWFuRGF0ZVRpbWU6OnNldFRvQ3VycmVudExvY2FsVGltZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggMGYzNTdkODBkN2VhYTAwOGVlYzJjZTEzZWFmNDQxZWJmYjAxYWU5MS4uMTViZTI1NjQxZGEy
MjNmMzlkY2QzYjllMTQxMDdiMmRlZTE5OTRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBA
CisyMDEyLTA4LTAyICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgVHlwZWRBcnJheSBzZXQgbWV0aG9kIGlzIHNsb3cgd2hlbiBjYWxsZWQg
d2l0aCBhbm90aGVyIHR5cGVkIGFycmF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MjU1NgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVz
c2VsbC4KKworICAgICAgICBXaGVuIHNldHRpbmcgbXVsdGlwbGVzIHZhbHVlcyB0byBhIHR5cGVk
IGFycmF5IGZyb20gYW4gYXJyYXkgbGlrZQorICAgICAgICBlbGVtZW50LCB0cnkgdG8gZGV0ZXJt
aW5lIGlmIHRoZSBhcmd1bWVudCBpcyBhIHR5cGVkIGFycmF5LiBJZiBzbywKKyAgICAgICAgY2Fz
dCB0aGUgYXJndW1lbnQgdG8gYSB0eXBlZCBhcnJheSwgYW5kIHJlYWQgZWFjaCBlbGVtZW50IHdp
dGggLml0ZW0oKQorICAgICAgICBtZXRob2QuIFRoYXQgYXZvaWQgcmVhZGluZyB0aGUgdmFsdWUg
YXMgYSBKU1ZhbHVlLCBhbmQgc3BlZWR1cHMgc2V0CisgICAgICAgIG1ldGhvZCBieSBhcHByb3hp
bWF0aXZlbHkgMTB4LgorCisgICAgICAgIEludHJvZHVjZSBzZXRXZWJHTEFycmF5V2l0aFR5cGVk
QXJyYXlBcmd1bWVudCB0ZW1wbGF0ZSBmdW5jdGlvbiB3aGljaAorICAgICAgICBjaGVja3MgaWYg
YXJndW1lbnQgaXMgYSB0eXBlZCBhcnJheS4gSWYgc28sIGl0IGNvcGllcyB0aGUgZGF0YSB0bwor
ICAgICAgICB0YXJnZXQgdHlwZWQgYXJyYXkgYW5kIHJldHVybnMgdHJ1ZS4gT3RoZXJ3aXNlLCBp
dCByZXR1cm5zIGZhbHNlLgorCisgICAgICAgIEludHJvZHVjZSBjb3B5VHlwZWRBcnJheUJ1ZmZl
ciB0ZW1wbGF0ZSBmdW5jdGlvbiB3aGljaCBjb3BpZXMgZGF0YQorICAgICAgICBmcm9tIGEgdHlw
ZWQgYXJyYXkgdG8gYW5vdGhlciBvbmUuIFRoaXMgZnVuY3Rpb24gaXMgYWxzbyB1c2VkIGZyb20K
KyAgICAgICAgY29uc3RydWN0QXJyYXlCdWZmZXJWaWV3V2l0aFR5cGVkQXJyYXlBcmd1bWVudC4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlUeXBlZEFycmF5QnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldFdlYkdMQXJyYXlXaXRoVHlwZWRBcnJheUFyZ3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OnNldFdlYkdMQXJyYXlIZWxwZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Y29uc3RydWN0QXJyYXlCdWZmZXJWaWV3V2l0aFR5cGVkQXJyYXlBcmd1bWVudCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNGbG9hdDMyQXJyYXlDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNGbG9hdDMyQXJyYXk6OnNldCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNGbG9h
dDY0QXJyYXlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNGbG9hdDY0QXJyYXk6OnNl
dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbnQxNkFycmF5Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTSW50MTZBcnJheTo6c2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0ludDMyQXJyYXlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNJbnQzMkFycmF5Ojpz
ZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW50OEFycmF5Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTSW50OEFycmF5OjpzZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
VWludDE2QXJyYXlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNVaW50MTZBcnJheTo6
c2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVWludDMyQXJyYXk6OnNldCk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVWludDhBcnJh
eTo6c2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVWludDhDbGFtcGVkQXJyYXk6OnNldCk6CisKIDIw
MTItMDgtMDEgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4K
IAogICAgICAgICBbVjhdIFR5cGVkQXJyYXkgYmluZGluZyBwZXJmb3JtYW5jZSBpbXByb3ZlbWVu
dHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1R5cGVkQXJyYXlCYXNlLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9UeXBlZEFycmF5QmFzZS5oCmluZGV4IDE4NWNmNzc2MjMxY2I1OTEwYmUxZDIzNmM0
ZjEwZjA4Y2FjNjk0NWMuLjZkMmEwZjJiODhiNjk5NGI1NjgyMjQyOGIzMTdjN2I1OTFiODk0ODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1R5cGVkQXJyYXlCYXNlLmgKKysrIGIvU291cmNl
L1dURi93dGYvVHlwZWRBcnJheUJhc2UuaApAQCAtNzMsNiArNzMsMTQgQEAgY2xhc3MgVHlwZWRB
cnJheUJhc2UgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKICAgICAgICAgcmV0dXJuIFR5cGVk
QXJyYXlCYXNlPFQ+OjpkYXRhKClbaW5kZXhdOwogICAgIH0KIAorICAgIGJvb2wgY2hlY2tJbmJv
dW5kRGF0YSh1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIHBvcykgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiAob2Zmc2V0IDw9IG1fbGVuZ3RoCisgICAgICAgICAgICAmJiBvZmZzZXQgKyBw
b3MgPD0gbV9sZW5ndGgKKyAgICAgICAgICAgIC8vIGNoZWNrIG92ZXJmbG93CisgICAgICAgICAg
ICAmJiBvZmZzZXQgKyBwb3MgPj0gb2Zmc2V0KTsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICBU
eXBlZEFycmF5QmFzZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKICAgICAgICAgOiBBcnJheUJ1ZmZlclZpZXcoYnVm
ZmVyLCBieXRlT2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QXJyYXlCdWZmZXJWaWV3SGVscGVyLmgKaW5kZXggOGM2ZjQyNjc3N2FmN2I4MjBlOTExYzY4MjMz
MjQyNTc0MDNjNzBmOC4uZTAyODU2NDgyZjg2OWQ5YTQ2MGQ0YWNhZTgyOTc2NWY1ZmNhYWIyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlclZpZXdI
ZWxwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyVmll
d0hlbHBlci5oCkBAIC00MSwyMyArNDEsOTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10
ZW1wbGF0ZSA8Y2xhc3MgVD4KLUpTQzo6SlNWYWx1ZSBzZXRXZWJHTEFycmF5SGVscGVyKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBUKiBpbXBsLCBUKiAoKmNvbnZlcnNpb25GdW5jKShKU0M6OkpTVmFs
dWUpKQordGVtcGxhdGU8Y2xhc3MgQywgdHlwZW5hbWUgVD4KK2Jvb2wgY29weVR5cGVkQXJyYXlC
dWZmZXIoQyogdGFyZ2V0LCBBcnJheUJ1ZmZlclZpZXcqIHNvdXJjZSwgdW5zaWduZWQgc291cmNl
TGVuZ3RoLCB1bnNpZ25lZCBvZmZzZXQpCit7CisgICAgQXJyYXlCdWZmZXJWaWV3OjpWaWV3VHlw
ZSBzb3VyY2VUeXBlID0gc291cmNlLT5nZXRUeXBlKCk7CisgICAgQVNTRVJUKHNvdXJjZVR5cGUg
IT0gQXJyYXlCdWZmZXJWaWV3OjpUeXBlRGF0YVZpZXcpOworCisgICAgaWYgKHRhcmdldC0+Z2V0
VHlwZSgpID09IHNvdXJjZVR5cGUpIHsKKyAgICAgICAgaWYgKCF0YXJnZXQtPnNldChzdGF0aWNf
Y2FzdDxDKj4oc291cmNlKSwgb2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKCF0YXJnZXQtPmNoZWNrSW5ib3Vu
ZERhdGEob2Zmc2V0LCBzb3VyY2VMZW5ndGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBzd2l0Y2ggKHNvdXJjZVR5cGUpIHsKKyAgICBjYXNlIEFycmF5QnVmZmVyVmlldzo6VHlwZUlu
dDg6CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzb3VyY2VMZW5ndGg7ICsraSkK
KyAgICAgICAgICAgIHRhcmdldC0+c2V0KGkgKyBvZmZzZXQsIChUKShzdGF0aWNfY2FzdDxUeXBl
ZEFycmF5QmFzZTxzaWduZWQgY2hhcj4gKj4oc291cmNlKS0+aXRlbShpKSkpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEFycmF5QnVmZmVyVmlldzo6VHlwZVVpbnQ4OgorICAgIGNhc2UgQXJy
YXlCdWZmZXJWaWV3OjpUeXBlVWludDhDbGFtcGVkOgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgc291cmNlTGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0YXJnZXQtPnNldChpICsg
b2Zmc2V0LCAoVCkoc3RhdGljX2Nhc3Q8VHlwZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj4gKj4o
c291cmNlKS0+aXRlbShpKSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFycmF5QnVmZmVy
Vmlldzo6VHlwZUludDE2OgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc291cmNl
TGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0YXJnZXQtPnNldChpICsgb2Zmc2V0LCAoVCkoc3Rh
dGljX2Nhc3Q8VHlwZWRBcnJheUJhc2U8c2lnbmVkIHNob3J0PiAqPihzb3VyY2UpLT5pdGVtKGkp
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXJyYXlCdWZmZXJWaWV3OjpUeXBlVWludDE2
OgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc291cmNlTGVuZ3RoOyArK2kpCisg
ICAgICAgICAgICB0YXJnZXQtPnNldChpICsgb2Zmc2V0LCAoVCkoc3RhdGljX2Nhc3Q8VHlwZWRB
cnJheUJhc2U8dW5zaWduZWQgc2hvcnQ+ICo+KHNvdXJjZSktPml0ZW0oaSkpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBBcnJheUJ1ZmZlclZpZXc6OlR5cGVJbnQzMjoKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHNvdXJjZUxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGFy
Z2V0LT5zZXQoaSArIG9mZnNldCwgKFQpKHN0YXRpY19jYXN0PFR5cGVkQXJyYXlCYXNlPGludD4g
Kj4oc291cmNlKS0+aXRlbShpKSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFycmF5QnVm
ZmVyVmlldzo6VHlwZVVpbnQzMjoKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNv
dXJjZUxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGFyZ2V0LT5zZXQoaSArIG9mZnNldCwgKFQp
KHN0YXRpY19jYXN0PFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGludD4gKj4oc291cmNlKS0+aXRl
bShpKSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFycmF5QnVmZmVyVmlldzo6VHlwZUZs
b2F0MzI6CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzb3VyY2VMZW5ndGg7ICsr
aSkKKyAgICAgICAgICAgIHRhcmdldC0+c2V0KGkgKyBvZmZzZXQsIChUKShzdGF0aWNfY2FzdDxU
eXBlZEFycmF5QmFzZTxmbG9hdD4gKj4oc291cmNlKS0+aXRlbShpKSkpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEFycmF5QnVmZmVyVmlldzo6VHlwZUZsb2F0NjQ6CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzb3VyY2VMZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRhcmdl
dC0+c2V0KGkgKyBvZmZzZXQsIChUKShzdGF0aWNfY2FzdDxUeXBlZEFycmF5QmFzZTxkb3VibGU+
ICo+KHNvdXJjZSktPml0ZW0oaSkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDxj
bGFzcyBDLCB0eXBlbmFtZSBUPgorYm9vbCBzZXRXZWJHTEFycmF5V2l0aFR5cGVkQXJyYXlBcmd1
bWVudChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgQyogaW1wbCkKK3sKKyAgICBSZWZQdHI8QXJyYXlC
dWZmZXJWaWV3PiBhcnJheSA9IHRvQXJyYXlCdWZmZXJWaWV3KGV4ZWMtPmFyZ3VtZW50KDApKTsK
KyAgICBpZiAoIWFycmF5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBBcnJheUJ1ZmZl
clZpZXc6OlZpZXdUeXBlIGFycmF5VHlwZSA9IGFycmF5LT5nZXRUeXBlKCk7CisgICAgaWYgKGFy
cmF5VHlwZSA9PSBBcnJheUJ1ZmZlclZpZXc6OlR5cGVEYXRhVmlldykKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgdW5zaWduZWQgb2Zmc2V0ID0gMDsKKyAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpID09IDIpCisgICAgICAgIG9mZnNldCA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvSW50
MzIoZXhlYyk7CisKKyAgICB1aW50MzJfdCBsZW5ndGggPSBhc09iamVjdChleGVjLT5hcmd1bWVu
dCgwKSktPmdldChleGVjLCBKU0M6OklkZW50aWZpZXIoZXhlYywgImxlbmd0aCIpKS50b1VJbnQz
MihleGVjKTsKKworICAgIGlmICghKGNvcHlUeXBlZEFycmF5QnVmZmVyPEMsIFQ+KGltcGwsIGFy
cmF5LmdldCgpLCBsZW5ndGgsIG9mZnNldCkpKQorICAgICAgICBzZXRET01FeGNlcHRpb24oZXhl
YywgSU5ERVhfU0laRV9FUlIpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPGNs
YXNzIEMsIHR5cGVuYW1lIFQ+CitKU0M6OkpTVmFsdWUgc2V0V2ViR0xBcnJheUhlbHBlcihKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgQyogaW1wbCkKIHsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkKICAgICAgICAgcmV0dXJuIEpTQzo6dGhyb3dTeW50YXhFcnJvcihleGVjKTsKIAot
ICAgIFQqIGFycmF5ID0gKCpjb252ZXJzaW9uRnVuYykoZXhlYy0+YXJndW1lbnQoMCkpOwotICAg
IGlmIChhcnJheSkgewotICAgICAgICAvLyB2b2lkIHNldChpbiBXZWJHTDxUPkFycmF5IGFycmF5
LCBbT3B0aW9uYWxdIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKLSAgICAgICAgdW5zaWduZWQg
b2Zmc2V0ID0gMDsKLSAgICAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9PSAyKQotICAg
ICAgICAgICAgb2Zmc2V0ID0gZXhlYy0+YXJndW1lbnQoMSkudG9JbnQzMihleGVjKTsKLSAgICAg
ICAgaWYgKCFpbXBsLT5zZXQoYXJyYXksIG9mZnNldCkpCi0gICAgICAgICAgICBzZXRET01FeGNl
cHRpb24oZXhlYywgSU5ERVhfU0laRV9FUlIpOwotCisgICAgaWYgKHNldFdlYkdMQXJyYXlXaXRo
VHlwZWRBcnJheUFyZ3VtZW50PEMsIFQ+KGV4ZWMsIGltcGwpKQorICAgICAgICAvLyB2b2lkIHNl
dChpbiBXZWJHTDw+QXJyYXkgYXJyYXksIFtPcHRpb25hbF0gaW4gdW5zaWduZWQgbG9uZyBvZmZz
ZXQpOwogICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOwotICAgIH0KIAogICAgIGlm
IChleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKSB7CiAgICAgICAgIC8vIHZvaWQgc2V0KGlu
IHNlcXVlbmNlPGxvbmc+IGFycmF5LCBbT3B0aW9uYWxdIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0
KTsKQEAgLTY2LDkgKzEzNyw3IEBAIEpTQzo6SlNWYWx1ZSBzZXRXZWJHTEFycmF5SGVscGVyKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBUKiBpbXBsLCBUKiAoKmNvbnZlcnNpb25GCiAgICAgICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMikKICAgICAgICAgICAgIG9mZnNldCA9IGV4ZWMt
PmFyZ3VtZW50KDEpLnRvSW50MzIoZXhlYyk7CiAgICAgICAgIHVpbnQzMl90IGxlbmd0aCA9IGFy
cmF5LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsICJsZW5ndGgiKSkudG9JbnQzMihl
eGVjKTsKLSAgICAgICAgaWYgKG9mZnNldCA+IGltcGwtPmxlbmd0aCgpCi0gICAgICAgICAgICB8
fCBvZmZzZXQgKyBsZW5ndGggPiBpbXBsLT5sZW5ndGgoKQotICAgICAgICAgICAgfHwgb2Zmc2V0
ICsgbGVuZ3RoIDwgb2Zmc2V0KQorICAgICAgICBpZiAoIWltcGwtPmNoZWNrSW5ib3VuZERhdGEo
b2Zmc2V0LCBsZW5ndGgpKQogICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIElOREVY
X1NJWkVfRVJSKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBmb3IgKHVpbnQzMl90IGkg
PSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKQEAgLTEwNSw0OSArMTc0LDExIEBAIFBhc3NSZWZQdHI8
Qz4gY29uc3RydWN0QXJyYXlCdWZmZXJWaWV3V2l0aFR5cGVkQXJyYXlBcmd1bWVudChKU0M6OkV4
ZWNTdGF0ZSogZXhlCiAgICAgICAgIHJldHVybiBhcnJheTsKICAgICB9CiAKLSAgICBpZiAoYXJy
YXktPmdldFR5cGUoKSA9PSBzb3VyY2VUeXBlKSB7Ci0gICAgICAgIG1lbWNweShhcnJheS0+YmFz
ZUFkZHJlc3MoKSwgc291cmNlLT5iYXNlQWRkcmVzcygpLCBsZW5ndGggKiBzaXplb2YoVCkpOwor
ICAgIGlmICghKGNvcHlUeXBlZEFycmF5QnVmZmVyPEMsIFQ+KGFycmF5LmdldCgpLCBzb3VyY2Uu
Z2V0KCksIGxlbmd0aCwgMCkpKSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBJTkRF
WF9TSVpFX0VSUik7CiAgICAgICAgIHJldHVybiBhcnJheTsKICAgICB9CiAKLSAgICBzd2l0Y2gg
KHNvdXJjZVR5cGUpIHsKLSAgICBjYXNlIEFycmF5QnVmZmVyVmlldzo6VHlwZUludDg6Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGFy
cmF5LT5zZXQoaSwgKFQpKHN0YXRpY19jYXN0PFR5cGVkQXJyYXlCYXNlPHNpZ25lZCBjaGFyPiAq
Pihzb3VyY2UuZ2V0KCkpLT5pdGVtKGkpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXJy
YXlCdWZmZXJWaWV3OjpUeXBlVWludDg6Ci0gICAgY2FzZSBBcnJheUJ1ZmZlclZpZXc6OlR5cGVV
aW50OENsYW1wZWQ6Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsr
aSkKLSAgICAgICAgICAgIGFycmF5LT5zZXQoaSwgKFQpKHN0YXRpY19jYXN0PFR5cGVkQXJyYXlC
YXNlPHVuc2lnbmVkIGNoYXI+ICo+KHNvdXJjZS5nZXQoKSktPml0ZW0oaSkpKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBBcnJheUJ1ZmZlclZpZXc6OlR5cGVJbnQxNjoKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICAgICAgYXJyYXktPnNl
dChpLCAoVCkoc3RhdGljX2Nhc3Q8VHlwZWRBcnJheUJhc2U8c2lnbmVkIHNob3J0PiAqPihzb3Vy
Y2UuZ2V0KCkpLT5pdGVtKGkpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXJyYXlCdWZm
ZXJWaWV3OjpUeXBlVWludDE2OgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpCi0gICAgICAgICAgICBhcnJheS0+c2V0KGksIChUKShzdGF0aWNfY2FzdDxUeXBl
ZEFycmF5QmFzZTx1bnNpZ25lZCBzaG9ydD4gKj4oc291cmNlLmdldCgpKS0+aXRlbShpKSkpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEFycmF5QnVmZmVyVmlldzo6VHlwZUludDMyOgotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBh
cnJheS0+c2V0KGksIChUKShzdGF0aWNfY2FzdDxUeXBlZEFycmF5QmFzZTxpbnQ+ICo+KHNvdXJj
ZS5nZXQoKSktPml0ZW0oaSkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBcnJheUJ1ZmZl
clZpZXc6OlR5cGVVaW50MzI6Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkKLSAgICAgICAgICAgIGFycmF5LT5zZXQoaSwgKFQpKHN0YXRpY19jYXN0PFR5cGVk
QXJyYXlCYXNlPHVuc2lnbmVkIGludD4gKj4oc291cmNlLmdldCgpKS0+aXRlbShpKSkpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEFycmF5QnVmZmVyVmlldzo6VHlwZUZsb2F0MzI6Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGFy
cmF5LT5zZXQoaSwgKFQpKHN0YXRpY19jYXN0PFR5cGVkQXJyYXlCYXNlPGZsb2F0PiAqPihzb3Vy
Y2UuZ2V0KCkpLT5pdGVtKGkpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXJyYXlCdWZm
ZXJWaWV3OjpUeXBlRmxvYXQ2NDoKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKQotICAgICAgICAgICAgYXJyYXktPnNldChpLCAoVCkoc3RhdGljX2Nhc3Q8VHlw
ZWRBcnJheUJhc2U8ZG91YmxlPiAqPihzb3VyY2UuZ2V0KCkpLT5pdGVtKGkpKSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQogICAgIHJl
dHVybiBhcnJheTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNGbG9hdDMyQXJyYXlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNG
bG9hdDMyQXJyYXlDdXN0b20uY3BwCmluZGV4IGNhZGU1MmUzOGU3YjBlOWViNTFlZjJmMDdhYjhk
ODRlMmQ0ZjNmMDguLmQ4ZjU4YzI5NDNkZTZlOGEyZjczMjcxZjcyZjJmM2UwNzFlYjIwNmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmxvYXQzMkFycmF5Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Zsb2F0MzJBcnJheUN1c3Rv
bS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEZsb2F0MzIKIAogSlNDOjpK
U1ZhbHVlIEpTRmxvYXQzMkFycmF5OjpzZXQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAg
cmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXIoZXhlYywgaW1wbCgpLCB0b0Zsb2F0MzJBcnJheSk7
CisgICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8RmxvYXQzMkFycmF5LCBmbG9hdD4oZXhl
YywgaW1wbCgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0Zsb2F0MzJB
cnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0Zsb2F0MzJBcnJheShFeGVjU3RhdGUqIGV4ZWMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Zsb2F0NjRBcnJheUN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Zsb2F0NjRBcnJheUN1c3Rv
bS5jcHAKaW5kZXggMTU2MTllMzI1MmVhYTJjMmUzNzRmMWFjY2I2ZDEzOTZkNzBiM2M5My4uZTc2
NDJhMDVlZjQzM2Y3ZDQwNzdiYWIwMzNlNjkwMDU5OTg4MWM2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNGbG9hdDY0QXJyYXlDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmxvYXQ2NEFycmF5Q3VzdG9tLmNwcApAQCAtNDUsNyAr
NDUsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRmxvYXQ2NAogCiBKU0M6OkpTVmFsdWUgSlNGbG9hdDY0
QXJyYXk6OnNldChKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gc2V0V2ViR0xB
cnJheUhlbHBlcihleGVjLCBpbXBsKCksIHRvRmxvYXQ2NEFycmF5KTsKKyAgICByZXR1cm4gc2V0
V2ViR0xBcnJheUhlbHBlcjxGbG9hdDY0QXJyYXksIGRvdWJsZT4oZXhlYywgaW1wbCgpKTsKIH0K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9y
Ojpjb25zdHJ1Y3RKU0Zsb2F0NjRBcnJheShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDE2QXJyYXlDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQxNkFycmF5Q3VzdG9tLmNwcAppbmRleCBiYzc3YTZk
MmIyZjliMGIzMWUyMDk0M2EzMjkzMzFhMGJjOGVhODA4Li4wMWIzOTM5YmNhNDdmYzdmMWViMDc4
MDQ3OTE5MDVkOWViN2E3N2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0ludDE2QXJyYXlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSW50MTZBcnJheUN1c3RvbS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEludDE2QXIKIAogSlNDOjpKU1ZhbHVlIEpTSW50MTZBcnJheTo6c2V0KEpTQzo6RXhlY1N0YXRl
KiBleGVjKQogewotICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyKGV4ZWMsIGltcGwoKSwg
dG9JbnQxNkFycmF5KTsKKyAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcjxJbnQxNkFycmF5
LCBzaG9ydD4oZXhlYywgaW1wbCgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBKU0ludDE2QXJyYXlDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNJbnQxNkFycmF5KEV4ZWNTdGF0
ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50MzJB
cnJheUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDMyQXJyYXlD
dXN0b20uY3BwCmluZGV4IGQ4NTI4N2Y0NDFjOTEyZjQ1NzdhNTJhZDVhMGMyNTQyZmEzYmMxNGIu
LmVhYTZlNTc4YjRlZDZlM2Y3YjY3ZTc1ZDAxNWJjM2Y3NmQyYzE2YTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50MzJBcnJheUN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQzMkFycmF5Q3VzdG9tLmNwcApAQCAtNDUsNyAr
NDUsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW50MzJBcgogCiBKU0M6OkpTVmFsdWUgSlNJbnQzMkFy
cmF5OjpzZXQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIHNldFdlYkdMQXJy
YXlIZWxwZXIoZXhlYywgaW1wbCgpLCB0b0ludDMyQXJyYXkpOworICAgIHJldHVybiBzZXRXZWJH
TEFycmF5SGVscGVyPEludDMyQXJyYXksIGludD4oZXhlYywgaW1wbCgpKTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0ludDMyQXJyYXlDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0
SlNJbnQzMkFycmF5KEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW50OEFycmF5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW50OEFycmF5Q3VzdG9tLmNwcAppbmRleCBiNmUxNTA3NmY5YThkYmNhOWM0MDhk
YzBmYjM4Zjg2ZWZjMWU0NmQyLi40ZjA1M2UwZTk3ZWYyMDZhZGNlYTI0YjE4NWY2NTllYzllMjBh
NTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDhBcnJheUN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQ4QXJyYXlDdXN0
b20uY3BwCkBAIC00Niw3ICs0Niw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnQ4QXJyCiAKIEpTQzo6
SlNWYWx1ZSBKU0ludDhBcnJheTo6c2V0KEpTQzo6RXhlY1N0YXRlKiBleGVjKQogewotICAgIHJl
dHVybiBzZXRXZWJHTEFycmF5SGVscGVyKGV4ZWMsIGltcGwoKSwgdG9JbnQ4QXJyYXkpOworICAg
IHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyPEludDhBcnJheSwgc2lnbmVkIGNoYXI+KGV4ZWMs
IGltcGwoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNJbnQ4QXJyYXlD
b25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNJbnQ4QXJyYXkoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50MTZBcnJheUN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQxNkFycmF5Q3VzdG9tLmNwcAppbmRl
eCA0N2I0NDAyYmFlNzIxYWI0YjM4ZTJhMTA1MjM4M2M2MjdjMTZmZmYyLi5iOWU1MmEyZjNlMjQ5
NjdmNzA0ZmU4YTliMjdiZGE1MDhkMTAyZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1VpbnQxNkFycmF5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1VpbnQxNkFycmF5Q3VzdG9tLmNwcApAQCAtNDUsNyArNDUsNyBAQCBKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVWludDE2QQogCiBKU0M6OkpTVmFsdWUgSlNVaW50MTZBcnJheTo6c2V0KEpT
Qzo6RXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyKGV4
ZWMsIGltcGwoKSwgdG9VaW50MTZBcnJheSk7CisgICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxw
ZXI8VWludDE2QXJyYXksIHVuc2lnbmVkIHNob3J0PihleGVjLCBpbXBsKCkpOwogfQogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVWludDE2QXJyYXlDb25zdHJ1Y3Rvcjo6Y29uc3Ry
dWN0SlNVaW50MTZBcnJheShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0b20uY3BwCmluZGV4IGFhOGI4MjY3ZjViZjQy
YjlmZTI2NzBlN2MxM2YyNjdlYzEzYTYxNDIuLjcwZWYwYmEyMGY3NDNmOTNjY2I1ZmI0YThlNjEx
OGJjNzQxY2MzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWlu
dDMyQXJyYXlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWlu
dDMyQXJyYXlDdXN0b20uY3BwCkBAIC00NSw3ICs0NSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBVaW50
MzJBCiAKIEpTQzo6SlNWYWx1ZSBKU1VpbnQzMkFycmF5OjpzZXQoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMpCiB7Ci0gICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXIoZXhlYywgaW1wbCgpLCB0b1Vp
bnQzMkFycmF5KTsKKyAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcjxVaW50MzJBcnJheSwg
dW5zaWduZWQgaW50PihleGVjLCBpbXBsKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEpTVWludDMyQXJyYXlDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNVaW50MzJBcnJheShF
eGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1VpbnQ4QXJyYXlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50
OEFycmF5Q3VzdG9tLmNwcAppbmRleCA2YTRmYTFkZjVjZGVmMDJhNGFkYzQ2MmUzMzkxZjgzM2U0
Y2YxYzU0Li5kYjdhNDNhYjQ1NDljNTg2NGEzMjJiNWNjZTFlNmQzYmI3N2ZmZGQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDhBcnJheUN1c3RvbS5jcHAKQEAg
LTQ1LDcgKzQ1LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFVpbnQ4QXIKIAogSlNDOjpKU1ZhbHVlIEpT
VWludDhBcnJheTo6c2V0KEpTQzo6RXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBzZXRX
ZWJHTEFycmF5SGVscGVyKGV4ZWMsIGltcGwoKSwgdG9VaW50OEFycmF5KTsKKyAgICByZXR1cm4g
c2V0V2ViR0xBcnJheUhlbHBlcjxVaW50OEFycmF5LCB1bnNpZ25lZCBjaGFyPihleGVjLCBpbXBs
KCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVWludDhBcnJheUNvbnN0
cnVjdG9yOjpjb25zdHJ1Y3RKU1VpbnQ4QXJyYXkoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9t
LmNwcAppbmRleCAyZDVjYTc4NWQ1YmEwYzM1ZGU1MDFjNWMxMDg2ODRmOTZiMjg1MTNlLi5jNzli
YWMwZWRiYjJlYTY4ZmQ1ZDE0NzQxZDQ5MGE5NTcyMTVhMDU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcApA
QCAtNDUsNyArNDUsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVWludDhDbAogCiBKU0M6OkpTVmFsdWUg
SlNVaW50OENsYW1wZWRBcnJheTo6c2V0KEpTQzo6RXhlY1N0YXRlKiBleGVjKQogewotICAgIHJl
dHVybiBzZXRXZWJHTEFycmF5SGVscGVyKGV4ZWMsIGltcGwoKSwgdG9VaW50OENsYW1wZWRBcnJh
eSk7CisgICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8VWludDhDbGFtcGVkQXJyYXksIHVu
c2lnbmVkIGNoYXI+KGV4ZWMsIGltcGwoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSlNVaW50OENsYW1wZWRBcnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1VpbnQ4Q2xh
bXBlZEFycmF5KEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
QmluZGluZ3MvdHlwZWQtYXJyYXktc2V0LWZyb20tdHlwZWQuaHRtbCBiL1BlcmZvcm1hbmNlVGVz
dHMvQmluZGluZ3MvdHlwZWQtYXJyYXktc2V0LWZyb20tdHlwZWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
NGZjMmM3ZWNlZjJiNTI4MDIwNDdmZGFiODEzN2E2YTkxYWY5ZTI2Ci0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9CaW5kaW5ncy90eXBlZC1hcnJheS1zZXQtZnJvbS10eXBlZC5o
dG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3J1bm5lci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCit2YXIgbGVu
Z3RoID0gMTAwMDAwMDA7Cit2YXIgc291cmNlID0gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKTsKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICBzb3VyY2VbaV0gPSBpOworfQor
dmFyIHRhcmdldCA9IG5ldyBGbG9hdDY0QXJyYXkobGVuZ3RoKTsKKworUGVyZlRlc3RSdW5uZXIu
cnVuKGZ1bmN0aW9uKCkgeworICAgIHRhcmdldC5zZXQoc291cmNlKTsKK30pOworPC9zY3JpcHQ+
Cis8L2JvZHk+CisKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVy
Zm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMGVlYzc1MDE1ZjIzMWVmZjJmOTc0YmZiNzc0
YWJiNGYzZjIzOTY4OS4uOWI5MDNiOWIyOGE5MWUzNDIyNGZmYWZjODM0NDE3ZWI1MmQ4MTFiYSAx
MDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wOC0wMiAgQXJuYXVkIFJlbmV2
aWVyICA8YS5yZW5ldmllckBzaXNhLnNhbXN1bmcuY29tPgorCisgICAgICAgIFR5cGVkQXJyYXkg
c2V0IG1ldGhvZCBpcyBzbG93IHdoZW4gY2FsbGVkIHdpdGggYW5vdGhlciB0eXBlZCBhcnJheQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI1NTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCisKKyAgICAgICAgKiBCaW5kaW5n
cy90eXBlZC1hcnJheS1zZXQtZnJvbS10eXBlZC5odG1sOiBBZGRlZC4KKwogMjAxMi0wNy0yOCAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBydW4tcGVyZi10ZXN0
cyBzaG91bGQgZ2VuZXJhdGUgYSByZXN1bHRzIHBhZ2UK
</data>

          </attachment>
      

    </bug>

</bugzilla>