<?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>40557</bug_id>
          
          <creation_ts>2010-06-14 00:46:19 -0700</creation_ts>
          <short_desc>Add a preload scanner for the HTML5 parser</short_desc>
          <delta_ts>2010-06-16 03:28:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>39259</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>237732</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-14 00:46:19 -0700</bug_when>
    <thetext>Add a preload scanner for the HTML5 parser</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237733</commentid>
    <comment_count>1</comment_count>
      <attachid>58624</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-14 00:55:54 -0700</bug_when>
    <thetext>Created attachment 58624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237734</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-14 00:56:35 -0700</bug_when>
    <thetext>I made the new file as an svn copy, but that was probably a waste.  I wasn&apos;t expecting to end up editing the file so much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237737</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-14 01:00:48 -0700</bug_when>
    <thetext>Attachment 58624 did not build on mac:
Build output: http://webkit-commit-queue.appspot.com/results/3271115</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237743</commentid>
    <comment_count>4</comment_count>
      <attachid>58624</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-14 01:12:49 -0700</bug_when>
    <thetext>Comment on attachment 58624
Patch

Lots going on in this patch.  Did you mean to leave the gurads and the class name as PreloadScanner?  Won&apos;t that cause a link error?

I think we should consider spliting this into bits.

r- for the ews fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237745</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-14 01:25:16 -0700</bug_when>
    <thetext>&gt; Lots going on in this patch.  Did you mean to leave the gurads and the class name as PreloadScanner?  Won&apos;t that cause a link error?

I don&apos;t think you&apos;re reading the diff correctly.  I can regenerated it not using svn copy if that would make it easier to understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237750</commentid>
    <comment_count>6</comment_count>
      <attachid>58628</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-14 01:43:20 -0700</bug_when>
    <thetext>Created attachment 58628
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237761</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-14 03:47:10 -0700</bug_when>
    <thetext>Attachment 58628 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/3291124</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237915</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-14 10:59:22 -0700</bug_when>
    <thetext>&gt; Attachment 58628 did not build on chromium:

Strange.  I wonder if the change to the gypi file isn&apos;t be processed.  Or maybe I screwed it up somehow?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238094</commentid>
    <comment_count>9</comment_count>
      <attachid>58714</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-14 15:31:08 -0700</bug_when>
    <thetext>Created attachment 58714
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238101</commentid>
    <comment_count>10</comment_count>
      <attachid>58714</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-14 15:41:32 -0700</bug_when>
    <thetext>Comment on attachment 58714
Patch

You said I should r- this.

But here are some comments anyway:
WebCore/html/HTML5PreloadScanner.cpp:51
 +      // FIXME: We should re-use these tokens in HTML5DocumentParser if the
We should save and re-use these tokens (otherwise I think you&apos;re meaning we should use them right there and then)

WebCore/html/HTML5PreloadScanner.cpp:59
 +  void HTML5PreloadScanner::processToken()
This function is quite large.

WebCore/html/HTML5PreloadScanner.cpp:64
 +      AtomicString tagName(m_token.name().data(), m_token.name().size());
Strange the token doesn&apos;t expose a method to do this.  Like makeAtomicTagName()?

WebCore/html/HTML5PreloadScanner.cpp:78
 +      for (HTML5Token::AttributeList::const_iterator iter = m_token.attributes().begin();
Can this loop be a separate function?

WebCore/html/HTML5PreloadScanner.cpp:74
 +      String urlToLoad;
Should these be a struct?

WebCore/html/HTML5PreloadScanner.cpp:103
 +      if (tagName == scriptTag)
If the above was a struct, then this could be a separate &quot;startPreloads()&quot; function or something, which was passed the struct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238103</commentid>
    <comment_count>11</comment_count>
      <attachid>58714</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-14 15:42:05 -0700</bug_when>
    <thetext>Comment on attachment 58714
Patch

Arg name not needed:

+    void scan(const SegmentedString&amp; source);

I would have named it m_preloadScanner:

+    OwnPtr&lt;HTML5PreloadScanner&gt; m_scanner;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238129</commentid>
    <comment_count>12</comment_count>
      <attachid>58726</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-14 16:29:06 -0700</bug_when>
    <thetext>Created attachment 58726
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238139</commentid>
    <comment_count>13</comment_count>
      <attachid>58727</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-14 16:52:47 -0700</bug_when>
    <thetext>Created attachment 58727
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238148</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-14 17:07:28 -0700</bug_when>
    <thetext>Committed r61163: &lt;http://trac.webkit.org/changeset/61163&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238759</commentid>
    <comment_count>15</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-06-16 02:29:48 -0700</bug_when>
    <thetext>CSS scanning got @imports is a critical performance feature and should be added back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238760</commentid>
    <comment_count>16</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-06-16 02:30:45 -0700</bug_when>
    <thetext>for @imports :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238770</commentid>
    <comment_count>17</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-06-16 03:28:20 -0700</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=40666</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58624</attachid>
            <date>2010-06-14 00:55:54 -0700</date>
            <delta_ts>2010-06-14 01:43:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40557-20100614005552.patch</filename>
            <type>text/plain</type>
            <size>87816</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MTExMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjAgQEAKKzIwMTAtMDYtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
YSBwcmVsb2FkIHNjYW5uZXIgZm9yIHRoZSBIVE1MNSBwYXJzZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNTU3CisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIGEgc2ltcGxlIHByZWxvYWQgc2Nhbm5lciBmb3IgdGhlIEhUTUw1IHBhcnNlci4gIFRo
aXMKKyAgICAgICAgcHJlbG9hZCBzY2FubmVyIGlzIG5vdCBhcyBhd2Vzb21lIGFzIHRoZSBvbGQg
b25lIGJlY2F1c2UgaXQgZG9lc24ndAorICAgICAgICBzY2FuIENTUywgYnV0IGl0J3MgbXVjaCBz
aW1wbGVyLgorCisgICAgICAgICogQW5kcm9pZC5tazoKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6Cisg
ICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAgICAgLSBCdWlsZCBmaWxlIHRvcnR1cmUuCisgICAgICAgICogaHRtbC9IVE1MNURvY3Vt
ZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1RG9jdW1lbnRQYXJzZXI6Ondy
aXRlKToKKyAgICAgICAgICAgIC0gQ2FsbCBpbnRvIHRoZSBwcmVsb2FkIHNjYW5uZXIgd2hlbiB3
YWl0aW5nIGZvciBhIHNjcmlwdC4KKyAgICAgICAgKiBodG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIu
aDoKKyAgICAgICAgKiBodG1sL0hUTUw1TGV4ZXIuaDoKKyAgICAgICAgICAgIC0gRXhwb3NlIHRo
ZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBsZXhlci4gIFllcywgdGhhdCdzIGxhbWUuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MNUxleGVyOjpzdGF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MNVByZWxv
YWRTY2FubmVyLmNwcDogQ29waWVkIGZyb20gV2ViQ29yZS9odG1sL1ByZWxvYWRTY2FubmVyLmNw
cC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1UHJlbG9hZFNjYW5uZXI6OkhUTUw1UHJlbG9hZFNj
YW5uZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVQcmVsb2FkU2Nhbm5lcjo6c2Nhbik6Cisg
ICAgICAgICAgICAtIEEgc2ltcGxlIGxvb3AgdG8gcHVtcCB0aGUgcHJlbG9hZCBzY2FubmVyJ3Mg
bGV4ZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MNVByZWxvYWRTY2FubmVyOjpwcm9jZXNzVG9r
ZW4pOgorICAgICAgICAgICAgLSBQcmVsb2FkIGludGVyZXN0aW5nIHJlc291cmNlcy4gIFN0b2xl
biBmcm9tIHRoZSBvbGQgcHJlbG9hZAorICAgICAgICAgICAgICBzY2FubmVyLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTDVQcmVsb2FkU2Nhbm5lcjo6c2Nhbm5pbmdCb2R5KToKKyAgICAgICAgKiBo
dG1sL0hUTUw1UHJlbG9hZFNjYW5uZXIuaDogQ29waWVkIGZyb20gV2ViQ29yZS9odG1sL1ByZWxv
YWRTY2FubmVyLmguCisgICAgICAgICogaHRtbC9IVE1MNVRva2VuLmg6CisgICAgICAgICAgICAt
IEFkZGVkIGNvbnN0IGZvciBiZXR0ZXIgdHlwaW5nLiAgUHJvYmFibHkgbm90IG5lY2Vzc2FyeSBm
b3IgdGhlCisgICAgICAgICAgICAgIGZpbmFsIHBhdGNoLCBidXQgdGhpcyBoZWxwZWQgd2l0aCBh
biBpbnRlcm1lZGlhdGUgdmVyc2lvbiBhbmQgaXMKKyAgICAgICAgICAgICAgYSBnb29kIHByYWN0
aWNlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbjo6YXR0cmlidXRlcyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MNVRva2VuOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VG9r
ZW46OmNoYXJhY3RlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbjo6Y29tbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MNVRva2VuOjpwdWJsaWNJZGVudGlmaWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUw1VG9rZW46OnN5c3RlbUlkZW50aWZpZXIpOgorICAgICAgICAqIGh0
bWwvSFRNTDVUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9PbGRT
dHlsZSk6CisgICAgICAgICAgICAtIFNvbWUgZmFsbG91dCBmcm9tIGFkZGluZyBjb25zdC4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUw1VHJlZUJ1aWxkZXI6OmFkanVzdGVkTGV4ZXJTdGF0ZSk6Cisg
ICAgICAgICAgICAtIEFic3RyYWN0IHRoaXMgcGllY2Ugb2YgdGhlIEhUTUw1IHRyZWUgY29uc3Ry
dWN0aW9uIGFsZ29yaXRobSBzbworICAgICAgICAgICAgICB3ZSBjYW4gcmUtdXNlIGl0IGluIHRo
ZSBwcmVsb2FkIHNjYW5uZXIuICBJdCdzIHRvbyBiYWQgdGhlCisgICAgICAgICAgICAgIGxleGVy
J3Mgc3RhdGUgbWFjaGluZSBpc24ndCBzZWxmLWNvbnRhaW5lZCwgYnV0IHRoYXQncyB0aGUgd2F5
CisgICAgICAgICAgICAgIHRoZSBzcGVjIGlzIHdyaXR0ZW4uCisgICAgICAgIChXZWJDb3JlOjpI
VE1MNVRyZWVCdWlsZGVyOjpwYXNzVG9rZW5Ub0xlZ2FjeVBhcnNlcik6CisgICAgICAgICAgICAt
IENhbGwgdGhlIG5ldyBmdW5jdGlvbi4KKyAgICAgICAgKiBodG1sL0hUTUw1VHJlZUJ1aWxkZXIu
aDoKKwogMjAxMC0wNi0xMyAgQW5kZXJzIEJha2tlbiAgPGFnYmFra2VuQGdtYWlsLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYkNvcmUvQW5kcm9pZC5t
awo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0FuZHJvaWQubWsJKHJldmlzaW9uIDYxMTA3KQorKysg
V2ViQ29yZS9BbmRyb2lkLm1rCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsOCArMjUxLDkgQEAgTE9D
QUxfU1JDX0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJaHRtbC9IVE1MNUVudGl0eVBh
cnNlci5jcHAgXAogCWh0bWwvSFRNTDVMZXhlci5jcHAgXAogCWh0bWwvSFRNTDVEb2N1bWVudFBh
cnNlci5jcHAgXAotCWh0bWwvSFRNTDVUcmVlQnVpbGRlci5jcHAgXAorCWh0bWwvSFRNTDVQcmVs
b2FkU2Nhbm5lci5jcHAgXAogCWh0bWwvSFRNTDVTY3JpcHRSdW5uZXIuY3BwIFwKKwlodG1sL0hU
TUw1VHJlZUJ1aWxkZXIuY3BwIFwKIAlodG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcCBcCiAJaHRt
bC9IVE1MQ29sbGVjdGlvbi5jcHAgXAogCWh0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHAgXApJ
bmRleDogV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiA2MTEwNykKKysrIFdlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTkwNiw4ICs5MDYsOSBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
aHRtbC9IVE1MNUVudGl0eVBhcnNlci5jcHAKICAgICBodG1sL0hUTUw1TGV4ZXIuY3BwCiAgICAg
aHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcAotICAgIGh0bWwvSFRNTDVUcmVlQnVpbGRlci5j
cHAKKyAgICBodG1sL0hUTUw1UHJlbG9hZFNjYW5uZXIuY3BwCiAgICAgaHRtbC9IVE1MNVNjcmlw
dFJ1bm5lci5jcHAKKyAgICBodG1sL0hUTUw1VHJlZUJ1aWxkZXIuY3BwCiAgICAgaHRtbC9IVE1M
QWxsQ29sbGVjdGlvbi5jcHAKICAgICBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAogICAgIGh0
bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDYxMTA3KQorKysg
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMTA5NCwxMSArMTA5NCwx
MyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvaHRtbC9IVE1MNVRva2VuLmggXAog
CVdlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcCBcCiAJV2ViQ29yZS9odG1sL0hU
TUw1RG9jdW1lbnRQYXJzZXIuaCBcCi0JV2ViQ29yZS9odG1sL0hUTUw1VHJlZUJ1aWxkZXIuY3Bw
IFwKLQlXZWJDb3JlL2h0bWwvSFRNTDVUcmVlQnVpbGRlci5oIFwKKwlXZWJDb3JlL2h0bWwvSFRN
TDVQcmVsb2FkU2Nhbm5lci5jcHAgXAorCVdlYkNvcmUvaHRtbC9IVE1MNVByZWxvYWRTY2FubmVy
LmggXAogCVdlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5jcHAgXAogCVdlYkNvcmUvaHRt
bC9IVE1MNVNjcmlwdFJ1bm5lci5oIFwKIAlXZWJDb3JlL2h0bWwvSFRNTDVTY3JpcHRSdW5uZXJI
b3N0LmggXAorCVdlYkNvcmUvaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmNwcCBcCisJV2ViQ29yZS9o
dG1sL0hUTUw1VHJlZUJ1aWxkZXIuaCBcCiAJV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9u
LmNwcCBcCiAJV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmggXAogCVdlYkNvcmUvaHRt
bC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDYxMTA3KQorKysgV2Vi
Q29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTE0ODAsMTAgKzE0ODAsMTIgQEAK
ICAgICAgICAgICAgICdodG1sL0hUTUw1TGV4ZXIuaCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1M
NURvY3VtZW50UGFyc2VyLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MNURvY3VtZW50UGFy
c2VyLmgnLAotICAgICAgICAgICAgJ2h0bWwvSFRNTDVUcmVlQnVpbGRlci5jcHAnLAotICAgICAg
ICAgICAgJ2h0bWwvSFRNTDVUcmVlQnVpbGRlci5oJywKKyAgICAgICAgICAgICdodG1sL0hUTUw1
UHJlbG9hZFNjYW5uZXIuY3BwJywKKyAgICAgICAgICAgICdodG1sL0hUTUw1UHJlbG9hZFNjYW5u
ZXIuaCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5jcHAnLAogICAgICAg
ICAgICAgJ2h0bWwvSFRNTDVTY3JpcHRSdW5uZXIuaCcsCisgICAgICAgICAgICAnaHRtbC9IVE1M
NVRyZWVCdWlsZGVyLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmgn
LAogICAgICAgICAgICAgJ2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwJywKICAgICAgICAgICAg
ICdodG1sL0hUTUxBbGxDb2xsZWN0aW9uLmgnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTEFuY2hv
ckVsZW1lbnQuY3BwJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNjExMDcpCisrKyBXZWJDb3JlL1dlYkNvcmUu
cHJvCSh3b3JraW5nIGNvcHkpCkBAIC02MTMsOCArNjEzLDkgQEAgU09VUkNFUyArPSBcCiAgICAg
aHRtbC9IVE1MNUVudGl0eVBhcnNlci5jcHAgXAogICAgIGh0bWwvSFRNTDVMZXhlci5jcHAgXAog
ICAgIGh0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHAgXAotICAgIGh0bWwvSFRNTDVUcmVlQnVp
bGRlci5jcHAgXAorICAgIGh0bWwvSFRNTDVQcmVsb2FkU2Nhbm5lci5jcHAgXAogICAgIGh0bWwv
SFRNTDVTY3JpcHRSdW5uZXIuY3BwIFwKKyAgICBodG1sL0hUTUw1VHJlZUJ1aWxkZXIuY3BwIFwK
ICAgICBodG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcCBcCiAgICAgaHRtbC9IVE1MQW5jaG9yRWxl
bWVudC5jcHAgXAogICAgIGh0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwIFwKSW5kZXg6IFdlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gNjExMDcpCisrKyBXZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzMyNSw2
ICszMzMyNSwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxodG1sXEhUTUw1UHJlbG9hZFNjYW5uZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9G
aWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxIVE1MNVByZWxvYWRT
Y2FubmVyLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxodG1sXEhUTUw1U2NyaXB0UnVubmVyLmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4N
CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gNjExMDcpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMjU2NCw2ICsyNTY0LDggQEAKIAkJOTdEQ0UyMDIxMDgwN0M3NTAw
NTdEMzk0IC8qIEhpc3RvcnlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5N0RDRTIwMDEwODA3Qzc1MDA1N0QzOTQgLyogSGlzdG9yeUNv
bnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5N0RENEQ4NjBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0RENEQ4NDBGREY0RDZEMDBF
Q0Y5QTQgLyogWFNTQXVkaXRvci5jcHAgKi87IH07CiAJCTk3REQ0RDg3MEZERjRENkUwMEVDRjlB
NCAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5N0RENEQ4NTBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oICovOyB9Owor
CQk5N0U3OTM2NTExQzYwMzA5MDBFNjQ5QkMgLyogSFRNTDVQcmVsb2FkU2Nhbm5lci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0U3OTM2MzExQzYw
MzA5MDBFNjQ5QkMgLyogSFRNTDVQcmVsb2FkU2Nhbm5lci5jcHAgKi87IH07CisJCTk3RTc5MzY2
MTFDNjAzMDkwMEU2NDlCQyAvKiBIVE1MNVByZWxvYWRTY2FubmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0U3OTM2NDExQzYwMzA5MDBFNjQ5QkMg
LyogSFRNTDVQcmVsb2FkU2Nhbm5lci5oICovOyB9OwogCQk5N0U4QjM1NjExQTIzQ0UyMDAxNjk0
MDkgLyogSFRNTDVMZXhlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5N0U4QjM1NDExQTIzQ0UyMDAxNjk0MDkgLyogSFRNTDVMZXhlci5jcHAgKi87
IH07CiAJCTk3RThCMzU3MTFBMjNDRTIwMDE2OTQwOSAvKiBIVE1MNUxleGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0U4QjM1NTExQTIzQ0UyMDAx
Njk0MDkgLyogSFRNTDVMZXhlci5oICovOyB9OwogCQk5N0U4QjNDMzExQTI4OTA4MDAxNjk0MDkg
LyogSFRNTDVUb2tlbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTdFOEIzQzIxMUEyODkwODAwMTY5NDA5IC8qIEhUTUw1VG9rZW4uaCAqLzsgfTsKQEAg
LTgxNjAsNiArODE2Miw4IEBACiAJCTk3RENFMjAwMTA4MDdDNzUwMDU3RDM5NCAvKiBIaXN0b3J5
Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIaXN0b3J5Q29u
dHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0RENEQ4NDBGREY0RDZE
MDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBYU1NBdWRpdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdE
RDREODUwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gWFNTQXVkaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5N0U3OTM2MzExQzYwMzA5MDBFNjQ5QkMgLyogSFRNTDVQcmVsb2FkU2Nhbm5lci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MNVByZWxvYWRTY2FubmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdFNzkzNjQxMUM2MDMwOTAwRTY0OUJD
IC8qIEhUTUw1UHJlbG9hZFNjYW5uZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSFRNTDVQcmVsb2FkU2Nhbm5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
N0U4QjM1NDExQTIzQ0UyMDAxNjk0MDkgLyogSFRNTDVMZXhlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MNUxleGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTdFOEIzNTUxMUEyM0NFMjAwMTY5NDA5IC8qIEhUTUw1TGV4ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTDVMZXhlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5N0U4QjNDMjExQTI4OTA4MDAxNjk0MDkgLyogSFRNTDVUb2tlbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MNVRva2VuLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzQ0Niw2ICsxMzQ1MCw4IEBACiAJCQkJOTc2RTg5NUYx
MUMwQ0EzQTAwRUE5Q0E5IC8qIEhUTUw1RW50aXR5UGFyc2VyLmggKi8sCiAJCQkJOTdFOEIzNTQx
MUEyM0NFMjAwMTY5NDA5IC8qIEhUTUw1TGV4ZXIuY3BwICovLAogCQkJCTk3RThCMzU1MTFBMjND
RTIwMDE2OTQwOSAvKiBIVE1MNUxleGVyLmggKi8sCisJCQkJOTdFNzkzNjMxMUM2MDMwOTAwRTY0
OUJDIC8qIEhUTUw1UHJlbG9hZFNjYW5uZXIuY3BwICovLAorCQkJCTk3RTc5MzY0MTFDNjAzMDkw
MEU2NDlCQyAvKiBIVE1MNVByZWxvYWRTY2FubmVyLmggKi8sCiAJCQkJQTgzQjNBRUUxMUFERUZG
NTAwNDU4ODA5IC8qIEhUTUw1U2NyaXB0UnVubmVyLmNwcCAqLywKIAkJCQlBODNCM0FFRjExQURF
RkY1MDA0NTg4MDkgLyogSFRNTDVTY3JpcHRSdW5uZXIuaCAqLywKIAkJCQlBODdGMTYzNDExQUU4
NDEzMDBDQkIyRTUgLyogSFRNTDVTY3JpcHRSdW5uZXJIb3N0LmggKi8sCkBAIC0xOTQ3Myw2ICsx
OTQ3OSw3IEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29y
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdERDREODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1
ZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMTcyRTAxMTEzNkU4Q0UwMDYyQTUzMyAvKiBa
b29tTW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTdFNzkzNjYxMUM2MDMwOTAwRTY0OUJDIC8q
IEhUTUw1UHJlbG9hZFNjYW5uZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjE3NzksNiArMjE3ODYs
NyBAQAogCQkJCTkzRjE5QjA1MDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJvY2Vzc29yTGlieHNs
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNM
VFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3REQ0RDg2MEZERjRENkUwMEVD
RjlBNCAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk3RTc5MzY1MTFDNjAz
MDkwMEU2NDlCQyAvKiBIVE1MNVByZWxvYWRTY2FubmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRl
eDogV2ViQ29yZS9odG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcAkocmV2aXNpb24gNjExMDcpCisrKyBX
ZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJIVE1MNUxleGVyLmgiCisjaW5jbHVkZSAiSFRNTDVQcmVsb2FkU2Nhbm5lci5oIgog
I2luY2x1ZGUgIkhUTUw1U2NyaXB0UnVubmVyLmgiCiAjaW5jbHVkZSAiSFRNTDVUcmVlQnVpbGRl
ci5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgpAQCAtMTY3LDYgKzE2OCwxNCBAQCB2b2lk
IEhUTUw1RG9jdW1lbnRQYXJzZXI6OndyaXRlKGNvbnN0IFNlCiAgICAgICAgIG1faW5wdXQuaW5z
ZXJ0QXRDdXJyZW50SW5zZXJ0aW9uUG9pbnQoc291cmNlKTsKIAogICAgIHB1bXBMZXhlcklmUG9z
c2libGUoKTsKKworICAgIGlmIChhcHBlbmREYXRhICYmIGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkg
eworICAgICAgICBBU1NFUlQobV9sZXhlci0+c3RhdGUoKSA9PSBIVE1MNUxleGVyOjpEYXRhU3Rh
dGUpOworICAgICAgICBpZiAoIW1fc2Nhbm5lcikKKyAgICAgICAgICAgIG1fc2Nhbm5lci5zZXQo
bmV3IEhUTUw1UHJlbG9hZFNjYW5uZXIobV9kb2N1bWVudCkpOworICAgICAgICBtX3NjYW5uZXIt
PnNjYW4obV9pbnB1dC5jdXJyZW50KCkpOworICAgIH0KKwogICAgIGVuZElmRGVsYXllZCgpOwog
fQogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmgJKHJldmlzaW9uIDYxMTA3KQor
KysgV2ViQ29yZS9odG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NDAsNiArNDAsNyBAQCBjbGFzcyBMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOwogY2xhc3MgSFRN
TDVMZXhlcjsKIGNsYXNzIEhUTUw1U2NyaXB0UnVubmVyOwogY2xhc3MgSFRNTDVUcmVlQnVpbGRl
cjsKK2NsYXNzIEhUTUw1UHJlbG9hZFNjYW5uZXI7CiBjbGFzcyBTY3JpcHRDb250cm9sbGVyOwog
Y2xhc3MgU2NyaXB0U291cmNlQ29kZTsKIApAQCAtMTgzLDYgKzE4NCw3IEBAIHByaXZhdGU6CiAg
ICAgT3duUHRyPEhUTUw1TGV4ZXI+IG1fbGV4ZXI7CiAgICAgT3duUHRyPEhUTUw1U2NyaXB0UnVu
bmVyPiBtX3NjcmlwdFJ1bm5lcjsKICAgICBPd25QdHI8SFRNTDVUcmVlQnVpbGRlcj4gbV90cmVl
Q29uc3RydWN0b3I7CisgICAgT3duUHRyPEhUTUw1UHJlbG9hZFNjYW5uZXI+IG1fc2Nhbm5lcjsK
ICAgICBib29sIG1fZW5kV2FzRGVsYXllZDsKICAgICBpbnQgbV93cml0ZU5lc3RpbmdMZXZlbDsK
IH07CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTDVMZXhlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MNUxleGVyLmgJKHJldmlzaW9uIDYxMTA3KQorKysgV2ViQ29yZS9odG1sL0hU
TUw1TGV4ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDYgKzEyMyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgaW50IGxpbmVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2xpbmVO
dW1iZXI7IH0KICAgICAgICAgaW50IGNvbHVtbk51bWJlcigpIGNvbnN0IHsgcmV0dXJuIDE7IH0g
Ly8gTWF0Y2hlcyBIVE1MRG9jdW1lbnRQYXJzZXIuaCBiZWhhdmlvci4KIAorICAgICAgICBTdGF0
ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KICAgICAgICAgdm9pZCBzZXRTdGF0
ZShTdGF0ZSBzdGF0ZSkgeyBtX3N0YXRlID0gc3RhdGU7IH0KIAogICAgICAgICAvLyBIYWNrIHRv
IHNraXAgbGVhZGluZyBuZXdsaW5lIGluIDxwcmU+LzxsaXN0aW5nPiBmb3IgYXV0aG9yaW5nIGVh
c2UuCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTDVQcmVsb2FkU2Nhbm5lci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0hUTUw1UHJlbG9hZFNjYW5uZXIuY3BwCShyZXZpc2lvbiA2MTEw
NykJKGZyb20gV2ViQ29yZS9odG1sL1ByZWxvYWRTY2FubmVyLmNwcDo2MTEwNykKKysrIFdlYkNv
cmUvaHRtbC9IVE1MNVByZWxvYWRTY2FubmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDg1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuIGh0dHA6
Ly93d3cudG9yY2htb2JpbGUuY29tLworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlByZWxvYWRTY2FubmVy
LmgiCisKKyNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKKyNpbmNsdWRlICJDYWNoZWRDU1NTdHls
ZVNoZWV0LmgiCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZS5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCisjaW5jbHVkZSAiQ2Fj
aGVkU2NyaXB0LmgiCisjaW5jbHVkZSAiQ1NTSGVscGVyLmgiCisjaW5jbHVkZSAiRG9jTG9hZGVy
LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUg
IkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiSFRNTExpbmtFbGVtZW50LmgiCisjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0
Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VuaWNvZGUuaD4KKworLy8g
VXNlIF9fR05VQ19fIGluc3RlYWQgb2YgUExBVEZPUk0oR0NDKSB0byBzdGF5IGNvbnNpc3RlbnQg
d2l0aCB0aGUgZ3BlcmYgZ2VuZXJhdGVkIGMgZmlsZQorI2lmZGVmIF9fR05VQ19fCisvLyBUaGUg
bWFpbiB0b2tlbml6ZXIgaW5jbHVkZXMgdGhpcyB0b28gc28gd2UgYXJlIGdldHRpbmcgdHdvIGNv
cGllcyBvZiB0aGUgZGF0YS4gSG93ZXZlciwgdGhpcyB3YXkgdGhlIGNvZGUgZ2V0cyBpbmxpbmVk
LgorI2luY2x1ZGUgIkhUTUxFbnRpdHlOYW1lcy5jcHAiCisjZWxzZQorLy8gTm90IGlubGluZWQg
Zm9yIG5vbi1HQ0MgY29tcGlsZXJzCitzdHJ1Y3QgRW50aXR5IHsKKyAgICBjb25zdCBjaGFyKiBu
YW1lOworICAgIGludCBjb2RlOworfTsKK2NvbnN0IHN0cnVjdCBFbnRpdHkqIGZpbmRFbnRpdHko
cmVnaXN0ZXIgY29uc3QgY2hhciogc3RyLCByZWdpc3RlciB1bnNpZ25lZCBpbnQgbGVuKTsKKyNl
bmRpZgorCisjZGVmaW5lIFBSRUxPQURfREVCVUcgMAorCit1c2luZyBuYW1lc3BhY2UgV1RGOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwor
ICAgIAorUHJlbG9hZFNjYW5uZXI6OlByZWxvYWRTY2FubmVyKERvY3VtZW50KiBkb2MpCisgICAg
OiBtX2luUHJvZ3Jlc3MoZmFsc2UpCisgICAgLCBtX3RpbWVVc2VkKDApCisgICAgLCBtX2JvZHlT
ZWVuKGZhbHNlKQorICAgICwgbV9kb2N1bWVudChkb2MpCit7CisjaWYgUFJFTE9BRF9ERUJVRwor
ICAgIHByaW50ZigiQ1JFQVRJTkcgUFJFTE9BRCBTQ0FOTkVSIEZPUiAlc1xuIiwgbV9kb2N1bWVu
dC0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKKyNlbmRpZgorfQorICAgIAorUHJl
bG9hZFNjYW5uZXI6On5QcmVsb2FkU2Nhbm5lcigpCit7CisjaWYgUFJFTE9BRF9ERUJVRworICAg
IHByaW50ZigiREVMRVRJTkcgUFJFTE9BRCBTQ0FOTkVSIEZPUiAlc1xuIiwgbV9kb2N1bWVudC0+
dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKKyAgICBwcmludGYoIlRPVEFMIFRJTUUg
VVNFRCAlLjRmc1xuIiwgbV90aW1lVXNlZCk7CisjZW5kaWYKK30KKyAgICAKK3ZvaWQgUHJlbG9h
ZFNjYW5uZXI6OmJlZ2luKCkgCit7IAorICAgIEFTU0VSVCghbV9pblByb2dyZXNzKTsgCisgICAg
cmVzZXQoKTsgCisgICAgbV9pblByb2dyZXNzID0gdHJ1ZTsgCit9CisgICAgCit2b2lkIFByZWxv
YWRTY2FubmVyOjplbmQoKSAKK3sgCisgICAgQVNTRVJUKG1faW5Qcm9ncmVzcyk7IAorICAgIG1f
aW5Qcm9ncmVzcyA9IGZhbHNlOyAKK30KKwordm9pZCBQcmVsb2FkU2Nhbm5lcjo6cmVzZXQoKQor
eworICAgIG1fc291cmNlLmNsZWFyKCk7CisgICAgCisgICAgbV9zdGF0ZSA9IERhdGE7CisgICAg
bV9lc2NhcGUgPSBmYWxzZTsKKyAgICBtX2NvbnRlbnRNb2RlbCA9IFBDREFUQTsKKyAgICBtX2Nv
bW1lbnRQb3MgPSAwOworCisgICAgbV9jbG9zZVRhZyA9IGZhbHNlOworICAgIG1fdGFnTmFtZS5j
bGVhcigpOworICAgIG1fYXR0cmlidXRlTmFtZS5jbGVhcigpOworICAgIG1fYXR0cmlidXRlVmFs
dWUuY2xlYXIoKTsKKyAgICBtX2xhc3RTdGFydFRhZyA9IEF0b21pY1N0cmluZygpOworICAgIAor
ICAgIG1fdXJsVG9Mb2FkID0gU3RyaW5nKCk7CisgICAgbV9jaGFyc2V0ID0gU3RyaW5nKCk7Cisg
ICAgbV9saW5rSXNTdHlsZVNoZWV0ID0gZmFsc2U7CisgICAgbV9sYXN0Q2hhcmFjdGVySW5kZXgg
PSAwOworICAgIGNsZWFyTGFzdENoYXJhY3RlcnMoKTsKKyAgICAKKyAgICBtX2Nzc1N0YXRlID0g
Q1NTSW5pdGlhbDsKKyAgICBtX2Nzc1J1bGUuY2xlYXIoKTsKKyAgICBtX2Nzc1J1bGVWYWx1ZS5j
bGVhcigpOworfQorICAgIAorYm9vbCBQcmVsb2FkU2Nhbm5lcjo6c2Nhbm5pbmdCb2R5KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9kb2N1bWVudC0+Ym9keSgpIHx8IG1fYm9keVNlZW47Cit9Cisg
ICAgCit2b2lkIFByZWxvYWRTY2FubmVyOjp3cml0ZShjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHNv
dXJjZSkKK3sKKyNpZiBQUkVMT0FEX0RFQlVHCisgICAgZG91YmxlIHN0YXJ0VGltZSA9IGN1cnJl
bnRUaW1lKCk7CisjZW5kaWYKKyAgICB0b2tlbml6ZShzb3VyY2UpOworI2lmIFBSRUxPQURfREVC
VUcKKyAgICBtX3RpbWVVc2VkICs9IGN1cnJlbnRUaW1lKCkgLSBzdGFydFRpbWU7CisjZW5kaWYK
K30KKyAgICAKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1doaXRlc3BhY2UoVUNoYXIgYykKK3sKKyAg
ICByZXR1cm4gYyA9PSAnICcgfHwgYyA9PSAnXG4nIHx8IGMgPT0gJ1xyJyB8fCBjID09ICdcdCc7
Cit9CisgICAgCitpbmxpbmUgdm9pZCBQcmVsb2FkU2Nhbm5lcjo6Y2xlYXJMYXN0Q2hhcmFjdGVy
cygpCit7CisgICAgbWVtc2V0KG1fbGFzdENoYXJhY3RlcnMsIDAsIGxhc3RDaGFyYWN0ZXJzQnVm
ZmVyU2l6ZSAqIHNpemVvZihVQ2hhcikpOworfQorICAgIAoraW5saW5lIHZvaWQgUHJlbG9hZFNj
YW5uZXI6OnJlbWVtYmVyQ2hhcmFjdGVyKFVDaGFyIGMpCit7CisgICAgbV9sYXN0Q2hhcmFjdGVy
SW5kZXggPSAobV9sYXN0Q2hhcmFjdGVySW5kZXggKyAxKSAlIGxhc3RDaGFyYWN0ZXJzQnVmZmVy
U2l6ZTsKKyAgICBtX2xhc3RDaGFyYWN0ZXJzW21fbGFzdENoYXJhY3RlckluZGV4XSA9IGM7Cit9
CisgICAgCitpbmxpbmUgYm9vbCBQcmVsb2FkU2Nhbm5lcjo6bGFzdENoYXJhY3RlcnNNYXRjaChj
b25zdCBjaGFyKiBjaGFycywgdW5zaWduZWQgY291bnQpIGNvbnN0Cit7CisgICAgdW5zaWduZWQg
cG9zID0gbV9sYXN0Q2hhcmFjdGVySW5kZXg7CisgICAgd2hpbGUgKGNvdW50KSB7CisgICAgICAg
IGlmIChjaGFyc1tjb3VudCAtIDFdICE9IG1fbGFzdENoYXJhY3RlcnNbcG9zXSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgLS1jb3VudDsKKyAgICAgICAgaWYgKCFwb3MpCisg
ICAgICAgICAgICBwb3MgPSBsYXN0Q2hhcmFjdGVyc0J1ZmZlclNpemU7CisgICAgICAgIC0tcG9z
OworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKyAgICAKK3N0YXRpYyBpbmxpbmUgdW5zaWdu
ZWQgbGVnYWxFbnRpdHlGb3IodW5zaWduZWQgdmFsdWUpCit7CisgICAgLy8gRklYTUUgVGhlcmUg
aXMgYSB0YWJsZSBmb3IgbW9yZSBleGNlcHRpb25zIGluIHRoZSBIVE1MNSBzcGVjaWZpY2F0aW9u
LgorICAgIGlmICh2YWx1ZSA9PSAwIHx8IHZhbHVlID4gMHgxMEZGRkYgfHwgKHZhbHVlID49IDB4
RDgwMCAmJiB2YWx1ZSA8PSAweERGRkYpKQorICAgICAgICByZXR1cm4gMHhGRkZEOworICAgIHJl
dHVybiB2YWx1ZTsKK30KKyAgICAKK3Vuc2lnbmVkIFByZWxvYWRTY2FubmVyOjpjb25zdW1lRW50
aXR5KFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBib29sJiBub3RFbm91Z2hDaGFyYWN0ZXJzKQor
eworICAgIGVudW0gRW50aXR5U3RhdGUgeworICAgICAgICBJbml0aWFsLAorICAgICAgICBOdW1i
ZXJUeXBlLAorICAgICAgICBNYXliZUhleCwKKyAgICAgICAgSGV4LAorICAgICAgICBEZWNpbWFs
LAorICAgICAgICBOYW1lZAorICAgIH07CisgICAgRW50aXR5U3RhdGUgZW50aXR5U3RhdGUgPSBJ
bml0aWFsOworICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CisgICAgVmVjdG9yPFVDaGFyLCAxMD4g
c2VlbkNoYXJzOworICAgIFZlY3RvcjxjaGFyLCAxMD4gZW50aXR5TmFtZTsKKyAgICAKKyAgICB3
aGlsZSAoIXNvdXJjZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgVUNoYXIgY2MgPSAqc291cmNlOwor
ICAgICAgICBzZWVuQ2hhcnMuYXBwZW5kKGNjKTsKKyAgICAgICAgc3dpdGNoIChlbnRpdHlTdGF0
ZSkgeworICAgICAgICBjYXNlIEluaXRpYWw6CisgICAgICAgICAgICBpZiAoaXNXaGl0ZXNwYWNl
KGNjKSB8fCBjYyA9PSAnPCcgfHwgY2MgPT0gJyYnKQorICAgICAgICAgICAgICAgIHJldHVybiAw
OworICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyMnKSAKKyAgICAgICAgICAgICAgICBlbnRp
dHlTdGF0ZSA9IE51bWJlclR5cGU7CisgICAgICAgICAgICBlbHNlIGlmICgoY2MgPj0gJ2EnICYm
IGNjIDw9ICd6JykgfHwgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpKSB7CisgICAgICAgICAgICAg
ICAgZW50aXR5TmFtZS5hcHBlbmQoY2MpOworICAgICAgICAgICAgICAgIGVudGl0eVN0YXRlID0g
TmFtZWQ7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE51bWJlclR5cGU6CisgICAgICAgICAgICBp
ZiAoY2MgPT0gJ3gnIHx8IGNjID09ICdYJykKKyAgICAgICAgICAgICAgICBlbnRpdHlTdGF0ZSA9
IE1heWJlSGV4OworICAgICAgICAgICAgZWxzZSBpZiAoY2MgPj0gJzAnICYmIGNjIDw9ICc5Jykg
eworICAgICAgICAgICAgICAgIGVudGl0eVN0YXRlID0gRGVjaW1hbDsKKyAgICAgICAgICAgICAg
ICByZXN1bHQgPSBjYyAtICcwJzsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgc291cmNlLnB1c2goJyMnKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1heWJlSGV4OgorICAgICAg
ICAgICAgaWYgKGNjID49ICcwJyAmJiBjYyA8PSAnOScpCisgICAgICAgICAgICAgICAgcmVzdWx0
ID0gY2MgLSAnMCc7CisgICAgICAgICAgICBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ2Yn
KQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IDEwICsgY2MgLSAnYSc7CisgICAgICAgICAgICBl
bHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ0YnKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9
IDEwICsgY2MgLSAnQSc7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBzb3Vy
Y2UucHVzaCgnIycpOworICAgICAgICAgICAgICAgIHNvdXJjZS5wdXNoKHNlZW5DaGFyc1sxXSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bnRpdHlTdGF0ZSA9IEhleDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEhleDoK
KyAgICAgICAgICAgIGlmIChjYyA+PSAnMCcgJiYgY2MgPD0gJzknKQorICAgICAgICAgICAgICAg
IHJlc3VsdCA9IHJlc3VsdCAqIDE2ICsgY2MgLSAnMCc7CisgICAgICAgICAgICBlbHNlIGlmIChj
YyA+PSAnYScgJiYgY2MgPD0gJ2YnKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAq
IDE2ICsgMTAgKyBjYyAtICdhJzsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNjID49ICdBJyAmJiBj
YyA8PSAnRicpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogMTYgKyAxMCArIGNj
IC0gJ0EnOworICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJzsnKSB7CisgICAgICAgICAgICAg
ICAgc291cmNlLmFkdmFuY2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbGVnYWxFbnRpdHlG
b3IocmVzdWx0KTsKKyAgICAgICAgICAgIH0gZWxzZSAKKyAgICAgICAgICAgICAgICByZXR1cm4g
bGVnYWxFbnRpdHlGb3IocmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IERlY2ltYWw6CisgICAgICAgICAgICBpZiAoY2MgPj0gJzAnICYmIGNjIDw9ICc5JykKKyAgICAg
ICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKiAxMCArIGNjIC0gJzAnOworICAgICAgICAgICAg
ZWxzZSBpZiAoY2MgPT0gJzsnKSB7CisgICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2UoKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gbGVnYWxFbnRpdHlGb3IocmVzdWx0KTsKKyAgICAgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBsZWdhbEVudGl0eUZvcihyZXN1bHQp
OworICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgCisgICAgICAgIGNhc2UgTmFtZWQ6
CisgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBhdHRyaWJ1dGUgb25seSB2ZXJzaW9uLCBnZW5l
cmljIHZlcnNpb24gbWF0Y2hlcyBzb21ld2hhdCBkaWZmZXJlbnRseQorICAgICAgICAgICAgd2hp
bGUgKGVudGl0eU5hbWUuc2l6ZSgpIDw9IDgpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2MgPT0g
JzsnKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVudGl0eSogZW50aXR5ID0gZmluZEVu
dGl0eShlbnRpdHlOYW1lLmRhdGEoKSwgZW50aXR5TmFtZS5zaXplKCkpOworICAgICAgICAgICAg
ICAgICAgICBpZiAoZW50aXR5KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2
YW5jZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudGl0eS0+Y29kZTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCEoY2MgPj0gJ2EnICYmIGNjIDw9ICd6Jykg
JiYgIShjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSAmJiAhKGNjID49ICcwJyAmJiBjYyA8PSAnOScp
KSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVudGl0eSogZW50aXR5ID0gZmluZEVudGl0
eShlbnRpdHlOYW1lLmRhdGEoKSwgZW50aXR5TmFtZS5zaXplKCkpOworICAgICAgICAgICAgICAg
ICAgICBpZiAoZW50aXR5KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudGl0eS0+
Y29kZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGVudGl0eU5hbWUuYXBwZW5kKGNjKTsKKyAgICAgICAgICAgICAgICBzb3Vy
Y2UuYWR2YW5jZSgpOworICAgICAgICAgICAgICAgIGlmIChzb3VyY2UuaXNFbXB0eSgpKQorICAg
ICAgICAgICAgICAgICAgICBnb3RvIG91dE9mQ2hhcmFjdGVyczsKKyAgICAgICAgICAgICAgICBj
YyA9ICpzb3VyY2U7CisgICAgICAgICAgICAgICAgc2VlbkNoYXJzLmFwcGVuZChjYyk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAoc2VlbkNoYXJzLnNpemUoKSA9PSAyKQorICAgICAg
ICAgICAgICAgIHNvdXJjZS5wdXNoKHNlZW5DaGFyc1swXSk7CisgICAgICAgICAgICBlbHNlIGlm
IChzZWVuQ2hhcnMuc2l6ZSgpID09IDMpIHsKKyAgICAgICAgICAgICAgICBzb3VyY2UucHVzaChz
ZWVuQ2hhcnNbMF0pOworICAgICAgICAgICAgICAgIHNvdXJjZS5wdXNoKHNlZW5DaGFyc1sxXSk7
CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBzb3VyY2UucHJlcGVuZChTZWdt
ZW50ZWRTdHJpbmcoU3RyaW5nKHNlZW5DaGFycy5kYXRhKCksIHNlZW5DaGFycy5zaXplKCkgLSAx
KSkpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgc291cmNlLmFk
dmFuY2UoKTsKKyAgICB9CitvdXRPZkNoYXJhY3RlcnM6CisgICAgbm90RW5vdWdoQ2hhcmFjdGVy
cyA9IHRydWU7CisgICAgc291cmNlLnByZXBlbmQoU2VnbWVudGVkU3RyaW5nKFN0cmluZyhzZWVu
Q2hhcnMuZGF0YSgpLCBzZWVuQ2hhcnMuc2l6ZSgpKSkpOworICAgIHJldHVybiAwOworfQorCit2
b2lkIFByZWxvYWRTY2FubmVyOjp0b2tlbml6ZShjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHNvdXJj
ZSkKK3sKKyAgICBBU1NFUlQobV9pblByb2dyZXNzKTsKKyAgICAKKyAgICBtX3NvdXJjZS5hcHBl
bmQoc291cmNlKTsKKworICAgIC8vIFRoaXMgaXMgYSBzaW1wbGlmaWVkIEhUTUw1IFRva2VuaXpl
cgorICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdv
cmsvI3Rva2VuaXNhdGlvbjAKKyAgICB3aGlsZSAoIW1fc291cmNlLmlzRW1wdHkoKSkgeworICAg
ICAgICBVQ2hhciBjYyA9ICptX3NvdXJjZTsKKyAgICAgICAgc3dpdGNoIChtX3N0YXRlKSB7Cisg
ICAgICAgIGNhc2UgRGF0YToKKyAgICAgICAgICAgIHdoaWxlICgxKSB7CisgICAgICAgICAgICAg
ICAgcmVtZW1iZXJDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgICAgIGlmIChjYyA9PSAnJicp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fY29udGVudE1vZGVsID09IFBDREFUQSB8fCBt
X2NvbnRlbnRNb2RlbCA9PSBSQ0RBVEEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fc3Rh
dGUgPSBFbnRpdHlEYXRhOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICctJykgewor
ICAgICAgICAgICAgICAgICAgICBpZiAoKG1fY29udGVudE1vZGVsID09IFJDREFUQSB8fCBtX2Nv
bnRlbnRNb2RlbCA9PSBDREFUQSkgJiYgIW1fZXNjYXBlKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAobGFzdENoYXJhY3RlcnNNYXRjaCgiPCEtLSIsIDQpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fZXNjYXBlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJzwnKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChtX2NvbnRlbnRNb2RlbCA9PSBQQ0RBVEEgfHwgKChtX2NvbnRlbnRNb2RlbCA9PSBSQ0RB
VEEgfHwgbV9jb250ZW50TW9kZWwgPT0gQ0RBVEEpICYmICFtX2VzY2FwZSkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBUYWdPcGVuOworICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKGNjID09ICc+JykgeworICAgICAgICAgICAgICAgICAgICAgaWYgKChtX2NvbnRlbnRNb2Rl
bCA9PSBSQ0RBVEEgfHwgbV9jb250ZW50TW9kZWwgPT0gQ0RBVEEpICYmIG1fZXNjYXBlKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RDaGFyYWN0ZXJzTWF0Y2goIi0tPiIsIDMp
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2VzY2FwZSA9IGZhbHNlOworICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbWl0
Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAgICAgICAgICBtX3NvdXJjZS5hZHZhbmNlKCk7CisgICAg
ICAgICAgICAgICAgaWYgKG1fc291cmNlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICBjYyA9ICptX3NvdXJjZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVudGl0eURhdGE6CisgICAgICAgICAg
ICAvLyBzaG91bGQgdHJ5IHRvIGNvbnN1bWUgdGhlIGVudGl0eSBidXQgd2Ugb25seSBjYXJlIGFi
b3V0IGVudGl0aWVzIGluIGF0dHJpYnV0ZXMKKyAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVGFnT3BlbjoKKyAgICAgICAgICAgIGlm
IChtX2NvbnRlbnRNb2RlbCA9PSBSQ0RBVEEgfHwgbV9jb250ZW50TW9kZWwgPT0gQ0RBVEEpIHsK
KyAgICAgICAgICAgICAgICBpZiAoY2MgPT0gJy8nKQorICAgICAgICAgICAgICAgICAgICBtX3N0
YXRlID0gQ2xvc2VUYWdPcGVuOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICBtX3N0YXRlID0gRGF0YTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChtX2NvbnRlbnRNb2RlbCA9
PSBQQ0RBVEEpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2MgPT0gJyEnKQorICAgICAgICAgICAg
ICAgICAgICBtX3N0YXRlID0gTWFya3VwRGVjbGFyYXRpb25PcGVuOworICAgICAgICAgICAgICAg
IGVsc2UgaWYgKGNjID09ICcvJykKKyAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENsb3Nl
VGFnT3BlbjsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1on
KSB7CisgICAgICAgICAgICAgICAgICAgIG1fdGFnTmFtZS5jbGVhcigpOworICAgICAgICAgICAg
ICAgICAgICBtX2NoYXJzZXQgPSBTdHJpbmcoKTsKKyAgICAgICAgICAgICAgICAgICAgbV90YWdO
YW1lLmFwcGVuZChjYyArIDB4MjApOworICAgICAgICAgICAgICAgICAgICBtX2Nsb3NlVGFnID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBUYWdOYW1lOworICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgeworICAgICAgICAgICAg
ICAgICAgICBtX3RhZ05hbWUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jaGFyc2V0
ID0gU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgICAgIG1fdGFnTmFtZS5hcHBlbmQoY2MpOwor
ICAgICAgICAgICAgICAgICAgICBtX2Nsb3NlVGFnID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
ICAgIG1fc3RhdGUgPSBUYWdOYW1lOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0g
Jz4nKSB7CisgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhOworICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoY2MgPT0gJz8nKSB7CisgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUg
PSBCb2d1c0NvbW1lbnQ7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgbV9zdGF0ZSA9IERhdGE7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIENsb3NlVGFnT3BlbjoKKyAgICAgICAgICAgIGlmIChtX2NvbnRlbnRNb2RlbCA9PSBS
Q0RBVEEgfHwgbV9jb250ZW50TW9kZWwgPT0gQ0RBVEEpIHsKKyAgICAgICAgICAgICAgICBpZiAo
IW1fbGFzdFN0YXJ0VGFnLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUg
PSBEYXRhOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgaWYgKG1fc291cmNlLmxlbmd0aCgpIDwgbV9sYXN0U3RhcnRUYWcu
bGVuZ3RoKCkgKyAxKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgVmVjdG9yPFVDaGFyPiB0bXBTdHJpbmc7CisgICAgICAgICAgICAgICAgVUNoYXIgdG1wQ2hh
ciA9IDA7CisgICAgICAgICAgICAgICAgYm9vbCBtYXRjaCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBuID0gMDsgbiA8IG1fbGFzdFN0YXJ0VGFnLmxlbmd0aCgpICsgMTsg
bisrKSB7CisgICAgICAgICAgICAgICAgICAgIHRtcENoYXIgPSBVbmljb2RlOjp0b0xvd2VyKCpt
X3NvdXJjZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChuIDwgbV9sYXN0U3RhcnRUYWcubGVu
Z3RoKCkgJiYgdG1wQ2hhciAhPSBtX2xhc3RTdGFydFRhZ1tuXSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1hdGNoID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHRtcFN0cmluZy5hcHBl
bmQodG1wQ2hhcik7CisgICAgICAgICAgICAgICAgICAgIG1fc291cmNlLmFkdmFuY2UoKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbV9zb3VyY2UucHJlcGVuZChTZWdtZW50
ZWRTdHJpbmcoU3RyaW5nKHRtcFN0cmluZy5kYXRhKCksIHRtcFN0cmluZy5zaXplKCkpKSk7Cisg
ICAgICAgICAgICAgICAgaWYgKCFtYXRjaCB8fCAoIWlzV2hpdGVzcGFjZSh0bXBDaGFyKSAmJiB0
bXBDaGFyICE9ICc+JyAmJiB0bXBDaGFyICE9ICcvJykpIHsKKyAgICAgICAgICAgICAgICAgICAg
bV9zdGF0ZSA9IERhdGE7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjYyA+PSAnQScgJiYgY2Mg
PD0gJ1onKSB7CisgICAgICAgICAgICAgICAgbV90YWdOYW1lLmNsZWFyKCk7CisgICAgICAgICAg
ICAgICAgbV9jaGFyc2V0ID0gU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgbV90YWdOYW1lLmFw
cGVuZChjYyArIDB4MjApOworICAgICAgICAgICAgICAgIG1fY2xvc2VUYWcgPSB0cnVlOworICAg
ICAgICAgICAgICAgIG1fc3RhdGUgPSBUYWdOYW1lOworICAgICAgICAgICAgfSBlbHNlIGlmIChj
YyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7CisgICAgICAgICAgICAgICAgbV90YWdOYW1lLmNsZWFy
KCk7CisgICAgICAgICAgICAgICAgbV9jaGFyc2V0ID0gU3RyaW5nKCk7CisgICAgICAgICAgICAg
ICAgbV90YWdOYW1lLmFwcGVuZChjYyk7CisgICAgICAgICAgICAgICAgbV9jbG9zZVRhZyA9IHRy
dWU7CisgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFRhZ05hbWU7CisgICAgICAgICAgICB9IGVs
c2UgaWYgKGNjID09ICc+JykgeworICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhOworICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJvZ3VzQ29tbWVudDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRhZ05hbWU6CisgICAgICAgICAgICB3
aGlsZSAoMSkgeworICAgICAgICAgICAgICAgIGlmIChpc1doaXRlc3BhY2UoY2MpKSB7CisgICAg
ICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCZWZvcmVBdHRyaWJ1dGVOYW1lOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYg
KGNjID09ICc+JykgeworICAgICAgICAgICAgICAgICAgICBlbWl0VGFnKCk7CisgICAgICAgICAg
ICAgICAgICAgIG1fc3RhdGUgPSBEYXRhOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGNjID09ICcvJykgeworICAgICAg
ICAgICAgICAgICAgICBtX3N0YXRlID0gQmVmb3JlQXR0cmlidXRlTmFtZTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChj
YyA+PSAnQScgJiYgY2MgPD0gJ1onKQorICAgICAgICAgICAgICAgICAgICBtX3RhZ05hbWUuYXBw
ZW5kKGNjICsgMHgyMCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICBtX3RhZ05hbWUuYXBwZW5kKGNjKTsKKyAgICAgICAgICAgICAgICBtX3NvdXJjZS5hZHZhbmNl
KCk7CisgICAgICAgICAgICAgICAgaWYgKG1fc291cmNlLmlzRW1wdHkoKSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIGNjID0gKm1fc291cmNlOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQmVmb3JlQXR0cmlidXRl
TmFtZToKKyAgICAgICAgICAgIGlmIChpc1doaXRlc3BhY2UoY2MpKQorICAgICAgICAgICAgICAg
IDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgeworICAgICAgICAgICAgICAgIGVt
aXRUYWcoKTsKKyAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YTsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgeworICAgICAgICAgICAgICAgIG1fYXR0
cmlidXRlTmFtZS5jbGVhcigpOworICAgICAgICAgICAgICAgIG1fYXR0cmlidXRlVmFsdWUuY2xl
YXIoKTsKKyAgICAgICAgICAgICAgICBtX2F0dHJpYnV0ZU5hbWUuYXBwZW5kKGNjICsgMHgyMCk7
CisgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEF0dHJpYnV0ZU5hbWU7CisgICAgICAgICAgICB9
IGVsc2UgaWYgKGNjID09ICcvJykKKyAgICAgICAgICAgICAgICA7CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICBtX2F0dHJpYnV0ZU5hbWUuY2xlYXIoKTsKKyAgICAgICAgICAg
ICAgICBtX2F0dHJpYnV0ZVZhbHVlLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgbV9hdHRyaWJ1
dGVOYW1lLmFwcGVuZChjYyk7CisgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEF0dHJpYnV0ZU5h
bWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBdHRy
aWJ1dGVOYW1lOgorICAgICAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgICAgICAgICBpZiAo
aXNXaGl0ZXNwYWNlKGNjKSkgeworICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gQWZ0ZXJB
dHRyaWJ1dGVOYW1lOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgaWYgKGNjID09ICc9JykgeworICAgICAgICAgICAgICAgICAg
ICBtX3N0YXRlID0gQmVmb3JlQXR0cmlidXRlVmFsdWU7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoY2MgPT0gJz4nKSB7
CisgICAgICAgICAgICAgICAgICAgIGVtaXRUYWcoKTsKKyAgICAgICAgICAgICAgICAgICAgbV9z
dGF0ZSA9IERhdGE7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0gCisgICAgICAgICAgICAgICAgaWYgKGNjID09ICcvJykgeworICAgICAgICAgICAgICAgICAg
ICBtX3N0YXRlID0gQmVmb3JlQXR0cmlidXRlTmFtZTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjYyA+PSAnQScgJiYg
Y2MgPD0gJ1onKQorICAgICAgICAgICAgICAgICAgICBtX2F0dHJpYnV0ZU5hbWUuYXBwZW5kKGNj
ICsgMHgyMCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBtX2F0
dHJpYnV0ZU5hbWUuYXBwZW5kKGNjKTsKKyAgICAgICAgICAgICAgICBtX3NvdXJjZS5hZHZhbmNl
KCk7CisgICAgICAgICAgICAgICAgaWYgKG1fc291cmNlLmlzRW1wdHkoKSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIGNjID0gKm1fc291cmNlOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQWZ0ZXJBdHRyaWJ1dGVO
YW1lOgorICAgICAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjYykpCisgICAgICAgICAgICAgICAg
OworICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz0nKQorICAgICAgICAgICAgICAgIG1fc3Rh
dGUgPSBCZWZvcmVBdHRyaWJ1dGVWYWx1ZTsgCisgICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAn
PicpIHsKKyAgICAgICAgICAgICAgICBlbWl0VGFnKCk7CisgICAgICAgICAgICAgICAgbV9zdGF0
ZSA9IERhdGE7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicp
IHsKKyAgICAgICAgICAgICAgICBtX2F0dHJpYnV0ZU5hbWUuY2xlYXIoKTsKKyAgICAgICAgICAg
ICAgICBtX2F0dHJpYnV0ZVZhbHVlLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgbV9hdHRyaWJ1
dGVOYW1lLmFwcGVuZChjYyArIDB4MjApOworICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBBdHRy
aWJ1dGVOYW1lOworICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnLycpCisgICAgICAgICAg
ICAgICAgbV9zdGF0ZSA9IEJlZm9yZUF0dHJpYnV0ZU5hbWU7CisgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICBtX2F0dHJpYnV0ZU5hbWUuY2xlYXIoKTsKKyAgICAgICAgICAgICAg
ICBtX2F0dHJpYnV0ZVZhbHVlLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgbV9hdHRyaWJ1dGVO
YW1lLmFwcGVuZChjYyk7CisgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEF0dHJpYnV0ZU5hbWU7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBCZWZvcmVB
dHRyaWJ1dGVWYWx1ZToKKyAgICAgICAgICAgIGlmIChpc1doaXRlc3BhY2UoY2MpKQorICAgICAg
ICAgICAgICAgIDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICciJykKKyAgICAgICAgICAg
ICAgICBtX3N0YXRlID0gQXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWQ7CisgICAgICAgICAgICBl
bHNlIGlmIChjYyA9PSAnJicpIHsKKyAgICAgICAgICAgICAgICBtX3N0YXRlID0gQXR0cmlidXRl
VmFsdWVVbnF1b3RlZDsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAoY2MgPT0gJ1wnJykKKyAgICAgICAgICAgICAgICBtX3N0YXRlID0gQXR0cmlidXRl
VmFsdWVTaW5nbGVRdW90ZWQ7CisgICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKKyAg
ICAgICAgICAgICAgICBlbWl0VGFnKCk7CisgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1fYXR0cmlidXRlVmFsdWUu
YXBwZW5kKGNjKTsKKyAgICAgICAgICAgICAgICBtX3N0YXRlID0gQXR0cmlidXRlVmFsdWVVbnF1
b3RlZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEF0
dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkOgorICAgICAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoY2MgPT0gJyInKSB7CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NB
dHRyaWJ1dGUoKTsKKyAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJlZm9yZUF0dHJpYnV0
ZU5hbWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBpZiAoY2MgPT0gJyYnKSB7CisgICAgICAgICAgICAgICAgICAgIG1fc3Rh
dGVCZWZvcmVFbnRpdHlJbkF0dHJpYnV0ZVZhbHVlID0gbV9zdGF0ZTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9zdGF0ZSA9IEVudGl0eUluQXR0cmlidXRlVmFsdWU7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICAgICAgbV9hdHRyaWJ1
dGVWYWx1ZS5hcHBlbmQoY2MpOworICAgICAgICAgICAgICAgIG1fc291cmNlLmFkdmFuY2UoKTsK
KyAgICAgICAgICAgICAgICBpZiAobV9zb3VyY2UuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgY2MgPSAqbV9zb3VyY2U7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBdHRyaWJ1dGVWYWx1ZVNpbmds
ZVF1b3RlZDoKKyAgICAgICAgICAgIHdoaWxlICgxKSB7CisgICAgICAgICAgICAgICAgaWYgKGNj
ID09ICdcJycpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0F0dHJpYnV0ZSgpOworICAg
ICAgICAgICAgICAgICAgICBtX3N0YXRlID0gQmVmb3JlQXR0cmlidXRlTmFtZTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlm
IChjYyA9PSAnJicpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZUJlZm9yZUVudGl0eUlu
QXR0cmlidXRlVmFsdWUgPSBtX3N0YXRlOworICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0g
RW50aXR5SW5BdHRyaWJ1dGVWYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfSAKKyAgICAgICAgICAgICAgICBtX2F0dHJpYnV0ZVZhbHVlLmFwcGVuZChj
Yyk7CisgICAgICAgICAgICAgICAgbV9zb3VyY2UuYWR2YW5jZSgpOworICAgICAgICAgICAgICAg
IGlmIChtX3NvdXJjZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICBjYyA9ICptX3NvdXJjZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWQ6CisgICAgICAgICAg
ICB3aGlsZSAoMSkgeworICAgICAgICAgICAgICAgIGlmIChpc1doaXRlc3BhY2UoY2MpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHByb2Nlc3NBdHRyaWJ1dGUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgbV9zdGF0ZSA9IEJlZm9yZUF0dHJpYnV0ZU5hbWU7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoY2MgPT0gJyYnKSB7
CisgICAgICAgICAgICAgICAgICAgIG1fc3RhdGVCZWZvcmVFbnRpdHlJbkF0dHJpYnV0ZVZhbHVl
ID0gbV9zdGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEVudGl0eUluQXR0cmli
dXRlVmFsdWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICAgICAgICAgIHBy
b2Nlc3NBdHRyaWJ1dGUoKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdFRhZygpOworICAgICAg
ICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1fYXR0cmlidXRlVmFsdWUuYXBw
ZW5kKGNjKTsKKyAgICAgICAgICAgICAgICBtX3NvdXJjZS5hZHZhbmNlKCk7CisgICAgICAgICAg
ICAgICAgaWYgKG1fc291cmNlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgIGNjID0gKm1fc291cmNlOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRW50aXR5SW5BdHRyaWJ1dGVWYWx1ZTogCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgYm9vbCBub3RFbm91Z2hDaGFyYWN0ZXJzID0gZmFs
c2U7IAorICAgICAgICAgICAgICAgIHVuc2lnbmVkIGVudGl0eSA9IGNvbnN1bWVFbnRpdHkobV9z
b3VyY2UsIG5vdEVub3VnaENoYXJhY3RlcnMpOworICAgICAgICAgICAgICAgIGlmIChub3RFbm91
Z2hDaGFyYWN0ZXJzKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgaWYgKGVudGl0eSA+IDB4RkZGRikgeworICAgICAgICAgICAgICAgICAgICBtX2F0dHJpYnV0
ZVZhbHVlLmFwcGVuZChVMTZfTEVBRChlbnRpdHkpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9h
dHRyaWJ1dGVWYWx1ZS5hcHBlbmQoVTE2X1RSQUlMKGVudGl0eSkpOworICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAoZW50aXR5KQorICAgICAgICAgICAgICAgICAgICBtX2F0dHJpYnV0ZVZhbHVl
LmFwcGVuZChlbnRpdHkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgbV9hdHRyaWJ1dGVWYWx1ZS5hcHBlbmQoJyYnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIG1fc3RhdGUgPSBtX3N0YXRlQmVmb3JlRW50aXR5SW5BdHRyaWJ1dGVWYWx1ZTsKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBjYXNlIEJvZ3VzQ29tbWVudDoKKyAgICAgICAgICAg
IHdoaWxlICgxKSB7CisgICAgICAgICAgICAgICAgaWYgKGNjID09ICc+JykgeworICAgICAgICAg
ICAgICAgICAgICBtX3N0YXRlID0gRGF0YTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1fc291cmNlLmFkdmFuY2UoKTsKKyAg
ICAgICAgICAgICAgICBpZiAobV9zb3VyY2UuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgY2MgPSAqbV9zb3VyY2U7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNYXJrdXBEZWNsYXJhdGlvbk9wZW46
IHsKKyAgICAgICAgICAgIGlmIChjYyA9PSAnLScpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9z
b3VyY2UubGVuZ3RoKCkgPCAyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgICAgbV9zb3VyY2UuYWR2YW5jZSgpOworICAgICAgICAgICAgICAgIGNjID0gKm1fc291
cmNlOworICAgICAgICAgICAgICAgIGlmIChjYyA9PSAnLScpCisgICAgICAgICAgICAgICAgICAg
IG1fc3RhdGUgPSBDb21tZW50U3RhcnQ7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIG1fc3RhdGUgPSBCb2d1c0NvbW1lbnQ7CisgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIElmIHdlIGNhcmVk
IGFib3V0IHRoZSBET0NUWVBFIHdlIHdvdWxkIHRlc3QgdG8gZW50ZXIgdGhvc2Ugc3RhdGVzIGhl
cmUKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJvZ3Vz
Q29tbWVudDsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgQ29tbWVudFN0YXJ0OgorICAg
ICAgICAgICAgaWYgKGNjID09ICctJykKKyAgICAgICAgICAgICAgICBtX3N0YXRlID0gQ29tbWVu
dFN0YXJ0RGFzaDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKKyAgICAgICAgICAg
ICAgICBtX3N0YXRlID0gRGF0YTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBt
X3N0YXRlID0gQ29tbWVudDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENvbW1l
bnRTdGFydERhc2g6CisgICAgICAgICAgICBpZiAoY2MgPT0gJy0nKQorICAgICAgICAgICAgICAg
IG1fc3RhdGUgPSBDb21tZW50RW5kOworICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQor
ICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIG1fc3RhdGUgPSBDb21tZW50OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgQ29tbWVudDoKKyAgICAgICAgICAgIHdoaWxlICgxKSB7CisgICAgICAgICAgICAgICAg
aWYgKGNjID09ICctJykgeworICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gQ29tbWVudEVu
ZERhc2g7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBtX3NvdXJjZS5hZHZhbmNlKCk7CisgICAgICAgICAgICAgICAgaWYgKG1f
c291cmNlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICAgIGNjID0gKm1fc291cmNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgQ29tbWVudEVuZERhc2g6CisgICAgICAgICAgICBpZiAoY2MgPT0gJy0n
KQorICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBDb21tZW50RW5kOworICAgICAgICAgICAgZWxz
ZSAKKyAgICAgICAgICAgICAgICBtX3N0YXRlID0gQ29tbWVudDsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIENvbW1lbnRFbmQ6CisgICAgICAgICAgICBpZiAoY2MgPT0gJz4nKQor
ICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhOworICAgICAgICAgICAgZWxzZSBpZiAoY2Mg
PT0gJy0nKQorICAgICAgICAgICAgICAgIDsKKyAgICAgICAgICAgIGVsc2UgCisgICAgICAgICAg
ICAgICAgbV9zdGF0ZSA9IENvbW1lbnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBtX3NvdXJjZS5hZHZhbmNlKCk7CisgICAgfQorfQorICAgIAordm9pZCBQcmVsb2Fk
U2Nhbm5lcjo6cHJvY2Vzc0F0dHJpYnV0ZSgpCit7CisgICAgQXRvbWljU3RyaW5nIHRhZyA9IEF0
b21pY1N0cmluZyhtX3RhZ05hbWUuZGF0YSgpLCBtX3RhZ05hbWUuc2l6ZSgpKTsKKyAgICBBdG9t
aWNTdHJpbmcgYXR0cmlidXRlID0gQXRvbWljU3RyaW5nKG1fYXR0cmlidXRlTmFtZS5kYXRhKCks
IG1fYXR0cmlidXRlTmFtZS5zaXplKCkpOworICAgIAorICAgIFN0cmluZyB2YWx1ZShtX2F0dHJp
YnV0ZVZhbHVlLmRhdGEoKSwgbV9hdHRyaWJ1dGVWYWx1ZS5zaXplKCkpOworICAgIGlmICh0YWcg
PT0gc2NyaXB0VGFnIHx8IHRhZyA9PSBpbWdUYWcpIHsKKyAgICAgICAgaWYgKGF0dHJpYnV0ZSA9
PSBzcmNBdHRyICYmIG1fdXJsVG9Mb2FkLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1fdXJsVG9M
b2FkID0gZGVwcmVjYXRlZFBhcnNlVVJMKHZhbHVlKTsKKyAgICAgICAgZWxzZSBpZiAoYXR0cmli
dXRlID09IGNoYXJzZXRBdHRyKQorICAgICAgICAgICAgbV9jaGFyc2V0ID0gdmFsdWU7CisgICAg
fSBlbHNlIGlmICh0YWcgPT0gbGlua1RhZykgeworICAgICAgICBpZiAoYXR0cmlidXRlID09IGhy
ZWZBdHRyICYmIG1fdXJsVG9Mb2FkLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1fdXJsVG9Mb2Fk
ID0gZGVwcmVjYXRlZFBhcnNlVVJMKHZhbHVlKTsKKyAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRl
ID09IHJlbEF0dHIpIHsKKyAgICAgICAgICAgIEhUTUxMaW5rRWxlbWVudDo6UmVsQXR0cmlidXRl
IHJlbDsKKyAgICAgICAgICAgIEhUTUxMaW5rRWxlbWVudDo6dG9rZW5pemVSZWxBdHRyaWJ1dGUo
dmFsdWUsIHJlbCk7CisgICAgICAgICAgICBtX2xpbmtJc1N0eWxlU2hlZXQgPSByZWwubV9pc1N0
eWxlU2hlZXQgJiYgIXJlbC5tX2lzQWx0ZXJuYXRlICYmICFyZWwubV9pc0ljb24gJiYgIXJlbC5t
X2lzRE5TUHJlZmV0Y2g7CisgICAgICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlID09IGNoYXJzZXRB
dHRyKQorICAgICAgICAgICAgbV9jaGFyc2V0ID0gdmFsdWU7CisgICAgfQorfQorICAgIAoraW5s
aW5lIHZvaWQgUHJlbG9hZFNjYW5uZXI6OmVtaXRDaGFyYWN0ZXIoVUNoYXIgYykKK3sKKyAgICBp
ZiAobV9jb250ZW50TW9kZWwgPT0gQ0RBVEEgJiYgbV9sYXN0U3RhcnRUYWcgPT0gc3R5bGVUYWcp
IAorICAgICAgICB0b2tlbml6ZUNTUyhjKTsKK30KKyAgICAKK2lubGluZSB2b2lkIFByZWxvYWRT
Y2FubmVyOjp0b2tlbml6ZUNTUyhVQ2hhciBjKQoreyAgICAKKyAgICAvLyBXZSBhcmUganVzdCBp
bnRlcmVzdGVkIGluIEBpbXBvcnQgcnVsZXMsIG5vIG5lZWQgZm9yIHJlYWwgdG9rZW5pemF0aW9u
IGhlcmUKKyAgICAvLyBTZWFyY2hpbmcgZm9yIG90aGVyIHR5cGVzIG9mIHJlc291cmNlcyBpcyBw
cm9iYWJseSBsb3cgcGF5b2ZmCisgICAgc3dpdGNoIChtX2Nzc1N0YXRlKSB7CisgICAgY2FzZSBD
U1NJbml0aWFsOgorICAgICAgICBpZiAoYyA9PSAnQCcpCisgICAgICAgICAgICBtX2Nzc1N0YXRl
ID0gQ1NTUnVsZVN0YXJ0OworICAgICAgICBlbHNlIGlmIChjID09ICcvJykKKyAgICAgICAgICAg
IG1fY3NzU3RhdGUgPSBDU1NNYXliZUNvbW1lbnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q1NTTWF5YmVDb21tZW50OgorICAgICAgICBpZiAoYyA9PSAnKicpCisgICAgICAgICAgICBtX2Nz
c1N0YXRlID0gQ1NTQ29tbWVudDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9jc3NTdGF0
ZSA9IENTU0luaXRpYWw7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTQ29tbWVudDoKKyAg
ICAgICAgaWYgKGMgPT0gJyonKQorICAgICAgICAgICAgbV9jc3NTdGF0ZSA9IENTU01heWJlQ29t
bWVudEVuZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NNYXliZUNvbW1lbnRFbmQ6Cisg
ICAgICAgIGlmIChjID09ICcvJykKKyAgICAgICAgICAgIG1fY3NzU3RhdGUgPSBDU1NJbml0aWFs
OworICAgICAgICBlbHNlIGlmIChjID09ICcqJykKKyAgICAgICAgICAgIDsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbV9jc3NTdGF0ZSA9IENTU0NvbW1lbnQ7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQ1NTUnVsZVN0YXJ0OgorICAgICAgICBpZiAoKGMgPj0gJ0EnICYmIGMgPD0gJ1on
KSB8fCAoYyA+PSAnYScgJiYgYyA8PSAneicpKSB7CisgICAgICAgICAgICBtX2Nzc1J1bGUuY2xl
YXIoKTsKKyAgICAgICAgICAgIG1fY3NzUnVsZVZhbHVlLmNsZWFyKCk7CisgICAgICAgICAgICBt
X2Nzc1J1bGUuYXBwZW5kKGMpOworICAgICAgICAgICAgbV9jc3NTdGF0ZSA9IENTU1J1bGU7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9jc3NTdGF0ZSA9IENTU0luaXRpYWw7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUnVsZToKKyAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShj
KSkKKyAgICAgICAgICAgIG1fY3NzU3RhdGUgPSBDU1NBZnRlclJ1bGU7CisgICAgICAgIGVsc2Ug
aWYgKGMgPT0gJzsnKQorICAgICAgICAgICAgbV9jc3NTdGF0ZSA9IENTU0luaXRpYWw7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG1fY3NzUnVsZS5hcHBlbmQoYyk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ1NTQWZ0ZXJSdWxlOgorICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGMpKQor
ICAgICAgICAgICAgOworICAgICAgICBlbHNlIGlmIChjID09ICc7JykKKyAgICAgICAgICAgIG1f
Y3NzU3RhdGUgPSBDU1NJbml0aWFsOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1fY3Nz
U3RhdGUgPSBDU1NSdWxlVmFsdWU7CisgICAgICAgICAgICBtX2Nzc1J1bGVWYWx1ZS5hcHBlbmQo
Yyk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NSdWxlVmFsdWU6Cisg
ICAgICAgIGlmIChpc1doaXRlc3BhY2UoYykpCisgICAgICAgICAgICBtX2Nzc1N0YXRlID0gQ1NT
QWZ0ZXJSdWxlVmFsdWU7CisgICAgICAgIGVsc2UgaWYgKGMgPT0gJzsnKSB7CisgICAgICAgICAg
ICBlbWl0Q1NTUnVsZSgpOworICAgICAgICAgICAgbV9jc3NTdGF0ZSA9IENTU0luaXRpYWw7Cisg
ICAgICAgIH0gZWxzZSAKKyAgICAgICAgICAgIG1fY3NzUnVsZVZhbHVlLmFwcGVuZChjKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NBZnRlclJ1bGVWYWx1ZToKKyAgICAgICAgaWYgKGlz
V2hpdGVzcGFjZShjKSkKKyAgICAgICAgICAgIDsKKyAgICAgICAgZWxzZSBpZiAoYyA9PSAnOycp
IHsKKyAgICAgICAgICAgIGVtaXRDU1NSdWxlKCk7CisgICAgICAgICAgICBtX2Nzc1N0YXRlID0g
Q1NTSW5pdGlhbDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEZJWE1FIG1lZGlh
IHJ1bGVzCisgICAgICAgICAgICAgbV9jc3NTdGF0ZSA9IENTU0luaXRpYWw7CisgICAgICAgIH0K
KyAgICAgICAgYnJlYWs7CisgICAgfQorfQorICAgIAordm9pZCBQcmVsb2FkU2Nhbm5lcjo6ZW1p
dFRhZygpCit7CisgICAgaWYgKG1fY2xvc2VUYWcpIHsKKyAgICAgICAgbV9jb250ZW50TW9kZWwg
PSBQQ0RBVEE7CisgICAgICAgIG1fY3NzU3RhdGUgPSBDU1NJbml0aWFsOworICAgICAgICBjbGVh
ckxhc3RDaGFyYWN0ZXJzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgQXRv
bWljU3RyaW5nIHRhZyhtX3RhZ05hbWUuZGF0YSgpLCBtX3RhZ05hbWUuc2l6ZSgpKTsKKyAgICBt
X2xhc3RTdGFydFRhZyA9IHRhZzsKKyAgICAKKyAgICBpZiAodGFnID09IHRleHRhcmVhVGFnIHx8
IHRhZyA9PSB0aXRsZVRhZykKKyAgICAgICAgbV9jb250ZW50TW9kZWwgPSBSQ0RBVEE7CisgICAg
ZWxzZSBpZiAodGFnID09IHN0eWxlVGFnIHx8IHRhZyA9PSB4bXBUYWcgfHwgdGFnID09IHNjcmlw
dFRhZyB8fCB0YWcgPT0gaWZyYW1lVGFnIHx8IHRhZyA9PSBub2VtYmVkVGFnIHx8IHRhZyA9PSBu
b2ZyYW1lc1RhZykKKyAgICAgICAgbV9jb250ZW50TW9kZWwgPSBDREFUQTsKKyAgICBlbHNlIGlm
ICh0YWcgPT0gbm9zY3JpcHRUYWcpCisgICAgICAgIC8vIHdlIHdvdWxkbid0IGJlIGhlcmUgaWYg
c2NyaXB0cyB3ZXJlIGRpc2FibGVkCisgICAgICAgIG1fY29udGVudE1vZGVsID0gQ0RBVEE7Cisg
ICAgZWxzZSBpZiAodGFnID09IHBsYWludGV4dFRhZykKKyAgICAgICAgbV9jb250ZW50TW9kZWwg
PSBQTEFJTlRFWFQ7CisgICAgZWxzZQorICAgICAgICBtX2NvbnRlbnRNb2RlbCA9IFBDREFUQTsK
KyAgICAKKyAgICBpZiAodGFnID09IGJvZHlUYWcpCisgICAgICAgIG1fYm9keVNlZW4gPSB0cnVl
OworICAgIAorICAgIGlmIChtX3VybFRvTG9hZC5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9saW5r
SXNTdHlsZVNoZWV0ID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAg
aWYgKHRhZyA9PSBzY3JpcHRUYWcpCisgICAgICAgIG1fZG9jdW1lbnQtPmRvY0xvYWRlcigpLT5w
cmVsb2FkKENhY2hlZFJlc291cmNlOjpTY3JpcHQsIG1fdXJsVG9Mb2FkLCBtX2NoYXJzZXQsIHNj
YW5uaW5nQm9keSgpKTsKKyAgICBlbHNlIGlmICh0YWcgPT0gaW1nVGFnKSAKKyAgICAgICAgbV9k
b2N1bWVudC0+ZG9jTG9hZGVyKCktPnByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3Vy
Y2UsIG1fdXJsVG9Mb2FkLCBTdHJpbmcoKSwgc2Nhbm5pbmdCb2R5KCkpOworICAgIGVsc2UgaWYg
KHRhZyA9PSBsaW5rVGFnICYmIG1fbGlua0lzU3R5bGVTaGVldCkgCisgICAgICAgIG1fZG9jdW1l
bnQtPmRvY0xvYWRlcigpLT5wcmVsb2FkKENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0LCBt
X3VybFRvTG9hZCwgbV9jaGFyc2V0LCBzY2FubmluZ0JvZHkoKSk7CisKKyAgICBtX3VybFRvTG9h
ZCA9IFN0cmluZygpOworICAgIG1fY2hhcnNldCA9IFN0cmluZygpOworICAgIG1fbGlua0lzU3R5
bGVTaGVldCA9IGZhbHNlOworfQorICAgIAordm9pZCBQcmVsb2FkU2Nhbm5lcjo6ZW1pdENTU1J1
bGUoKQoreworICAgIFN0cmluZyBydWxlKG1fY3NzUnVsZS5kYXRhKCksIG1fY3NzUnVsZS5zaXpl
KCkpOworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShydWxlLCAiaW1wb3J0IikgJiYgIW1fY3Nz
UnVsZVZhbHVlLmlzRW1wdHkoKSkgeworICAgICAgICBTdHJpbmcgdmFsdWUobV9jc3NSdWxlVmFs
dWUuZGF0YSgpLCBtX2Nzc1J1bGVWYWx1ZS5zaXplKCkpOworICAgICAgICBTdHJpbmcgdXJsID0g
ZGVwcmVjYXRlZFBhcnNlVVJMKHZhbHVlKTsKKyAgICAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgbV9kb2N1bWVudC0+ZG9jTG9hZGVyKCktPnByZWxvYWQoQ2FjaGVkUmVzb3Vy
Y2U6OkNTU1N0eWxlU2hlZXQsIHVybCwgU3RyaW5nKCksIHNjYW5uaW5nQm9keSgpKTsKKyAgICB9
CisgICAgbV9jc3NSdWxlLmNsZWFyKCk7CisgICAgbV9jc3NSdWxlVmFsdWUuY2xlYXIoKTsKK30K
KyAgICAgICAgICAgICAgICAKK30KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MNVByZWxvYWRTY2Fu
bmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTDVQcmVsb2FkU2Nhbm5lci5j
cHAJKHJldmlzaW9uIDYxMTA3KQorKysgV2ViQ29yZS9odG1sL0hUTUw1UHJlbG9hZFNjYW5uZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgVG9yY2ggTW9iaWxlLCBJbmMuIGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLworICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDgzMiArMjYsOTEgQEAKICAqLwogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUHJlbG9hZFNjYW5uZXIuaCIKKyNpbmNsdWRlICJI
VE1MNVByZWxvYWRTY2FubmVyLmgiCiAKLSNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKLSNpbmNs
dWRlICJDYWNoZWRDU1NTdHlsZVNoZWV0LmgiCi0jaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKLSNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgotI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50
LmgiCi0jaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiQ1NTSGVscGVyLmgiCiAj
aW5jbHVkZSAiRG9jTG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJG
cmFtZS5oIgotI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiSFRNTDVUcmVlQnVp
bGRlci5oIgogI2luY2x1ZGUgIkhUTUxMaW5rRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvQ3VycmVu
dFRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+Ci0KLS8vIFVzZSBfX0dO
VUNfXyBpbnN0ZWFkIG9mIFBMQVRGT1JNKEdDQykgdG8gc3RheSBjb25zaXN0ZW50IHdpdGggdGhl
IGdwZXJmIGdlbmVyYXRlZCBjIGZpbGUKLSNpZmRlZiBfX0dOVUNfXwotLy8gVGhlIG1haW4gdG9r
ZW5pemVyIGluY2x1ZGVzIHRoaXMgdG9vIHNvIHdlIGFyZSBnZXR0aW5nIHR3byBjb3BpZXMgb2Yg
dGhlIGRhdGEuIEhvd2V2ZXIsIHRoaXMgd2F5IHRoZSBjb2RlIGdldHMgaW5saW5lZC4KLSNpbmNs
dWRlICJIVE1MRW50aXR5TmFtZXMuY3BwIgotI2Vsc2UKLS8vIE5vdCBpbmxpbmVkIGZvciBub24t
R0NDIGNvbXBpbGVycwotc3RydWN0IEVudGl0eSB7Ci0gICAgY29uc3QgY2hhciogbmFtZTsKLSAg
ICBpbnQgY29kZTsKLX07Ci1jb25zdCBzdHJ1Y3QgRW50aXR5KiBmaW5kRW50aXR5KHJlZ2lzdGVy
IGNvbnN0IGNoYXIqIHN0ciwgcmVnaXN0ZXIgdW5zaWduZWQgaW50IGxlbik7Ci0jZW5kaWYKLQot
I2RlZmluZSBQUkVMT0FEX0RFQlVHIDAKLQotdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewotICAgIAorCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwotICAgIAot
UHJlbG9hZFNjYW5uZXI6OlByZWxvYWRTY2FubmVyKERvY3VtZW50KiBkb2MpCi0gICAgOiBtX2lu
UHJvZ3Jlc3MoZmFsc2UpCi0gICAgLCBtX3RpbWVVc2VkKDApCi0gICAgLCBtX2JvZHlTZWVuKGZh
bHNlKQotICAgICwgbV9kb2N1bWVudChkb2MpCi17Ci0jaWYgUFJFTE9BRF9ERUJVRwotICAgIHBy
aW50ZigiQ1JFQVRJTkcgUFJFTE9BRCBTQ0FOTkVSIEZPUiAlc1xuIiwgbV9kb2N1bWVudC0+dXJs
KCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSNlbmRpZgotfQotICAgIAotUHJlbG9hZFNj
YW5uZXI6On5QcmVsb2FkU2Nhbm5lcigpCi17Ci0jaWYgUFJFTE9BRF9ERUJVRwotICAgIHByaW50
ZigiREVMRVRJTkcgUFJFTE9BRCBTQ0FOTkVSIEZPUiAlc1xuIiwgbV9kb2N1bWVudC0+dXJsKCku
c3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICBwcmludGYoIlRPVEFMIFRJTUUgVVNFRCAl
LjRmc1xuIiwgbV90aW1lVXNlZCk7Ci0jZW5kaWYKLX0KLSAgICAKLXZvaWQgUHJlbG9hZFNjYW5u
ZXI6OmJlZ2luKCkgCi17IAotICAgIEFTU0VSVCghbV9pblByb2dyZXNzKTsgCi0gICAgcmVzZXQo
KTsgCi0gICAgbV9pblByb2dyZXNzID0gdHJ1ZTsgCi19Ci0gICAgCi12b2lkIFByZWxvYWRTY2Fu
bmVyOjplbmQoKSAKLXsgCi0gICAgQVNTRVJUKG1faW5Qcm9ncmVzcyk7IAotICAgIG1faW5Qcm9n
cmVzcyA9IGZhbHNlOyAKLX0KIAotdm9pZCBQcmVsb2FkU2Nhbm5lcjo6cmVzZXQoKQotewotICAg
IG1fc291cmNlLmNsZWFyKCk7Ci0gICAgCi0gICAgbV9zdGF0ZSA9IERhdGE7Ci0gICAgbV9lc2Nh
cGUgPSBmYWxzZTsKLSAgICBtX2NvbnRlbnRNb2RlbCA9IFBDREFUQTsKLSAgICBtX2NvbW1lbnRQ
b3MgPSAwOwotCi0gICAgbV9jbG9zZVRhZyA9IGZhbHNlOwotICAgIG1fdGFnTmFtZS5jbGVhcigp
OwotICAgIG1fYXR0cmlidXRlTmFtZS5jbGVhcigpOwotICAgIG1fYXR0cmlidXRlVmFsdWUuY2xl
YXIoKTsKLSAgICBtX2xhc3RTdGFydFRhZyA9IEF0b21pY1N0cmluZygpOwotICAgIAotICAgIG1f
dXJsVG9Mb2FkID0gU3RyaW5nKCk7Ci0gICAgbV9jaGFyc2V0ID0gU3RyaW5nKCk7Ci0gICAgbV9s
aW5rSXNTdHlsZVNoZWV0ID0gZmFsc2U7Ci0gICAgbV9sYXN0Q2hhcmFjdGVySW5kZXggPSAwOwot
ICAgIGNsZWFyTGFzdENoYXJhY3RlcnMoKTsKLSAgICAKLSAgICBtX2Nzc1N0YXRlID0gQ1NTSW5p
dGlhbDsKLSAgICBtX2Nzc1J1bGUuY2xlYXIoKTsKLSAgICBtX2Nzc1J1bGVWYWx1ZS5jbGVhcigp
OwotfQotICAgIAotYm9vbCBQcmVsb2FkU2Nhbm5lcjo6c2Nhbm5pbmdCb2R5KCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9kb2N1bWVudC0+Ym9keSgpIHx8IG1fYm9keVNlZW47Ci19Ci0gICAgCi12
b2lkIFByZWxvYWRTY2FubmVyOjp3cml0ZShjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkK
LXsKLSNpZiBQUkVMT0FEX0RFQlVHCi0gICAgZG91YmxlIHN0YXJ0VGltZSA9IGN1cnJlbnRUaW1l
KCk7Ci0jZW5kaWYKLSAgICB0b2tlbml6ZShzb3VyY2UpOwotI2lmIFBSRUxPQURfREVCVUcKLSAg
ICBtX3RpbWVVc2VkICs9IGN1cnJlbnRUaW1lKCkgLSBzdGFydFRpbWU7Ci0jZW5kaWYKLX0KLSAg
ICAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1doaXRlc3BhY2UoVUNoYXIgYykKLXsKLSAgICByZXR1
cm4gYyA9PSAnICcgfHwgYyA9PSAnXG4nIHx8IGMgPT0gJ1xyJyB8fCBjID09ICdcdCc7Ci19Ci0g
ICAgCi1pbmxpbmUgdm9pZCBQcmVsb2FkU2Nhbm5lcjo6Y2xlYXJMYXN0Q2hhcmFjdGVycygpCi17
Ci0gICAgbWVtc2V0KG1fbGFzdENoYXJhY3RlcnMsIDAsIGxhc3RDaGFyYWN0ZXJzQnVmZmVyU2l6
ZSAqIHNpemVvZihVQ2hhcikpOwotfQotICAgIAotaW5saW5lIHZvaWQgUHJlbG9hZFNjYW5uZXI6
OnJlbWVtYmVyQ2hhcmFjdGVyKFVDaGFyIGMpCi17Ci0gICAgbV9sYXN0Q2hhcmFjdGVySW5kZXgg
PSAobV9sYXN0Q2hhcmFjdGVySW5kZXggKyAxKSAlIGxhc3RDaGFyYWN0ZXJzQnVmZmVyU2l6ZTsK
LSAgICBtX2xhc3RDaGFyYWN0ZXJzW21fbGFzdENoYXJhY3RlckluZGV4XSA9IGM7Ci19Ci0gICAg
Ci1pbmxpbmUgYm9vbCBQcmVsb2FkU2Nhbm5lcjo6bGFzdENoYXJhY3RlcnNNYXRjaChjb25zdCBj
aGFyKiBjaGFycywgdW5zaWduZWQgY291bnQpIGNvbnN0Ci17Ci0gICAgdW5zaWduZWQgcG9zID0g
bV9sYXN0Q2hhcmFjdGVySW5kZXg7Ci0gICAgd2hpbGUgKGNvdW50KSB7Ci0gICAgICAgIGlmIChj
aGFyc1tjb3VudCAtIDFdICE9IG1fbGFzdENoYXJhY3RlcnNbcG9zXSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgLS1jb3VudDsKLSAgICAgICAgaWYgKCFwb3MpCi0gICAgICAg
ICAgICBwb3MgPSBsYXN0Q2hhcmFjdGVyc0J1ZmZlclNpemU7Ci0gICAgICAgIC0tcG9zOwotICAg
IH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLSAgICAKLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbGVn
YWxFbnRpdHlGb3IodW5zaWduZWQgdmFsdWUpCi17Ci0gICAgLy8gRklYTUUgVGhlcmUgaXMgYSB0
YWJsZSBmb3IgbW9yZSBleGNlcHRpb25zIGluIHRoZSBIVE1MNSBzcGVjaWZpY2F0aW9uLgotICAg
IGlmICh2YWx1ZSA9PSAwIHx8IHZhbHVlID4gMHgxMEZGRkYgfHwgKHZhbHVlID49IDB4RDgwMCAm
JiB2YWx1ZSA8PSAweERGRkYpKQotICAgICAgICByZXR1cm4gMHhGRkZEOwotICAgIHJldHVybiB2
YWx1ZTsKLX0KLSAgICAKLXVuc2lnbmVkIFByZWxvYWRTY2FubmVyOjpjb25zdW1lRW50aXR5KFNl
Z21lbnRlZFN0cmluZyYgc291cmNlLCBib29sJiBub3RFbm91Z2hDaGFyYWN0ZXJzKQorSFRNTDVQ
cmVsb2FkU2Nhbm5lcjo6SFRNTDVQcmVsb2FkU2Nhbm5lcihEb2N1bWVudCogZG9jdW1lbnQpCisg
ICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgICwgbV9ib2R5U2VlbihmYWxzZSkKIHsKLSAg
ICBlbnVtIEVudGl0eVN0YXRlIHsKLSAgICAgICAgSW5pdGlhbCwKLSAgICAgICAgTnVtYmVyVHlw
ZSwKLSAgICAgICAgTWF5YmVIZXgsCi0gICAgICAgIEhleCwKLSAgICAgICAgRGVjaW1hbCwKLSAg
ICAgICAgTmFtZWQKLSAgICB9OwotICAgIEVudGl0eVN0YXRlIGVudGl0eVN0YXRlID0gSW5pdGlh
bDsKLSAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIFZlY3RvcjxVQ2hhciwgMTA+IHNlZW5D
aGFyczsKLSAgICBWZWN0b3I8Y2hhciwgMTA+IGVudGl0eU5hbWU7Ci0gICAgCi0gICAgd2hpbGUg
KCFzb3VyY2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFVDaGFyIGNjID0gKnNvdXJjZTsKLSAgICAg
ICAgc2VlbkNoYXJzLmFwcGVuZChjYyk7Ci0gICAgICAgIHN3aXRjaCAoZW50aXR5U3RhdGUpIHsK
LSAgICAgICAgY2FzZSBJbml0aWFsOgotICAgICAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjYykg
fHwgY2MgPT0gJzwnIHx8IGNjID09ICcmJykKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAg
ICAgICAgICAgIGVsc2UgaWYgKGNjID09ICcjJykgCi0gICAgICAgICAgICAgICAgZW50aXR5U3Rh
dGUgPSBOdW1iZXJUeXBlOwotICAgICAgICAgICAgZWxzZSBpZiAoKGNjID49ICdhJyAmJiBjYyA8
PSAneicpIHx8IChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSkgewotICAgICAgICAgICAgICAgIGVu
dGl0eU5hbWUuYXBwZW5kKGNjKTsKLSAgICAgICAgICAgICAgICBlbnRpdHlTdGF0ZSA9IE5hbWVk
OwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOdW1iZXJUeXBlOgotICAgICAgICAgICAgaWYgKGNj
ID09ICd4JyB8fCBjYyA9PSAnWCcpCi0gICAgICAgICAgICAgICAgZW50aXR5U3RhdGUgPSBNYXli
ZUhleDsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID49ICcwJyAmJiBjYyA8PSAnOScpIHsKLSAg
ICAgICAgICAgICAgICBlbnRpdHlTdGF0ZSA9IERlY2ltYWw7Ci0gICAgICAgICAgICAgICAgcmVz
dWx0ID0gY2MgLSAnMCc7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHNv
dXJjZS5wdXNoKCcjJyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNYXliZUhleDoKLSAgICAgICAgICAg
IGlmIChjYyA+PSAnMCcgJiYgY2MgPD0gJzknKQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNj
IC0gJzAnOwotICAgICAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICdmJykKLSAg
ICAgICAgICAgICAgICByZXN1bHQgPSAxMCArIGNjIC0gJ2EnOwotICAgICAgICAgICAgZWxzZSBp
ZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdGJykKLSAgICAgICAgICAgICAgICByZXN1bHQgPSAxMCAr
IGNjIC0gJ0EnOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgc291cmNlLnB1
c2goJyMnKTsKLSAgICAgICAgICAgICAgICBzb3VyY2UucHVzaChzZWVuQ2hhcnNbMV0pOwotICAg
ICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZW50aXR5
U3RhdGUgPSBIZXg7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBIZXg6Ci0gICAg
ICAgICAgICBpZiAoY2MgPj0gJzAnICYmIGNjIDw9ICc5JykKLSAgICAgICAgICAgICAgICByZXN1
bHQgPSByZXN1bHQgKiAxNiArIGNjIC0gJzAnOwotICAgICAgICAgICAgZWxzZSBpZiAoY2MgPj0g
J2EnICYmIGNjIDw9ICdmJykKLSAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKiAxNiAr
IDEwICsgY2MgLSAnYSc7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0g
J0YnKQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDE2ICsgMTAgKyBjYyAtICdB
JzsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc7JykgewotICAgICAgICAgICAgICAgIHNv
dXJjZS5hZHZhbmNlKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxlZ2FsRW50aXR5Rm9yKHJl
c3VsdCk7Ci0gICAgICAgICAgICB9IGVsc2UgCi0gICAgICAgICAgICAgICAgcmV0dXJuIGxlZ2Fs
RW50aXR5Rm9yKHJlc3VsdCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEZWNp
bWFsOgotICAgICAgICAgICAgaWYgKGNjID49ICcwJyAmJiBjYyA8PSAnOScpCi0gICAgICAgICAg
ICAgICAgcmVzdWx0ID0gcmVzdWx0ICogMTAgKyBjYyAtICcwJzsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKGNjID09ICc7JykgewotICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlKCk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGxlZ2FsRW50aXR5Rm9yKHJlc3VsdCk7Ci0gICAgICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gbGVnYWxFbnRpdHlGb3IocmVzdWx0KTsKLSAg
ICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgIAotICAgICAgICBjYXNlIE5hbWVkOgotICAg
ICAgICAgICAgLy8gVGhpcyBpcyB0aGUgYXR0cmlidXRlIG9ubHkgdmVyc2lvbiwgZ2VuZXJpYyB2
ZXJzaW9uIG1hdGNoZXMgc29tZXdoYXQgZGlmZmVyZW50bHkKLSAgICAgICAgICAgIHdoaWxlIChl
bnRpdHlOYW1lLnNpemUoKSA8PSA4KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNjID09ICc7Jykg
ewotICAgICAgICAgICAgICAgICAgICBjb25zdCBFbnRpdHkqIGVudGl0eSA9IGZpbmRFbnRpdHko
ZW50aXR5TmFtZS5kYXRhKCksIGVudGl0eU5hbWUuc2l6ZSgpKTsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKGVudGl0eSkgewotICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2Uo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRpdHktPmNvZGU7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGlmICghKGNjID49ICdhJyAmJiBjYyA8PSAneicpICYmICEo
Y2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgJiYgIShjYyA+PSAnMCcgJiYgY2MgPD0gJzknKSkgewot
ICAgICAgICAgICAgICAgICAgICBjb25zdCBFbnRpdHkqIGVudGl0eSA9IGZpbmRFbnRpdHkoZW50
aXR5TmFtZS5kYXRhKCksIGVudGl0eU5hbWUuc2l6ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKGVudGl0eSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRpdHktPmNvZGU7
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBlbnRpdHlOYW1lLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICAgICAgc291cmNlLmFk
dmFuY2UoKTsKLSAgICAgICAgICAgICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgICAgICAgICAgZ290byBvdXRPZkNoYXJhY3RlcnM7Ci0gICAgICAgICAgICAgICAgY2MgPSAq
c291cmNlOwotICAgICAgICAgICAgICAgIHNlZW5DaGFycy5hcHBlbmQoY2MpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKHNlZW5DaGFycy5zaXplKCkgPT0gMikKLSAgICAgICAgICAg
ICAgICBzb3VyY2UucHVzaChzZWVuQ2hhcnNbMF0pOwotICAgICAgICAgICAgZWxzZSBpZiAoc2Vl
bkNoYXJzLnNpemUoKSA9PSAzKSB7Ci0gICAgICAgICAgICAgICAgc291cmNlLnB1c2goc2VlbkNo
YXJzWzBdKTsKLSAgICAgICAgICAgICAgICBzb3VyY2UucHVzaChzZWVuQ2hhcnNbMV0pOwotICAg
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgc291cmNlLnByZXBlbmQoU2VnbWVudGVk
U3RyaW5nKFN0cmluZyhzZWVuQ2hhcnMuZGF0YSgpLCBzZWVuQ2hhcnMuc2l6ZSgpIC0gMSkpKTsK
LSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIHNvdXJjZS5hZHZhbmNl
KCk7Ci0gICAgfQotb3V0T2ZDaGFyYWN0ZXJzOgotICAgIG5vdEVub3VnaENoYXJhY3RlcnMgPSB0
cnVlOwotICAgIHNvdXJjZS5wcmVwZW5kKFNlZ21lbnRlZFN0cmluZyhTdHJpbmcoc2VlbkNoYXJz
LmRhdGEoKSwgc2VlbkNoYXJzLnNpemUoKSkpKTsKLSAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBQ
cmVsb2FkU2Nhbm5lcjo6dG9rZW5pemUoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCit2
b2lkIEhUTUw1UHJlbG9hZFNjYW5uZXI6OnNjYW4oY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzb3Vy
Y2UpCiB7Ci0gICAgQVNTRVJUKG1faW5Qcm9ncmVzcyk7Ci0gICAgCiAgICAgbV9zb3VyY2UuYXBw
ZW5kKHNvdXJjZSk7Ci0KLSAgICAvLyBUaGlzIGlzIGEgc2ltcGxpZmllZCBIVE1MNSBUb2tlbml6
ZXIKLSAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13
b3JrLyN0b2tlbmlzYXRpb24wCi0gICAgd2hpbGUgKCFtX3NvdXJjZS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgVUNoYXIgY2MgPSAqbV9zb3VyY2U7Ci0gICAgICAgIHN3aXRjaCAobV9zdGF0ZSkgewot
ICAgICAgICBjYXNlIERhdGE6Ci0gICAgICAgICAgICB3aGlsZSAoMSkgewotICAgICAgICAgICAg
ICAgIHJlbWVtYmVyQ2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgICAgICBpZiAoY2MgPT0gJyYn
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX2NvbnRlbnRNb2RlbCA9PSBQQ0RBVEEgfHwg
bV9jb250ZW50TW9kZWwgPT0gUkNEQVRBKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3N0
YXRlID0gRW50aXR5RGF0YTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnLScpIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKChtX2NvbnRlbnRNb2RlbCA9PSBSQ0RBVEEgfHwgbV9j
b250ZW50TW9kZWwgPT0gQ0RBVEEpICYmICFtX2VzY2FwZSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGxhc3RDaGFyYWN0ZXJzTWF0Y2goIjwhLS0iLCA0KSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2VzY2FwZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc8JykgewotICAgICAgICAgICAgICAgICAg
ICBpZiAobV9jb250ZW50TW9kZWwgPT0gUENEQVRBIHx8ICgobV9jb250ZW50TW9kZWwgPT0gUkNE
QVRBIHx8IG1fY29udGVudE1vZGVsID09IENEQVRBKSAmJiAhbV9lc2NhcGUpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtX3N0YXRlID0gVGFnT3BlbjsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNl
IGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICAgICAgIGlmICgobV9jb250ZW50TW9k
ZWwgPT0gUkNEQVRBIHx8IG1fY29udGVudE1vZGVsID09IENEQVRBKSAmJiBtX2VzY2FwZSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0Q2hhcmFjdGVyc01hdGNoKCItLT4iLCAz
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9lc2NhcGUgPSBmYWxzZTsKLSAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZW1p
dENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICAgICAgbV9zb3VyY2UuYWR2YW5jZSgpOwotICAg
ICAgICAgICAgICAgIGlmIChtX3NvdXJjZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICAgICAgY2MgPSAqbV9zb3VyY2U7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBFbnRpdHlEYXRhOgotICAgICAgICAg
ICAgLy8gc2hvdWxkIHRyeSB0byBjb25zdW1lIHRoZSBlbnRpdHkgYnV0IHdlIG9ubHkgY2FyZSBh
Ym91dCBlbnRpdGllcyBpbiBhdHRyaWJ1dGVzCi0gICAgICAgICAgICBtX3N0YXRlID0gRGF0YTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRhZ09wZW46Ci0gICAgICAgICAgICBp
ZiAobV9jb250ZW50TW9kZWwgPT0gUkNEQVRBIHx8IG1fY29udGVudE1vZGVsID09IENEQVRBKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGNjID09ICcvJykKLSAgICAgICAgICAgICAgICAgICAgbV9z
dGF0ZSA9IENsb3NlVGFnT3BlbjsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgbV9zdGF0ZSA9IERhdGE7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAobV9jb250ZW50TW9kZWwg
PT0gUENEQVRBKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNjID09ICchJykKLSAgICAgICAgICAg
ICAgICAgICAgbV9zdGF0ZSA9IE1hcmt1cERlY2xhcmF0aW9uT3BlbjsKLSAgICAgICAgICAgICAg
ICBlbHNlIGlmIChjYyA9PSAnLycpCi0gICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBDbG9z
ZVRhZ09wZW47Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICda
JykgewotICAgICAgICAgICAgICAgICAgICBtX3RhZ05hbWUuY2xlYXIoKTsKLSAgICAgICAgICAg
ICAgICAgICAgbV9jaGFyc2V0ID0gU3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fdGFn
TmFtZS5hcHBlbmQoY2MgKyAweDIwKTsKLSAgICAgICAgICAgICAgICAgICAgbV9jbG9zZVRhZyA9
IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gVGFnTmFtZTsKLSAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKLSAgICAgICAgICAg
ICAgICAgICAgbV90YWdOYW1lLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fY2hhcnNl
dCA9IFN0cmluZygpOwotICAgICAgICAgICAgICAgICAgICBtX3RhZ05hbWUuYXBwZW5kKGNjKTsK
LSAgICAgICAgICAgICAgICAgICAgbV9jbG9zZVRhZyA9IGZhbHNlOwotICAgICAgICAgICAgICAg
ICAgICBtX3N0YXRlID0gVGFnTmFtZTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09
ICc+JykgewotICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YTsKLSAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKGNjID09ICc/JykgewotICAgICAgICAgICAgICAgICAgICBtX3N0YXRl
ID0gQm9ndXNDb21tZW50OwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgICAgIG1fc3RhdGUgPSBEYXRhOwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBDbG9zZVRhZ09wZW46Ci0gICAgICAgICAgICBpZiAobV9jb250ZW50TW9kZWwgPT0g
UkNEQVRBIHx8IG1fY29udGVudE1vZGVsID09IENEQVRBKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KCFtX2xhc3RTdGFydFRhZy5sZW5ndGgoKSkgewotICAgICAgICAgICAgICAgICAgICBtX3N0YXRl
ID0gRGF0YTsKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGlmIChtX3NvdXJjZS5sZW5ndGgoKSA8IG1fbGFzdFN0YXJ0VGFn
Lmxlbmd0aCgpICsgMSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
ICAgIFZlY3RvcjxVQ2hhcj4gdG1wU3RyaW5nOwotICAgICAgICAgICAgICAgIFVDaGFyIHRtcENo
YXIgPSAwOwotICAgICAgICAgICAgICAgIGJvb2wgbWF0Y2ggPSB0cnVlOwotICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgbiA9IDA7IG4gPCBtX2xhc3RTdGFydFRhZy5sZW5ndGgoKSArIDE7
IG4rKykgewotICAgICAgICAgICAgICAgICAgICB0bXBDaGFyID0gVW5pY29kZTo6dG9Mb3dlcigq
bV9zb3VyY2UpOwotICAgICAgICAgICAgICAgICAgICBpZiAobiA8IG1fbGFzdFN0YXJ0VGFnLmxl
bmd0aCgpICYmIHRtcENoYXIgIT0gbV9sYXN0U3RhcnRUYWdbbl0pCi0gICAgICAgICAgICAgICAg
ICAgICAgICBtYXRjaCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICB0bXBTdHJpbmcuYXBw
ZW5kKHRtcENoYXIpOwotICAgICAgICAgICAgICAgICAgICBtX3NvdXJjZS5hZHZhbmNlKCk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG1fc291cmNlLnByZXBlbmQoU2VnbWVu
dGVkU3RyaW5nKFN0cmluZyh0bXBTdHJpbmcuZGF0YSgpLCB0bXBTdHJpbmcuc2l6ZSgpKSkpOwot
ICAgICAgICAgICAgICAgIGlmICghbWF0Y2ggfHwgKCFpc1doaXRlc3BhY2UodG1wQ2hhcikgJiYg
dG1wQ2hhciAhPSAnPicgJiYgdG1wQ2hhciAhPSAnLycpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IG1fc3RhdGUgPSBEYXRhOwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoY2MgPj0gJ0EnICYmIGNj
IDw9ICdaJykgewotICAgICAgICAgICAgICAgIG1fdGFnTmFtZS5jbGVhcigpOwotICAgICAgICAg
ICAgICAgIG1fY2hhcnNldCA9IFN0cmluZygpOwotICAgICAgICAgICAgICAgIG1fdGFnTmFtZS5h
cHBlbmQoY2MgKyAweDIwKTsKLSAgICAgICAgICAgICAgICBtX2Nsb3NlVGFnID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICBtX3N0YXRlID0gVGFnTmFtZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAo
Y2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgewotICAgICAgICAgICAgICAgIG1fdGFnTmFtZS5jbGVh
cigpOwotICAgICAgICAgICAgICAgIG1fY2hhcnNldCA9IFN0cmluZygpOwotICAgICAgICAgICAg
ICAgIG1fdGFnTmFtZS5hcHBlbmQoY2MpOwotICAgICAgICAgICAgICAgIG1fY2xvc2VUYWcgPSB0
cnVlOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBUYWdOYW1lOwotICAgICAgICAgICAgfSBl
bHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YTsKLSAg
ICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCb2d1c0NvbW1lbnQ7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUYWdOYW1lOgotICAgICAgICAgICAg
d2hpbGUgKDEpIHsKLSAgICAgICAgICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNjKSkgewotICAg
ICAgICAgICAgICAgICAgICBtX3N0YXRlID0gQmVmb3JlQXR0cmlidXRlTmFtZTsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlm
IChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICAgICAgZW1pdFRhZygpOwotICAgICAgICAg
ICAgICAgICAgICBtX3N0YXRlID0gRGF0YTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChjYyA9PSAnLycpIHsKLSAgICAg
ICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJlZm9yZUF0dHJpYnV0ZU5hbWU7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAo
Y2MgPj0gJ0EnICYmIGNjIDw9ICdaJykKLSAgICAgICAgICAgICAgICAgICAgbV90YWdOYW1lLmFw
cGVuZChjYyArIDB4MjApOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgbV90YWdOYW1lLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICAgICAgbV9zb3VyY2UuYWR2YW5j
ZSgpOwotICAgICAgICAgICAgICAgIGlmIChtX3NvdXJjZS5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBjYyA9ICptX3NvdXJjZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJlZm9yZUF0dHJpYnV0
ZU5hbWU6Ci0gICAgICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNjKSkKLSAgICAgICAgICAgICAg
ICA7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBl
bWl0VGFnKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGE7Ci0gICAgICAgICAgICB9
IGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKLSAgICAgICAgICAgICAgICBtX2F0
dHJpYnV0ZU5hbWUuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICBtX2F0dHJpYnV0ZVZhbHVlLmNs
ZWFyKCk7Ci0gICAgICAgICAgICAgICAgbV9hdHRyaWJ1dGVOYW1lLmFwcGVuZChjYyArIDB4MjAp
OwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBBdHRyaWJ1dGVOYW1lOwotICAgICAgICAgICAg
fSBlbHNlIGlmIChjYyA9PSAnLycpCi0gICAgICAgICAgICAgICAgOwotICAgICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgbV9hdHRyaWJ1dGVOYW1lLmNsZWFyKCk7Ci0gICAgICAgICAg
ICAgICAgbV9hdHRyaWJ1dGVWYWx1ZS5jbGVhcigpOwotICAgICAgICAgICAgICAgIG1fYXR0cmli
dXRlTmFtZS5hcHBlbmQoY2MpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBBdHRyaWJ1dGVO
YW1lOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQXR0
cmlidXRlTmFtZToKLSAgICAgICAgICAgIHdoaWxlICgxKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGlzV2hpdGVzcGFjZShjYykpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEFmdGVy
QXR0cmlidXRlTmFtZTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGlmIChjYyA9PSAnPScpIHsKLSAgICAgICAgICAgICAgICAg
ICAgbV9zdGF0ZSA9IEJlZm9yZUF0dHJpYnV0ZVZhbHVlOwotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGNjID09ICc+Jykg
ewotICAgICAgICAgICAgICAgICAgICBlbWl0VGFnKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1f
c3RhdGUgPSBEYXRhOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICB9IAotICAgICAgICAgICAgICAgIGlmIChjYyA9PSAnLycpIHsKLSAgICAgICAgICAgICAgICAg
ICAgbV9zdGF0ZSA9IEJlZm9yZUF0dHJpYnV0ZU5hbWU7Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoY2MgPj0gJ0EnICYm
IGNjIDw9ICdaJykKLSAgICAgICAgICAgICAgICAgICAgbV9hdHRyaWJ1dGVOYW1lLmFwcGVuZChj
YyArIDB4MjApOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbV9h
dHRyaWJ1dGVOYW1lLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICAgICAgbV9zb3VyY2UuYWR2YW5j
ZSgpOwotICAgICAgICAgICAgICAgIGlmIChtX3NvdXJjZS5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBjYyA9ICptX3NvdXJjZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEFmdGVyQXR0cmlidXRl
TmFtZToKLSAgICAgICAgICAgIGlmIChpc1doaXRlc3BhY2UoY2MpKQotICAgICAgICAgICAgICAg
IDsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc9JykKLSAgICAgICAgICAgICAgICBtX3N0
YXRlID0gQmVmb3JlQXR0cmlidXRlVmFsdWU7IAotICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0g
Jz4nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdFRhZygpOwotICAgICAgICAgICAgICAgIG1fc3Rh
dGUgPSBEYXRhOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1on
KSB7Ci0gICAgICAgICAgICAgICAgbV9hdHRyaWJ1dGVOYW1lLmNsZWFyKCk7Ci0gICAgICAgICAg
ICAgICAgbV9hdHRyaWJ1dGVWYWx1ZS5jbGVhcigpOwotICAgICAgICAgICAgICAgIG1fYXR0cmli
dXRlTmFtZS5hcHBlbmQoY2MgKyAweDIwKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQXR0
cmlidXRlTmFtZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJy8nKQotICAgICAgICAg
ICAgICAgIG1fc3RhdGUgPSBCZWZvcmVBdHRyaWJ1dGVOYW1lOwotICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgbV9hdHRyaWJ1dGVOYW1lLmNsZWFyKCk7Ci0gICAgICAgICAgICAg
ICAgbV9hdHRyaWJ1dGVWYWx1ZS5jbGVhcigpOwotICAgICAgICAgICAgICAgIG1fYXR0cmlidXRl
TmFtZS5hcHBlbmQoY2MpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBBdHRyaWJ1dGVOYW1l
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQmVmb3Jl
QXR0cmlidXRlVmFsdWU6Ci0gICAgICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNjKSkKLSAgICAg
ICAgICAgICAgICA7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicpCi0gICAgICAgICAg
ICAgICAgbV9zdGF0ZSA9IEF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkOwotICAgICAgICAgICAg
ZWxzZSBpZiAoY2MgPT0gJyYnKSB7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEF0dHJpYnV0
ZVZhbHVlVW5xdW90ZWQ7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9
IGVsc2UgaWYgKGNjID09ICdcJycpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEF0dHJpYnV0
ZVZhbHVlU2luZ2xlUXVvdGVkOwotICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7Ci0g
ICAgICAgICAgICAgICAgZW1pdFRhZygpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRh
OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX2F0dHJpYnV0ZVZhbHVl
LmFwcGVuZChjYyk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEF0dHJpYnV0ZVZhbHVlVW5x
dW90ZWQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBB
dHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZDoKLSAgICAgICAgICAgIHdoaWxlICgxKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGNjID09ICciJykgewotICAgICAgICAgICAgICAgICAgICBwcm9jZXNz
QXR0cmlidXRlKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCZWZvcmVBdHRyaWJ1
dGVOYW1lOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgaWYgKGNjID09ICcmJykgewotICAgICAgICAgICAgICAgICAgICBtX3N0
YXRlQmVmb3JlRW50aXR5SW5BdHRyaWJ1dGVWYWx1ZSA9IG1fc3RhdGU7Ci0gICAgICAgICAgICAg
ICAgICAgIG1fc3RhdGUgPSBFbnRpdHlJbkF0dHJpYnV0ZVZhbHVlOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9IAotICAgICAgICAgICAgICAgIG1fYXR0cmli
dXRlVmFsdWUuYXBwZW5kKGNjKTsKLSAgICAgICAgICAgICAgICBtX3NvdXJjZS5hZHZhbmNlKCk7
Ci0gICAgICAgICAgICAgICAgaWYgKG1fc291cmNlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIGNjID0gKm1fc291cmNlOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQXR0cmlidXRlVmFsdWVTaW5n
bGVRdW90ZWQ6Ci0gICAgICAgICAgICB3aGlsZSAoMSkgewotICAgICAgICAgICAgICAgIGlmIChj
YyA9PSAnXCcnKSB7Ci0gICAgICAgICAgICAgICAgICAgIHByb2Nlc3NBdHRyaWJ1dGUoKTsKLSAg
ICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJlZm9yZUF0dHJpYnV0ZU5hbWU7Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBp
ZiAoY2MgPT0gJyYnKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fc3RhdGVCZWZvcmVFbnRpdHlJ
bkF0dHJpYnV0ZVZhbHVlID0gbV9zdGF0ZTsKLSAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9
IEVudGl0eUluQXR0cmlidXRlVmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIH0gCi0gICAgICAgICAgICAgICAgbV9hdHRyaWJ1dGVWYWx1ZS5hcHBlbmQo
Y2MpOwotICAgICAgICAgICAgICAgIG1fc291cmNlLmFkdmFuY2UoKTsKLSAgICAgICAgICAgICAg
ICBpZiAobV9zb3VyY2UuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICAgICAgY2MgPSAqbV9zb3VyY2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkOgotICAgICAgICAg
ICAgd2hpbGUgKDEpIHsKLSAgICAgICAgICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNjKSkgewot
ICAgICAgICAgICAgICAgICAgICBwcm9jZXNzQXR0cmlidXRlKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIG1fc3RhdGUgPSBCZWZvcmVBdHRyaWJ1dGVOYW1lOwotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGNjID09ICcmJykg
ewotICAgICAgICAgICAgICAgICAgICBtX3N0YXRlQmVmb3JlRW50aXR5SW5BdHRyaWJ1dGVWYWx1
ZSA9IG1fc3RhdGU7Ci0gICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBFbnRpdHlJbkF0dHJp
YnV0ZVZhbHVlOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgICAgICBw
cm9jZXNzQXR0cmlidXRlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGVtaXRUYWcoKTsKLSAgICAg
ICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGE7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtX2F0dHJpYnV0ZVZhbHVlLmFw
cGVuZChjYyk7Ci0gICAgICAgICAgICAgICAgbV9zb3VyY2UuYWR2YW5jZSgpOwotICAgICAgICAg
ICAgICAgIGlmIChtX3NvdXJjZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgICAgICBjYyA9ICptX3NvdXJjZTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVudGl0eUluQXR0cmlidXRlVmFsdWU6IAotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGJvb2wgbm90RW5vdWdoQ2hhcmFjdGVycyA9IGZh
bHNlOyAKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBlbnRpdHkgPSBjb25zdW1lRW50aXR5KG1f
c291cmNlLCBub3RFbm91Z2hDaGFyYWN0ZXJzKTsKLSAgICAgICAgICAgICAgICBpZiAobm90RW5v
dWdoQ2hhcmFjdGVycykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
ICAgIGlmIChlbnRpdHkgPiAweEZGRkYpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9hdHRyaWJ1
dGVWYWx1ZS5hcHBlbmQoVTE2X0xFQUQoZW50aXR5KSk7Ci0gICAgICAgICAgICAgICAgICAgIG1f
YXR0cmlidXRlVmFsdWUuYXBwZW5kKFUxNl9UUkFJTChlbnRpdHkpKTsKLSAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKGVudGl0eSkKLSAgICAgICAgICAgICAgICAgICAgbV9hdHRyaWJ1dGVWYWx1
ZS5hcHBlbmQoZW50aXR5KTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgIG1fYXR0cmlidXRlVmFsdWUuYXBwZW5kKCcmJyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBtX3N0YXRlID0gbV9zdGF0ZUJlZm9yZUVudGl0eUluQXR0cmlidXRlVmFsdWU7Ci0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgY2FzZSBCb2d1c0NvbW1lbnQ6Ci0gICAgICAgICAg
ICB3aGlsZSAoMSkgewotICAgICAgICAgICAgICAgIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAg
ICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGE7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtX3NvdXJjZS5hZHZhbmNlKCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKG1fc291cmNlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIGNjID0gKm1fc291cmNlOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWFya3VwRGVjbGFyYXRpb25PcGVu
OiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJy0nKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1f
c291cmNlLmxlbmd0aCgpIDwgMikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgICAgIG1fc291cmNlLmFkdmFuY2UoKTsKLSAgICAgICAgICAgICAgICBjYyA9ICptX3Nv
dXJjZTsKLSAgICAgICAgICAgICAgICBpZiAoY2MgPT0gJy0nKQotICAgICAgICAgICAgICAgICAg
ICBtX3N0YXRlID0gQ29tbWVudFN0YXJ0OwotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgICAgICAgICBtX3N0YXRlID0gQm9ndXNDb21tZW50OwotICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBJZiB3ZSBjYXJl
ZCBhYm91dCB0aGUgRE9DVFlQRSB3ZSB3b3VsZCB0ZXN0IHRvIGVudGVyIHRob3NlIHN0YXRlcyBo
ZXJlCi0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCb2d1
c0NvbW1lbnQ7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENvbW1lbnRTdGFydDoKLSAg
ICAgICAgICAgIGlmIChjYyA9PSAnLScpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENvbW1l
bnRTdGFydERhc2g7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAg
ICAgICAgbV9zdGF0ZSA9IERhdGE7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
bV9zdGF0ZSA9IENvbW1lbnQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDb21t
ZW50U3RhcnREYXNoOgotICAgICAgICAgICAgaWYgKGNjID09ICctJykKLSAgICAgICAgICAgICAg
ICBtX3N0YXRlID0gQ29tbWVudEVuZDsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykK
LSAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBtX3N0YXRlID0gQ29tbWVudDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIENvbW1lbnQ6Ci0gICAgICAgICAgICB3aGlsZSAoMSkgewotICAgICAgICAgICAgICAg
IGlmIChjYyA9PSAnLScpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENvbW1lbnRF
bmREYXNoOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgbV9zb3VyY2UuYWR2YW5jZSgpOwotICAgICAgICAgICAgICAgIGlmICht
X3NvdXJjZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgICAgICBjYyA9ICptX3NvdXJjZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIENvbW1lbnRFbmREYXNoOgotICAgICAgICAgICAgaWYgKGNjID09ICct
JykKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQ29tbWVudEVuZDsKLSAgICAgICAgICAgIGVs
c2UgCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENvbW1lbnQ7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBDb21tZW50RW5kOgotICAgICAgICAgICAgaWYgKGNjID09ICc+JykK
LSAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNj
ID09ICctJykKLSAgICAgICAgICAgICAgICA7Ci0gICAgICAgICAgICBlbHNlIAotICAgICAgICAg
ICAgICAgIG1fc3RhdGUgPSBDb21tZW50OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgbV9zb3VyY2UuYWR2YW5jZSgpOwotICAgIH0KLX0KLSAgICAKLXZvaWQgUHJlbG9h
ZFNjYW5uZXI6OnByb2Nlc3NBdHRyaWJ1dGUoKQotewotICAgIEF0b21pY1N0cmluZyB0YWcgPSBB
dG9taWNTdHJpbmcobV90YWdOYW1lLmRhdGEoKSwgbV90YWdOYW1lLnNpemUoKSk7Ci0gICAgQXRv
bWljU3RyaW5nIGF0dHJpYnV0ZSA9IEF0b21pY1N0cmluZyhtX2F0dHJpYnV0ZU5hbWUuZGF0YSgp
LCBtX2F0dHJpYnV0ZU5hbWUuc2l6ZSgpKTsKLSAgICAKLSAgICBTdHJpbmcgdmFsdWUobV9hdHRy
aWJ1dGVWYWx1ZS5kYXRhKCksIG1fYXR0cmlidXRlVmFsdWUuc2l6ZSgpKTsKLSAgICBpZiAodGFn
ID09IHNjcmlwdFRhZyB8fCB0YWcgPT0gaW1nVGFnKSB7Ci0gICAgICAgIGlmIChhdHRyaWJ1dGUg
PT0gc3JjQXR0ciAmJiBtX3VybFRvTG9hZC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX3VybFRv
TG9hZCA9IGRlcHJlY2F0ZWRQYXJzZVVSTCh2YWx1ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGF0dHJp
YnV0ZSA9PSBjaGFyc2V0QXR0cikKLSAgICAgICAgICAgIG1fY2hhcnNldCA9IHZhbHVlOwotICAg
IH0gZWxzZSBpZiAodGFnID09IGxpbmtUYWcpIHsKLSAgICAgICAgaWYgKGF0dHJpYnV0ZSA9PSBo
cmVmQXR0ciAmJiBtX3VybFRvTG9hZC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX3VybFRvTG9h
ZCA9IGRlcHJlY2F0ZWRQYXJzZVVSTCh2YWx1ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0
ZSA9PSByZWxBdHRyKSB7Ci0gICAgICAgICAgICBIVE1MTGlua0VsZW1lbnQ6OlJlbEF0dHJpYnV0
ZSByZWw7Ci0gICAgICAgICAgICBIVE1MTGlua0VsZW1lbnQ6OnRva2VuaXplUmVsQXR0cmlidXRl
KHZhbHVlLCByZWwpOwotICAgICAgICAgICAgbV9saW5rSXNTdHlsZVNoZWV0ID0gcmVsLm1faXNT
dHlsZVNoZWV0ICYmICFyZWwubV9pc0FsdGVybmF0ZSAmJiAhcmVsLm1faXNJY29uICYmICFyZWwu
bV9pc0ROU1ByZWZldGNoOwotICAgICAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZSA9PSBjaGFyc2V0
QXR0cikKLSAgICAgICAgICAgIG1fY2hhcnNldCA9IHZhbHVlOworICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgcmUtdXNlIHRoZXNlIHRva2VucyBpbiBIVE1MNURvY3VtZW50UGFyc2VyIGlmIHRoZQor
ICAgIC8vIHBlbmRpbmcgc2NyaXB0IGRvZXNuJ3QgZW5kIHVwIGNhbGxpbmcgZG9jdW1lbnQud3Jp
dGUuCisgICAgd2hpbGUgKG1fbGV4ZXIubmV4dFRva2VuKG1fc291cmNlLCBtX3Rva2VuKSkgewor
ICAgICAgICBwcm9jZXNzVG9rZW4oKTsKKyAgICAgICAgbV90b2tlbi5jbGVhcigpOwogICAgIH0K
IH0KLSAgICAKLWlubGluZSB2b2lkIFByZWxvYWRTY2FubmVyOjplbWl0Q2hhcmFjdGVyKFVDaGFy
IGMpCi17Ci0gICAgaWYgKG1fY29udGVudE1vZGVsID09IENEQVRBICYmIG1fbGFzdFN0YXJ0VGFn
ID09IHN0eWxlVGFnKSAKLSAgICAgICAgdG9rZW5pemVDU1MoYyk7Ci19Ci0gICAgCi1pbmxpbmUg
dm9pZCBQcmVsb2FkU2Nhbm5lcjo6dG9rZW5pemVDU1MoVUNoYXIgYykKLXsgICAgCi0gICAgLy8g
V2UgYXJlIGp1c3QgaW50ZXJlc3RlZCBpbiBAaW1wb3J0IHJ1bGVzLCBubyBuZWVkIGZvciByZWFs
IHRva2VuaXphdGlvbiBoZXJlCi0gICAgLy8gU2VhcmNoaW5nIGZvciBvdGhlciB0eXBlcyBvZiBy
ZXNvdXJjZXMgaXMgcHJvYmFibHkgbG93IHBheW9mZgotICAgIHN3aXRjaCAobV9jc3NTdGF0ZSkg
ewotICAgIGNhc2UgQ1NTSW5pdGlhbDoKLSAgICAgICAgaWYgKGMgPT0gJ0AnKQotICAgICAgICAg
ICAgbV9jc3NTdGF0ZSA9IENTU1J1bGVTdGFydDsKLSAgICAgICAgZWxzZSBpZiAoYyA9PSAnLycp
Ci0gICAgICAgICAgICBtX2Nzc1N0YXRlID0gQ1NTTWF5YmVDb21tZW50OwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIENTU01heWJlQ29tbWVudDoKLSAgICAgICAgaWYgKGMgPT0gJyonKQotICAg
ICAgICAgICAgbV9jc3NTdGF0ZSA9IENTU0NvbW1lbnQ7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG1fY3NzU3RhdGUgPSBDU1NJbml0aWFsOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENT
U0NvbW1lbnQ6Ci0gICAgICAgIGlmIChjID09ICcqJykKLSAgICAgICAgICAgIG1fY3NzU3RhdGUg
PSBDU1NNYXliZUNvbW1lbnRFbmQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTTWF5YmVD
b21tZW50RW5kOgotICAgICAgICBpZiAoYyA9PSAnLycpCi0gICAgICAgICAgICBtX2Nzc1N0YXRl
ID0gQ1NTSW5pdGlhbDsKLSAgICAgICAgZWxzZSBpZiAoYyA9PSAnKicpCi0gICAgICAgICAgICA7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fY3NzU3RhdGUgPSBDU1NDb21tZW50OwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIENTU1J1bGVTdGFydDoKLSAgICAgICAgaWYgKChjID49ICdB
JyAmJiBjIDw9ICdaJykgfHwgKGMgPj0gJ2EnICYmIGMgPD0gJ3onKSkgewotICAgICAgICAgICAg
bV9jc3NSdWxlLmNsZWFyKCk7Ci0gICAgICAgICAgICBtX2Nzc1J1bGVWYWx1ZS5jbGVhcigpOwot
ICAgICAgICAgICAgbV9jc3NSdWxlLmFwcGVuZChjKTsKLSAgICAgICAgICAgIG1fY3NzU3RhdGUg
PSBDU1NSdWxlOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fY3NzU3RhdGUgPSBDU1NJ
bml0aWFsOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1J1bGU6Ci0gICAgICAgIGlmIChp
c1doaXRlc3BhY2UoYykpCi0gICAgICAgICAgICBtX2Nzc1N0YXRlID0gQ1NTQWZ0ZXJSdWxlOwot
ICAgICAgICBlbHNlIGlmIChjID09ICc7JykKLSAgICAgICAgICAgIG1fY3NzU3RhdGUgPSBDU1NJ
bml0aWFsOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Nzc1J1bGUuYXBwZW5kKGMpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU0FmdGVyUnVsZToKLSAgICAgICAgaWYgKGlzV2hp
dGVzcGFjZShjKSkKLSAgICAgICAgICAgIDsKLSAgICAgICAgZWxzZSBpZiAoYyA9PSAnOycpCi0g
ICAgICAgICAgICBtX2Nzc1N0YXRlID0gQ1NTSW5pdGlhbDsKLSAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBtX2Nzc1N0YXRlID0gQ1NTUnVsZVZhbHVlOwotICAgICAgICAgICAgbV9jc3NSdWxl
VmFsdWUuYXBwZW5kKGMpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NT
UnVsZVZhbHVlOgotICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGMpKQotICAgICAgICAgICAgbV9j
c3NTdGF0ZSA9IENTU0FmdGVyUnVsZVZhbHVlOwotICAgICAgICBlbHNlIGlmIChjID09ICc7Jykg
ewotICAgICAgICAgICAgZW1pdENTU1J1bGUoKTsKLSAgICAgICAgICAgIG1fY3NzU3RhdGUgPSBD
U1NJbml0aWFsOwotICAgICAgICB9IGVsc2UgCi0gICAgICAgICAgICBtX2Nzc1J1bGVWYWx1ZS5h
cHBlbmQoYyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTQWZ0ZXJSdWxlVmFsdWU6Ci0g
ICAgICAgIGlmIChpc1doaXRlc3BhY2UoYykpCi0gICAgICAgICAgICA7Ci0gICAgICAgIGVsc2Ug
aWYgKGMgPT0gJzsnKSB7Ci0gICAgICAgICAgICBlbWl0Q1NTUnVsZSgpOwotICAgICAgICAgICAg
bV9jc3NTdGF0ZSA9IENTU0luaXRpYWw7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAv
LyBGSVhNRSBtZWRpYSBydWxlcwotICAgICAgICAgICAgIG1fY3NzU3RhdGUgPSBDU1NJbml0aWFs
OwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLSAgICAKLXZvaWQgUHJlbG9h
ZFNjYW5uZXI6OmVtaXRUYWcoKQorCit2b2lkIEhUTUw1UHJlbG9hZFNjYW5uZXI6OnByb2Nlc3NU
b2tlbigpCiB7Ci0gICAgaWYgKG1fY2xvc2VUYWcpIHsKLSAgICAgICAgbV9jb250ZW50TW9kZWwg
PSBQQ0RBVEE7Ci0gICAgICAgIG1fY3NzU3RhdGUgPSBDU1NJbml0aWFsOwotICAgICAgICBjbGVh
ckxhc3RDaGFyYWN0ZXJzKCk7CisgICAgaWYgKG1fdG9rZW4udHlwZSgpICE9IEhUTUw1VG9rZW46
OlN0YXJ0VGFnKQogICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIEF0b21pY1N0cmlu
ZyB0YWcobV90YWdOYW1lLmRhdGEoKSwgbV90YWdOYW1lLnNpemUoKSk7Ci0gICAgbV9sYXN0U3Rh
cnRUYWcgPSB0YWc7Ci0gICAgCi0gICAgaWYgKHRhZyA9PSB0ZXh0YXJlYVRhZyB8fCB0YWcgPT0g
dGl0bGVUYWcpCi0gICAgICAgIG1fY29udGVudE1vZGVsID0gUkNEQVRBOwotICAgIGVsc2UgaWYg
KHRhZyA9PSBzdHlsZVRhZyB8fCB0YWcgPT0geG1wVGFnIHx8IHRhZyA9PSBzY3JpcHRUYWcgfHwg
dGFnID09IGlmcmFtZVRhZyB8fCB0YWcgPT0gbm9lbWJlZFRhZyB8fCB0YWcgPT0gbm9mcmFtZXNU
YWcpCi0gICAgICAgIG1fY29udGVudE1vZGVsID0gQ0RBVEE7Ci0gICAgZWxzZSBpZiAodGFnID09
IG5vc2NyaXB0VGFnKQotICAgICAgICAvLyB3ZSB3b3VsZG4ndCBiZSBoZXJlIGlmIHNjcmlwdHMg
d2VyZSBkaXNhYmxlZAotICAgICAgICBtX2NvbnRlbnRNb2RlbCA9IENEQVRBOwotICAgIGVsc2Ug
aWYgKHRhZyA9PSBwbGFpbnRleHRUYWcpCi0gICAgICAgIG1fY29udGVudE1vZGVsID0gUExBSU5U
RVhUOwotICAgIGVsc2UKLSAgICAgICAgbV9jb250ZW50TW9kZWwgPSBQQ0RBVEE7Ci0gICAgCi0g
ICAgaWYgKHRhZyA9PSBib2R5VGFnKQorCisgICAgQXRvbWljU3RyaW5nIHRhZ05hbWUobV90b2tl
bi5uYW1lKCkuZGF0YSgpLCBtX3Rva2VuLm5hbWUoKS5zaXplKCkpOworCisgICAgbV9sZXhlci5z
ZXRTdGF0ZShIVE1MNVRyZWVCdWlsZGVyOjphZGp1c3RlZExleGVyU3RhdGUobV9sZXhlci5zdGF0
ZSgpLCB0YWdOYW1lKSk7CisKKyAgICBpZiAodGFnTmFtZSA9PSBib2R5VGFnKQogICAgICAgICBt
X2JvZHlTZWVuID0gdHJ1ZTsKLSAgICAKLSAgICBpZiAobV91cmxUb0xvYWQuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIG1fbGlua0lzU3R5bGVTaGVldCA9IGZhbHNlOworCisgICAgaWYgKHRhZ05hbWUg
IT0gc2NyaXB0VGFnICYmIHRhZ05hbWUgIT0gaW1nVGFnICYmIHRhZ05hbWUgIT0gbGlua1RhZykK
ICAgICAgICAgcmV0dXJuOworCisgICAgU3RyaW5nIHVybFRvTG9hZDsKKyAgICBTdHJpbmcgY2hh
cnNldDsKKyAgICBib29sIGxpbmtJc1N0eWxlU2hlZXQ7CisKKyAgICBmb3IgKEhUTUw1VG9rZW46
OkF0dHJpYnV0ZUxpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3Rva2VuLmF0dHJpYnV0ZXMo
KS5iZWdpbigpOworICAgICAgICAgaXRlciAhPSBtX3Rva2VuLmF0dHJpYnV0ZXMoKS5lbmQoKTsg
KytpdGVyKSB7CisgICAgICAgIEF0b21pY1N0cmluZyBhdHRyaWJ1dGVOYW1lKGl0ZXItPm1fbmFt
ZS5kYXRhKCksIGl0ZXItPm1fbmFtZS5zaXplKCkpOworICAgICAgICBTdHJpbmcgYXR0cmlidXRl
VmFsdWUoaXRlci0+bV92YWx1ZS5kYXRhKCksIGl0ZXItPm1fdmFsdWUuc2l6ZSgpKTsKKworICAg
ICAgICBpZiAodGFnTmFtZSA9PSBzY3JpcHRUYWcgfHwgdGFnTmFtZSA9PSBpbWdUYWcpIHsKKyAg
ICAgICAgICAgIGlmIChhdHRyaWJ1dGVOYW1lID09IHNyY0F0dHIgJiYgdXJsVG9Mb2FkLmlzRW1w
dHkoKSkKKyAgICAgICAgICAgICAgICB1cmxUb0xvYWQgPSBkZXByZWNhdGVkUGFyc2VVUkwoYXR0
cmlidXRlVmFsdWUpOworICAgICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlTmFtZSA9PSBjaGFy
c2V0QXR0cikKKyAgICAgICAgICAgICAgICBjaGFyc2V0ID0gYXR0cmlidXRlVmFsdWU7CisgICAg
ICAgIH0gZWxzZSBpZiAodGFnTmFtZSA9PSBsaW5rVGFnKSB7CisgICAgICAgICAgICBpZiAoYXR0
cmlidXRlTmFtZSA9PSBocmVmQXR0ciAmJiB1cmxUb0xvYWQuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgICAgIHVybFRvTG9hZCA9IGRlcHJlY2F0ZWRQYXJzZVVSTChhdHRyaWJ1dGVWYWx1ZSk7Cisg
ICAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGVOYW1lID09IHJlbEF0dHIpIHsKKyAgICAgICAg
ICAgICAgICBIVE1MTGlua0VsZW1lbnQ6OlJlbEF0dHJpYnV0ZSByZWw7CisgICAgICAgICAgICAg
ICAgSFRNTExpbmtFbGVtZW50Ojp0b2tlbml6ZVJlbEF0dHJpYnV0ZShhdHRyaWJ1dGVWYWx1ZSwg
cmVsKTsKKyAgICAgICAgICAgICAgICBsaW5rSXNTdHlsZVNoZWV0ID0gcmVsLm1faXNTdHlsZVNo
ZWV0ICYmICFyZWwubV9pc0FsdGVybmF0ZSAmJiAhcmVsLm1faXNJY29uICYmICFyZWwubV9pc0RO
U1ByZWZldGNoOworICAgICAgICAgICAgfSBlbHNlIGlmIChhdHRyaWJ1dGVOYW1lID09IGNoYXJz
ZXRBdHRyKQorICAgICAgICAgICAgICAgIGNoYXJzZXQgPSBhdHRyaWJ1dGVWYWx1ZTsKKyAgICAg
ICAgfQogICAgIH0KLSAgICAKLSAgICBpZiAodGFnID09IHNjcmlwdFRhZykKLSAgICAgICAgbV9k
b2N1bWVudC0+ZG9jTG9hZGVyKCktPnByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdCwgbV91
cmxUb0xvYWQsIG1fY2hhcnNldCwgc2Nhbm5pbmdCb2R5KCkpOwotICAgIGVsc2UgaWYgKHRhZyA9
PSBpbWdUYWcpIAotICAgICAgICBtX2RvY3VtZW50LT5kb2NMb2FkZXIoKS0+cHJlbG9hZChDYWNo
ZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSwgbV91cmxUb0xvYWQsIFN0cmluZygpLCBzY2Fubmlu
Z0JvZHkoKSk7Ci0gICAgZWxzZSBpZiAodGFnID09IGxpbmtUYWcgJiYgbV9saW5rSXNTdHlsZVNo
ZWV0KSAKLSAgICAgICAgbV9kb2N1bWVudC0+ZG9jTG9hZGVyKCktPnByZWxvYWQoQ2FjaGVkUmVz
b3VyY2U6OkNTU1N0eWxlU2hlZXQsIG1fdXJsVG9Mb2FkLCBtX2NoYXJzZXQsIHNjYW5uaW5nQm9k
eSgpKTsKLQotICAgIG1fdXJsVG9Mb2FkID0gU3RyaW5nKCk7Ci0gICAgbV9jaGFyc2V0ID0gU3Ry
aW5nKCk7Ci0gICAgbV9saW5rSXNTdHlsZVNoZWV0ID0gZmFsc2U7CisKKyAgICBpZiAodXJsVG9M
b2FkLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHRhZ05hbWUgPT0gc2Ny
aXB0VGFnKQorICAgICAgICBtX2RvY3VtZW50LT5kb2NMb2FkZXIoKS0+cHJlbG9hZChDYWNoZWRS
ZXNvdXJjZTo6U2NyaXB0LCB1cmxUb0xvYWQsIGNoYXJzZXQsIHNjYW5uaW5nQm9keSgpKTsKKyAg
ICBlbHNlIGlmICh0YWdOYW1lID09IGltZ1RhZykgCisgICAgICAgIG1fZG9jdW1lbnQtPmRvY0xv
YWRlcigpLT5wcmVsb2FkKENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlLCB1cmxUb0xvYWQs
IFN0cmluZygpLCBzY2FubmluZ0JvZHkoKSk7CisgICAgZWxzZSBpZiAodGFnTmFtZSA9PSBsaW5r
VGFnICYmIGxpbmtJc1N0eWxlU2hlZXQpIAorICAgICAgICBtX2RvY3VtZW50LT5kb2NMb2FkZXIo
KS0+cHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldCwgdXJsVG9Mb2FkLCBjaGFy
c2V0LCBzY2FubmluZ0JvZHkoKSk7CiB9Ci0gICAgCi12b2lkIFByZWxvYWRTY2FubmVyOjplbWl0
Q1NTUnVsZSgpCisKK2Jvb2wgSFRNTDVQcmVsb2FkU2Nhbm5lcjo6c2Nhbm5pbmdCb2R5KCkgY29u
c3QKIHsKLSAgICBTdHJpbmcgcnVsZShtX2Nzc1J1bGUuZGF0YSgpLCBtX2Nzc1J1bGUuc2l6ZSgp
KTsKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocnVsZSwgImltcG9ydCIpICYmICFtX2Nzc1J1
bGVWYWx1ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgU3RyaW5nIHZhbHVlKG1fY3NzUnVsZVZhbHVl
LmRhdGEoKSwgbV9jc3NSdWxlVmFsdWUuc2l6ZSgpKTsKLSAgICAgICAgU3RyaW5nIHVybCA9IGRl
cHJlY2F0ZWRQYXJzZVVSTCh2YWx1ZSk7Ci0gICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIG1fZG9jdW1lbnQtPmRvY0xvYWRlcigpLT5wcmVsb2FkKENhY2hlZFJlc291cmNl
OjpDU1NTdHlsZVNoZWV0LCB1cmwsIFN0cmluZygpLCBzY2FubmluZ0JvZHkoKSk7Ci0gICAgfQot
ICAgIG1fY3NzUnVsZS5jbGVhcigpOwotICAgIG1fY3NzUnVsZVZhbHVlLmNsZWFyKCk7CisgICAg
cmV0dXJuIG1fZG9jdW1lbnQtPmJvZHkoKSB8fCBtX2JvZHlTZWVuOwogfQotICAgICAgICAgICAg
ICAgIAorCiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTDVQcmVsb2FkU2Nhbm5lci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MNVByZWxvYWRTY2FubmVyLmgJKHJldmlzaW9uIDYx
MTA3KQkoZnJvbSBXZWJDb3JlL2h0bWwvUHJlbG9hZFNjYW5uZXIuaDo2MTEwNykKKysrIFdlYkNv
cmUvaHRtbC9IVE1MNVByZWxvYWRTY2FubmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
NDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBQcmVsb2FkU2Nhbm5lcl9oCisjZGVmaW5lIFByZWxvYWRTY2FubmVyX2gKKworI2luY2x1
ZGUgIkF0b21pY1N0cmluZy5oIgorI2luY2x1ZGUgIlNlZ21lbnRlZFN0cmluZy5oIgorI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworICAgIAorICAgIGNsYXNzIENhY2hlZFJlc291cmNlOworICAgIGNsYXNz
IENhY2hlZFJlc291cmNlQ2xpZW50OworICAgIGNsYXNzIERvY3VtZW50OworICAgIAorICAgIGNs
YXNzIFByZWxvYWRTY2FubmVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIFByZWxvYWRTY2FubmVyKERvY3VtZW50Kik7CisgICAgICAgIH5QcmVsb2FkU2Nhbm5l
cigpOworICAgICAgICB2b2lkIGJlZ2luKCk7CisgICAgICAgIHZvaWQgd3JpdGUoY29uc3QgU2Vn
bWVudGVkU3RyaW5nJik7CisgICAgICAgIHZvaWQgZW5kKCk7CisgICAgICAgIGJvb2wgaW5Qcm9n
cmVzcygpIGNvbnN0IHsgcmV0dXJuIG1faW5Qcm9ncmVzczsgfQorICAgICAgICAKKyAgICAgICAg
Ym9vbCBzY2FubmluZ0JvZHkoKSBjb25zdDsKKyAgICAgICAgCisgICAgICAgIHN0YXRpYyB1bnNp
Z25lZCBjb25zdW1lRW50aXR5KFNlZ21lbnRlZFN0cmluZyYsIGJvb2wmIG5vdEVub3VnaENoYXJh
Y3RlcnMpOworICAgICAgICAKKyAgICBwcml2YXRlOgorICAgICAgICB2b2lkIHRva2VuaXplKGNv
bnN0IFNlZ21lbnRlZFN0cmluZyYpOworICAgICAgICB2b2lkIHJlc2V0KCk7CisgICAgICAgIAor
ICAgICAgICB2b2lkIGVtaXRUYWcoKTsKKyAgICAgICAgdm9pZCBlbWl0Q2hhcmFjdGVyKFVDaGFy
KTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgdG9rZW5pemVDU1MoVUNoYXIpOworICAgICAgICB2
b2lkIGVtaXRDU1NSdWxlKCk7CisgICAgICAgIAorICAgICAgICB2b2lkIHByb2Nlc3NBdHRyaWJ1
dGUoKTsKKworICAgICAgICAKKyAgICAgICAgdm9pZCBjbGVhckxhc3RDaGFyYWN0ZXJzKCk7Cisg
ICAgICAgIHZvaWQgcmVtZW1iZXJDaGFyYWN0ZXIoVUNoYXIpOworICAgICAgICBib29sIGxhc3RD
aGFyYWN0ZXJzTWF0Y2goY29uc3QgY2hhciosIHVuc2lnbmVkIGNvdW50KSBjb25zdDsKKyAgICAg
ICAgCisgICAgICAgIGJvb2wgbV9pblByb2dyZXNzOworICAgICAgICBTZWdtZW50ZWRTdHJpbmcg
bV9zb3VyY2U7CisgICAgICAgIAorICAgICAgICBlbnVtIFN0YXRlIHsKKyAgICAgICAgICAgIERh
dGEsCisgICAgICAgICAgICBFbnRpdHlEYXRhLAorICAgICAgICAgICAgVGFnT3BlbiwKKyAgICAg
ICAgICAgIENsb3NlVGFnT3BlbiwKKyAgICAgICAgICAgIFRhZ05hbWUsCisgICAgICAgICAgICBC
ZWZvcmVBdHRyaWJ1dGVOYW1lLAorICAgICAgICAgICAgQXR0cmlidXRlTmFtZSwKKyAgICAgICAg
ICAgIEFmdGVyQXR0cmlidXRlTmFtZSwKKyAgICAgICAgICAgIEJlZm9yZUF0dHJpYnV0ZVZhbHVl
LAorICAgICAgICAgICAgQXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWQsCisgICAgICAgICAgICBB
dHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZCwKKyAgICAgICAgICAgIEF0dHJpYnV0ZVZhbHVlVW5x
dW90ZWQsCisgICAgICAgICAgICBFbnRpdHlJbkF0dHJpYnV0ZVZhbHVlLAorICAgICAgICAgICAg
Qm9ndXNDb21tZW50LAorICAgICAgICAgICAgTWFya3VwRGVjbGFyYXRpb25PcGVuLAorICAgICAg
ICAgICAgQ29tbWVudFN0YXJ0LAorICAgICAgICAgICAgQ29tbWVudFN0YXJ0RGFzaCwKKyAgICAg
ICAgICAgIENvbW1lbnQsCisgICAgICAgICAgICBDb21tZW50RW5kRGFzaCwKKyAgICAgICAgICAg
IENvbW1lbnRFbmQKKyAgICAgICAgfTsKKyAgICAgICAgU3RhdGUgbV9zdGF0ZTsKKyAgICAgICAg
Ym9vbCBtX2VzY2FwZTsKKyAgICAgICAgZW51bSBDb250ZW50TW9kZWwgeworICAgICAgICAgICAg
UENEQVRBLAorICAgICAgICAgICAgUkNEQVRBLAorICAgICAgICAgICAgQ0RBVEEsCisgICAgICAg
ICAgICBQTEFJTlRFWFQKKyAgICAgICAgfTsKKyAgICAgICAgQ29udGVudE1vZGVsIG1fY29udGVu
dE1vZGVsOworICAgICAgICB1bnNpZ25lZCBtX2NvbW1lbnRQb3M7CisgICAgICAgIFN0YXRlIG1f
c3RhdGVCZWZvcmVFbnRpdHlJbkF0dHJpYnV0ZVZhbHVlOworICAgICAgICAKKyAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGxhc3RDaGFyYWN0ZXJzQnVmZmVyU2l6ZSA9IDg7CisgICAgICAg
IFVDaGFyIG1fbGFzdENoYXJhY3RlcnNbbGFzdENoYXJhY3RlcnNCdWZmZXJTaXplXTsKKyAgICAg
ICAgdW5zaWduZWQgbV9sYXN0Q2hhcmFjdGVySW5kZXg7CisgICAgICAgIAorICAgICAgICBib29s
IG1fY2xvc2VUYWc7CisgICAgICAgIFZlY3RvcjxVQ2hhciwgMzI+IG1fdGFnTmFtZTsKKyAgICAg
ICAgVmVjdG9yPFVDaGFyLCAzMj4gbV9hdHRyaWJ1dGVOYW1lOworICAgICAgICBWZWN0b3I8VUNo
YXI+IG1fYXR0cmlidXRlVmFsdWU7CisgICAgICAgIEF0b21pY1N0cmluZyBtX2xhc3RTdGFydFRh
ZzsKKyAgICAgICAgCisgICAgICAgIFN0cmluZyBtX3VybFRvTG9hZDsKKyAgICAgICAgU3RyaW5n
IG1fY2hhcnNldDsKKyAgICAgICAgYm9vbCBtX2xpbmtJc1N0eWxlU2hlZXQ7CisgICAgICAgIAor
ICAgICAgICBlbnVtIENTU1N0YXRlIHsKKyAgICAgICAgICAgIENTU0luaXRpYWwsCisgICAgICAg
ICAgICBDU1NNYXliZUNvbW1lbnQsCisgICAgICAgICAgICBDU1NDb21tZW50LAorICAgICAgICAg
ICAgQ1NTTWF5YmVDb21tZW50RW5kLAorICAgICAgICAgICAgQ1NTUnVsZVN0YXJ0LAorICAgICAg
ICAgICAgQ1NTUnVsZSwKKyAgICAgICAgICAgIENTU0FmdGVyUnVsZSwKKyAgICAgICAgICAgIENT
U1J1bGVWYWx1ZSwKKyAgICAgICAgICAgIENTU0FmdGVyUnVsZVZhbHVlCisgICAgICAgIH07Cisg
ICAgICAgIENTU1N0YXRlIG1fY3NzU3RhdGU7CisgICAgICAgIFZlY3RvcjxVQ2hhciwgMTY+IG1f
Y3NzUnVsZTsKKyAgICAgICAgVmVjdG9yPFVDaGFyPiBtX2Nzc1J1bGVWYWx1ZTsKKyAgICAgICAg
CisgICAgICAgIGRvdWJsZSBtX3RpbWVVc2VkOworICAgICAgICAKKyAgICAgICAgYm9vbCBtX2Jv
ZHlTZWVuOworICAgICAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKKyAgICB9OworCit9CisKKyNl
bmRpZgpJbmRleDogV2ViQ29yZS9odG1sL0hUTUw1UHJlbG9hZFNjYW5uZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTDVQcmVsb2FkU2Nhbm5lci5oCShyZXZpc2lvbiA2MTEwNykK
KysrIFdlYkNvcmUvaHRtbC9IVE1MNVByZWxvYWRTY2FubmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxMjEg
KzI0LDM2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIFByZWxvYWRTY2FubmVy
X2gKLSNkZWZpbmUgUHJlbG9hZFNjYW5uZXJfaAorI2lmbmRlZiBIVE1MNVByZWxvYWRTY2FubmVy
X2gKKyNkZWZpbmUgSFRNTDVQcmVsb2FkU2Nhbm5lcl9oCiAKLSNpbmNsdWRlICJBdG9taWNTdHJp
bmcuaCIKKyNpbmNsdWRlICJIVE1MNUxleGVyLmgiCisjaW5jbHVkZSAiSFRNTDVUb2tlbi5oIgog
I2luY2x1ZGUgIlNlZ21lbnRlZFN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAot
ICAgIGNsYXNzIENhY2hlZFJlc291cmNlOwotICAgIGNsYXNzIENhY2hlZFJlc291cmNlQ2xpZW50
OwotICAgIGNsYXNzIERvY3VtZW50OwotICAgIAotICAgIGNsYXNzIFByZWxvYWRTY2FubmVyIDog
cHVibGljIE5vbmNvcHlhYmxlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFByZWxvYWRTY2FubmVy
KERvY3VtZW50Kik7Ci0gICAgICAgIH5QcmVsb2FkU2Nhbm5lcigpOwotICAgICAgICB2b2lkIGJl
Z2luKCk7Ci0gICAgICAgIHZvaWQgd3JpdGUoY29uc3QgU2VnbWVudGVkU3RyaW5nJik7Ci0gICAg
ICAgIHZvaWQgZW5kKCk7Ci0gICAgICAgIGJvb2wgaW5Qcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJu
IG1faW5Qcm9ncmVzczsgfQotICAgICAgICAKLSAgICAgICAgYm9vbCBzY2FubmluZ0JvZHkoKSBj
b25zdDsKLSAgICAgICAgCi0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBjb25zdW1lRW50aXR5KFNl
Z21lbnRlZFN0cmluZyYsIGJvb2wmIG5vdEVub3VnaENoYXJhY3RlcnMpOwotICAgICAgICAKLSAg
ICBwcml2YXRlOgotICAgICAgICB2b2lkIHRva2VuaXplKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYp
OwotICAgICAgICB2b2lkIHJlc2V0KCk7Ci0gICAgICAgIAotICAgICAgICB2b2lkIGVtaXRUYWco
KTsKLSAgICAgICAgdm9pZCBlbWl0Q2hhcmFjdGVyKFVDaGFyKTsKLSAgICAgICAgCi0gICAgICAg
IHZvaWQgdG9rZW5pemVDU1MoVUNoYXIpOwotICAgICAgICB2b2lkIGVtaXRDU1NSdWxlKCk7Ci0g
ICAgICAgIAotICAgICAgICB2b2lkIHByb2Nlc3NBdHRyaWJ1dGUoKTsKLQotICAgICAgICAKLSAg
ICAgICAgdm9pZCBjbGVhckxhc3RDaGFyYWN0ZXJzKCk7Ci0gICAgICAgIHZvaWQgcmVtZW1iZXJD
aGFyYWN0ZXIoVUNoYXIpOwotICAgICAgICBib29sIGxhc3RDaGFyYWN0ZXJzTWF0Y2goY29uc3Qg
Y2hhciosIHVuc2lnbmVkIGNvdW50KSBjb25zdDsKLSAgICAgICAgCi0gICAgICAgIGJvb2wgbV9p
blByb2dyZXNzOwotICAgICAgICBTZWdtZW50ZWRTdHJpbmcgbV9zb3VyY2U7Ci0gICAgICAgIAot
ICAgICAgICBlbnVtIFN0YXRlIHsKLSAgICAgICAgICAgIERhdGEsCi0gICAgICAgICAgICBFbnRp
dHlEYXRhLAotICAgICAgICAgICAgVGFnT3BlbiwKLSAgICAgICAgICAgIENsb3NlVGFnT3BlbiwK
LSAgICAgICAgICAgIFRhZ05hbWUsCi0gICAgICAgICAgICBCZWZvcmVBdHRyaWJ1dGVOYW1lLAot
ICAgICAgICAgICAgQXR0cmlidXRlTmFtZSwKLSAgICAgICAgICAgIEFmdGVyQXR0cmlidXRlTmFt
ZSwKLSAgICAgICAgICAgIEJlZm9yZUF0dHJpYnV0ZVZhbHVlLAotICAgICAgICAgICAgQXR0cmli
dXRlVmFsdWVEb3VibGVRdW90ZWQsCi0gICAgICAgICAgICBBdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1
b3RlZCwKLSAgICAgICAgICAgIEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWQsCi0gICAgICAgICAgICBF
bnRpdHlJbkF0dHJpYnV0ZVZhbHVlLAotICAgICAgICAgICAgQm9ndXNDb21tZW50LAotICAgICAg
ICAgICAgTWFya3VwRGVjbGFyYXRpb25PcGVuLAotICAgICAgICAgICAgQ29tbWVudFN0YXJ0LAot
ICAgICAgICAgICAgQ29tbWVudFN0YXJ0RGFzaCwKLSAgICAgICAgICAgIENvbW1lbnQsCi0gICAg
ICAgICAgICBDb21tZW50RW5kRGFzaCwKLSAgICAgICAgICAgIENvbW1lbnRFbmQKLSAgICAgICAg
fTsKLSAgICAgICAgU3RhdGUgbV9zdGF0ZTsKLSAgICAgICAgYm9vbCBtX2VzY2FwZTsKLSAgICAg
ICAgZW51bSBDb250ZW50TW9kZWwgewotICAgICAgICAgICAgUENEQVRBLAotICAgICAgICAgICAg
UkNEQVRBLAotICAgICAgICAgICAgQ0RBVEEsCi0gICAgICAgICAgICBQTEFJTlRFWFQKLSAgICAg
ICAgfTsKLSAgICAgICAgQ29udGVudE1vZGVsIG1fY29udGVudE1vZGVsOwotICAgICAgICB1bnNp
Z25lZCBtX2NvbW1lbnRQb3M7Ci0gICAgICAgIFN0YXRlIG1fc3RhdGVCZWZvcmVFbnRpdHlJbkF0
dHJpYnV0ZVZhbHVlOwotICAgICAgICAKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxh
c3RDaGFyYWN0ZXJzQnVmZmVyU2l6ZSA9IDg7Ci0gICAgICAgIFVDaGFyIG1fbGFzdENoYXJhY3Rl
cnNbbGFzdENoYXJhY3RlcnNCdWZmZXJTaXplXTsKLSAgICAgICAgdW5zaWduZWQgbV9sYXN0Q2hh
cmFjdGVySW5kZXg7Ci0gICAgICAgIAotICAgICAgICBib29sIG1fY2xvc2VUYWc7Ci0gICAgICAg
IFZlY3RvcjxVQ2hhciwgMzI+IG1fdGFnTmFtZTsKLSAgICAgICAgVmVjdG9yPFVDaGFyLCAzMj4g
bV9hdHRyaWJ1dGVOYW1lOwotICAgICAgICBWZWN0b3I8VUNoYXI+IG1fYXR0cmlidXRlVmFsdWU7
Ci0gICAgICAgIEF0b21pY1N0cmluZyBtX2xhc3RTdGFydFRhZzsKLSAgICAgICAgCi0gICAgICAg
IFN0cmluZyBtX3VybFRvTG9hZDsKLSAgICAgICAgU3RyaW5nIG1fY2hhcnNldDsKLSAgICAgICAg
Ym9vbCBtX2xpbmtJc1N0eWxlU2hlZXQ7Ci0gICAgICAgIAotICAgICAgICBlbnVtIENTU1N0YXRl
IHsKLSAgICAgICAgICAgIENTU0luaXRpYWwsCi0gICAgICAgICAgICBDU1NNYXliZUNvbW1lbnQs
Ci0gICAgICAgICAgICBDU1NDb21tZW50LAotICAgICAgICAgICAgQ1NTTWF5YmVDb21tZW50RW5k
LAotICAgICAgICAgICAgQ1NTUnVsZVN0YXJ0LAotICAgICAgICAgICAgQ1NTUnVsZSwKLSAgICAg
ICAgICAgIENTU0FmdGVyUnVsZSwKLSAgICAgICAgICAgIENTU1J1bGVWYWx1ZSwKLSAgICAgICAg
ICAgIENTU0FmdGVyUnVsZVZhbHVlCi0gICAgICAgIH07Ci0gICAgICAgIENTU1N0YXRlIG1fY3Nz
U3RhdGU7Ci0gICAgICAgIFZlY3RvcjxVQ2hhciwgMTY+IG1fY3NzUnVsZTsKLSAgICAgICAgVmVj
dG9yPFVDaGFyPiBtX2Nzc1J1bGVWYWx1ZTsKLSAgICAgICAgCi0gICAgICAgIGRvdWJsZSBtX3Rp
bWVVc2VkOwotICAgICAgICAKLSAgICAgICAgYm9vbCBtX2JvZHlTZWVuOwotICAgICAgICBEb2N1
bWVudCogbV9kb2N1bWVudDsKLSAgICB9OworCitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIEhUTUw1
VG9rZW47CitjbGFzcyBTZWdtZW50ZWRTdHJpbmc7CisKK2NsYXNzIEhUTUw1UHJlbG9hZFNjYW5u
ZXIgOiBwdWJsaWMgTm9uY29weWFibGUgeworcHVibGljOgorICAgIEhUTUw1UHJlbG9hZFNjYW5u
ZXIoRG9jdW1lbnQqKTsKKworICAgIHZvaWQgc2Nhbihjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHNv
dXJjZSk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBwcm9jZXNzVG9rZW4oKTsKKyAgICBib29sIHNj
YW5uaW5nQm9keSgpIGNvbnN0OworCisgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisgICAgU2Vn
bWVudGVkU3RyaW5nIG1fc291cmNlOworICAgIEhUTUw1TGV4ZXIgbV9sZXhlcjsKKyAgICBIVE1M
NVRva2VuIG1fdG9rZW47CisgICAgYm9vbCBtX2JvZHlTZWVuOworfTsKIAogfQogCkluZGV4OiBX
ZWJDb3JlL2h0bWwvSFRNTDVUb2tlbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1M
NVRva2VuLmgJKHJldmlzaW9uIDYxMTA3KQorKysgV2ViQ29yZS9odG1sL0hUTUw1VG9rZW4uaAko
d29ya2luZyBjb3B5KQpAQCAtMTYwLDM5ICsxNjAsMzkgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gbV9zZWxmQ2xvc2luZzsKICAgICB9CiAKLSAgICBBdHRyaWJ1dGVMaXN0JiBhdHRyaWJ1dGVz
KCkKKyAgICBjb25zdCBBdHRyaWJ1dGVMaXN0JiBhdHRyaWJ1dGVzKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gU3RhcnRUYWcgfHwgbV90eXBlID09IEVuZFRhZyk7CiAg
ICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXM7CiAgICAgfQogCi0gICAgY29uc3QgRGF0YVZlY3Rv
ciYgbmFtZSgpCisgICAgY29uc3QgRGF0YVZlY3RvciYgbmFtZSgpIGNvbnN0CiAgICAgewogICAg
ICAgICBBU1NFUlQobV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRUYWcgfHwgbV90
eXBlID09IERPQ1RZUEUpOwogICAgICAgICByZXR1cm4gbV9kYXRhOwogICAgIH0KIAotICAgIGNv
bnN0IERhdGFWZWN0b3ImIGNoYXJhY3RlcnMoKQorICAgIGNvbnN0IERhdGFWZWN0b3ImIGNoYXJh
Y3RlcnMoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBDaGFyYWN0ZXIp
OwogICAgICAgICByZXR1cm4gbV9kYXRhOwogICAgIH0KIAotICAgIGNvbnN0IERhdGFWZWN0b3Im
IGNvbW1lbnQoKQorICAgIGNvbnN0IERhdGFWZWN0b3ImIGNvbW1lbnQoKSBjb25zdAogICAgIHsK
ICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBDb21tZW50KTsKICAgICAgICAgcmV0dXJuIG1fZGF0
YTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogRGlzdGluZ3Vpc2ggYmV0d2VlbiBhIG1pc3Npbmcg
cHVibGljIGlkZW50aWZlciBhbmQgYW4gZW1wdHkgb25lLgotICAgIGNvbnN0IFdURjo6VmVjdG9y
PFVDaGFyPiYgcHVibGljSWRlbnRpZmllcigpCisgICAgY29uc3QgV1RGOjpWZWN0b3I8VUNoYXI+
JiBwdWJsaWNJZGVudGlmaWVyKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gRE9DVFlQRSk7CiAgICAgICAgIHJldHVybiBtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lkZW50
aWZpZXI7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IERpc3Rpbmd1aXNoIGJldHdlZW4gYSBtaXNz
aW5nIHN5c3RlbSBpZGVudGlmZXIgYW5kIGFuIGVtcHR5IG9uZS4KLSAgICBjb25zdCBXVEY6OlZl
Y3RvcjxVQ2hhcj4mIHN5c3RlbUlkZW50aWZpZXIoKQorICAgIGNvbnN0IFdURjo6VmVjdG9yPFVD
aGFyPiYgc3lzdGVtSWRlbnRpZmllcigpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQobV90
eXBlID09IERPQ1RZUEUpOwogICAgICAgICByZXR1cm4gbV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1J
ZGVudGlmaWVyOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUw1VHJlZUJ1aWxkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmNwcAkocmV2aXNpb24gNjEx
MDcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTDVUcmVlQnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc0LDEyICs3NCwxMiBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0VG9PbGRTdHlsZShIVE1MNVRv
a2VuCiAgICAgICAgIG9sZFN0eWxlVG9rZW4uYmVnaW5UYWcgPSAodG9rZW4udHlwZSgpID09IEhU
TUw1VG9rZW46OlN0YXJ0VGFnKTsKICAgICAgICAgb2xkU3R5bGVUb2tlbi5zZWxmQ2xvc2luZ1Rh
ZyA9IHRva2VuLnNlbGZDbG9zaW5nKCk7CiAgICAgICAgIG9sZFN0eWxlVG9rZW4udGFnTmFtZSA9
IEF0b21pY1N0cmluZyh0b2tlbi5uYW1lKCkuZGF0YSgpLCB0b2tlbi5uYW1lKCkuc2l6ZSgpKTsK
LSAgICAgICAgSFRNTDVUb2tlbjo6QXR0cmlidXRlTGlzdCYgYXR0cmlidXRlcyA9IHRva2VuLmF0
dHJpYnV0ZXMoKTsKLSAgICAgICAgZm9yIChIVE1MNVRva2VuOjpBdHRyaWJ1dGVMaXN0OjppdGVy
YXRvciBpdGVyID0gYXR0cmlidXRlcy5iZWdpbigpOworICAgICAgICBjb25zdCBIVE1MNVRva2Vu
OjpBdHRyaWJ1dGVMaXN0JiBhdHRyaWJ1dGVzID0gdG9rZW4uYXR0cmlidXRlcygpOworICAgICAg
ICBmb3IgKEhUTUw1VG9rZW46OkF0dHJpYnV0ZUxpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBh
dHRyaWJ1dGVzLmJlZ2luKCk7CiAgICAgICAgICAgICAgaXRlciAhPSBhdHRyaWJ1dGVzLmVuZCgp
OyArK2l0ZXIpIHsKICAgICAgICAgICAgIGlmICghaXRlci0+bV9uYW1lLmlzRW1wdHkoKSkgewot
ICAgICAgICAgICAgICAgIFN0cmluZyBuYW1lID0gU3RyaW5nKFN0cmluZ0ltcGw6OmFkb3B0KGl0
ZXItPm1fbmFtZSkpOwotICAgICAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IFN0cmluZyhTdHJp
bmdJbXBsOjphZG9wdChpdGVyLT5tX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAgU3RyaW5nIG5h
bWUoaXRlci0+bV9uYW1lLmRhdGEoKSwgaXRlci0+bV9uYW1lLnNpemUoKSk7CisgICAgICAgICAg
ICAgICAgU3RyaW5nIHZhbHVlKGl0ZXItPm1fdmFsdWUuZGF0YSgpLCBpdGVyLT5tX3ZhbHVlLnNp
emUoKSk7CiAgICAgICAgICAgICAgICAgUmVmUHRyPEF0dHJpYnV0ZT4gbWFwcGVkQXR0cmlidXRl
ID0gQXR0cmlidXRlOjpjcmVhdGVNYXBwZWQobmFtZSwgdmFsdWUpOwogICAgICAgICAgICAgICAg
IGlmICghb2xkU3R5bGVUb2tlbi5hdHRycykKICAgICAgICAgICAgICAgICAgICAgb2xkU3R5bGVU
b2tlbi5hdHRycyA9IE5hbWVkTm9kZU1hcDo6Y3JlYXRlKCk7CkBAIC0xMzIsNiArMTMyLDIyIEBA
IFBhc3NSZWZQdHI8RWxlbWVudD4gSFRNTDVUcmVlQnVpbGRlcjo6dGEKICAgICByZXR1cm4gbV9z
Y3JpcHRUb1Byb2Nlc3MucmVsZWFzZSgpOwogfQogCitIVE1MNUxleGVyOjpTdGF0ZSBIVE1MNVRy
ZWVCdWlsZGVyOjphZGp1c3RlZExleGVyU3RhdGUoSFRNTDVMZXhlcjo6U3RhdGUgc3RhdGUsIGNv
bnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkKK3sKKyAgICBpZiAodGFnTmFtZSA9PSB0ZXh0YXJl
YVRhZyB8fCB0YWdOYW1lID09IHRpdGxlVGFnKQorICAgICAgICByZXR1cm4gSFRNTDVMZXhlcjo6
UkNEQVRBU3RhdGU7CisKKyAgICBpZiAodGFnTmFtZSA9PSBzdHlsZVRhZyB8fCB0YWdOYW1lID09
IGlmcmFtZVRhZyB8fCB0YWdOYW1lID09IHhtcFRhZyB8fCB0YWdOYW1lID09IG5vZW1iZWRUYWcp
IHsKKyAgICAgICAgLy8gRklYTUU6IG5vc2NyaXB0IGFuZCBub2ZyYW1lcyBtYXkgY29uZGl0aW9u
YWxseSBlbnRlciB0aGlzIHN0YXRlIGFzIHdlbGwuCisgICAgICAgIHJldHVybiBIVE1MNUxleGVy
OjpSQVdURVhUU3RhdGU7CisgICAgfQorCisgICAgaWYgKHRhZ05hbWUgPT0gcGxhaW50ZXh0VGFn
KQorICAgICAgICByZXR1cm4gSFRNTDVMZXhlcjo6UExBSU5URVhUU3RhdGU7CisKKyAgICByZXR1
cm4gc3RhdGU7Cit9CisKIFBhc3NSZWZQdHI8Tm9kZT4gSFRNTDVUcmVlQnVpbGRlcjo6cGFzc1Rv
a2VuVG9MZWdhY3lQYXJzZXIoSFRNTDVUb2tlbiYgdG9rZW4pCiB7CiAgICAgaWYgKHRva2VuLnR5
cGUoKSA9PSBIVE1MNVRva2VuOjpET0NUWVBFKSB7CkBAIC0xNTcsMTggKzE3MywxMSBAQCBQYXNz
UmVmUHRyPE5vZGU+IEhUTUw1VHJlZUJ1aWxkZXI6OnBhc3NUCiAgICAgICAgICAgICBoYW5kbGVT
Y3JpcHRTdGFydFRhZygpOwogICAgICAgICAgICAgbV9sYXN0U2NyaXB0RWxlbWVudCA9IHN0YXRp
Y19wb2ludGVyX2Nhc3Q8RWxlbWVudD4ocmVzdWx0KTsKICAgICAgICAgICAgIG1fbGFzdFNjcmlw
dEVsZW1lbnRTdGFydExpbmUgPSBtX2xleGVyLT5saW5lTnVtYmVyKCk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAob2xkU3R5bGVUb2tlbi50YWdOYW1lID09IHRleHRhcmVhVGFnIHx8IG9sZFN0eWxlVG9r
ZW4udGFnTmFtZSA9PSB0aXRsZVRhZykKLSAgICAgICAgICAgIG1fbGV4ZXItPnNldFN0YXRlKEhU
TUw1TGV4ZXI6OlJDREFUQVN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAob2xkU3R5bGVUb2tlbi50
YWdOYW1lID09IHN0eWxlVGFnIHx8IG9sZFN0eWxlVG9rZW4udGFnTmFtZSA9PSBpZnJhbWVUYWcK
LSAgICAgICAgICAgICAgICAgfHwgb2xkU3R5bGVUb2tlbi50YWdOYW1lID09IHhtcFRhZyB8fCBv
bGRTdHlsZVRva2VuLnRhZ05hbWUgPT0gbm9lbWJlZFRhZykgewotICAgICAgICAgICAgLy8gRklY
TUU6IG5vc2NyaXB0IGFuZCBub2ZyYW1lcyBtYXkgY29uZGl0aW9uYWxseSBlbnRlciB0aGlzIHN0
YXRlIGFzIHdlbGwuCi0gICAgICAgICAgICBtX2xleGVyLT5zZXRTdGF0ZShIVE1MNUxleGVyOjpS
QVdURVhUU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKG9sZFN0eWxlVG9rZW4udGFnTmFtZSA9
PSBwbGFpbnRleHRUYWcpCi0gICAgICAgICAgICBtX2xleGVyLT5zZXRTdGF0ZShIVE1MNUxleGVy
OjpQTEFJTlRFWFRTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKG9sZFN0eWxlVG9rZW4udGFnTmFt
ZSA9PSBwcmVUYWcgfHwgb2xkU3R5bGVUb2tlbi50YWdOYW1lID09IGxpc3RpbmdUYWcpCisgICAg
ICAgIH0gZWxzZSBpZiAob2xkU3R5bGVUb2tlbi50YWdOYW1lID09IHByZVRhZyB8fCBvbGRTdHls
ZVRva2VuLnRhZ05hbWUgPT0gbGlzdGluZ1RhZykKICAgICAgICAgICAgIG1fbGV4ZXItPnNraXBM
ZWFkaW5nTmV3TGluZUZvckxpc3RpbmcoKTsKLSAgICB9Ci0gICAgaWYgKHRva2VuLnR5cGUoKSA9
PSBIVE1MNVRva2VuOjpFbmRUYWcpIHsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9sZXhl
ci0+c2V0U3RhdGUoYWRqdXN0ZWRMZXhlclN0YXRlKG1fbGV4ZXItPnN0YXRlKCksIG9sZFN0eWxl
VG9rZW4udGFnTmFtZSkpOworICAgIH0gZWxzZSBpZiAodG9rZW4udHlwZSgpID09IEhUTUw1VG9r
ZW46OkVuZFRhZykgewogICAgICAgICBpZiAob2xkU3R5bGVUb2tlbi50YWdOYW1lID09IHNjcmlw
dFRhZyAmJiBpbnNlcnRpb25Nb2RlKCkgIT0gQWZ0ZXJGcmFtZXNldCkgewogICAgICAgICAgICAg
aWYgKG1fbGFzdFNjcmlwdEVsZW1lbnQpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQobV9sYXN0
U2NyaXB0RWxlbWVudFN0YXJ0TGluZSAhPSB1bmluaXRpYWxpemVkTGluZU51bWJlclZhbHVlKTsK
SW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUw1VHJlZUJ1aWxkZXIuaAkocmV2aXNpb24gNjExMDcpCisrKyBXZWJDb3Jl
L2h0bWwvSFRNTDVUcmVlQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaWZuZGVmIEhUTUw1VHJlZUJ1aWxkZXJfaAogI2RlZmluZSBIVE1MNVRyZWVCdWlsZGVyX2gK
IAorI2luY2x1ZGUgIkhUTUw1TGV4ZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
ICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAg
LTMzLDEwICszNCwxMCBAQAogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VuaWNvZGUuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgeworCiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFz
cyBGcmFtZTsKLWNsYXNzIEhUTUw1TGV4ZXI7CiBjbGFzcyBIVE1MNVRva2VuOwogY2xhc3MgSFRN
TERvY3VtZW50OwogY2xhc3MgTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3RvcjsKQEAgLTU4LDYgKzU5
LDggQEAgcHVibGljOgogICAgIC8vIERvbmUsIGNsb3NlIGFueSBvcGVuIHRhZ3MsIGV0Yy4KICAg
ICB2b2lkIGZpbmlzaGVkKCk7CiAKKyAgICBzdGF0aWMgSFRNTDVMZXhlcjo6U3RhdGUgYWRqdXN0
ZWRMZXhlclN0YXRlKEhUTUw1TGV4ZXI6OlN0YXRlLCBjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05h
bWUpOworCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSBkaXJ0eSwgcm90dGVuIGhhY2sgdG8ga2Vl
cCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50IGhhcHB5CiAgICAgLy8gdW50aWwgd2Ugc3RvcCB1c2lu
ZyB0aGUgbGVnYWN5IHBhcnNlci4gRE8gTk9UIENBTEwgVEhJUyBNRVRIT0QuCiAgICAgTGVnYWN5
SFRNTFRyZWVDb25zdHJ1Y3RvciogbGVnYWN5VHJlZUNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1
cm4gbV9sZWdhY3lUcmVlQ29uc3RydWN0b3IuZ2V0KCk7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58628</attachid>
            <date>2010-06-14 01:43:20 -0700</date>
            <delta_ts>2010-06-14 15:31:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40557-20100614014319.patch</filename>
            <type>text/plain</type>
            <size>26888</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCBkYzk1Y2RhMGY0YjljYmNlNzM3MDA3MzQzMmNkNGI3YzQyZGMwYTQ1Li4xZDY2OWNhN2RlZjlh
ODg4YjRiZmNiNTA3ODliNzQ4NzcxZjk3YWQ4IDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0yNTEsOCArMjUxLDkgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJaHRtbC9IVE1MNUVudGl0eVBhcnNlci5j
cHAgXAogCWh0bWwvSFRNTDVMZXhlci5jcHAgXAogCWh0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5j
cHAgXAotCWh0bWwvSFRNTDVUcmVlQnVpbGRlci5jcHAgXAorCWh0bWwvSFRNTDVQcmVsb2FkU2Nh
bm5lci5jcHAgXAogCWh0bWwvSFRNTDVTY3JpcHRSdW5uZXIuY3BwIFwKKwlodG1sL0hUTUw1VHJl
ZUJ1aWxkZXIuY3BwIFwKIAlodG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcCBcCiAJaHRtbC9IVE1M
Q29sbGVjdGlvbi5jcHAgXAogCWh0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHAgXApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggZDUxZWQxNGFlNmY3YTA2N2ExYTI5ZGVmZDhmM2FkYjc1N2ZkZTdjMy4uNTViNzM4ZWQxNWU3
MDdkNjI4Y2Q3NGQxZDczNDQ5ODU5NGFjYTAxNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC05MDYsOCArOTA2LDkgQEAg
U0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGh0bWwvSFRNTDVFbnRpdHlQYXJzZXIuY3BwCiAgICAg
aHRtbC9IVE1MNUxleGVyLmNwcAogICAgIGh0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHAKLSAg
ICBodG1sL0hUTUw1VHJlZUJ1aWxkZXIuY3BwCisgICAgaHRtbC9IVE1MNVByZWxvYWRTY2FubmVy
LmNwcAogICAgIGh0bWwvSFRNTDVTY3JpcHRSdW5uZXIuY3BwCisgICAgaHRtbC9IVE1MNVRyZWVC
dWlsZGVyLmNwcAogICAgIGh0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwCiAgICAgaHRtbC9IVE1M
QW5jaG9yRWxlbWVudC5jcHAKICAgICBodG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMzljZGE2
NDQyMzA3NTZlOTFhMjRmN2UxNGRiYTVjMTgwYTdmM2YwLi5jYThlN2ZjMjNiYmRjMWUwZmU2NmE5
NGQ0YjdhMWY2YTE2MzM5MTBjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEwLTA2LTE0ICBBZGFtIEJhcnRo
ICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIGEgcHJlbG9hZCBzY2FubmVyIGZvciB0aGUgSFRNTDUgcGFyc2Vy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDU1Nwor
CisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIHNpbXBsZSBwcmVsb2FkIHNjYW5uZXIgZm9yIHRo
ZSBIVE1MNSBwYXJzZXIuICBUaGlzCisgICAgICAgIHByZWxvYWQgc2Nhbm5lciBpcyBub3QgYXMg
YXdlc29tZSBhcyB0aGUgb2xkIG9uZSBiZWNhdXNlIGl0IGRvZXNuJ3QKKyAgICAgICAgc2NhbiBD
U1MsIGJ1dCBpdCdzIG11Y2ggc2ltcGxlci4KKworICAgICAgICAqIEFuZHJvaWQubWs6CisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgICAgIC0gQnVpbGQgZmlsZSB0b3J0dXJlLgorICAgICAg
ICAqIGh0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
NURvY3VtZW50UGFyc2VyOjp3cml0ZSk6CisgICAgICAgICAgICAtIENhbGwgaW50byB0aGUgcHJl
bG9hZCBzY2FubmVyIHdoZW4gd2FpdGluZyBmb3IgYSBzY3JpcHQuCisgICAgICAgICogaHRtbC9I
VE1MNURvY3VtZW50UGFyc2VyLmg6CisgICAgICAgICogaHRtbC9IVE1MNUxleGVyLmg6CisgICAg
ICAgICAgICAtIEV4cG9zZSB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgbGV4ZXIuICBZZXMsIHRo
YXQncyBsYW1lLgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVMZXhlcjo6c3RhdGUpOgorICAgICAg
ICAqIGh0bWwvSFRNTDVQcmVsb2FkU2Nhbm5lci5jcHA6IENvcGllZCBmcm9tIFdlYkNvcmUvaHRt
bC9QcmVsb2FkU2Nhbm5lci5jcHAuCisgICAgICAgIChXZWJDb3JlOjpIVE1MNVByZWxvYWRTY2Fu
bmVyOjpIVE1MNVByZWxvYWRTY2FubmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1UHJlbG9h
ZFNjYW5uZXI6OnNjYW4pOgorICAgICAgICAgICAgLSBBIHNpbXBsZSBsb29wIHRvIHB1bXAgdGhl
IHByZWxvYWQgc2Nhbm5lcidzIGxleGVyLgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVQcmVsb2Fk
U2Nhbm5lcjo6cHJvY2Vzc1Rva2VuKToKKyAgICAgICAgICAgIC0gUHJlbG9hZCBpbnRlcmVzdGlu
ZyByZXNvdXJjZXMuICBTdG9sZW4gZnJvbSB0aGUgb2xkIHByZWxvYWQKKyAgICAgICAgICAgICAg
c2Nhbm5lci4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1UHJlbG9hZFNjYW5uZXI6OnNjYW5uaW5n
Qm9keSk6CisgICAgICAgICogaHRtbC9IVE1MNVByZWxvYWRTY2FubmVyLmg6IENvcGllZCBmcm9t
IFdlYkNvcmUvaHRtbC9QcmVsb2FkU2Nhbm5lci5oLgorICAgICAgICAqIGh0bWwvSFRNTDVUb2tl
bi5oOgorICAgICAgICAgICAgLSBBZGRlZCBjb25zdCBmb3IgYmV0dGVyIHR5cGluZy4gIFByb2Jh
Ymx5IG5vdCBuZWNlc3NhcnkgZm9yIHRoZQorICAgICAgICAgICAgICBmaW5hbCBwYXRjaCwgYnV0
IHRoaXMgaGVscGVkIHdpdGggYW4gaW50ZXJtZWRpYXRlIHZlcnNpb24gYW5kIGlzCisgICAgICAg
ICAgICAgIGEgZ29vZCBwcmFjdGljZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VG9rZW46OmF0
dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbjo6bmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MNVRva2VuOjpjaGFyYWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUw1VG9rZW46OmNvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbjo6cHVibGlj
SWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNVRva2VuOjpzeXN0ZW1JZGVudGlm
aWVyKToKKyAgICAgICAgKiBodG1sL0hUTUw1VHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydFRvT2xkU3R5bGUpOgorICAgICAgICAgICAgLSBTb21lIGZhbGxvdXQgZnJv
bSBhZGRpbmcgY29uc3QuCisgICAgICAgIChXZWJDb3JlOjpIVE1MNVRyZWVCdWlsZGVyOjphZGp1
c3RlZExleGVyU3RhdGUpOgorICAgICAgICAgICAgLSBBYnN0cmFjdCB0aGlzIHBpZWNlIG9mIHRo
ZSBIVE1MNSB0cmVlIGNvbnN0cnVjdGlvbiBhbGdvcml0aG0gc28KKyAgICAgICAgICAgICAgd2Ug
Y2FuIHJlLXVzZSBpdCBpbiB0aGUgcHJlbG9hZCBzY2FubmVyLiAgSXQncyB0b28gYmFkIHRoZQor
ICAgICAgICAgICAgICBsZXhlcidzIHN0YXRlIG1hY2hpbmUgaXNuJ3Qgc2VsZi1jb250YWluZWQs
IGJ1dCB0aGF0J3MgdGhlIHdheQorICAgICAgICAgICAgICB0aGUgc3BlYyBpcyB3cml0dGVuLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTDVUcmVlQnVpbGRlcjo6cGFzc1Rva2VuVG9MZWdhY3lQYXJz
ZXIpOgorICAgICAgICAgICAgLSBDYWxsIHRoZSBuZXcgZnVuY3Rpb24uCisgICAgICAgICogaHRt
bC9IVE1MNVRyZWVCdWlsZGVyLmg6CisKIDIwMTAtMDYtMTMgIEFuZGVycyBCYWtrZW4gIDxhZ2Jh
a2tlbkBnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpp
bmRleCBiNDM0ZmMzOThjYWI3YzU3ZjY5MjRjYTU4YzY3YWZhNTU1NjVjM2Y1Li4yMmE4YTVkMDlk
N2E0ZWY1ZTBlOTM1MGU5ZjlhYTVhZTdjMzM4NGIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTEwOTQsMTEgKzEwOTQs
MTMgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2h0bWwvSFRNTDVUb2tlbi5oIFwK
IAlXZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHAgXAogCVdlYkNvcmUvaHRtbC9I
VE1MNURvY3VtZW50UGFyc2VyLmggXAotCVdlYkNvcmUvaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmNw
cCBcCi0JV2ViQ29yZS9odG1sL0hUTUw1VHJlZUJ1aWxkZXIuaCBcCisJV2ViQ29yZS9odG1sL0hU
TUw1UHJlbG9hZFNjYW5uZXIuY3BwIFwKKwlXZWJDb3JlL2h0bWwvSFRNTDVQcmVsb2FkU2Nhbm5l
ci5oIFwKIAlXZWJDb3JlL2h0bWwvSFRNTDVTY3JpcHRSdW5uZXIuY3BwIFwKIAlXZWJDb3JlL2h0
bWwvSFRNTDVTY3JpcHRSdW5uZXIuaCBcCiAJV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVy
SG9zdC5oIFwKKwlXZWJDb3JlL2h0bWwvSFRNTDVUcmVlQnVpbGRlci5jcHAgXAorCVdlYkNvcmUv
aHRtbC9IVE1MNVRyZWVCdWlsZGVyLmggXAogCVdlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlv
bi5jcHAgXAogCVdlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5oIFwKIAlXZWJDb3JlL2h0
bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5n
eXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOWY1Yzk1YjgzYmI4ZDljZGM4OTZjMmRh
YmVmODk0MjM4ZTdkMjQzMy4uYWI4MzY0NTM3YzY3NjA2M2E3OWRiMDVjZmMwYjYwNzg2YTI5OGNi
YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTE0ODAsMTAgKzE0ODAsMTIgQEAKICAgICAgICAgICAgICdodG1sL0hUTUw1TGV4
ZXIuaCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcCcsCiAgICAg
ICAgICAgICAnaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmgnLAotICAgICAgICAgICAgJ2h0bWwv
SFRNTDVUcmVlQnVpbGRlci5jcHAnLAotICAgICAgICAgICAgJ2h0bWwvSFRNTDVUcmVlQnVpbGRl
ci5oJywKKyAgICAgICAgICAgICdodG1sL0hUTUw1UHJlbG9hZFNjYW5uZXIuY3BwJywKKyAgICAg
ICAgICAgICdodG1sL0hUTUw1UHJlbG9hZFNjYW5uZXIuaCcsCiAgICAgICAgICAgICAnaHRtbC9I
VE1MNVNjcmlwdFJ1bm5lci5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTDVTY3JpcHRSdW5u
ZXIuaCcsCisgICAgICAgICAgICAnaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmNwcCcsCisgICAgICAg
ICAgICAnaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmgnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTEFs
bENvbGxlY3Rpb24uY3BwJywKICAgICAgICAgICAgICdodG1sL0hUTUxBbGxDb2xsZWN0aW9uLmgn
LAogICAgICAgICAgICAgJ2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwJywKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDRhMjMzNzVj
YjliYTYxM2Q2YjAyMTMwM2ViYjYyMjdhODA5N2ZmODEuLjJjZDk1MWUwZDQxZWU3NzJjZGU1ZDA0
YjJlNzI1MTMwYzMzYmYyZGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIv
V2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtNjEzLDggKzYxMyw5IEBAIFNPVVJDRVMgKz0gXAogICAg
IGh0bWwvSFRNTDVFbnRpdHlQYXJzZXIuY3BwIFwKICAgICBodG1sL0hUTUw1TGV4ZXIuY3BwIFwK
ICAgICBodG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuY3BwIFwKLSAgICBodG1sL0hUTUw1VHJlZUJ1
aWxkZXIuY3BwIFwKKyAgICBodG1sL0hUTUw1UHJlbG9hZFNjYW5uZXIuY3BwIFwKICAgICBodG1s
L0hUTUw1U2NyaXB0UnVubmVyLmNwcCBcCisgICAgaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmNwcCBc
CiAgICAgaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAgXAogICAgIGh0bWwvSFRNTEFuY2hvckVs
ZW1lbnQuY3BwIFwKICAgICBodG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcCBcCmRpZmYgLS1naXQg
YS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA0OTU3ZDJiOTE1OTM4NTJiMmQ1YjM1NzkyZTFh
MGRlZGJiYmQwZmU0Li5kMWYyOGZlODgzMWYyMzI1NjBiMzg3YWU5NTE3YTFiZmU3MjRkZTU5IDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTMzMzI1LDYgKzMzMzI1LDE0
IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGh0bWxcSFRNTDVQcmVsb2FkU2Nhbm5lci5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJ
PEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEhUTUw1UHJlbG9hZFNjYW5uZXIuaCIN
CisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0
bWxcSFRNTDVTY3JpcHRSdW5uZXIuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjA3ZmFhNTc1MmYzNzhkOGMx
NGJmOTExZjY2MmQ5M2Q1MjdjYTZkOC4uZWEzYmUyMDdhZmY0YzI2YzY2MGE4NWFkNGQ5MDFhMjk3
MWU5YTZkMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTI1NjQsNiArMjU2NCw4IEBACiAJCTk3RENFMjAyMTA4MDdDNzUwMDU3RDM5NCAvKiBIaXN0b3J5
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTdEQ0UyMDAxMDgwN0M3NTAwNTdEMzk0IC8qIEhpc3RvcnlDb250cm9sbGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTdERDREODYwRkRG
NEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTdERDREODQwRkRGNEQ2RDAwRUNGOUE0IC8qIFhTU0F1ZGl0
b3IuY3BwICovOyB9OwogCQk5N0RENEQ4NzBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdERDREODUw
RkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCAqLzsgfTsKKwkJOTdFNzkzNjUxMUM2MDMw
OTAwRTY0OUJDIC8qIEhUTUw1UHJlbG9hZFNjYW5uZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdFNzkzNjMxMUM2MDMwOTAwRTY0OUJDIC8qIEhU
TUw1UHJlbG9hZFNjYW5uZXIuY3BwICovOyB9OworCQk5N0U3OTM2NjExQzYwMzA5MDBFNjQ5QkMg
LyogSFRNTDVQcmVsb2FkU2Nhbm5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTdFNzkzNjQxMUM2MDMwOTAwRTY0OUJDIC8qIEhUTUw1UHJlbG9hZFNj
YW5uZXIuaCAqLzsgfTsKIAkJOTdFOEIzNTYxMUEyM0NFMjAwMTY5NDA5IC8qIEhUTUw1TGV4ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdFOEIz
NTQxMUEyM0NFMjAwMTY5NDA5IC8qIEhUTUw1TGV4ZXIuY3BwICovOyB9OwogCQk5N0U4QjM1NzEx
QTIzQ0UyMDAxNjk0MDkgLyogSFRNTDVMZXhlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTdFOEIzNTUxMUEyM0NFMjAwMTY5NDA5IC8qIEhUTUw1TGV4
ZXIuaCAqLzsgfTsKIAkJOTdFOEIzQzMxMUEyODkwODAwMTY5NDA5IC8qIEhUTUw1VG9rZW4uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RThCM0MyMTFB
Mjg5MDgwMDE2OTQwOSAvKiBIVE1MNVRva2VuLmggKi87IH07CkBAIC04MTYwLDYgKzgxNjIsOCBA
QAogCQk5N0RDRTIwMDEwODA3Qzc1MDA1N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xsZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGlzdG9yeUNvbnRyb2xsZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdERDREODQwRkRGNEQ2RDAwRUNGOUE0IC8qIFhTU0F1
ZGl0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWFNTQXVkaXRv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3REQ0RDg1MEZERjRENkUwMEVD
RjlBNCAvKiBYU1NBdWRpdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhT
U0F1ZGl0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdFNzkzNjMxMUM2MDMw
OTAwRTY0OUJDIC8qIEhUTUw1UHJlbG9hZFNjYW5uZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSFRNTDVQcmVsb2FkU2Nhbm5lci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTk3RTc5MzY0MTFDNjAzMDkwMEU2NDlCQyAvKiBIVE1MNVByZWxvYWRT
Y2FubmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUw1UHJlbG9hZFNj
YW5uZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdFOEIzNTQxMUEyM0NFMjAw
MTY5NDA5IC8qIEhUTUw1TGV4ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSFRNTDVMZXhlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3RThC
MzU1MTFBMjNDRTIwMDE2OTQwOSAvKiBIVE1MNUxleGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEhUTUw1TGV4ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTdFOEIzQzIxMUEyODkwODAwMTY5NDA5IC8qIEhUTUw1VG9rZW4uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSFRNTDVUb2tlbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTM0NDYsNiArMTM0NTAsOCBAQAogCQkJCTk3NkU4OTVGMTFDMENBM0EwMEVBOUNBOSAv
KiBIVE1MNUVudGl0eVBhcnNlci5oICovLAogCQkJCTk3RThCMzU0MTFBMjNDRTIwMDE2OTQwOSAv
KiBIVE1MNUxleGVyLmNwcCAqLywKIAkJCQk5N0U4QjM1NTExQTIzQ0UyMDAxNjk0MDkgLyogSFRN
TDVMZXhlci5oICovLAorCQkJCTk3RTc5MzYzMTFDNjAzMDkwMEU2NDlCQyAvKiBIVE1MNVByZWxv
YWRTY2FubmVyLmNwcCAqLywKKwkJCQk5N0U3OTM2NDExQzYwMzA5MDBFNjQ5QkMgLyogSFRNTDVQ
cmVsb2FkU2Nhbm5lci5oICovLAogCQkJCUE4M0IzQUVFMTFBREVGRjUwMDQ1ODgwOSAvKiBIVE1M
NVNjcmlwdFJ1bm5lci5jcHAgKi8sCiAJCQkJQTgzQjNBRUYxMUFERUZGNTAwNDU4ODA5IC8qIEhU
TUw1U2NyaXB0UnVubmVyLmggKi8sCiAJCQkJQTg3RjE2MzQxMUFFODQxMzAwQ0JCMkU1IC8qIEhU
TUw1U2NyaXB0UnVubmVySG9zdC5oICovLApAQCAtMTk0NzMsNiArMTk0NzksNyBAQAogCQkJCUUx
QkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTk3REQ0RDg3MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDRTE3MkUwMTExMzZFOENFMDA2MkE1MzMgLyogWm9vbU1vZGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTk3RTc5MzY2MTFDNjAzMDkwMEU2NDlCQyAvKiBIVE1MNVByZWxvYWRTY2Fu
bmVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIxNzc5LDYgKzIxNzg2LDcgQEAKIAkJCQk5M0YxOUIw
NTA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5N0RENEQ4NjBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRv
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5N0U3OTM2NTExQzYwMzA5MDBFNjQ5QkMgLyogSFRN
TDVQcmVsb2FkU2Nhbm5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50
UGFyc2VyLmNwcAppbmRleCAyOGRmMTRlMjVjMWZiYTEwNjljODhkNWE1YWU1MzY4NzY0NTk3OTg4
Li5iZDA3YmJkNzZiNjE1YTgwZDQ3MTY1YmZmOWU3NWVjZTE1NjgxYzY1IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hU
TUw1RG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTDVMZXhlci5oIgorI2luY2x1
ZGUgIkhUTUw1UHJlbG9hZFNjYW5uZXIuaCIKICNpbmNsdWRlICJIVE1MNVNjcmlwdFJ1bm5lci5o
IgogI2luY2x1ZGUgIkhUTUw1VHJlZUJ1aWxkZXIuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQu
aCIKQEAgLTE2Nyw2ICsxNjgsMTQgQEAgdm9pZCBIVE1MNURvY3VtZW50UGFyc2VyOjp3cml0ZShj
b25zdCBTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgYm9vbCBhcHBlbmREYXRhKQogICAgICAgICBt
X2lucHV0Lmluc2VydEF0Q3VycmVudEluc2VydGlvblBvaW50KHNvdXJjZSk7CiAKICAgICBwdW1w
TGV4ZXJJZlBvc3NpYmxlKCk7CisKKyAgICBpZiAoYXBwZW5kRGF0YSAmJiBpc1dhaXRpbmdGb3JT
Y3JpcHRzKCkpIHsKKyAgICAgICAgQVNTRVJUKG1fbGV4ZXItPnN0YXRlKCkgPT0gSFRNTDVMZXhl
cjo6RGF0YVN0YXRlKTsKKyAgICAgICAgaWYgKCFtX3NjYW5uZXIpCisgICAgICAgICAgICBtX3Nj
YW5uZXIuc2V0KG5ldyBIVE1MNVByZWxvYWRTY2FubmVyKG1fZG9jdW1lbnQpKTsKKyAgICAgICAg
bV9zY2FubmVyLT5zY2FuKG1faW5wdXQuY3VycmVudCgpKTsKKyAgICB9CisKICAgICBlbmRJZkRl
bGF5ZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUw1RG9jdW1lbnRQYXJz
ZXIuaCBiL1dlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmgKaW5kZXggNGE3NWNlYzFl
YWRhYzY1OGMzZWEwMTUzZjU0ZWIwMWE1NzBlZjc2YS4uZjJiN2UyODQxYTk5ODlkYzI2MDc4NDAy
OWM1ZmI4ZWM0Mjg0NGJjZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUw1RG9jdW1lbnRQ
YXJzZXIuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5oCkBAIC00MCw2
ICs0MCw3IEBAIGNsYXNzIExlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I7CiBjbGFzcyBIVE1MNUxl
eGVyOwogY2xhc3MgSFRNTDVTY3JpcHRSdW5uZXI7CiBjbGFzcyBIVE1MNVRyZWVCdWlsZGVyOwor
Y2xhc3MgSFRNTDVQcmVsb2FkU2Nhbm5lcjsKIGNsYXNzIFNjcmlwdENvbnRyb2xsZXI7CiBjbGFz
cyBTY3JpcHRTb3VyY2VDb2RlOwogCkBAIC0xODMsNiArMTg0LDcgQEAgcHJpdmF0ZToKICAgICBP
d25QdHI8SFRNTDVMZXhlcj4gbV9sZXhlcjsKICAgICBPd25QdHI8SFRNTDVTY3JpcHRSdW5uZXI+
IG1fc2NyaXB0UnVubmVyOwogICAgIE93blB0cjxIVE1MNVRyZWVCdWlsZGVyPiBtX3RyZWVDb25z
dHJ1Y3RvcjsKKyAgICBPd25QdHI8SFRNTDVQcmVsb2FkU2Nhbm5lcj4gbV9zY2FubmVyOwogICAg
IGJvb2wgbV9lbmRXYXNEZWxheWVkOwogICAgIGludCBtX3dyaXRlTmVzdGluZ0xldmVsOwogfTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MNUxleGVyLmggYi9XZWJDb3JlL2h0bWwvSFRN
TDVMZXhlci5oCmluZGV4IGZlMzIxZTI0OGIzYTcxYjgyNjE1OTFlMjVmZmEzM2MzZmI5MjEwNjAu
LjA3OWRlNGNkYjdhMDY0NGViNDdiMDRkZWU4NWYxMjNhMGY3OTMxYTMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MNUxleGVyLmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1TGV4ZXIuaApA
QCAtMTIzLDYgKzEyMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgaW50IGxpbmVO
dW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2xpbmVOdW1iZXI7IH0KICAgICAgICAgaW50IGNvbHVt
bk51bWJlcigpIGNvbnN0IHsgcmV0dXJuIDE7IH0gLy8gTWF0Y2hlcyBIVE1MRG9jdW1lbnRQYXJz
ZXIuaCBiZWhhdmlvci4KIAorICAgICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGU7IH0KICAgICAgICAgdm9pZCBzZXRTdGF0ZShTdGF0ZSBzdGF0ZSkgeyBtX3N0YXRlID0g
c3RhdGU7IH0KIAogICAgICAgICAvLyBIYWNrIHRvIHNraXAgbGVhZGluZyBuZXdsaW5lIGluIDxw
cmU+LzxsaXN0aW5nPiBmb3IgYXV0aG9yaW5nIGVhc2UuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvSFRNTDVQcmVsb2FkU2Nhbm5lci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTDVQcmVsb2FkU2Nh
bm5lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTFjYWU0YTcwZmQ1MmM3MjQxMDA5YTkxOWQ2MjY0NmEzOGFm
MzMyNAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNVByZWxvYWRTY2FubmVy
LmNwcApAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9i
aWxlLCBJbmMuIGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLworICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SFRNTDVQcmVsb2FkU2Nhbm5lci5oIgorCisjaW5jbHVkZSAiQ1NTSGVscGVyLmgiCisjaW5jbHVk
ZSAiRG9jTG9hZGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MNVRy
ZWVCdWlsZGVyLmgiCisjaW5jbHVkZSAiSFRNTExpbmtFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKKworSFRNTDVQcmVsb2FkU2Nhbm5lcjo6SFRNTDVQcmVsb2FkU2Nhbm5lcihEb2N1bWVu
dCogZG9jdW1lbnQpCisgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgICwgbV9ib2R5U2Vl
bihmYWxzZSkKK3sKK30KKwordm9pZCBIVE1MNVByZWxvYWRTY2FubmVyOjpzY2FuKGNvbnN0IFNl
Z21lbnRlZFN0cmluZyYgc291cmNlKQoreworICAgIG1fc291cmNlLmFwcGVuZChzb3VyY2UpOwor
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmUtdXNlIHRoZXNlIHRva2VucyBpbiBIVE1MNURvY3Vt
ZW50UGFyc2VyIGlmIHRoZQorICAgIC8vIHBlbmRpbmcgc2NyaXB0IGRvZXNuJ3QgZW5kIHVwIGNh
bGxpbmcgZG9jdW1lbnQud3JpdGUuCisgICAgd2hpbGUgKG1fbGV4ZXIubmV4dFRva2VuKG1fc291
cmNlLCBtX3Rva2VuKSkgeworICAgICAgICBwcm9jZXNzVG9rZW4oKTsKKyAgICAgICAgbV90b2tl
bi5jbGVhcigpOworICAgIH0KK30KKwordm9pZCBIVE1MNVByZWxvYWRTY2FubmVyOjpwcm9jZXNz
VG9rZW4oKQoreworICAgIGlmIChtX3Rva2VuLnR5cGUoKSAhPSBIVE1MNVRva2VuOjpTdGFydFRh
ZykKKyAgICAgICAgcmV0dXJuOworCisgICAgQXRvbWljU3RyaW5nIHRhZ05hbWUobV90b2tlbi5u
YW1lKCkuZGF0YSgpLCBtX3Rva2VuLm5hbWUoKS5zaXplKCkpOworCisgICAgbV9sZXhlci5zZXRT
dGF0ZShIVE1MNVRyZWVCdWlsZGVyOjphZGp1c3RlZExleGVyU3RhdGUobV9sZXhlci5zdGF0ZSgp
LCB0YWdOYW1lKSk7CisKKyAgICBpZiAodGFnTmFtZSA9PSBib2R5VGFnKQorICAgICAgICBtX2Jv
ZHlTZWVuID0gdHJ1ZTsKKworICAgIGlmICh0YWdOYW1lICE9IHNjcmlwdFRhZyAmJiB0YWdOYW1l
ICE9IGltZ1RhZyAmJiB0YWdOYW1lICE9IGxpbmtUYWcpCisgICAgICAgIHJldHVybjsKKworICAg
IFN0cmluZyB1cmxUb0xvYWQ7CisgICAgU3RyaW5nIGNoYXJzZXQ7CisgICAgYm9vbCBsaW5rSXNT
dHlsZVNoZWV0ID0gZmFsc2U7CisKKyAgICBmb3IgKEhUTUw1VG9rZW46OkF0dHJpYnV0ZUxpc3Q6
OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3Rva2VuLmF0dHJpYnV0ZXMoKS5iZWdpbigpOworICAg
ICAgICAgaXRlciAhPSBtX3Rva2VuLmF0dHJpYnV0ZXMoKS5lbmQoKTsgKytpdGVyKSB7CisgICAg
ICAgIEF0b21pY1N0cmluZyBhdHRyaWJ1dGVOYW1lKGl0ZXItPm1fbmFtZS5kYXRhKCksIGl0ZXIt
Pm1fbmFtZS5zaXplKCkpOworICAgICAgICBTdHJpbmcgYXR0cmlidXRlVmFsdWUoaXRlci0+bV92
YWx1ZS5kYXRhKCksIGl0ZXItPm1fdmFsdWUuc2l6ZSgpKTsKKworICAgICAgICBpZiAodGFnTmFt
ZSA9PSBzY3JpcHRUYWcgfHwgdGFnTmFtZSA9PSBpbWdUYWcpIHsKKyAgICAgICAgICAgIGlmIChh
dHRyaWJ1dGVOYW1lID09IHNyY0F0dHIgJiYgdXJsVG9Mb2FkLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgICAgICB1cmxUb0xvYWQgPSBkZXByZWNhdGVkUGFyc2VVUkwoYXR0cmlidXRlVmFsdWUpOwor
ICAgICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlTmFtZSA9PSBjaGFyc2V0QXR0cikKKyAgICAg
ICAgICAgICAgICBjaGFyc2V0ID0gYXR0cmlidXRlVmFsdWU7CisgICAgICAgIH0gZWxzZSBpZiAo
dGFnTmFtZSA9PSBsaW5rVGFnKSB7CisgICAgICAgICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSBo
cmVmQXR0ciAmJiB1cmxUb0xvYWQuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHVybFRvTG9h
ZCA9IGRlcHJlY2F0ZWRQYXJzZVVSTChhdHRyaWJ1dGVWYWx1ZSk7CisgICAgICAgICAgICBlbHNl
IGlmIChhdHRyaWJ1dGVOYW1lID09IHJlbEF0dHIpIHsKKyAgICAgICAgICAgICAgICBIVE1MTGlu
a0VsZW1lbnQ6OlJlbEF0dHJpYnV0ZSByZWw7CisgICAgICAgICAgICAgICAgSFRNTExpbmtFbGVt
ZW50Ojp0b2tlbml6ZVJlbEF0dHJpYnV0ZShhdHRyaWJ1dGVWYWx1ZSwgcmVsKTsKKyAgICAgICAg
ICAgICAgICBsaW5rSXNTdHlsZVNoZWV0ID0gcmVsLm1faXNTdHlsZVNoZWV0ICYmICFyZWwubV9p
c0FsdGVybmF0ZSAmJiAhcmVsLm1faXNJY29uICYmICFyZWwubV9pc0ROU1ByZWZldGNoOworICAg
ICAgICAgICAgfSBlbHNlIGlmIChhdHRyaWJ1dGVOYW1lID09IGNoYXJzZXRBdHRyKQorICAgICAg
ICAgICAgICAgIGNoYXJzZXQgPSBhdHRyaWJ1dGVWYWx1ZTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGlmICh1cmxUb0xvYWQuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
dGFnTmFtZSA9PSBzY3JpcHRUYWcpCisgICAgICAgIG1fZG9jdW1lbnQtPmRvY0xvYWRlcigpLT5w
cmVsb2FkKENhY2hlZFJlc291cmNlOjpTY3JpcHQsIHVybFRvTG9hZCwgY2hhcnNldCwgc2Nhbm5p
bmdCb2R5KCkpOworICAgIGVsc2UgaWYgKHRhZ05hbWUgPT0gaW1nVGFnKSAKKyAgICAgICAgbV9k
b2N1bWVudC0+ZG9jTG9hZGVyKCktPnByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3Vy
Y2UsIHVybFRvTG9hZCwgU3RyaW5nKCksIHNjYW5uaW5nQm9keSgpKTsKKyAgICBlbHNlIGlmICh0
YWdOYW1lID09IGxpbmtUYWcgJiYgbGlua0lzU3R5bGVTaGVldCkgCisgICAgICAgIG1fZG9jdW1l
bnQtPmRvY0xvYWRlcigpLT5wcmVsb2FkKENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0LCB1
cmxUb0xvYWQsIGNoYXJzZXQsIHNjYW5uaW5nQm9keSgpKTsKK30KKworYm9vbCBIVE1MNVByZWxv
YWRTY2FubmVyOjpzY2FubmluZ0JvZHkoKSBjb25zdAoreworICAgIHJldHVybiBtX2RvY3VtZW50
LT5ib2R5KCkgfHwgbV9ib2R5U2VlbjsKK30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0hUTUw1UHJlbG9hZFNjYW5uZXIuaCBiL1dlYkNvcmUvaHRtbC9IVE1MNVByZWxvYWRTY2FubmVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmY4MTAxNDcwYzU4ZDMxNmMwYzhmMGVjZDNjNDVhNzYyZGI3OTNhMQot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNVByZWxvYWRTY2FubmVyLmgKQEAg
LTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgSFRNTDVQcmVsb2FkU2Nhbm5lcl9oCisjZGVmaW5lIEhUTUw1UHJlbG9hZFNj
YW5uZXJfaAorCisjaW5jbHVkZSAiSFRNTDVMZXhlci5oIgorI2luY2x1ZGUgIkhUTUw1VG9rZW4u
aCIKKyNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIEhU
TUw1VG9rZW47CitjbGFzcyBTZWdtZW50ZWRTdHJpbmc7CisKK2NsYXNzIEhUTUw1UHJlbG9hZFNj
YW5uZXIgOiBwdWJsaWMgTm9uY29weWFibGUgeworcHVibGljOgorICAgIEhUTUw1UHJlbG9hZFNj
YW5uZXIoRG9jdW1lbnQqKTsKKworICAgIHZvaWQgc2Nhbihjb25zdCBTZWdtZW50ZWRTdHJpbmcm
IHNvdXJjZSk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBwcm9jZXNzVG9rZW4oKTsKKyAgICBib29s
IHNjYW5uaW5nQm9keSgpIGNvbnN0OworCisgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisgICAg
U2VnbWVudGVkU3RyaW5nIG1fc291cmNlOworICAgIEhUTUw1TGV4ZXIgbV9sZXhlcjsKKyAgICBI
VE1MNVRva2VuIG1fdG9rZW47CisgICAgYm9vbCBtX2JvZHlTZWVuOworfTsKKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MNVRva2VuLmggYi9XZWJDb3JlL2h0bWwv
SFRNTDVUb2tlbi5oCmluZGV4IDZiMGZkYzgxOTAzYjUwNGNiZjlmNDc0NzU2NDBiNzhmMjg1MDY0
YmIuLjdiMDQ3YzM2YTAyZjRlMzFjMWI2NzMwNTY1MzVjOWY5OTJkZmMzMTYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9IVE1MNVRva2VuLmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW4u
aApAQCAtMTYwLDM5ICsxNjAsMzkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9zZWxmQ2xv
c2luZzsKICAgICB9CiAKLSAgICBBdHRyaWJ1dGVMaXN0JiBhdHRyaWJ1dGVzKCkKKyAgICBjb25z
dCBBdHRyaWJ1dGVMaXN0JiBhdHRyaWJ1dGVzKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gU3RhcnRUYWcgfHwgbV90eXBlID09IEVuZFRhZyk7CiAgICAgICAgIHJldHVy
biBtX2F0dHJpYnV0ZXM7CiAgICAgfQogCi0gICAgY29uc3QgRGF0YVZlY3RvciYgbmFtZSgpCisg
ICAgY29uc3QgRGF0YVZlY3RvciYgbmFtZSgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQo
bV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRUYWcgfHwgbV90eXBlID09IERPQ1RZ
UEUpOwogICAgICAgICByZXR1cm4gbV9kYXRhOwogICAgIH0KIAotICAgIGNvbnN0IERhdGFWZWN0
b3ImIGNoYXJhY3RlcnMoKQorICAgIGNvbnN0IERhdGFWZWN0b3ImIGNoYXJhY3RlcnMoKSBjb25z
dAogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBDaGFyYWN0ZXIpOwogICAgICAgICBy
ZXR1cm4gbV9kYXRhOwogICAgIH0KIAotICAgIGNvbnN0IERhdGFWZWN0b3ImIGNvbW1lbnQoKQor
ICAgIGNvbnN0IERhdGFWZWN0b3ImIGNvbW1lbnQoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBDb21tZW50KTsKICAgICAgICAgcmV0dXJuIG1fZGF0YTsKICAgICB9CiAK
ICAgICAvLyBGSVhNRTogRGlzdGluZ3Vpc2ggYmV0d2VlbiBhIG1pc3NpbmcgcHVibGljIGlkZW50
aWZlciBhbmQgYW4gZW1wdHkgb25lLgotICAgIGNvbnN0IFdURjo6VmVjdG9yPFVDaGFyPiYgcHVi
bGljSWRlbnRpZmllcigpCisgICAgY29uc3QgV1RGOjpWZWN0b3I8VUNoYXI+JiBwdWJsaWNJZGVu
dGlmaWVyKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRE9DVFlQRSk7
CiAgICAgICAgIHJldHVybiBtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lkZW50aWZpZXI7CiAgICAg
fQogCiAgICAgLy8gRklYTUU6IERpc3Rpbmd1aXNoIGJldHdlZW4gYSBtaXNzaW5nIHN5c3RlbSBp
ZGVudGlmZXIgYW5kIGFuIGVtcHR5IG9uZS4KLSAgICBjb25zdCBXVEY6OlZlY3RvcjxVQ2hhcj4m
IHN5c3RlbUlkZW50aWZpZXIoKQorICAgIGNvbnN0IFdURjo6VmVjdG9yPFVDaGFyPiYgc3lzdGVt
SWRlbnRpZmllcigpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQobV90eXBlID09IERPQ1RZ
UEUpOwogICAgICAgICByZXR1cm4gbV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVudGlmaWVyOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUw1VHJlZUJ1aWxkZXIuY3BwIGIvV2ViQ29yZS9o
dG1sL0hUTUw1VHJlZUJ1aWxkZXIuY3BwCmluZGV4IDc5ZTFlMGVkMmNhYjI1YTdkYjE4MGMwNjgy
ZWRjZDViY2EwMzhlMTMuLjJkM2FmYjIyMzZiM2EzYzA5NDU5Yzk0NTRhYzQwODAwOTU0ZTBlNjQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmNwcAorKysgYi9XZWJD
b3JlL2h0bWwvSFRNTDVUcmVlQnVpbGRlci5jcHAKQEAgLTc0LDEyICs3NCwxMiBAQCBzdGF0aWMg
dm9pZCBjb252ZXJ0VG9PbGRTdHlsZShIVE1MNVRva2VuJiB0b2tlbiwgVG9rZW4mIG9sZFN0eWxl
VG9rZW4pCiAgICAgICAgIG9sZFN0eWxlVG9rZW4uYmVnaW5UYWcgPSAodG9rZW4udHlwZSgpID09
IEhUTUw1VG9rZW46OlN0YXJ0VGFnKTsKICAgICAgICAgb2xkU3R5bGVUb2tlbi5zZWxmQ2xvc2lu
Z1RhZyA9IHRva2VuLnNlbGZDbG9zaW5nKCk7CiAgICAgICAgIG9sZFN0eWxlVG9rZW4udGFnTmFt
ZSA9IEF0b21pY1N0cmluZyh0b2tlbi5uYW1lKCkuZGF0YSgpLCB0b2tlbi5uYW1lKCkuc2l6ZSgp
KTsKLSAgICAgICAgSFRNTDVUb2tlbjo6QXR0cmlidXRlTGlzdCYgYXR0cmlidXRlcyA9IHRva2Vu
LmF0dHJpYnV0ZXMoKTsKLSAgICAgICAgZm9yIChIVE1MNVRva2VuOjpBdHRyaWJ1dGVMaXN0Ojpp
dGVyYXRvciBpdGVyID0gYXR0cmlidXRlcy5iZWdpbigpOworICAgICAgICBjb25zdCBIVE1MNVRv
a2VuOjpBdHRyaWJ1dGVMaXN0JiBhdHRyaWJ1dGVzID0gdG9rZW4uYXR0cmlidXRlcygpOworICAg
ICAgICBmb3IgKEhUTUw1VG9rZW46OkF0dHJpYnV0ZUxpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIg
PSBhdHRyaWJ1dGVzLmJlZ2luKCk7CiAgICAgICAgICAgICAgaXRlciAhPSBhdHRyaWJ1dGVzLmVu
ZCgpOyArK2l0ZXIpIHsKICAgICAgICAgICAgIGlmICghaXRlci0+bV9uYW1lLmlzRW1wdHkoKSkg
ewotICAgICAgICAgICAgICAgIFN0cmluZyBuYW1lID0gU3RyaW5nKFN0cmluZ0ltcGw6OmFkb3B0
KGl0ZXItPm1fbmFtZSkpOwotICAgICAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IFN0cmluZyhT
dHJpbmdJbXBsOjphZG9wdChpdGVyLT5tX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAgU3RyaW5n
IG5hbWUoaXRlci0+bV9uYW1lLmRhdGEoKSwgaXRlci0+bV9uYW1lLnNpemUoKSk7CisgICAgICAg
ICAgICAgICAgU3RyaW5nIHZhbHVlKGl0ZXItPm1fdmFsdWUuZGF0YSgpLCBpdGVyLT5tX3ZhbHVl
LnNpemUoKSk7CiAgICAgICAgICAgICAgICAgUmVmUHRyPEF0dHJpYnV0ZT4gbWFwcGVkQXR0cmli
dXRlID0gQXR0cmlidXRlOjpjcmVhdGVNYXBwZWQobmFtZSwgdmFsdWUpOwogICAgICAgICAgICAg
ICAgIGlmICghb2xkU3R5bGVUb2tlbi5hdHRycykKICAgICAgICAgICAgICAgICAgICAgb2xkU3R5
bGVUb2tlbi5hdHRycyA9IE5hbWVkTm9kZU1hcDo6Y3JlYXRlKCk7CkBAIC0xMzIsNiArMTMyLDIy
IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gSFRNTDVUcmVlQnVpbGRlcjo6dGFrZVNjcmlwdFRvUHJv
Y2VzcyhpbnQmIHNjcmlwdFN0YXJ0TGluZSkKICAgICByZXR1cm4gbV9zY3JpcHRUb1Byb2Nlc3Mu
cmVsZWFzZSgpOwogfQogCitIVE1MNUxleGVyOjpTdGF0ZSBIVE1MNVRyZWVCdWlsZGVyOjphZGp1
c3RlZExleGVyU3RhdGUoSFRNTDVMZXhlcjo6U3RhdGUgc3RhdGUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdGFnTmFtZSkKK3sKKyAgICBpZiAodGFnTmFtZSA9PSB0ZXh0YXJlYVRhZyB8fCB0YWdOYW1l
ID09IHRpdGxlVGFnKQorICAgICAgICByZXR1cm4gSFRNTDVMZXhlcjo6UkNEQVRBU3RhdGU7CisK
KyAgICBpZiAodGFnTmFtZSA9PSBzdHlsZVRhZyB8fCB0YWdOYW1lID09IGlmcmFtZVRhZyB8fCB0
YWdOYW1lID09IHhtcFRhZyB8fCB0YWdOYW1lID09IG5vZW1iZWRUYWcpIHsKKyAgICAgICAgLy8g
RklYTUU6IG5vc2NyaXB0IGFuZCBub2ZyYW1lcyBtYXkgY29uZGl0aW9uYWxseSBlbnRlciB0aGlz
IHN0YXRlIGFzIHdlbGwuCisgICAgICAgIHJldHVybiBIVE1MNUxleGVyOjpSQVdURVhUU3RhdGU7
CisgICAgfQorCisgICAgaWYgKHRhZ05hbWUgPT0gcGxhaW50ZXh0VGFnKQorICAgICAgICByZXR1
cm4gSFRNTDVMZXhlcjo6UExBSU5URVhUU3RhdGU7CisKKyAgICByZXR1cm4gc3RhdGU7Cit9CisK
IFBhc3NSZWZQdHI8Tm9kZT4gSFRNTDVUcmVlQnVpbGRlcjo6cGFzc1Rva2VuVG9MZWdhY3lQYXJz
ZXIoSFRNTDVUb2tlbiYgdG9rZW4pCiB7CiAgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBIVE1MNVRv
a2VuOjpET0NUWVBFKSB7CkBAIC0xNTcsMTggKzE3MywxMSBAQCBQYXNzUmVmUHRyPE5vZGU+IEhU
TUw1VHJlZUJ1aWxkZXI6OnBhc3NUb2tlblRvTGVnYWN5UGFyc2VyKEhUTUw1VG9rZW4mIHRva2Vu
KQogICAgICAgICAgICAgaGFuZGxlU2NyaXB0U3RhcnRUYWcoKTsKICAgICAgICAgICAgIG1fbGFz
dFNjcmlwdEVsZW1lbnQgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PEVsZW1lbnQ+KHJlc3VsdCk7CiAg
ICAgICAgICAgICBtX2xhc3RTY3JpcHRFbGVtZW50U3RhcnRMaW5lID0gbV9sZXhlci0+bGluZU51
bWJlcigpOwotICAgICAgICB9IGVsc2UgaWYgKG9sZFN0eWxlVG9rZW4udGFnTmFtZSA9PSB0ZXh0
YXJlYVRhZyB8fCBvbGRTdHlsZVRva2VuLnRhZ05hbWUgPT0gdGl0bGVUYWcpCi0gICAgICAgICAg
ICBtX2xleGVyLT5zZXRTdGF0ZShIVE1MNUxleGVyOjpSQ0RBVEFTdGF0ZSk7Ci0gICAgICAgIGVs
c2UgaWYgKG9sZFN0eWxlVG9rZW4udGFnTmFtZSA9PSBzdHlsZVRhZyB8fCBvbGRTdHlsZVRva2Vu
LnRhZ05hbWUgPT0gaWZyYW1lVGFnCi0gICAgICAgICAgICAgICAgIHx8IG9sZFN0eWxlVG9rZW4u
dGFnTmFtZSA9PSB4bXBUYWcgfHwgb2xkU3R5bGVUb2tlbi50YWdOYW1lID09IG5vZW1iZWRUYWcp
IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBub3NjcmlwdCBhbmQgbm9mcmFtZXMgbWF5IGNvbmRp
dGlvbmFsbHkgZW50ZXIgdGhpcyBzdGF0ZSBhcyB3ZWxsLgotICAgICAgICAgICAgbV9sZXhlci0+
c2V0U3RhdGUoSFRNTDVMZXhlcjo6UkFXVEVYVFN0YXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChv
bGRTdHlsZVRva2VuLnRhZ05hbWUgPT0gcGxhaW50ZXh0VGFnKQotICAgICAgICAgICAgbV9sZXhl
ci0+c2V0U3RhdGUoSFRNTDVMZXhlcjo6UExBSU5URVhUU3RhdGUpOwotICAgICAgICBlbHNlIGlm
IChvbGRTdHlsZVRva2VuLnRhZ05hbWUgPT0gcHJlVGFnIHx8IG9sZFN0eWxlVG9rZW4udGFnTmFt
ZSA9PSBsaXN0aW5nVGFnKQorICAgICAgICB9IGVsc2UgaWYgKG9sZFN0eWxlVG9rZW4udGFnTmFt
ZSA9PSBwcmVUYWcgfHwgb2xkU3R5bGVUb2tlbi50YWdOYW1lID09IGxpc3RpbmdUYWcpCiAgICAg
ICAgICAgICBtX2xleGVyLT5za2lwTGVhZGluZ05ld0xpbmVGb3JMaXN0aW5nKCk7Ci0gICAgfQot
ICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSFRNTDVUb2tlbjo6RW5kVGFnKSB7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG1fbGV4ZXItPnNldFN0YXRlKGFkanVzdGVkTGV4ZXJTdGF0ZShtX2xl
eGVyLT5zdGF0ZSgpLCBvbGRTdHlsZVRva2VuLnRhZ05hbWUpKTsKKyAgICB9IGVsc2UgaWYgKHRv
a2VuLnR5cGUoKSA9PSBIVE1MNVRva2VuOjpFbmRUYWcpIHsKICAgICAgICAgaWYgKG9sZFN0eWxl
VG9rZW4udGFnTmFtZSA9PSBzY3JpcHRUYWcgJiYgaW5zZXJ0aW9uTW9kZSgpICE9IEFmdGVyRnJh
bWVzZXQpIHsKICAgICAgICAgICAgIGlmIChtX2xhc3RTY3JpcHRFbGVtZW50KSB7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKG1fbGFzdFNjcmlwdEVsZW1lbnRTdGFydExpbmUgIT0gdW5pbml0aWFs
aXplZExpbmVOdW1iZXJWYWx1ZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVUcmVl
QnVpbGRlci5oIGIvV2ViQ29yZS9odG1sL0hUTUw1VHJlZUJ1aWxkZXIuaAppbmRleCBhNjFiYjdm
YWFkNzM4NzQ1NGE1YmZiMDhmNDhhMGQ2OTI1ZjcwNDU2Li5iYjIyMzIzNDI2ODYwYzM0MWZhNWVh
NWFiM2VhOGFkMGEyNzE0NTMxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTDVUcmVlQnVp
bGRlci5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmgKQEAgLTI2LDYgKzI2
LDcgQEAKICNpZm5kZWYgSFRNTDVUcmVlQnVpbGRlcl9oCiAjZGVmaW5lIEhUTUw1VHJlZUJ1aWxk
ZXJfaAogCisjaW5jbHVkZSAiSFRNTDVMZXhlci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgpAQCAtMzMsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsK
IGNsYXNzIEZyYW1lOwotY2xhc3MgSFRNTDVMZXhlcjsKIGNsYXNzIEhUTUw1VG9rZW47CiBjbGFz
cyBIVE1MRG9jdW1lbnQ7CiBjbGFzcyBMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOwpAQCAtNTgs
NiArNTksOCBAQCBwdWJsaWM6CiAgICAgLy8gRG9uZSwgY2xvc2UgYW55IG9wZW4gdGFncywgZXRj
LgogICAgIHZvaWQgZmluaXNoZWQoKTsKIAorICAgIHN0YXRpYyBIVE1MNUxleGVyOjpTdGF0ZSBh
ZGp1c3RlZExleGVyU3RhdGUoSFRNTDVMZXhlcjo6U3RhdGUsIGNvbnN0IEF0b21pY1N0cmluZyYg
dGFnTmFtZSk7CisKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIGRpcnR5LCByb3R0ZW4gaGFjayB0
byBrZWVwIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQgaGFwcHkKICAgICAvLyB1bnRpbCB3ZSBzdG9w
IHVzaW5nIHRoZSBsZWdhY3kgcGFyc2VyLiBETyBOT1QgQ0FMTCBUSElTIE1FVEhPRC4KICAgICBM
ZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yKiBsZWdhY3lUcmVlQ29uc3RydWN0b3IoKSBjb25zdCB7
IHJldHVybiBtX2xlZ2FjeVRyZWVDb25zdHJ1Y3Rvci5nZXQoKTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58714</attachid>
            <date>2010-06-14 15:31:08 -0700</date>
            <delta_ts>2010-06-14 16:29:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40557-20100614153107.patch</filename>
            <type>text/plain</type>
            <size>18645</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCBkYzk1Y2RhMGY0YjljYmNlNzM3MDA3MzQzMmNkNGI3YzQyZGMwYTQ1Li4xZDY2OWNhN2RlZjlh
ODg4YjRiZmNiNTA3ODliNzQ4NzcxZjk3YWQ4IDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0yNTEsOCArMjUxLDkgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJaHRtbC9IVE1MNUVudGl0eVBhcnNlci5j
cHAgXAogCWh0bWwvSFRNTDVMZXhlci5jcHAgXAogCWh0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5j
cHAgXAotCWh0bWwvSFRNTDVUcmVlQnVpbGRlci5jcHAgXAorCWh0bWwvSFRNTDVQcmVsb2FkU2Nh
bm5lci5jcHAgXAogCWh0bWwvSFRNTDVTY3JpcHRSdW5uZXIuY3BwIFwKKwlodG1sL0hUTUw1VHJl
ZUJ1aWxkZXIuY3BwIFwKIAlodG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcCBcCiAJaHRtbC9IVE1M
Q29sbGVjdGlvbi5jcHAgXAogCWh0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHAgXApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggZDUxZWQxNGFlNmY3YTA2N2ExYTI5ZGVmZDhmM2FkYjc1N2ZkZTdjMy4uNTViNzM4ZWQxNWU3
MDdkNjI4Y2Q3NGQxZDczNDQ5ODU5NGFjYTAxNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC05MDYsOCArOTA2LDkgQEAg
U0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGh0bWwvSFRNTDVFbnRpdHlQYXJzZXIuY3BwCiAgICAg
aHRtbC9IVE1MNUxleGVyLmNwcAogICAgIGh0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHAKLSAg
ICBodG1sL0hUTUw1VHJlZUJ1aWxkZXIuY3BwCisgICAgaHRtbC9IVE1MNVByZWxvYWRTY2FubmVy
LmNwcAogICAgIGh0bWwvSFRNTDVTY3JpcHRSdW5uZXIuY3BwCisgICAgaHRtbC9IVE1MNVRyZWVC
dWlsZGVyLmNwcAogICAgIGh0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwCiAgICAgaHRtbC9IVE1M
QW5jaG9yRWxlbWVudC5jcHAKICAgICBodG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkZThjZTU3
ZWMwMzcwZWI5MWVmN2VkMWNkNmY3NWI2NDFjYzhmMjMyLi4zZDI2ZDI5NDBiYTExODQ2MzhjOWEy
YzAzYWUyY2QxYTQ4MGY2ODRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMiw2ICsyLDM5IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAgQWRkIGEgcHJlbG9hZCBzY2FubmVyIGZvciB0aGUg
SFRNTDUgcGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MDU1NworCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIHNpbXBsZSBwcmVsb2FkIHNj
YW5uZXIgZm9yIHRoZSBIVE1MNSBwYXJzZXIuICBUaGlzCisgICAgICAgIHByZWxvYWQgc2Nhbm5l
ciBpcyBub3QgYXMgYXdlc29tZSBhcyB0aGUgb2xkIG9uZSBiZWNhdXNlIGl0IGRvZXNuJ3QKKyAg
ICAgICAgc2NhbiBDU1MsIGJ1dCBpdCdzIG11Y2ggc2ltcGxlci4KKworICAgICAgICAqIEFuZHJv
aWQubWs6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUu
YW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAg
ICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgICAgIC0gQnVpbGQgZmlsZSB0b3J0
dXJlLgorICAgICAgICAqIGh0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MNURvY3VtZW50UGFyc2VyOjp3cml0ZSk6CisgICAgICAgICAgICAtIENhbGwg
aW50byB0aGUgcHJlbG9hZCBzY2FubmVyIHdoZW4gd2FpdGluZyBmb3IgYSBzY3JpcHQuCisgICAg
ICAgICogaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmg6CisgICAgICAgICogaHRtbC9IVE1MNVBy
ZWxvYWRTY2FubmVyLmNwcDogQ29waWVkIGZyb20gV2ViQ29yZS9odG1sL1ByZWxvYWRTY2FubmVy
LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1UHJlbG9hZFNjYW5uZXI6OkhUTUw1UHJlbG9h
ZFNjYW5uZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVQcmVsb2FkU2Nhbm5lcjo6c2Nhbik6
CisgICAgICAgICAgICAtIEEgc2ltcGxlIGxvb3AgdG8gcHVtcCB0aGUgcHJlbG9hZCBzY2FubmVy
J3MgbGV4ZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MNVByZWxvYWRTY2FubmVyOjpwcm9jZXNz
VG9rZW4pOgorICAgICAgICAgICAgLSBQcmVsb2FkIGludGVyZXN0aW5nIHJlc291cmNlcy4gIFN0
b2xlbiBmcm9tIHRoZSBvbGQgcHJlbG9hZAorICAgICAgICAgICAgICBzY2FubmVyLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTDVQcmVsb2FkU2Nhbm5lcjo6c2Nhbm5pbmdCb2R5KToKKyAgICAgICAg
KiBodG1sL0hUTUw1UHJlbG9hZFNjYW5uZXIuaDogQ29waWVkIGZyb20gV2ViQ29yZS9odG1sL1By
ZWxvYWRTY2FubmVyLmguCisKKzIwMTAtMDYtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBD
b25zdGlmeSBzb21lIEhUTUw1VG9rZW4gbWV0aG9kcwogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA1OTIKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggYjQzNGZjMzk4Y2FiN2M1
N2Y2OTI0Y2E1OGM2N2FmYTU1NTY1YzNmNS4uMjJhOGE1ZDA5ZDdhNGVmNWUwZTkzNTBlOWY5YWE1
YWU3YzMzODRiMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xMDk0LDExICsxMDk0LDEzIEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJV2ViQ29yZS9odG1sL0hUTUw1VG9rZW4uaCBcCiAJV2ViQ29yZS9odG1sL0hUTUw1
RG9jdW1lbnRQYXJzZXIuY3BwIFwKIAlXZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5o
IFwKLQlXZWJDb3JlL2h0bWwvSFRNTDVUcmVlQnVpbGRlci5jcHAgXAotCVdlYkNvcmUvaHRtbC9I
VE1MNVRyZWVCdWlsZGVyLmggXAorCVdlYkNvcmUvaHRtbC9IVE1MNVByZWxvYWRTY2FubmVyLmNw
cCBcCisJV2ViQ29yZS9odG1sL0hUTUw1UHJlbG9hZFNjYW5uZXIuaCBcCiAJV2ViQ29yZS9odG1s
L0hUTUw1U2NyaXB0UnVubmVyLmNwcCBcCiAJV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVy
LmggXAogCVdlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lckhvc3QuaCBcCisJV2ViQ29yZS9o
dG1sL0hUTUw1VHJlZUJ1aWxkZXIuY3BwIFwKKwlXZWJDb3JlL2h0bWwvSFRNTDVUcmVlQnVpbGRl
ci5oIFwKIAlXZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwIFwKIAlXZWJDb3JlL2h0
bWwvSFRNTEFsbENvbGxlY3Rpb24uaCBcCiAJV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50
LmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IDlmNWM5NWI4M2JiOGQ5Y2RjODk2YzJkYWJlZjg5NDIzOGU3ZDI0MzMuLmFi
ODM2NDUzN2M2NzYwNjNhNzlkYjA1Y2ZjMGI2MDc4NmEyOThjYmMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xNDgwLDEwICsx
NDgwLDEyIEBACiAgICAgICAgICAgICAnaHRtbC9IVE1MNUxleGVyLmgnLAogICAgICAgICAgICAg
J2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTDVE
b2N1bWVudFBhcnNlci5oJywKLSAgICAgICAgICAgICdodG1sL0hUTUw1VHJlZUJ1aWxkZXIuY3Bw
JywKLSAgICAgICAgICAgICdodG1sL0hUTUw1VHJlZUJ1aWxkZXIuaCcsCisgICAgICAgICAgICAn
aHRtbC9IVE1MNVByZWxvYWRTY2FubmVyLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9IVE1MNVBy
ZWxvYWRTY2FubmVyLmgnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTDVTY3JpcHRSdW5uZXIuY3Bw
JywKICAgICAgICAgICAgICdodG1sL0hUTUw1U2NyaXB0UnVubmVyLmgnLAorICAgICAgICAgICAg
J2h0bWwvSFRNTDVUcmVlQnVpbGRlci5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvSFRNTDVUcmVl
QnVpbGRlci5oJywKICAgICAgICAgICAgICdodG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcCcsCiAg
ICAgICAgICAgICAnaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5oJywKICAgICAgICAgICAgICdodG1s
L0hUTUxBbmNob3JFbGVtZW50LmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJv
IGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA0YTIzMzc1Y2I5YmE2MTNkNmIwMjEzMDNlYmI2
MjI3YTgwOTdmZjgxLi4yY2Q5NTFlMGQ0MWVlNzcyY2RlNWQwNGIyZTcyNTEzMGMzM2JmMmRkIDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8K
QEAgLTYxMyw4ICs2MTMsOSBAQCBTT1VSQ0VTICs9IFwKICAgICBodG1sL0hUTUw1RW50aXR5UGFy
c2VyLmNwcCBcCiAgICAgaHRtbC9IVE1MNUxleGVyLmNwcCBcCiAgICAgaHRtbC9IVE1MNURvY3Vt
ZW50UGFyc2VyLmNwcCBcCi0gICAgaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmNwcCBcCisgICAgaHRt
bC9IVE1MNVByZWxvYWRTY2FubmVyLmNwcCBcCiAgICAgaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5j
cHAgXAorICAgIGh0bWwvSFRNTDVUcmVlQnVpbGRlci5jcHAgXAogICAgIGh0bWwvSFRNTEFsbENv
bGxlY3Rpb24uY3BwIFwKICAgICBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBcCiAgICAgaHRt
bC9IVE1MQXBwbGV0RWxlbWVudC5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKaW5kZXggNDk1N2QyYjkxNTkzODUyYjJkNWIzNTc5MmUxYTBkZWRiYmJkMGZlNC4uZDFmMjhm
ZTg4MzFmMjMyNTYwYjM4N2FlOTUxN2ExYmZlNzI0ZGU1OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCkBAIC0zMzMyNSw2ICszMzMyNSwxNCBAQAogCQkJCT4NCiAJCQk8L0Zp
bGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEhUTUw1UHJlbG9hZFNj
YW5uZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5caHRtbFxIVE1MNVByZWxvYWRTY2FubmVyLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEhUTUw1U2NyaXB0UnVubmVy
LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGYwN2ZhYTU3NTJmMzc4ZDhjMTRiZjkxMWY2NjJkOTNkNTI3Y2E2
ZDguLmVhM2JlMjA3YWZmNGMyNmM2NjBhODVhZDRkOTAxYTI5NzFlOWE2ZDMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNTY0LDYgKzI1NjQsOCBAQAog
CQk5N0RDRTIwMjEwODA3Qzc1MDA1N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RENFMjAwMTA4MDdDNzUw
MDU3RDM5NCAvKiBIaXN0b3J5Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NB
dWRpdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk3REQ0RDg0MEZERjRENkQwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCAqLzsgfTsKIAkJOTdE
RDREODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3REQ0RDg1MEZERjRENkUwMEVDRjlBNCAvKiBY
U1NBdWRpdG9yLmggKi87IH07CisJCTk3RTc5MzY1MTFDNjAzMDkwMEU2NDlCQyAvKiBIVE1MNVBy
ZWxvYWRTY2FubmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk3RTc5MzYzMTFDNjAzMDkwMEU2NDlCQyAvKiBIVE1MNVByZWxvYWRTY2FubmVyLmNw
cCAqLzsgfTsKKwkJOTdFNzkzNjYxMUM2MDMwOTAwRTY0OUJDIC8qIEhUTUw1UHJlbG9hZFNjYW5u
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RTc5
MzY0MTFDNjAzMDkwMEU2NDlCQyAvKiBIVE1MNVByZWxvYWRTY2FubmVyLmggKi87IH07CiAJCTk3
RThCMzU2MTFBMjNDRTIwMDE2OTQwOSAvKiBIVE1MNUxleGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RThCMzU0MTFBMjNDRTIwMDE2OTQwOSAv
KiBIVE1MNUxleGVyLmNwcCAqLzsgfTsKIAkJOTdFOEIzNTcxMUEyM0NFMjAwMTY5NDA5IC8qIEhU
TUw1TGV4ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk3RThCMzU1MTFBMjNDRTIwMDE2OTQwOSAvKiBIVE1MNUxleGVyLmggKi87IH07CiAJCTk3RThC
M0MzMTFBMjg5MDgwMDE2OTQwOSAvKiBIVE1MNVRva2VuLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0U4QjNDMjExQTI4OTA4MDAxNjk0MDkgLyogSFRN
TDVUb2tlbi5oICovOyB9OwpAQCAtODE2MCw2ICs4MTYyLDggQEAKIAkJOTdEQ0UyMDAxMDgwN0M3
NTAwNTdEMzk0IC8qIEhpc3RvcnlDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEhpc3RvcnlDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk3REQ0RDg0MEZERjRENkQwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhTU0F1ZGl0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5N0RENEQ4NTBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYU1NBdWRpdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3RTc5MzYzMTFDNjAzMDkwMEU2NDlCQyAvKiBIVE1MNVBy
ZWxvYWRTY2FubmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhU
TUw1UHJlbG9hZFNjYW5uZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5N0U3
OTM2NDExQzYwMzA5MDBFNjQ5QkMgLyogSFRNTDVQcmVsb2FkU2Nhbm5lci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MNVByZWxvYWRTY2FubmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk3RThCMzU0MTFBMjNDRTIwMDE2OTQwOSAvKiBIVE1MNUxleGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUw1TGV4ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0U4QjM1NTExQTIzQ0UyMDAxNjk0MDkg
LyogSFRNTDVMZXhlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MNUxl
eGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3RThCM0MyMTFBMjg5MDgwMDE2
OTQwOSAvKiBIVE1MNVRva2VuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhU
TUw1VG9rZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNDQ2LDYgKzEzNDUw
LDggQEAKIAkJCQk5NzZFODk1RjExQzBDQTNBMDBFQTlDQTkgLyogSFRNTDVFbnRpdHlQYXJzZXIu
aCAqLywKIAkJCQk5N0U4QjM1NDExQTIzQ0UyMDAxNjk0MDkgLyogSFRNTDVMZXhlci5jcHAgKi8s
CiAJCQkJOTdFOEIzNTUxMUEyM0NFMjAwMTY5NDA5IC8qIEhUTUw1TGV4ZXIuaCAqLywKKwkJCQk5
N0U3OTM2MzExQzYwMzA5MDBFNjQ5QkMgLyogSFRNTDVQcmVsb2FkU2Nhbm5lci5jcHAgKi8sCisJ
CQkJOTdFNzkzNjQxMUM2MDMwOTAwRTY0OUJDIC8qIEhUTUw1UHJlbG9hZFNjYW5uZXIuaCAqLywK
IAkJCQlBODNCM0FFRTExQURFRkY1MDA0NTg4MDkgLyogSFRNTDVTY3JpcHRSdW5uZXIuY3BwICov
LAogCQkJCUE4M0IzQUVGMTFBREVGRjUwMDQ1ODgwOSAvKiBIVE1MNVNjcmlwdFJ1bm5lci5oICov
LAogCQkJCUE4N0YxNjM0MTFBRTg0MTMwMENCQjJFNSAvKiBIVE1MNVNjcmlwdFJ1bm5lckhvc3Qu
aCAqLywKQEAgLTE5NDczLDYgKzE5NDc5LDcgQEAKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5
NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0RENEQ4NzBGREY0
RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UxNzJFMDEx
MTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5N0U3OTM2
NjExQzYwMzA5MDBFNjQ5QkMgLyogSFRNTDVQcmVsb2FkU2Nhbm5lci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC0yMTc3OSw2ICsyMTc4Niw3IEBACiAJCQkJOTNGMTlCMDUwODI0NUU1OTAwMUU5QUJDIC8q
IFhTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQkU1MTJEMENG
NkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTdERDREODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJOTdFNzkzNjUxMUM2MDMwOTAwRTY0OUJDIC8qIEhUTUw1UHJlbG9hZFNjYW5uZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBh
cnNlci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggMjhk
ZjE0ZTI1YzFmYmExMDY5Yzg4ZDVhNWFlNTM2ODc2NDU5Nzk4OC4uYmQwN2JiZDc2YjYxNWE4MGQ0
NzE2NWJmZjllNzVlY2UxNTY4MWM2NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUw1RG9j
dW1lbnRQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNw
cApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIkhUTUw1TGV4ZXIuaCIKKyNpbmNsdWRlICJIVE1MNVByZWxvYWRTY2Fu
bmVyLmgiCiAjaW5jbHVkZSAiSFRNTDVTY3JpcHRSdW5uZXIuaCIKICNpbmNsdWRlICJIVE1MNVRy
ZWVCdWlsZGVyLmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCkBAIC0xNjcsNiArMTY4LDE0
IEBAIHZvaWQgSFRNTDVEb2N1bWVudFBhcnNlcjo6d3JpdGUoY29uc3QgU2VnbWVudGVkU3RyaW5n
JiBzb3VyY2UsIGJvb2wgYXBwZW5kRGF0YSkKICAgICAgICAgbV9pbnB1dC5pbnNlcnRBdEN1cnJl
bnRJbnNlcnRpb25Qb2ludChzb3VyY2UpOwogCiAgICAgcHVtcExleGVySWZQb3NzaWJsZSgpOwor
CisgICAgaWYgKGFwcGVuZERhdGEgJiYgaXNXYWl0aW5nRm9yU2NyaXB0cygpKSB7CisgICAgICAg
IEFTU0VSVChtX2xleGVyLT5zdGF0ZSgpID09IEhUTUw1TGV4ZXI6OkRhdGFTdGF0ZSk7CisgICAg
ICAgIGlmICghbV9zY2FubmVyKQorICAgICAgICAgICAgbV9zY2FubmVyLnNldChuZXcgSFRNTDVQ
cmVsb2FkU2Nhbm5lcihtX2RvY3VtZW50KSk7CisgICAgICAgIG1fc2Nhbm5lci0+c2NhbihtX2lu
cHV0LmN1cnJlbnQoKSk7CisgICAgfQorCiAgICAgZW5kSWZEZWxheWVkKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmggYi9XZWJDb3JlL2h0bWwv
SFRNTDVEb2N1bWVudFBhcnNlci5oCmluZGV4IDRhNzVjZWMxZWFkYWM2NThjM2VhMDE1M2Y1NGVi
MDFhNTcwZWY3NmEuLmYyYjdlMjg0MWE5OTg5ZGMyNjA3ODQwMjljNWZiOGVjNDI4NDRiY2YgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmgKKysrIGIvV2ViQ29y
ZS9odG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuaApAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBMZWdh
Y3lIVE1MVHJlZUNvbnN0cnVjdG9yOwogY2xhc3MgSFRNTDVMZXhlcjsKIGNsYXNzIEhUTUw1U2Ny
aXB0UnVubmVyOwogY2xhc3MgSFRNTDVUcmVlQnVpbGRlcjsKK2NsYXNzIEhUTUw1UHJlbG9hZFNj
YW5uZXI7CiBjbGFzcyBTY3JpcHRDb250cm9sbGVyOwogY2xhc3MgU2NyaXB0U291cmNlQ29kZTsK
IApAQCAtMTgzLDYgKzE4NCw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPEhUTUw1TGV4ZXI+IG1f
bGV4ZXI7CiAgICAgT3duUHRyPEhUTUw1U2NyaXB0UnVubmVyPiBtX3NjcmlwdFJ1bm5lcjsKICAg
ICBPd25QdHI8SFRNTDVUcmVlQnVpbGRlcj4gbV90cmVlQ29uc3RydWN0b3I7CisgICAgT3duUHRy
PEhUTUw1UHJlbG9hZFNjYW5uZXI+IG1fc2Nhbm5lcjsKICAgICBib29sIG1fZW5kV2FzRGVsYXll
ZDsKICAgICBpbnQgbV93cml0ZU5lc3RpbmdMZXZlbDsKIH07CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvSFRNTDVQcmVsb2FkU2Nhbm5lci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTDVQcmVsb2Fk
U2Nhbm5lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTFjYWU0YTcwZmQ1MmM3MjQxMDA5YTkxOWQ2MjY0NmEz
OGFmMzMyNAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNVByZWxvYWRTY2Fu
bmVyLmNwcApAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2gg
TW9iaWxlLCBJbmMuIGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLworICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSFRNTDVQcmVsb2FkU2Nhbm5lci5oIgorCisjaW5jbHVkZSAiQ1NTSGVscGVyLmgiCisjaW5j
bHVkZSAiRG9jTG9hZGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJIVE1M
NVRyZWVCdWlsZGVyLmgiCisjaW5jbHVkZSAiSFRNTExpbmtFbGVtZW50LmgiCisjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKKworSFRNTDVQcmVsb2FkU2Nhbm5lcjo6SFRNTDVQcmVsb2FkU2Nhbm5lcihEb2N1
bWVudCogZG9jdW1lbnQpCisgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgICwgbV9ib2R5
U2VlbihmYWxzZSkKK3sKK30KKwordm9pZCBIVE1MNVByZWxvYWRTY2FubmVyOjpzY2FuKGNvbnN0
IFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQoreworICAgIG1fc291cmNlLmFwcGVuZChzb3VyY2Up
OworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmUtdXNlIHRoZXNlIHRva2VucyBpbiBIVE1MNURv
Y3VtZW50UGFyc2VyIGlmIHRoZQorICAgIC8vIHBlbmRpbmcgc2NyaXB0IGRvZXNuJ3QgZW5kIHVw
IGNhbGxpbmcgZG9jdW1lbnQud3JpdGUuCisgICAgd2hpbGUgKG1fbGV4ZXIubmV4dFRva2VuKG1f
c291cmNlLCBtX3Rva2VuKSkgeworICAgICAgICBwcm9jZXNzVG9rZW4oKTsKKyAgICAgICAgbV90
b2tlbi5jbGVhcigpOworICAgIH0KK30KKwordm9pZCBIVE1MNVByZWxvYWRTY2FubmVyOjpwcm9j
ZXNzVG9rZW4oKQoreworICAgIGlmIChtX3Rva2VuLnR5cGUoKSAhPSBIVE1MNVRva2VuOjpTdGFy
dFRhZykKKyAgICAgICAgcmV0dXJuOworCisgICAgQXRvbWljU3RyaW5nIHRhZ05hbWUobV90b2tl
bi5uYW1lKCkuZGF0YSgpLCBtX3Rva2VuLm5hbWUoKS5zaXplKCkpOworCisgICAgbV9sZXhlci5z
ZXRTdGF0ZShIVE1MNVRyZWVCdWlsZGVyOjphZGp1c3RlZExleGVyU3RhdGUobV9sZXhlci5zdGF0
ZSgpLCB0YWdOYW1lKSk7CisKKyAgICBpZiAodGFnTmFtZSA9PSBib2R5VGFnKQorICAgICAgICBt
X2JvZHlTZWVuID0gdHJ1ZTsKKworICAgIGlmICh0YWdOYW1lICE9IHNjcmlwdFRhZyAmJiB0YWdO
YW1lICE9IGltZ1RhZyAmJiB0YWdOYW1lICE9IGxpbmtUYWcpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFN0cmluZyB1cmxUb0xvYWQ7CisgICAgU3RyaW5nIGNoYXJzZXQ7CisgICAgYm9vbCBsaW5r
SXNTdHlsZVNoZWV0ID0gZmFsc2U7CisKKyAgICBmb3IgKEhUTUw1VG9rZW46OkF0dHJpYnV0ZUxp
c3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3Rva2VuLmF0dHJpYnV0ZXMoKS5iZWdpbigpOwor
ICAgICAgICAgaXRlciAhPSBtX3Rva2VuLmF0dHJpYnV0ZXMoKS5lbmQoKTsgKytpdGVyKSB7Cisg
ICAgICAgIEF0b21pY1N0cmluZyBhdHRyaWJ1dGVOYW1lKGl0ZXItPm1fbmFtZS5kYXRhKCksIGl0
ZXItPm1fbmFtZS5zaXplKCkpOworICAgICAgICBTdHJpbmcgYXR0cmlidXRlVmFsdWUoaXRlci0+
bV92YWx1ZS5kYXRhKCksIGl0ZXItPm1fdmFsdWUuc2l6ZSgpKTsKKworICAgICAgICBpZiAodGFn
TmFtZSA9PSBzY3JpcHRUYWcgfHwgdGFnTmFtZSA9PSBpbWdUYWcpIHsKKyAgICAgICAgICAgIGlm
IChhdHRyaWJ1dGVOYW1lID09IHNyY0F0dHIgJiYgdXJsVG9Mb2FkLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgICAgICB1cmxUb0xvYWQgPSBkZXByZWNhdGVkUGFyc2VVUkwoYXR0cmlidXRlVmFsdWUp
OworICAgICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlTmFtZSA9PSBjaGFyc2V0QXR0cikKKyAg
ICAgICAgICAgICAgICBjaGFyc2V0ID0gYXR0cmlidXRlVmFsdWU7CisgICAgICAgIH0gZWxzZSBp
ZiAodGFnTmFtZSA9PSBsaW5rVGFnKSB7CisgICAgICAgICAgICBpZiAoYXR0cmlidXRlTmFtZSA9
PSBocmVmQXR0ciAmJiB1cmxUb0xvYWQuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHVybFRv
TG9hZCA9IGRlcHJlY2F0ZWRQYXJzZVVSTChhdHRyaWJ1dGVWYWx1ZSk7CisgICAgICAgICAgICBl
bHNlIGlmIChhdHRyaWJ1dGVOYW1lID09IHJlbEF0dHIpIHsKKyAgICAgICAgICAgICAgICBIVE1M
TGlua0VsZW1lbnQ6OlJlbEF0dHJpYnV0ZSByZWw7CisgICAgICAgICAgICAgICAgSFRNTExpbmtF
bGVtZW50Ojp0b2tlbml6ZVJlbEF0dHJpYnV0ZShhdHRyaWJ1dGVWYWx1ZSwgcmVsKTsKKyAgICAg
ICAgICAgICAgICBsaW5rSXNTdHlsZVNoZWV0ID0gcmVsLm1faXNTdHlsZVNoZWV0ICYmICFyZWwu
bV9pc0FsdGVybmF0ZSAmJiAhcmVsLm1faXNJY29uICYmICFyZWwubV9pc0ROU1ByZWZldGNoOwor
ICAgICAgICAgICAgfSBlbHNlIGlmIChhdHRyaWJ1dGVOYW1lID09IGNoYXJzZXRBdHRyKQorICAg
ICAgICAgICAgICAgIGNoYXJzZXQgPSBhdHRyaWJ1dGVWYWx1ZTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGlmICh1cmxUb0xvYWQuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAodGFnTmFtZSA9PSBzY3JpcHRUYWcpCisgICAgICAgIG1fZG9jdW1lbnQtPmRvY0xvYWRlcigp
LT5wcmVsb2FkKENhY2hlZFJlc291cmNlOjpTY3JpcHQsIHVybFRvTG9hZCwgY2hhcnNldCwgc2Nh
bm5pbmdCb2R5KCkpOworICAgIGVsc2UgaWYgKHRhZ05hbWUgPT0gaW1nVGFnKSAKKyAgICAgICAg
bV9kb2N1bWVudC0+ZG9jTG9hZGVyKCktPnByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVz
b3VyY2UsIHVybFRvTG9hZCwgU3RyaW5nKCksIHNjYW5uaW5nQm9keSgpKTsKKyAgICBlbHNlIGlm
ICh0YWdOYW1lID09IGxpbmtUYWcgJiYgbGlua0lzU3R5bGVTaGVldCkgCisgICAgICAgIG1fZG9j
dW1lbnQtPmRvY0xvYWRlcigpLT5wcmVsb2FkKENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0
LCB1cmxUb0xvYWQsIGNoYXJzZXQsIHNjYW5uaW5nQm9keSgpKTsKK30KKworYm9vbCBIVE1MNVBy
ZWxvYWRTY2FubmVyOjpzY2FubmluZ0JvZHkoKSBjb25zdAoreworICAgIHJldHVybiBtX2RvY3Vt
ZW50LT5ib2R5KCkgfHwgbV9ib2R5U2VlbjsKK30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUw1UHJlbG9hZFNjYW5uZXIuaCBiL1dlYkNvcmUvaHRtbC9IVE1MNVByZWxvYWRTY2Fu
bmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZmY4MTAxNDcwYzU4ZDMxNmMwYzhmMGVjZDNjNDVhNzYyZGI3OTNh
MQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNVByZWxvYWRTY2FubmVyLmgK
QEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgSFRNTDVQcmVsb2FkU2Nhbm5lcl9oCisjZGVmaW5lIEhUTUw1UHJlbG9h
ZFNjYW5uZXJfaAorCisjaW5jbHVkZSAiSFRNTDVMZXhlci5oIgorI2luY2x1ZGUgIkhUTUw1VG9r
ZW4uaCIKKyNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEb2N1bWVudDsKK2NsYXNz
IEhUTUw1VG9rZW47CitjbGFzcyBTZWdtZW50ZWRTdHJpbmc7CisKK2NsYXNzIEhUTUw1UHJlbG9h
ZFNjYW5uZXIgOiBwdWJsaWMgTm9uY29weWFibGUgeworcHVibGljOgorICAgIEhUTUw1UHJlbG9h
ZFNjYW5uZXIoRG9jdW1lbnQqKTsKKworICAgIHZvaWQgc2Nhbihjb25zdCBTZWdtZW50ZWRTdHJp
bmcmIHNvdXJjZSk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBwcm9jZXNzVG9rZW4oKTsKKyAgICBi
b29sIHNjYW5uaW5nQm9keSgpIGNvbnN0OworCisgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7Cisg
ICAgU2VnbWVudGVkU3RyaW5nIG1fc291cmNlOworICAgIEhUTUw1TGV4ZXIgbV9sZXhlcjsKKyAg
ICBIVE1MNVRva2VuIG1fdG9rZW47CisgICAgYm9vbCBtX2JvZHlTZWVuOworfTsKKworfQorCisj
ZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58726</attachid>
            <date>2010-06-14 16:29:06 -0700</date>
            <delta_ts>2010-06-14 16:52:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40557-20100614162905.patch</filename>
            <type>text/plain</type>
            <size>20129</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCBkYzk1Y2RhMGY0YjljYmNlNzM3MDA3MzQzMmNkNGI3YzQyZGMwYTQ1Li4xZDY2OWNhN2RlZjlh
ODg4YjRiZmNiNTA3ODliNzQ4NzcxZjk3YWQ4IDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0yNTEsOCArMjUxLDkgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJaHRtbC9IVE1MNUVudGl0eVBhcnNlci5j
cHAgXAogCWh0bWwvSFRNTDVMZXhlci5jcHAgXAogCWh0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5j
cHAgXAotCWh0bWwvSFRNTDVUcmVlQnVpbGRlci5jcHAgXAorCWh0bWwvSFRNTDVQcmVsb2FkU2Nh
bm5lci5jcHAgXAogCWh0bWwvSFRNTDVTY3JpcHRSdW5uZXIuY3BwIFwKKwlodG1sL0hUTUw1VHJl
ZUJ1aWxkZXIuY3BwIFwKIAlodG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcCBcCiAJaHRtbC9IVE1M
Q29sbGVjdGlvbi5jcHAgXAogCWh0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHAgXApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggZDUxZWQxNGFlNmY3YTA2N2ExYTI5ZGVmZDhmM2FkYjc1N2ZkZTdjMy4uNTViNzM4ZWQxNWU3
MDdkNjI4Y2Q3NGQxZDczNDQ5ODU5NGFjYTAxNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC05MDYsOCArOTA2LDkgQEAg
U0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGh0bWwvSFRNTDVFbnRpdHlQYXJzZXIuY3BwCiAgICAg
aHRtbC9IVE1MNUxleGVyLmNwcAogICAgIGh0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHAKLSAg
ICBodG1sL0hUTUw1VHJlZUJ1aWxkZXIuY3BwCisgICAgaHRtbC9IVE1MNVByZWxvYWRTY2FubmVy
LmNwcAogICAgIGh0bWwvSFRNTDVTY3JpcHRSdW5uZXIuY3BwCisgICAgaHRtbC9IVE1MNVRyZWVC
dWlsZGVyLmNwcAogICAgIGh0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwCiAgICAgaHRtbC9IVE1M
QW5jaG9yRWxlbWVudC5jcHAKICAgICBodG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkZThjZTU3
ZWMwMzcwZWI5MWVmN2VkMWNkNmY3NWI2NDFjYzhmMjMyLi4zZDI2ZDI5NDBiYTExODQ2MzhjOWEy
YzAzYWUyY2QxYTQ4MGY2ODRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMiw2ICsyLDM5IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAgQWRkIGEgcHJlbG9hZCBzY2FubmVyIGZvciB0aGUg
SFRNTDUgcGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MDU1NworCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIHNpbXBsZSBwcmVsb2FkIHNj
YW5uZXIgZm9yIHRoZSBIVE1MNSBwYXJzZXIuICBUaGlzCisgICAgICAgIHByZWxvYWQgc2Nhbm5l
ciBpcyBub3QgYXMgYXdlc29tZSBhcyB0aGUgb2xkIG9uZSBiZWNhdXNlIGl0IGRvZXNuJ3QKKyAg
ICAgICAgc2NhbiBDU1MsIGJ1dCBpdCdzIG11Y2ggc2ltcGxlci4KKworICAgICAgICAqIEFuZHJv
aWQubWs6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUu
YW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAg
ICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgICAgIC0gQnVpbGQgZmlsZSB0b3J0
dXJlLgorICAgICAgICAqIGh0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MNURvY3VtZW50UGFyc2VyOjp3cml0ZSk6CisgICAgICAgICAgICAtIENhbGwg
aW50byB0aGUgcHJlbG9hZCBzY2FubmVyIHdoZW4gd2FpdGluZyBmb3IgYSBzY3JpcHQuCisgICAg
ICAgICogaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmg6CisgICAgICAgICogaHRtbC9IVE1MNVBy
ZWxvYWRTY2FubmVyLmNwcDogQ29waWVkIGZyb20gV2ViQ29yZS9odG1sL1ByZWxvYWRTY2FubmVy
LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1UHJlbG9hZFNjYW5uZXI6OkhUTUw1UHJlbG9h
ZFNjYW5uZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVQcmVsb2FkU2Nhbm5lcjo6c2Nhbik6
CisgICAgICAgICAgICAtIEEgc2ltcGxlIGxvb3AgdG8gcHVtcCB0aGUgcHJlbG9hZCBzY2FubmVy
J3MgbGV4ZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MNVByZWxvYWRTY2FubmVyOjpwcm9jZXNz
VG9rZW4pOgorICAgICAgICAgICAgLSBQcmVsb2FkIGludGVyZXN0aW5nIHJlc291cmNlcy4gIFN0
b2xlbiBmcm9tIHRoZSBvbGQgcHJlbG9hZAorICAgICAgICAgICAgICBzY2FubmVyLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTDVQcmVsb2FkU2Nhbm5lcjo6c2Nhbm5pbmdCb2R5KToKKyAgICAgICAg
KiBodG1sL0hUTUw1UHJlbG9hZFNjYW5uZXIuaDogQ29waWVkIGZyb20gV2ViQ29yZS9odG1sL1By
ZWxvYWRTY2FubmVyLmguCisKKzIwMTAtMDYtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBD
b25zdGlmeSBzb21lIEhUTUw1VG9rZW4gbWV0aG9kcwogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA1OTIKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggYjQzNGZjMzk4Y2FiN2M1
N2Y2OTI0Y2E1OGM2N2FmYTU1NTY1YzNmNS4uMjJhOGE1ZDA5ZDdhNGVmNWUwZTkzNTBlOWY5YWE1
YWU3YzMzODRiMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xMDk0LDExICsxMDk0LDEzIEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJV2ViQ29yZS9odG1sL0hUTUw1VG9rZW4uaCBcCiAJV2ViQ29yZS9odG1sL0hUTUw1
RG9jdW1lbnRQYXJzZXIuY3BwIFwKIAlXZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5o
IFwKLQlXZWJDb3JlL2h0bWwvSFRNTDVUcmVlQnVpbGRlci5jcHAgXAotCVdlYkNvcmUvaHRtbC9I
VE1MNVRyZWVCdWlsZGVyLmggXAorCVdlYkNvcmUvaHRtbC9IVE1MNVByZWxvYWRTY2FubmVyLmNw
cCBcCisJV2ViQ29yZS9odG1sL0hUTUw1UHJlbG9hZFNjYW5uZXIuaCBcCiAJV2ViQ29yZS9odG1s
L0hUTUw1U2NyaXB0UnVubmVyLmNwcCBcCiAJV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVy
LmggXAogCVdlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lckhvc3QuaCBcCisJV2ViQ29yZS9o
dG1sL0hUTUw1VHJlZUJ1aWxkZXIuY3BwIFwKKwlXZWJDb3JlL2h0bWwvSFRNTDVUcmVlQnVpbGRl
ci5oIFwKIAlXZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwIFwKIAlXZWJDb3JlL2h0
bWwvSFRNTEFsbENvbGxlY3Rpb24uaCBcCiAJV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50
LmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IDlmNWM5NWI4M2JiOGQ5Y2RjODk2YzJkYWJlZjg5NDIzOGU3ZDI0MzMuLmFi
ODM2NDUzN2M2NzYwNjNhNzlkYjA1Y2ZjMGI2MDc4NmEyOThjYmMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xNDgwLDEwICsx
NDgwLDEyIEBACiAgICAgICAgICAgICAnaHRtbC9IVE1MNUxleGVyLmgnLAogICAgICAgICAgICAg
J2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTDVE
b2N1bWVudFBhcnNlci5oJywKLSAgICAgICAgICAgICdodG1sL0hUTUw1VHJlZUJ1aWxkZXIuY3Bw
JywKLSAgICAgICAgICAgICdodG1sL0hUTUw1VHJlZUJ1aWxkZXIuaCcsCisgICAgICAgICAgICAn
aHRtbC9IVE1MNVByZWxvYWRTY2FubmVyLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9IVE1MNVBy
ZWxvYWRTY2FubmVyLmgnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTDVTY3JpcHRSdW5uZXIuY3Bw
JywKICAgICAgICAgICAgICdodG1sL0hUTUw1U2NyaXB0UnVubmVyLmgnLAorICAgICAgICAgICAg
J2h0bWwvSFRNTDVUcmVlQnVpbGRlci5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvSFRNTDVUcmVl
QnVpbGRlci5oJywKICAgICAgICAgICAgICdodG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcCcsCiAg
ICAgICAgICAgICAnaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5oJywKICAgICAgICAgICAgICdodG1s
L0hUTUxBbmNob3JFbGVtZW50LmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJv
IGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA0YTIzMzc1Y2I5YmE2MTNkNmIwMjEzMDNlYmI2
MjI3YTgwOTdmZjgxLi4yY2Q5NTFlMGQ0MWVlNzcyY2RlNWQwNGIyZTcyNTEzMGMzM2JmMmRkIDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8K
QEAgLTYxMyw4ICs2MTMsOSBAQCBTT1VSQ0VTICs9IFwKICAgICBodG1sL0hUTUw1RW50aXR5UGFy
c2VyLmNwcCBcCiAgICAgaHRtbC9IVE1MNUxleGVyLmNwcCBcCiAgICAgaHRtbC9IVE1MNURvY3Vt
ZW50UGFyc2VyLmNwcCBcCi0gICAgaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmNwcCBcCisgICAgaHRt
bC9IVE1MNVByZWxvYWRTY2FubmVyLmNwcCBcCiAgICAgaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5j
cHAgXAorICAgIGh0bWwvSFRNTDVUcmVlQnVpbGRlci5jcHAgXAogICAgIGh0bWwvSFRNTEFsbENv
bGxlY3Rpb24uY3BwIFwKICAgICBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBcCiAgICAgaHRt
bC9IVE1MQXBwbGV0RWxlbWVudC5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKaW5kZXggNDk1N2QyYjkxNTkzODUyYjJkNWIzNTc5MmUxYTBkZWRiYmJkMGZlNC4uZDFmMjhm
ZTg4MzFmMjMyNTYwYjM4N2FlOTUxN2ExYmZlNzI0ZGU1OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCkBAIC0zMzMyNSw2ICszMzMyNSwxNCBAQAogCQkJCT4NCiAJCQk8L0Zp
bGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEhUTUw1UHJlbG9hZFNj
YW5uZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5caHRtbFxIVE1MNVByZWxvYWRTY2FubmVyLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEhUTUw1U2NyaXB0UnVubmVy
LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGYwN2ZhYTU3NTJmMzc4ZDhjMTRiZjkxMWY2NjJkOTNkNTI3Y2E2
ZDguLmVhM2JlMjA3YWZmNGMyNmM2NjBhODVhZDRkOTAxYTI5NzFlOWE2ZDMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNTY0LDYgKzI1NjQsOCBAQAog
CQk5N0RDRTIwMjEwODA3Qzc1MDA1N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RENFMjAwMTA4MDdDNzUw
MDU3RDM5NCAvKiBIaXN0b3J5Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NB
dWRpdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk3REQ0RDg0MEZERjRENkQwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCAqLzsgfTsKIAkJOTdE
RDREODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3REQ0RDg1MEZERjRENkUwMEVDRjlBNCAvKiBY
U1NBdWRpdG9yLmggKi87IH07CisJCTk3RTc5MzY1MTFDNjAzMDkwMEU2NDlCQyAvKiBIVE1MNVBy
ZWxvYWRTY2FubmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk3RTc5MzYzMTFDNjAzMDkwMEU2NDlCQyAvKiBIVE1MNVByZWxvYWRTY2FubmVyLmNw
cCAqLzsgfTsKKwkJOTdFNzkzNjYxMUM2MDMwOTAwRTY0OUJDIC8qIEhUTUw1UHJlbG9hZFNjYW5u
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RTc5
MzY0MTFDNjAzMDkwMEU2NDlCQyAvKiBIVE1MNVByZWxvYWRTY2FubmVyLmggKi87IH07CiAJCTk3
RThCMzU2MTFBMjNDRTIwMDE2OTQwOSAvKiBIVE1MNUxleGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RThCMzU0MTFBMjNDRTIwMDE2OTQwOSAv
KiBIVE1MNUxleGVyLmNwcCAqLzsgfTsKIAkJOTdFOEIzNTcxMUEyM0NFMjAwMTY5NDA5IC8qIEhU
TUw1TGV4ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk3RThCMzU1MTFBMjNDRTIwMDE2OTQwOSAvKiBIVE1MNUxleGVyLmggKi87IH07CiAJCTk3RThC
M0MzMTFBMjg5MDgwMDE2OTQwOSAvKiBIVE1MNVRva2VuLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0U4QjNDMjExQTI4OTA4MDAxNjk0MDkgLyogSFRN
TDVUb2tlbi5oICovOyB9OwpAQCAtODE2MCw2ICs4MTYyLDggQEAKIAkJOTdEQ0UyMDAxMDgwN0M3
NTAwNTdEMzk0IC8qIEhpc3RvcnlDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEhpc3RvcnlDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk3REQ0RDg0MEZERjRENkQwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhTU0F1ZGl0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5N0RENEQ4NTBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYU1NBdWRpdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3RTc5MzYzMTFDNjAzMDkwMEU2NDlCQyAvKiBIVE1MNVBy
ZWxvYWRTY2FubmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhU
TUw1UHJlbG9hZFNjYW5uZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5N0U3
OTM2NDExQzYwMzA5MDBFNjQ5QkMgLyogSFRNTDVQcmVsb2FkU2Nhbm5lci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MNVByZWxvYWRTY2FubmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk3RThCMzU0MTFBMjNDRTIwMDE2OTQwOSAvKiBIVE1MNUxleGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUw1TGV4ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0U4QjM1NTExQTIzQ0UyMDAxNjk0MDkg
LyogSFRNTDVMZXhlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MNUxl
eGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3RThCM0MyMTFBMjg5MDgwMDE2
OTQwOSAvKiBIVE1MNVRva2VuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhU
TUw1VG9rZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNDQ2LDYgKzEzNDUw
LDggQEAKIAkJCQk5NzZFODk1RjExQzBDQTNBMDBFQTlDQTkgLyogSFRNTDVFbnRpdHlQYXJzZXIu
aCAqLywKIAkJCQk5N0U4QjM1NDExQTIzQ0UyMDAxNjk0MDkgLyogSFRNTDVMZXhlci5jcHAgKi8s
CiAJCQkJOTdFOEIzNTUxMUEyM0NFMjAwMTY5NDA5IC8qIEhUTUw1TGV4ZXIuaCAqLywKKwkJCQk5
N0U3OTM2MzExQzYwMzA5MDBFNjQ5QkMgLyogSFRNTDVQcmVsb2FkU2Nhbm5lci5jcHAgKi8sCisJ
CQkJOTdFNzkzNjQxMUM2MDMwOTAwRTY0OUJDIC8qIEhUTUw1UHJlbG9hZFNjYW5uZXIuaCAqLywK
IAkJCQlBODNCM0FFRTExQURFRkY1MDA0NTg4MDkgLyogSFRNTDVTY3JpcHRSdW5uZXIuY3BwICov
LAogCQkJCUE4M0IzQUVGMTFBREVGRjUwMDQ1ODgwOSAvKiBIVE1MNVNjcmlwdFJ1bm5lci5oICov
LAogCQkJCUE4N0YxNjM0MTFBRTg0MTMwMENCQjJFNSAvKiBIVE1MNVNjcmlwdFJ1bm5lckhvc3Qu
aCAqLywKQEAgLTE5NDczLDYgKzE5NDc5LDcgQEAKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5
NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0RENEQ4NzBGREY0
RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UxNzJFMDEx
MTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5N0U3OTM2
NjExQzYwMzA5MDBFNjQ5QkMgLyogSFRNTDVQcmVsb2FkU2Nhbm5lci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC0yMTc3OSw2ICsyMTc4Niw3IEBACiAJCQkJOTNGMTlCMDUwODI0NUU1OTAwMUU5QUJDIC8q
IFhTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQkU1MTJEMENG
NkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTdERDREODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJOTdFNzkzNjUxMUM2MDMwOTAwRTY0OUJDIC8qIEhUTUw1UHJlbG9hZFNjYW5uZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBh
cnNlci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggMjhk
ZjE0ZTI1YzFmYmExMDY5Yzg4ZDVhNWFlNTM2ODc2NDU5Nzk4OC4uYzc5OWEzMzgzZDY0MmU0ODRm
ZjNjYjFmM2Q5ZjI0NTU4OTJlZWQ0OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUw1RG9j
dW1lbnRQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNw
cApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIkhUTUw1TGV4ZXIuaCIKKyNpbmNsdWRlICJIVE1MNVByZWxvYWRTY2Fu
bmVyLmgiCiAjaW5jbHVkZSAiSFRNTDVTY3JpcHRSdW5uZXIuaCIKICNpbmNsdWRlICJIVE1MNVRy
ZWVCdWlsZGVyLmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCkBAIC0xMjMsNyArMTI0LDE2
IEBAIHZvaWQgSFRNTDVEb2N1bWVudFBhcnNlcjo6cHVtcExleGVyKCkKICAgICAgICAgYm9vbCBz
aG91bGRDb250aW51ZVBhcnNpbmcgPSBtX3NjcmlwdFJ1bm5lci0+ZXhlY3V0ZShzY3JpcHRFbGVt
ZW50LnJlbGVhc2UoKSwgc2NyaXB0U3RhcnRMaW5lKTsKICAgICAgICAgbV90cmVlQ29uc3RydWN0
b3ItPnNldFBhdXNlZCghc2hvdWxkQ29udGludWVQYXJzaW5nKTsKICAgICAgICAgaWYgKCFzaG91
bGRDb250aW51ZVBhcnNpbmcpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICBpZiAoaXNXYWl0aW5nRm9yU2NyaXB0cygpKSB7CisgICAgICAgIEFT
U0VSVChtX2xleGVyLT5zdGF0ZSgpID09IEhUTUw1TGV4ZXI6OkRhdGFTdGF0ZSk7CisgICAgICAg
IGlmICghbV9wcmVsb2FkU2Nhbm5lcikgeworICAgICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lci5z
ZXQobmV3IEhUTUw1UHJlbG9hZFNjYW5uZXIobV9kb2N1bWVudCkpOworICAgICAgICAgICAgbV9w
cmVsb2FkU2Nhbm5lci0+YXBwZW5kVG9FbmQobV9pbnB1dC5jdXJyZW50KCkpOworICAgICAgICB9
CisgICAgICAgIG1fcHJlbG9hZFNjYW5uZXItPnNjYW4oKTsKICAgICB9CiAKICAgICBkaWRQdW1w
TGV4ZXIoKTsKQEAgLTE1Nyw2ICsxNjcsOSBAQCB2b2lkIEhUTUw1RG9jdW1lbnRQYXJzZXI6Ondy
aXRlKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBib29sIGFwcGVuZERhdGEpCiAKICAg
ICBpZiAoYXBwZW5kRGF0YSkgewogICAgICAgICBtX2lucHV0LmFwcGVuZFRvRW5kKHNvdXJjZSk7
CisgICAgICAgIGlmIChtX3ByZWxvYWRTY2FubmVyKQorICAgICAgICAgICAgbV9wcmVsb2FkU2Nh
bm5lci0+YXBwZW5kVG9FbmQoc291cmNlKTsKKwogICAgICAgICBpZiAobV93cml0ZU5lc3RpbmdM
ZXZlbCA+IDEpIHsKICAgICAgICAgICAgIC8vIFdlJ3ZlIGdvdHRlbiBkYXRhIG9mZiB0aGUgbmV0
d29yayBpbiBhIG5lc3RlZCBjYWxsIHRvIHdyaXRlKCkuCiAgICAgICAgICAgICAvLyBXZSBkb24n
dCB3YW50IHRvIGNvbnN1bWUgYW55IG1vcmUgb2YgdGhlIGlucHV0IHN0cmVhbSBub3cuICBEbwpA
QCAtMjM1LDYgKzI0OCw3IEBAIHZvaWQgSFRNTDVEb2N1bWVudFBhcnNlcjo6cmVzdW1lUGFyc2lu
Z0FmdGVyU2NyaXB0RXhlY3V0aW9uKCkKIHsKICAgICBBU1NFUlQoIW1fc2NyaXB0UnVubmVyLT5p
blNjcmlwdEV4ZWN1dGlvbigpKTsKICAgICBBU1NFUlQoIW1fdHJlZUNvbnN0cnVjdG9yLT5pc1Bh
dXNlZCgpKTsKKwogICAgIHB1bXBMZXhlcklmUG9zc2libGUoKTsKIAogICAgIC8vIFRoZSBkb2N1
bWVudCBhbHJlYWR5IGZpbmlzaGVkIHBhcnNpbmcgd2Ugd2VyZSBqdXN0IHdhaXRpbmcgb24gc2Ny
aXB0cyB3aGVuIGZpbmlzaGVkKCkgd2FzIGNhbGxlZC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRt
bC9IVE1MNURvY3VtZW50UGFyc2VyLmggYi9XZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNl
ci5oCmluZGV4IDRhNzVjZWMxZWFkYWM2NThjM2VhMDE1M2Y1NGViMDFhNTcwZWY3NmEuLjM2NzMy
YWIwMGZhYTIyNDBmZjc3YjA4OWNhMmI5ZWQ2YzBkYjkyM2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1RG9jdW1l
bnRQYXJzZXIuaApAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBMZWdhY3lIVE1MVHJlZUNvbnN0cnVj
dG9yOwogY2xhc3MgSFRNTDVMZXhlcjsKIGNsYXNzIEhUTUw1U2NyaXB0UnVubmVyOwogY2xhc3Mg
SFRNTDVUcmVlQnVpbGRlcjsKK2NsYXNzIEhUTUw1UHJlbG9hZFNjYW5uZXI7CiBjbGFzcyBTY3Jp
cHRDb250cm9sbGVyOwogY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKIApAQCAtMTgzLDYgKzE4NCw3
IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPEhUTUw1TGV4ZXI+IG1fbGV4ZXI7CiAgICAgT3duUHRy
PEhUTUw1U2NyaXB0UnVubmVyPiBtX3NjcmlwdFJ1bm5lcjsKICAgICBPd25QdHI8SFRNTDVUcmVl
QnVpbGRlcj4gbV90cmVlQ29uc3RydWN0b3I7CisgICAgT3duUHRyPEhUTUw1UHJlbG9hZFNjYW5u
ZXI+IG1fcHJlbG9hZFNjYW5uZXI7CiAgICAgYm9vbCBtX2VuZFdhc0RlbGF5ZWQ7CiAgICAgaW50
IG1fd3JpdGVOZXN0aW5nTGV2ZWw7CiB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUw1
UHJlbG9hZFNjYW5uZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUw1UHJlbG9hZFNjYW5uZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjc4ZDAwNWVmZmMxMzUwY2U2MDcxY2M3MWI2ZWIwZjcwMTgwZjVjZmMKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTDVQcmVsb2FkU2Nhbm5lci5jcHAKQEAg
LTAsMCArMSwxMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSwgSW5j
LiBodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8KKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhUTUw1UHJl
bG9hZFNjYW5uZXIuaCIKKworI2luY2x1ZGUgIkNTU0hlbHBlci5oIgorI2luY2x1ZGUgIkRvY0xv
YWRlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiSFRNTDVUcmVlQnVpbGRl
ci5oIgorI2luY2x1ZGUgIkhUTUxMaW5rRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisK
K25hbWVzcGFjZSB7CisKK2NsYXNzIFByZWxvYWRUYXNrIHsKK3B1YmxpYzoKKyAgICBQcmVsb2Fk
VGFzayhjb25zdCBIVE1MNVRva2VuJiB0b2tlbikKKyAgICAgICAgOiBtX3RhZ05hbWUodG9rZW4u
bmFtZSgpLmRhdGEoKSwgdG9rZW4ubmFtZSgpLnNpemUoKSkKKyAgICAgICAgLCBtX2xpbmtJc1N0
eWxlU2hlZXQoZmFsc2UpCisgICAgeworICAgICAgICBpZiAobV90YWdOYW1lICE9IHNjcmlwdFRh
ZyAmJiBtX3RhZ05hbWUgIT0gaW1nVGFnICYmIG1fdGFnTmFtZSAhPSBsaW5rVGFnKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAoSFRNTDVUb2tlbjo6QXR0cmlidXRlTGlzdDo6
Y29uc3RfaXRlcmF0b3IgaXRlciA9IHRva2VuLmF0dHJpYnV0ZXMoKS5iZWdpbigpOworICAgICAg
ICAgICAgIGl0ZXIgIT0gdG9rZW4uYXR0cmlidXRlcygpLmVuZCgpOyArK2l0ZXIpIHsKKyAgICAg
ICAgICAgIEF0b21pY1N0cmluZyBhdHRyaWJ1dGVOYW1lKGl0ZXItPm1fbmFtZS5kYXRhKCksIGl0
ZXItPm1fbmFtZS5zaXplKCkpOworICAgICAgICAgICAgU3RyaW5nIGF0dHJpYnV0ZVZhbHVlKGl0
ZXItPm1fdmFsdWUuZGF0YSgpLCBpdGVyLT5tX3ZhbHVlLnNpemUoKSk7CisKKyAgICAgICAgICAg
IGlmIChtX3RhZ05hbWUgPT0gc2NyaXB0VGFnIHx8IG1fdGFnTmFtZSA9PSBpbWdUYWcpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSBzcmNBdHRyICYmIG1fdXJsVG9Mb2Fk
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgbV91cmxUb0xvYWQgPSBkZXByZWNhdGVk
UGFyc2VVUkwoYXR0cmlidXRlVmFsdWUpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGF0dHJp
YnV0ZU5hbWUgPT0gY2hhcnNldEF0dHIpCisgICAgICAgICAgICAgICAgICAgIG1fY2hhcnNldCA9
IGF0dHJpYnV0ZVZhbHVlOworICAgICAgICAgICAgfSBlbHNlIGlmIChtX3RhZ05hbWUgPT0gbGlu
a1RhZykgeworICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVOYW1lID09IGhyZWZBdHRyICYm
IG1fdXJsVG9Mb2FkLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgbV91cmxUb0xvYWQg
PSBkZXByZWNhdGVkUGFyc2VVUkwoYXR0cmlidXRlVmFsdWUpOworICAgICAgICAgICAgICAgIGVs
c2UgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gcmVsQXR0cikgeworICAgICAgICAgICAgICAgICAgICBI
VE1MTGlua0VsZW1lbnQ6OlJlbEF0dHJpYnV0ZSByZWw7CisgICAgICAgICAgICAgICAgICAgIEhU
TUxMaW5rRWxlbWVudDo6dG9rZW5pemVSZWxBdHRyaWJ1dGUoYXR0cmlidXRlVmFsdWUsIHJlbCk7
CisgICAgICAgICAgICAgICAgICAgIG1fbGlua0lzU3R5bGVTaGVldCA9IHJlbC5tX2lzU3R5bGVT
aGVldCAmJiAhcmVsLm1faXNBbHRlcm5hdGUgJiYgIXJlbC5tX2lzSWNvbiAmJiAhcmVsLm1faXNE
TlNQcmVmZXRjaDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZU5hbWUgPT0g
Y2hhcnNldEF0dHIpCisgICAgICAgICAgICAgICAgICAgIG1fY2hhcnNldCA9IGF0dHJpYnV0ZVZh
bHVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBwcmVsb2Fk
KERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBzY2FubmluZ0JvZHkpCisgICAgeworICAgICAgICBp
ZiAobV91cmxUb0xvYWQuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGlmIChtX3RhZ05hbWUgPT0gc2NyaXB0VGFnKQorICAgICAgICAgICAgZG9jdW1lbnQtPmRvY0xv
YWRlcigpLT5wcmVsb2FkKENhY2hlZFJlc291cmNlOjpTY3JpcHQsIG1fdXJsVG9Mb2FkLCBtX2No
YXJzZXQsIHNjYW5uaW5nQm9keSk7CisgICAgICAgIGVsc2UgaWYgKG1fdGFnTmFtZSA9PSBpbWdU
YWcpIAorICAgICAgICAgICAgZG9jdW1lbnQtPmRvY0xvYWRlcigpLT5wcmVsb2FkKENhY2hlZFJl
c291cmNlOjpJbWFnZVJlc291cmNlLCBtX3VybFRvTG9hZCwgU3RyaW5nKCksIHNjYW5uaW5nQm9k
eSk7CisgICAgICAgIGVsc2UgaWYgKG1fdGFnTmFtZSA9PSBsaW5rVGFnICYmIG1fbGlua0lzU3R5
bGVTaGVldCkgCisgICAgICAgICAgICBkb2N1bWVudC0+ZG9jTG9hZGVyKCktPnByZWxvYWQoQ2Fj
aGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQsIG1fdXJsVG9Mb2FkLCBtX2NoYXJzZXQsIHNjYW5u
aW5nQm9keSk7CisgICAgfQorCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKCkgY29u
c3QgeyByZXR1cm4gbV90YWdOYW1lOyB9CisKK3ByaXZhdGU6CisgICAgQXRvbWljU3RyaW5nIG1f
dGFnTmFtZTsKKyAgICBTdHJpbmcgbV91cmxUb0xvYWQ7CisgICAgU3RyaW5nIG1fY2hhcnNldDsK
KyAgICBib29sIG1fbGlua0lzU3R5bGVTaGVldDsKK307CisKK30gLy8gbmFtZXNwYWNlCisKK0hU
TUw1UHJlbG9hZFNjYW5uZXI6OkhUTUw1UHJlbG9hZFNjYW5uZXIoRG9jdW1lbnQqIGRvY3VtZW50
KQorICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKKyAgICAsIG1fYm9keVNlZW4oZmFsc2UpCit7
Cit9CisKK3ZvaWQgSFRNTDVQcmVsb2FkU2Nhbm5lcjo6YXBwZW5kVG9FbmQoY29uc3QgU2VnbWVu
dGVkU3RyaW5nJiBzb3VyY2UpCit7CisgICAgbV9zb3VyY2UuYXBwZW5kKHNvdXJjZSk7Cit9CisK
K3ZvaWQgSFRNTDVQcmVsb2FkU2Nhbm5lcjo6c2NhbigpCit7CisgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBzYXZlIGFuZCByZS11c2UgdGhlc2UgdG9rZW5zIGluIEhUTUw1RG9jdW1lbnRQYXJzZXIg
aWYKKyAgICAvLyB0aGUgcGVuZGluZyBzY3JpcHQgZG9lc24ndCBlbmQgdXAgY2FsbGluZyBkb2N1
bWVudC53cml0ZS4KKyAgICB3aGlsZSAobV9sZXhlci5uZXh0VG9rZW4obV9zb3VyY2UsIG1fdG9r
ZW4pKSB7CisgICAgICAgIHByb2Nlc3NUb2tlbigpOworICAgICAgICBtX3Rva2VuLmNsZWFyKCk7
CisgICAgfQorfQorCit2b2lkIEhUTUw1UHJlbG9hZFNjYW5uZXI6OnByb2Nlc3NUb2tlbigpCit7
CisgICAgaWYgKG1fdG9rZW4udHlwZSgpICE9IEhUTUw1VG9rZW46OlN0YXJ0VGFnKQorICAgICAg
ICByZXR1cm47CisKKyAgICBQcmVsb2FkVGFzayB0YXNrKG1fdG9rZW4pOworICAgIG1fbGV4ZXIu
c2V0U3RhdGUoSFRNTDVUcmVlQnVpbGRlcjo6YWRqdXN0ZWRMZXhlclN0YXRlKG1fbGV4ZXIuc3Rh
dGUoKSwgdGFzay50YWdOYW1lKCkpKTsKKworICAgIGlmICh0YXNrLnRhZ05hbWUoKSA9PSBib2R5
VGFnKQorICAgICAgICBtX2JvZHlTZWVuID0gdHJ1ZTsKKworICAgIHRhc2sucHJlbG9hZChtX2Rv
Y3VtZW50LCBtX2RvY3VtZW50LT5ib2R5KCkgfHwgbV9ib2R5U2Vlbik7Cit9CisKK30KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MNVByZWxvYWRTY2FubmVyLmggYi9XZWJDb3JlL2h0bWwv
SFRNTDVQcmVsb2FkU2Nhbm5lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzNTM5YjBiMzUxMmRkYjM2NDc2Mjk1
ODRhNTZiNzg4YjM4YWM0YWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTDVQ
cmVsb2FkU2Nhbm5lci5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEhUTUw1UHJlbG9hZFNjYW5uZXJfaAorI2Rl
ZmluZSBIVE1MNVByZWxvYWRTY2FubmVyX2gKKworI2luY2x1ZGUgIkhUTUw1TGV4ZXIuaCIKKyNp
bmNsdWRlICJIVE1MNVRva2VuLmgiCisjaW5jbHVkZSAiU2VnbWVudGVkU3RyaW5nLmgiCisjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
RG9jdW1lbnQ7CitjbGFzcyBIVE1MNVRva2VuOworY2xhc3MgU2VnbWVudGVkU3RyaW5nOworCitj
bGFzcyBIVE1MNVByZWxvYWRTY2FubmVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKK3B1YmxpYzoK
KyAgICBIVE1MNVByZWxvYWRTY2FubmVyKERvY3VtZW50Kik7CisKKyAgICB2b2lkIGFwcGVuZFRv
RW5kKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYpOworICAgIHZvaWQgc2NhbigpOworCitwcml2YXRl
OgorICAgIHZvaWQgcHJvY2Vzc1Rva2VuKCk7CisKKyAgICBEb2N1bWVudCogbV9kb2N1bWVudDsK
KyAgICBTZWdtZW50ZWRTdHJpbmcgbV9zb3VyY2U7CisgICAgSFRNTDVMZXhlciBtX2xleGVyOwor
ICAgIEhUTUw1VG9rZW4gbV90b2tlbjsKKyAgICBib29sIG1fYm9keVNlZW47Cit9OworCit9CisK
KyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58727</attachid>
            <date>2010-06-14 16:52:47 -0700</date>
            <delta_ts>2010-06-14 16:52:47 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-40557-20100614165246.patch</filename>
            <type>text/plain</type>
            <size>20554</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCBkYzk1Y2RhMGY0YjljYmNlNzM3MDA3MzQzMmNkNGI3YzQyZGMwYTQ1Li4xZDY2OWNhN2RlZjlh
ODg4YjRiZmNiNTA3ODliNzQ4NzcxZjk3YWQ4IDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0yNTEsOCArMjUxLDkgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJaHRtbC9IVE1MNUVudGl0eVBhcnNlci5j
cHAgXAogCWh0bWwvSFRNTDVMZXhlci5jcHAgXAogCWh0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5j
cHAgXAotCWh0bWwvSFRNTDVUcmVlQnVpbGRlci5jcHAgXAorCWh0bWwvSFRNTDVQcmVsb2FkU2Nh
bm5lci5jcHAgXAogCWh0bWwvSFRNTDVTY3JpcHRSdW5uZXIuY3BwIFwKKwlodG1sL0hUTUw1VHJl
ZUJ1aWxkZXIuY3BwIFwKIAlodG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcCBcCiAJaHRtbC9IVE1M
Q29sbGVjdGlvbi5jcHAgXAogCWh0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHAgXApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggZDUxZWQxNGFlNmY3YTA2N2ExYTI5ZGVmZDhmM2FkYjc1N2ZkZTdjMy4uNTViNzM4ZWQxNWU3
MDdkNjI4Y2Q3NGQxZDczNDQ5ODU5NGFjYTAxNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC05MDYsOCArOTA2LDkgQEAg
U0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGh0bWwvSFRNTDVFbnRpdHlQYXJzZXIuY3BwCiAgICAg
aHRtbC9IVE1MNUxleGVyLmNwcAogICAgIGh0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHAKLSAg
ICBodG1sL0hUTUw1VHJlZUJ1aWxkZXIuY3BwCisgICAgaHRtbC9IVE1MNVByZWxvYWRTY2FubmVy
LmNwcAogICAgIGh0bWwvSFRNTDVTY3JpcHRSdW5uZXIuY3BwCisgICAgaHRtbC9IVE1MNVRyZWVC
dWlsZGVyLmNwcAogICAgIGh0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwCiAgICAgaHRtbC9IVE1M
QW5jaG9yRWxlbWVudC5jcHAKICAgICBodG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkZThjZTU3
ZWMwMzcwZWI5MWVmN2VkMWNkNmY3NWI2NDFjYzhmMjMyLi4yZjU3ZTAzM2Q1NWY0MTNkNmMxMDgw
NDBjMmQxM2FkNWEyOGZiMjBhIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM4IEBACiAyMDEwLTA2LTE0ICBBZGFtIEJhcnRo
ICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwu
CisKKyAgICAgICAgQWRkIGEgcHJlbG9hZCBzY2FubmVyIGZvciB0aGUgSFRNTDUgcGFyc2VyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDU1NworCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIHNpbXBsZSBwcmVsb2FkIHNjYW5uZXIgZm9yIHRoZSBI
VE1MNSBwYXJzZXIuICBUaGlzCisgICAgICAgIHByZWxvYWQgc2Nhbm5lciBpcyBub3QgYXMgYXdl
c29tZSBhcyB0aGUgb2xkIG9uZSBiZWNhdXNlIGl0IGRvZXNuJ3QKKyAgICAgICAgc2NhbiBDU1Ms
IGJ1dCBpdCdzIG11Y2ggc2ltcGxlci4KKworICAgICAgICAqIEFuZHJvaWQubWs6CisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICog
V2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgICAgIC0gQnVpbGQgZmlsZSB0b3J0dXJlLgorICAgICAgICAq
IGh0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNURv
Y3VtZW50UGFyc2VyOjp3cml0ZSk6CisgICAgICAgICAgICAtIENhbGwgaW50byB0aGUgcHJlbG9h
ZCBzY2FubmVyIHdoZW4gd2FpdGluZyBmb3IgYSBzY3JpcHQuCisgICAgICAgICogaHRtbC9IVE1M
NURvY3VtZW50UGFyc2VyLmg6CisgICAgICAgICogaHRtbC9IVE1MNVByZWxvYWRTY2FubmVyLmNw
cDogQ29waWVkIGZyb20gV2ViQ29yZS9odG1sL1ByZWxvYWRTY2FubmVyLmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUw1UHJlbG9hZFNjYW5uZXI6OkhUTUw1UHJlbG9hZFNjYW5uZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTDVQcmVsb2FkU2Nhbm5lcjo6c2Nhbik6CisgICAgICAgICAgICAt
IEEgc2ltcGxlIGxvb3AgdG8gcHVtcCB0aGUgcHJlbG9hZCBzY2FubmVyJ3MgbGV4ZXIuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MNVByZWxvYWRTY2FubmVyOjpwcm9jZXNzVG9rZW4pOgorICAgICAg
ICAgICAgLSBQcmVsb2FkIGludGVyZXN0aW5nIHJlc291cmNlcy4gIFN0b2xlbiBmcm9tIHRoZSBv
bGQgcHJlbG9hZAorICAgICAgICAgICAgICBzY2FubmVyLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TDVQcmVsb2FkU2Nhbm5lcjo6c2Nhbm5pbmdCb2R5KToKKyAgICAgICAgKiBodG1sL0hUTUw1UHJl
bG9hZFNjYW5uZXIuaDogQ29waWVkIGZyb20gV2ViQ29yZS9odG1sL1ByZWxvYWRTY2FubmVyLmgu
CisKKzIwMTAtMDYtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwogICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAogICAgICAgICBDb25zdGlmeSBzb21lIEhU
TUw1VG9rZW4gbWV0aG9kcwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggYjQzNGZjMzk4Y2FiN2M1N2Y2OTI0Y2E1OGM2N2Fm
YTU1NTY1YzNmNS4uMjJhOGE1ZDA5ZDdhNGVmNWUwZTkzNTBlOWY5YWE1YWU3YzMzODRiMyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCkBAIC0xMDk0LDExICsxMDk0LDEzIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29y
ZS9odG1sL0hUTUw1VG9rZW4uaCBcCiAJV2ViQ29yZS9odG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIu
Y3BwIFwKIAlXZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5oIFwKLQlXZWJDb3JlL2h0
bWwvSFRNTDVUcmVlQnVpbGRlci5jcHAgXAotCVdlYkNvcmUvaHRtbC9IVE1MNVRyZWVCdWlsZGVy
LmggXAorCVdlYkNvcmUvaHRtbC9IVE1MNVByZWxvYWRTY2FubmVyLmNwcCBcCisJV2ViQ29yZS9o
dG1sL0hUTUw1UHJlbG9hZFNjYW5uZXIuaCBcCiAJV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVu
bmVyLmNwcCBcCiAJV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVyLmggXAogCVdlYkNvcmUv
aHRtbC9IVE1MNVNjcmlwdFJ1bm5lckhvc3QuaCBcCisJV2ViQ29yZS9odG1sL0hUTUw1VHJlZUJ1
aWxkZXIuY3BwIFwKKwlXZWJDb3JlL2h0bWwvSFRNTDVUcmVlQnVpbGRlci5oIFwKIAlXZWJDb3Jl
L2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwIFwKIAlXZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxl
Y3Rpb24uaCBcCiAJV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBcCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDlm
NWM5NWI4M2JiOGQ5Y2RjODk2YzJkYWJlZjg5NDIzOGU3ZDI0MzMuLmFiODM2NDUzN2M2NzYwNjNh
NzlkYjA1Y2ZjMGI2MDc4NmEyOThjYmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xNDgwLDEwICsxNDgwLDEyIEBACiAgICAg
ICAgICAgICAnaHRtbC9IVE1MNUxleGVyLmgnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTDVEb2N1
bWVudFBhcnNlci5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5o
JywKLSAgICAgICAgICAgICdodG1sL0hUTUw1VHJlZUJ1aWxkZXIuY3BwJywKLSAgICAgICAgICAg
ICdodG1sL0hUTUw1VHJlZUJ1aWxkZXIuaCcsCisgICAgICAgICAgICAnaHRtbC9IVE1MNVByZWxv
YWRTY2FubmVyLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9IVE1MNVByZWxvYWRTY2FubmVyLmgn
LAogICAgICAgICAgICAgJ2h0bWwvSFRNTDVTY3JpcHRSdW5uZXIuY3BwJywKICAgICAgICAgICAg
ICdodG1sL0hUTUw1U2NyaXB0UnVubmVyLmgnLAorICAgICAgICAgICAgJ2h0bWwvSFRNTDVUcmVl
QnVpbGRlci5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvSFRNTDVUcmVlQnVpbGRlci5oJywKICAg
ICAgICAgICAgICdodG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcCcsCiAgICAgICAgICAgICAnaHRt
bC9IVE1MQWxsQ29sbGVjdGlvbi5oJywKICAgICAgICAgICAgICdodG1sL0hUTUxBbmNob3JFbGVt
ZW50LmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJD
b3JlLnBybwppbmRleCA0YTIzMzc1Y2I5YmE2MTNkNmIwMjEzMDNlYmI2MjI3YTgwOTdmZjgxLi4y
Y2Q5NTFlMGQ0MWVlNzcyY2RlNWQwNGIyZTcyNTEzMGMzM2JmMmRkIDEwMDY0NAotLS0gYS9XZWJD
b3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTYxMyw4ICs2MTMs
OSBAQCBTT1VSQ0VTICs9IFwKICAgICBodG1sL0hUTUw1RW50aXR5UGFyc2VyLmNwcCBcCiAgICAg
aHRtbC9IVE1MNUxleGVyLmNwcCBcCiAgICAgaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcCBc
Ci0gICAgaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmNwcCBcCisgICAgaHRtbC9IVE1MNVByZWxvYWRT
Y2FubmVyLmNwcCBcCiAgICAgaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5jcHAgXAorICAgIGh0bWwv
SFRNTDVUcmVlQnVpbGRlci5jcHAgXAogICAgIGh0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwIFwK
ICAgICBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBcCiAgICAgaHRtbC9IVE1MQXBwbGV0RWxl
bWVudC5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggNDk1N2Qy
YjkxNTkzODUyYjJkNWIzNTc5MmUxYTBkZWRiYmJkMGZlNC4uZDFmMjhmZTg4MzFmMjMyNTYwYjM4
N2FlOTUxN2ExYmZlNzI0ZGU1OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CkBAIC0zMzMyNSw2ICszMzMyNSwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEhUTUw1UHJlbG9hZFNjYW5uZXIuY3BwIg0KKwkJ
CQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxI
VE1MNVByZWxvYWRTY2FubmVyLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEhUTUw1U2NyaXB0UnVubmVyLmNwcCINCiAJCQkJPg0K
IAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGYwN2ZhYTU3NTJmMzc4ZDhjMTRiZjkxMWY2NjJkOTNkNTI3Y2E2ZDguLmVhM2JlMjA3YWZm
NGMyNmM2NjBhODVhZDRkOTAxYTI5NzFlOWE2ZDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNTY0LDYgKzI1NjQsOCBAQAogCQk5N0RDRTIwMjEwODA3
Qzc1MDA1N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RENFMjAwMTA4MDdDNzUwMDU3RDM5NCAvKiBIaXN0
b3J5Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTk3REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3REQ0RDg0MEZERjRE
NkQwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCAqLzsgfTsKIAkJOTdERDREODcwRkRGNEQ2RTAw
RUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk3REQ0RDg1MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmggKi87
IH07CisJCTk3RTc5MzY1MTFDNjAzMDkwMEU2NDlCQyAvKiBIVE1MNVByZWxvYWRTY2FubmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RTc5MzYz
MTFDNjAzMDkwMEU2NDlCQyAvKiBIVE1MNVByZWxvYWRTY2FubmVyLmNwcCAqLzsgfTsKKwkJOTdF
NzkzNjYxMUM2MDMwOTAwRTY0OUJDIC8qIEhUTUw1UHJlbG9hZFNjYW5uZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RTc5MzY0MTFDNjAzMDkwMEU2
NDlCQyAvKiBIVE1MNVByZWxvYWRTY2FubmVyLmggKi87IH07CiAJCTk3RThCMzU2MTFBMjNDRTIw
MDE2OTQwOSAvKiBIVE1MNUxleGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk3RThCMzU0MTFBMjNDRTIwMDE2OTQwOSAvKiBIVE1MNUxleGVyLmNw
cCAqLzsgfTsKIAkJOTdFOEIzNTcxMUEyM0NFMjAwMTY5NDA5IC8qIEhUTUw1TGV4ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RThCMzU1MTFBMjND
RTIwMDE2OTQwOSAvKiBIVE1MNUxleGVyLmggKi87IH07CiAJCTk3RThCM0MzMTFBMjg5MDgwMDE2
OTQwOSAvKiBIVE1MNVRva2VuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5N0U4QjNDMjExQTI4OTA4MDAxNjk0MDkgLyogSFRNTDVUb2tlbi5oICovOyB9
OwpAQCAtODE2MCw2ICs4MTYyLDggQEAKIAkJOTdEQ0UyMDAxMDgwN0M3NTAwNTdEMzk0IC8qIEhp
c3RvcnlDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhpc3Rv
cnlDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3REQ0RDg0MEZE
RjRENkQwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFhTU0F1ZGl0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5N0RENEQ4NTBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBYU1NBdWRpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTk3RTc5MzYzMTFDNjAzMDkwMEU2NDlCQyAvKiBIVE1MNVByZWxvYWRTY2FubmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUw1UHJlbG9hZFNjYW5u
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5N0U3OTM2NDExQzYwMzA5MDBF
NjQ5QkMgLyogSFRNTDVQcmVsb2FkU2Nhbm5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBIVE1MNVByZWxvYWRTY2FubmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk3RThCMzU0MTFBMjNDRTIwMDE2OTQwOSAvKiBIVE1MNUxleGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUw1TGV4ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5N0U4QjM1NTExQTIzQ0UyMDAxNjk0MDkgLyogSFRNTDVMZXhlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MNUxleGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3RThCM0MyMTFBMjg5MDgwMDE2OTQwOSAvKiBIVE1MNVRv
a2VuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUw1VG9rZW4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNDQ2LDYgKzEzNDUwLDggQEAKIAkJCQk5NzZF
ODk1RjExQzBDQTNBMDBFQTlDQTkgLyogSFRNTDVFbnRpdHlQYXJzZXIuaCAqLywKIAkJCQk5N0U4
QjM1NDExQTIzQ0UyMDAxNjk0MDkgLyogSFRNTDVMZXhlci5jcHAgKi8sCiAJCQkJOTdFOEIzNTUx
MUEyM0NFMjAwMTY5NDA5IC8qIEhUTUw1TGV4ZXIuaCAqLywKKwkJCQk5N0U3OTM2MzExQzYwMzA5
MDBFNjQ5QkMgLyogSFRNTDVQcmVsb2FkU2Nhbm5lci5jcHAgKi8sCisJCQkJOTdFNzkzNjQxMUM2
MDMwOTAwRTY0OUJDIC8qIEhUTUw1UHJlbG9hZFNjYW5uZXIuaCAqLywKIAkJCQlBODNCM0FFRTEx
QURFRkY1MDA0NTg4MDkgLyogSFRNTDVTY3JpcHRSdW5uZXIuY3BwICovLAogCQkJCUE4M0IzQUVG
MTFBREVGRjUwMDQ1ODgwOSAvKiBIVE1MNVNjcmlwdFJ1bm5lci5oICovLAogCQkJCUE4N0YxNjM0
MTFBRTg0MTMwMENCQjJFNSAvKiBIVE1MNVNjcmlwdFJ1bm5lckhvc3QuaCAqLywKQEAgLTE5NDcz
LDYgKzE5NDc5LDcgQEAKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNv
ZGVTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0RENEQ4NzBGREY0RDZFMDBFQ0Y5QTQgLyog
WFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UxNzJFMDExMTM2RThDRTAwNjJBNTMz
IC8qIFpvb21Nb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5N0U3OTM2NjExQzYwMzA5MDBFNjQ5
QkMgLyogSFRNTDVQcmVsb2FkU2Nhbm5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMTc3OSw2ICsy
MTc4Niw3IEBACiAJCQkJOTNGMTlCMDUwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3JM
aWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAv
KiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdERDREODYwRkRGNEQ2
RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTdFNzkzNjUx
MUM2MDMwOTAwRTY0OUJDIC8qIEhUTUw1UHJlbG9hZFNjYW5uZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHAgYi9XZWJD
b3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggMjhkZjE0ZTI1YzFmYmExMDY5
Yzg4ZDVhNWFlNTM2ODc2NDU5Nzk4OC4uYzc5OWEzMzgzZDY0MmU0ODRmZjNjYjFmM2Q5ZjI0NTU4
OTJlZWQ0OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuY3Bw
CisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcApAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUg
IkhUTUw1TGV4ZXIuaCIKKyNpbmNsdWRlICJIVE1MNVByZWxvYWRTY2FubmVyLmgiCiAjaW5jbHVk
ZSAiSFRNTDVTY3JpcHRSdW5uZXIuaCIKICNpbmNsdWRlICJIVE1MNVRyZWVCdWlsZGVyLmgiCiAj
aW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCkBAIC0xMjMsNyArMTI0LDE2IEBAIHZvaWQgSFRNTDVE
b2N1bWVudFBhcnNlcjo6cHVtcExleGVyKCkKICAgICAgICAgYm9vbCBzaG91bGRDb250aW51ZVBh
cnNpbmcgPSBtX3NjcmlwdFJ1bm5lci0+ZXhlY3V0ZShzY3JpcHRFbGVtZW50LnJlbGVhc2UoKSwg
c2NyaXB0U3RhcnRMaW5lKTsKICAgICAgICAgbV90cmVlQ29uc3RydWN0b3ItPnNldFBhdXNlZCgh
c2hvdWxkQ29udGludWVQYXJzaW5nKTsKICAgICAgICAgaWYgKCFzaG91bGRDb250aW51ZVBhcnNp
bmcpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBpZiAoaXNXYWl0aW5nRm9yU2NyaXB0cygpKSB7CisgICAgICAgIEFTU0VSVChtX2xleGVyLT5z
dGF0ZSgpID09IEhUTUw1TGV4ZXI6OkRhdGFTdGF0ZSk7CisgICAgICAgIGlmICghbV9wcmVsb2Fk
U2Nhbm5lcikgeworICAgICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lci5zZXQobmV3IEhUTUw1UHJl
bG9hZFNjYW5uZXIobV9kb2N1bWVudCkpOworICAgICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lci0+
YXBwZW5kVG9FbmQobV9pbnB1dC5jdXJyZW50KCkpOworICAgICAgICB9CisgICAgICAgIG1fcHJl
bG9hZFNjYW5uZXItPnNjYW4oKTsKICAgICB9CiAKICAgICBkaWRQdW1wTGV4ZXIoKTsKQEAgLTE1
Nyw2ICsxNjcsOSBAQCB2b2lkIEhUTUw1RG9jdW1lbnRQYXJzZXI6OndyaXRlKGNvbnN0IFNlZ21l
bnRlZFN0cmluZyYgc291cmNlLCBib29sIGFwcGVuZERhdGEpCiAKICAgICBpZiAoYXBwZW5kRGF0
YSkgewogICAgICAgICBtX2lucHV0LmFwcGVuZFRvRW5kKHNvdXJjZSk7CisgICAgICAgIGlmICht
X3ByZWxvYWRTY2FubmVyKQorICAgICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lci0+YXBwZW5kVG9F
bmQoc291cmNlKTsKKwogICAgICAgICBpZiAobV93cml0ZU5lc3RpbmdMZXZlbCA+IDEpIHsKICAg
ICAgICAgICAgIC8vIFdlJ3ZlIGdvdHRlbiBkYXRhIG9mZiB0aGUgbmV0d29yayBpbiBhIG5lc3Rl
ZCBjYWxsIHRvIHdyaXRlKCkuCiAgICAgICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIGNvbnN1
bWUgYW55IG1vcmUgb2YgdGhlIGlucHV0IHN0cmVhbSBub3cuICBEbwpAQCAtMjM1LDYgKzI0OCw3
IEBAIHZvaWQgSFRNTDVEb2N1bWVudFBhcnNlcjo6cmVzdW1lUGFyc2luZ0FmdGVyU2NyaXB0RXhl
Y3V0aW9uKCkKIHsKICAgICBBU1NFUlQoIW1fc2NyaXB0UnVubmVyLT5pblNjcmlwdEV4ZWN1dGlv
bigpKTsKICAgICBBU1NFUlQoIW1fdHJlZUNvbnN0cnVjdG9yLT5pc1BhdXNlZCgpKTsKKwogICAg
IHB1bXBMZXhlcklmUG9zc2libGUoKTsKIAogICAgIC8vIFRoZSBkb2N1bWVudCBhbHJlYWR5IGZp
bmlzaGVkIHBhcnNpbmcgd2Ugd2VyZSBqdXN0IHdhaXRpbmcgb24gc2NyaXB0cyB3aGVuIGZpbmlz
aGVkKCkgd2FzIGNhbGxlZC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50
UGFyc2VyLmggYi9XZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5oCmluZGV4IDRhNzVj
ZWMxZWFkYWM2NThjM2VhMDE1M2Y1NGViMDFhNTcwZWY3NmEuLjM2NzMyYWIwMGZhYTIyNDBmZjc3
YjA4OWNhMmI5ZWQ2YzBkYjkyM2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MNURvY3Vt
ZW50UGFyc2VyLmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuaApAQCAt
NDAsNiArNDAsNyBAQCBjbGFzcyBMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOwogY2xhc3MgSFRN
TDVMZXhlcjsKIGNsYXNzIEhUTUw1U2NyaXB0UnVubmVyOwogY2xhc3MgSFRNTDVUcmVlQnVpbGRl
cjsKK2NsYXNzIEhUTUw1UHJlbG9hZFNjYW5uZXI7CiBjbGFzcyBTY3JpcHRDb250cm9sbGVyOwog
Y2xhc3MgU2NyaXB0U291cmNlQ29kZTsKIApAQCAtMTgzLDYgKzE4NCw3IEBAIHByaXZhdGU6CiAg
ICAgT3duUHRyPEhUTUw1TGV4ZXI+IG1fbGV4ZXI7CiAgICAgT3duUHRyPEhUTUw1U2NyaXB0UnVu
bmVyPiBtX3NjcmlwdFJ1bm5lcjsKICAgICBPd25QdHI8SFRNTDVUcmVlQnVpbGRlcj4gbV90cmVl
Q29uc3RydWN0b3I7CisgICAgT3duUHRyPEhUTUw1UHJlbG9hZFNjYW5uZXI+IG1fcHJlbG9hZFNj
YW5uZXI7CiAgICAgYm9vbCBtX2VuZFdhc0RlbGF5ZWQ7CiAgICAgaW50IG1fd3JpdGVOZXN0aW5n
TGV2ZWw7CiB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUw1UHJlbG9hZFNjYW5uZXIu
Y3BwIGIvV2ViQ29yZS9odG1sL0hUTUw1UHJlbG9hZFNjYW5uZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBm
ZGM4ZjMwOWMzZGY0OGQ2M2VlZDgxNDhmOWY4MGVjZDk3OWIyMzEKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJDb3JlL2h0bWwvSFRNTDVQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTAsMCArMSwxNTUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSwgSW5jLiBodHRwOi8vd3d3LnRv
cmNobW9iaWxlLmNvbS8KKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhUTUw1UHJlbG9hZFNjYW5uZXIuaCIK
KworI2luY2x1ZGUgIkNTU0hlbHBlci5oIgorI2luY2x1ZGUgIkRvY0xvYWRlci5oIgorI2luY2x1
ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiSFRNTDVUcmVlQnVpbGRlci5oIgorI2luY2x1ZGUg
IkhUTUxMaW5rRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKK25hbWVzcGFjZSB7CisK
K2NsYXNzIFByZWxvYWRUYXNrIHsKK3B1YmxpYzoKKyAgICBQcmVsb2FkVGFzayhjb25zdCBIVE1M
NVRva2VuJiB0b2tlbikKKyAgICAgICAgOiBtX3RhZ05hbWUodG9rZW4ubmFtZSgpLmRhdGEoKSwg
dG9rZW4ubmFtZSgpLnNpemUoKSkKKyAgICAgICAgLCBtX2xpbmtJc1N0eWxlU2hlZXQoZmFsc2Up
CisgICAgeworICAgICAgICBwcm9jZXNzQXR0cmlidXRlcyh0b2tlbi5hdHRyaWJ1dGVzKCkpOwor
ICAgIH0KKworICAgIHZvaWQgcHJvY2Vzc0F0dHJpYnV0ZXMoY29uc3QgSFRNTDVUb2tlbjo6QXR0
cmlidXRlTGlzdCYgYXR0cmlidXRlcykKKyAgICB7CisgICAgICAgIGlmIChtX3RhZ05hbWUgIT0g
c2NyaXB0VGFnICYmIG1fdGFnTmFtZSAhPSBpbWdUYWcgJiYgbV90YWdOYW1lICE9IGxpbmtUYWcp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yIChIVE1MNVRva2VuOjpBdHRyaWJ1
dGVMaXN0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gYXR0cmlidXRlcy5iZWdpbigpOworICAgICAg
ICAgICAgIGl0ZXIgIT0gYXR0cmlidXRlcy5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgICAgICBB
dG9taWNTdHJpbmcgYXR0cmlidXRlTmFtZShpdGVyLT5tX25hbWUuZGF0YSgpLCBpdGVyLT5tX25h
bWUuc2l6ZSgpKTsKKyAgICAgICAgICAgIFN0cmluZyBhdHRyaWJ1dGVWYWx1ZShpdGVyLT5tX3Zh
bHVlLmRhdGEoKSwgaXRlci0+bV92YWx1ZS5zaXplKCkpOworCisgICAgICAgICAgICBpZiAoYXR0
cmlidXRlTmFtZSA9PSBjaGFyc2V0QXR0cikKKyAgICAgICAgICAgICAgICBtX2NoYXJzZXQgPSBh
dHRyaWJ1dGVWYWx1ZTsKKworICAgICAgICAgICAgaWYgKG1fdGFnTmFtZSA9PSBzY3JpcHRUYWcg
fHwgbV90YWdOYW1lID09IGltZ1RhZykgeworICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVO
YW1lID09IHNyY0F0dHIpCisgICAgICAgICAgICAgICAgICAgIHNldFVybFRvTG9hZChhdHRyaWJ1
dGVWYWx1ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG1fdGFnTmFtZSA9PSBsaW5rVGFnKSB7
CisgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gaHJlZkF0dHIpCisgICAgICAg
ICAgICAgICAgICAgIHNldFVybFRvTG9hZChhdHRyaWJ1dGVWYWx1ZSk7CisgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoYXR0cmlidXRlTmFtZSA9PSByZWxBdHRyKQorICAgICAgICAgICAgICAgICAg
ICBtX2xpbmtJc1N0eWxlU2hlZXQgPSByZWxBdHRyaWJ1dGVJc1N0eWxlU2hlZXQoYXR0cmlidXRl
VmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgYm9vbCByZWxB
dHRyaWJ1dGVJc1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKKyAgICB7
CisgICAgICAgIEFTU0VSVChtX3RhZ05hbWUgPT0gbGlua1RhZyk7CisgICAgICAgIEhUTUxMaW5r
RWxlbWVudDo6UmVsQXR0cmlidXRlIHJlbDsKKyAgICAgICAgSFRNTExpbmtFbGVtZW50Ojp0b2tl
bml6ZVJlbEF0dHJpYnV0ZShhdHRyaWJ1dGVWYWx1ZSwgcmVsKTsKKyAgICAgICAgcmV0dXJuIHJl
bC5tX2lzU3R5bGVTaGVldCAmJiAhcmVsLm1faXNBbHRlcm5hdGUgJiYgIXJlbC5tX2lzSWNvbiAm
JiAhcmVsLm1faXNETlNQcmVmZXRjaDsKKyAgICB9CisKKyAgICB2b2lkIHNldFVybFRvTG9hZChj
b25zdCBTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKQorICAgIHsKKyAgICAgICAgLy8gV2Ugb25seSBy
ZXNwZWN0IHRoZSBmaXJzdCBzcmMvaHJlZiwgcGVyIEhUTUw1OgorICAgICAgICAvLyBodHRwOi8v
d3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90b2tl
bml6YXRpb24uaHRtbCNhdHRyaWJ1dGUtbmFtZS1zdGF0ZQorICAgICAgICBpZiAoIW1fdXJsVG9M
b2FkLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV91cmxUb0xvYWQg
PSBkZXByZWNhdGVkUGFyc2VVUkwoYXR0cmlidXRlVmFsdWUpOworICAgIH0KKworICAgIHZvaWQg
cHJlbG9hZChEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgc2Nhbm5pbmdCb2R5KQorICAgIHsKKyAg
ICAgICAgaWYgKG1fdXJsVG9Mb2FkLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBEb2NMb2FkZXIqIGRvY0xvYWRlciA9IGRvY3VtZW50LT5kb2NMb2FkZXIoKTsKKyAg
ICAgICAgaWYgKG1fdGFnTmFtZSA9PSBzY3JpcHRUYWcpCisgICAgICAgICAgICBkb2NMb2FkZXIt
PnByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdCwgbV91cmxUb0xvYWQsIG1fY2hhcnNldCwg
c2Nhbm5pbmdCb2R5KTsKKyAgICAgICAgZWxzZSBpZiAobV90YWdOYW1lID09IGltZ1RhZykgCisg
ICAgICAgICAgICBkb2NMb2FkZXItPnByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3Vy
Y2UsIG1fdXJsVG9Mb2FkLCBTdHJpbmcoKSwgc2Nhbm5pbmdCb2R5KTsKKyAgICAgICAgZWxzZSBp
ZiAobV90YWdOYW1lID09IGxpbmtUYWcgJiYgbV9saW5rSXNTdHlsZVNoZWV0KSAKKyAgICAgICAg
ICAgIGRvY0xvYWRlci0+cHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldCwgbV91
cmxUb0xvYWQsIG1fY2hhcnNldCwgc2Nhbm5pbmdCb2R5KTsKKyAgICB9CisKKyAgICBjb25zdCBB
dG9taWNTdHJpbmcmIHRhZ05hbWUoKSBjb25zdCB7IHJldHVybiBtX3RhZ05hbWU7IH0KKworcHJp
dmF0ZToKKyAgICBBdG9taWNTdHJpbmcgbV90YWdOYW1lOworICAgIFN0cmluZyBtX3VybFRvTG9h
ZDsKKyAgICBTdHJpbmcgbV9jaGFyc2V0OworICAgIGJvb2wgbV9saW5rSXNTdHlsZVNoZWV0Owor
fTsKKworfSAvLyBuYW1lc3BhY2UKKworSFRNTDVQcmVsb2FkU2Nhbm5lcjo6SFRNTDVQcmVsb2Fk
U2Nhbm5lcihEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQor
ICAgICwgbV9ib2R5U2VlbihmYWxzZSkKK3sKK30KKwordm9pZCBIVE1MNVByZWxvYWRTY2FubmVy
OjphcHBlbmRUb0VuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkKK3sKKyAgICBtX3Nv
dXJjZS5hcHBlbmQoc291cmNlKTsKK30KKwordm9pZCBIVE1MNVByZWxvYWRTY2FubmVyOjpzY2Fu
KCkKK3sKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHNhdmUgYW5kIHJlLXVzZSB0aGVzZSB0b2tl
bnMgaW4gSFRNTDVEb2N1bWVudFBhcnNlciBpZgorICAgIC8vIHRoZSBwZW5kaW5nIHNjcmlwdCBk
b2Vzbid0IGVuZCB1cCBjYWxsaW5nIGRvY3VtZW50LndyaXRlLgorICAgIHdoaWxlIChtX2xleGVy
Lm5leHRUb2tlbihtX3NvdXJjZSwgbV90b2tlbikpIHsKKyAgICAgICAgcHJvY2Vzc1Rva2VuKCk7
CisgICAgICAgIG1fdG9rZW4uY2xlYXIoKTsKKyAgICB9Cit9CisKK3ZvaWQgSFRNTDVQcmVsb2Fk
U2Nhbm5lcjo6cHJvY2Vzc1Rva2VuKCkKK3sKKyAgICBpZiAobV90b2tlbi50eXBlKCkgIT0gSFRN
TDVUb2tlbjo6U3RhcnRUYWcpCisgICAgICAgIHJldHVybjsKKworICAgIFByZWxvYWRUYXNrIHRh
c2sobV90b2tlbik7CisgICAgbV9sZXhlci5zZXRTdGF0ZShIVE1MNVRyZWVCdWlsZGVyOjphZGp1
c3RlZExleGVyU3RhdGUobV9sZXhlci5zdGF0ZSgpLCB0YXNrLnRhZ05hbWUoKSkpOworCisgICAg
aWYgKHRhc2sudGFnTmFtZSgpID09IGJvZHlUYWcpCisgICAgICAgIG1fYm9keVNlZW4gPSB0cnVl
OworCisgICAgdGFzay5wcmVsb2FkKG1fZG9jdW1lbnQsIG1fZG9jdW1lbnQtPmJvZHkoKSB8fCBt
X2JvZHlTZWVuKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUw1UHJlbG9h
ZFNjYW5uZXIuaCBiL1dlYkNvcmUvaHRtbC9IVE1MNVByZWxvYWRTY2FubmVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjM1MzliMGIzNTEyZGRiMzY0NzYyOTU4NGE1NmI3ODhiMzhhYzRhZQotLS0gL2Rldi9udWxs
CisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNVByZWxvYWRTY2FubmVyLmgKQEAgLTAsMCArMSw2MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
SFRNTDVQcmVsb2FkU2Nhbm5lcl9oCisjZGVmaW5lIEhUTUw1UHJlbG9hZFNjYW5uZXJfaAorCisj
aW5jbHVkZSAiSFRNTDVMZXhlci5oIgorI2luY2x1ZGUgIkhUTUw1VG9rZW4uaCIKKyNpbmNsdWRl
ICJTZWdtZW50ZWRTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIEhUTUw1VG9rZW47Citj
bGFzcyBTZWdtZW50ZWRTdHJpbmc7CisKK2NsYXNzIEhUTUw1UHJlbG9hZFNjYW5uZXIgOiBwdWJs
aWMgTm9uY29weWFibGUgeworcHVibGljOgorICAgIEhUTUw1UHJlbG9hZFNjYW5uZXIoRG9jdW1l
bnQqKTsKKworICAgIHZvaWQgYXBwZW5kVG9FbmQoY29uc3QgU2VnbWVudGVkU3RyaW5nJik7Cisg
ICAgdm9pZCBzY2FuKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBwcm9jZXNzVG9rZW4oKTsKKwor
ICAgIERvY3VtZW50KiBtX2RvY3VtZW50OworICAgIFNlZ21lbnRlZFN0cmluZyBtX3NvdXJjZTsK
KyAgICBIVE1MNUxleGVyIG1fbGV4ZXI7CisgICAgSFRNTDVUb2tlbiBtX3Rva2VuOworICAgIGJv
b2wgbV9ib2R5U2VlbjsKK307CisKK30KKworI2VuZGlmCg==
</data>
<flag name="commit-queue"
          id="45153"
          type_id="3"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>