<?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>75437</bug_id>
          
          <creation_ts>2012-01-02 08:37:16 -0800</creation_ts>
          <short_desc>fast/js/select-options-remove-gc.html crashes intermittently</short_desc>
          <delta_ts>2012-01-07 01:35:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>
          <dependson>75769</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>japhet</cc>
    
    <cc>kling</cc>
    
    <cc>rniwa</cc>
    
    <cc>robert</cc>
    
    <cc>sam</cc>
    
    <cc>tkent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>528528</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-02 08:37:16 -0800</bug_when>
    <thetext>&quot;fast/js/select-options-remove-gc.html crashes intermittently on Chromium&quot;
Requested by mwenge2 on #webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528529</commentid>
    <comment_count>1</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2012-01-02 08:41:19 -0800</bug_when>
    <thetext>I can get it to crash twice in every ten runs with:

lucid Tools/Scripts/new-run-webkit-tests --chromium --iterations=100 fast/js/select-options-remove-gc.html

It occasionally crashes on the bots too:

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=fast%2Fjs%2Fselect-options-remove-gc.html

http://build.webkit.org/results/Chromium%20Linux%20Release%20(Tests)/r103905%20(27679)/fast/js/select-options-remove-gc-crash-log.txt :

	base::debug::StackTrace::StackTrace() [0x5b727e]
	base::(anonymous namespace)::StackDumpSignalHandler() [0x5a00f9]
	0x7f71bf8e5af0
	0x9c9a10
	WebCore::HTMLSelectElement::optionToListIndex() [0x9c9cd5]
	WebCore::HTMLSelectElement::remove() [0x9ca396]
	WebCore::removeElement() [0x183cc4b]
	WebCore::V8HTMLOptionsCollection::removeCallback() [0x183b90f]
	v8::internal::Builtin_HandleApiCall() [0x67d48d]
	0x205cef404402</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528530</commentid>
    <comment_count>2</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2012-01-02 08:42:56 -0800</bug_when>
    <thetext>I can reproduce this on Qt, so it&apos;s not port-specific.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528578</commentid>
    <comment_count>3</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-01-02 13:56:00 -0800</bug_when>
    <thetext>Taking, this has my ink all over it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529120</commentid>
    <comment_count>4</comment_count>
      <attachid>121010</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-01-03 15:53:11 -0800</bug_when>
    <thetext>Created attachment 121010
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529123</commentid>
    <comment_count>5</comment_count>
      <attachid>121012</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-01-03 15:54:20 -0800</bug_when>
    <thetext>Created attachment 121012
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529145</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-01-03 16:29:43 -0800</bug_when>
    <thetext>As discussed on IRC, this fixes the wrong problem. We should make sure that reachable elements are not collected, not deal with the aftermath of GC.

How did this work in shipping WebKit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529311</commentid>
    <comment_count>7</comment_count>
      <attachid>121057</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-01-03 21:32:33 -0800</bug_when>
    <thetext>Created attachment 121057
Better patch

Reworked the HTMLCollection ownership model to ensure that collections keep their associated element alive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529312</commentid>
    <comment_count>8</comment_count>
      <attachid>121058</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-01-03 21:33:40 -0800</bug_when>
    <thetext>Created attachment 121058
Better patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530939</commentid>
    <comment_count>9</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-01-05 22:45:06 -0800</bug_when>
    <thetext>Sam, would love your input on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531586</commentid>
    <comment_count>10</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-01-06 19:30:53 -0800</bug_when>
    <thetext>Committed r104373: &lt;http://trac.webkit.org/changeset/104373&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531627</commentid>
    <comment_count>11</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-01-07 01:35:43 -0800</bug_when>
    <thetext>Committed r104383: &lt;http://trac.webkit.org/changeset/104383&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121010</attachid>
            <date>2012-01-03 15:53:11 -0800</date>
            <delta_ts>2012-01-03 15:54:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75437.diff</filename>
            <type>text/plain</type>
            <size>8660</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNmMzNTc4Li42YTRmMjMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDEt
MDMgIEFuZHJlYXMgS2xpbmcgIDxhd2Vzb21la2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIGZh
c3QvanMvc2VsZWN0LW9wdGlvbnMtcmVtb3ZlLWdjLmh0bWwgY3Jhc2hlcyBpbnRlcm1pdHRlbnRs
eS4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvNzU0Mzc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSB0ZXN0IGZvciB0aGUgaW5k
ZXhlZCBzZXR0ZXIgb24gSFRNTE9wdGlvbnNDb2xsZWN0aW9uIGFmdGVyIGl0cworICAgICAgICBz
ZWxlY3QgZWxlbWVudCBoYXMgYmVlbiBHQydkLgorCisgICAgICAgICogZmFzdC9qcy9zZWxlY3Qt
b3B0aW9ucy1pbmRleC1zZXR0ZXItZ2MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2pzL3NlbGVjdC1vcHRpb25zLWluZGV4LXNldHRlci1nYy5odG1sOiBBZGRlZC4KKwogMjAx
Mi0wMS0wMiAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NDUyCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NlbGVjdC1vcHRpb25zLWluZGV4LXNldHRlci1n
Yy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3NlbGVjdC1vcHRpb25zLWluZGV4
LXNldHRlci1nYy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZDQwOWYyMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvc2VsZWN0
LW9wdGlvbnMtaW5kZXgtc2V0dGVyLWdjLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitU
aGlzIHRlc3QgY2hlY2tzIHRoYXQgcmVtb3ZpbmcgYSA8c2VsZWN0PiBvYmplY3QgZnJvbSB0aGUg
RE9NLCB0aGVuIGdhcmJhZ2UgY29sbGVjdGluZywgdGhlbiB1c2luZyB0aGUgaW5kZXhlZCBzZXR0
ZXIgb24gc2VsZWN0Lm9wdGlvbnMgZG9lc24ndCBjcmFzaC4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgTm8gY3Jhc2gKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3Nl
bGVjdC1vcHRpb25zLWluZGV4LXNldHRlci1nYy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9z
ZWxlY3Qtb3B0aW9ucy1pbmRleC1zZXR0ZXItZ2MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5hODQ2YjYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9qcy9zZWxlY3Qtb3B0aW9ucy1pbmRleC1zZXR0ZXItZ2MuaHRtbApAQCAtMCwwICsxLDI5IEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXY+Cis8c2VsZWN0IGlkPSJteXNlbGVjdCI+Cis8b3B0aW9u
PkE8L29wdGlvbj4KKzxvcHRpb24+Qjwvb3B0aW9uPgorPG9wdGlvbj5DPC9vcHRpb24+Cis8L3Nl
bGVjdD4KKzwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY2hlY2tzIHRo
YXQgcmVtb3ZpbmcgYSAmbHQ7c2VsZWN0Jmd0OyBvYmplY3QgZnJvbSB0aGUgRE9NLCB0aGVuIGdh
cmJhZ2UgY29sbGVjdGluZywgdGhlbiB1c2luZyB0aGUgaW5kZXhlZCBzZXR0ZXIgb24gc2VsZWN0
Lm9wdGlvbnMgZG9lc24ndCBjcmFzaC4iKTsKKwordmFyIHNlbGVjdCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJteXNlbGVjdCIpOwordmFyIG9wdGlvbnMgPSBzZWxlY3Qub3B0aW9uczsKK3Nl
bGVjdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNlbGVjdCk7CitzZWxlY3QgPSBudWxsOworCitn
YygpOworCitvcHRpb25zWzBdID0gbmV3IE9wdGlvbigiZm9vIiwgImJhciIpOwordGVzdFBhc3Nl
ZCgiTm8gY3Jhc2giKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM5ODAx
N2YuLjBmNDA2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAxMi0wMS0wMyAgQW5k
cmVhcyBLbGluZyAgPGF3ZXNvbWVrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgZmFzdC9qcy9z
ZWxlY3Qtb3B0aW9ucy1yZW1vdmUtZ2MuaHRtbCBjcmFzaGVzIGludGVybWl0dGVudGx5LgorICAg
ICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi83NTQzNz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBudWxsLWNoZWNrcyBhbmQgYXNzZXJ0aW9u
cyBpbiB0aGUgYmluZGluZ3MgZm9yIEhUTUxPcHRpb25zQ29sbGVjdGlvbgorICAgICAgICB0byBj
b3ZlciB0aGUgY2FzZSB3aGVyZSB0aGUgYmFzZSBub2RlIGhhcyBiZWVuIEdDJ2QgYnV0IHNvbWVv
bmUgaXMga2VlcGluZworICAgICAgICB0aGUgY29sbGVjdGlvbiBhbGl2ZS4KKworICAgICAgICBU
ZXN0OiBmYXN0L2pzL3NlbGVjdC1vcHRpb25zLXJlbW92ZS1nYy5odG1sCisgICAgICAgICAgICAg
IGZhc3QvanMvc2VsZWN0LW9wdGlvbnMtaW5kZXgtc2V0dGVyLWdjLmh0bWwKKworICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjppbmRleFNldHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6cmVtb3ZlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNlbGVjdEluZGV4U2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOENvbGxlY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9PcHRpb25zQ29sbGVjdGlvblNldHRlcik6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpyZW1vdmVD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6aW5k
ZXhlZFByb3BlcnR5U2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
U2VsZWN0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVFbGVtZW50
KToKKworMjAxMi0wMS0wMyAgQW5kcmVhcyBLbGluZyAgPGF3ZXNvbWVrbGluZ0BhcHBsZS5jb20+
CisKKyAgICAgICAgZmFzdC9qcy9zZWxlY3Qtb3B0aW9ucy1yZW1vdmUtZ2MuaHRtbCBjcmFzaGVz
IGludGVybWl0dGVudGx5LgorICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi83NTQzNz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjppbmRleFNldHRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6cmVtb3ZlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlbGVj
dEluZGV4U2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dG9PcHRpb25zQ29sbGVjdGlvblNldHRlcik6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpyZW1vdmVDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6aW5kZXhlZFByb3Bl
cnR5U2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxl
bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVFbGVtZW50KToKKwogMjAx
Mi0wMS0wMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dUS10gVXNlIGdka19zY3JlZW5fZ2V0X21vbml0b3Jfd29ya2FyZWEoKSB3aGVuIGF2
YWlsYWJsZSBmb3Igc2NyZWVuQXZhaWxhYmxlUmVjdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAK
aW5kZXggZDk4NjAyYS4uYTBiOTAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtNjQs
NiArNjQsOCBAQCB2b2lkIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjppbmRleFNldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbAogewogICAgIEhUTUxPcHRpb25zQ29s
bGVjdGlvbiogaW1wID0gc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbnNDb2xsZWN0aW9uKj4oaW1wbCgp
KTsKICAgICBIVE1MU2VsZWN0RWxlbWVudCogYmFzZSA9IHRvSFRNTFNlbGVjdEVsZW1lbnQoaW1w
LT5iYXNlKCkpOworICAgIGlmICghYmFzZSkKKyAgICAgICAgcmV0dXJuOwogICAgIHNlbGVjdElu
ZGV4U2V0dGVyKGJhc2UsIGV4ZWMsIGluZGV4LCB2YWx1ZSk7CiB9CiAKQEAgLTkyLDYgKzk0LDgg
QEAgSlNWYWx1ZSBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6cmVtb3ZlKEV4ZWNTdGF0ZSogZXhl
YykKIHsKICAgICBIVE1MT3B0aW9uc0NvbGxlY3Rpb24qIGltcCA9IHN0YXRpY19jYXN0PEhUTUxP
cHRpb25zQ29sbGVjdGlvbio+KGltcGwoKSk7CiAgICAgSlNIVE1MU2VsZWN0RWxlbWVudCogYmFz
ZSA9IHN0YXRpY19jYXN0PEpTSFRNTFNlbGVjdEVsZW1lbnQqPihhc09iamVjdCh0b0pTKGV4ZWMs
IGdsb2JhbE9iamVjdCgpLCBpbXAtPmJhc2UoKSkpKTsKKyAgICBpZiAoIWJhc2UpCisgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIHJldHVybiBiYXNlLT5yZW1vdmUoZXhlYyk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVs
ZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0
RWxlbWVudEN1c3RvbS5jcHAKaW5kZXggMTNlYThmMy4uMzNmNTg1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5j
cHAKQEAgLTQ3LDYgKzQ3LDggQEAgSlNWYWx1ZSBKU0hUTUxTZWxlY3RFbGVtZW50OjpyZW1vdmUo
RXhlY1N0YXRlKiBleGVjKQogCiB2b2lkIHNlbGVjdEluZGV4U2V0dGVyKEhUTUxTZWxlY3RFbGVt
ZW50KiBzZWxlY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgSlNDOjpK
U1ZhbHVlIHZhbHVlKQogeworICAgIEFTU0VSVChzZWxlY3QpOworCiAgICAgaWYgKHZhbHVlLmlz
VW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHNlbGVjdC0+cmVtb3ZlKGluZGV4KTsKICAgICBl
bHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uY3BwCmluZGV4
IDJmZjVjODguLjc3ZjgwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4Q29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDb2xs
ZWN0aW9uLmNwcApAQCAtMzksNiArMzksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB0b09wdGlvbnNDb2xsZWN0aW9uU2V0dGVyKHVpbnQzMl90IGluZGV4
LCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIEhUTUxTZWxlY3RFbGVtZW50KiBiYXNlKQog
eworICAgIEFTU0VSVChiYXNlKTsKKwogICAgIGlmICh2YWx1ZS0+SXNOdWxsKCkgfHwgdmFsdWUt
PklzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgYmFzZS0+cmVtb3ZlKGluZGV4KTsKICAgICAgICAg
cmV0dXJuIHZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXgg
ZTMyMGM4NC4uMDNmNWE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3Bw
CkBAIC00OSw2ICs0OSw4IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29s
bGVjdGlvbjo6cmVtb3ZlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50CiAgICAgSU5DX1NUQVRT
KCJET00uSFRNTE9wdGlvbnNDb2xsZWN0aW9uLnJlbW92ZSgpIik7CiAgICAgSFRNTE9wdGlvbnND
b2xsZWN0aW9uKiBpbXAgPSBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7CiAgICAgSFRNTFNlbGVjdEVsZW1lbnQqIGJhc2UgPSBzdGF0aWNfY2FzdDxIVE1M
U2VsZWN0RWxlbWVudCo+KGltcC0+YmFzZSgpKTsKKyAgICBpZiAoIWJhc2UpCisgICAgICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgcmV0dXJuIHJlbW92ZUVsZW1lbnQoYmFzZSwgYXJn
cyk7CiB9CiAKQEAgLTEzMSw2ICsxMzMsOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1M
T3B0aW9uc0NvbGxlY3Rpb246OmluZGV4ZWRQcm9wZXJ0eVNldHRlcih1aW50MzJfdCBpbgogICAg
IElOQ19TVEFUUygiRE9NLkhUTUxPcHRpb25zQ29sbGVjdGlvbi5JbmRleGVkUHJvcGVydHlTZXR0
ZXIiKTsKICAgICBIVE1MT3B0aW9uc0NvbGxlY3Rpb24qIGNvbGxlY3Rpb24gPSBWOEhUTUxPcHRp
b25zQ29sbGVjdGlvbjo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgSFRNTFNlbGVjdEVs
ZW1lbnQqIGJhc2UgPSBzdGF0aWNfY2FzdDxIVE1MU2VsZWN0RWxlbWVudCo+KGNvbGxlY3Rpb24t
PmJhc2UoKSk7CisgICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgp
OwogICAgIHJldHVybiB0b09wdGlvbnNDb2xsZWN0aW9uU2V0dGVyKGluZGV4LCB2YWx1ZSwgYmFz
ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA3Y2QzOTI2Li4wYzcy
OTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
U2VsZWN0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwCkBAIC03Miw2ICs3Miw4IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxTZWxlY3RFbGVtZW50OjpyZW1vdmVDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZW1vdmVFbGVt
ZW50KEhUTUxTZWxlY3RFbGVtZW50KiBpbXAsIGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpIAog
eworICAgIEFTU0VSVChpbXApOworCiAgICAgaWYgKFY4SFRNTE9wdGlvbkVsZW1lbnQ6Okhhc0lu
c3RhbmNlKGFyZ3NbMF0pKSB7CiAgICAgICAgIEhUTUxPcHRpb25FbGVtZW50KiBlbGVtZW50ID0g
VjhIVE1MT3B0aW9uRWxlbWVudDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dChhcmdzWzBdKSk7CiAgICAgICAgIGltcC0+cmVtb3ZlKGVsZW1lbnQtPmluZGV4KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121012</attachid>
            <date>2012-01-03 15:54:20 -0800</date>
            <delta_ts>2012-01-03 21:32:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75437.diff</filename>
            <type>text/plain</type>
            <size>7814</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNmMzNTc4Li42YTRmMjMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDEt
