<?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>10192</bug_id>
          
          <creation_ts>2006-08-01 14:02:06 -0700</creation_ts>
          <short_desc>UMBRELLA: WebKit should build with -Wshorten-64-to-32</short_desc>
          <delta_ts>2014-03-19 14:07:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>51351</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-08-01 14:02:06 -0700</bug_when>
    <thetext>Yet another gcc warning flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51357</commentid>
    <comment_count>1</comment_count>
      <attachid>9802</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-08-01 14:34:00 -0700</bug_when>
    <thetext>Created attachment 9802
patch

Attaching patch with ChangeLogs.  All of the changes to the code are making explicit, already implicit conversions/casts from 64 bit types (such as double or long long) to 32 bit types.  Some of these conversions are worrisome as data is potentially being lost.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51376</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-08-01 18:18:01 -0700</bug_when>
    <thetext>I&apos;d rather first see a patch that has all non-debatable changes -- not including the typecasts that might be truncating values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51483</commentid>
    <comment_count>3</comment_count>
      <attachid>9834</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-08-02 14:51:24 -0700</bug_when>
    <thetext>Created attachment 9834
patch of trivial changes

This patch includes only the trivial changes needed to compile with -Wshorten-64-to-32.  The changes include adding &apos;f&apos;s to the end of float literals and switching some cos()&apos;s and ceil()&apos;s to cosf()&apos;s and ceilf()&apos;s.  I&apos;ve also added the flag to the Xcode project for JaveScriptGlue as it needs no modifications to compile with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51487</commentid>
    <comment_count>4</comment_count>
      <attachid>9834</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-08-02 15:14:16 -0700</bug_when>
    <thetext>Comment on attachment 9834
patch of trivial changes

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51488</commentid>
    <comment_count>5</comment_count>
      <attachid>9837</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-08-02 15:20:10 -0700</bug_when>
    <thetext>Created attachment 9837
patch of remaining less trivial changes

This third patch contains the remaining changes.  NOTE: none of the changes in this patch change any behavior, they simply explicitly down cast 64 bit types to 32 bit types that would be implicitly down cast anyway.  The question is if those implicit conversions were safe to begin with and if not how we should deal with them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51498</commentid>
    <comment_count>6</comment_count>
      <attachid>9837</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-08-02 16:13:41 -0700</bug_when>
    <thetext>Comment on attachment 9837
patch of remaining less trivial changes

The ones in JSNodeList are OK, because that&apos;s just test code. So we can definitely land the JavaScriptCore part of this.

The one in WebFrameBridge.m looks right, so we can do the cast there.

The one in WebNodeHighlightView.m looks fine.

I&apos;m not sure about the rest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51604</commentid>
    <comment_count>7</comment_count>
      <attachid>9851</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-08-03 11:33:59 -0700</bug_when>
    <thetext>Created attachment 9851
combind patch

This patch includes all the trivial changes and the changes approved by Darin.  Because some of the changes in WebKit are still under debate, I cannot turn on the -Wshorten-64-to-32 warning for it.  The warning is on for WebCore, JavaScriptCore, and JavaScriptGlue though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51677</commentid>
    <comment_count>8</comment_count>
      <attachid>9851</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-08-03 19:35:20 -0700</bug_when>
    <thetext>Comment on attachment 9851
combind patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51678</commentid>
    <comment_count>9</comment_count>
      <attachid>9837</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-08-03 19:36:34 -0700</bug_when>
    <thetext>Comment on attachment 9837
patch of remaining less trivial changes

Clearing the review flag on this for now. We should go over the other cases in WebKit and see what we can do for each one. Either there&apos;s some reason we can guarantee the value fits in 32 bits or we need some checks and error handling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51772</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-08-04 08:53:08 -0700</bug_when>
    <thetext>Darin, 
What do you suggest I do in the mean time.  Should I land the combined patch as is and open a new bug for the remaining cases, or should I wait until the rest is worked out?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51776</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-08-04 09:53:05 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; What do you suggest I do in the mean time.  Should I land the combined patch as
&gt; is and open a new bug for the remaining cases, or should I wait until the rest
&gt; is worked out?

You should definitely land the combined patch, and then we should work on the remaining cases. I&apos;m not sure we need a new bug report, though. I&apos;d be OK with landing the combined patch, clearing the review flag, and leaving this one open.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51803</commentid>
    <comment_count>12</comment_count>
      <attachid>9851</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-08-04 11:57:15 -0700</bug_when>
    <thetext>Comment on attachment 9851
combind patch

Landed the combined patch in r15799. I am clearing the review flag so we can continue to use this bug report.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51826</commentid>
    <comment_count>13</comment_count>
      <attachid>9882</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-08-04 15:30:16 -0700</bug_when>
    <thetext>Created attachment 9882
remaining cases patch

I&apos;m posting what a patch with the code necessary to get WebKit to compile with the flag, but it is not intended for real use, only to highlight the remaining cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57535</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-01 08:51:25 -0700</bug_when>
    <thetext>Only WebKit remains with this issue:
// FIXME: &lt;rdar://problem/5070292&gt; WebKit should build with -Wshorten-64-to-32

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57537</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-10-01 09:04:08 -0700</bug_when>
    <thetext>But:

    1) Newer versions of gcc warn a lot more with this warning and we had to turn it off in some places because of that.

and

    2) Oliver Hunt found that the feature branch had a lot of float/double conversions that run afoul of this, so when we merge the feature branch we will &quot;backslide&quot; a little on this warning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833224</commentid>
    <comment_count>16</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2013-02-14 10:43:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/5070292&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833225</commentid>
    <comment_count>17</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2013-02-14 10:44:09 -0800</bug_when>
    <thetext>On 32-bit today, there is only one issue left in WebHistory.mm.  Not sure about 64-bit.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9802</attachid>
            <date>2006-08-01 14:34:00 -0700</date>
            <delta_ts>2006-08-02 16:04:47 -0700</delta_ts>
            <desc>patch</desc>
            <filename>shorten64to32.diff</filename>
            <type>text/plain</type>
            <size>65931</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzQzKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMDYtMDgtMDEgIFNhbSBXZWlu
aWcgIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAtIHBhdGNoIGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndp
bi5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTkyCisgICAgICAgICAgTWFrZSBXZWJDb3JlIChhbmQg
ZnJpZW5kcykgY29tcGlsZSB3aXRoIC1Xc2hvcnRlbi02NC10by0zMgorICAgICAgICAgIAorICAg
ICAgICAgICogQWRkcyAtV3Nob3J0ZW4tNjQtdG8tMzIgZmxhZyB0byBYY29kZSBwcm9qZWN0Lgor
ICAgICAgICAgICogQWRkcyBleHBsaWNpdCBjYXN0cyB3aGVyZSBuZWVkZWQuIAorCisgICAgICAg
ICogQVBJL0pTTm9kZUxpc3QuYzoKKyAgICAgICAgKEpTTm9kZUxpc3RfaXRlbSk6CisgICAgICAg
IChKU05vZGVMaXN0X2dldFByb3BlcnR5KToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDA2LTA3LTI5ICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KIAogICAgICAgICAtIFJlbW92ZWQgdGFicyBmcm9tIHRoZXNlIHNvdXJjZSBm
aWxlcyB0aGF0IHN0aWxsIGhhZCB0aGVtLgpJbmRleDogSmF2YVNjcmlwdENvcmUvQVBJL0pTTm9k
ZUxpc3QuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9BUEkvSlNOb2RlTGlzdC5jCShy
ZXZpc2lvbiAxNTc0MykKKysrIEphdmFTY3JpcHRDb3JlL0FQSS9KU05vZGVMaXN0LmMJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgc3RhdGljIEpTVmFsdWVSZWYgSlNOb2RlTGlzdF9p
dGVtKEpTQ29udAogICAgIGlmIChhcmd1bWVudENvdW50ID4gMCkgewogICAgICAgICBOb2RlTGlz
dCogbm9kZUxpc3QgPSBKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCk7CiAgICAgICAgIGFz
c2VydChub2RlTGlzdCk7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSBOb2RlTGlzdF9pdGVtKG5vZGVM
aXN0LCBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsK
KyAgICAgICAgTm9kZSogbm9kZSA9IE5vZGVMaXN0X2l0ZW0obm9kZUxpc3QsICh1bnNpZ25lZClK
U1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKICAgICAg
ICAgaWYgKG5vZGUpCiAgICAgICAgICAgICByZXR1cm4gSlNOb2RlX25ldyhjb250ZXh0LCBub2Rl
KTsKICAgICB9CkBAIC02NSwxMiArNjUsMTEgQEAgc3RhdGljIEpTVmFsdWVSZWYgSlNOb2RlTGlz
dF9nZXRQcm9wZXJ0eQogICAgIE5vZGVMaXN0KiBub2RlTGlzdCA9IEpTT2JqZWN0R2V0UHJpdmF0
ZSh0aGlzT2JqZWN0KTsKICAgICBhc3NlcnQobm9kZUxpc3QpOwogICAgIGRvdWJsZSBpbmRleCA9
IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCBwcm9w
ZXJ0eU5hbWUpLCBleGNlcHRpb24pOwotICAgIHVuc2lnbmVkIHVpbmRleCA9IGluZGV4OworICAg
IHVuc2lnbmVkIHVpbmRleCA9ICh1bnNpZ25lZClpbmRleDsKICAgICBpZiAodWluZGV4ID09IGlu
ZGV4KSB7IC8vIGZhbHNlIGZvciBOYU4KICAgICAgICAgTm9kZSogbm9kZSA9IE5vZGVMaXN0X2l0
ZW0obm9kZUxpc3QsIHVpbmRleCk7Ci0gICAgICAgIGlmIChub2RlKSB7CisgICAgICAgIGlmIChu
b2RlKQogICAgICAgICAgICAgcmV0dXJuIEpTTm9kZV9uZXcoY29udGV4dCwgbm9kZSk7Ci0gICAg
ICAgIH0KICAgICB9CiAgICAgCiAgICAgcmV0dXJuIE5VTEw7CkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDE1NzQzKQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTU4Myw2ICsxNTgzLDcgQEAK
IAkJCQkJIi1Xd3JpdGUtc3RyaW5ncyIsCiAJCQkJCSItV25vLWZvcm1hdC15MmsiLAogCQkJCQki
LVduby1sb25nLWRvdWJsZSIsCisJCQkJCSItV3Nob3J0ZW4tNjQtdG8tMzIiLAogCQkJCSk7CiAJ
CQl9OwogCQkJbmFtZSA9IERlYnVnOwpAQCAtMTYyMyw2ICsxNjI0LDcgQEAKIAkJCQkJIi1Xd3Jp
dGUtc3RyaW5ncyIsCiAJCQkJCSItV25vLWZvcm1hdC15MmsiLAogCQkJCQkiLVduby1sb25nLWRv
dWJsZSIsCisJCQkJCSItV3Nob3J0ZW4tNjQtdG8tMzIiLAogCQkJCSk7CiAJCQl9OwogCQkJbmFt
ZSA9IFJlbGVhc2U7CkBAIC0xNjY5LDYgKzE2NzEsNyBAQAogCQkJCQkiLVd3cml0ZS1zdHJpbmdz
IiwKIAkJCQkJIi1Xbm8tZm9ybWF0LXkyayIsCiAJCQkJCSItV25vLWxvbmctZG91YmxlIiwKKwkJ
CQkJIi1Xc2hvcnRlbi02NC10by0zMiIsCiAJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gUHJvZHVj
dGlvbjsKQEAgLTE3NjMsNiArMTc2Niw3IEBACiAJCQkJCSItV25vLWZvcm1hdC15MmsiLAogCQkJ
CQkiLVduby11bnVzZWQtcGFyYW1ldGVyIiwKIAkJCQkJIi1Xbm8tbG9uZy1kb3VibGUiLAorCQkJ
CQkiLVdzaG9ydGVuLTY0LXRvLTMyIiwKIAkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsK
QEAgLTE4MDEsNiArMTgwNSw3IEBACiAJCQkJCSItV25vLWZvcm1hdC15MmsiLAogCQkJCQkiLVdu
by11bnVzZWQtcGFyYW1ldGVyIiwKIAkJCQkJIi1Xbm8tbG9uZy1kb3VibGUiLAorCQkJCQkiLVdz
aG9ydGVuLTY0LXRvLTMyIiwKIAkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwpAQCAt
MTgzNiw2ICsxODQxLDcgQEAKIAkJCQkJIi1Xbm8tZm9ybWF0LXkyayIsCiAJCQkJCSItV25vLXVu
dXNlZC1wYXJhbWV0ZXIiLAogCQkJCQkiLVduby1sb25nLWRvdWJsZSIsCisJCQkJCSItV3Nob3J0
ZW4tNjQtdG8tMzIiLAogCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CkluZGV4
OiBKYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxNTc0MykKKysrIEphdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDA2LTA4LTAxICBTYW0gV2VpbmlnICA8
c2FtLndlaW5pZ0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgLSBwYXRjaCBmb3IgaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDE5MgorICAgICAgICAgIE1ha2UgV2ViQ29yZSAoYW5kIGZyaWVu
ZHMpIGNvbXBpbGUgd2l0aCAtV3Nob3J0ZW4tNjQtdG8tMzIKKyAgICAgICAgICAKKyAgICAgICAg
ICAqIEFkZHMgLVdzaG9ydGVuLTY0LXRvLTMyIGZsYWcgdG8gWGNvZGUgcHJvamVjdC4KKworICAg
ICAgICAqIEphdmFTY3JpcHRHbHVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMDYt
MDctMjkgIFNhbSBXZWluaWcgIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbi4KSW5kZXg6IEphdmFTY3JpcHRHbHVlL0phdmFTY3JpcHRHbHVlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvSmF2YVNj
cmlwdEdsdWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTU3NDMpCisrKyBK
YXZhU2NyaXB0R2x1ZS9KYXZhU2NyaXB0R2x1ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC00NDIsNiArNDQyLDcgQEAKIAkJCQkJIi1Xbm8tZm9ybWF0LXkyayIs
CiAJCQkJCSItV25vLXVudXNlZC1wYXJhbWV0ZXIiLAogCQkJCQkiLVduby1sb25nLWRvdWJsZSIs
CisJCQkJCSItV3Nob3J0ZW4tNjQtdG8tMzIiLAogCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IERl
YnVnOwpAQCAtNDc5LDYgKzQ4MCw3IEBACiAJCQkJCSItV25vLWZvcm1hdC15MmsiLAogCQkJCQki
LVduby11bnVzZWQtcGFyYW1ldGVyIiwKIAkJCQkJIi1Xbm8tbG9uZy1kb3VibGUiLAorCQkJCQki
LVdzaG9ydGVuLTY0LXRvLTMyIiwKIAkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwpA
QCAtNTEyLDYgKzUxNCw3IEBACiAJCQkJCSItV25vLWZvcm1hdC15MmsiLAogCQkJCQkiLVduby11
bnVzZWQtcGFyYW1ldGVyIiwKIAkJCQkJIi1Xbm8tbG9uZy1kb3VibGUiLAorCQkJCQkiLVdzaG9y
dGVuLTY0LXRvLTMyIiwKIAkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwpJbmRl
eDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1NzQzKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyNyBAQAorMjAwNi0wOC0wMSAgU2FtIFdlaW5pZyAgPHNhbS53ZWluaWdAZ21haWwuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gcGF0
Y2ggZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAx
OTIKKyAgICAgICAgICBNYWtlIFdlYkNvcmUgKGFuZCBmcmllbmRzKSBjb21waWxlIHdpdGggLVdz
aG9ydGVuLTY0LXRvLTMyCisgICAgICAgICAgCisgICAgICAgICAgKiBBZGRzIC1Xc2hvcnRlbi02
NC10by0zMiBmbGFnIHRvIFhjb2RlIHByb2plY3QuCisgICAgICAgICAgKiBBZGRzICdmJyB0byBm
bG9hdCBjb25zdGFudHMgd2hlcmUgbmVlZGVkLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0
ZXJzL1dLRGlmZnVzZUxpZ2h0aW5nRmlsdGVyLm06CisgICAgICAgICgrW1dLRGlmZnVzZUxpZ2h0
aW5nRmlsdGVyIGluaXRpYWxpemVdKToKKyAgICAgICAgKiBrY2FudmFzL2RldmljZS9xdWFydHov
ZmlsdGVycy9XS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIubToKKyAgICAgICAgKC1bV0tEaXNjcmV0
ZVRyYW5zZmVyRmlsdGVyIG91dHB1dEltYWdlXSk6CisgICAgICAgICoga2NhbnZhcy9kZXZpY2Uv
cXVhcnR6L2ZpbHRlcnMvV0tEaXNwbGFjZW1lbnRNYXBGaWx0ZXIubToKKyAgICAgICAgKCtbV0tE
aXNwbGFjZW1lbnRNYXBGaWx0ZXIgaW5pdGlhbGl6ZV0pOgorICAgICAgICAqIGtjYW52YXMvZGV2
aWNlL3F1YXJ0ei9maWx0ZXJzL1dLU3BlY3VsYXJMaWdodGluZ0ZpbHRlci5tOgorICAgICAgICAo
K1tXS1NwZWN1bGFyTGlnaHRpbmdGaWx0ZXIgaW5pdGlhbGl6ZV0pOgorICAgICAgICAqIGtjYW52
YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLU3BvdExpZ2h0RmlsdGVyLm06CisgICAgICAgICgt
W1dLU3BvdExpZ2h0RmlsdGVyIG91dHB1dEltYWdlXSk6CisgICAgICAgICoga2NhbnZhcy9kZXZp
Y2UvcXVhcnR6L2ZpbHRlcnMvV0tUYWJsZVRyYW5zZmVyRmlsdGVyLm06CisgICAgICAgICgtW1dL
VGFibGVUcmFuc2ZlckZpbHRlciBvdXRwdXRJbWFnZV0pOgorCiAyMDA2LTA3LTMxICBTYW0gV2Vp
bmlnICA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4u
CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMTU3NDMpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtNDkxMCwxMiArNDkxMCwyMyBAQAogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlBOEMzMjkyMDA5M0JCNzMyMDAwQjlDQUMgLyogV0tBcml0
aG1ldGljRmlsdGVyLmNpa2VybmVsICovLAorCQkJCUE4QzMyOTIxMDkzQkI3MzIwMDBCOUNBQyAv
KiBXS0FyaXRobWV0aWNGaWx0ZXIuaCAqLywKKwkJCQlBOEMzMjkyMjA5M0JCNzMyMDAwQjlDQUMg
LyogV0tBcml0aG1ldGljRmlsdGVyLm0gKi8sCiAJCQkJQTdCOTdCNjYwOTc5QzNBMTAwMEU4RUIx
IC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWwgKi8sCiAJCQkJQTdCOTdCNjcwOTc5
QzNBMTAwMEU4RUIxIC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuaCAqLywKIAkJCQlBN0I5N0I2
ODA5NzlDM0ExMDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJnZUZpbHRlci5tICovLAorCQkJCUE4
QzMyOTIzMDkzQkI3MzIwMDBCOUNBQyAvKiBXS0RpZmZ1c2VMaWdodGluZ0ZpbHRlci5jaWtlcm5l
bCAqLywKKwkJCQlBOEMzMjkyNDA5M0JCNzMyMDAwQjlDQUMgLyogV0tEaWZmdXNlTGlnaHRpbmdG
aWx0ZXIuaCAqLywKKwkJCQlBOEMzMjkyNTA5M0JCNzMyMDAwQjlDQUMgLyogV0tEaWZmdXNlTGln
aHRpbmdGaWx0ZXIubSAqLywKIAkJCQlBN0I5N0I2OTA5NzlDM0ExMDAwRThFQjEgLyogV0tEaXNj
cmV0ZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsICovLAogCQkJCUE3Qjk3QjZBMDk3OUMzQTEwMDBF
OEVCMSAvKiBXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuaCAqLywKIAkJCQlBN0I5N0I2QjA5NzlD
M0ExMDAwRThFQjEgLyogV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm0gKi8sCisJCQkJQTc2MzhB
OTEwOTk1OTJDMzAwMDdFMTRGIC8qIFdLRGlzcGxhY2VtZW50TWFwRmlsdGVyLmNpa2VybmVsICov
LAorCQkJCUE3NjM4QTg5MDk5NThFQTUwMDA3RTE0RiAvKiBXS0Rpc3BsYWNlbWVudE1hcEZpbHRl
ci5oICovLAorCQkJCUE3NjM4QThBMDk5NThFQTUwMDA3RTE0RiAvKiBXS0Rpc3BsYWNlbWVudE1h
cEZpbHRlci5tICovLAorCQkJCUE4QzMyOTI2MDkzQkI3MzIwMDBCOUNBQyAvKiBXS0Rpc3RhbnRM
aWdodEZpbHRlci5jaWtlcm5lbCAqLywKKwkJCQlBOEMzMjkyNzA5M0JCNzMyMDAwQjlDQUMgLyog
V0tEaXN0YW50TGlnaHRGaWx0ZXIuaCAqLywKKwkJCQlBOEMzMjkyODA5M0JCNzMyMDAwQjlDQUMg
LyogV0tEaXN0YW50TGlnaHRGaWx0ZXIubSAqLywKIAkJCQlBN0I5N0I2QzA5NzlDM0ExMDAwRThF
QjEgLyogV0tHYW1tYVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsICovLAogCQkJCUE3Qjk3QjZEMDk3
OUMzQTEwMDBFOEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaCAqLywKIAkJCQlBN0I5N0I2
RTA5NzlDM0ExMDAwRThFQjEgLyogV0tHYW1tYVRyYW5zZmVyRmlsdGVyLm0gKi8sCkBAIC00OTI0
LDIwICs0OTM1LDYgQEAKIAkJCQlBN0I5N0I3MTA5NzlDM0ExMDAwRThFQjEgLyogV0tMaW5lYXJU
cmFuc2ZlckZpbHRlci5jaWtlcm5lbCAqLywKIAkJCQlBN0I5N0I3MjA5NzlDM0ExMDAwRThFQjEg
LyogV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5oICovLAogCQkJCUE3Qjk3QjczMDk3OUMzQTEwMDBF
OEVCMSAvKiBXS0xpbmVhclRyYW5zZmVyRmlsdGVyLm0gKi8sCi0JCQkJQTdCOTdCNzQwOTc5QzNB
MTAwMEU4RUIxIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCAqLywKLQkJCQlBN0I5
N0I3NTA5NzlDM0ExMDAwRThFQjEgLyogV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmggKi8sCi0JCQkJ
QTdCOTdCNzYwOTc5QzNBMTAwMEU4RUIxIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRlci5tICovLAot
CQkJCUE4QzMyOTIxMDkzQkI3MzIwMDBCOUNBQyAvKiBXS0FyaXRobWV0aWNGaWx0ZXIuaCAqLywK
LQkJCQlBOEMzMjkyMjA5M0JCNzMyMDAwQjlDQUMgLyogV0tBcml0aG1ldGljRmlsdGVyLm0gKi8s
Ci0JCQkJQThDMzI5MjMwOTNCQjczMjAwMEI5Q0FDIC8qIFdLRGlmZnVzZUxpZ2h0aW5nRmlsdGVy
LmNpa2VybmVsICovLAotCQkJCUE4QzMyOTI0MDkzQkI3MzIwMDBCOUNBQyAvKiBXS0RpZmZ1c2VM
aWdodGluZ0ZpbHRlci5oICovLAotCQkJCUE4QzMyOTI1MDkzQkI3MzIwMDBCOUNBQyAvKiBXS0Rp
ZmZ1c2VMaWdodGluZ0ZpbHRlci5tICovLAotCQkJCUE3NjM4QTkxMDk5NTkyQzMwMDA3RTE0RiAv
KiBXS0Rpc3BsYWNlbWVudE1hcEZpbHRlci5jaWtlcm5lbCAqLywKLQkJCQlBNzYzOEE4OTA5OTU4
RUE1MDAwN0UxNEYgLyogV0tEaXNwbGFjZW1lbnRNYXBGaWx0ZXIuaCAqLywKLQkJCQlBNzYzOEE4
QTA5OTU4RUE1MDAwN0UxNEYgLyogV0tEaXNwbGFjZW1lbnRNYXBGaWx0ZXIubSAqLywKLQkJCQlB
OEMzMjkyNjA5M0JCNzMyMDAwQjlDQUMgLyogV0tEaXN0YW50TGlnaHRGaWx0ZXIuY2lrZXJuZWwg
Ki8sCi0JCQkJQThDMzI5MjcwOTNCQjczMjAwMEI5Q0FDIC8qIFdLRGlzdGFudExpZ2h0RmlsdGVy
LmggKi8sCi0JCQkJQThDMzI5MjgwOTNCQjczMjAwMEI5Q0FDIC8qIFdLRGlzdGFudExpZ2h0Rmls
dGVyLm0gKi8sCiAJCQkJQThDMzI5MjkwOTNCQjczMjAwMEI5Q0FDIC8qIFdLTm9ybWFsTWFwRmls
dGVyLmNpa2VybmVsICovLAogCQkJCUE4QzMyOTJBMDkzQkI3MzIwMDBCOUNBQyAvKiBXS05vcm1h
bE1hcEZpbHRlci5oICovLAogCQkJCUE4QzMyOTJCMDkzQkI3MzIwMDBCOUNBQyAvKiBXS05vcm1h
bE1hcEZpbHRlci5tICovLApAQCAtNDk1MCw2ICs0OTQ3LDkgQEAKIAkJCQlBOEMzMjkzMjA5M0JC
NzMyMDAwQjlDQUMgLyogV0tTcG90TGlnaHRGaWx0ZXIuY2lrZXJuZWwgKi8sCiAJCQkJQThDMzI5
MzMwOTNCQjczMjAwMEI5Q0FDIC8qIFdLU3BvdExpZ2h0RmlsdGVyLmggKi8sCiAJCQkJQThDMzI5
MzQwOTNCQjczMjAwMEI5Q0FDIC8qIFdLU3BvdExpZ2h0RmlsdGVyLm0gKi8sCisJCQkJQTdCOTdC
NzQwOTc5QzNBMTAwMEU4RUIxIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCAqLywK
KwkJCQlBN0I5N0I3NTA5NzlDM0ExMDAwRThFQjEgLyogV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmgg
Ki8sCisJCQkJQTdCOTdCNzYwOTc5QzNBMTAwMEU4RUIxIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRl
ci5tICovLAogCQkJKTsKIAkJCXBhdGggPSBmaWx0ZXJzOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTc0MzYsNiArNzQzNiw3IEBACiAJCQkJCSItV25vLWZvcm1hdC15MmsiLAogCQkJ
CQkiLVduby11bnVzZWQtcGFyYW1ldGVyIiwKIAkJCQkJIi1Xbm8tbG9uZy1kb3VibGUiLAorCQkJ
CQkiLVdzaG9ydGVuLTY0LXRvLTMyIiwKIAkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsK
QEAgLTc0NzMsNiArNzQ3NCw3IEBACiAJCQkJCSItV25vLWZvcm1hdC15MmsiLAogCQkJCQkiLVdu
by11bnVzZWQtcGFyYW1ldGVyIiwKIAkJCQkJIi1Xbm8tbG9uZy1kb3VibGUiLAorCQkJCQkiLVdz
aG9ydGVuLTY0LXRvLTMyIiwKIAkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwpAQCAt
NzUwNyw2ICs3NTA5LDcgQEAKIAkJCQkJIi1Xbm8tZm9ybWF0LXkyayIsCiAJCQkJCSItV25vLXVu
dXNlZC1wYXJhbWV0ZXIiLAogCQkJCQkiLVduby1sb25nLWRvdWJsZSIsCisJCQkJCSItV3Nob3J0
ZW4tNjQtdG8tMzIiLAogCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CkluZGV4
OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLRGlmZnVzZUxpZ2h0aW5n
RmlsdGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovZmls
dGVycy9XS0RpZmZ1c2VMaWdodGluZ0ZpbHRlci5tCShyZXZpc2lvbiAxNTc0MykKKysrIFdlYkNv
cmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tEaWZmdXNlTGlnaHRpbmdGaWx0ZXIu
bQkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBzdGF0aWMgQ0lLZXJuZWwgKmRpZmZ1
c2VMaWdodGluZ0ZpbHRlciA9CiAgICAgICAgICAgICAgICAgICAgICBbTlNBcnJheSBhcnJheVdp
dGhPYmplY3RzOmtDSUNhdGVnb3J5U3R5bGl6ZSwga0NJQ2F0ZWdvcnlWaWRlbywKICAgICAgICAg
ICAgICAgICAgICAgICAgICBrQ0lDYXRlZ29yeVN0aWxsSW1hZ2UsIGtDSUNhdGVnb3J5Tm9uU3F1
YXJlUGl4ZWxzLG5pbF0sIGtDSUF0dHJpYnV0ZUZpbHRlckNhdGVnb3JpZXMsCiAgICAgICAgICAg
ICAgICAgICAgICBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgW0NJQ29sb3IgY29sb3JXaXRoUmVkOjEuMCBncmVlbjox
LjAgYmx1ZToxLjAgYWxwaGE6MS4wXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbQ0lDb2xv
ciBjb2xvcldpdGhSZWQ6MS4wZiBncmVlbjoxLjBmIGJsdWU6MS4wZiBhbHBoYToxLjBmXSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICBrQ0lBdHRyaWJ1dGVEZWZhdWx0LCBuaWxdLCBAImlucHV0
TGlnaHRpbmdDb2xvciIsCiAgICAgICAgICAgICAgICAgICAgICBbTlNEaWN0aW9uYXJ5IGRpY3Rp
b25hcnlXaXRoT2JqZWN0c0FuZEtleXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVt
YmVyIG51bWJlcldpdGhEb3VibGU6MC4wXSwga0NJQXR0cmlidXRlTWluLApJbmRleDogV2ViQ29y
ZS9rY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIu
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dL
RGlzY3JldGVUcmFuc2ZlckZpbHRlci5tCShyZXZpc2lvbiAxNTc0MykKKysrIFdlYkNvcmUva2Nh
bnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm0JKHdv
cmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIENJS2VybmVsICpkaXNjcmV0ZVRy
YW5zZmVyRmlsdGVyIAogICAgIENJU2FtcGxlciAqaW5wdXRTYW1wbGVyID0gW0NJU2FtcGxlciBz
YW1wbGVyV2l0aEltYWdlOiBpbnB1dEltYWdlXTsKICAgICBDSVNhbXBsZXIgKnRhYmxlU2FtcGxl
ciA9IFtDSVNhbXBsZXIgc2FtcGxlcldpdGhJbWFnZTogaW5wdXRUYWJsZSBrZXlzQW5kVmFsdWVz
OmtDSVNhbXBsZXJGaWx0ZXJNb2RlLCBrQ0lTYW1wbGVyRmlsdGVyTmVhcmVzdCwga0NJU2FtcGxl
cldyYXBNb2RlLCBrQ0lTYW1wbGVyV3JhcENsYW1wLCBuaWxdOwogICAgIE5TQXJyYXkgKmFyZ3Mg
PSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmlucHV0U2FtcGxlciwgdGFibGVTYW1wbGVyLCBp
bnB1dFNlbGVjdG9yLCAKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpbaW5wdXRU
YWJsZSBleHRlbnRdLnNpemUud2lkdGgtMS4wXSwgQCJkZWZpbml0aW9uIiwgW2lucHV0U2FtcGxl
ciBkZWZpbml0aW9uXSwgbmlsXTsKKyAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpb
aW5wdXRUYWJsZSBleHRlbnRdLnNpemUud2lkdGggLSAxLjBmXSwgQCJkZWZpbml0aW9uIiwgW2lu
cHV0U2FtcGxlciBkZWZpbml0aW9uXSwgbmlsXTsKICAgICByZXR1cm4gW3NlbGYgYXBwbHk6ZGlz
Y3JldGVUcmFuc2ZlckZpbHRlciBhcmd1bWVudHM6YXJncyBvcHRpb25zOm5pbF07CiB9CiAKSW5k
ZXg6IFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tEaXNwbGFjZW1lbnRN
YXBGaWx0ZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9m
aWx0ZXJzL1dLRGlzcGxhY2VtZW50TWFwRmlsdGVyLm0JKHJldmlzaW9uIDE1NzQzKQorKysgV2Vi
Q29yZS9rY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0Rpc3BsYWNlbWVudE1hcEZpbHRl
ci5tCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTAgQEAgc3RhdGljIENJS2VybmVsICpk
aXNwbGFjZW1lbnRNYXBGaWx0ZXIgPQogICAgICAgICAgICAgICAgICAgICAgW05TQXJyYXkgYXJy
YXlXaXRoT2JqZWN0czprQ0lDYXRlZ29yeVN0eWxpemUsIGtDSUNhdGVnb3J5VmlkZW8sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAga0NJQ2F0ZWdvcnlTdGlsbEltYWdlLCBrQ0lDYXRlZ29yeU5v
blNxdWFyZVBpeGVscyxuaWxdLCBrQ0lBdHRyaWJ1dGVGaWx0ZXJDYXRlZ29yaWVzLAogICAgICAg
ICAgICAgICAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlz
OgotICAgICAgICAgICAgICAgICAgICAgICAgIFtDSVZlY3RvciB2ZWN0b3JXaXRoWDoxLjAgWTow
LjAgWjowLjAgVzowLjBdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtDSVZlY3RvciB2ZWN0
b3JXaXRoWDoxLjBmIFk6MC4wZiBaOjAuMGYgVzowLjBmXSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICBrQ0lBdHRyaWJ1dGVEZWZhdWx0LCBuaWxdLCBAImlucHV0WENoYW5uZWxTZWxlY3RvciIs
ICAgCiAgICAgICAgICAgICAgICAgICAgICBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2Jq
ZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgW0NJVmVjdG9yIHZlY3Rvcldp
dGhYOjAuMCBZOjEuMCBaOjAuMCBXOjAuMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW0NJ
VmVjdG9yIHZlY3RvcldpdGhYOjAuMGYgWToxLjBmIFo6MC4wZiBXOjAuMGZdLAogICAgICAgICAg
ICAgICAgICAgICAgICAgIGtDSUF0dHJpYnV0ZURlZmF1bHQsIG5pbF0sIEAiaW5wdXRZQ2hhbm5l
bFNlbGVjdG9yIiwgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgIFtOU0Rp
Y3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKICAgICAgICAgICAgICAgICAg
ICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTowLjBdLCBrQ0lBdHRyaWJ1dGVEZWZh
dWx0LApJbmRleDogV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS1NwZWN1
bGFyTGlnaHRpbmdGaWx0ZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvZGV2aWNl
L3F1YXJ0ei9maWx0ZXJzL1dLU3BlY3VsYXJMaWdodGluZ0ZpbHRlci5tCShyZXZpc2lvbiAxNTc0
MykKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tTcGVjdWxhckxp
Z2h0aW5nRmlsdGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIENJ
S2VybmVsICpzcGVjdWxhckxpZ2h0aW5nRmlsdGVyIAogICAgICAgICAgICAgICAgICAgICAgW05T
QXJyYXkgYXJyYXlXaXRoT2JqZWN0czprQ0lDYXRlZ29yeVN0eWxpemUsIGtDSUNhdGVnb3J5Vmlk
ZW8sCiAgICAgICAgICAgICAgICAgICAgICAgICAga0NJQ2F0ZWdvcnlTdGlsbEltYWdlLCBrQ0lD
YXRlZ29yeU5vblNxdWFyZVBpeGVscyxuaWxdLCBrQ0lBdHRyaWJ1dGVGaWx0ZXJDYXRlZ29yaWVz
LAogICAgICAgICAgICAgICAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVj
dHNBbmRLZXlzOgotICAgICAgICAgICAgICAgICAgICAgICAgIFtDSUNvbG9yIGNvbG9yV2l0aFJl
ZDoxLjAgZ3JlZW46MS4wIGJsdWU6MS4wIGFscGhhOjEuMF0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgW0NJQ29sb3IgY29sb3JXaXRoUmVkOjEuMGYgZ3JlZW46MS4wZiBibHVlOjEuMGYgYWxw
aGE6MS4wZl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAga0NJQXR0cmlidXRlRGVmYXVsdCwg
bmlsXSwgIEAiaW5wdXRMaWdodGluZ0NvbG9yIiwKICAgICAgICAgICAgICAgICAgICAgIFtOU0Rp
Y3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKICAgICAgICAgICAgICAgICAg
ICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTowLjBdLCBrQ0lBdHRyaWJ1dGVNaW4s
CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLU3BvdExpZ2h0
RmlsdGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovZmls
dGVycy9XS1Nwb3RMaWdodEZpbHRlci5tCShyZXZpc2lvbiAxNTc0MykKKysrIFdlYkNvcmUva2Nh
bnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tTcG90TGlnaHRGaWx0ZXIubQkod29ya2luZyBj
b3B5KQpAQCAtNzAsNyArNzAsNyBAQCBzdGF0aWMgQ0lLZXJuZWwgKnNwb3RMaWdodEZpbHRlciA9
IG5pbDsKIAogLSAoQ0lJbWFnZSAqKW91dHB1dEltYWdlCiB7Ci0gICAgZmxvYXQgY29zY3V0b2Zm
ID0gY29zKFtpbnB1dExpbWl0aW5nQ29uZUFuZ2xlIGZsb2F0VmFsdWVdKTsKKyAgICBmbG9hdCBj
b3NjdXRvZmYgPSBjb3NmKFtpbnB1dExpbWl0aW5nQ29uZUFuZ2xlIGZsb2F0VmFsdWVdKTsKICAg
ICBpZiAoY29zY3V0b2ZmIDwgMCkgCiAgICAgICAgIGNvc2N1dG9mZiA9IC1jb3NjdXRvZmY7CiAg
ICAgcmV0dXJuIFtzZWxmIGFwcGx5OnNwb3RMaWdodEZpbHRlciwgaW5wdXRMaWdodFZlY3RvcnMs
IGlucHV0TGlnaHREaXJlY3Rpb24sIGlucHV0U3BlY3VsYXJFeHBvbmVudCwgW05TTnVtYmVyIG51
bWJlcldpdGhGbG9hdDpjb3NjdXRvZmZdLCBuaWxdOwpJbmRleDogV2ViQ29yZS9rY2FudmFzL2Rl
dmljZS9xdWFydHovZmlsdGVycy9XS1RhYmxlVHJhbnNmZXJGaWx0ZXIubQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLVGFibGVUcmFuc2ZlckZp
bHRlci5tCShyZXZpc2lvbiAxNTc0MykKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6
L2ZpbHRlcnMvV0tUYWJsZVRyYW5zZmVyRmlsdGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTY0LDcg
KzY0LDcgQEAgc3RhdGljIENJS2VybmVsICp0YWJsZVRyYW5zZmVyRmlsdGVyID0gbgogICAgIENJ
U2FtcGxlciAqaW5wdXRTYW1wbGVyID0gW0NJU2FtcGxlciBzYW1wbGVyV2l0aEltYWdlOiBpbnB1
dEltYWdlXTsKICAgICBDSVNhbXBsZXIgKnRhYmxlU2FtcGxlciA9IFtDSVNhbXBsZXIgc2FtcGxl
cldpdGhJbWFnZTogaW5wdXRUYWJsZSBrZXlzQW5kVmFsdWVzOmtDSVNhbXBsZXJGaWx0ZXJNb2Rl
LCBrQ0lTYW1wbGVyRmlsdGVyTGluZWFyLCBrQ0lTYW1wbGVyV3JhcE1vZGUsIGtDSVNhbXBsZXJX
cmFwQ2xhbXAsIG5pbF07CiAgICAgTlNBcnJheSAqYXJncyA9IFtOU0FycmF5IGFycmF5V2l0aE9i
amVjdHM6aW5wdXRTYW1wbGVyLCB0YWJsZVNhbXBsZXIsIGlucHV0U2VsZWN0b3IsIAotICAgICAg
ICBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OltpbnB1dFRhYmxlIGV4dGVudF0uc2l6ZS53aWR0
aC0xLjBdLCBAImRlZmluaXRpb24iLCBbaW5wdXRTYW1wbGVyIGRlZmluaXRpb25dLCBuaWxdOwor
ICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OltpbnB1dFRhYmxlIGV4dGVudF0uc2l6
ZS53aWR0aCAtIDEuMGZdLCBAImRlZmluaXRpb24iLCBbaW5wdXRTYW1wbGVyIGRlZmluaXRpb25d
LCBuaWxdOwogICAgIHJldHVybiBbc2VsZiBhcHBseTp0YWJsZVRyYW5zZmVyRmlsdGVyIGFyZ3Vt
ZW50czphcmdzIG9wdGlvbnM6bmlsXTsKIH0KIApJbmRleDogV2ViS2l0L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTc0MykKKysrIFdlYktpdC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3OSBAQAorMjAwNi0wOC0wMSAgU2Ft
IFdlaW5pZyAgPHNhbS53ZWluaWdAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gcGF0Y2ggZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVu
ZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxOTIKKyAgICAgICAgICBNYWtlIFdlYkNvcmUg
KGFuZCBmcmllbmRzKSBjb21waWxlIHdpdGggLVdzaG9ydGVuLTY0LXRvLTMyCisgICAgICAgICAg
CisgICAgICAgICAgKiBBZGRzIC1Xc2hvcnRlbi02NC10by0zMiBmbGFnIHRvIFhjb2RlIHByb2pl
Y3QuCisgICAgICAgICAgKiBBZGRzICdmJyB0byBmbG9hdCBjb25zdGFudHMgd2hlcmUgbmVlZGVk
LgorICAgICAgICAgICogQWRkcyBleHBsaWNpdCBjYXN0cyB3aGVyZSBuZWVkZWQuIAorCisgICAg
ICAgICogTWlzYy9XZWJMUlVGaWxlTGlzdC5tOgorICAgICAgICAoV2ViTFJVRmlsZUxpc3RSZWJ1
aWxkRmlsZURhdGFVc2luZ1Jvb3REaXJlY3RvcnkpOgorICAgICAgICAqIE1pc2MvV2ViTlNDb250
cm9sRXh0cmFzLm06CisgICAgICAgICgtW05TQ29udHJvbCBzaXplVG9GaXRBbmRBZGp1c3RXaW5k
b3dIZWlnaHRdKToKKyAgICAgICAgKiBNaXNjL1dlYk5TSW1hZ2VFeHRyYXMubToKKyAgICAgICAg
KC1bTlNJbWFnZSBfd2ViX3NjYWxlVG9NYXhTaXplOl0pOgorICAgICAgICAqIE1pc2MvV2ViTlNW
aWV3RXh0cmFzLmg6CisgICAgICAgICogTWlzYy9XZWJOU1ZpZXdFeHRyYXMubToKKyAgICAgICAg
KiBQbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblN0cmVhbS5tOgorICAgICAgICAoLVtXZWJC
YXNlTmV0c2NhcGVQbHVnaW5TdHJlYW0gc3RhcnRTdHJlYW1SZXNwb25zZVVSTDpleHBlY3RlZENv
bnRlbnRMZW5ndGg6bGFzdE1vZGlmaWVkRGF0ZTpNSU1FVHlwZTpdKToKKyAgICAgICAgKiBQbHVn
aW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubToKKyAgICAgICAgKC1bV2ViQmFzZU5ldHNj
YXBlUGx1Z2luVmlldyBzYXZlQW5kU2V0TmV3UG9ydFN0YXRlRm9yVXBkYXRlOl0pOgorICAgICAg
ICAoLVtXZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3IGRyYXdSZWN0Ol0pOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lQnJpZGdlLm06CisgICAgICAgICgtW1dlYkZyYW1lQnJpZGdl
IGV4cGlyZXNUaW1lRm9yUmVzcG9uc2U6XSk6CisgICAgICAgICogV2ViSW5zcGVjdG9yL1dlYklu
c3BlY3Rvci5tOgorICAgICAgICAoLVtOU1dpbmRvdyB3aW5kb3ddKToKKyAgICAgICAgKC1bV2Vi
SW5zcGVjdG9yIHRyZWVWaWV3U2Nyb2xsVG86XSk6CisgICAgICAgICgtW1dlYkluc3BlY3RvciBf
dXBkYXRlU3lzdGVtQ29sb3JzXSk6CisgICAgICAgICgtW1dlYkluc3BlY3RvciB3ZWJWaWV3OnBs
dWdJblZpZXdXaXRoQXJndW1lbnRzOl0pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3Igb3V0bGlu
ZVZpZXc6b2JqZWN0VmFsdWVGb3JUYWJsZUNvbHVtbjpieUl0ZW06XSk6CisgICAgICAgICogV2Vi
SW5zcGVjdG9yL1dlYkluc3BlY3Rvck91dGxpbmVWaWV3Lm06CisgICAgICAgICgtW1dlYkluc3Bl
Y3Rvck91dGxpbmVWaWV3IF9oaWdobGlnaHRSb3c6Y2xpcFJlY3Q6XSk6CisgICAgICAgICogV2Vi
SW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHQubToKKyAgICAgICAgKC1bV2ViTm9kZUhpZ2hsaWdo
dCBpbml0V2l0aEJvdW5kczphbmRSZWN0czpmb3JWaWV3Ol0pOgorICAgICAgICAqIFdlYkluc3Bl
Y3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5tOgorICAgICAgICAoLVtXZWJOb2RlSGlnaGxpZ2h0
VmlldyByb3VuZGVkUmVjdDp3aXRoUmFkaXVzOl0pOgorICAgICAgICAoLVtXZWJOb2RlSGlnaGxp
Z2h0VmlldyBpbml0V2l0aEhpZ2hsaWdodDphbmRSZWN0czpmb3JWaWV3Ol0pOgorICAgICAgICAo
LVtXZWJOb2RlSGlnaGxpZ2h0VmlldyBkcmF3UmVjdDpdKToKKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm06Cisg
ICAgICAgICgtW1dlYkZyYW1lIF9vcGVuZWRdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1l
Vmlldy5tOgorICAgICAgICAoLVtXZWJGcmFtZVZpZXcgaW5pdFdpdGhGcmFtZTpdKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9kcmFn
SW1hZ2VGb3JMaW5rRWxlbWVudDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3dlYl9zZXRQ
cmludGluZ01vZGVSZWN1cnNpdmVdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3dlYl9jbGVh
clByaW50aW5nTW9kZVJlY3Vyc2l2ZV0pOgorICAgICAgICAoLVtOU0FycmF5IGxheW91dF0pOgor
ICAgICAgICAoLVtOU0FycmF5IF9zZXRQcmludGluZzptaW5pbXVtUGFnZVdpZHRoOm1heGltdW1Q
YWdlV2lkdGg6YWRqdXN0Vmlld1NpemU6XSk6CisgICAgICAgICgtW05TQXJyYXkgYWRqdXN0UGFn
ZUhlaWdodE5ldzp0b3A6Ym90dG9tOmxpbWl0Ol0pOgorICAgICAgICAoLVtOU0FycmF5IF9zY2Fs
ZUZhY3RvckZvclByaW50T3BlcmF0aW9uOl0pOgorICAgICAgICAoLVtOU0FycmF5IHNldFBhZ2VX
aWR0aEZvclByaW50aW5nOl0pOgorICAgICAgICAoLVtOU0FycmF5IF9lbmRQcmludE1vZGVdKToK
KyAgICAgICAgKC1bTlNBcnJheSBrbm93c1BhZ2VSYW5nZTpdKToKKyAgICAgICAgKC1bTlNBcnJh
eSBfb3JpZ2luYWxGb250QV0pOgorICAgICAgICAoLVtOU0FycmF5IF9vcmlnaW5hbEZvbnRCXSk6
CisgICAgICAgICgtW1dlYlRleHRDb21wbGV0ZUNvbnRyb2xsZXIgX2J1aWxkVUldKToKKyAgICAg
ICAgKC1bV2ViVGV4dENvbXBsZXRlQ29udHJvbGxlciBfcGxhY2VQb3B1cFdpbmRvdzpdKToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYkxvYWRlci5tOgorICAgICAgICAoLVtOU1VSTFByb3RvY29sIGRp
ZFJlY2VpdmVSZXNwb25zZTpdKToKKyAgICAgICAgKC1bTlNVUkxQcm90b2NvbCBkaWRSZWNlaXZl
RGF0YTpsZW5ndGhSZWNlaXZlZDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYk1haW5SZXNvdXJj
ZUxvYWRlci5tOgorICAgICAgICAoLVtXZWJNYWluUmVzb3VyY2VMb2FkZXIgZGlkUmVjZWl2ZVJl
c3BvbnNlOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlldy5tOgorICAgICAgICAoLVtX
ZWJQREZWaWV3IF9tYWtlVGV4dFN0YW5kYXJkU2l6ZTpdKToKKyAgICAgICAgKC1bV2ViUERGVmll
dyBzZWxlY3Rpb25JbWFnZUZvcmNpbmdXaGl0ZVRleHQ6XSk6CisgICAgICAgICgtW1BERlByZWZV
cGRhdGluZ1Byb3h5IGZvcndhcmRJbnZvY2F0aW9uOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
UHJlZmVyZW5jZXMubToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgX2Zsb2F0VmFsdWVGb3JL
ZXk6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm06CisgICAgICAgICgtW1dlYlZpZXcg
bWFrZVRleHRTbWFsbGVyOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGNhbk1ha2VUZXh0U3RhbmRh
cmRTaXplXSk6CisgICAgICAgICgtW1dlYlZpZXcgbWFrZVRleHRTdGFuZGFyZFNpemU6XSk6CisK
IDIwMDYtMDgtMDEgIFRpbSBPbWVybmljayAgPHRpbW9AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFuZGVycy4KSW5kZXg6IFdlYktpdC9NaXNjL1dlYkxSVUZpbGVMaXN0Lm0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L01pc2MvV2ViTFJVRmlsZUxpc3QubQkocmV2aXNpb24gMTU3NDMp
CisrKyBXZWJLaXQvTWlzYy9XZWJMUlVGaWxlTGlzdC5tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcs
NyArMTI3LDcgQEAgaW50IFdlYkxSVUZpbGVMaXN0UmVidWlsZEZpbGVEYXRhVXNpbmdSbwogICAg
IHdoaWxlICgoZW50ID0gZnRzX3JlYWQoZnRzKSkpIHsKICAgICAgICAgaWYgKGVudC0+ZnRzX3N0
YXRwLT5zdF9tb2RlICYgU19JRlJFRykgewogICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZVBh
dGggPSBlbnQtPmZ0c19hY2NwYXRoICsgcGF0aExlbmd0aCArIDE7Ci0gICAgICAgICAgICBXZWJM
UlVGaWxlTGlzdFNldEZpbGVEYXRhKGxpc3QsIGZpbGVQYXRoLCBlbnQtPmZ0c19zdGF0cC0+c3Rf
c2l6ZSwgZW50LT5mdHNfc3RhdHAtPnN0X2N0aW1lc3BlYy50dl9zZWMgLSBrQ0ZBYnNvbHV0ZVRp
bWVJbnRlcnZhbFNpbmNlMTk3MCk7CisgICAgICAgICAgICBXZWJMUlVGaWxlTGlzdFNldEZpbGVE
YXRhKGxpc3QsIGZpbGVQYXRoLCAodW5zaWduZWQgbG9uZyllbnQtPmZ0c19zdGF0cC0+c3Rfc2l6
ZSwgZW50LT5mdHNfc3RhdHAtPnN0X2N0aW1lc3BlYy50dl9zZWMgLSBrQ0ZBYnNvbHV0ZVRpbWVJ
bnRlcnZhbFNpbmNlMTk3MCk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFdlYktpdC9NaXNj
L1dlYk5TQ29udHJvbEV4dHJhcy5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9NaXNjL1dlYk5TQ29u
dHJvbEV4dHJhcy5tCShyZXZpc2lvbiAxNTc0MykKKysrIFdlYktpdC9NaXNjL1dlYk5TQ29udHJv
bEV4dHJhcy5tCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiB7CiAgICAgTlNSZWN0
IGZyYW1lID0gW3NlbGYgZnJhbWVdOwogCi0gICAgTlNTaXplIGJlc3RTaXplID0gW1tzZWxmIGNl
bGxdIGNlbGxTaXplRm9yQm91bmRzOk5TTWFrZVJlY3QoMCwgMCwgZnJhbWUuc2l6ZS53aWR0aCwg
MTAwMDAuMCldOworICAgIE5TU2l6ZSBiZXN0U2l6ZSA9IFtbc2VsZiBjZWxsXSBjZWxsU2l6ZUZv
ckJvdW5kczpOU01ha2VSZWN0KDAuMGYsIDAuMGYsIGZyYW1lLnNpemUud2lkdGgsIDEwMDAwLjBm
KV07CiAgICAgCiAgICAgZmxvYXQgaGVpZ2h0RGVsdGEgPSBiZXN0U2l6ZS5oZWlnaHQgLSBmcmFt
ZS5zaXplLmhlaWdodDsKIApJbmRleDogV2ViS2l0L01pc2MvV2ViTlNJbWFnZUV4dHJhcy5tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9NaXNjL1dlYk5TSW1hZ2VFeHRyYXMubQkocmV2aXNpb24gMTU3
NDMpCisrKyBXZWJLaXQvTWlzYy9XZWJOU0ltYWdlRXh0cmFzLm0JKHdvcmtpbmcgY29weSkKQEAg
LTM0LDcgKzM0LDcgQEAKIAogLSAodm9pZClfd2ViX3NjYWxlVG9NYXhTaXplOihOU1NpemUpc2l6
ZQogewotICAgIGZsb2F0IGhlaWdodFJlc2l6ZURlbHRhID0gMC4wLCB3aWR0aFJlc2l6ZURlbHRh
ID0gMC4wLCByZXNpemVEZWx0YSA9IDAuMDsKKyAgICBmbG9hdCBoZWlnaHRSZXNpemVEZWx0YSA9
IDAuMGYsIHdpZHRoUmVzaXplRGVsdGEgPSAwLjBmLCByZXNpemVEZWx0YSA9IDAuMGY7CiAgICAg
TlNTaXplIG9yaWdpbmFsU2l6ZSA9IFtzZWxmIHNpemVdOwogCiAgICAgaWYob3JpZ2luYWxTaXpl
LndpZHRoID4gc2l6ZS53aWR0aCl7CkluZGV4OiBXZWJLaXQvTWlzYy9XZWJOU1ZpZXdFeHRyYXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvTWlzYy9XZWJOU1ZpZXdFeHRyYXMuaAkocmV2aXNpb24g
MTU3NDMpCisrKyBXZWJLaXQvTWlzYy9XZWJOU1ZpZXdFeHRyYXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNyArMjgsNyBAQAogCiAjaW1wb3J0IDxBcHBLaXQvQXBwS2l0Lmg+CiAKLSNkZWZpbmUg
V2ViRHJhZ0ltYWdlQWxwaGEgMC43NQorI2RlZmluZSBXZWJEcmFnSW1hZ2VBbHBoYSAwLjc1Zgog
CiBAY2xhc3MgRE9NRWxlbWVudDsKIEBjbGFzcyBXZWJGcmFtZVZpZXc7CkluZGV4OiBXZWJLaXQv
TWlzYy9XZWJOU1ZpZXdFeHRyYXMubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvTWlzYy9XZWJOU1Zp
ZXdFeHRyYXMubQkocmV2aXNpb24gMTU3NDMpCisrKyBXZWJLaXQvTWlzYy9XZWJOU1ZpZXdFeHRy
YXMubQkod29ya2luZyBjb3B5KQpAQCAtMzcsMTIgKzM3LDEyIEBACiAjaW1wb3J0IDxXZWJLaXQv
V2ViTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogCi0j
ZGVmaW5lIFdlYkRyYWdTdGFydEh5c3RlcmVzaXNYICAgICAgICAgICAgICAgICA1LjAKLSNkZWZp
bmUgV2ViRHJhZ1N0YXJ0SHlzdGVyZXNpc1kgICAgICAgICAgICAgICAgIDUuMAotI2RlZmluZSBX
ZWJNYXhEcmFnSW1hZ2VTaXplICAgICAgICAgICAgICAgICAgICAgTlNNYWtlU2l6ZSg0MDAsIDQw
MCkKLSNkZWZpbmUgV2ViTWF4T3JpZ2luYWxJbWFnZUFyZWEgICAgICAgICAgICAgICAgICgxNTAw
ICogMTUwMCkKLSNkZWZpbmUgV2ViRHJhZ0ljb25SaWdodEluc2V0ICAgICAgICAgICAgICAgICAg
IDcuMAotI2RlZmluZSBXZWJEcmFnSWNvbkJvdHRvbUluc2V0ICAgICAgICAgICAgICAgICAgMy4w
CisjZGVmaW5lIFdlYkRyYWdTdGFydEh5c3RlcmVzaXNYICAgICAgICAgICAgICAgICA1LjBmCisj
ZGVmaW5lIFdlYkRyYWdTdGFydEh5c3RlcmVzaXNZICAgICAgICAgICAgICAgICA1LjBmCisjZGVm
aW5lIFdlYk1heERyYWdJbWFnZVNpemUgICAgICAgICAgICAgICAgICAgICBOU01ha2VTaXplKDQw
MC4wZiwgNDAwLjBmKQorI2RlZmluZSBXZWJNYXhPcmlnaW5hbEltYWdlQXJlYSAgICAgICAgICAg
ICAgICAgKDE1MDAuMGYgKiAxNTAwLjBmKQorI2RlZmluZSBXZWJEcmFnSWNvblJpZ2h0SW5zZXQg
ICAgICAgICAgICAgICAgICAgNy4wZgorI2RlZmluZSBXZWJEcmFnSWNvbkJvdHRvbUluc2V0ICAg
ICAgICAgICAgICAgICAgMy4wZgogCiBAaW1wbGVtZW50YXRpb24gTlNWaWV3IChXZWJFeHRyYXMp
CiAKSW5kZXg6IFdlYktpdC9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblN0cmVhbS5tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblN0cmVhbS5t
CShyZXZpc2lvbiAxNTc0MykKKysrIFdlYktpdC9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdp
blN0cmVhbS5tCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEsOCArMjExLDEyIEBAIHN0YXRpYyBjaGFy
ICpDYXJib25QYXRoRnJvbVBPU0lYUGF0aChjb24KICAgICBzdHJlYW0udXJsID0gc3RyZHVwKFty
ZXNwb25zZVVSTCBfd2ViX1VSTENTdHJpbmddKTsKIAogICAgIHN0cmVhbS5uZGF0YSA9IHNlbGY7
Ci0gICAgc3RyZWFtLmVuZCA9IGV4cGVjdGVkQ29udGVudExlbmd0aCA+IDAgPyBleHBlY3RlZENv
bnRlbnRMZW5ndGggOiAwOwotICAgIHN0cmVhbS5sYXN0bW9kaWZpZWQgPSBbbGFzdE1vZGlmaWVk
RGF0ZSB0aW1lSW50ZXJ2YWxTaW5jZTE5NzBdOworICAgIHN0cmVhbS5lbmQgPSBleHBlY3RlZENv
bnRlbnRMZW5ndGggPiAwID8gKHVuc2lnbmVkKWV4cGVjdGVkQ29udGVudExlbmd0aCA6IDA7CisK
KyAgICAvLyBGSVhNRTogaXMgdGhlcmUgYSBjbGVhbmVyIHdheSB0byBjYXN0IGFuIE5TVGltZUlu
dGVydmFsIHRvIGFuIHVuc2lnbmVkIGludD8KKyAgICBOU1RpbWVJbnRlcnZhbCB0aW1lSW50ZXJ2
YWxTaW5jZUxhc3RNb2RpZmllZCA9IFtsYXN0TW9kaWZpZWREYXRlIHRpbWVJbnRlcnZhbFNpbmNl
MTk3MF07CisgICAgc3RyZWFtLmxhc3Rtb2RpZmllZCA9ICh1bnNpZ25lZCl0aW1lSW50ZXJ2YWxT
aW5jZUxhc3RNb2RpZmllZDsKKwogICAgIHN0cmVhbS5ub3RpZnlEYXRhID0gbm90aWZ5RGF0YTsK
ICAgICAKICAgICB0cmFuc2Zlck1vZGUgPSBOUF9OT1JNQUw7CkluZGV4OiBXZWJLaXQvUGx1Z2lu
cy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1BsdWdp
bnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tCShyZXZpc2lvbiAxNTc0MykKKysrIFdlYktp
dC9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubQkod29ya2luZyBjb3B5KQpAQCAt
NDc4LDcgKzQ3OCw3IEBAIHN0YXRpYyBPU1N0YXR1cyBUU01FdmVudEhhbmRsZXIoRXZlbnRIYW4K
ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIGhl
aWdodDsKICAgICAgICAgICAgICAgICAgICAgaWYgKFtzZWxmIF9nZXRBR0xPZmZzY3JlZW5CdWZm
ZXI6TlVMTCB3aWR0aDomd2lkdGggaGVpZ2h0OiZoZWlnaHRdKQotICAgICAgICAgICAgICAgICAg
ICAgICAgZ2xWaWV3cG9ydCgwLjAsIDAuMCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBnbFZpZXdwb3J0KDAsIDAsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKQEAgLTE0ODAs
OCArMTQ4MCw4IEBAIHN0YXRpYyBPU1N0YXR1cyBUU01FdmVudEhhbmRsZXIoRXZlbnRIYW4KICAg
ICAgICAgICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBbW05TR3JhcGhpY3NDb250ZXh0IGN1
cnJlbnRDb250ZXh0XSBncmFwaGljc1BvcnRdOwogICAgICAgICAgICAgQ0dDb250ZXh0U2F2ZUdT
dGF0ZShjZ0NvbnRleHQpOwogICAgICAgICAgICAgTlNSZWN0IGJvdW5kcyA9IFtzZWxmIGJvdW5k
c107Ci0gICAgICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY2dDb250ZXh0LCAwLjAsIE5T
SGVpZ2h0KGJvdW5kcykpOwotICAgICAgICAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY2dDb250ZXh0
LCAxLjAsIC0xLjApOworICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNnQ29udGV4
dCwgMC4wZiwgTlNIZWlnaHQoYm91bmRzKSk7CisgICAgICAgICAgICBDR0NvbnRleHRTY2FsZUNU
TShjZ0NvbnRleHQsIDEuMGYsIC0xLjBmKTsKICAgICAgICAgICAgIFtwcmludGVkUGx1Z2luQml0
bWFwIGRyYXdJblJlY3Q6Ym91bmRzXTsKICAgICAgICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3Rh
dGUoY2dDb250ZXh0KTsKICAgICAgICAgfQpAQCAtMTQ5NSwxMyArMTQ5NSwxMyBAQCBzdGF0aWMg
T1NTdGF0dXMgVFNNRXZlbnRIYW5kbGVyKEV2ZW50SGFuCiAgICAgICAgICAgICBDR0NvbnRleHRS
ZWYgY2dDb250ZXh0ID0gW1tOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0gZ3JhcGhp
Y3NQb3J0XTsKICAgICAgICAgICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY2dDb250ZXh0KTsKICAg
ICAgICAgICAgIE5TUmVjdCBib3VuZHMgPSBbc2VsZiBib3VuZHNdOwotICAgICAgICAgICAgQ0dD
b250ZXh0VHJhbnNsYXRlQ1RNKGNnQ29udGV4dCwgMC4wLCBOU0hlaWdodChib3VuZHMpKTsKLSAg
ICAgICAgICAgIENHQ29udGV4dFNjYWxlQ1RNKGNnQ29udGV4dCwgMS4wLCAtMS4wKTsKKyAgICAg
ICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjZ0NvbnRleHQsIDAuMGYsIE5TSGVpZ2h0KGJv
dW5kcykpOworICAgICAgICAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY2dDb250ZXh0LCAxLjBmLCAt
MS4wZik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIENvcHkgJ3JlY3QnIGZyb20gdGhl
IG9mZnNjcmVlbiBidWZmZXIgdG8gdGhpcyB2aWV3ICh0aGUgZmxpcCBhYm92ZSBtYWtlcyB0aGlz
IHNvcnQgb2YgdHJpY2t5KQogICAgICAgICAgICAgTlNSZWN0IGZsaXBwZWRSZWN0ID0gcmVjdDsK
ICAgICAgICAgICAgIGZsaXBwZWRSZWN0Lm9yaWdpbi55ID0gTlNNYXhZKGJvdW5kcykgLSBOU01h
eFkoZmxpcHBlZFJlY3QpOwotICAgICAgICAgICAgW2FnbE9mZnNjcmVlbkltYWdlIGRyYXdJblJl
Y3Q6ZmxpcHBlZFJlY3QgZnJvbVJlY3Q6ZmxpcHBlZFJlY3Qgb3BlcmF0aW9uOk5TQ29tcG9zaXRl
U291cmNlT3ZlciBmcmFjdGlvbjoxLjBdOworICAgICAgICAgICAgW2FnbE9mZnNjcmVlbkltYWdl
IGRyYXdJblJlY3Q6ZmxpcHBlZFJlY3QgZnJvbVJlY3Q6ZmxpcHBlZFJlY3Qgb3BlcmF0aW9uOk5T
Q29tcG9zaXRlU291cmNlT3ZlciBmcmFjdGlvbjoxLjBmXTsKICAgICAgICAgICAgIENHQ29udGV4
dFJlc3RvcmVHU3RhdGUoY2dDb250ZXh0KTsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IFdlYktp
dC9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUJyaWRnZS5tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUJyaWRnZS5tCShyZXZpc2lvbiAxNTc0MykKKysrIFdlYktp
dC9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUJyaWRnZS5tCSh3b3JraW5nIGNvcHkpCkBAIC02Mzks
NyArNjM5LDggQEAgTlNTdHJpbmcgKldlYlBsdWdpbkNvbnRhaW5lcktleSA9ICAgQCJXZQogCiAg
ICAgTlNUaW1lSW50ZXJ2YWwgZXhwaXJhdGlvbiA9IFtyZXNwb25zZSBfY2FsY3VsYXRlZEV4cGly
YXRpb25dOwogICAgIGV4cGlyYXRpb24gKz0ga0NGQWJzb2x1dGVUaW1lSW50ZXJ2YWxTaW5jZTE5
NzA7Ci0gICAgcmV0dXJuIGV4cGlyYXRpb24gPiBNQVhfVElNRV9UID8gTUFYX1RJTUVfVCA6IGV4
cGlyYXRpb247CisgICAgCisgICAgcmV0dXJuIGV4cGlyYXRpb24gPiBNQVhfVElNRV9UID8gTUFY
X1RJTUVfVCA6ICh0aW1lX3QpZXhwaXJhdGlvbjsKIH0KIAogLSAodm9pZClyZXBvcnRDbGllbnRS
ZWRpcmVjdFRvVVJMOihOU1VSTCAqKVVSTCBkZWxheTooTlNUaW1lSW50ZXJ2YWwpc2Vjb25kcyBm
aXJlRGF0ZTooTlNEYXRlICopZGF0ZSBsb2NrSGlzdG9yeTooQk9PTClsb2NrSGlzdG9yeSBpc0ph
dmFTY3JpcHRGb3JtQWN0aW9uOihCT09MKWlzSmF2YVNjcmlwdEZvcm1BY3Rpb24KSW5kZXg6IFdl
YktpdC9XZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yLm0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dl
Ykluc3BlY3Rvci9XZWJJbnNwZWN0b3IubQkocmV2aXNpb24gMTU3NDMpCisrKyBXZWJLaXQvV2Vi
SW5zcGVjdG9yL1dlYkluc3BlY3Rvci5tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNyArMTA2LDcg
QEAgc3RhdGljIE5TTWFwVGFibGUgKmxhc3RDaGlsZElnbm9yaW5nV2hpdAogewogICAgIE5TV2lu
ZG93ICp3aW5kb3cgPSBbc3VwZXIgd2luZG93XTsKICAgICBpZiAoIXdpbmRvdykgewotICAgICAg
ICBOU1BhbmVsICp3aW5kb3cgPSBbW1dlYkluc3BlY3RvclBhbmVsIGFsbG9jXSBpbml0V2l0aENv
bnRlbnRSZWN0Ok5TTWFrZVJlY3QoNjAuMCwgMjAwLjAsIDM1MC4wLCA1NTAuMClcCisgICAgICAg
IE5TUGFuZWwgKndpbmRvdyA9IFtbV2ViSW5zcGVjdG9yUGFuZWwgYWxsb2NdIGluaXRXaXRoQ29u
dGVudFJlY3Q6TlNNYWtlUmVjdCg2MC4wZiwgMjAwLjBmLCAzNTAuMGYsIDU1MC4wZilcCiAgICAg
ICAgICAgICBzdHlsZU1hc2s6KE5TQm9yZGVybGVzc1dpbmRvd01hc2sgfCBOU1V0aWxpdHlXaW5k
b3dNYXNrKSBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXTsKICAgICAg
ICAgW3dpbmRvdyBzZXRCYWNrZ3JvdW5kQ29sb3I6W05TQ29sb3IgY2xlYXJDb2xvcl1dOwogICAg
ICAgICBbd2luZG93IHNldE9wYXF1ZTpOT107CkBAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIE5T
TWFwVGFibGUgKmxhc3RDaGlsZElnbm9yaW5nV2hpdAogICAgICAgICBbd2luZG93IHNldE1vdmFi
bGVCeVdpbmRvd0JhY2tncm91bmQ6WUVTXTsKICAgICAgICAgW3dpbmRvdyBzZXRIaWRlc09uRGVh
Y3RpdmF0ZTpOT107CiAgICAgICAgIFt3aW5kb3cgc2V0RGVsZWdhdGU6c2VsZl07Ci0gICAgICAg
IFt3aW5kb3cgc2V0TWluU2l6ZTpOU01ha2VTaXplKDI4MC4wLCA0NTAuMCldOworICAgICAgICBb
d2luZG93IHNldE1pblNpemU6TlNNYWtlU2l6ZSgyODAuMGYsIDQ1MC4wZildOwogCiAgICAgICAg
IC8vIEtlZXAgcHJlZmVyZW5jZXMgc2VwYXJhdGUgZnJvbSB0aGUgcmVzdCBvZiB0aGUgY2xpZW50
LgogICAgICAgICAvLyBPbmUgcmVhc29uIHRoaXMgaXMgZ29vZCBpcyB0aGF0IGl0IGtlZXBzIHRo
ZSBpbnNwZWN0b3Igb3V0IG9mIGhpc3RvcnkgdmlhICJwcml2YXRlIGJyb3dzaW5nIi4KQEAgLTQx
NSw4ICs0MTUsOCBAQCBzdGF0aWMgTlNNYXBUYWJsZSAqbGFzdENoaWxkSWdub3JpbmdXaGl0CiAt
ICh2b2lkKXRyZWVWaWV3U2Nyb2xsVG86KGZsb2F0KW51bWJlcgogewogICAgIGZsb2F0IGJvdHRv
bSA9IE5TSGVpZ2h0KFtfcHJpdmF0ZS0+dHJlZU91dGxpbmVWaWV3IGZyYW1lXSkgLSBOU0hlaWdo
dChbX3ByaXZhdGUtPnRyZWVTY3JvbGxWaWV3IGRvY3VtZW50VmlzaWJsZVJlY3RdKTsKLSAgICBu
dW1iZXIgPSBNQVgoMC4wLCBNSU4oYm90dG9tLCBudW1iZXIpKTsKLSAgICBbW19wcml2YXRlLT50
cmVlU2Nyb2xsVmlldyBjb250ZW50Vmlld10gc2Nyb2xsVG9Qb2ludDpOU01ha2VQb2ludCgwLjAs
IG51bWJlcildOworICAgIG51bWJlciA9IE1BWCgwLjBmLCBNSU4oYm90dG9tLCBudW1iZXIpKTsK
KyAgICBbW19wcml2YXRlLT50cmVlU2Nyb2xsVmlldyBjb250ZW50Vmlld10gc2Nyb2xsVG9Qb2lu
dDpOU01ha2VQb2ludCgwLjBmLCBudW1iZXIpXTsKIH0KIAogLSAoZmxvYXQpdHJlZVZpZXdPZmZz
ZXRUb3AKQEAgLTc3Myw3ICs3NzMsNyBAQCBzdGF0aWMgTlNNYXBUYWJsZSAqbGFzdENoaWxkSWdu
b3JpbmdXaGl0CiAgICAgaWYgKCFfcHJpdmF0ZS0+d2ViVmlld0xvYWRlZCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgQ0dGbG9hdCByZWQgPSAwLjAsIGdyZWVuID0gMC4wLCBibHVlID0gMC4wOwor
ICAgIENHRmxvYXQgcmVkID0gMC4wZiwgZ3JlZW4gPSAwLjBmLCBibHVlID0gMC4wZjsKICAgICBO
U0NvbG9yICpjb2xvciA9IFtbTlNDb2xvciBhbHRlcm5hdGVTZWxlY3RlZENvbnRyb2xDb2xvcl0g
Y29sb3JVc2luZ0NvbG9yU3BhY2VOYW1lOk5TRGV2aWNlUkdCQ29sb3JTcGFjZV07CiAgICAgW2Nv
bG9yIGdldFJlZDomcmVkIGdyZWVuOiZncmVlbiBibHVlOiZibHVlIGFscGhhOk5VTExdOwogCkBA
IC04NjksNyArODY5LDcgQEAgc3RhdGljIE5TTWFwVGFibGUgKmxhc3RDaGlsZElnbm9yaW5nV2hp
dAogICAgIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IFthcmd1bWVudHMgb2JqZWN0Rm9yS2V5
OkAiV2ViUGx1Z0luQXR0cmlidXRlc0tleSJdOwogICAgIGlmIChbW2F0dHJpYnV0ZXMgb2JqZWN0
Rm9yS2V5OkAidHlwZSJdIGlzRXF1YWxUb1N0cmluZzpAImFwcGxpY2F0aW9uL3gtaW5zcGVjdG9y
LXRyZWUiXSkgewogICAgICAgICBpZiAoIV9wcml2YXRlLT50cmVlT3V0bGluZVZpZXcpIHsKLSAg
ICAgICAgICAgIF9wcml2YXRlLT50cmVlU2Nyb2xsVmlldyA9IFtbTlNTY3JvbGxWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMC4wLCAwLjAsIDI1MC4wLCAxMDAuMCldOworICAg
ICAgICAgICAgX3ByaXZhdGUtPnRyZWVTY3JvbGxWaWV3ID0gW1tOU1Njcm9sbFZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLjBmLCAwLjBmLCAyNTAuMGYsIDEwMC4wZildOwog
ICAgICAgICAgICAgW19wcml2YXRlLT50cmVlU2Nyb2xsVmlldyBzZXREcmF3c0JhY2tncm91bmQ6
Tk9dOwogICAgICAgICAgICAgW19wcml2YXRlLT50cmVlU2Nyb2xsVmlldyBzZXRCb3JkZXJUeXBl
Ok5TTm9Cb3JkZXJdOwogICAgICAgICAgICAgW19wcml2YXRlLT50cmVlU2Nyb2xsVmlldyBzZXRW
ZXJ0aWNhbFNjcm9sbGVyOk5PXTsKQEAgLTg4NiwxNSArODg2LDE1IEBAIHN0YXRpYyBOU01hcFRh
YmxlICpsYXN0Q2hpbGRJZ25vcmluZ1doaXQKICAgICAgICAgICAgIFtfcHJpdmF0ZS0+dHJlZU91
dGxpbmVWaWV3IHNlbmRBY3Rpb25PbjooTlNMZWZ0TW91c2VVcE1hc2sgfCBOU0xlZnRNb3VzZURv
d25NYXNrIHwgTlNMZWZ0TW91c2VEcmFnZ2VkTWFzayldOwogICAgICAgICAgICAgW19wcml2YXRl
LT50cmVlT3V0bGluZVZpZXcgc2V0Rm9jdXNSaW5nVHlwZTpOU0ZvY3VzUmluZ1R5cGVOb25lXTsK
ICAgICAgICAgICAgIFtfcHJpdmF0ZS0+dHJlZU91dGxpbmVWaWV3IHNldEF1dG9yZXNpemVzT3V0
bGluZUNvbHVtbjpOT107Ci0gICAgICAgICAgICBbX3ByaXZhdGUtPnRyZWVPdXRsaW5lVmlldyBz
ZXRSb3dIZWlnaHQ6MTUuMF07CisgICAgICAgICAgICBbX3ByaXZhdGUtPnRyZWVPdXRsaW5lVmll
dyBzZXRSb3dIZWlnaHQ6MTUuMGZdOwogICAgICAgICAgICAgW19wcml2YXRlLT50cmVlT3V0bGlu
ZVZpZXcgc2V0VGFyZ2V0OnNlbGZdOwogICAgICAgICAgICAgW19wcml2YXRlLT50cmVlT3V0bGlu
ZVZpZXcgc2V0RG91YmxlQWN0aW9uOkBzZWxlY3RvcihfZm9jdXNSb290Tm9kZTopXTsKLSAgICAg
ICAgICAgIFtfcHJpdmF0ZS0+dHJlZU91dGxpbmVWaWV3IHNldEluZGVudGF0aW9uUGVyTGV2ZWw6
MTIuMF07CisgICAgICAgICAgICBbX3ByaXZhdGUtPnRyZWVPdXRsaW5lVmlldyBzZXRJbmRlbnRh
dGlvblBlckxldmVsOjEyLjBmXTsKICAgICAgICAgICAgIFtfcHJpdmF0ZS0+dHJlZVNjcm9sbFZp
ZXcgc2V0RG9jdW1lbnRWaWV3Ol9wcml2YXRlLT50cmVlT3V0bGluZVZpZXddOwogCiAgICAgICAg
ICAgICBOU0NlbGwgKmhlYWRlckNlbGwgPSBbW05TQ2VsbCBhbGxvY10gaW5pdFRleHRDZWxsOkAi
Il07CiAgICAgICAgICAgICBOU0NlbGwgKmRhdGFDZWxsID0gW1tOU0NlbGwgYWxsb2NdIGluaXRU
ZXh0Q2VsbDpAIiJdOwotICAgICAgICAgICAgW2RhdGFDZWxsIHNldEZvbnQ6W05TRm9udCBzeXN0
ZW1Gb250T2ZTaXplOjExLjBdXTsKKyAgICAgICAgICAgIFtkYXRhQ2VsbCBzZXRGb250OltOU0Zv
bnQgc3lzdGVtRm9udE9mU2l6ZToxMS4wZl1dOwogCiAgICAgICAgICAgICBOU1RhYmxlQ29sdW1u
ICp0YWJsZUNvbHVtbiA9IFtbTlNUYWJsZUNvbHVtbiBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVy
OkAibm9kZSJdOwogICAgICAgICAgICAgW3RhYmxlQ29sdW1uIHNldEhlYWRlckNlbGw6aGVhZGVy
Q2VsbF07CkBAIC05NzMsOCArOTczLDggQEAgc3RhdGljIE5TTWFwVGFibGUgKmxhc3RDaGlsZEln
bm9yaW5nV2hpdAogICAgIGlmIChvdXRsaW5lVmlldyA9PSBfcHJpdmF0ZS0+dHJlZU91dGxpbmVW
aWV3ICYmIG5vZGUpIHsKICAgICAgICAgTlNTaGFkb3cgKnNoYWRvdyA9IFtbTlNTaGFkb3cgYWxs
b2NdIGluaXRdOwogICAgICAgICBbc2hhZG93IHNldFNoYWRvd0NvbG9yOltOU0NvbG9yIGJsYWNr
Q29sb3JdXTsKLSAgICAgICAgW3NoYWRvdyBzZXRTaGFkb3dCbHVyUmFkaXVzOjIuMF07Ci0gICAg
ICAgIFtzaGFkb3cgc2V0U2hhZG93T2Zmc2V0Ok5TTWFrZVNpemUoMi4wLC0yLjApXTsKKyAgICAg
ICAgW3NoYWRvdyBzZXRTaGFkb3dCbHVyUmFkaXVzOjIuMGZdOworICAgICAgICBbc2hhZG93IHNl
dFNoYWRvd09mZnNldDpOU01ha2VTaXplKDIuMGYsIC0yLjBmKV07CiAgICAgICAgIE5TTXV0YWJs
ZVBhcmFncmFwaFN0eWxlICpwYXJhID0gW1tOU1BhcmFncmFwaFN0eWxlIGRlZmF1bHRQYXJhZ3Jh
cGhTdHlsZV0gbXV0YWJsZUNvcHldOwogICAgICAgICBbcGFyYSBzZXRMaW5lQnJlYWtNb2RlOk5T
TGluZUJyZWFrQnlUcnVuY2F0aW5nVGFpbF07CiAgICAgICAgIApAQCAtOTgzLDcgKzk4Myw3IEBA
IHN0YXRpYyBOU01hcFRhYmxlICpsYXN0Q2hpbGRJZ25vcmluZ1doaXQKICAgICAgICAgW2F0dHJz
IHJlbGVhc2VdOwogCiAgICAgICAgIGlmIChbbm9kZSBoYXNDaGlsZE5vZGVzXSAmJiAhW291dGxp
bmVWaWV3IGlzSXRlbUV4cGFuZGVkOm5vZGVdKSB7Ci0gICAgICAgICAgICBhdHRycyA9IFtbTlNE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOltOU0NvbG9yIGNvbG9yV2l0
aENhbGlicmF0ZWRSZWQ6MS4wIGdyZWVuOjEuMCBibHVlOjEuMCBhbHBoYTowLjVdLCBOU0ZvcmVn
cm91bmRDb2xvckF0dHJpYnV0ZU5hbWUsIHNoYWRvdywgTlNTaGFkb3dBdHRyaWJ1dGVOYW1lLCBw
YXJhLCBOU1BhcmFncmFwaFN0eWxlQXR0cmlidXRlTmFtZSwgbmlsXTsKKyAgICAgICAgICAgIGF0
dHJzID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6W05TQ29s
b3IgY29sb3JXaXRoQ2FsaWJyYXRlZFJlZDoxLjBmIGdyZWVuOjEuMGYgYmx1ZToxLjBmIGFscGhh
OjAuNWZdLCBOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUsIHNoYWRvdywgTlNTaGFkb3dB
dHRyaWJ1dGVOYW1lLCBwYXJhLCBOU1BhcmFncmFwaFN0eWxlQXR0cmlidXRlTmFtZSwgbmlsXTsK
ICAgICAgICAgICAgIE5TQXR0cmlidXRlZFN0cmluZyAqcHJldmlldyA9IFtbTlNBdHRyaWJ1dGVk
U3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpbbm9kZSBfY29udGVudFByZXZpZXddIGF0dHJp
YnV0ZXM6YXR0cnNdOwogICAgICAgICAgICAgW3N0cmluZyBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5n
OnByZXZpZXddOwogICAgICAgICAgICAgW2F0dHJzIHJlbGVhc2VdOwpJbmRleDogV2ViS2l0L1dl
Ykluc3BlY3Rvci9XZWJJbnNwZWN0b3JPdXRsaW5lVmlldy5tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9XZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yT3V0bGluZVZpZXcubQkocmV2aXNpb24gMTU3NDMp
CisrKyBXZWJLaXQvV2ViSW5zcGVjdG9yL1dlYkluc3BlY3Rvck91dGxpbmVWaWV3Lm0JKHdvcmtp
bmcgY29weSkKQEAgLTQzLDggKzQzLDggQEAKIC0gKHZvaWQpX2hpZ2hsaWdodFJvdzooaW50KXJv
dyBjbGlwUmVjdDooTlNSZWN0KWNsaXAgewogICAgIE5TQ29sb3IgKnNlbGVjdGlvbkNvbG9yID0g
bmlsOwogICAgIGlmIChbW3NlbGYgd2luZG93XSBmaXJzdFJlc3BvbmRlcl0gPT0gc2VsZiAmJiBb
W3NlbGYgd2luZG93XSBpc0tleVdpbmRvd10pCi0gICAgICAgIHNlbGVjdGlvbkNvbG9yID0gW1tO
U0NvbG9yIGFsdGVybmF0ZVNlbGVjdGVkQ29udHJvbENvbG9yXSBjb2xvcldpdGhBbHBoYUNvbXBv
bmVudDowLjMzM107Ci0gICAgc2VsZWN0aW9uQ29sb3IgPSBbW05TQ29sb3IgYWx0ZXJuYXRlU2Vs
ZWN0ZWRDb250cm9sQ29sb3JdIGNvbG9yV2l0aEFscGhhQ29tcG9uZW50OjAuNDVdOworICAgICAg
ICBzZWxlY3Rpb25Db2xvciA9IFtbTlNDb2xvciBhbHRlcm5hdGVTZWxlY3RlZENvbnRyb2xDb2xv
cl0gY29sb3JXaXRoQWxwaGFDb21wb25lbnQ6MC4zMzNmXTsKKyAgICBzZWxlY3Rpb25Db2xvciA9
IFtbTlNDb2xvciBhbHRlcm5hdGVTZWxlY3RlZENvbnRyb2xDb2xvcl0gY29sb3JXaXRoQWxwaGFD
b21wb25lbnQ6MC40NWZdOwogCiAgICAgaWYgKFtzZWxmIG51bWJlck9mQ29sdW1uc10gPiAwKSB7
CiAgICAgICAgIE5TUmVjdCBoaWdobGlnaHQgPSBbc2VsZiByZWN0T2ZSb3c6cm93XTsKQEAgLTYx
LDE0ICs2MSwxNCBAQAogICAgICAgICAgICAgaWYgKFtOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50
Q29udGV4dERyYXdpbmdUb1NjcmVlbl0pIHsKICAgICAgICAgICAgICAgICBOU0JlemllclBhdGgg
KnBhdGggPSBbW05TQmV6aWVyUGF0aCBhbGxvY10gaW5pdF07CiAKLSAgICAgICAgICAgICAgICBm
bG9hdCByYWRpdXMgPSA2LjA7CisgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gNi4wZjsK
ICAgICAgICAgICAgICAgICBOU1JlY3QgaXJlY3QgPSBOU0luc2V0UmVjdChoaWdobGlnaHQsIHJh
ZGl1cywgcmFkaXVzKTsKICAgICAgICAgICAgICAgICBpZiAoIXNvbGlkKQotICAgICAgICAgICAg
ICAgICAgICBpcmVjdCA9IE5TSW5zZXRSZWN0KGlyZWN0LCAxLjAsIDEuMCk7Ci0gICAgICAgICAg
ICAgICAgW3BhdGggYXBwZW5kQmV6aWVyUGF0aFdpdGhBcmNXaXRoQ2VudGVyOk5TTWFrZVBvaW50
KE5TTWluWChpcmVjdCksIE5TTWluWShpcmVjdCkpIHJhZGl1czpyYWRpdXMgc3RhcnRBbmdsZTox
ODAuIGVuZEFuZ2xlOjI3MC5dOwotICAgICAgICAgICAgICAgIFtwYXRoIGFwcGVuZEJlemllclBh
dGhXaXRoQXJjV2l0aENlbnRlcjpOU01ha2VQb2ludChOU01heFgoaXJlY3QpLCBOU01pblkoaXJl
Y3QpKSByYWRpdXM6cmFkaXVzIHN0YXJ0QW5nbGU6MjcwLiBlbmRBbmdsZTozNjAuXTsKLSAgICAg
ICAgICAgICAgICBbcGF0aCBhcHBlbmRCZXppZXJQYXRoV2l0aEFyY1dpdGhDZW50ZXI6TlNNYWtl
UG9pbnQoTlNNYXhYKGlyZWN0KSwgTlNNYXhZKGlyZWN0KSkgcmFkaXVzOnJhZGl1cyBzdGFydEFu
Z2xlOjAuIGVuZEFuZ2xlOjkwLl07Ci0gICAgICAgICAgICAgICAgW3BhdGggYXBwZW5kQmV6aWVy
UGF0aFdpdGhBcmNXaXRoQ2VudGVyOk5TTWFrZVBvaW50KE5TTWluWChpcmVjdCksIE5TTWF4WShp
cmVjdCkpIHJhZGl1czpyYWRpdXMgc3RhcnRBbmdsZTo5MC4gZW5kQW5nbGU6MTgwLl07CisgICAg
ICAgICAgICAgICAgICAgIGlyZWN0ID0gTlNJbnNldFJlY3QoaXJlY3QsIDEuMGYsIDEuMGYpOwor
ICAgICAgICAgICAgICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoQXJjV2l0aENlbnRlcjpO
U01ha2VQb2ludChOU01pblgoaXJlY3QpLCBOU01pblkoaXJlY3QpKSByYWRpdXM6cmFkaXVzIHN0
YXJ0QW5nbGU6MTgwLjBmIGVuZEFuZ2xlOjI3MC4wZl07CisgICAgICAgICAgICAgICAgW3BhdGgg
YXBwZW5kQmV6aWVyUGF0aFdpdGhBcmNXaXRoQ2VudGVyOk5TTWFrZVBvaW50KE5TTWF4WChpcmVj
dCksIE5TTWluWShpcmVjdCkpIHJhZGl1czpyYWRpdXMgc3RhcnRBbmdsZToyNzAuMGYgZW5kQW5n
bGU6MzYwLjBmXTsKKyAgICAgICAgICAgICAgICBbcGF0aCBhcHBlbmRCZXppZXJQYXRoV2l0aEFy
Y1dpdGhDZW50ZXI6TlNNYWtlUG9pbnQoTlNNYXhYKGlyZWN0KSwgTlNNYXhZKGlyZWN0KSkgcmFk
aXVzOnJhZGl1cyBzdGFydEFuZ2xlOjAuMGYgZW5kQW5nbGU6OTAuMGZdOworICAgICAgICAgICAg
ICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoQXJjV2l0aENlbnRlcjpOU01ha2VQb2ludChO
U01pblgoaXJlY3QpLCBOU01heFkoaXJlY3QpKSByYWRpdXM6cmFkaXVzIHN0YXJ0QW5nbGU6OTAu
MGYgZW5kQW5nbGU6MTgwLjBmXTsKICAgICAgICAgICAgICAgICBbcGF0aCBjbG9zZVBhdGhdOwog
CiAgICAgICAgICAgICAgICAgTlNSZWN0Q2xpcChjbGlwKTsKQEAgLTc2LDcgKzc2LDcgQEAKICAg
ICAgICAgICAgICAgICBpZiAoc29saWQpIHsKICAgICAgICAgICAgICAgICAgICAgW3BhdGggZmls
bF07CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgW3BhdGgg
c2V0TGluZVdpZHRoOjIuMF07CisgICAgICAgICAgICAgICAgICAgIFtwYXRoIHNldExpbmVXaWR0
aDoyLjBmXTsKICAgICAgICAgICAgICAgICAgICAgW3BhdGggc3Ryb2tlXTsKICAgICAgICAgICAg
ICAgICB9CiAKSW5kZXg6IFdlYktpdC9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodC5tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodC5tCShyZXZp
c2lvbiAxNTc0MykKKysrIFdlYktpdC9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodC5tCSh3
b3JraW5nIGNvcHkpCkBAIC01NCw4ICs1NCw4IEBAIE5TU3RyaW5nICpXZWJOb2RlSGlnaGxpZ2h0
RXhwaXJlZE5vdGlmaWMKICAgICB9CiAKICAgICAvLyBhZGp1c3Qgc2l6ZSBhbmQgcG9zaXRpb24g
Zm9yIHJlY3QgcGFkZGluZyB0aGF0IHRoZSB2aWV3IGFkZHMKLSAgICBib3VuZHMub3JpZ2luLnkg
LT0gMy4wOwotICAgIGJvdW5kcy5vcmlnaW4ueCAtPSAzLjA7CisgICAgYm91bmRzLm9yaWdpbi55
IC09IDMuMGY7CisgICAgYm91bmRzLm9yaWdpbi54IC09IDMuMGY7CiAgICAgYm91bmRzLnNpemUg
PSBbX3dlYk5vZGVIaWdobGlnaHRWaWV3IGZyYW1lXS5zaXplOwogCiAgICAgTlNSZWN0IHdpbmRv
d0JvdW5kcyA9IFt2aWV3IGNvbnZlcnRSZWN0OmJvdW5kcyB0b1ZpZXc6bmlsXTsKSW5kZXg6IFdl
YktpdC9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodFZpZXcubQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3Lm0JKHJldmlzaW9uIDE1NzQz
KQorKysgV2ViS2l0L1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5tCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSwxMSArMzUsMTEgQEAKIHsKICAgICBOU0JlemllclBhdGggKnBhdGggPSBb
W05TQmV6aWVyUGF0aCBhbGxvY10gaW5pdF07CiAKLSAgICBOU1JlY3QgaXJlY3QgPSBOU0luc2V0
UmVjdCggcmVjdCwgcmFkaXVzLCByYWRpdXMgKTsKLSAgICBbcGF0aCBhcHBlbmRCZXppZXJQYXRo
V2l0aEFyY1dpdGhDZW50ZXI6TlNNYWtlUG9pbnQoTlNNaW5YKGlyZWN0KSwgTlNNaW5ZKGlyZWN0
KSkgcmFkaXVzOnJhZGl1cyBzdGFydEFuZ2xlOjE4MC4gZW5kQW5nbGU6MjcwLl07Ci0gICAgW3Bh
dGggYXBwZW5kQmV6aWVyUGF0aFdpdGhBcmNXaXRoQ2VudGVyOk5TTWFrZVBvaW50KE5TTWF4WChp
cmVjdCksIE5TTWluWShpcmVjdCkpIHJhZGl1czpyYWRpdXMgc3RhcnRBbmdsZToyNzAuIGVuZEFu
Z2xlOjM2MC5dOwotICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoQXJjV2l0aENlbnRlcjpO
U01ha2VQb2ludChOU01heFgoaXJlY3QpLCBOU01heFkoaXJlY3QpKSByYWRpdXM6cmFkaXVzIHN0
YXJ0QW5nbGU6MC4gZW5kQW5nbGU6OTAuXTsKLSAgICBbcGF0aCBhcHBlbmRCZXppZXJQYXRoV2l0
aEFyY1dpdGhDZW50ZXI6TlNNYWtlUG9pbnQoTlNNaW5YKGlyZWN0KSwgTlNNYXhZKGlyZWN0KSkg
cmFkaXVzOnJhZGl1cyBzdGFydEFuZ2xlOjkwLiBlbmRBbmdsZToxODAuXTsKKyAgICBOU1JlY3Qg
aXJlY3QgPSBOU0luc2V0UmVjdChyZWN0LCByYWRpdXMsIHJhZGl1cyk7CisgICAgW3BhdGggYXBw
ZW5kQmV6aWVyUGF0aFdpdGhBcmNXaXRoQ2VudGVyOk5TTWFrZVBvaW50KE5TTWluWChpcmVjdCks
IE5TTWluWShpcmVjdCkpIHJhZGl1czpyYWRpdXMgc3RhcnRBbmdsZToxODAuMGYgZW5kQW5nbGU6
MjcwLjBmXTsKKyAgICBbcGF0aCBhcHBlbmRCZXppZXJQYXRoV2l0aEFyY1dpdGhDZW50ZXI6TlNN
YWtlUG9pbnQoTlNNYXhYKGlyZWN0KSwgTlNNaW5ZKGlyZWN0KSkgcmFkaXVzOnJhZGl1cyBzdGFy
dEFuZ2xlOjI3MC4wZiBlbmRBbmdsZTozNjAuMGZdOworICAgIFtwYXRoIGFwcGVuZEJlemllclBh
dGhXaXRoQXJjV2l0aENlbnRlcjpOU01ha2VQb2ludChOU01heFgoaXJlY3QpLCBOU01heFkoaXJl
Y3QpKSByYWRpdXM6cmFkaXVzIHN0YXJ0QW5nbGU6MC4wZiBlbmRBbmdsZTo5MC4wZl07CisgICAg
W3BhdGggYXBwZW5kQmV6aWVyUGF0aFdpdGhBcmNXaXRoQ2VudGVyOk5TTWFrZVBvaW50KE5TTWlu
WChpcmVjdCksIE5TTWF4WShpcmVjdCkpIHJhZGl1czpyYWRpdXMgc3RhcnRBbmdsZTo5MC4wZiBl
bmRBbmdsZToxODAuMGZdOwogICAgIFtwYXRoIGNsb3NlUGF0aF07CiAKICAgICByZXR1cm4gW3Bh
dGggYXV0b3JlbGVhc2VdOwpAQCAtNjAsMTQgKzYwLDE0IEBACiAKICAgICBpZihbcmVjdHMgY291
bnRdID09IDEpIHsKICAgICAgICAgTlNWYWx1ZSAqdmFsdWUgPSAoTlNWYWx1ZSAqKVtyZWN0cyBv
YmplY3RBdEluZGV4OjBdOwotICAgICAgICByZWN0ID0gTlNJbnNldFJlY3QoW3ZhbHVlIHJlY3RW
YWx1ZV0sIC0xLjAsIC0xLjApOworICAgICAgICByZWN0ID0gTlNJbnNldFJlY3QoW3ZhbHVlIHJl
Y3RWYWx1ZV0sIC0xLjBmLCAtMS4wZik7CiAgICAgICAgIHJlY3QgPSBOU0ludGVyc2VjdGlvblJl
Y3QocmVjdCwgdmlzaWJsZVJlY3QpOwogICAgICAgICBpZiAoIU5TSXNFbXB0eVJlY3QocmVjdCkp
Ci0gICAgICAgICAgICBwYXRoID0gW1tzZWxmIHJvdW5kZWRSZWN0OnJlY3Qgd2l0aFJhZGl1czoz
LjBdIHJldGFpbl07CisgICAgICAgICAgICBwYXRoID0gW1tzZWxmIHJvdW5kZWRSZWN0OnJlY3Qg
d2l0aFJhZGl1czozLjBmXSByZXRhaW5dOwogCiAgICAgICAgIC8vIHNoaWZ0IGV2ZXJ5dGhpbmcg
dG8gdGhlIGNvcm5lcgogICAgICAgICBOU0FmZmluZVRyYW5zZm9ybSAqdHJhbnNmb3JtID0gW1tO
U0FmZmluZVRyYW5zZm9ybSBhbGxvY10gaW5pdF07Ci0gICAgICAgIFt0cmFuc2Zvcm0gdHJhbnNs
YXRlWEJ5OihOU01pblgocmVjdCkgKiAtMS4wKSArIDIuNSB5Qnk6KE5TTWluWShyZWN0KSAqIC0x
LjApICsgMi41XTsKKyAgICAgICAgW3RyYW5zZm9ybSB0cmFuc2xhdGVYQnk6KE5TTWluWChyZWN0
KSAqIC0xLjBmKSArIDIuNWYgeUJ5OihOU01pblkocmVjdCkgKiAtMS4wZikgKyAyLjVmXTsKICAg
ICAgICAgW3BhdGggdHJhbnNmb3JtVXNpbmdBZmZpbmVUcmFuc2Zvcm06dHJhbnNmb3JtXTsKICAg
ICAgICAgW3N0cmFpZ2h0UGF0aCB0cmFuc2Zvcm1Vc2luZ0FmZmluZVRyYW5zZm9ybTp0cmFuc2Zv
cm1dOwogICAgICAgICBbdHJhbnNmb3JtIHJlbGVhc2VdOwpAQCAtODQsNyArODQsNyBAQAogICAg
ICAgICAgICAgcmVjdCA9IE5TSW50ZXJzZWN0aW9uUmVjdChbdmFsdWUgcmVjdFZhbHVlXSwgdmlz
aWJsZVJlY3QpOwogICAgICAgICAgICAgaWYgKCFOU0lzRW1wdHlSZWN0KHJlY3QpKSB7CiAgICAg
ICAgICAgICAgICAgW3N0cmFpZ2h0UGF0aCBhcHBlbmRCZXppZXJQYXRoV2l0aFJlY3Q6cmVjdF07
Ci0gICAgICAgICAgICAgICAgW3BhdGggYXBwZW5kQmV6aWVyUGF0aDpbc2VsZiByb3VuZGVkUmVj
dDpyZWN0IHdpdGhSYWRpdXM6My4wXV07CisgICAgICAgICAgICAgICAgW3BhdGggYXBwZW5kQmV6
aWVyUGF0aDpbc2VsZiByb3VuZGVkUmVjdDpyZWN0IHdpdGhSYWRpdXM6My4wZl1dOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAKQEAgLTk5LDE0ICs5OSwxNCBAQAogCiAgICAgICAgIC8vIG11
bHRpcGxlIHJlY3RzIHdlIGdldCBmcm9tIFdlYkNvcmUgbmVlZCBmbGlwcGVkIHRvIHNob3cgdXAg
Y29ycmVjdGx5CiAgICAgICAgIE5TQWZmaW5lVHJhbnNmb3JtICp0cmFuc2Zvcm0gPSBbW05TQWZm
aW5lVHJhbnNmb3JtIGFsbG9jXSBpbml0XTsKLSAgICAgICAgW3RyYW5zZm9ybSBzY2FsZVhCeTox
LjAgeUJ5Oi0xLjBdOworICAgICAgICBbdHJhbnNmb3JtIHNjYWxlWEJ5OjEuMGYgeUJ5Oi0xLjBm
XTsKICAgICAgICAgW3BhdGggdHJhbnNmb3JtVXNpbmdBZmZpbmVUcmFuc2Zvcm06dHJhbnNmb3Jt
XTsKICAgICAgICAgW3N0cmFpZ2h0UGF0aCB0cmFuc2Zvcm1Vc2luZ0FmZmluZVRyYW5zZm9ybTp0
cmFuc2Zvcm1dOwogICAgICAgICBbdHJhbnNmb3JtIHJlbGVhc2VdOwogCiAgICAgICAgIC8vIHNo
aWZ0IGV2ZXJ5dGhpbmcgdG8gdGhlIGNvcm5lcgogICAgICAgICB0cmFuc2Zvcm0gPSBbW05TQWZm
aW5lVHJhbnNmb3JtIGFsbG9jXSBpbml0XTsKLSAgICAgICAgW3RyYW5zZm9ybSB0cmFuc2xhdGVY
Qnk6KE5TTWluWChyZWN0KSAqIC0xLjApICsgMi41IHlCeTpOU01heFkocmVjdCkgKyAyLjVdOwor
ICAgICAgICBbdHJhbnNmb3JtIHRyYW5zbGF0ZVhCeTooTlNNaW5YKHJlY3QpICogLTEuMGYpICsg
Mi41ZiB5Qnk6TlNNYXhZKHJlY3QpICsgMi41Zl07CiAgICAgICAgIFtwYXRoIHRyYW5zZm9ybVVz
aW5nQWZmaW5lVHJhbnNmb3JtOnRyYW5zZm9ybV07CiAgICAgICAgIFtzdHJhaWdodFBhdGggdHJh
bnNmb3JtVXNpbmdBZmZpbmVUcmFuc2Zvcm06dHJhbnNmb3JtXTsKICAgICAgICAgW3RyYW5zZm9y
bSByZWxlYXNlXTsKQEAgLTEyMyw4ICsxMjMsOCBAQAogCiAgICAgLy8gbWFrZSB0aGUgZHJhd2lu
ZyBhcmVhIGxhcmdlciBmb3IgdGhlIGZvY3VzIHJpbmcgYmx1cgogICAgIHJlY3QgPSBbcGF0aCBi
b3VuZHNdOwotICAgIHJlY3Quc2l6ZS53aWR0aCArPSA1LjA7Ci0gICAgcmVjdC5zaXplLmhlaWdo
dCArPSA1LjA7CisgICAgcmVjdC5zaXplLndpZHRoICs9IDUuMGY7CisgICAgcmVjdC5zaXplLmhl
aWdodCArPSA1LjBmOwogICAgIFtzZWxmIHNldEZyYW1lU2l6ZTpyZWN0LnNpemVdOwogCiAgICAg
Ly8gZHJhdyBpbnRvIGFuIGltYWdlCkBAIC0xMzQsNyArMTM0LDcgQEAKIAogICAgIGlmIChzdHJh
aWdodFBhdGgpIHsKICAgICAgICAgW1tOU0NvbG9yIHJlZENvbG9yXSBzZXRdOwotICAgICAgICBb
cGF0aCBzZXRMaW5lV2lkdGg6NC4wXTsKKyAgICAgICAgW3BhdGggc2V0TGluZVdpZHRoOjQuMGZd
OwogICAgICAgICBbcGF0aCBzdHJva2VdOwogCiAgICAgICAgIC8vIGNsZWFyIHRoZSBjZW50ZXIg
dG8gZWxpbWluYXRlIHRoaWNrIGlubmVyIHN0cm9rZXMgZm9yIG92ZXJsYXBwaW5nIHJlY3RzCkBA
IC0xNDMsMTIgKzE0MywxMiBAQAogCiAgICAgICAgIC8vIHN0cm9rZSB0aGUgc3RyYWlnaHQgbGlu
ZSBwYXRoIHdpdGggYSBsaWdodCBjb2xvciB0byBzaG93IGFueSBpbm5lciByZWN0cwogICAgICAg
ICBbW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSBzZXRDb21wb3NpdGluZ09wZXJh
dGlvbjpOU0NvbXBvc2l0ZURlc3RpbmF0aW9uT3Zlcl07Ci0gICAgICAgIFtbW05TQ29sb3IgcmVk
Q29sb3JdIGNvbG9yV2l0aEFscGhhQ29tcG9uZW50OjAuNl0gc2V0XTsKLSAgICAgICAgW3N0cmFp
Z2h0UGF0aCBzZXRMaW5lV2lkdGg6MS4wXTsKKyAgICAgICAgW1tbTlNDb2xvciByZWRDb2xvcl0g
Y29sb3JXaXRoQWxwaGFDb21wb25lbnQ6MC42Zl0gc2V0XTsKKyAgICAgICAgW3N0cmFpZ2h0UGF0
aCBzZXRMaW5lV2lkdGg6MS4wZl07CiAgICAgICAgIFtzdHJhaWdodFBhdGggc3Ryb2tlXTsKICAg
ICB9IGVsc2UgewogICAgICAgICBbW05TQ29sb3IgcmVkQ29sb3JdIHNldF07Ci0gICAgICAgIFtw
YXRoIHNldExpbmVXaWR0aDoyLjBdOworICAgICAgICBbcGF0aCBzZXRMaW5lV2lkdGg6Mi4wZl07
CiAgICAgICAgIFtwYXRoIHN0cm9rZV07CiAgICAgfQogCkBAIC0xODAsNiArMTgwLDYgQEAKICAg
ICBlbHNlIGlmIChhbHBoYSA8IDAuMCkKICAgICAgICAgYWxwaGEgPSAwLjA7CiAKLSAgICBbX2hp
Z2hsaWdodFJpbmdJbWFnZSBkcmF3SW5SZWN0OnJlY3QgZnJvbVJlY3Q6cmVjdCBvcGVyYXRpb246
TlNDb21wb3NpdGVDb3B5IGZyYWN0aW9uOmFscGhhXTsKKyAgICBbX2hpZ2hsaWdodFJpbmdJbWFn
ZSBkcmF3SW5SZWN0OnJlY3QgZnJvbVJlY3Q6cmVjdCBvcGVyYXRpb246TlNDb21wb3NpdGVDb3B5
IGZyYWN0aW9uOihmbG9hdClhbHBoYV07CiB9CiBAZW5kCkluZGV4OiBXZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTc0MykKKysrIFdlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTg5Miw2ICsxODky
LDcgQEAKIAkJCQkJIi1XYmFkLWZ1bmN0aW9uLWNhc3QiLAogCQkJCQkiLVdtaXNzaW5nLWRlY2xh
cmF0aW9ucyIsCiAJCQkJCSItV25lc3RlZC1leHRlcm5zIiwKKwkJCQkJIi1Xc2hvcnRlbi02NC10
by0zMiIsCiAJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CkBAIC0xOTMyLDYgKzE5MzMs
NyBAQAogCQkJCQkiLVdiYWQtZnVuY3Rpb24tY2FzdCIsCiAJCQkJCSItV21pc3NpbmctZGVjbGFy
YXRpb25zIiwKIAkJCQkJIi1XbmVzdGVkLWV4dGVybnMiLAorCQkJCQkiLVdzaG9ydGVuLTY0LXRv
LTMyIiwKIAkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwpAQCAtMTk2OCw2ICsxOTcw
LDcgQEAKIAkJCQkJIi1XYmFkLWZ1bmN0aW9uLWNhc3QiLAogCQkJCQkiLVdtaXNzaW5nLWRlY2xh
cmF0aW9ucyIsCiAJCQkJCSItV25lc3RlZC1leHRlcm5zIiwKKwkJCQkJIi1Xc2hvcnRlbi02NC10
by0zMiIsCiAJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gUHJvZHVjdGlvbjsKSW5kZXg6IFdlYktp
dC9XZWJWaWV3L1dlYkZyYW1lLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYlZpZXcvV2ViRnJh
bWUubQkocmV2aXNpb24gMTU3NDMpCisrKyBXZWJLaXQvV2ViVmlldy9XZWJGcmFtZS5tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDcyLDcgKzEwNzIsNyBAQCBzdGF0aWMgQ0ZBYnNvbHV0ZVRpbWUgX3Rp
bWVPZkxhc3RDb21wbGV0CiAgICAgICAgICAgICBpZCBpZGVudGlmaWVyOwogICAgICAgICAgICAg
TlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW1tOU1VSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJM
OltyZXNwb25zZSBVUkxdXTsKICAgICAgICAgICAgIFtzZWxmIF9yZXF1ZXN0RnJvbURlbGVnYXRl
Rm9yUmVxdWVzdDpyZXF1ZXN0IGlkZW50aWZpZXI6JmlkZW50aWZpZXIgZXJyb3I6JmVycm9yXTsK
LSAgICAgICAgICAgIFtzZWxmIF9zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlc1dpdGhJZGVu
dGlmaWVyOmlkZW50aWZpZXIgcmVzcG9uc2U6cmVzcG9uc2UgbGVuZ3RoOltyZXNwb25zZSBleHBl
Y3RlZENvbnRlbnRMZW5ndGhdIGVycm9yOmVycm9yXTsKKyAgICAgICAgICAgIFtzZWxmIF9zZW5k
UmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlc1dpdGhJZGVudGlmaWVyOmlkZW50aWZpZXIgcmVzcG9u
c2U6cmVzcG9uc2UgbGVuZ3RoOih1bnNpZ25lZClbcmVzcG9uc2UgZXhwZWN0ZWRDb250ZW50TGVu
Z3RoXSBlcnJvcjplcnJvcl07CiAgICAgICAgICAgICBbcmVxdWVzdCByZWxlYXNlXTsKICAgICAg
ICAgfQogICAgICAgICAKSW5kZXg6IFdlYktpdC9XZWJWaWV3L1dlYkZyYW1lVmlldy5tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9XZWJWaWV3L1dlYkZyYW1lVmlldy5tCShyZXZpc2lvbiAxNTc0MykK
KysrIFdlYktpdC9XZWJWaWV3L1dlYkZyYW1lVmlldy5tCSh3b3JraW5nIGNvcHkpCkBAIC0zMzMs
MTQgKzMzMywxNCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkVHlwZXNGcm9tQ2xhc3MoTlNNCiAg
ICAgCiAgICAgX3ByaXZhdGUgPSBbW1dlYkZyYW1lVmlld1ByaXZhdGUgYWxsb2NdIGluaXRdOwog
Ci0gICAgV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3ICpzY3JvbGxWaWV3ICA9IFtbV2ViRHluYW1p
Y1Njcm9sbEJhcnNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwwLGZyYW1l
LnNpemUud2lkdGgsZnJhbWUuc2l6ZS5oZWlnaHQpXTsKKyAgICBXZWJEeW5hbWljU2Nyb2xsQmFy
c1ZpZXcgKnNjcm9sbFZpZXcgID0gW1tXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLjBmLCAwLjBmLCBmcmFtZS5zaXplLndpZHRoLCBmcmFt
ZS5zaXplLmhlaWdodCldOwogICAgIF9wcml2YXRlLT5mcmFtZVNjcm9sbFZpZXcgPSBzY3JvbGxW
aWV3OwogICAgIFtzY3JvbGxWaWV3IHNldENvbnRlbnRWaWV3OltbW1dlYkNsaXBWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOltzY3JvbGxWaWV3IGJvdW5kc11dIGF1dG9yZWxlYXNlXV07CiAgICAg
W3Njcm9sbFZpZXcgc2V0RHJhd3NCYWNrZ3JvdW5kOk5PXTsKICAgICBbc2Nyb2xsVmlldyBzZXRI
YXNWZXJ0aWNhbFNjcm9sbGVyOk5PXTsKICAgICBbc2Nyb2xsVmlldyBzZXRIYXNIb3Jpem9udGFs
U2Nyb2xsZXI6Tk9dOwogICAgIFtzY3JvbGxWaWV3IHNldEF1dG9yZXNpemluZ01hc2s6TlNWaWV3
V2lkdGhTaXphYmxlIHwgTlNWaWV3SGVpZ2h0U2l6YWJsZV07Ci0gICAgW3Njcm9sbFZpZXcgc2V0
TGluZVNjcm9sbDo0MC4wXTsKKyAgICBbc2Nyb2xsVmlldyBzZXRMaW5lU2Nyb2xsOjQwLjBmXTsK
ICAgICBbc2VsZiBhZGRTdWJ2aWV3OnNjcm9sbFZpZXddOwogICAgIC8vIGRvbid0IGNhbGwgb3Vy
IG92ZXJyaWRkZW4gdmVyc2lvbiBoZXJlOyB3ZSBuZWVkIHRvIG1ha2UgdGhlIHN0YW5kYXJkIE5T
VmlldyBsaW5rIGJldHdlZW4gdXMKICAgICAvLyBhbmQgb3VyIHN1YnZpZXcgc28gdGhhdCBwcmV2
aW91c0tleVZpZXcgYW5kIHByZXZpb3VzVmFsaWRLZXlWaWV3IHdvcmsgYXMgZXhwZWN0ZWQuIFRo
aXMgd29ya3MKSW5kZXg6IFdlYktpdC9XZWJWaWV3L1dlYkhUTUxWaWV3Lm0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L1dlYlZpZXcvV2ViSFRNTFZpZXcubQkocmV2aXNpb24gMTU3NDMpCisrKyBXZWJL
aXQvV2ViVmlldy9XZWJIVE1MVmlldy5tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsMjYgKzEyMSwy
NiBAQCB2b2lkIF9OU1Jlc2V0S2lsbFJpbmdPcGVyYXRpb25GbGFnKHZvaWQpCiAvLyBwcmludCBp
biBJRSBhbmQgQ2FtaW5vLiBUaGlzIGxldHMgdGhlbSB1c2UgZmV3ZXIgc2hlZXRzIHRoYW4gdGhl
eQogLy8gd291bGQgb3RoZXJ3aXNlLCB3aGljaCBpcyBwcmVzdW1hYmx5IHdoeSBvdGhlciBicm93
c2VycyBkbyB0aGlzLgogLy8gV2lkZSBwYWdlcyB3aWxsIGJlIHNjYWxlZCBkb3duIG1vcmUgdGhh
biB0aGlzLgotI2RlZmluZSBQcmludGluZ01pbmltdW1TaHJpbmtGYWN0b3IgICAgIDEuMjUKKyNk
ZWZpbmUgUHJpbnRpbmdNaW5pbXVtU2hyaW5rRmFjdG9yICAgICAxLjI1ZgogCiAvLyBUaGlzIG51
bWJlciBkZXRlcm1pbmVzIGhvdyBzbWFsbCB3ZSBhcmUgd2lsbGluZyB0byByZWR1Y2UgdGhlIHBh
Z2UgY29udGVudAogLy8gaW4gb3JkZXIgdG8gYWNjb21tb2RhdGUgdGhlIHdpZGVzdCBsaW5lLiBJ
ZiB0aGUgcGFnZSB3b3VsZCBoYXZlIHRvIGJlCiAvLyByZWR1Y2VkIHNtYWxsZXIgdG8gbWFrZSB0
aGUgd2lkZXN0IGxpbmUgZml0LCB3ZSBqdXN0IGNsaXAgaW5zdGVhZCAodGhpcwogLy8gYmVoYXZp
b3IgbWF0Y2hlcyBNYWNJRSBhbmQgTW96aWxsYSwgYXQgbGVhc3QpCi0jZGVmaW5lIFByaW50aW5n
TWF4aW11bVNocmlua0ZhY3RvciAgICAgMi4wCisjZGVmaW5lIFByaW50aW5nTWF4aW11bVNocmlu
a0ZhY3RvciAgICAgMi4wZgogCi0jZGVmaW5lIEFVVE9TQ1JPTExfSU5URVJWQUwgICAgICAgICAg
ICAgMC4xCisjZGVmaW5lIEFVVE9TQ1JPTExfSU5URVJWQUwgICAgICAgICAgICAgMC4xZgogCi0j
ZGVmaW5lIERSQUdfTEFCRUxfQk9SREVSX1ggICAgICAgICAgICAgNC4wCi0jZGVmaW5lIERSQUdf
TEFCRUxfQk9SREVSX1kgICAgICAgICAgICAgMi4wCi0jZGVmaW5lIERSQUdfTEFCRUxfUkFESVVT
ICAgICAgICAgICAgICAgNS4wCi0jZGVmaW5lIERSQUdfTEFCRUxfQk9SREVSX1lfT0ZGU0VUICAg
ICAgICAgICAgICAyLjAKKyNkZWZpbmUgRFJBR19MQUJFTF9CT1JERVJfWCAgICAgICAgICAgICA0
LjBmCisjZGVmaW5lIERSQUdfTEFCRUxfQk9SREVSX1kgICAgICAgICAgICAgMi4wZgorI2RlZmlu
ZSBEUkFHX0xBQkVMX1JBRElVUyAgICAgICAgICAgICAgIDUuMGYKKyNkZWZpbmUgRFJBR19MQUJF
TF9CT1JERVJfWV9PRkZTRVQgICAgICAgICAgICAgIDIuMGYKIAotI2RlZmluZSBNSU5fRFJBR19M
QUJFTF9XSURUSF9CRUZPUkVfQ0xJUCAgICAgICAgMTIwLjAKLSNkZWZpbmUgTUFYX0RSQUdfTEFC
RUxfV0lEVEggICAgICAgICAgICAgICAgICAgIDMyMC4wCisjZGVmaW5lIE1JTl9EUkFHX0xBQkVM
X1dJRFRIX0JFRk9SRV9DTElQICAgICAgICAxMjAuMGYKKyNkZWZpbmUgTUFYX0RSQUdfTEFCRUxf
V0lEVEggICAgICAgICAgICAgICAgICAgIDMyMC4wZgogCi0jZGVmaW5lIERSQUdfTElOS19MQUJF
TF9GT05UX1NJWkUgICAxMS4wCi0jZGVmaW5lIERSQUdfTElOS19VUkxfRk9OVF9TSVpFICAgMTAu
MAorI2RlZmluZSBEUkFHX0xJTktfTEFCRUxfRk9OVF9TSVpFICAgMTEuMGYKKyNkZWZpbmUgRFJB
R19MSU5LX1VSTF9GT05UX1NJWkUgICAxMC4wZgogCiAvLyBBbnkgbm9uLXplcm8gdmFsdWUgd2ls
bCBkbywgYnV0IHVzaW5nIHNvbWV0aGluZyByZWNvZ25pemFibGUgbWlnaHQgaGVscCB1cyBkZWJ1
ZyBzb21lIGRheS4KICNkZWZpbmUgVFJBQ0tJTkdfUkVDVF9UQUcgMHhCQURGQUNFCkBAIC0xMjQ3
LDQ4ICsxMjQ3LDQ4IEBAIHN0YXRpYyBXZWJIVE1MVmlldyAqbGFzdEhpdFZpZXcgPSBuaWw7CiAg
ICAgfQogICAgIAogICAgIE5TU2l6ZSBpbWFnZVNpemUsIHVybFN0cmluZ1NpemU7Ci0gICAgaW1h
Z2VTaXplLndpZHRoID0gbGFiZWxTaXplLndpZHRoICsgRFJBR19MQUJFTF9CT1JERVJfWCAqIDI7
Ci0gICAgaW1hZ2VTaXplLmhlaWdodCA9IGxhYmVsU2l6ZS5oZWlnaHQgKyBEUkFHX0xBQkVMX0JP
UkRFUl9ZICogMjsKKyAgICBpbWFnZVNpemUud2lkdGggPSBsYWJlbFNpemUud2lkdGggKyBEUkFH
X0xBQkVMX0JPUkRFUl9YICogMi4wZjsKKyAgICBpbWFnZVNpemUuaGVpZ2h0ID0gbGFiZWxTaXpl
LmhlaWdodCArIERSQUdfTEFCRUxfQk9SREVSX1kgKiAyLjBmOwogICAgIGlmIChkcmF3VVJMU3Ry
aW5nKSB7CiAgICAgICAgIHVybFN0cmluZ1NpemUud2lkdGggPSBbdXJsU3RyaW5nIF93ZWJfd2lk
dGhXaXRoRm9udDogdXJsRm9udF07CiAgICAgICAgIHVybFN0cmluZ1NpemUuaGVpZ2h0ID0gW3Vy
bEZvbnQgYXNjZW5kZXJdIC0gW3VybEZvbnQgZGVzY2VuZGVyXTsKICAgICAgICAgaW1hZ2VTaXpl
LmhlaWdodCArPSB1cmxTdHJpbmdTaXplLmhlaWdodDsKICAgICAgICAgaWYgKHVybFN0cmluZ1Np
emUud2lkdGggPiBNQVhfRFJBR19MQUJFTF9XSURUSCkgewotICAgICAgICAgICAgaW1hZ2VTaXpl
LndpZHRoID0gTUFYKE1BWF9EUkFHX0xBQkVMX1dJRFRIICsgRFJBR19MQUJFTF9CT1JERVJfWCAq
IDIsIE1JTl9EUkFHX0xBQkVMX1dJRFRIX0JFRk9SRV9DTElQKTsKKyAgICAgICAgICAgIGltYWdl
U2l6ZS53aWR0aCA9IE1BWChNQVhfRFJBR19MQUJFTF9XSURUSCArIERSQUdfTEFCRUxfQk9SREVS
X1ggKiAyLjBmLCBNSU5fRFJBR19MQUJFTF9XSURUSF9CRUZPUkVfQ0xJUCk7CiAgICAgICAgICAg
ICBjbGlwVVJMU3RyaW5nID0gWUVTOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaW1h
Z2VTaXplLndpZHRoID0gTUFYKGxhYmVsU2l6ZS53aWR0aCArIERSQUdfTEFCRUxfQk9SREVSX1gg
KiAyLCB1cmxTdHJpbmdTaXplLndpZHRoICsgRFJBR19MQUJFTF9CT1JERVJfWCAqIDIpOworICAg
ICAgICAgICAgaW1hZ2VTaXplLndpZHRoID0gTUFYKGxhYmVsU2l6ZS53aWR0aCArIERSQUdfTEFC
RUxfQk9SREVSX1ggKiAyLjBmLCB1cmxTdHJpbmdTaXplLndpZHRoICsgRFJBR19MQUJFTF9CT1JE
RVJfWCAqIDIuMGYpOwogICAgICAgICB9CiAgICAgfQogICAgIE5TSW1hZ2UgKmRyYWdJbWFnZSA9
IFtbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoU2l6ZTogaW1hZ2VTaXplXSBhdXRvcmVsZWFzZV07
CiAgICAgW2RyYWdJbWFnZSBsb2NrRm9jdXNdOwogICAgIAotICAgIFtbTlNDb2xvciBjb2xvcldp
dGhDYWxpYnJhdGVkUmVkOiAwLjcgZ3JlZW46IDAuNyBibHVlOiAwLjcgYWxwaGE6IDAuOF0gc2V0
XTsKKyAgICBbW05TQ29sb3IgY29sb3JXaXRoQ2FsaWJyYXRlZFJlZDogMC43ZiBncmVlbjogMC43
ZiBibHVlOiAwLjdmIGFscGhhOiAwLjhmXSBzZXRdOwogICAgIAogICAgIC8vIERyYWcgYSByZWN0
YW5nbGUgd2l0aCByb3VuZGVkIGNvcm5lcnMvCiAgICAgTlNCZXppZXJQYXRoICpwYXRoID0gW05T
QmV6aWVyUGF0aCBiZXppZXJQYXRoXTsKLSAgICBbcGF0aCBhcHBlbmRCZXppZXJQYXRoV2l0aE92
YWxJblJlY3Q6IE5TTWFrZVJlY3QoMCwwLCBEUkFHX0xBQkVMX1JBRElVUyAqIDIsIERSQUdfTEFC
RUxfUkFESVVTICogMildOwotICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoT3ZhbEluUmVj
dDogTlNNYWtlUmVjdCgwLGltYWdlU2l6ZS5oZWlnaHQgLSBEUkFHX0xBQkVMX1JBRElVUyAqIDIs
IERSQUdfTEFCRUxfUkFESVVTICogMiwgRFJBR19MQUJFTF9SQURJVVMgKiAyKV07Ci0gICAgW3Bh
dGggYXBwZW5kQmV6aWVyUGF0aFdpdGhPdmFsSW5SZWN0OiBOU01ha2VSZWN0KGltYWdlU2l6ZS53
aWR0aCAtIERSQUdfTEFCRUxfUkFESVVTICogMiwgaW1hZ2VTaXplLmhlaWdodCAtIERSQUdfTEFC
RUxfUkFESVVTICogMiwgRFJBR19MQUJFTF9SQURJVVMgKiAyLCBEUkFHX0xBQkVMX1JBRElVUyAq
IDIpXTsKLSAgICBbcGF0aCBhcHBlbmRCZXppZXJQYXRoV2l0aE92YWxJblJlY3Q6IE5TTWFrZVJl
Y3QoaW1hZ2VTaXplLndpZHRoIC0gRFJBR19MQUJFTF9SQURJVVMgKiAyLDAsIERSQUdfTEFCRUxf
UkFESVVTICogMiwgRFJBR19MQUJFTF9SQURJVVMgKiAyKV07Ci0gICAgCi0gICAgW3BhdGggYXBw
ZW5kQmV6aWVyUGF0aFdpdGhSZWN0OiBOU01ha2VSZWN0KERSQUdfTEFCRUxfUkFESVVTLCAwLCBp
bWFnZVNpemUud2lkdGggLSBEUkFHX0xBQkVMX1JBRElVUyAqIDIsIGltYWdlU2l6ZS5oZWlnaHQp
XTsKLSAgICBbcGF0aCBhcHBlbmRCZXppZXJQYXRoV2l0aFJlY3Q6IE5TTWFrZVJlY3QoMCwgRFJB
R19MQUJFTF9SQURJVVMsIERSQUdfTEFCRUxfUkFESVVTICsgMTAsIGltYWdlU2l6ZS5oZWlnaHQg
LSAyICogRFJBR19MQUJFTF9SQURJVVMpXTsKLSAgICBbcGF0aCBhcHBlbmRCZXppZXJQYXRoV2l0
aFJlY3Q6IE5TTWFrZVJlY3QoaW1hZ2VTaXplLndpZHRoIC0gRFJBR19MQUJFTF9SQURJVVMgLSAy
MCxEUkFHX0xBQkVMX1JBRElVUywgRFJBR19MQUJFTF9SQURJVVMgKyAyMCwgaW1hZ2VTaXplLmhl
aWdodCAtIDIgKiBEUkFHX0xBQkVMX1JBRElVUyldOworICAgIFtwYXRoIGFwcGVuZEJlemllclBh
dGhXaXRoT3ZhbEluUmVjdDogTlNNYWtlUmVjdCgwLjBmLCAwLjBmLCBEUkFHX0xBQkVMX1JBRElV
UyAqIDIuMGYsIERSQUdfTEFCRUxfUkFESVVTICogMi4wZildOworICAgIFtwYXRoIGFwcGVuZEJl
emllclBhdGhXaXRoT3ZhbEluUmVjdDogTlNNYWtlUmVjdCgwLCBpbWFnZVNpemUuaGVpZ2h0IC0g
RFJBR19MQUJFTF9SQURJVVMgKiAyLjBmLCBEUkFHX0xBQkVMX1JBRElVUyAqIDIuMGYsIERSQUdf
TEFCRUxfUkFESVVTICogMi4wZildOworICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoT3Zh
bEluUmVjdDogTlNNYWtlUmVjdChpbWFnZVNpemUud2lkdGggLSBEUkFHX0xBQkVMX1JBRElVUyAq
IDIuMGYsIGltYWdlU2l6ZS5oZWlnaHQgLSBEUkFHX0xBQkVMX1JBRElVUyAqIDIuMGYsIERSQUdf
TEFCRUxfUkFESVVTICogMi4wZiwgRFJBR19MQUJFTF9SQURJVVMgKiAyLjBmKV07CisgICAgW3Bh
dGggYXBwZW5kQmV6aWVyUGF0aFdpdGhPdmFsSW5SZWN0OiBOU01ha2VSZWN0KGltYWdlU2l6ZS53
aWR0aCAtIERSQUdfTEFCRUxfUkFESVVTICogMi4wZiwgMC4wZiwgRFJBR19MQUJFTF9SQURJVVMg
KiAyLjBmLCBEUkFHX0xBQkVMX1JBRElVUyAqIDIuMGYpXTsKKyAgICAKKyAgICBbcGF0aCBhcHBl
bmRCZXppZXJQYXRoV2l0aFJlY3Q6IE5TTWFrZVJlY3QoRFJBR19MQUJFTF9SQURJVVMsIDAuMGYs
IGltYWdlU2l6ZS53aWR0aCAtIERSQUdfTEFCRUxfUkFESVVTICogMi4wZiwgaW1hZ2VTaXplLmhl
aWdodCldOworICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoUmVjdDogTlNNYWtlUmVjdCgw
LjBmLCBEUkFHX0xBQkVMX1JBRElVUywgRFJBR19MQUJFTF9SQURJVVMgKyAxMC4wZiwgaW1hZ2VT
aXplLmhlaWdodCAtIDIuMGYgKiBEUkFHX0xBQkVMX1JBRElVUyldOworICAgIFtwYXRoIGFwcGVu
ZEJlemllclBhdGhXaXRoUmVjdDogTlNNYWtlUmVjdChpbWFnZVNpemUud2lkdGggLSBEUkFHX0xB
QkVMX1JBRElVUyAtIDIwLjBmLCBEUkFHX0xBQkVMX1JBRElVUywgRFJBR19MQUJFTF9SQURJVVMg
KyAyMC4wZiwgaW1hZ2VTaXplLmhlaWdodCAtIDIuMGYgKiBEUkFHX0xBQkVMX1JBRElVUyldOwog
ICAgIFtwYXRoIGZpbGxdOwogICAgICAgICAKLSAgICBOU0NvbG9yICp0b3BDb2xvciA9IFtOU0Nv
bG9yIGNvbG9yV2l0aENhbGlicmF0ZWRXaGl0ZTowLjAgYWxwaGE6MC43NV07Ci0gICAgTlNDb2xv
ciAqYm90dG9tQ29sb3IgPSBbTlNDb2xvciBjb2xvcldpdGhDYWxpYnJhdGVkV2hpdGU6MS4wIGFs
cGhhOjAuNV07CisgICAgTlNDb2xvciAqdG9wQ29sb3IgPSBbTlNDb2xvciBjb2xvcldpdGhDYWxp
YnJhdGVkV2hpdGU6MC4wZiBhbHBoYTowLjc1Zl07CisgICAgTlNDb2xvciAqYm90dG9tQ29sb3Ig
PSBbTlNDb2xvciBjb2xvcldpdGhDYWxpYnJhdGVkV2hpdGU6MS4wZiBhbHBoYTowLjVmXTsKICAg
ICBpZiAoZHJhd1VSTFN0cmluZykgewogICAgICAgICBpZiAoY2xpcFVSTFN0cmluZykKLSAgICAg
ICAgICAgIHVybFN0cmluZyA9IFtXZWJTdHJpbmdUcnVuY2F0b3IgY2VudGVyVHJ1bmNhdGVTdHJp
bmc6IHVybFN0cmluZyB0b1dpZHRoOmltYWdlU2l6ZS53aWR0aCAtIChEUkFHX0xBQkVMX0JPUkRF
Ul9YICogMikgd2l0aEZvbnQ6dXJsRm9udF07CisgICAgICAgICAgICB1cmxTdHJpbmcgPSBbV2Vi
U3RyaW5nVHJ1bmNhdG9yIGNlbnRlclRydW5jYXRlU3RyaW5nOiB1cmxTdHJpbmcgdG9XaWR0aDpp
bWFnZVNpemUud2lkdGggLSAoRFJBR19MQUJFTF9CT1JERVJfWCAqIDIuMGYpIHdpdGhGb250OnVy
bEZvbnRdOwogCiAgICAgICAgIFt1cmxTdHJpbmcgX3dlYl9kcmF3RG91YmxlZEF0UG9pbnQ6TlNN
YWtlUG9pbnQoRFJBR19MQUJFTF9CT1JERVJfWCwgRFJBR19MQUJFTF9CT1JERVJfWSAtIFt1cmxG
b250IGRlc2NlbmRlcl0pIAogICAgICAgICAgICAgIHdpdGhUb3BDb2xvcjp0b3BDb2xvciBib3R0
b21Db2xvcjpib3R0b21Db2xvciBmb250OnVybEZvbnRdOwogICAgIH0KIAogICAgIGlmIChjbGlw
TGFiZWxTdHJpbmcpCi0gICAgICAgIGxhYmVsID0gW1dlYlN0cmluZ1RydW5jYXRvciByaWdodFRy
dW5jYXRlU3RyaW5nOiBsYWJlbCB0b1dpZHRoOmltYWdlU2l6ZS53aWR0aCAtIChEUkFHX0xBQkVM
X0JPUkRFUl9YICogMikgd2l0aEZvbnQ6bGFiZWxGb250XTsKKyAgICAgICAgbGFiZWwgPSBbV2Vi
U3RyaW5nVHJ1bmNhdG9yIHJpZ2h0VHJ1bmNhdGVTdHJpbmc6IGxhYmVsIHRvV2lkdGg6aW1hZ2VT
aXplLndpZHRoIC0gKERSQUdfTEFCRUxfQk9SREVSX1ggKiAyLjBmKSB3aXRoRm9udDpsYWJlbEZv
bnRdOwogICAgIFtsYWJlbCBfd2ViX2RyYXdEb3VibGVkQXRQb2ludDpOU01ha2VQb2ludCAoRFJB
R19MQUJFTF9CT1JERVJfWCwgaW1hZ2VTaXplLmhlaWdodCAtIERSQUdfTEFCRUxfQk9SREVSX1lf
T0ZGU0VUIC0gW2xhYmVsRm9udCBwb2ludFNpemVdKQogICAgICAgICAgICAgIHdpdGhUb3BDb2xv
cjp0b3BDb2xvciBib3R0b21Db2xvcjpib3R0b21Db2xvciBmb250OmxhYmVsRm9udF07CiAgICAg
CkBAIC0xNDk3LDEzICsxNDk3LDEzIEBAIHN0YXRpYyBXZWJIVE1MVmlldyAqbGFzdEhpdFZpZXcg
PSBuaWw7CiAKIC0gKHZvaWQpX3dlYl9zZXRQcmludGluZ01vZGVSZWN1cnNpdmUKIHsKLSAgICBb
c2VsZiBfc2V0UHJpbnRpbmc6WUVTIG1pbmltdW1QYWdlV2lkdGg6MC4wIG1heGltdW1QYWdlV2lk
dGg6MC4wIGFkanVzdFZpZXdTaXplOk5PXTsKKyAgICBbc2VsZiBfc2V0UHJpbnRpbmc6WUVTIG1p
bmltdW1QYWdlV2lkdGg6MC4wZiBtYXhpbXVtUGFnZVdpZHRoOjAuMGYgYWRqdXN0Vmlld1NpemU6
Tk9dOwogICAgIFtzdXBlciBfd2ViX3NldFByaW50aW5nTW9kZVJlY3Vyc2l2ZV07CiB9CiAKIC0g
KHZvaWQpX3dlYl9jbGVhclByaW50aW5nTW9kZVJlY3Vyc2l2ZQogewotICAgIFtzZWxmIF9zZXRQ
cmludGluZzpOTyBtaW5pbXVtUGFnZVdpZHRoOjAuMCBtYXhpbXVtUGFnZVdpZHRoOjAuMCBhZGp1
c3RWaWV3U2l6ZTpOT107CisgICAgW3NlbGYgX3NldFByaW50aW5nOk5PIG1pbmltdW1QYWdlV2lk
dGg6MC4wZiBtYXhpbXVtUGFnZVdpZHRoOjAuMGYgYWRqdXN0Vmlld1NpemU6Tk9dOwogICAgIFtz
dXBlciBfd2ViX2NsZWFyUHJpbnRpbmdNb2RlUmVjdXJzaXZlXTsKIH0KIApAQCAtMjUxOSw3ICsy
NTE5LDcgQEAgc3RhdGljIFdlYkhUTUxWaWV3ICpsYXN0SGl0VmlldyA9IG5pbDsKIAogLSAodm9p
ZClsYXlvdXQKIHsKLSAgICBbc2VsZiBsYXlvdXRUb01pbmltdW1QYWdlV2lkdGg6MC4wIG1heGlt
dW1QYWdlV2lkdGg6MC4wIGFkanVzdGluZ1ZpZXdTaXplOk5PXTsKKyAgICBbc2VsZiBsYXlvdXRU
b01pbmltdW1QYWdlV2lkdGg6MC4wZiBtYXhpbXVtUGFnZVdpZHRoOjAuMGYgYWRqdXN0aW5nVmll
d1NpemU6Tk9dOwogfQogCiAtIChOU01lbnUgKiltZW51Rm9yRXZlbnQ6KE5TRXZlbnQgKilldmVu
dApAQCAtMzA1Niw3ICszMDU2LDcgQEAgZG9uZToKICAgICAgICAgV2ViRnJhbWUgKnN1YmZyYW1l
ID0gW3N1YmZyYW1lcyBvYmplY3RBdEluZGV4OmldOwogICAgICAgICBXZWJGcmFtZVZpZXcgKmZy
YW1lVmlldyA9IFtzdWJmcmFtZSBmcmFtZVZpZXddOwogICAgICAgICBpZiAoW1tzdWJmcmFtZSBk
YXRhU291cmNlXSBfaXNEb2N1bWVudEhUTUxdKSB7Ci0gICAgICAgICAgICBbKFdlYkhUTUxWaWV3
ICopW2ZyYW1lVmlldyBkb2N1bWVudFZpZXddIF9zZXRQcmludGluZzpwcmludGluZyBtaW5pbXVt
UGFnZVdpZHRoOjAuMCBtYXhpbXVtUGFnZVdpZHRoOjAuMCBhZGp1c3RWaWV3U2l6ZTphZGp1c3RW
aWV3U2l6ZV07CisgICAgICAgICAgICBbKFdlYkhUTUxWaWV3ICopW2ZyYW1lVmlldyBkb2N1bWVu
dFZpZXddIF9zZXRQcmludGluZzpwcmludGluZyBtaW5pbXVtUGFnZVdpZHRoOjAuMGYgbWF4aW11
bVBhZ2VXaWR0aDowLjBmIGFkanVzdFZpZXdTaXplOmFkanVzdFZpZXdTaXplXTsKICAgICAgICAg
fQogICAgIH0KIApAQCAtMzA4NywxMiArMzA4NywxMiBAQCBkb25lOgogICAgIC8vIElmIHRoZSBX
ZWJIVE1MVmlldyBpdHNlbGYgaXMgd2hhdCB3ZSdyZSBwcmludGluZywgdGhlbiB3ZSB3aWxsIG5l
dmVyIGhhdmUgdG8gZG8gdGhpcy4KICAgICBCT09MIHdhc0luUHJpbnRpbmdNb2RlID0gX3ByaXZh
dGUtPnByaW50aW5nOwogICAgIGlmICghd2FzSW5QcmludGluZ01vZGUpCi0gICAgICAgIFtzZWxm
IF9zZXRQcmludGluZzpZRVMgbWluaW11bVBhZ2VXaWR0aDowLjAgbWF4aW11bVBhZ2VXaWR0aDow
LjAgYWRqdXN0Vmlld1NpemU6Tk9dOworICAgICAgICBbc2VsZiBfc2V0UHJpbnRpbmc6WUVTIG1p
bmltdW1QYWdlV2lkdGg6MC4wZiBtYXhpbXVtUGFnZVdpZHRoOjAuMGYgYWRqdXN0Vmlld1NpemU6
Tk9dOwogCiAgICAgW1tzZWxmIF9icmlkZ2VdIGFkanVzdFBhZ2VIZWlnaHROZXc6bmV3Qm90dG9t
IHRvcDpvbGRUb3AgYm90dG9tOm9sZEJvdHRvbSBsaW1pdDpib3R0b21MaW1pdF07CiAgICAgCiAg
ICAgaWYgKCF3YXNJblByaW50aW5nTW9kZSkKLSAgICAgICAgW3NlbGYgX3NldFByaW50aW5nOk5P
IG1pbmltdW1QYWdlV2lkdGg6MC4wIG1heGltdW1QYWdlV2lkdGg6MC4wIGFkanVzdFZpZXdTaXpl
Ok5PXTsKKyAgICAgICAgW3NlbGYgX3NldFByaW50aW5nOk5PIG1pbmltdW1QYWdlV2lkdGg6MC4w
ZiBtYXhpbXVtUGFnZVdpZHRoOjAuMGYgYWRqdXN0Vmlld1NpemU6Tk9dOwogfQogCiAtIChmbG9h
dClfYXZhaWxhYmxlUGFwZXJXaWR0aEZvclByaW50T3BlcmF0aW9uOihOU1ByaW50T3BlcmF0aW9u
ICopcHJpbnRPcGVyYXRpb24KQEAgLTMxMDYsMTEgKzMxMDYsMTEgQEAgZG9uZToKICAgICBmbG9h
dCB2aWV3V2lkdGggPSBOU1dpZHRoKFtzZWxmIGJvdW5kc10pOwogICAgIGlmICh2aWV3V2lkdGgg
PCAxKSB7CiAgICAgICAgIExPR19FUlJPUigiJUAgaGFzIG5vIHdpZHRoIHdoZW4gcHJpbnRpbmci
LCBzZWxmKTsKLSAgICAgICAgcmV0dXJuIDEuMDsKKyAgICAgICAgcmV0dXJuIDEuMGY7CiAgICAg
fQogCiAgICAgZmxvYXQgdXNlclNjYWxlRmFjdG9yID0gW3ByaW50T3BlcmF0aW9uIF93ZWJfcGFn
ZVNldHVwU2NhbGVGYWN0b3JdOwotICAgIGZsb2F0IG1heFNocmlua1RvRml0U2NhbGVGYWN0b3Ig
PSAxL1ByaW50aW5nTWF4aW11bVNocmlua0ZhY3RvcjsKKyAgICBmbG9hdCBtYXhTaHJpbmtUb0Zp
dFNjYWxlRmFjdG9yID0gMS4wZiAvIFByaW50aW5nTWF4aW11bVNocmlua0ZhY3RvcjsKICAgICBm
bG9hdCBzaHJpbmtUb0ZpdFNjYWxlRmFjdG9yID0gW3NlbGYgX2F2YWlsYWJsZVBhcGVyV2lkdGhG
b3JQcmludE9wZXJhdGlvbjpwcmludE9wZXJhdGlvbl0vdmlld1dpZHRoOwogICAgIHJldHVybiB1
c2VyU2NhbGVGYWN0b3IgKiBNQVgobWF4U2hyaW5rVG9GaXRTY2FsZUZhY3Rvciwgc2hyaW5rVG9G
aXRTY2FsZUZhY3Rvcik7CiB9CkBAIC0zMTI2LDEzICszMTI2LDEzIEBAIGRvbmU6CiAvLyBUaGlz
IGlzIHVzZWQgZm9yIENhcmJvbiBwcmludGluZy4gQXQgc29tZSBwb2ludCB3ZSBtaWdodCB3YW50
IHRvIG1ha2UgdGhpcyBwdWJsaWMgQVBJLgogLSAodm9pZClzZXRQYWdlV2lkdGhGb3JQcmludGlu
ZzooZmxvYXQpcGFnZVdpZHRoCiB7Ci0gICAgW3NlbGYgX3NldFByaW50aW5nOk5PIG1pbmltdW1Q
YWdlV2lkdGg6MC4gbWF4aW11bVBhZ2VXaWR0aDowLiBhZGp1c3RWaWV3U2l6ZTpOT107CisgICAg
W3NlbGYgX3NldFByaW50aW5nOk5PIG1pbmltdW1QYWdlV2lkdGg6MC4wZiBtYXhpbXVtUGFnZVdp
ZHRoOjAuMGYgYWRqdXN0Vmlld1NpemU6Tk9dOwogICAgIFtzZWxmIF9zZXRQcmludGluZzpZRVMg
bWluaW11bVBhZ2VXaWR0aDpwYWdlV2lkdGggbWF4aW11bVBhZ2VXaWR0aDpwYWdlV2lkdGggYWRq
dXN0Vmlld1NpemU6WUVTXTsKIH0KIAogLSAodm9pZClfZW5kUHJpbnRNb2RlCiB7Ci0gICAgW3Nl
bGYgX3NldFByaW50aW5nOk5PIG1pbmltdW1QYWdlV2lkdGg6MC4wIG1heGltdW1QYWdlV2lkdGg6
MC4wIGFkanVzdFZpZXdTaXplOllFU107CisgICAgW3NlbGYgX3NldFByaW50aW5nOk5PIG1pbmlt
dW1QYWdlV2lkdGg6MC4wZiBtYXhpbXVtUGFnZVdpZHRoOjAuMGYgYWRqdXN0Vmlld1NpemU6WUVT
XTsKICAgICBbW3NlbGYgd2luZG93XSBzZXRBdXRvZGlzcGxheTpZRVNdOwogfQogCkBAIC0zMTcy
LDEyICszMTcyLDEyIEBAIGRvbmU6CiAgICAgCiAgICAgLy8gSWYgd2UgYXJlIGEgZnJhbWVzZXQg
anVzdCBwcmludCB3aXRoIHRoZSBsYXlvdXQgd2UgaGF2ZSBvbnNjcmVlbiwgb3RoZXJ3aXNlIHJl
bGF5b3V0CiAgICAgLy8gYWNjb3JkaW5nIHRvIHRoZSBwYXBlciBzaXplCi0gICAgZmxvYXQgbWlu
TGF5b3V0V2lkdGggPSAwLjA7Ci0gICAgZmxvYXQgbWF4TGF5b3V0V2lkdGggPSAwLjA7CisgICAg
ZmxvYXQgbWluTGF5b3V0V2lkdGggPSAwLjBmOworICAgIGZsb2F0IG1heExheW91dFdpZHRoID0g
MC4wZjsKICAgICBpZiAoIVtbc2VsZiBfYnJpZGdlXSBpc0ZyYW1lU2V0XSkgewogICAgICAgICBm
bG9hdCBwYXBlcldpZHRoID0gW3NlbGYgX2F2YWlsYWJsZVBhcGVyV2lkdGhGb3JQcmludE9wZXJh
dGlvbjpbTlNQcmludE9wZXJhdGlvbiBjdXJyZW50T3BlcmF0aW9uXV07Ci0gICAgICAgIG1pbkxh
eW91dFdpZHRoID0gcGFwZXJXaWR0aCpQcmludGluZ01pbmltdW1TaHJpbmtGYWN0b3I7Ci0gICAg
ICAgIG1heExheW91dFdpZHRoID0gcGFwZXJXaWR0aCpQcmludGluZ01heGltdW1TaHJpbmtGYWN0
b3I7CisgICAgICAgIG1pbkxheW91dFdpZHRoID0gcGFwZXJXaWR0aCAqIFByaW50aW5nTWluaW11
bVNocmlua0ZhY3RvcjsKKyAgICAgICAgbWF4TGF5b3V0V2lkdGggPSBwYXBlcldpZHRoICogUHJp
bnRpbmdNYXhpbXVtU2hyaW5rRmFjdG9yOwogICAgIH0KICAgICBbc2VsZiBfc2V0UHJpbnRpbmc6
WUVTIG1pbmltdW1QYWdlV2lkdGg6bWluTGF5b3V0V2lkdGggbWF4aW11bVBhZ2VXaWR0aDptYXhM
YXlvdXRXaWR0aCBhZGp1c3RWaWV3U2l6ZTpZRVNdOyAvLyB3aWxsIHJlbGF5b3V0CiAgICAgTlNQ
cmludE9wZXJhdGlvbiAqcHJpbnRPcGVyYXRpb24gPSBbTlNQcmludE9wZXJhdGlvbiBjdXJyZW50
T3BlcmF0aW9uXTsKQEAgLTM5MjYsMTIgKzM5MjYsMTIgQEAgZG9uZToKIAogLSAoTlNGb250ICop
X29yaWdpbmFsRm9udEEKIHsKLSAgICByZXR1cm4gW1tOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZvbnRN
YW5hZ2VyXSBmb250V2l0aEZhbWlseTpAIkhlbHZldGljYSIgdHJhaXRzOjAgd2VpZ2h0OlNUQU5E
QVJEX1dFSUdIVCBzaXplOjEwXTsKKyAgICByZXR1cm4gW1tOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZv
bnRNYW5hZ2VyXSBmb250V2l0aEZhbWlseTpAIkhlbHZldGljYSIgdHJhaXRzOjAgd2VpZ2h0OlNU
QU5EQVJEX1dFSUdIVCBzaXplOjEwLjBmXTsKIH0KIAogLSAoTlNGb250ICopX29yaWdpbmFsRm9u
dEIKIHsKLSAgICByZXR1cm4gW1tOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZvbnRNYW5hZ2VyXSBmb250
V2l0aEZhbWlseTpAIlRpbWVzIiB0cmFpdHM6KE5TQm9sZEZvbnRNYXNrIHwgTlNJdGFsaWNGb250
TWFzaykgd2VpZ2h0OlNUQU5EQVJEX0JPTERfV0VJR0hUIHNpemU6MTJdOworICAgIHJldHVybiBb
W05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFnZXJdIGZvbnRXaXRoRmFtaWx5OkAiVGltZXMi
IHRyYWl0czooTlNCb2xkRm9udE1hc2sgfCBOU0l0YWxpY0ZvbnRNYXNrKSB3ZWlnaHQ6U1RBTkRB
UkRfQk9MRF9XRUlHSFQgc2l6ZToxMi4wZl07CiB9CiAKIC0gKHZvaWQpX2FkZFRvU3R5bGU6KERP
TUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHlsZSBmb250QTooTlNGb250ICopYSBmb250QjooTlNG
b250ICopYgpAQCAtNTMyOSw3ICs1MzI5LDcgQEAgc3RhdGljIERPTVJhbmdlICp1bmlvbkRPTVJh
bmdlcyhET01SYW5nZQogICAgIFtfdGFibGVWaWV3IHJlbGVhc2VdOwogICAgIAogICAgIF9wb3B1
cFdpbmRvdyA9IFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6c2Nyb2xsRnJh
bWUgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9y
ZUJ1ZmZlcmVkIGRlZmVyOk5PXTsKLSAgICBbX3BvcHVwV2luZG93IHNldEFscGhhVmFsdWU6MC44
OF07CisgICAgW19wb3B1cFdpbmRvdyBzZXRBbHBoYVZhbHVlOjAuODhmXTsKICAgICBbX3BvcHVw
V2luZG93IHNldENvbnRlbnRWaWV3OnNjcm9sbFZpZXddOwogICAgIFtzY3JvbGxWaWV3IHJlbGVh
c2VdOwogICAgIFtfcG9wdXBXaW5kb3cgc2V0SGFzU2hhZG93OllFU107CkBAIC01MzUxLDEyICs1
MzUxLDEyIEBAIHN0YXRpYyBET01SYW5nZSAqdW5pb25ET01SYW5nZXMoRE9NUmFuZ2UKICAgICB3
aW5kb3dGcmFtZS5vcmlnaW4gPSBbW192aWV3IHdpbmRvd10gY29udmVydEJhc2VUb1NjcmVlbjpb
X3ZpZXcgY29udmVydFBvaW50OndvcmRTdGFydCB0b1ZpZXc6bmlsXV07CiAgICAgd2luZG93RnJh
bWUuc2l6ZS5oZWlnaHQgPSBudW1iZXJUb1Nob3cgKiBbX3RhYmxlVmlldyByb3dIZWlnaHRdICsg
KG51bWJlclRvU2hvdyArIDEpICogW190YWJsZVZpZXcgaW50ZXJjZWxsU3BhY2luZ10uaGVpZ2h0
OwogICAgIHdpbmRvd0ZyYW1lLm9yaWdpbi55IC09IHdpbmRvd0ZyYW1lLnNpemUuaGVpZ2h0Owot
ICAgIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdp
dGhPYmplY3RzQW5kS2V5czpbTlNGb250IHN5c3RlbUZvbnRPZlNpemU6MTIuMF0sIE5TRm9udEF0
dHJpYnV0ZU5hbWUsIG5pbF07Ci0gICAgZmxvYXQgbWF4V2lkdGggPSAwLjA7CisgICAgTlNEaWN0
aW9uYXJ5ICphdHRyaWJ1dGVzID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNB
bmRLZXlzOltOU0ZvbnQgc3lzdGVtRm9udE9mU2l6ZToxMi4wZl0sIE5TRm9udEF0dHJpYnV0ZU5h
bWUsIG5pbF07CisgICAgZmxvYXQgbWF4V2lkdGggPSAwLjBmOwogICAgIGludCBtYXhJbmRleCA9
IC0xOwogICAgIGludCBpOwogICAgIGZvciAoaSA9IDA7IGkgPCBudW1iZXJUb1Nob3c7IGkrKykg
ewotICAgICAgICBmbG9hdCB3aWR0aCA9IGNlaWwoW1tfY29tcGxldGlvbnMgb2JqZWN0QXRJbmRl
eDppXSBzaXplV2l0aEF0dHJpYnV0ZXM6YXR0cmlidXRlc10ud2lkdGgpOworICAgICAgICBmbG9h
dCB3aWR0aCA9IGNlaWxmKFtbX2NvbXBsZXRpb25zIG9iamVjdEF0SW5kZXg6aV0gc2l6ZVdpdGhB
dHRyaWJ1dGVzOmF0dHJpYnV0ZXNdLndpZHRoKTsKICAgICAgICAgaWYgKHdpZHRoID4gbWF4V2lk
dGgpIHsKICAgICAgICAgICAgIG1heFdpZHRoID0gd2lkdGg7CiAgICAgICAgICAgICBtYXhJbmRl
eCA9IGk7CkBAIC01MzY0LDExICs1MzY0LDExIEBAIHN0YXRpYyBET01SYW5nZSAqdW5pb25ET01S
YW5nZXMoRE9NUmFuZ2UKICAgICB9CiAgICAgd2luZG93RnJhbWUuc2l6ZS53aWR0aCA9IDEwMDsK
ICAgICBpZiAobWF4SW5kZXggPj0gMCkgewotICAgICAgICBtYXhXaWR0aCA9IGNlaWwoW05TU2Ny
b2xsVmlldyBmcmFtZVNpemVGb3JDb250ZW50U2l6ZTpOU01ha2VTaXplKG1heFdpZHRoLCAxMDAp
IGhhc0hvcml6b250YWxTY3JvbGxlcjpOTyBoYXNWZXJ0aWNhbFNjcm9sbGVyOllFUyBib3JkZXJU
eXBlOk5TTm9Cb3JkZXJdLndpZHRoKTsKLSAgICAgICAgbWF4V2lkdGggPSBjZWlsKFtOU1dpbmRv
dyBmcmFtZVJlY3RGb3JDb250ZW50UmVjdDpOU01ha2VSZWN0KDAsIDAsIG1heFdpZHRoLCAxMDAp
IHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrXS5zaXplLndpZHRoKTsKLSAgICAgICAg
bWF4V2lkdGggKz0gNS4wOworICAgICAgICBtYXhXaWR0aCA9IGNlaWxmKFtOU1Njcm9sbFZpZXcg
ZnJhbWVTaXplRm9yQ29udGVudFNpemU6TlNNYWtlU2l6ZShtYXhXaWR0aCwgMTAwLjBmKSBoYXNI
b3Jpem9udGFsU2Nyb2xsZXI6Tk8gaGFzVmVydGljYWxTY3JvbGxlcjpZRVMgYm9yZGVyVHlwZTpO
U05vQm9yZGVyXS53aWR0aCk7CisgICAgICAgIG1heFdpZHRoID0gY2VpbGYoW05TV2luZG93IGZy
YW1lUmVjdEZvckNvbnRlbnRSZWN0Ok5TTWFrZVJlY3QoMC4wZiwgMC4wZiwgbWF4V2lkdGgsIDEw
MC4wZikgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2tdLnNpemUud2lkdGgpOworICAg
ICAgICBtYXhXaWR0aCArPSA1LjBmOwogICAgICAgICB3aW5kb3dGcmFtZS5zaXplLndpZHRoID0g
TUFYKG1heFdpZHRoLCB3aW5kb3dGcmFtZS5zaXplLndpZHRoKTsKLSAgICAgICAgbWF4V2lkdGgg
PSBNSU4oNDAwLjAsIHdpbmRvd0ZyYW1lLnNpemUud2lkdGgpOworICAgICAgICBtYXhXaWR0aCA9
IE1JTig0MDAuMGYsIHdpbmRvd0ZyYW1lLnNpemUud2lkdGgpOwogICAgIH0KICAgICBbX3BvcHVw
V2luZG93IHNldEZyYW1lOndpbmRvd0ZyYW1lIGRpc3BsYXk6Tk9dOwogICAgIApJbmRleDogV2Vi
S2l0L1dlYlZpZXcvV2ViTG9hZGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYlZpZXcvV2Vi
TG9hZGVyLm0JKHJldmlzaW9uIDE1NzQzKQorKysgV2ViS2l0L1dlYlZpZXcvV2ViTG9hZGVyLm0J
KHdvcmtpbmcgY29weSkKQEAgLTQyOCw3ICs0MjgsNyBAQCBzdGF0aWMgQk9PTCBOU1VSTENvbm5l
Y3Rpb25TdXBwb3J0c0J1ZmZlCiAgICAgLy8gSWYgdGhlIFVSTCBpcyBvbmUgb2Ygb3VyIHdoYWNr
eSBhcHBsZXdlYmRhdGEgVVJMcyB0aGVuCiAgICAgLy8gZmFrZSB1cCBhIHN1YnN0aXR1dGUgVVJM
IHRvIHByZXNlbnQgdG8gdGhlIGRlbGVnYXRlLgogICAgIGlmKFtXZWJEYXRhUHJvdG9jb2wgX3dl
YklzRGF0YVByb3RvY29sVVJMOltyIFVSTF1dKSB7Ci0gICAgICAgIHIgPSBbW1tOU1VSTFJlc3Bv
bnNlIGFsbG9jXSBpbml0V2l0aFVSTDpbcmVxdWVzdCBfd2ViRGF0YVJlcXVlc3RFeHRlcm5hbFVS
TF0gTUlNRVR5cGU6W3IgTUlNRVR5cGVdIGV4cGVjdGVkQ29udGVudExlbmd0aDpbciBleHBlY3Rl
ZENvbnRlbnRMZW5ndGhdIHRleHRFbmNvZGluZ05hbWU6W3IgdGV4dEVuY29kaW5nTmFtZV1dIGF1
dG9yZWxlYXNlXTsKKyAgICAgICAgciA9IFtbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRo
VVJMOltyZXF1ZXN0IF93ZWJEYXRhUmVxdWVzdEV4dGVybmFsVVJMXSBNSU1FVHlwZTpbciBNSU1F
VHlwZV0gZXhwZWN0ZWRDb250ZW50TGVuZ3RoOihpbnQpW3IgZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
XSB0ZXh0RW5jb2RpbmdOYW1lOltyIHRleHRFbmNvZGluZ05hbWVdXSBhdXRvcmVsZWFzZV07CiAg
ICAgfQogCiAgICAgW3IgcmV0YWluXTsKQEAgLTQ1NCw3ICs0NTQsNyBAQCBzdGF0aWMgQk9PTCBO
U1VSTENvbm5lY3Rpb25TdXBwb3J0c0J1ZmZlCiAgICAgCiAgICAgW3NlbGYgYWRkRGF0YTpkYXRh
XTsKICAgICAKLSAgICBbZGF0YVNvdXJjZSBfZGlkUmVjZWl2ZURhdGE6ZGF0YSBjb250ZW50TGVu
Z3RoOmxlbmd0aFJlY2VpdmVkIGZvclJlc291cmNlOmlkZW50aWZpZXJdOworICAgIFtkYXRhU291
cmNlIF9kaWRSZWNlaXZlRGF0YTpkYXRhIGNvbnRlbnRMZW5ndGg6KGludClsZW5ndGhSZWNlaXZl
ZCBmb3JSZXNvdXJjZTppZGVudGlmaWVyXTsKIAogICAgIFtzZWxmIHJlbGVhc2VdOwogfQpJbmRl
eDogV2ViS2l0L1dlYlZpZXcvV2ViTWFpblJlc291cmNlTG9hZGVyLm0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L1dlYlZpZXcvV2ViTWFpblJlc291cmNlTG9hZGVyLm0JKHJldmlzaW9uIDE1NzQzKQor
KysgV2ViS2l0L1dlYlZpZXcvV2ViTWFpblJlc291cmNlTG9hZGVyLm0JKHdvcmtpbmcgY29weSkK
QEAgLTM0Miw3ICszNDIsNyBAQAogICAgIGlmIChbW1tVUkwgcGF0aF0gcGF0aEV4dGVuc2lvbl0g
X3dlYmtpdF9pc0Nhc2VJbnNlbnNpdGl2ZUVxdWFsVG9TdHJpbmc6QCJ3ZWJhcmNoaXZlIl0pIHsK
ICAgICAgICAgciA9IFtbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOlVSTCAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1JTUVUeXBlOkAiYXBwbGljYXRp
b24veC13ZWJhcmNoaXZlIgotICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZENvbnRl
bnRMZW5ndGg6W3IgZXhwZWN0ZWRDb250ZW50TGVuZ3RoXSAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOihpbnQpW3IgZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
XSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RW5jb2RpbmdOYW1lOltyIHRl
eHRFbmNvZGluZ05hbWVdXSBhdXRvcmVsZWFzZV07CiAgICAgfQogICAgIApAQCAtMzUwLDcgKzM1
MCw3IEBACiAgICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5IHJlbGVhc2luZyBzZWxm
OyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIDMyNjYyMTYKICAgICBbc2VsZiByZXRhaW5dOwogICAg
IFtkYXRhU291cmNlIF9zZXRSZXNwb25zZTpyXTsKLSAgICBfY29udGVudExlbmd0aCA9IFtyIGV4
cGVjdGVkQ29udGVudExlbmd0aF07CisgICAgX2NvbnRlbnRMZW5ndGggPSAoaW50KVtyIGV4cGVj
dGVkQ29udGVudExlbmd0aF07CiAKICAgICBbc2VsZiBjaGVja0NvbnRlbnRQb2xpY3lGb3JSZXNw
b25zZTpyXTsKICAgICBbc2VsZiByZWxlYXNlXTsKSW5kZXg6IFdlYktpdC9XZWJWaWV3L1dlYlBE
RlZpZXcubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViVmlldy9XZWJQREZWaWV3Lm0JKHJldmlz
aW9uIDE1NzQzKQorKysgV2ViS2l0L1dlYlZpZXcvV2ViUERGVmlldy5tCSh3b3JraW5nIGNvcHkp
CkBAIC04MDAsNyArODAwLDcgQEAgc3RhdGljIEJPT0wgUERGU2VsZWN0aW9uc0FyZUVxdWFsKFBE
RlNlbAogCiAtIChJQkFjdGlvbilfbWFrZVRleHRTdGFuZGFyZFNpemU6KGlkKXNlbmRlcgogewot
ICAgIFtQREZTdWJ2aWV3UHJveHkgc2V0U2NhbGVGYWN0b3I6MS4wXTsKKyAgICBbUERGU3Vidmll
d1Byb3h5IHNldFNjYWxlRmFjdG9yOjEuMGZdOwogfQogCiAtIChCT09MKV90cmFja3NDb21tb25T
aXplRmFjdG9yCkBAIC04NjYsNyArODY2LDcgQEAgc3RhdGljIEJPT0wgUERGU2VsZWN0aW9uc0Fy
ZUVxdWFsKFBERlNlbAogICAgIFthdHRyaWJ1dGVkU3RyaW5nIHJlbW92ZUF0dHJpYnV0ZTpOU0Jh
Y2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUgcmFuZ2U6d2hvbGVTdHJpbmdSYW5nZV07CiAgICAg
W2F0dHJpYnV0ZWRTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOk5TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1
dGVOYW1lIHJhbmdlOndob2xlU3RyaW5nUmFuZ2VdOwogICAgIGlmIChmb3JjZVdoaXRlVGV4dCkK
LSAgICAgICAgW2F0dHJpYnV0ZWRTdHJpbmcgYWRkQXR0cmlidXRlOk5TRm9yZWdyb3VuZENvbG9y
QXR0cmlidXRlTmFtZSB2YWx1ZTpbTlNDb2xvciBjb2xvcldpdGhEZXZpY2VXaGl0ZToxLjAgYWxw
aGE6MS4wXSByYW5nZTp3aG9sZVN0cmluZ1JhbmdlXTsKKyAgICAgICAgW2F0dHJpYnV0ZWRTdHJp
bmcgYWRkQXR0cmlidXRlOk5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZSB2YWx1ZTpbTlND
b2xvciBjb2xvcldpdGhEZXZpY2VXaGl0ZToxLjBmIGFscGhhOjEuMGZdIHJhbmdlOndob2xlU3Ry
aW5nUmFuZ2VdOwogICAgIFthdHRyaWJ1dGVkU3RyaW5nIGVuZEVkaXRpbmddOwogICAgIAogICAg
IE5TSW1hZ2UqIHNlbGVjdGlvbkltYWdlID0gW1tbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhTaXpl
OltzZWxmIHNlbGVjdGlvbkltYWdlUmVjdF0uc2l6ZV0gYXV0b3JlbGVhc2VdOwpAQCAtOTkyLDcg
Kzk5Miw3IEBAIHN0YXRpYyBCT09MIFBERlNlbGVjdGlvbnNBcmVFcXVhbChQREZTZWwKICAgICBb
aW52b2NhdGlvbiBpbnZva2VXaXRoVGFyZ2V0OlBERlN1YnZpZXddOwogCiAgICAgV2ViUHJlZmVy
ZW5jZXMgKnByZWZzID0gW1t2aWV3LT5kYXRhU291cmNlIF93ZWJWaWV3XSBwcmVmZXJlbmNlc107
Ci0gICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBbUERGU3VidmlldyBhdXRvU2NhbGVzXSA/IDAuMCA6
IFtQREZTdWJ2aWV3IHNjYWxlRmFjdG9yXTsKKyAgICBmbG9hdCBzY2FsZUZhY3RvciA9IFtQREZT
dWJ2aWV3IGF1dG9TY2FsZXNdID8gMC4wZiA6IFtQREZTdWJ2aWV3IHNjYWxlRmFjdG9yXTsKICAg
ICBbcHJlZnMgc2V0UERGU2NhbGVGYWN0b3I6c2NhbGVGYWN0b3JdOwogICAgIFtwcmVmcyBzZXRQ
REZEaXNwbGF5TW9kZTpbUERGU3VidmlldyBkaXNwbGF5TW9kZV1dOwogfQpJbmRleDogV2ViS2l0
L1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlcy5tCShyZXZpc2lvbiAxNTc0MykKKysrIFdlYktpdC9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzLm0JKHdvcmtpbmcgY29weSkKQEAgLTI5OCw3ICsyOTgsNyBAQCBOU19FTkRIQU5E
TEVSCiAtIChmbG9hdClfZmxvYXRWYWx1ZUZvcktleTooTlNTdHJpbmcgKilrZXkKIHsKICAgICBp
ZCBvID0gW3NlbGYgX3ZhbHVlRm9yS2V5OmtleV07Ci0gICAgcmV0dXJuIFtvIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoZmxvYXRWYWx1ZSldID8gW28gZmxvYXRWYWx1ZV0gOiAwLjA7Cisg
ICAgcmV0dXJuIFtvIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZmxvYXRWYWx1ZSldID8g
W28gZmxvYXRWYWx1ZV0gOiAwLjBmOwogfQogCiAtICh2b2lkKV9zZXRGbG9hdFZhbHVlOihmbG9h
dCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5CkluZGV4OiBXZWJLaXQvV2ViVmlldy9XZWJW
aWV3Lm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYlZpZXcvV2ViVmlldy5tCShyZXZpc2lvbiAx
NTc0MykKKysrIFdlYktpdC9XZWJWaWV3L1dlYlZpZXcubQkod29ya2luZyBjb3B5KQpAQCAtMjY2
Myw5ICsyNjYzLDkgQEAgc3RhdGljIFdlYkZyYW1lICppbmNyZW1lbnRGcmFtZShXZWJGcmFtZQog
ICAgIFtbc2VsZiBtYWluRnJhbWVdIHJlbG9hZF07CiB9CiAKLSNkZWZpbmUgTWluaW11bVRleHRT
aXplTXVsdGlwbGllciAgICAgICAwLjUKLSNkZWZpbmUgTWF4aW11bVRleHRTaXplTXVsdGlwbGll
ciAgICAgICAzLjAKLSNkZWZpbmUgVGV4dFNpemVNdWx0aXBsaWVyUmF0aW8gICAgICAgICAxLjIK
KyNkZWZpbmUgTWluaW11bVRleHRTaXplTXVsdGlwbGllciAgICAgICAwLjVmCisjZGVmaW5lIE1h
eGltdW1UZXh0U2l6ZU11bHRpcGxpZXIgICAgICAgMy4wZgorI2RlZmluZSBUZXh0U2l6ZU11bHRp
cGxpZXJSYXRpbyAgICAgICAgIDEuMmYKIAogLSAoQk9PTCljYW5NYWtlVGV4dFNtYWxsZXIKIHsK
QEAgLTI2ODEsNyArMjY4MSw3IEBAIHN0YXRpYyBXZWJGcmFtZSAqaW5jcmVtZW50RnJhbWUoV2Vi
RnJhbWUKIAogLSAoSUJBY3Rpb24pbWFrZVRleHRTbWFsbGVyOihpZClzZW5kZXIKIHsKLSAgICBm
bG9hdCBuZXdTY2FsZSA9IF9wcml2YXRlLT50ZXh0U2l6ZU11bHRpcGxpZXIvVGV4dFNpemVNdWx0
aXBsaWVyUmF0aW87CisgICAgZmxvYXQgbmV3U2NhbGUgPSBfcHJpdmF0ZS0+dGV4dFNpemVNdWx0
aXBsaWVyIC8gVGV4dFNpemVNdWx0aXBsaWVyUmF0aW87CiAgICAgQk9PTCBjYW5TaHJpbmtNb3Jl
ID0gbmV3U2NhbGUgPiBNaW5pbXVtVGV4dFNpemVNdWx0aXBsaWVyOwogICAgIFtzZWxmIF9wZXJm
b3JtVGV4dFNpemluZ1NlbGVjdG9yOkBzZWxlY3RvcihfbWFrZVRleHRTbWFsbGVyOikgd2l0aE9i
amVjdDpzZW5kZXIgb25UcmFja2luZ0RvY3M6Y2FuU2hyaW5rTW9yZSBzZWxGb3JOb25UcmFja2lu
Z0RvY3M6QHNlbGVjdG9yKF9jYW5NYWtlVGV4dFNtYWxsZXIpIG5ld1NjYWxlRmFjdG9yOm5ld1Nj
YWxlXTsKIH0KQEAgLTI3MTcsMTQgKzI3MTcsMTQgQEAgc3RhdGljIFdlYkZyYW1lICppbmNyZW1l
bnRGcmFtZShXZWJGcmFtZQogCiAtIChCT09MKWNhbk1ha2VUZXh0U3RhbmRhcmRTaXplCiB7Ci0g
ICAgQk9PTCBub3RBbHJlYWR5U3RhbmRhcmQgPSBfcHJpdmF0ZS0+dGV4dFNpemVNdWx0aXBsaWVy
ICE9IDEuMDsKLSAgICByZXR1cm4gW3NlbGYgX3BlcmZvcm1UZXh0U2l6aW5nU2VsZWN0b3I6KFNF
TCkwIHdpdGhPYmplY3Q6bmlsIG9uVHJhY2tpbmdEb2NzOm5vdEFscmVhZHlTdGFuZGFyZCBzZWxG
b3JOb25UcmFja2luZ0RvY3M6QHNlbGVjdG9yKF9jYW5NYWtlVGV4dFN0YW5kYXJkU2l6ZSkgbmV3
U2NhbGVGYWN0b3I6MF07CisgICAgQk9PTCBub3RBbHJlYWR5U3RhbmRhcmQgPSBfcHJpdmF0ZS0+
dGV4dFNpemVNdWx0aXBsaWVyICE9IDEuMGY7CisgICAgcmV0dXJuIFtzZWxmIF9wZXJmb3JtVGV4
dFNpemluZ1NlbGVjdG9yOihTRUwpMCB3aXRoT2JqZWN0Om5pbCBvblRyYWNraW5nRG9jczpub3RB
bHJlYWR5U3RhbmRhcmQgc2VsRm9yTm9uVHJhY2tpbmdEb2NzOkBzZWxlY3RvcihfY2FuTWFrZVRl
eHRTdGFuZGFyZFNpemUpIG5ld1NjYWxlRmFjdG9yOjAuMGZdOwogfQogCiAtIChJQkFjdGlvbilt
YWtlVGV4dFN0YW5kYXJkU2l6ZTooaWQpc2VuZGVyCiB7Ci0gICAgQk9PTCBub3RBbHJlYWR5U3Rh
bmRhcmQgPSBfcHJpdmF0ZS0+dGV4dFNpemVNdWx0aXBsaWVyICE9IDEuMDsKLSAgICBbc2VsZiBf
cGVyZm9ybVRleHRTaXppbmdTZWxlY3RvcjpAc2VsZWN0b3IoX21ha2VUZXh0U3RhbmRhcmRTaXpl
Oikgd2l0aE9iamVjdDpzZW5kZXIgb25UcmFja2luZ0RvY3M6bm90QWxyZWFkeVN0YW5kYXJkIHNl
bEZvck5vblRyYWNraW5nRG9jczpAc2VsZWN0b3IoX2Nhbk1ha2VUZXh0U3RhbmRhcmRTaXplKSBu
ZXdTY2FsZUZhY3RvcjoxLjBdOworICAgIEJPT0wgbm90QWxyZWFkeVN0YW5kYXJkID0gX3ByaXZh
dGUtPnRleHRTaXplTXVsdGlwbGllciAhPSAxLjBmOworICAgIFtzZWxmIF9wZXJmb3JtVGV4dFNp
emluZ1NlbGVjdG9yOkBzZWxlY3RvcihfbWFrZVRleHRTdGFuZGFyZFNpemU6KSB3aXRoT2JqZWN0
OnNlbmRlciBvblRyYWNraW5nRG9jczpub3RBbHJlYWR5U3RhbmRhcmQgc2VsRm9yTm9uVHJhY2tp
bmdEb2NzOkBzZWxlY3RvcihfY2FuTWFrZVRleHRTdGFuZGFyZFNpemUpIG5ld1NjYWxlRmFjdG9y
OjEuMGZdOwogfQogCiAjZGVmaW5lIFZBTElEQVRFKG5hbWUpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9834</attachid>
            <date>2006-08-02 14:51:24 -0700</date>
            <delta_ts>2006-08-05 09:24:12 -0700</delta_ts>
            <desc>patch of trivial changes</desc>
            <filename>shortenTrivials.diff</filename>
            <type>text/plain</type>
            <size>52242</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
R2x1ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzU4KQorKysgSmF2YVNjcmlwdEdsdWUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDYtMDgtMDIgIFNhbSBXZWlu
aWcgIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAtIHBhdGNoIGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndp
bi5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTkyCisgICAgICAgICAgTWFrZSBXZWJDb3JlIChhbmQg
ZnJpZW5kcykgY29tcGlsZSB3aXRoIC1Xc2hvcnRlbi02NC10by0zMgorCisgICAgICAgICAgKiBB
ZGRzIC1Xc2hvcnRlbi02NC10by0zMiBmbGFnIHRvIFhjb2RlIHByb2plY3QuCisKKyAgICAgICAg
KiBKYXZhU2NyaXB0R2x1ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDA2LTA3LTI5
ICBTYW0gV2VpbmlnICA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4uCkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9KYXZhU2NyaXB0R2x1ZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0phdmFTY3JpcHRH
bHVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NzU4KQorKysgSmF2YVNj
cmlwdEdsdWUvSmF2YVNjcmlwdEdsdWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNDQyLDYgKzQ0Miw3IEBACiAJCQkJCSItV25vLWZvcm1hdC15MmsiLAogCQkJ
CQkiLVduby11bnVzZWQtcGFyYW1ldGVyIiwKIAkJCQkJIi1Xbm8tbG9uZy1kb3VibGUiLAorCQkJ
CQkiLVdzaG9ydGVuLTY0LXRvLTMyIiwKIAkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsK
QEAgLTQ3OSw2ICs0ODAsNyBAQAogCQkJCQkiLVduby1mb3JtYXQteTJrIiwKIAkJCQkJIi1Xbm8t
dW51c2VkLXBhcmFtZXRlciIsCiAJCQkJCSItV25vLWxvbmctZG91YmxlIiwKKwkJCQkJIi1Xc2hv
cnRlbi02NC10by0zMiIsCiAJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKQEAgLTUx
Miw2ICs1MTQsNyBAQAogCQkJCQkiLVduby1mb3JtYXQteTJrIiwKIAkJCQkJIi1Xbm8tdW51c2Vk
LXBhcmFtZXRlciIsCiAJCQkJCSItV25vLWxvbmctZG91YmxlIiwKKwkJCQkJIi1Xc2hvcnRlbi02
NC10by0zMiIsCiAJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gUHJvZHVjdGlvbjsKSW5kZXg6IFdl
YkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAxNTc1OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjYgQEAKKzIwMDYtMDgtMDIgIFNhbSBXZWluaWcgIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIHBhdGNoIGZv
ciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTkyCisg
ICAgICAgICAgTWFrZSBXZWJDb3JlIChhbmQgZnJpZW5kcykgY29tcGlsZSB3aXRoIC1Xc2hvcnRl
bi02NC10by0zMgorCisgICAgICAgICAgKiBBZGRzICdmJyB0byBmbG9hdCBsaXRlcmFscyB3aGVy
ZSBleHBlY3RpbmcgYSBmbG9hdC4KKyAgICAgICAgICAqIFVzZSBjb3NmKCkgaW5zdGVhZCBvZiBj
b3MoKSB3aGVuIGFzc2lnbmluZyB0byBhIGZsb2F0LgorCisgICAgICAgICoga2NhbnZhcy9kZXZp
Y2UvcXVhcnR6L2ZpbHRlcnMvV0tEaWZmdXNlTGlnaHRpbmdGaWx0ZXIubToKKyAgICAgICAgKCtb
V0tEaWZmdXNlTGlnaHRpbmdGaWx0ZXIgaW5pdGlhbGl6ZV0pOgorICAgICAgICAqIGtjYW52YXMv
ZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5tOgorICAgICAg
ICAoLVtXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIgb3V0cHV0SW1hZ2VdKToKKyAgICAgICAgKiBr
Y2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0Rpc3BsYWNlbWVudE1hcEZpbHRlci5tOgor
ICAgICAgICAoK1tXS0Rpc3BsYWNlbWVudE1hcEZpbHRlciBpbml0aWFsaXplXSk6CisgICAgICAg
ICoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tTcGVjdWxhckxpZ2h0aW5nRmlsdGVy
Lm06CisgICAgICAgICgrW1dLU3BlY3VsYXJMaWdodGluZ0ZpbHRlciBpbml0aWFsaXplXSk6Cisg
ICAgICAgICoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tTcG90TGlnaHRGaWx0ZXIu
bToKKyAgICAgICAgKC1bV0tTcG90TGlnaHRGaWx0ZXIgb3V0cHV0SW1hZ2VdKToKKyAgICAgICAg
KiBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS1RhYmxlVHJhbnNmZXJGaWx0ZXIubToK
KyAgICAgICAgKC1bV0tUYWJsZVRyYW5zZmVyRmlsdGVyIG91dHB1dEltYWdlXSk6CisKIDIwMDYt
MDgtMDIgIE1pdHogUGV0dGVsICA8b3BlbmRhcndpbi5vcmdAbWl0enBldHRlbC5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4uCkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1
YXJ0ei9maWx0ZXJzL1dLRGlmZnVzZUxpZ2h0aW5nRmlsdGVyLm0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9rY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0RpZmZ1c2VMaWdodGluZ0ZpbHRl
ci5tCShyZXZpc2lvbiAxNTc1OCkKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L2Zp
bHRlcnMvV0tEaWZmdXNlTGlnaHRpbmdGaWx0ZXIubQkod29ya2luZyBjb3B5KQpAQCAtMzcsNyAr
MzcsNyBAQCBzdGF0aWMgQ0lLZXJuZWwgKmRpZmZ1c2VMaWdodGluZ0ZpbHRlciA9CiAgICAgICAg
ICAgICAgICAgICAgICBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmtDSUNhdGVnb3J5U3R5bGl6
ZSwga0NJQ2F0ZWdvcnlWaWRlbywKICAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lDYXRlZ29y
eVN0aWxsSW1hZ2UsIGtDSUNhdGVnb3J5Tm9uU3F1YXJlUGl4ZWxzLG5pbF0sIGtDSUF0dHJpYnV0
ZUZpbHRlckNhdGVnb3JpZXMsCiAgICAgICAgICAgICAgICAgICAgICBbTlNEaWN0aW9uYXJ5IGRp
Y3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgW0NJ
Q29sb3IgY29sb3JXaXRoUmVkOjEuMCBncmVlbjoxLjAgYmx1ZToxLjAgYWxwaGE6MS4wXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBbQ0lDb2xvciBjb2xvcldpdGhSZWQ6MS4wZiBncmVlbjox
LjBmIGJsdWU6MS4wZiBhbHBoYToxLjBmXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lB
dHRyaWJ1dGVEZWZhdWx0LCBuaWxdLCBAImlucHV0TGlnaHRpbmdDb2xvciIsCiAgICAgICAgICAg
ICAgICAgICAgICBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MC4wXSwg
a0NJQXR0cmlidXRlTWluLApJbmRleDogV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovZmls
dGVycy9XS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tj
YW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5tCShy
ZXZpc2lvbiAxNTc1OCkKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMv
V0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcg
QEAgc3RhdGljIENJS2VybmVsICpkaXNjcmV0ZVRyYW5zZmVyRmlsdGVyIAogICAgIENJU2FtcGxl
ciAqaW5wdXRTYW1wbGVyID0gW0NJU2FtcGxlciBzYW1wbGVyV2l0aEltYWdlOiBpbnB1dEltYWdl
XTsKICAgICBDSVNhbXBsZXIgKnRhYmxlU2FtcGxlciA9IFtDSVNhbXBsZXIgc2FtcGxlcldpdGhJ
bWFnZTogaW5wdXRUYWJsZSBrZXlzQW5kVmFsdWVzOmtDSVNhbXBsZXJGaWx0ZXJNb2RlLCBrQ0lT
YW1wbGVyRmlsdGVyTmVhcmVzdCwga0NJU2FtcGxlcldyYXBNb2RlLCBrQ0lTYW1wbGVyV3JhcENs
YW1wLCBuaWxdOwogICAgIE5TQXJyYXkgKmFyZ3MgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Rz
OmlucHV0U2FtcGxlciwgdGFibGVTYW1wbGVyLCBpbnB1dFNlbGVjdG9yLCAKLSAgICAgICAgW05T
TnVtYmVyIG51bWJlcldpdGhGbG9hdDpbaW5wdXRUYWJsZSBleHRlbnRdLnNpemUud2lkdGgtMS4w
XSwgQCJkZWZpbml0aW9uIiwgW2lucHV0U2FtcGxlciBkZWZpbml0aW9uXSwgbmlsXTsKKyAgICAg
ICAgW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpbaW5wdXRUYWJsZSBleHRlbnRdLnNpemUud2lk
dGggLSAxLjBmXSwgQCJkZWZpbml0aW9uIiwgW2lucHV0U2FtcGxlciBkZWZpbml0aW9uXSwgbmls
XTsKICAgICByZXR1cm4gW3NlbGYgYXBwbHk6ZGlzY3JldGVUcmFuc2ZlckZpbHRlciBhcmd1bWVu
dHM6YXJncyBvcHRpb25zOm5pbF07CiB9CiAKSW5kZXg6IFdlYkNvcmUva2NhbnZhcy9kZXZpY2Uv
cXVhcnR6L2ZpbHRlcnMvV0tEaXNwbGFjZW1lbnRNYXBGaWx0ZXIubQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLRGlzcGxhY2VtZW50TWFwRmls
dGVyLm0JKHJldmlzaW9uIDE1NzU4KQorKysgV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHov
ZmlsdGVycy9XS0Rpc3BsYWNlbWVudE1hcEZpbHRlci5tCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwx
MCArMzgsMTAgQEAgc3RhdGljIENJS2VybmVsICpkaXNwbGFjZW1lbnRNYXBGaWx0ZXIgPQogICAg
ICAgICAgICAgICAgICAgICAgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czprQ0lDYXRlZ29yeVN0
eWxpemUsIGtDSUNhdGVnb3J5VmlkZW8sCiAgICAgICAgICAgICAgICAgICAgICAgICAga0NJQ2F0
ZWdvcnlTdGlsbEltYWdlLCBrQ0lDYXRlZ29yeU5vblNxdWFyZVBpeGVscyxuaWxdLCBrQ0lBdHRy
aWJ1dGVGaWx0ZXJDYXRlZ29yaWVzLAogICAgICAgICAgICAgICAgICAgICAgW05TRGljdGlvbmFy
eSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICAgICAgICAgICAgICAgICAg
IFtDSVZlY3RvciB2ZWN0b3JXaXRoWDoxLjAgWTowLjAgWjowLjAgVzowLjBdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIFtDSVZlY3RvciB2ZWN0b3JXaXRoWDoxLjBmIFk6MC4wZiBaOjAuMGYg
VzowLjBmXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lBdHRyaWJ1dGVEZWZhdWx0LCBu
aWxdLCBAImlucHV0WENoYW5uZWxTZWxlY3RvciIsICAgCiAgICAgICAgICAgICAgICAgICAgICBb
TlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgW0NJVmVjdG9yIHZlY3RvcldpdGhYOjAuMCBZOjEuMCBaOjAuMCBXOjAuMF0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgW0NJVmVjdG9yIHZlY3RvcldpdGhYOjAuMGYgWTox
LjBmIFo6MC4wZiBXOjAuMGZdLAogICAgICAgICAgICAgICAgICAgICAgICAgIGtDSUF0dHJpYnV0
ZURlZmF1bHQsIG5pbF0sIEAiaW5wdXRZQ2hhbm5lbFNlbGVjdG9yIiwgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmpl
Y3RzQW5kS2V5czoKICAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aERvdWJsZTowLjBdLCBrQ0lBdHRyaWJ1dGVEZWZhdWx0LApJbmRleDogV2ViQ29yZS9rY2FudmFz
L2RldmljZS9xdWFydHovZmlsdGVycy9XS1NwZWN1bGFyTGlnaHRpbmdGaWx0ZXIubQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLU3BlY3VsYXJM
aWdodGluZ0ZpbHRlci5tCShyZXZpc2lvbiAxNTc1OCkKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZp
Y2UvcXVhcnR6L2ZpbHRlcnMvV0tTcGVjdWxhckxpZ2h0aW5nRmlsdGVyLm0JKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIENJS2VybmVsICpzcGVjdWxhckxpZ2h0aW5nRmls
dGVyIAogICAgICAgICAgICAgICAgICAgICAgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czprQ0lD
YXRlZ29yeVN0eWxpemUsIGtDSUNhdGVnb3J5VmlkZW8sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAga0NJQ2F0ZWdvcnlTdGlsbEltYWdlLCBrQ0lDYXRlZ29yeU5vblNxdWFyZVBpeGVscyxuaWxd
LCBrQ0lBdHRyaWJ1dGVGaWx0ZXJDYXRlZ29yaWVzLAogICAgICAgICAgICAgICAgICAgICAgW05T
RGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICAgICAgICAg
ICAgICAgICAgIFtDSUNvbG9yIGNvbG9yV2l0aFJlZDoxLjAgZ3JlZW46MS4wIGJsdWU6MS4wIGFs
cGhhOjEuMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW0NJQ29sb3IgY29sb3JXaXRoUmVk
OjEuMGYgZ3JlZW46MS4wZiBibHVlOjEuMGYgYWxwaGE6MS4wZl0sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAga0NJQXR0cmlidXRlRGVmYXVsdCwgbmlsXSwgIEAiaW5wdXRMaWdodGluZ0NvbG9y
IiwKICAgICAgICAgICAgICAgICAgICAgIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmpl
Y3RzQW5kS2V5czoKICAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aERvdWJsZTowLjBdLCBrQ0lBdHRyaWJ1dGVNaW4sCkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2
aWNlL3F1YXJ0ei9maWx0ZXJzL1dLU3BvdExpZ2h0RmlsdGVyLm0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9rY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS1Nwb3RMaWdodEZpbHRlci5tCShy
ZXZpc2lvbiAxNTc1OCkKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMv
V0tTcG90TGlnaHRGaWx0ZXIubQkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBzdGF0
aWMgQ0lLZXJuZWwgKnNwb3RMaWdodEZpbHRlciA9IG5pbDsKIAogLSAoQ0lJbWFnZSAqKW91dHB1
dEltYWdlCiB7Ci0gICAgZmxvYXQgY29zY3V0b2ZmID0gY29zKFtpbnB1dExpbWl0aW5nQ29uZUFu
Z2xlIGZsb2F0VmFsdWVdKTsKKyAgICBmbG9hdCBjb3NjdXRvZmYgPSBjb3NmKFtpbnB1dExpbWl0
aW5nQ29uZUFuZ2xlIGZsb2F0VmFsdWVdKTsKICAgICBpZiAoY29zY3V0b2ZmIDwgMCkgCiAgICAg
ICAgIGNvc2N1dG9mZiA9IC1jb3NjdXRvZmY7CiAgICAgcmV0dXJuIFtzZWxmIGFwcGx5OnNwb3RM
aWdodEZpbHRlciwgaW5wdXRMaWdodFZlY3RvcnMsIGlucHV0TGlnaHREaXJlY3Rpb24sIGlucHV0
U3BlY3VsYXJFeHBvbmVudCwgW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpjb3NjdXRvZmZdLCBu
aWxdOwpJbmRleDogV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS1RhYmxl
VHJhbnNmZXJGaWx0ZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1
YXJ0ei9maWx0ZXJzL1dLVGFibGVUcmFuc2ZlckZpbHRlci5tCShyZXZpc2lvbiAxNTc1OCkKKysr
IFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tUYWJsZVRyYW5zZmVyRmls
dGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIENJS2VybmVsICp0
YWJsZVRyYW5zZmVyRmlsdGVyID0gbgogICAgIENJU2FtcGxlciAqaW5wdXRTYW1wbGVyID0gW0NJ
U2FtcGxlciBzYW1wbGVyV2l0aEltYWdlOiBpbnB1dEltYWdlXTsKICAgICBDSVNhbXBsZXIgKnRh
YmxlU2FtcGxlciA9IFtDSVNhbXBsZXIgc2FtcGxlcldpdGhJbWFnZTogaW5wdXRUYWJsZSBrZXlz
QW5kVmFsdWVzOmtDSVNhbXBsZXJGaWx0ZXJNb2RlLCBrQ0lTYW1wbGVyRmlsdGVyTGluZWFyLCBr
Q0lTYW1wbGVyV3JhcE1vZGUsIGtDSVNhbXBsZXJXcmFwQ2xhbXAsIG5pbF07CiAgICAgTlNBcnJh
eSAqYXJncyA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6aW5wdXRTYW1wbGVyLCB0YWJsZVNh
bXBsZXIsIGlucHV0U2VsZWN0b3IsIAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0
OltpbnB1dFRhYmxlIGV4dGVudF0uc2l6ZS53aWR0aC0xLjBdLCBAImRlZmluaXRpb24iLCBbaW5w
dXRTYW1wbGVyIGRlZmluaXRpb25dLCBuaWxdOworICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aEZsb2F0OltpbnB1dFRhYmxlIGV4dGVudF0uc2l6ZS53aWR0aCAtIDEuMGZdLCBAImRlZmluaXRp
b24iLCBbaW5wdXRTYW1wbGVyIGRlZmluaXRpb25dLCBuaWxdOwogICAgIHJldHVybiBbc2VsZiBh
cHBseTp0YWJsZVRyYW5zZmVyRmlsdGVyIGFyZ3VtZW50czphcmdzIG9wdGlvbnM6bmlsXTsKIH0K
IApJbmRleDogV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNTc1OCkKKysrIFdlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSw2NSBAQAorMjAwNi0wOC0wMiAgU2FtIFdlaW5pZyAgPHNhbS53ZWluaWdAZ21haWwu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0g
cGF0Y2ggZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAxOTIKKyAgICAgICAgICBNYWtlIFdlYkNvcmUgKGFuZCBmcmllbmRzKSBjb21waWxlIHdpdGgg
LVdzaG9ydGVuLTY0LXRvLTMyCisKKyAgICAgICAgICAqIEFkZHMgJ2YnIHRvIGZsb2F0IGxpdGVy
YWxzIHdoZXJlIGV4cGVjdGluZyBhIGZsb2F0LgorICAgICAgICAgICogVXNlIGNlaWxmKCkgaW5z
dGVhZCBvZiBjZWlsKCkgd2hlbiBhc3NpZ25pbmcgdG8gYSBmbG9hdC4KKworICAgICAgICAqIE1p
c2MvV2ViTlNDb250cm9sRXh0cmFzLm06CisgICAgICAgICgtW05TQ29udHJvbCBzaXplVG9GaXRB
bmRBZGp1c3RXaW5kb3dIZWlnaHRdKToKKyAgICAgICAgKiBNaXNjL1dlYk5TSW1hZ2VFeHRyYXMu
bToKKyAgICAgICAgKC1bTlNJbWFnZSBfd2ViX3NjYWxlVG9NYXhTaXplOl0pOgorICAgICAgICAq
IE1pc2MvV2ViTlNWaWV3RXh0cmFzLmg6CisgICAgICAgICogTWlzYy9XZWJOU1ZpZXdFeHRyYXMu
bToKKyAgICAgICAgKiBQbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubToKKyAgICAg
ICAgKC1bV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldyBzYXZlQW5kU2V0TmV3UG9ydFN0YXRlRm9y
VXBkYXRlOl0pOgorICAgICAgICAoLVtXZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3IGRyYXdSZWN0
Ol0pOgorICAgICAgICAqIFdlYkluc3BlY3Rvci9XZWJJbnNwZWN0b3IubToKKyAgICAgICAgKC1b
TlNXaW5kb3cgd2luZG93XSk6CisgICAgICAgICgtW1dlYkluc3BlY3RvciB0cmVlVmlld1Njcm9s
bFRvOl0pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3IgX3VwZGF0ZVN5c3RlbUNvbG9yc10pOgor
ICAgICAgICAoLVtXZWJJbnNwZWN0b3Igd2ViVmlldzpwbHVnSW5WaWV3V2l0aEFyZ3VtZW50czpd
KToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yIG91dGxpbmVWaWV3Om9iamVjdFZhbHVlRm9yVGFi
bGVDb2x1bW46YnlJdGVtOl0pOgorICAgICAgICAqIFdlYkluc3BlY3Rvci9XZWJJbnNwZWN0b3JP
dXRsaW5lVmlldy5tOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JPdXRsaW5lVmlldyBfaGlnaGxp
Z2h0Um93OmNsaXBSZWN0Ol0pOgorICAgICAgICAqIFdlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxp
Z2h0Lm06CisgICAgICAgICgtW1dlYk5vZGVIaWdobGlnaHQgaW5pdFdpdGhCb3VuZHM6YW5kUmVj
dHM6Zm9yVmlldzpdKToKKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodFZp
ZXcubToKKyAgICAgICAgKC1bV2ViTm9kZUhpZ2hsaWdodFZpZXcgcm91bmRlZFJlY3Q6d2l0aFJh
ZGl1czpdKToKKyAgICAgICAgKC1bV2ViTm9kZUhpZ2hsaWdodFZpZXcgaW5pdFdpdGhIaWdobGln
aHQ6YW5kUmVjdHM6Zm9yVmlldzpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm06Cisg
ICAgICAgICgtW1dlYkZyYW1lIF9vcGVuZWRdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1l
Vmlldy5tOgorICAgICAgICAoLVtXZWJGcmFtZVZpZXcgaW5pdFdpdGhGcmFtZTpdKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9kcmFn
SW1hZ2VGb3JMaW5rRWxlbWVudDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3dlYl9zZXRQ
cmludGluZ01vZGVSZWN1cnNpdmVdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3dlYl9jbGVh
clByaW50aW5nTW9kZVJlY3Vyc2l2ZV0pOgorICAgICAgICAoLVtOU0FycmF5IGxheW91dF0pOgor
ICAgICAgICAoLVtOU0FycmF5IF9zZXRQcmludGluZzptaW5pbXVtUGFnZVdpZHRoOm1heGltdW1Q
YWdlV2lkdGg6YWRqdXN0Vmlld1NpemU6XSk6CisgICAgICAgICgtW05TQXJyYXkgYWRqdXN0UGFn
ZUhlaWdodE5ldzp0b3A6Ym90dG9tOmxpbWl0Ol0pOgorICAgICAgICAoLVtOU0FycmF5IF9zY2Fs
ZUZhY3RvckZvclByaW50T3BlcmF0aW9uOl0pOgorICAgICAgICAoLVtOU0FycmF5IHNldFBhZ2VX
aWR0aEZvclByaW50aW5nOl0pOgorICAgICAgICAoLVtOU0FycmF5IF9lbmRQcmludE1vZGVdKToK
KyAgICAgICAgKC1bTlNBcnJheSBrbm93c1BhZ2VSYW5nZTpdKToKKyAgICAgICAgKC1bTlNBcnJh
eSBfb3JpZ2luYWxGb250QV0pOgorICAgICAgICAoLVtOU0FycmF5IF9vcmlnaW5hbEZvbnRCXSk6
CisgICAgICAgICgtW1dlYlRleHRDb21wbGV0ZUNvbnRyb2xsZXIgX2J1aWxkVUldKToKKyAgICAg
ICAgKC1bV2ViVGV4dENvbXBsZXRlQ29udHJvbGxlciBfcGxhY2VQb3B1cFdpbmRvdzpdKToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlBERlZpZXcubToKKyAgICAgICAgKC1bV2ViUERGVmlldyBfbWFr
ZVRleHRTdGFuZGFyZFNpemU6XSk6CisgICAgICAgICgtW1dlYlBERlZpZXcgc2VsZWN0aW9uSW1h
Z2VGb3JjaW5nV2hpdGVUZXh0Ol0pOgorICAgICAgICAoLVtQREZQcmVmVXBkYXRpbmdQcm94eSBm
b3J3YXJkSW52b2NhdGlvbjpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm06
CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9mbG9hdFZhbHVlRm9yS2V5Ol0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViVmlldy5tOgorICAgICAgICAoLVtXZWJWaWV3IG1ha2VUZXh0U21hbGxl
cjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBjYW5NYWtlVGV4dFN0YW5kYXJkU2l6ZV0pOgorICAg
ICAgICAoLVtXZWJWaWV3IG1ha2VUZXh0U3RhbmRhcmRTaXplOl0pOgorCiAyMDA2LTA4LTAyICBN
YWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
Sm9obi4KSW5kZXg6IFdlYktpdC9NaXNjL1dlYk5TQ29udHJvbEV4dHJhcy5tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9NaXNjL1dlYk5TQ29udHJvbEV4dHJhcy5tCShyZXZpc2lvbiAxNTc1OCkKKysr
IFdlYktpdC9NaXNjL1dlYk5TQ29udHJvbEV4dHJhcy5tCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3
ICszNCw3IEBACiB7CiAgICAgTlNSZWN0IGZyYW1lID0gW3NlbGYgZnJhbWVdOwogCi0gICAgTlNT
aXplIGJlc3RTaXplID0gW1tzZWxmIGNlbGxdIGNlbGxTaXplRm9yQm91bmRzOk5TTWFrZVJlY3Qo
MCwgMCwgZnJhbWUuc2l6ZS53aWR0aCwgMTAwMDAuMCldOworICAgIE5TU2l6ZSBiZXN0U2l6ZSA9
IFtbc2VsZiBjZWxsXSBjZWxsU2l6ZUZvckJvdW5kczpOU01ha2VSZWN0KDAuMGYsIDAuMGYsIGZy
YW1lLnNpemUud2lkdGgsIDEwMDAwLjBmKV07CiAgICAgCiAgICAgZmxvYXQgaGVpZ2h0RGVsdGEg
PSBiZXN0U2l6ZS5oZWlnaHQgLSBmcmFtZS5zaXplLmhlaWdodDsKIApJbmRleDogV2ViS2l0L01p
c2MvV2ViTlNJbWFnZUV4dHJhcy5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9NaXNjL1dlYk5TSW1h
Z2VFeHRyYXMubQkocmV2aXNpb24gMTU3NTgpCisrKyBXZWJLaXQvTWlzYy9XZWJOU0ltYWdlRXh0
cmFzLm0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKIAogLSAodm9pZClfd2ViX3Nj
YWxlVG9NYXhTaXplOihOU1NpemUpc2l6ZQogewotICAgIGZsb2F0IGhlaWdodFJlc2l6ZURlbHRh
ID0gMC4wLCB3aWR0aFJlc2l6ZURlbHRhID0gMC4wLCByZXNpemVEZWx0YSA9IDAuMDsKKyAgICBm
bG9hdCBoZWlnaHRSZXNpemVEZWx0YSA9IDAuMGYsIHdpZHRoUmVzaXplRGVsdGEgPSAwLjBmLCBy
ZXNpemVEZWx0YSA9IDAuMGY7CiAgICAgTlNTaXplIG9yaWdpbmFsU2l6ZSA9IFtzZWxmIHNpemVd
OwogCiAgICAgaWYob3JpZ2luYWxTaXplLndpZHRoID4gc2l6ZS53aWR0aCl7CkluZGV4OiBXZWJL
aXQvTWlzYy9XZWJOU1ZpZXdFeHRyYXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvTWlzYy9XZWJO
U1ZpZXdFeHRyYXMuaAkocmV2aXNpb24gMTU3NTgpCisrKyBXZWJLaXQvTWlzYy9XZWJOU1ZpZXdF
eHRyYXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaW1wb3J0IDxBcHBL
aXQvQXBwS2l0Lmg+CiAKLSNkZWZpbmUgV2ViRHJhZ0ltYWdlQWxwaGEgMC43NQorI2RlZmluZSBX
ZWJEcmFnSW1hZ2VBbHBoYSAwLjc1ZgogCiBAY2xhc3MgRE9NRWxlbWVudDsKIEBjbGFzcyBXZWJG
cmFtZVZpZXc7CkluZGV4OiBXZWJLaXQvTWlzYy9XZWJOU1ZpZXdFeHRyYXMubQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvTWlzYy9XZWJOU1ZpZXdFeHRyYXMubQkocmV2aXNpb24gMTU3NTgpCisrKyBX
ZWJLaXQvTWlzYy9XZWJOU1ZpZXdFeHRyYXMubQkod29ya2luZyBjb3B5KQpAQCAtMzcsMTIgKzM3
LDEyIEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPFdlYktp
dFN5c3RlbUludGVyZmFjZS5oPgogCi0jZGVmaW5lIFdlYkRyYWdTdGFydEh5c3RlcmVzaXNYICAg
ICAgICAgICAgICAgICA1LjAKLSNkZWZpbmUgV2ViRHJhZ1N0YXJ0SHlzdGVyZXNpc1kgICAgICAg
ICAgICAgICAgIDUuMAotI2RlZmluZSBXZWJNYXhEcmFnSW1hZ2VTaXplICAgICAgICAgICAgICAg
ICAgICAgTlNNYWtlU2l6ZSg0MDAsIDQwMCkKLSNkZWZpbmUgV2ViTWF4T3JpZ2luYWxJbWFnZUFy
ZWEgICAgICAgICAgICAgICAgICgxNTAwICogMTUwMCkKLSNkZWZpbmUgV2ViRHJhZ0ljb25SaWdo
dEluc2V0ICAgICAgICAgICAgICAgICAgIDcuMAotI2RlZmluZSBXZWJEcmFnSWNvbkJvdHRvbUlu
c2V0ICAgICAgICAgICAgICAgICAgMy4wCisjZGVmaW5lIFdlYkRyYWdTdGFydEh5c3RlcmVzaXNY
ICAgICAgICAgICAgICAgICA1LjBmCisjZGVmaW5lIFdlYkRyYWdTdGFydEh5c3RlcmVzaXNZICAg
ICAgICAgICAgICAgICA1LjBmCisjZGVmaW5lIFdlYk1heERyYWdJbWFnZVNpemUgICAgICAgICAg
ICAgICAgICAgICBOU01ha2VTaXplKDQwMC4wZiwgNDAwLjBmKQorI2RlZmluZSBXZWJNYXhPcmln
aW5hbEltYWdlQXJlYSAgICAgICAgICAgICAgICAgKDE1MDAuMGYgKiAxNTAwLjBmKQorI2RlZmlu
ZSBXZWJEcmFnSWNvblJpZ2h0SW5zZXQgICAgICAgICAgICAgICAgICAgNy4wZgorI2RlZmluZSBX
ZWJEcmFnSWNvbkJvdHRvbUluc2V0ICAgICAgICAgICAgICAgICAgMy4wZgogCiBAaW1wbGVtZW50
YXRpb24gTlNWaWV3IChXZWJFeHRyYXMpCiAKSW5kZXg6IFdlYktpdC9QbHVnaW5zL1dlYkJhc2VO
ZXRzY2FwZVBsdWdpblZpZXcubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvUGx1Z2lucy9XZWJCYXNl
TmV0c2NhcGVQbHVnaW5WaWV3Lm0JKHJldmlzaW9uIDE1NzU4KQorKysgV2ViS2l0L1BsdWdpbnMv
V2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tCSh3b3JraW5nIGNvcHkpCkBAIC00NzgsNyArNDc4
LDcgQEAgc3RhdGljIE9TU3RhdHVzIFRTTUV2ZW50SGFuZGxlcihFdmVudEhhbgogICAgICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgaGVpZ2h0OwogICAg
ICAgICAgICAgICAgICAgICBpZiAoW3NlbGYgX2dldEFHTE9mZnNjcmVlbkJ1ZmZlcjpOVUxMIHdp
ZHRoOiZ3aWR0aCBoZWlnaHQ6JmhlaWdodF0pCi0gICAgICAgICAgICAgICAgICAgICAgICBnbFZp
ZXdwb3J0KDAuMCwgMC4wLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGdsVmlld3BvcnQoMCwgMCwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIApAQCAtMTQ5Niw4ICsxNDk2LDgg
QEAgc3RhdGljIE9TU3RhdHVzIFRTTUV2ZW50SGFuZGxlcihFdmVudEhhbgogICAgICAgICAgICAg
Q0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IFtbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRl
eHRdIGdyYXBoaWNzUG9ydF07CiAgICAgICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNnQ29u
dGV4dCk7CiAgICAgICAgICAgICBOU1JlY3QgYm91bmRzID0gW3NlbGYgYm91bmRzXTsKLSAgICAg
ICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjZ0NvbnRleHQsIDAuMCwgTlNIZWlnaHQoYm91
bmRzKSk7Ci0gICAgICAgICAgICBDR0NvbnRleHRTY2FsZUNUTShjZ0NvbnRleHQsIDEuMCwgLTEu
MCk7CisgICAgICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY2dDb250ZXh0LCAwLjBmLCBO
U0hlaWdodChib3VuZHMpKTsKKyAgICAgICAgICAgIENHQ29udGV4dFNjYWxlQ1RNKGNnQ29udGV4
dCwgMS4wZiwgLTEuMGYpOwogICAgICAgICAgICAgW3ByaW50ZWRQbHVnaW5CaXRtYXAgZHJhd0lu
UmVjdDpib3VuZHNdOwogICAgICAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjZ0NvbnRl
eHQpOwogICAgICAgICB9CkBAIC0xNTExLDEzICsxNTExLDEzIEBAIHN0YXRpYyBPU1N0YXR1cyBU
U01FdmVudEhhbmRsZXIoRXZlbnRIYW4KICAgICAgICAgICAgIENHQ29udGV4dFJlZiBjZ0NvbnRl
eHQgPSBbW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSBncmFwaGljc1BvcnRdOwog
ICAgICAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjZ0NvbnRleHQpOwogICAgICAgICAgICAg
TlNSZWN0IGJvdW5kcyA9IFtzZWxmIGJvdW5kc107Ci0gICAgICAgICAgICBDR0NvbnRleHRUcmFu
c2xhdGVDVE0oY2dDb250ZXh0LCAwLjAsIE5TSGVpZ2h0KGJvdW5kcykpOwotICAgICAgICAgICAg
Q0dDb250ZXh0U2NhbGVDVE0oY2dDb250ZXh0LCAxLjAsIC0xLjApOworICAgICAgICAgICAgQ0dD
b250ZXh0VHJhbnNsYXRlQ1RNKGNnQ29udGV4dCwgMC4wZiwgTlNIZWlnaHQoYm91bmRzKSk7Cisg
ICAgICAgICAgICBDR0NvbnRleHRTY2FsZUNUTShjZ0NvbnRleHQsIDEuMGYsIC0xLjBmKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgLy8gQ29weSAncmVjdCcgZnJvbSB0aGUgb2Zmc2NyZWVu
IGJ1ZmZlciB0byB0aGlzIHZpZXcgKHRoZSBmbGlwIGFib3ZlIG1ha2VzIHRoaXMgc29ydCBvZiB0
cmlja3kpCiAgICAgICAgICAgICBOU1JlY3QgZmxpcHBlZFJlY3QgPSByZWN0OwogICAgICAgICAg
ICAgZmxpcHBlZFJlY3Qub3JpZ2luLnkgPSBOU01heFkoYm91bmRzKSAtIE5TTWF4WShmbGlwcGVk
UmVjdCk7Ci0gICAgICAgICAgICBbYWdsT2Zmc2NyZWVuSW1hZ2UgZHJhd0luUmVjdDpmbGlwcGVk
UmVjdCBmcm9tUmVjdDpmbGlwcGVkUmVjdCBvcGVyYXRpb246TlNDb21wb3NpdGVTb3VyY2VPdmVy
IGZyYWN0aW9uOjEuMF07CisgICAgICAgICAgICBbYWdsT2Zmc2NyZWVuSW1hZ2UgZHJhd0luUmVj
dDpmbGlwcGVkUmVjdCBmcm9tUmVjdDpmbGlwcGVkUmVjdCBvcGVyYXRpb246TlNDb21wb3NpdGVT
b3VyY2VPdmVyIGZyYWN0aW9uOjEuMGZdOwogICAgICAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdT
dGF0ZShjZ0NvbnRleHQpOwogICAgICAgICB9CiAgICAgfQpJbmRleDogV2ViS2l0L1dlYkluc3Bl
Y3Rvci9XZWJJbnNwZWN0b3IubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViSW5zcGVjdG9yL1dl
Ykluc3BlY3Rvci5tCShyZXZpc2lvbiAxNTc1OCkKKysrIFdlYktpdC9XZWJJbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yLm0JKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNyBAQCBzdGF0aWMgTlNN
YXBUYWJsZSAqbGFzdENoaWxkSWdub3JpbmdXaGl0CiB7CiAgICAgTlNXaW5kb3cgKndpbmRvdyA9
IFtzdXBlciB3aW5kb3ddOwogICAgIGlmICghd2luZG93KSB7Ci0gICAgICAgIE5TUGFuZWwgKndp
bmRvdyA9IFtbV2ViSW5zcGVjdG9yUGFuZWwgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6TlNN
YWtlUmVjdCg2MC4wLCAyMDAuMCwgMzUwLjAsIDU1MC4wKVwKKyAgICAgICAgTlNQYW5lbCAqd2lu
ZG93ID0gW1tXZWJJbnNwZWN0b3JQYW5lbCBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpOU01h
a2VSZWN0KDYwLjBmLCAyMDAuMGYsIDM1MC4wZiwgNTUwLjBmKVwKICAgICAgICAgICAgIHN0eWxl
TWFzazooTlNCb3JkZXJsZXNzV2luZG93TWFzayB8IE5TVXRpbGl0eVdpbmRvd01hc2spIGJhY2tp
bmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpZRVNdOwogICAgICAgICBbd2luZG93IHNl
dEJhY2tncm91bmRDb2xvcjpbTlNDb2xvciBjbGVhckNvbG9yXV07CiAgICAgICAgIFt3aW5kb3cg
c2V0T3BhcXVlOk5PXTsKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdGF0aWMgTlNNYXBUYWJsZSAqbGFz
dENoaWxkSWdub3JpbmdXaGl0CiAgICAgICAgIFt3aW5kb3cgc2V0TW92YWJsZUJ5V2luZG93QmFj
a2dyb3VuZDpZRVNdOwogICAgICAgICBbd2luZG93IHNldEhpZGVzT25EZWFjdGl2YXRlOk5PXTsK
ICAgICAgICAgW3dpbmRvdyBzZXREZWxlZ2F0ZTpzZWxmXTsKLSAgICAgICAgW3dpbmRvdyBzZXRN
aW5TaXplOk5TTWFrZVNpemUoMjgwLjAsIDQ1MC4wKV07CisgICAgICAgIFt3aW5kb3cgc2V0TWlu
U2l6ZTpOU01ha2VTaXplKDI4MC4wZiwgNDUwLjBmKV07CiAKICAgICAgICAgLy8gS2VlcCBwcmVm
ZXJlbmNlcyBzZXBhcmF0ZSBmcm9tIHRoZSByZXN0IG9mIHRoZSBjbGllbnQuCiAgICAgICAgIC8v
IE9uZSByZWFzb24gdGhpcyBpcyBnb29kIGlzIHRoYXQgaXQga2VlcHMgdGhlIGluc3BlY3RvciBv
dXQgb2YgaGlzdG9yeSB2aWEgInByaXZhdGUgYnJvd3NpbmciLgpAQCAtNDE1LDggKzQxNSw4IEBA
IHN0YXRpYyBOU01hcFRhYmxlICpsYXN0Q2hpbGRJZ25vcmluZ1doaXQKIC0gKHZvaWQpdHJlZVZp
ZXdTY3JvbGxUbzooZmxvYXQpbnVtYmVyCiB7CiAgICAgZmxvYXQgYm90dG9tID0gTlNIZWlnaHQo
W19wcml2YXRlLT50cmVlT3V0bGluZVZpZXcgZnJhbWVdKSAtIE5TSGVpZ2h0KFtfcHJpdmF0ZS0+
dHJlZVNjcm9sbFZpZXcgZG9jdW1lbnRWaXNpYmxlUmVjdF0pOwotICAgIG51bWJlciA9IE1BWCgw
LjAsIE1JTihib3R0b20sIG51bWJlcikpOwotICAgIFtbX3ByaXZhdGUtPnRyZWVTY3JvbGxWaWV3
IGNvbnRlbnRWaWV3XSBzY3JvbGxUb1BvaW50Ok5TTWFrZVBvaW50KDAuMCwgbnVtYmVyKV07Cisg
ICAgbnVtYmVyID0gTUFYKDAuMGYsIE1JTihib3R0b20sIG51bWJlcikpOworICAgIFtbX3ByaXZh
dGUtPnRyZWVTY3JvbGxWaWV3IGNvbnRlbnRWaWV3XSBzY3JvbGxUb1BvaW50Ok5TTWFrZVBvaW50
KDAuMGYsIG51bWJlcildOwogfQogCiAtIChmbG9hdCl0cmVlVmlld09mZnNldFRvcApAQCAtNzcz
LDcgKzc3Myw3IEBAIHN0YXRpYyBOU01hcFRhYmxlICpsYXN0Q2hpbGRJZ25vcmluZ1doaXQKICAg
ICBpZiAoIV9wcml2YXRlLT53ZWJWaWV3TG9hZGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBD
R0Zsb2F0IHJlZCA9IDAuMCwgZ3JlZW4gPSAwLjAsIGJsdWUgPSAwLjA7CisgICAgQ0dGbG9hdCBy
ZWQgPSAwLjBmLCBncmVlbiA9IDAuMGYsIGJsdWUgPSAwLjBmOwogICAgIE5TQ29sb3IgKmNvbG9y
ID0gW1tOU0NvbG9yIGFsdGVybmF0ZVNlbGVjdGVkQ29udHJvbENvbG9yXSBjb2xvclVzaW5nQ29s
b3JTcGFjZU5hbWU6TlNEZXZpY2VSR0JDb2xvclNwYWNlXTsKICAgICBbY29sb3IgZ2V0UmVkOiZy
ZWQgZ3JlZW46JmdyZWVuIGJsdWU6JmJsdWUgYWxwaGE6TlVMTF07CiAKQEAgLTg2OSw3ICs4Njks
NyBAQCBzdGF0aWMgTlNNYXBUYWJsZSAqbGFzdENoaWxkSWdub3JpbmdXaGl0CiAgICAgTlNEaWN0
aW9uYXJ5ICphdHRyaWJ1dGVzID0gW2FyZ3VtZW50cyBvYmplY3RGb3JLZXk6QCJXZWJQbHVnSW5B
dHRyaWJ1dGVzS2V5Il07CiAgICAgaWYgKFtbYXR0cmlidXRlcyBvYmplY3RGb3JLZXk6QCJ0eXBl
Il0gaXNFcXVhbFRvU3RyaW5nOkAiYXBwbGljYXRpb24veC1pbnNwZWN0b3ItdHJlZSJdKSB7CiAg
ICAgICAgIGlmICghX3ByaXZhdGUtPnRyZWVPdXRsaW5lVmlldykgewotICAgICAgICAgICAgX3By
aXZhdGUtPnRyZWVTY3JvbGxWaWV3ID0gW1tOU1Njcm9sbFZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLjAsIDAuMCwgMjUwLjAsIDEwMC4wKV07CisgICAgICAgICAgICBfcHJp
dmF0ZS0+dHJlZVNjcm9sbFZpZXcgPSBbW05TU2Nyb2xsVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAuMGYsIDAuMGYsIDI1MC4wZiwgMTAwLjBmKV07CiAgICAgICAgICAgICBb
X3ByaXZhdGUtPnRyZWVTY3JvbGxWaWV3IHNldERyYXdzQmFja2dyb3VuZDpOT107CiAgICAgICAg
ICAgICBbX3ByaXZhdGUtPnRyZWVTY3JvbGxWaWV3IHNldEJvcmRlclR5cGU6TlNOb0JvcmRlcl07
CiAgICAgICAgICAgICBbX3ByaXZhdGUtPnRyZWVTY3JvbGxWaWV3IHNldFZlcnRpY2FsU2Nyb2xs
ZXI6Tk9dOwpAQCAtODg2LDE1ICs4ODYsMTUgQEAgc3RhdGljIE5TTWFwVGFibGUgKmxhc3RDaGls
ZElnbm9yaW5nV2hpdAogICAgICAgICAgICAgW19wcml2YXRlLT50cmVlT3V0bGluZVZpZXcgc2Vu
ZEFjdGlvbk9uOihOU0xlZnRNb3VzZVVwTWFzayB8IE5TTGVmdE1vdXNlRG93bk1hc2sgfCBOU0xl
ZnRNb3VzZURyYWdnZWRNYXNrKV07CiAgICAgICAgICAgICBbX3ByaXZhdGUtPnRyZWVPdXRsaW5l
VmlldyBzZXRGb2N1c1JpbmdUeXBlOk5TRm9jdXNSaW5nVHlwZU5vbmVdOwogICAgICAgICAgICAg
W19wcml2YXRlLT50cmVlT3V0bGluZVZpZXcgc2V0QXV0b3Jlc2l6ZXNPdXRsaW5lQ29sdW1uOk5P
XTsKLSAgICAgICAgICAgIFtfcHJpdmF0ZS0+dHJlZU91dGxpbmVWaWV3IHNldFJvd0hlaWdodDox
NS4wXTsKKyAgICAgICAgICAgIFtfcHJpdmF0ZS0+dHJlZU91dGxpbmVWaWV3IHNldFJvd0hlaWdo
dDoxNS4wZl07CiAgICAgICAgICAgICBbX3ByaXZhdGUtPnRyZWVPdXRsaW5lVmlldyBzZXRUYXJn
ZXQ6c2VsZl07CiAgICAgICAgICAgICBbX3ByaXZhdGUtPnRyZWVPdXRsaW5lVmlldyBzZXREb3Vi
bGVBY3Rpb246QHNlbGVjdG9yKF9mb2N1c1Jvb3ROb2RlOildOwotICAgICAgICAgICAgW19wcml2
YXRlLT50cmVlT3V0bGluZVZpZXcgc2V0SW5kZW50YXRpb25QZXJMZXZlbDoxMi4wXTsKKyAgICAg
ICAgICAgIFtfcHJpdmF0ZS0+dHJlZU91dGxpbmVWaWV3IHNldEluZGVudGF0aW9uUGVyTGV2ZWw6
MTIuMGZdOwogICAgICAgICAgICAgW19wcml2YXRlLT50cmVlU2Nyb2xsVmlldyBzZXREb2N1bWVu
dFZpZXc6X3ByaXZhdGUtPnRyZWVPdXRsaW5lVmlld107CiAKICAgICAgICAgICAgIE5TQ2VsbCAq
aGVhZGVyQ2VsbCA9IFtbTlNDZWxsIGFsbG9jXSBpbml0VGV4dENlbGw6QCIiXTsKICAgICAgICAg
ICAgIE5TQ2VsbCAqZGF0YUNlbGwgPSBbW05TQ2VsbCBhbGxvY10gaW5pdFRleHRDZWxsOkAiIl07
Ci0gICAgICAgICAgICBbZGF0YUNlbGwgc2V0Rm9udDpbTlNGb250IHN5c3RlbUZvbnRPZlNpemU6
MTEuMF1dOworICAgICAgICAgICAgW2RhdGFDZWxsIHNldEZvbnQ6W05TRm9udCBzeXN0ZW1Gb250
T2ZTaXplOjExLjBmXV07CiAKICAgICAgICAgICAgIE5TVGFibGVDb2x1bW4gKnRhYmxlQ29sdW1u
ID0gW1tOU1RhYmxlQ29sdW1uIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6QCJub2RlIl07CiAg
ICAgICAgICAgICBbdGFibGVDb2x1bW4gc2V0SGVhZGVyQ2VsbDpoZWFkZXJDZWxsXTsKQEAgLTk3
Myw4ICs5NzMsOCBAQCBzdGF0aWMgTlNNYXBUYWJsZSAqbGFzdENoaWxkSWdub3JpbmdXaGl0CiAg
ICAgaWYgKG91dGxpbmVWaWV3ID09IF9wcml2YXRlLT50cmVlT3V0bGluZVZpZXcgJiYgbm9kZSkg
ewogICAgICAgICBOU1NoYWRvdyAqc2hhZG93ID0gW1tOU1NoYWRvdyBhbGxvY10gaW5pdF07CiAg
ICAgICAgIFtzaGFkb3cgc2V0U2hhZG93Q29sb3I6W05TQ29sb3IgYmxhY2tDb2xvcl1dOwotICAg
ICAgICBbc2hhZG93IHNldFNoYWRvd0JsdXJSYWRpdXM6Mi4wXTsKLSAgICAgICAgW3NoYWRvdyBz
ZXRTaGFkb3dPZmZzZXQ6TlNNYWtlU2l6ZSgyLjAsLTIuMCldOworICAgICAgICBbc2hhZG93IHNl
dFNoYWRvd0JsdXJSYWRpdXM6Mi4wZl07CisgICAgICAgIFtzaGFkb3cgc2V0U2hhZG93T2Zmc2V0
Ok5TTWFrZVNpemUoMi4wZiwgLTIuMGYpXTsKICAgICAgICAgTlNNdXRhYmxlUGFyYWdyYXBoU3R5
bGUgKnBhcmEgPSBbW05TUGFyYWdyYXBoU3R5bGUgZGVmYXVsdFBhcmFncmFwaFN0eWxlXSBtdXRh
YmxlQ29weV07CiAgICAgICAgIFtwYXJhIHNldExpbmVCcmVha01vZGU6TlNMaW5lQnJlYWtCeVRy
dW5jYXRpbmdUYWlsXTsKICAgICAgICAgCkBAIC05ODMsNyArOTgzLDcgQEAgc3RhdGljIE5TTWFw
VGFibGUgKmxhc3RDaGlsZElnbm9yaW5nV2hpdAogICAgICAgICBbYXR0cnMgcmVsZWFzZV07CiAK
ICAgICAgICAgaWYgKFtub2RlIGhhc0NoaWxkTm9kZXNdICYmICFbb3V0bGluZVZpZXcgaXNJdGVt
RXhwYW5kZWQ6bm9kZV0pIHsKLSAgICAgICAgICAgIGF0dHJzID0gW1tOU0RpY3Rpb25hcnkgYWxs
b2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6W05TQ29sb3IgY29sb3JXaXRoQ2FsaWJyYXRlZFJl
ZDoxLjAgZ3JlZW46MS4wIGJsdWU6MS4wIGFscGhhOjAuNV0sIE5TRm9yZWdyb3VuZENvbG9yQXR0
cmlidXRlTmFtZSwgc2hhZG93LCBOU1NoYWRvd0F0dHJpYnV0ZU5hbWUsIHBhcmEsIE5TUGFyYWdy
YXBoU3R5bGVBdHRyaWJ1dGVOYW1lLCBuaWxdOworICAgICAgICAgICAgYXR0cnMgPSBbW05TRGlj
dGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czpbTlNDb2xvciBjb2xvcldpdGhD
YWxpYnJhdGVkUmVkOjEuMGYgZ3JlZW46MS4wZiBibHVlOjEuMGYgYWxwaGE6MC41Zl0sIE5TRm9y
ZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZSwgc2hhZG93LCBOU1NoYWRvd0F0dHJpYnV0ZU5hbWUs
IHBhcmEsIE5TUGFyYWdyYXBoU3R5bGVBdHRyaWJ1dGVOYW1lLCBuaWxdOwogICAgICAgICAgICAg
TlNBdHRyaWJ1dGVkU3RyaW5nICpwcmV2aWV3ID0gW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoU3RyaW5nOltub2RlIF9jb250ZW50UHJldmlld10gYXR0cmlidXRlczphdHRyc107
CiAgICAgICAgICAgICBbc3RyaW5nIGFwcGVuZEF0dHJpYnV0ZWRTdHJpbmc6cHJldmlld107CiAg
ICAgICAgICAgICBbYXR0cnMgcmVsZWFzZV07CkluZGV4OiBXZWJLaXQvV2ViSW5zcGVjdG9yL1dl
Ykluc3BlY3Rvck91dGxpbmVWaWV3Lm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYkluc3BlY3Rv
ci9XZWJJbnNwZWN0b3JPdXRsaW5lVmlldy5tCShyZXZpc2lvbiAxNTc1OCkKKysrIFdlYktpdC9X
ZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yT3V0bGluZVZpZXcubQkod29ya2luZyBjb3B5KQpAQCAt
NDMsOCArNDMsOCBAQAogLSAodm9pZClfaGlnaGxpZ2h0Um93OihpbnQpcm93IGNsaXBSZWN0OihO
U1JlY3QpY2xpcCB7CiAgICAgTlNDb2xvciAqc2VsZWN0aW9uQ29sb3IgPSBuaWw7CiAgICAgaWYg
KFtbc2VsZiB3aW5kb3ddIGZpcnN0UmVzcG9uZGVyXSA9PSBzZWxmICYmIFtbc2VsZiB3aW5kb3dd
IGlzS2V5V2luZG93XSkKLSAgICAgICAgc2VsZWN0aW9uQ29sb3IgPSBbW05TQ29sb3IgYWx0ZXJu
YXRlU2VsZWN0ZWRDb250cm9sQ29sb3JdIGNvbG9yV2l0aEFscGhhQ29tcG9uZW50OjAuMzMzXTsK
LSAgICBzZWxlY3Rpb25Db2xvciA9IFtbTlNDb2xvciBhbHRlcm5hdGVTZWxlY3RlZENvbnRyb2xD
b2xvcl0gY29sb3JXaXRoQWxwaGFDb21wb25lbnQ6MC40NV07CisgICAgICAgIHNlbGVjdGlvbkNv
bG9yID0gW1tOU0NvbG9yIGFsdGVybmF0ZVNlbGVjdGVkQ29udHJvbENvbG9yXSBjb2xvcldpdGhB
bHBoYUNvbXBvbmVudDowLjMzM2ZdOworICAgIHNlbGVjdGlvbkNvbG9yID0gW1tOU0NvbG9yIGFs
dGVybmF0ZVNlbGVjdGVkQ29udHJvbENvbG9yXSBjb2xvcldpdGhBbHBoYUNvbXBvbmVudDowLjQ1
Zl07CiAKICAgICBpZiAoW3NlbGYgbnVtYmVyT2ZDb2x1bW5zXSA+IDApIHsKICAgICAgICAgTlNS
ZWN0IGhpZ2hsaWdodCA9IFtzZWxmIHJlY3RPZlJvdzpyb3ddOwpAQCAtNjEsMTQgKzYxLDE0IEBA
CiAgICAgICAgICAgICBpZiAoW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0RHJhd2lu
Z1RvU2NyZWVuXSkgewogICAgICAgICAgICAgICAgIE5TQmV6aWVyUGF0aCAqcGF0aCA9IFtbTlNC
ZXppZXJQYXRoIGFsbG9jXSBpbml0XTsKIAotICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9
IDYuMDsKKyAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMgPSA2LjBmOwogICAgICAgICAgICAg
ICAgIE5TUmVjdCBpcmVjdCA9IE5TSW5zZXRSZWN0KGhpZ2hsaWdodCwgcmFkaXVzLCByYWRpdXMp
OwogICAgICAgICAgICAgICAgIGlmICghc29saWQpCi0gICAgICAgICAgICAgICAgICAgIGlyZWN0
ID0gTlNJbnNldFJlY3QoaXJlY3QsIDEuMCwgMS4wKTsKLSAgICAgICAgICAgICAgICBbcGF0aCBh
cHBlbmRCZXppZXJQYXRoV2l0aEFyY1dpdGhDZW50ZXI6TlNNYWtlUG9pbnQoTlNNaW5YKGlyZWN0
KSwgTlNNaW5ZKGlyZWN0KSkgcmFkaXVzOnJhZGl1cyBzdGFydEFuZ2xlOjE4MC4gZW5kQW5nbGU6
MjcwLl07Ci0gICAgICAgICAgICAgICAgW3BhdGggYXBwZW5kQmV6aWVyUGF0aFdpdGhBcmNXaXRo
Q2VudGVyOk5TTWFrZVBvaW50KE5TTWF4WChpcmVjdCksIE5TTWluWShpcmVjdCkpIHJhZGl1czpy
YWRpdXMgc3RhcnRBbmdsZToyNzAuIGVuZEFuZ2xlOjM2MC5dOwotICAgICAgICAgICAgICAgIFtw
YXRoIGFwcGVuZEJlemllclBhdGhXaXRoQXJjV2l0aENlbnRlcjpOU01ha2VQb2ludChOU01heFgo
aXJlY3QpLCBOU01heFkoaXJlY3QpKSByYWRpdXM6cmFkaXVzIHN0YXJ0QW5nbGU6MC4gZW5kQW5n
bGU6OTAuXTsKLSAgICAgICAgICAgICAgICBbcGF0aCBhcHBlbmRCZXppZXJQYXRoV2l0aEFyY1dp
dGhDZW50ZXI6TlNNYWtlUG9pbnQoTlNNaW5YKGlyZWN0KSwgTlNNYXhZKGlyZWN0KSkgcmFkaXVz
OnJhZGl1cyBzdGFydEFuZ2xlOjkwLiBlbmRBbmdsZToxODAuXTsKKyAgICAgICAgICAgICAgICAg
ICAgaXJlY3QgPSBOU0luc2V0UmVjdChpcmVjdCwgMS4wZiwgMS4wZik7CisgICAgICAgICAgICAg
ICAgW3BhdGggYXBwZW5kQmV6aWVyUGF0aFdpdGhBcmNXaXRoQ2VudGVyOk5TTWFrZVBvaW50KE5T
TWluWChpcmVjdCksIE5TTWluWShpcmVjdCkpIHJhZGl1czpyYWRpdXMgc3RhcnRBbmdsZToxODAu
MGYgZW5kQW5nbGU6MjcwLjBmXTsKKyAgICAgICAgICAgICAgICBbcGF0aCBhcHBlbmRCZXppZXJQ
YXRoV2l0aEFyY1dpdGhDZW50ZXI6TlNNYWtlUG9pbnQoTlNNYXhYKGlyZWN0KSwgTlNNaW5ZKGly
ZWN0KSkgcmFkaXVzOnJhZGl1cyBzdGFydEFuZ2xlOjI3MC4wZiBlbmRBbmdsZTozNjAuMGZdOwor
ICAgICAgICAgICAgICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoQXJjV2l0aENlbnRlcjpO
U01ha2VQb2ludChOU01heFgoaXJlY3QpLCBOU01heFkoaXJlY3QpKSByYWRpdXM6cmFkaXVzIHN0
YXJ0QW5nbGU6MC4wZiBlbmRBbmdsZTo5MC4wZl07CisgICAgICAgICAgICAgICAgW3BhdGggYXBw
ZW5kQmV6aWVyUGF0aFdpdGhBcmNXaXRoQ2VudGVyOk5TTWFrZVBvaW50KE5TTWluWChpcmVjdCks
IE5TTWF4WShpcmVjdCkpIHJhZGl1czpyYWRpdXMgc3RhcnRBbmdsZTo5MC4wZiBlbmRBbmdsZTox
ODAuMGZdOwogICAgICAgICAgICAgICAgIFtwYXRoIGNsb3NlUGF0aF07CiAKICAgICAgICAgICAg
ICAgICBOU1JlY3RDbGlwKGNsaXApOwpAQCAtNzYsNyArNzYsNyBAQAogICAgICAgICAgICAgICAg
IGlmIChzb2xpZCkgewogICAgICAgICAgICAgICAgICAgICBbcGF0aCBmaWxsXTsKICAgICAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBbcGF0aCBzZXRMaW5lV2lkdGg6
Mi4wXTsKKyAgICAgICAgICAgICAgICAgICAgW3BhdGggc2V0TGluZVdpZHRoOjIuMGZdOwogICAg
ICAgICAgICAgICAgICAgICBbcGF0aCBzdHJva2VdOwogICAgICAgICAgICAgICAgIH0KIApJbmRl
eDogV2ViS2l0L1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Lm0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Lm0JKHJldmlzaW9uIDE1NzU4KQor
KysgV2ViS2l0L1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Lm0JKHdvcmtpbmcgY29weSkK
QEAgLTU0LDggKzU0LDggQEAgTlNTdHJpbmcgKldlYk5vZGVIaWdobGlnaHRFeHBpcmVkTm90aWZp
YwogICAgIH0KIAogICAgIC8vIGFkanVzdCBzaXplIGFuZCBwb3NpdGlvbiBmb3IgcmVjdCBwYWRk
aW5nIHRoYXQgdGhlIHZpZXcgYWRkcwotICAgIGJvdW5kcy5vcmlnaW4ueSAtPSAzLjA7Ci0gICAg
Ym91bmRzLm9yaWdpbi54IC09IDMuMDsKKyAgICBib3VuZHMub3JpZ2luLnkgLT0gMy4wZjsKKyAg
ICBib3VuZHMub3JpZ2luLnggLT0gMy4wZjsKICAgICBib3VuZHMuc2l6ZSA9IFtfd2ViTm9kZUhp
Z2hsaWdodFZpZXcgZnJhbWVdLnNpemU7CiAKICAgICBOU1JlY3Qgd2luZG93Qm91bmRzID0gW3Zp
ZXcgY29udmVydFJlY3Q6Ym91bmRzIHRvVmlldzpuaWxdOwpJbmRleDogV2ViS2l0L1dlYkluc3Bl
Y3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJJbnNw
ZWN0b3IvV2ViTm9kZUhpZ2hsaWdodFZpZXcubQkocmV2aXNpb24gMTU3NTgpCisrKyBXZWJLaXQv
V2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3Lm0JKHdvcmtpbmcgY29weSkKQEAgLTM1
LDExICszNSwxMSBAQAogewogICAgIE5TQmV6aWVyUGF0aCAqcGF0aCA9IFtbTlNCZXppZXJQYXRo
IGFsbG9jXSBpbml0XTsKIAotICAgIE5TUmVjdCBpcmVjdCA9IE5TSW5zZXRSZWN0KCByZWN0LCBy
YWRpdXMsIHJhZGl1cyApOwotICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoQXJjV2l0aENl
bnRlcjpOU01ha2VQb2ludChOU01pblgoaXJlY3QpLCBOU01pblkoaXJlY3QpKSByYWRpdXM6cmFk
aXVzIHN0YXJ0QW5nbGU6MTgwLiBlbmRBbmdsZToyNzAuXTsKLSAgICBbcGF0aCBhcHBlbmRCZXpp
ZXJQYXRoV2l0aEFyY1dpdGhDZW50ZXI6TlNNYWtlUG9pbnQoTlNNYXhYKGlyZWN0KSwgTlNNaW5Z
KGlyZWN0KSkgcmFkaXVzOnJhZGl1cyBzdGFydEFuZ2xlOjI3MC4gZW5kQW5nbGU6MzYwLl07Ci0g
ICAgW3BhdGggYXBwZW5kQmV6aWVyUGF0aFdpdGhBcmNXaXRoQ2VudGVyOk5TTWFrZVBvaW50KE5T
TWF4WChpcmVjdCksIE5TTWF4WShpcmVjdCkpIHJhZGl1czpyYWRpdXMgc3RhcnRBbmdsZTowLiBl
bmRBbmdsZTo5MC5dOwotICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoQXJjV2l0aENlbnRl
cjpOU01ha2VQb2ludChOU01pblgoaXJlY3QpLCBOU01heFkoaXJlY3QpKSByYWRpdXM6cmFkaXVz
IHN0YXJ0QW5nbGU6OTAuIGVuZEFuZ2xlOjE4MC5dOworICAgIE5TUmVjdCBpcmVjdCA9IE5TSW5z
ZXRSZWN0KHJlY3QsIHJhZGl1cywgcmFkaXVzKTsKKyAgICBbcGF0aCBhcHBlbmRCZXppZXJQYXRo
V2l0aEFyY1dpdGhDZW50ZXI6TlNNYWtlUG9pbnQoTlNNaW5YKGlyZWN0KSwgTlNNaW5ZKGlyZWN0
KSkgcmFkaXVzOnJhZGl1cyBzdGFydEFuZ2xlOjE4MC4wZiBlbmRBbmdsZToyNzAuMGZdOworICAg
IFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoQXJjV2l0aENlbnRlcjpOU01ha2VQb2ludChOU01h
eFgoaXJlY3QpLCBOU01pblkoaXJlY3QpKSByYWRpdXM6cmFkaXVzIHN0YXJ0QW5nbGU6MjcwLjBm
IGVuZEFuZ2xlOjM2MC4wZl07CisgICAgW3BhdGggYXBwZW5kQmV6aWVyUGF0aFdpdGhBcmNXaXRo
Q2VudGVyOk5TTWFrZVBvaW50KE5TTWF4WChpcmVjdCksIE5TTWF4WShpcmVjdCkpIHJhZGl1czpy
YWRpdXMgc3RhcnRBbmdsZTowLjBmIGVuZEFuZ2xlOjkwLjBmXTsKKyAgICBbcGF0aCBhcHBlbmRC
ZXppZXJQYXRoV2l0aEFyY1dpdGhDZW50ZXI6TlNNYWtlUG9pbnQoTlNNaW5YKGlyZWN0KSwgTlNN
YXhZKGlyZWN0KSkgcmFkaXVzOnJhZGl1cyBzdGFydEFuZ2xlOjkwLjBmIGVuZEFuZ2xlOjE4MC4w
Zl07CiAgICAgW3BhdGggY2xvc2VQYXRoXTsKIAogICAgIHJldHVybiBbcGF0aCBhdXRvcmVsZWFz
ZV07CkBAIC02MCwxNCArNjAsMTQgQEAKIAogICAgIGlmKFtyZWN0cyBjb3VudF0gPT0gMSkgewog
ICAgICAgICBOU1ZhbHVlICp2YWx1ZSA9IChOU1ZhbHVlICopW3JlY3RzIG9iamVjdEF0SW5kZXg6
MF07Ci0gICAgICAgIHJlY3QgPSBOU0luc2V0UmVjdChbdmFsdWUgcmVjdFZhbHVlXSwgLTEuMCwg
LTEuMCk7CisgICAgICAgIHJlY3QgPSBOU0luc2V0UmVjdChbdmFsdWUgcmVjdFZhbHVlXSwgLTEu
MGYsIC0xLjBmKTsKICAgICAgICAgcmVjdCA9IE5TSW50ZXJzZWN0aW9uUmVjdChyZWN0LCB2aXNp
YmxlUmVjdCk7CiAgICAgICAgIGlmICghTlNJc0VtcHR5UmVjdChyZWN0KSkKLSAgICAgICAgICAg
IHBhdGggPSBbW3NlbGYgcm91bmRlZFJlY3Q6cmVjdCB3aXRoUmFkaXVzOjMuMF0gcmV0YWluXTsK
KyAgICAgICAgICAgIHBhdGggPSBbW3NlbGYgcm91bmRlZFJlY3Q6cmVjdCB3aXRoUmFkaXVzOjMu
MGZdIHJldGFpbl07CiAKICAgICAgICAgLy8gc2hpZnQgZXZlcnl0aGluZyB0byB0aGUgY29ybmVy
CiAgICAgICAgIE5TQWZmaW5lVHJhbnNmb3JtICp0cmFuc2Zvcm0gPSBbW05TQWZmaW5lVHJhbnNm
b3JtIGFsbG9jXSBpbml0XTsKLSAgICAgICAgW3RyYW5zZm9ybSB0cmFuc2xhdGVYQnk6KE5TTWlu
WChyZWN0KSAqIC0xLjApICsgMi41IHlCeTooTlNNaW5ZKHJlY3QpICogLTEuMCkgKyAyLjVdOwor
ICAgICAgICBbdHJhbnNmb3JtIHRyYW5zbGF0ZVhCeTooTlNNaW5YKHJlY3QpICogLTEuMGYpICsg
Mi41ZiB5Qnk6KE5TTWluWShyZWN0KSAqIC0xLjBmKSArIDIuNWZdOwogICAgICAgICBbcGF0aCB0
cmFuc2Zvcm1Vc2luZ0FmZmluZVRyYW5zZm9ybTp0cmFuc2Zvcm1dOwogICAgICAgICBbc3RyYWln
aHRQYXRoIHRyYW5zZm9ybVVzaW5nQWZmaW5lVHJhbnNmb3JtOnRyYW5zZm9ybV07CiAgICAgICAg
IFt0cmFuc2Zvcm0gcmVsZWFzZV07CkBAIC04NCw3ICs4NCw3IEBACiAgICAgICAgICAgICByZWN0
ID0gTlNJbnRlcnNlY3Rpb25SZWN0KFt2YWx1ZSByZWN0VmFsdWVdLCB2aXNpYmxlUmVjdCk7CiAg
ICAgICAgICAgICBpZiAoIU5TSXNFbXB0eVJlY3QocmVjdCkpIHsKICAgICAgICAgICAgICAgICBb
c3RyYWlnaHRQYXRoIGFwcGVuZEJlemllclBhdGhXaXRoUmVjdDpyZWN0XTsKLSAgICAgICAgICAg
ICAgICBbcGF0aCBhcHBlbmRCZXppZXJQYXRoOltzZWxmIHJvdW5kZWRSZWN0OnJlY3Qgd2l0aFJh
ZGl1czozLjBdXTsKKyAgICAgICAgICAgICAgICBbcGF0aCBhcHBlbmRCZXppZXJQYXRoOltzZWxm
IHJvdW5kZWRSZWN0OnJlY3Qgd2l0aFJhZGl1czozLjBmXV07CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KIApAQCAtOTksMTQgKzk5LDE0IEBACiAKICAgICAgICAgLy8gbXVsdGlwbGUgcmVjdHMg
d2UgZ2V0IGZyb20gV2ViQ29yZSBuZWVkIGZsaXBwZWQgdG8gc2hvdyB1cCBjb3JyZWN0bHkKICAg
ICAgICAgTlNBZmZpbmVUcmFuc2Zvcm0gKnRyYW5zZm9ybSA9IFtbTlNBZmZpbmVUcmFuc2Zvcm0g
YWxsb2NdIGluaXRdOwotICAgICAgICBbdHJhbnNmb3JtIHNjYWxlWEJ5OjEuMCB5Qnk6LTEuMF07
CisgICAgICAgIFt0cmFuc2Zvcm0gc2NhbGVYQnk6MS4wZiB5Qnk6LTEuMGZdOwogICAgICAgICBb
cGF0aCB0cmFuc2Zvcm1Vc2luZ0FmZmluZVRyYW5zZm9ybTp0cmFuc2Zvcm1dOwogICAgICAgICBb
c3RyYWlnaHRQYXRoIHRyYW5zZm9ybVVzaW5nQWZmaW5lVHJhbnNmb3JtOnRyYW5zZm9ybV07CiAg
ICAgICAgIFt0cmFuc2Zvcm0gcmVsZWFzZV07CiAKICAgICAgICAgLy8gc2hpZnQgZXZlcnl0aGlu
ZyB0byB0aGUgY29ybmVyCiAgICAgICAgIHRyYW5zZm9ybSA9IFtbTlNBZmZpbmVUcmFuc2Zvcm0g
YWxsb2NdIGluaXRdOwotICAgICAgICBbdHJhbnNmb3JtIHRyYW5zbGF0ZVhCeTooTlNNaW5YKHJl
Y3QpICogLTEuMCkgKyAyLjUgeUJ5Ok5TTWF4WShyZWN0KSArIDIuNV07CisgICAgICAgIFt0cmFu
c2Zvcm0gdHJhbnNsYXRlWEJ5OihOU01pblgocmVjdCkgKiAtMS4wZikgKyAyLjVmIHlCeTpOU01h
eFkocmVjdCkgKyAyLjVmXTsKICAgICAgICAgW3BhdGggdHJhbnNmb3JtVXNpbmdBZmZpbmVUcmFu
c2Zvcm06dHJhbnNmb3JtXTsKICAgICAgICAgW3N0cmFpZ2h0UGF0aCB0cmFuc2Zvcm1Vc2luZ0Fm
ZmluZVRyYW5zZm9ybTp0cmFuc2Zvcm1dOwogICAgICAgICBbdHJhbnNmb3JtIHJlbGVhc2VdOwpA
QCAtMTIzLDggKzEyMyw4IEBACiAKICAgICAvLyBtYWtlIHRoZSBkcmF3aW5nIGFyZWEgbGFyZ2Vy
IGZvciB0aGUgZm9jdXMgcmluZyBibHVyCiAgICAgcmVjdCA9IFtwYXRoIGJvdW5kc107Ci0gICAg
cmVjdC5zaXplLndpZHRoICs9IDUuMDsKLSAgICByZWN0LnNpemUuaGVpZ2h0ICs9IDUuMDsKKyAg
ICByZWN0LnNpemUud2lkdGggKz0gNS4wZjsKKyAgICByZWN0LnNpemUuaGVpZ2h0ICs9IDUuMGY7
CiAgICAgW3NlbGYgc2V0RnJhbWVTaXplOnJlY3Quc2l6ZV07CiAKICAgICAvLyBkcmF3IGludG8g
YW4gaW1hZ2UKQEAgLTEzNCw3ICsxMzQsNyBAQAogCiAgICAgaWYgKHN0cmFpZ2h0UGF0aCkgewog
ICAgICAgICBbW05TQ29sb3IgcmVkQ29sb3JdIHNldF07Ci0gICAgICAgIFtwYXRoIHNldExpbmVX
aWR0aDo0LjBdOworICAgICAgICBbcGF0aCBzZXRMaW5lV2lkdGg6NC4wZl07CiAgICAgICAgIFtw
YXRoIHN0cm9rZV07CiAKICAgICAgICAgLy8gY2xlYXIgdGhlIGNlbnRlciB0byBlbGltaW5hdGUg
dGhpY2sgaW5uZXIgc3Ryb2tlcyBmb3Igb3ZlcmxhcHBpbmcgcmVjdHMKQEAgLTE0MywxMiArMTQz
LDEyIEBACiAKICAgICAgICAgLy8gc3Ryb2tlIHRoZSBzdHJhaWdodCBsaW5lIHBhdGggd2l0aCBh
IGxpZ2h0IGNvbG9yIHRvIHNob3cgYW55IGlubmVyIHJlY3RzCiAgICAgICAgIFtbTlNHcmFwaGlj
c0NvbnRleHQgY3VycmVudENvbnRleHRdIHNldENvbXBvc2l0aW5nT3BlcmF0aW9uOk5TQ29tcG9z
aXRlRGVzdGluYXRpb25PdmVyXTsKLSAgICAgICAgW1tbTlNDb2xvciByZWRDb2xvcl0gY29sb3JX
aXRoQWxwaGFDb21wb25lbnQ6MC42XSBzZXRdOwotICAgICAgICBbc3RyYWlnaHRQYXRoIHNldExp
bmVXaWR0aDoxLjBdOworICAgICAgICBbW1tOU0NvbG9yIHJlZENvbG9yXSBjb2xvcldpdGhBbHBo
YUNvbXBvbmVudDowLjZmXSBzZXRdOworICAgICAgICBbc3RyYWlnaHRQYXRoIHNldExpbmVXaWR0
aDoxLjBmXTsKICAgICAgICAgW3N0cmFpZ2h0UGF0aCBzdHJva2VdOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIFtbTlNDb2xvciByZWRDb2xvcl0gc2V0XTsKLSAgICAgICAgW3BhdGggc2V0TGluZVdp
ZHRoOjIuMF07CisgICAgICAgIFtwYXRoIHNldExpbmVXaWR0aDoyLjBmXTsKICAgICAgICAgW3Bh
dGggc3Ryb2tlXTsKICAgICB9CiAKSW5kZXg6IFdlYktpdC9XZWJWaWV3L1dlYkZyYW1lLm0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L1dlYlZpZXcvV2ViRnJhbWUubQkocmV2aXNpb24gMTU3NTgpCisr
KyBXZWJLaXQvV2ViVmlldy9XZWJGcmFtZS5tCSh3b3JraW5nIGNvcHkpCkBAIC05MDEsNyArOTAx
LDcgQEAgc3RhdGljIGlubGluZSBXZWJGcmFtZSAqRnJhbWUoV2ViQ29yZUZyYQogICAgICAgICAg
ICAgaWQgaWRlbnRpZmllcjsKICAgICAgICAgICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtb
TlNVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpbcmVzcG9uc2UgVVJMXV07CiAgICAgICAg
ICAgICBbc2VsZiBfcmVxdWVzdEZyb21EZWxlZ2F0ZUZvclJlcXVlc3Q6cmVxdWVzdCBpZGVudGlm
aWVyOiZpZGVudGlmaWVyIGVycm9yOiZlcnJvcl07Ci0gICAgICAgICAgICBbc2VsZiBfc2VuZFJl
bWFpbmluZ0RlbGVnYXRlTWVzc2FnZXNXaXRoSWRlbnRpZmllcjppZGVudGlmaWVyIHJlc3BvbnNl
OnJlc3BvbnNlIGxlbmd0aDpbcmVzcG9uc2UgZXhwZWN0ZWRDb250ZW50TGVuZ3RoXSBlcnJvcjpl
cnJvcl07CisgICAgICAgICAgICBbc2VsZiBfc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXNX
aXRoSWRlbnRpZmllcjppZGVudGlmaWVyIHJlc3BvbnNlOnJlc3BvbnNlIGxlbmd0aDoodW5zaWdu
ZWQpW3Jlc3BvbnNlIGV4cGVjdGVkQ29udGVudExlbmd0aF0gZXJyb3I6ZXJyb3JdOwogICAgICAg
ICAgICAgW3JlcXVlc3QgcmVsZWFzZV07CiAgICAgICAgIH0KICAgICAgICAgCkluZGV4OiBXZWJL
aXQvV2ViVmlldy9XZWJGcmFtZVZpZXcubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViVmlldy9X
ZWJGcmFtZVZpZXcubQkocmV2aXNpb24gMTU3NTgpCisrKyBXZWJLaXQvV2ViVmlldy9XZWJGcmFt
ZVZpZXcubQkod29ya2luZyBjb3B5KQpAQCAtMzMzLDE0ICszMzMsMTQgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIGFkZFR5cGVzRnJvbUNsYXNzKE5TTQogICAgIAogICAgIF9wcml2YXRlID0gW1tXZWJG
cmFtZVZpZXdQcml2YXRlIGFsbG9jXSBpbml0XTsKIAotICAgIFdlYkR5bmFtaWNTY3JvbGxCYXJz
VmlldyAqc2Nyb2xsVmlldyAgPSBbW1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsMCxmcmFtZS5zaXplLndpZHRoLGZyYW1lLnNpemUuaGVp
Z2h0KV07CisgICAgV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3ICpzY3JvbGxWaWV3ICA9IFtbV2Vi
RHluYW1pY1Njcm9sbEJhcnNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMC4w
ZiwgMC4wZiwgZnJhbWUuc2l6ZS53aWR0aCwgZnJhbWUuc2l6ZS5oZWlnaHQpXTsKICAgICBfcHJp
dmF0ZS0+ZnJhbWVTY3JvbGxWaWV3ID0gc2Nyb2xsVmlldzsKICAgICBbc2Nyb2xsVmlldyBzZXRD
b250ZW50VmlldzpbW1tXZWJDbGlwVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpbc2Nyb2xsVmll
dyBib3VuZHNdXSBhdXRvcmVsZWFzZV1dOwogICAgIFtzY3JvbGxWaWV3IHNldERyYXdzQmFja2dy
b3VuZDpOT107CiAgICAgW3Njcm9sbFZpZXcgc2V0SGFzVmVydGljYWxTY3JvbGxlcjpOT107CiAg
ICAgW3Njcm9sbFZpZXcgc2V0SGFzSG9yaXpvbnRhbFNjcm9sbGVyOk5PXTsKICAgICBbc2Nyb2xs
VmlldyBzZXRBdXRvcmVzaXppbmdNYXNrOk5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdo
dFNpemFibGVdOwotICAgIFtzY3JvbGxWaWV3IHNldExpbmVTY3JvbGw6NDAuMF07CisgICAgW3Nj
cm9sbFZpZXcgc2V0TGluZVNjcm9sbDo0MC4wZl07CiAgICAgW3NlbGYgYWRkU3VidmlldzpzY3Jv
bGxWaWV3XTsKICAgICAvLyBkb24ndCBjYWxsIG91ciBvdmVycmlkZGVuIHZlcnNpb24gaGVyZTsg
d2UgbmVlZCB0byBtYWtlIHRoZSBzdGFuZGFyZCBOU1ZpZXcgbGluayBiZXR3ZWVuIHVzCiAgICAg
Ly8gYW5kIG91ciBzdWJ2aWV3IHNvIHRoYXQgcHJldmlvdXNLZXlWaWV3IGFuZCBwcmV2aW91c1Zh
bGlkS2V5VmlldyB3b3JrIGFzIGV4cGVjdGVkLiBUaGlzIHdvcmtzCkluZGV4OiBXZWJLaXQvV2Vi
Vmlldy9XZWJIVE1MVmlldy5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJWaWV3L1dlYkhUTUxW
aWV3Lm0JKHJldmlzaW9uIDE1NzU4KQorKysgV2ViS2l0L1dlYlZpZXcvV2ViSFRNTFZpZXcubQko
d29ya2luZyBjb3B5KQpAQCAtMTIxLDI2ICsxMjEsMjYgQEAgdm9pZCBfTlNSZXNldEtpbGxSaW5n
T3BlcmF0aW9uRmxhZyh2b2lkKQogLy8gcHJpbnQgaW4gSUUgYW5kIENhbWluby4gVGhpcyBsZXRz
IHRoZW0gdXNlIGZld2VyIHNoZWV0cyB0aGFuIHRoZXkKIC8vIHdvdWxkIG90aGVyd2lzZSwgd2hp
Y2ggaXMgcHJlc3VtYWJseSB3aHkgb3RoZXIgYnJvd3NlcnMgZG8gdGhpcy4KIC8vIFdpZGUgcGFn
ZXMgd2lsbCBiZSBzY2FsZWQgZG93biBtb3JlIHRoYW4gdGhpcy4KLSNkZWZpbmUgUHJpbnRpbmdN
aW5pbXVtU2hyaW5rRmFjdG9yICAgICAxLjI1CisjZGVmaW5lIFByaW50aW5nTWluaW11bVNocmlu
a0ZhY3RvciAgICAgMS4yNWYKIAogLy8gVGhpcyBudW1iZXIgZGV0ZXJtaW5lcyBob3cgc21hbGwg
d2UgYXJlIHdpbGxpbmcgdG8gcmVkdWNlIHRoZSBwYWdlIGNvbnRlbnQKIC8vIGluIG9yZGVyIHRv
IGFjY29tbW9kYXRlIHRoZSB3aWRlc3QgbGluZS4gSWYgdGhlIHBhZ2Ugd291bGQgaGF2ZSB0byBi
ZQogLy8gcmVkdWNlZCBzbWFsbGVyIHRvIG1ha2UgdGhlIHdpZGVzdCBsaW5lIGZpdCwgd2UganVz
dCBjbGlwIGluc3RlYWQgKHRoaXMKIC8vIGJlaGF2aW9yIG1hdGNoZXMgTWFjSUUgYW5kIE1vemls
bGEsIGF0IGxlYXN0KQotI2RlZmluZSBQcmludGluZ01heGltdW1TaHJpbmtGYWN0b3IgICAgIDIu
MAorI2RlZmluZSBQcmludGluZ01heGltdW1TaHJpbmtGYWN0b3IgICAgIDIuMGYKIAotI2RlZmlu
ZSBBVVRPU0NST0xMX0lOVEVSVkFMICAgICAgICAgICAgIDAuMQorI2RlZmluZSBBVVRPU0NST0xM
X0lOVEVSVkFMICAgICAgICAgICAgIDAuMWYKIAotI2RlZmluZSBEUkFHX0xBQkVMX0JPUkRFUl9Y
ICAgICAgICAgICAgIDQuMAotI2RlZmluZSBEUkFHX0xBQkVMX0JPUkRFUl9ZICAgICAgICAgICAg
IDIuMAotI2RlZmluZSBEUkFHX0xBQkVMX1JBRElVUyAgICAgICAgICAgICAgIDUuMAotI2RlZmlu
ZSBEUkFHX0xBQkVMX0JPUkRFUl9ZX09GRlNFVCAgICAgICAgICAgICAgMi4wCisjZGVmaW5lIERS
QUdfTEFCRUxfQk9SREVSX1ggICAgICAgICAgICAgNC4wZgorI2RlZmluZSBEUkFHX0xBQkVMX0JP
UkRFUl9ZICAgICAgICAgICAgIDIuMGYKKyNkZWZpbmUgRFJBR19MQUJFTF9SQURJVVMgICAgICAg
ICAgICAgICA1LjBmCisjZGVmaW5lIERSQUdfTEFCRUxfQk9SREVSX1lfT0ZGU0VUICAgICAgICAg
ICAgICAyLjBmCiAKLSNkZWZpbmUgTUlOX0RSQUdfTEFCRUxfV0lEVEhfQkVGT1JFX0NMSVAgICAg
ICAgIDEyMC4wCi0jZGVmaW5lIE1BWF9EUkFHX0xBQkVMX1dJRFRIICAgICAgICAgICAgICAgICAg
ICAzMjAuMAorI2RlZmluZSBNSU5fRFJBR19MQUJFTF9XSURUSF9CRUZPUkVfQ0xJUCAgICAgICAg
MTIwLjBmCisjZGVmaW5lIE1BWF9EUkFHX0xBQkVMX1dJRFRIICAgICAgICAgICAgICAgICAgICAz
MjAuMGYKIAotI2RlZmluZSBEUkFHX0xJTktfTEFCRUxfRk9OVF9TSVpFICAgMTEuMAotI2RlZmlu
ZSBEUkFHX0xJTktfVVJMX0ZPTlRfU0laRSAgIDEwLjAKKyNkZWZpbmUgRFJBR19MSU5LX0xBQkVM
X0ZPTlRfU0laRSAgIDExLjBmCisjZGVmaW5lIERSQUdfTElOS19VUkxfRk9OVF9TSVpFICAgMTAu
MGYKIAogLy8gQW55IG5vbi16ZXJvIHZhbHVlIHdpbGwgZG8sIGJ1dCB1c2luZyBzb21ldGhpbmcg
cmVjb2duaXphYmxlIG1pZ2h0IGhlbHAgdXMgZGVidWcgc29tZSBkYXkuCiAjZGVmaW5lIFRSQUNL
SU5HX1JFQ1RfVEFHIDB4QkFERkFDRQpAQCAtMTI0Nyw0OCArMTI0Nyw0OCBAQCBzdGF0aWMgV2Vi
SFRNTFZpZXcgKmxhc3RIaXRWaWV3ID0gbmlsOwogICAgIH0KICAgICAKICAgICBOU1NpemUgaW1h
Z2VTaXplLCB1cmxTdHJpbmdTaXplOwotICAgIGltYWdlU2l6ZS53aWR0aCA9IGxhYmVsU2l6ZS53
aWR0aCArIERSQUdfTEFCRUxfQk9SREVSX1ggKiAyOwotICAgIGltYWdlU2l6ZS5oZWlnaHQgPSBs
YWJlbFNpemUuaGVpZ2h0ICsgRFJBR19MQUJFTF9CT1JERVJfWSAqIDI7CisgICAgaW1hZ2VTaXpl
LndpZHRoID0gbGFiZWxTaXplLndpZHRoICsgRFJBR19MQUJFTF9CT1JERVJfWCAqIDIuMGY7Cisg
ICAgaW1hZ2VTaXplLmhlaWdodCA9IGxhYmVsU2l6ZS5oZWlnaHQgKyBEUkFHX0xBQkVMX0JPUkRF
Ul9ZICogMi4wZjsKICAgICBpZiAoZHJhd1VSTFN0cmluZykgewogICAgICAgICB1cmxTdHJpbmdT
aXplLndpZHRoID0gW3VybFN0cmluZyBfd2ViX3dpZHRoV2l0aEZvbnQ6IHVybEZvbnRdOwogICAg
ICAgICB1cmxTdHJpbmdTaXplLmhlaWdodCA9IFt1cmxGb250IGFzY2VuZGVyXSAtIFt1cmxGb250
IGRlc2NlbmRlcl07CiAgICAgICAgIGltYWdlU2l6ZS5oZWlnaHQgKz0gdXJsU3RyaW5nU2l6ZS5o
ZWlnaHQ7CiAgICAgICAgIGlmICh1cmxTdHJpbmdTaXplLndpZHRoID4gTUFYX0RSQUdfTEFCRUxf
V0lEVEgpIHsKLSAgICAgICAgICAgIGltYWdlU2l6ZS53aWR0aCA9IE1BWChNQVhfRFJBR19MQUJF
TF9XSURUSCArIERSQUdfTEFCRUxfQk9SREVSX1ggKiAyLCBNSU5fRFJBR19MQUJFTF9XSURUSF9C
RUZPUkVfQ0xJUCk7CisgICAgICAgICAgICBpbWFnZVNpemUud2lkdGggPSBNQVgoTUFYX0RSQUdf
TEFCRUxfV0lEVEggKyBEUkFHX0xBQkVMX0JPUkRFUl9YICogMi4wZiwgTUlOX0RSQUdfTEFCRUxf
V0lEVEhfQkVGT1JFX0NMSVApOwogICAgICAgICAgICAgY2xpcFVSTFN0cmluZyA9IFlFUzsKICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGltYWdlU2l6ZS53aWR0aCA9IE1BWChsYWJlbFNp
emUud2lkdGggKyBEUkFHX0xBQkVMX0JPUkRFUl9YICogMiwgdXJsU3RyaW5nU2l6ZS53aWR0aCAr
IERSQUdfTEFCRUxfQk9SREVSX1ggKiAyKTsKKyAgICAgICAgICAgIGltYWdlU2l6ZS53aWR0aCA9
IE1BWChsYWJlbFNpemUud2lkdGggKyBEUkFHX0xBQkVMX0JPUkRFUl9YICogMi4wZiwgdXJsU3Ry
aW5nU2l6ZS53aWR0aCArIERSQUdfTEFCRUxfQk9SREVSX1ggKiAyLjBmKTsKICAgICAgICAgfQog
ICAgIH0KICAgICBOU0ltYWdlICpkcmFnSW1hZ2UgPSBbW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0
aFNpemU6IGltYWdlU2l6ZV0gYXV0b3JlbGVhc2VdOwogICAgIFtkcmFnSW1hZ2UgbG9ja0ZvY3Vz
XTsKICAgICAKLSAgICBbW05TQ29sb3IgY29sb3JXaXRoQ2FsaWJyYXRlZFJlZDogMC43IGdyZWVu
OiAwLjcgYmx1ZTogMC43IGFscGhhOiAwLjhdIHNldF07CisgICAgW1tOU0NvbG9yIGNvbG9yV2l0
aENhbGlicmF0ZWRSZWQ6IDAuN2YgZ3JlZW46IDAuN2YgYmx1ZTogMC43ZiBhbHBoYTogMC44Zl0g
c2V0XTsKICAgICAKICAgICAvLyBEcmFnIGEgcmVjdGFuZ2xlIHdpdGggcm91bmRlZCBjb3JuZXJz
LwogICAgIE5TQmV6aWVyUGF0aCAqcGF0aCA9IFtOU0JlemllclBhdGggYmV6aWVyUGF0aF07Ci0g
ICAgW3BhdGggYXBwZW5kQmV6aWVyUGF0aFdpdGhPdmFsSW5SZWN0OiBOU01ha2VSZWN0KDAsMCwg
RFJBR19MQUJFTF9SQURJVVMgKiAyLCBEUkFHX0xBQkVMX1JBRElVUyAqIDIpXTsKLSAgICBbcGF0
aCBhcHBlbmRCZXppZXJQYXRoV2l0aE92YWxJblJlY3Q6IE5TTWFrZVJlY3QoMCxpbWFnZVNpemUu
aGVpZ2h0IC0gRFJBR19MQUJFTF9SQURJVVMgKiAyLCBEUkFHX0xBQkVMX1JBRElVUyAqIDIsIERS
QUdfTEFCRUxfUkFESVVTICogMildOwotICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoT3Zh
bEluUmVjdDogTlNNYWtlUmVjdChpbWFnZVNpemUud2lkdGggLSBEUkFHX0xBQkVMX1JBRElVUyAq
IDIsIGltYWdlU2l6ZS5oZWlnaHQgLSBEUkFHX0xBQkVMX1JBRElVUyAqIDIsIERSQUdfTEFCRUxf
UkFESVVTICogMiwgRFJBR19MQUJFTF9SQURJVVMgKiAyKV07Ci0gICAgW3BhdGggYXBwZW5kQmV6
aWVyUGF0aFdpdGhPdmFsSW5SZWN0OiBOU01ha2VSZWN0KGltYWdlU2l6ZS53aWR0aCAtIERSQUdf
TEFCRUxfUkFESVVTICogMiwwLCBEUkFHX0xBQkVMX1JBRElVUyAqIDIsIERSQUdfTEFCRUxfUkFE
SVVTICogMildOwotICAgIAotICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoUmVjdDogTlNN
YWtlUmVjdChEUkFHX0xBQkVMX1JBRElVUywgMCwgaW1hZ2VTaXplLndpZHRoIC0gRFJBR19MQUJF
TF9SQURJVVMgKiAyLCBpbWFnZVNpemUuaGVpZ2h0KV07Ci0gICAgW3BhdGggYXBwZW5kQmV6aWVy
UGF0aFdpdGhSZWN0OiBOU01ha2VSZWN0KDAsIERSQUdfTEFCRUxfUkFESVVTLCBEUkFHX0xBQkVM
X1JBRElVUyArIDEwLCBpbWFnZVNpemUuaGVpZ2h0IC0gMiAqIERSQUdfTEFCRUxfUkFESVVTKV07
Ci0gICAgW3BhdGggYXBwZW5kQmV6aWVyUGF0aFdpdGhSZWN0OiBOU01ha2VSZWN0KGltYWdlU2l6
ZS53aWR0aCAtIERSQUdfTEFCRUxfUkFESVVTIC0gMjAsRFJBR19MQUJFTF9SQURJVVMsIERSQUdf
TEFCRUxfUkFESVVTICsgMjAsIGltYWdlU2l6ZS5oZWlnaHQgLSAyICogRFJBR19MQUJFTF9SQURJ
VVMpXTsKKyAgICBbcGF0aCBhcHBlbmRCZXppZXJQYXRoV2l0aE92YWxJblJlY3Q6IE5TTWFrZVJl
Y3QoMC4wZiwgMC4wZiwgRFJBR19MQUJFTF9SQURJVVMgKiAyLjBmLCBEUkFHX0xBQkVMX1JBRElV
UyAqIDIuMGYpXTsKKyAgICBbcGF0aCBhcHBlbmRCZXppZXJQYXRoV2l0aE92YWxJblJlY3Q6IE5T
TWFrZVJlY3QoMCwgaW1hZ2VTaXplLmhlaWdodCAtIERSQUdfTEFCRUxfUkFESVVTICogMi4wZiwg
RFJBR19MQUJFTF9SQURJVVMgKiAyLjBmLCBEUkFHX0xBQkVMX1JBRElVUyAqIDIuMGYpXTsKKyAg
ICBbcGF0aCBhcHBlbmRCZXppZXJQYXRoV2l0aE92YWxJblJlY3Q6IE5TTWFrZVJlY3QoaW1hZ2VT
aXplLndpZHRoIC0gRFJBR19MQUJFTF9SQURJVVMgKiAyLjBmLCBpbWFnZVNpemUuaGVpZ2h0IC0g
RFJBR19MQUJFTF9SQURJVVMgKiAyLjBmLCBEUkFHX0xBQkVMX1JBRElVUyAqIDIuMGYsIERSQUdf
TEFCRUxfUkFESVVTICogMi4wZildOworICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoT3Zh
bEluUmVjdDogTlNNYWtlUmVjdChpbWFnZVNpemUud2lkdGggLSBEUkFHX0xBQkVMX1JBRElVUyAq
IDIuMGYsIDAuMGYsIERSQUdfTEFCRUxfUkFESVVTICogMi4wZiwgRFJBR19MQUJFTF9SQURJVVMg
KiAyLjBmKV07CisgICAgCisgICAgW3BhdGggYXBwZW5kQmV6aWVyUGF0aFdpdGhSZWN0OiBOU01h
a2VSZWN0KERSQUdfTEFCRUxfUkFESVVTLCAwLjBmLCBpbWFnZVNpemUud2lkdGggLSBEUkFHX0xB
QkVMX1JBRElVUyAqIDIuMGYsIGltYWdlU2l6ZS5oZWlnaHQpXTsKKyAgICBbcGF0aCBhcHBlbmRC
ZXppZXJQYXRoV2l0aFJlY3Q6IE5TTWFrZVJlY3QoMC4wZiwgRFJBR19MQUJFTF9SQURJVVMsIERS
QUdfTEFCRUxfUkFESVVTICsgMTAuMGYsIGltYWdlU2l6ZS5oZWlnaHQgLSAyLjBmICogRFJBR19M
QUJFTF9SQURJVVMpXTsKKyAgICBbcGF0aCBhcHBlbmRCZXppZXJQYXRoV2l0aFJlY3Q6IE5TTWFr
ZVJlY3QoaW1hZ2VTaXplLndpZHRoIC0gRFJBR19MQUJFTF9SQURJVVMgLSAyMC4wZiwgRFJBR19M
QUJFTF9SQURJVVMsIERSQUdfTEFCRUxfUkFESVVTICsgMjAuMGYsIGltYWdlU2l6ZS5oZWlnaHQg
LSAyLjBmICogRFJBR19MQUJFTF9SQURJVVMpXTsKICAgICBbcGF0aCBmaWxsXTsKICAgICAgICAg
Ci0gICAgTlNDb2xvciAqdG9wQ29sb3IgPSBbTlNDb2xvciBjb2xvcldpdGhDYWxpYnJhdGVkV2hp
dGU6MC4wIGFscGhhOjAuNzVdOwotICAgIE5TQ29sb3IgKmJvdHRvbUNvbG9yID0gW05TQ29sb3Ig
Y29sb3JXaXRoQ2FsaWJyYXRlZFdoaXRlOjEuMCBhbHBoYTowLjVdOworICAgIE5TQ29sb3IgKnRv
cENvbG9yID0gW05TQ29sb3IgY29sb3JXaXRoQ2FsaWJyYXRlZFdoaXRlOjAuMGYgYWxwaGE6MC43
NWZdOworICAgIE5TQ29sb3IgKmJvdHRvbUNvbG9yID0gW05TQ29sb3IgY29sb3JXaXRoQ2FsaWJy
YXRlZFdoaXRlOjEuMGYgYWxwaGE6MC41Zl07CiAgICAgaWYgKGRyYXdVUkxTdHJpbmcpIHsKICAg
ICAgICAgaWYgKGNsaXBVUkxTdHJpbmcpCi0gICAgICAgICAgICB1cmxTdHJpbmcgPSBbV2ViU3Ry
aW5nVHJ1bmNhdG9yIGNlbnRlclRydW5jYXRlU3RyaW5nOiB1cmxTdHJpbmcgdG9XaWR0aDppbWFn
ZVNpemUud2lkdGggLSAoRFJBR19MQUJFTF9CT1JERVJfWCAqIDIpIHdpdGhGb250OnVybEZvbnRd
OworICAgICAgICAgICAgdXJsU3RyaW5nID0gW1dlYlN0cmluZ1RydW5jYXRvciBjZW50ZXJUcnVu
Y2F0ZVN0cmluZzogdXJsU3RyaW5nIHRvV2lkdGg6aW1hZ2VTaXplLndpZHRoIC0gKERSQUdfTEFC
RUxfQk9SREVSX1ggKiAyLjBmKSB3aXRoRm9udDp1cmxGb250XTsKIAogICAgICAgICBbdXJsU3Ry
aW5nIF93ZWJfZHJhd0RvdWJsZWRBdFBvaW50Ok5TTWFrZVBvaW50KERSQUdfTEFCRUxfQk9SREVS
X1gsIERSQUdfTEFCRUxfQk9SREVSX1kgLSBbdXJsRm9udCBkZXNjZW5kZXJdKSAKICAgICAgICAg
ICAgICB3aXRoVG9wQ29sb3I6dG9wQ29sb3IgYm90dG9tQ29sb3I6Ym90dG9tQ29sb3IgZm9udDp1
cmxGb250XTsKICAgICB9CiAKICAgICBpZiAoY2xpcExhYmVsU3RyaW5nKQotICAgICAgICBsYWJl
bCA9IFtXZWJTdHJpbmdUcnVuY2F0b3IgcmlnaHRUcnVuY2F0ZVN0cmluZzogbGFiZWwgdG9XaWR0
aDppbWFnZVNpemUud2lkdGggLSAoRFJBR19MQUJFTF9CT1JERVJfWCAqIDIpIHdpdGhGb250Omxh
YmVsRm9udF07CisgICAgICAgIGxhYmVsID0gW1dlYlN0cmluZ1RydW5jYXRvciByaWdodFRydW5j
YXRlU3RyaW5nOiBsYWJlbCB0b1dpZHRoOmltYWdlU2l6ZS53aWR0aCAtIChEUkFHX0xBQkVMX0JP
UkRFUl9YICogMi4wZikgd2l0aEZvbnQ6bGFiZWxGb250XTsKICAgICBbbGFiZWwgX3dlYl9kcmF3
RG91YmxlZEF0UG9pbnQ6TlNNYWtlUG9pbnQgKERSQUdfTEFCRUxfQk9SREVSX1gsIGltYWdlU2l6
ZS5oZWlnaHQgLSBEUkFHX0xBQkVMX0JPUkRFUl9ZX09GRlNFVCAtIFtsYWJlbEZvbnQgcG9pbnRT
aXplXSkKICAgICAgICAgICAgICB3aXRoVG9wQ29sb3I6dG9wQ29sb3IgYm90dG9tQ29sb3I6Ym90
dG9tQ29sb3IgZm9udDpsYWJlbEZvbnRdOwogICAgIApAQCAtMTQ5NywxMyArMTQ5NywxMyBAQCBz
dGF0aWMgV2ViSFRNTFZpZXcgKmxhc3RIaXRWaWV3ID0gbmlsOwogCiAtICh2b2lkKV93ZWJfc2V0
UHJpbnRpbmdNb2RlUmVjdXJzaXZlCiB7Ci0gICAgW3NlbGYgX3NldFByaW50aW5nOllFUyBtaW5p
bXVtUGFnZVdpZHRoOjAuMCBtYXhpbXVtUGFnZVdpZHRoOjAuMCBhZGp1c3RWaWV3U2l6ZTpOT107
CisgICAgW3NlbGYgX3NldFByaW50aW5nOllFUyBtaW5pbXVtUGFnZVdpZHRoOjAuMGYgbWF4aW11
bVBhZ2VXaWR0aDowLjBmIGFkanVzdFZpZXdTaXplOk5PXTsKICAgICBbc3VwZXIgX3dlYl9zZXRQ
cmludGluZ01vZGVSZWN1cnNpdmVdOwogfQogCiAtICh2b2lkKV93ZWJfY2xlYXJQcmludGluZ01v
ZGVSZWN1cnNpdmUKIHsKLSAgICBbc2VsZiBfc2V0UHJpbnRpbmc6Tk8gbWluaW11bVBhZ2VXaWR0
aDowLjAgbWF4aW11bVBhZ2VXaWR0aDowLjAgYWRqdXN0Vmlld1NpemU6Tk9dOworICAgIFtzZWxm
IF9zZXRQcmludGluZzpOTyBtaW5pbXVtUGFnZVdpZHRoOjAuMGYgbWF4aW11bVBhZ2VXaWR0aDow
LjBmIGFkanVzdFZpZXdTaXplOk5PXTsKICAgICBbc3VwZXIgX3dlYl9jbGVhclByaW50aW5nTW9k
ZVJlY3Vyc2l2ZV07CiB9CiAKQEAgLTI1MTksNyArMjUxOSw3IEBAIHN0YXRpYyBXZWJIVE1MVmll
dyAqbGFzdEhpdFZpZXcgPSBuaWw7CiAKIC0gKHZvaWQpbGF5b3V0CiB7Ci0gICAgW3NlbGYgbGF5
b3V0VG9NaW5pbXVtUGFnZVdpZHRoOjAuMCBtYXhpbXVtUGFnZVdpZHRoOjAuMCBhZGp1c3RpbmdW
aWV3U2l6ZTpOT107CisgICAgW3NlbGYgbGF5b3V0VG9NaW5pbXVtUGFnZVdpZHRoOjAuMGYgbWF4
aW11bVBhZ2VXaWR0aDowLjBmIGFkanVzdGluZ1ZpZXdTaXplOk5PXTsKIH0KIAogLSAoTlNNZW51
ICopbWVudUZvckV2ZW50OihOU0V2ZW50ICopZXZlbnQKQEAgLTMwNTYsNyArMzA1Niw3IEBAIGRv
bmU6CiAgICAgICAgIFdlYkZyYW1lICpzdWJmcmFtZSA9IFtzdWJmcmFtZXMgb2JqZWN0QXRJbmRl
eDppXTsKICAgICAgICAgV2ViRnJhbWVWaWV3ICpmcmFtZVZpZXcgPSBbc3ViZnJhbWUgZnJhbWVW
aWV3XTsKICAgICAgICAgaWYgKFtbc3ViZnJhbWUgZGF0YVNvdXJjZV0gX2lzRG9jdW1lbnRIVE1M
XSkgewotICAgICAgICAgICAgWyhXZWJIVE1MVmlldyAqKVtmcmFtZVZpZXcgZG9jdW1lbnRWaWV3
XSBfc2V0UHJpbnRpbmc6cHJpbnRpbmcgbWluaW11bVBhZ2VXaWR0aDowLjAgbWF4aW11bVBhZ2VX
aWR0aDowLjAgYWRqdXN0Vmlld1NpemU6YWRqdXN0Vmlld1NpemVdOworICAgICAgICAgICAgWyhX
ZWJIVE1MVmlldyAqKVtmcmFtZVZpZXcgZG9jdW1lbnRWaWV3XSBfc2V0UHJpbnRpbmc6cHJpbnRp
bmcgbWluaW11bVBhZ2VXaWR0aDowLjBmIG1heGltdW1QYWdlV2lkdGg6MC4wZiBhZGp1c3RWaWV3
U2l6ZTphZGp1c3RWaWV3U2l6ZV07CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTMwODcsMTIgKzMw
ODcsMTIgQEAgZG9uZToKICAgICAvLyBJZiB0aGUgV2ViSFRNTFZpZXcgaXRzZWxmIGlzIHdoYXQg
d2UncmUgcHJpbnRpbmcsIHRoZW4gd2Ugd2lsbCBuZXZlciBoYXZlIHRvIGRvIHRoaXMuCiAgICAg
Qk9PTCB3YXNJblByaW50aW5nTW9kZSA9IF9wcml2YXRlLT5wcmludGluZzsKICAgICBpZiAoIXdh
c0luUHJpbnRpbmdNb2RlKQotICAgICAgICBbc2VsZiBfc2V0UHJpbnRpbmc6WUVTIG1pbmltdW1Q
YWdlV2lkdGg6MC4wIG1heGltdW1QYWdlV2lkdGg6MC4wIGFkanVzdFZpZXdTaXplOk5PXTsKKyAg
ICAgICAgW3NlbGYgX3NldFByaW50aW5nOllFUyBtaW5pbXVtUGFnZVdpZHRoOjAuMGYgbWF4aW11
bVBhZ2VXaWR0aDowLjBmIGFkanVzdFZpZXdTaXplOk5PXTsKIAogICAgIFtbc2VsZiBfYnJpZGdl
XSBhZGp1c3RQYWdlSGVpZ2h0TmV3Om5ld0JvdHRvbSB0b3A6b2xkVG9wIGJvdHRvbTpvbGRCb3R0
b20gbGltaXQ6Ym90dG9tTGltaXRdOwogICAgIAogICAgIGlmICghd2FzSW5QcmludGluZ01vZGUp
Ci0gICAgICAgIFtzZWxmIF9zZXRQcmludGluZzpOTyBtaW5pbXVtUGFnZVdpZHRoOjAuMCBtYXhp
bXVtUGFnZVdpZHRoOjAuMCBhZGp1c3RWaWV3U2l6ZTpOT107CisgICAgICAgIFtzZWxmIF9zZXRQ
cmludGluZzpOTyBtaW5pbXVtUGFnZVdpZHRoOjAuMGYgbWF4aW11bVBhZ2VXaWR0aDowLjBmIGFk
anVzdFZpZXdTaXplOk5PXTsKIH0KIAogLSAoZmxvYXQpX2F2YWlsYWJsZVBhcGVyV2lkdGhGb3JQ
cmludE9wZXJhdGlvbjooTlNQcmludE9wZXJhdGlvbiAqKXByaW50T3BlcmF0aW9uCkBAIC0zMTA2
LDExICszMTA2LDExIEBAIGRvbmU6CiAgICAgZmxvYXQgdmlld1dpZHRoID0gTlNXaWR0aChbc2Vs
ZiBib3VuZHNdKTsKICAgICBpZiAodmlld1dpZHRoIDwgMSkgewogICAgICAgICBMT0dfRVJST1Io
IiVAIGhhcyBubyB3aWR0aCB3aGVuIHByaW50aW5nIiwgc2VsZik7Ci0gICAgICAgIHJldHVybiAx
LjA7CisgICAgICAgIHJldHVybiAxLjBmOwogICAgIH0KIAogICAgIGZsb2F0IHVzZXJTY2FsZUZh
Y3RvciA9IFtwcmludE9wZXJhdGlvbiBfd2ViX3BhZ2VTZXR1cFNjYWxlRmFjdG9yXTsKLSAgICBm
bG9hdCBtYXhTaHJpbmtUb0ZpdFNjYWxlRmFjdG9yID0gMS9QcmludGluZ01heGltdW1TaHJpbmtG
YWN0b3I7CisgICAgZmxvYXQgbWF4U2hyaW5rVG9GaXRTY2FsZUZhY3RvciA9IDEuMGYgLyBQcmlu
dGluZ01heGltdW1TaHJpbmtGYWN0b3I7CiAgICAgZmxvYXQgc2hyaW5rVG9GaXRTY2FsZUZhY3Rv
ciA9IFtzZWxmIF9hdmFpbGFibGVQYXBlcldpZHRoRm9yUHJpbnRPcGVyYXRpb246cHJpbnRPcGVy
YXRpb25dL3ZpZXdXaWR0aDsKICAgICByZXR1cm4gdXNlclNjYWxlRmFjdG9yICogTUFYKG1heFNo
cmlua1RvRml0U2NhbGVGYWN0b3IsIHNocmlua1RvRml0U2NhbGVGYWN0b3IpOwogfQpAQCAtMzEy
NiwxMyArMzEyNiwxMyBAQCBkb25lOgogLy8gVGhpcyBpcyB1c2VkIGZvciBDYXJib24gcHJpbnRp
bmcuIEF0IHNvbWUgcG9pbnQgd2UgbWlnaHQgd2FudCB0byBtYWtlIHRoaXMgcHVibGljIEFQSS4K
IC0gKHZvaWQpc2V0UGFnZVdpZHRoRm9yUHJpbnRpbmc6KGZsb2F0KXBhZ2VXaWR0aAogewotICAg
IFtzZWxmIF9zZXRQcmludGluZzpOTyBtaW5pbXVtUGFnZVdpZHRoOjAuIG1heGltdW1QYWdlV2lk
dGg6MC4gYWRqdXN0Vmlld1NpemU6Tk9dOworICAgIFtzZWxmIF9zZXRQcmludGluZzpOTyBtaW5p
bXVtUGFnZVdpZHRoOjAuMGYgbWF4aW11bVBhZ2VXaWR0aDowLjBmIGFkanVzdFZpZXdTaXplOk5P
XTsKICAgICBbc2VsZiBfc2V0UHJpbnRpbmc6WUVTIG1pbmltdW1QYWdlV2lkdGg6cGFnZVdpZHRo
IG1heGltdW1QYWdlV2lkdGg6cGFnZVdpZHRoIGFkanVzdFZpZXdTaXplOllFU107CiB9CiAKIC0g
KHZvaWQpX2VuZFByaW50TW9kZQogewotICAgIFtzZWxmIF9zZXRQcmludGluZzpOTyBtaW5pbXVt
UGFnZVdpZHRoOjAuMCBtYXhpbXVtUGFnZVdpZHRoOjAuMCBhZGp1c3RWaWV3U2l6ZTpZRVNdOwor
ICAgIFtzZWxmIF9zZXRQcmludGluZzpOTyBtaW5pbXVtUGFnZVdpZHRoOjAuMGYgbWF4aW11bVBh
Z2VXaWR0aDowLjBmIGFkanVzdFZpZXdTaXplOllFU107CiAgICAgW1tzZWxmIHdpbmRvd10gc2V0
QXV0b2Rpc3BsYXk6WUVTXTsKIH0KIApAQCAtMzE3MiwxMiArMzE3MiwxMiBAQCBkb25lOgogICAg
IAogICAgIC8vIElmIHdlIGFyZSBhIGZyYW1lc2V0IGp1c3QgcHJpbnQgd2l0aCB0aGUgbGF5b3V0
IHdlIGhhdmUgb25zY3JlZW4sIG90aGVyd2lzZSByZWxheW91dAogICAgIC8vIGFjY29yZGluZyB0
byB0aGUgcGFwZXIgc2l6ZQotICAgIGZsb2F0IG1pbkxheW91dFdpZHRoID0gMC4wOwotICAgIGZs
b2F0IG1heExheW91dFdpZHRoID0gMC4wOworICAgIGZsb2F0IG1pbkxheW91dFdpZHRoID0gMC4w
ZjsKKyAgICBmbG9hdCBtYXhMYXlvdXRXaWR0aCA9IDAuMGY7CiAgICAgaWYgKCFbW3NlbGYgX2Jy
aWRnZV0gaXNGcmFtZVNldF0pIHsKICAgICAgICAgZmxvYXQgcGFwZXJXaWR0aCA9IFtzZWxmIF9h
dmFpbGFibGVQYXBlcldpZHRoRm9yUHJpbnRPcGVyYXRpb246W05TUHJpbnRPcGVyYXRpb24gY3Vy
cmVudE9wZXJhdGlvbl1dOwotICAgICAgICBtaW5MYXlvdXRXaWR0aCA9IHBhcGVyV2lkdGgqUHJp
bnRpbmdNaW5pbXVtU2hyaW5rRmFjdG9yOwotICAgICAgICBtYXhMYXlvdXRXaWR0aCA9IHBhcGVy
V2lkdGgqUHJpbnRpbmdNYXhpbXVtU2hyaW5rRmFjdG9yOworICAgICAgICBtaW5MYXlvdXRXaWR0
aCA9IHBhcGVyV2lkdGggKiBQcmludGluZ01pbmltdW1TaHJpbmtGYWN0b3I7CisgICAgICAgIG1h
eExheW91dFdpZHRoID0gcGFwZXJXaWR0aCAqIFByaW50aW5nTWF4aW11bVNocmlua0ZhY3RvcjsK
ICAgICB9CiAgICAgW3NlbGYgX3NldFByaW50aW5nOllFUyBtaW5pbXVtUGFnZVdpZHRoOm1pbkxh
eW91dFdpZHRoIG1heGltdW1QYWdlV2lkdGg6bWF4TGF5b3V0V2lkdGggYWRqdXN0Vmlld1NpemU6
WUVTXTsgLy8gd2lsbCByZWxheW91dAogICAgIE5TUHJpbnRPcGVyYXRpb24gKnByaW50T3BlcmF0
aW9uID0gW05TUHJpbnRPcGVyYXRpb24gY3VycmVudE9wZXJhdGlvbl07CkBAIC0zOTI2LDEyICsz
OTI2LDEyIEBAIGRvbmU6CiAKIC0gKE5TRm9udCAqKV9vcmlnaW5hbEZvbnRBCiB7Ci0gICAgcmV0
dXJuIFtbTlNGb250TWFuYWdlciBzaGFyZWRGb250TWFuYWdlcl0gZm9udFdpdGhGYW1pbHk6QCJI
ZWx2ZXRpY2EiIHRyYWl0czowIHdlaWdodDpTVEFOREFSRF9XRUlHSFQgc2l6ZToxMF07CisgICAg
cmV0dXJuIFtbTlNGb250TWFuYWdlciBzaGFyZWRGb250TWFuYWdlcl0gZm9udFdpdGhGYW1pbHk6
QCJIZWx2ZXRpY2EiIHRyYWl0czowIHdlaWdodDpTVEFOREFSRF9XRUlHSFQgc2l6ZToxMC4wZl07
CiB9CiAKIC0gKE5TRm9udCAqKV9vcmlnaW5hbEZvbnRCCiB7Ci0gICAgcmV0dXJuIFtbTlNGb250
TWFuYWdlciBzaGFyZWRGb250TWFuYWdlcl0gZm9udFdpdGhGYW1pbHk6QCJUaW1lcyIgdHJhaXRz
OihOU0JvbGRGb250TWFzayB8IE5TSXRhbGljRm9udE1hc2spIHdlaWdodDpTVEFOREFSRF9CT0xE
X1dFSUdIVCBzaXplOjEyXTsKKyAgICByZXR1cm4gW1tOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZvbnRN
YW5hZ2VyXSBmb250V2l0aEZhbWlseTpAIlRpbWVzIiB0cmFpdHM6KE5TQm9sZEZvbnRNYXNrIHwg
TlNJdGFsaWNGb250TWFzaykgd2VpZ2h0OlNUQU5EQVJEX0JPTERfV0VJR0hUIHNpemU6MTIuMGZd
OwogfQogCiAtICh2b2lkKV9hZGRUb1N0eWxlOihET01DU1NTdHlsZURlY2xhcmF0aW9uICopc3R5
bGUgZm9udEE6KE5TRm9udCAqKWEgZm9udEI6KE5TRm9udCAqKWIKQEAgLTUzMjksNyArNTMyOSw3
IEBAIHN0YXRpYyBET01SYW5nZSAqdW5pb25ET01SYW5nZXMoRE9NUmFuZ2UKICAgICBbX3RhYmxl
VmlldyByZWxlYXNlXTsKICAgICAKICAgICBfcG9wdXBXaW5kb3cgPSBbW05TV2luZG93IGFsbG9j
XSBpbml0V2l0aENvbnRlbnRSZWN0OnNjcm9sbEZyYW1lIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NX
aW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT107Ci0gICAg
W19wb3B1cFdpbmRvdyBzZXRBbHBoYVZhbHVlOjAuODhdOworICAgIFtfcG9wdXBXaW5kb3cgc2V0
QWxwaGFWYWx1ZTowLjg4Zl07CiAgICAgW19wb3B1cFdpbmRvdyBzZXRDb250ZW50VmlldzpzY3Jv
bGxWaWV3XTsKICAgICBbc2Nyb2xsVmlldyByZWxlYXNlXTsKICAgICBbX3BvcHVwV2luZG93IHNl
dEhhc1NoYWRvdzpZRVNdOwpAQCAtNTM1MSwxMiArNTM1MSwxMiBAQCBzdGF0aWMgRE9NUmFuZ2Ug
KnVuaW9uRE9NUmFuZ2VzKERPTVJhbmdlCiAgICAgd2luZG93RnJhbWUub3JpZ2luID0gW1tfdmll
dyB3aW5kb3ddIGNvbnZlcnRCYXNlVG9TY3JlZW46W192aWV3IGNvbnZlcnRQb2ludDp3b3JkU3Rh
cnQgdG9WaWV3Om5pbF1dOwogICAgIHdpbmRvd0ZyYW1lLnNpemUuaGVpZ2h0ID0gbnVtYmVyVG9T
aG93ICogW190YWJsZVZpZXcgcm93SGVpZ2h0XSArIChudW1iZXJUb1Nob3cgKyAxKSAqIFtfdGFi
bGVWaWV3IGludGVyY2VsbFNwYWNpbmddLmhlaWdodDsKICAgICB3aW5kb3dGcmFtZS5vcmlnaW4u
eSAtPSB3aW5kb3dGcmFtZS5zaXplLmhlaWdodDsKLSAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0
ZXMgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6W05TRm9udCBz
eXN0ZW1Gb250T2ZTaXplOjEyLjBdLCBOU0ZvbnRBdHRyaWJ1dGVOYW1lLCBuaWxdOwotICAgIGZs
b2F0IG1heFdpZHRoID0gMC4wOworICAgIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IFtOU0Rp
Y3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czpbTlNGb250IHN5c3RlbUZvbnRP
ZlNpemU6MTIuMGZdLCBOU0ZvbnRBdHRyaWJ1dGVOYW1lLCBuaWxdOworICAgIGZsb2F0IG1heFdp
ZHRoID0gMC4wZjsKICAgICBpbnQgbWF4SW5kZXggPSAtMTsKICAgICBpbnQgaTsKICAgICBmb3Ig
KGkgPSAwOyBpIDwgbnVtYmVyVG9TaG93OyBpKyspIHsKLSAgICAgICAgZmxvYXQgd2lkdGggPSBj
ZWlsKFtbX2NvbXBsZXRpb25zIG9iamVjdEF0SW5kZXg6aV0gc2l6ZVdpdGhBdHRyaWJ1dGVzOmF0
dHJpYnV0ZXNdLndpZHRoKTsKKyAgICAgICAgZmxvYXQgd2lkdGggPSBjZWlsZihbW19jb21wbGV0
aW9ucyBvYmplY3RBdEluZGV4OmldIHNpemVXaXRoQXR0cmlidXRlczphdHRyaWJ1dGVzXS53aWR0
aCk7CiAgICAgICAgIGlmICh3aWR0aCA+IG1heFdpZHRoKSB7CiAgICAgICAgICAgICBtYXhXaWR0
aCA9IHdpZHRoOwogICAgICAgICAgICAgbWF4SW5kZXggPSBpOwpAQCAtNTM2NCwxMSArNTM2NCwx
MSBAQCBzdGF0aWMgRE9NUmFuZ2UgKnVuaW9uRE9NUmFuZ2VzKERPTVJhbmdlCiAgICAgfQogICAg
IHdpbmRvd0ZyYW1lLnNpemUud2lkdGggPSAxMDA7CiAgICAgaWYgKG1heEluZGV4ID49IDApIHsK
LSAgICAgICAgbWF4V2lkdGggPSBjZWlsKFtOU1Njcm9sbFZpZXcgZnJhbWVTaXplRm9yQ29udGVu
dFNpemU6TlNNYWtlU2l6ZShtYXhXaWR0aCwgMTAwKSBoYXNIb3Jpem9udGFsU2Nyb2xsZXI6Tk8g
aGFzVmVydGljYWxTY3JvbGxlcjpZRVMgYm9yZGVyVHlwZTpOU05vQm9yZGVyXS53aWR0aCk7Ci0g
ICAgICAgIG1heFdpZHRoID0gY2VpbChbTlNXaW5kb3cgZnJhbWVSZWN0Rm9yQ29udGVudFJlY3Q6
TlNNYWtlUmVjdCgwLCAwLCBtYXhXaWR0aCwgMTAwKSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2lu
ZG93TWFza10uc2l6ZS53aWR0aCk7Ci0gICAgICAgIG1heFdpZHRoICs9IDUuMDsKKyAgICAgICAg
bWF4V2lkdGggPSBjZWlsZihbTlNTY3JvbGxWaWV3IGZyYW1lU2l6ZUZvckNvbnRlbnRTaXplOk5T
TWFrZVNpemUobWF4V2lkdGgsIDEwMC4wZikgaGFzSG9yaXpvbnRhbFNjcm9sbGVyOk5PIGhhc1Zl
cnRpY2FsU2Nyb2xsZXI6WUVTIGJvcmRlclR5cGU6TlNOb0JvcmRlcl0ud2lkdGgpOworICAgICAg
ICBtYXhXaWR0aCA9IGNlaWxmKFtOU1dpbmRvdyBmcmFtZVJlY3RGb3JDb250ZW50UmVjdDpOU01h
a2VSZWN0KDAuMGYsIDAuMGYsIG1heFdpZHRoLCAxMDAuMGYpIHN0eWxlTWFzazpOU0JvcmRlcmxl
c3NXaW5kb3dNYXNrXS5zaXplLndpZHRoKTsKKyAgICAgICAgbWF4V2lkdGggKz0gNS4wZjsKICAg
ICAgICAgd2luZG93RnJhbWUuc2l6ZS53aWR0aCA9IE1BWChtYXhXaWR0aCwgd2luZG93RnJhbWUu
c2l6ZS53aWR0aCk7Ci0gICAgICAgIG1heFdpZHRoID0gTUlOKDQwMC4wLCB3aW5kb3dGcmFtZS5z
aXplLndpZHRoKTsKKyAgICAgICAgbWF4V2lkdGggPSBNSU4oNDAwLjBmLCB3aW5kb3dGcmFtZS5z
aXplLndpZHRoKTsKICAgICB9CiAgICAgW19wb3B1cFdpbmRvdyBzZXRGcmFtZTp3aW5kb3dGcmFt
ZSBkaXNwbGF5Ok5PXTsKICAgICAKSW5kZXg6IFdlYktpdC9XZWJWaWV3L1dlYlBERlZpZXcubQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViVmlldy9XZWJQREZWaWV3Lm0JKHJldmlzaW9uIDE1NzU4
KQorKysgV2ViS2l0L1dlYlZpZXcvV2ViUERGVmlldy5tCSh3b3JraW5nIGNvcHkpCkBAIC04MDAs
NyArODAwLDcgQEAgc3RhdGljIEJPT0wgUERGU2VsZWN0aW9uc0FyZUVxdWFsKFBERlNlbAogCiAt
IChJQkFjdGlvbilfbWFrZVRleHRTdGFuZGFyZFNpemU6KGlkKXNlbmRlcgogewotICAgIFtQREZT
dWJ2aWV3UHJveHkgc2V0U2NhbGVGYWN0b3I6MS4wXTsKKyAgICBbUERGU3Vidmlld1Byb3h5IHNl
dFNjYWxlRmFjdG9yOjEuMGZdOwogfQogCiAtIChCT09MKV90cmFja3NDb21tb25TaXplRmFjdG9y
CkBAIC04NjYsNyArODY2LDcgQEAgc3RhdGljIEJPT0wgUERGU2VsZWN0aW9uc0FyZUVxdWFsKFBE
RlNlbAogICAgIFthdHRyaWJ1dGVkU3RyaW5nIHJlbW92ZUF0dHJpYnV0ZTpOU0JhY2tncm91bmRD
b2xvckF0dHJpYnV0ZU5hbWUgcmFuZ2U6d2hvbGVTdHJpbmdSYW5nZV07CiAgICAgW2F0dHJpYnV0
ZWRTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOk5TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lIHJh
bmdlOndob2xlU3RyaW5nUmFuZ2VdOwogICAgIGlmIChmb3JjZVdoaXRlVGV4dCkKLSAgICAgICAg
W2F0dHJpYnV0ZWRTdHJpbmcgYWRkQXR0cmlidXRlOk5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRl
TmFtZSB2YWx1ZTpbTlNDb2xvciBjb2xvcldpdGhEZXZpY2VXaGl0ZToxLjAgYWxwaGE6MS4wXSBy
YW5nZTp3aG9sZVN0cmluZ1JhbmdlXTsKKyAgICAgICAgW2F0dHJpYnV0ZWRTdHJpbmcgYWRkQXR0
cmlidXRlOk5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZSB2YWx1ZTpbTlNDb2xvciBjb2xv
cldpdGhEZXZpY2VXaGl0ZToxLjBmIGFscGhhOjEuMGZdIHJhbmdlOndob2xlU3RyaW5nUmFuZ2Vd
OwogICAgIFthdHRyaWJ1dGVkU3RyaW5nIGVuZEVkaXRpbmddOwogICAgIAogICAgIE5TSW1hZ2Uq
IHNlbGVjdGlvbkltYWdlID0gW1tbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhTaXplOltzZWxmIHNl
bGVjdGlvbkltYWdlUmVjdF0uc2l6ZV0gYXV0b3JlbGVhc2VdOwpAQCAtOTkyLDcgKzk5Miw3IEBA
IHN0YXRpYyBCT09MIFBERlNlbGVjdGlvbnNBcmVFcXVhbChQREZTZWwKICAgICBbaW52b2NhdGlv
biBpbnZva2VXaXRoVGFyZ2V0OlBERlN1YnZpZXddOwogCiAgICAgV2ViUHJlZmVyZW5jZXMgKnBy
ZWZzID0gW1t2aWV3LT5kYXRhU291cmNlIF93ZWJWaWV3XSBwcmVmZXJlbmNlc107Ci0gICAgZmxv
YXQgc2NhbGVGYWN0b3IgPSBbUERGU3VidmlldyBhdXRvU2NhbGVzXSA/IDAuMCA6IFtQREZTdWJ2
aWV3IHNjYWxlRmFjdG9yXTsKKyAgICBmbG9hdCBzY2FsZUZhY3RvciA9IFtQREZTdWJ2aWV3IGF1
dG9TY2FsZXNdID8gMC4wZiA6IFtQREZTdWJ2aWV3IHNjYWxlRmFjdG9yXTsKICAgICBbcHJlZnMg
c2V0UERGU2NhbGVGYWN0b3I6c2NhbGVGYWN0b3JdOwogICAgIFtwcmVmcyBzZXRQREZEaXNwbGF5
TW9kZTpbUERGU3VidmlldyBkaXNwbGF5TW9kZV1dOwogfQpJbmRleDogV2ViS2l0L1dlYlZpZXcv
V2ViUHJlZmVyZW5jZXMubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViVmlldy9XZWJQcmVmZXJl
bmNlcy5tCShyZXZpc2lvbiAxNTc1OCkKKysrIFdlYktpdC9XZWJWaWV3L1dlYlByZWZlcmVuY2Vz
Lm0JKHdvcmtpbmcgY29weSkKQEAgLTI5OCw3ICsyOTgsNyBAQCBOU19FTkRIQU5ETEVSCiAtIChm
bG9hdClfZmxvYXRWYWx1ZUZvcktleTooTlNTdHJpbmcgKilrZXkKIHsKICAgICBpZCBvID0gW3Nl
bGYgX3ZhbHVlRm9yS2V5OmtleV07Ci0gICAgcmV0dXJuIFtvIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoZmxvYXRWYWx1ZSldID8gW28gZmxvYXRWYWx1ZV0gOiAwLjA7CisgICAgcmV0dXJu
IFtvIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZmxvYXRWYWx1ZSldID8gW28gZmxvYXRW
YWx1ZV0gOiAwLjBmOwogfQogCiAtICh2b2lkKV9zZXRGbG9hdFZhbHVlOihmbG9hdCl2YWx1ZSBm
b3JLZXk6KE5TU3RyaW5nICopa2V5CkluZGV4OiBXZWJLaXQvV2ViVmlldy9XZWJWaWV3Lm0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L1dlYlZpZXcvV2ViVmlldy5tCShyZXZpc2lvbiAxNTc1OCkKKysr
IFdlYktpdC9XZWJWaWV3L1dlYlZpZXcubQkod29ya2luZyBjb3B5KQpAQCAtMjY2Myw5ICsyNjYz
LDkgQEAgc3RhdGljIFdlYkZyYW1lICppbmNyZW1lbnRGcmFtZShXZWJGcmFtZQogICAgIFtbc2Vs
ZiBtYWluRnJhbWVdIHJlbG9hZF07CiB9CiAKLSNkZWZpbmUgTWluaW11bVRleHRTaXplTXVsdGlw
bGllciAgICAgICAwLjUKLSNkZWZpbmUgTWF4aW11bVRleHRTaXplTXVsdGlwbGllciAgICAgICAz
LjAKLSNkZWZpbmUgVGV4dFNpemVNdWx0aXBsaWVyUmF0aW8gICAgICAgICAxLjIKKyNkZWZpbmUg
TWluaW11bVRleHRTaXplTXVsdGlwbGllciAgICAgICAwLjVmCisjZGVmaW5lIE1heGltdW1UZXh0
U2l6ZU11bHRpcGxpZXIgICAgICAgMy4wZgorI2RlZmluZSBUZXh0U2l6ZU11bHRpcGxpZXJSYXRp
byAgICAgICAgIDEuMmYKIAogLSAoQk9PTCljYW5NYWtlVGV4dFNtYWxsZXIKIHsKQEAgLTI2ODEs
NyArMjY4MSw3IEBAIHN0YXRpYyBXZWJGcmFtZSAqaW5jcmVtZW50RnJhbWUoV2ViRnJhbWUKIAog
LSAoSUJBY3Rpb24pbWFrZVRleHRTbWFsbGVyOihpZClzZW5kZXIKIHsKLSAgICBmbG9hdCBuZXdT
Y2FsZSA9IF9wcml2YXRlLT50ZXh0U2l6ZU11bHRpcGxpZXIvVGV4dFNpemVNdWx0aXBsaWVyUmF0
aW87CisgICAgZmxvYXQgbmV3U2NhbGUgPSBfcHJpdmF0ZS0+dGV4dFNpemVNdWx0aXBsaWVyIC8g
VGV4dFNpemVNdWx0aXBsaWVyUmF0aW87CiAgICAgQk9PTCBjYW5TaHJpbmtNb3JlID0gbmV3U2Nh
bGUgPiBNaW5pbXVtVGV4dFNpemVNdWx0aXBsaWVyOwogICAgIFtzZWxmIF9wZXJmb3JtVGV4dFNp
emluZ1NlbGVjdG9yOkBzZWxlY3RvcihfbWFrZVRleHRTbWFsbGVyOikgd2l0aE9iamVjdDpzZW5k
ZXIgb25UcmFja2luZ0RvY3M6Y2FuU2hyaW5rTW9yZSBzZWxGb3JOb25UcmFja2luZ0RvY3M6QHNl
bGVjdG9yKF9jYW5NYWtlVGV4dFNtYWxsZXIpIG5ld1NjYWxlRmFjdG9yOm5ld1NjYWxlXTsKIH0K
QEAgLTI3MTcsMTQgKzI3MTcsMTQgQEAgc3RhdGljIFdlYkZyYW1lICppbmNyZW1lbnRGcmFtZShX
ZWJGcmFtZQogCiAtIChCT09MKWNhbk1ha2VUZXh0U3RhbmRhcmRTaXplCiB7Ci0gICAgQk9PTCBu
b3RBbHJlYWR5U3RhbmRhcmQgPSBfcHJpdmF0ZS0+dGV4dFNpemVNdWx0aXBsaWVyICE9IDEuMDsK
LSAgICByZXR1cm4gW3NlbGYgX3BlcmZvcm1UZXh0U2l6aW5nU2VsZWN0b3I6KFNFTCkwIHdpdGhP
YmplY3Q6bmlsIG9uVHJhY2tpbmdEb2NzOm5vdEFscmVhZHlTdGFuZGFyZCBzZWxGb3JOb25UcmFj
a2luZ0RvY3M6QHNlbGVjdG9yKF9jYW5NYWtlVGV4dFN0YW5kYXJkU2l6ZSkgbmV3U2NhbGVGYWN0
b3I6MF07CisgICAgQk9PTCBub3RBbHJlYWR5U3RhbmRhcmQgPSBfcHJpdmF0ZS0+dGV4dFNpemVN
dWx0aXBsaWVyICE9IDEuMGY7CisgICAgcmV0dXJuIFtzZWxmIF9wZXJmb3JtVGV4dFNpemluZ1Nl
bGVjdG9yOihTRUwpMCB3aXRoT2JqZWN0Om5pbCBvblRyYWNraW5nRG9jczpub3RBbHJlYWR5U3Rh
bmRhcmQgc2VsRm9yTm9uVHJhY2tpbmdEb2NzOkBzZWxlY3RvcihfY2FuTWFrZVRleHRTdGFuZGFy
ZFNpemUpIG5ld1NjYWxlRmFjdG9yOjAuMGZdOwogfQogCiAtIChJQkFjdGlvbiltYWtlVGV4dFN0
YW5kYXJkU2l6ZTooaWQpc2VuZGVyCiB7Ci0gICAgQk9PTCBub3RBbHJlYWR5U3RhbmRhcmQgPSBf
cHJpdmF0ZS0+dGV4dFNpemVNdWx0aXBsaWVyICE9IDEuMDsKLSAgICBbc2VsZiBfcGVyZm9ybVRl
eHRTaXppbmdTZWxlY3RvcjpAc2VsZWN0b3IoX21ha2VUZXh0U3RhbmRhcmRTaXplOikgd2l0aE9i
amVjdDpzZW5kZXIgb25UcmFja2luZ0RvY3M6bm90QWxyZWFkeVN0YW5kYXJkIHNlbEZvck5vblRy
YWNraW5nRG9jczpAc2VsZWN0b3IoX2Nhbk1ha2VUZXh0U3RhbmRhcmRTaXplKSBuZXdTY2FsZUZh
Y3RvcjoxLjBdOworICAgIEJPT0wgbm90QWxyZWFkeVN0YW5kYXJkID0gX3ByaXZhdGUtPnRleHRT
aXplTXVsdGlwbGllciAhPSAxLjBmOworICAgIFtzZWxmIF9wZXJmb3JtVGV4dFNpemluZ1NlbGVj
dG9yOkBzZWxlY3RvcihfbWFrZVRleHRTdGFuZGFyZFNpemU6KSB3aXRoT2JqZWN0OnNlbmRlciBv
blRyYWNraW5nRG9jczpub3RBbHJlYWR5U3RhbmRhcmQgc2VsRm9yTm9uVHJhY2tpbmdEb2NzOkBz
ZWxlY3RvcihfY2FuTWFrZVRleHRTdGFuZGFyZFNpemUpIG5ld1NjYWxlRmFjdG9yOjEuMGZdOwog
fQogCiAjZGVmaW5lIFZBTElEQVRFKG5hbWUpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9837</attachid>
            <date>2006-08-02 15:20:10 -0700</date>
            <delta_ts>2006-08-04 15:30:16 -0700</delta_ts>
            <desc>patch of remaining less trivial changes</desc>
            <filename>shortenCasts.diff</filename>
            <type>text/plain</type>
            <size>9216</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0FQSS9KU05vZGVMaXN0LmMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvQVBJL0pTTm9kZUxpc3QuYwkocmV2aXNpb24gMTU3NTgpCisrKyBKYXZhU2Ny
aXB0Q29yZS9BUEkvSlNOb2RlTGlzdC5jCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBA
IHN0YXRpYyBKU1ZhbHVlUmVmIEpTTm9kZUxpc3RfaXRlbShKU0NvbnQKICAgICBpZiAoYXJndW1l
bnRDb3VudCA+IDApIHsKICAgICAgICAgTm9kZUxpc3QqIG5vZGVMaXN0ID0gSlNPYmplY3RHZXRQ
cml2YXRlKHRoaXNPYmplY3QpOwogICAgICAgICBhc3NlcnQobm9kZUxpc3QpOwotICAgICAgICBO
b2RlKiBub2RlID0gTm9kZUxpc3RfaXRlbShub2RlTGlzdCwgSlNWYWx1ZVRvTnVtYmVyKGNvbnRl
eHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgICAgIE5vZGUqIG5vZGUgPSBOb2Rl
TGlzdF9pdGVtKG5vZGVMaXN0LCAodW5zaWduZWQpSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFy
Z3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CiAgICAgICAgIGlmIChub2RlKQogICAgICAgICAgICAg
cmV0dXJuIEpTTm9kZV9uZXcoY29udGV4dCwgbm9kZSk7CiAgICAgfQpAQCAtNjUsMTIgKzY1LDEx
IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIEpTTm9kZUxpc3RfZ2V0UHJvcGVydHkKICAgICBOb2RlTGlz
dCogbm9kZUxpc3QgPSBKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCk7CiAgICAgYXNzZXJ0
KG5vZGVMaXN0KTsKICAgICBkb3VibGUgaW5kZXggPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwg
SlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgcHJvcGVydHlOYW1lKSwgZXhjZXB0aW9uKTsKLSAg
ICB1bnNpZ25lZCB1aW5kZXggPSBpbmRleDsKKyAgICB1bnNpZ25lZCB1aW5kZXggPSAodW5zaWdu
ZWQpaW5kZXg7CiAgICAgaWYgKHVpbmRleCA9PSBpbmRleCkgeyAvLyBmYWxzZSBmb3IgTmFOCiAg
ICAgICAgIE5vZGUqIG5vZGUgPSBOb2RlTGlzdF9pdGVtKG5vZGVMaXN0LCB1aW5kZXgpOwotICAg
ICAgICBpZiAobm9kZSkgeworICAgICAgICBpZiAobm9kZSkKICAgICAgICAgICAgIHJldHVybiBK
U05vZGVfbmV3KGNvbnRleHQsIG5vZGUpOwotICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHJl
dHVybiBOVUxMOwpJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTc1OCkKKysrIEphdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTE1ODMsNiArMTU4Myw3IEBACiAJCQkJCSItV3dyaXRlLXN0cmluZ3MiLAog
CQkJCQkiLVduby1mb3JtYXQteTJrIiwKIAkJCQkJIi1Xbm8tbG9uZy1kb3VibGUiLAorCQkJCQki
LVdzaG9ydGVuLTY0LXRvLTMyIiwKIAkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKQEAg
LTE2MjMsNiArMTYyNCw3IEBACiAJCQkJCSItV3dyaXRlLXN0cmluZ3MiLAogCQkJCQkiLVduby1m
b3JtYXQteTJrIiwKIAkJCQkJIi1Xbm8tbG9uZy1kb3VibGUiLAorCQkJCQkiLVdzaG9ydGVuLTY0
LXRvLTMyIiwKIAkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwpAQCAtMTY2OSw2ICsx
NjcxLDcgQEAKIAkJCQkJIi1Xd3JpdGUtc3RyaW5ncyIsCiAJCQkJCSItV25vLWZvcm1hdC15Mmsi
LAogCQkJCQkiLVduby1sb25nLWRvdWJsZSIsCisJCQkJCSItV3Nob3J0ZW4tNjQtdG8tMzIiLAog
CQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CkBAIC0xNzYzLDYgKzE3NjYsNyBA
QAogCQkJCQkiLVduby1mb3JtYXQteTJrIiwKIAkJCQkJIi1Xbm8tdW51c2VkLXBhcmFtZXRlciIs
CiAJCQkJCSItV25vLWxvbmctZG91YmxlIiwKKwkJCQkJIi1Xc2hvcnRlbi02NC10by0zMiIsCiAJ
CQkJKTsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CkBAIC0xODAxLDYgKzE4MDUsNyBAQAogCQkJ
CQkiLVduby1mb3JtYXQteTJrIiwKIAkJCQkJIi1Xbm8tdW51c2VkLXBhcmFtZXRlciIsCiAJCQkJ
CSItV25vLWxvbmctZG91YmxlIiwKKwkJCQkJIi1Xc2hvcnRlbi02NC10by0zMiIsCiAJCQkJKTsK
IAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKQEAgLTE4MzYsNiArMTg0MSw3IEBACiAJCQkJCSIt
V25vLWZvcm1hdC15MmsiLAogCQkJCQkiLVduby11bnVzZWQtcGFyYW1ldGVyIiwKIAkJCQkJIi1X
bm8tbG9uZy1kb3VibGUiLAorCQkJCQkiLVdzaG9ydGVuLTY0LXRvLTMyIiwKIAkJCQkpOwogCQkJ
fTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NzU4KQorKysgV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTc0MzYsNiArNzQzNiw3
IEBACiAJCQkJCSItV25vLWZvcm1hdC15MmsiLAogCQkJCQkiLVduby11bnVzZWQtcGFyYW1ldGVy
IiwKIAkJCQkJIi1Xbm8tbG9uZy1kb3VibGUiLAorCQkJCQkiLVdzaG9ydGVuLTY0LXRvLTMyIiwK
IAkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKQEAgLTc0NzMsNiArNzQ3NCw3IEBACiAJ
CQkJCSItV25vLWZvcm1hdC15MmsiLAogCQkJCQkiLVduby11bnVzZWQtcGFyYW1ldGVyIiwKIAkJ
CQkJIi1Xbm8tbG9uZy1kb3VibGUiLAorCQkJCQkiLVdzaG9ydGVuLTY0LXRvLTMyIiwKIAkJCQkp
OwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwpAQCAtNzUwNyw2ICs3NTA5LDcgQEAKIAkJCQkJ
Ii1Xbm8tZm9ybWF0LXkyayIsCiAJCQkJCSItV25vLXVudXNlZC1wYXJhbWV0ZXIiLAogCQkJCQki
LVduby1sb25nLWRvdWJsZSIsCisJCQkJCSItV3Nob3J0ZW4tNjQtdG8tMzIiLAogCQkJCSk7CiAJ
CQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CkluZGV4OiBXZWJLaXQvTWlzYy9XZWJMUlVGaWxl
TGlzdC5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9NaXNjL1dlYkxSVUZpbGVMaXN0Lm0JKHJldmlz
aW9uIDE1NzU4KQorKysgV2ViS2l0L01pc2MvV2ViTFJVRmlsZUxpc3QubQkod29ya2luZyBjb3B5
KQpAQCAtMTI3LDcgKzEyNyw3IEBAIGludCBXZWJMUlVGaWxlTGlzdFJlYnVpbGRGaWxlRGF0YVVz
aW5nUm8KICAgICB3aGlsZSAoKGVudCA9IGZ0c19yZWFkKGZ0cykpKSB7CiAgICAgICAgIGlmIChl
bnQtPmZ0c19zdGF0cC0+c3RfbW9kZSAmIFNfSUZSRUcpIHsKICAgICAgICAgICAgIGNvbnN0IGNo
YXIgKmZpbGVQYXRoID0gZW50LT5mdHNfYWNjcGF0aCArIHBhdGhMZW5ndGggKyAxOwotICAgICAg
ICAgICAgV2ViTFJVRmlsZUxpc3RTZXRGaWxlRGF0YShsaXN0LCBmaWxlUGF0aCwgZW50LT5mdHNf
c3RhdHAtPnN0X3NpemUsIGVudC0+ZnRzX3N0YXRwLT5zdF9jdGltZXNwZWMudHZfc2VjIC0ga0NG
QWJzb2x1dGVUaW1lSW50ZXJ2YWxTaW5jZTE5NzApOworICAgICAgICAgICAgV2ViTFJVRmlsZUxp
c3RTZXRGaWxlRGF0YShsaXN0LCBmaWxlUGF0aCwgKHVuc2lnbmVkIGxvbmcpZW50LT5mdHNfc3Rh
dHAtPnN0X3NpemUsIGVudC0+ZnRzX3N0YXRwLT5zdF9jdGltZXNwZWMudHZfc2VjIC0ga0NGQWJz
b2x1dGVUaW1lSW50ZXJ2YWxTaW5jZTE5NzApOwogICAgICAgICB9CiAgICAgfQogCkluZGV4OiBX
ZWJLaXQvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5TdHJlYW0ubQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5TdHJlYW0ubQkocmV2aXNpb24g
MTU3NTgpCisrKyBXZWJLaXQvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5TdHJlYW0ubQko
d29ya2luZyBjb3B5KQpAQCAtMjExLDggKzIxMSwxMiBAQCBzdGF0aWMgY2hhciAqQ2FyYm9uUGF0
aEZyb21QT1NJWFBhdGgoY29uCiAgICAgc3RyZWFtLnVybCA9IHN0cmR1cChbcmVzcG9uc2VVUkwg
X3dlYl9VUkxDU3RyaW5nXSk7CiAKICAgICBzdHJlYW0ubmRhdGEgPSBzZWxmOwotICAgIHN0cmVh
bS5lbmQgPSBleHBlY3RlZENvbnRlbnRMZW5ndGggPiAwID8gZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
IDogMDsKLSAgICBzdHJlYW0ubGFzdG1vZGlmaWVkID0gW2xhc3RNb2RpZmllZERhdGUgdGltZUlu
dGVydmFsU2luY2UxOTcwXTsKKyAgICBzdHJlYW0uZW5kID0gZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
ID4gMCA/ICh1bnNpZ25lZClleHBlY3RlZENvbnRlbnRMZW5ndGggOiAwOworCisgICAgLy8gRklY
TUU6IGlzIHRoZXJlIGEgY2xlYW5lciB3YXkgdG8gY2FzdCBhbiBOU1RpbWVJbnRlcnZhbCB0byBh
biB1bnNpZ25lZCBpbnQ/CisgICAgTlNUaW1lSW50ZXJ2YWwgdGltZUludGVydmFsU2luY2VMYXN0
TW9kaWZpZWQgPSBbbGFzdE1vZGlmaWVkRGF0ZSB0aW1lSW50ZXJ2YWxTaW5jZTE5NzBdOworICAg
IHN0cmVhbS5sYXN0bW9kaWZpZWQgPSAodW5zaWduZWQpdGltZUludGVydmFsU2luY2VMYXN0TW9k
aWZpZWQ7CisKICAgICBzdHJlYW0ubm90aWZ5RGF0YSA9IG5vdGlmeURhdGE7CiAgICAgCiAgICAg
dHJhbnNmZXJNb2RlID0gTlBfTk9STUFMOwpJbmRleDogV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lQnJpZGdlLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lQnJpZGdlLm0JKHJldmlzaW9uIDE1NzU4KQorKysgV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lQnJpZGdlLm0JKHdvcmtpbmcgY29weSkKQEAgLTYzOSw3ICs2MzksOCBAQCBOU1N0cmlu
ZyAqV2ViUGx1Z2luQ29udGFpbmVyS2V5ID0gICBAIldlCiAKICAgICBOU1RpbWVJbnRlcnZhbCBl
eHBpcmF0aW9uID0gW3Jlc3BvbnNlIF9jYWxjdWxhdGVkRXhwaXJhdGlvbl07CiAgICAgZXhwaXJh
dGlvbiArPSBrQ0ZBYnNvbHV0ZVRpbWVJbnRlcnZhbFNpbmNlMTk3MDsKLSAgICByZXR1cm4gZXhw
aXJhdGlvbiA+IE1BWF9USU1FX1QgPyBNQVhfVElNRV9UIDogZXhwaXJhdGlvbjsKKyAgICAKKyAg
ICByZXR1cm4gZXhwaXJhdGlvbiA+IE1BWF9USU1FX1QgPyBNQVhfVElNRV9UIDogKHRpbWVfdCll
eHBpcmF0aW9uOwogfQogCiAtICh2b2lkKXJlcG9ydENsaWVudFJlZGlyZWN0VG9VUkw6KE5TVVJM
ICopVVJMIGRlbGF5OihOU1RpbWVJbnRlcnZhbClzZWNvbmRzIGZpcmVEYXRlOihOU0RhdGUgKilk
YXRlIGxvY2tIaXN0b3J5OihCT09MKWxvY2tIaXN0b3J5IGlzSmF2YVNjcmlwdEZvcm1BY3Rpb246
KEJPT0wpaXNKYXZhU2NyaXB0Rm9ybUFjdGlvbgpJbmRleDogV2ViS2l0L1dlYkluc3BlY3Rvci9X
ZWJOb2RlSGlnaGxpZ2h0Vmlldy5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJJbnNwZWN0b3Iv
V2ViTm9kZUhpZ2hsaWdodFZpZXcubQkocmV2aXNpb24gMTU3NTgpCisrKyBXZWJLaXQvV2ViSW5z
cGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3Lm0JKHdvcmtpbmcgY29weSkKQEAgLTE4MCw2ICsx
ODAsNiBAQAogICAgIGVsc2UgaWYgKGFscGhhIDwgMC4wKQogICAgICAgICBhbHBoYSA9IDAuMDsK
IAotICAgIFtfaGlnaGxpZ2h0UmluZ0ltYWdlIGRyYXdJblJlY3Q6cmVjdCBmcm9tUmVjdDpyZWN0
IG9wZXJhdGlvbjpOU0NvbXBvc2l0ZUNvcHkgZnJhY3Rpb246YWxwaGFdOworICAgIFtfaGlnaGxp
Z2h0UmluZ0ltYWdlIGRyYXdJblJlY3Q6cmVjdCBmcm9tUmVjdDpyZWN0IG9wZXJhdGlvbjpOU0Nv
bXBvc2l0ZUNvcHkgZnJhY3Rpb246KGZsb2F0KWFscGhhXTsKIH0KIEBlbmQKSW5kZXg6IFdlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NzU4KQorKysgV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODk1LDYgKzE4OTUsNyBAQAogCQkJCQkiLVdiYWQtZnVuY3Rpb24tY2FzdCIsCiAJCQkJCSItV21p
c3NpbmctZGVjbGFyYXRpb25zIiwKIAkJCQkJIi1XbmVzdGVkLWV4dGVybnMiLAorCQkJCQkiLVdz
aG9ydGVuLTY0LXRvLTMyIiwKIAkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKQEAgLTE5
MzUsNiArMTkzNiw3IEBACiAJCQkJCSItV2JhZC1mdW5jdGlvbi1jYXN0IiwKIAkJCQkJIi1XbWlz
c2luZy1kZWNsYXJhdGlvbnMiLAogCQkJCQkiLVduZXN0ZWQtZXh0ZXJucyIsCisJCQkJCSItV3No
b3J0ZW4tNjQtdG8tMzIiLAogCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CkBAIC0x
OTcxLDYgKzE5NzMsNyBAQAogCQkJCQkiLVdiYWQtZnVuY3Rpb24tY2FzdCIsCiAJCQkJCSItV21p
c3NpbmctZGVjbGFyYXRpb25zIiwKIAkJCQkJIi1XbmVzdGVkLWV4dGVybnMiLAorCQkJCQkiLVdz
aG9ydGVuLTY0LXRvLTMyIiwKIAkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwpJ
bmRleDogV2ViS2l0L1dlYlZpZXcvV2ViTG9hZGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dl
YlZpZXcvV2ViTG9hZGVyLm0JKHJldmlzaW9uIDE1NzU4KQorKysgV2ViS2l0L1dlYlZpZXcvV2Vi
TG9hZGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTQyOCw3ICs0MjgsNyBAQCBzdGF0aWMgQk9PTCBO
U1VSTENvbm5lY3Rpb25TdXBwb3J0c0J1ZmZlCiAgICAgLy8gSWYgdGhlIFVSTCBpcyBvbmUgb2Yg
b3VyIHdoYWNreSBhcHBsZXdlYmRhdGEgVVJMcyB0aGVuCiAgICAgLy8gZmFrZSB1cCBhIHN1YnN0
aXR1dGUgVVJMIHRvIHByZXNlbnQgdG8gdGhlIGRlbGVnYXRlLgogICAgIGlmKFtXZWJEYXRhUHJv
dG9jb2wgX3dlYklzRGF0YVByb3RvY29sVVJMOltyIFVSTF1dKSB7Ci0gICAgICAgIHIgPSBbW1tO
U1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpbcmVxdWVzdCBfd2ViRGF0YVJlcXVlc3RF
eHRlcm5hbFVSTF0gTUlNRVR5cGU6W3IgTUlNRVR5cGVdIGV4cGVjdGVkQ29udGVudExlbmd0aDpb
ciBleHBlY3RlZENvbnRlbnRMZW5ndGhdIHRleHRFbmNvZGluZ05hbWU6W3IgdGV4dEVuY29kaW5n
TmFtZV1dIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgciA9IFtbW05TVVJMUmVzcG9uc2UgYWxsb2Nd
IGluaXRXaXRoVVJMOltyZXF1ZXN0IF93ZWJEYXRhUmVxdWVzdEV4dGVybmFsVVJMXSBNSU1FVHlw
ZTpbciBNSU1FVHlwZV0gZXhwZWN0ZWRDb250ZW50TGVuZ3RoOihpbnQpW3IgZXhwZWN0ZWRDb250
ZW50TGVuZ3RoXSB0ZXh0RW5jb2RpbmdOYW1lOltyIHRleHRFbmNvZGluZ05hbWVdXSBhdXRvcmVs
ZWFzZV07CiAgICAgfQogCiAgICAgW3IgcmV0YWluXTsKQEAgLTQ1NCw3ICs0NTQsNyBAQCBzdGF0
aWMgQk9PTCBOU1VSTENvbm5lY3Rpb25TdXBwb3J0c0J1ZmZlCiAgICAgCiAgICAgW3NlbGYgYWRk
RGF0YTpkYXRhXTsKICAgICAKLSAgICBbZGF0YVNvdXJjZSBfZGlkUmVjZWl2ZURhdGE6ZGF0YSBj
b250ZW50TGVuZ3RoOmxlbmd0aFJlY2VpdmVkIGZvclJlc291cmNlOmlkZW50aWZpZXJdOworICAg
IFtkYXRhU291cmNlIF9kaWRSZWNlaXZlRGF0YTpkYXRhIGNvbnRlbnRMZW5ndGg6KGludClsZW5n
dGhSZWNlaXZlZCBmb3JSZXNvdXJjZTppZGVudGlmaWVyXTsKIAogICAgIFtzZWxmIHJlbGVhc2Vd
OwogfQpJbmRleDogV2ViS2l0L1dlYlZpZXcvV2ViTWFpblJlc291cmNlTG9hZGVyLm0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L1dlYlZpZXcvV2ViTWFpblJlc291cmNlTG9hZGVyLm0JKHJldmlzaW9u
IDE1NzU4KQorKysgV2ViS2l0L1dlYlZpZXcvV2ViTWFpblJlc291cmNlTG9hZGVyLm0JKHdvcmtp
bmcgY29weSkKQEAgLTM0Miw3ICszNDIsNyBAQAogICAgIGlmIChbW1tVUkwgcGF0aF0gcGF0aEV4
dGVuc2lvbl0gX3dlYmtpdF9pc0Nhc2VJbnNlbnNpdGl2ZUVxdWFsVG9TdHJpbmc6QCJ3ZWJhcmNo
aXZlIl0pIHsKICAgICAgICAgciA9IFtbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJM
OlVSTCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1JTUVUeXBlOkAi
YXBwbGljYXRpb24veC13ZWJhcmNoaXZlIgotICAgICAgICAgICAgICAgICAgICAgICAgICBleHBl
Y3RlZENvbnRlbnRMZW5ndGg6W3IgZXhwZWN0ZWRDb250ZW50TGVuZ3RoXSAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOihpbnQpW3IgZXhwZWN0ZWRDb250
ZW50TGVuZ3RoXSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RW5jb2RpbmdO
YW1lOltyIHRleHRFbmNvZGluZ05hbWVdXSBhdXRvcmVsZWFzZV07CiAgICAgfQogICAgIApAQCAt
MzUwLDcgKzM1MCw3IEBACiAgICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5IHJlbGVh
c2luZyBzZWxmOyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIDMyNjYyMTYKICAgICBbc2VsZiByZXRh
aW5dOwogICAgIFtkYXRhU291cmNlIF9zZXRSZXNwb25zZTpyXTsKLSAgICBfY29udGVudExlbmd0
aCA9IFtyIGV4cGVjdGVkQ29udGVudExlbmd0aF07CisgICAgX2NvbnRlbnRMZW5ndGggPSAoaW50
KVtyIGV4cGVjdGVkQ29udGVudExlbmd0aF07CiAKICAgICBbc2VsZiBjaGVja0NvbnRlbnRQb2xp
Y3lGb3JSZXNwb25zZTpyXTsKICAgICBbc2VsZiByZWxlYXNlXTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9851</attachid>
            <date>2006-08-03 11:33:59 -0700</date>
            <delta_ts>2010-06-10 15:16:42 -0700</delta_ts>
            <desc>combind patch</desc>
            <filename>shorten4.diff</filename>
            <type>text/plain</type>
            <size>57565</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzcxKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMDYtMDgtMDMgIFNhbSBXZWlu
aWcgIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAtIHBhdGNoIGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndp
bi5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTkyCisgICAgICAgICAgTWFrZSBXZWJDb3JlIChhbmQg
ZnJpZW5kcykgY29tcGlsZSB3aXRoIC1Xc2hvcnRlbi02NC10by0zMgorCisgICAgICAgICAgKiBB
ZGRzIC1Xc2hvcnRlbi02NC10by0zMiBmbGFnIHRvIFhjb2RlIHByb2plY3QuCisgICAgICAgICAg
KiBBZGRzIGV4cGxpY2l0IGNhc3RzIHdoZXJlIE9LLgorCisgICAgICAgICogQVBJL0pTTm9kZUxp
c3QuYzoKKyAgICAgICAgKEpTTm9kZUxpc3RfaXRlbSk6CisgICAgICAgIChKU05vZGVMaXN0X2dl
dFByb3BlcnR5KToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorCiAyMDA2LTA4LTAyICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbi4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0FQSS9KU05v
ZGVMaXN0LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQVBJL0pTTm9kZUxpc3QuYwko
cmV2aXNpb24gMTU3NzEpCisrKyBKYXZhU2NyaXB0Q29yZS9BUEkvSlNOb2RlTGlzdC5jCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIEpTTm9kZUxpc3Rf
aXRlbShKU0NvbnQKICAgICBpZiAoYXJndW1lbnRDb3VudCA+IDApIHsKICAgICAgICAgTm9kZUxp
c3QqIG5vZGVMaXN0ID0gSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpOwogICAgICAgICBh
c3NlcnQobm9kZUxpc3QpOwotICAgICAgICBOb2RlKiBub2RlID0gTm9kZUxpc3RfaXRlbShub2Rl
TGlzdCwgSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7
CisgICAgICAgIE5vZGUqIG5vZGUgPSBOb2RlTGlzdF9pdGVtKG5vZGVMaXN0LCAodW5zaWduZWQp
SlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CiAgICAg
ICAgIGlmIChub2RlKQogICAgICAgICAgICAgcmV0dXJuIEpTTm9kZV9uZXcoY29udGV4dCwgbm9k
ZSk7CiAgICAgfQpAQCAtNjUsMTIgKzY1LDExIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIEpTTm9kZUxp
c3RfZ2V0UHJvcGVydHkKICAgICBOb2RlTGlzdCogbm9kZUxpc3QgPSBKU09iamVjdEdldFByaXZh
dGUodGhpc09iamVjdCk7CiAgICAgYXNzZXJ0KG5vZGVMaXN0KTsKICAgICBkb3VibGUgaW5kZXgg
PSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgcHJv
cGVydHlOYW1lKSwgZXhjZXB0aW9uKTsKLSAgICB1bnNpZ25lZCB1aW5kZXggPSBpbmRleDsKKyAg
ICB1bnNpZ25lZCB1aW5kZXggPSAodW5zaWduZWQpaW5kZXg7CiAgICAgaWYgKHVpbmRleCA9PSBp
bmRleCkgeyAvLyBmYWxzZSBmb3IgTmFOCiAgICAgICAgIE5vZGUqIG5vZGUgPSBOb2RlTGlzdF9p
dGVtKG5vZGVMaXN0LCB1aW5kZXgpOwotICAgICAgICBpZiAobm9kZSkgeworICAgICAgICBpZiAo
bm9kZSkKICAgICAgICAgICAgIHJldHVybiBKU05vZGVfbmV3KGNvbnRleHQsIG5vZGUpOwotICAg
ICAgICB9CiAgICAgfQogICAgIAogICAgIHJldHVybiBOVUxMOwpJbmRleDogSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAxNTc3MSkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE1ODMsNiArMTU4Myw3IEBA
CiAJCQkJCSItV3dyaXRlLXN0cmluZ3MiLAogCQkJCQkiLVduby1mb3JtYXQteTJrIiwKIAkJCQkJ
Ii1Xbm8tbG9uZy1kb3VibGUiLAorCQkJCQkiLVdzaG9ydGVuLTY0LXRvLTMyIiwKIAkJCQkpOwog
CQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKQEAgLTE2MjMsNiArMTYyNCw3IEBACiAJCQkJCSItV3dy
aXRlLXN0cmluZ3MiLAogCQkJCQkiLVduby1mb3JtYXQteTJrIiwKIAkJCQkJIi1Xbm8tbG9uZy1k
b3VibGUiLAorCQkJCQkiLVdzaG9ydGVuLTY0LXRvLTMyIiwKIAkJCQkpOwogCQkJfTsKIAkJCW5h
bWUgPSBSZWxlYXNlOwpAQCAtMTY2OSw2ICsxNjcxLDcgQEAKIAkJCQkJIi1Xd3JpdGUtc3RyaW5n
cyIsCiAJCQkJCSItV25vLWZvcm1hdC15MmsiLAogCQkJCQkiLVduby1sb25nLWRvdWJsZSIsCisJ
CQkJCSItV3Nob3J0ZW4tNjQtdG8tMzIiLAogCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IFByb2R1
Y3Rpb247CkBAIC0xNzYzLDYgKzE3NjYsNyBAQAogCQkJCQkiLVduby1mb3JtYXQteTJrIiwKIAkJ
CQkJIi1Xbm8tdW51c2VkLXBhcmFtZXRlciIsCiAJCQkJCSItV25vLWxvbmctZG91YmxlIiwKKwkJ
CQkJIi1Xc2hvcnRlbi02NC10by0zMiIsCiAJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7
CkBAIC0xODAxLDYgKzE4MDUsNyBAQAogCQkJCQkiLVduby1mb3JtYXQteTJrIiwKIAkJCQkJIi1X
bm8tdW51c2VkLXBhcmFtZXRlciIsCiAJCQkJCSItV25vLWxvbmctZG91YmxlIiwKKwkJCQkJIi1X
c2hvcnRlbi02NC10by0zMiIsCiAJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKQEAg
LTE4MzYsNiArMTg0MSw3IEBACiAJCQkJCSItV25vLWZvcm1hdC15MmsiLAogCQkJCQkiLVduby11
bnVzZWQtcGFyYW1ldGVyIiwKIAkJCQkJIi1Xbm8tbG9uZy1kb3VibGUiLAorCQkJCQkiLVdzaG9y
dGVuLTY0LXRvLTMyIiwKIAkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwpJbmRl
eDogSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVl
L0NoYW5nZUxvZwkocmV2aXNpb24gMTU3NzEpCisrKyBKYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAwNi0wOC0wMyAgU2FtIFdlaW5pZyAg
PHNhbS53ZWluaWdAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gcGF0Y2ggZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAxOTIKKyAgICAgICAgICBNYWtlIFdlYkNvcmUgKGFuZCBmcmll
bmRzKSBjb21waWxlIHdpdGggLVdzaG9ydGVuLTY0LXRvLTMyCisKKyAgICAgICAgICAqIEFkZHMg
LVdzaG9ydGVuLTY0LXRvLTMyIGZsYWcgdG8gWGNvZGUgcHJvamVjdC4KKworICAgICAgICAqIEph
dmFTY3JpcHRHbHVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMDYtMDctMjkgIFNh
bSBXZWluaWcgIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbi4KSW5kZXg6IEphdmFTY3JpcHRHbHVlL0phdmFTY3JpcHRHbHVlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvSmF2YVNjcmlwdEdsdWUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTU3NzEpCisrKyBKYXZhU2NyaXB0
R2x1ZS9KYXZhU2NyaXB0R2x1ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC00NDIsNiArNDQyLDcgQEAKIAkJCQkJIi1Xbm8tZm9ybWF0LXkyayIsCiAJCQkJCSIt
V25vLXVudXNlZC1wYXJhbWV0ZXIiLAogCQkJCQkiLVduby1sb25nLWRvdWJsZSIsCisJCQkJCSIt
V3Nob3J0ZW4tNjQtdG8tMzIiLAogCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwpAQCAt
NDc5LDYgKzQ4MCw3IEBACiAJCQkJCSItV25vLWZvcm1hdC15MmsiLAogCQkJCQkiLVduby11bnVz
ZWQtcGFyYW1ldGVyIiwKIAkJCQkJIi1Xbm8tbG9uZy1kb3VibGUiLAorCQkJCQkiLVdzaG9ydGVu
LTY0LXRvLTMyIiwKIAkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwpAQCAtNTEyLDYg
KzUxNCw3IEBACiAJCQkJCSItV25vLWZvcm1hdC15MmsiLAogCQkJCQkiLVduby11bnVzZWQtcGFy
YW1ldGVyIiwKIAkJCQkJIi1Xbm8tbG9uZy1kb3VibGUiLAorCQkJCQkiLVdzaG9ydGVuLTY0LXRv
LTMyIiwKIAkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwpJbmRleDogV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1
NzcxKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBA
QAorMjAwNi0wOC0wMyAgU2FtIFdlaW5pZyAgPHNhbS53ZWluaWdAZ21haWwuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gcGF0Y2ggZm9yIGh0
dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxOTIKKyAgICAg
ICAgICBNYWtlIFdlYkNvcmUgKGFuZCBmcmllbmRzKSBjb21waWxlIHdpdGggLVdzaG9ydGVuLTY0
LXRvLTMyCisKKyAgICAgICAgICAqIEFkZHMgLVdzaG9ydGVuLTY0LXRvLTMyIGZsYWcgdG8gWGNv
ZGUgcHJvamVjdC4KKyAgICAgICAgICAqIEFkZHMgJ2YnIHRvIGZsb2F0IGxpdGVyYWxzIHdoZXJl
IGV4cGVjdGluZyBhIGZsb2F0LgorICAgICAgICAgICogVXNlIGNvc2YoKSBpbnN0ZWFkIG9mIGNv
cygpIHdoZW4gYXNzaWduaW5nIHRvIGEgZmxvYXQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2Zp
bHRlcnMvV0tEaWZmdXNlTGlnaHRpbmdGaWx0ZXIubToKKyAgICAgICAgKCtbV0tEaWZmdXNlTGln
aHRpbmdGaWx0ZXIgaW5pdGlhbGl6ZV0pOgorICAgICAgICAqIGtjYW52YXMvZGV2aWNlL3F1YXJ0
ei9maWx0ZXJzL1dLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5tOgorICAgICAgICAoLVtXS0Rpc2Ny
ZXRlVHJhbnNmZXJGaWx0ZXIgb3V0cHV0SW1hZ2VdKToKKyAgICAgICAgKiBrY2FudmFzL2Rldmlj
ZS9xdWFydHovZmlsdGVycy9XS0Rpc3BsYWNlbWVudE1hcEZpbHRlci5tOgorICAgICAgICAoK1tX
S0Rpc3BsYWNlbWVudE1hcEZpbHRlciBpbml0aWFsaXplXSk6CisgICAgICAgICoga2NhbnZhcy9k
ZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tTcGVjdWxhckxpZ2h0aW5nRmlsdGVyLm06CisgICAgICAg
ICgrW1dLU3BlY3VsYXJMaWdodGluZ0ZpbHRlciBpbml0aWFsaXplXSk6CisgICAgICAgICoga2Nh
bnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tTcG90TGlnaHRGaWx0ZXIubToKKyAgICAgICAg
KC1bV0tTcG90TGlnaHRGaWx0ZXIgb3V0cHV0SW1hZ2VdKToKKyAgICAgICAgKiBrY2FudmFzL2Rl
dmljZS9xdWFydHovZmlsdGVycy9XS1RhYmxlVHJhbnNmZXJGaWx0ZXIubToKKyAgICAgICAgKC1b
V0tUYWJsZVRyYW5zZmVyRmlsdGVyIG91dHB1dEltYWdlXSk6CisKIDIwMDYtMDgtMDMgIE1pdHog
UGV0dGVsICA8b3BlbmRhcndpbi5vcmdAbWl0enBldHRlbC5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQWRlbGUgYW5kIERhcmluLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NzcxKQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTc0MzYsNiArNzQzNiw3IEBA
CiAJCQkJCSItV25vLWZvcm1hdC15MmsiLAogCQkJCQkiLVduby11bnVzZWQtcGFyYW1ldGVyIiwK
IAkJCQkJIi1Xbm8tbG9uZy1kb3VibGUiLAorCQkJCQkiLVdzaG9ydGVuLTY0LXRvLTMyIiwKIAkJ
CQkpOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKQEAgLTc0NzMsNiArNzQ3NCw3IEBACiAJCQkJ
CSItV25vLWZvcm1hdC15MmsiLAogCQkJCQkiLVduby11bnVzZWQtcGFyYW1ldGVyIiwKIAkJCQkJ
Ii1Xbm8tbG9uZy1kb3VibGUiLAorCQkJCQkiLVdzaG9ydGVuLTY0LXRvLTMyIiwKIAkJCQkpOwog
CQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwpAQCAtNzUwNyw2ICs3NTA5LDcgQEAKIAkJCQkJIi1X
bm8tZm9ybWF0LXkyayIsCiAJCQkJCSItV25vLXVudXNlZC1wYXJhbWV0ZXIiLAogCQkJCQkiLVdu
by1sb25nLWRvdWJsZSIsCisJCQkJCSItV3Nob3J0ZW4tNjQtdG8tMzIiLAogCQkJCSk7CiAJCQl9
OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1
YXJ0ei9maWx0ZXJzL1dLRGlmZnVzZUxpZ2h0aW5nRmlsdGVyLm0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9rY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0RpZmZ1c2VMaWdodGluZ0ZpbHRl
ci5tCShyZXZpc2lvbiAxNTc3MSkKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L2Zp
bHRlcnMvV0tEaWZmdXNlTGlnaHRpbmdGaWx0ZXIubQkod29ya2luZyBjb3B5KQpAQCAtMzcsNyAr
MzcsNyBAQCBzdGF0aWMgQ0lLZXJuZWwgKmRpZmZ1c2VMaWdodGluZ0ZpbHRlciA9CiAgICAgICAg
ICAgICAgICAgICAgICBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmtDSUNhdGVnb3J5U3R5bGl6
ZSwga0NJQ2F0ZWdvcnlWaWRlbywKICAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lDYXRlZ29y
eVN0aWxsSW1hZ2UsIGtDSUNhdGVnb3J5Tm9uU3F1YXJlUGl4ZWxzLG5pbF0sIGtDSUF0dHJpYnV0
ZUZpbHRlckNhdGVnb3JpZXMsCiAgICAgICAgICAgICAgICAgICAgICBbTlNEaWN0aW9uYXJ5IGRp
Y3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgW0NJ
Q29sb3IgY29sb3JXaXRoUmVkOjEuMCBncmVlbjoxLjAgYmx1ZToxLjAgYWxwaGE6MS4wXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBbQ0lDb2xvciBjb2xvcldpdGhSZWQ6MS4wZiBncmVlbjox
LjBmIGJsdWU6MS4wZiBhbHBoYToxLjBmXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lB
dHRyaWJ1dGVEZWZhdWx0LCBuaWxdLCBAImlucHV0TGlnaHRpbmdDb2xvciIsCiAgICAgICAgICAg
ICAgICAgICAgICBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MC4wXSwg
a0NJQXR0cmlidXRlTWluLApJbmRleDogV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovZmls
dGVycy9XS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tj
YW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5tCShy
ZXZpc2lvbiAxNTc3MSkKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMv
V0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcg
QEAgc3RhdGljIENJS2VybmVsICpkaXNjcmV0ZVRyYW5zZmVyRmlsdGVyIAogICAgIENJU2FtcGxl
ciAqaW5wdXRTYW1wbGVyID0gW0NJU2FtcGxlciBzYW1wbGVyV2l0aEltYWdlOiBpbnB1dEltYWdl
XTsKICAgICBDSVNhbXBsZXIgKnRhYmxlU2FtcGxlciA9IFtDSVNhbXBsZXIgc2FtcGxlcldpdGhJ
bWFnZTogaW5wdXRUYWJsZSBrZXlzQW5kVmFsdWVzOmtDSVNhbXBsZXJGaWx0ZXJNb2RlLCBrQ0lT
YW1wbGVyRmlsdGVyTmVhcmVzdCwga0NJU2FtcGxlcldyYXBNb2RlLCBrQ0lTYW1wbGVyV3JhcENs
YW1wLCBuaWxdOwogICAgIE5TQXJyYXkgKmFyZ3MgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Rz
OmlucHV0U2FtcGxlciwgdGFibGVTYW1wbGVyLCBpbnB1dFNlbGVjdG9yLCAKLSAgICAgICAgW05T
TnVtYmVyIG51bWJlcldpdGhGbG9hdDpbaW5wdXRUYWJsZSBleHRlbnRdLnNpemUud2lkdGgtMS4w
XSwgQCJkZWZpbml0aW9uIiwgW2lucHV0U2FtcGxlciBkZWZpbml0aW9uXSwgbmlsXTsKKyAgICAg
ICAgW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpbaW5wdXRUYWJsZSBleHRlbnRdLnNpemUud2lk
dGggLSAxLjBmXSwgQCJkZWZpbml0aW9uIiwgW2lucHV0U2FtcGxlciBkZWZpbml0aW9uXSwgbmls
XTsKICAgICByZXR1cm4gW3NlbGYgYXBwbHk6ZGlzY3JldGVUcmFuc2ZlckZpbHRlciBhcmd1bWVu
dHM6YXJncyBvcHRpb25zOm5pbF07CiB9CiAKSW5kZXg6IFdlYkNvcmUva2NhbnZhcy9kZXZpY2Uv
cXVhcnR6L2ZpbHRlcnMvV0tEaXNwbGFjZW1lbnRNYXBGaWx0ZXIubQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLRGlzcGxhY2VtZW50TWFwRmls
dGVyLm0JKHJldmlzaW9uIDE1NzcxKQorKysgV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHov
ZmlsdGVycy9XS0Rpc3BsYWNlbWVudE1hcEZpbHRlci5tCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwx
MCArMzgsMTAgQEAgc3RhdGljIENJS2VybmVsICpkaXNwbGFjZW1lbnRNYXBGaWx0ZXIgPQogICAg
ICAgICAgICAgICAgICAgICAgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czprQ0lDYXRlZ29yeVN0
eWxpemUsIGtDSUNhdGVnb3J5VmlkZW8sCiAgICAgICAgICAgICAgICAgICAgICAgICAga0NJQ2F0
ZWdvcnlTdGlsbEltYWdlLCBrQ0lDYXRlZ29yeU5vblNxdWFyZVBpeGVscyxuaWxdLCBrQ0lBdHRy
aWJ1dGVGaWx0ZXJDYXRlZ29yaWVzLAogICAgICAgICAgICAgICAgICAgICAgW05TRGljdGlvbmFy
eSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICAgICAgICAgICAgICAgICAg
IFtDSVZlY3RvciB2ZWN0b3JXaXRoWDoxLjAgWTowLjAgWjowLjAgVzowLjBdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIFtDSVZlY3RvciB2ZWN0b3JXaXRoWDoxLjBmIFk6MC4wZiBaOjAuMGYg
VzowLjBmXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lBdHRyaWJ1dGVEZWZhdWx0LCBu
aWxdLCBAImlucHV0WENoYW5uZWxTZWxlY3RvciIsICAgCiAgICAgICAgICAgICAgICAgICAgICBb
TlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgW0NJVmVjdG9yIHZlY3RvcldpdGhYOjAuMCBZOjEuMCBaOjAuMCBXOjAuMF0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgW0NJVmVjdG9yIHZlY3RvcldpdGhYOjAuMGYgWTox
LjBmIFo6MC4wZiBXOjAuMGZdLAogICAgICAgICAgICAgICAgICAgICAgICAgIGtDSUF0dHJpYnV0
ZURlZmF1bHQsIG5pbF0sIEAiaW5wdXRZQ2hhbm5lbFNlbGVjdG9yIiwgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmpl
Y3RzQW5kS2V5czoKICAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aERvdWJsZTowLjBdLCBrQ0lBdHRyaWJ1dGVEZWZhdWx0LApJbmRleDogV2ViQ29yZS9rY2FudmFz
L2RldmljZS9xdWFydHovZmlsdGVycy9XS1NwZWN1bGFyTGlnaHRpbmdGaWx0ZXIubQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLU3BlY3VsYXJM
aWdodGluZ0ZpbHRlci5tCShyZXZpc2lvbiAxNTc3MSkKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZp
Y2UvcXVhcnR6L2ZpbHRlcnMvV0tTcGVjdWxhckxpZ2h0aW5nRmlsdGVyLm0JKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIENJS2VybmVsICpzcGVjdWxhckxpZ2h0aW5nRmls
dGVyIAogICAgICAgICAgICAgICAgICAgICAgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czprQ0lD
YXRlZ29yeVN0eWxpemUsIGtDSUNhdGVnb3J5VmlkZW8sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAga0NJQ2F0ZWdvcnlTdGlsbEltYWdlLCBrQ0lDYXRlZ29yeU5vblNxdWFyZVBpeGVscyxuaWxd
LCBrQ0lBdHRyaWJ1dGVGaWx0ZXJDYXRlZ29yaWVzLAogICAgICAgICAgICAgICAgICAgICAgW05T
RGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICAgICAgICAg
ICAgICAgICAgIFtDSUNvbG9yIGNvbG9yV2l0aFJlZDoxLjAgZ3JlZW46MS4wIGJsdWU6MS4wIGFs
cGhhOjEuMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW0NJQ29sb3IgY29sb3JXaXRoUmVk
OjEuMGYgZ3JlZW46MS4wZiBibHVlOjEuMGYgYWxwaGE6MS4wZl0sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAga0NJQXR0cmlidXRlRGVmYXVsdCwgbmlsXSwgIEAiaW5wdXRMaWdodGluZ0NvbG9y
IiwKICAgICAgICAgICAgICAgICAgICAgIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmpl
Y3RzQW5kS2V5czoKICAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aERvdWJsZTowLjBdLCBrQ0lBdHRyaWJ1dGVNaW4sCkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2
aWNlL3F1YXJ0ei9maWx0ZXJzL1dLU3BvdExpZ2h0RmlsdGVyLm0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9rY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS1Nwb3RMaWdodEZpbHRlci5tCShy
ZXZpc2lvbiAxNTc3MSkKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMv
V0tTcG90TGlnaHRGaWx0ZXIubQkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBzdGF0
aWMgQ0lLZXJuZWwgKnNwb3RMaWdodEZpbHRlciA9IG5pbDsKIAogLSAoQ0lJbWFnZSAqKW91dHB1
dEltYWdlCiB7Ci0gICAgZmxvYXQgY29zY3V0b2ZmID0gY29zKFtpbnB1dExpbWl0aW5nQ29uZUFu
Z2xlIGZsb2F0VmFsdWVdKTsKKyAgICBmbG9hdCBjb3NjdXRvZmYgPSBjb3NmKFtpbnB1dExpbWl0
aW5nQ29uZUFuZ2xlIGZsb2F0VmFsdWVdKTsKICAgICBpZiAoY29zY3V0b2ZmIDwgMCkgCiAgICAg
ICAgIGNvc2N1dG9mZiA9IC1jb3NjdXRvZmY7CiAgICAgcmV0dXJuIFtzZWxmIGFwcGx5OnNwb3RM
aWdodEZpbHRlciwgaW5wdXRMaWdodFZlY3RvcnMsIGlucHV0TGlnaHREaXJlY3Rpb24sIGlucHV0
U3BlY3VsYXJFeHBvbmVudCwgW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpjb3NjdXRvZmZdLCBu
aWxdOwpJbmRleDogV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS1RhYmxl
VHJhbnNmZXJGaWx0ZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1
YXJ0ei9maWx0ZXJzL1dLVGFibGVUcmFuc2ZlckZpbHRlci5tCShyZXZpc2lvbiAxNTc3MSkKKysr
IFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tUYWJsZVRyYW5zZmVyRmls
dGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIENJS2VybmVsICp0
YWJsZVRyYW5zZmVyRmlsdGVyID0gbgogICAgIENJU2FtcGxlciAqaW5wdXRTYW1wbGVyID0gW0NJ
U2FtcGxlciBzYW1wbGVyV2l0aEltYWdlOiBpbnB1dEltYWdlXTsKICAgICBDSVNhbXBsZXIgKnRh
YmxlU2FtcGxlciA9IFtDSVNhbXBsZXIgc2FtcGxlcldpdGhJbWFnZTogaW5wdXRUYWJsZSBrZXlz
QW5kVmFsdWVzOmtDSVNhbXBsZXJGaWx0ZXJNb2RlLCBrQ0lTYW1wbGVyRmlsdGVyTGluZWFyLCBr
Q0lTYW1wbGVyV3JhcE1vZGUsIGtDSVNhbXBsZXJXcmFwQ2xhbXAsIG5pbF07CiAgICAgTlNBcnJh
eSAqYXJncyA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6aW5wdXRTYW1wbGVyLCB0YWJsZVNh
bXBsZXIsIGlucHV0U2VsZWN0b3IsIAotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0
OltpbnB1dFRhYmxlIGV4dGVudF0uc2l6ZS53aWR0aC0xLjBdLCBAImRlZmluaXRpb24iLCBbaW5w
dXRTYW1wbGVyIGRlZmluaXRpb25dLCBuaWxdOworICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aEZsb2F0OltpbnB1dFRhYmxlIGV4dGVudF0uc2l6ZS53aWR0aCAtIDEuMGZdLCBAImRlZmluaXRp
b24iLCBbaW5wdXRTYW1wbGVyIGRlZmluaXRpb25dLCBuaWxdOwogICAgIHJldHVybiBbc2VsZiBh
cHBseTp0YWJsZVRyYW5zZmVyRmlsdGVyIGFyZ3VtZW50czphcmdzIG9wdGlvbnM6bmlsXTsKIH0K
IApJbmRleDogV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNTc3MSkKKysrIFdlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSw2OSBAQAorMjAwNi0wOC0wMyAgU2FtIFdlaW5pZyAgPHNhbS53ZWluaWdAZ21haWwu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0g
cGF0Y2ggZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAxOTIKKyAgICAgICAgICBNYWtlIFdlYkNvcmUgKGFuZCBmcmllbmRzKSBjb21waWxlIHdpdGgg
LVdzaG9ydGVuLTY0LXRvLTMyCisKKyAgICAgICAgICAqIEFkZHMgJ2YnIHRvIGZsb2F0IGxpdGVy
YWxzIHdoZXJlIGV4cGVjdGluZyBhIGZsb2F0LgorICAgICAgICAgICogVXNlIGNlaWxmKCkgaW5z
dGVhZCBvZiBjZWlsKCkgd2hlbiBhc3NpZ25pbmcgdG8gYSBmbG9hdC4KKyAgICAgICAgICAqIEFk
ZHMgZXhwbGljaXQgY2FzdHMgd2hlcmUgT0suCisKKyAgICAgICAgKiBNaXNjL1dlYk5TQ29udHJv
bEV4dHJhcy5tOgorICAgICAgICAoLVtOU0NvbnRyb2wgc2l6ZVRvRml0QW5kQWRqdXN0V2luZG93
SGVpZ2h0XSk6CisgICAgICAgICogTWlzYy9XZWJOU0ltYWdlRXh0cmFzLm06CisgICAgICAgICgt
W05TSW1hZ2UgX3dlYl9zY2FsZVRvTWF4U2l6ZTpdKToKKyAgICAgICAgKiBNaXNjL1dlYk5TVmll
d0V4dHJhcy5oOgorICAgICAgICAqIE1pc2MvV2ViTlNWaWV3RXh0cmFzLm06CisgICAgICAgICog
UGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm06CisgICAgICAgICgtW1dlYkJhc2VO
ZXRzY2FwZVBsdWdpblZpZXcgc2F2ZUFuZFNldE5ld1BvcnRTdGF0ZUZvclVwZGF0ZTpdKToKKyAg
ICAgICAgKC1bV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldyBkcmF3UmVjdDpdKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUJyaWRnZS5tOgorICAgICAgICAoLVtXZWJGcmFtZUJy
aWRnZSBleHBpcmVzVGltZUZvclJlc3BvbnNlOl0pOgorICAgICAgICAqIFdlYkluc3BlY3Rvci9X
ZWJJbnNwZWN0b3IubToKKyAgICAgICAgKC1bTlNXaW5kb3cgd2luZG93XSk6CisgICAgICAgICgt
W1dlYkluc3BlY3RvciB0cmVlVmlld1Njcm9sbFRvOl0pOgorICAgICAgICAoLVtXZWJJbnNwZWN0
b3IgX3VwZGF0ZVN5c3RlbUNvbG9yc10pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3Igd2ViVmll
dzpwbHVnSW5WaWV3V2l0aEFyZ3VtZW50czpdKToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yIG91
dGxpbmVWaWV3Om9iamVjdFZhbHVlRm9yVGFibGVDb2x1bW46YnlJdGVtOl0pOgorICAgICAgICAq
IFdlYkluc3BlY3Rvci9XZWJJbnNwZWN0b3JPdXRsaW5lVmlldy5tOgorICAgICAgICAoLVtXZWJJ
bnNwZWN0b3JPdXRsaW5lVmlldyBfaGlnaGxpZ2h0Um93OmNsaXBSZWN0Ol0pOgorICAgICAgICAq
IFdlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Lm06CisgICAgICAgICgtW1dlYk5vZGVIaWdo
bGlnaHQgaW5pdFdpdGhCb3VuZHM6YW5kUmVjdHM6Zm9yVmlldzpdKToKKyAgICAgICAgKiBXZWJJ
bnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodFZpZXcubToKKyAgICAgICAgKC1bV2ViTm9kZUhpZ2hs
aWdodFZpZXcgcm91bmRlZFJlY3Q6d2l0aFJhZGl1czpdKToKKyAgICAgICAgKC1bV2ViTm9kZUhp
Z2hsaWdodFZpZXcgaW5pdFdpdGhIaWdobGlnaHQ6YW5kUmVjdHM6Zm9yVmlldzpdKToKKyAgICAg
ICAgKC1bV2ViTm9kZUhpZ2hsaWdodFZpZXcgZHJhd1JlY3Q6XSk6CisgICAgICAgICogV2ViVmll
dy9XZWJGcmFtZS5tOgorICAgICAgICAoLVtXZWJGcmFtZSBfb3BlbmVkXSk6CisgICAgICAgICog
V2ViVmlldy9XZWJGcmFtZVZpZXcubToKKyAgICAgICAgKC1bV2ViRnJhbWVWaWV3IGluaXRXaXRo
RnJhbWU6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tOgorICAgICAgICAoLVtX
ZWJIVE1MVmlldyBfZHJhZ0ltYWdlRm9yTGlua0VsZW1lbnQ6XSk6CisgICAgICAgICgtW1dlYkhU
TUxWaWV3IF93ZWJfc2V0UHJpbnRpbmdNb2RlUmVjdXJzaXZlXSk6CisgICAgICAgICgtW1dlYkhU
TUxWaWV3IF93ZWJfY2xlYXJQcmludGluZ01vZGVSZWN1cnNpdmVdKToKKyAgICAgICAgKC1bTlNB
cnJheSBsYXlvdXRdKToKKyAgICAgICAgKC1bTlNBcnJheSBfc2V0UHJpbnRpbmc6bWluaW11bVBh
Z2VXaWR0aDptYXhpbXVtUGFnZVdpZHRoOmFkanVzdFZpZXdTaXplOl0pOgorICAgICAgICAoLVtO
U0FycmF5IGFkanVzdFBhZ2VIZWlnaHROZXc6dG9wOmJvdHRvbTpsaW1pdDpdKToKKyAgICAgICAg
KC1bTlNBcnJheSBfc2NhbGVGYWN0b3JGb3JQcmludE9wZXJhdGlvbjpdKToKKyAgICAgICAgKC1b
TlNBcnJheSBzZXRQYWdlV2lkdGhGb3JQcmludGluZzpdKToKKyAgICAgICAgKC1bTlNBcnJheSBf
ZW5kUHJpbnRNb2RlXSk6CisgICAgICAgICgtW05TQXJyYXkga25vd3NQYWdlUmFuZ2U6XSk6Cisg
ICAgICAgICgtW05TQXJyYXkgX29yaWdpbmFsRm9udEFdKToKKyAgICAgICAgKC1bTlNBcnJheSBf
b3JpZ2luYWxGb250Ql0pOgorICAgICAgICAoLVtXZWJUZXh0Q29tcGxldGVDb250cm9sbGVyIF9i
dWlsZFVJXSk6CisgICAgICAgICgtW1dlYlRleHRDb21wbGV0ZUNvbnRyb2xsZXIgX3BsYWNlUG9w
dXBXaW5kb3c6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3Lm06CisgICAgICAgICgt
W1dlYlBERlZpZXcgX21ha2VUZXh0U3RhbmRhcmRTaXplOl0pOgorICAgICAgICAoLVtXZWJQREZW
aWV3IHNlbGVjdGlvbkltYWdlRm9yY2luZ1doaXRlVGV4dDpdKToKKyAgICAgICAgKC1bUERGUHJl
ZlVwZGF0aW5nUHJveHkgZm9yd2FyZEludm9jYXRpb246XSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJQcmVmZXJlbmNlcy5tOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfZmxvYXRWYWx1ZUZv
cktleTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubToKKyAgICAgICAgKC1bV2ViVmll
dyBtYWtlVGV4dFNtYWxsZXI6XSk6CisgICAgICAgICgtW1dlYlZpZXcgY2FuTWFrZVRleHRTdGFu
ZGFyZFNpemVdKToKKyAgICAgICAgKC1bV2ViVmlldyBtYWtlVGV4dFN0YW5kYXJkU2l6ZTpdKToK
KwogMjAwNi0wOC0wMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJLaXQvTWlzYy9XZWJOU0NvbnRyb2xF
eHRyYXMubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvTWlzYy9XZWJOU0NvbnRyb2xFeHRyYXMubQko
cmV2aXNpb24gMTU3NzEpCisrKyBXZWJLaXQvTWlzYy9XZWJOU0NvbnRyb2xFeHRyYXMubQkod29y
a2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogewogICAgIE5TUmVjdCBmcmFtZSA9IFtzZWxm
IGZyYW1lXTsKIAotICAgIE5TU2l6ZSBiZXN0U2l6ZSA9IFtbc2VsZiBjZWxsXSBjZWxsU2l6ZUZv
ckJvdW5kczpOU01ha2VSZWN0KDAsIDAsIGZyYW1lLnNpemUud2lkdGgsIDEwMDAwLjApXTsKKyAg
ICBOU1NpemUgYmVzdFNpemUgPSBbW3NlbGYgY2VsbF0gY2VsbFNpemVGb3JCb3VuZHM6TlNNYWtl
UmVjdCgwLjBmLCAwLjBmLCBmcmFtZS5zaXplLndpZHRoLCAxMDAwMC4wZildOwogICAgIAogICAg
IGZsb2F0IGhlaWdodERlbHRhID0gYmVzdFNpemUuaGVpZ2h0IC0gZnJhbWUuc2l6ZS5oZWlnaHQ7
CiAKSW5kZXg6IFdlYktpdC9NaXNjL1dlYk5TSW1hZ2VFeHRyYXMubQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvTWlzYy9XZWJOU0ltYWdlRXh0cmFzLm0JKHJldmlzaW9uIDE1NzcxKQorKysgV2ViS2l0
L01pc2MvV2ViTlNJbWFnZUV4dHJhcy5tCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBA
CiAKIC0gKHZvaWQpX3dlYl9zY2FsZVRvTWF4U2l6ZTooTlNTaXplKXNpemUKIHsKLSAgICBmbG9h
dCBoZWlnaHRSZXNpemVEZWx0YSA9IDAuMCwgd2lkdGhSZXNpemVEZWx0YSA9IDAuMCwgcmVzaXpl
RGVsdGEgPSAwLjA7CisgICAgZmxvYXQgaGVpZ2h0UmVzaXplRGVsdGEgPSAwLjBmLCB3aWR0aFJl
c2l6ZURlbHRhID0gMC4wZiwgcmVzaXplRGVsdGEgPSAwLjBmOwogICAgIE5TU2l6ZSBvcmlnaW5h
bFNpemUgPSBbc2VsZiBzaXplXTsKIAogICAgIGlmKG9yaWdpbmFsU2l6ZS53aWR0aCA+IHNpemUu
d2lkdGgpewpJbmRleDogV2ViS2l0L01pc2MvV2ViTlNWaWV3RXh0cmFzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L01pc2MvV2ViTlNWaWV3RXh0cmFzLmgJKHJldmlzaW9uIDE1NzcxKQorKysgV2Vi
S2l0L01pc2MvV2ViTlNWaWV3RXh0cmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcg
QEAKIAogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgogCi0jZGVmaW5lIFdlYkRyYWdJbWFnZUFs
cGhhIDAuNzUKKyNkZWZpbmUgV2ViRHJhZ0ltYWdlQWxwaGEgMC43NWYKIAogQGNsYXNzIERPTUVs
ZW1lbnQ7CiBAY2xhc3MgV2ViRnJhbWVWaWV3OwpJbmRleDogV2ViS2l0L01pc2MvV2ViTlNWaWV3
RXh0cmFzLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L01pc2MvV2ViTlNWaWV3RXh0cmFzLm0JKHJl
dmlzaW9uIDE1NzcxKQorKysgV2ViS2l0L01pc2MvV2ViTlNWaWV3RXh0cmFzLm0JKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDEyICszNywxMiBAQAogI2ltcG9ydCA8V2ViS2l0L1dlYk5TVVJMRXh0cmFz
Lmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KIAotI2RlZmluZSBXZWJEcmFn
U3RhcnRIeXN0ZXJlc2lzWCAgICAgICAgICAgICAgICAgNS4wCi0jZGVmaW5lIFdlYkRyYWdTdGFy
dEh5c3RlcmVzaXNZICAgICAgICAgICAgICAgICA1LjAKLSNkZWZpbmUgV2ViTWF4RHJhZ0ltYWdl
U2l6ZSAgICAgICAgICAgICAgICAgICAgIE5TTWFrZVNpemUoNDAwLCA0MDApCi0jZGVmaW5lIFdl
Yk1heE9yaWdpbmFsSW1hZ2VBcmVhICAgICAgICAgICAgICAgICAoMTUwMCAqIDE1MDApCi0jZGVm
aW5lIFdlYkRyYWdJY29uUmlnaHRJbnNldCAgICAgICAgICAgICAgICAgICA3LjAKLSNkZWZpbmUg
V2ViRHJhZ0ljb25Cb3R0b21JbnNldCAgICAgICAgICAgICAgICAgIDMuMAorI2RlZmluZSBXZWJE
cmFnU3RhcnRIeXN0ZXJlc2lzWCAgICAgICAgICAgICAgICAgNS4wZgorI2RlZmluZSBXZWJEcmFn
U3RhcnRIeXN0ZXJlc2lzWSAgICAgICAgICAgICAgICAgNS4wZgorI2RlZmluZSBXZWJNYXhEcmFn
SW1hZ2VTaXplICAgICAgICAgICAgICAgICAgICAgTlNNYWtlU2l6ZSg0MDAuMGYsIDQwMC4wZikK
KyNkZWZpbmUgV2ViTWF4T3JpZ2luYWxJbWFnZUFyZWEgICAgICAgICAgICAgICAgICgxNTAwLjBm
ICogMTUwMC4wZikKKyNkZWZpbmUgV2ViRHJhZ0ljb25SaWdodEluc2V0ICAgICAgICAgICAgICAg
ICAgIDcuMGYKKyNkZWZpbmUgV2ViRHJhZ0ljb25Cb3R0b21JbnNldCAgICAgICAgICAgICAgICAg
IDMuMGYKIAogQGltcGxlbWVudGF0aW9uIE5TVmlldyAoV2ViRXh0cmFzKQogCkluZGV4OiBXZWJL
aXQvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tCShyZXZpc2lvbiAxNTc3MSkK
KysrIFdlYktpdC9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubQkod29ya2luZyBj
b3B5KQpAQCAtNDc4LDcgKzQ3OCw3IEBAIHN0YXRpYyBPU1N0YXR1cyBUU01FdmVudEhhbmRsZXIo
RXZlbnRIYW4KICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
d2lkdGgsIGhlaWdodDsKICAgICAgICAgICAgICAgICAgICAgaWYgKFtzZWxmIF9nZXRBR0xPZmZz
Y3JlZW5CdWZmZXI6TlVMTCB3aWR0aDomd2lkdGggaGVpZ2h0OiZoZWlnaHRdKQotICAgICAgICAg
ICAgICAgICAgICAgICAgZ2xWaWV3cG9ydCgwLjAsIDAuMCwgd2lkdGgsIGhlaWdodCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBnbFZpZXdwb3J0KDAsIDAsIHdpZHRoLCBoZWlnaHQpOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAK
QEAgLTE0OTYsOCArMTQ5Niw4IEBAIHN0YXRpYyBPU1N0YXR1cyBUU01FdmVudEhhbmRsZXIoRXZl
bnRIYW4KICAgICAgICAgICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBbW05TR3JhcGhpY3ND
b250ZXh0IGN1cnJlbnRDb250ZXh0XSBncmFwaGljc1BvcnRdOwogICAgICAgICAgICAgQ0dDb250
ZXh0U2F2ZUdTdGF0ZShjZ0NvbnRleHQpOwogICAgICAgICAgICAgTlNSZWN0IGJvdW5kcyA9IFtz
ZWxmIGJvdW5kc107Ci0gICAgICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY2dDb250ZXh0
LCAwLjAsIE5TSGVpZ2h0KGJvdW5kcykpOwotICAgICAgICAgICAgQ0dDb250ZXh0U2NhbGVDVE0o
Y2dDb250ZXh0LCAxLjAsIC0xLjApOworICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RN
KGNnQ29udGV4dCwgMC4wZiwgTlNIZWlnaHQoYm91bmRzKSk7CisgICAgICAgICAgICBDR0NvbnRl
eHRTY2FsZUNUTShjZ0NvbnRleHQsIDEuMGYsIC0xLjBmKTsKICAgICAgICAgICAgIFtwcmludGVk
UGx1Z2luQml0bWFwIGRyYXdJblJlY3Q6Ym91bmRzXTsKICAgICAgICAgICAgIENHQ29udGV4dFJl
c3RvcmVHU3RhdGUoY2dDb250ZXh0KTsKICAgICAgICAgfQpAQCAtMTUxMSwxMyArMTUxMSwxMyBA
QCBzdGF0aWMgT1NTdGF0dXMgVFNNRXZlbnRIYW5kbGVyKEV2ZW50SGFuCiAgICAgICAgICAgICBD
R0NvbnRleHRSZWYgY2dDb250ZXh0ID0gW1tOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4
dF0gZ3JhcGhpY3NQb3J0XTsKICAgICAgICAgICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY2dDb250
ZXh0KTsKICAgICAgICAgICAgIE5TUmVjdCBib3VuZHMgPSBbc2VsZiBib3VuZHNdOwotICAgICAg
ICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNnQ29udGV4dCwgMC4wLCBOU0hlaWdodChib3Vu
ZHMpKTsKLSAgICAgICAgICAgIENHQ29udGV4dFNjYWxlQ1RNKGNnQ29udGV4dCwgMS4wLCAtMS4w
KTsKKyAgICAgICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjZ0NvbnRleHQsIDAuMGYsIE5T
SGVpZ2h0KGJvdW5kcykpOworICAgICAgICAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY2dDb250ZXh0
LCAxLjBmLCAtMS4wZik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIENvcHkgJ3JlY3Qn
IGZyb20gdGhlIG9mZnNjcmVlbiBidWZmZXIgdG8gdGhpcyB2aWV3ICh0aGUgZmxpcCBhYm92ZSBt
YWtlcyB0aGlzIHNvcnQgb2YgdHJpY2t5KQogICAgICAgICAgICAgTlNSZWN0IGZsaXBwZWRSZWN0
ID0gcmVjdDsKICAgICAgICAgICAgIGZsaXBwZWRSZWN0Lm9yaWdpbi55ID0gTlNNYXhZKGJvdW5k
cykgLSBOU01heFkoZmxpcHBlZFJlY3QpOwotICAgICAgICAgICAgW2FnbE9mZnNjcmVlbkltYWdl
IGRyYXdJblJlY3Q6ZmxpcHBlZFJlY3QgZnJvbVJlY3Q6ZmxpcHBlZFJlY3Qgb3BlcmF0aW9uOk5T
Q29tcG9zaXRlU291cmNlT3ZlciBmcmFjdGlvbjoxLjBdOworICAgICAgICAgICAgW2FnbE9mZnNj
cmVlbkltYWdlIGRyYXdJblJlY3Q6ZmxpcHBlZFJlY3QgZnJvbVJlY3Q6ZmxpcHBlZFJlY3Qgb3Bl
cmF0aW9uOk5TQ29tcG9zaXRlU291cmNlT3ZlciBmcmFjdGlvbjoxLjBmXTsKICAgICAgICAgICAg
IENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY2dDb250ZXh0KTsKICAgICAgICAgfQogICAgIH0KSW5k
ZXg6IFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUJyaWRnZS5tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUJyaWRnZS5tCShyZXZpc2lvbiAxNTc3MSkK
KysrIFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUJyaWRnZS5tCSh3b3JraW5nIGNvcHkp
CkBAIC02MzksNyArNjM5LDggQEAgTlNTdHJpbmcgKldlYlBsdWdpbkNvbnRhaW5lcktleSA9ICAg
QCJXZQogCiAgICAgTlNUaW1lSW50ZXJ2YWwgZXhwaXJhdGlvbiA9IFtyZXNwb25zZSBfY2FsY3Vs
YXRlZEV4cGlyYXRpb25dOwogICAgIGV4cGlyYXRpb24gKz0ga0NGQWJzb2x1dGVUaW1lSW50ZXJ2
YWxTaW5jZTE5NzA7Ci0gICAgcmV0dXJuIGV4cGlyYXRpb24gPiBNQVhfVElNRV9UID8gTUFYX1RJ
TUVfVCA6IGV4cGlyYXRpb247CisgICAgCisgICAgcmV0dXJuIGV4cGlyYXRpb24gPiBNQVhfVElN
RV9UID8gTUFYX1RJTUVfVCA6ICh0aW1lX3QpZXhwaXJhdGlvbjsKIH0KIAogLSAodm9pZClyZXBv
cnRDbGllbnRSZWRpcmVjdFRvVVJMOihOU1VSTCAqKVVSTCBkZWxheTooTlNUaW1lSW50ZXJ2YWwp
c2Vjb25kcyBmaXJlRGF0ZTooTlNEYXRlICopZGF0ZSBsb2NrSGlzdG9yeTooQk9PTClsb2NrSGlz
dG9yeSBpc0phdmFTY3JpcHRGb3JtQWN0aW9uOihCT09MKWlzSmF2YVNjcmlwdEZvcm1BY3Rpb24K
SW5kZXg6IFdlYktpdC9XZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yLm0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L1dlYkluc3BlY3Rvci9XZWJJbnNwZWN0b3IubQkocmV2aXNpb24gMTU3NzEpCisrKyBX
ZWJLaXQvV2ViSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYs
NyArMTA2LDcgQEAgc3RhdGljIE5TTWFwVGFibGUgKmxhc3RDaGlsZElnbm9yaW5nV2hpdAogewog
ICAgIE5TV2luZG93ICp3aW5kb3cgPSBbc3VwZXIgd2luZG93XTsKICAgICBpZiAoIXdpbmRvdykg
ewotICAgICAgICBOU1BhbmVsICp3aW5kb3cgPSBbW1dlYkluc3BlY3RvclBhbmVsIGFsbG9jXSBp
bml0V2l0aENvbnRlbnRSZWN0Ok5TTWFrZVJlY3QoNjAuMCwgMjAwLjAsIDM1MC4wLCA1NTAuMClc
CisgICAgICAgIE5TUGFuZWwgKndpbmRvdyA9IFtbV2ViSW5zcGVjdG9yUGFuZWwgYWxsb2NdIGlu
aXRXaXRoQ29udGVudFJlY3Q6TlNNYWtlUmVjdCg2MC4wZiwgMjAwLjBmLCAzNTAuMGYsIDU1MC4w
ZilcCiAgICAgICAgICAgICBzdHlsZU1hc2s6KE5TQm9yZGVybGVzc1dpbmRvd01hc2sgfCBOU1V0
aWxpdHlXaW5kb3dNYXNrKSBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVT
XTsKICAgICAgICAgW3dpbmRvdyBzZXRCYWNrZ3JvdW5kQ29sb3I6W05TQ29sb3IgY2xlYXJDb2xv
cl1dOwogICAgICAgICBbd2luZG93IHNldE9wYXF1ZTpOT107CkBAIC0xMjAsNyArMTIwLDcgQEAg
c3RhdGljIE5TTWFwVGFibGUgKmxhc3RDaGlsZElnbm9yaW5nV2hpdAogICAgICAgICBbd2luZG93
IHNldE1vdmFibGVCeVdpbmRvd0JhY2tncm91bmQ6WUVTXTsKICAgICAgICAgW3dpbmRvdyBzZXRI
aWRlc09uRGVhY3RpdmF0ZTpOT107CiAgICAgICAgIFt3aW5kb3cgc2V0RGVsZWdhdGU6c2VsZl07
Ci0gICAgICAgIFt3aW5kb3cgc2V0TWluU2l6ZTpOU01ha2VTaXplKDI4MC4wLCA0NTAuMCldOwor
ICAgICAgICBbd2luZG93IHNldE1pblNpemU6TlNNYWtlU2l6ZSgyODAuMGYsIDQ1MC4wZildOwog
CiAgICAgICAgIC8vIEtlZXAgcHJlZmVyZW5jZXMgc2VwYXJhdGUgZnJvbSB0aGUgcmVzdCBvZiB0
aGUgY2xpZW50LgogICAgICAgICAvLyBPbmUgcmVhc29uIHRoaXMgaXMgZ29vZCBpcyB0aGF0IGl0
IGtlZXBzIHRoZSBpbnNwZWN0b3Igb3V0IG9mIGhpc3RvcnkgdmlhICJwcml2YXRlIGJyb3dzaW5n
Ii4KQEAgLTQxNSw4ICs0MTUsOCBAQCBzdGF0aWMgTlNNYXBUYWJsZSAqbGFzdENoaWxkSWdub3Jp
bmdXaGl0CiAtICh2b2lkKXRyZWVWaWV3U2Nyb2xsVG86KGZsb2F0KW51bWJlcgogewogICAgIGZs
b2F0IGJvdHRvbSA9IE5TSGVpZ2h0KFtfcHJpdmF0ZS0+dHJlZU91dGxpbmVWaWV3IGZyYW1lXSkg
LSBOU0hlaWdodChbX3ByaXZhdGUtPnRyZWVTY3JvbGxWaWV3IGRvY3VtZW50VmlzaWJsZVJlY3Rd
KTsKLSAgICBudW1iZXIgPSBNQVgoMC4wLCBNSU4oYm90dG9tLCBudW1iZXIpKTsKLSAgICBbW19w
cml2YXRlLT50cmVlU2Nyb2xsVmlldyBjb250ZW50Vmlld10gc2Nyb2xsVG9Qb2ludDpOU01ha2VQ
b2ludCgwLjAsIG51bWJlcildOworICAgIG51bWJlciA9IE1BWCgwLjBmLCBNSU4oYm90dG9tLCBu
dW1iZXIpKTsKKyAgICBbW19wcml2YXRlLT50cmVlU2Nyb2xsVmlldyBjb250ZW50Vmlld10gc2Ny
b2xsVG9Qb2ludDpOU01ha2VQb2ludCgwLjBmLCBudW1iZXIpXTsKIH0KIAogLSAoZmxvYXQpdHJl
ZVZpZXdPZmZzZXRUb3AKQEAgLTc3Myw3ICs3NzMsNyBAQCBzdGF0aWMgTlNNYXBUYWJsZSAqbGFz
dENoaWxkSWdub3JpbmdXaGl0CiAgICAgaWYgKCFfcHJpdmF0ZS0+d2ViVmlld0xvYWRlZCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgQ0dGbG9hdCByZWQgPSAwLjAsIGdyZWVuID0gMC4wLCBibHVl
ID0gMC4wOworICAgIENHRmxvYXQgcmVkID0gMC4wZiwgZ3JlZW4gPSAwLjBmLCBibHVlID0gMC4w
ZjsKICAgICBOU0NvbG9yICpjb2xvciA9IFtbTlNDb2xvciBhbHRlcm5hdGVTZWxlY3RlZENvbnRy
b2xDb2xvcl0gY29sb3JVc2luZ0NvbG9yU3BhY2VOYW1lOk5TRGV2aWNlUkdCQ29sb3JTcGFjZV07
CiAgICAgW2NvbG9yIGdldFJlZDomcmVkIGdyZWVuOiZncmVlbiBibHVlOiZibHVlIGFscGhhOk5V
TExdOwogCkBAIC04NjksNyArODY5LDcgQEAgc3RhdGljIE5TTWFwVGFibGUgKmxhc3RDaGlsZEln
bm9yaW5nV2hpdAogICAgIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IFthcmd1bWVudHMgb2Jq
ZWN0Rm9yS2V5OkAiV2ViUGx1Z0luQXR0cmlidXRlc0tleSJdOwogICAgIGlmIChbW2F0dHJpYnV0
ZXMgb2JqZWN0Rm9yS2V5OkAidHlwZSJdIGlzRXF1YWxUb1N0cmluZzpAImFwcGxpY2F0aW9uL3gt
aW5zcGVjdG9yLXRyZWUiXSkgewogICAgICAgICBpZiAoIV9wcml2YXRlLT50cmVlT3V0bGluZVZp
ZXcpIHsKLSAgICAgICAgICAgIF9wcml2YXRlLT50cmVlU2Nyb2xsVmlldyA9IFtbTlNTY3JvbGxW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMC4wLCAwLjAsIDI1MC4wLCAxMDAu
MCldOworICAgICAgICAgICAgX3ByaXZhdGUtPnRyZWVTY3JvbGxWaWV3ID0gW1tOU1Njcm9sbFZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLjBmLCAwLjBmLCAyNTAuMGYsIDEw
MC4wZildOwogICAgICAgICAgICAgW19wcml2YXRlLT50cmVlU2Nyb2xsVmlldyBzZXREcmF3c0Jh
Y2tncm91bmQ6Tk9dOwogICAgICAgICAgICAgW19wcml2YXRlLT50cmVlU2Nyb2xsVmlldyBzZXRC
b3JkZXJUeXBlOk5TTm9Cb3JkZXJdOwogICAgICAgICAgICAgW19wcml2YXRlLT50cmVlU2Nyb2xs
VmlldyBzZXRWZXJ0aWNhbFNjcm9sbGVyOk5PXTsKQEAgLTg4NiwxNSArODg2LDE1IEBAIHN0YXRp
YyBOU01hcFRhYmxlICpsYXN0Q2hpbGRJZ25vcmluZ1doaXQKICAgICAgICAgICAgIFtfcHJpdmF0
ZS0+dHJlZU91dGxpbmVWaWV3IHNlbmRBY3Rpb25PbjooTlNMZWZ0TW91c2VVcE1hc2sgfCBOU0xl
ZnRNb3VzZURvd25NYXNrIHwgTlNMZWZ0TW91c2VEcmFnZ2VkTWFzayldOwogICAgICAgICAgICAg
W19wcml2YXRlLT50cmVlT3V0bGluZVZpZXcgc2V0Rm9jdXNSaW5nVHlwZTpOU0ZvY3VzUmluZ1R5
cGVOb25lXTsKICAgICAgICAgICAgIFtfcHJpdmF0ZS0+dHJlZU91dGxpbmVWaWV3IHNldEF1dG9y
ZXNpemVzT3V0bGluZUNvbHVtbjpOT107Ci0gICAgICAgICAgICBbX3ByaXZhdGUtPnRyZWVPdXRs
aW5lVmlldyBzZXRSb3dIZWlnaHQ6MTUuMF07CisgICAgICAgICAgICBbX3ByaXZhdGUtPnRyZWVP
dXRsaW5lVmlldyBzZXRSb3dIZWlnaHQ6MTUuMGZdOwogICAgICAgICAgICAgW19wcml2YXRlLT50
cmVlT3V0bGluZVZpZXcgc2V0VGFyZ2V0OnNlbGZdOwogICAgICAgICAgICAgW19wcml2YXRlLT50
cmVlT3V0bGluZVZpZXcgc2V0RG91YmxlQWN0aW9uOkBzZWxlY3RvcihfZm9jdXNSb290Tm9kZTop
XTsKLSAgICAgICAgICAgIFtfcHJpdmF0ZS0+dHJlZU91dGxpbmVWaWV3IHNldEluZGVudGF0aW9u
UGVyTGV2ZWw6MTIuMF07CisgICAgICAgICAgICBbX3ByaXZhdGUtPnRyZWVPdXRsaW5lVmlldyBz
ZXRJbmRlbnRhdGlvblBlckxldmVsOjEyLjBmXTsKICAgICAgICAgICAgIFtfcHJpdmF0ZS0+dHJl
ZVNjcm9sbFZpZXcgc2V0RG9jdW1lbnRWaWV3Ol9wcml2YXRlLT50cmVlT3V0bGluZVZpZXddOwog
CiAgICAgICAgICAgICBOU0NlbGwgKmhlYWRlckNlbGwgPSBbW05TQ2VsbCBhbGxvY10gaW5pdFRl
eHRDZWxsOkAiIl07CiAgICAgICAgICAgICBOU0NlbGwgKmRhdGFDZWxsID0gW1tOU0NlbGwgYWxs
b2NdIGluaXRUZXh0Q2VsbDpAIiJdOwotICAgICAgICAgICAgW2RhdGFDZWxsIHNldEZvbnQ6W05T
Rm9udCBzeXN0ZW1Gb250T2ZTaXplOjExLjBdXTsKKyAgICAgICAgICAgIFtkYXRhQ2VsbCBzZXRG
b250OltOU0ZvbnQgc3lzdGVtRm9udE9mU2l6ZToxMS4wZl1dOwogCiAgICAgICAgICAgICBOU1Rh
YmxlQ29sdW1uICp0YWJsZUNvbHVtbiA9IFtbTlNUYWJsZUNvbHVtbiBhbGxvY10gaW5pdFdpdGhJ
ZGVudGlmaWVyOkAibm9kZSJdOwogICAgICAgICAgICAgW3RhYmxlQ29sdW1uIHNldEhlYWRlckNl
bGw6aGVhZGVyQ2VsbF07CkBAIC05NzMsOCArOTczLDggQEAgc3RhdGljIE5TTWFwVGFibGUgKmxh
c3RDaGlsZElnbm9yaW5nV2hpdAogICAgIGlmIChvdXRsaW5lVmlldyA9PSBfcHJpdmF0ZS0+dHJl
ZU91dGxpbmVWaWV3ICYmIG5vZGUpIHsKICAgICAgICAgTlNTaGFkb3cgKnNoYWRvdyA9IFtbTlNT
aGFkb3cgYWxsb2NdIGluaXRdOwogICAgICAgICBbc2hhZG93IHNldFNoYWRvd0NvbG9yOltOU0Nv
bG9yIGJsYWNrQ29sb3JdXTsKLSAgICAgICAgW3NoYWRvdyBzZXRTaGFkb3dCbHVyUmFkaXVzOjIu
MF07Ci0gICAgICAgIFtzaGFkb3cgc2V0U2hhZG93T2Zmc2V0Ok5TTWFrZVNpemUoMi4wLC0yLjAp
XTsKKyAgICAgICAgW3NoYWRvdyBzZXRTaGFkb3dCbHVyUmFkaXVzOjIuMGZdOworICAgICAgICBb
c2hhZG93IHNldFNoYWRvd09mZnNldDpOU01ha2VTaXplKDIuMGYsIC0yLjBmKV07CiAgICAgICAg
IE5TTXV0YWJsZVBhcmFncmFwaFN0eWxlICpwYXJhID0gW1tOU1BhcmFncmFwaFN0eWxlIGRlZmF1
bHRQYXJhZ3JhcGhTdHlsZV0gbXV0YWJsZUNvcHldOwogICAgICAgICBbcGFyYSBzZXRMaW5lQnJl
YWtNb2RlOk5TTGluZUJyZWFrQnlUcnVuY2F0aW5nVGFpbF07CiAgICAgICAgIApAQCAtOTgzLDcg
Kzk4Myw3IEBAIHN0YXRpYyBOU01hcFRhYmxlICpsYXN0Q2hpbGRJZ25vcmluZ1doaXQKICAgICAg
ICAgW2F0dHJzIHJlbGVhc2VdOwogCiAgICAgICAgIGlmIChbbm9kZSBoYXNDaGlsZE5vZGVzXSAm
JiAhW291dGxpbmVWaWV3IGlzSXRlbUV4cGFuZGVkOm5vZGVdKSB7Ci0gICAgICAgICAgICBhdHRy
cyA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOltOU0NvbG9y
IGNvbG9yV2l0aENhbGlicmF0ZWRSZWQ6MS4wIGdyZWVuOjEuMCBibHVlOjEuMCBhbHBoYTowLjVd
LCBOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUsIHNoYWRvdywgTlNTaGFkb3dBdHRyaWJ1
dGVOYW1lLCBwYXJhLCBOU1BhcmFncmFwaFN0eWxlQXR0cmlidXRlTmFtZSwgbmlsXTsKKyAgICAg
ICAgICAgIGF0dHJzID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtl
eXM6W05TQ29sb3IgY29sb3JXaXRoQ2FsaWJyYXRlZFJlZDoxLjBmIGdyZWVuOjEuMGYgYmx1ZTox
LjBmIGFscGhhOjAuNWZdLCBOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUsIHNoYWRvdywg
TlNTaGFkb3dBdHRyaWJ1dGVOYW1lLCBwYXJhLCBOU1BhcmFncmFwaFN0eWxlQXR0cmlidXRlTmFt
ZSwgbmlsXTsKICAgICAgICAgICAgIE5TQXR0cmlidXRlZFN0cmluZyAqcHJldmlldyA9IFtbTlNB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpbbm9kZSBfY29udGVudFByZXZp
ZXddIGF0dHJpYnV0ZXM6YXR0cnNdOwogICAgICAgICAgICAgW3N0cmluZyBhcHBlbmRBdHRyaWJ1
dGVkU3RyaW5nOnByZXZpZXddOwogICAgICAgICAgICAgW2F0dHJzIHJlbGVhc2VdOwpJbmRleDog
V2ViS2l0L1dlYkluc3BlY3Rvci9XZWJJbnNwZWN0b3JPdXRsaW5lVmlldy5tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9XZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yT3V0bGluZVZpZXcubQkocmV2aXNp
b24gMTU3NzEpCisrKyBXZWJLaXQvV2ViSW5zcGVjdG9yL1dlYkluc3BlY3Rvck91dGxpbmVWaWV3
Lm0JKHdvcmtpbmcgY29weSkKQEAgLTQzLDggKzQzLDggQEAKIC0gKHZvaWQpX2hpZ2hsaWdodFJv
dzooaW50KXJvdyBjbGlwUmVjdDooTlNSZWN0KWNsaXAgewogICAgIE5TQ29sb3IgKnNlbGVjdGlv
bkNvbG9yID0gbmlsOwogICAgIGlmIChbW3NlbGYgd2luZG93XSBmaXJzdFJlc3BvbmRlcl0gPT0g
c2VsZiAmJiBbW3NlbGYgd2luZG93XSBpc0tleVdpbmRvd10pCi0gICAgICAgIHNlbGVjdGlvbkNv
bG9yID0gW1tOU0NvbG9yIGFsdGVybmF0ZVNlbGVjdGVkQ29udHJvbENvbG9yXSBjb2xvcldpdGhB
bHBoYUNvbXBvbmVudDowLjMzM107Ci0gICAgc2VsZWN0aW9uQ29sb3IgPSBbW05TQ29sb3IgYWx0
ZXJuYXRlU2VsZWN0ZWRDb250cm9sQ29sb3JdIGNvbG9yV2l0aEFscGhhQ29tcG9uZW50OjAuNDVd
OworICAgICAgICBzZWxlY3Rpb25Db2xvciA9IFtbTlNDb2xvciBhbHRlcm5hdGVTZWxlY3RlZENv
bnRyb2xDb2xvcl0gY29sb3JXaXRoQWxwaGFDb21wb25lbnQ6MC4zMzNmXTsKKyAgICBzZWxlY3Rp
b25Db2xvciA9IFtbTlNDb2xvciBhbHRlcm5hdGVTZWxlY3RlZENvbnRyb2xDb2xvcl0gY29sb3JX
aXRoQWxwaGFDb21wb25lbnQ6MC40NWZdOwogCiAgICAgaWYgKFtzZWxmIG51bWJlck9mQ29sdW1u
c10gPiAwKSB7CiAgICAgICAgIE5TUmVjdCBoaWdobGlnaHQgPSBbc2VsZiByZWN0T2ZSb3c6cm93
XTsKQEAgLTYxLDE0ICs2MSwxNCBAQAogICAgICAgICAgICAgaWYgKFtOU0dyYXBoaWNzQ29udGV4
dCBjdXJyZW50Q29udGV4dERyYXdpbmdUb1NjcmVlbl0pIHsKICAgICAgICAgICAgICAgICBOU0Jl
emllclBhdGggKnBhdGggPSBbW05TQmV6aWVyUGF0aCBhbGxvY10gaW5pdF07CiAKLSAgICAgICAg
ICAgICAgICBmbG9hdCByYWRpdXMgPSA2LjA7CisgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVz
ID0gNi4wZjsKICAgICAgICAgICAgICAgICBOU1JlY3QgaXJlY3QgPSBOU0luc2V0UmVjdChoaWdo
bGlnaHQsIHJhZGl1cywgcmFkaXVzKTsKICAgICAgICAgICAgICAgICBpZiAoIXNvbGlkKQotICAg
ICAgICAgICAgICAgICAgICBpcmVjdCA9IE5TSW5zZXRSZWN0KGlyZWN0LCAxLjAsIDEuMCk7Ci0g
ICAgICAgICAgICAgICAgW3BhdGggYXBwZW5kQmV6aWVyUGF0aFdpdGhBcmNXaXRoQ2VudGVyOk5T
TWFrZVBvaW50KE5TTWluWChpcmVjdCksIE5TTWluWShpcmVjdCkpIHJhZGl1czpyYWRpdXMgc3Rh
cnRBbmdsZToxODAuIGVuZEFuZ2xlOjI3MC5dOwotICAgICAgICAgICAgICAgIFtwYXRoIGFwcGVu
ZEJlemllclBhdGhXaXRoQXJjV2l0aENlbnRlcjpOU01ha2VQb2ludChOU01heFgoaXJlY3QpLCBO
U01pblkoaXJlY3QpKSByYWRpdXM6cmFkaXVzIHN0YXJ0QW5nbGU6MjcwLiBlbmRBbmdsZTozNjAu
XTsKLSAgICAgICAgICAgICAgICBbcGF0aCBhcHBlbmRCZXppZXJQYXRoV2l0aEFyY1dpdGhDZW50
ZXI6TlNNYWtlUG9pbnQoTlNNYXhYKGlyZWN0KSwgTlNNYXhZKGlyZWN0KSkgcmFkaXVzOnJhZGl1
cyBzdGFydEFuZ2xlOjAuIGVuZEFuZ2xlOjkwLl07Ci0gICAgICAgICAgICAgICAgW3BhdGggYXBw
ZW5kQmV6aWVyUGF0aFdpdGhBcmNXaXRoQ2VudGVyOk5TTWFrZVBvaW50KE5TTWluWChpcmVjdCks
IE5TTWF4WShpcmVjdCkpIHJhZGl1czpyYWRpdXMgc3RhcnRBbmdsZTo5MC4gZW5kQW5nbGU6MTgw
Ll07CisgICAgICAgICAgICAgICAgICAgIGlyZWN0ID0gTlNJbnNldFJlY3QoaXJlY3QsIDEuMGYs
IDEuMGYpOworICAgICAgICAgICAgICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoQXJjV2l0
aENlbnRlcjpOU01ha2VQb2ludChOU01pblgoaXJlY3QpLCBOU01pblkoaXJlY3QpKSByYWRpdXM6
cmFkaXVzIHN0YXJ0QW5nbGU6MTgwLjBmIGVuZEFuZ2xlOjI3MC4wZl07CisgICAgICAgICAgICAg
ICAgW3BhdGggYXBwZW5kQmV6aWVyUGF0aFdpdGhBcmNXaXRoQ2VudGVyOk5TTWFrZVBvaW50KE5T
TWF4WChpcmVjdCksIE5TTWluWShpcmVjdCkpIHJhZGl1czpyYWRpdXMgc3RhcnRBbmdsZToyNzAu
MGYgZW5kQW5nbGU6MzYwLjBmXTsKKyAgICAgICAgICAgICAgICBbcGF0aCBhcHBlbmRCZXppZXJQ
YXRoV2l0aEFyY1dpdGhDZW50ZXI6TlNNYWtlUG9pbnQoTlNNYXhYKGlyZWN0KSwgTlNNYXhZKGly
ZWN0KSkgcmFkaXVzOnJhZGl1cyBzdGFydEFuZ2xlOjAuMGYgZW5kQW5nbGU6OTAuMGZdOworICAg
ICAgICAgICAgICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoQXJjV2l0aENlbnRlcjpOU01h
a2VQb2ludChOU01pblgoaXJlY3QpLCBOU01heFkoaXJlY3QpKSByYWRpdXM6cmFkaXVzIHN0YXJ0
QW5nbGU6OTAuMGYgZW5kQW5nbGU6MTgwLjBmXTsKICAgICAgICAgICAgICAgICBbcGF0aCBjbG9z
ZVBhdGhdOwogCiAgICAgICAgICAgICAgICAgTlNSZWN0Q2xpcChjbGlwKTsKQEAgLTc2LDcgKzc2
LDcgQEAKICAgICAgICAgICAgICAgICBpZiAoc29saWQpIHsKICAgICAgICAgICAgICAgICAgICAg
W3BhdGggZmlsbF07CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgW3BhdGggc2V0TGluZVdpZHRoOjIuMF07CisgICAgICAgICAgICAgICAgICAgIFtwYXRoIHNl
dExpbmVXaWR0aDoyLjBmXTsKICAgICAgICAgICAgICAgICAgICAgW3BhdGggc3Ryb2tlXTsKICAg
ICAgICAgICAgICAgICB9CiAKSW5kZXg6IFdlYktpdC9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hs
aWdodC5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdo
dC5tCShyZXZpc2lvbiAxNTc3MSkKKysrIFdlYktpdC9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hs
aWdodC5tCSh3b3JraW5nIGNvcHkpCkBAIC01NCw4ICs1NCw4IEBAIE5TU3RyaW5nICpXZWJOb2Rl
SGlnaGxpZ2h0RXhwaXJlZE5vdGlmaWMKICAgICB9CiAKICAgICAvLyBhZGp1c3Qgc2l6ZSBhbmQg
cG9zaXRpb24gZm9yIHJlY3QgcGFkZGluZyB0aGF0IHRoZSB2aWV3IGFkZHMKLSAgICBib3VuZHMu
b3JpZ2luLnkgLT0gMy4wOwotICAgIGJvdW5kcy5vcmlnaW4ueCAtPSAzLjA7CisgICAgYm91bmRz
Lm9yaWdpbi55IC09IDMuMGY7CisgICAgYm91bmRzLm9yaWdpbi54IC09IDMuMGY7CiAgICAgYm91
bmRzLnNpemUgPSBbX3dlYk5vZGVIaWdobGlnaHRWaWV3IGZyYW1lXS5zaXplOwogCiAgICAgTlNS
ZWN0IHdpbmRvd0JvdW5kcyA9IFt2aWV3IGNvbnZlcnRSZWN0OmJvdW5kcyB0b1ZpZXc6bmlsXTsK
SW5kZXg6IFdlYktpdC9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodFZpZXcubQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3Lm0JKHJldmlz
aW9uIDE1NzcxKQorKysgV2ViS2l0L1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5t
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMSArMzUsMTEgQEAKIHsKICAgICBOU0JlemllclBhdGgg
KnBhdGggPSBbW05TQmV6aWVyUGF0aCBhbGxvY10gaW5pdF07CiAKLSAgICBOU1JlY3QgaXJlY3Qg
PSBOU0luc2V0UmVjdCggcmVjdCwgcmFkaXVzLCByYWRpdXMgKTsKLSAgICBbcGF0aCBhcHBlbmRC
ZXppZXJQYXRoV2l0aEFyY1dpdGhDZW50ZXI6TlNNYWtlUG9pbnQoTlNNaW5YKGlyZWN0KSwgTlNN
aW5ZKGlyZWN0KSkgcmFkaXVzOnJhZGl1cyBzdGFydEFuZ2xlOjE4MC4gZW5kQW5nbGU6MjcwLl07
Ci0gICAgW3BhdGggYXBwZW5kQmV6aWVyUGF0aFdpdGhBcmNXaXRoQ2VudGVyOk5TTWFrZVBvaW50
KE5TTWF4WChpcmVjdCksIE5TTWluWShpcmVjdCkpIHJhZGl1czpyYWRpdXMgc3RhcnRBbmdsZToy
NzAuIGVuZEFuZ2xlOjM2MC5dOwotICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoQXJjV2l0
aENlbnRlcjpOU01ha2VQb2ludChOU01heFgoaXJlY3QpLCBOU01heFkoaXJlY3QpKSByYWRpdXM6
cmFkaXVzIHN0YXJ0QW5nbGU6MC4gZW5kQW5nbGU6OTAuXTsKLSAgICBbcGF0aCBhcHBlbmRCZXpp
ZXJQYXRoV2l0aEFyY1dpdGhDZW50ZXI6TlNNYWtlUG9pbnQoTlNNaW5YKGlyZWN0KSwgTlNNYXhZ
KGlyZWN0KSkgcmFkaXVzOnJhZGl1cyBzdGFydEFuZ2xlOjkwLiBlbmRBbmdsZToxODAuXTsKKyAg
ICBOU1JlY3QgaXJlY3QgPSBOU0luc2V0UmVjdChyZWN0LCByYWRpdXMsIHJhZGl1cyk7CisgICAg
W3BhdGggYXBwZW5kQmV6aWVyUGF0aFdpdGhBcmNXaXRoQ2VudGVyOk5TTWFrZVBvaW50KE5TTWlu
WChpcmVjdCksIE5TTWluWShpcmVjdCkpIHJhZGl1czpyYWRpdXMgc3RhcnRBbmdsZToxODAuMGYg
ZW5kQW5nbGU6MjcwLjBmXTsKKyAgICBbcGF0aCBhcHBlbmRCZXppZXJQYXRoV2l0aEFyY1dpdGhD
ZW50ZXI6TlNNYWtlUG9pbnQoTlNNYXhYKGlyZWN0KSwgTlNNaW5ZKGlyZWN0KSkgcmFkaXVzOnJh
ZGl1cyBzdGFydEFuZ2xlOjI3MC4wZiBlbmRBbmdsZTozNjAuMGZdOworICAgIFtwYXRoIGFwcGVu
ZEJlemllclBhdGhXaXRoQXJjV2l0aENlbnRlcjpOU01ha2VQb2ludChOU01heFgoaXJlY3QpLCBO
U01heFkoaXJlY3QpKSByYWRpdXM6cmFkaXVzIHN0YXJ0QW5nbGU6MC4wZiBlbmRBbmdsZTo5MC4w
Zl07CisgICAgW3BhdGggYXBwZW5kQmV6aWVyUGF0aFdpdGhBcmNXaXRoQ2VudGVyOk5TTWFrZVBv
aW50KE5TTWluWChpcmVjdCksIE5TTWF4WShpcmVjdCkpIHJhZGl1czpyYWRpdXMgc3RhcnRBbmds
ZTo5MC4wZiBlbmRBbmdsZToxODAuMGZdOwogICAgIFtwYXRoIGNsb3NlUGF0aF07CiAKICAgICBy
ZXR1cm4gW3BhdGggYXV0b3JlbGVhc2VdOwpAQCAtNjAsMTQgKzYwLDE0IEBACiAKICAgICBpZihb
cmVjdHMgY291bnRdID09IDEpIHsKICAgICAgICAgTlNWYWx1ZSAqdmFsdWUgPSAoTlNWYWx1ZSAq
KVtyZWN0cyBvYmplY3RBdEluZGV4OjBdOwotICAgICAgICByZWN0ID0gTlNJbnNldFJlY3QoW3Zh
bHVlIHJlY3RWYWx1ZV0sIC0xLjAsIC0xLjApOworICAgICAgICByZWN0ID0gTlNJbnNldFJlY3Qo
W3ZhbHVlIHJlY3RWYWx1ZV0sIC0xLjBmLCAtMS4wZik7CiAgICAgICAgIHJlY3QgPSBOU0ludGVy
c2VjdGlvblJlY3QocmVjdCwgdmlzaWJsZVJlY3QpOwogICAgICAgICBpZiAoIU5TSXNFbXB0eVJl
Y3QocmVjdCkpCi0gICAgICAgICAgICBwYXRoID0gW1tzZWxmIHJvdW5kZWRSZWN0OnJlY3Qgd2l0
aFJhZGl1czozLjBdIHJldGFpbl07CisgICAgICAgICAgICBwYXRoID0gW1tzZWxmIHJvdW5kZWRS
ZWN0OnJlY3Qgd2l0aFJhZGl1czozLjBmXSByZXRhaW5dOwogCiAgICAgICAgIC8vIHNoaWZ0IGV2
ZXJ5dGhpbmcgdG8gdGhlIGNvcm5lcgogICAgICAgICBOU0FmZmluZVRyYW5zZm9ybSAqdHJhbnNm
b3JtID0gW1tOU0FmZmluZVRyYW5zZm9ybSBhbGxvY10gaW5pdF07Ci0gICAgICAgIFt0cmFuc2Zv
cm0gdHJhbnNsYXRlWEJ5OihOU01pblgocmVjdCkgKiAtMS4wKSArIDIuNSB5Qnk6KE5TTWluWShy
ZWN0KSAqIC0xLjApICsgMi41XTsKKyAgICAgICAgW3RyYW5zZm9ybSB0cmFuc2xhdGVYQnk6KE5T
TWluWChyZWN0KSAqIC0xLjBmKSArIDIuNWYgeUJ5OihOU01pblkocmVjdCkgKiAtMS4wZikgKyAy
LjVmXTsKICAgICAgICAgW3BhdGggdHJhbnNmb3JtVXNpbmdBZmZpbmVUcmFuc2Zvcm06dHJhbnNm
b3JtXTsKICAgICAgICAgW3N0cmFpZ2h0UGF0aCB0cmFuc2Zvcm1Vc2luZ0FmZmluZVRyYW5zZm9y
bTp0cmFuc2Zvcm1dOwogICAgICAgICBbdHJhbnNmb3JtIHJlbGVhc2VdOwpAQCAtODQsNyArODQs
NyBAQAogICAgICAgICAgICAgcmVjdCA9IE5TSW50ZXJzZWN0aW9uUmVjdChbdmFsdWUgcmVjdFZh
bHVlXSwgdmlzaWJsZVJlY3QpOwogICAgICAgICAgICAgaWYgKCFOU0lzRW1wdHlSZWN0KHJlY3Qp
KSB7CiAgICAgICAgICAgICAgICAgW3N0cmFpZ2h0UGF0aCBhcHBlbmRCZXppZXJQYXRoV2l0aFJl
Y3Q6cmVjdF07Ci0gICAgICAgICAgICAgICAgW3BhdGggYXBwZW5kQmV6aWVyUGF0aDpbc2VsZiBy
b3VuZGVkUmVjdDpyZWN0IHdpdGhSYWRpdXM6My4wXV07CisgICAgICAgICAgICAgICAgW3BhdGgg
YXBwZW5kQmV6aWVyUGF0aDpbc2VsZiByb3VuZGVkUmVjdDpyZWN0IHdpdGhSYWRpdXM6My4wZl1d
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTk5LDE0ICs5OSwxNCBAQAogCiAgICAg
ICAgIC8vIG11bHRpcGxlIHJlY3RzIHdlIGdldCBmcm9tIFdlYkNvcmUgbmVlZCBmbGlwcGVkIHRv
IHNob3cgdXAgY29ycmVjdGx5CiAgICAgICAgIE5TQWZmaW5lVHJhbnNmb3JtICp0cmFuc2Zvcm0g
PSBbW05TQWZmaW5lVHJhbnNmb3JtIGFsbG9jXSBpbml0XTsKLSAgICAgICAgW3RyYW5zZm9ybSBz
Y2FsZVhCeToxLjAgeUJ5Oi0xLjBdOworICAgICAgICBbdHJhbnNmb3JtIHNjYWxlWEJ5OjEuMGYg
eUJ5Oi0xLjBmXTsKICAgICAgICAgW3BhdGggdHJhbnNmb3JtVXNpbmdBZmZpbmVUcmFuc2Zvcm06
dHJhbnNmb3JtXTsKICAgICAgICAgW3N0cmFpZ2h0UGF0aCB0cmFuc2Zvcm1Vc2luZ0FmZmluZVRy
YW5zZm9ybTp0cmFuc2Zvcm1dOwogICAgICAgICBbdHJhbnNmb3JtIHJlbGVhc2VdOwogCiAgICAg
ICAgIC8vIHNoaWZ0IGV2ZXJ5dGhpbmcgdG8gdGhlIGNvcm5lcgogICAgICAgICB0cmFuc2Zvcm0g
PSBbW05TQWZmaW5lVHJhbnNmb3JtIGFsbG9jXSBpbml0XTsKLSAgICAgICAgW3RyYW5zZm9ybSB0
cmFuc2xhdGVYQnk6KE5TTWluWChyZWN0KSAqIC0xLjApICsgMi41IHlCeTpOU01heFkocmVjdCkg
KyAyLjVdOworICAgICAgICBbdHJhbnNmb3JtIHRyYW5zbGF0ZVhCeTooTlNNaW5YKHJlY3QpICog
LTEuMGYpICsgMi41ZiB5Qnk6TlNNYXhZKHJlY3QpICsgMi41Zl07CiAgICAgICAgIFtwYXRoIHRy
YW5zZm9ybVVzaW5nQWZmaW5lVHJhbnNmb3JtOnRyYW5zZm9ybV07CiAgICAgICAgIFtzdHJhaWdo
dFBhdGggdHJhbnNmb3JtVXNpbmdBZmZpbmVUcmFuc2Zvcm06dHJhbnNmb3JtXTsKICAgICAgICAg
W3RyYW5zZm9ybSByZWxlYXNlXTsKQEAgLTEyMyw4ICsxMjMsOCBAQAogCiAgICAgLy8gbWFrZSB0
aGUgZHJhd2luZyBhcmVhIGxhcmdlciBmb3IgdGhlIGZvY3VzIHJpbmcgYmx1cgogICAgIHJlY3Qg
PSBbcGF0aCBib3VuZHNdOwotICAgIHJlY3Quc2l6ZS53aWR0aCArPSA1LjA7Ci0gICAgcmVjdC5z
aXplLmhlaWdodCArPSA1LjA7CisgICAgcmVjdC5zaXplLndpZHRoICs9IDUuMGY7CisgICAgcmVj
dC5zaXplLmhlaWdodCArPSA1LjBmOwogICAgIFtzZWxmIHNldEZyYW1lU2l6ZTpyZWN0LnNpemVd
OwogCiAgICAgLy8gZHJhdyBpbnRvIGFuIGltYWdlCkBAIC0xMzQsNyArMTM0LDcgQEAKIAogICAg
IGlmIChzdHJhaWdodFBhdGgpIHsKICAgICAgICAgW1tOU0NvbG9yIHJlZENvbG9yXSBzZXRdOwot
ICAgICAgICBbcGF0aCBzZXRMaW5lV2lkdGg6NC4wXTsKKyAgICAgICAgW3BhdGggc2V0TGluZVdp
ZHRoOjQuMGZdOwogICAgICAgICBbcGF0aCBzdHJva2VdOwogCiAgICAgICAgIC8vIGNsZWFyIHRo
ZSBjZW50ZXIgdG8gZWxpbWluYXRlIHRoaWNrIGlubmVyIHN0cm9rZXMgZm9yIG92ZXJsYXBwaW5n
IHJlY3RzCkBAIC0xNDMsMTIgKzE0MywxMiBAQAogCiAgICAgICAgIC8vIHN0cm9rZSB0aGUgc3Ry
YWlnaHQgbGluZSBwYXRoIHdpdGggYSBsaWdodCBjb2xvciB0byBzaG93IGFueSBpbm5lciByZWN0
cwogICAgICAgICBbW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSBzZXRDb21wb3Np
dGluZ09wZXJhdGlvbjpOU0NvbXBvc2l0ZURlc3RpbmF0aW9uT3Zlcl07Ci0gICAgICAgIFtbW05T
Q29sb3IgcmVkQ29sb3JdIGNvbG9yV2l0aEFscGhhQ29tcG9uZW50OjAuNl0gc2V0XTsKLSAgICAg
ICAgW3N0cmFpZ2h0UGF0aCBzZXRMaW5lV2lkdGg6MS4wXTsKKyAgICAgICAgW1tbTlNDb2xvciBy
ZWRDb2xvcl0gY29sb3JXaXRoQWxwaGFDb21wb25lbnQ6MC42Zl0gc2V0XTsKKyAgICAgICAgW3N0
cmFpZ2h0UGF0aCBzZXRMaW5lV2lkdGg6MS4wZl07CiAgICAgICAgIFtzdHJhaWdodFBhdGggc3Ry
b2tlXTsKICAgICB9IGVsc2UgewogICAgICAgICBbW05TQ29sb3IgcmVkQ29sb3JdIHNldF07Ci0g
ICAgICAgIFtwYXRoIHNldExpbmVXaWR0aDoyLjBdOworICAgICAgICBbcGF0aCBzZXRMaW5lV2lk
dGg6Mi4wZl07CiAgICAgICAgIFtwYXRoIHN0cm9rZV07CiAgICAgfQogCkBAIC0xODAsNiArMTgw
LDYgQEAKICAgICBlbHNlIGlmIChhbHBoYSA8IDAuMCkKICAgICAgICAgYWxwaGEgPSAwLjA7CiAK
LSAgICBbX2hpZ2hsaWdodFJpbmdJbWFnZSBkcmF3SW5SZWN0OnJlY3QgZnJvbVJlY3Q6cmVjdCBv
cGVyYXRpb246TlNDb21wb3NpdGVDb3B5IGZyYWN0aW9uOmFscGhhXTsKKyAgICBbX2hpZ2hsaWdo
dFJpbmdJbWFnZSBkcmF3SW5SZWN0OnJlY3QgZnJvbVJlY3Q6cmVjdCBvcGVyYXRpb246TlNDb21w
b3NpdGVDb3B5IGZyYWN0aW9uOihmbG9hdClhbHBoYV07CiB9CiBAZW5kCkluZGV4OiBXZWJLaXQv
V2ViVmlldy9XZWJGcmFtZS5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJWaWV3L1dlYkZyYW1l
Lm0JKHJldmlzaW9uIDE1NzcxKQorKysgV2ViS2l0L1dlYlZpZXcvV2ViRnJhbWUubQkod29ya2lu
ZyBjb3B5KQpAQCAtOTAyLDcgKzkwMiw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViRnJhbWUgKkZyYW1l
KFdlYkNvcmVGcmEKICAgICAgICAgICAgIGlkIGlkZW50aWZpZXI7CiAgICAgICAgICAgICBOU1VS
TFJlcXVlc3QgKnJlcXVlc3QgPSBbW05TVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6W3Jl
c3BvbnNlIFVSTF1dOwogICAgICAgICAgICAgW3NlbGYgX3JlcXVlc3RGcm9tRGVsZWdhdGVGb3JS
ZXF1ZXN0OnJlcXVlc3QgaWRlbnRpZmllcjomaWRlbnRpZmllciBlcnJvcjomZXJyb3JdOwotICAg
ICAgICAgICAgW3NlbGYgX3NlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzV2l0aElkZW50aWZp
ZXI6aWRlbnRpZmllciByZXNwb25zZTpyZXNwb25zZSBsZW5ndGg6W3Jlc3BvbnNlIGV4cGVjdGVk
Q29udGVudExlbmd0aF0gZXJyb3I6ZXJyb3JdOworICAgICAgICAgICAgW3NlbGYgX3NlbmRSZW1h
aW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzV2l0aElkZW50aWZpZXI6aWRlbnRpZmllciByZXNwb25zZTpy
ZXNwb25zZSBsZW5ndGg6KHVuc2lnbmVkKVtyZXNwb25zZSBleHBlY3RlZENvbnRlbnRMZW5ndGhd
IGVycm9yOmVycm9yXTsKICAgICAgICAgICAgIFtyZXF1ZXN0IHJlbGVhc2VdOwogICAgICAgICB9
CiAgICAgICAgIApJbmRleDogV2ViS2l0L1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm0JKHJldmlzaW9uIDE1NzcxKQorKysg
V2ViS2l0L1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm0JKHdvcmtpbmcgY29weSkKQEAgLTMzMywxNCAr
MzMzLDE0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRUeXBlc0Zyb21DbGFzcyhOU00KICAgICAK
ICAgICBfcHJpdmF0ZSA9IFtbV2ViRnJhbWVWaWV3UHJpdmF0ZSBhbGxvY10gaW5pdF07CiAKLSAg
ICBXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgKnNjcm9sbFZpZXcgID0gW1tXZWJEeW5hbWljU2Ny
b2xsQmFyc1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLDAsZnJhbWUuc2l6
ZS53aWR0aCxmcmFtZS5zaXplLmhlaWdodCldOworICAgIFdlYkR5bmFtaWNTY3JvbGxCYXJzVmll
dyAqc2Nyb2xsVmlldyAgPSBbW1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAuMGYsIDAuMGYsIGZyYW1lLnNpemUud2lkdGgsIGZyYW1lLnNp
emUuaGVpZ2h0KV07CiAgICAgX3ByaXZhdGUtPmZyYW1lU2Nyb2xsVmlldyA9IHNjcm9sbFZpZXc7
CiAgICAgW3Njcm9sbFZpZXcgc2V0Q29udGVudFZpZXc6W1tbV2ViQ2xpcFZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6W3Njcm9sbFZpZXcgYm91bmRzXV0gYXV0b3JlbGVhc2VdXTsKICAgICBbc2Ny
b2xsVmlldyBzZXREcmF3c0JhY2tncm91bmQ6Tk9dOwogICAgIFtzY3JvbGxWaWV3IHNldEhhc1Zl
cnRpY2FsU2Nyb2xsZXI6Tk9dOwogICAgIFtzY3JvbGxWaWV3IHNldEhhc0hvcml6b250YWxTY3Jv
bGxlcjpOT107CiAgICAgW3Njcm9sbFZpZXcgc2V0QXV0b3Jlc2l6aW5nTWFzazpOU1ZpZXdXaWR0
aFNpemFibGUgfCBOU1ZpZXdIZWlnaHRTaXphYmxlXTsKLSAgICBbc2Nyb2xsVmlldyBzZXRMaW5l
U2Nyb2xsOjQwLjBdOworICAgIFtzY3JvbGxWaWV3IHNldExpbmVTY3JvbGw6NDAuMGZdOwogICAg
IFtzZWxmIGFkZFN1YnZpZXc6c2Nyb2xsVmlld107CiAgICAgLy8gZG9uJ3QgY2FsbCBvdXIgb3Zl
cnJpZGRlbiB2ZXJzaW9uIGhlcmU7IHdlIG5lZWQgdG8gbWFrZSB0aGUgc3RhbmRhcmQgTlNWaWV3
IGxpbmsgYmV0d2VlbiB1cwogICAgIC8vIGFuZCBvdXIgc3VidmlldyBzbyB0aGF0IHByZXZpb3Vz
S2V5VmlldyBhbmQgcHJldmlvdXNWYWxpZEtleVZpZXcgd29yayBhcyBleHBlY3RlZC4gVGhpcyB3
b3JrcwpJbmRleDogV2ViS2l0L1dlYlZpZXcvV2ViSFRNTFZpZXcubQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvV2ViVmlldy9XZWJIVE1MVmlldy5tCShyZXZpc2lvbiAxNTc3MSkKKysrIFdlYktpdC9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm0JKHdvcmtpbmcgY29weSkKQEAgLTEyMSwyNiArMTIxLDI2IEBA
IHZvaWQgX05TUmVzZXRLaWxsUmluZ09wZXJhdGlvbkZsYWcodm9pZCkKIC8vIHByaW50IGluIElF
IGFuZCBDYW1pbm8uIFRoaXMgbGV0cyB0aGVtIHVzZSBmZXdlciBzaGVldHMgdGhhbiB0aGV5CiAv
LyB3b3VsZCBvdGhlcndpc2UsIHdoaWNoIGlzIHByZXN1bWFibHkgd2h5IG90aGVyIGJyb3dzZXJz
IGRvIHRoaXMuCiAvLyBXaWRlIHBhZ2VzIHdpbGwgYmUgc2NhbGVkIGRvd24gbW9yZSB0aGFuIHRo
aXMuCi0jZGVmaW5lIFByaW50aW5nTWluaW11bVNocmlua0ZhY3RvciAgICAgMS4yNQorI2RlZmlu
ZSBQcmludGluZ01pbmltdW1TaHJpbmtGYWN0b3IgICAgIDEuMjVmCiAKIC8vIFRoaXMgbnVtYmVy
IGRldGVybWluZXMgaG93IHNtYWxsIHdlIGFyZSB3aWxsaW5nIHRvIHJlZHVjZSB0aGUgcGFnZSBj
b250ZW50CiAvLyBpbiBvcmRlciB0byBhY2NvbW1vZGF0ZSB0aGUgd2lkZXN0IGxpbmUuIElmIHRo
ZSBwYWdlIHdvdWxkIGhhdmUgdG8gYmUKIC8vIHJlZHVjZWQgc21hbGxlciB0byBtYWtlIHRoZSB3
aWRlc3QgbGluZSBmaXQsIHdlIGp1c3QgY2xpcCBpbnN0ZWFkICh0aGlzCiAvLyBiZWhhdmlvciBt
YXRjaGVzIE1hY0lFIGFuZCBNb3ppbGxhLCBhdCBsZWFzdCkKLSNkZWZpbmUgUHJpbnRpbmdNYXhp
bXVtU2hyaW5rRmFjdG9yICAgICAyLjAKKyNkZWZpbmUgUHJpbnRpbmdNYXhpbXVtU2hyaW5rRmFj
dG9yICAgICAyLjBmCiAKLSNkZWZpbmUgQVVUT1NDUk9MTF9JTlRFUlZBTCAgICAgICAgICAgICAw
LjEKKyNkZWZpbmUgQVVUT1NDUk9MTF9JTlRFUlZBTCAgICAgICAgICAgICAwLjFmCiAKLSNkZWZp
bmUgRFJBR19MQUJFTF9CT1JERVJfWCAgICAgICAgICAgICA0LjAKLSNkZWZpbmUgRFJBR19MQUJF
TF9CT1JERVJfWSAgICAgICAgICAgICAyLjAKLSNkZWZpbmUgRFJBR19MQUJFTF9SQURJVVMgICAg
ICAgICAgICAgICA1LjAKLSNkZWZpbmUgRFJBR19MQUJFTF9CT1JERVJfWV9PRkZTRVQgICAgICAg
ICAgICAgIDIuMAorI2RlZmluZSBEUkFHX0xBQkVMX0JPUkRFUl9YICAgICAgICAgICAgIDQuMGYK
KyNkZWZpbmUgRFJBR19MQUJFTF9CT1JERVJfWSAgICAgICAgICAgICAyLjBmCisjZGVmaW5lIERS
QUdfTEFCRUxfUkFESVVTICAgICAgICAgICAgICAgNS4wZgorI2RlZmluZSBEUkFHX0xBQkVMX0JP
UkRFUl9ZX09GRlNFVCAgICAgICAgICAgICAgMi4wZgogCi0jZGVmaW5lIE1JTl9EUkFHX0xBQkVM
X1dJRFRIX0JFRk9SRV9DTElQICAgICAgICAxMjAuMAotI2RlZmluZSBNQVhfRFJBR19MQUJFTF9X
SURUSCAgICAgICAgICAgICAgICAgICAgMzIwLjAKKyNkZWZpbmUgTUlOX0RSQUdfTEFCRUxfV0lE
VEhfQkVGT1JFX0NMSVAgICAgICAgIDEyMC4wZgorI2RlZmluZSBNQVhfRFJBR19MQUJFTF9XSURU
SCAgICAgICAgICAgICAgICAgICAgMzIwLjBmCiAKLSNkZWZpbmUgRFJBR19MSU5LX0xBQkVMX0ZP
TlRfU0laRSAgIDExLjAKLSNkZWZpbmUgRFJBR19MSU5LX1VSTF9GT05UX1NJWkUgICAxMC4wCisj
ZGVmaW5lIERSQUdfTElOS19MQUJFTF9GT05UX1NJWkUgICAxMS4wZgorI2RlZmluZSBEUkFHX0xJ
TktfVVJMX0ZPTlRfU0laRSAgIDEwLjBmCiAKIC8vIEFueSBub24temVybyB2YWx1ZSB3aWxsIGRv
LCBidXQgdXNpbmcgc29tZXRoaW5nIHJlY29nbml6YWJsZSBtaWdodCBoZWxwIHVzIGRlYnVnIHNv
bWUgZGF5LgogI2RlZmluZSBUUkFDS0lOR19SRUNUX1RBRyAweEJBREZBQ0UKQEAgLTEyNDcsNDgg
KzEyNDcsNDggQEAgc3RhdGljIFdlYkhUTUxWaWV3ICpsYXN0SGl0VmlldyA9IG5pbDsKICAgICB9
CiAgICAgCiAgICAgTlNTaXplIGltYWdlU2l6ZSwgdXJsU3RyaW5nU2l6ZTsKLSAgICBpbWFnZVNp
emUud2lkdGggPSBsYWJlbFNpemUud2lkdGggKyBEUkFHX0xBQkVMX0JPUkRFUl9YICogMjsKLSAg
ICBpbWFnZVNpemUuaGVpZ2h0ID0gbGFiZWxTaXplLmhlaWdodCArIERSQUdfTEFCRUxfQk9SREVS
X1kgKiAyOworICAgIGltYWdlU2l6ZS53aWR0aCA9IGxhYmVsU2l6ZS53aWR0aCArIERSQUdfTEFC
RUxfQk9SREVSX1ggKiAyLjBmOworICAgIGltYWdlU2l6ZS5oZWlnaHQgPSBsYWJlbFNpemUuaGVp
Z2h0ICsgRFJBR19MQUJFTF9CT1JERVJfWSAqIDIuMGY7CiAgICAgaWYgKGRyYXdVUkxTdHJpbmcp
IHsKICAgICAgICAgdXJsU3RyaW5nU2l6ZS53aWR0aCA9IFt1cmxTdHJpbmcgX3dlYl93aWR0aFdp
dGhGb250OiB1cmxGb250XTsKICAgICAgICAgdXJsU3RyaW5nU2l6ZS5oZWlnaHQgPSBbdXJsRm9u
dCBhc2NlbmRlcl0gLSBbdXJsRm9udCBkZXNjZW5kZXJdOwogICAgICAgICBpbWFnZVNpemUuaGVp
Z2h0ICs9IHVybFN0cmluZ1NpemUuaGVpZ2h0OwogICAgICAgICBpZiAodXJsU3RyaW5nU2l6ZS53
aWR0aCA+IE1BWF9EUkFHX0xBQkVMX1dJRFRIKSB7Ci0gICAgICAgICAgICBpbWFnZVNpemUud2lk
dGggPSBNQVgoTUFYX0RSQUdfTEFCRUxfV0lEVEggKyBEUkFHX0xBQkVMX0JPUkRFUl9YICogMiwg
TUlOX0RSQUdfTEFCRUxfV0lEVEhfQkVGT1JFX0NMSVApOworICAgICAgICAgICAgaW1hZ2VTaXpl
LndpZHRoID0gTUFYKE1BWF9EUkFHX0xBQkVMX1dJRFRIICsgRFJBR19MQUJFTF9CT1JERVJfWCAq
IDIuMGYsIE1JTl9EUkFHX0xBQkVMX1dJRFRIX0JFRk9SRV9DTElQKTsKICAgICAgICAgICAgIGNs
aXBVUkxTdHJpbmcgPSBZRVM7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpbWFnZVNp
emUud2lkdGggPSBNQVgobGFiZWxTaXplLndpZHRoICsgRFJBR19MQUJFTF9CT1JERVJfWCAqIDIs
IHVybFN0cmluZ1NpemUud2lkdGggKyBEUkFHX0xBQkVMX0JPUkRFUl9YICogMik7CisgICAgICAg
ICAgICBpbWFnZVNpemUud2lkdGggPSBNQVgobGFiZWxTaXplLndpZHRoICsgRFJBR19MQUJFTF9C
T1JERVJfWCAqIDIuMGYsIHVybFN0cmluZ1NpemUud2lkdGggKyBEUkFHX0xBQkVMX0JPUkRFUl9Y
ICogMi4wZik7CiAgICAgICAgIH0KICAgICB9CiAgICAgTlNJbWFnZSAqZHJhZ0ltYWdlID0gW1tb
TlNJbWFnZSBhbGxvY10gaW5pdFdpdGhTaXplOiBpbWFnZVNpemVdIGF1dG9yZWxlYXNlXTsKICAg
ICBbZHJhZ0ltYWdlIGxvY2tGb2N1c107CiAgICAgCi0gICAgW1tOU0NvbG9yIGNvbG9yV2l0aENh
bGlicmF0ZWRSZWQ6IDAuNyBncmVlbjogMC43IGJsdWU6IDAuNyBhbHBoYTogMC44XSBzZXRdOwor
ICAgIFtbTlNDb2xvciBjb2xvcldpdGhDYWxpYnJhdGVkUmVkOiAwLjdmIGdyZWVuOiAwLjdmIGJs
dWU6IDAuN2YgYWxwaGE6IDAuOGZdIHNldF07CiAgICAgCiAgICAgLy8gRHJhZyBhIHJlY3Rhbmds
ZSB3aXRoIHJvdW5kZWQgY29ybmVycy8KICAgICBOU0JlemllclBhdGggKnBhdGggPSBbTlNCZXpp
ZXJQYXRoIGJlemllclBhdGhdOwotICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoT3ZhbElu
UmVjdDogTlNNYWtlUmVjdCgwLDAsIERSQUdfTEFCRUxfUkFESVVTICogMiwgRFJBR19MQUJFTF9S
QURJVVMgKiAyKV07Ci0gICAgW3BhdGggYXBwZW5kQmV6aWVyUGF0aFdpdGhPdmFsSW5SZWN0OiBO
U01ha2VSZWN0KDAsaW1hZ2VTaXplLmhlaWdodCAtIERSQUdfTEFCRUxfUkFESVVTICogMiwgRFJB
R19MQUJFTF9SQURJVVMgKiAyLCBEUkFHX0xBQkVMX1JBRElVUyAqIDIpXTsKLSAgICBbcGF0aCBh
cHBlbmRCZXppZXJQYXRoV2l0aE92YWxJblJlY3Q6IE5TTWFrZVJlY3QoaW1hZ2VTaXplLndpZHRo
IC0gRFJBR19MQUJFTF9SQURJVVMgKiAyLCBpbWFnZVNpemUuaGVpZ2h0IC0gRFJBR19MQUJFTF9S
QURJVVMgKiAyLCBEUkFHX0xBQkVMX1JBRElVUyAqIDIsIERSQUdfTEFCRUxfUkFESVVTICogMild
OwotICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoT3ZhbEluUmVjdDogTlNNYWtlUmVjdChp
bWFnZVNpemUud2lkdGggLSBEUkFHX0xBQkVMX1JBRElVUyAqIDIsMCwgRFJBR19MQUJFTF9SQURJ
VVMgKiAyLCBEUkFHX0xBQkVMX1JBRElVUyAqIDIpXTsKLSAgICAKLSAgICBbcGF0aCBhcHBlbmRC
ZXppZXJQYXRoV2l0aFJlY3Q6IE5TTWFrZVJlY3QoRFJBR19MQUJFTF9SQURJVVMsIDAsIGltYWdl
U2l6ZS53aWR0aCAtIERSQUdfTEFCRUxfUkFESVVTICogMiwgaW1hZ2VTaXplLmhlaWdodCldOwot
ICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoUmVjdDogTlNNYWtlUmVjdCgwLCBEUkFHX0xB
QkVMX1JBRElVUywgRFJBR19MQUJFTF9SQURJVVMgKyAxMCwgaW1hZ2VTaXplLmhlaWdodCAtIDIg
KiBEUkFHX0xBQkVMX1JBRElVUyldOwotICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoUmVj
dDogTlNNYWtlUmVjdChpbWFnZVNpemUud2lkdGggLSBEUkFHX0xBQkVMX1JBRElVUyAtIDIwLERS
QUdfTEFCRUxfUkFESVVTLCBEUkFHX0xBQkVMX1JBRElVUyArIDIwLCBpbWFnZVNpemUuaGVpZ2h0
IC0gMiAqIERSQUdfTEFCRUxfUkFESVVTKV07CisgICAgW3BhdGggYXBwZW5kQmV6aWVyUGF0aFdp
dGhPdmFsSW5SZWN0OiBOU01ha2VSZWN0KDAuMGYsIDAuMGYsIERSQUdfTEFCRUxfUkFESVVTICog
Mi4wZiwgRFJBR19MQUJFTF9SQURJVVMgKiAyLjBmKV07CisgICAgW3BhdGggYXBwZW5kQmV6aWVy
UGF0aFdpdGhPdmFsSW5SZWN0OiBOU01ha2VSZWN0KDAsIGltYWdlU2l6ZS5oZWlnaHQgLSBEUkFH
X0xBQkVMX1JBRElVUyAqIDIuMGYsIERSQUdfTEFCRUxfUkFESVVTICogMi4wZiwgRFJBR19MQUJF
TF9SQURJVVMgKiAyLjBmKV07CisgICAgW3BhdGggYXBwZW5kQmV6aWVyUGF0aFdpdGhPdmFsSW5S
ZWN0OiBOU01ha2VSZWN0KGltYWdlU2l6ZS53aWR0aCAtIERSQUdfTEFCRUxfUkFESVVTICogMi4w
ZiwgaW1hZ2VTaXplLmhlaWdodCAtIERSQUdfTEFCRUxfUkFESVVTICogMi4wZiwgRFJBR19MQUJF
TF9SQURJVVMgKiAyLjBmLCBEUkFHX0xBQkVMX1JBRElVUyAqIDIuMGYpXTsKKyAgICBbcGF0aCBh
cHBlbmRCZXppZXJQYXRoV2l0aE92YWxJblJlY3Q6IE5TTWFrZVJlY3QoaW1hZ2VTaXplLndpZHRo
IC0gRFJBR19MQUJFTF9SQURJVVMgKiAyLjBmLCAwLjBmLCBEUkFHX0xBQkVMX1JBRElVUyAqIDIu
MGYsIERSQUdfTEFCRUxfUkFESVVTICogMi4wZildOworICAgIAorICAgIFtwYXRoIGFwcGVuZEJl
emllclBhdGhXaXRoUmVjdDogTlNNYWtlUmVjdChEUkFHX0xBQkVMX1JBRElVUywgMC4wZiwgaW1h
Z2VTaXplLndpZHRoIC0gRFJBR19MQUJFTF9SQURJVVMgKiAyLjBmLCBpbWFnZVNpemUuaGVpZ2h0
KV07CisgICAgW3BhdGggYXBwZW5kQmV6aWVyUGF0aFdpdGhSZWN0OiBOU01ha2VSZWN0KDAuMGYs
IERSQUdfTEFCRUxfUkFESVVTLCBEUkFHX0xBQkVMX1JBRElVUyArIDEwLjBmLCBpbWFnZVNpemUu
aGVpZ2h0IC0gMi4wZiAqIERSQUdfTEFCRUxfUkFESVVTKV07CisgICAgW3BhdGggYXBwZW5kQmV6
aWVyUGF0aFdpdGhSZWN0OiBOU01ha2VSZWN0KGltYWdlU2l6ZS53aWR0aCAtIERSQUdfTEFCRUxf
UkFESVVTIC0gMjAuMGYsIERSQUdfTEFCRUxfUkFESVVTLCBEUkFHX0xBQkVMX1JBRElVUyArIDIw
LjBmLCBpbWFnZVNpemUuaGVpZ2h0IC0gMi4wZiAqIERSQUdfTEFCRUxfUkFESVVTKV07CiAgICAg
W3BhdGggZmlsbF07CiAgICAgICAgIAotICAgIE5TQ29sb3IgKnRvcENvbG9yID0gW05TQ29sb3Ig
Y29sb3JXaXRoQ2FsaWJyYXRlZFdoaXRlOjAuMCBhbHBoYTowLjc1XTsKLSAgICBOU0NvbG9yICpi
b3R0b21Db2xvciA9IFtOU0NvbG9yIGNvbG9yV2l0aENhbGlicmF0ZWRXaGl0ZToxLjAgYWxwaGE6
MC41XTsKKyAgICBOU0NvbG9yICp0b3BDb2xvciA9IFtOU0NvbG9yIGNvbG9yV2l0aENhbGlicmF0
ZWRXaGl0ZTowLjBmIGFscGhhOjAuNzVmXTsKKyAgICBOU0NvbG9yICpib3R0b21Db2xvciA9IFtO
U0NvbG9yIGNvbG9yV2l0aENhbGlicmF0ZWRXaGl0ZToxLjBmIGFscGhhOjAuNWZdOwogICAgIGlm
IChkcmF3VVJMU3RyaW5nKSB7CiAgICAgICAgIGlmIChjbGlwVVJMU3RyaW5nKQotICAgICAgICAg
ICAgdXJsU3RyaW5nID0gW1dlYlN0cmluZ1RydW5jYXRvciBjZW50ZXJUcnVuY2F0ZVN0cmluZzog
dXJsU3RyaW5nIHRvV2lkdGg6aW1hZ2VTaXplLndpZHRoIC0gKERSQUdfTEFCRUxfQk9SREVSX1gg
KiAyKSB3aXRoRm9udDp1cmxGb250XTsKKyAgICAgICAgICAgIHVybFN0cmluZyA9IFtXZWJTdHJp
bmdUcnVuY2F0b3IgY2VudGVyVHJ1bmNhdGVTdHJpbmc6IHVybFN0cmluZyB0b1dpZHRoOmltYWdl
U2l6ZS53aWR0aCAtIChEUkFHX0xBQkVMX0JPUkRFUl9YICogMi4wZikgd2l0aEZvbnQ6dXJsRm9u
dF07CiAKICAgICAgICAgW3VybFN0cmluZyBfd2ViX2RyYXdEb3VibGVkQXRQb2ludDpOU01ha2VQ
b2ludChEUkFHX0xBQkVMX0JPUkRFUl9YLCBEUkFHX0xBQkVMX0JPUkRFUl9ZIC0gW3VybEZvbnQg
ZGVzY2VuZGVyXSkgCiAgICAgICAgICAgICAgd2l0aFRvcENvbG9yOnRvcENvbG9yIGJvdHRvbUNv
bG9yOmJvdHRvbUNvbG9yIGZvbnQ6dXJsRm9udF07CiAgICAgfQogCiAgICAgaWYgKGNsaXBMYWJl
bFN0cmluZykKLSAgICAgICAgbGFiZWwgPSBbV2ViU3RyaW5nVHJ1bmNhdG9yIHJpZ2h0VHJ1bmNh
dGVTdHJpbmc6IGxhYmVsIHRvV2lkdGg6aW1hZ2VTaXplLndpZHRoIC0gKERSQUdfTEFCRUxfQk9S
REVSX1ggKiAyKSB3aXRoRm9udDpsYWJlbEZvbnRdOworICAgICAgICBsYWJlbCA9IFtXZWJTdHJp
bmdUcnVuY2F0b3IgcmlnaHRUcnVuY2F0ZVN0cmluZzogbGFiZWwgdG9XaWR0aDppbWFnZVNpemUu
d2lkdGggLSAoRFJBR19MQUJFTF9CT1JERVJfWCAqIDIuMGYpIHdpdGhGb250OmxhYmVsRm9udF07
CiAgICAgW2xhYmVsIF93ZWJfZHJhd0RvdWJsZWRBdFBvaW50Ok5TTWFrZVBvaW50IChEUkFHX0xB
QkVMX0JPUkRFUl9YLCBpbWFnZVNpemUuaGVpZ2h0IC0gRFJBR19MQUJFTF9CT1JERVJfWV9PRkZT
RVQgLSBbbGFiZWxGb250IHBvaW50U2l6ZV0pCiAgICAgICAgICAgICAgd2l0aFRvcENvbG9yOnRv
cENvbG9yIGJvdHRvbUNvbG9yOmJvdHRvbUNvbG9yIGZvbnQ6bGFiZWxGb250XTsKICAgICAKQEAg
LTE0OTcsMTMgKzE0OTcsMTMgQEAgc3RhdGljIFdlYkhUTUxWaWV3ICpsYXN0SGl0VmlldyA9IG5p
bDsKIAogLSAodm9pZClfd2ViX3NldFByaW50aW5nTW9kZVJlY3Vyc2l2ZQogewotICAgIFtzZWxm
IF9zZXRQcmludGluZzpZRVMgbWluaW11bVBhZ2VXaWR0aDowLjAgbWF4aW11bVBhZ2VXaWR0aDow
LjAgYWRqdXN0Vmlld1NpemU6Tk9dOworICAgIFtzZWxmIF9zZXRQcmludGluZzpZRVMgbWluaW11
bVBhZ2VXaWR0aDowLjBmIG1heGltdW1QYWdlV2lkdGg6MC4wZiBhZGp1c3RWaWV3U2l6ZTpOT107
CiAgICAgW3N1cGVyIF93ZWJfc2V0UHJpbnRpbmdNb2RlUmVjdXJzaXZlXTsKIH0KIAogLSAodm9p
ZClfd2ViX2NsZWFyUHJpbnRpbmdNb2RlUmVjdXJzaXZlCiB7Ci0gICAgW3NlbGYgX3NldFByaW50
aW5nOk5PIG1pbmltdW1QYWdlV2lkdGg6MC4wIG1heGltdW1QYWdlV2lkdGg6MC4wIGFkanVzdFZp
ZXdTaXplOk5PXTsKKyAgICBbc2VsZiBfc2V0UHJpbnRpbmc6Tk8gbWluaW11bVBhZ2VXaWR0aDow
LjBmIG1heGltdW1QYWdlV2lkdGg6MC4wZiBhZGp1c3RWaWV3U2l6ZTpOT107CiAgICAgW3N1cGVy
IF93ZWJfY2xlYXJQcmludGluZ01vZGVSZWN1cnNpdmVdOwogfQogCkBAIC0yNTE5LDcgKzI1MTks
NyBAQCBzdGF0aWMgV2ViSFRNTFZpZXcgKmxhc3RIaXRWaWV3ID0gbmlsOwogCiAtICh2b2lkKWxh
eW91dAogewotICAgIFtzZWxmIGxheW91dFRvTWluaW11bVBhZ2VXaWR0aDowLjAgbWF4aW11bVBh
Z2VXaWR0aDowLjAgYWRqdXN0aW5nVmlld1NpemU6Tk9dOworICAgIFtzZWxmIGxheW91dFRvTWlu
aW11bVBhZ2VXaWR0aDowLjBmIG1heGltdW1QYWdlV2lkdGg6MC4wZiBhZGp1c3RpbmdWaWV3U2l6
ZTpOT107CiB9CiAKIC0gKE5TTWVudSAqKW1lbnVGb3JFdmVudDooTlNFdmVudCAqKWV2ZW50CkBA
IC0zMDU2LDcgKzMwNTYsNyBAQCBkb25lOgogICAgICAgICBXZWJGcmFtZSAqc3ViZnJhbWUgPSBb
c3ViZnJhbWVzIG9iamVjdEF0SW5kZXg6aV07CiAgICAgICAgIFdlYkZyYW1lVmlldyAqZnJhbWVW
aWV3ID0gW3N1YmZyYW1lIGZyYW1lVmlld107CiAgICAgICAgIGlmIChbW3N1YmZyYW1lIGRhdGFT
b3VyY2VdIF9pc0RvY3VtZW50SFRNTF0pIHsKLSAgICAgICAgICAgIFsoV2ViSFRNTFZpZXcgKilb
ZnJhbWVWaWV3IGRvY3VtZW50Vmlld10gX3NldFByaW50aW5nOnByaW50aW5nIG1pbmltdW1QYWdl
V2lkdGg6MC4wIG1heGltdW1QYWdlV2lkdGg6MC4wIGFkanVzdFZpZXdTaXplOmFkanVzdFZpZXdT
aXplXTsKKyAgICAgICAgICAgIFsoV2ViSFRNTFZpZXcgKilbZnJhbWVWaWV3IGRvY3VtZW50Vmll
d10gX3NldFByaW50aW5nOnByaW50aW5nIG1pbmltdW1QYWdlV2lkdGg6MC4wZiBtYXhpbXVtUGFn
ZVdpZHRoOjAuMGYgYWRqdXN0Vmlld1NpemU6YWRqdXN0Vmlld1NpemVdOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC0zMDg3LDEyICszMDg3LDEyIEBAIGRvbmU6CiAgICAgLy8gSWYgdGhlIFdlYkhU
TUxWaWV3IGl0c2VsZiBpcyB3aGF0IHdlJ3JlIHByaW50aW5nLCB0aGVuIHdlIHdpbGwgbmV2ZXIg
aGF2ZSB0byBkbyB0aGlzLgogICAgIEJPT0wgd2FzSW5QcmludGluZ01vZGUgPSBfcHJpdmF0ZS0+
cHJpbnRpbmc7CiAgICAgaWYgKCF3YXNJblByaW50aW5nTW9kZSkKLSAgICAgICAgW3NlbGYgX3Nl
dFByaW50aW5nOllFUyBtaW5pbXVtUGFnZVdpZHRoOjAuMCBtYXhpbXVtUGFnZVdpZHRoOjAuMCBh
ZGp1c3RWaWV3U2l6ZTpOT107CisgICAgICAgIFtzZWxmIF9zZXRQcmludGluZzpZRVMgbWluaW11
bVBhZ2VXaWR0aDowLjBmIG1heGltdW1QYWdlV2lkdGg6MC4wZiBhZGp1c3RWaWV3U2l6ZTpOT107
CiAKICAgICBbW3NlbGYgX2JyaWRnZV0gYWRqdXN0UGFnZUhlaWdodE5ldzpuZXdCb3R0b20gdG9w
Om9sZFRvcCBib3R0b206b2xkQm90dG9tIGxpbWl0OmJvdHRvbUxpbWl0XTsKICAgICAKICAgICBp
ZiAoIXdhc0luUHJpbnRpbmdNb2RlKQotICAgICAgICBbc2VsZiBfc2V0UHJpbnRpbmc6Tk8gbWlu
aW11bVBhZ2VXaWR0aDowLjAgbWF4aW11bVBhZ2VXaWR0aDowLjAgYWRqdXN0Vmlld1NpemU6Tk9d
OworICAgICAgICBbc2VsZiBfc2V0UHJpbnRpbmc6Tk8gbWluaW11bVBhZ2VXaWR0aDowLjBmIG1h
eGltdW1QYWdlV2lkdGg6MC4wZiBhZGp1c3RWaWV3U2l6ZTpOT107CiB9CiAKIC0gKGZsb2F0KV9h
dmFpbGFibGVQYXBlcldpZHRoRm9yUHJpbnRPcGVyYXRpb246KE5TUHJpbnRPcGVyYXRpb24gKilw
cmludE9wZXJhdGlvbgpAQCAtMzEwNiwxMSArMzEwNiwxMSBAQCBkb25lOgogICAgIGZsb2F0IHZp
ZXdXaWR0aCA9IE5TV2lkdGgoW3NlbGYgYm91bmRzXSk7CiAgICAgaWYgKHZpZXdXaWR0aCA8IDEp
IHsKICAgICAgICAgTE9HX0VSUk9SKCIlQCBoYXMgbm8gd2lkdGggd2hlbiBwcmludGluZyIsIHNl
bGYpOwotICAgICAgICByZXR1cm4gMS4wOworICAgICAgICByZXR1cm4gMS4wZjsKICAgICB9CiAK
ICAgICBmbG9hdCB1c2VyU2NhbGVGYWN0b3IgPSBbcHJpbnRPcGVyYXRpb24gX3dlYl9wYWdlU2V0
dXBTY2FsZUZhY3Rvcl07Ci0gICAgZmxvYXQgbWF4U2hyaW5rVG9GaXRTY2FsZUZhY3RvciA9IDEv
UHJpbnRpbmdNYXhpbXVtU2hyaW5rRmFjdG9yOworICAgIGZsb2F0IG1heFNocmlua1RvRml0U2Nh
bGVGYWN0b3IgPSAxLjBmIC8gUHJpbnRpbmdNYXhpbXVtU2hyaW5rRmFjdG9yOwogICAgIGZsb2F0
IHNocmlua1RvRml0U2NhbGVGYWN0b3IgPSBbc2VsZiBfYXZhaWxhYmxlUGFwZXJXaWR0aEZvclBy
aW50T3BlcmF0aW9uOnByaW50T3BlcmF0aW9uXS92aWV3V2lkdGg7CiAgICAgcmV0dXJuIHVzZXJT
Y2FsZUZhY3RvciAqIE1BWChtYXhTaHJpbmtUb0ZpdFNjYWxlRmFjdG9yLCBzaHJpbmtUb0ZpdFNj
YWxlRmFjdG9yKTsKIH0KQEAgLTMxMjYsMTMgKzMxMjYsMTMgQEAgZG9uZToKIC8vIFRoaXMgaXMg
dXNlZCBmb3IgQ2FyYm9uIHByaW50aW5nLiBBdCBzb21lIHBvaW50IHdlIG1pZ2h0IHdhbnQgdG8g
bWFrZSB0aGlzIHB1YmxpYyBBUEkuCiAtICh2b2lkKXNldFBhZ2VXaWR0aEZvclByaW50aW5nOihm
bG9hdClwYWdlV2lkdGgKIHsKLSAgICBbc2VsZiBfc2V0UHJpbnRpbmc6Tk8gbWluaW11bVBhZ2VX
aWR0aDowLiBtYXhpbXVtUGFnZVdpZHRoOjAuIGFkanVzdFZpZXdTaXplOk5PXTsKKyAgICBbc2Vs
ZiBfc2V0UHJpbnRpbmc6Tk8gbWluaW11bVBhZ2VXaWR0aDowLjBmIG1heGltdW1QYWdlV2lkdGg6
MC4wZiBhZGp1c3RWaWV3U2l6ZTpOT107CiAgICAgW3NlbGYgX3NldFByaW50aW5nOllFUyBtaW5p
bXVtUGFnZVdpZHRoOnBhZ2VXaWR0aCBtYXhpbXVtUGFnZVdpZHRoOnBhZ2VXaWR0aCBhZGp1c3RW
aWV3U2l6ZTpZRVNdOwogfQogCiAtICh2b2lkKV9lbmRQcmludE1vZGUKIHsKLSAgICBbc2VsZiBf
c2V0UHJpbnRpbmc6Tk8gbWluaW11bVBhZ2VXaWR0aDowLjAgbWF4aW11bVBhZ2VXaWR0aDowLjAg
YWRqdXN0Vmlld1NpemU6WUVTXTsKKyAgICBbc2VsZiBfc2V0UHJpbnRpbmc6Tk8gbWluaW11bVBh
Z2VXaWR0aDowLjBmIG1heGltdW1QYWdlV2lkdGg6MC4wZiBhZGp1c3RWaWV3U2l6ZTpZRVNdOwog
ICAgIFtbc2VsZiB3aW5kb3ddIHNldEF1dG9kaXNwbGF5OllFU107CiB9CiAKQEAgLTMxNzIsMTIg
KzMxNzIsMTIgQEAgZG9uZToKICAgICAKICAgICAvLyBJZiB3ZSBhcmUgYSBmcmFtZXNldCBqdXN0
IHByaW50IHdpdGggdGhlIGxheW91dCB3ZSBoYXZlIG9uc2NyZWVuLCBvdGhlcndpc2UgcmVsYXlv
dXQKICAgICAvLyBhY2NvcmRpbmcgdG8gdGhlIHBhcGVyIHNpemUKLSAgICBmbG9hdCBtaW5MYXlv
dXRXaWR0aCA9IDAuMDsKLSAgICBmbG9hdCBtYXhMYXlvdXRXaWR0aCA9IDAuMDsKKyAgICBmbG9h
dCBtaW5MYXlvdXRXaWR0aCA9IDAuMGY7CisgICAgZmxvYXQgbWF4TGF5b3V0V2lkdGggPSAwLjBm
OwogICAgIGlmICghW1tzZWxmIF9icmlkZ2VdIGlzRnJhbWVTZXRdKSB7CiAgICAgICAgIGZsb2F0
IHBhcGVyV2lkdGggPSBbc2VsZiBfYXZhaWxhYmxlUGFwZXJXaWR0aEZvclByaW50T3BlcmF0aW9u
OltOU1ByaW50T3BlcmF0aW9uIGN1cnJlbnRPcGVyYXRpb25dXTsKLSAgICAgICAgbWluTGF5b3V0
V2lkdGggPSBwYXBlcldpZHRoKlByaW50aW5nTWluaW11bVNocmlua0ZhY3RvcjsKLSAgICAgICAg
bWF4TGF5b3V0V2lkdGggPSBwYXBlcldpZHRoKlByaW50aW5nTWF4aW11bVNocmlua0ZhY3RvcjsK
KyAgICAgICAgbWluTGF5b3V0V2lkdGggPSBwYXBlcldpZHRoICogUHJpbnRpbmdNaW5pbXVtU2hy
aW5rRmFjdG9yOworICAgICAgICBtYXhMYXlvdXRXaWR0aCA9IHBhcGVyV2lkdGggKiBQcmludGlu
Z01heGltdW1TaHJpbmtGYWN0b3I7CiAgICAgfQogICAgIFtzZWxmIF9zZXRQcmludGluZzpZRVMg
bWluaW11bVBhZ2VXaWR0aDptaW5MYXlvdXRXaWR0aCBtYXhpbXVtUGFnZVdpZHRoOm1heExheW91
dFdpZHRoIGFkanVzdFZpZXdTaXplOllFU107IC8vIHdpbGwgcmVsYXlvdXQKICAgICBOU1ByaW50
T3BlcmF0aW9uICpwcmludE9wZXJhdGlvbiA9IFtOU1ByaW50T3BlcmF0aW9uIGN1cnJlbnRPcGVy
YXRpb25dOwpAQCAtMzkyNiwxMiArMzkyNiwxMiBAQCBkb25lOgogCiAtIChOU0ZvbnQgKilfb3Jp
Z2luYWxGb250QQogewotICAgIHJldHVybiBbW05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFn
ZXJdIGZvbnRXaXRoRmFtaWx5OkAiSGVsdmV0aWNhIiB0cmFpdHM6MCB3ZWlnaHQ6U1RBTkRBUkRf
V0VJR0hUIHNpemU6MTBdOworICAgIHJldHVybiBbW05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1h
bmFnZXJdIGZvbnRXaXRoRmFtaWx5OkAiSGVsdmV0aWNhIiB0cmFpdHM6MCB3ZWlnaHQ6U1RBTkRB
UkRfV0VJR0hUIHNpemU6MTAuMGZdOwogfQogCiAtIChOU0ZvbnQgKilfb3JpZ2luYWxGb250Qgog
ewotICAgIHJldHVybiBbW05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFnZXJdIGZvbnRXaXRo
RmFtaWx5OkAiVGltZXMiIHRyYWl0czooTlNCb2xkRm9udE1hc2sgfCBOU0l0YWxpY0ZvbnRNYXNr
KSB3ZWlnaHQ6U1RBTkRBUkRfQk9MRF9XRUlHSFQgc2l6ZToxMl07CisgICAgcmV0dXJuIFtbTlNG
b250TWFuYWdlciBzaGFyZWRGb250TWFuYWdlcl0gZm9udFdpdGhGYW1pbHk6QCJUaW1lcyIgdHJh
aXRzOihOU0JvbGRGb250TWFzayB8IE5TSXRhbGljRm9udE1hc2spIHdlaWdodDpTVEFOREFSRF9C
T0xEX1dFSUdIVCBzaXplOjEyLjBmXTsKIH0KIAogLSAodm9pZClfYWRkVG9TdHlsZTooRE9NQ1NT
U3R5bGVEZWNsYXJhdGlvbiAqKXN0eWxlIGZvbnRBOihOU0ZvbnQgKilhIGZvbnRCOihOU0ZvbnQg
KiliCkBAIC01MzI5LDcgKzUzMjksNyBAQCBzdGF0aWMgRE9NUmFuZ2UgKnVuaW9uRE9NUmFuZ2Vz
KERPTVJhbmdlCiAgICAgW190YWJsZVZpZXcgcmVsZWFzZV07CiAgICAgCiAgICAgX3BvcHVwV2lu
ZG93ID0gW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpzY3JvbGxGcmFtZSBz
dHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVm
ZmVyZWQgZGVmZXI6Tk9dOwotICAgIFtfcG9wdXBXaW5kb3cgc2V0QWxwaGFWYWx1ZTowLjg4XTsK
KyAgICBbX3BvcHVwV2luZG93IHNldEFscGhhVmFsdWU6MC44OGZdOwogICAgIFtfcG9wdXBXaW5k
b3cgc2V0Q29udGVudFZpZXc6c2Nyb2xsVmlld107CiAgICAgW3Njcm9sbFZpZXcgcmVsZWFzZV07
CiAgICAgW19wb3B1cFdpbmRvdyBzZXRIYXNTaGFkb3c6WUVTXTsKQEAgLTUzNTEsMTIgKzUzNTEs
MTIgQEAgc3RhdGljIERPTVJhbmdlICp1bmlvbkRPTVJhbmdlcyhET01SYW5nZQogICAgIHdpbmRv
d0ZyYW1lLm9yaWdpbiA9IFtbX3ZpZXcgd2luZG93XSBjb252ZXJ0QmFzZVRvU2NyZWVuOltfdmll
dyBjb252ZXJ0UG9pbnQ6d29yZFN0YXJ0IHRvVmlldzpuaWxdXTsKICAgICB3aW5kb3dGcmFtZS5z
aXplLmhlaWdodCA9IG51bWJlclRvU2hvdyAqIFtfdGFibGVWaWV3IHJvd0hlaWdodF0gKyAobnVt
YmVyVG9TaG93ICsgMSkgKiBbX3RhYmxlVmlldyBpbnRlcmNlbGxTcGFjaW5nXS5oZWlnaHQ7CiAg
ICAgd2luZG93RnJhbWUub3JpZ2luLnkgLT0gd2luZG93RnJhbWUuc2l6ZS5oZWlnaHQ7Ci0gICAg
TlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9i
amVjdHNBbmRLZXlzOltOU0ZvbnQgc3lzdGVtRm9udE9mU2l6ZToxMi4wXSwgTlNGb250QXR0cmli
dXRlTmFtZSwgbmlsXTsKLSAgICBmbG9hdCBtYXhXaWR0aCA9IDAuMDsKKyAgICBOU0RpY3Rpb25h
cnkgKmF0dHJpYnV0ZXMgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtl
eXM6W05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOjEyLjBmXSwgTlNGb250QXR0cmlidXRlTmFtZSwg
bmlsXTsKKyAgICBmbG9hdCBtYXhXaWR0aCA9IDAuMGY7CiAgICAgaW50IG1heEluZGV4ID0gLTE7
CiAgICAgaW50IGk7CiAgICAgZm9yIChpID0gMDsgaSA8IG51bWJlclRvU2hvdzsgaSsrKSB7Ci0g
ICAgICAgIGZsb2F0IHdpZHRoID0gY2VpbChbW19jb21wbGV0aW9ucyBvYmplY3RBdEluZGV4Omld
IHNpemVXaXRoQXR0cmlidXRlczphdHRyaWJ1dGVzXS53aWR0aCk7CisgICAgICAgIGZsb2F0IHdp
ZHRoID0gY2VpbGYoW1tfY29tcGxldGlvbnMgb2JqZWN0QXRJbmRleDppXSBzaXplV2l0aEF0dHJp
YnV0ZXM6YXR0cmlidXRlc10ud2lkdGgpOwogICAgICAgICBpZiAod2lkdGggPiBtYXhXaWR0aCkg
ewogICAgICAgICAgICAgbWF4V2lkdGggPSB3aWR0aDsKICAgICAgICAgICAgIG1heEluZGV4ID0g
aTsKQEAgLTUzNjQsMTEgKzUzNjQsMTEgQEAgc3RhdGljIERPTVJhbmdlICp1bmlvbkRPTVJhbmdl
cyhET01SYW5nZQogICAgIH0KICAgICB3aW5kb3dGcmFtZS5zaXplLndpZHRoID0gMTAwOwogICAg
IGlmIChtYXhJbmRleCA+PSAwKSB7Ci0gICAgICAgIG1heFdpZHRoID0gY2VpbChbTlNTY3JvbGxW
aWV3IGZyYW1lU2l6ZUZvckNvbnRlbnRTaXplOk5TTWFrZVNpemUobWF4V2lkdGgsIDEwMCkgaGFz
SG9yaXpvbnRhbFNjcm9sbGVyOk5PIGhhc1ZlcnRpY2FsU2Nyb2xsZXI6WUVTIGJvcmRlclR5cGU6
TlNOb0JvcmRlcl0ud2lkdGgpOwotICAgICAgICBtYXhXaWR0aCA9IGNlaWwoW05TV2luZG93IGZy
YW1lUmVjdEZvckNvbnRlbnRSZWN0Ok5TTWFrZVJlY3QoMCwgMCwgbWF4V2lkdGgsIDEwMCkgc3R5
bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2tdLnNpemUud2lkdGgpOwotICAgICAgICBtYXhX
aWR0aCArPSA1LjA7CisgICAgICAgIG1heFdpZHRoID0gY2VpbGYoW05TU2Nyb2xsVmlldyBmcmFt
ZVNpemVGb3JDb250ZW50U2l6ZTpOU01ha2VTaXplKG1heFdpZHRoLCAxMDAuMGYpIGhhc0hvcml6
b250YWxTY3JvbGxlcjpOTyBoYXNWZXJ0aWNhbFNjcm9sbGVyOllFUyBib3JkZXJUeXBlOk5TTm9C
b3JkZXJdLndpZHRoKTsKKyAgICAgICAgbWF4V2lkdGggPSBjZWlsZihbTlNXaW5kb3cgZnJhbWVS
ZWN0Rm9yQ29udGVudFJlY3Q6TlNNYWtlUmVjdCgwLjBmLCAwLjBmLCBtYXhXaWR0aCwgMTAwLjBm
KSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFza10uc2l6ZS53aWR0aCk7CisgICAgICAg
IG1heFdpZHRoICs9IDUuMGY7CiAgICAgICAgIHdpbmRvd0ZyYW1lLnNpemUud2lkdGggPSBNQVgo
bWF4V2lkdGgsIHdpbmRvd0ZyYW1lLnNpemUud2lkdGgpOwotICAgICAgICBtYXhXaWR0aCA9IE1J
Tig0MDAuMCwgd2luZG93RnJhbWUuc2l6ZS53aWR0aCk7CisgICAgICAgIG1heFdpZHRoID0gTUlO
KDQwMC4wZiwgd2luZG93RnJhbWUuc2l6ZS53aWR0aCk7CiAgICAgfQogICAgIFtfcG9wdXBXaW5k
b3cgc2V0RnJhbWU6d2luZG93RnJhbWUgZGlzcGxheTpOT107CiAgICAgCkluZGV4OiBXZWJLaXQv
V2ViVmlldy9XZWJQREZWaWV3Lm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYlZpZXcvV2ViUERG
Vmlldy5tCShyZXZpc2lvbiAxNTc3MSkKKysrIFdlYktpdC9XZWJWaWV3L1dlYlBERlZpZXcubQko
d29ya2luZyBjb3B5KQpAQCAtODAwLDcgKzgwMCw3IEBAIHN0YXRpYyBCT09MIFBERlNlbGVjdGlv
bnNBcmVFcXVhbChQREZTZWwKIAogLSAoSUJBY3Rpb24pX21ha2VUZXh0U3RhbmRhcmRTaXplOihp
ZClzZW5kZXIKIHsKLSAgICBbUERGU3Vidmlld1Byb3h5IHNldFNjYWxlRmFjdG9yOjEuMF07Cisg
ICAgW1BERlN1YnZpZXdQcm94eSBzZXRTY2FsZUZhY3RvcjoxLjBmXTsKIH0KIAogLSAoQk9PTClf
dHJhY2tzQ29tbW9uU2l6ZUZhY3RvcgpAQCAtODY2LDcgKzg2Niw3IEBAIHN0YXRpYyBCT09MIFBE
RlNlbGVjdGlvbnNBcmVFcXVhbChQREZTZWwKICAgICBbYXR0cmlidXRlZFN0cmluZyByZW1vdmVB
dHRyaWJ1dGU6TlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lIHJhbmdlOndob2xlU3RyaW5n
UmFuZ2VdOwogICAgIFthdHRyaWJ1dGVkU3RyaW5nIHJlbW92ZUF0dHJpYnV0ZTpOU1VuZGVybGlu
ZVN0eWxlQXR0cmlidXRlTmFtZSByYW5nZTp3aG9sZVN0cmluZ1JhbmdlXTsKICAgICBpZiAoZm9y
Y2VXaGl0ZVRleHQpCi0gICAgICAgIFthdHRyaWJ1dGVkU3RyaW5nIGFkZEF0dHJpYnV0ZTpOU0Zv
cmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUgdmFsdWU6W05TQ29sb3IgY29sb3JXaXRoRGV2aWNl
V2hpdGU6MS4wIGFscGhhOjEuMF0gcmFuZ2U6d2hvbGVTdHJpbmdSYW5nZV07CisgICAgICAgIFth
dHRyaWJ1dGVkU3RyaW5nIGFkZEF0dHJpYnV0ZTpOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5h
bWUgdmFsdWU6W05TQ29sb3IgY29sb3JXaXRoRGV2aWNlV2hpdGU6MS4wZiBhbHBoYToxLjBmXSBy
YW5nZTp3aG9sZVN0cmluZ1JhbmdlXTsKICAgICBbYXR0cmlidXRlZFN0cmluZyBlbmRFZGl0aW5n
XTsKICAgICAKICAgICBOU0ltYWdlKiBzZWxlY3Rpb25JbWFnZSA9IFtbW05TSW1hZ2UgYWxsb2Nd
IGluaXRXaXRoU2l6ZTpbc2VsZiBzZWxlY3Rpb25JbWFnZVJlY3RdLnNpemVdIGF1dG9yZWxlYXNl
XTsKQEAgLTk5Miw3ICs5OTIsNyBAQCBzdGF0aWMgQk9PTCBQREZTZWxlY3Rpb25zQXJlRXF1YWwo
UERGU2VsCiAgICAgW2ludm9jYXRpb24gaW52b2tlV2l0aFRhcmdldDpQREZTdWJ2aWV3XTsKIAog
ICAgIFdlYlByZWZlcmVuY2VzICpwcmVmcyA9IFtbdmlldy0+ZGF0YVNvdXJjZSBfd2ViVmlld10g
cHJlZmVyZW5jZXNdOwotICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gW1BERlN1YnZpZXcgYXV0b1Nj
YWxlc10gPyAwLjAgOiBbUERGU3VidmlldyBzY2FsZUZhY3Rvcl07CisgICAgZmxvYXQgc2NhbGVG
YWN0b3IgPSBbUERGU3VidmlldyBhdXRvU2NhbGVzXSA/IDAuMGYgOiBbUERGU3VidmlldyBzY2Fs
ZUZhY3Rvcl07CiAgICAgW3ByZWZzIHNldFBERlNjYWxlRmFjdG9yOnNjYWxlRmFjdG9yXTsKICAg
ICBbcHJlZnMgc2V0UERGRGlzcGxheU1vZGU6W1BERlN1YnZpZXcgZGlzcGxheU1vZGVdXTsKIH0K
SW5kZXg6IFdlYktpdC9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubQkocmV2aXNpb24gMTU3NzEpCisrKyBXZWJLaXQv
V2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tCSh3b3JraW5nIGNvcHkpCkBAIC0yOTgsNyArMjk4LDcg
QEAgTlNfRU5ESEFORExFUgogLSAoZmxvYXQpX2Zsb2F0VmFsdWVGb3JLZXk6KE5TU3RyaW5nICop
a2V5CiB7CiAgICAgaWQgbyA9IFtzZWxmIF92YWx1ZUZvcktleTprZXldOwotICAgIHJldHVybiBb
byByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGZsb2F0VmFsdWUpXSA/IFtvIGZsb2F0VmFs
dWVdIDogMC4wOworICAgIHJldHVybiBbbyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGZs
b2F0VmFsdWUpXSA/IFtvIGZsb2F0VmFsdWVdIDogMC4wZjsKIH0KIAogLSAodm9pZClfc2V0Rmxv
YXRWYWx1ZTooZmxvYXQpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQpJbmRleDogV2ViS2l0
L1dlYlZpZXcvV2ViVmlldy5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJWaWV3L1dlYlZpZXcu
bQkocmV2aXNpb24gMTU3NzEpCisrKyBXZWJLaXQvV2ViVmlldy9XZWJWaWV3Lm0JKHdvcmtpbmcg
Y29weSkKQEAgLTI2NjMsOSArMjY2Myw5IEBAIHN0YXRpYyBXZWJGcmFtZSAqaW5jcmVtZW50RnJh
bWUoV2ViRnJhbWUKICAgICBbW3NlbGYgbWFpbkZyYW1lXSByZWxvYWRdOwogfQogCi0jZGVmaW5l
IE1pbmltdW1UZXh0U2l6ZU11bHRpcGxpZXIgICAgICAgMC41Ci0jZGVmaW5lIE1heGltdW1UZXh0
U2l6ZU11bHRpcGxpZXIgICAgICAgMy4wCi0jZGVmaW5lIFRleHRTaXplTXVsdGlwbGllclJhdGlv
ICAgICAgICAgMS4yCisjZGVmaW5lIE1pbmltdW1UZXh0U2l6ZU11bHRpcGxpZXIgICAgICAgMC41
ZgorI2RlZmluZSBNYXhpbXVtVGV4dFNpemVNdWx0aXBsaWVyICAgICAgIDMuMGYKKyNkZWZpbmUg
VGV4dFNpemVNdWx0aXBsaWVyUmF0aW8gICAgICAgICAxLjJmCiAKIC0gKEJPT0wpY2FuTWFrZVRl
eHRTbWFsbGVyCiB7CkBAIC0yNjgxLDcgKzI2ODEsNyBAQCBzdGF0aWMgV2ViRnJhbWUgKmluY3Jl
bWVudEZyYW1lKFdlYkZyYW1lCiAKIC0gKElCQWN0aW9uKW1ha2VUZXh0U21hbGxlcjooaWQpc2Vu
ZGVyCiB7Ci0gICAgZmxvYXQgbmV3U2NhbGUgPSBfcHJpdmF0ZS0+dGV4dFNpemVNdWx0aXBsaWVy
L1RleHRTaXplTXVsdGlwbGllclJhdGlvOworICAgIGZsb2F0IG5ld1NjYWxlID0gX3ByaXZhdGUt
PnRleHRTaXplTXVsdGlwbGllciAvIFRleHRTaXplTXVsdGlwbGllclJhdGlvOwogICAgIEJPT0wg
Y2FuU2hyaW5rTW9yZSA9IG5ld1NjYWxlID4gTWluaW11bVRleHRTaXplTXVsdGlwbGllcjsKICAg
ICBbc2VsZiBfcGVyZm9ybVRleHRTaXppbmdTZWxlY3RvcjpAc2VsZWN0b3IoX21ha2VUZXh0U21h
bGxlcjopIHdpdGhPYmplY3Q6c2VuZGVyIG9uVHJhY2tpbmdEb2NzOmNhblNocmlua01vcmUgc2Vs
Rm9yTm9uVHJhY2tpbmdEb2NzOkBzZWxlY3RvcihfY2FuTWFrZVRleHRTbWFsbGVyKSBuZXdTY2Fs
ZUZhY3RvcjpuZXdTY2FsZV07CiB9CkBAIC0yNzE3LDE0ICsyNzE3LDE0IEBAIHN0YXRpYyBXZWJG
cmFtZSAqaW5jcmVtZW50RnJhbWUoV2ViRnJhbWUKIAogLSAoQk9PTCljYW5NYWtlVGV4dFN0YW5k
YXJkU2l6ZQogewotICAgIEJPT0wgbm90QWxyZWFkeVN0YW5kYXJkID0gX3ByaXZhdGUtPnRleHRT
aXplTXVsdGlwbGllciAhPSAxLjA7Ci0gICAgcmV0dXJuIFtzZWxmIF9wZXJmb3JtVGV4dFNpemlu
Z1NlbGVjdG9yOihTRUwpMCB3aXRoT2JqZWN0Om5pbCBvblRyYWNraW5nRG9jczpub3RBbHJlYWR5
U3RhbmRhcmQgc2VsRm9yTm9uVHJhY2tpbmdEb2NzOkBzZWxlY3RvcihfY2FuTWFrZVRleHRTdGFu
ZGFyZFNpemUpIG5ld1NjYWxlRmFjdG9yOjBdOworICAgIEJPT0wgbm90QWxyZWFkeVN0YW5kYXJk
ID0gX3ByaXZhdGUtPnRleHRTaXplTXVsdGlwbGllciAhPSAxLjBmOworICAgIHJldHVybiBbc2Vs
ZiBfcGVyZm9ybVRleHRTaXppbmdTZWxlY3RvcjooU0VMKTAgd2l0aE9iamVjdDpuaWwgb25UcmFj
a2luZ0RvY3M6bm90QWxyZWFkeVN0YW5kYXJkIHNlbEZvck5vblRyYWNraW5nRG9jczpAc2VsZWN0
b3IoX2Nhbk1ha2VUZXh0U3RhbmRhcmRTaXplKSBuZXdTY2FsZUZhY3RvcjowLjBmXTsKIH0KIAog
LSAoSUJBY3Rpb24pbWFrZVRleHRTdGFuZGFyZFNpemU6KGlkKXNlbmRlcgogewotICAgIEJPT0wg
bm90QWxyZWFkeVN0YW5kYXJkID0gX3ByaXZhdGUtPnRleHRTaXplTXVsdGlwbGllciAhPSAxLjA7
Ci0gICAgW3NlbGYgX3BlcmZvcm1UZXh0U2l6aW5nU2VsZWN0b3I6QHNlbGVjdG9yKF9tYWtlVGV4
dFN0YW5kYXJkU2l6ZTopIHdpdGhPYmplY3Q6c2VuZGVyIG9uVHJhY2tpbmdEb2NzOm5vdEFscmVh
ZHlTdGFuZGFyZCBzZWxGb3JOb25UcmFja2luZ0RvY3M6QHNlbGVjdG9yKF9jYW5NYWtlVGV4dFN0
YW5kYXJkU2l6ZSkgbmV3U2NhbGVGYWN0b3I6MS4wXTsKKyAgICBCT09MIG5vdEFscmVhZHlTdGFu
ZGFyZCA9IF9wcml2YXRlLT50ZXh0U2l6ZU11bHRpcGxpZXIgIT0gMS4wZjsKKyAgICBbc2VsZiBf
cGVyZm9ybVRleHRTaXppbmdTZWxlY3RvcjpAc2VsZWN0b3IoX21ha2VUZXh0U3RhbmRhcmRTaXpl
Oikgd2l0aE9iamVjdDpzZW5kZXIgb25UcmFja2luZ0RvY3M6bm90QWxyZWFkeVN0YW5kYXJkIHNl
bEZvck5vblRyYWNraW5nRG9jczpAc2VsZWN0b3IoX2Nhbk1ha2VUZXh0U3RhbmRhcmRTaXplKSBu
ZXdTY2FsZUZhY3RvcjoxLjBmXTsKIH0KIAogI2RlZmluZSBWQUxJREFURShuYW1lKSBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9882</attachid>
            <date>2006-08-04 15:30:16 -0700</date>
            <delta_ts>2006-08-04 15:30:16 -0700</delta_ts>
            <desc>remaining cases patch</desc>
            <filename>restOfShorten.diff</filename>
            <type>text/plain</type>
            <size>7774</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gMTU4MDQpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjQgQEAKKzIwMDYtMDgtMDQgIFNhbSBXZWluaWcgIDxzYW0ud2VpbmlnQGdtYWlsLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIHRo
ZSByZXN0IG9mIHRoZSBwYXRjaCBmb3IgaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDE5MgorICAgICAgICAgIE1ha2UgV2ViQ29yZSAoYW5kIGZyaWVuZHMp
IGNvbXBpbGUgd2l0aCAtV3Nob3J0ZW4tNjQtdG8tMzIKKworICAgICAgICAgICogQWRkcyAtV3No
b3J0ZW4tNjQtdG8tMzIgZmxhZyB0byBYY29kZSBwcm9qZWN0LgorICAgICAgICAgICogQWRkcyBl
eHBsaWNpdCBjYXN0cy4KKworICAgICAgICAqIExvYWRlci9XZWJMb2FkZXIubToKKyAgICAgICAg
KC1bTlNVUkxQcm90b2NvbCBkaWRSZWNlaXZlUmVzcG9uc2U6XSk6CisgICAgICAgICgtW05TVVJM
UHJvdG9jb2wgZGlkUmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6CisgICAgICAgICogTG9h
ZGVyL1dlYk1haW5SZXNvdXJjZUxvYWRlci5tOgorICAgICAgICAoLVtXZWJNYWluUmVzb3VyY2VM
b2FkZXIgZGlkUmVjZWl2ZVJlc3BvbnNlOl0pOgorICAgICAgICAqIE1pc2MvV2ViTFJVRmlsZUxp
c3QubToKKyAgICAgICAgKFdlYkxSVUZpbGVMaXN0UmVidWlsZEZpbGVEYXRhVXNpbmdSb290RGly
ZWN0b3J5KToKKyAgICAgICAgKiBQbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblN0cmVhbS5t
OgorICAgICAgICAoLVtXZWJCYXNlTmV0c2NhcGVQbHVnaW5TdHJlYW0gc3RhcnRTdHJlYW1SZXNw
b25zZVVSTDpleHBlY3RlZENvbnRlbnRMZW5ndGg6bGFzdE1vZGlmaWVkRGF0ZTpNSU1FVHlwZTpd
KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAwNi0w
OC0wNCAgU2FtIFdlaW5pZyAgPHNhbS53ZWluaWdAZ21haWwuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluLgpJbmRleDogV2ViS2l0L0xvYWRlci9XZWJMb2FkZXIubQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvTG9hZGVyL1dlYkxvYWRlci5tCShyZXZpc2lvbiAxNTgwNCkKKysrIFdlYktp
dC9Mb2FkZXIvV2ViTG9hZGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTQyNyw5ICs0MjcsOSBAQCBz
dGF0aWMgQk9PTCBOU1VSTENvbm5lY3Rpb25TdXBwb3J0c0J1ZmZlCiAKICAgICAvLyBJZiB0aGUg
VVJMIGlzIG9uZSBvZiBvdXIgd2hhY2t5IGFwcGxld2ViZGF0YSBVUkxzIHRoZW4KICAgICAvLyBm
YWtlIHVwIGEgc3Vic3RpdHV0ZSBVUkwgdG8gcHJlc2VudCB0byB0aGUgZGVsZWdhdGUuCi0gICAg
aWYoW1dlYkRhdGFQcm90b2NvbCBfd2ViSXNEYXRhUHJvdG9jb2xVUkw6W3IgVVJMXV0pIHsKLSAg
ICAgICAgciA9IFtbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOltyZXF1ZXN0IF93
ZWJEYXRhUmVxdWVzdEV4dGVybmFsVVJMXSBNSU1FVHlwZTpbciBNSU1FVHlwZV0gZXhwZWN0ZWRD
b250ZW50TGVuZ3RoOltyIGV4cGVjdGVkQ29udGVudExlbmd0aF0gdGV4dEVuY29kaW5nTmFtZTpb
ciB0ZXh0RW5jb2RpbmdOYW1lXV0gYXV0b3JlbGVhc2VdOwotICAgIH0KKyAgICBpZihbV2ViRGF0
YVByb3RvY29sIF93ZWJJc0RhdGFQcm90b2NvbFVSTDpbciBVUkxdXSkKKyAgICAgICAgLy8gRklY
TUU6IG1ha2Ugc3VyZSB0aGlzIGxvbmcgbG9uZyB0byBpbnQgY2FzdCBpcyBzYWZlLgorICAgICAg
ICByID0gW1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6W3JlcXVlc3QgX3dlYkRh
dGFSZXF1ZXN0RXh0ZXJuYWxVUkxdIE1JTUVUeXBlOltyIE1JTUVUeXBlXSBleHBlY3RlZENvbnRl
bnRMZW5ndGg6KGludClbciBleHBlY3RlZENvbnRlbnRMZW5ndGhdIHRleHRFbmNvZGluZ05hbWU6
W3IgdGV4dEVuY29kaW5nTmFtZV1dIGF1dG9yZWxlYXNlXTsKIAogICAgIFtyIHJldGFpbl07CiAg
ICAgW3Jlc3BvbnNlIHJlbGVhc2VdOwpAQCAtNDU0LDcgKzQ1NCw4IEBAIHN0YXRpYyBCT09MIE5T
VVJMQ29ubmVjdGlvblN1cHBvcnRzQnVmZmUKICAgICAKICAgICBbc2VsZiBhZGREYXRhOmRhdGFd
OwogICAgIAotICAgIFtmcmFtZUxvYWRlciBfZGlkUmVjZWl2ZURhdGE6ZGF0YSBjb250ZW50TGVu
Z3RoOmxlbmd0aFJlY2VpdmVkIGZvclJlc291cmNlOmlkZW50aWZpZXJdOworICAgIC8vIEZJWE1F
OiBtYWtlIHN1cmUgdGhpcyBsb25nIGxvbmcgdG8gaW50IGNhc3QgaXMgc2FmZS4KKyAgICBbZnJh
bWVMb2FkZXIgX2RpZFJlY2VpdmVEYXRhOmRhdGEgY29udGVudExlbmd0aDooaW50KWxlbmd0aFJl
Y2VpdmVkIGZvclJlc291cmNlOmlkZW50aWZpZXJdOwogCiAgICAgW3NlbGYgcmVsZWFzZV07CiB9
CkluZGV4OiBXZWJLaXQvTG9hZGVyL1dlYk1haW5SZXNvdXJjZUxvYWRlci5tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9Mb2FkZXIvV2ViTWFpblJlc291cmNlTG9hZGVyLm0JKHJldmlzaW9uIDE1ODA0
KQorKysgV2ViS2l0L0xvYWRlci9XZWJNYWluUmVzb3VyY2VMb2FkZXIubQkod29ya2luZyBjb3B5
KQpAQCAtMzQwLDE4ICszNDAsMTkgQEAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHdvcmthcm91
bmQgdG8gbWFrZSB3ZWIgYXJjaGl2ZSBmaWxlcyB3b3JrIHdpdGggRm91bmRhdGlvbnMgdGhhdAog
ICAgIC8vIGFyZSB0b28gb2xkIHRvIGtub3cgYWJvdXQgd2ViIGFyY2hpdmUgZmlsZXMuIFdlIHNo
b3VsZCByZW1vdmUgdGhpcyBiZWZvcmUgd2Ugc2hpcC4KICAgICBOU1VSTCAqVVJMID0gW3IgVVJM
XTsKLSAgICBpZiAoW1tbVVJMIHBhdGhdIHBhdGhFeHRlbnNpb25dIF93ZWJraXRfaXNDYXNlSW5z
ZW5zaXRpdmVFcXVhbFRvU3RyaW5nOkAid2ViYXJjaGl2ZSJdKSB7CisgICAgaWYgKFtbW1VSTCBw
YXRoXSBwYXRoRXh0ZW5zaW9uXSBfd2Via2l0X2lzQ2FzZUluc2Vuc2l0aXZlRXF1YWxUb1N0cmlu
ZzpAIndlYmFyY2hpdmUiXSkKICAgICAgICAgciA9IFtbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGlu
aXRXaXRoVVJMOlVSTCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1J
TUVUeXBlOkAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIgotICAgICAgICAgICAgICAgICAgICAg
ICAgICBleHBlY3RlZENvbnRlbnRMZW5ndGg6W3IgZXhwZWN0ZWRDb250ZW50TGVuZ3RoXSAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOihpbnQpW3IgZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoXSAgLy8gRklYTUU6IG1ha2Ugc3VyZSB0aGlzIGxvbmcgbG9uZyB0
byBpbnQgY2FzdCBpcyBzYWZlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRF
bmNvZGluZ05hbWU6W3IgdGV4dEVuY29kaW5nTmFtZV1dIGF1dG9yZWxlYXNlXTsKLSAgICB9CiAg
ICAgCiAgICAgLy8gcmV0YWluL3JlbGVhc2Ugc2VsZiBpbiB0aGlzIGRlbGVnYXRlIG1ldGhvZCBz
aW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwogICAgIC8vIGFueXRoaW5nIGlu
Y2x1ZGluZyBwb3NzaWJseSByZWxlYXNpbmcgc2VsZjsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyAz
MjY2MjE2CiAgICAgW3NlbGYgcmV0YWluXTsKICAgICBbZnJhbWVMb2FkZXIgX3NldFJlc3BvbnNl
OnJdOwotICAgIF9jb250ZW50TGVuZ3RoID0gW3IgZXhwZWN0ZWRDb250ZW50TGVuZ3RoXTsKKwor
ICAgIC8vIEZJWE1FOiBtYWtlIHN1cmUgdGhpcyBsb25nIGxvbmcgdG8gaW50IGNhc3QgaXMgc2Fm
ZS4KKyAgICBfY29udGVudExlbmd0aCA9IChpbnQpW3IgZXhwZWN0ZWRDb250ZW50TGVuZ3RoXTsK
IAogICAgIFtzZWxmIGNoZWNrQ29udGVudFBvbGljeUZvclJlc3BvbnNlOnJdOwogICAgIFtzZWxm
IHJlbGVhc2VdOwpJbmRleDogV2ViS2l0L01pc2MvV2ViTFJVRmlsZUxpc3QubQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvTWlzYy9XZWJMUlVGaWxlTGlzdC5tCShyZXZpc2lvbiAxNTgwNCkKKysrIFdl
YktpdC9NaXNjL1dlYkxSVUZpbGVMaXN0Lm0JKHdvcmtpbmcgY29weSkKQEAgLTEwNywxMiArMTA3
LDExIEBAIGludCBXZWJMUlVGaWxlTGlzdFJlYnVpbGRGaWxlRGF0YVVzaW5nUm8KICAgICBjaGFy
ICpwYXRoc1syXTsKICAgICBzdHJ1Y3Qgc3RhdCBzdGF0SW5mbzsKICAgICAKLSAgICBpZiAoc3Rh
dChwYXRoLCAmc3RhdEluZm8pID09IC0xKSB7CisgICAgaWYgKHN0YXQocGF0aCwgJnN0YXRJbmZv
KSA9PSAtMSkKICAgICAgICAgcmV0dXJuIGVycm5vOwotICAgIH0KLSAgICBpZiAoKHN0YXRJbmZv
LnN0X21vZGUgJiBTX0lGRElSKSA9PSAwKSB7CisKKyAgICBpZiAoKHN0YXRJbmZvLnN0X21vZGUg
JiBTX0lGRElSKSA9PSAwKQogICAgICAgICByZXR1cm4gRU5PVERJUjsKLSAgICB9CiAKICAgICBX
ZWJMUlVGaWxlTGlzdFJlbW92ZUFsbEZpbGVzRnJvbUxpc3QobGlzdCk7CiAgICAgZnJlZShsaXN0
LT5yb290RGlyZWN0b3J5KTsKQEAgLTEyNyw3ICsxMjYsOSBAQCBpbnQgV2ViTFJVRmlsZUxpc3RS
ZWJ1aWxkRmlsZURhdGFVc2luZ1JvCiAgICAgd2hpbGUgKChlbnQgPSBmdHNfcmVhZChmdHMpKSkg
ewogICAgICAgICBpZiAoZW50LT5mdHNfc3RhdHAtPnN0X21vZGUgJiBTX0lGUkVHKSB7CiAgICAg
ICAgICAgICBjb25zdCBjaGFyICpmaWxlUGF0aCA9IGVudC0+ZnRzX2FjY3BhdGggKyBwYXRoTGVu
Z3RoICsgMTsKLSAgICAgICAgICAgIFdlYkxSVUZpbGVMaXN0U2V0RmlsZURhdGEobGlzdCwgZmls
ZVBhdGgsIGVudC0+ZnRzX3N0YXRwLT5zdF9zaXplLCBlbnQtPmZ0c19zdGF0cC0+c3RfY3RpbWVz
cGVjLnR2X3NlYyAtIGtDRkFic29sdXRlVGltZUludGVydmFsU2luY2UxOTcwKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgLy8gRklYTUU6IHRoZSB0eXBlIG9mIGVudC0+ZnRzX3N0YXRwLT5z
dF9zaXplIGlzIF9faW50NjRfdCAob3IgcmF0aGVyIGFuIG9mZl90IHdoaWNoIGlzIGEgX19kYXJ3
aW5fb2ZmX3Qgd2hpY2ggaXMgYW4gX19pbnQ2NF90KQorICAgICAgICAgICAgV2ViTFJVRmlsZUxp
c3RTZXRGaWxlRGF0YShsaXN0LCBmaWxlUGF0aCwgKHVuc2lnbmVkIGxvbmcpZW50LT5mdHNfc3Rh
dHAtPnN0X3NpemUsIGVudC0+ZnRzX3N0YXRwLT5zdF9jdGltZXNwZWMudHZfc2VjIC0ga0NGQWJz
b2x1dGVUaW1lSW50ZXJ2YWxTaW5jZTE5NzApOwogICAgICAgICB9CiAgICAgfQogCkluZGV4OiBX
ZWJLaXQvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5TdHJlYW0ubQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5TdHJlYW0ubQkocmV2aXNpb24g
MTU4MDQpCisrKyBXZWJLaXQvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5TdHJlYW0ubQko
d29ya2luZyBjb3B5KQpAQCAtMjgsMTUgKzI4LDE1IEBACiAKICNpbXBvcnQgPFdlYktpdC9XZWJC
YXNlTmV0c2NhcGVQbHVnaW5TdHJlYW0uaD4KIAorI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFJl
c3BvbnNlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oPgog
I2ltcG9ydCA8V2ViS2l0L1dlYktpdEVycm9yc1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
ZWJLaXRMb2dnaW5nLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViTmV0c2NhcGVQbHVnaW5QYWNrYWdl
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViTlNPYmplY3RFeHRyYXMuaD4KICNpbXBvcnQgPFdlYktp
dC9XZWJOU1VSTEV4dHJhcy5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYk5ldHNjYXBlUGx1Z2luUGFj
a2FnZS5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+Ci0KLSNpbXBvcnQgPEZv
dW5kYXRpb24vTlNVUkxSZXNwb25zZS5oPgorI2ltcG9ydCA8bGltaXRzLmg+CiAKIHN0YXRpYyBj
aGFyICpDYXJib25QYXRoRnJvbVBPU0lYUGF0aChjb25zdCBjaGFyICpwb3NpeFBhdGgpOwogCkBA
IC0yMTEsOCArMjExLDE0IEBAIHN0YXRpYyBjaGFyICpDYXJib25QYXRoRnJvbVBPU0lYUGF0aChj
b24KICAgICBzdHJlYW0udXJsID0gc3RyZHVwKFtyZXNwb25zZVVSTCBfd2ViX1VSTENTdHJpbmdd
KTsKIAogICAgIHN0cmVhbS5uZGF0YSA9IHNlbGY7Ci0gICAgc3RyZWFtLmVuZCA9IGV4cGVjdGVk
Q29udGVudExlbmd0aCA+IDAgPyBleHBlY3RlZENvbnRlbnRMZW5ndGggOiAwOwotICAgIHN0cmVh
bS5sYXN0bW9kaWZpZWQgPSBbbGFzdE1vZGlmaWVkRGF0ZSB0aW1lSW50ZXJ2YWxTaW5jZTE5NzBd
OworICAgIAorICAgIC8vIEZJWE1FOiBtYWtlIHN1cmUgdGhpcyBsb25nIGxvbmcgdG8gdW5zaWdu
ZWQgY2FzdCBpcyBzYWZlLgorICAgIHN0cmVhbS5lbmQgPSBleHBlY3RlZENvbnRlbnRMZW5ndGgg
PiAwID8gKHVuc2lnbmVkKWV4cGVjdGVkQ29udGVudExlbmd0aCA6IDA7CisKKyAgICAvLyBGSVhN
RTogbWFrZSBzdXJlIHRoaXMgaXMgYW4gb2sgZXJyb3IgY2hlY2suCisgICAgTlNUaW1lSW50ZXJ2
YWwgdGltZUludGVydmFsU2luY2VMYXN0TW9kaWZpZWQgPSBbbGFzdE1vZGlmaWVkRGF0ZSB0aW1l
SW50ZXJ2YWxTaW5jZTE5NzBdOworICAgIHN0cmVhbS5sYXN0bW9kaWZpZWQgPSB0aW1lSW50ZXJ2
YWxTaW5jZUxhc3RNb2RpZmllZCA+IFVJTlRfTUFYID8gVUlOVF9NQVggOiAodW5zaWduZWQpdGlt
ZUludGVydmFsU2luY2VMYXN0TW9kaWZpZWQ7CisKICAgICBzdHJlYW0ubm90aWZ5RGF0YSA9IG5v
dGlmeURhdGE7CiAgICAgCiAgICAgdHJhbnNmZXJNb2RlID0gTlBfTk9STUFMOwpJbmRleDogV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTU4MDQpCisrKyBX
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTE5MDksNiArMTkwOSw3IEBACiAJCQkJCSItV21pc3NpbmctZGVjbGFyYXRpb25zIiwKIAkJCQkJ
Ii1XbmVzdGVkLWV4dGVybnMiLAogCQkJCQkiLVd1bmRlZiIsCisJCQkJCSItV3Nob3J0ZW4tNjQt
dG8tMzIiLAogCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwpAQCAtMTk1MCw2ICsxOTUx
LDcgQEAKIAkJCQkJIi1XbWlzc2luZy1kZWNsYXJhdGlvbnMiLAogCQkJCQkiLVduZXN0ZWQtZXh0
ZXJucyIsCiAJCQkJCSItV3VuZGVmIiwKKwkJCQkJIi1Xc2hvcnRlbi02NC10by0zMiIsCiAJCQkJ
KTsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKQEAgLTE5ODcsNiArMTk4OSw3IEBACiAJCQkJ
CSItV21pc3NpbmctZGVjbGFyYXRpb25zIiwKIAkJCQkJIi1XbmVzdGVkLWV4dGVybnMiLAogCQkJ
CQkiLVd1bmRlZiIsCisJCQkJCSItV3Nob3J0ZW4tNjQtdG8tMzIiLAogCQkJCSk7CiAJCQl9Owog
CQkJbmFtZSA9IFByb2R1Y3Rpb247Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>