MDMgIEFuZHJlYXMgS2xpbmcgIDxhd2Vzb21la2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIGZh
c3QvanMvc2VsZWN0LW9wdGlvbnMtcmVtb3ZlLWdjLmh0bWwgY3Jhc2hlcyBpbnRlcm1pdHRlbnRs
eS4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvNzU0Mzc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSB0ZXN0IGZvciB0aGUgaW5k
ZXhlZCBzZXR0ZXIgb24gSFRNTE9wdGlvbnNDb2xsZWN0aW9uIGFmdGVyIGl0cworICAgICAgICBz
ZWxlY3QgZWxlbWVudCBoYXMgYmVlbiBHQydkLgorCisgICAgICAgICogZmFzdC9qcy9zZWxlY3Qt
b3B0aW9ucy1pbmRleC1zZXR0ZXItZ2MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2pzL3NlbGVjdC1vcHRpb25zLWluZGV4LXNldHRlci1nYy5odG1sOiBBZGRlZC4KKwogMjAx
Mi0wMS0wMiAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NDUyCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NlbGVjdC1vcHRpb25zLWluZGV4LXNldHRlci1n
Yy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3NlbGVjdC1vcHRpb25zLWluZGV4
LXNldHRlci1nYy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZDQwOWYyMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvc2VsZWN0
LW9wdGlvbnMtaW5kZXgtc2V0dGVyLWdjLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitU
aGlzIHRlc3QgY2hlY2tzIHRoYXQgcmVtb3ZpbmcgYSA8c2VsZWN0PiBvYmplY3QgZnJvbSB0aGUg
RE9NLCB0aGVuIGdhcmJhZ2UgY29sbGVjdGluZywgdGhlbiB1c2luZyB0aGUgaW5kZXhlZCBzZXR0
ZXIgb24gc2VsZWN0Lm9wdGlvbnMgZG9lc24ndCBjcmFzaC4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgTm8gY3Jhc2gKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3Nl
bGVjdC1vcHRpb25zLWluZGV4LXNldHRlci1nYy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9z
ZWxlY3Qtb3B0aW9ucy1pbmRleC1zZXR0ZXItZ2MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5hODQ2YjYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9qcy9zZWxlY3Qtb3B0aW9ucy1pbmRleC1zZXR0ZXItZ2MuaHRtbApAQCAtMCwwICsxLDI5IEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXY+Cis8c2VsZWN0IGlkPSJteXNlbGVjdCI+Cis8b3B0aW9u
PkE8L29wdGlvbj4KKzxvcHRpb24+Qjwvb3B0aW9uPgorPG9wdGlvbj5DPC9vcHRpb24+Cis8L3Nl
bGVjdD4KKzwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY2hlY2tzIHRo
YXQgcmVtb3ZpbmcgYSAmbHQ7c2VsZWN0Jmd0OyBvYmplY3QgZnJvbSB0aGUgRE9NLCB0aGVuIGdh
cmJhZ2UgY29sbGVjdGluZywgdGhlbiB1c2luZyB0aGUgaW5kZXhlZCBzZXR0ZXIgb24gc2VsZWN0
Lm9wdGlvbnMgZG9lc24ndCBjcmFzaC4iKTsKKwordmFyIHNlbGVjdCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJteXNlbGVjdCIpOwordmFyIG9wdGlvbnMgPSBzZWxlY3Qub3B0aW9uczsKK3Nl
bGVjdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNlbGVjdCk7CitzZWxlY3QgPSBudWxsOworCitn
YygpOworCitvcHRpb25zWzBdID0gbmV3IE9wdGlvbigiZm9vIiwgImJhciIpOwordGVzdFBhc3Nl
ZCgiTm8gY3Jhc2giKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM5ODAx
N2YuLjU2OWU5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0wMS0wMyAgQW5k
cmVhcyBLbGluZyAgPGF3ZXNvbWVrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgZmFzdC9qcy9z
ZWxlY3Qtb3B0aW9ucy1yZW1vdmUtZ2MuaHRtbCBjcmFzaGVzIGludGVybWl0dGVudGx5LgorICAg
ICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi83NTQzNz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBudWxsLWNoZWNrcyBhbmQgYXNzZXJ0aW9u
cyBpbiB0aGUgYmluZGluZ3MgZm9yIEhUTUxPcHRpb25zQ29sbGVjdGlvbgorICAgICAgICB0byBj
b3ZlciB0aGUgY2FzZSB3aGVyZSB0aGUgYmFzZSBub2RlIGhhcyBiZWVuIEdDJ2QgYnV0IHNvbWVv
bmUgaXMga2VlcGluZworICAgICAgICB0aGUgY29sbGVjdGlvbiBhbGl2ZS4KKworICAgICAgICBU
ZXN0OiBmYXN0L2pzL3NlbGVjdC1vcHRpb25zLXJlbW92ZS1nYy5odG1sCisgICAgICAgICAgICAg
IGZhc3QvanMvc2VsZWN0LW9wdGlvbnMtaW5kZXgtc2V0dGVyLWdjLmh0bWwKKworICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjppbmRleFNldHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6cmVtb3ZlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNlbGVjdEluZGV4U2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOENvbGxlY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9PcHRpb25zQ29sbGVjdGlvblNldHRlcik6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpyZW1vdmVD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6aW5k
ZXhlZFByb3BlcnR5U2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
U2VsZWN0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVFbGVtZW50
KToKKwogMjAxMi0wMS0wMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW0dUS10gVXNlIGdka19zY3JlZW5fZ2V0X21vbml0b3Jfd29ya2FyZWEo
KSB3aGVuIGF2YWlsYWJsZSBmb3Igc2NyZWVuQXZhaWxhYmxlUmVjdCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1
c3RvbS5jcHAKaW5kZXggZDk4NjAyYS4uYTBiOTAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNw
cApAQCAtNjQsNiArNjQsOCBAQCB2b2lkIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjppbmRleFNl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbAogewogICAgIEhUTUxP
cHRpb25zQ29sbGVjdGlvbiogaW1wID0gc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbnNDb2xsZWN0aW9u
Kj4oaW1wbCgpKTsKICAgICBIVE1MU2VsZWN0RWxlbWVudCogYmFzZSA9IHRvSFRNTFNlbGVjdEVs
ZW1lbnQoaW1wLT5iYXNlKCkpOworICAgIGlmICghYmFzZSkKKyAgICAgICAgcmV0dXJuOwogICAg
IHNlbGVjdEluZGV4U2V0dGVyKGJhc2UsIGV4ZWMsIGluZGV4LCB2YWx1ZSk7CiB9CiAKQEAgLTky
LDYgKzk0LDggQEAgSlNWYWx1ZSBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6cmVtb3ZlKEV4ZWNT
dGF0ZSogZXhlYykKIHsKICAgICBIVE1MT3B0aW9uc0NvbGxlY3Rpb24qIGltcCA9IHN0YXRpY19j
YXN0PEhUTUxPcHRpb25zQ29sbGVjdGlvbio+KGltcGwoKSk7CiAgICAgSlNIVE1MU2VsZWN0RWxl
bWVudCogYmFzZSA9IHN0YXRpY19jYXN0PEpTSFRNTFNlbGVjdEVsZW1lbnQqPihhc09iamVjdCh0
b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBpbXAtPmJhc2UoKSkpKTsKKyAgICBpZiAoIWJhc2Up
CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIHJldHVybiBiYXNlLT5yZW1vdmUo
ZXhlYyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRN
TFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAKaW5kZXggMTNlYThmMy4uMzNmNTg1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVudEN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVu
dEN1c3RvbS5jcHAKQEAgLTQ3LDYgKzQ3LDggQEAgSlNWYWx1ZSBKU0hUTUxTZWxlY3RFbGVtZW50
OjpyZW1vdmUoRXhlY1N0YXRlKiBleGVjKQogCiB2b2lkIHNlbGVjdEluZGV4U2V0dGVyKEhUTUxT
ZWxlY3RFbGVtZW50KiBzZWxlY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRl
eCwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogeworICAgIEFTU0VSVChzZWxlY3QpOworCiAgICAgaWYg
KHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHNlbGVjdC0+cmVtb3ZlKGluZGV4
KTsKICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
Q29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbGxlY3Rpb24u
Y3BwCmluZGV4IDJmZjVjODguLjc3ZjgwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhDb2xsZWN0aW9uLmNwcApAQCAtMzksNiArMzksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b09wdGlvbnNDb2xsZWN0aW9uU2V0dGVyKHVpbnQz
Ml90IGluZGV4LCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIEhUTUxTZWxlY3RFbGVtZW50
KiBiYXNlKQogeworICAgIEFTU0VSVChiYXNlKTsKKwogICAgIGlmICh2YWx1ZS0+SXNOdWxsKCkg
fHwgdmFsdWUtPklzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgYmFzZS0+cmVtb3ZlKGluZGV4KTsK
ICAgICAgICAgcmV0dXJuIHZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5j
cHAKaW5kZXggZTMyMGM4NC4uMDNmNWE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25D
dXN0b20uY3BwCkBAIC00OSw2ICs0OSw4IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxP
cHRpb25zQ29sbGVjdGlvbjo6cmVtb3ZlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50CiAgICAg
SU5DX1NUQVRTKCJET00uSFRNTE9wdGlvbnNDb2xsZWN0aW9uLnJlbW92ZSgpIik7CiAgICAgSFRN
TE9wdGlvbnNDb2xsZWN0aW9uKiBpbXAgPSBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6dG9OYXRp
dmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgSFRNTFNlbGVjdEVsZW1lbnQqIGJhc2UgPSBzdGF0aWNf
Y2FzdDxIVE1MU2VsZWN0RWxlbWVudCo+KGltcC0+YmFzZSgpKTsKKyAgICBpZiAoIWJhc2UpCisg
ICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgcmV0dXJuIHJlbW92ZUVsZW1lbnQo
YmFzZSwgYXJncyk7CiB9CiAKQEAgLTEzMSw2ICsxMzMsOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmluZGV4ZWRQcm9wZXJ0eVNldHRlcih1aW50MzJf
dCBpbgogICAgIElOQ19TVEFUUygiRE9NLkhUTUxPcHRpb25zQ29sbGVjdGlvbi5JbmRleGVkUHJv
cGVydHlTZXR0ZXIiKTsKICAgICBIVE1MT3B0aW9uc0NvbGxlY3Rpb24qIGNvbGxlY3Rpb24gPSBW
OEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgSFRN
TFNlbGVjdEVsZW1lbnQqIGJhc2UgPSBzdGF0aWNfY2FzdDxIVE1MU2VsZWN0RWxlbWVudCo+KGNv
bGxlY3Rpb24tPmJhc2UoKSk7CisgICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOwogICAgIHJldHVybiB0b09wdGlvbnNDb2xsZWN0aW9uU2V0dGVyKGluZGV4LCB2
YWx1ZSwgYmFzZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA3Y2Qz
OTI2Li4wYzcyOTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwCkBAIC03Miw2ICs3
Miw4IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxTZWxlY3RFbGVtZW50OjpyZW1vdmVD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBy
ZW1vdmVFbGVtZW50KEhUTUxTZWxlY3RFbGVtZW50KiBpbXAsIGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpIAogeworICAgIEFTU0VSVChpbXApOworCiAgICAgaWYgKFY4SFRNTE9wdGlvbkVsZW1l
bnQ6Okhhc0luc3RhbmNlKGFyZ3NbMF0pKSB7CiAgICAgICAgIEhUTUxPcHRpb25FbGVtZW50KiBl
bGVtZW50ID0gVjhIVE1MT3B0aW9uRWxlbWVudDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Pjo6Q2FzdChhcmdzWzBdKSk7CiAgICAgICAgIGltcC0+cmVtb3ZlKGVsZW1lbnQtPmluZGV4
KCkpOwo=
</data>
<flag name="review"
          id="121389"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121057</attachid>
            <date>2012-01-03 21:32:33 -0800</date>
            <delta_ts>2012-01-03 21:33:40 -0800</delta_ts>
            <desc>Better patch</desc>
            <filename>bug-75437.diff</filename>
            <type>text/plain</type>
            <size>7814</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNmMzNTc4Li42YTRmMjMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDEt
MDMgIEFuZHJlYXMgS2xpbmcgIDxhd2Vzb21la2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIGZh
c3QvanMvc2VsZWN0LW9wdGlvbnMtcmVtb3ZlLWdjLmh0bWwgY3Jhc2hlcyBpbnRlcm1pdHRlbnRs
eS4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvNzU0Mzc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSB0ZXN0IGZvciB0aGUgaW5k
ZXhlZCBzZXR0ZXIgb24gSFRNTE9wdGlvbnNDb2xsZWN0aW9uIGFmdGVyIGl0cworICAgICAgICBz
ZWxlY3QgZWxlbWVudCBoYXMgYmVlbiBHQydkLgorCisgICAgICAgICogZmFzdC9qcy9zZWxlY3Qt
b3B0aW9ucy1pbmRleC1zZXR0ZXItZ2MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2pzL3NlbGVjdC1vcHRpb25zLWluZGV4LXNldHRlci1nYy5odG1sOiBBZGRlZC4KKwogMjAx
Mi0wMS0wMiAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NDUyCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NlbGVjdC1vcHRpb25zLWluZGV4LXNldHRlci1n
Yy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3NlbGVjdC1vcHRpb25zLWluZGV4
LXNldHRlci1nYy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZDQwOWYyMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvc2VsZWN0
LW9wdGlvbnMtaW5kZXgtc2V0dGVyLWdjLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitU
aGlzIHRlc3QgY2hlY2tzIHRoYXQgcmVtb3ZpbmcgYSA8c2VsZWN0PiBvYmplY3QgZnJvbSB0aGUg
RE9NLCB0aGVuIGdhcmJhZ2UgY29sbGVjdGluZywgdGhlbiB1c2luZyB0aGUgaW5kZXhlZCBzZXR0
ZXIgb24gc2VsZWN0Lm9wdGlvbnMgZG9lc24ndCBjcmFzaC4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgTm8gY3Jhc2gKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3Nl
bGVjdC1vcHRpb25zLWluZGV4LXNldHRlci1nYy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9z
ZWxlY3Qtb3B0aW9ucy1pbmRleC1zZXR0ZXItZ2MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5hODQ2YjYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9qcy9zZWxlY3Qtb3B0aW9ucy1pbmRleC1zZXR0ZXItZ2MuaHRtbApAQCAtMCwwICsxLDI5IEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXY+Cis8c2VsZWN0IGlkPSJteXNlbGVjdCI+Cis8b3B0aW9u
PkE8L29wdGlvbj4KKzxvcHRpb24+Qjwvb3B0aW9uPgorPG9wdGlvbj5DPC9vcHRpb24+Cis8L3Nl
bGVjdD4KKzwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY2hlY2tzIHRo
YXQgcmVtb3ZpbmcgYSAmbHQ7c2VsZWN0Jmd0OyBvYmplY3QgZnJvbSB0aGUgRE9NLCB0aGVuIGdh
cmJhZ2UgY29sbGVjdGluZywgdGhlbiB1c2luZyB0aGUgaW5kZXhlZCBzZXR0ZXIgb24gc2VsZWN0
Lm9wdGlvbnMgZG9lc24ndCBjcmFzaC4iKTsKKwordmFyIHNlbGVjdCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJteXNlbGVjdCIpOwordmFyIG9wdGlvbnMgPSBzZWxlY3Qub3B0aW9uczsKK3Nl
bGVjdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNlbGVjdCk7CitzZWxlY3QgPSBudWxsOworCitn
YygpOworCitvcHRpb25zWzBdID0gbmV3IE9wdGlvbigiZm9vIiwgImJhciIpOwordGVzdFBhc3Nl
ZCgiTm8gY3Jhc2giKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM5ODAx
N2YuLjU2OWU5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0wMS0wMyAgQW5k
cmVhcyBLbGluZyAgPGF3ZXNvbWVrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgZmFzdC9qcy9z
ZWxlY3Qtb3B0aW9ucy1yZW1vdmUtZ2MuaHRtbCBjcmFzaGVzIGludGVybWl0dGVudGx5LgorICAg
ICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi83NTQzNz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBudWxsLWNoZWNrcyBhbmQgYXNzZXJ0aW9u
cyBpbiB0aGUgYmluZGluZ3MgZm9yIEhUTUxPcHRpb25zQ29sbGVjdGlvbgorICAgICAgICB0byBj
b3ZlciB0aGUgY2FzZSB3aGVyZSB0aGUgYmFzZSBub2RlIGhhcyBiZWVuIEdDJ2QgYnV0IHNvbWVv
bmUgaXMga2VlcGluZworICAgICAgICB0aGUgY29sbGVjdGlvbiBhbGl2ZS4KKworICAgICAgICBU
ZXN0OiBmYXN0L2pzL3NlbGVjdC1vcHRpb25zLXJlbW92ZS1nYy5odG1sCisgICAgICAgICAgICAg
IGZhc3QvanMvc2VsZWN0LW9wdGlvbnMtaW5kZXgtc2V0dGVyLWdjLmh0bWwKKworICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjppbmRleFNldHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6cmVtb3ZlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNlbGVjdEluZGV4U2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOENvbGxlY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9PcHRpb25zQ29sbGVjdGlvblNldHRlcik6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpyZW1vdmVD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6aW5k
ZXhlZFByb3BlcnR5U2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
U2VsZWN0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVFbGVtZW50
KToKKwogMjAxMi0wMS0wMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW0dUS10gVXNlIGdka19zY3JlZW5fZ2V0X21vbml0b3Jfd29ya2FyZWEo
KSB3aGVuIGF2YWlsYWJsZSBmb3Igc2NyZWVuQXZhaWxhYmxlUmVjdCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1
c3RvbS5jcHAKaW5kZXggZDk4NjAyYS4uYTBiOTAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNw
cApAQCAtNjQsNiArNjQsOCBAQCB2b2lkIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjppbmRleFNl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbAogewogICAgIEhUTUxP
cHRpb25zQ29sbGVjdGlvbiogaW1wID0gc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbnNDb2xsZWN0aW9u
Kj4oaW1wbCgpKTsKICAgICBIVE1MU2VsZWN0RWxlbWVudCogYmFzZSA9IHRvSFRNTFNlbGVjdEVs
ZW1lbnQoaW1wLT5iYXNlKCkpOworICAgIGlmICghYmFzZSkKKyAgICAgICAgcmV0dXJuOwogICAg
IHNlbGVjdEluZGV4U2V0dGVyKGJhc2UsIGV4ZWMsIGluZGV4LCB2YWx1ZSk7CiB9CiAKQEAgLTky
LDYgKzk0LDggQEAgSlNWYWx1ZSBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6cmVtb3ZlKEV4ZWNT
dGF0ZSogZXhlYykKIHsKICAgICBIVE1MT3B0aW9uc0NvbGxlY3Rpb24qIGltcCA9IHN0YXRpY19j
YXN0PEhUTUxPcHRpb25zQ29sbGVjdGlvbio+KGltcGwoKSk7CiAgICAgSlNIVE1MU2VsZWN0RWxl
bWVudCogYmFzZSA9IHN0YXRpY19jYXN0PEpTSFRNTFNlbGVjdEVsZW1lbnQqPihhc09iamVjdCh0
b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBpbXAtPmJhc2UoKSkpKTsKKyAgICBpZiAoIWJhc2Up
CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIHJldHVybiBiYXNlLT5yZW1vdmUo
ZXhlYyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRN
TFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAKaW5kZXggMTNlYThmMy4uMzNmNTg1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVudEN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVu
dEN1c3RvbS5jcHAKQEAgLTQ3LDYgKzQ3LDggQEAgSlNWYWx1ZSBKU0hUTUxTZWxlY3RFbGVtZW50
OjpyZW1vdmUoRXhlY1N0YXRlKiBleGVjKQogCiB2b2lkIHNlbGVjdEluZGV4U2V0dGVyKEhUTUxT
ZWxlY3RFbGVtZW50KiBzZWxlY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRl
eCwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogeworICAgIEFTU0VSVChzZWxlY3QpOworCiAgICAgaWYg
KHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHNlbGVjdC0+cmVtb3ZlKGluZGV4
KTsKICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
Q29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbGxlY3Rpb24u
Y3BwCmluZGV4IDJmZjVjODguLjc3ZjgwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhDb2xsZWN0aW9uLmNwcApAQCAtMzksNiArMzksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b09wdGlvbnNDb2xsZWN0aW9uU2V0dGVyKHVpbnQz
Ml90IGluZGV4LCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIEhUTUxTZWxlY3RFbGVtZW50
KiBiYXNlKQogeworICAgIEFTU0VSVChiYXNlKTsKKwogICAgIGlmICh2YWx1ZS0+SXNOdWxsKCkg
fHwgdmFsdWUtPklzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgYmFzZS0+cmVtb3ZlKGluZGV4KTsK
ICAgICAgICAgcmV0dXJuIHZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5j
cHAKaW5kZXggZTMyMGM4NC4uMDNmNWE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25D
dXN0b20uY3BwCkBAIC00OSw2ICs0OSw4IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxP
cHRpb25zQ29sbGVjdGlvbjo6cmVtb3ZlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50CiAgICAg
SU5DX1NUQVRTKCJET00uSFRNTE9wdGlvbnNDb2xsZWN0aW9uLnJlbW92ZSgpIik7CiAgICAgSFRN
TE9wdGlvbnNDb2xsZWN0aW9uKiBpbXAgPSBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6dG9OYXRp
dmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgSFRNTFNlbGVjdEVsZW1lbnQqIGJhc2UgPSBzdGF0aWNf
Y2FzdDxIVE1MU2VsZWN0RWxlbWVudCo+KGltcC0+YmFzZSgpKTsKKyAgICBpZiAoIWJhc2UpCisg
ICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgcmV0dXJuIHJlbW92ZUVsZW1lbnQo
YmFzZSwgYXJncyk7CiB9CiAKQEAgLTEzMSw2ICsxMzMsOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmluZGV4ZWRQcm9wZXJ0eVNldHRlcih1aW50MzJf
dCBpbgogICAgIElOQ19TVEFUUygiRE9NLkhUTUxPcHRpb25zQ29sbGVjdGlvbi5JbmRleGVkUHJv
cGVydHlTZXR0ZXIiKTsKICAgICBIVE1MT3B0aW9uc0NvbGxlY3Rpb24qIGNvbGxlY3Rpb24gPSBW
OEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgSFRN
TFNlbGVjdEVsZW1lbnQqIGJhc2UgPSBzdGF0aWNfY2FzdDxIVE1MU2VsZWN0RWxlbWVudCo+KGNv
bGxlY3Rpb24tPmJhc2UoKSk7CisgICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOwogICAgIHJldHVybiB0b09wdGlvbnNDb2xsZWN0aW9uU2V0dGVyKGluZGV4LCB2
YWx1ZSwgYmFzZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA3Y2Qz
OTI2Li4wYzcyOTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwCkBAIC03Miw2ICs3
Miw4IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxTZWxlY3RFbGVtZW50OjpyZW1vdmVD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBy
ZW1vdmVFbGVtZW50KEhUTUxTZWxlY3RFbGVtZW50KiBpbXAsIGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpIAogeworICAgIEFTU0VSVChpbXApOworCiAgICAgaWYgKFY4SFRNTE9wdGlvbkVsZW1l
bnQ6Okhhc0luc3RhbmNlKGFyZ3NbMF0pKSB7CiAgICAgICAgIEhUTUxPcHRpb25FbGVtZW50KiBl
bGVtZW50ID0gVjhIVE1MT3B0aW9uRWxlbWVudDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Pjo6Q2FzdChhcmdzWzBdKSk7CiAgICAgICAgIGltcC0+cmVtb3ZlKGVsZW1lbnQtPmluZGV4
KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121058</attachid>
            <date>2012-01-03 21:33:40 -0800</date>
            <delta_ts>2012-01-06 11:27:26 -0800</delta_ts>
            <desc>Better patch</desc>
            <filename>bug-75437-v2.diff</filename>
            <type>text/plain</type>
            <size>57259</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNmMzNTc4Li4yZDIyMDg4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDEt
MDMgIEFuZHJlYXMgS2xpbmcgIDxhd2Vzb21la2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFNp
bXBsaWZ5IEhUTUxDb2xsZWN0aW9uIG93bmVyc2hpcCBtb2RlbC4KKyAgICAgICAgPGh0dHA6Ly93
ZWJraXQub3JnL2IvNzU0Mzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgLSBSZW1vdmVkIGZhc3QvZG9tL2h0bWxjb2xsZWN0aW9uLXpvbWJpZXMuaHRt
bCBzaW5jZSBpdCB3YXMgdGVzdGluZyBib2d1cyBiZWhhdmlvci4KKyAgICAgICAgLSBBZGRlZCBh
IHRlc3QgdG8gdmVyaWZ5IHRoYXQgSFRNTENvbGxlY3Rpb24gcHJvdGVjdHMgaXRzIGJhc2Ugbm9k
ZSBmcm9tIEdDLgorCisgICAgICAgICogZmFzdC9kb20vaHRtbGNvbGxlY3Rpb24tcHJvdGVjdHMt
YmFzZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2h0bWxjb2xsZWN0
aW9uLXByb3RlY3RzLWJhc2UuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vaHRtbGNv
bGxlY3Rpb24tem9tYmllcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9k
b20vaHRtbGNvbGxlY3Rpb24tem9tYmllcy5odG1sOiBSZW1vdmVkLgorCiAyMDEyLTAxLTAyICBH
YXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU0NTIKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL2h0bWxjb2xsZWN0aW9uLXByb3RlY3RzLWJhc2UtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbGNvbGxlY3Rpb24tcHJvdGVjdHMtYmFzZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZhYjc2OQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2h0bWxjb2xsZWN0aW9uLXBy
b3RlY3RzLWJhc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdCB2ZXJp
ZmllcyB0aGF0IGEgSFRNTENvbGxlY3Rpb24gcHJvdGVjdHMgaXRzIGJhc2Ugbm9kZSBmcm9tIGJl
aW5nIEdDJ2QuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG9wdGlvbnNb
MF0ucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoJ2ZvbycpIGlzICdiYXInCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vaHRtbGNvbGxlY3Rpb24tcHJvdGVjdHMtYmFzZS5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vaHRtbGNvbGxlY3Rpb24tcHJvdGVjdHMtYmFzZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2YjliNDQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sY29sbGVjdGlvbi1wcm90ZWN0cy1iYXNlLmh0bWwKQEAg
LTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzZWxlY3QgZm9vPSJiYXIiPgorPG9wdGlv
biBuYW1lPSJBIj5BPC9vcHRpb24+Cis8L3NlbGVjdD4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9u
KCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIEhUTUxDb2xsZWN0aW9uIHByb3RlY3RzIGl0cyBi
YXNlIG5vZGUgZnJvbSBiZWluZyBHQydkLiIpOworCitvcHRpb25zID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInNlbGVjdCIpWzBdLm9wdGlvbnM7CisKK2RvY3VtZW50LmJvZHkucmVt
b3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNlbGVjdCIpWzBdKTsKKwor
Z2MoKTsKKworb3B0aW9uc1swXSA9IG5ldyBPcHRpb24oImJpayIsICJib2siKTsKK3Nob3VsZEJl
KCJvcHRpb25zWzBdLnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKCdmb28nKSIsICInYmFyJyIpOwor
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2h0bWxjb2xsZWN0aW9uLXpvbWJpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vaHRtbGNvbGxlY3Rpb24tem9tYmllcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGI0Y2E2YmQuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vaHRtbGNvbGxlY3Rpb24tem9tYmllcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSwzMCArMCwwIEBACi1UaGlzIHRlc3QgdGVzdHMgdGhlIGJlaGF2aW9yIG9mIGNvbGxlY3Rp
b25zIGFmdGVyIHRoZWlyIGJhc2Ugbm9kZSBoYXMgYmVlbiBkZXN0cm95ZWQuCi0KLU9uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KLQotCi1UZXN0aW5nIHNlbGVjdEVsZW1lbnQncyBvcHRpb25zIGNv
bGxlY3Rpb24uCi1QQVNTIGNvbGxlY3Rpb24ubGVuZ3RoIGlzIDIKLVBBU1MgY29sbGVjdGlvblsw
XS5nZXRBdHRyaWJ1dGUoJ25hbWUnKSBpcyAnZm9vJwotUEFTUyBjb2xsZWN0aW9uWzFdLmdldEF0
dHJpYnV0ZSgnbmFtZScpIGlzICdiYXInCi1EZXN0cm95aW5nIHNlbGVjdEVsZW1lbnQKLVBBU1Mg
Y29sbGVjdGlvbi5sZW5ndGggaXMgMAotUEFTUyBjb2xsZWN0aW9uWzBdIGlzIHVuZGVmaW5lZAot
VGVzdGluZyBmb3JtRWxlbWVudCdzIGVsZW1lbnRzIGNvbGxlY3Rpb24uCi1QQVNTIGNvbGxlY3Rp
b24ubGVuZ3RoIGlzIDIKLVBBU1MgY29sbGVjdGlvblswXS5nZXRBdHRyaWJ1dGUoJ25hbWUnKSBp
cyAnZm9vJwotUEFTUyBjb2xsZWN0aW9uWzFdLmdldEF0dHJpYnV0ZSgnbmFtZScpIGlzICdiYXIn
Ci1EZXN0cm95aW5nIGZvcm1FbGVtZW50Ci1QQVNTIGNvbGxlY3Rpb24ubGVuZ3RoIGlzIDAKLVBB
U1MgY29sbGVjdGlvblswXSBpcyB1bmRlZmluZWQKLVRlc3RpbmcgdGFibGVFbGVtZW50J3Mgcm93
cyBjb2xsZWN0aW9uLgotUEFTUyBjb2xsZWN0aW9uLmxlbmd0aCBpcyAyCi1QQVNTIGNvbGxlY3Rp
b25bMF0uZ2V0QXR0cmlidXRlKCduYW1lJykgaXMgJ2ZvbycKLVBBU1MgY29sbGVjdGlvblsxXS5n
ZXRBdHRyaWJ1dGUoJ25hbWUnKSBpcyAnYmFyJwotRGVzdHJveWluZyB0YWJsZUVsZW1lbnQKLVBB
U1MgY29sbGVjdGlvbi5sZW5ndGggaXMgMAotUEFTUyBjb2xsZWN0aW9uWzBdIGlzIHVuZGVmaW5l
ZAotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2h0bWxjb2xsZWN0aW9uLXpvbWJpZXMuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2h0bWxjb2xsZWN0aW9uLXpvbWJpZXMuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk4Y2FmMC4uMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9odG1sY29sbGVjdGlvbi16b21iaWVzLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSw1NCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Ci08c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNlbGVjdCBpZD0ic2VsZWN0RWxlbWVu
dCI+Ci08b3B0aW9uIG5hbWU9ImZvbyIvPgotPG9wdGlvbiBuYW1lPSJiYXIiLz4KLTwvc2VsZWN0
PgotPGZvcm0gaWQ9ImZvcm1FbGVtZW50Ij4KLTxpbnB1dCBuYW1lPSJmb28iLz4KLTxpbnB1dCBu
YW1lPSJiYXIiLz4KLTwvZm9ybT4KLTx0YWJsZSBpZD0idGFibGVFbGVtZW50Ij4KLTx0ciBuYW1l
PSJmb28iPjwvdHI+Ci08dHIgbmFtZT0iYmFyIj48L3RyPgotPC90YWJsZT4KLTxzY3JpcHQ+Ci0K
LWRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdGVzdHMgdGhlIGJlaGF2aW9yIG9mIGNvbGxlY3Rpb25z
IGFmdGVyIHRoZWlyIGJhc2Ugbm9kZSBoYXMgYmVlbiBkZXN0cm95ZWQuIik7Ci0KLXZhciBlbGVt
ZW50OwotdmFyIGNvbGxlY3Rpb247Ci0KLWZ1bmN0aW9uIHRlc3Rab21iaWVCZWhhdmlvcihpZCwg
Y29sbGVjdGlvbkdldHRlck5hbWUpCi17Ci0gICAgZGVidWcoIlRlc3RpbmcgIiArIGlkICsgIidz
ICIgKyBjb2xsZWN0aW9uR2V0dGVyTmFtZSArICIgY29sbGVjdGlvbi4iKTsKLQotICAgIGVsZW1l
bnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7Ci0gICAgY29sbGVjdGlvbiA9IGV2YWwo
ImVsZW1lbnQuIiArIGNvbGxlY3Rpb25HZXR0ZXJOYW1lKTsKLQotICAgIHNob3VsZEJlKCJjb2xs
ZWN0aW9uLmxlbmd0aCIsICIyIik7Ci0gICAgc2hvdWxkQmUoImNvbGxlY3Rpb25bMF0uZ2V0QXR0
cmlidXRlKCduYW1lJykiLCAiJ2ZvbyciKTsKLSAgICBzaG91bGRCZSgiY29sbGVjdGlvblsxXS5n
ZXRBdHRyaWJ1dGUoJ25hbWUnKSIsICInYmFyJyIpOwotCi0gICAgZGVidWcoIkRlc3Ryb3lpbmcg
IiArIGlkKTsKLSAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsZW1lbnQpOwotICAgIGVs
ZW1lbnQgPSBudWxsOwotICAgIGdjKCk7Ci0KLSAgICBzaG91bGRCZSgiY29sbGVjdGlvbi5sZW5n
dGgiLCAiMCIpOwotICAgIHNob3VsZEJlKCJjb2xsZWN0aW9uWzBdIiwgInVuZGVmaW5lZCIpOwot
fQotCi10ZXN0Wm9tYmllQmVoYXZpb3IoInNlbGVjdEVsZW1lbnQiLCAib3B0aW9ucyIpOwotdGVz
dFpvbWJpZUJlaGF2aW9yKCJmb3JtRWxlbWVudCIsICJlbGVtZW50cyIpOwotdGVzdFpvbWJpZUJl
aGF2aW9yKCJ0YWJsZUVsZW1lbnQiLCAicm93cyIpOwotCi08L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCBjOTgwMTdmLi42OTE1NWRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYxIEBACisyMDEyLTAxLTAzICBBbmRyZWFzIEtsaW5nICA8YXdlc29tZWtsaW5nQGFwcGxl
LmNvbT4KKworICAgICAgICBTaW1wbGlmeSBIVE1MQ29sbGVjdGlvbiBvd25lcnNoaXAgbW9kZWwu
CisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzc1NDM3PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBIVE1MQ29sbGVjdGlvbidzIGlu
aGVyaXRhbmNlIGZyb20gUmVmQ291bnRlZCBhbmQgdXNlIE93blB0ciB0byBzdG9yZSBpdC4KKyAg
ICAgICAgQWRkZWQgcmVmKCkvZGVyZWYoKSBtZXRob2RzIHRoYXQgZm9yd2FyZCB0byB0aGUgY29s
bGVjdGlvbidzIGJhc2Ugbm9kZSwgdGhlc2UKKyAgICAgICAgYXJlIG9ubHkgZXZlciB1c2VkIGJ5
IERPTSB3cmFwcGVycy4KKworICAgICAgICBUaGlzIGlzIGEgYmVoYXZpb3IgY2hhbmdlLCBIVE1M
Q29sbGVjdGlvbiB3cmFwcGVycyBub3cga2VlcCB0aGUgYmFzZSBub2RlIGFsaXZlLgorCisgICAg
ICAgIFRlc3Q6IGZhc3QvZG9tL2h0bWxjb2xsZWN0aW9uLXByb3RlY3RzLWJhc2UuaHRtbAorCisg
ICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENv
bGxlY3Rpb246OnJlZik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6ZGVyZWYp
OgorCisgICAgICAgICAgICBSZW1vdmVkIGluaGVyaXRhbmNlIGZyb20gUmVmQ291bnRlZC4gQWRk
ZWQgcmVmL2RlcmVmIHRoYXQgZm9yd2FyZCB0aGUgcmVmcworICAgICAgICAgICAgdG8gdGhlIGNv
bGxlY3Rpb24ncyBiYXNlIE5vZGUuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50Ojp+RWxlbWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50
Lmg6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojp+RG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6fkhUTUxGb3JtRWxlbWVudCk6CisgICAg
ICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuY3BwOgorCisgICAgICAgICAgICBSZW1vdmUgSFRNTENvbGxlY3Rpb246OmRldGFj
aEZyb21Ob2RlKCkgYW5kIGNhbGwgc2l0ZXMuCisKKyAgICAgICAgKiBodG1sL0hUTUxBbGxDb2xs
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbGxDb2xsZWN0aW9uOjpuYW1lZEl0
ZW1XaXRoSW5kZXgpOgorICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246OkhUTUxDb2xsZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGVJZk5lZWRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6aXRlbUFmdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxDb2xsZWN0aW9uOjpjYWxjTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xs
ZWN0aW9uOjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246Oml0ZW0p
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246Om5leHRJdGVtKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjpuYW1lZEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTENvbGxlY3Rpb246OnVwZGF0ZU5hbWVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Q29sbGVjdGlvbjo6aGFzTmFtZWRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0
aW9uOjpuYW1lZEl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjp0YWdz
KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUNvbGxlY3Rpb246OmNhbGNMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZvcm1Db2xsZWN0aW9uOjppdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29s
bGVjdGlvbjo6Z2V0TmFtZWRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29sbGVj
dGlvbjo6bmFtZWRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29sbGVjdGlvbjo6
dXBkYXRlTmFtZUNhY2hlKToKKyAgICAgICAgKiBodG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTmFtZUNvbGxlY3Rpb246Oml0ZW1BZnRlcik6CisgICAg
ICAgICogaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlv
bnNDb2xsZWN0aW9uOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbnNDb2xs
ZWN0aW9uOjpzZWxlY3RlZEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRpb25zQ29s
bGVjdGlvbjo6c2V0U2VsZWN0ZWRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9u
c0NvbGxlY3Rpb246OnNldExlbmd0aCk6CisgICAgICAgICogaHRtbC9IVE1MUHJvcGVydGllc0Nv
bGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9u
OjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uOjpp
dGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6bmFtZXMp
OgorCisgICAgICAgICAgICBSZW1vdmVkIGJhc2Ugbm9kZSBudWxsLWNoZWNrcyBhbmQgYXNzZXJ0
aW9ucy4gQWRkZWQgb25lIGFzc2VydGlvbiB0bworICAgICAgICAgICAgdGhlIEhUTUxDb2xsZWN0
aW9uIGNvbnN0cnVjdG9yICh0aGF0IG1fYmFzZSBpcyBub24tbnVsbC4pCisKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6Om9wZW5TZWFyY2hEZXNjcmlwdGlvblVSTCk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6Y2FjaGVkQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6aW1hZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphcHBsZXRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjplbWJlZHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnBsdWdpbnMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om9iamVjdHMpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNjcmlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmxpbmtzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpmb3Jtcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YW5jaG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6YWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3aW5kb3dOYW1lZEl0
ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpkb2N1bWVudE5hbWVkSXRlbXMpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om5hbWVkSXRlbUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRG9j
dW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6Om5hbWVH
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6OmFsbCk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4RE9NV2luZG93OjpuYW1lZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhIVE1MRG9jdW1lbnQ6OkdldE5hbWVkUHJvcGVydHkpOgorICAgICAgICAqIGRvbS9FbGVt
ZW50UmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6ZW5zdXJl
Q2FjaGVkSFRNTENvbGxlY3Rpb24pOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6cHJvcGVydGllcyk6CisgICAgICAgICogaHRt
bC9IVE1MQWxsQ29sbGVjdGlvbi5oOgorICAgICAgICAqIGh0bWwvSFRNTEFsbENvbGxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFsbENvbGxlY3Rpb246OmNyZWF0ZSk6CisgICAg
ICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5oOgorICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6SFRNTENvbGxlY3Rpb24pOgorICAgICAgICAq
IGh0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGF0
YUxpc3RFbGVtZW50OjpvcHRpb25zKToKKyAgICAgICAgKiBodG1sL0hUTUxEYXRhTGlzdEVsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxFbGVtZW50OjpjaGlsZHJlbik6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxTZWxlY3RFbGVtZW50OjpvcHRpb25zKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29sbGVj
dGlvbi5oOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50Lmg6CisgICAgICAgICogaHRt
bC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50
OjplbGVtZW50cyk6CisgICAgICAgICogaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxOYW1lQ29sbGVjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1s
L0hUTUxGb3JtQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbGxl
Y3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MTWFwRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWFwRWxlbWVudDo6aW1hZ2VFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNYXBFbGVtZW50OjphcmVhcyk6CisgICAgICAgICogaHRtbC9IVE1MTWFwRWxl
bWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmg6CisgICAg
ICAgICogaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
YWJsZUVsZW1lbnQ6OnJvd3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6
dEJvZGllcyk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVFbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJs
ZVJvd0VsZW1lbnQ6Omluc2VydENlbGwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlUm93
RWxlbWVudDo6ZGVsZXRlQ2VsbCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVSb3dFbGVt
ZW50OjpjZWxscyk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50Lmg6CisgICAg
ICAgICogaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGFibGVSb3dzQ29sbGVjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUYWJsZVJvd3NDb2xsZWN0aW9uOjppdGVtQWZ0ZXIpOgorICAgICAgICAqIGh0bWwvSFRNTFRh
YmxlUm93c0NvbGxlY3Rpb24uaDoKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6aW5zZXJ0Um93KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjpkZWxldGVSb3cpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6OnJvd3MpOgorICAgICAgICAqIGh0
bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50OjpzZWxlY3RlZE9wdGlvbik6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rp
b24uaDoKKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogaHRt
bC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBy
b3BlcnRpZXNDb2xsZWN0aW9uOjpjcmVhdGUpOgorCisgICAgICAgICAgICBTdG9yZSBjYWNoZWQg
SFRNTENvbGxlY3Rpb25zIGluIE93blB0cnMuIE1ldGhvZHMgdGhhdCB1c2VkIHRvIHJldHVybgor
ICAgICAgICAgICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gbm93IHNpbXBseSByZXR1cm4g
SFRNTENvbGxlY3Rpb24qLgorICAgICAgICAgICAgVXBkYXRlZCBjYWxsIHNpdGVzIGFzIGFwcHJv
cHJpYXRlLgorCiAyMDEyLTAxLTAzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBVc2UgZ2RrX3NjcmVlbl9nZXRfbW9uaXRvcl93b3Jr
YXJlYSgpIHdoZW4gYXZhaWxhYmxlIGZvciBzY3JlZW5BdmFpbGFibGVSZWN0KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAxN2Jl
N2UxLi41NmY1NTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwCkBAIC0xMTUsMTAgKzExNSwxMCBAQCBzdGF0aWMgSlNWYWx1ZSBuYW1l
ZEl0ZW1HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVu
dGlmaQogICAgIEFTU0VSVChkb2N1bWVudCk7CiAgICAgQVNTRVJUKGRvY3VtZW50LT5pc0hUTUxE
b2N1bWVudCgpKTsKIAotICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gY29sbGVjdGlvbiA9IGRv
Y3VtZW50LT53aW5kb3dOYW1lZEl0ZW1zKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0
eU5hbWUpKTsKKyAgICBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IGRvY3VtZW50LT53aW5k
b3dOYW1lZEl0ZW1zKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAg
ICBpZiAoY29sbGVjdGlvbi0+bGVuZ3RoKCkgPT0gMSkKICAgICAgICAgcmV0dXJuIHRvSlMoZXhl
YywgdGhpc09iaiwgY29sbGVjdGlvbi0+Zmlyc3RJdGVtKCkpOwotICAgIHJldHVybiB0b0pTKGV4
ZWMsIHRoaXNPYmosIGNvbGxlY3Rpb24uZ2V0KCkpOworICAgIHJldHVybiB0b0pTKGV4ZWMsIHRo
aXNPYmosIGNvbGxlY3Rpb24pOwogfQogCiBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IGMwMGE1NTEuLmZkNTE4
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVu
dEN1c3RvbS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6bmFt
ZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW4KICAg
ICBKU0hUTUxEb2N1bWVudCogdGhpc09iaiA9IHN0YXRpY19jYXN0PEpTSFRNTERvY3VtZW50Kj4o
YXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGlj
X2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhpc09iai0+aW1wbCgpKTsKIAotICAgIFJlZlB0cjxIVE1M
Q29sbGVjdGlvbj4gY29sbGVjdGlvbiA9IGRvY3VtZW50LT5kb2N1bWVudE5hbWVkSXRlbXMoaWRl
bnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIEhUTUxDb2xsZWN0aW9u
KiBjb2xsZWN0aW9uID0gZG9jdW1lbnQtPmRvY3VtZW50TmFtZWRJdGVtcyhpZGVudGlmaWVyVG9B
dG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGggPSBjb2xs
ZWN0aW9uLT5sZW5ndGgoKTsKICAgICBpZiAoIWxlbmd0aCkKQEAgLTc3LDcgKzc3LDcgQEAgSlNW
YWx1ZSBKU0hUTUxEb2N1bWVudDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
c2xvdEJhc2UsIGNvbnN0IElkZW4KICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+
Z2xvYmFsT2JqZWN0KCksIG5vZGUpOwogICAgIH0gCiAKLSAgICByZXR1cm4gdG9KUyhleGVjLCB0
aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgY29sbGVjdGlvbi5nZXQoKSk7CisgICAgcmV0dXJuIHRv
SlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIGNvbGxlY3Rpb24pOwogfQogCiAvLyBD
dXN0b20gYXR0cmlidXRlcwpAQCAtODksNyArODksNyBAQCBKU1ZhbHVlIEpTSFRNTERvY3VtZW50
OjphbGwoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIGlmICh2KQogICAgICAgICByZXR1cm4g
djsKIAotICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBzdGF0aWNfY2FzdDxI
VE1MRG9jdW1lbnQqPihpbXBsKCkpLT5hbGwoKS5nZXQoKSk7CisgICAgcmV0dXJuIHRvSlMoZXhl
YywgZ2xvYmFsT2JqZWN0KCksIHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGltcGwoKSktPmFs
bCgpKTsKIH0KIAogdm9pZCBKU0hUTUxEb2N1bWVudDo6c2V0QWxsKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDViZGZmMTQuLmI3NGIyNjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93
Q3VzdG9tLmNwcApAQCAtNTEyLDExICs1MTIsMTEgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
RE9NV2luZG93OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0K
IAogICAgIGlmIChkb2MgJiYgZG9jLT5pc0hUTUxEb2N1bWVudCgpKSB7CiAgICAgICAgIGlmIChz
dGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihkb2MpLT5oYXNOYW1lZEl0ZW0ocHJvcE5hbWUuaW1w
bCgpKSB8fCBkb2MtPmhhc0VsZW1lbnRXaXRoSWQocHJvcE5hbWUuaW1wbCgpKSkgewotICAgICAg
ICAgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBpdGVtcyA9IGRvYy0+d2luZG93TmFtZWRJdGVt
cyhwcm9wTmFtZSk7CisgICAgICAgICAgICBIVE1MQ29sbGVjdGlvbiogaXRlbXMgPSBkb2MtPndp
bmRvd05hbWVkSXRlbXMocHJvcE5hbWUpOwogICAgICAgICAgICAgaWYgKGl0ZW1zLT5sZW5ndGgo
KSA+PSAxKSB7CiAgICAgICAgICAgICAgICAgaWYgKGl0ZW1zLT5sZW5ndGgoKSA9PSAxKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdG9WOChpdGVtcy0+Zmlyc3RJdGVtKCkpOwotICAgICAg
ICAgICAgICAgIHJldHVybiB0b1Y4KGl0ZW1zLnJlbGVhc2UoKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHRvVjgoaXRlbXMpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1
bWVudEN1c3RvbS5jcHAKaW5kZXggYWVmMzdjNy4uNDFhZTA3MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20u
Y3BwCkBAIC03OSw3ICs3OSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVu
dDo6R2V0TmFtZWRQcm9wZXJ0eShIVE1MRG9jdW1lbnQqIGh0bWxEb2N1bWVuCiAgICAgaWYgKCFo
dG1sRG9jdW1lbnQtPmhhc05hbWVkSXRlbShrZXkuaW1wbCgpKSAmJiAhaHRtbERvY3VtZW50LT5o
YXNFeHRyYU5hbWVkSXRlbShrZXkuaW1wbCgpKSkKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8
djg6OlZhbHVlPigpOwogCi0gICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBpdGVtcyA9IGh0bWxE
b2N1bWVudC0+ZG9jdW1lbnROYW1lZEl0ZW1zKGtleSk7CisgICAgSFRNTENvbGxlY3Rpb24qIGl0
ZW1zID0gaHRtbERvY3VtZW50LT5kb2N1bWVudE5hbWVkSXRlbXMoa2V5KTsKICAgICBpZiAoIWl0
ZW1zLT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwog
CkBAIC05Miw3ICs5Miw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6
R2V0TmFtZWRQcm9wZXJ0eShIVE1MRG9jdW1lbnQqIGh0bWxEb2N1bWVuCiAgICAgICAgIHJldHVy
biB0b1Y4KG5vZGUpOwogICAgIH0KIAotICAgIHJldHVybiB0b1Y4KGl0ZW1zLnJlbGVhc2UoKSk7
CisgICAgcmV0dXJuIHRvVjgoaXRlbXMpOwogfQogCiAvLyBIVE1MRG9jdW1lbnQgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYWI1MGIxZS4uYzRiYjMwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCkBAIC01NjYsMTQgKzU2Niw2IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQoKQog
CiAgICAgaWYgKG1fbWVkaWFRdWVyeU1hdGNoZXIpCiAgICAgICAgIG1fbWVkaWFRdWVyeU1hdGNo
ZXItPmRvY3VtZW50RGVzdHJveWVkKCk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
TnVtVW5uYW1lZERvY3VtZW50Q2FjaGVkVHlwZXM7ICsraSkgewotICAgICAgICBpZiAobV9jb2xs
ZWN0aW9uc1tpXSkKLSAgICAgICAgICAgIG1fY29sbGVjdGlvbnNbaV0tPmRldGFjaEZyb21Ob2Rl
KCk7Ci0gICAgfQotCi0gICAgaWYgKG1fYWxsQ29sbGVjdGlvbikKLSAgICAgICAgbV9hbGxDb2xs
ZWN0aW9uLT5kZXRhY2hGcm9tTm9kZSgpOwogfQogCiB2b2lkIERvY3VtZW50OjpyZW1vdmVkTGFz
dFJlZigpCkBAIC00MDc0LDcgKzQwNjYsNyBAQCBLVVJMIERvY3VtZW50OjpvcGVuU2VhcmNoRGVz
Y3JpcHRpb25VUkwoKQogICAgIGlmICghaGVhZCgpKQogICAgICAgICByZXR1cm4gS1VSTCgpOwog
Ci0gICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBjaGlsZHJlbiA9IGhlYWQoKS0+Y2hpbGRyZW4o
KTsKKyAgICBIVE1MQ29sbGVjdGlvbiogY2hpbGRyZW4gPSBoZWFkKCktPmNoaWxkcmVuKCk7CiAg
ICAgZm9yIChOb2RlKiBjaGlsZCA9IGNoaWxkcmVuLT5maXJzdEl0ZW0oKTsgY2hpbGQ7IGNoaWxk
ID0gY2hpbGRyZW4tPm5leHRJdGVtKCkpIHsKICAgICAgICAgaWYgKCFjaGlsZC0+aGFzVGFnTmFt
ZShsaW5rVGFnKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNDE5OSw4MSArNDE5MSw4MSBA
QCBib29sIERvY3VtZW50OjpoYXNTVkdSb290Tm9kZSgpIGNvbnN0CiB9CiAjZW5kaWYKIAotY29u
c3QgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiYgRG9jdW1lbnQ6OmNhY2hlZENvbGxlY3Rpb24oQ29s
bGVjdGlvblR5cGUgdHlwZSkKK0hUTUxDb2xsZWN0aW9uKiBEb2N1bWVudDo6Y2FjaGVkQ29sbGVj
dGlvbihDb2xsZWN0aW9uVHlwZSB0eXBlKQogewogICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4odHlwZSkgPCBOdW1Vbm5hbWVkRG9jdW1lbnRDYWNoZWRUeXBlcyk7CiAgICAgaWYgKCFt
X2NvbGxlY3Rpb25zW3R5cGVdKQogICAgICAgICBtX2NvbGxlY3Rpb25zW3R5cGVdID0gSFRNTENv
bGxlY3Rpb246OmNyZWF0ZSh0aGlzLCB0eXBlKTsKLSAgICByZXR1cm4gbV9jb2xsZWN0aW9uc1t0
eXBlXTsKKyAgICByZXR1cm4gbV9jb2xsZWN0aW9uc1t0eXBlXS5nZXQoKTsKIH0KIAotUGFzc1Jl
ZlB0cjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmltYWdlcygpCitIVE1MQ29sbGVjdGlvbiog
RG9jdW1lbnQ6OmltYWdlcygpCiB7CiAgICAgcmV0dXJuIGNhY2hlZENvbGxlY3Rpb24oRG9jSW1h
Z2VzKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmFwcGxldHMo
KQorSFRNTENvbGxlY3Rpb24qIERvY3VtZW50OjphcHBsZXRzKCkKIHsKICAgICByZXR1cm4gY2Fj
aGVkQ29sbGVjdGlvbihEb2NBcHBsZXRzKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlv
bj4gRG9jdW1lbnQ6OmVtYmVkcygpCitIVE1MQ29sbGVjdGlvbiogRG9jdW1lbnQ6OmVtYmVkcygp
CiB7CiAgICAgcmV0dXJuIGNhY2hlZENvbGxlY3Rpb24oRG9jRW1iZWRzKTsKIH0KIAotUGFzc1Jl
ZlB0cjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OnBsdWdpbnMoKQorSFRNTENvbGxlY3Rpb24q
IERvY3VtZW50OjpwbHVnaW5zKCkKIHsKICAgICAvLyBUaGlzIGlzIGFuIGFsaWFzIGZvciBlbWJl
ZHMoKSByZXF1aXJlZCBmb3IgdGhlIEpTIERPTSBiaW5kaW5ncy4KICAgICByZXR1cm4gY2FjaGVk
Q29sbGVjdGlvbihEb2NFbWJlZHMpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBE
b2N1bWVudDo6b2JqZWN0cygpCitIVE1MQ29sbGVjdGlvbiogRG9jdW1lbnQ6Om9iamVjdHMoKQog
ewogICAgIHJldHVybiBjYWNoZWRDb2xsZWN0aW9uKERvY09iamVjdHMpOwogfQogCi1QYXNzUmVm
UHRyPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6c2NyaXB0cygpCitIVE1MQ29sbGVjdGlvbiog
RG9jdW1lbnQ6OnNjcmlwdHMoKQogewogICAgIHJldHVybiBjYWNoZWRDb2xsZWN0aW9uKERvY1Nj
cmlwdHMpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6bGlua3Mo
KQorSFRNTENvbGxlY3Rpb24qIERvY3VtZW50OjpsaW5rcygpCiB7CiAgICAgcmV0dXJuIGNhY2hl
ZENvbGxlY3Rpb24oRG9jTGlua3MpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBE
b2N1bWVudDo6Zm9ybXMoKQorSFRNTENvbGxlY3Rpb24qIERvY3VtZW50Ojpmb3JtcygpCiB7CiAg
ICAgcmV0dXJuIGNhY2hlZENvbGxlY3Rpb24oRG9jRm9ybXMpOwogfQogCi1QYXNzUmVmUHRyPEhU
TUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6YW5jaG9ycygpCitIVE1MQ29sbGVjdGlvbiogRG9jdW1l
bnQ6OmFuY2hvcnMoKQogewogICAgIHJldHVybiBjYWNoZWRDb2xsZWN0aW9uKERvY0FuY2hvcnMp
OwogfQogCi1QYXNzUmVmUHRyPEhUTUxBbGxDb2xsZWN0aW9uPiBEb2N1bWVudDo6YWxsKCkKK0hU
TUxBbGxDb2xsZWN0aW9uKiBEb2N1bWVudDo6YWxsKCkKIHsKICAgICBpZiAoIW1fYWxsQ29sbGVj
dGlvbikKICAgICAgICAgbV9hbGxDb2xsZWN0aW9uID0gSFRNTEFsbENvbGxlY3Rpb246OmNyZWF0
ZSh0aGlzKTsKLSAgICByZXR1cm4gbV9hbGxDb2xsZWN0aW9uOworICAgIHJldHVybiBtX2FsbENv
bGxlY3Rpb24uZ2V0KCk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50
Ojp3aW5kb3dOYW1lZEl0ZW1zKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK0hUTUxDb2xsZWN0
aW9uKiBEb2N1bWVudDo6d2luZG93TmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUp
CiB7Ci0gICAgUmVmUHRyPEhUTUxOYW1lQ29sbGVjdGlvbj4mIGNvbGxlY3Rpb24gPSBtX3dpbmRv
d05hbWVkSXRlbUNvbGxlY3Rpb25zLmFkZChuYW1lLmltcGwoKSwgMCkuZmlyc3QtPnNlY29uZDsK
KyAgICBPd25QdHI8SFRNTE5hbWVDb2xsZWN0aW9uPiYgY29sbGVjdGlvbiA9IG1fd2luZG93TmFt
ZWRJdGVtQ29sbGVjdGlvbnMuYWRkKG5hbWUuaW1wbCgpLCBudWxscHRyKS5maXJzdC0+c2Vjb25k
OwogICAgIGlmICghY29sbGVjdGlvbikKICAgICAgICAgY29sbGVjdGlvbiA9IEhUTUxOYW1lQ29s
bGVjdGlvbjo6Y3JlYXRlKHRoaXMsIFdpbmRvd05hbWVkSXRlbXMsIG5hbWUpOwotICAgIHJldHVy
biBjb2xsZWN0aW9uOworICAgIHJldHVybiBjb2xsZWN0aW9uLmdldCgpOwogfQogCi1QYXNzUmVm
UHRyPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6ZG9jdW1lbnROYW1lZEl0ZW1zKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSkKK0hUTUxDb2xsZWN0aW9uKiBEb2N1bWVudDo6ZG9jdW1lbnROYW1l
ZEl0ZW1zKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKLSAgICBSZWZQdHI8SFRNTE5hbWVD
b2xsZWN0aW9uPiYgY29sbGVjdGlvbiA9IG1fZG9jdW1lbnROYW1lZEl0ZW1Db2xsZWN0aW9ucy5h
ZGQobmFtZS5pbXBsKCksIDApLmZpcnN0LT5zZWNvbmQ7CisgICAgT3duUHRyPEhUTUxOYW1lQ29s
bGVjdGlvbj4mIGNvbGxlY3Rpb24gPSBtX2RvY3VtZW50TmFtZWRJdGVtQ29sbGVjdGlvbnMuYWRk
KG5hbWUuaW1wbCgpLCBudWxscHRyKS5maXJzdC0+c2Vjb25kOwogICAgIGlmICghY29sbGVjdGlv
bikKICAgICAgICAgY29sbGVjdGlvbiA9IEhUTUxOYW1lQ29sbGVjdGlvbjo6Y3JlYXRlKHRoaXMs
IERvY3VtZW50TmFtZWRJdGVtcywgbmFtZSk7Ci0gICAgcmV0dXJuIGNvbGxlY3Rpb247CisgICAg
cmV0dXJuIGNvbGxlY3Rpb24uZ2V0KCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OmZpbmlzaGVkUGFy
c2luZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDY4ZWU3OWYuLjA5YTI1YjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCkBAIC00MTAsMTkgKzQxMCwxOSBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVm
UHRyPE5vZGU+IGFkb3B0Tm9kZShQYXNzUmVmUHRyPE5vZGU+IHNvdXJjZSwgRXhjZXB0aW9uQ29k
ZSYpOwogCi0gICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gaW1hZ2VzKCk7Ci0gICAgUGFz
c1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gZW1iZWRzKCk7Ci0gICAgUGFzc1JlZlB0cjxIVE1MQ29s
bGVjdGlvbj4gcGx1Z2lucygpOyAvLyBhbiBhbGlhcyBmb3IgZW1iZWRzKCkgcmVxdWlyZWQgZm9y
IHRoZSBKUyBET00gYmluZGluZ3MuCi0gICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gYXBw
bGV0cygpOwotICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGxpbmtzKCk7Ci0gICAgUGFz
c1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gZm9ybXMoKTsKLSAgICBQYXNzUmVmUHRyPEhUTUxDb2xs
ZWN0aW9uPiBhbmNob3JzKCk7Ci0gICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gb2JqZWN0
cygpOwotICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IHNjcmlwdHMoKTsKLSAgICBQYXNz
UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiB3aW5kb3dOYW1lZEl0ZW1zKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSk7Ci0gICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gZG9jdW1lbnROYW1lZEl0
ZW1zKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7Ci0KLSAgICBQYXNzUmVmUHRyPEhUTUxBbGxD
b2xsZWN0aW9uPiBhbGwoKTsKKyAgICBIVE1MQ29sbGVjdGlvbiogaW1hZ2VzKCk7CisgICAgSFRN
TENvbGxlY3Rpb24qIGVtYmVkcygpOworICAgIEhUTUxDb2xsZWN0aW9uKiBwbHVnaW5zKCk7IC8v
IGFuIGFsaWFzIGZvciBlbWJlZHMoKSByZXF1aXJlZCBmb3IgdGhlIEpTIERPTSBiaW5kaW5ncy4K
KyAgICBIVE1MQ29sbGVjdGlvbiogYXBwbGV0cygpOworICAgIEhUTUxDb2xsZWN0aW9uKiBsaW5r
cygpOworICAgIEhUTUxDb2xsZWN0aW9uKiBmb3JtcygpOworICAgIEhUTUxDb2xsZWN0aW9uKiBh
bmNob3JzKCk7CisgICAgSFRNTENvbGxlY3Rpb24qIG9iamVjdHMoKTsKKyAgICBIVE1MQ29sbGVj
dGlvbiogc2NyaXB0cygpOworICAgIEhUTUxDb2xsZWN0aW9uKiB3aW5kb3dOYW1lZEl0ZW1zKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CisgICAgSFRNTENvbGxlY3Rpb24qIGRvY3VtZW50TmFt
ZWRJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOworCisgICAgSFRNTEFsbENvbGxlY3Rp
b24qIGFsbCgpOwogCiAgICAgLy8gT3RoZXIgbWV0aG9kcyAobm90IHBhcnQgb2YgRE9NKQogICAg
IGJvb2wgaXNIVE1MRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2lzSFRNTDsgfQpAQCAtMTE3
Niw3ICsxMTc2LDcgQEAgcHJpdmF0ZToKICAgICBQYWdlVmlzaWJpbGl0eVN0YXRlIHZpc2liaWxp
dHlTdGF0ZSgpIGNvbnN0OwogI2VuZGlmCiAKLSAgICBjb25zdCBSZWZQdHI8SFRNTENvbGxlY3Rp
b24+JiBjYWNoZWRDb2xsZWN0aW9uKENvbGxlY3Rpb25UeXBlKTsKKyAgICBIVE1MQ29sbGVjdGlv
biogY2FjaGVkQ29sbGVjdGlvbihDb2xsZWN0aW9uVHlwZSk7CiAKICAgICBpbnQgbV9ndWFyZFJl
ZkNvdW50OwogCkBAIC0xMzU4LDEwICsxMzU4LDEwIEBAIHByaXZhdGU6CiAgICAgCiAgICAgQ2hl
Y2tlZFJhZGlvQnV0dG9ucyBtX2NoZWNrZWRSYWRpb0J1dHRvbnM7CiAKLSAgICBSZWZQdHI8SFRN
TENvbGxlY3Rpb24+IG1fY29sbGVjdGlvbnNbTnVtVW5uYW1lZERvY3VtZW50Q2FjaGVkVHlwZXNd
OwotICAgIFJlZlB0cjxIVE1MQWxsQ29sbGVjdGlvbj4gbV9hbGxDb2xsZWN0aW9uOworICAgIE93
blB0cjxIVE1MQ29sbGVjdGlvbj4gbV9jb2xsZWN0aW9uc1tOdW1Vbm5hbWVkRG9jdW1lbnRDYWNo
ZWRUeXBlc107CisgICAgT3duUHRyPEhUTUxBbGxDb2xsZWN0aW9uPiBtX2FsbENvbGxlY3Rpb247
CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIFJlZlB0cjxIVE1MTmFt
ZUNvbGxlY3Rpb24+ID4gTmFtZWRDb2xsZWN0aW9uTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxB
dG9taWNTdHJpbmdJbXBsKiwgT3duUHRyPEhUTUxOYW1lQ29sbGVjdGlvbj4gPiBOYW1lZENvbGxl
Y3Rpb25NYXA7CiAgICAgTmFtZWRDb2xsZWN0aW9uTWFwIG1fZG9jdW1lbnROYW1lZEl0ZW1Db2xs
ZWN0aW9uczsKICAgICBOYW1lZENvbGxlY3Rpb25NYXAgbV93aW5kb3dOYW1lZEl0ZW1Db2xsZWN0
aW9uczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDk2NzliMTIuLjkyYjI0ZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKQEAgLTEyMywxNiArMTIzLDYgQEAgRWxlbWVudDo6fkVsZW1lbnQo
KQogICAgIHJlbW92ZVNoYWRvd1Jvb3QoKTsKICAgICBpZiAobV9hdHRyaWJ1dGVNYXApCiAgICAg
ICAgIG1fYXR0cmlidXRlTWFwLT5kZXRhY2hGcm9tRWxlbWVudCgpOwotCi0gICAgaWYgKGhhc1Jh
cmVEYXRhKCkpIHsKLSAgICAgICAgRWxlbWVudFJhcmVEYXRhKiBlbGVtZW50UmFyZURhdGEgPSBy
YXJlRGF0YSgpOwotICAgICAgICBpZiAoZWxlbWVudFJhcmVEYXRhLT5oYXNDYWNoZWRIVE1MQ29s
bGVjdGlvbnMoKSkgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCB0eXBlID0gMDsgdHlwZSA8
IE51bU5vZGVDb2xsZWN0aW9uVHlwZXM7ICsrdHlwZSkgewotICAgICAgICAgICAgICAgIGlmIChI
VE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IGVsZW1lbnRSYXJlRGF0YS0+Y2FjaGVkSFRNTENv
bGxlY3Rpb24oc3RhdGljX2Nhc3Q8Q29sbGVjdGlvblR5cGU+KEZpcnN0Tm9kZUNvbGxlY3Rpb25U
eXBlICsgdHlwZSkpKQotICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uLT5kZXRhY2hGcm9t
Tm9kZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQogfQogCiBpbmxpbmUgRWxl
bWVudFJhcmVEYXRhKiBFbGVtZW50OjpyYXJlRGF0YSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudFJhcmVEYXRhLmgKaW5kZXggYzVjZjZjZC4uNDAzNmEzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50UmFyZURhdGEuaApAQCAtNDMsMjUgKzQzLDE5IEBAIHB1YmxpYzoKICAgICB1c2luZyBO
b2RlUmFyZURhdGE6Om5lZWRzRm9jdXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0YWNoOwog
ICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0TmVlZHNGb2N1c0FwcGVhcmFuY2VVcGRhdGVTb29u
QWZ0ZXJBdHRhY2g7CiAKLSAgICB0eXBlZGVmIEZpeGVkQXJyYXk8UmVmUHRyPEhUTUxDb2xsZWN0
aW9uPiwgTnVtTm9kZUNvbGxlY3Rpb25UeXBlcz4gQ2FjaGVkSFRNTENvbGxlY3Rpb25BcnJheTsK
KyAgICB0eXBlZGVmIEZpeGVkQXJyYXk8T3duUHRyPEhUTUxDb2xsZWN0aW9uPiwgTnVtTm9kZUNv
bGxlY3Rpb25UeXBlcz4gQ2FjaGVkSFRNTENvbGxlY3Rpb25BcnJheTsKIAogICAgIGJvb2wgaGFz
Q2FjaGVkSFRNTENvbGxlY3Rpb25zKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2Nh
Y2hlZENvbGxlY3Rpb25zOwogICAgIH0KIAotICAgIEhUTUxDb2xsZWN0aW9uKiBjYWNoZWRIVE1M
Q29sbGVjdGlvbihDb2xsZWN0aW9uVHlwZSB0eXBlKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fY2FjaGVkQ29sbGVjdGlvbnMpOwotICAgICAgICByZXR1cm4gKCptX2NhY2hlZENvbGxl
Y3Rpb25zKVt0eXBlIC0gRmlyc3ROb2RlQ29sbGVjdGlvblR5cGVdLmdldCgpOwotICAgIH0KLQog
ICAgIEhUTUxDb2xsZWN0aW9uKiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihFbGVtZW50KiBl
bGVtZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBlKQogICAgIHsKICAgICAgICAgaWYgKCFtX2NhY2hl
ZENvbGxlY3Rpb25zKQogICAgICAgICAgICAgbV9jYWNoZWRDb2xsZWN0aW9ucyA9IGFkb3B0UHRy
KG5ldyBDYWNoZWRIVE1MQ29sbGVjdGlvbkFycmF5KTsKIAotICAgICAgICBSZWZQdHI8SFRNTENv
bGxlY3Rpb24+JiBjb2xsZWN0aW9uID0gKCptX2NhY2hlZENvbGxlY3Rpb25zKVt0eXBlIC0gRmly
c3ROb2RlQ29sbGVjdGlvblR5cGVdOworICAgICAgICBPd25QdHI8SFRNTENvbGxlY3Rpb24+JiBj
b2xsZWN0aW9uID0gKCptX2NhY2hlZENvbGxlY3Rpb25zKVt0eXBlIC0gRmlyc3ROb2RlQ29sbGVj
dGlvblR5cGVdOwogICAgICAgICBpZiAoIWNvbGxlY3Rpb24pCiAgICAgICAgICAgICBjb2xsZWN0
aW9uID0gSFRNTENvbGxlY3Rpb246OmNyZWF0ZShlbGVtZW50LCB0eXBlKTsKICAgICAgICAgcmV0
dXJuIGNvbGxlY3Rpb24uZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZVJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKaW5kZXggZmIw
Zjc2Zi4uMzYyMTM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaApAQCAtMjIyLDcgKzIy
Miw3IEBAIHB1YmxpYzoKICAgICBIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24qIHByb3BlcnRpZXMo
Tm9kZSogbm9kZSkKICAgICB7CiAgICAgICAgIGlmICghbV9wcm9wZXJ0aWVzKQotICAgICAgICAg
ICAgbV9wcm9wZXJ0aWVzID0gSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uOjpjcmVhdGUobm9kZSk7
CisgICAgICAgICAgICBtX3Byb3BlcnRpZXMgPSBhZG9wdFB0cihIVE1MUHJvcGVydGllc0NvbGxl
Y3Rpb246OmNyZWF0ZShub2RlKSk7CiAKICAgICAgICAgcmV0dXJuIG1fcHJvcGVydGllcy5nZXQo
KTsKICAgICB9CkBAIC0yNTcsNyArMjU3LDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFJlZlB0
cjxET01TZXR0YWJsZVRva2VuTGlzdD4gbV9pdGVtUHJvcDsKICAgICBtdXRhYmxlIFJlZlB0cjxE
T01TZXR0YWJsZVRva2VuTGlzdD4gbV9pdGVtUmVmOwogICAgIG11dGFibGUgUmVmUHRyPERPTVNl
dHRhYmxlVG9rZW5MaXN0PiBtX2l0ZW1UeXBlOwotICAgIG11dGFibGUgUmVmUHRyPEhUTUxQcm9w
ZXJ0aWVzQ29sbGVjdGlvbj4gbV9wcm9wZXJ0aWVzOworICAgIG11dGFibGUgT3duUHRyPEhUTUxQ
cm9wZXJ0aWVzQ29sbGVjdGlvbj4gbV9wcm9wZXJ0aWVzOwogI2VuZGlmCiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwCmluZGV4IDNkYzA3YTMuLmVhN2FlOTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwCkBAIC0zMCw5ICsz
MCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxIVE1MQWxsQ29sbGVj
dGlvbj4gSFRNTEFsbENvbGxlY3Rpb246OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCitQYXNz
T3duUHRyPEhUTUxBbGxDb2xsZWN0aW9uPiBIVE1MQWxsQ29sbGVjdGlvbjo6Y3JlYXRlKERvY3Vt
ZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxBbGxDb2xsZWN0
aW9uKGRvY3VtZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBIVE1MQWxsQ29sbGVjdGlv
bihkb2N1bWVudCkpOwogfQogCiBIVE1MQWxsQ29sbGVjdGlvbjo6SFRNTEFsbENvbGxlY3Rpb24o
RG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNDYsOSArNDYsNiBAQCBIVE1MQWxsQ29sbGVjdGlvbjo6
fkhUTUxBbGxDb2xsZWN0aW9uKCkKIAogTm9kZSogSFRNTEFsbENvbGxlY3Rpb246Om5hbWVkSXRl
bVdpdGhJbmRleChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIGluZGV4KSBjb25z
dAogewotICAgIGlmICghYmFzZSgpKQotICAgICAgICByZXR1cm4gMDsKLQogICAgIGludmFsaWRh
dGVDYWNoZUlmTmVlZGVkKCk7CiAgICAgdXBkYXRlTmFtZUNhY2hlKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uaAppbmRleCBhZTk3YTUzLi5kNjM2YmJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTEFsbENvbGxlY3Rpb24gOiBwdWJsaWMgSFRNTENv
bGxlY3Rpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxBbGxDb2xsZWN0
aW9uPiBjcmVhdGUoRG9jdW1lbnQqKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxIVE1MQWxsQ29s
bGVjdGlvbj4gY3JlYXRlKERvY3VtZW50Kik7CiAgICAgdmlydHVhbCB+SFRNTEFsbENvbGxlY3Rp
b24oKTsKIAogICAgIE5vZGUqIG5hbWVkSXRlbVdpdGhJbmRleChjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIHVuc2lnbmVkIGluZGV4KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVj
dGlvbi5jcHAKaW5kZXggMDgwM2ZlOS4uZTZmMmVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q29sbGVjdGlvbi5jcHAKQEAgLTQxLDYgKzQxLDcgQEAgSFRNTENvbGxlY3Rpb246OkhUTUxDb2xs
ZWN0aW9uKE5vZGUqIGJhc2UsIENvbGxlY3Rpb25UeXBlIHR5cGUpCiAgICAgLCBtX3R5cGUodHlw
ZSkKICAgICAsIG1fYmFzZShiYXNlKQogeworICAgIEFTU0VSVChtX2Jhc2UpOwogICAgIG1fY2Fj
aGUuY2xlYXIoKTsKIH0KIApAQCAtNzYsMjQgKzc3LDE3IEBAIGJvb2wgSFRNTENvbGxlY3Rpb246
OnNob3VsZEluY2x1ZGVDaGlsZHJlbihDb2xsZWN0aW9uVHlwZSB0eXBlKQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gSFRNTENvbGxlY3Rpb246OmNy
ZWF0ZShOb2RlKiBiYXNlLCBDb2xsZWN0aW9uVHlwZSB0eXBlKQorUGFzc093blB0cjxIVE1MQ29s
bGVjdGlvbj4gSFRNTENvbGxlY3Rpb246OmNyZWF0ZShOb2RlKiBiYXNlLCBDb2xsZWN0aW9uVHlw
ZSB0eXBlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTENvbGxlY3Rpb24oYmFzZSwg
dHlwZSkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgSFRNTENvbGxlY3Rpb24oYmFzZSwgdHlw
ZSkpOwogfQogCiBIVE1MQ29sbGVjdGlvbjo6fkhUTUxDb2xsZWN0aW9uKCkKIHsKIH0KIAotdm9p
ZCBIVE1MQ29sbGVjdGlvbjo6ZGV0YWNoRnJvbU5vZGUoKQotewotICAgIG1fYmFzZSA9IDA7Ci19
Ci0KIHZvaWQgSFRNTENvbGxlY3Rpb246OmludmFsaWRhdGVDYWNoZUlmTmVlZGVkKCkgY29uc3QK
IHsKLSAgICBBU1NFUlQobV9iYXNlKTsKLQogICAgIHVpbnQ2NF90IGRvY3ZlcnNpb24gPSBzdGF0
aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihtX2Jhc2UtPmRvY3VtZW50KCkpLT5kb21UcmVlVmVyc2lv
bigpOwogCiAgICAgaWYgKG1fY2FjaGUudmVyc2lvbiA9PSBkb2N2ZXJzaW9uKQpAQCAtMTYxLDgg
KzE1NSw2IEBAIHN0YXRpYyBOb2RlKiBuZXh0Tm9kZU9yU2libGluZyhOb2RlKiBiYXNlLCBOb2Rl
KiBub2RlLCBib29sIGluY2x1ZGVDaGlsZHJlbikKIAogRWxlbWVudCogSFRNTENvbGxlY3Rpb246
Oml0ZW1BZnRlcihFbGVtZW50KiBwcmV2aW91cykgY29uc3QKIHsKLSAgICBBU1NFUlQobV9iYXNl
KTsKLQogICAgIE5vZGUqIGN1cnJlbnQ7CiAgICAgaWYgKCFwcmV2aW91cykKICAgICAgICAgY3Vy
cmVudCA9IG1fYmFzZS0+Zmlyc3RDaGlsZCgpOwpAQCAtMTgyLDggKzE3NCw2IEBAIEVsZW1lbnQq
IEhUTUxDb2xsZWN0aW9uOjppdGVtQWZ0ZXIoRWxlbWVudCogcHJldmlvdXMpIGNvbnN0CiAKIHVu
c2lnbmVkIEhUTUxDb2xsZWN0aW9uOjpjYWxjTGVuZ3RoKCkgY29uc3QKIHsKLSAgICBBU1NFUlQo
bV9iYXNlKTsKLQogICAgIHVuc2lnbmVkIGxlbiA9IDA7CiAgICAgZm9yIChFbGVtZW50KiBjdXJy
ZW50ID0gaXRlbUFmdGVyKDApOyBjdXJyZW50OyBjdXJyZW50ID0gaXRlbUFmdGVyKGN1cnJlbnQp
KQogICAgICAgICArK2xlbjsKQEAgLTE5NCw5ICsxODQsNiBAQCB1bnNpZ25lZCBIVE1MQ29sbGVj
dGlvbjo6Y2FsY0xlbmd0aCgpIGNvbnN0CiAvLyBjYWxjdWxhdGlvbiBldmVyeSB0aW1lIGlmIGFu
eXRoaW5nIGhhcyBjaGFuZ2VkCiB1bnNpZ25lZCBIVE1MQ29sbGVjdGlvbjo6bGVuZ3RoKCkgY29u
c3QKIHsKLSAgICBpZiAoIW1fYmFzZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KICAgICBpbnZhbGlk
YXRlQ2FjaGVJZk5lZWRlZCgpOwogICAgIGlmICghbV9jYWNoZS5oYXNMZW5ndGgpIHsKICAgICAg
ICAgbV9jYWNoZS5sZW5ndGggPSBjYWxjTGVuZ3RoKCk7CkBAIC0yMDcsOSArMTk0LDYgQEAgdW5z
aWduZWQgSFRNTENvbGxlY3Rpb246Omxlbmd0aCgpIGNvbnN0CiAKIE5vZGUqIEhUTUxDb2xsZWN0
aW9uOjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogewotICAgIGlmICghbV9iYXNlKQotICAg
ICAgICByZXR1cm4gMDsKLQogICAgICBpbnZhbGlkYXRlQ2FjaGVJZk5lZWRlZCgpOwogICAgICBp
ZiAobV9jYWNoZS5jdXJyZW50ICYmIG1fY2FjaGUucG9zaXRpb24gPT0gaW5kZXgpCiAgICAgICAg
ICByZXR1cm4gbV9jYWNoZS5jdXJyZW50OwpAQCAtMjM2LDcgKzIyMCw2IEBAIE5vZGUqIEhUTUxD
b2xsZWN0aW9uOjpmaXJzdEl0ZW0oKSBjb25zdAogCiBOb2RlKiBIVE1MQ29sbGVjdGlvbjo6bmV4
dEl0ZW0oKSBjb25zdAogewotICAgICBBU1NFUlQobV9iYXNlKTsKICAgICAgaW52YWxpZGF0ZUNh
Y2hlSWZOZWVkZWQoKTsKIAogICAgICAvLyBMb29rIGZvciB0aGUgJ3NlY29uZCcgaXRlbS4gVGhl
IGZpcnN0IG9uZSBpcyBjdXJyZW50SXRlbSwgYWxyZWFkeSBnaXZlbiBiYWNrLgpAQCAtMjc2LDkg
KzI1OSw2IEBAIGJvb2wgSFRNTENvbGxlY3Rpb246OmNoZWNrRm9yTmFtZU1hdGNoKEVsZW1lbnQq
IGVsZW1lbnQsIGJvb2wgY2hlY2tOYW1lLCBjb25zdCBBCiAKIE5vZGUqIEhUTUxDb2xsZWN0aW9u
OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAogewotICAgIGlmICgh
bV9iYXNlKQotICAgICAgICByZXR1cm4gMDsKLQogICAgIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29m
dC5jb20vd29ya3Nob3AvYXV0aG9yL2RodG1sL3JlZmVyZW5jZS9tZXRob2RzL25hbWVkaXRlbS5h
c3AKICAgICAvLyBUaGlzIG1ldGhvZCBmaXJzdCBzZWFyY2hlcyBmb3IgYW4gb2JqZWN0IHdpdGgg
YSBtYXRjaGluZyBpZAogICAgIC8vIGF0dHJpYnV0ZS4gSWYgYSBtYXRjaCBpcyBub3QgZm91bmQs
IHRoZSBtZXRob2QgdGhlbiBzZWFyY2hlcyBmb3IgYW4KQEAgLTMwNiw4ICsyODYsNiBAQCBOb2Rl
KiBIVE1MQ29sbGVjdGlvbjo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29u
c3QKIAogdm9pZCBIVE1MQ29sbGVjdGlvbjo6dXBkYXRlTmFtZUNhY2hlKCkgY29uc3QKIHsKLSAg
ICBBU1NFUlQobV9iYXNlKTsKLQogICAgIGlmIChtX2NhY2hlLmhhc05hbWVDYWNoZSkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC0zMjgsOSArMzA2LDYgQEAgdm9pZCBIVE1MQ29sbGVjdGlvbjo6dXBk
YXRlTmFtZUNhY2hlKCkgY29uc3QKIAogYm9vbCBIVE1MQ29sbGVjdGlvbjo6aGFzTmFtZWRJdGVt
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKIHsKLSAgICBpZiAoIW1fYmFzZSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTM1Miw5ICszMjcsNiBAQCBib29sIEhUTUxDb2xsZWN0aW9uOjpo
YXNOYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAogCiB2b2lkIEhUTUxD
b2xsZWN0aW9uOjpuYW1lZEl0ZW1zKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFJl
ZlB0cjxOb2RlPiA+JiByZXN1bHQpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2Jhc2UpCi0gICAgICAg
IHJldHVybjsKLQogICAgIEFTU0VSVChyZXN1bHQuaXNFbXB0eSgpKTsKICAgICBpZiAobmFtZS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM3NCw5ICszNDYsNiBAQCB2b2lkIEhUTUxD
b2xsZWN0aW9uOjpuYW1lZEl0ZW1zKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFJl
ZlB0cjxOb2RlPiA+JgogCiBQYXNzUmVmUHRyPE5vZGVMaXN0PiBIVE1MQ29sbGVjdGlvbjo6dGFn
cyhjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgaWYgKCFtX2Jhc2UpCi0gICAgICAgIHJldHVy
biAwOwotCiAgICAgcmV0dXJuIG1fYmFzZS0+Z2V0RWxlbWVudHNCeVRhZ05hbWUobmFtZSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAppbmRleCA3NmJjMjQxLi4wMmE1MmU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCkBAIC0yMywyNCArMjMsMjcgQEAK
ICNpZm5kZWYgSFRNTENvbGxlY3Rpb25faAogI2RlZmluZSBIVE1MQ29sbGVjdGlvbl9oCiAKKyNp
bmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiQ29sbGVjdGlvblR5cGUuaCIKLSNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKIGNsYXNz
IEVsZW1lbnQ7Ci1jbGFzcyBOb2RlOwogY2xhc3MgTm9kZUxpc3Q7CiAKLWNsYXNzIEhUTUxDb2xs
ZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8SFRNTENvbGxlY3Rpb24+IHsKK2NsYXNzIEhUTUxD
b2xsZWN0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlv
bj4gY3JlYXRlKE5vZGUqIGJhc2UsIENvbGxlY3Rpb25UeXBlKTsKKyAgICBzdGF0aWMgUGFzc093
blB0cjxIVE1MQ29sbGVjdGlvbj4gY3JlYXRlKE5vZGUqIGJhc2UsIENvbGxlY3Rpb25UeXBlKTsK
ICAgICB2aXJ0dWFsIH5IVE1MQ29sbGVjdGlvbigpOwogCisgICAgdm9pZCByZWYoKSB7IG1fYmFz
ZS0+cmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmKCkgeyBtX2Jhc2UtPmRlcmVmKCk7IH0KKwogICAg
IHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgTm9kZSogaXRlbSh1
bnNpZ25lZCBpbmRleCkgY29uc3Q7CkBAIC01OCw4ICs2MSw2IEBAIHB1YmxpYzoKICAgICBOb2Rl
KiBiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlOyB9CiAgICAgQ29sbGVjdGlvblR5cGUgdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbGxlY3Rpb25UeXBlPihtX3R5cGUpOyB9
CiAKLSAgICB2b2lkIGRldGFjaEZyb21Ob2RlKCk7Ci0KIHByb3RlY3RlZDoKICAgICBIVE1MQ29s
bGVjdGlvbihOb2RlKiBiYXNlLCBDb2xsZWN0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuY3BwCmluZGV4IDk2NGQzNDIuLmY2Y2M3ZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmNwcApAQCAtNDcsNyArNDcs
NyBAQCBQYXNzUmVmUHRyPEhUTUxEYXRhTGlzdEVsZW1lbnQ+IEhUTUxEYXRhTGlzdEVsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRN
TERhdGFMaXN0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1QYXNzUmVmUHRyPEhU
TUxDb2xsZWN0aW9uPiBIVE1MRGF0YUxpc3RFbGVtZW50OjpvcHRpb25zKCkKK0hUTUxDb2xsZWN0
aW9uKiBIVE1MRGF0YUxpc3RFbGVtZW50OjpvcHRpb25zKCkKIHsKICAgICByZXR1cm4gZW5zdXJl
Q2FjaGVkSFRNTENvbGxlY3Rpb24oRGF0YUxpc3RPcHRpb25zKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmgKaW5kZXggOTdlNjA4Zi4uNjRiZmM4OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAg
Y2xhc3MgSFRNTERhdGFMaXN0RWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTERhdGFMaXN0RWxlbWVudD4gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVj
dGlvbj4gb3B0aW9ucygpOworICAgIEhUTUxDb2xsZWN0aW9uKiBvcHRpb25zKCk7CiAKIHByaXZh
dGU6CiAgICAgSFRNTERhdGFMaXN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggYmFjZDQ0Zi4uMjQwMDgx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTgyNSw3ICs4MjUsNyBAQCB2
b2lkIEhUTUxFbGVtZW50OjpzZXRUYWJJbmRleChpbnQgdmFsdWUpCiAgICAgc2V0QXR0cmlidXRl
KHRhYmluZGV4QXR0ciwgU3RyaW5nOjpudW1iZXIodmFsdWUpKTsKIH0KIAotUGFzc1JlZlB0cjxI
VE1MQ29sbGVjdGlvbj4gSFRNTEVsZW1lbnQ6OmNoaWxkcmVuKCkKK0hUTUxDb2xsZWN0aW9uKiBI
VE1MRWxlbWVudDo6Y2hpbGRyZW4oKQogewogICAgIHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29s
bGVjdGlvbihOb2RlQ2hpbGRyZW4pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCmluZGV4
IGI5OGIyZGQuLmE4NmIyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKQEAgLTM5LDgg
KzM5LDggQEAgY2xhc3MgSFRNTEVsZW1lbnQgOiBwdWJsaWMgU3R5bGVkRWxlbWVudCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCopOwogCi0gICAgUGFzc1JlZlB0cjxIVE1MQ29s
bGVjdGlvbj4gY2hpbGRyZW4oKTsKLSAgICAKKyAgICBIVE1MQ29sbGVjdGlvbiogY2hpbGRyZW4o
KTsKKwogICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHNo
b3J0IHRhYkluZGV4KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29sbGVj
dGlvbi5jcHAKaW5kZXggNmIxOWQ0NC4uZDI1NjUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db2xsZWN0aW9uLmNwcApAQCAtNDAsOSArNDAsOSBAQCBIVE1MRm9ybUNvbGxlY3Rp
b246OkhUTUxGb3JtQ29sbGVjdGlvbihIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCiB7CiB9CiAKLVBh
c3NSZWZQdHI8SFRNTEZvcm1Db2xsZWN0aW9uPiBIVE1MRm9ybUNvbGxlY3Rpb246OmNyZWF0ZShI
VE1MRm9ybUVsZW1lbnQqIGZvcm0pCitQYXNzT3duUHRyPEhUTUxGb3JtQ29sbGVjdGlvbj4gSFRN
TEZvcm1Db2xsZWN0aW9uOjpjcmVhdGUoSFRNTEZvcm1FbGVtZW50KiBmb3JtKQogewotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSFRNTEZvcm1Db2xsZWN0aW9uKGZvcm0pKTsKKyAgICByZXR1cm4g
YWRvcHRQdHIobmV3IEhUTUxGb3JtQ29sbGVjdGlvbihmb3JtKSk7CiB9CiAKIEhUTUxGb3JtQ29s
bGVjdGlvbjo6fkhUTUxGb3JtQ29sbGVjdGlvbigpCkBAIC01MSwxNSArNTEsMTEgQEAgSFRNTEZv
cm1Db2xsZWN0aW9uOjp+SFRNTEZvcm1Db2xsZWN0aW9uKCkKIAogdW5zaWduZWQgSFRNTEZvcm1D
b2xsZWN0aW9uOjpjYWxjTGVuZ3RoKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoYmFzZSgpKTsKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4oYmFzZSgpKS0+bGVuZ3RoKCk7
CiB9CiAKIE5vZGUqIEhUTUxGb3JtQ29sbGVjdGlvbjo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29u
c3QKIHsKLSAgICBpZiAoIWJhc2UoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KICAgICBpbnZhbGlk
YXRlQ2FjaGVJZk5lZWRlZCgpOwogCiAgICAgaWYgKG1fY2FjaGUuY3VycmVudCAmJiBtX2NhY2hl
LnBvc2l0aW9uID09IGluZGV4KQpAQCAtOTYsOSArOTIsNiBAQCBOb2RlKiBIVE1MRm9ybUNvbGxl
Y3Rpb246Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CiAKIEVsZW1lbnQqIEhUTUxGb3JtQ29s
bGVjdGlvbjo6Z2V0TmFtZWRJdGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CiB7Ci0gICAgaWYgKCFiYXNlKCkpCi0gICAgICAg
IHJldHVybiAwOwotCiAgICAgbV9jYWNoZS5wb3NpdGlvbiA9IDA7CiAgICAgcmV0dXJuIGdldE5h
bWVkRm9ybUl0ZW0oYXR0ck5hbWUsIG5hbWUsIDApOwogfQpAQCAtMTQzLDkgKzEzNiw2IEBAIE5v
ZGUqIEhUTUxGb3JtQ29sbGVjdGlvbjo6bmV4dEl0ZW0oKSBjb25zdAogCiBOb2RlKiBIVE1MRm9y
bUNvbGxlY3Rpb246Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CiB7
Ci0gICAgaWYgKCFiYXNlKCkpCi0gICAgICAgIHJldHVybiAwOwotCiAgICAgLy8gaHR0cDovL21z
ZG4ubWljcm9zb2Z0LmNvbS93b3Jrc2hvcC9hdXRob3IvZGh0bWwvcmVmZXJlbmNlL21ldGhvZHMv
bmFtZWRpdGVtLmFzcAogICAgIC8vIFRoaXMgbWV0aG9kIGZpcnN0IHNlYXJjaGVzIGZvciBhbiBv
YmplY3Qgd2l0aCBhIG1hdGNoaW5nIGlkCiAgICAgLy8gYXR0cmlidXRlLiBJZiBhIG1hdGNoIGlz
IG5vdCBmb3VuZCwgdGhlIG1ldGhvZCB0aGVuIHNlYXJjaGVzIGZvciBhbgpAQCAtMTYxLDkgKzE1
MSw2IEBAIE5vZGUqIEhUTUxGb3JtQ29sbGVjdGlvbjo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSkgY29uc3QKIAogdm9pZCBIVE1MRm9ybUNvbGxlY3Rpb246OnVwZGF0ZU5hbWVD
YWNoZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFiYXNlKCkpCi0gICAgICAgIHJldHVybjsKLQogICAg
IGlmIChtX2NhY2hlLmhhc05hbWVDYWNoZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uaAppbmRleCA3ZDI5NjM4Li42MGM2ZDJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmgKQEAgLTM1LDcgKzM1LDcgQEAg
Y2xhc3MgUXVhbGlmaWVkTmFtZTsKIAogY2xhc3MgSFRNTEZvcm1Db2xsZWN0aW9uIDogcHVibGlj
IEhUTUxDb2xsZWN0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MRm9y
bUNvbGxlY3Rpb24+IGNyZWF0ZShIVE1MRm9ybUVsZW1lbnQqKTsKKyAgICBzdGF0aWMgUGFzc093
blB0cjxIVE1MRm9ybUNvbGxlY3Rpb24+IGNyZWF0ZShIVE1MRm9ybUVsZW1lbnQqKTsKIAogICAg
IHZpcnR1YWwgfkhUTUxGb3JtQ29sbGVjdGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtRWxlbWVudC5jcHAKaW5kZXggZGFiNDdlZi4uMzg3NTdkNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtOTEsOSArOTEsNiBAQCBQYXNzUmVmUHRyPEhUTUxG
b3JtRWxlbWVudD4gSFRNTEZvcm1FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZQogCiBIVE1MRm9ybUVsZW1lbnQ6On5IVE1MRm9ybUVsZW1lbnQoKQogewotICAgIGlm
IChtX2VsZW1lbnRzQ29sbGVjdGlvbikKLSAgICAgICAgbV9lbGVtZW50c0NvbGxlY3Rpb24tPmRl
dGFjaEZyb21Ob2RlKCk7Ci0KICAgICBpZiAoIXNob3VsZEF1dG9jb21wbGV0ZSgpKQogICAgICAg
ICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yUGFnZUNhY2hlU3VzcGVuc2lvbkNhbGxiYWNrcyh0
aGlzKTsKIApAQCAtNTAxLDExICs0OTgsMTEgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJlbW92
ZUltZ0VsZW1lbnQoSFRNTEltYWdlRWxlbWVudCogZSkKICAgICByZW1vdmVGcm9tVmVjdG9yKG1f
aW1hZ2VFbGVtZW50cywgZSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IEhUTUxG
b3JtRWxlbWVudDo6ZWxlbWVudHMoKQorSFRNTENvbGxlY3Rpb24qIEhUTUxGb3JtRWxlbWVudDo6
ZWxlbWVudHMoKQogewogICAgIGlmICghbV9lbGVtZW50c0NvbGxlY3Rpb24pCiAgICAgICAgIG1f
ZWxlbWVudHNDb2xsZWN0aW9uID0gSFRNTEZvcm1Db2xsZWN0aW9uOjpjcmVhdGUodGhpcyk7Ci0g
ICAgcmV0dXJuIG1fZWxlbWVudHNDb2xsZWN0aW9uOworICAgIHJldHVybiBtX2VsZW1lbnRzQ29s
bGVjdGlvbi5nZXQoKTsKIH0KIAogU3RyaW5nIEhUTUxGb3JtRWxlbWVudDo6bmFtZSgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAppbmRleCAyZGQ4YWYxLi4wOGMxMTQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgIHZpcnR1YWwgfkhUTUxGb3JtRWxl
bWVudCgpOwogCi0gICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gZWxlbWVudHMoKTsKKyAg
ICBIVE1MQ29sbGVjdGlvbiogZWxlbWVudHMoKTsKICAgICB2b2lkIGdldE5hbWVkRWxlbWVudHMo
Y29uc3QgQXRvbWljU3RyaW5nJiwgVmVjdG9yPFJlZlB0cjxOb2RlPiA+Jik7CiAKICAgICB1bnNp
Z25lZCBsZW5ndGgoKSBjb25zdDsKQEAgLTE0OSw3ICsxNDksNyBAQCBwcml2YXRlOgogCiAgICAg
Rm9ybVN1Ym1pc3Npb246OkF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOwogICAgIE93blB0cjxBbGlh
c01hcD4gbV9lbGVtZW50QWxpYXNlczsKLSAgICBSZWZQdHI8SFRNTEZvcm1Db2xsZWN0aW9uPiBt
X2VsZW1lbnRzQ29sbGVjdGlvbjsKKyAgICBPd25QdHI8SFRNTEZvcm1Db2xsZWN0aW9uPiBtX2Vs
ZW1lbnRzQ29sbGVjdGlvbjsKIAogICAgIENoZWNrZWRSYWRpb0J1dHRvbnMgbV9jaGVja2VkUmFk
aW9CdXR0b25zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRl
eCA0NmQxMDQ5Li5mNWY0NzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAKQEAgLTE1NzYsNyArMTU3Niw3IEBAIEhUTUxPcHRpb25FbGVtZW50KiBIVE1MSW5wdXRF
bGVtZW50OjpzZWxlY3RlZE9wdGlvbigpIGNvbnN0CiAgICAgSFRNTERhdGFMaXN0RWxlbWVudCog
c291cmNlRWxlbWVudCA9IGRhdGFMaXN0KCk7CiAgICAgaWYgKCFzb3VyY2VFbGVtZW50KQogICAg
ICAgICByZXR1cm4gMDsKLSAgICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBzb3Vy
Y2VFbGVtZW50LT5vcHRpb25zKCk7CisgICAgSFRNTENvbGxlY3Rpb24qIG9wdGlvbnMgPSBzb3Vy
Y2VFbGVtZW50LT5vcHRpb25zKCk7CiAgICAgaWYgKCFvcHRpb25zKQogICAgICAgICByZXR1cm4g
MDsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBvcHRpb25zLT5sZW5ndGgoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWFwRWxlbWVudC5jcHAKaW5kZXggMDk4Mjk1Yi4uYmY0YTNiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBIVE1M
TWFwRWxlbWVudDo6bWFwTW91c2VFdmVudChMYXlvdXRQb2ludCBsb2NhdGlvbiwgY29uc3QgTGF5
b3V0U2l6ZSYgc2l6ZSwKIAogSFRNTEltYWdlRWxlbWVudCogSFRNTE1hcEVsZW1lbnQ6OmltYWdl
RWxlbWVudCgpCiB7Ci0gICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBjb2xsID0gZG9jdW1lbnQo
KS0+aW1hZ2VzKCk7CisgICAgSFRNTENvbGxlY3Rpb24qIGNvbGwgPSBkb2N1bWVudCgpLT5pbWFn
ZXMoKTsKICAgICBmb3IgKE5vZGUqIGN1cnIgPSBjb2xsLT5maXJzdEl0ZW0oKTsgY3VycjsgY3Vy
ciA9IGNvbGwtPm5leHRJdGVtKCkpIHsKICAgICAgICAgaWYgKCFjdXJyLT5oYXNUYWdOYW1lKGlt
Z1RhZykpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIEhU
TUxNYXBFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHJpYnV0ZSkK
ICAgICBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cmlidXRlKTsKIH0KIAot
UGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gSFRNTE1hcEVsZW1lbnQ6OmFyZWFzKCkKK0hUTUxD
b2xsZWN0aW9uKiBIVE1MTWFwRWxlbWVudDo6YXJlYXMoKQogewogICAgIHJldHVybiBlbnN1cmVD
YWNoZWRIVE1MQ29sbGVjdGlvbihNYXBBcmVhcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBF
bGVtZW50LmgKaW5kZXggMzAwNjc2Ni4uOTI1ODk1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWFwRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1h
cEVsZW1lbnQuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBtYXBNb3VzZUV2
ZW50KExheW91dFBvaW50IGxvY2F0aW9uLCBjb25zdCBMYXlvdXRTaXplJiwgSGl0VGVzdFJlc3Vs
dCYpOwogICAgIAogICAgIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCgpOwotICAgIFBh
c3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGFyZWFzKCk7CisgICAgSFRNTENvbGxlY3Rpb24qIGFy
ZWFzKCk7CiAKIHByaXZhdGU6CiAgICAgSFRNTE1hcEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1l
Q29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5j
cHAKaW5kZXggYWQ3M2QzMi4uYWFmNWI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5h
bWVDb2xsZWN0aW9uLmNwcApAQCAtNDAsOSArNDAsNiBAQCBIVE1MTmFtZUNvbGxlY3Rpb246OkhU
TUxOYW1lQ29sbGVjdGlvbihEb2N1bWVudCogZG9jdW1lbnQsIENvbGxlY3Rpb25UeXBlIHR5cGUs
CiAKIEVsZW1lbnQqIEhUTUxOYW1lQ29sbGVjdGlvbjo6aXRlbUFmdGVyKEVsZW1lbnQqIHByZXZp
b3VzKSBjb25zdAogewotICAgIGlmICghYmFzZSgpKQotICAgICAgICByZXR1cm4gMDsKLQogICAg
IEFTU0VSVChwcmV2aW91cyAhPSBiYXNlKCkpOwogCiAgICAgTm9kZSogY3VycmVudDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5oCmluZGV4IGM0MDg3Y2IuLmY4NDQ2NTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uaApAQCAtMzMsOSArMzMs
OSBAQCBjbGFzcyBEb2N1bWVudDsKIAogY2xhc3MgSFRNTE5hbWVDb2xsZWN0aW9uIDogcHVibGlj
IEhUTUxDb2xsZWN0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MTmFt
ZUNvbGxlY3Rpb24+IGNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIENvbGxlY3Rpb25UeXBlIHR5
cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKKyAgICBzdGF0aWMgUGFzc093blB0cjxIVE1M
TmFtZUNvbGxlY3Rpb24+IGNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIENvbGxlY3Rpb25UeXBl
IHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSFRNTE5hbWVDb2xsZWN0aW9uKGRvY3VtZW50LCB0eXBlLCBuYW1lKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgSFRNTE5hbWVDb2xsZWN0aW9uKGRvY3VtZW50LCB0
eXBlLCBuYW1lKSk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwCmluZGV4IDNhYmIzNTMuLmNhOGExYjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAKQEAgLTMyLDkgKzMy
LDkgQEAgSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpIVE1MT3B0aW9uc0NvbGxlY3Rpb24oSFRNTFNl
bGVjdEVsZW1lbnQqIHNlbGVjdCkKIHsKIH0KIAotUGFzc1JlZlB0cjxIVE1MT3B0aW9uc0NvbGxl
Y3Rpb24+IEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6Y3JlYXRlKEhUTUxTZWxlY3RFbGVtZW50KiBz
ZWxlY3QpCitQYXNzT3duUHRyPEhUTUxPcHRpb25zQ29sbGVjdGlvbj4gSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uOjpjcmVhdGUoSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEhUTUxPcHRpb25zQ29sbGVjdGlvbihzZWxlY3QpKTsKKyAgICByZXR1cm4g
YWRvcHRQdHIobmV3IEhUTUxPcHRpb25zQ29sbGVjdGlvbihzZWxlY3QpKTsKIH0KIAogdm9pZCBI
VE1MT3B0aW9uc0NvbGxlY3Rpb246OmFkZChQYXNzUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBl
bGVtZW50LCBFeGNlcHRpb25Db2RlICZlYykKQEAgLTU5LDkgKzU5LDYgQEAgdm9pZCBIVE1MT3B0
aW9uc0NvbGxlY3Rpb246OmFkZChQYXNzUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBlbGVtZW50
LCBpbnQgaW5kZXgKICAgICBlYyA9IDA7CiAgICAgSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCA9
IHRvSFRNTFNlbGVjdEVsZW1lbnQoYmFzZSgpKTsKIAotICAgIGlmICghc2VsZWN0KQotICAgICAg
ICByZXR1cm47Ci0KICAgICBpZiAoaW5kZXggPT0gLTEgfHwgdW5zaWduZWQoaW5kZXgpID49IGxl
bmd0aCgpKQogICAgICAgICBzZWxlY3QtPmFkZChuZXdPcHRpb24sIDAsIGVjKTsKICAgICBlbHNl
CkBAIC03MiwyOSArNjksMjEgQEAgdm9pZCBIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmFkZChQYXNz
UmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBlbGVtZW50LCBpbnQgaW5kZXgKIAogdm9pZCBIVE1M
T3B0aW9uc0NvbGxlY3Rpb246OnJlbW92ZShpbnQgaW5kZXgpCiB7Ci0gICAgaWYgKCFiYXNlKCkp
Ci0gICAgICAgIHJldHVybjsKICAgICB0b0hUTUxTZWxlY3RFbGVtZW50KGJhc2UoKSktPnJlbW92
ZShpbmRleCk7CiB9CiAKIGludCBIVE1MT3B0aW9uc0NvbGxlY3Rpb246OnNlbGVjdGVkSW5kZXgo
KSBjb25zdAogewotICAgIGlmICghYmFzZSgpKQotICAgICAgICByZXR1cm4gLTE7CiAgICAgcmV0
dXJuIHRvSFRNTFNlbGVjdEVsZW1lbnQoYmFzZSgpKS0+c2VsZWN0ZWRJbmRleCgpOwogfQogCiB2
b2lkIEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6c2V0U2VsZWN0ZWRJbmRleChpbnQgaW5kZXgpCiB7
Ci0gICAgaWYgKCFiYXNlKCkpCi0gICAgICAgIHJldHVybjsKICAgICB0b0hUTUxTZWxlY3RFbGVt
ZW50KGJhc2UoKSktPnNldFNlbGVjdGVkSW5kZXgoaW5kZXgpOwogfQogCiB2b2lkIEhUTUxPcHRp
b25zQ29sbGVjdGlvbjo6c2V0TGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7Ci0gICAgaWYgKCFiYXNlKCkpCi0gICAgICAgIHJldHVybjsKICAgICB0b0hUTUxTZWxl
Y3RFbGVtZW50KGJhc2UoKSktPnNldExlbmd0aChsZW5ndGgsIGVjKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgKaW5kZXggMzMzMzM0Yi4uYmM5YmRm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oCkBAIC0z
NSw3ICszNSw3IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIEhUTUxPcHRp
b25zQ29sbGVjdGlvbiA6IHB1YmxpYyBIVE1MQ29sbGVjdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SFRNTE9wdGlvbnNDb2xsZWN0aW9uPiBjcmVhdGUoSFRNTFNlbGVjdEVs
ZW1lbnQqKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+IGNy
ZWF0ZShIVE1MU2VsZWN0RWxlbWVudCopOwogCiAgICAgdm9pZCBhZGQoUGFzc1JlZlB0cjxIVE1M
T3B0aW9uRWxlbWVudD4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGFkZChQYXNzUmVmUHRy
PEhUTUxPcHRpb25FbGVtZW50PiwgaW50IGluZGV4LCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5jcHAKaW5kZXggNDM5
YmFlNi4uODZmY2VjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVy
dGllc0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb3BlcnRp
ZXNDb2xsZWN0aW9uLmNwcApAQCAtNDksOSArNDksOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY29t
cGFyZVRyZWVPcmRlcihOb2RlKiBub2RlMSwgTm9kZSogbm9kZTIpCiAgICAgcmV0dXJuIChub2Rl
Mi0+Y29tcGFyZURvY3VtZW50UG9zaXRpb24obm9kZTEpICYgKE5vZGU6OkRPQ1VNRU5UX1BPU0lU
SU9OX1BSRUNFRElORyB8IE5vZGU6OkRPQ1VNRU5UX1BPU0lUSU9OX0RJU0NPTk5FQ1RFRCkpID09
IE5vZGU6OkRPQ1VNRU5UX1BPU0lUSU9OX1BSRUNFRElORzsKIH0KIAotUGFzc1JlZlB0cjxIVE1M
UHJvcGVydGllc0NvbGxlY3Rpb24+IEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6Y3JlYXRlKFBh
c3NSZWZQdHI8Tm9kZT4gaXRlbU5vZGUpCitQYXNzT3duUHRyPEhUTUxQcm9wZXJ0aWVzQ29sbGVj
dGlvbj4gSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uOjpjcmVhdGUoUGFzc1JlZlB0cjxOb2RlPiBp
dGVtTm9kZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxQcm9wZXJ0aWVzQ29sbGVj
dGlvbihpdGVtTm9kZSkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgSFRNTFByb3BlcnRpZXND
b2xsZWN0aW9uKGl0ZW1Ob2RlKSk7CiB9CiAKIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6SFRN
TFByb3BlcnRpZXNDb2xsZWN0aW9uKFBhc3NSZWZQdHI8Tm9kZT4gaXRlbU5vZGUpCkBAIC0xMjMs
OSArMTIzLDYgQEAgdm9pZCBIVE1MUHJvcGVydGllc0NvbGxlY3Rpb246OmZpbmRQcm9wZXRpZXNP
ZkFuSXRlbShOb2RlKiByb290KSBjb25zdAogCiB1bnNpZ25lZCBIVE1MUHJvcGVydGllc0NvbGxl
Y3Rpb246Omxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFiYXNlKCkpCi0gICAgICAgIHJldHVy
biAwOwotCiAgICAgaWYgKCFiYXNlKCktPmlzSFRNTEVsZW1lbnQoKSB8fCAhdG9IVE1MRWxlbWVu
dChiYXNlKCkpLT5mYXN0SGFzQXR0cmlidXRlKGl0ZW1zY29wZUF0dHIpKQogICAgICAgICByZXR1
cm4gMDsKIApAQCAtMTM2LDkgKzEzMyw2IEBAIHVuc2lnbmVkIEhUTUxQcm9wZXJ0aWVzQ29sbGVj
dGlvbjo6bGVuZ3RoKCkgY29uc3QKIAogTm9kZSogSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uOjpp
dGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogewotICAgIGlmICghYmFzZSgpKQotICAgICAgICBy
ZXR1cm4gMDsKLQogICAgIGlmICghYmFzZSgpLT5pc0hUTUxFbGVtZW50KCkgfHwgIXRvSFRNTEVs
ZW1lbnQoYmFzZSgpKS0+ZmFzdEhhc0F0dHJpYnV0ZShpdGVtc2NvcGVBdHRyKSkKICAgICAgICAg
cmV0dXJuIDA7CiAKQEAgLTE1Nyw5ICsxNTEsNiBAQCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+
IEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6bmFtZXMoKSBjb25zdAogICAgIG1fcHJvcGVydGll
cy5jbGVhcigpOwogICAgIG1fcHJvcGVydHlOYW1lcy0+Y2xlYXIoKTsKIAotICAgIGlmICghYmFz
ZSgpKQotICAgICAgICByZXR1cm4gMDsKLQogICAgIGlmICghYmFzZSgpLT5pc0hUTUxFbGVtZW50
KCkgfHwgIXRvSFRNTEVsZW1lbnQoYmFzZSgpKS0+ZmFzdEhhc0F0dHJpYnV0ZShpdGVtc2NvcGVB
dHRyKSkKICAgICAgICAgcmV0dXJuIG1fcHJvcGVydHlOYW1lczsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmgKaW5kZXggY2E4MjJmMS4uZTc1MjRm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5o
CkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIERPTVN0cmluZ0xpc3Q7CiAKIGNsYXNzIEhUTUxQcm9w
ZXJ0aWVzQ29sbGVjdGlvbiA6IHB1YmxpYyBIVE1MQ29sbGVjdGlvbiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uPiBjcmVhdGUoUGFzc1Jl
ZlB0cjxOb2RlPik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8SFRNTFByb3BlcnRpZXNDb2xsZWN0
aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxOb2RlPik7CiAgICAgdmlydHVhbCB+SFRNTFByb3BlcnRp
ZXNDb2xsZWN0aW9uKCk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBPVkVSUklERTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggOTU0MjFmMy4u
YmZlYmY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKQEAg
LTkyLDEyICs5Miw2IEBAIEhUTUxTZWxlY3RFbGVtZW50OjpIVE1MU2VsZWN0RWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jCiAgICAgQVNTRVJUKGhhc1Rh
Z05hbWUoc2VsZWN0VGFnKSk7CiB9CiAKLUhUTUxTZWxlY3RFbGVtZW50Ojp+SFRNTFNlbGVjdEVs
ZW1lbnQoKQotewotICAgIGlmIChtX29wdGlvbnNDb2xsZWN0aW9uKQotICAgICAgICBtX29wdGlv
bnNDb2xsZWN0aW9uLT5kZXRhY2hGcm9tTm9kZSgpOwotfQotCiBQYXNzUmVmUHRyPEhUTUxTZWxl
Y3RFbGVtZW50PiBIVE1MU2VsZWN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQogewog
ICAgIEFTU0VSVCh0YWdOYW1lLm1hdGNoZXMoc2VsZWN0VGFnKSk7CkBAIC0zMzEsMTEgKzMyNSwx
MSBAQCBSZW5kZXJPYmplY3QqIEhUTUxTZWxlY3RFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKgogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5k
ZXJMaXN0Qm94KHRoaXMpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxPcHRpb25zQ29sbGVjdGlvbj4g
SFRNTFNlbGVjdEVsZW1lbnQ6Om9wdGlvbnMoKQorSFRNTE9wdGlvbnNDb2xsZWN0aW9uKiBIVE1M
U2VsZWN0RWxlbWVudDo6b3B0aW9ucygpCiB7CiAgICAgaWYgKCFtX29wdGlvbnNDb2xsZWN0aW9u
KQogICAgICAgICBtX29wdGlvbnNDb2xsZWN0aW9uID0gSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpj
cmVhdGUodGhpcyk7Ci0gICAgcmV0dXJuIG1fb3B0aW9uc0NvbGxlY3Rpb247CisgICAgcmV0dXJu
IG1fb3B0aW9uc0NvbGxlY3Rpb24uZ2V0KCk7CiB9CiAKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6
OnVwZGF0ZUxpc3RJdGVtU2VsZWN0ZWRTdGF0ZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2Vs
ZWN0RWxlbWVudC5oCmluZGV4IDljMDkzODMuLjdjZDQ4MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTZWxlY3RFbGVtZW50LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkV2ZW50
LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxP
cHRpb25zQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtMzksOCArNDAsNiBAQCBjbGFzcyBIVE1MU2VsZWN0RWxlbWVudCA6IHB1
YmxpYyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxIVE1MU2VsZWN0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCopOwogCi0gICAgdmlydHVhbCB+SFRNTFNl
bGVjdEVsZW1lbnQoKTsKLQogICAgIGludCBzZWxlY3RlZEluZGV4KCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRTZWxlY3RlZEluZGV4KGludCk7CiAKQEAgLTYzLDcgKzYyLDcgQEAgcHVibGljOgogICAg
IFN0cmluZyB2YWx1ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJik7
CiAKLSAgICBQYXNzUmVmUHRyPEhUTUxPcHRpb25zQ29sbGVjdGlvbj4gb3B0aW9ucygpOworICAg
IEhUTUxPcHRpb25zQ29sbGVjdGlvbiogb3B0aW9ucygpOwogCiAgICAgdm9pZCBvcHRpb25FbGVt
ZW50Q2hpbGRyZW5DaGFuZ2VkKCk7CiAKQEAgLTE3NSw3ICsxNzQsNyBAQCBwcml2YXRlOgogCiAg
ICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZh
bHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBj
aGlsZENvdW50RGVsdGEgPSAwKTsKIAotICAgIFJlZlB0cjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+
IG1fb3B0aW9uc0NvbGxlY3Rpb247CisgICAgT3duUHRyPEhUTUxPcHRpb25zQ29sbGVjdGlvbj4g
bV9vcHRpb25zQ29sbGVjdGlvbjsKIAogICAgIC8vIG1fbGlzdEl0ZW1zIGNvbnRhaW5zIEhUTUxP
cHRpb25FbGVtZW50LCBIVE1MT3B0R3JvdXBFbGVtZW50LCBhbmQgSFRNTEhSRWxlbWVudCBvYmpl
Y3RzLgogICAgIG11dGFibGUgVmVjdG9yPEhUTUxFbGVtZW50Kj4gbV9saXN0SXRlbXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAppbmRleCBiNmE0YTVhLi4zNDJjZmYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKQEAgLTU0LDEyICs1
NCw2IEBAIEhUTUxUYWJsZUVsZW1lbnQ6OkhUTUxUYWJsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUodGFi
bGVUYWcpKTsKIH0KIAotSFRNTFRhYmxlRWxlbWVudDo6fkhUTUxUYWJsZUVsZW1lbnQoKQotewot
ICAgIGlmIChtX3Jvd3NDb2xsZWN0aW9uKQotICAgICAgICBtX3Jvd3NDb2xsZWN0aW9uLT5kZXRh
Y2hGcm9tTm9kZSgpOwotfQotCiBQYXNzUmVmUHRyPEhUTUxUYWJsZUVsZW1lbnQ+IEhUTUxUYWJs
ZUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBIVE1MVGFibGVFbGVtZW50KHRhYmxlVGFnLCBkb2N1bWVudCkpOwpAQCAtNjI0LDE0
ICs2MTgsMTQgQEAgYm9vbCBIVE1MVGFibGVFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShBdHRyaWJ1
dGUgKmF0dHIpIGNvbnN0CiAgICAgcmV0dXJuIGF0dHItPm5hbWUoKSA9PSBiYWNrZ3JvdW5kQXR0
ciB8fCBIVE1MRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLVBhc3NSZWZQdHI8
SFRNTENvbGxlY3Rpb24+IEhUTUxUYWJsZUVsZW1lbnQ6OnJvd3MoKQorSFRNTENvbGxlY3Rpb24q
IEhUTUxUYWJsZUVsZW1lbnQ6OnJvd3MoKQogewogICAgIGlmICghbV9yb3dzQ29sbGVjdGlvbikK
ICAgICAgICAgbV9yb3dzQ29sbGVjdGlvbiA9IEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjpjcmVh
dGUodGhpcyk7Ci0gICAgcmV0dXJuIG1fcm93c0NvbGxlY3Rpb247CisgICAgcmV0dXJuIG1fcm93
c0NvbGxlY3Rpb24uZ2V0KCk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IEhUTUxU
YWJsZUVsZW1lbnQ6OnRCb2RpZXMoKQorSFRNTENvbGxlY3Rpb24qIEhUTUxUYWJsZUVsZW1lbnQ6
OnRCb2RpZXMoKQogewogICAgIHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihUYWJs
ZVRCb2RpZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaAppbmRleCA2
M2UyNjA1Li5kZWVkOTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaApA
QCAtNDAsOCArNDAsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFRhYmxl
RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFRh
YmxlRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0g
ICAgdmlydHVhbCB+SFRNTFRhYmxlRWxlbWVudCgpOwotCiAgICAgSFRNTFRhYmxlQ2FwdGlvbkVs
ZW1lbnQqIGNhcHRpb24oKSBjb25zdDsKICAgICB2b2lkIHNldENhcHRpb24oUGFzc1JlZlB0cjxI
VE1MVGFibGVDYXB0aW9uRWxlbWVudD4sIEV4Y2VwdGlvbkNvZGUmKTsKIApAQCAtNjAsOCArNTgs
OCBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gaW5zZXJ0Um93KGludCBp
bmRleCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgZGVsZXRlUm93KGludCBpbmRleCwgRXhj
ZXB0aW9uQ29kZSYpOwogCi0gICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gcm93cygpOwot
ICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IHRCb2RpZXMoKTsKKyAgICBIVE1MQ29sbGVj
dGlvbiogcm93cygpOworICAgIEhUTUxDb2xsZWN0aW9uKiB0Qm9kaWVzKCk7CiAKICAgICBTdHJp
bmcgcnVsZXMoKSBjb25zdDsKICAgICBTdHJpbmcgc3VtbWFyeSgpIGNvbnN0OwpAQCAtMTAzLDcg
KzEwMSw3IEBAIHByaXZhdGU6CiAKICAgICB1bnNpZ25lZCBzaG9ydCBtX3BhZGRpbmc7CiAgICAg
UmVmUHRyPENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uPiBtX3BhZGRpbmdEZWNsOwotICAg
IFJlZlB0cjxIVE1MVGFibGVSb3dzQ29sbGVjdGlvbj4gbV9yb3dzQ29sbGVjdGlvbjsKKyAgICBP
d25QdHI8SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24+IG1fcm93c0NvbGxlY3Rpb247CiB9OwogCiB9
IC8vbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJv
d0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNw
cAppbmRleCA1ZWMzYmNlLi5jYzVmOTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlUm93RWxlbWVudC5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCBpbnQgSFRNTFRhYmxlUm93RWxl
bWVudDo6c2VjdGlvblJvd0luZGV4KCkgY29uc3QKIAogUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4g
SFRNTFRhYmxlUm93RWxlbWVudDo6aW5zZXJ0Q2VsbChpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewotICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gY2hpbGRyZW4gPSBjZWxscygpOwor
ICAgIEhUTUxDb2xsZWN0aW9uKiBjaGlsZHJlbiA9IGNlbGxzKCk7CiAgICAgaW50IG51bUNlbGxz
ID0gY2hpbGRyZW4gPyBjaGlsZHJlbi0+bGVuZ3RoKCkgOiAwOwogICAgIGlmIChpbmRleCA8IC0x
IHx8IGluZGV4ID4gbnVtQ2VsbHMpIHsKICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKQEAg
LTE0Myw3ICsxNDMsNyBAQCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBIVE1MVGFibGVSb3dFbGVt
ZW50OjppbnNlcnRDZWxsKGludCBpbmRleCwgRXhjZXB0aW9uQ29kZQogCiB2b2lkIEhUTUxUYWJs
ZVJvd0VsZW1lbnQ6OmRlbGV0ZUNlbGwoaW50IGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
LSAgICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGNoaWxkcmVuID0gY2VsbHMoKTsKKyAgICBIVE1M
Q29sbGVjdGlvbiogY2hpbGRyZW4gPSBjZWxscygpOwogICAgIGludCBudW1DZWxscyA9IGNoaWxk
cmVuID8gY2hpbGRyZW4tPmxlbmd0aCgpIDogMDsKICAgICBpZiAoaW5kZXggPT0gLTEpCiAgICAg
ICAgIGluZGV4ID0gbnVtQ2VsbHMtMTsKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIEhUTUxUYWJs
ZVJvd0VsZW1lbnQ6OmRlbGV0ZUNlbGwoaW50IGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKICAg
ICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKIH0KIAotUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlv
bj4gSFRNTFRhYmxlUm93RWxlbWVudDo6Y2VsbHMoKQorSFRNTENvbGxlY3Rpb24qIEhUTUxUYWJs
ZVJvd0VsZW1lbnQ6OmNlbGxzKCkKIHsKICAgICByZXR1cm4gZW5zdXJlQ2FjaGVkSFRNTENvbGxl
Y3Rpb24oVFJDZWxscyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZVJvd0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVu
dC5oCmluZGV4IGM0MzM2NzcuLmNjZTk3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlUm93RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlUm93RWxlbWVudC5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRy
PEhUTUxFbGVtZW50PiBpbnNlcnRDZWxsKGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOwogICAg
IHZvaWQgZGVsZXRlQ2VsbChpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIFBhc3NS
ZWZQdHI8SFRNTENvbGxlY3Rpb24+IGNlbGxzKCk7CisgICAgSFRNTENvbGxlY3Rpb24qIGNlbGxz
KCk7CiAgICAgdm9pZCBzZXRDZWxscyhIVE1MQ29sbGVjdGlvbiAqLCBFeGNlcHRpb25Db2RlJik7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJv
d3NDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxl
Y3Rpb24uY3BwCmluZGV4IDZhODU2N2MuLmRmODk5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCkBAIC0xNTYsMTQgKzE1NiwxMyBAQCBI
VE1MVGFibGVSb3dzQ29sbGVjdGlvbjo6SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24oSFRNTFRhYmxl
RWxlbWVudCogdGFibGUpCiB7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTFRhYmxlUm93c0NvbGxlY3Rp
b24+IEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjpjcmVhdGUoSFRNTFRhYmxlRWxlbWVudCogdGFi
bGUpCitQYXNzT3duUHRyPEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uPiBIVE1MVGFibGVSb3dzQ29s
bGVjdGlvbjo6Y3JlYXRlKEhUTUxUYWJsZUVsZW1lbnQqIHRhYmxlKQogewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24odGFibGUpKTsKKyAgICByZXR1cm4g
YWRvcHRQdHIobmV3IEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uKHRhYmxlKSk7CiB9CiAKIEVsZW1l
bnQqIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjppdGVtQWZ0ZXIoRWxlbWVudCogcHJldmlvdXMp
IGNvbnN0CiB7Ci0gICAgQVNTRVJUKGJhc2UoKSk7CiAgICAgQVNTRVJUKCFwcmV2aW91cyB8fCBw
cmV2aW91cy0+aGFzTG9jYWxOYW1lKHRyVGFnKSk7CiAgICAgcmV0dXJuIHJvd0FmdGVyKHN0YXRp
Y19jYXN0PEhUTUxUYWJsZUVsZW1lbnQqPihiYXNlKCkpLCBzdGF0aWNfY2FzdDxIVE1MVGFibGVS
b3dFbGVtZW50Kj4ocHJldmlvdXMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlUm93c0NvbGxlY3Rpb24uaAppbmRleCA2NjAwMmQwLi4xMWZiOGQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oCkBAIC0zOCw3ICszOCw3IEBA
IGNsYXNzIEhUTUxUYWJsZVJvd0VsZW1lbnQ7CiAKIGNsYXNzIEhUTUxUYWJsZVJvd3NDb2xsZWN0
aW9uIDogcHVibGljIEhUTUxDb2xsZWN0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxIVE1MVGFibGVSb3dzQ29sbGVjdGlvbj4gY3JlYXRlKEhUTUxUYWJsZUVsZW1lbnQqKTsK
KyAgICBzdGF0aWMgUGFzc093blB0cjxIVE1MVGFibGVSb3dzQ29sbGVjdGlvbj4gY3JlYXRlKEhU
TUxUYWJsZUVsZW1lbnQqKTsKIAogICAgIHN0YXRpYyBIVE1MVGFibGVSb3dFbGVtZW50KiByb3dB
ZnRlcihIVE1MVGFibGVFbGVtZW50KiwgSFRNTFRhYmxlUm93RWxlbWVudCopOwogICAgIHN0YXRp
YyBIVE1MVGFibGVSb3dFbGVtZW50KiBsYXN0Um93KEhUTUxUYWJsZUVsZW1lbnQqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAKaW5kZXggNzNh
ODM2Ny4uMzI5N2FkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVT
ZWN0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0
aW9uRWxlbWVudC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBIVE1MVGFibGVTZWN0aW9uRWxl
bWVudDo6YWRkaXRpb25hbEF0dHJpYnV0ZVN0eWxlRGVjbHMoVmVjdG9yPENTU011dGFibGVTdHkK
IFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjppbnNlcnRS
b3coaW50IGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8SFRNTFRhYmxl
Um93RWxlbWVudD4gcm93OwotICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gY2hpbGRyZW4gPSBy
b3dzKCk7CisgICAgSFRNTENvbGxlY3Rpb24qIGNoaWxkcmVuID0gcm93cygpOwogICAgIGludCBu
dW1Sb3dzID0gY2hpbGRyZW4gPyAoaW50KWNoaWxkcmVuLT5sZW5ndGgoKSA6IDA7CiAgICAgaWYg
KGluZGV4IDwgLTEgfHwgaW5kZXggPiBudW1Sb3dzKQogICAgICAgICBlYyA9IElOREVYX1NJWkVf
RVJSOyAvLyBwZXIgdGhlIERPTQpAQCAtODUsNyArODUsNyBAQCBQYXNzUmVmUHRyPEhUTUxFbGVt
ZW50PiBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6aW5zZXJ0Um93KGludCBpbmRleCwgRXhjZXB0
aW9uQwogCiB2b2lkIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjpkZWxldGVSb3coaW50IGluZGV4
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGNoaWxk
cmVuID0gcm93cygpOworICAgIEhUTUxDb2xsZWN0aW9uKiBjaGlsZHJlbiA9IHJvd3MoKTsKICAg
ICBpbnQgbnVtUm93cyA9IGNoaWxkcmVuID8gKGludCljaGlsZHJlbi0+bGVuZ3RoKCkgOiAwOwog
ICAgIGlmIChpbmRleCA9PSAtMSkKICAgICAgICAgaW5kZXggPSBudW1Sb3dzIC0gMTsKQEAgLTE0
OSw3ICsxNDksNyBAQCB2b2lkIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjpzZXRWQWxpZ24oY29u
c3QgU3RyaW5nICZ2YWx1ZSkKICAgICBzZXRBdHRyaWJ1dGUodmFsaWduQXR0ciwgdmFsdWUpOwog
fQogCi1QYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6
cm93cygpCitIVE1MQ29sbGVjdGlvbiogSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6OnJvd3MoKQog
ewogICAgIHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihUU2VjdGlvblJvd3MpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5oCmluZGV4
IGE4NGNiZGUuLjI5NTkwNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlU2VjdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNl
Y3Rpb25FbGVtZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIFN0cmluZyB2QWxp
Z24oKSBjb25zdDsKICAgICB2b2lkIHNldFZBbGlnbihjb25zdCBTdHJpbmcmKTsKIAotICAgIFBh
c3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IHJvd3MoKTsKKyAgICBIVE1MQ29sbGVjdGlvbiogcm93
cygpOwogCiBwcml2YXRlOgogICAgIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Kik7Cg==
</data>
<flag name="review"
          id="121445"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>